diff --git a/docs/api-reference/agent-run-logs.mdx b/docs/api-reference/agent-run-logs.mdx new file mode 100644 index 000000000..fe0457741 --- /dev/null +++ b/docs/api-reference/agent-run-logs.mdx @@ -0,0 +1,287 @@ +--- +title: "Agent Run Logs API" +sidebarTitle: "Agent Run Logs" +icon: "list" +iconType: "solid" +--- + + + This endpoint is currently in **ALPHA** status and is subject to change. We welcome your feedback to help improve this API. + + +The Agent Run Logs API allows you to retrieve detailed execution logs for agent runs, providing insights into the agent's thought process, tool usage, and execution flow. + +## Endpoint + +``` +GET /v1/organizations/{org_id}/agent/run/{agent_run_id}/logs +``` + +## Authentication + +This endpoint requires API token authentication. Include your token in the Authorization header: + +```bash +Authorization: Bearer YOUR_API_TOKEN +``` + +## Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `org_id` | integer | Yes | Your organization ID | +| `agent_run_id` | integer | Yes | The ID of the agent run to retrieve logs for | +| `skip` | integer | No | Number of logs to skip for pagination (default: 0) | +| `limit` | integer | No | Maximum number of logs to return (default: 100, max: 100) | + +## Response Structure + +The endpoint returns an `AgentRunWithLogsResponse` object containing the agent run details and paginated logs: + +```json +{ + "id": 12345, + "organization_id": 67890, + "status": "completed", + "created_at": "2024-01-15T10:30:00Z", + "web_url": "https://app.codegen.com/agent/trace/12345", + "result": "Task completed successfully", + "logs": [ + { + "agent_run_id": 12345, + "created_at": "2024-01-15T10:30:15Z", + "tool_name": "ripgrep_search", + "message_type": "ACTION", + "thought": "I need to search for the user's function in the codebase", + "observation": { + "status": "success", + "results": ["Found 3 matches..."] + }, + "tool_input": { + "query": "function getUserData", + "file_extensions": [".js", ".ts"] + }, + "tool_output": { + "matches": 3, + "files": ["src/user.js", "src/api.ts"] + } + } + ], + "total_logs": 25, + "page": 1, + "size": 100, + "pages": 1 +} +``` + +## Agent Run Log Fields + +Each log entry in the `logs` array contains the following fields: + +### Core Fields + +| Field | Type | Description | +|-------|------|-------------| +| `agent_run_id` | integer | The ID of the agent run this log belongs to | +| `created_at` | string | ISO 8601 timestamp when the log entry was created | +| `message_type` | string | The type of log entry (see [Log Types](#log-types) below) | + +### Agent Reasoning Fields + +| Field | Type | Description | +|-------|------|-------------| +| `thought` | string \| null | The agent's internal reasoning or thought process for this step | + +### Tool Execution Fields + +| Field | Type | Description | +|-------|------|-------------| +| `tool_name` | string \| null | Name of the tool being executed (e.g., "ripgrep_search", "file_write") | +| `tool_input` | object \| null | JSON object containing the parameters passed to the tool | +| `tool_output` | object \| null | JSON object containing the tool's execution results | +| `observation` | object \| string \| null | The agent's observation of the tool execution results or other contextual data | + +## Log Types + +The `message_type` field indicates the type of log entry. Here are the possible values: + +### Plan Agent Types + +| Type | Description | +|------|-------------| +| `ACTION` | The agent is executing a tool or taking an action | +| `PLAN_EVALUATION` | The agent is evaluating or updating its plan | +| `FINAL_ANSWER` | The agent is providing its final response or conclusion | +| `ERROR` | An error occurred during execution | +| `USER_MESSAGE` | A message from the user (e.g., interruptions or additional context) | +| `USER_GITHUB_ISSUE_COMMENT` | A comment from a GitHub issue that the agent is processing | + +### PR Agent Types + +| Type | Description | +|------|-------------| +| `INITIAL_PR_GENERATION` | The agent is generating the initial pull request | +| `DETECT_PR_ERRORS` | The agent is detecting errors in a pull request | +| `FIX_PR_ERRORS` | The agent is fixing errors found in a pull request | +| `PR_CREATION_FAILED` | Pull request creation failed | +| `PR_EVALUATION` | The agent is evaluating a pull request | + +### Commit Agent Types + +| Type | Description | +|------|-------------| +| `COMMIT_EVALUATION` | The agent is evaluating commits | + +### Link Types + +| Type | Description | +|------|-------------| +| `AGENT_RUN_LINK` | A link to another related agent run | + +## Field Population Patterns + +Different log types populate different fields: + +### ACTION Logs +- Always have: `tool_name`, `tool_input`, `tool_output` +- Often have: `thought`, `observation` +- Example: Tool executions like searching code, editing files, creating PRs + +### PLAN_EVALUATION Logs +- Always have: `thought` +- May have: `observation` +- Rarely have: Tool-related fields +- Example: Agent reasoning about next steps + +### ERROR Logs +- Always have: `observation` (containing error details) +- May have: `tool_name` (if error occurred during tool execution) +- Example: Failed tool executions or system errors + +### FINAL_ANSWER Logs +- Always have: `observation` (containing the final response) +- May have: `thought` +- Example: Agent's final response to the user + +## Usage Examples + +### Basic Log Retrieval + +```python +import requests + +url = "https://api.codegen.com/v1/organizations/67890/agent/run/12345/logs" +headers = {"Authorization": "Bearer YOUR_API_TOKEN"} + +response = requests.get(url, headers=headers) +data = response.json() + +print(f"Agent run status: {data['status']}") +print(f"Total logs: {data['total_logs']}") + +for log in data['logs']: + print(f"[{log['created_at']}] {log['message_type']}: {log['thought']}") +``` + +### Filtering by Log Type + +```python +# Get only ACTION logs to see tool executions +action_logs = [log for log in data['logs'] if log['message_type'] == 'ACTION'] + +for log in action_logs: + print(f"Tool: {log['tool_name']}") + print(f"Input: {log['tool_input']}") + print(f"Output: {log['tool_output']}") + print("---") +``` + +### Pagination Example + +```python +# Get logs in batches of 50 +skip = 0 +limit = 50 +all_logs = [] + +while True: + url = f"https://api.codegen.com/v1/organizations/67890/agent/run/12345/logs?skip={skip}&limit={limit}" + response = requests.get(url, headers=headers) + data = response.json() + + all_logs.extend(data['logs']) + + if len(data['logs']) < limit: + break # No more logs + + skip += limit + +print(f"Retrieved {len(all_logs)} total logs") +``` + +### Debugging Failed Runs + +```python +# Find error logs to debug issues +error_logs = [log for log in data['logs'] if log['message_type'] == 'ERROR'] + +for error_log in error_logs: + print(f"Error at {error_log['created_at']}: {error_log['observation']}") + if error_log['tool_name']: + print(f"Failed tool: {error_log['tool_name']}") +``` + +## Common Use Cases + +### 1. Building Monitoring Dashboards +Use the logs to create dashboards showing: +- Agent execution progress +- Tool usage patterns +- Error rates and types +- Execution timelines + +### 2. Debugging Agent Behavior +Analyze logs to understand: +- Why an agent made certain decisions +- Where errors occurred in the execution flow +- What tools were used and their results + +### 3. Audit and Compliance +Track agent actions for: +- Code change auditing +- Compliance reporting +- Security monitoring + +### 4. Performance Analysis +Monitor: +- Tool execution times +- Common failure patterns +- Agent reasoning efficiency + +## Rate Limits + +- **60 requests per 60 seconds** per API token +- Rate limits are shared across all API endpoints + +## Error Responses + +| Status Code | Description | +|-------------|-------------| +| 400 | Bad Request - Invalid parameters | +| 401 | Unauthorized - Invalid or missing API token | +| 403 | Forbidden - Insufficient permissions | +| 404 | Not Found - Agent run not found | +| 429 | Too Many Requests - Rate limit exceeded | + +## Feedback and Support + +Since this endpoint is in ALPHA, we'd love your feedback! Please reach out through: + +- [Community Slack](https://join.slack.com/t/codegen-community/shared_invite/zt-2p4xjjzjx-1~3tTbJWZWQUYOLAhvG5rA) +- [GitHub Issues](https://github.com/codegen-sh/codegen-sdk/issues) +- Email: support@codegen.com + + + The structure and fields of this API may change as we gather feedback and improve the service. We'll provide advance notice of any breaking changes. + + diff --git a/docs/docs.json b/docs/docs.json index bcb781e65..1d5897b7f 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -67,6 +67,10 @@ "source": "/api-reference/openapi3.json", "directory": "api-reference" } + }, + { + "group": "Guides", + "pages": ["api-reference/agent-run-logs"] } ] },