Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/conversion.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Policy:
Message normalization notes

- user vs assistant: normalized via role in the universal item; provider role fields or item types determine role.
- file artifacts: always represented as content parts (type=file_ref) inside message/tool_result items, not a separate item kind.
- file artifacts: always represented as content parts (type=file_ref) inside message/tool_result items, not a separate item kind. Rename actions use `target_path`.
- reasoning: represented as content parts (type=reasoning) inside message items, with visibility when available.
- subagents: OpenCode subtask parts and Claude Task tool usage are currently normalized into standard message/tool flow (no dedicated subagent fields).
- OpenCode unrolling: message.updated creates/updates the parent message item; tool-related parts emit separate tool item events (item.started/ item.completed) with parent_id pointing to the message item.
Expand Down
26 changes: 13 additions & 13 deletions docs/opencode-compatibility.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ Authentication matches `/v1`: if a token is configured, requests must include `A
| GET | /config/providers | Stubbed | Returns/echoes config payloads. | E2E: openapi-coverage |
| GET | /event | SSE stub | Emits compat events for session/message/pty updates only. | E2E: openapi-coverage, events |
| GET | /experimental/resource | Stubbed | Experimental endpoints return empty stubs. | E2E: openapi-coverage |
| GET | /experimental/tool | Stubbed | Experimental endpoints return empty stubs. | E2E: openapi-coverage |
| GET | /experimental/tool/ids | Stubbed | Experimental endpoints return empty stubs. | E2E: openapi-coverage |
| GET | /experimental/tool | Derived | Returns MCP tool metadata for connected servers. | E2E: openapi-coverage, opencode-mcp |
| GET | /experimental/tool/ids | Derived | Returns MCP tool IDs for connected servers. | E2E: openapi-coverage, opencode-mcp |
| DELETE | /experimental/worktree | Stubbed | Experimental endpoints return empty stubs. | E2E: openapi-coverage |
| GET | /experimental/worktree | Stubbed | Experimental endpoints return empty stubs. | E2E: openapi-coverage |
| POST | /experimental/worktree | Stubbed | Experimental endpoints return empty stubs. | E2E: openapi-coverage |
Expand All @@ -29,23 +29,23 @@ Authentication matches `/v1`: if a token is configured, requests must include `A
| GET | /find | Stubbed | Returns empty results. | E2E: openapi-coverage |
| GET | /find/file | Stubbed | Returns empty results. | E2E: openapi-coverage |
| GET | /find/symbol | Stubbed | Returns empty results. | E2E: openapi-coverage |
| GET | /formatter | Stubbed | | E2E: openapi-coverage |
| GET | /formatter | Derived | Scans workspace files to report formatter availability. | E2E: openapi-coverage, formatter-lsp |
| GET | /global/config | Stubbed | | E2E: openapi-coverage |
| PATCH | /global/config | Stubbed | | E2E: openapi-coverage |
| POST | /global/dispose | Stubbed | | E2E: openapi-coverage |
| GET | /global/event | SSE stub | Wraps compat events in GlobalEvent; no external sources. | E2E: openapi-coverage, events |
| GET | /global/health | Stubbed | | E2E: openapi-coverage |
| POST | /instance/dispose | Stubbed | | E2E: openapi-coverage |
| POST | /log | Stubbed | | E2E: openapi-coverage |
| GET | /lsp | Stubbed | | E2E: openapi-coverage |
| GET | /mcp | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| POST | /mcp | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| DELETE | /mcp/{name}/auth | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| POST | /mcp/{name}/auth | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| POST | /mcp/{name}/auth/authenticate | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| POST | /mcp/{name}/auth/callback | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| POST | /mcp/{name}/connect | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| POST | /mcp/{name}/disconnect | Stubbed | Returns disabled/needs_auth stubs. | E2E: openapi-coverage |
| GET | /lsp | Derived | Reports LSP status per language based on workspace scan and PATH. | E2E: openapi-coverage, formatter-lsp |
| GET | /mcp | Stateful | Lists MCP registry status. | E2E: openapi-coverage, opencode-mcp |
| POST | /mcp | Stateful | Registers MCP servers and stores config. | E2E: openapi-coverage, opencode-mcp |
| DELETE | /mcp/{name}/auth | Stateful | Clears MCP auth credentials. | E2E: openapi-coverage, opencode-mcp |
| POST | /mcp/{name}/auth | Stateful | Starts MCP auth flow. | E2E: openapi-coverage, opencode-mcp |
| POST | /mcp/{name}/auth/authenticate | Stateful | Returns MCP auth status. | E2E: openapi-coverage, opencode-mcp |
| POST | /mcp/{name}/auth/callback | Stateful | Completes MCP auth and connects. | E2E: openapi-coverage, opencode-mcp |
| POST | /mcp/{name}/connect | Stateful | Connects MCP server and loads tools. | E2E: openapi-coverage, opencode-mcp |
| POST | /mcp/{name}/disconnect | Stateful | Disconnects MCP server and clears tools. | E2E: openapi-coverage, opencode-mcp |
| GET | /path | Derived stub | | E2E: openapi-coverage |
| GET | /permission | Stubbed | | E2E: openapi-coverage, permissions |
| POST | /permission/{requestID}/reply | Stubbed | | E2E: openapi-coverage, permissions |
Expand Down Expand Up @@ -105,4 +105,4 @@ Authentication matches `/v1`: if a token is configured, requests must include `A
| POST | /tui/select-session | Stubbed | Returns true/empty control payloads. | E2E: openapi-coverage |
| POST | /tui/show-toast | Stubbed | Returns true/empty control payloads. | E2E: openapi-coverage |
| POST | /tui/submit-prompt | Stubbed | Returns true/empty control payloads. | E2E: openapi-coverage |
| GET | /vcs | Derived stub | | E2E: openapi-coverage |
| GET | /vcs | Derived stub | | E2E: openapi-coverage |
3 changes: 2 additions & 1 deletion docs/session-transcript-schema.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -291,8 +291,9 @@ File reference with optional diff.
| Field | Type | Description |
|-------|------|-------------|
| `path` | string | File path |
| `action` | string | `read`, `write`, `patch` |
| `action` | string | `read`, `write`, `patch`, `rename`, `delete` |
| `diff` | string? | Unified diff (for patches) |
| `target_path` | string? | Destination path for renames |

```json
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,17 @@ const renderContentPart = (part: ContentPart, index: number) => {
);
}
case "file_ref": {
const { path, action, diff } = part as { path: string; action: string; diff?: string | null };
const { path, action, diff, target_path } = part as {
path: string;
action: string;
diff?: string | null;
target_path?: string | null;
};
const displayPath = target_path && action === "rename" ? `${path} -> ${target_path}` : path;
return (
<div key={key} className="part">
<div className="part-title">file - {action}</div>
<div className="part-body mono">{path}</div>
<div className="part-body mono">{displayPath}</div>
{diff && <pre className="code-block">{diff}</pre>}
</div>
);
Expand Down
3 changes: 2 additions & 1 deletion sdks/typescript/src/generated/openapi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ export interface components {
action: components["schemas"]["FileAction"];
diff?: string | null;
path: string;
target_path?: string | null;
/** @enum {string} */
type: "file_ref";
}) | {
Expand Down Expand Up @@ -183,7 +184,7 @@ export interface components {
hasMore: boolean;
};
/** @enum {string} */
FileAction: "read" | "write" | "patch";
FileAction: "read" | "write" | "patch" | "rename" | "delete";
HealthResponse: {
status: string;
};
Expand Down
2 changes: 2 additions & 0 deletions server/packages/sandbox-agent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ axum.workspace = true
clap.workspace = true
futures.workspace = true
reqwest.workspace = true
regress.workspace = true
dirs.workspace = true
time.workspace = true
chrono.workspace = true
Expand All @@ -36,6 +37,7 @@ tracing-logfmt.workspace = true
tracing-subscriber.workspace = true
include_dir.workspace = true
base64.workspace = true
portable-pty = "0.8"
tempfile = { workspace = true, optional = true }

[target.'cfg(unix)'.dependencies]
Expand Down
Loading
Loading