iCode-TUI 0.29.1__py3-none-any.whl
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.
- chrys/__init__.py +16 -0
- chrys/app/__init__.py +3 -0
- chrys/app/acp/__init__.py +3 -0
- chrys/app/acp/bridge.py +664 -0
- chrys/app/acp/content.py +132 -0
- chrys/app/acp/doc/frontend-api.md +425 -0
- chrys/app/acp/history.py +585 -0
- chrys/app/acp/server.py +1796 -0
- chrys/app/acp/session_manager.py +1815 -0
- chrys/app/acp/tool_status.py +45 -0
- chrys/app/cli/__init__.py +3 -0
- chrys/app/cli/acp.py +178 -0
- chrys/app/cli/app.py +165 -0
- chrys/app/cli/approvals.py +101 -0
- chrys/app/cli/headless.py +223 -0
- chrys/app/cli/launch_cwd.py +42 -0
- chrys/app/cli/profiles.py +298 -0
- chrys/app/cli/progress.py +857 -0
- chrys/app/cli/run.py +425 -0
- chrys/app/cli/serve.py +1593 -0
- chrys/app/cli/tool_summary.py +225 -0
- chrys/app/cli/trajectory.py +201 -0
- chrys/app/cli/workflow.py +601 -0
- chrys/app/features/__init__.py +3 -0
- chrys/app/features/buddy/__init__.py +3 -0
- chrys/app/features/buddy/actions.py +68 -0
- chrys/app/features/buddy/animation.py +76 -0
- chrys/app/features/buddy/commands.py +196 -0
- chrys/app/features/buddy/docs/design.md +187 -0
- chrys/app/features/buddy/hatchery.py +80 -0
- chrys/app/features/buddy/lifecycle.py +41 -0
- chrys/app/features/buddy/model.py +265 -0
- chrys/app/features/buddy/pixel_renderer.py +113 -0
- chrys/app/features/buddy/pixel_sprites.py +279 -0
- chrys/app/features/buddy/portrait.py +76 -0
- chrys/app/features/buddy/progression.py +58 -0
- chrys/app/features/buddy/replies.py +191 -0
- chrys/app/features/buddy/sprites/alien.toml +70 -0
- chrys/app/features/buddy/sprites/axolotl.toml +71 -0
- chrys/app/features/buddy/sprites/bat.toml +69 -0
- chrys/app/features/buddy/sprites/bee.toml +69 -0
- chrys/app/features/buddy/sprites/cactus.toml +73 -0
- chrys/app/features/buddy/sprites/capybara.toml +70 -0
- chrys/app/features/buddy/sprites/cat.toml +69 -0
- chrys/app/features/buddy/sprites/crab.toml +70 -0
- chrys/app/features/buddy/sprites/dragon.toml +71 -0
- chrys/app/features/buddy/sprites/duck.toml +69 -0
- chrys/app/features/buddy/sprites/fox.toml +69 -0
- chrys/app/features/buddy/sprites/frog.toml +70 -0
- chrys/app/features/buddy/sprites/ghost.toml +70 -0
- chrys/app/features/buddy/sprites/goose.toml +69 -0
- chrys/app/features/buddy/sprites/jelly.toml +70 -0
- chrys/app/features/buddy/sprites/llama.toml +70 -0
- chrys/app/features/buddy/sprites/mushroom.toml +69 -0
- chrys/app/features/buddy/sprites/octopus.toml +70 -0
- chrys/app/features/buddy/sprites/owl.toml +70 -0
- chrys/app/features/buddy/sprites/panda.toml +71 -0
- chrys/app/features/buddy/sprites/penguin.toml +69 -0
- chrys/app/features/buddy/sprites/rabbit.toml +70 -0
- chrys/app/features/buddy/sprites/robot.toml +72 -0
- chrys/app/features/buddy/sprites/shark.toml +70 -0
- chrys/app/features/buddy/sprites/snail.toml +69 -0
- chrys/app/features/buddy/sprites/snake.toml +69 -0
- chrys/app/features/buddy/sprites/tabby.toml +69 -0
- chrys/app/features/buddy/sprites/turtle.toml +69 -0
- chrys/app/features/buddy/store.py +143 -0
- chrys/app/features/session_title/__init__.py +7 -0
- chrys/app/features/session_title/updater.py +582 -0
- chrys/app/installer.py +651 -0
- chrys/app/parsing.py +17 -0
- chrys/app/tui/__init__.py +3 -0
- chrys/app/tui/app.py +1287 -0
- chrys/app/tui/behaviors/__init__.py +3 -0
- chrys/app/tui/behaviors/click_outside_dismiss.py +90 -0
- chrys/app/tui/behaviors/insert_clipboard.py +73 -0
- chrys/app/tui/behaviors/right_click_copy.py +146 -0
- chrys/app/tui/binding_display.py +139 -0
- chrys/app/tui/buddy_messages.py +17 -0
- chrys/app/tui/buddy_reply.py +86 -0
- chrys/app/tui/chrys.tcss +549 -0
- chrys/app/tui/clipboard.py +109 -0
- chrys/app/tui/copy_messages.py +10 -0
- chrys/app/tui/i18n.py +230 -0
- chrys/app/tui/language.py +58 -0
- chrys/app/tui/notifications/__init__.py +12 -0
- chrys/app/tui/notifications/drivers.py +180 -0
- chrys/app/tui/notifications/service.py +126 -0
- chrys/app/tui/notifications/settings.py +141 -0
- chrys/app/tui/screens/__init__.py +3 -0
- chrys/app/tui/screens/agents/__init__.py +8 -0
- chrys/app/tui/screens/agents/agent_draft_store.py +937 -0
- chrys/app/tui/screens/agents/config.py +2142 -0
- chrys/app/tui/screens/agents/config.tcss +169 -0
- chrys/app/tui/screens/agents/panels/__init__.py +3 -0
- chrys/app/tui/screens/agents/panels/acp.py +1176 -0
- chrys/app/tui/screens/agents/panels/basic.py +497 -0
- chrys/app/tui/screens/agents/panels/compaction.py +231 -0
- chrys/app/tui/screens/agents/panels/config_card.py +218 -0
- chrys/app/tui/screens/agents/panels/instructions.py +91 -0
- chrys/app/tui/screens/agents/panels/markdown_report.py +76 -0
- chrys/app/tui/screens/agents/panels/mcp.py +2262 -0
- chrys/app/tui/screens/agents/panels/memory.py +684 -0
- chrys/app/tui/screens/agents/panels/path_entry.py +227 -0
- chrys/app/tui/screens/agents/panels/skills.py +806 -0
- chrys/app/tui/screens/agents/panels/subagents.py +652 -0
- chrys/app/tui/screens/agents/panels/tools.py +205 -0
- chrys/app/tui/screens/agents/picker.py +103 -0
- chrys/app/tui/screens/agents/skill_paths.py +38 -0
- chrys/app/tui/screens/agents/validation_messages.py +452 -0
- chrys/app/tui/screens/dialogs/__init__.py +35 -0
- chrys/app/tui/screens/dialogs/agent_load.py +834 -0
- chrys/app/tui/screens/dialogs/agent_load.tcss +78 -0
- chrys/app/tui/screens/dialogs/app_mode.py +55 -0
- chrys/app/tui/screens/dialogs/approval/__init__.py +15 -0
- chrys/app/tui/screens/dialogs/approval/approval.tcss +311 -0
- chrys/app/tui/screens/dialogs/approval/bodies/__init__.py +3 -0
- chrys/app/tui/screens/dialogs/approval/bodies/file_edit.py +210 -0
- chrys/app/tui/screens/dialogs/approval/bodies/sub_agent.py +82 -0
- chrys/app/tui/screens/dialogs/approval/body.py +110 -0
- chrys/app/tui/screens/dialogs/approval/dialog.py +565 -0
- chrys/app/tui/screens/dialogs/approval/mode.py +105 -0
- chrys/app/tui/screens/dialogs/ask_user.py +148 -0
- chrys/app/tui/screens/dialogs/ask_user.tcss +62 -0
- chrys/app/tui/screens/dialogs/base.py +84 -0
- chrys/app/tui/screens/dialogs/confirm.py +184 -0
- chrys/app/tui/screens/dialogs/confirm.tcss +46 -0
- chrys/app/tui/screens/dialogs/connection_test.py +183 -0
- chrys/app/tui/screens/dialogs/connection_test.tcss +92 -0
- chrys/app/tui/screens/dialogs/diagram.py +102 -0
- chrys/app/tui/screens/dialogs/diagram.tcss +24 -0
- chrys/app/tui/screens/dialogs/editor.py +378 -0
- chrys/app/tui/screens/dialogs/editor.tcss +132 -0
- chrys/app/tui/screens/dialogs/file_picker.py +582 -0
- chrys/app/tui/screens/dialogs/file_picker.tcss +78 -0
- chrys/app/tui/screens/dialogs/fork_session.py +219 -0
- chrys/app/tui/screens/dialogs/fork_session.tcss +75 -0
- chrys/app/tui/screens/dialogs/image_compression.py +102 -0
- chrys/app/tui/screens/dialogs/image_compression.tcss +28 -0
- chrys/app/tui/screens/dialogs/man_page.py +172 -0
- chrys/app/tui/screens/dialogs/man_page.tcss +39 -0
- chrys/app/tui/screens/dialogs/new_folder.py +277 -0
- chrys/app/tui/screens/dialogs/new_folder.tcss +51 -0
- chrys/app/tui/screens/dialogs/notice.tcss +14 -0
- chrys/app/tui/screens/dialogs/prompt_cache.py +144 -0
- chrys/app/tui/screens/dialogs/prompt_cache.tcss +38 -0
- chrys/app/tui/screens/dialogs/runtime_details.py +371 -0
- chrys/app/tui/screens/dialogs/runtime_details.tcss +49 -0
- chrys/app/tui/screens/dialogs/session_title.py +110 -0
- chrys/app/tui/screens/dialogs/session_title.tcss +43 -0
- chrys/app/tui/screens/dialogs/tool_view.py +207 -0
- chrys/app/tui/screens/dialogs/tool_view.tcss +43 -0
- chrys/app/tui/screens/dialogs/vision_unsupported.py +122 -0
- chrys/app/tui/screens/dialogs/vision_unsupported.tcss +35 -0
- chrys/app/tui/screens/dialogs/workflow_confirm.py +91 -0
- chrys/app/tui/screens/dialogs/workflow_confirm.tcss +17 -0
- chrys/app/tui/screens/dialogs/workflow_input.py +258 -0
- chrys/app/tui/screens/dialogs/workflow_input.tcss +73 -0
- chrys/app/tui/screens/dialogs/workflow_node.py +462 -0
- chrys/app/tui/screens/dialogs/workflow_node.tcss +41 -0
- chrys/app/tui/screens/dialogs/workflow_picker.py +46 -0
- chrys/app/tui/screens/dialogs/workflow_result.py +136 -0
- chrys/app/tui/screens/dialogs/workflow_result.tcss +14 -0
- chrys/app/tui/screens/diff/__init__.py +22 -0
- chrys/app/tui/screens/diff/rollback_modal.py +1381 -0
- chrys/app/tui/screens/diff/rollback_modal.tcss +248 -0
- chrys/app/tui/screens/diff/screen.py +1532 -0
- chrys/app/tui/screens/diff/screen.tcss +104 -0
- chrys/app/tui/screens/guides/__init__.py +7 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/agents.md +178 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/approval.md +117 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/chat-options.md +276 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/compaction.md +42 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/memory.md +48 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/models.md +158 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/settings.md +210 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/themes.md +61 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/tools.md +60 -0
- chrys/app/tui/screens/guides/_docs/en/guides/configuration/web-tools.md +286 -0
- chrys/app/tui/screens/guides/_docs/en/guides/daily-use/sessions.md +77 -0
- chrys/app/tui/screens/guides/_docs/en/guides/daily-use/workspaces.md +51 -0
- chrys/app/tui/screens/guides/_docs/en/guides/extensions/external-acp-agents.md +126 -0
- chrys/app/tui/screens/guides/_docs/en/guides/extensions/hooks.md +167 -0
- chrys/app/tui/screens/guides/_docs/en/guides/extensions/mcp.md +95 -0
- chrys/app/tui/screens/guides/_docs/en/guides/extensions/skills.md +175 -0
- chrys/app/tui/screens/guides/_docs/en/guides/running/icode-acp.md +61 -0
- chrys/app/tui/screens/guides/_docs/en/guides/running/icode-run.md +190 -0
- chrys/app/tui/screens/guides/_docs/en/guides/running/icode-serve.md +239 -0
- chrys/app/tui/screens/guides/_docs/en/guides/running/workflows.md +664 -0
- chrys/app/tui/screens/guides/_docs/en/reference/agent-profile.md +548 -0
- chrys/app/tui/screens/guides/_docs/en/reference/hooks.md +602 -0
- chrys/app/tui/screens/guides/_docs/en/reference/opentelemetry.md +177 -0
- chrys/app/tui/screens/guides/_docs/en/reference/settings.md +245 -0
- chrys/app/tui/screens/guides/_docs/en/reference/themes.md +149 -0
- chrys/app/tui/screens/guides/_docs/en/reference/tool-kinds-and-names.md +58 -0
- chrys/app/tui/screens/guides/_docs/en/reference/tui-slash-commands.md +76 -0
- chrys/app/tui/screens/guides/_docs/en/reference/workflows.md +1006 -0
- chrys/app/tui/screens/guides/_docs/en/start/getting-started.md +170 -0
- chrys/app/tui/screens/guides/_docs/en/start/what-is-icode.md +34 -0
- chrys/app/tui/screens/guides/_docs/index.yaml +100 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/agents.md +178 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/approval.md +117 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/chat-options.md +276 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/compaction.md +42 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/memory.md +48 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/models.md +158 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/settings.md +210 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/themes.md +61 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/tools.md +60 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/configuration/web-tools.md +286 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/daily-use/sessions.md +77 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/daily-use/workspaces.md +51 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/extensions/external-acp-agents.md +126 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/extensions/hooks.md +167 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/extensions/mcp.md +95 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/extensions/skills.md +175 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/running/icode-acp.md +61 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/running/icode-run.md +190 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/running/icode-serve.md +239 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/guides/running/workflows.md +664 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/agent-profile.md +548 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/hooks.md +602 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/opentelemetry.md +177 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/settings.md +245 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/themes.md +149 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/tool-kinds-and-names.md +58 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/tui-slash-commands.md +76 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/reference/workflows.md +1005 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/start/getting-started.md +170 -0
- chrys/app/tui/screens/guides/_docs/zh-Hans/start/what-is-icode.md +34 -0
- chrys/app/tui/screens/guides/index.py +215 -0
- chrys/app/tui/screens/guides/reader.py +173 -0
- chrys/app/tui/screens/guides/screen.py +442 -0
- chrys/app/tui/screens/guides/screen.tcss +52 -0
- chrys/app/tui/screens/logs/__init__.py +7 -0
- chrys/app/tui/screens/logs/screen.py +504 -0
- chrys/app/tui/screens/logs/screen.tcss +45 -0
- chrys/app/tui/screens/main/__init__.py +7 -0
- chrys/app/tui/screens/main/action_availability.py +30 -0
- chrys/app/tui/screens/main/buddy_command.py +143 -0
- chrys/app/tui/screens/main/commands.py +1073 -0
- chrys/app/tui/screens/main/config_actions.py +464 -0
- chrys/app/tui/screens/main/copy_actions.py +117 -0
- chrys/app/tui/screens/main/dialog_controllers.py +826 -0
- chrys/app/tui/screens/main/dialog_gateway.py +166 -0
- chrys/app/tui/screens/main/diff_controller.py +478 -0
- chrys/app/tui/screens/main/engine_read_model.py +184 -0
- chrys/app/tui/screens/main/event_handlers.py +2014 -0
- chrys/app/tui/screens/main/input_flow.py +241 -0
- chrys/app/tui/screens/main/live_diff.py +244 -0
- chrys/app/tui/screens/main/main_screen_presenter.py +295 -0
- chrys/app/tui/screens/main/model_indicator.py +217 -0
- chrys/app/tui/screens/main/navigation.py +343 -0
- chrys/app/tui/screens/main/ports.py +571 -0
- chrys/app/tui/screens/main/recent_dirs.py +123 -0
- chrys/app/tui/screens/main/rollback_controller.py +586 -0
- chrys/app/tui/screens/main/runtime_info.py +71 -0
- chrys/app/tui/screens/main/screen.py +2265 -0
- chrys/app/tui/screens/main/screen.tcss +21 -0
- chrys/app/tui/screens/main/session_handlers.py +1127 -0
- chrys/app/tui/screens/main/session_title.py +239 -0
- chrys/app/tui/screens/main/settings_coordinator.py +365 -0
- chrys/app/tui/screens/main/settings_persistence.py +184 -0
- chrys/app/tui/screens/main/shell_mode.py +112 -0
- chrys/app/tui/screens/main/state.py +289 -0
- chrys/app/tui/screens/main/submit_state.py +11 -0
- chrys/app/tui/screens/main/subscriptions.py +177 -0
- chrys/app/tui/screens/main/suggestions.py +982 -0
- chrys/app/tui/screens/main/tool_action_bridge.py +75 -0
- chrys/app/tui/screens/main/view_adapter.py +1567 -0
- chrys/app/tui/screens/main/workflow_browser.py +747 -0
- chrys/app/tui/screens/main/workflow_content.py +248 -0
- chrys/app/tui/screens/main/workflow_controller.py +240 -0
- chrys/app/tui/screens/main/workflow_feedback.py +137 -0
- chrys/app/tui/screens/main/workflow_flow.py +49 -0
- chrys/app/tui/screens/main/workflow_run_control.py +456 -0
- chrys/app/tui/screens/main/workflow_session_view.py +316 -0
- chrys/app/tui/screens/main/workspace_actions.py +272 -0
- chrys/app/tui/screens/main/workspace_branch.py +194 -0
- chrys/app/tui/screens/menus/__init__.py +8 -0
- chrys/app/tui/screens/menus/languages.py +114 -0
- chrys/app/tui/screens/models/__init__.py +7 -0
- chrys/app/tui/screens/models/picker.py +147 -0
- chrys/app/tui/screens/models/screen.py +2043 -0
- chrys/app/tui/screens/models/screen.tcss +255 -0
- chrys/app/tui/screens/sessions/__init__.py +8 -0
- chrys/app/tui/screens/sessions/presenter.py +586 -0
- chrys/app/tui/screens/sessions/screen.py +779 -0
- chrys/app/tui/screens/sessions/screen.tcss +127 -0
- chrys/app/tui/screens/settings/__init__.py +29 -0
- chrys/app/tui/screens/settings/danger.py +26 -0
- chrys/app/tui/screens/settings/dialog.py +281 -0
- chrys/app/tui/screens/settings/layout.py +519 -0
- chrys/app/tui/screens/settings/migrate_dialog.py +253 -0
- chrys/app/tui/screens/settings/panes/__init__.py +3 -0
- chrys/app/tui/screens/settings/panes/notifications.py +248 -0
- chrys/app/tui/screens/settings/panes/sessions.py +148 -0
- chrys/app/tui/screens/settings/ports.py +55 -0
- chrys/app/tui/screens/settings/provenance.py +102 -0
- chrys/app/tui/screens/settings/rows.py +546 -0
- chrys/app/tui/screens/settings/settings.tcss +406 -0
- chrys/app/tui/screens/themes/__init__.py +8 -0
- chrys/app/tui/screens/themes/dialogs.py +330 -0
- chrys/app/tui/screens/themes/editor.py +632 -0
- chrys/app/tui/screens/themes/editor.tcss +268 -0
- chrys/app/tui/screens/themes/messages.py +95 -0
- chrys/app/tui/screens/themes/palette.py +694 -0
- chrys/app/tui/screens/themes/panel.py +113 -0
- chrys/app/tui/screens/themes/picker.py +203 -0
- chrys/app/tui/screens/themes/save.py +191 -0
- chrys/app/tui/support/__init__.py +3 -0
- chrys/app/tui/support/file_manager.py +64 -0
- chrys/app/tui/support/gc_freeze.py +1114 -0
- chrys/app/tui/support/path_shortcuts.py +50 -0
- chrys/app/tui/support/prompt_history.py +298 -0
- chrys/app/tui/support/workspace_mru.py +476 -0
- chrys/app/tui/terminal/__init__.py +6 -0
- chrys/app/tui/terminal/_pty_backend.py +114 -0
- chrys/app/tui/terminal/emulator/__init__.py +24 -0
- chrys/app/tui/terminal/emulator/buffer.py +456 -0
- chrys/app/tui/terminal/emulator/charsets.py +113 -0
- chrys/app/tui/terminal/emulator/core.py +963 -0
- chrys/app/tui/terminal/emulator/input.py +342 -0
- chrys/app/tui/terminal/emulator/parser.py +227 -0
- chrys/app/tui/terminal/emulator/pen.py +158 -0
- chrys/app/tui/terminal/launcher.py +455 -0
- chrys/app/tui/terminal/leaked_reports.py +44 -0
- chrys/app/tui/terminal/panel.py +323 -0
- chrys/app/tui/terminal/pty_process.py +405 -0
- chrys/app/tui/terminal/rendering.py +151 -0
- chrys/app/tui/terminal/shell.py +273 -0
- chrys/app/tui/terminal/shell_integration.py +199 -0
- chrys/app/tui/terminal/title.py +224 -0
- chrys/app/tui/terminal/widget.py +654 -0
- chrys/app/tui/theme.py +422 -0
- chrys/app/tui/theme_loader.py +201 -0
- chrys/app/tui/theme_stylesheet.py +49 -0
- chrys/app/tui/themes/__init__.py +3 -0
- chrys/app/tui/themes/document.py +120 -0
- chrys/app/tui/themes/preview.py +170 -0
- chrys/app/tui/themes/store.py +176 -0
- chrys/app/tui/toasts.py +69 -0
- chrys/app/tui/util/__init__.py +3 -0
- chrys/app/tui/util/context_pressure.py +146 -0
- chrys/app/tui/util/debug_log.py +292 -0
- chrys/app/tui/util/diff_entries.py +64 -0
- chrys/app/tui/util/formatting.py +53 -0
- chrys/app/tui/util/git_branch.py +326 -0
- chrys/app/tui/util/invocation_progress.py +57 -0
- chrys/app/tui/util/logo.py +32 -0
- chrys/app/tui/util/message_gate.py +35 -0
- chrys/app/tui/util/mutation_sources.py +14 -0
- chrys/app/tui/util/picker_text.py +27 -0
- chrys/app/tui/util/removal.py +47 -0
- chrys/app/tui/util/rich_style.py +36 -0
- chrys/app/tui/util/source_text.py +12 -0
- chrys/app/tui/util/static_update.py +88 -0
- chrys/app/tui/util/todo_format.py +51 -0
- chrys/app/tui/util/visibility.py +214 -0
- chrys/app/tui/widgets/__init__.py +60 -0
- chrys/app/tui/widgets/ask_user_controls.py +652 -0
- chrys/app/tui/widgets/ask_user_markdown.py +17 -0
- chrys/app/tui/widgets/ask_user_prompt.py +606 -0
- chrys/app/tui/widgets/buttons.py +52 -0
- chrys/app/tui/widgets/chat/__init__.py +3 -0
- chrys/app/tui/widgets/chat/agent_transcript_surface.py +818 -0
- chrys/app/tui/widgets/chat/chrome.py +296 -0
- chrys/app/tui/widgets/chat/compaction_card.py +353 -0
- chrys/app/tui/widgets/chat/context_fold.py +77 -0
- chrys/app/tui/widgets/chat/file_snapshot.py +91 -0
- chrys/app/tui/widgets/chat/image_preview.py +214 -0
- chrys/app/tui/widgets/chat/live_renderer.py +383 -0
- chrys/app/tui/widgets/chat/messages.py +1039 -0
- chrys/app/tui/widgets/chat/panel.py +1769 -0
- chrys/app/tui/widgets/chat/ports.py +245 -0
- chrys/app/tui/widgets/chat/renderers/__init__.py +7 -0
- chrys/app/tui/widgets/chat/renderers/ask_user.py +747 -0
- chrys/app/tui/widgets/chat/renderers/execute.py +431 -0
- chrys/app/tui/widgets/chat/renderers/file_edit.py +925 -0
- chrys/app/tui/widgets/chat/renderers/hosted_code.py +83 -0
- chrys/app/tui/widgets/chat/renderers/hosted_generic.py +330 -0
- chrys/app/tui/widgets/chat/renderers/hosted_image.py +107 -0
- chrys/app/tui/widgets/chat/renderers/hosted_mcp.py +43 -0
- chrys/app/tui/widgets/chat/renderers/hosted_search.py +167 -0
- chrys/app/tui/widgets/chat/renderers/hosted_shell.py +132 -0
- chrys/app/tui/widgets/chat/renderers/read_file.py +399 -0
- chrys/app/tui/widgets/chat/renderers/search.py +348 -0
- chrys/app/tui/widgets/chat/renderers/skill.py +564 -0
- chrys/app/tui/widgets/chat/renderers/sleep.py +287 -0
- chrys/app/tui/widgets/chat/renderers/sub_agent.py +1385 -0
- chrys/app/tui/widgets/chat/renderers/todo.py +114 -0
- chrys/app/tui/widgets/chat/renderers/web.py +69 -0
- chrys/app/tui/widgets/chat/replay.py +1605 -0
- chrys/app/tui/widgets/chat/replay_mount.py +322 -0
- chrys/app/tui/widgets/chat/scroll_controller.py +579 -0
- chrys/app/tui/widgets/chat/selection_controller.py +435 -0
- chrys/app/tui/widgets/chat/session_json.py +508 -0
- chrys/app/tui/widgets/chat/toc_model.py +156 -0
- chrys/app/tui/widgets/chat/tool_call.py +2478 -0
- chrys/app/tui/widgets/chat/tool_registry.py +753 -0
- chrys/app/tui/widgets/chat/tool_renderers.py +247 -0
- chrys/app/tui/widgets/chat/tool_view_builders.py +260 -0
- chrys/app/tui/widgets/chat/transcript_reader.py +57 -0
- chrys/app/tui/widgets/checkbox.py +24 -0
- chrys/app/tui/widgets/chrome/__init__.py +3 -0
- chrys/app/tui/widgets/chrome/app_header.py +283 -0
- chrys/app/tui/widgets/chrome/commands.py +95 -0
- chrys/app/tui/widgets/chrome/file_index.py +68 -0
- chrys/app/tui/widgets/chrome/file_scanner.py +670 -0
- chrys/app/tui/widgets/chrome/footer.py +284 -0
- chrys/app/tui/widgets/chrome/image_paste.py +351 -0
- chrys/app/tui/widgets/chrome/input_bar.py +1299 -0
- chrys/app/tui/widgets/chrome/status_bar.py +911 -0
- chrys/app/tui/widgets/chrome/suggestion_list.py +652 -0
- chrys/app/tui/widgets/click_affordance.py +24 -0
- chrys/app/tui/widgets/color_picker/__init__.py +254 -0
- chrys/app/tui/widgets/color_picker/controls.py +171 -0
- chrys/app/tui/widgets/color_picker/model.py +89 -0
- chrys/app/tui/widgets/dialog_buttons.py +58 -0
- chrys/app/tui/widgets/dialog_scroll.py +24 -0
- chrys/app/tui/widgets/diff_view/__init__.py +20 -0
- chrys/app/tui/widgets/diff_view/cells.py +59 -0
- chrys/app/tui/widgets/diff_view/code.py +280 -0
- chrys/app/tui/widgets/diff_view/compute.py +286 -0
- chrys/app/tui/widgets/diff_view/gutter.py +161 -0
- chrys/app/tui/widgets/diff_view/inline.py +77 -0
- chrys/app/tui/widgets/diff_view/palette.py +87 -0
- chrys/app/tui/widgets/diff_view/protocols.py +24 -0
- chrys/app/tui/widgets/diff_view/rows.py +138 -0
- chrys/app/tui/widgets/diff_view/unified.py +267 -0
- chrys/app/tui/widgets/diff_view/widget.py +209 -0
- chrys/app/tui/widgets/editor/__init__.py +79 -0
- chrys/app/tui/widgets/editor/coordinates.py +30 -0
- chrys/app/tui/widgets/editor/highlighter.py +139 -0
- chrys/app/tui/widgets/editor/keymaps.py +357 -0
- chrys/app/tui/widgets/editor/types.py +216 -0
- chrys/app/tui/widgets/editor/vim.py +1195 -0
- chrys/app/tui/widgets/editor/widget.py +401 -0
- chrys/app/tui/widgets/file_preview.py +58 -0
- chrys/app/tui/widgets/hatch.py +138 -0
- chrys/app/tui/widgets/input.py +66 -0
- chrys/app/tui/widgets/loading.py +125 -0
- chrys/app/tui/widgets/markdown/__init__.py +25 -0
- chrys/app/tui/widgets/markdown/_utils.py +21 -0
- chrys/app/tui/widgets/markdown/anchors.py +71 -0
- chrys/app/tui/widgets/markdown/blocks.py +115 -0
- chrys/app/tui/widgets/markdown/copyable.py +163 -0
- chrys/app/tui/widgets/markdown/diagram/__init__.py +35 -0
- chrys/app/tui/widgets/markdown/diagram/canvas.py +409 -0
- chrys/app/tui/widgets/markdown/diagram/charts.py +52 -0
- chrys/app/tui/widgets/markdown/diagram/diagnostics.py +101 -0
- chrys/app/tui/widgets/markdown/diagram/geometry.py +46 -0
- chrys/app/tui/widgets/markdown/diagram/layout.py +494 -0
- chrys/app/tui/widgets/markdown/diagram/messages.py +18 -0
- chrys/app/tui/widgets/markdown/diagram/model.py +275 -0
- chrys/app/tui/widgets/markdown/diagram/parser.py +173 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/__init__.py +3 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/charts.py +349 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/common.py +403 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/graphs.py +1072 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/planning.py +317 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/schedule.py +298 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/schemas.py +241 -0
- chrys/app/tui/widgets/markdown/diagram/parsers/structure.py +221 -0
- chrys/app/tui/widgets/markdown/diagram/presentation.py +32 -0
- chrys/app/tui/widgets/markdown/diagram/renderers/__init__.py +3 -0
- chrys/app/tui/widgets/markdown/diagram/renderers/charts.py +275 -0
- chrys/app/tui/widgets/markdown/diagram/renderers/common.py +73 -0
- chrys/app/tui/widgets/markdown/diagram/renderers/planning.py +157 -0
- chrys/app/tui/widgets/markdown/diagram/renderers/schedule.py +202 -0
- chrys/app/tui/widgets/markdown/diagram/renderers/structure.py +77 -0
- chrys/app/tui/widgets/markdown/diagram/renderers/xy.py +385 -0
- chrys/app/tui/widgets/markdown/diagram/router.py +651 -0
- chrys/app/tui/widgets/markdown/diagram/specs/__init__.py +3 -0
- chrys/app/tui/widgets/markdown/diagram/specs/charts.py +94 -0
- chrys/app/tui/widgets/markdown/diagram/specs/planning.py +68 -0
- chrys/app/tui/widgets/markdown/diagram/specs/schedule.py +65 -0
- chrys/app/tui/widgets/markdown/diagram/specs/structure.py +23 -0
- chrys/app/tui/widgets/markdown/diagram/viewer.py +92 -0
- chrys/app/tui/widgets/markdown/links.py +47 -0
- chrys/app/tui/widgets/markdown/math/__init__.py +36 -0
- chrys/app/tui/widgets/markdown/math/layout.py +739 -0
- chrys/app/tui/widgets/markdown/math/markdown.py +291 -0
- chrys/app/tui/widgets/markdown/math/parser.py +325 -0
- chrys/app/tui/widgets/markdown/math/symbols.py +325 -0
- chrys/app/tui/widgets/markdown/navigator.py +80 -0
- chrys/app/tui/widgets/markdown/parser.py +1057 -0
- chrys/app/tui/widgets/markdown/stream.py +73 -0
- chrys/app/tui/widgets/markdown/toc.py +98 -0
- chrys/app/tui/widgets/markdown/viewer.py +146 -0
- chrys/app/tui/widgets/markdown/widget.py +2046 -0
- chrys/app/tui/widgets/marquee.py +101 -0
- chrys/app/tui/widgets/option_menu.py +82 -0
- chrys/app/tui/widgets/page_navigator.py +118 -0
- chrys/app/tui/widgets/select.py +196 -0
- chrys/app/tui/widgets/selection.py +59 -0
- chrys/app/tui/widgets/sidebar/__init__.py +3 -0
- chrys/app/tui/widgets/sidebar/buddy.py +367 -0
- chrys/app/tui/widgets/sidebar/context.py +482 -0
- chrys/app/tui/widgets/sidebar/debug.py +195 -0
- chrys/app/tui/widgets/sidebar/empty_state.py +11 -0
- chrys/app/tui/widgets/sidebar/panel.py +198 -0
- chrys/app/tui/widgets/sidebar/tasks.py +198 -0
- chrys/app/tui/widgets/sidebar/toc.py +166 -0
- chrys/app/tui/widgets/sidebar/toc_types.py +30 -0
- chrys/app/tui/widgets/syntax_theme.py +85 -0
- chrys/app/tui/widgets/text_area.py +258 -0
- chrys/app/tui/widgets/trajectory/__init__.py +8 -0
- chrys/app/tui/widgets/trajectory/chartkit.py +264 -0
- chrys/app/tui/widgets/trajectory/insights.py +1266 -0
- chrys/app/tui/widgets/trajectory/overview.py +1101 -0
- chrys/app/tui/widgets/trajectory/panel.py +983 -0
- chrys/app/tui/widgets/trajectory/presentation.py +311 -0
- chrys/app/tui/widgets/trajectory/session_info.py +124 -0
- chrys/app/tui/widgets/trajectory/text_view.py +124 -0
- chrys/app/tui/widgets/trajectory/timeline.py +380 -0
- chrys/app/tui/widgets/welcome.py +126 -0
- chrys/app/tui/widgets/workflow/__init__.py +5 -0
- chrys/app/tui/widgets/workflow/edges.py +89 -0
- chrys/app/tui/widgets/workflow/graph.py +869 -0
- chrys/app/tui/widgets/workflow/info.py +310 -0
- chrys/app/tui/widgets/workflow/node_view.py +27 -0
- chrys/app/tui/widgets/workflow/output.py +225 -0
- chrys/app/tui/widgets/workflow/panel.py +658 -0
- chrys/app/tui/widgets/workflow/projector.py +324 -0
- chrys/app/tui/widgets/workflow/records.py +69 -0
- chrys/app/tui/widgets/workflow/scrollbar.py +82 -0
- chrys/app/tui/widgets/workflow/selection.py +151 -0
- chrys/app/tui/widgets/workflow/source.py +65 -0
- chrys/app/tui/widgets/workflow/text.py +257 -0
- chrys/app/tui/widgets/workflow/values.py +317 -0
- chrys/foundation/__init__.py +0 -0
- chrys/foundation/branding.py +15 -0
- chrys/foundation/config/__init__.py +7 -0
- chrys/foundation/config/coercion.py +374 -0
- chrys/foundation/config/context.py +34 -0
- chrys/foundation/config/env_file.py +141 -0
- chrys/foundation/config/env_layers.py +370 -0
- chrys/foundation/config/migrations.py +521 -0
- chrys/foundation/config/notification_events.py +22 -0
- chrys/foundation/config/process_settings.py +332 -0
- chrys/foundation/config/runtime_pointer.py +133 -0
- chrys/foundation/config/settings.py +1952 -0
- chrys/foundation/config/settings_store.py +996 -0
- chrys/foundation/config/spec.py +396 -0
- chrys/foundation/config/user_settings.py +140 -0
- chrys/foundation/config/warnings.py +262 -0
- chrys/foundation/config/web_values.py +135 -0
- chrys/foundation/config/yaml_store.py +487 -0
- chrys/foundation/errors/__init__.py +68 -0
- chrys/foundation/errors/_legacy.py +117 -0
- chrys/foundation/errors/_text.py +13 -0
- chrys/foundation/errors/_walk.py +85 -0
- chrys/foundation/errors/classify.py +278 -0
- chrys/foundation/errors/display.py +274 -0
- chrys/foundation/errors/formatting.py +283 -0
- chrys/foundation/errors/kinds.py +67 -0
- chrys/foundation/errors/network.py +497 -0
- chrys/foundation/errors/provider.py +445 -0
- chrys/foundation/errors/route.py +85 -0
- chrys/foundation/events/__init__.py +8 -0
- chrys/foundation/events/bus.py +143 -0
- chrys/foundation/events/types.py +1629 -0
- chrys/foundation/events/workflow.py +38 -0
- chrys/foundation/hosted_tools.py +142 -0
- chrys/foundation/i18n/__init__.py +32 -0
- chrys/foundation/i18n/_catalogs/zh-Hans/LC_MESSAGES/chrys.mo +0 -0
- chrys/foundation/i18n/catalogs.py +42 -0
- chrys/foundation/i18n/formatting.py +202 -0
- chrys/foundation/i18n/locale.py +92 -0
- chrys/foundation/i18n/localizer.py +187 -0
- chrys/foundation/i18n/messages.py +268 -0
- chrys/foundation/io/__init__.py +3 -0
- chrys/foundation/io/result_content.py +237 -0
- chrys/foundation/models/__init__.py +3 -0
- chrys/foundation/models/approval_reuse.py +23 -0
- chrys/foundation/models/ask_user.py +468 -0
- chrys/foundation/models/execution.py +18 -0
- chrys/foundation/models/history_markers.py +115 -0
- chrys/foundation/models/invocations.py +63 -0
- chrys/foundation/models/mutation_scope.py +28 -0
- chrys/foundation/models/session_env.py +87 -0
- chrys/foundation/models/session_surface.py +29 -0
- chrys/foundation/models/todos.py +74 -0
- chrys/foundation/models/turns.py +125 -0
- chrys/foundation/models/workflow_session.py +89 -0
- chrys/foundation/models/workspace.py +59 -0
- chrys/foundation/net/__init__.py +3 -0
- chrys/foundation/net/address_class.py +57 -0
- chrys/foundation/net/route_probe.py +94 -0
- chrys/foundation/net/url.py +107 -0
- chrys/foundation/observability/__init__.py +3 -0
- chrys/foundation/observability/exporters.py +174 -0
- chrys/foundation/observability/gate.py +31 -0
- chrys/foundation/observability/setup.py +497 -0
- chrys/foundation/observability/sink.py +228 -0
- chrys/foundation/patches/__init__.py +19 -0
- chrys/foundation/patches/mdurl_cache.py +59 -0
- chrys/foundation/patches/patcher.py +287 -0
- chrys/foundation/patches/staged_members.py +205 -0
- chrys/foundation/patches/textual_block_border.py +105 -0
- chrys/foundation/patches/textual_button_ansi.py +65 -0
- chrys/foundation/patches/textual_button_ansi_old.txt +68 -0
- chrys/foundation/patches/textual_callback_cache.py +248 -0
- chrys/foundation/patches/textual_callback_dispatch.py +109 -0
- chrys/foundation/patches/textual_compositor_cjk.py +566 -0
- chrys/foundation/patches/textual_dispatch_cache.py +150 -0
- chrys/foundation/patches/textual_ime_cursor_anchor.py +92 -0
- chrys/foundation/patches/textual_kitty_keyboard.py +268 -0
- chrys/foundation/patches/textual_lru_acyclic.py +241 -0
- chrys/foundation/patches/textual_message_pump.py +136 -0
- chrys/foundation/patches/textual_node_diet.py +875 -0
- chrys/foundation/patches/textual_one_shot_timer.py +48 -0
- chrys/foundation/patches/textual_option_list.py +90 -0
- chrys/foundation/patches/textual_precompose.py +89 -0
- chrys/foundation/patches/textual_pruned_tabs.py +69 -0
- chrys/foundation/patches/textual_reflow_reuse.py +1753 -0
- chrys/foundation/patches/textual_removed_node_caches.py +86 -0
- chrys/foundation/patches/textual_removed_screen_callbacks.py +55 -0
- chrys/foundation/patches/textual_selection_extract.py +48 -0
- chrys/foundation/patches/textual_strip_cycles.py +119 -0
- chrys/foundation/patches/textual_tab_selection.py +1611 -0
- chrys/foundation/patches/textual_timer_skip.py +70 -0
- chrys/foundation/patches/textual_utf8_decoder.py +106 -0
- chrys/foundation/patches/textual_win_sleep.py +167 -0
- chrys/foundation/patches/watchdog_fsevents.py +70 -0
- chrys/foundation/patches/watchdog_windows.py +52 -0
- chrys/foundation/platform/__init__.py +556 -0
- chrys/foundation/platform/c_api.py +32 -0
- chrys/foundation/platform/child_reap.py +107 -0
- chrys/foundation/platform/command_line.py +95 -0
- chrys/foundation/platform/files.py +1470 -0
- chrys/foundation/platform/output_capture.py +113 -0
- chrys/foundation/platform/paths.py +193 -0
- chrys/foundation/platform/process.py +1468 -0
- chrys/foundation/platform/pty_output.py +19 -0
- chrys/foundation/platform/runtime_paths.py +281 -0
- chrys/foundation/platform/win_console.py +129 -0
- chrys/foundation/reasoning_origin.py +67 -0
- chrys/foundation/recovery.py +16 -0
- chrys/foundation/retry.py +278 -0
- chrys/foundation/text/__init__.py +3 -0
- chrys/foundation/text/encoding.py +603 -0
- chrys/foundation/text/images.py +304 -0
- chrys/foundation/text/lines.py +24 -0
- chrys/foundation/text/mentions.py +90 -0
- chrys/foundation/text/model_json.py +25 -0
- chrys/foundation/text/reading_order.py +20 -0
- chrys/foundation/text/tokenizer.py +25 -0
- chrys/foundation/text/tool_output.py +287 -0
- chrys/foundation/text/yaml_io.py +62 -0
- chrys/foundation/tool_call_context.py +202 -0
- chrys/foundation/tool_execution_stamp.py +184 -0
- chrys/foundation/tool_invocation_order.py +48 -0
- chrys/foundation/tool_kinds.py +102 -0
- chrys/foundation/tool_result_metadata.py +287 -0
- chrys/foundation/trajectory/__init__.py +10 -0
- chrys/foundation/trajectory/context.py +481 -0
- chrys/foundation/trajectory/envelope.py +571 -0
- chrys/foundation/trajectory/event_types.py +294 -0
- chrys/foundation/trajectory/finalizers.py +46 -0
- chrys/foundation/trajectory/fingerprint.py +62 -0
- chrys/foundation/trajectory/ids.py +155 -0
- chrys/foundation/trajectory/keys.py +99 -0
- chrys/foundation/trajectory/lease.py +173 -0
- chrys/foundation/trajectory/metadata.py +72 -0
- chrys/foundation/trajectory/reader.py +271 -0
- chrys/foundation/trajectory/recovery.py +225 -0
- chrys/foundation/trajectory/revisions.py +152 -0
- chrys/foundation/trajectory/segments.py +225 -0
- chrys/foundation/trajectory/tools.py +117 -0
- chrys/foundation/trajectory/usage.py +151 -0
- chrys/foundation/trajectory/writer.py +972 -0
- chrys/foundation/trajectory_timing.py +97 -0
- chrys/foundation/util/__init__.py +3 -0
- chrys/foundation/util/async_tasks.py +29 -0
- chrys/foundation/util/chrys_headers.py +23 -0
- chrys/foundation/util/env_templates.py +104 -0
- chrys/foundation/util/filenames.py +96 -0
- chrys/foundation/util/header_charset.py +138 -0
- chrys/foundation/util/httpx_helpers.py +12 -0
- chrys/foundation/util/lock.py +236 -0
- chrys/foundation/util/once_close.py +46 -0
- chrys/foundation/util/session_ids.py +29 -0
- chrys/foundation/util/shell_tokens.py +88 -0
- chrys/foundation/util/sub_agent_context.py +38 -0
- chrys/foundation/util/time.py +35 -0
- chrys/foundation/util/unicode_scalars.py +36 -0
- chrys/foundation/vendor/__init__.py +43 -0
- chrys/foundation/vendor/ripgrep/rg-aarch64-apple-darwin +0 -0
- chrys/foundation/vendor/ripgrep/rg-aarch64-pc-windows-msvc.exe +0 -0
- chrys/foundation/vendor/ripgrep/rg-aarch64-unknown-linux-gnu +0 -0
- chrys/foundation/vendor/ripgrep/rg-x86_64-apple-darwin +0 -0
- chrys/foundation/vendor/ripgrep/rg-x86_64-pc-windows-msvc.exe +0 -0
- chrys/foundation/vendor/ripgrep/rg-x86_64-unknown-linux-musl +0 -0
- chrys/kernel/__init__.py +256 -0
- chrys/kernel/_content.py +1866 -0
- chrys/kernel/_loop_recorder.py +631 -0
- chrys/kernel/_null_overlay.py +1026 -0
- chrys/kernel/_result_ceiling.py +216 -0
- chrys/kernel/_serialization.py +431 -0
- chrys/kernel/_tool_arg_errors.py +1629 -0
- chrys/kernel/_tool_execution.py +1172 -0
- chrys/kernel/_tool_expansion.py +26 -0
- chrys/kernel/_types.py +2598 -0
- chrys/kernel/agent.py +994 -0
- chrys/kernel/client.py +1084 -0
- chrys/kernel/compaction.py +1315 -0
- chrys/kernel/exceptions.py +211 -0
- chrys/kernel/exchanges.py +683 -0
- chrys/kernel/identity.py +95 -0
- chrys/kernel/images.py +36 -0
- chrys/kernel/instrumentation.py +1618 -0
- chrys/kernel/loop.py +2308 -0
- chrys/kernel/middleware.py +616 -0
- chrys/kernel/sessions.py +604 -0
- chrys/kernel/tools.py +1061 -0
- chrys/kernel/types.py +126 -0
- chrys/orchestration/__init__.py +3 -0
- chrys/orchestration/engine/__init__.py +3 -0
- chrys/orchestration/engine/assembly.py +236 -0
- chrys/orchestration/engine/build/__init__.py +3 -0
- chrys/orchestration/engine/build/builder.py +1061 -0
- chrys/orchestration/engine/build/construction.py +408 -0
- chrys/orchestration/engine/build/loaded.py +139 -0
- chrys/orchestration/engine/engine.py +789 -0
- chrys/orchestration/engine/execution.py +771 -0
- chrys/orchestration/engine/loader.py +865 -0
- chrys/orchestration/engine/rollback.py +918 -0
- chrys/orchestration/engine/run/__init__.py +3 -0
- chrys/orchestration/engine/run/active_injection.py +419 -0
- chrys/orchestration/engine/run/attachments.py +519 -0
- chrys/orchestration/engine/run/bindings.py +1095 -0
- chrys/orchestration/engine/run/coordinator.py +1062 -0
- chrys/orchestration/engine/run/finalizer.py +417 -0
- chrys/orchestration/engine/run/input_refs.py +60 -0
- chrys/orchestration/engine/run/prompt_content.py +457 -0
- chrys/orchestration/engine/run/resume.py +299 -0
- chrys/orchestration/engine/run/retry.py +948 -0
- chrys/orchestration/engine/run/runner.py +625 -0
- chrys/orchestration/engine/run/runtime_skills.py +146 -0
- chrys/orchestration/engine/run/sub_agent_coordination.py +126 -0
- chrys/orchestration/engine/run/turn_hooks.py +258 -0
- chrys/orchestration/engine/run/turn_state.py +149 -0
- chrys/orchestration/engine/run/working_dir.py +50 -0
- chrys/orchestration/engine/session_lifecycle.py +2013 -0
- chrys/orchestration/engine/state/__init__.py +3 -0
- chrys/orchestration/engine/state/active_session.py +183 -0
- chrys/orchestration/engine/state/controls.py +639 -0
- chrys/orchestration/engine/state/current_agent.py +26 -0
- chrys/orchestration/engine/state/lifecycle_permits.py +395 -0
- chrys/orchestration/engine/state/machine.py +193 -0
- chrys/orchestration/engine/state/session_writer.py +434 -0
- chrys/orchestration/engine/trajectory.py +714 -0
- chrys/orchestration/engine/usage.py +118 -0
- chrys/orchestration/invoker/__init__.py +3 -0
- chrys/orchestration/invoker/acp.py +727 -0
- chrys/orchestration/invoker/acp_protocol.py +1115 -0
- chrys/orchestration/invoker/acp_spec.py +79 -0
- chrys/orchestration/invoker/attempts.py +994 -0
- chrys/orchestration/invoker/child_compaction.py +131 -0
- chrys/orchestration/invoker/child_history.py +99 -0
- chrys/orchestration/invoker/contracts.py +253 -0
- chrys/orchestration/invoker/evidence.py +94 -0
- chrys/orchestration/invoker/kernel.py +343 -0
- chrys/orchestration/invoker/origin.py +79 -0
- chrys/orchestration/invoker/resources.py +343 -0
- chrys/orchestration/invoker/runtime.py +299 -0
- chrys/orchestration/invoker/usage.py +80 -0
- chrys/orchestration/session_hooks.py +117 -0
- chrys/orchestration/session_host.py +1023 -0
- chrys/orchestration/session_resources.py +95 -0
- chrys/orchestration/session_usage.py +219 -0
- chrys/orchestration/startup.py +255 -0
- chrys/orchestration/sub_agents/__init__.py +3 -0
- chrys/orchestration/sub_agents/acp_policy.py +269 -0
- chrys/orchestration/sub_agents/kernel_policy.py +848 -0
- chrys/orchestration/sub_agents/registration.py +44 -0
- chrys/orchestration/sub_agents/shell.py +337 -0
- chrys/orchestration/sub_agents/tools.py +2228 -0
- chrys/orchestration/workflows/__init__.py +3 -0
- chrys/orchestration/workflows/agent_archive.py +156 -0
- chrys/orchestration/workflows/agent_node.py +894 -0
- chrys/orchestration/workflows/agent_node_build.py +687 -0
- chrys/orchestration/workflows/catalog.py +332 -0
- chrys/orchestration/workflows/coordinator.py +771 -0
- chrys/orchestration/workflows/hooks.py +176 -0
- chrys/orchestration/workflows/preview.py +322 -0
- chrys/orchestration/workflows/rollback.py +151 -0
- chrys/orchestration/workflows/runner.py +986 -0
- chrys/orchestration/workflows/session.py +390 -0
- chrys/orchestration/workflows/settings.py +97 -0
- chrys/orchestration/workflows/validation.py +674 -0
- chrys/orchestration/workflows/worker_client.py +1002 -0
- chrys/service/__init__.py +3 -0
- chrys/service/acp_client/__init__.py +65 -0
- chrys/service/acp_client/_transport.py +922 -0
- chrys/service/acp_client/client.py +1311 -0
- chrys/service/acp_client/errors.py +224 -0
- chrys/service/acp_client/protocol.py +220 -0
- chrys/service/acp_client/spawn.py +239 -0
- chrys/service/acp_client/spec.py +100 -0
- chrys/service/agent_middleware/__init__.py +60 -0
- chrys/service/agent_middleware/_metadata_keys.py +52 -0
- chrys/service/agent_middleware/control/__init__.py +3 -0
- chrys/service/agent_middleware/control/approval.py +769 -0
- chrys/service/agent_middleware/control/approval_hooks.py +62 -0
- chrys/service/agent_middleware/control/ask_user.py +207 -0
- chrys/service/agent_middleware/control/interrupt.py +50 -0
- chrys/service/agent_middleware/control/sleep.py +118 -0
- chrys/service/agent_middleware/control/todo.py +117 -0
- chrys/service/agent_middleware/events/__init__.py +3 -0
- chrys/service/agent_middleware/events/hook_dispatch.py +250 -0
- chrys/service/agent_middleware/events/hosted_tools.py +1762 -0
- chrys/service/agent_middleware/events/intermediate_text.py +128 -0
- chrys/service/agent_middleware/events/rejection_metadata.py +50 -0
- chrys/service/agent_middleware/events/result_persistence.py +98 -0
- chrys/service/agent_middleware/events/sub_agent_events.py +951 -0
- chrys/service/agent_middleware/events/tool_error_text.py +22 -0
- chrys/service/agent_middleware/events/tool_events.py +779 -0
- chrys/service/agent_middleware/injection.py +510 -0
- chrys/service/agent_middleware/reminders/__init__.py +91 -0
- chrys/service/agent_middleware/reminders/archive_pointer.py +154 -0
- chrys/service/agent_middleware/reminders/base.py +25 -0
- chrys/service/agent_middleware/reminders/context_usage.py +74 -0
- chrys/service/agent_middleware/reminders/file_change.py +63 -0
- chrys/service/agent_middleware/reminders/mcp.py +39 -0
- chrys/service/agent_middleware/reminders/profile_switch.py +106 -0
- chrys/service/agent_middleware/reminders/runtime_env.py +190 -0
- chrys/service/agent_middleware/reminders/skills.py +44 -0
- chrys/service/agent_middleware/reminders/sub_agents.py +35 -0
- chrys/service/agent_middleware/reminders/todo.py +35 -0
- chrys/service/agent_middleware/reminders/turn_line.py +48 -0
- chrys/service/agent_middleware/response_validation.py +1380 -0
- chrys/service/agent_middleware/system_reminder.py +1107 -0
- chrys/service/agent_middleware/validators.py +396 -0
- chrys/service/analytics/__init__.py +124 -0
- chrys/service/analytics/_actions.py +896 -0
- chrys/service/analytics/_context_evidence.py +357 -0
- chrys/service/analytics/_critical_path.py +179 -0
- chrys/service/analytics/_facts.py +919 -0
- chrys/service/analytics/_insights.py +769 -0
- chrys/service/analytics/_metric_ops.py +83 -0
- chrys/service/analytics/_session_projection.py +460 -0
- chrys/service/analytics/_timeline.py +434 -0
- chrys/service/analytics/_turn_graph.py +1237 -0
- chrys/service/analytics/_turns.py +1377 -0
- chrys/service/analytics/_workflows.py +171 -0
- chrys/service/analytics/aggregation.py +1474 -0
- chrys/service/analytics/classification.py +128 -0
- chrys/service/analytics/export.py +803 -0
- chrys/service/analytics/findings.py +282 -0
- chrys/service/analytics/math.py +79 -0
- chrys/service/analytics/model.py +886 -0
- chrys/service/analytics/reader.py +321 -0
- chrys/service/approval/__init__.py +3 -0
- chrys/service/approval/arbitration.py +102 -0
- chrys/service/approval/command_identity.py +109 -0
- chrys/service/approval/correlation.py +57 -0
- chrys/service/approval/grant_store.py +108 -0
- chrys/service/approval/judge.py +589 -0
- chrys/service/approval/level.py +15 -0
- chrys/service/approval/policy.py +209 -0
- chrys/service/approval/reuse.py +223 -0
- chrys/service/approval/reuse_binding.py +133 -0
- chrys/service/approval/safety_classifier.py +536 -0
- chrys/service/approval/turn_context.py +49 -0
- chrys/service/context/__init__.py +3 -0
- chrys/service/context/compaction/__init__.py +38 -0
- chrys/service/context/compaction/breaker.py +156 -0
- chrys/service/context/compaction/budgets.py +93 -0
- chrys/service/context/compaction/calibration.py +77 -0
- chrys/service/context/compaction/compression.py +690 -0
- chrys/service/context/compaction/current_turn_drop.py +458 -0
- chrys/service/context/compaction/events.py +201 -0
- chrys/service/context/compaction/exclusions.py +261 -0
- chrys/service/context/compaction/groups.py +361 -0
- chrys/service/context/compaction/last_words.py +1996 -0
- chrys/service/context/compaction/last_words_state.py +752 -0
- chrys/service/context/compaction/scoped.py +472 -0
- chrys/service/context/compaction/spill.py +1947 -0
- chrys/service/context/compaction/strategy.py +1116 -0
- chrys/service/context/compaction/summaries.py +319 -0
- chrys/service/context/compaction/turns.py +375 -0
- chrys/service/context/manager.py +174 -0
- chrys/service/context/memory_loader.py +792 -0
- chrys/service/context/middleware/__init__.py +3 -0
- chrys/service/context/middleware/usage.py +332 -0
- chrys/service/context/providers/__init__.py +3 -0
- chrys/service/context/providers/context_management.py +432 -0
- chrys/service/context/providers/history.py +647 -0
- chrys/service/context/providers/memory.py +50 -0
- chrys/service/context/tool_content.py +22 -0
- chrys/service/hooks/__init__.py +37 -0
- chrys/service/hooks/detached_worker.py +118 -0
- chrys/service/hooks/docs/README.md +14 -0
- chrys/service/hooks/docs/authoring.md +684 -0
- chrys/service/hooks/docs/configuration.md +499 -0
- chrys/service/hooks/docs/design.md +359 -0
- chrys/service/hooks/docs/project-hooks.md +348 -0
- chrys/service/hooks/events.py +157 -0
- chrys/service/hooks/loader.py +665 -0
- chrys/service/hooks/manager.py +807 -0
- chrys/service/hooks/matcher.py +111 -0
- chrys/service/hooks/outbox.py +294 -0
- chrys/service/hooks/runner.py +572 -0
- chrys/service/hooks/schema.py +407 -0
- chrys/service/llm/__init__.py +7 -0
- chrys/service/llm/_structured_outputs.py +192 -0
- chrys/service/llm/anthropic_messages/__init__.py +9 -0
- chrys/service/llm/anthropic_messages/client.py +254 -0
- chrys/service/llm/anthropic_messages/decode.py +331 -0
- chrys/service/llm/anthropic_messages/history.py +279 -0
- chrys/service/llm/anthropic_messages/request.py +323 -0
- chrys/service/llm/anthropic_messages/server_tools.py +319 -0
- chrys/service/llm/anthropic_messages/stream.py +297 -0
- chrys/service/llm/anthropic_messages/thinking_binding.py +156 -0
- chrys/service/llm/chat_completions/__init__.py +9 -0
- chrys/service/llm/chat_completions/client.py +369 -0
- chrys/service/llm/chat_completions/decode.py +338 -0
- chrys/service/llm/chat_completions/history.py +657 -0
- chrys/service/llm/chat_completions/reasoning.py +244 -0
- chrys/service/llm/chat_completions/request.py +192 -0
- chrys/service/llm/chat_completions/stream.py +546 -0
- chrys/service/llm/chat_completions/validation.py +308 -0
- chrys/service/llm/clients.py +613 -0
- chrys/service/llm/images.py +65 -0
- chrys/service/llm/mock.py +413 -0
- chrys/service/llm/observer.py +446 -0
- chrys/service/llm/one_shot.py +106 -0
- chrys/service/llm/openai_exceptions.py +93 -0
- chrys/service/llm/openai_responses/__init__.py +10 -0
- chrys/service/llm/openai_responses/client.py +323 -0
- chrys/service/llm/openai_responses/decode.py +432 -0
- chrys/service/llm/openai_responses/history.py +519 -0
- chrys/service/llm/openai_responses/hosted.py +625 -0
- chrys/service/llm/openai_responses/replay.py +629 -0
- chrys/service/llm/openai_responses/request.py +342 -0
- chrys/service/llm/openai_responses/stream.py +847 -0
- chrys/service/llm/openai_timestamps.py +57 -0
- chrys/service/llm/providers.py +107 -0
- chrys/service/llm/proxy_route.py +54 -0
- chrys/service/llm/raw_http_log.py +309 -0
- chrys/service/llm/route_facts.py +63 -0
- chrys/service/llm/route_sessions.py +49 -0
- chrys/service/llm/sdk_anthropic.py +18 -0
- chrys/service/llm/sdk_headers.py +47 -0
- chrys/service/llm/sdk_openai.py +18 -0
- chrys/service/llm/sdk_retry.py +59 -0
- chrys/service/llm/wire_client.py +246 -0
- chrys/service/mcp/__init__.py +3 -0
- chrys/service/mcp/_connection.py +235 -0
- chrys/service/mcp/_http_transport.py +350 -0
- chrys/service/mcp/_progressive.py +459 -0
- chrys/service/mcp/_stdio_transport.py +614 -0
- chrys/service/mcp/_tool_mixins.py +96 -0
- chrys/service/mcp/adapter.py +1031 -0
- chrys/service/mcp/cache.py +476 -0
- chrys/service/mcp/content.py +32 -0
- chrys/service/mcp/errors.py +169 -0
- chrys/service/mcp/owned.py +1330 -0
- chrys/service/mcp/result_limits.py +168 -0
- chrys/service/mcp/thinking_warning.py +95 -0
- chrys/service/mcp/validation.py +74 -0
- chrys/service/mutations/__init__.py +84 -0
- chrys/service/mutations/coordination.py +894 -0
- chrys/service/mutations/detector.py +458 -0
- chrys/service/mutations/git_calibrator.py +397 -0
- chrys/service/mutations/git_state.py +647 -0
- chrys/service/mutations/pipeline.py +779 -0
- chrys/service/mutations/scanner.py +466 -0
- chrys/service/mutations/snapshot_files.py +233 -0
- chrys/service/mutations/store.py +625 -0
- chrys/service/mutations/tool_names.py +15 -0
- chrys/service/mutations/trace.py +246 -0
- chrys/service/mutations/tracker.py +1289 -0
- chrys/service/mutations/types.py +559 -0
- chrys/service/mutations/workspace_changes.py +1583 -0
- chrys/service/profiles/__init__.py +2 -0
- chrys/service/profiles/agents/__init__.py +3 -0
- chrys/service/profiles/agents/builtins/Code.yaml +199 -0
- chrys/service/profiles/agents/builtins/Explore.yaml +62 -0
- chrys/service/profiles/agents/builtins/General.yaml +114 -0
- chrys/service/profiles/agents/builtins/QA.yaml +128 -0
- chrys/service/profiles/agents/loader.py +808 -0
- chrys/service/profiles/agents/registry.py +727 -0
- chrys/service/profiles/agents/schema.py +371 -0
- chrys/service/profiles/agents/serializer.py +196 -0
- chrys/service/profiles/coercion.py +22 -0
- chrys/service/profiles/models/__init__.py +3 -0
- chrys/service/profiles/models/env_bridge.py +157 -0
- chrys/service/profiles/models/loader.py +282 -0
- chrys/service/profiles/models/options.py +438 -0
- chrys/service/profiles/models/registry.py +104 -0
- chrys/service/profiles/models/resolver.py +286 -0
- chrys/service/profiles/models/schema.py +91 -0
- chrys/service/profiles/models/serializer.py +76 -0
- chrys/service/session/__init__.py +3 -0
- chrys/service/session/checkpoint.py +156 -0
- chrys/service/session/history.py +1616 -0
- chrys/service/session/message_metadata.py +151 -0
- chrys/service/session/persistence.py +435 -0
- chrys/service/session/runtime_metadata.py +210 -0
- chrys/service/session/sub_agent_logs.py +1069 -0
- chrys/service/session/sub_agent_transcript.py +654 -0
- chrys/service/skills/__init__.py +3 -0
- chrys/service/skills/adapter.py +408 -0
- chrys/service/skills/constants.py +8 -0
- chrys/service/skills/loader.py +575 -0
- chrys/service/skills/model.py +130 -0
- chrys/service/skills/provider.py +841 -0
- chrys/service/skills/runner.py +390 -0
- chrys/service/state/__init__.py +3 -0
- chrys/service/state/_fork.py +710 -0
- chrys/service/state/_session_files.py +175 -0
- chrys/service/state/_session_meta.py +552 -0
- chrys/service/state/locks.py +154 -0
- chrys/service/state/serializers.py +156 -0
- chrys/service/state/session_catalog.py +361 -0
- chrys/service/state/session_listing.py +84 -0
- chrys/service/state/session_migration.py +446 -0
- chrys/service/state/session_mru.py +315 -0
- chrys/service/state/store.py +2132 -0
- chrys/service/state/workflow.py +158 -0
- chrys/service/text_blocks.py +47 -0
- chrys/service/todos/__init__.py +3 -0
- chrys/service/todos/reminder.py +31 -0
- chrys/service/todos/tracker.py +58 -0
- chrys/service/tools/__init__.py +3 -0
- chrys/service/tools/approval_targets.py +92 -0
- chrys/service/tools/builtins/__init__.py +3 -0
- chrys/service/tools/builtins/ask_user.py +326 -0
- chrys/service/tools/builtins/doc_converter/__init__.py +494 -0
- chrys/service/tools/builtins/doc_converter/artifacts.py +392 -0
- chrys/service/tools/builtins/doc_converter/parsers/__init__.py +3 -0
- chrys/service/tools/builtins/doc_converter/parsers/_table.py +34 -0
- chrys/service/tools/builtins/doc_converter/parsers/base.py +101 -0
- chrys/service/tools/builtins/doc_converter/parsers/docx.py +88 -0
- chrys/service/tools/builtins/doc_converter/parsers/pdf.py +144 -0
- chrys/service/tools/builtins/doc_converter/parsers/pptx.py +103 -0
- chrys/service/tools/builtins/doc_converter/parsers/xls.py +32 -0
- chrys/service/tools/builtins/doc_converter/parsers/xlsx.py +51 -0
- chrys/service/tools/builtins/doc_converter/registry.py +55 -0
- chrys/service/tools/builtins/filesystem.py +1071 -0
- chrys/service/tools/builtins/search.py +1265 -0
- chrys/service/tools/builtins/shell.py +967 -0
- chrys/service/tools/builtins/shell_command_filtering/__init__.py +5 -0
- chrys/service/tools/builtins/shell_command_filtering/policy.py +60 -0
- chrys/service/tools/builtins/shell_command_filtering/presets.py +152 -0
- chrys/service/tools/builtins/shell_command_filtering/readonly/__init__.py +358 -0
- chrys/service/tools/builtins/shell_command_filtering/readonly/commands.py +416 -0
- chrys/service/tools/builtins/shell_command_filtering/readonly/git.py +408 -0
- chrys/service/tools/builtins/shell_command_filtering/readonly/syntax.py +87 -0
- chrys/service/tools/builtins/shell_command_filtering/tokenizer.py +214 -0
- chrys/service/tools/builtins/shell_filter.py +24 -0
- chrys/service/tools/builtins/sleep.py +91 -0
- chrys/service/tools/builtins/todo.py +64 -0
- chrys/service/tools/builtins/web/__init__.py +6 -0
- chrys/service/tools/builtins/web/build.py +268 -0
- chrys/service/tools/builtins/web/config.py +338 -0
- chrys/service/tools/builtins/web/credentials.py +37 -0
- chrys/service/tools/builtins/web/fetch/__init__.py +3 -0
- chrys/service/tools/builtins/web/fetch/cache.py +68 -0
- chrys/service/tools/builtins/web/fetch/convert.py +56 -0
- chrys/service/tools/builtins/web/fetch/tool.py +223 -0
- chrys/service/tools/builtins/web/hosted.py +61 -0
- chrys/service/tools/builtins/web/http.py +330 -0
- chrys/service/tools/builtins/web/progress.py +18 -0
- chrys/service/tools/builtins/web/search/__init__.py +3 -0
- chrys/service/tools/builtins/web/search/exa_mcp.py +146 -0
- chrys/service/tools/builtins/web/search/html.py +152 -0
- chrys/service/tools/builtins/web/search/json_api.py +227 -0
- chrys/service/tools/builtins/web/search/providers.py +77 -0
- chrys/service/tools/builtins/web/search/tool.py +218 -0
- chrys/service/tools/builtins/web/search/types.py +28 -0
- chrys/service/tools/builtins/web/tls_identity.py +66 -0
- chrys/service/tools/kinds.py +115 -0
- chrys/service/tools/names.py +47 -0
- chrys/service/tools/registry.py +242 -0
- chrys/service/tools/result_metadata.py +103 -0
- chrys/service/tools/session_artifacts.py +196 -0
- chrys/service/tools/spill.py +218 -0
- chrys/service/tools/workspace_paths.py +81 -0
- chrys/service/trajectory/__init__.py +11 -0
- chrys/service/trajectory/approvals.py +201 -0
- chrys/service/trajectory/compaction.py +420 -0
- chrys/service/trajectory/fork.py +75 -0
- chrys/service/trajectory/hooks.py +217 -0
- chrys/service/trajectory/items.py +41 -0
- chrys/service/trajectory/preparation.py +374 -0
- chrys/service/trajectory/retries.py +95 -0
- chrys/service/trajectory/revisions.py +129 -0
- chrys/service/trajectory/segmented.py +163 -0
- chrys/service/trajectory/session.py +762 -0
- chrys/service/trajectory/state.py +83 -0
- chrys/service/trajectory/sub_agents.py +169 -0
- chrys/service/trajectory/tombstone.py +262 -0
- chrys/service/trajectory/tools.py +323 -0
- chrys/service/trajectory/validation.py +130 -0
- chrys/service/trajectory/waits.py +161 -0
- chrys/service/trajectory/workflow.py +148 -0
- chrys/service/vision.py +128 -0
- chrys/service/workflows/__init__.py +3 -0
- chrys/service/workflows/admission.py +151 -0
- chrys/service/workflows/artifacts.py +109 -0
- chrys/service/workflows/asks.py +130 -0
- chrys/service/workflows/builtins/__init__.py +12 -0
- chrys/service/workflows/builtins/demo-workflow.manifest.json +635 -0
- chrys/service/workflows/builtins/demo-workflow.py +756 -0
- chrys/service/workflows/discovery.py +554 -0
- chrys/service/workflows/environment.py +284 -0
- chrys/service/workflows/graph.py +430 -0
- chrys/service/workflows/history.py +82 -0
- chrys/service/workflows/interpreter.py +107 -0
- chrys/service/workflows/journal.py +334 -0
- chrys/service/workflows/layout.py +56 -0
- chrys/service/workflows/ledger.py +149 -0
- chrys/service/workflows/model_selection.py +18 -0
- chrys/service/workflows/orphans.py +209 -0
- chrys/service/workflows/outcomes.py +46 -0
- chrys/service/workflows/protocol.py +210 -0
- chrys/service/workflows/records.py +142 -0
- chrys/service/workflows/scheduler.py +770 -0
- chrys/service/workflows/sdk/__init__.py +51 -0
- chrys/service/workflows/sdk/_ask.py +167 -0
- chrys/service/workflows/sdk/_builder.py +781 -0
- chrys/service/workflows/sdk/_values.py +92 -0
- chrys/service/workflows/sdk_artifact.py +74 -0
- chrys/service/workflows/store.py +494 -0
- chrys/service/workflows/transcript.py +102 -0
- chrys/service/workflows/values.py +73 -0
- chrys/service/workflows/worker_host.py +1820 -0
- chrys/workflows.py +38 -0
- icode_tui-0.29.1.dist-info/METADATA +104 -0
- icode_tui-0.29.1.dist-info/RECORD +1138 -0
- icode_tui-0.29.1.dist-info/WHEEL +4 -0
- icode_tui-0.29.1.dist-info/entry_points.txt +2 -0
- icode_tui-0.29.1.dist-info/licenses/LICENSE +202 -0
- icode_tui-0.29.1.dist-info/licenses/NOTICE +1955 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# OpenTelemetry 参考
|
|
2
|
+
|
|
3
|
+
iCode 可通过 OpenTelemetry 记录智能体运行过程中产生的以下遥测数据:
|
|
4
|
+
|
|
5
|
+
- **追踪**:记录智能体运行、模型请求和工具调用等操作的起止时间、父子调用关系及错误信息,用于查看调用过程和定位耗时环节。
|
|
6
|
+
- **日志**:按事件记录时间、级别和具体内容,例如工具调用成功、运行警告或错误信息;有调用上下文时,可与对应追踪关联。
|
|
7
|
+
- **指标**:记录模型请求耗时、输入与输出 Token 数量、工具调用耗时等数值,用于汇总用量、耗时分布和变化趋势。
|
|
8
|
+
|
|
9
|
+
收集器是接收遥测数据的服务。iCode 使用 OpenTelemetry Protocol(OTLP)向收集器发送数据。下文中的“端点”指收集器接收遥测数据的地址。
|
|
10
|
+
|
|
11
|
+
本页介绍 iCode 的 OpenTelemetry 配置、遥测数据的保存与导出方式,以及连接 OTLP 收集器的方法。
|
|
12
|
+
|
|
13
|
+
## 启用与数据去向
|
|
14
|
+
|
|
15
|
+
### 启用配置
|
|
16
|
+
|
|
17
|
+
OpenTelemetry 默认关闭。可在终端用户界面(Terminal User Interface,TUI)的[设置 → 安全 → 遥测](../guides/configuration/settings.md#遥测)中启用,也可使用以下环境变量。**本页配置均在重启 iCode 后生效。**
|
|
18
|
+
|
|
19
|
+
| 环境变量 | 默认值 | 作用 |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `CHRYS_OTEL` | `false` | 启用 OpenTelemetry 导出 |
|
|
22
|
+
| `CHRYS_OTEL_ENDPOINT` | 空 | 设置收集器端点,对应 TUI 的“遥测端点” |
|
|
23
|
+
| `CHRYS_OTEL_SENSITIVE_DATA` | `false` | 在遥测中包含提示词、模型回复和工具参数等敏感内容 |
|
|
24
|
+
|
|
25
|
+
布尔值接受 `1`、`true`、`yes`、`on`(开启)和 `0`、`false`、`no`、`off`(关闭),不区分大小写。
|
|
26
|
+
|
|
27
|
+
在 TUI 中修改的设置会保存在用户设置文件 `settings.yaml` 中。上述环境变量设置为有效值后:
|
|
28
|
+
|
|
29
|
+
- 环境变量优先于文件中的对应配置生效,但不会修改该文件。
|
|
30
|
+
- TUI 会显示环境变量指定的值,并禁用对应设置项的编辑。
|
|
31
|
+
|
|
32
|
+
关闭 `CHRYS_OTEL` 或 TUI 中的“OpenTelemetry 导出”后,即使已配置端点或敏感数据选项,iCode 也不会保存或发送遥测数据。
|
|
33
|
+
|
|
34
|
+
### 数据去向
|
|
35
|
+
|
|
36
|
+
启用 OpenTelemetry 后,如果未配置任何收集器端点,追踪和日志保存在本地;配置收集器端点后,则改为远端导出。
|
|
37
|
+
|
|
38
|
+
追踪、日志和指标可以共用一个接收地址,也可以分别配置。每类数据使用哪个地址,由[端点优先级](#端点优先级)决定;数据去向如下:
|
|
39
|
+
|
|
40
|
+
| 数据类型 | 本地保存 | 远端导出(已为该类数据配置接收地址) |
|
|
41
|
+
| --- | --- | --- |
|
|
42
|
+
| 追踪 | 当前会话文件夹中的 `otel/traces.jsonl` | 发送到收集器 |
|
|
43
|
+
| 日志 | 当前会话文件夹中的 `otel/logs.jsonl` | 发送到收集器 |
|
|
44
|
+
| 指标 | 不保存 | 发送到收集器 |
|
|
45
|
+
|
|
46
|
+
本地文件会在产生相应记录后创建。会话文件夹的位置见[查找会话 ID 和会话保存位置](../guides/daily-use/sessions.md#查找会话-id-和会话保存位置)。
|
|
47
|
+
|
|
48
|
+
配置任一收集器端点并重启 iCode 后,iCode 将停止在本地保存遥测数据。远端导出失败时不会回退到本地保存,因此相关数据可能丢失。
|
|
49
|
+
|
|
50
|
+
发送到接收端的数据是否保存以及保留多久,由接收端的配置决定。
|
|
51
|
+
|
|
52
|
+
## 敏感数据
|
|
53
|
+
|
|
54
|
+
开启“遥测中包含敏感数据”或设置 `CHRYS_OTEL_SENSITIVE_DATA=true` 后,追踪和日志中可能包含提示词、模型回复、工具参数和工具结果。这些内容可能包含文件内容、凭据或其他私密信息。该设置同时影响本地保存和远端导出。
|
|
55
|
+
|
|
56
|
+
**开启敏感数据后,工具调用耗时指标也会附带工具参数。** 因此,即使仅导出指标,也可能向收集器发送这些参数。
|
|
57
|
+
|
|
58
|
+
启用此选项前,请确认数据保存位置、访问权限和保留策略。关闭此选项不会删除此前已经保存或发送的记录。
|
|
59
|
+
|
|
60
|
+
## 连接收集器
|
|
61
|
+
|
|
62
|
+
远端导出需要已运行且接收 OTLP/gRPC 的 OTLP 收集器。配置时,请使用收集器提供的端点和认证信息。
|
|
63
|
+
|
|
64
|
+
下文的标准 `OTEL_*` 变量也可以写在工作目录的 `.env` 文件或用户 `.env` 文件(macOS / Linux:`~/.chrys/.env`;Windows:`%APPDATA%\chrys\.env`)中。启动时,这些文件中的值会覆盖 shell 中导出的同名变量。
|
|
65
|
+
|
|
66
|
+
### 端点优先级
|
|
67
|
+
|
|
68
|
+
三类数据共用的地址称为**基础端点**,可通过 TUI 中的“遥测端点”、`CHRYS_OTEL_ENDPOINT` 或标准环境变量 `OTEL_EXPORTER_OTLP_ENDPOINT` 配置。
|
|
69
|
+
|
|
70
|
+
如需分别指定接收地址,可设置以下**类型专用端点**。类型专用端点仅覆盖对应数据类型的基础端点:
|
|
71
|
+
|
|
72
|
+
| 数据类型 | 专用端点环境变量 |
|
|
73
|
+
| --- | --- |
|
|
74
|
+
| 追踪 | `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` |
|
|
75
|
+
| 日志 | `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` |
|
|
76
|
+
| 指标 | `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` |
|
|
77
|
+
|
|
78
|
+
存在多项配置时,每类数据按照以下优先级选择第一个非空端点:
|
|
79
|
+
|
|
80
|
+
1. 对应数据类型的专用端点环境变量。
|
|
81
|
+
2. 通用环境变量 `OTEL_EXPORTER_OTLP_ENDPOINT`。
|
|
82
|
+
3. `CHRYS_OTEL_ENDPOINT`。
|
|
83
|
+
4. TUI 中保存的“遥测端点”。
|
|
84
|
+
|
|
85
|
+
如果未配置基础端点,仅设置某一类数据的专用端点,则只导出该类数据。例如,仅设置 `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` 时,只发送追踪数据;日志和指标既不会发送,也不会保存到本地。
|
|
86
|
+
|
|
87
|
+
标准 `OTEL_EXPORTER_OTLP_*` 环境变量不会显示在 TUI 的“遥测端点”中。如果修改 TUI 中的端点后,数据仍发送到原地址,请检查是否设置了优先级更高的标准环境变量。
|
|
88
|
+
|
|
89
|
+
### 协议与地址格式
|
|
90
|
+
|
|
91
|
+
iCode 通过 OTLP/gRPC 发送数据,直接使用配置的端点地址。`OTEL_EXPORTER_OTLP_PROTOCOL` 应保持未设置或设为 `grpc`。iCode 安装包不包含 OTLP HTTP 导出器:设为 `http/protobuf`(或 `http`)时,OpenTelemetry 初始化失败,iCode 不会记录任何遥测数据,也不会保存到本地;设为其他值时不会导出任何数据。
|
|
92
|
+
|
|
93
|
+
端点地址须包含协议前缀:`http://` 使用未加密连接,适用于本机收集器;`https://` 使用 TLS。连接远端收集器时,请使用 `https://`,并按服务要求配置认证信息。
|
|
94
|
+
|
|
95
|
+
### 认证请求头
|
|
96
|
+
|
|
97
|
+
如果收集器需要通过请求头进行认证,可使用以下环境变量:
|
|
98
|
+
|
|
99
|
+
| 环境变量 | 作用范围 |
|
|
100
|
+
| --- | --- |
|
|
101
|
+
| `OTEL_EXPORTER_OTLP_HEADERS` | 所有数据类型 |
|
|
102
|
+
| `OTEL_EXPORTER_OTLP_TRACES_HEADERS` | 追踪 |
|
|
103
|
+
| `OTEL_EXPORTER_OTLP_LOGS_HEADERS` | 日志 |
|
|
104
|
+
| `OTEL_EXPORTER_OTLP_METRICS_HEADERS` | 指标 |
|
|
105
|
+
|
|
106
|
+
请求头使用逗号分隔的 `名称=值` 格式。请求头名称须使用小写字母,因为 gRPC 会拒绝包含大写字母的名称;值按原样发送,不做 URL 解码。例如:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer <token>"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
将 `<token>` 替换为收集器提供的令牌,并在启动 iCode 前设置。
|
|
113
|
+
|
|
114
|
+
类型专用请求头会与通用请求头合并;存在同名请求头时,类型专用值优先。
|
|
115
|
+
|
|
116
|
+
### 本机连接示例
|
|
117
|
+
|
|
118
|
+
假设本机收集器通过 `http://localhost:4317` 接收 OTLP gRPC 请求,不需要认证,且未设置其他标准端点环境变量,可在 Bash 或 Zsh 中运行:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
export CHRYS_OTEL=true
|
|
122
|
+
export CHRYS_OTEL_ENDPOINT=http://localhost:4317
|
|
123
|
+
icode
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
此配置会通过未加密的 gRPC 连接将追踪、日志和指标发送到 `http://localhost:4317`。
|
|
127
|
+
|
|
128
|
+
## 在接收端查看数据
|
|
129
|
+
|
|
130
|
+
### 服务标识
|
|
131
|
+
|
|
132
|
+
默认服务名(`service.name`)为 `chrys`,服务版本为当前安装的 iCode 版本。可在收集器或其连接的观测平台中按服务名查找数据。
|
|
133
|
+
|
|
134
|
+
如果多处运行的 iCode 向同一个收集器发送数据,可以用服务名和资源属性区分数据来源。资源属性是附在遥测数据上的标签,例如运行环境和实例名称。
|
|
135
|
+
|
|
136
|
+
例如,在测试环境中运行一个 iCode 实例,可在 Bash 或 Zsh 中设置:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
export OTEL_SERVICE_NAME=icode-test
|
|
140
|
+
export OTEL_RESOURCE_ATTRIBUTES="deployment.environment.name=staging,service.instance.id=test-01"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
在同一终端启动 iCode 后,导出的数据会带上以下标识,可在观测平台中据此筛选:
|
|
144
|
+
|
|
145
|
+
| 属性 | 示例值 | 含义 |
|
|
146
|
+
| --- | --- | --- |
|
|
147
|
+
| `service.name` | `icode-test` | 服务名称 |
|
|
148
|
+
| `deployment.environment.name` | `staging` | 运行环境,此处表示测试环境 |
|
|
149
|
+
| `service.instance.id` | `test-01` | 实例名称,用于区分同一环境中的多个 iCode 实例 |
|
|
150
|
+
|
|
151
|
+
`OTEL_RESOURCE_ATTRIBUTES` 使用逗号分隔多个 `名称=值`。其中的属性会覆盖同名默认属性;如果设置了 `service.name`,也会覆盖 `OTEL_SERVICE_NAME`。
|
|
152
|
+
|
|
153
|
+
例如,设置 `OTEL_SERVICE_NAME=icode-test`,同时设置 `OTEL_RESOURCE_ATTRIBUTES="service.name=icode-qa"`,最终服务名为 `icode-qa`。
|
|
154
|
+
|
|
155
|
+
### 指标与验证
|
|
156
|
+
|
|
157
|
+
配置指标端点后(也可继承基础端点),iCode 每 5 秒尝试导出以下指标:
|
|
158
|
+
|
|
159
|
+
| 指标 | 单位 | 统计内容 |
|
|
160
|
+
| --- | --- | --- |
|
|
161
|
+
| `gen_ai.client.operation.duration` | 秒 | 模型请求耗时 |
|
|
162
|
+
| `gen_ai.client.token.usage` | Token | 模型请求的输入与输出 Token 数量,分别记录 |
|
|
163
|
+
| `chrys.function.invocation.duration` | 秒 | 工具调用耗时 |
|
|
164
|
+
|
|
165
|
+
iCode 会为 Token 用量自动添加 `gen_ai.token.type` 标签。在观测平台查询 `gen_ai.client.token.usage` 时:
|
|
166
|
+
|
|
167
|
+
- 筛选 `gen_ai.token.type=input`,查看输入 Token 用量。
|
|
168
|
+
- 筛选 `gen_ai.token.type=output`,查看输出 Token 用量。
|
|
169
|
+
- 按 `gen_ai.token.type` 分组,同时展示两类用量。
|
|
170
|
+
|
|
171
|
+
已启用 OpenTelemetry 且为指标配置了接收地址时,可提交一次请求并触发模型请求或工具调用,然后在接收端查询上述指标,以确认数据是否成功导出。Token 用量仅在模型响应提供相应统计时记录。
|
|
172
|
+
|
|
173
|
+
如果未收到数据,可依次检查:
|
|
174
|
+
|
|
175
|
+
1. 是否已启用 OpenTelemetry,并在修改配置后重启 iCode。
|
|
176
|
+
2. 收集器是否在该端点接收 OTLP/gRPC,`OTEL_EXPORTER_OTLP_PROTOCOL` 是否未设置或设为 `grpc`,以及是否存在优先级更高的端点配置。
|
|
177
|
+
3. 收集器是否需要认证,以及认证请求头是否配置正确。
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# iCode 设置文件参考
|
|
2
|
+
|
|
3
|
+
`settings.yaml` 保存 iCode 的界面偏好、默认智能体、会话和工具设置。本文按用途列出常用设置键,并说明文件位置与格式、值的写法、多个来源并存时的优先级,以及项目文件可以覆盖的范围。
|
|
4
|
+
|
|
5
|
+
在终端用户界面(Terminal User Interface,TUI)中修改设置的步骤和生效时间,见[配置 iCode 设置](../guides/configuration/settings.md)。
|
|
6
|
+
|
|
7
|
+
## 文件位置与格式
|
|
8
|
+
|
|
9
|
+
| 配置来源 | macOS / Linux | Windows | 用途 |
|
|
10
|
+
| --- | --- | --- | --- |
|
|
11
|
+
| 用户设置 | `~/.chrys/settings.yaml` | `%APPDATA%\chrys\settings.yaml` | 保存个人设置;TUI 设置窗口写入此文件 |
|
|
12
|
+
| 项目设置 | 工作目录下的 `.chrys/settings.yaml` | 同左 | 覆盖该工作目录的部分设置,默认不加载 |
|
|
13
|
+
|
|
14
|
+
iCode 仅在当前会话的工作目录下查找 `.chrys/settings.yaml`,不向父目录或子目录查找。
|
|
15
|
+
|
|
16
|
+
文件使用 YAML 格式。键名以点分隔表示嵌套层级,例如 `llm.retry.max_transient` 在文件中写为:
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
llm:
|
|
20
|
+
retry:
|
|
21
|
+
max_transient: 3
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
手动编辑设置文件后,保存并重新启动 iCode 使修改生效。
|
|
25
|
+
|
|
26
|
+
## 设置键
|
|
27
|
+
|
|
28
|
+
表中“无”表示没有对应环境变量,“未指定”表示该键没有保存值(未填写或留空)。通用的取值写法与无效值处理见[值的写法与无效值](#值的写法与无效值)。
|
|
29
|
+
|
|
30
|
+
### 界面与输入
|
|
31
|
+
|
|
32
|
+
| YAML 键 | 环境变量 | 默认值 | 类型、取值与效果 |
|
|
33
|
+
| --- | --- | --- | --- |
|
|
34
|
+
| `ui.theme` | `CHRYS_THEME` | `chrys` | 字符串;使用 TUI 主题列表(按 **F9** 打开)中已有的主题名称。已停用的名称 `chrys-dark` 按 `chrys` 读取,其他未知名称回到默认主题 |
|
|
35
|
+
| `ui.locale` | `CHRYS_LOCALE` | `system` | 字符串;`system` 跟随系统,也可设为 `en` 或 `zh-Hans`。不支持的语言使用英语;不改变模型回复语言 |
|
|
36
|
+
| `ui.editor.keymap` | `CHRYS_EDITOR_KEYMAP` | `standard` | 字符串;`standard`、`emacs`、`vim`,选择输入编辑器的按键模式 |
|
|
37
|
+
| `ui.chat.tool_groups_expanded` | 无 | `false` | 布尔值;新出现的工具组是否默认展开详情 |
|
|
38
|
+
| `ui.chat.file_snapshot_inline_chars` | `CHRYS_TUI_FILE_SNAPSHOT_INLINE_CHARS` | `131072` | 整数;控制文件编辑卡片直接载入的改动前后内容上限,按两者字节数合计判断。不超过上限时随卡片载入,标题显示具体的增删行数;超过上限且有可用快照引用时,展开差异才读取,标题不显示具体行数。`0` 或负数将上限设为零;没有可用快照引用时仍可能保留内联内容。此设置只控制卡片的内容载入方式;是否备份文件内容由 `mutations.snapshot.max_file_mb` 和 `mutations.snapshot.skip_binary` 决定 |
|
|
39
|
+
| `history.prompt.enabled` | `CHRYS_HISTORY_DISABLE` | `true` | 布尔值;跨会话保存和读取输入历史,关闭不会删除已有记录。环境变量含义相反:只有精确的 `1` 禁用历史,其他值不禁用 |
|
|
40
|
+
| `workspace.mru_max_entries` | `CHRYS_WORKSPACE_MRU_MAX_ENTRIES` | `20` | 整数;最多保留多少个最近使用的工作目录,上限 `100`,`0` 或负数禁用记录 |
|
|
41
|
+
|
|
42
|
+
### 智能体、模型与请求
|
|
43
|
+
|
|
44
|
+
模型用途键填写已有模型配置的 ID 或唯一名称;Buddy 伙伴不选择模型配置,其键填写模型服务端的模型名称(`model_id`)。
|
|
45
|
+
|
|
46
|
+
| YAML 键 | 环境变量 | 默认值 | 类型、取值与效果 |
|
|
47
|
+
| --- | --- | --- | --- |
|
|
48
|
+
| `agent.default_profile` | `CHRYS_DEFAULT_AGENT` | `Code` | 字符串;下次启动 TUI 时的默认智能体,不切换当前会话;显式 `--agent` 优先 |
|
|
49
|
+
| `model.profile.active` | `CHRYS_MODEL_PROFILE` | 未指定 | 字符串;选择已有模型配置,作为智能体未指定有效 `model.profile_id` 时的后备模型。显式 `--model` 优先于此键,但仍作为后备模型;ACP 会话中显式切换模型则优先于智能体指定的模型 |
|
|
50
|
+
| `model.role.approval_judge` | `CHRYS_MODEL_PROFILE_APPROVAL_JUDGE` | 未指定 | 字符串;自动审批使用的模型配置,未指定时使用当前模型 |
|
|
51
|
+
| `model.role.session_title` | `CHRYS_MODEL_PROFILE_SESSION_TITLE` | 未指定 | 字符串;自动生成会话标题使用的模型配置,未指定时使用当前模型 |
|
|
52
|
+
| `model.role.buddy_model_id` | `CHRYS_PET_MODEL` | 未指定 | 字符串;Buddy 伙伴使用的模型,沿用当前模型配置的连接;未指定时使用当前模型 |
|
|
53
|
+
| `llm.retry.max_transient` | `CHRYS_MAX_TRANSIENT_RETRIES` | `null` | 整数或 `null`;`null` 使用当前启动入口的默认次数:TUI(含 `icode serve`)和 `icode acp` 为 `10` 次,`icode run` 和 `icode workflow run` 为 `18` 次。每次重试前的等待逐次变长,最长 10 分钟。`0` 禁用瞬时错误自动重试,负数无效,上限 `50` |
|
|
54
|
+
|
|
55
|
+
瞬时错误重试用于临时网络故障、请求超时、限流等可恢复错误。提高次数也会增加最终失败前的等待时间和请求次数;该数字不等于整个任务的模型请求总数。
|
|
56
|
+
|
|
57
|
+
### 审批与项目信任
|
|
58
|
+
|
|
59
|
+
`approval` 相关键控制智能体请求执行操作时的审批行为;三种模式的差别与配置步骤见[配置审批模式](../guides/configuration/approval.md)。
|
|
60
|
+
|
|
61
|
+
| YAML 键 | 环境变量 | 默认值 | 类型、取值与效果 |
|
|
62
|
+
| --- | --- | --- | --- |
|
|
63
|
+
| `approval.default_mode` | `CHRYS_DEFAULT_APPROVAL_MODE` | `manual` | 字符串;`manual` 手动审批、`auto` 自动审批、`bypass` 跳过审批。设置默认模式不会切换当前会话 |
|
|
64
|
+
| `ui.approval.defer_while_judging` | 无 | `true` | 布尔值;自动模式下,TUI 是否只在审批裁判模型标记调用或评估失败时才弹出审批对话框。`false` 表示评估期间立即弹出。ACP 服务器和 `icode run` 不受影响 |
|
|
65
|
+
| `project.config_enabled` | 无 | `false` | 布尔值;是否加载各工作目录的项目设置,必须在用户设置中启用 |
|
|
66
|
+
| `project.hooks_enabled` | 无 | `false` | 布尔值;是否加载工作目录 `.chrys/hooks` 中的项目 Hooks,必须在用户设置中启用,不影响用户级 Hooks |
|
|
67
|
+
| `project.skills_enabled` | 无 | `false` | 布尔值;是否加载工作目录 `.agents/skills` 中的项目 Skills,必须在用户设置中启用;智能体自身的“从工作文件夹加载 Skills”选项也需保持开启 |
|
|
68
|
+
|
|
69
|
+
手动在 YAML 或环境变量中将默认审批模式设为 `bypass`,下次按此默认值启动时就会跳过审批。在 TUI 中通过 `/approval` 切换到 `bypass` 时,iCode 会将默认模式保存为 `auto`;TUI 设置窗口不提供 `bypass`。
|
|
70
|
+
|
|
71
|
+
项目设置、项目 Hooks 和项目 Skills 都随你打开的仓库而来,因此默认都不加载,并且分别开启:开启其中一项不会开启其他项。工作目录中有未开启的项时,iCode 会弹出提示,说明需要开启哪个设置。Hooks 是 iCode 在特定事件时运行的外部命令,编写与配置见[配置和编写 Hooks](../guides/extensions/hooks.md);Skills 见[安装和使用 Skills](../guides/extensions/skills.md)。
|
|
72
|
+
|
|
73
|
+
### 会话与文件恢复
|
|
74
|
+
|
|
75
|
+
| YAML 键 | 环境变量 | 默认值 | 类型、取值与效果 |
|
|
76
|
+
| --- | --- | --- | --- |
|
|
77
|
+
| `session.title.auto` | `CHRYS_SESSION_TITLE_AUTO` | `true` | 布尔值;通过额外模型请求自动生成会话标题。手动设置标题后,不再自动更新该会话标题 |
|
|
78
|
+
| `storage.session_root_dir` | `CHRYS_SESSION_ROOT_DIR` | 未指定 | 路径字符串;默认使用用户配置目录,实际会话位于根目录下的 `sessions` 子目录;支持 `~`,建议使用绝对路径 |
|
|
79
|
+
| `rollback.snapshots_keep` | `CHRYS_ROLLBACK_SNAPSHOTS_KEEP` | `20` | 整数;每个会话保留的回滚快照数,最小 `1`;超出后删除较早快照 |
|
|
80
|
+
| `mutations.snapshot.max_file_mb` | `CHRYS_MUTATION_SNAPSHOT_MAX_FILE_MB` | `50` | 整数;单个文件备份的大小上限,单位 MiB。`0` 或负数取消大小限制;超限文件仍记录为有改动,但不备份内容,无法据此显示差异或恢复文件 |
|
|
81
|
+
| `mutations.snapshot.skip_binary` | `CHRYS_MUTATION_SNAPSHOT_SKIP_BINARY` | `true` | 布尔值;是否跳过二进制文件内容备份。设为 `false` 时仍受单文件大小上限约束 |
|
|
82
|
+
|
|
83
|
+
改变会话存储根目录不会自动迁移旧会话;指定目录不可用时会提示并回退到默认位置。迁移步骤见[迁移会话存储位置](../guides/daily-use/sessions.md#迁移会话存储位置)。
|
|
84
|
+
|
|
85
|
+
### 工具与工作目录变更
|
|
86
|
+
|
|
87
|
+
| YAML 键 | 环境变量 | 默认值 | 类型、取值与效果 |
|
|
88
|
+
| --- | --- | --- | --- |
|
|
89
|
+
| `tools.search.respect_gitignore` | 无 | `true` | 布尔值;grep 和 glob 搜索时应用 `.gitignore` 规则。设为 `false` 时仍会跳过隐藏路径,`.ignore` 等其他忽略文件也仍然生效 |
|
|
90
|
+
| `tools.ask_user.inline` | `CHRYS_ASK_USER_INLINE` | `false` | 布尔值;TUI 中将智能体提问显示在对话中,而不是弹出窗口 |
|
|
91
|
+
| `tools.ask_user.timeout_seconds` | `CHRYS_ASK_USER_TIMEOUT_SECONDS` | `900` | 整数或 `null`;等待回答的秒数,超时后向智能体返回超时结果;`0`、负数或用户 YAML 的 `null` 表示无限等待 |
|
|
92
|
+
| `tools.result.ceiling_tokens` | `CHRYS_TOOL_RESULT_CEILING_TOKENS` | `64000` | 整数;单条工具结果交给模型前的最终长度上限,单位 token。`0` 关闭此限制;正数最小 `2000`,负数无效 |
|
|
93
|
+
| `workspace.change_notice.enabled` | `CHRYS_WORKSPACE_CHANGE_NOTICE` | `true` | 布尔值;开始处理新提示词时,向智能体提供自上次提交提示词以来的工作目录文件变更摘要,包含智能体造成的改动和外部改动 |
|
|
94
|
+
| `workspace.change_notice.max_entries` | `CHRYS_WORKSPACE_CHANGE_NOTICE_MAX_ENTRIES` | `50` | 整数;变更摘要的最大条目数,范围 `1`–`100` |
|
|
95
|
+
| `mutations.parallel_implicit_tools` | `CHRYS_PARALLEL_IMPLICIT_TOOLS` | `true` | 布尔值;允许同一会话中的 Shell、Skill 脚本等可能改动文件的工具并行运行。设为 `false` 更容易判断文件改动来自哪次工具调用 |
|
|
96
|
+
| `mutations.coordination.enabled` | `CHRYS_MUTATION_COORDINATION` | `true` | 布尔值;协助区分共享工作目录的不同 iCode 会话造成的文件改动 |
|
|
97
|
+
|
|
98
|
+
工具自身还可能有独立的输出限制,例如 MCP 返回结果和 Skill 资源的限制。将 `tools.result.ceiling_tokens` 设为 `0` 不会关闭这些限制,也不能恢复已被工具截断的内容。此外,Shell 命令和 Skill 脚本的每一路输出最多保留 32 MiB,与这些 token 限制无关。
|
|
99
|
+
|
|
100
|
+
### 网络工具
|
|
101
|
+
|
|
102
|
+
以下键用于配置 `web_search` 和 `web_fetch` 工具。这两个工具默认关闭,还需要加入智能体才能使用。这些键没有对应环境变量,只能在用户设置中配置,项目设置不能配置。TUI 的“设置”窗口在“工具”标签页中提供常用的键,其余的键需在用户 `settings.yaml` 中设置。工具如何使用这些值,参阅[配置网络工具](../guides/configuration/web-tools.md)。
|
|
103
|
+
|
|
104
|
+
来源列表的每一项都是确切的来源(协议、主机和可选端口,例如 `https://docs.example.com`),不能包含路径、查询参数、凭据或通配符。列表可以写成 YAML 列表,也可以写成 JSON 数组字符串;TUI 保存时使用 JSON 字符串。空字符串表示空列表。两个模式键中,`true` 或不加引号的 `on` 对网络搜索表示 `auto`、对网页读取表示 `on`;`false` 或不加引号的 `off` 表示 `off`。这些值按工具使用的同一套规则检查,无效值会被报告(并说明错在哪里)然后忽略。
|
|
105
|
+
|
|
106
|
+
| YAML 键 | 默认值 | 类型、取值与效果 |
|
|
107
|
+
| --- | --- | --- |
|
|
108
|
+
| `tools.web_search.mode` | `auto` | 字符串;`auto` 或 `off`。`auto` 时,包含 `web_search` 且未配置搜索提供方的智能体会将搜索请求发送到 Exa 公开端点 `https://mcp.exa.ai/mcp`;`off` 关闭网络搜索。智能体配置文件中的 `tools.web_search.mode` 优先 |
|
|
109
|
+
| `tools.web_search.num_results` | `8` | 整数,范围 `1`–`20`;智能体未指定数量时每次搜索返回的结果数。智能体配置文件中的值优先 |
|
|
110
|
+
| `tools.web_search.timeout_seconds` | `30` | 整数,范围 `1`–`120`;整个搜索调用的截止时间(秒),包括等待空闲连接的时间。智能体配置文件中的值优先 |
|
|
111
|
+
| `tools.web_search.custom_endpoints` | `[]` | 对象列表,每项形如 `{"url": "...", "credential_env_names": ["..."]}`;授权一个 `custom_http` 搜索端点及其可以读取的环境变量。同一 URL 只能出现一次 |
|
|
112
|
+
| `tools.web_search.private_origins` | `[]` | 来源列表;即使解析到私有或其他非公网地址也允许访问的搜索端点 |
|
|
113
|
+
| `tools.web_search.http_origins` | `[]` | 来源列表;允许通过明文 `http://` 访问的搜索端点 |
|
|
114
|
+
| `tools.web_fetch.mode` | `on` | 字符串;`on` 或 `off`。`on` 模式下,包含 `web_fetch` 的智能体可以使用该工具;`off` 模式下不提供。智能体配置文件中的 `tools.web_fetch.mode` 优先 |
|
|
115
|
+
| `tools.web_fetch.max_tokens` | `16000` | 整数,范围 `1`–`64000`;读取的页面最多返回的词元数。智能体可以要求更少,但不能更多。智能体配置文件中的值优先 |
|
|
116
|
+
| `tools.web_fetch.timeout_seconds` | `60` | 整数,范围 `1`–`120`;整个网页读取调用的截止时间(秒)。智能体配置文件中的值优先 |
|
|
117
|
+
| `tools.web_fetch.private_origins` | `[]` | 来源列表;即使解析到私有或其他非公网地址,`web_fetch` 也可以读取的来源 |
|
|
118
|
+
| `tools.web_fetch.http_origins` | `[]` | 来源列表;`web_fetch` 可以通过明文 `http://` 读取的来源 |
|
|
119
|
+
| `tools.web_fetch.allowed_origins` | `[]` | 来源列表;非空时,`web_fetch` 只从这些来源读取 |
|
|
120
|
+
| `tools.web_fetch.denied_origins` | `[]` | 来源列表;`web_fetch` 从不读取的来源,优先于其他所有列表 |
|
|
121
|
+
| `tools.web_egress.proxy_url` | 未设置 | 字符串;仅供网络工具使用的 `http://` 或 `https://` 代理,写成不含凭据和路径的来源,例如 `http://proxy.example.com:8080`。网络工具忽略 `HTTP_PROXY`、`HTTPS_PROXY` 等变量 |
|
|
122
|
+
| `tools.web_egress.proxy_dns` | `local` | 字符串;`local` 或 `remote`。设置代理后,`local` 在本机解析主机名,只连接检查过的公网地址;`remote` 把主机名交给代理,由代理决定最终地址。未设置 `proxy_url` 时不起作用。参阅[使用 fake-IP 代理](../guides/configuration/web-tools.md#使用-fake-ip-代理) |
|
|
123
|
+
|
|
124
|
+
这些值中的主机名可以包含下划线。
|
|
125
|
+
|
|
126
|
+
### 上下文与轨迹分析
|
|
127
|
+
|
|
128
|
+
以下设置没有对应环境变量。
|
|
129
|
+
|
|
130
|
+
| YAML 键 | 默认值 | 类型、取值与效果 |
|
|
131
|
+
| --- | --- | --- |
|
|
132
|
+
| `context.warn_threshold_pct` | `0.5` | 数值;范围 `0`–`1`,表示上下文窗口的占用比例。用量达到阈值时向智能体提示一次上下文用量较高,回落到阈值以下后再次达到才会再提示;默认阈值为 50%;不改变自动压缩的触发条件 |
|
|
133
|
+
| `trajectory.verify_commands` | 内置常见测试、检查命令列表 | 字符串;轨迹分析用来识别验证操作的命令词,以逗号分隔,例如 `"pytest,ruff,npm test"`。自定义值替换整份列表;只影响分析归类,不执行这些命令 |
|
|
134
|
+
|
|
135
|
+
### 通知
|
|
136
|
+
|
|
137
|
+
以下键均为布尔值,默认均为 `true`,没有对应环境变量,用于 TUI 的事件通知。
|
|
138
|
+
|
|
139
|
+
| YAML 键 | 效果 |
|
|
140
|
+
| --- | --- |
|
|
141
|
+
| `notifications.enabled` | 事件通知总开关 |
|
|
142
|
+
| `notifications.delivery.desktop` | 发送桌面弹窗 |
|
|
143
|
+
| `notifications.delivery.sound` | 播放声音 |
|
|
144
|
+
| `notifications.suppress_when_focused` | iCode 获得焦点时暂停通知 |
|
|
145
|
+
| `notifications.events.approval_required` | 需要审批时通知 |
|
|
146
|
+
| `notifications.events.ask_user` | 智能体需要输入时通知 |
|
|
147
|
+
| `notifications.events.turn_complete` | 智能体完成任务时通知 |
|
|
148
|
+
| `notifications.events.turn_error` | 智能体出错时通知 |
|
|
149
|
+
|
|
150
|
+
发送通知需要总开关、对应事件开关和至少一种发送方式开启,且未因获得焦点而暂停。关闭总开关不会清除其他选择。
|
|
151
|
+
|
|
152
|
+
### 诊断与遥测
|
|
153
|
+
|
|
154
|
+
**原始 HTTP 日志可能包含明文 API 密钥、完整提示词和模型回复。** 仅在明确数据去向和访问权限后启用,排查结束后关闭不再需要的诊断选项并重启 iCode。
|
|
155
|
+
|
|
156
|
+
| YAML 键 | 环境变量 | 默认值 | 类型、取值与效果 |
|
|
157
|
+
| --- | --- | --- | --- |
|
|
158
|
+
| `log.raw_http_capture` | `CHRYS_DEBUG_LLM_RAW_HTTP_LOG` | `false` | 布尔值;将模型原始 HTTP 请求和响应写入当前会话目录的 `llm_raw_http.jsonl` |
|
|
159
|
+
| `otel.enabled` | `CHRYS_OTEL` | `false` | 布尔值;启用 OpenTelemetry 导出 |
|
|
160
|
+
| `otel.endpoint` | `CHRYS_OTEL_ENDPOINT` | 未指定 | 字符串;遥测收集器端点。未配置任何端点时仅在本地保存追踪和日志;标准 OTLP 端点环境变量优先于此设置。配置端点后停止本地保存,发送失败时不回退 |
|
|
161
|
+
| `otel.sensitive_data` | `CHRYS_OTEL_SENSITIVE_DATA` | `false` | 布尔值;额外记录提示词、模型回复、工具参数和工具结果,可能包含私密信息;仅在明确数据去向和访问权限后启用 |
|
|
162
|
+
|
|
163
|
+
数据保存位置、收集器连接、认证和指标查询见 [OpenTelemetry 参考](./opentelemetry.md)。
|
|
164
|
+
|
|
165
|
+
## 来源优先级
|
|
166
|
+
|
|
167
|
+
每个键独立按以下优先级取值,使用靠前的有效值。项目设置还必须符合[项目级设置](#项目级设置)的限制。
|
|
168
|
+
|
|
169
|
+
| 优先级 | 来源 |
|
|
170
|
+
| --- | --- |
|
|
171
|
+
| 1 | 当前会话中的明确选择、命令行参数或入口固定行为 |
|
|
172
|
+
| 2 | 启动进程时已有的环境变量 |
|
|
173
|
+
| 3 | 旧版用户 `.env` 中尚未迁移的设置(macOS / Linux:`~/.chrys/.env`;Windows:`%APPDATA%\chrys\.env`) |
|
|
174
|
+
| 4 | 已启用且允许应用的项目设置 |
|
|
175
|
+
| 5 | 用户设置 |
|
|
176
|
+
| 6 | 内置默认值 |
|
|
177
|
+
|
|
178
|
+
启动时,iCode 会尝试将旧版用户 `.env` 中的 iCode 设置迁入用户 `settings.yaml`,并清理已迁移的设置行。合并时 `settings.yaml` 中已有的同名键优先保留,不会被覆盖;尚未完成迁移的设置行仍按上表第 3 级来源生效。迁移失败时会提示,并在下次启动时重试。模型服务的 API 密钥等环境变量保留在 `.env` 中。
|
|
179
|
+
|
|
180
|
+
工作目录 `.env` 中的 iCode 设置不生效。项目设置应写入 `.chrys/settings.yaml`。
|
|
181
|
+
|
|
182
|
+
## 值的写法与无效值
|
|
183
|
+
|
|
184
|
+
下面说明向设置文件与环境变量填值的通用规则;单个键的上下限、`null` 的含义等约束,见[设置键](#设置键)各键行的“类型、取值与效果”列。
|
|
185
|
+
|
|
186
|
+
- 布尔值在 YAML 中写 `true` 或 `false`。对应的环境变量接受 `1`、`true`、`yes`、`on` 和 `0`、`false`、`no`、`off`,不区分大小写。个别环境变量的含义与名称相反或只接受特定拼写,已在对应键行注明。
|
|
187
|
+
- 整数直接写数字。标明上下限的键,超界值会被调整到边界;明确禁止负数的键会拒绝负值。`0` 或负数的特殊含义(禁用、取消限制等)以各键行说明为准。
|
|
188
|
+
- 未填写的键和空字符串通常不提供覆盖。要撤销某个文件中的设置,删除该键;删除后仍可能使用其他来源的值(见[来源优先级](#来源优先级))。
|
|
189
|
+
- 类型列为“整数或 `null`”的键可写 `null`,其含义已在对应键行说明;用户设置与项目文件对 `null` 的处理不同,见[项目级设置](#项目级设置)。
|
|
190
|
+
- 未知键会被报告且不生效。多数无效值会被忽略并报告,取值继续向较低优先级查找——例如,环境变量中的值无效而用户设置中已有有效值时,使用用户设置的值。`approval.default_mode`、`tools.result.ceiling_tokens`、`log.raw_http_capture`、`otel.sensitive_data`、`mutations.trace.fsatrace_path` 五个键不同:一旦在查找中遇到无效值,就直接采用内置默认值并停止查找,不回退到较低优先级。例如,无法识别的审批模式会采用默认值 `manual`。
|
|
191
|
+
|
|
192
|
+
## 项目级设置
|
|
193
|
+
|
|
194
|
+
项目设置默认不加载。先在用户 `settings.yaml` 中启用,或在 TUI 的“设置 → 安全”中打开“加载项目设置”:
|
|
195
|
+
|
|
196
|
+
```yaml
|
|
197
|
+
project:
|
|
198
|
+
config_enabled: true
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
启用后适用于所打开的工作目录。项目文件只能配置下表中的键。
|
|
202
|
+
|
|
203
|
+
有覆盖方向限制的键只接受表中“允许的覆盖方向”内的项目值,比较时以用户 YAML 中的值为基准;用户未设置时以内置默认值为基准。`llm.retry.max_transient` 在用户未设置或设为 `null` 时,按当前启动入口的默认值比较。没有方向限制的键直接采用项目值。环境变量不参与比较,但仍优先于项目设置。项目文件写入 `null` 不提供覆盖。
|
|
204
|
+
|
|
205
|
+
| 项目可配置的键 | 允许的覆盖方向 |
|
|
206
|
+
| --- | --- |
|
|
207
|
+
| `llm.retry.max_transient` | 只能减少或保持重试次数 |
|
|
208
|
+
| `tools.result.ceiling_tokens` | 只能降低或保持结果长度上限;`0` 表示无限制,是最宽松的值,仅当用户设置本身就是 `0` 时项目才能写 `0` |
|
|
209
|
+
| `session.title.auto` | 可以关闭;不能重新开启用户已关闭的自动标题 |
|
|
210
|
+
| `mutations.parallel_implicit_tools` | 可以关闭;不能重新开启用户已关闭的并行执行 |
|
|
211
|
+
| `mutations.coordination.enabled` | 可以开启;不能关闭用户已开启的跨会话改动区分 |
|
|
212
|
+
| `workspace.change_notice.enabled` | 可以开启;不能关闭用户已开启的变更通知 |
|
|
213
|
+
| `workspace.change_notice.max_entries` | 可在 `1`–`100` 范围内覆盖 |
|
|
214
|
+
| `context.warn_threshold_pct` | 可在 `0`–`1` 范围内覆盖 |
|
|
215
|
+
| `trajectory.verify_commands` | 可替换验证命令列表 |
|
|
216
|
+
|
|
217
|
+
网络工具相关的键(`tools.web_search.*`、`tools.web_fetch.*` 和 `tools.web_egress.*`)不在此表中,因此项目无法开启网络搜索,也无法扩大网络工具可连接的范围。
|
|
218
|
+
|
|
219
|
+
例如,在工作目录的 `.chrys/settings.yaml` 中写入:
|
|
220
|
+
|
|
221
|
+
```yaml
|
|
222
|
+
llm:
|
|
223
|
+
retry:
|
|
224
|
+
max_transient: 3
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
启用项目设置并重新启动后,若用户未设置重试次数,则使用项目的 `3` 次;若用户 YAML 已设为 `1`,项目中的 `3` 会被拒绝,仍使用 `1`。启动环境中的有效值始终优先。
|
|
228
|
+
|
|
229
|
+
iCode 会提示并忽略项目中不允许的键、超出覆盖限制的值和未知键,继续应用其他有效设置。
|
|
230
|
+
|
|
231
|
+
## 启动入口的差异
|
|
232
|
+
|
|
233
|
+
| 入口 | 与设置文件有关的行为 |
|
|
234
|
+
| --- | --- |
|
|
235
|
+
| `icode`(TUI) | 使用界面、输入、通知设置;默认智能体取自 `agent.default_profile` |
|
|
236
|
+
| `icode run` | 固定跳过审批,不等待用户回答;默认审批模式和提问超时设置不改变这些行为 |
|
|
237
|
+
| `icode acp` | 智能体客户端协议(Agent Client Protocol,ACP)服务;初始智能体和审批模式由 `--agent`、`--approval` 决定,默认分别为 `Code`、`manual`;提问默认无限等待,由 `--ask-user-timeout` 指定超时 |
|
|
238
|
+
| `icode serve` | 在浏览器中承载 TUI;配置文件和环境变量来自运行 iCode 服务的机器 |
|
|
239
|
+
|
|
240
|
+
## 设置未生效时
|
|
241
|
+
|
|
242
|
+
1. 确认设置文件的位置正确,保存后已重新启动 iCode。
|
|
243
|
+
2. 检查是否存在更高优先级的来源;删除 YAML 中的键不会清除其他来源的值。
|
|
244
|
+
3. 对项目设置,确认用户已启用加载,且键名和覆盖方向符合限制。
|
|
245
|
+
4. 查看 iCode 启动时报告的消息:无效值或未知键的处理规则见[值的写法与无效值](#值的写法与无效值);目录相关提示对照[文件位置与格式](#文件位置与格式)检查。
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# 主题文件参考
|
|
2
|
+
|
|
3
|
+
iCode 支持通过主题文件自定义终端用户界面(Terminal User Interface,TUI)的外观。本页介绍主题文件的格式、常用配色字段和加载规则。通过界面修改并保存主题,请参阅[自定义主题](../guides/configuration/themes.md)。
|
|
4
|
+
|
|
5
|
+
## 文件位置与命名
|
|
6
|
+
|
|
7
|
+
主题文件保存在以下目录中;目录不存在时先创建。
|
|
8
|
+
|
|
9
|
+
| 平台 | 目录 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| macOS / Linux | `~/.chrys/themes/` |
|
|
12
|
+
| Windows | `%APPDATA%\chrys\themes\` |
|
|
13
|
+
|
|
14
|
+
主题文件使用 UTF-8 编码,扩展名必须为 `.yaml` 或 `.yml`,直接存放在上述目录中。iCode 不读取子目录中的主题文件。
|
|
15
|
+
|
|
16
|
+
主题名称为文件名去除 `.yaml` 或 `.yml` 扩展名后的部分。主题名称须满足以下要求:
|
|
17
|
+
|
|
18
|
+
* 以英文字母或数字开头,只使用英文字母、数字、点、下划线和连字符。
|
|
19
|
+
* 不能与内置主题重名,比较时不区分大小写。内置主题名称包括 `chrys`、`chrys-legacy`、`chrys-ansi`、主题列表中的 Textual 主题(如 `nord`、`textual-dark`),以及已停用的名称 `chrys-dark`。
|
|
20
|
+
* 不能以 `.yaml` 或 `.yml` 结尾,比较时不区分大小写,例如不能使用 `my-theme.yaml.yaml`。
|
|
21
|
+
|
|
22
|
+
`.yaml` 和 `.yml` 文件名称相同时,优先使用 `.yaml`;如果 `.yaml` 文件无效,仍会尝试使用 `.yml`。同名主题只保留一个。
|
|
23
|
+
|
|
24
|
+
新增或修改主题文件后,重启 iCode 加载,再按 **F9** 在主题列表中选择对应主题即可应用。
|
|
25
|
+
|
|
26
|
+
## 文件格式
|
|
27
|
+
|
|
28
|
+
以下是自定义深色主题 `icode-ocean.yaml` 的示例:
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
# 整体配色
|
|
32
|
+
primary: "#5c9ded"
|
|
33
|
+
secondary: "#7aa2c7"
|
|
34
|
+
accent: "#70c1b3"
|
|
35
|
+
warning: "#e5b567"
|
|
36
|
+
error: "#e57373"
|
|
37
|
+
success: "#81c784"
|
|
38
|
+
dark: true
|
|
39
|
+
background: "#18212b"
|
|
40
|
+
foreground: "#e6edf3"
|
|
41
|
+
surface: "#202c38"
|
|
42
|
+
panel: "#263442"
|
|
43
|
+
|
|
44
|
+
# 指定区域的配色
|
|
45
|
+
variables:
|
|
46
|
+
footer-background: "#18212b"
|
|
47
|
+
footer-foreground: "#e6edf3"
|
|
48
|
+
input-selection-background: "#5c9ded 35%"
|
|
49
|
+
markdown-block-background: "#202c38"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`primary` 是唯一必填字段,其余字段均可按需设置。未指定的颜色由 iCode 自动补齐,具体规则见[默认配色规则](#默认配色规则)。
|
|
53
|
+
|
|
54
|
+
## 配置字段
|
|
55
|
+
|
|
56
|
+
主题文件由两部分组成:
|
|
57
|
+
|
|
58
|
+
* **顶层字段**:设置主题的整体配色。
|
|
59
|
+
* **`variables`**:设置特定界面区域的颜色和样式。
|
|
60
|
+
|
|
61
|
+
`variables` 必须是字符串到字符串的映射。顶层未知字段会导致该主题被跳过。
|
|
62
|
+
|
|
63
|
+
### 整体配色
|
|
64
|
+
|
|
65
|
+
以下字段设置主题的基础颜色。
|
|
66
|
+
|
|
67
|
+
| 配置目标 | 字段 | 说明 |
|
|
68
|
+
| --- | --- | --- |
|
|
69
|
+
| 主色 | `primary` | 主题的主要标识色,用于标题和强调背景 |
|
|
70
|
+
| 次要强调色 | `secondary` | 用于与主色区分的元素 |
|
|
71
|
+
| 点缀色 | `accent` | 用于少量需引起注意的元素,通常与 `primary`、`secondary` 形成对比 |
|
|
72
|
+
| 状态色 | `warning`、`error`、`success` | 分别用于警告、错误和成功状态的背景、边框及文字 |
|
|
73
|
+
| 整体背景 | `background` | 未被控件覆盖区域的默认背景色 |
|
|
74
|
+
| 默认文字颜色 | `foreground` | 应在 `background`、`surface` 和 `panel` 三种背景上均清晰可读 |
|
|
75
|
+
| 控件背景 | `surface` | 控件的默认背景色,通常用于位于整体背景之上的控件 |
|
|
76
|
+
| 区域区分色 | `panel` | 用于在视觉上区分界面中的某个区域与主要内容 |
|
|
77
|
+
| 深色或浅色模式 | `dark` | `true` 为深色,`false` 为浅色;影响未填写的背景色和自动配色 |
|
|
78
|
+
| ANSI 配色模式 | `ansi` | 默认为 `false`。设为 `true` 时启用终端 ANSI 配色模式,支持使用 `ansi_red`、`ansi_default` 等颜色值;实际 ANSI 颜色由终端配色决定。此模式忽略顶层 `surface` 和 `panel` 的设置,两者均使用透明色 |
|
|
79
|
+
|
|
80
|
+
颜色字段必须是字符串。十六进制值需要加引号,例如 `"#5c9ded"`;也可以使用 `"rgb(92, 157, 237)"` 或 `"red"` 等颜色表示方式。
|
|
81
|
+
|
|
82
|
+
顶层颜色字段可用 `"rgba(92, 157, 237, 0.35)"` 表示 35% 不透明度,不支持 `"#5c9ded 35%"` 这种百分比后缀写法。
|
|
83
|
+
|
|
84
|
+
字段不能留空或设置为 `null`。不需要配置时直接省略。
|
|
85
|
+
|
|
86
|
+
### 按钮、底栏、选区和光标
|
|
87
|
+
|
|
88
|
+
以下字段配置在 `variables` 下,仅影响对应的界面元素。`variables` 下的颜色值支持百分比后缀,例如 `input-selection-background: "#5c9ded 35%"` 表示以 35% 不透明度混合该颜色。百分比混色适用于 RGB 颜色;`ansi_*` 颜色忽略不透明度。
|
|
89
|
+
|
|
90
|
+
| 配置目标 | 字段 |
|
|
91
|
+
| ---------- | --------------------------------------------------- |
|
|
92
|
+
| 按钮文字 | `button-flat-foreground` |
|
|
93
|
+
| 按钮悬停文字、背景 | `button-hover-foreground`、`button-hover-background` |
|
|
94
|
+
| 按钮禁用文字、背景 | `button-disabled-foreground`、`button-disabled-background` |
|
|
95
|
+
| 底栏背景、文字 | `footer-background`、`footer-foreground` |
|
|
96
|
+
| 底栏快捷键背景、文字 | `footer-key-background`、`footer-key-foreground` |
|
|
97
|
+
| 输入选区背景 | `input-selection-background` |
|
|
98
|
+
| 块状光标背景、文字 | `block-cursor-background`、`block-cursor-foreground` |
|
|
99
|
+
| 块状光标文字样式 | `block-cursor-text-style` |
|
|
100
|
+
|
|
101
|
+
未设置的按钮颜色使用主题默认配色。
|
|
102
|
+
|
|
103
|
+
`block-cursor-text-style` 接受 Textual 文字样式,例如 `"bold"`(默认,粗体)、`"italic"`、`"underline"`、`"reverse"` 或 `"none"`(不附加文字样式)。
|
|
104
|
+
|
|
105
|
+
### 边框、控件和内容区域
|
|
106
|
+
|
|
107
|
+
以下字段同样配置在 `variables` 下。未设置的字段使用下表中的默认配色。
|
|
108
|
+
|
|
109
|
+
| 字段 | 未填写时的颜色 | 影响的界面元素 |
|
|
110
|
+
| --- | --- | --- |
|
|
111
|
+
| `border-color` | 各区域原有的配色 | 统一普通界面边框;消息、警告和错误状态边框仍保留各自颜色,按钮边框仍跟随按钮背景 |
|
|
112
|
+
| `tool-group-title-color` | `warning` | 工具调用组标题 |
|
|
113
|
+
| `control-background`、`control-background-muted` | `surface` | 控件的背景及弱化背景 |
|
|
114
|
+
| `control-disabled-background` | `background` | 禁用控件背景 |
|
|
115
|
+
| `control-foreground-muted` | `text-disabled` | 控件的弱化文字 |
|
|
116
|
+
| `overlay-background` | `panel` | 鼠标悬停提示和界面通知的背景 |
|
|
117
|
+
| `markdown-block-background` | `surface` | Markdown 引用块和围栏代码块的背景 |
|
|
118
|
+
| `hatch-color` | `foreground` 的 15% 不透明度混合色 | 空状态区域的斜线纹理 |
|
|
119
|
+
|
|
120
|
+
滚动条可通过 `scrollbar`、`scrollbar-hover`、`scrollbar-active` 配置普通、悬停和拖动状态的颜色。`scrollbar-background` 同时决定这三种状态的轨道背景;已有的 `scrollbar-background-hover` 和 `scrollbar-background-active` 可分别覆盖对应状态。
|
|
121
|
+
|
|
122
|
+
## 默认配色规则
|
|
123
|
+
|
|
124
|
+
非 ANSI 主题中,未指定的字段使用以下默认值,或根据其他颜色自动计算。ANSI 模式使用终端配色,不应按下表推断最终显示颜色。
|
|
125
|
+
|
|
126
|
+
| 未填写的字段 | 使用的值 |
|
|
127
|
+
| --- | --- |
|
|
128
|
+
| `dark` | `true`,即深色模式 |
|
|
129
|
+
| `secondary`、`accent`、`warning` | 与 `primary` 相同 |
|
|
130
|
+
| `error`、`success` | 与 `secondary` 相同 |
|
|
131
|
+
| `background` | 深色模式为 `#121212`;浅色模式为 `#efefef` |
|
|
132
|
+
| `foreground` | 背景色的反色 |
|
|
133
|
+
| `surface` | 深色模式为 `#1e1e1e`;浅色模式为 `#f5f5f5` |
|
|
134
|
+
| `panel` | 根据 `surface`、`primary` 和深浅色模式混合生成 |
|
|
135
|
+
|
|
136
|
+
以下可选字段位于文件顶层,用于调整自动生成的配色。
|
|
137
|
+
|
|
138
|
+
| 字段 | 默认行为 | 可调整的内容 |
|
|
139
|
+
| --- | --- | --- |
|
|
140
|
+
| `luminosity_spread` | 默认 `0.15` | 控制从基础颜色生成明暗色阶时的变化幅度;填写有限数值,不接受 `.nan` 或 `.inf` |
|
|
141
|
+
| `boost` | 深色模式且未填写 `panel` 时,在自动生成的面板颜色上叠加与背景对比的黑色或白色,不透明度为 4% | 填写颜色字符串。深色模式且未填写 `panel` 时替代该叠加色,调整自动生成的面板亮度,并作为 `block-hover-background` 的默认值(该颜色的 10% 不透明度);浅色模式或已填写 `panel` 时不生效 |
|
|
142
|
+
|
|
143
|
+
顶层还接受 `text_alpha` 字段,须填写有限数值,但目前不会改变显示颜色。
|
|
144
|
+
|
|
145
|
+
## 加载失败
|
|
146
|
+
|
|
147
|
+
加载时发现 YAML 格式错误、缺少 `primary`、未知顶层字段或无效字段值时,iCode 会显示警告并跳过该文件。根据警告检查对应文件,修正后重启加载;其他有效主题仍可使用。
|
|
148
|
+
|
|
149
|
+
主题通过加载后,如果应用时发现 `variables` 值无法用于对应的界面样式,iCode 会显示警告并回退到默认主题 `chrys`。回退不会覆盖已保存的主题选择,修正文件后可重启重试。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 工具类别和名称
|
|
2
|
+
|
|
3
|
+
iCode 使用工具类别(`tool_kind`)对用途或来源相近的工具进行分组,使用工具名称(`tool_name`)标识具体工具。同一类别可以包含多个工具,例如 `filesystem.write` 类别包含 `write_file` 和 `edit_file`。
|
|
4
|
+
|
|
5
|
+
在终端用户界面(Terminal User Interface,TUI)的输入栏中输入 `/runtime`,或点击输入栏上方状态栏右端显示的工具数量,打开“运行时详情”窗口。“工具”标签页列出按类别分组的内置工具和子智能体工具,“MCP”标签页列出按服务器分组的 MCP 工具名称。Skill 工具和上下文工具不会在该窗口中列出。智能体只能调用当前已加载的工具。
|
|
6
|
+
|
|
7
|
+
## 类别和名称概览
|
|
8
|
+
|
|
9
|
+
“内置”表示该类别可以通过智能体配置的 `tools.builtins` 字段启用。
|
|
10
|
+
|
|
11
|
+
| 工具类别 | 内置 | 用途或来源 | 工具名称 |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| `shell` | 是 | 执行 Shell 命令 | 当前 Shell 的名称;Windows 上检测到 Git Bash 时还包括 `git_bash`,ACP 会话中还包括 `list_workspace_dirs` |
|
|
14
|
+
| `filesystem.read` | 是 | 读取文件和查看图像 | `read_file`、`view_image` |
|
|
15
|
+
| `filesystem.write` | 是 | 创建、覆写和编辑文件 | `write_file`、`edit_file` |
|
|
16
|
+
| `search` | 是 | 搜索文件内容和文件名 | `grep`、`glob` |
|
|
17
|
+
| `web_search` | 是 | 在网络上搜索链接和摘要 | `web_search` |
|
|
18
|
+
| `web_fetch` | 是 | 按 URL 读取网页内容 | `web_fetch` |
|
|
19
|
+
| `ask_user` | 是 | 在任务中询问用户 | `ask_user` |
|
|
20
|
+
| `sleep` | 是 | 等待 | `sleep` |
|
|
21
|
+
| `doc_converter` | 是 | 转换 PDF 和 Office 文档 | `convert_document` |
|
|
22
|
+
| `todo` | 是 | 维护待办事项 | `todo_write` |
|
|
23
|
+
| `sub_agent` | 否 | 调用子智能体 | 由智能体配置决定 |
|
|
24
|
+
| `mcp` | 否 | MCP 服务器工具和按需加载控制工具 | 由 MCP 服务器及其配置决定 |
|
|
25
|
+
| `skill` | 否 | 加载 Skill、读取资源和运行脚本 | `load_skill`、`read_skill_resource`、`run_skill_script` |
|
|
26
|
+
| `context` | 否 | 压缩和查询对话上下文 | `compress_context`、`recall_context`、`list_compressed_contexts` |
|
|
27
|
+
|
|
28
|
+
具体工具是否可用还取决于当前智能体、模型能力和运行方式。例如,`view_image` 只会提供给支持图片输入的模型,无界面命令行模式 `icode run` 不提供 `ask_user`。
|
|
29
|
+
|
|
30
|
+
iCode 自带的智能体都没有启用 `web_search` 和 `web_fetch`。智能体包含这两个工具时,如果某个工具的模式为 `off`,或模型提供方运行同名的网络工具,对应的本地工具不会提供。参阅[配置网络工具](../guides/configuration/web-tools.md)。
|
|
31
|
+
|
|
32
|
+
## Shell 工具名称
|
|
33
|
+
|
|
34
|
+
`shell` 类别中的主要工具使用当前 Shell 的名称,例如 `zsh`、`bash`、`pwsh`、`powershell` 或 `cmd`。在 Windows 上检测到 Git Bash 时,iCode 还会在主要 Shell 工具之外提供 `git_bash` 工具。实际名称取决于操作系统和 iCode 检测到的 Shell。
|
|
35
|
+
|
|
36
|
+
ACP 会话还会提供 `list_workspace_dirs`,用于列出主工作目录和 ACP 客户端提供的其他工作目录。
|
|
37
|
+
|
|
38
|
+
## 子智能体工具名称
|
|
39
|
+
|
|
40
|
+
`sub_agent` 类别中,每个工具对应一个可调用的子智能体。工具名称由智能体配置中的 [`sub_agents.agents[].tool_name`](./agent-profile.md#sub_agents) 决定;省略该字段时,默认使用子智能体的配置名称。
|
|
41
|
+
|
|
42
|
+
显式设置的 `tool_name` 必须以字母或下划线开头,之后只能包含字母、数字或下划线。省略 `tool_name` 时直接使用配置名称,因此工具名称可能包含连字符或以数字开头。同一父智能体内的工具名称不能重复。
|
|
43
|
+
|
|
44
|
+
## MCP 工具名称
|
|
45
|
+
|
|
46
|
+
`mcp` 类别包含 MCP 服务器提供的工具。iCode 会先将工具名称中除英文字母、数字、下划线和连字符以外的字符替换为连字符。未设置 `tool_name_prefix` 时,直接使用处理后的名称。
|
|
47
|
+
|
|
48
|
+
设置 `tool_name_prefix` 后,iCode 还会移除处理后名称开头的下划线和连字符,再按 `<前缀>_<工具名称>` 拼接;名称被移除为空时,只使用前缀。例如,服务器提供 `search` 或 `_search`,前缀为 `github` 时,最终名称均为 `github_search`。
|
|
49
|
+
|
|
50
|
+
配置 `approval.overrides` 或 Hooks 的 `match.tool_name` 时,应**以“运行时详情”窗口的“MCP”标签页中显示的实际工具名称为准**。
|
|
51
|
+
|
|
52
|
+
启用按需加载时,iCode 还会提供三个控制工具:
|
|
53
|
+
|
|
54
|
+
- `<前缀>_list_mcp_tools`
|
|
55
|
+
- `<前缀>_load_tool`
|
|
56
|
+
- `<前缀>_unload_tool`
|
|
57
|
+
|
|
58
|
+
未配置 `tool_name_prefix` 时,控制工具以 `mcp_` 加 MCP 服务器名称作为前缀,其中英文字母和数字以外的每个字符都会编码为 `-<十六进制码>-`,例如服务器 `my-server` 对应 `mcp_my-2d-server_list_mcp_tools`;服务器名称过长时会被截短并以哈希值结尾。控制工具不会显示在“运行时详情”窗口的“MCP”标签页中。
|