comate-cli 0.12.4b8__tar.gz → 0.12.4b9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/CHANGELOG.md +9 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/CONTEXT.md +39 -3
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/PKG-INFO +2 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/animations.py +0 -8
- comate_cli-0.12.4b8/comate_cli/terminal_agent/builtin_commands/pr.md → comate_cli-0.12.4b9/comate_cli/terminal_agent/builtin_commands/open-pr.md +1 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/config/model.py +5 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/config/picker.py +6 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/config/picker_state.py +4 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/config/store.py +15 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/custom_slash_commands.py +1 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/effort_style.py +23 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/event_renderer.py +28 -10
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/i18n/_en.py +14 -6
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/i18n/_ja.py +14 -6
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/i18n/_zh.py +14 -6
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/i18n/message.py +5 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/side_install.py +6 -0
- comate_cli-0.12.4b9/comate_cli/terminal_agent/suggestion/__init__.py +5 -0
- comate_cli-0.12.4b9/comate_cli/terminal_agent/suggestion/controller.py +118 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_approval_view.py +2 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_fold.py +3 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui.py +184 -44
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/btw_view.py +2 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/key_bindings.py +21 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/render_panels.py +8 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/shell_mode.py +10 -6
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/update_check.py +34 -3
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/workflows_panel.py +30 -14
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/workflows_panel_model.py +26 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/pyproject.toml +2 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/test_model.py +15 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/test_picker_state.py +16 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/test_picker_ui.py +21 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/test_roundtrip.py +7 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/test_store_load.py +38 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/test_store_save.py +15 -0
- comate_cli-0.12.4b9/tests/suggestion/test_next_step_suggestion_controller.py +304 -0
- comate_cli-0.12.4b9/tests/suggestion/test_next_step_suggestion_render.py +147 -0
- comate_cli-0.12.4b9/tests/suggestion/test_tab_accepts_next_step_suggestion.py +160 -0
- comate_cli-0.12.4b9/tests/suggestion/test_tui_next_step_suggestion_integration.py +259 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ctrl_b_background.py +10 -5
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_custom_slash_commands.py +26 -5
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_effort_style.py +51 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_approval_wait.py +2 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_streaming.py +58 -5
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_i18n.py +14 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_modal_panel_visibility.py +7 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_preflight.py +26 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_preflight_wizard_ui.py +3 -3
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_running_tool_status_line.py +35 -13
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_shell_mode.py +11 -6
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_side_install.py +56 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_skills_slash_command.py +10 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_todo_panel_busy_gating.py +66 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_approval_view_workflow.py +11 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_fold_panel.py +33 -31
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_builtin_slash_chain.py +121 -3
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_thinking_display.py +37 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_update_check.py +208 -35
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_workflows_panel.py +76 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_workflows_panel_model.py +68 -1
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/uv.lock +2 -2
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/bash/3b0c312b1a234220818cb8cc15a12ea1565c69dc5f828351a492dab1add0cf84.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/bash/b0696d5d44fdde7597b8e9bd706d61237290ebca0c1c99273799393a7af99316.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/bash/e1164ab5f5f1e125db38bb44420532265c958f19533fbda8700db5a8aa4c3d68.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/00f8013ce28fed8e3076db6490d6a3de8dbc1f57f5248a1f5e2710f11ab6849c.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/0a5f3319bc1813a523b8d041831399f3ea694fcdb96f4b1df740300d08c60521.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/17dc19a9b5faddcd056013e7783c8d23525d060b7b20a73ee241c569bedea6d8.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/2b488f719c3431607773d9cebef4924ebfa33745adc68d8ee0f89596c608a218.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/32ce175150a77180dda04a76ea66b9ee5b0c46ea0fd0842172bacece964d57a4.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/43166c9eb998d1a426ce0c014348e39adc8c8e1d3d7a94ced4cc33ab268ecdeb.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/4afc47414280761b7c94ff91f7477c4eb5602396da89303b403c6f3ef9535fd0.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/56fca6c3112743a94cd0df58e04ee6dda31546ed53d50f8bf907dccb6f5329d3.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/605fcb1ca26d1cb632e364dd044d280a12ad4f188db698d5bad57fe1ff556ce3.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/6763a04477b314da76472e76696c8b03ee89fffc23ce74a22c634ea373840acd.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/6d1856ff719ee695ed9205cf68723a263f8c70fe090295037c1c9a837f8eac13.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/6e08c59431a214d8c3650a701cbaaf9125503d59d28476642f8b5a0ad6c8ed93.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/746f6a3b34e30583972816a0052d99e8297096ba522d66027b085e3a0069b7db.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/7c8fa2270ca7721e8619ba7eaec744100877330317dd5e8a1e42494a09579317.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/7cc3e32a61277dc3e35039fdc1cac3691e147cd50d8d16fa75447de7d11abb77.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/8203d4eaf35b0bb224cb12067e638b7f873ae0af05a590adedc02ae159a08099.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/82a7ce335091c00f8aee0ff54b6a75ed25fb6f7a2f4bf8d29921c3f2704ada81.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/82e9a29128ad224555ae0e85dddcc118d92a8f4faf4c8a3c3702c6b43dc71511.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/83be41699a979e16de16f3095981346f337fda56a3c254420df953e2de87d982.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/84074b6fda0e110d23094926c0d1846130be2b3870b1bcd5516243bae808b209.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/a92368734a2d79c15eaba1c7d282bab2d4150ccde0e41e30628cfb6b7be6a678.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/b02349374e026c124a60335b4b0e77698e4b7f8391f2466c827f6f80a8d596b2.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/b41279d93d2b1f03e99bf2fdcd4477781edf3546256489e2d37f082fa414ef94.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/bde0cfc02d38109cc02a28dd07611e464db9b47fef8b16fc25591866e5003316.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/c0e234da2bfe338ffbce547372af90d36ce7580361b69664823d12fac048a86e.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/c979b9589e166ae451c819fc8fc1efdf9eb042ce7af99e420a5b540f0d041a7a.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/dd39676b55965a3e04c1b28c82cd9c15e335776f39f325f61854d3e48aa87859.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/dec1ee9f38d117f649d0ba2cfb54b50d9ccd841833170c49614fa181a358013e.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/eac0d88d65c24b10af556c030b795f3312cc70fc80f8f64575205ea1a6476264.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/ef063804b585209aafbded7c27ad8d5eacbad17b3bb967022290a9efd01f6d13.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/f75a98ad1ac3c085060f90492292060b3720dfa98c776e61a643b9824d1dc237.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/faffcd8b4abd87e4abff3b72dcde673e844a4d7e230fbcc5c116ddd11815c37b.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/fb29e07995891317ca0daa3257e541238908889bc7a68efeba695c8ac3a2db86.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/grep_content/feed470ec463825f43ae4e1b92a5996b1dbad91605fe491f39c9ee60879b7155.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/index.json +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/ls/5a0a29a96857998fdfe5696c09b9c60027a6529e21108e22a20f5227afeddb59.json +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/1f093e98c0f4026921bb2df0c7c04d6b55b51ec40c9fbf38ba57bd387399127d.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/57c31009cc3665a6a672811ecf048cfb75ff7bae92598df943f492c53d39ca8e.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/916a2e47f13fd22d3a73a4896c7a5edb3381b8a2c8322ce3ab8a4bf9da94c4a0.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/91f5872f5b4b1b43f16589f7dd25e47236a805e848b37307cef464e881307fe1.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/9871dc91ff9afef1303c74cf669996828a7db3dbff6c4c41fbac0a53fd7d195b.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/af594562a5579ffc9bef105dc77ed26408b2408447005046c9c6505541e2776a.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/c52ec3da48b3a731ed42cc357258a4627d2d11fab5ef14d3050fd50e748151d4.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/f8c08a56feb0812b35a8e4b29a721d38c0aacd83ce3620c432d8b52114c14816.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/artifacts/tool_result/fa30187a59d255f168806ee0de7a0a32b00535e53e7c5420aad1bac44b54a667.txt +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.agent/scheduled_prompts.json +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/.gitignore +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/README.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/__main__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/device_identity.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/distribution.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/main.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/mcp_cli.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/app.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/approval_bridge.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/approval_content_preview.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/assistant_render.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/announcements.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/client.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/feedback.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/provider_snapshot.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/rating.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/runtime.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/session_report.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/session_title.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/backend/tasks.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/bash_command_display.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/builtin_commands/.keep +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/builtin_commands/commit.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/builtin_commands/implement-plan.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/builtin_commands/learn.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/clipboard_image.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/codenames.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/config/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/config_check.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/console_profile.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/context_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/effort_menu.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/effort_ruler.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/env_utils.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/error_display.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/exit_confirm_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/exit_watchdog.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/figures.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/file_ref_hint.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/fragment_utils.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/goal_edit_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/goal_resume_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/history_printer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/i18n/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/image_chips.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/input_geometry.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/jobs_picker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/jobs_state.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/locale.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/logging_adapter.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/logging_file_handler.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/logo.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/markdown_render.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/mcp_serve.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/mention_completer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/message_style.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/model_tier_style.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/models.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/output_style_menu.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/auto_update_runner.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/auto_update_store.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/components/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/components/detail_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/components/plugin_list.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/components/search_box.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/components/tab_bar.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/marketplace_install_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/operation_state.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/plugin_picker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/tabs/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/tabs/discover_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/tabs/errors_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/tabs/installed_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/plugins/tabs/marketplaces_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/preflight.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/preflight_wizard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/preflight_wizard_ui.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/print_mode.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/question_broker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/question_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/recap/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/recap/controller.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/resume_picker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/resume_preview.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/resume_selector.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/rpc_commands.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/rpc_relay.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/rpc_ws.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/scm_request_status.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/selection_menu.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/sigint_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/skill_slash_input.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/skills_menu.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/slash_commands.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/startup.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/startup_profile.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/status_bar.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/statusline/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/statusline/model.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/statusline/picker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/statusline/picker_state.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/statusline/store.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/stream_pacer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/synchronized_output.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/text_effects.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/theme.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tips.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_fold_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_result_formatters.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_result_state.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_result_store.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_result_viewer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tool_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/transcript_viewer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/approval_queue.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/commands.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/history_sync.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/input_behavior.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/mcp_connecting_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/resize_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/run_clock.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/ultracode_keyword.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/update_messages.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_title.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/update_cli.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/docs/cli-rpc-stdio-guide.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/docs/release-notes/0.12.3.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/docs/startup-performance.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/docs/superpowers/plans/2026-07-07-tui-first-repaint-before-sdk-submit.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/docs/superpowers/plans/2026-07-07-windows-update-manual-rollback.md +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/_fake_anthropic_server.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/_rpc_ws_client.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/config/test_skills_denylist_migration.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/conftest.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/fixtures/exit_watchdog_child.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/fixtures/fake_mcp_misbehaving_stdout.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/recap/test_idle_recap_controller.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/recap/test_recap_history_rendering.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/recap/test_tui_idle_recap_integration.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/statusline/__init__.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/statusline/test_model.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/statusline/test_picker_state.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/statusline/test_store.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_animations_styles.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_animator_shuffle.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_config_check_gate.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_exit_lifecycle.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_mcp_preload.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_mcp_preload_kick.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_preflight_gate.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_print_mode.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_profile_threading.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_pty_ctrl_b.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_pty_ctrl_c_exit.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_pty_shell_mode.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_pty_smoke.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_shutdown.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_startup_latency.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_startup_order.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_token_cost_config.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_app_usage_line.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_approval_bridge.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_approval_content_preview.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_backend_announcements.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_backend_client.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_backend_feedback.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_backend_provider_snapshot.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_backend_rating.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_backend_session_report.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_backend_tasks.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_btw_slash_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_busy_slash_gating.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_cli_project_root.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_clipboard_image_reader.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_commands_system_messages.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_compact_command_semantics.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_completion_context_activation.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_completion_status_panel.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_config_check.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_console_profile.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_context_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_context_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ctrl_c_clear_input.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_device_identity.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_discover_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_distribution_contract.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_drain_frame_atomicity.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_effort_menu.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_effort_menu_frame_rate.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_effort_ruler.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_effort_slash_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_errors_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_boundary.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_e2e.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_fixed_overhead.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_idle_prune.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_jobs.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_log_boundary.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_log_queue.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_provider_overflow.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_shell.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_stream_pacing.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_stream_staging.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_tool_args_progress.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_event_renderer_tool_fold.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_exit_confirm_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_exit_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_exit_watchdog.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_exit_watchdog_subprocess.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_file_ref_hint.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_format_error.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_goal_edit_handlers.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_goal_edit_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_goal_paused_hint.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_goal_resume_tui.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_goal_resume_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_goal_slash_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_handle_error.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_drain_throttle.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_printer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_printer_log.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_printer_styles.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_printer_subtitle_position.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_printer_tool_fold.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_sync.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_history_sync_tool_fold.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_image_chips.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_image_preprocess_offload_lag.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_import_weight.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_input_behavior.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_input_history.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_input_separator_counter.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_installed_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_interrupt_exit_semantics.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_jobs_panel.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_jobs_picker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_key_bindings_system_messages.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_layout_coordinator.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_loading_modal_suppression.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_loading_tip_picker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_logging_adapter.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_logging_file_handler.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_logo.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_main_args.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_main_args_yolo.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_main_profile_entry.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_markdown_render.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_marketplaces_tab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_mcp_cli.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_mcp_cli_scope_defaults.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_mcp_serve.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_mcp_slash_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_mention_completer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_menu_cursor_unification.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_message_style.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_modal_freeze_timing.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_model_switch_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_model_tier_style.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_no_raw_colors.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_output_style_slash_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_permission_mode_cycle.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_plugin_auto_update_runner.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_plugin_auto_update_store.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_plugin_auto_update_tui.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_plugin_operation_state.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_plugin_slash_commands.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_plugin_tui_components.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_preflight_copilot.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_pty_output_integrity.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_question_broker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_question_key_bindings.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_question_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_resize_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_resume_picker.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_resume_picker_exit_safety.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_resume_preview.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_resume_selector.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rewind_command_semantics.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rpc_mode_logging.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rpc_relay_dial_out.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rpc_relay_e2e_smoke.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rpc_relay_process_smoke.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rpc_v4_stdio_smoke.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rpc_v4_ws_smoke.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_rpc_ws_bind_failure.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_run_clock.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_scm_request_status.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_scrollback_write_encoding.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_selection_menu.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_session_auto_title.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_session_query_token_summary.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_settings_write_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_shutdown_noise_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_shutdown_noise_integration.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_sigint_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_sigint_key_binding.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_skill_slash_input.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_slash_add_dir.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_slash_argument_hint.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_slash_clear.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_slash_completer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_slash_registry.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_startup_import_budget.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_startup_profile.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_status_bar.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_status_bar_mid_turn_refresh.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_status_bar_request_status.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_status_bar_transient.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_stream_pacer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_stream_pacing_tick.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_stream_staging_panel.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_style_class_coverage.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_synchronized_output.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tab_title.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_task_panel_format.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_task_panel_key_bindings.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_task_panel_rendering.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_task_poll.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_terminal_title.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_theme.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tips.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_approval_key_bindings.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_approval_tui.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_approval_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_fold.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_fold_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_result_formatters.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_result_state.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_result_store.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_result_viewer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_result_viewer_key_bindings.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_view.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tool_view_styles.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_transcript_viewer.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_transcript_viewer_tool_fold.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_deferred_prewarm.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_elapsed_status.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_esc_queue.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_exit_idempotence.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_exit_paced_tail.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_exit_pending_logs.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_hot_reload.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_image_chip_seed.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_image_paste.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_image_path_upgrade.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_image_restore.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_image_submit.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_interrupt_queue_recall.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_llm_retry_panel.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_loading_tip_rotation.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_local_interactive_barrier.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_mcp_init_gate.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_paste_history_persistence.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_paste_newline_guard.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_paste_placeholder.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_plugin_load.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_provider_error_shield.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_queue_pop_images.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_queue_preview.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_queue_sdk_source.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_replace_session_resume_hint.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_scheduled_fire_log.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_scratchpad_fold_wiring.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_send_undo_window.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_session_observers.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_shutdown_cancel_propagation.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_split_invariance.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_startup_latency.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_surrogate_repair.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_tool_result_registry_lifecycle.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_tui_window_too_small_fallback.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ui_mode_derivation.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ui_tick_exception_isolation.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ultracode_keyword.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ultracode_keyword_frame_rate.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ultracode_keyword_submit.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_ultracode_shimmer_render.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_update_cli.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_upstream_surrogate_merge_characterization.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_usage_command.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_wellformed_terminal_input.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_whitelabel_clear_logo.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_windows_sigint_console.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_wrap_user_text.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tests/test_zipapp_launcher_path.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tools/diagnose_windows_shim_rename.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tools/logo_lab.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tools/nico_preview.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tools/probe_conhost_char_width.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tools/probe_conhost_render_replay.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tools/startup_bench.py +0 -0
- {comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/tools/verify_windows_self_update_semantics.py +0 -0
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
`--show-token`、`--hostname`、`--watch`、`--jq`(jq 内建能读环境变量)、`api` / `search` / `secret`
|
|
26
26
|
与一切写形态仍然询问。
|
|
27
27
|
- 代码托管平台整合第三刀(slash 命令):随包新增 `/commit [focus or message hint]` 与
|
|
28
|
-
`/pr [title hint]`(别名 `/mr`)。两者是 default scope 的 markdown 命令,模板先预执行
|
|
28
|
+
`/open-pr [title hint]`(别名 `/open-mr`)。两者是 default scope 的 markdown 命令,模板先预执行
|
|
29
29
|
`git status` / `git diff --stat` / `git log` 把上下文塞进提示词,模型再按 Bash 工具的 git 纪律
|
|
30
|
-
与 PR/MR 流程执行;`/pr` 会先提交未提交的改动、`git push -u`,再按 `<git_env>` 的 `Remote:`
|
|
30
|
+
与 PR/MR 流程执行;`/open-pr` 会先提交未提交的改动、`git push -u`,再按 `<git_env>` 的 `Remote:`
|
|
31
31
|
选 `gh` 或 `glab` 开(或更新)请求并回 URL。创建请求那一步走正常权限确认,不临时放行。
|
|
32
32
|
自定义命令 frontmatter 新增 `aliases:`,按 project > user > default 分配;project/user 命令的别名
|
|
33
33
|
撞上已占用名字时提示一次,随包命令的别名被高优先级命令盖掉时静默(覆盖语义)。
|
|
@@ -61,9 +61,16 @@
|
|
|
61
61
|
支持的终端(VS Code 2025-12 起、Windows Terminal、iTerm2、kitty、WezTerm、Alacritty、
|
|
62
62
|
Ghostty)整帧上屏,底部带 6fps 重画与暂存窗逐行变化不再闪烁;不支持的终端忽略该
|
|
63
63
|
私有模式。只在 POSIX 真 tty 上启用,`COMATE_CLI_NO_SYNC_OUTPUT=1` 可关闭。
|
|
64
|
+
- 首启向导新增 GMI Cloud 预设(SDK `PROVIDER_PRESETS`,id `gmi_cloud`):OpenAI 协议,
|
|
65
|
+
端点 `https://api.gmi-serving.com/v1`,LOW 用 `Qwen/Qwen3.8-27B`,MID / HIGH 用
|
|
66
|
+
`Qwen/Qwen3.8-Max`。该端点还没有方言映射,effort / thinking 参数暂按默认 openai 行为发送,
|
|
67
|
+
见 `docs/issues/2026-10-09-gmi-cloud-dialect/`。
|
|
64
68
|
|
|
65
69
|
### Changed
|
|
66
70
|
|
|
71
|
+
- 0.12.4 测试版里的随包 `/pr`(别名 `/mr`)改名为 `/open-pr`(别名 `/open-mr`),功能不变。原因:`pr` 是常见的第三方 skill 名,旧名会挡住用户自己装的同名 skill。`/pr`、`/mr` 不再有效,也没有改名提示。
|
|
72
|
+
- 用户装的 skill 现在可以覆盖同名的随包命令(`/commit`、`/learn`、`/implement-plan`、`/open-pr` 等):`/<名字>` 调用 skill,不提示,和 project/user 自定义命令覆盖随包命令一样。skill 只占了随包命令的某个别名时,随包命令只失去这个别名。skill 被禁用或随插件卸载后,随包命令自动回来。`user-invocable: false` 的 skill 不占名字。核心命令(`/help`、`/model` 等)与用户自己写的同名自定义命令仍然优先于 skill;这种冲突改为每个名字每个进程只提示一次(以前每次启动、切换会话、加载插件都会输出一条英文 WARNING),提示按界面语言显示,并说明模型仍可以通过 Skill 工具调用这个 skill。见 ADR-0038。
|
|
73
|
+
- 思考被折叠时,loading 行括号里的呼吸黄短语不再随机挑,改为按这次请求真实生效的思考档位挑词:ultracode → `ultra thinking`、max / xhigh / high → `thinking some more with <档位> effort`(如 `thinking some more with high effort`)、medium → `thinking`、low → `light thinking`;auto 且模型无默认档、模型不支持调档、off 时显示 `thinking`,不再出现低档却显示 `ultra thinking` 的情况。档位取端点降档后的实际值(与 statusline 一致),每次请求开始思考时读一次,一轮中途开 ultracode 后下一次请求即生效。颜色、位置、出现时机不变;短语在中文 / 日文界面下也保持英文。
|
|
67
74
|
- 常驻规则进置顶区(SDK):规则目录(`~/.agent/rules`、`~/.claude/rules`、项目 `.agent/rules`、`.claude/rules`)里没有有效 `paths:` 的文件——没有 frontmatter、frontmatter YAML 写坏、`paths` 只写了 `**` 之类全匹配——不再被丢弃,而是像 Claude Code 一样启动就加载,和 AGENTS.md 一起常驻。顺序:用户 AGENTS.md → 用户层常驻规则 → 项目 AGENTS.md 链 → 项目层常驻规则(同层 `.agent` 先、`.claude` 后)。进模型的是剥掉 frontmatter 和 HTML 注释后的正文;置顶区文件清单带上每条规则的路径与 token 数;compact、`/clear`、resume 后仍在。user 层受 user setting source 门控,项目层受 project 门控;计入置顶区既有的 token 告警阈值,不截断。**行为变更**:`.agent/rules` 下以前被静默丢弃的无 `paths` 文件从本版起生效。
|
|
68
75
|
- 首启向导(Provider setup)整体重做,照 `/effort` 刻度尺模式改为自绘组件 `preflight_wizard_ui.WizardScreenUI`,不再借用共用的 `SelectionMenuUI`:六屏统一「标题 / 空行 / 内容 / 空行 / 键位提示」顶部对齐骨架;选项行改为 `❯ label` 无圆点、项间不留空行;provider 屏只在选中项下方显示一行 preset 说明;API key / endpoint / 模型名输入屏去掉边框;确认屏的 JSON 预览改为对齐缩进的静态块;键位提示只写真正绑定的键(去掉并不存在的 k/j)。其它菜单不受影响。
|
|
69
76
|
- `/effort` 的 `ultracode` 改绑 `max` 档(原 `xhigh`):选 ultracode = 最高思考档 + workflows
|
|
@@ -9,20 +9,24 @@ A slash command backed by a hardcoded Python handler registered in `SLASH_COMMAN
|
|
|
9
9
|
_Avoid_: builtin command (ambiguous), native command
|
|
10
10
|
|
|
11
11
|
**Default Custom Command**:
|
|
12
|
-
A markdown-resource slash command shipped inside the `comate_cli` package under `terminal_agent/builtin_commands/`. Loaded via the custom-command pipeline (frontmatter + template), with `source_scope = "default"` on the *source* axis. User-authored custom commands of the same name override it. A command may declare `aliases:` in its frontmatter (e.g. `/pr` → `/mr`). Aliases are assigned in scope priority order (`project > user > default`); an alias that is already taken (Core Slash Command name, another command's name, or a higher-priority alias) is dropped — silently for Default Custom Commands (override semantics), with a one-time warning for project/user commands, and as a startup error when a Default Custom Command alias would shadow a Core Slash Command.
|
|
12
|
+
A markdown-resource slash command shipped inside the `comate_cli` package under `terminal_agent/builtin_commands/`. Loaded via the custom-command pipeline (frontmatter + template), with `source_scope = "default"` on the *source* axis. User-authored custom commands and Skill Slash Commands of the same name override it. A command may declare `aliases:` in its frontmatter (e.g. `/open-pr` → `/open-mr`). Aliases are assigned in scope priority order (`project > user > default`); an alias that is already taken (Core Slash Command name, another command's name, or a higher-priority alias) is dropped — silently for Default Custom Commands (override semantics), with a one-time warning for project/user commands, and as a startup error when a Default Custom Command alias would shadow a Core Slash Command.
|
|
13
13
|
_Avoid_: builtin command (ambiguous), bundled command
|
|
14
14
|
|
|
15
15
|
**Execution Axis** (`SlashCommandSource`):
|
|
16
16
|
Describes how a registered command is dispatched. Values: `"builtin"` (hardcoded handler), `"custom"` (markdown template render), `"skill"` (skill slash). Orthogonal to the Source Axis.
|
|
17
17
|
|
|
18
|
+
**Skill Slash Command**:
|
|
19
|
+
The slash entry of a runtime skill that is enabled and user-invocable. Its name is the skill's call name; plugin skills carry a `namespace:` prefix and so never collide with plain names. A skill that is disabled or declares `user-invocable: false` has no slash entry and claims no name. When its name is shadowed by a higher-priority command, the skill stays callable by the model through the Skill tool; only the slash entry is lost, and the user is told once per name per process.
|
|
20
|
+
_Avoid_: skill command (ambiguous with custom command)
|
|
21
|
+
|
|
18
22
|
**Source Axis** (`CustomSlashCommand.source_scope`):
|
|
19
23
|
Describes where a markdown-template command's definition lives. Values: `"project"`, `"user"`, `"plugin"`, `"default"`. Determines override priority only.
|
|
20
24
|
|
|
21
25
|
**Reserved Name Set** (`builtin_names`):
|
|
22
|
-
The set of names derived from `SLASH_COMMAND_SPECS` (Core Slash Commands) that user-authored custom commands may not shadow. A custom command whose name collides with this set is silently skipped with a warning during discovery. **Default Custom Command names do NOT belong to this set** — they are overrideable by design.
|
|
26
|
+
The set of names derived from `SLASH_COMMAND_SPECS` (Core Slash Commands) that user-authored custom commands and Skill Slash Commands may not shadow. A custom command whose name collides with this set is silently skipped with a warning during discovery. **Default Custom Command names do NOT belong to this set** — they are overrideable by design.
|
|
23
27
|
|
|
24
28
|
**Override Priority Chain**:
|
|
25
|
-
|
|
29
|
+
Core Slash Command > project custom > user custom > Skill Slash Command > Default Custom Command (plus namespaced `plugin` commands registered independently at runtime). Core Slash Commands are the Reserved Name Set and are never shadowed. A user-authored custom command beats a Skill Slash Command of the same name, and the user is told once. A Default Custom Command yields silently to any higher-priority entry, including a skill that takes only one of its aliases; it keeps its other names and comes back as soon as the shadowing skill is disabled or removed. Only the winning entry reaches the registry. Skills outrank Default Custom Commands on purpose (ADR-0038).
|
|
26
30
|
|
|
27
31
|
## Streaming Display Language
|
|
28
32
|
|
|
@@ -38,6 +42,10 @@ _Avoid_: Markdown parsing, lexer detection
|
|
|
38
42
|
The display-only cadence at which complete assistant text lines leave the line-split pipeline and enter the stream staging window: one line per fixed interval, blank lines free, and a backlog that speeds the cadence up smoothly (one extra multiple per 20 pending lines, capped at 4x) but never dumps everything at once. It never delays thinking lines, tool entries, or scrollback commits of already staged content, and it holds nothing that ContextIR or the transcript depend on.
|
|
39
43
|
_Avoid_: typewriter effect (that is character-level), throttling (that is the scrollback drain), rate limiting
|
|
40
44
|
|
|
45
|
+
**Thinking Badge**:
|
|
46
|
+
The short English phrase in the breathing-yellow part of the loading line's status suffix, shown only while the model thinks and thinking display is off. It names the thinking effort that the in-flight request actually uses (the applied level, or ultracode when that switch is on). It is chosen when a request starts to think and does not change until that request ends. When no applied level is known, it shows the neutral word `thinking`. It is a word, not a color: it never takes the effort level colors.
|
|
47
|
+
_Avoid_: effort badge, hidden thinking label, random thinking word
|
|
48
|
+
|
|
41
49
|
**Immutable Scrollback Commit**:
|
|
42
50
|
The point at which staged terminal output is appended to terminal scrollback and can no longer be replaced. An open Streaming Markdown Container remains transient until its closing boundary or a normal turn boundary makes it complete.
|
|
43
51
|
_Avoid_: history render, live Markdown rerender
|
|
@@ -192,6 +200,26 @@ _Avoid_: level (in any user-visible text), Max (OpenWorker's transitional name f
|
|
|
192
200
|
The one-line purpose statement shown next to a Model Tier wherever a model name follows it (tier menu, first-run wizard): Lite "Quick answers, small edits", Pro "Everyday coding", Elite "Deep reasoning, hardest problems". `/config` appends a cost clause to the same tagline. Markers such as "(default)" and "(current)" are appended by the display layer, never written into the tagline.
|
|
193
201
|
_Avoid_: level description, help text
|
|
194
202
|
|
|
203
|
+
## Next-Step Suggestion Language
|
|
204
|
+
|
|
205
|
+
**Next-Step Suggestion**:
|
|
206
|
+
A short, single-line prediction of what the user would naturally type next, generated once after a user-authored turn completes normally and shown as gray ghost text in the empty input box. It predicts the user's words, not the assistant's advice: it is never an evaluation, a question, or a new idea. It is one-shot per turn: once accepted, or dismissed by any input, busy transition, mode change or session replacement, it does not return for that turn.
|
|
207
|
+
_Avoid_: completion / 补全 (that continues text the user already typed), prediction (names the mechanism), placeholder (that is the queued-message hint's slot), prompt suggestion (Claude Code's name)
|
|
208
|
+
|
|
209
|
+
**Suggestion Acceptance**:
|
|
210
|
+
The explicit key action that copies a Next-Step Suggestion into the input box as real text, leaving the user to edit or submit it. Acceptance never submits. `Enter` on an empty box never accepts.
|
|
211
|
+
_Avoid_: auto-submit, one-key send
|
|
212
|
+
|
|
213
|
+
## Bottom Band Status Language
|
|
214
|
+
|
|
215
|
+
**Task List Panel**:
|
|
216
|
+
The list of the run's tasks shown in the bottom interaction band while the session is busy and unfinished tasks exist. Its title line normally carries the "working" signal (breathing dot, elapsed time, interrupt hint), so the standalone loading line stays hidden while it is shown.
|
|
217
|
+
_Avoid_: todo panel, tasklist (spoken shorthand only)
|
|
218
|
+
|
|
219
|
+
**Stall Status**:
|
|
220
|
+
A state in which the run is alive but does not advance any task: context compaction in progress, or an LLM retry backoff countdown. Only the countdown counts as Stall Status; the retried request itself does not.
|
|
221
|
+
_Avoid_: blocking status ("blocking" in this repo means blocking the event loop), waiting state
|
|
222
|
+
|
|
195
223
|
## Relationships
|
|
196
224
|
|
|
197
225
|
- A **Core Slash Command** is always registered with `source="builtin"` on the Execution Axis. Its name belongs to the **Reserved Name Set** and cannot be overridden by any markdown-template command.
|
|
@@ -237,6 +265,14 @@ _Avoid_: level description, help text
|
|
|
237
265
|
- The word "tier" is reserved for user-visible text; the word "level" stays on the SDK contract, settings keys and RPC fields. Effort has its own ladder (`low`…`max`); a Model Tier name must never coincide with an effort level name.
|
|
238
266
|
- **Tier Taglines** exist in exactly one place; every surface (tier menu, statusline, `/config`, wizard, preflight summary, endpoint warnings) derives from it.
|
|
239
267
|
|
|
268
|
+
- A **Next-Step Suggestion** is generated only when the **Attention State** is idle after a turn that ended with `completed`; interrupted or failed turns, and turns not authored by the user, never produce one.
|
|
269
|
+
- A **Next-Step Suggestion** and an Idle Recap may both follow the same turn; they occupy different surfaces (input box vs. scrollback) and neither suppresses the other.
|
|
270
|
+
- **Suggestion Acceptance** follows the inline-completion PRD rule that `Enter` submits only the user's real input; this deliberately differs from Claude Code, where an empty-box `Enter` submits the suggestion.
|
|
271
|
+
- A **Safe Clear** after **Suggestion Acceptance** returns an empty box without the suggestion: the suggestion is one-shot.
|
|
272
|
+
|
|
273
|
+
- The bottom interaction band shows at most one "working" signal at a time. During a **Stall Status** the loading line carries it and the **Task List Panel** is hidden entirely; when the Stall Status ends, the Task List Panel returns unchanged.
|
|
274
|
+
- Running tools are not a **Stall Status**: the running-tool list and the **Task List Panel** may share the screen.
|
|
275
|
+
|
|
240
276
|
## Flagged ambiguities
|
|
241
277
|
|
|
242
278
|
- OpenWorker still shows `HIGH` as **Max** (ADR-0017/0019); the agreed family-wide name is **Elite** (ADR-0023). Until OpenWorker is updated, the same Provider-Pool Level has two display names across products.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: comate-cli
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.4b9
|
|
4
4
|
Summary: Comate terminal CLI built on comate-agent-sdk
|
|
5
5
|
Project-URL: Homepage, https://github.com/AndyLee1024/agent-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/AndyLee1024/agent-sdk
|
|
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
16
|
Requires-Python: <3.14,>=3.11
|
|
17
17
|
Requires-Dist: charset-normalizer==3.4.7
|
|
18
|
-
Requires-Dist: comate-agent-sdk<0.13,>=0.12.
|
|
18
|
+
Requires-Dist: comate-agent-sdk<0.13,>=0.12.16
|
|
19
19
|
Requires-Dist: comate-rpc<0.2,>=0.1.4
|
|
20
20
|
Requires-Dist: concurrent-log-handler>=0.9.25
|
|
21
21
|
Requires-Dist: curl-cffi==0.13.0
|
|
@@ -247,14 +247,6 @@ LOADING_SPINNER_FRAMES: tuple[str, ...] = (
|
|
|
247
247
|
"⠏",
|
|
248
248
|
)
|
|
249
249
|
|
|
250
|
-
HIDDEN_THINKING_BADGES: tuple[str, ...] = (
|
|
251
|
-
"ultra thinking",
|
|
252
|
-
"deep thinking",
|
|
253
|
-
"extended thinking",
|
|
254
|
-
"thinking some more with max effort"
|
|
255
|
-
)
|
|
256
|
-
|
|
257
|
-
|
|
258
250
|
def breathing_dot_color(frame: int) -> str:
|
|
259
251
|
"""Return the breathing dot color for a given animation frame."""
|
|
260
252
|
phase = (frame // 4) % len(BREATH_DOT_COLORS)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Commit, push, and open (or update) a pull request / merge request
|
|
3
3
|
argument-hint: [title hint]
|
|
4
|
-
aliases: [mr]
|
|
4
|
+
aliases: [open-mr]
|
|
5
5
|
---
|
|
6
6
|
Commit any pending changes, push the branch, and open a pull request (GitHub) or merge request (GitLab) for it — or update the existing one.
|
|
7
7
|
|
|
@@ -4,6 +4,7 @@ Revision 5: 6 项偏好(display_thinking, model_level, memory_background, memo
|
|
|
4
4
|
Revision 6: 追加 disabled_skills——由 /skills 菜单管理,不进 /config picker 字段序。
|
|
5
5
|
Revision 7: 追加 stream_pacing——assistant 正文刷入节奏四档(CLI-only 投影)。
|
|
6
6
|
Revision 8: 追加 display_language——界面语言四档(CLI-only 投影,auto = 跟随系统探测)。
|
|
7
|
+
Revision 9: 追加 suggestion_enabled——下一步建议开关(CLI-only 投影)。
|
|
7
8
|
"""
|
|
8
9
|
from __future__ import annotations
|
|
9
10
|
|
|
@@ -29,6 +30,7 @@ class ConfigSnapshot:
|
|
|
29
30
|
memory_dreaming_enabled: bool = True
|
|
30
31
|
token_cost_enabled: bool = False
|
|
31
32
|
recap_enabled: bool = True
|
|
33
|
+
suggestion_enabled: bool = True
|
|
32
34
|
disabled_skills: tuple[str, ...] = ()
|
|
33
35
|
"""按名禁用的 skill 名单,投影为 AgentConfig.disabled_skills。
|
|
34
36
|
|
|
@@ -65,5 +67,8 @@ class ConfigSnapshot:
|
|
|
65
67
|
def with_recap(self, enabled: bool) -> "ConfigSnapshot":
|
|
66
68
|
return replace(self, recap_enabled=enabled)
|
|
67
69
|
|
|
70
|
+
def with_suggestion(self, enabled: bool) -> "ConfigSnapshot":
|
|
71
|
+
return replace(self, suggestion_enabled=enabled)
|
|
72
|
+
|
|
68
73
|
def with_disabled_skills(self, names: tuple[str, ...]) -> "ConfigSnapshot":
|
|
69
74
|
return replace(self, disabled_skills=tuple(names))
|
|
@@ -47,13 +47,16 @@ _BOOL_FIELDS = {
|
|
|
47
47
|
ConfigField.MEMORY_DREAMING,
|
|
48
48
|
ConfigField.TOKEN_COST,
|
|
49
49
|
ConfigField.RECAP,
|
|
50
|
+
ConfigField.SUGGESTION,
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
def _field_label(f: ConfigField) -> str:
|
|
54
|
-
"""
|
|
55
|
+
"""新增文案的字段(语言、建议开关)按规则走 i18n 渲染时取词;旧标签维持英文字面量,按切片另迁。"""
|
|
55
56
|
if f == ConfigField.LANGUAGE:
|
|
56
57
|
return i18n(message.config_language_label)
|
|
58
|
+
if f == ConfigField.SUGGESTION:
|
|
59
|
+
return i18n(message.config_suggestion_label)
|
|
57
60
|
return _FIELD_LABELS[f]
|
|
58
61
|
|
|
59
62
|
|
|
@@ -179,6 +182,8 @@ class ConfigPickerUI:
|
|
|
179
182
|
return f"[ {'on ' if snap.token_cost_enabled else 'off'} ]"
|
|
180
183
|
if f == ConfigField.RECAP:
|
|
181
184
|
return f"[ {'on ' if snap.recap_enabled else 'off'} ]"
|
|
185
|
+
if f == ConfigField.SUGGESTION:
|
|
186
|
+
return f"[ {'on ' if snap.suggestion_enabled else 'off'} ]"
|
|
182
187
|
return ""
|
|
183
188
|
|
|
184
189
|
def _subview_fragments(self) -> list[tuple[str, str]]:
|
{comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/config/picker_state.py
RENAMED
|
@@ -28,6 +28,7 @@ class ConfigField(Enum):
|
|
|
28
28
|
MEMORY_DREAMING = "memory_dreaming"
|
|
29
29
|
TOKEN_COST = "token_cost"
|
|
30
30
|
RECAP = "recap"
|
|
31
|
+
SUGGESTION = "suggestion"
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
class ViewMode(Enum):
|
|
@@ -62,6 +63,7 @@ _FIELD_ORDER = (
|
|
|
62
63
|
ConfigField.MEMORY_DREAMING,
|
|
63
64
|
ConfigField.TOKEN_COST,
|
|
64
65
|
ConfigField.RECAP,
|
|
66
|
+
ConfigField.SUGGESTION,
|
|
65
67
|
)
|
|
66
68
|
|
|
67
69
|
_MODEL_LEVEL_VALUES: tuple[ModelLevelPreset, ...] = ("LOW", "MID", "HIGH")
|
|
@@ -159,6 +161,8 @@ class ConfigPickerState:
|
|
|
159
161
|
self.draft = self.draft.with_token_cost(not self.draft.token_cost_enabled)
|
|
160
162
|
elif f == ConfigField.RECAP:
|
|
161
163
|
self.draft = self.draft.with_recap(not self.draft.recap_enabled)
|
|
164
|
+
elif f == ConfigField.SUGGESTION:
|
|
165
|
+
self.draft = self.draft.with_suggestion(not self.draft.suggestion_enabled)
|
|
162
166
|
elif f == ConfigField.MODEL_LEVEL:
|
|
163
167
|
cur = _MODEL_LEVEL_VALUES.index(self.draft.model_level)
|
|
164
168
|
next_v = _MODEL_LEVEL_VALUES[(cur + 1) % len(_MODEL_LEVEL_VALUES)]
|
|
@@ -41,6 +41,7 @@ _CLI_CONFIG_MODEL_SECTION = "model"
|
|
|
41
41
|
_CLI_CONFIG_MEMORY_SECTION = "memory"
|
|
42
42
|
_CLI_CONFIG_TOKEN_COST_SECTION = "token_cost"
|
|
43
43
|
_CLI_CONFIG_RECAP_SECTION = "recap"
|
|
44
|
+
_CLI_CONFIG_SUGGESTION_SECTION = "suggestion"
|
|
44
45
|
_CLI_CONFIG_SKILLS_SECTION = "skills"
|
|
45
46
|
|
|
46
47
|
|
|
@@ -339,6 +340,19 @@ def _apply_cli_config(snapshot: ConfigSnapshot, section: dict[str, Any]) -> Conf
|
|
|
339
340
|
if parsed_bool is not None:
|
|
340
341
|
snapshot = snapshot.with_recap(parsed_bool)
|
|
341
342
|
|
|
343
|
+
suggestion = _named_object(
|
|
344
|
+
section,
|
|
345
|
+
_CLI_CONFIG_SUGGESTION_SECTION,
|
|
346
|
+
"comate_cli.config.suggestion",
|
|
347
|
+
)
|
|
348
|
+
parsed_bool = _named_bool(
|
|
349
|
+
suggestion,
|
|
350
|
+
"enabled",
|
|
351
|
+
"comate_cli.config.suggestion.enabled",
|
|
352
|
+
)
|
|
353
|
+
if parsed_bool is not None:
|
|
354
|
+
snapshot = snapshot.with_suggestion(parsed_bool)
|
|
355
|
+
|
|
342
356
|
skills = _named_object(
|
|
343
357
|
section,
|
|
344
358
|
_CLI_CONFIG_SKILLS_SECTION,
|
|
@@ -450,6 +464,7 @@ def build_cli_config_settings(snapshot: ConfigSnapshot) -> dict[str, Any]:
|
|
|
450
464
|
"model": {"level": snapshot.model_level.lower()},
|
|
451
465
|
"token_cost": {"enabled": snapshot.token_cost_enabled},
|
|
452
466
|
"recap": {"enabled": snapshot.recap_enabled},
|
|
467
|
+
"suggestion": {"enabled": snapshot.suggestion_enabled},
|
|
453
468
|
# 不含 skills:禁用名单写 SDK 级共享 key,见 apply_cli_config_snapshot_to_settings。
|
|
454
469
|
}
|
|
455
470
|
|
{comate_cli-0.12.4b8 → comate_cli-0.12.4b9}/comate_cli/terminal_agent/custom_slash_commands.py
RENAMED
|
@@ -51,7 +51,7 @@ class CustomSlashCommand:
|
|
|
51
51
|
source_path: Path
|
|
52
52
|
argument_hint: str | None = None
|
|
53
53
|
aliases: tuple[str, ...] = ()
|
|
54
|
-
"""frontmatter `aliases:`(如 `/pr` 的 `mr`)。注册时与已占用名字冲突的别名会被丢弃。"""
|
|
54
|
+
"""frontmatter `aliases:`(如 `/open-pr` 的 `open-mr`)。注册时与已占用名字冲突的别名会被丢弃。"""
|
|
55
55
|
|
|
56
56
|
def scope_label(self) -> str:
|
|
57
57
|
if self.namespace:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Effort 档位 → 图标 / 颜色 / 文案的唯一映射。
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
菜单(/effort 刻度尺、/model 档位提示)、statusline、Thinking Badge 的显示都只经这里,禁止各自重算——
|
|
4
4
|
"看到符号就能对上档位"靠的是这一份映射,不是几份巧合一致的实现。
|
|
5
5
|
"""
|
|
6
6
|
from __future__ import annotations
|
|
@@ -83,6 +83,28 @@ def rainbow_fragments(text: str, *, frame: int | None = None) -> list[tuple[str,
|
|
|
83
83
|
return [(f"fg:{palette[(offset + i) % len(palette)]} bold", ch) for i, ch in enumerate(text)]
|
|
84
84
|
|
|
85
85
|
|
|
86
|
+
# Thinking Badge 短语(2026-10-04 用户拍板)。固定英文,不进 i18n(rules/comate-cli-i18n.md 豁免)。
|
|
87
|
+
# high 及以上同一句式、只换档位名;medium / low 不用此句式("some more" 与低档语义冲突)。
|
|
88
|
+
# 只换字不换色:badge 颜色固定呼吸黄,不取档位色(8-30 档位色版被回退,见 rules/effort.md)。
|
|
89
|
+
THINKING_BADGE_PHRASES: dict[str, str] = {
|
|
90
|
+
ULTRACODE: "ultra thinking",
|
|
91
|
+
"max": "thinking some more with max effort",
|
|
92
|
+
"xhigh": "thinking some more with xhigh effort",
|
|
93
|
+
"high": "thinking some more with high effort",
|
|
94
|
+
"medium": "thinking",
|
|
95
|
+
"low": "light thinking",
|
|
96
|
+
}
|
|
97
|
+
# 拿不到生效档(auto / 不支持 / off)时的中性词:不冒充任何高档。
|
|
98
|
+
THINKING_BADGE_NEUTRAL = "thinking"
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def thinking_badge_text(display: EffortDisplay | None) -> str:
|
|
102
|
+
"""Thinking Badge 文案:按真实生效档挑词;无生效档或无来源(None)时返回中性词。"""
|
|
103
|
+
if display is not None and display.kind in ("level", "ultracode") and display.level:
|
|
104
|
+
return THINKING_BADGE_PHRASES.get(display.level, THINKING_BADGE_NEUTRAL)
|
|
105
|
+
return THINKING_BADGE_NEUTRAL
|
|
106
|
+
|
|
107
|
+
|
|
86
108
|
def statusline_text(display: EffortDisplay) -> str:
|
|
87
109
|
"""statusline 文案(纯文字,不带图标);auto / 不支持时返回空串(整段隐藏)。"""
|
|
88
110
|
if display.kind in ("level", "off", "ultracode") and display.level:
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
import random
|
|
5
4
|
import re
|
|
6
5
|
import threading
|
|
7
6
|
import time
|
|
@@ -9,7 +8,10 @@ import uuid
|
|
|
9
8
|
from collections import deque
|
|
10
9
|
from dataclasses import dataclass, field
|
|
11
10
|
from pathlib import Path
|
|
12
|
-
from typing import Any, Callable, Literal
|
|
11
|
+
from typing import TYPE_CHECKING, Any, Callable, Literal
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING: # 仅注解用;effort_style 推迟到首个隐藏 thinking delta 才 import
|
|
14
|
+
from comate_cli.terminal_agent.effort_style import EffortDisplay
|
|
13
15
|
|
|
14
16
|
from comate_agent_sdk.agent.events import (
|
|
15
17
|
CompactionResultEvent,
|
|
@@ -53,7 +55,6 @@ from comate_agent_sdk.agent.events import (
|
|
|
53
55
|
from rich.console import RenderableType
|
|
54
56
|
from rich.text import Text
|
|
55
57
|
|
|
56
|
-
from comate_cli.terminal_agent.animations import HIDDEN_THINKING_BADGES
|
|
57
58
|
from comate_cli.terminal_agent.figures import (
|
|
58
59
|
BOTTOM_LEFT_CROP,
|
|
59
60
|
BULLET_OPERATOR,
|
|
@@ -224,16 +225,22 @@ def _tool_status_line(state: "_RunningTool", elapsed_seconds: float) -> str:
|
|
|
224
225
|
"Running" 固定英文、不走 i18n 三语表:规则所有者 2026-08-24 显式豁免,
|
|
225
226
|
对齐 Claude Code 原版观感。
|
|
226
227
|
"""
|
|
227
|
-
# Bash 有进程可以移交后台,ctrl+b 提示只给它;Read / Grep 显示这个就是撒谎。
|
|
228
|
-
background_hint = (
|
|
229
|
-
f" {i18n(i18n_message.bash_background_hint)}" if state.tool_name == "Bash" else ""
|
|
230
|
-
)
|
|
231
228
|
if elapsed_seconds < TOOL_STATUS_DETAIL_VISIBLE_AFTER_SECONDS:
|
|
232
|
-
return f"{BOTTOM_LEFT_CROP} Running{ELLIPSIS}
|
|
229
|
+
return f"{BOTTOM_LEFT_CROP} Running{ELLIPSIS}"
|
|
233
230
|
parts = [_format_duration(elapsed_seconds)]
|
|
234
231
|
if state.timeout_display:
|
|
235
232
|
parts.append(f"timeout {_humanize_timeout_display(state.timeout_display)}")
|
|
236
|
-
return f"{BOTTOM_LEFT_CROP} Running{ELLIPSIS} ({f' {MIDDLE_DOT} '.join(parts)})
|
|
233
|
+
return f"{BOTTOM_LEFT_CROP} Running{ELLIPSIS} ({f' {MIDDLE_DOT} '.join(parts)})"
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def _has_background_hint(state: "_RunningTool") -> bool:
|
|
237
|
+
# Bash 有进程可以移交后台,ctrl+b 提示只给它;Read / Grep 显示这个就是撒谎。
|
|
238
|
+
return state.tool_name == "Bash"
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def _background_hint_line() -> str:
|
|
242
|
+
"""Running 状态行下面独占一行的 ctrl+b 提示,与 "Running" 首字母同列。"""
|
|
243
|
+
return f" {i18n(i18n_message.bash_background_hint)}"
|
|
237
244
|
|
|
238
245
|
|
|
239
246
|
def _format_tokens(token_count: int) -> str:
|
|
@@ -496,6 +503,8 @@ class EventRenderer:
|
|
|
496
503
|
self._turn_received_text_delta: bool = False
|
|
497
504
|
self._turn_received_thinking_delta: bool = False
|
|
498
505
|
self._hidden_thinking_badge_text: str = ""
|
|
506
|
+
# TUI 注入:会话真实生效档的显示投影,供 Thinking Badge 挑词。
|
|
507
|
+
self._effort_display_cb: Callable[[], "EffortDisplay | None"] = lambda: None
|
|
499
508
|
self._text_delta_started: bool = False
|
|
500
509
|
self._active_text_message_id: str | None = None
|
|
501
510
|
# ━━━━━ spec §4.1 新管道状态字段(Phase 1.2 引入,Phase 4-6 接入) ━━━━━
|
|
@@ -884,7 +893,10 @@ class EventRenderer:
|
|
|
884
893
|
if self._show_thinking_cb():
|
|
885
894
|
self._hidden_thinking_badge_text = ""
|
|
886
895
|
elif not self._hidden_thinking_badge_text:
|
|
887
|
-
|
|
896
|
+
# badge 非空 = 本次请求已挑过;text / tool / turn 边界清空后下次请求重读档位
|
|
897
|
+
from comate_cli.terminal_agent.effort_style import thinking_badge_text
|
|
898
|
+
|
|
899
|
+
self._hidden_thinking_badge_text = thinking_badge_text(self._effort_display_cb())
|
|
888
900
|
self._thinking_batch += delta
|
|
889
901
|
while "\n" in self._thinking_batch:
|
|
890
902
|
line, self._thinking_batch = self._thinking_batch.split("\n", 1)
|
|
@@ -1350,6 +1362,8 @@ class EventRenderer:
|
|
|
1350
1362
|
total_lines += 1
|
|
1351
1363
|
else:
|
|
1352
1364
|
total_lines += 2 # 签名行 + Running 状态行
|
|
1365
|
+
if _has_background_hint(state):
|
|
1366
|
+
total_lines += 1 # ctrl+b 提示行
|
|
1353
1367
|
return total_lines
|
|
1354
1368
|
|
|
1355
1369
|
def loading_state(self) -> LoadingState:
|
|
@@ -1813,6 +1827,8 @@ class EventRenderer:
|
|
|
1813
1827
|
lines_to_add += 1
|
|
1814
1828
|
else:
|
|
1815
1829
|
lines_to_add = 2 # 签名行 + Running 状态行
|
|
1830
|
+
if _has_background_hint(state):
|
|
1831
|
+
lines_to_add += 1 # ctrl+b 提示行
|
|
1816
1832
|
|
|
1817
1833
|
if len(entries) + lines_to_add > normalized_limit:
|
|
1818
1834
|
remaining_tools = len(tool_items) - idx
|
|
@@ -1869,6 +1885,8 @@ class EventRenderer:
|
|
|
1869
1885
|
(f"fg:{theme.TEXT_BRIGHT}", paren),
|
|
1870
1886
|
]))
|
|
1871
1887
|
entries.append((1, _tool_status_line(state, elapsed_seconds)))
|
|
1888
|
+
if _has_background_hint(state):
|
|
1889
|
+
entries.append((1, _background_hint_line()))
|
|
1872
1890
|
|
|
1873
1891
|
return entries[:normalized_limit]
|
|
1874
1892
|
|
|
@@ -31,7 +31,7 @@ EN: dict[str, str] = {
|
|
|
31
31
|
"bash_background_help_line": (
|
|
32
32
|
"ctrl+b - move the running shell command (yours or the model's) to the background"
|
|
33
33
|
),
|
|
34
|
-
"bash_background_hint": "ctrl+b to run in background",
|
|
34
|
+
"bash_background_hint": "(ctrl+b to run in background)",
|
|
35
35
|
"bash_background_no_target": "No shell command is running in the foreground.",
|
|
36
36
|
"bash_background_requested": "Moving the command to the background…",
|
|
37
37
|
"compact_fixed_overhead_advice_mcp": (
|
|
@@ -55,6 +55,7 @@ EN: dict[str, str] = {
|
|
|
55
55
|
),
|
|
56
56
|
"config_language_label": "UI Language",
|
|
57
57
|
"config_language_restart_hint": "Interface language takes effect after restart.",
|
|
58
|
+
"config_suggestion_label": "Next-step suggestion",
|
|
58
59
|
"custom_command_alias_conflict": (
|
|
59
60
|
"Alias '/{alias}' of custom command '/{command_name}' is already taken by another command; ignored."
|
|
60
61
|
),
|
|
@@ -271,6 +272,10 @@ EN: dict[str, str] = {
|
|
|
271
272
|
"rpc_ws_port_missing": "--port requires a port number (0 lets the system pick a free one)",
|
|
272
273
|
"rpc_ws_port_without_rpc_ws": "--port can only be used with --rpc-ws",
|
|
273
274
|
"skill_loaded": "Successfully loaded skill",
|
|
275
|
+
"skill_slash_name_conflict": (
|
|
276
|
+
"Skill '{skill_name}' has the same name as an existing command, so '/{skill_name}' runs that command. "
|
|
277
|
+
"The model can still use this skill through the Skill tool."
|
|
278
|
+
),
|
|
274
279
|
"shell_command_failed": "Failed to run the shell command: {error}",
|
|
275
280
|
"shell_command_queued": "Shell command queued; it runs after the current task finishes.",
|
|
276
281
|
"shell_help_line": (
|
|
@@ -333,7 +338,7 @@ EN: dict[str, str] = {
|
|
|
333
338
|
"transcript_empty": "No transcript entries yet. Send a message first.",
|
|
334
339
|
"transcript_viewer_failed": "Transcript viewer failed: {error}",
|
|
335
340
|
"webfetch_fetched": "Fetched {url} ∙ {chars} chars",
|
|
336
|
-
"workflow_approval_agent_limit": "agent calls: up to {max_calls}, {concurrency} in parallel; inner agents are not approved one by one",
|
|
341
|
+
"workflow_approval_agent_limit": "agent calls: up to {max_calls}, {concurrency} in parallel · llm calls: up to {max_llm_calls}, {llm_concurrency} in parallel; inner agents are not approved one by one",
|
|
337
342
|
"workflow_approval_no_phases": "phases: none declared in the script",
|
|
338
343
|
"workflow_approval_phases": "phases: {phases}",
|
|
339
344
|
"workflow_approval_resume": "resumes run {run_id}: finished agent calls are replayed",
|
|
@@ -353,10 +358,12 @@ EN: dict[str, str] = {
|
|
|
353
358
|
"workflows_empty": 'No workflow runs in this session yet.',
|
|
354
359
|
"workflows_footer_agent": '↑/↓ scroll · PgUp/PgDn page · ←/Esc back · q close',
|
|
355
360
|
"workflows_footer_list": '↑/↓ select · Enter open · x stop · Esc/q close',
|
|
356
|
-
"workflows_footer_run": '↑/↓ select
|
|
361
|
+
"workflows_footer_run": '↑/↓ select call · Enter open · x stop · ←/Esc back · q close',
|
|
357
362
|
"workflows_header_meta": '{running} running · {total} total',
|
|
358
|
-
"workflows_list_metrics": '{progress} · {
|
|
359
|
-
"
|
|
363
|
+
"workflows_list_metrics": '{progress} · {calls} calls · {elapsed}',
|
|
364
|
+
"workflows_llm_metrics": '{model} · {elapsed} · {tokens}',
|
|
365
|
+
"workflows_llm_title": 'LLM · {label}',
|
|
366
|
+
"workflows_no_agents": 'No calls yet.',
|
|
360
367
|
"workflows_phase_unassigned": '(no phase)',
|
|
361
368
|
"workflows_phase_undeclared": '(undeclared)',
|
|
362
369
|
"workflows_run_already_finished": 'Run already finished.',
|
|
@@ -368,9 +375,10 @@ EN: dict[str, str] = {
|
|
|
368
375
|
"workflows_section_error": 'Error',
|
|
369
376
|
"workflows_section_prompt": 'Prompt',
|
|
370
377
|
"workflows_section_result": 'Result',
|
|
378
|
+
"workflows_section_system": 'System',
|
|
371
379
|
"workflows_section_tool_calls": 'Tool calls',
|
|
372
380
|
"workflows_snapshot_empty": 'Workflow runs snapshot: none in this session.',
|
|
373
|
-
"workflows_snapshot_row": '- {run_id} · {name} · {status} · {progress} · {
|
|
381
|
+
"workflows_snapshot_row": '- {run_id} · {name} · {status} · {progress} · {calls} calls · {elapsed}',
|
|
374
382
|
"workflows_snapshot_title": 'Workflow runs snapshot:',
|
|
375
383
|
"workflows_status_aborted": 'aborted',
|
|
376
384
|
"workflows_status_completed": 'completed',
|
|
@@ -31,7 +31,7 @@ JA: dict[str, str] = {
|
|
|
31
31
|
"bash_background_help_line": (
|
|
32
32
|
"ctrl+b - 実行中のシェルコマンド(自分のもの・モデルのもの)をバックグラウンドへ移します"
|
|
33
33
|
),
|
|
34
|
-
"bash_background_hint": "ctrl+b でバックグラウンド実行",
|
|
34
|
+
"bash_background_hint": "(ctrl+b でバックグラウンド実行)",
|
|
35
35
|
"bash_background_no_target": "フォアグラウンドで実行中のシェルコマンドはありません。",
|
|
36
36
|
"bash_background_requested": "コマンドをバックグラウンドへ移しています…",
|
|
37
37
|
"compact_fixed_overhead_advice_mcp": (
|
|
@@ -54,6 +54,7 @@ JA: dict[str, str] = {
|
|
|
54
54
|
),
|
|
55
55
|
"config_language_label": "表示言語",
|
|
56
56
|
"config_language_restart_hint": "表示言語は次回起動時に適用されます。",
|
|
57
|
+
"config_suggestion_label": "次のステップ提案",
|
|
57
58
|
"custom_command_alias_conflict": (
|
|
58
59
|
"カスタムコマンド /{command_name} のエイリアス /{alias} は他のコマンドで使用済みのため無視しました。"
|
|
59
60
|
),
|
|
@@ -279,6 +280,10 @@ JA: dict[str, str] = {
|
|
|
279
280
|
"rpc_ws_port_missing": "--port にはポート番号が必要です(0 を指定すると空いているポートを自動で選びます)",
|
|
280
281
|
"rpc_ws_port_without_rpc_ws": "--port は --rpc-ws と一緒にしか使えません",
|
|
281
282
|
"skill_loaded": "スキルを読み込みました",
|
|
283
|
+
"skill_slash_name_conflict": (
|
|
284
|
+
"スキル {skill_name} は既存のコマンドと同名のため、/{skill_name} はそのコマンドを実行します。"
|
|
285
|
+
"モデルは引き続き Skill ツールでこのスキルを使えます。"
|
|
286
|
+
),
|
|
282
287
|
"shell_command_failed": "シェルコマンドの実行に失敗しました: {error}",
|
|
283
288
|
"shell_command_queued": "シェルコマンドをキューに入れました。現在のタスク終了後に実行します。",
|
|
284
289
|
"shell_help_line": (
|
|
@@ -340,7 +345,7 @@ JA: dict[str, str] = {
|
|
|
340
345
|
"トランスクリプトビューアを開けませんでした:{error}"
|
|
341
346
|
),
|
|
342
347
|
"webfetch_fetched": "{url} を取得しました ∙ {chars} 文字",
|
|
343
|
-
"workflow_approval_agent_limit": "agent 呼び出し:最大 {max_calls} 回、並列 {concurrency};内部 agent は個別承認されません",
|
|
348
|
+
"workflow_approval_agent_limit": "agent 呼び出し:最大 {max_calls} 回、並列 {concurrency} · llm 呼び出し:最大 {max_llm_calls} 回、並列 {llm_concurrency};内部 agent は個別承認されません",
|
|
344
349
|
"workflow_approval_no_phases": "フェーズ:スクリプトに宣言なし",
|
|
345
350
|
"workflow_approval_phases": "フェーズ:{phases}",
|
|
346
351
|
"workflow_approval_resume": "{run_id} から再開:完了済みの agent 呼び出しは再生されます",
|
|
@@ -360,10 +365,12 @@ JA: dict[str, str] = {
|
|
|
360
365
|
"workflows_empty": 'このセッションではまだワークフローを実行していません。',
|
|
361
366
|
"workflows_footer_agent": '↑↓ スクロール · PgUp/PgDn ページ · ← 戻る · q 閉じる',
|
|
362
367
|
"workflows_footer_list": '↑↓ 移動 · Enter 詳細 · x 停止 · q 閉じる',
|
|
363
|
-
"workflows_footer_run": '↑↓
|
|
368
|
+
"workflows_footer_run": '↑↓ 呼び出しを選択 · Enter 詳細 · x 停止 · ← 戻る · q 閉じる',
|
|
364
369
|
"workflows_header_meta": '{running} 件が実行中(全 {total} 件)',
|
|
365
|
-
"workflows_list_metrics": 'フェーズ {progress} ·
|
|
366
|
-
"
|
|
370
|
+
"workflows_list_metrics": 'フェーズ {progress} · 呼び出し {calls} 件 · 経過 {elapsed}',
|
|
371
|
+
"workflows_llm_metrics": '{model} · {elapsed} · {tokens}',
|
|
372
|
+
"workflows_llm_title": 'LLM 呼び出し {label} の詳細',
|
|
373
|
+
"workflows_no_agents": 'まだ呼び出しはありません。',
|
|
367
374
|
"workflows_phase_unassigned": 'フェーズなし',
|
|
368
375
|
"workflows_phase_undeclared": '(途中で追加)',
|
|
369
376
|
"workflows_run_already_finished": 'この実行はもう終わっています。',
|
|
@@ -375,9 +382,10 @@ JA: dict[str, str] = {
|
|
|
375
382
|
"workflows_section_error": 'エラー内容',
|
|
376
383
|
"workflows_section_prompt": 'タスク内容',
|
|
377
384
|
"workflows_section_result": '結果',
|
|
385
|
+
"workflows_section_system": 'システムプロンプト',
|
|
378
386
|
"workflows_section_tool_calls": 'ツール呼び出しの記録',
|
|
379
387
|
"workflows_snapshot_empty": 'ワークフロー実行の一覧:このセッションには記録がありません。',
|
|
380
|
-
"workflows_snapshot_row": '- {run_id} · {name} · {status} · フェーズ {progress} ·
|
|
388
|
+
"workflows_snapshot_row": '- {run_id} · {name} · {status} · フェーズ {progress} · 呼び出し {calls} 件 · 経過 {elapsed}',
|
|
381
389
|
"workflows_snapshot_title": 'ワークフロー実行の一覧:',
|
|
382
390
|
"workflows_status_aborted": '停止済み',
|
|
383
391
|
"workflows_status_completed": '完了',
|
|
@@ -20,7 +20,7 @@ ZH: dict[str, str] = {
|
|
|
20
20
|
"approval_add_dir_failed": "把目录加入本会话失败:{error}",
|
|
21
21
|
"approval_add_dir_option": "允许,并把 {directory} 加入本会话",
|
|
22
22
|
"bash_background_help_line": "ctrl+b - 把正在运行的 shell 命令(你敲的或模型调用的)转到后台",
|
|
23
|
-
"bash_background_hint": "ctrl+b 转后台",
|
|
23
|
+
"bash_background_hint": "(ctrl+b 转后台)",
|
|
24
24
|
"bash_background_no_target": "当前没有正在前台运行的 shell 命令。",
|
|
25
25
|
"bash_background_requested": "正在把命令转到后台…",
|
|
26
26
|
"compact_fixed_overhead_advice_mcp": "建议用 /mcp 关闭不用的 MCP server;自动压缩连续失败 {max_failures} 次后会暂停。",
|
|
@@ -36,6 +36,7 @@ ZH: dict[str, str] = {
|
|
|
36
36
|
),
|
|
37
37
|
"config_language_label": "界面语言",
|
|
38
38
|
"config_language_restart_hint": "界面语言将在下次启动后生效。",
|
|
39
|
+
"config_suggestion_label": "下一步建议",
|
|
39
40
|
"custom_command_alias_conflict": "自定义命令 /{command_name} 的别名 /{alias} 已被其它命令占用,已忽略。",
|
|
40
41
|
"custom_command_alias_invalid": (
|
|
41
42
|
"已跳过自定义命令 /{command_name}({file_path}):别名 {aliases} 不合法。"
|
|
@@ -202,6 +203,10 @@ ZH: dict[str, str] = {
|
|
|
202
203
|
"rpc_ws_port_missing": "--port 后面需要一个端口号(0 表示由系统挑选空闲端口)",
|
|
203
204
|
"rpc_ws_port_without_rpc_ws": "--port 只能和 --rpc-ws 一起使用",
|
|
204
205
|
"skill_loaded": "已加载 skill",
|
|
206
|
+
"skill_slash_name_conflict": (
|
|
207
|
+
"skill {skill_name} 与已有命令同名,/{skill_name} 会执行那个命令。"
|
|
208
|
+
"模型仍可以通过 Skill 工具调用这个 skill。"
|
|
209
|
+
),
|
|
205
210
|
"shell_command_failed": "shell 命令执行失败:{error}",
|
|
206
211
|
"shell_command_queued": "shell 命令已排队,当前任务结束后执行。",
|
|
207
212
|
"shell_help_line": (
|
|
@@ -250,7 +255,7 @@ ZH: dict[str, str] = {
|
|
|
250
255
|
"transcript_empty": "还没有 transcript 条目,请先发送一条消息。",
|
|
251
256
|
"transcript_viewer_failed": "无法打开 transcript 查看器:{error}",
|
|
252
257
|
"webfetch_fetched": "已抓取 {url} ∙ {chars} 字符",
|
|
253
|
-
"workflow_approval_agent_limit": "agent 调用:最多 {max_calls} 次、并发 {concurrency};内层 agent 不再逐次审批",
|
|
258
|
+
"workflow_approval_agent_limit": "agent 调用:最多 {max_calls} 次、并发 {concurrency} · llm 调用:最多 {max_llm_calls} 次、并发 {llm_concurrency};内层 agent 不再逐次审批",
|
|
254
259
|
"workflow_approval_no_phases": "阶段:脚本未预声明",
|
|
255
260
|
"workflow_approval_phases": "阶段:{phases}",
|
|
256
261
|
"workflow_approval_resume": "续跑自 {run_id}:已完成的 agent 调用直接重放",
|
|
@@ -270,10 +275,12 @@ ZH: dict[str, str] = {
|
|
|
270
275
|
"workflows_empty": '本会话还没有运行过工作流。',
|
|
271
276
|
"workflows_footer_agent": '↑↓ 滚动 · PgUp/PgDn 翻页 · ← 返回 · q 退出',
|
|
272
277
|
"workflows_footer_list": '↑↓ 移动 · Enter 查看 · x 停止 · q 退出',
|
|
273
|
-
"workflows_footer_run": '↑↓
|
|
278
|
+
"workflows_footer_run": '↑↓ 选调用 · Enter 查看 · x 停止 · ← 返回 · q 退出',
|
|
274
279
|
"workflows_header_meta": '{running} 个正在运行,共 {total} 个',
|
|
275
|
-
"workflows_list_metrics": '阶段 {progress} · {
|
|
276
|
-
"
|
|
280
|
+
"workflows_list_metrics": '阶段 {progress} · {calls} 次调用 · 用时 {elapsed}',
|
|
281
|
+
"workflows_llm_metrics": '{model} · {elapsed} · {tokens}',
|
|
282
|
+
"workflows_llm_title": 'LLM 调用 {label} 的详情',
|
|
283
|
+
"workflows_no_agents": '还没有任何调用开始。',
|
|
277
284
|
"workflows_phase_unassigned": '未分组',
|
|
278
285
|
"workflows_phase_undeclared": '(临时加入)',
|
|
279
286
|
"workflows_run_already_finished": '这次运行已经结束了。',
|
|
@@ -285,9 +292,10 @@ ZH: dict[str, str] = {
|
|
|
285
292
|
"workflows_section_error": '出错信息',
|
|
286
293
|
"workflows_section_prompt": '任务描述',
|
|
287
294
|
"workflows_section_result": '返回结果',
|
|
295
|
+
"workflows_section_system": '系统提示',
|
|
288
296
|
"workflows_section_tool_calls": '工具调用记录',
|
|
289
297
|
"workflows_snapshot_empty": '工作流运行一览:本会话没有记录。',
|
|
290
|
-
"workflows_snapshot_row": '- {run_id} · {name} · {status} · 阶段 {progress} · {
|
|
298
|
+
"workflows_snapshot_row": '- {run_id} · {name} · {status} · 阶段 {progress} · {calls} 次调用 · 用时 {elapsed}',
|
|
291
299
|
"workflows_snapshot_title": '工作流运行一览:',
|
|
292
300
|
"workflows_status_aborted": '已停止',
|
|
293
301
|
"workflows_status_completed": '已完成',
|