diff --git a/.github/assets/devo-readme-logo.png b/.github/assets/devo-readme-logo.png deleted file mode 100644 index 357dd833..00000000 Binary files a/.github/assets/devo-readme-logo.png and /dev/null differ diff --git a/.github/assets/devo-terminal-tui-coding-agent-screenshot.png b/.github/assets/devo-terminal-tui-coding-agent-screenshot.png index ae24764d..030ca0dc 100644 Binary files a/.github/assets/devo-terminal-tui-coding-agent-screenshot.png and b/.github/assets/devo-terminal-tui-coding-agent-screenshot.png differ diff --git a/Cargo.lock b/Cargo.lock index 04a90b19..af381f48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1709,7 +1709,7 @@ checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" [[package]] name = "devo-arg0" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "clap", @@ -1729,7 +1729,7 @@ dependencies = [ [[package]] name = "devo-cli" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "async-trait", @@ -1758,7 +1758,7 @@ dependencies = [ [[package]] name = "devo-client" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "chrono", @@ -1776,7 +1776,7 @@ dependencies = [ [[package]] name = "devo-code-search-mcp" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "bm25", @@ -1829,7 +1829,7 @@ dependencies = [ [[package]] name = "devo-config" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "devo-protocol", @@ -1845,7 +1845,7 @@ dependencies = [ [[package]] name = "devo-core" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "async-trait", @@ -1891,7 +1891,7 @@ dependencies = [ [[package]] name = "devo-execpolicy" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "clap", @@ -1908,7 +1908,7 @@ dependencies = [ [[package]] name = "devo-file-search" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "clap", @@ -1924,7 +1924,7 @@ dependencies = [ [[package]] name = "devo-keyring-store" -version = "0.1.32" +version = "0.1.33" dependencies = [ "keyring", "tracing", @@ -1932,7 +1932,7 @@ dependencies = [ [[package]] name = "devo-linux-sandbox" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "clap", @@ -1944,7 +1944,7 @@ dependencies = [ [[package]] name = "devo-mcp" -version = "0.1.32" +version = "0.1.33" dependencies = [ "async-trait", "chrono", @@ -1960,7 +1960,7 @@ dependencies = [ [[package]] name = "devo-network-proxy" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "pretty_assertions", @@ -1972,7 +1972,7 @@ dependencies = [ [[package]] name = "devo-protocol" -version = "0.1.32" +version = "0.1.33" dependencies = [ "agent-client-protocol", "chrono", @@ -1991,7 +1991,7 @@ dependencies = [ [[package]] name = "devo-provider" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "async-stream", @@ -2012,7 +2012,7 @@ dependencies = [ [[package]] name = "devo-rmcp-client" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "axum", @@ -2046,7 +2046,7 @@ dependencies = [ [[package]] name = "devo-safety" -version = "0.1.32" +version = "0.1.33" dependencies = [ "async-trait", "devo-config", @@ -2066,7 +2066,7 @@ dependencies = [ [[package]] name = "devo-sandbox" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "chrono", @@ -2092,7 +2092,7 @@ dependencies = [ [[package]] name = "devo-sandbox-network-proxy" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "devo-sandbox", @@ -2104,7 +2104,7 @@ dependencies = [ [[package]] name = "devo-server" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "async-trait", @@ -2149,7 +2149,7 @@ dependencies = [ [[package]] name = "devo-skills" -version = "0.1.32" +version = "0.1.33" dependencies = [ "chrono", "include_dir", @@ -2166,7 +2166,7 @@ dependencies = [ [[package]] name = "devo-tasks" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "async-trait", @@ -2182,7 +2182,7 @@ dependencies = [ [[package]] name = "devo-tools" -version = "0.1.32" +version = "0.1.33" dependencies = [ "async-trait", "devo-protocol", @@ -2197,7 +2197,7 @@ dependencies = [ [[package]] name = "devo-tui" -version = "0.1.32" +version = "0.1.33" dependencies = [ "ansi-to-tui", "anyhow", @@ -2258,14 +2258,14 @@ dependencies = [ [[package]] name = "devo-util-fuzzy" -version = "0.1.32" +version = "0.1.33" dependencies = [ "pretty_assertions", ] [[package]] name = "devo-util-git" -version = "0.1.32" +version = "0.1.33" dependencies = [ "assert_matches", "devo-util-paths", @@ -2283,7 +2283,7 @@ dependencies = [ [[package]] name = "devo-util-paths" -version = "0.1.32" +version = "0.1.33" dependencies = [ "dirs", "pretty_assertions", @@ -2296,7 +2296,7 @@ dependencies = [ [[package]] name = "devo-util-process" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "devo-sandbox", @@ -2313,7 +2313,7 @@ dependencies = [ [[package]] name = "devo-util-shell-command" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "base64 0.22.1", @@ -2333,7 +2333,7 @@ dependencies = [ [[package]] name = "devo-windows-sandbox" -version = "0.1.32" +version = "0.1.33" dependencies = [ "anyhow", "base64 0.22.1", diff --git a/Cargo.toml b/Cargo.toml index 00bb29b9..fd5fe909 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ resolver = "3" edition = "2024" license = "MIT" rust-version = "1.88.0" -version = "0.1.32" +version = "0.1.33" [workspace.dependencies] agent-client-protocol = "0.14.0" diff --git a/README.ja.md b/README.ja.md index 3006de98..7d8891d7 100644 --- a/README.ja.md +++ b/README.ja.md @@ -26,11 +26,11 @@ ## スクリーンショット

