@armadra/agent 0.5.1 → 0.6.1
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.
- package/CHANGELOG.md +203 -304
- package/CHANGELOG.zh-CN.md +462 -0
- package/README.md +408 -364
- package/README.zh-CN.md +705 -0
- package/dist/agent/session-plan.js +2 -2
- package/dist/agent/session-state.d.ts +3 -0
- package/dist/agent/session-state.js +20 -0
- package/dist/agent/session-subagent.d.ts +15 -1
- package/dist/agent/session-subagent.js +26 -3
- package/dist/agent/session-telemetry.d.ts +16 -2
- package/dist/agent/session-telemetry.js +29 -7
- package/dist/agent/session-tools.js +5 -2
- package/dist/agent/session-trace-writer.d.ts +27 -0
- package/dist/agent/session-trace-writer.js +253 -0
- package/dist/agent/session.d.ts +2 -0
- package/dist/agent/session.js +12 -0
- package/dist/agent/subagent-direct.d.ts +20 -0
- package/dist/agent/subagent-direct.js +76 -0
- package/dist/agent/subagent-registry.d.ts +8 -1
- package/dist/agent/subagent-registry.js +28 -1
- package/dist/agent/system-prompt.d.ts +3 -1
- package/dist/agent/system-prompt.js +3 -0
- package/dist/agent/tool-runner.d.ts +2 -1
- package/dist/agent/tool-runner.js +5 -4
- package/dist/agent/types-w6.d.ts +39 -0
- package/dist/agent/types-w6.js +4 -0
- package/dist/agent/types.d.ts +5 -2
- package/dist/agents/external.js +1 -1
- package/dist/agents/task-record.d.ts +74 -1
- package/dist/agents/task-record.js +100 -0
- package/dist/ai/apis/cache-params.js +2 -1
- package/dist/ai/apis/chatgpt-backend.d.ts +52 -0
- package/dist/ai/apis/chatgpt-backend.js +224 -0
- package/dist/ai/apis/chatgpt-rate-limits.d.ts +26 -0
- package/dist/ai/apis/chatgpt-rate-limits.js +91 -0
- package/dist/ai/apis/openai-responses-request.d.ts +2 -1
- package/dist/ai/apis/openai-responses-request.js +8 -2
- package/dist/ai/apis/openai-responses.d.ts +2 -0
- package/dist/ai/apis/openai-responses.js +51 -16
- package/dist/ai/overflow.d.ts +1 -1
- package/dist/ai/overflow.js +10 -7
- package/dist/ai/providers/auth.d.ts +15 -2
- package/dist/ai/providers/auth.js +69 -2
- package/dist/ai/providers/builtin.js +27 -0
- package/dist/ai/providers/catalog-data.js +1 -0
- package/dist/ai/providers/discovered-cache.d.ts +48 -0
- package/dist/ai/providers/discovered-cache.js +102 -0
- package/dist/ai/providers/enrich.js +2 -7
- package/dist/ai/providers/model-visibility.d.ts +33 -0
- package/dist/ai/providers/model-visibility.js +70 -0
- package/dist/ai/providers/models-dev-cache.js +15 -19
- package/dist/ai/providers/models-dev-snapshot.js +8 -7
- package/dist/ai/providers/models-dev.js +5 -15
- package/dist/ai/providers/registry.d.ts +2 -0
- package/dist/ai/providers/registry.js +6 -1
- package/dist/ai/providers/suggest.js +2 -16
- package/dist/ai/types.d.ts +27 -1
- package/dist/auth/chatgpt/backend-client.d.ts +26 -0
- package/dist/auth/chatgpt/backend-client.js +74 -0
- package/dist/auth/chatgpt/claims.d.ts +17 -0
- package/dist/auth/chatgpt/claims.js +46 -0
- package/dist/auth/chatgpt/cli.d.ts +35 -0
- package/dist/auth/chatgpt/cli.js +279 -0
- package/dist/auth/chatgpt/doctor.d.ts +17 -0
- package/dist/auth/chatgpt/doctor.js +36 -0
- package/dist/auth/chatgpt/host-id.d.ts +7 -0
- package/dist/auth/chatgpt/host-id.js +26 -0
- package/dist/auth/chatgpt/login.d.ts +30 -0
- package/dist/auth/chatgpt/login.js +130 -0
- package/dist/auth/chatgpt/presets.d.ts +66 -0
- package/dist/auth/chatgpt/presets.js +120 -0
- package/dist/auth/chatgpt/quota-text.d.ts +13 -0
- package/dist/auth/chatgpt/quota-text.js +36 -0
- package/dist/auth/oauth/browser.d.ts +12 -0
- package/dist/auth/oauth/browser.js +27 -0
- package/dist/auth/oauth/callback-server.d.ts +47 -0
- package/dist/auth/oauth/callback-server.js +147 -0
- package/dist/auth/oauth/flows.d.ts +62 -0
- package/dist/auth/oauth/flows.js +113 -0
- package/dist/auth/oauth/jwt.d.ts +24 -0
- package/dist/auth/oauth/jwt.js +81 -0
- package/dist/auth/oauth/live.d.ts +21 -0
- package/dist/auth/oauth/live.js +25 -0
- package/dist/auth/oauth/oidc.d.ts +26 -0
- package/dist/auth/oauth/oidc.js +72 -0
- package/dist/auth/oauth/pkce.d.ts +15 -0
- package/dist/auth/oauth/pkce.js +20 -0
- package/dist/auth/oauth/refresh.d.ts +35 -0
- package/dist/auth/oauth/refresh.js +129 -0
- package/dist/auth/oauth/token-client.d.ts +33 -0
- package/dist/auth/oauth/token-client.js +121 -0
- package/dist/auth/oauth/token-store.d.ts +23 -0
- package/dist/auth/oauth/token-store.js +125 -0
- package/dist/auth/testing/fake-oauth.d.ts +73 -0
- package/dist/auth/testing/fake-oauth.js +271 -0
- package/dist/auth/testing/refresh-child.d.ts +5 -0
- package/dist/auth/testing/refresh-child.js +16 -0
- package/dist/bundle/ama.cjs +26532 -11045
- package/dist/checkpoints/backend.js +6 -5
- package/dist/checkpoints/restore.js +3 -2
- package/dist/checkpoints/settings.js +2 -1
- package/dist/checkpoints/shadow-git.js +7 -6
- package/dist/checkpoints/shadow-restore.js +3 -2
- package/dist/checkpoints/tracker.js +4 -3
- package/dist/cli/args.d.ts +9 -2
- package/dist/cli/args.js +74 -27
- package/dist/cli/bootstrap.js +53 -31
- package/dist/cli/choice-prompt.js +8 -6
- package/dist/cli/codemode-notice.js +2 -2
- package/dist/cli/compose-agents.js +2 -1
- package/dist/cli/compose-extensions.js +2 -0
- package/dist/cli/compose-memory.d.ts +53 -0
- package/dist/cli/compose-memory.js +127 -0
- package/dist/cli/compose-providers.d.ts +6 -0
- package/dist/cli/compose-providers.js +38 -2
- package/dist/cli/compose-session.d.ts +5 -0
- package/dist/cli/compose-session.js +27 -13
- package/dist/cli/compose-store.d.ts +2 -0
- package/dist/cli/compose-store.js +9 -5
- package/dist/cli/compose.d.ts +2 -0
- package/dist/cli/compose.js +13 -5
- package/dist/cli/default-model.d.ts +0 -2
- package/dist/cli/default-model.js +5 -8
- package/dist/cli/deps.d.ts +5 -1
- package/dist/cli/exit-codes.d.ts +1 -1
- package/dist/cli/exit-codes.js +7 -16
- package/dist/cli/from-prompt.js +3 -2
- package/dist/cli/help-text.d.ts +2 -1
- package/dist/cli/help-text.js +5 -99
- package/dist/cli/main.d.ts +5 -0
- package/dist/cli/main.js +21 -2
- package/dist/cli/proxy.js +14 -9
- package/dist/cli/runtime.d.ts +5 -0
- package/dist/cli/startup-screen.js +20 -27
- package/dist/cli/startup-steps.js +6 -8
- package/dist/cli/subcommands/auth.d.ts +6 -3
- package/dist/cli/subcommands/auth.js +52 -22
- package/dist/cli/subcommands/config-set.d.ts +21 -0
- package/dist/cli/subcommands/config-set.js +145 -0
- package/dist/cli/subcommands/config.d.ts +2 -1
- package/dist/cli/subcommands/config.js +51 -37
- package/dist/cli/subcommands/doctor.d.ts +2 -1
- package/dist/cli/subcommands/doctor.js +97 -58
- package/dist/cli/subcommands/init.d.ts +1 -1
- package/dist/cli/subcommands/init.js +8 -7
- package/dist/cli/subcommands/memory.d.ts +18 -0
- package/dist/cli/subcommands/memory.js +189 -0
- package/dist/cli/subcommands/model-meta.js +11 -9
- package/dist/cli/subcommands/models-cache-probe.js +23 -20
- package/dist/cli/subcommands/models-discover.d.ts +4 -0
- package/dist/cli/subcommands/models-discover.js +60 -21
- package/dist/cli/subcommands/models-enable.d.ts +13 -0
- package/dist/cli/subcommands/models-enable.js +145 -0
- package/dist/cli/subcommands/models.d.ts +3 -1
- package/dist/cli/subcommands/models.js +39 -24
- package/dist/cli/subcommands/probe-runner.js +8 -7
- package/dist/cli/subcommands/providers-list.js +32 -21
- package/dist/cli/subcommands/providers-plan.js +24 -25
- package/dist/cli/subcommands/providers-probe.js +5 -6
- package/dist/cli/subcommands/providers.d.ts +1 -1
- package/dist/cli/subcommands/providers.js +45 -50
- package/dist/cli/subcommands/sessions-export.d.ts +1 -1
- package/dist/cli/subcommands/sessions-export.js +10 -9
- package/dist/cli/subcommands/sessions-search.d.ts +1 -1
- package/dist/cli/subcommands/sessions-search.js +11 -10
- package/dist/cli/subcommands/sessions-trace.d.ts +30 -0
- package/dist/cli/subcommands/sessions-trace.js +156 -0
- package/dist/cli/subcommands/sessions.d.ts +4 -3
- package/dist/cli/subcommands/sessions.js +40 -37
- package/dist/cli/subcommands/stats.d.ts +1 -1
- package/dist/cli/subcommands/stats.js +49 -30
- package/dist/cli/system-prompt-arg.js +3 -2
- package/dist/codemode/capability.js +3 -2
- package/dist/compaction/post-compact.d.ts +1 -0
- package/dist/compaction/post-compact.js +15 -1
- package/dist/compaction/prune-tier.d.ts +1 -1
- package/dist/compaction/prune-tier.js +3 -3
- package/dist/compaction/serialize.js +2 -1
- package/dist/config/auth-file.d.ts +12 -2
- package/dist/config/auth-file.js +32 -10
- package/dist/config/checker.js +12 -11
- package/dist/config/context-files.js +3 -2
- package/dist/config/edit.d.ts +106 -0
- package/dist/config/edit.js +350 -0
- package/dist/config/init.d.ts +4 -3
- package/dist/config/init.js +10 -18
- package/dist/config/json-schema.d.ts +2 -1
- package/dist/config/json-schema.js +102 -69
- package/dist/config/key-docs.d.ts +18 -7
- package/dist/config/key-docs.js +43 -128
- package/dist/config/load.js +7 -6
- package/dist/config/merge.d.ts +4 -1
- package/dist/config/merge.js +42 -22
- package/dist/config/paths.js +6 -5
- package/dist/config/profile.d.ts +5 -1
- package/dist/config/profile.js +7 -2
- package/dist/config/schema-w5.js +12 -4
- package/dist/config/schema-w6.d.ts +19 -0
- package/dist/config/schema-w6.js +115 -0
- package/dist/config/schema.js +34 -20
- package/dist/config/settings-registry.d.ts +81 -0
- package/dist/config/settings-registry.js +185 -0
- package/dist/config/types-w5.d.ts +7 -0
- package/dist/config/types-w5.js +2 -0
- package/dist/config/types-w6.d.ts +109 -0
- package/dist/config/types-w6.js +19 -0
- package/dist/config/types.d.ts +11 -8
- package/dist/config/types.js +1 -0
- package/dist/drivers/acp/client.js +1 -1
- package/dist/drivers/acp/driver.js +13 -8
- package/dist/drivers/agents.js +4 -3
- package/dist/drivers/base.js +3 -2
- package/dist/drivers/host-runners.js +2 -1
- package/dist/drivers/native/claude-stream.js +12 -11
- package/dist/drivers/native/codex-app-server.js +17 -12
- package/dist/drivers/native/oneshot.js +8 -7
- package/dist/drivers/pool.js +1 -1
- package/dist/drivers/runner.d.ts +3 -1
- package/dist/drivers/runner.js +68 -20
- package/dist/drivers/turn.js +1 -1
- package/dist/hooks/config.js +3 -2
- package/dist/hooks/protocol.js +18 -12
- package/dist/host/api-impl.js +11 -10
- package/dist/host/loader.js +9 -8
- package/dist/host/types.d.ts +3 -0
- package/dist/i18n/catalog.d.ts +2209 -0
- package/dist/i18n/catalog.js +72 -0
- package/dist/i18n/format.d.ts +21 -0
- package/dist/i18n/format.js +58 -0
- package/dist/i18n/index.d.ts +58 -0
- package/dist/i18n/index.js +72 -0
- package/dist/i18n/messages/agents.d.ts +84 -0
- package/dist/i18n/messages/agents.js +85 -0
- package/dist/i18n/messages/approval.d.ts +99 -0
- package/dist/i18n/messages/approval.js +100 -0
- package/dist/i18n/messages/auth.d.ts +189 -0
- package/dist/i18n/messages/auth.js +201 -0
- package/dist/i18n/messages/cli-args.d.ts +46 -0
- package/dist/i18n/messages/cli-args.js +46 -0
- package/dist/i18n/messages/cli-help.d.ts +12 -0
- package/dist/i18n/messages/cli-help.js +248 -0
- package/dist/i18n/messages/cli.d.ts +336 -0
- package/dist/i18n/messages/cli.js +311 -0
- package/dist/i18n/messages/config-keys.d.ts +293 -0
- package/dist/i18n/messages/config-keys.js +296 -0
- package/dist/i18n/messages/config.d.ts +508 -0
- package/dist/i18n/messages/config.js +241 -0
- package/dist/i18n/messages/drivers.d.ts +123 -0
- package/dist/i18n/messages/drivers.js +124 -0
- package/dist/i18n/messages/errors.d.ts +83 -0
- package/dist/i18n/messages/errors.js +171 -0
- package/dist/i18n/messages/interactive-line.d.ts +61 -0
- package/dist/i18n/messages/interactive-line.js +69 -0
- package/dist/i18n/messages/interactive-startup.d.ts +99 -0
- package/dist/i18n/messages/interactive-startup.js +100 -0
- package/dist/i18n/messages/interactive-view.d.ts +140 -0
- package/dist/i18n/messages/interactive-view.js +141 -0
- package/dist/i18n/messages/interactive.d.ts +489 -0
- package/dist/i18n/messages/interactive.js +248 -0
- package/dist/i18n/messages/memory.d.ts +123 -0
- package/dist/i18n/messages/memory.js +128 -0
- package/dist/i18n/messages/panels.d.ts +233 -0
- package/dist/i18n/messages/panels.js +232 -0
- package/dist/i18n/messages/permissions.d.ts +126 -0
- package/dist/i18n/messages/permissions.js +151 -0
- package/dist/i18n/messages/plan.d.ts +123 -0
- package/dist/i18n/messages/plan.js +124 -0
- package/dist/i18n/messages/print.d.ts +86 -0
- package/dist/i18n/messages/print.js +91 -0
- package/dist/i18n/messages/report.d.ts +391 -0
- package/dist/i18n/messages/report.js +490 -0
- package/dist/i18n/messages/rewind.d.ts +198 -0
- package/dist/i18n/messages/rewind.js +217 -0
- package/dist/i18n/messages/session.d.ts +230 -0
- package/dist/i18n/messages/session.js +258 -0
- package/dist/i18n/messages/settings.d.ts +355 -0
- package/dist/i18n/messages/settings.js +343 -0
- package/dist/i18n/messages/subcommands-config.d.ts +113 -0
- package/dist/i18n/messages/subcommands-config.js +129 -0
- package/dist/i18n/messages/subcommands-models.d.ts +34 -0
- package/dist/i18n/messages/subcommands-models.js +34 -0
- package/dist/i18n/messages/subcommands.d.ts +576 -0
- package/dist/i18n/messages/subcommands.js +477 -0
- package/dist/i18n/messages/trace.d.ts +243 -0
- package/dist/i18n/messages/trace.js +238 -0
- package/dist/i18n/types.d.ts +15 -0
- package/dist/i18n/types.js +7 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +2 -0
- package/dist/memory/edit.d.ts +24 -0
- package/dist/memory/edit.js +63 -0
- package/dist/memory/frontmatter.d.ts +37 -0
- package/dist/memory/frontmatter.js +79 -0
- package/dist/memory/index.d.ts +28 -0
- package/dist/memory/index.js +126 -0
- package/dist/memory/lock.d.ts +17 -0
- package/dist/memory/lock.js +62 -0
- package/dist/memory/paths.d.ts +57 -0
- package/dist/memory/paths.js +175 -0
- package/dist/memory/report.d.ts +36 -0
- package/dist/memory/report.js +86 -0
- package/dist/memory/runtime.d.ts +42 -0
- package/dist/memory/runtime.js +36 -0
- package/dist/memory/secrets.d.ts +8 -0
- package/dist/memory/secrets.js +27 -0
- package/dist/memory/section.d.ts +28 -0
- package/dist/memory/section.js +59 -0
- package/dist/memory/store.d.ts +70 -0
- package/dist/memory/store.js +284 -0
- package/dist/memory/tool.d.ts +31 -0
- package/dist/memory/tool.js +94 -0
- package/dist/modes/acp/acp-events.js +2 -1
- package/dist/modes/acp/acp-server.js +13 -12
- package/dist/modes/commands-core.d.ts +11 -0
- package/dist/modes/commands-core.js +93 -62
- package/dist/modes/image-input.js +20 -6
- package/dist/modes/interactive/agent-bar.d.ts +95 -0
- package/dist/modes/interactive/agent-bar.js +248 -0
- package/dist/modes/interactive/agent-panels.js +27 -26
- package/dist/modes/interactive/agent-transcript.d.ts +47 -0
- package/dist/modes/interactive/agent-transcript.js +191 -0
- package/dist/modes/interactive/agent-ui.d.ts +36 -1
- package/dist/modes/interactive/agent-ui.js +180 -14
- package/dist/modes/interactive/agent-view.d.ts +72 -0
- package/dist/modes/interactive/agent-view.js +281 -0
- package/dist/modes/interactive/approval-dialog.js +46 -34
- package/dist/modes/interactive/clipboard-paste.d.ts +2 -2
- package/dist/modes/interactive/clipboard-paste.js +9 -4
- package/dist/modes/interactive/commands.d.ts +22 -1
- package/dist/modes/interactive/commands.js +100 -49
- package/dist/modes/interactive/completion.js +2 -1
- package/dist/modes/interactive/config-panel.d.ts +70 -0
- package/dist/modes/interactive/config-panel.js +319 -0
- package/dist/modes/interactive/config-ui.d.ts +96 -0
- package/dist/modes/interactive/config-ui.js +397 -0
- package/dist/modes/interactive/confirm-dialog.js +6 -7
- package/dist/modes/interactive/event-notices.js +11 -9
- package/dist/modes/interactive/interactive-mode.d.ts +1 -1
- package/dist/modes/interactive/interactive-mode.js +21 -22
- package/dist/modes/interactive/key-dispatch.d.ts +12 -0
- package/dist/modes/interactive/key-dispatch.js +24 -9
- package/dist/modes/interactive/line/line-editor.js +2 -1
- package/dist/modes/interactive/line/line-mode.js +18 -7
- package/dist/modes/interactive/line/line-render.js +25 -24
- package/dist/modes/interactive/memory-panel.d.ts +64 -0
- package/dist/modes/interactive/memory-panel.js +221 -0
- package/dist/modes/interactive/message-view.d.ts +4 -2
- package/dist/modes/interactive/message-view.js +42 -33
- package/dist/modes/interactive/model-items.d.ts +45 -0
- package/dist/modes/interactive/model-items.js +134 -0
- package/dist/modes/interactive/model-picker.d.ts +57 -0
- package/dist/modes/interactive/model-picker.js +191 -0
- package/dist/modes/interactive/panels.js +39 -31
- package/dist/modes/interactive/pickers.d.ts +2 -1
- package/dist/modes/interactive/pickers.js +10 -6
- package/dist/modes/interactive/plan-command.d.ts +1 -1
- package/dist/modes/interactive/plan-command.js +24 -27
- package/dist/modes/interactive/plan-dialog.js +18 -17
- package/dist/modes/interactive/plan-flow.js +6 -5
- package/dist/modes/interactive/rewind-command.d.ts +1 -1
- package/dist/modes/interactive/rewind-command.js +18 -16
- package/dist/modes/interactive/rewind-flow.d.ts +0 -1
- package/dist/modes/interactive/rewind-flow.js +13 -14
- package/dist/modes/interactive/rewind-list.js +7 -6
- package/dist/modes/interactive/rewind-panel.js +40 -40
- package/dist/modes/interactive/rewind-text.d.ts +5 -3
- package/dist/modes/interactive/rewind-text.js +48 -38
- package/dist/modes/interactive/run-indicator.js +15 -12
- package/dist/modes/interactive/session-events.js +3 -2
- package/dist/modes/interactive/startup-header.js +22 -23
- package/dist/modes/interactive/startup-ui.d.ts +3 -9
- package/dist/modes/interactive/startup-ui.js +44 -88
- package/dist/modes/interactive/status-area.d.ts +2 -0
- package/dist/modes/interactive/status-area.js +8 -2
- package/dist/modes/interactive/status-bar.js +4 -3
- package/dist/modes/interactive/subagent-view.js +9 -7
- package/dist/modes/interactive/tasks-report.d.ts +6 -0
- package/dist/modes/interactive/tasks-report.js +28 -31
- package/dist/modes/interactive/terminal-setup.d.ts +9 -0
- package/dist/modes/interactive/terminal-setup.js +23 -0
- package/dist/modes/interactive/tool-summary.js +19 -17
- package/dist/modes/interactive/tool-view.js +7 -4
- package/dist/modes/interactive/trace-view.d.ts +89 -0
- package/dist/modes/interactive/trace-view.js +332 -0
- package/dist/modes/print/print-mode.js +14 -15
- package/dist/modes/rpc/commands.js +7 -3
- package/dist/modes/rpc/rpc-mode.js +9 -3
- package/dist/modes/session-report.d.ts +2 -0
- package/dist/modes/session-report.js +101 -105
- package/dist/modes/startup-ui-text.js +11 -6
- package/dist/permissions/bypass.d.ts +8 -10
- package/dist/permissions/bypass.js +19 -10
- package/dist/permissions/memory-class.d.ts +23 -0
- package/dist/permissions/memory-class.js +54 -0
- package/dist/permissions/modes.d.ts +3 -3
- package/dist/permissions/modes.js +21 -16
- package/dist/permissions/pipeline.d.ts +1 -1
- package/dist/permissions/pipeline.js +9 -2
- package/dist/permissions/preview.js +49 -42
- package/dist/permissions/rules.js +5 -2
- package/dist/permissions/types.d.ts +4 -0
- package/dist/plan/store.js +2 -1
- package/dist/rpc.d.ts +39 -1
- package/dist/rpc.js +3 -0
- package/dist/sandbox/bash.js +11 -8
- package/dist/sandbox/detect.js +14 -11
- package/dist/sdk.d.ts +17 -1
- package/dist/sdk.js +29 -7
- package/dist/session/export.js +31 -30
- package/dist/session/manager.d.ts +1 -1
- package/dist/session/manager.js +5 -3
- package/dist/session/reuse.js +5 -4
- package/dist/session/scan.js +3 -2
- package/dist/session/stats-aggregate.d.ts +3 -1
- package/dist/session/stats-aggregate.js +5 -1
- package/dist/session/stats-index.js +2 -1
- package/dist/session/stats-scan.d.ts +4 -1
- package/dist/session/stats-scan.js +6 -2
- package/dist/session/store.d.ts +11 -0
- package/dist/session/store.js +48 -1
- package/dist/session/types.d.ts +2 -0
- package/dist/skills/builtin.js +2 -1
- package/dist/tools/image-file.d.ts +26 -1
- package/dist/tools/image-file.js +55 -13
- package/dist/tools/presets.d.ts +14 -1
- package/dist/tools/presets.js +3 -3
- package/dist/tools/registry.js +1 -1
- package/dist/tools/truncate.d.ts +1 -1
- package/dist/tools/truncate.js +2 -2
- package/dist/tools/types.d.ts +17 -1
- package/dist/trace/build-index.d.ts +91 -0
- package/dist/trace/build-index.js +127 -0
- package/dist/trace/build-nodes.d.ts +24 -0
- package/dist/trace/build-nodes.js +279 -0
- package/dist/trace/build-util.d.ts +43 -0
- package/dist/trace/build-util.js +120 -0
- package/dist/trace/build.d.ts +82 -0
- package/dist/trace/build.js +382 -0
- package/dist/trace/detail.d.ts +35 -0
- package/dist/trace/detail.js +205 -0
- package/dist/trace/flatten.d.ts +69 -0
- package/dist/trace/flatten.js +173 -0
- package/dist/trace/format.d.ts +47 -0
- package/dist/trace/format.js +329 -0
- package/dist/trace/html-template.d.ts +19 -0
- package/dist/trace/html-template.js +150 -0
- package/dist/trace/html.d.ts +104 -0
- package/dist/trace/html.js +292 -0
- package/dist/trace/preview.d.ts +29 -0
- package/dist/trace/preview.js +59 -0
- package/dist/trace/query-session.d.ts +14 -0
- package/dist/trace/query-session.js +38 -0
- package/dist/trace/query.d.ts +55 -0
- package/dist/trace/query.js +188 -0
- package/dist/trace/session.d.ts +40 -0
- package/dist/trace/session.js +168 -0
- package/dist/trace/types.d.ts +243 -0
- package/dist/trace/types.js +13 -0
- package/dist/tui/components/editor-paste.d.ts +2 -0
- package/dist/tui/components/editor-paste.js +6 -3
- package/dist/tui/components/editor.js +2 -2
- package/dist/tui/components/loader.d.ts +3 -0
- package/dist/tui/components/loader.js +14 -0
- package/dist/tui/components/select-list.d.ts +2 -0
- package/dist/tui/components/select-list.js +7 -0
- package/dist/tui/components/settings-list.d.ts +61 -0
- package/dist/tui/components/settings-list.js +135 -0
- package/dist/tui/keybindings.d.ts +5 -0
- package/dist/tui/keybindings.js +17 -5
- package/dist/tui.d.ts +1 -0
- package/dist/tui.js +2 -0
- package/docs/en/host-api.md +167 -0
- package/docs/en/permissions.md +214 -0
- package/docs/en/providers.md +627 -0
- package/docs/en/rpc.md +361 -0
- package/docs/en/sessions.md +219 -0
- package/docs/en/tui.md +534 -0
- package/docs/host-api.md +18 -17
- package/docs/memory.md +172 -0
- package/docs/permissions.md +2 -2
- package/docs/providers.md +73 -1
- package/docs/rpc.md +31 -3
- package/docs/session-format.md +8 -2
- package/docs/sessions.md +29 -1
- package/docs/tui.md +140 -4
- package/package.json +8 -3
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ama config get | set | unset | list` (docs/wave6-plan.md §6.4, D24-D26). [W6-S]
|
|
3
|
+
*
|
|
4
|
+
* Thin layer over config/edit.ts (the `/config` panel uses the same core):
|
|
5
|
+
* - `get <key> [--json]`: effective value, source layer and apply tier;
|
|
6
|
+
* - `set <key> <value> [--project] [--json-value] [--yes]`: write one key to the user file (or the
|
|
7
|
+
* project file, tighten only); lists and objects need `--json-value`; `permission.mode full-auto`
|
|
8
|
+
* asks once on a TTY and needs `--yes` otherwise;
|
|
9
|
+
* - `unset <key> [--project]`;
|
|
10
|
+
* - `list [prefix] [--json] [--all]`: panel settings (or every settable key with `--all`).
|
|
11
|
+
* Unknown keys, invalid values and refused project writes exit 3 (`ExitCode.Config`). `get` / `list`
|
|
12
|
+
* never create the config directory. `--profile <file>` adds the host profile layer to the view.
|
|
13
|
+
*/
|
|
14
|
+
import { msg } from "../../i18n/index.js";
|
|
15
|
+
import { assertSettable, formatSettingValue, getConfigValue, parseValue, readSnapshot, setConfigValue, } from "../../config/edit.js";
|
|
16
|
+
import { existsSync } from "node:fs";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
import { initConfigDir } from "../../config/init.js";
|
|
19
|
+
import { CONFIG_FILE, resolveConfigDir } from "../../config/paths.js";
|
|
20
|
+
import { loadProfile } from "../../config/profile.js";
|
|
21
|
+
import { settableKeys, settingSpec, settingsRegistry } from "../../config/settings-registry.js";
|
|
22
|
+
import { confirmContinue } from "../choice-prompt.js";
|
|
23
|
+
import { parseSubArgs, UsageError } from "../args.js";
|
|
24
|
+
import { ExitCode } from "../exit-codes.js";
|
|
25
|
+
export const CONFIG_EDIT_ACTIONS = ["get", "set", "unset", "list"];
|
|
26
|
+
function layerInput(io, profilePath) {
|
|
27
|
+
const input = {
|
|
28
|
+
configDir: resolveConfigDir({ env: io.env }),
|
|
29
|
+
cwd: io.cwd,
|
|
30
|
+
env: io.env,
|
|
31
|
+
};
|
|
32
|
+
if (profilePath !== undefined) {
|
|
33
|
+
const profile = loadProfile(profilePath, io.cwd);
|
|
34
|
+
input.profile = { config: profile.config };
|
|
35
|
+
input.hasProfile = true;
|
|
36
|
+
}
|
|
37
|
+
return input;
|
|
38
|
+
}
|
|
39
|
+
function applyText(key) {
|
|
40
|
+
const spec = settingSpec(key);
|
|
41
|
+
const s = msg().settings;
|
|
42
|
+
if (spec === undefined)
|
|
43
|
+
return s.cli.applyNone;
|
|
44
|
+
return spec.prefix === true ? `${s.apply[spec.apply]} · ${s.prefixTag}` : s.apply[spec.apply];
|
|
45
|
+
}
|
|
46
|
+
function jsonRow(value) {
|
|
47
|
+
const spec = settingSpec(value.key);
|
|
48
|
+
return {
|
|
49
|
+
key: value.key,
|
|
50
|
+
value: value.value ?? null,
|
|
51
|
+
source: value.source,
|
|
52
|
+
...(value.envName !== undefined ? { env: value.envName } : {}),
|
|
53
|
+
apply: spec?.apply ?? null,
|
|
54
|
+
prefix: spec?.prefix === true,
|
|
55
|
+
project: spec?.project ?? null,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function textRow(value) {
|
|
59
|
+
const source = value.envName !== undefined ? `env ${value.envName}` : value.source;
|
|
60
|
+
return msg().settings.cli.getLine(value.key, formatSettingValue(value.value), source, applyText(value.key));
|
|
61
|
+
}
|
|
62
|
+
function scopeLabel(scope) {
|
|
63
|
+
return msg().settings.scope[scope];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Receipt of a write. When a higher layer (env, project, cli, profile) still hides the key, the first line shows the
|
|
67
|
+
* value just written and its layer, and the second line names the overriding source and the effective value.
|
|
68
|
+
*/
|
|
69
|
+
function report(io, result, written) {
|
|
70
|
+
const s = msg().settings;
|
|
71
|
+
const effective = formatSettingValue(result.after.value);
|
|
72
|
+
const scope = scopeLabel(result.scope);
|
|
73
|
+
const by = result.after.envName ?? result.overriddenBy;
|
|
74
|
+
if (written === undefined)
|
|
75
|
+
io.stdout(`${s.unsetDone(result.key, effective, scope)}\n`);
|
|
76
|
+
else if (by === undefined)
|
|
77
|
+
io.stdout(`${s.setDone(result.key, effective, scope)}\n`);
|
|
78
|
+
else
|
|
79
|
+
io.stdout(`${s.writtenTo(result.key, formatSettingValue(written), scope)}\n`);
|
|
80
|
+
if (by === undefined)
|
|
81
|
+
return;
|
|
82
|
+
io.stdout(`${written === undefined ? s.stillOverridden(result.key, by) : s.overriddenNow(by, effective)}\n`);
|
|
83
|
+
}
|
|
84
|
+
/** Confirm persisting `permission.mode full-auto`: TTY asks, otherwise `--yes` is required. */
|
|
85
|
+
async function confirmBypass(io, yes, deps) {
|
|
86
|
+
const s = msg().settings.cli;
|
|
87
|
+
if (yes)
|
|
88
|
+
return true;
|
|
89
|
+
if (!io.stdinIsTTY) {
|
|
90
|
+
io.stderr(`ama: ${s.needYes}\n`);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const ask = deps.confirm ?? ((question) => confirmContinue({ question, env: io.env }));
|
|
94
|
+
if (await ask(s.confirmBypass))
|
|
95
|
+
return true;
|
|
96
|
+
io.stderr(`${s.cancelled}\n`);
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
export async function runConfigEdit(action, argv, io, deps = {}) {
|
|
100
|
+
const { positionals, values, flags } = parseSubArgs(argv, ["profile"], ["json", "project", "json-value", "yes", "all"]);
|
|
101
|
+
const s = msg().settings;
|
|
102
|
+
if (flags.has("help")) {
|
|
103
|
+
io.stdout(s.cli.usage);
|
|
104
|
+
return ExitCode.Ok;
|
|
105
|
+
}
|
|
106
|
+
const input = layerInput(io, values.get("profile"));
|
|
107
|
+
const scope = flags.has("project") ? "project" : "user";
|
|
108
|
+
if (action === "list") {
|
|
109
|
+
const snapshot = readSnapshot(input);
|
|
110
|
+
const prefix = positionals[0] ?? "";
|
|
111
|
+
const keys = (flags.has("all") ? settableKeys() : settingsRegistry().map((spec) => spec.key)).filter((key) => key.startsWith(prefix));
|
|
112
|
+
const rows = keys.map((key) => getConfigValue(snapshot, key));
|
|
113
|
+
if (flags.has("json"))
|
|
114
|
+
io.stdout(`${JSON.stringify(rows.map(jsonRow), null, 2)}\n`);
|
|
115
|
+
else
|
|
116
|
+
io.stdout(`${[s.cli.listHeader, ...rows.map((r) => ` ${textRow(r)}`)].join("\n")}\n`);
|
|
117
|
+
return ExitCode.Ok;
|
|
118
|
+
}
|
|
119
|
+
const key = positionals[0];
|
|
120
|
+
if (key === undefined)
|
|
121
|
+
throw new UsageError(s.cli.missingKey);
|
|
122
|
+
if (action === "get") {
|
|
123
|
+
assertSettable(key);
|
|
124
|
+
const value = getConfigValue(readSnapshot(input), key);
|
|
125
|
+
io.stdout(flags.has("json") ? `${JSON.stringify(jsonRow(value), null, 2)}\n` : `${textRow(value)}\n`);
|
|
126
|
+
return ExitCode.Ok;
|
|
127
|
+
}
|
|
128
|
+
if (action === "unset") {
|
|
129
|
+
report(io, setConfigValue({ ...input, scope, key, value: undefined }), undefined);
|
|
130
|
+
return ExitCode.Ok;
|
|
131
|
+
}
|
|
132
|
+
const raw = positionals.slice(1).join(" ");
|
|
133
|
+
if (positionals.length < 2)
|
|
134
|
+
throw new UsageError(s.cli.missingValue);
|
|
135
|
+
const value = parseValue(key, raw, flags.has("json-value"));
|
|
136
|
+
if (key === "permission.mode" && value === "full-auto" && scope === "user") {
|
|
137
|
+
if (!(await confirmBypass(io, flags.has("yes"), deps)))
|
|
138
|
+
return ExitCode.Config;
|
|
139
|
+
}
|
|
140
|
+
// first write to a fresh config dir: lay out config.json + config.schema.json like `ama init`
|
|
141
|
+
if (scope === "user" && !existsSync(join(input.configDir, CONFIG_FILE)))
|
|
142
|
+
initConfigDir(input.configDir);
|
|
143
|
+
report(io, setConfigValue({ ...input, scope, key, value }), value);
|
|
144
|
+
return ExitCode.Ok;
|
|
145
|
+
}
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
import { type AmaConfig, type CodemodeMode } from "../../config/types.js";
|
|
15
15
|
import type { Api, ProviderRegistryApi } from "../../ai/types.js";
|
|
16
16
|
import type { CliIo, RuntimeDeps } from "../deps.js";
|
|
17
|
-
|
|
17
|
+
/** `ama config --help` 的前半(get / set 等编辑子命令的用法接在后面)。 */
|
|
18
|
+
export declare const configUsage: () => string;
|
|
18
19
|
type Layer = {
|
|
19
20
|
name: "default" | "user" | "profile" | "project" | "cli";
|
|
20
21
|
label: string;
|
|
@@ -34,26 +34,30 @@ import { ExitCode } from "../exit-codes.js";
|
|
|
34
34
|
import { buildRegistry, loadUserLevel } from "./context.js";
|
|
35
35
|
import { osSandboxStatus } from "../../sandbox/detect.js";
|
|
36
36
|
import { resolveBashSandbox } from "../../sandbox/bash.js";
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
import { msg } from "../../i18n/index.js";
|
|
38
|
+
import { padToWidth, visibleWidth } from "../../tui/ansi.js";
|
|
39
|
+
import { CONFIG_EDIT_ACTIONS, runConfigEdit } from "./config-set.js";
|
|
40
|
+
const isEditAction = (value) => CONFIG_EDIT_ACTIONS.includes(value);
|
|
41
|
+
/** `ama config --help` 的前半(get / set 等编辑子命令的用法接在后面)。 */
|
|
42
|
+
export const configUsage = () => msg().subcommands.configShow.usage;
|
|
42
43
|
/** `ama config path`:目录与文件路径,标出是否存在。 */
|
|
43
44
|
function showPaths(io) {
|
|
44
45
|
const configDir = resolveConfigDir({ env: io.env });
|
|
45
46
|
const dataDir = resolveDataDir({ env: io.env });
|
|
46
|
-
const
|
|
47
|
+
const m = msg().subcommands.configShow;
|
|
48
|
+
const mark = (path) => `${path}${existsSync(path) ? "" : m.missing}`;
|
|
49
|
+
const width = Math.max(...[m.configDir, m.dataDir, m.projectLevel].map(visibleWidth)) + 2;
|
|
50
|
+
const label = (text) => padToWidth(text, width);
|
|
47
51
|
const lines = [
|
|
48
|
-
|
|
52
|
+
`${label(m.configDir)}${mark(configDir)}`,
|
|
49
53
|
` config.json ${mark(join(configDir, CONFIG_FILE))}`,
|
|
50
54
|
` config.schema.json ${mark(join(configDir, CONFIG_SCHEMA_FILE))}`,
|
|
51
55
|
` auth.json ${mark(join(configDir, AUTH_FILE))}`,
|
|
52
56
|
` hooks.json ${mark(join(configDir, HOOKS_FILE))}`,
|
|
53
|
-
|
|
57
|
+
`${label(m.dataDir)}${mark(dataDir)}`,
|
|
54
58
|
` sessions/ ${mark(join(dataDir, "sessions"))}`,
|
|
55
59
|
` models-dev.json ${mark(modelsDevCachePath(dataDir))}`,
|
|
56
|
-
|
|
60
|
+
`${label(m.projectLevel)}${mark(projectFile(io.cwd, CONFIG_FILE))}`,
|
|
57
61
|
];
|
|
58
62
|
io.stdout(`${lines.join("\n")}\n`);
|
|
59
63
|
return ExitCode.Ok;
|
|
@@ -66,13 +70,13 @@ function editConfig(io) {
|
|
|
66
70
|
initConfigDir(configDir);
|
|
67
71
|
const editor = (io.env["VISUAL"] ?? io.env["EDITOR"] ?? "").trim();
|
|
68
72
|
if (editor === "") {
|
|
69
|
-
io.stdout(
|
|
73
|
+
io.stdout(msg().subcommands.configShow.noEditor(path));
|
|
70
74
|
return ExitCode.Ok;
|
|
71
75
|
}
|
|
72
76
|
const quoted = process.platform === "win32" ? `"${path}"` : `'${path.replace(/'/g, `'\\''`)}'`;
|
|
73
77
|
const result = spawnSync(`${editor} ${quoted}`, { stdio: "inherit", shell: true });
|
|
74
78
|
if (result.error !== undefined || result.status !== 0) {
|
|
75
|
-
io.stderr(
|
|
79
|
+
io.stderr(msg().subcommands.configShow.editorFailed(editor, path));
|
|
76
80
|
return ExitCode.RuntimeError;
|
|
77
81
|
}
|
|
78
82
|
return ExitCode.Ok;
|
|
@@ -111,19 +115,20 @@ function display(path, value) {
|
|
|
111
115
|
export async function describeModel(config, registry) {
|
|
112
116
|
if (config.defaultModel !== undefined)
|
|
113
117
|
return { ref: config.defaultModel, reason: "config.defaultModel" };
|
|
118
|
+
const m = msg().subcommands.configShow;
|
|
114
119
|
if (registry === undefined)
|
|
115
|
-
return { ref: undefined, reason:
|
|
120
|
+
return { ref: undefined, reason: m.registryMissing };
|
|
116
121
|
const picked = await pickDefaultModel(registry);
|
|
117
122
|
if (picked === undefined)
|
|
118
123
|
return { ref: undefined, reason: noModelGuidance(registry) };
|
|
119
124
|
const ref = `${picked.provider.id}/${picked.model.id}`;
|
|
120
125
|
if (picked.via === "local")
|
|
121
|
-
return { ref, reason:
|
|
126
|
+
return { ref, reason: m.zeroConfigLocal(picked.provider.id, picked.rule) };
|
|
122
127
|
const key = await registry.resolveApiKey(picked.provider.id);
|
|
123
128
|
const origin = key.origin !== undefined ? ` ${key.origin}` : "";
|
|
124
129
|
return {
|
|
125
130
|
ref,
|
|
126
|
-
reason:
|
|
131
|
+
reason: m.zeroConfigKey(picked.provider.id, `${key.source}${origin}`, picked.rule),
|
|
127
132
|
};
|
|
128
133
|
}
|
|
129
134
|
/** config 里出现的供应商 + baseUrl 来自环境变量的内置供应商。 */
|
|
@@ -170,9 +175,10 @@ export function describeProviders(config, registry) {
|
|
|
170
175
|
function providerLines(providers) {
|
|
171
176
|
if (providers.length === 0)
|
|
172
177
|
return [];
|
|
173
|
-
const
|
|
178
|
+
const m = msg().subcommands.configShow;
|
|
179
|
+
const lines = ["", m.providersHeading];
|
|
174
180
|
for (const p of providers) {
|
|
175
|
-
const env = p.baseUrlEnv !== undefined ?
|
|
181
|
+
const env = p.baseUrlEnv !== undefined ? m.baseUrlFromEnv(p.baseUrlEnv) : "";
|
|
176
182
|
lines.push(` ${p.id} ${p.api} ${p.baseUrl}${env}`);
|
|
177
183
|
for (const c of p.channels ?? [])
|
|
178
184
|
lines.push(` @${c.name} ${c.api} ${c.baseUrl}`);
|
|
@@ -185,7 +191,8 @@ function providerLines(providers) {
|
|
|
185
191
|
return lines;
|
|
186
192
|
}
|
|
187
193
|
function layersOf(level, project, effective, cli) {
|
|
188
|
-
const
|
|
194
|
+
const m = msg().subcommands.configShow;
|
|
195
|
+
const layers = [{ name: "default", label: m.layerDefault, value: DISPLAY_DEFAULTS }];
|
|
189
196
|
const user = loadConfigFile("config", level.userConfigPath)?.value;
|
|
190
197
|
if (user !== undefined)
|
|
191
198
|
layers.push({ name: "user", label: level.userConfigPath, value: user });
|
|
@@ -209,7 +216,7 @@ function layersOf(level, project, effective, cli) {
|
|
|
209
216
|
layers.push({ name: "project", label: ".ama/config.json", value: unflatten(accepted) });
|
|
210
217
|
}
|
|
211
218
|
if (cli !== undefined && Object.keys(cli).length > 0)
|
|
212
|
-
layers.push({ name: "cli", label:
|
|
219
|
+
layers.push({ name: "cli", label: m.layerCli, value: cli });
|
|
213
220
|
return layers;
|
|
214
221
|
}
|
|
215
222
|
function unflatten(flat) {
|
|
@@ -243,14 +250,15 @@ export function sourcesOf(effective, layers) {
|
|
|
243
250
|
export function describeCodemode(config, nodeVersion) {
|
|
244
251
|
const capability = nodeVersion === undefined ? sandboxCapabilityFor(config) : detectSandboxCapability(nodeVersion);
|
|
245
252
|
const resolved = resolveCodemodeMode(config, capability.strict);
|
|
253
|
+
const m = msg().subcommands.configShow;
|
|
246
254
|
const sandbox = capability.nodeMajor >= 25
|
|
247
|
-
?
|
|
255
|
+
? m.sandboxIsolated(capability.nodeMajor)
|
|
248
256
|
: capability.strict
|
|
249
|
-
?
|
|
250
|
-
:
|
|
257
|
+
? m.sandboxOs(capability.nodeMajor, capability.os.kind)
|
|
258
|
+
: m.sandboxNone(capability.nodeMajor);
|
|
251
259
|
const reason = resolved.source === "config"
|
|
252
|
-
?
|
|
253
|
-
:
|
|
260
|
+
? m.codemodeExplicit(sandbox)
|
|
261
|
+
: m.codemodeFollowsPreset(resolved.preset, sandbox);
|
|
254
262
|
const out = {
|
|
255
263
|
mode: resolved.mode,
|
|
256
264
|
source: resolved.source,
|
|
@@ -270,7 +278,7 @@ function presetAliasNotes(layers) {
|
|
|
270
278
|
for (const layer of layers) {
|
|
271
279
|
const preset = layer.value?.tools?.preset;
|
|
272
280
|
if (preset !== undefined && Object.hasOwn(TOOLS_PRESET_ALIASES, preset))
|
|
273
|
-
notes.push(
|
|
281
|
+
notes.push(msg().subcommands.configShow.presetAlias(layer.name, layer.label, preset, canonicalPreset(preset)));
|
|
274
282
|
}
|
|
275
283
|
return notes;
|
|
276
284
|
}
|
|
@@ -279,21 +287,26 @@ function choice(name, value, all) {
|
|
|
279
287
|
return undefined;
|
|
280
288
|
if (all.includes(value))
|
|
281
289
|
return value;
|
|
282
|
-
throw new UsageError(`--${name}
|
|
290
|
+
throw new UsageError(msg().subcommands.common.invalidChoice(`--${name}`, all, value));
|
|
283
291
|
}
|
|
284
292
|
export async function runConfig(argv, io, deps) {
|
|
293
|
+
// [W6-S] get / set / unset / list(config-set.ts)
|
|
294
|
+
const edit = argv.findIndex((a) => !a.startsWith("-"));
|
|
295
|
+
if (edit !== -1 && isEditAction(argv[edit]))
|
|
296
|
+
return runConfigEdit(argv[edit], [...argv.slice(0, edit), ...argv.slice(edit + 1)], io);
|
|
285
297
|
const { positionals, values, flags } = parseSubArgs(argv, ["profile", "auth-file", "tools-preset", "codemode"], ["json"]);
|
|
286
298
|
const action = positionals[0] ?? "show";
|
|
287
299
|
if (flags.has("help")) {
|
|
288
|
-
io.stdout(
|
|
300
|
+
io.stdout(`${configUsage()}${msg().settings.cli.usage}`);
|
|
289
301
|
return ExitCode.Ok;
|
|
290
302
|
}
|
|
291
303
|
if (action === "path")
|
|
292
304
|
return showPaths(io);
|
|
293
305
|
if (action === "edit")
|
|
294
306
|
return editConfig(io);
|
|
307
|
+
const m = msg().subcommands.configShow;
|
|
295
308
|
if (action !== "show")
|
|
296
|
-
throw new UsageError(
|
|
309
|
+
throw new UsageError(m.unknownAction(action));
|
|
297
310
|
const cli = {};
|
|
298
311
|
const presetFlag = choice("tools-preset", values.get("tools-preset"), TOOLS_PRESET_INPUTS);
|
|
299
312
|
if (presetFlag !== undefined)
|
|
@@ -338,7 +351,7 @@ export async function runConfig(argv, io, deps) {
|
|
|
338
351
|
rows.push({
|
|
339
352
|
path: "codemode.mode",
|
|
340
353
|
value: codemode.mode,
|
|
341
|
-
source:
|
|
354
|
+
source: m.defaultSource(codemode.reason),
|
|
342
355
|
});
|
|
343
356
|
rows.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
|
|
344
357
|
if (flags.has("json")) {
|
|
@@ -350,9 +363,9 @@ export async function runConfig(argv, io, deps) {
|
|
|
350
363
|
io.stdout(`${JSON.stringify({ model, providers, tools: preset.builtin, preset: preset.preset, codemode, bashSandbox: { active: bashSandbox.active, detail: bashSandbox.detail }, entries, layers: layers.map((l) => ({ name: l.name, file: l.label })), notes, warnings }, null, 2)}\n`);
|
|
351
364
|
return ExitCode.Ok;
|
|
352
365
|
}
|
|
353
|
-
const lines = [
|
|
366
|
+
const lines = [m.heading];
|
|
354
367
|
for (const layer of layers.slice(1))
|
|
355
|
-
lines.push(
|
|
368
|
+
lines.push(m.layerLine(layer.name, layer.label));
|
|
356
369
|
lines.push("");
|
|
357
370
|
const texts = rows.map((row) => [`${row.path} = ${display(row.path, row.value)}`, row.source]);
|
|
358
371
|
const width = Math.min(60, Math.max(...texts.map(([text]) => (text ?? "").length)));
|
|
@@ -360,16 +373,17 @@ export async function runConfig(argv, io, deps) {
|
|
|
360
373
|
lines.push(` ${(text ?? "").padEnd(width)} ${source}`);
|
|
361
374
|
lines.push(...providerLines(providers));
|
|
362
375
|
lines.push("");
|
|
363
|
-
lines.push(
|
|
364
|
-
lines.push(
|
|
365
|
-
lines.push(
|
|
376
|
+
lines.push(m.model(model.ref, model.reason));
|
|
377
|
+
lines.push(m.tools(preset.builtin.join(", "), preset.preset, preset.codemode));
|
|
378
|
+
lines.push(m.codemode(codemode.mode, codemode.reason));
|
|
366
379
|
if (codemode.unavailable !== undefined)
|
|
367
380
|
lines.push(` ${codemode.unavailable}`);
|
|
368
|
-
lines.push(
|
|
381
|
+
lines.push(m.bashSandbox(bashSandbox.detail));
|
|
369
382
|
for (const note of notes)
|
|
370
|
-
lines.push(
|
|
371
|
-
|
|
372
|
-
|
|
383
|
+
lines.push(m.note(note));
|
|
384
|
+
const presetWarnings = preset.warnings.map((w) => msg().session.codemode.presetWarning(w));
|
|
385
|
+
for (const warning of [...warnings, ...presetWarnings])
|
|
386
|
+
lines.push(m.warning(warning));
|
|
373
387
|
io.stdout(`${lines.join("\n")}\n`);
|
|
374
388
|
return ExitCode.Ok;
|
|
375
389
|
}
|
|
@@ -7,5 +7,6 @@
|
|
|
7
7
|
* [W3-B12] baseUrl 来自 `OPENAI_BASE_URL` / `ANTHROPIC_BASE_URL` 时在 key 行后标出变量与地址。
|
|
8
8
|
*/
|
|
9
9
|
import type { CliIo, RuntimeDeps } from "../deps.js";
|
|
10
|
-
|
|
10
|
+
/** 用法(随界面语言)。 */
|
|
11
|
+
export declare function doctorUsage(): string;
|
|
11
12
|
export declare function runDoctor(argv: readonly string[], io: CliIo, deps: RuntimeDeps | undefined): Promise<number>;
|