- Devo desktop coding agent app がリポジトリの会話、プロジェクトサイドバー、モデル制御を表示している画面 + Devo terminal TUI coding agent がローカルリポジトリでモデル、コンテキスト、token 状態を表示している画面

- Devo terminal TUI coding agent がローカルリポジトリでモデル、コンテキスト、token 状態を表示している画面 + Devo desktop coding agent app がリポジトリの会話、プロジェクトサイドバー、モデル制御を表示している画面

## Devo を選ぶ理由 diff --git a/README.md b/README.md index 5a804704..e372322f 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,11 @@ ## Screenshots

- Devo desktop coding agent app showing a repository conversation, project sidebar, and model controls + Devo terminal TUI coding agent running in a local repository with model, context, and token status

- Devo terminal TUI coding agent running in a local repository with model, context, and token status + Devo desktop coding agent app showing a repository conversation, project sidebar, and model controls

## Why Devo diff --git a/README.ru.md b/README.ru.md index fd9c9076..9e19ec9e 100644 --- a/README.ru.md +++ b/README.ru.md @@ -26,11 +26,11 @@ ## Скриншоты

- Devo desktop coding agent app показывает беседу по репозиторию, боковую панель проекта и управление моделью + Devo terminal TUI coding agent работает в локальном репозитории и показывает модель, контекст и token status

- Devo terminal TUI coding agent работает в локальном репозитории и показывает модель, контекст и token status + Devo desktop coding agent app показывает беседу по репозиторию, боковую панель проекта и управление моделью

## Почему Devo diff --git a/README.zh-Hans.md b/README.zh-Hans.md index 055bdcc3..f634be8d 100644 --- a/README.zh-Hans.md +++ b/README.zh-Hans.md @@ -26,11 +26,11 @@ ## 截图

- Devo desktop coding agent app 展示仓库对话、项目侧边栏和模型控制 + Devo 终端 TUI coding agent 在本地仓库中显示模型、上下文和 token 状态

- Devo 终端 TUI coding agent 在本地仓库中显示模型、上下文和 token 状态 + Devo desktop coding agent app 展示仓库对话、项目侧边栏和模型控制

## 为什么选择 Devo diff --git a/README.zh-Hant.md b/README.zh-Hant.md index 5365b29a..244e4d02 100644 --- a/README.zh-Hant.md +++ b/README.zh-Hant.md @@ -26,11 +26,11 @@ ## 截圖

- Devo desktop coding agent app 展示儲存庫對話、專案側邊欄和模型控制 + Devo 終端機 TUI coding agent 在本地儲存庫中顯示模型、上下文和 token 狀態

- Devo 終端機 TUI coding agent 在本地儲存庫中顯示模型、上下文和 token 狀態 + Devo desktop coding agent app 展示儲存庫對話、專案側邊欄和模型控制

## 為什麼選擇 Devo diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 75c1d3fd..f9e8c326 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@devo/desktop", "productName": "Devo", - "version": "0.1.32", + "version": "0.1.33", "description": "AI-powered coding assistant desktop app", "author": "Devo", "license": "MIT", diff --git a/crates/core/tests/fixtures/rollout_v1/basic_session.jsonl b/crates/core/tests/fixtures/rollout_v1/basic_session.jsonl index 53937879..a100f699 100644 --- a/crates/core/tests/fixtures/rollout_v1/basic_session.jsonl +++ b/crates/core/tests/fixtures/rollout_v1/basic_session.jsonl @@ -1,4 +1,4 @@ -{"SessionMeta":{"timestamp":"2026-07-01T12:00:00Z","session":{"id":"00000000-0000-0000-0000-0000000000b1","rollout_path":"rollout.jsonl","created_at":"2026-07-01T12:00:00Z","updated_at":"2026-07-01T12:00:01Z","last_activity_at":"2026-07-01T12:00:01Z","source":"cli","agent_nickname":null,"agent_role":null,"agent_path":null,"model_provider":"openai","model":"gpt-5.2","model_binding_id":"binding-1","reasoning_effort_selection":"high","cwd":"/tmp/legacy-project","additional_directories":["/tmp/legacy-extra"],"cli_version":"0.1.32","title":"Legacy Session","title_state":{"Final":"ModelGenerated"},"sandbox_policy":"workspace-write","approval_mode":"on-request","tokens_used":12345,"first_user_message":"Fix the flaky test","archived_at":null,"git_sha":"abc123","git_branch":"main","git_origin_url":"git@github.com:example/repo.git","parent_session_id":null,"schema_version":2}}} +{"SessionMeta":{"timestamp":"2026-07-01T12:00:00Z","session":{"id":"00000000-0000-0000-0000-0000000000b1","rollout_path":"rollout.jsonl","created_at":"2026-07-01T12:00:00Z","updated_at":"2026-07-01T12:00:01Z","last_activity_at":"2026-07-01T12:00:01Z","source":"cli","agent_nickname":null,"agent_role":null,"agent_path":null,"model_provider":"openai","model":"gpt-5.2","model_binding_id":"binding-1","reasoning_effort_selection":"high","cwd":"/tmp/legacy-project","additional_directories":["/tmp/legacy-extra"],"cli_version":"0.1.33","title":"Legacy Session","title_state":{"Final":"ModelGenerated"},"sandbox_policy":"workspace-write","approval_mode":"on-request","tokens_used":12345,"first_user_message":"Fix the flaky test","archived_at":null,"git_sha":"abc123","git_branch":"main","git_origin_url":"git@github.com:example/repo.git","parent_session_id":null,"schema_version":2}}} {"Turn":{"timestamp":"2026-07-01T12:00:02Z","turn":{"id":"00000000-0000-0000-0000-0000000000b2","session_id":"00000000-0000-0000-0000-0000000000b1","sequence":1,"started_at":"2026-07-01T12:00:02Z","completed_at":"2026-07-01T12:00:03Z","status":"Completed","kind":"regular","model":"gpt-5.2","model_binding_id":"binding-1","reasoning_effort_selection":"high","request_model":"gpt-5.2-codex","request_thinking":null,"input_token_estimate":null,"usage":{"input_tokens":100,"output_tokens":50,"cache_creation_input_tokens":10,"cache_read_input_tokens":20,"reasoning_output_tokens":5,"total_tokens":150},"schema_version":4}}} {"Item":{"timestamp":"2026-07-01T12:00:11Z","item":{"id":"00000000-0000-0000-0000-0000000000b3","session_id":"00000000-0000-0000-0000-0000000000b1","turn_id":"00000000-0000-0000-0000-0000000000b2","seq":1,"timestamp":"2026-07-01T12:00:11Z","attempt_placement":null,"turn_status":"Running","sibling_turn_ids":[],"input_items":[{"UserMessage":{"text":"Fix the flaky test"}}],"output_items":[{"AgentMessage":{"text":"On it."}},{"Plan":{"text":"1. reproduce\n2. fix"}}],"worklog":null,"error":null,"schema_version":1}}} {"Item":{"timestamp":"2026-07-01T12:00:12Z","item":{"id":"00000000-0000-0000-0000-0000000000b4","session_id":"00000000-0000-0000-0000-0000000000b1","turn_id":"00000000-0000-0000-0000-0000000000b2","seq":2,"timestamp":"2026-07-01T12:00:12Z","attempt_placement":null,"turn_status":"Running","sibling_turn_ids":[],"input_items":[],"output_items":[{"ToolCall":{"tool_call_id":"call-1","tool_name":"read_file","input":{"path":"src/lib.rs"}}},{"ToolResult":{"tool_call_id":"call-1","tool_name":"read_file","output":{"content":"fn main() {}"},"display_content":"fn main() {}","is_error":false}}],"worklog":null,"error":null,"schema_version":1}}} diff --git a/crates/core/tests/fixtures/rollout_v1/internal_lines.jsonl b/crates/core/tests/fixtures/rollout_v1/internal_lines.jsonl index b5739d7b..90a0acec 100644 --- a/crates/core/tests/fixtures/rollout_v1/internal_lines.jsonl +++ b/crates/core/tests/fixtures/rollout_v1/internal_lines.jsonl @@ -1,4 +1,4 @@ -{"SessionMeta":{"timestamp":"2026-07-01T12:00:00Z","session":{"id":"00000000-0000-0000-0000-0000000000c1","rollout_path":"rollout.jsonl","created_at":"2026-07-01T12:00:00Z","updated_at":"2026-07-01T12:00:01Z","source":"cli","agent_nickname":"scout","agent_role":"explorer","agent_path":null,"model_provider":"openai","model":null,"model_binding_id":"binding-1","reasoning_effort_selection":"high","cwd":"/tmp/legacy-project","additional_directories":["/tmp/legacy-extra"],"cli_version":"0.1.32","title":"Legacy Session","title_state":{"Final":"ModelGenerated"},"sandbox_policy":"workspace-write","approval_mode":"full-access","tokens_used":12345,"first_user_message":null,"archived_at":null,"git_sha":null,"git_branch":null,"git_origin_url":null,"parent_session_id":"00000000-0000-0000-0000-0000000000c0","session_context":{"base_instructions":"base","available_skills":null,"workspace_instructions":null,"locked_agents_snapshot":null,"environment":{"cwd":".","shell":"bash","current_date":"2026-07-01","timezone":"UTC"},"language":{"language_preference":"Reply in the same natural language as the user's latest message. If the latest user message mixes languages, use the primary language of that message. Preserve technical terms, code identifiers, file paths, commands, API names, and quoted text in their original form unless the user explicitly asks to translate them. This language rule also applies to Proposed Plan and Goal: any content inside and must follow the same natural language as the user's latest message."},"persona":"default","model":{"slug":"gpt-5.2","display_name":"","provider":"openai_chat_completions","description":null,"reasoning_capability":"unsupported","default_reasoning_effort":"medium","reasoning_implementation":null,"base_instructions":"","context_window":200000,"effective_context_window_percent":null,"truncation_policy":{"mode":"bytes","limit":8000},"input_modalities":["text"],"supports_image_detail_original":false,"channel":null,"temperature":null,"top_p":null,"top_k":null,"max_tokens":null},"reasoning_effort_selection":null,"reasoning_effort":null,"system_prompt_mode":"coding_agent"},"schema_version":2}}} +{"SessionMeta":{"timestamp":"2026-07-01T12:00:00Z","session":{"id":"00000000-0000-0000-0000-0000000000c1","rollout_path":"rollout.jsonl","created_at":"2026-07-01T12:00:00Z","updated_at":"2026-07-01T12:00:01Z","source":"cli","agent_nickname":"scout","agent_role":"explorer","agent_path":null,"model_provider":"openai","model":null,"model_binding_id":"binding-1","reasoning_effort_selection":"high","cwd":"/tmp/legacy-project","additional_directories":["/tmp/legacy-extra"],"cli_version":"0.1.33","title":"Legacy Session","title_state":{"Final":"ModelGenerated"},"sandbox_policy":"workspace-write","approval_mode":"full-access","tokens_used":12345,"first_user_message":null,"archived_at":null,"git_sha":null,"git_branch":null,"git_origin_url":null,"parent_session_id":"00000000-0000-0000-0000-0000000000c0","session_context":{"base_instructions":"base","available_skills":null,"workspace_instructions":null,"locked_agents_snapshot":null,"environment":{"cwd":".","shell":"bash","current_date":"2026-07-01","timezone":"UTC"},"language":{"language_preference":"Reply in the same natural language as the user's latest message. If the latest user message mixes languages, use the primary language of that message. Preserve technical terms, code identifiers, file paths, commands, API names, and quoted text in their original form unless the user explicitly asks to translate them. This language rule also applies to Proposed Plan and Goal: any content inside and must follow the same natural language as the user's latest message."},"persona":"default","model":{"slug":"gpt-5.2","display_name":"","provider":"openai_chat_completions","description":null,"reasoning_capability":"unsupported","default_reasoning_effort":"medium","reasoning_implementation":null,"base_instructions":"","context_window":200000,"effective_context_window_percent":null,"truncation_policy":{"mode":"bytes","limit":8000},"input_modalities":["text"],"supports_image_detail_original":false,"channel":null,"temperature":null,"top_p":null,"top_k":null,"max_tokens":null},"reasoning_effort_selection":null,"reasoning_effort":null,"system_prompt_mode":"coding_agent"},"schema_version":2}}} {"Turn":{"timestamp":"2026-07-01T12:00:02Z","turn":{"id":"00000000-0000-0000-0000-0000000000c2","session_id":"00000000-0000-0000-0000-0000000000c1","sequence":1,"started_at":"2026-07-01T12:00:02Z","completed_at":null,"status":"Failed","kind":"manual_compaction","model":"gpt-5.2","model_binding_id":"binding-1","reasoning_effort_selection":"high","request_model":"gpt-5.2-codex","request_thinking":"enabled","input_token_estimate":42,"usage":null,"latest_query_usage":{"input_tokens":10,"output_tokens":5,"cache_creation_input_tokens":null,"cache_read_input_tokens":null,"total_tokens":15},"error":{"code":"PROVIDER_SERVER_ERROR","message":"provider request failed","recovery_hint":"retry later"},"session_context":{"base_instructions":"base","available_skills":null,"workspace_instructions":null,"locked_agents_snapshot":null,"environment":{"cwd":".","shell":"bash","current_date":"2026-07-01","timezone":"UTC"},"language":{"language_preference":"Reply in the same natural language as the user's latest message. If the latest user message mixes languages, use the primary language of that message. Preserve technical terms, code identifiers, file paths, commands, API names, and quoted text in their original form unless the user explicitly asks to translate them. This language rule also applies to Proposed Plan and Goal: any content inside and must follow the same natural language as the user's latest message."},"persona":"default","model":{"slug":"gpt-5.2","display_name":"","provider":"openai_chat_completions","description":null,"reasoning_capability":"unsupported","default_reasoning_effort":"medium","reasoning_implementation":null,"base_instructions":"","context_window":200000,"effective_context_window_percent":null,"truncation_policy":{"mode":"bytes","limit":8000},"input_modalities":["text"],"supports_image_detail_original":false,"channel":null,"temperature":null,"top_p":null,"top_k":null,"max_tokens":null},"reasoning_effort_selection":null,"reasoning_effort":null,"system_prompt_mode":"coding_agent"},"turn_context":{"environment":{"cwd":"/tmp/legacy-project","shell":"bash","current_date":"2026-07-01","timezone":"UTC"},"persona":"default","model":{"slug":"gpt-5.2","display_name":"","provider":"openai_chat_completions","description":null,"reasoning_capability":"unsupported","default_reasoning_effort":"medium","reasoning_implementation":null,"base_instructions":"","context_window":200000,"effective_context_window_percent":null,"truncation_policy":{"mode":"bytes","limit":8000},"input_modalities":["text"],"supports_image_detail_original":false,"channel":null,"temperature":null,"top_p":null,"top_k":null,"max_tokens":null},"reasoning_effort_selection":null,"reasoning_effort":null,"observed_agents_snapshot":null,"collaboration_mode":"build"},"schema_version":4}}} {"Item":{"timestamp":"2026-07-01T12:00:11Z","item":{"id":"00000000-0000-0000-0000-0000000000c3","session_id":"00000000-0000-0000-0000-0000000000c1","turn_id":"00000000-0000-0000-0000-0000000000c2","seq":1,"timestamp":"2026-07-01T12:00:11Z","attempt_placement":null,"turn_status":"Running","sibling_turn_ids":[],"input_items":[{"HookPrompt":{"text":"hook text"}}],"output_items":[{"ToolProgress":{"tool_call_id":"call-9","message":"working"}},{"TurnSummary":{"text":"3"}}],"worklog":null,"error":null,"schema_version":1}}} {"MessageEditRecorded":{"timestamp":"2026-07-01T12:00:40Z","record":{"schema_version":1,"session_id":"00000000-0000-0000-0000-0000000000c1","edit_id":"00000000-0000-0000-0000-0000000000c4","target_message_id":"00000000-0000-0000-0000-0000000000c5","replacement_message_id":"00000000-0000-0000-0000-0000000000c6","target_turn_id":"00000000-0000-0000-0000-0000000000c2","replacement_turn_id":null,"queue_item_id":null,"edited_content_parts":[{"content_type":"text","value":"edited"}],"edited_mentions":[],"workspace_restore_policy":"skip","edit_state":"accepted","requested_by_client_id":null,"created_at":"2026-07-01T12:00:40Z"}}} diff --git a/crates/core/tests/fixtures/rollout_v1/orphan_decision.jsonl b/crates/core/tests/fixtures/rollout_v1/orphan_decision.jsonl index a99d0393..d19fa778 100644 --- a/crates/core/tests/fixtures/rollout_v1/orphan_decision.jsonl +++ b/crates/core/tests/fixtures/rollout_v1/orphan_decision.jsonl @@ -1,4 +1,4 @@ -{"SessionMeta":{"timestamp":"2026-07-01T12:00:00Z","session":{"id":"00000000-0000-0000-0000-0000000000d1","rollout_path":"rollout.jsonl","created_at":"2026-07-01T12:00:00Z","updated_at":"2026-07-01T12:00:01Z","last_activity_at":"2026-07-01T12:00:01Z","source":"cli","agent_nickname":null,"agent_role":null,"agent_path":null,"model_provider":"openai","model":"gpt-5.2","model_binding_id":"binding-1","reasoning_effort_selection":"high","cwd":"/tmp/legacy-project","additional_directories":["/tmp/legacy-extra"],"cli_version":"0.1.32","title":"Legacy Session","title_state":{"Final":"ModelGenerated"},"sandbox_policy":"workspace-write","approval_mode":"untrusted","tokens_used":12345,"first_user_message":"Fix the flaky test","archived_at":null,"git_sha":"abc123","git_branch":"main","git_origin_url":"git@github.com:example/repo.git","parent_session_id":null,"schema_version":2}}} +{"SessionMeta":{"timestamp":"2026-07-01T12:00:00Z","session":{"id":"00000000-0000-0000-0000-0000000000d1","rollout_path":"rollout.jsonl","created_at":"2026-07-01T12:00:00Z","updated_at":"2026-07-01T12:00:01Z","last_activity_at":"2026-07-01T12:00:01Z","source":"cli","agent_nickname":null,"agent_role":null,"agent_path":null,"model_provider":"openai","model":"gpt-5.2","model_binding_id":"binding-1","reasoning_effort_selection":"high","cwd":"/tmp/legacy-project","additional_directories":["/tmp/legacy-extra"],"cli_version":"0.1.33","title":"Legacy Session","title_state":{"Final":"ModelGenerated"},"sandbox_policy":"workspace-write","approval_mode":"untrusted","tokens_used":12345,"first_user_message":"Fix the flaky test","archived_at":null,"git_sha":"abc123","git_branch":"main","git_origin_url":"git@github.com:example/repo.git","parent_session_id":null,"schema_version":2}}} {"Turn":{"timestamp":"2026-07-01T12:00:02Z","turn":{"id":"00000000-0000-0000-0000-0000000000d2","session_id":"00000000-0000-0000-0000-0000000000d1","sequence":1,"started_at":"2026-07-01T12:00:02Z","completed_at":null,"status":"WaitingApproval","kind":"regular","model":"gpt-5.2","model_binding_id":"binding-1","reasoning_effort_selection":"high","request_model":"gpt-5.2-codex","request_thinking":null,"input_token_estimate":null,"usage":{"input_tokens":100,"output_tokens":50,"cache_creation_input_tokens":10,"cache_read_input_tokens":20,"reasoning_output_tokens":5,"total_tokens":150},"schema_version":4}}} {"Item":{"timestamp":"2026-07-01T12:00:11Z","item":{"id":"00000000-0000-0000-0000-0000000000d3","session_id":"00000000-0000-0000-0000-0000000000d1","turn_id":"00000000-0000-0000-0000-0000000000d2","seq":1,"timestamp":"2026-07-01T12:00:11Z","attempt_placement":null,"turn_status":"Running","sibling_turn_ids":[],"input_items":[],"output_items":[{"ApprovalDecision":{"approval_id":"appr-orphan","decision":"approve","scope":"session"}}],"worklog":null,"error":null,"schema_version":1}}} {"Item":{"timestamp":"2026-07-01T12:00:12Z","item":{"id":"00000000-0000-0000-0000-0000000000d4","session_id":"00000000-0000-0000-0000-0000000000d1","turn_id":"00000000-0000-0000-0000-0000000000d2","seq":2,"timestamp":"2026-07-01T12:00:12Z","attempt_placement":null,"turn_status":"Running","sibling_turn_ids":[],"input_items":[],"output_items":[{"ImageGeneration":{"text":"image result"}}],"worklog":null,"error":null,"schema_version":1}}} diff --git a/crates/core/tests/legacy_projector.rs b/crates/core/tests/legacy_projector.rs index dc65f39e..b5a0f116 100644 --- a/crates/core/tests/legacy_projector.rs +++ b/crates/core/tests/legacy_projector.rs @@ -76,7 +76,7 @@ fn session_record(n: u128) -> SessionRecord { reasoning_effort_selection: Some("high".into()), cwd: "/tmp/legacy-project".into(), additional_directories: vec!["/tmp/legacy-extra".into()], - cli_version: "0.1.32".into(), + cli_version: "0.1.33".into(), title: Some("Legacy Session".into()), title_state: SessionTitleState::Final(SessionTitleFinalSource::ModelGenerated), sandbox_policy: "workspace-write".into(), diff --git a/crates/core/tests/v2_roundtrip.rs b/crates/core/tests/v2_roundtrip.rs index eaab4b73..d3c1f0c3 100644 --- a/crates/core/tests/v2_roundtrip.rs +++ b/crates/core/tests/v2_roundtrip.rs @@ -424,7 +424,7 @@ fn live_write_lines() -> Vec { reasoning_effort_selection: Some("medium".into()), cwd: "/tmp/live".into(), additional_directories: vec!["/tmp/live-extra".into()], - cli_version: "0.1.32".into(), + cli_version: "0.1.33".into(), title: None, title_state: SessionTitleState::Unset, sandbox_policy: "workspace-write".into(),