@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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息目录:permissions(键名规范见 docs/i18n.md)。[W6-C0 建空壳,归 W6-I2]
|
|
3
|
+
*
|
|
4
|
+
* en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
|
|
5
|
+
* 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
|
|
6
|
+
*
|
|
7
|
+
* 模式显示名(`Manual`、`Accept edits`…)两种语言都是英文,不在这里;这里是说明、执行前预览与 Bypass 确认。
|
|
8
|
+
*/
|
|
9
|
+
import { plural } from "../format.js";
|
|
10
|
+
const EN_VERB = {
|
|
11
|
+
append: "Append to",
|
|
12
|
+
overwrite: "Overwrite",
|
|
13
|
+
delete: "Delete",
|
|
14
|
+
move: "Move",
|
|
15
|
+
moveTo: "Move to",
|
|
16
|
+
gitClean: "git clean scope",
|
|
17
|
+
discard: "Discard changes",
|
|
18
|
+
};
|
|
19
|
+
const ZH_VERB = {
|
|
20
|
+
append: "追加写入",
|
|
21
|
+
overwrite: "覆盖写入",
|
|
22
|
+
delete: "删除",
|
|
23
|
+
move: "移动",
|
|
24
|
+
moveTo: "移到",
|
|
25
|
+
gitClean: "git clean 范围",
|
|
26
|
+
discard: "丢弃改动",
|
|
27
|
+
};
|
|
28
|
+
const EN_NOTE = {
|
|
29
|
+
intoDir: " (existing directory; moves into it)",
|
|
30
|
+
overwritten: " (exists; will be overwritten)",
|
|
31
|
+
gitCleanTracked: " (count includes tracked files; only untracked ones are deleted)",
|
|
32
|
+
};
|
|
33
|
+
const ZH_NOTE = {
|
|
34
|
+
intoDir: "(已存在的目录,移入其中)",
|
|
35
|
+
overwritten: "(已存在,将被覆盖)",
|
|
36
|
+
gitCleanTracked: "(计数含已跟踪文件,实际只删未跟踪的)",
|
|
37
|
+
};
|
|
38
|
+
export const en = {
|
|
39
|
+
/** 六种权限模式的一行说明(`permissions/modes.ts`)。 */
|
|
40
|
+
modeDescription: {
|
|
41
|
+
default: "Ask before writing files or running commands",
|
|
42
|
+
autoEdit: "Accept file edits automatically; still ask before commands",
|
|
43
|
+
plan: "Read-only research and commands; approve the plan to run",
|
|
44
|
+
auto: "ama judges each step: safe ones run, risky ones ask",
|
|
45
|
+
fullAuto: "Allow everything (dangerous commands still ask)",
|
|
46
|
+
allowlist: "Allow only what allow rules match; deny the rest, never ask",
|
|
47
|
+
},
|
|
48
|
+
/** auto 判定层的名字(审批框、`/permissions`)。 */
|
|
49
|
+
autoLayer: {
|
|
50
|
+
rule: "rule layer",
|
|
51
|
+
static: "static check",
|
|
52
|
+
classifier: "classifier",
|
|
53
|
+
},
|
|
54
|
+
bypass: {
|
|
55
|
+
title: "Enter Bypass permissions?",
|
|
56
|
+
riskAllowAll: "No tool call will ask anymore: file writes, commands and network run directly",
|
|
57
|
+
riskDangerous: "Only dangerous commands still ask and deny rules still apply; use it only in a throwaway sandbox or container",
|
|
58
|
+
choiceEnter: "Enter Bypass",
|
|
59
|
+
choiceCancel: "Cancel",
|
|
60
|
+
lineQuestion: "Enter Bypass? [y/N] ",
|
|
61
|
+
},
|
|
62
|
+
preview: {
|
|
63
|
+
moreHidden: (n) => `… ${n} more not listed`,
|
|
64
|
+
timedOut: (ms) => `Count timed out (> ${ms} ms); actual scope may be larger`,
|
|
65
|
+
missing: "does not exist",
|
|
66
|
+
symlink: "symlink",
|
|
67
|
+
file: (size) => `file, ${size}`,
|
|
68
|
+
dirCapped: (max) => `directory, > ${max} entries`,
|
|
69
|
+
dir: (files, size, partial) => `directory, ${plural(files, "file")}, ${size}${partial ? " (count incomplete)" : ""}`,
|
|
70
|
+
pathUnexpanded: (verb, word) => `${EN_VERB[verb]} ${word}: contains wildcards or variables, not expanded; actual scope may be larger`,
|
|
71
|
+
pathTarget: (verb, path, detail, note) => `${EN_VERB[verb]} ${path}: ${detail}${note === undefined ? "" : EN_NOTE[note]}`,
|
|
72
|
+
rmUnknown: (name) => `${name}: paths come from a pipe or expansion; scope unknown`,
|
|
73
|
+
gitResetHard: "git reset --hard: discards all uncommitted changes in the working tree and the index",
|
|
74
|
+
dangerous: (description) => `Dangerous: ${description}`,
|
|
75
|
+
tooDeep: "Nested too deep; inner commands not expanded",
|
|
76
|
+
unread: (tool) => `This file has not been read in this session; ${tool} will be rejected (read it first)`,
|
|
77
|
+
size: (lines, size) => `${plural(lines, "line")}, ${size}`,
|
|
78
|
+
writeNew: (path, next) => `Create ${path}: ${next}`,
|
|
79
|
+
writeIsDir: (path) => `${path} is a directory; write will fail`,
|
|
80
|
+
writeOverwrite: (path, before, next) => `Overwrite ${path}: ${before} → ${next}`,
|
|
81
|
+
editNotUnique: (what, count) => `${what} is not unique (${count} matches)`,
|
|
82
|
+
editNotFound: (what) => `${what} not found`,
|
|
83
|
+
editOverlap: "edit ranges overlap",
|
|
84
|
+
editNoChange: "content is the same before and after",
|
|
85
|
+
editMissing: (path) => `${path} does not exist or is not a file; edit will fail`,
|
|
86
|
+
editTooLarge: (path, size) => `Edit ${path}: ${size}, file too large; dry run skipped`,
|
|
87
|
+
editPlan: (path, replacements, fuzzy) => `Edit ${path}: ${plural(replacements, "replacement")}${fuzzy ? " (matched after normalizing whitespace / quotes)" : ""}`,
|
|
88
|
+
editOp: (index, removed, added) => ` #${index} −${removed}/+${added} lines`,
|
|
89
|
+
editMore: (n) => ` … ${n} more`,
|
|
90
|
+
editTotal: (before, after) => ` Total ${before} → ${after} lines`,
|
|
91
|
+
editDryRunFailed: (path, reason) => `Edit ${path}: dry run failed — ${reason}`,
|
|
92
|
+
failed: (reason) => `Preview failed: ${reason}`,
|
|
93
|
+
moreLines: (n) => `… ${plural(n, "more line")}`,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
export const zh = {
|
|
97
|
+
modeDescription: {
|
|
98
|
+
default: "写文件、执行命令前询问",
|
|
99
|
+
autoEdit: "自动接受文件编辑,执行命令仍询问",
|
|
100
|
+
plan: "只读调研,只跑只读命令,出计划后审批执行",
|
|
101
|
+
auto: "由 ama 判断每一步:安全的自动放行,有风险的才问",
|
|
102
|
+
fullAuto: "全部放行(危险命令仍询问)",
|
|
103
|
+
allowlist: "只放行 allow 规则命中的,其余拒绝,从不询问",
|
|
104
|
+
},
|
|
105
|
+
autoLayer: {
|
|
106
|
+
rule: "规则层",
|
|
107
|
+
static: "静态判定",
|
|
108
|
+
classifier: "分类器",
|
|
109
|
+
},
|
|
110
|
+
bypass: {
|
|
111
|
+
title: "进入 Bypass permissions?",
|
|
112
|
+
riskAllowAll: "所有工具调用都不再询问:写文件、执行命令、联网直接放行",
|
|
113
|
+
riskDangerous: "只有危险命令仍会询问,deny 规则照常生效;只建议在一次性沙箱、容器里用",
|
|
114
|
+
choiceEnter: "进入 Bypass",
|
|
115
|
+
choiceCancel: "取消",
|
|
116
|
+
lineQuestion: "确认进入 Bypass?[y/N] ",
|
|
117
|
+
},
|
|
118
|
+
preview: {
|
|
119
|
+
moreHidden: (n) => `… 另 ${n} 处未列出`,
|
|
120
|
+
timedOut: (ms) => `统计超时(> ${ms} ms),实际范围可能更大`,
|
|
121
|
+
missing: "不存在",
|
|
122
|
+
symlink: "符号链接",
|
|
123
|
+
file: (size) => `文件,${size}`,
|
|
124
|
+
dirCapped: (max) => `目录,> ${max} 项`,
|
|
125
|
+
dir: (files, size, partial) => `目录,${files} 个文件,${size}${partial ? "(统计未完成)" : ""}`,
|
|
126
|
+
pathUnexpanded: (verb, word) => `${ZH_VERB[verb]} ${word}:含通配符或变量,未展开,实际范围可能更大`,
|
|
127
|
+
pathTarget: (verb, path, detail, note) => `${ZH_VERB[verb]} ${path}:${detail}${note === undefined ? "" : ZH_NOTE[note]}`,
|
|
128
|
+
rmUnknown: (name) => `${name}:路径来自管道或展开,范围未知`,
|
|
129
|
+
gitResetHard: "git reset --hard:丢弃工作区与暂存区的全部未提交改动",
|
|
130
|
+
dangerous: (description) => `危险:${description}`,
|
|
131
|
+
tooDeep: "嵌套过深,内层命令未展开",
|
|
132
|
+
unread: (tool) => `本会话未 read 过此文件,${tool} 会被拒绝(先 read)`,
|
|
133
|
+
size: (lines, size) => `${lines} 行,${size}`,
|
|
134
|
+
writeNew: (path, next) => `新建 ${path}:${next}`,
|
|
135
|
+
writeIsDir: (path) => `${path} 是目录,write 会失败`,
|
|
136
|
+
writeOverwrite: (path, before, next) => `覆盖 ${path}:${before} → ${next}`,
|
|
137
|
+
editNotUnique: (what, count) => `${what} 匹配不唯一(${count} 处)`,
|
|
138
|
+
editNotFound: (what) => `未找到 ${what}`,
|
|
139
|
+
editOverlap: "多处修改的区间重叠",
|
|
140
|
+
editNoChange: "修改前后内容相同",
|
|
141
|
+
editMissing: (path) => `${path} 不存在或不是文件,edit 会失败`,
|
|
142
|
+
editTooLarge: (path, size) => `修改 ${path}:${size},文件过大,未干跑`,
|
|
143
|
+
editPlan: (path, replacements, fuzzy) => `修改 ${path}:${replacements} 处替换${fuzzy ? "(空白 / 引号归一后匹配)" : ""}`,
|
|
144
|
+
editOp: (index, removed, added) => ` #${index} −${removed}/+${added} 行`,
|
|
145
|
+
editMore: (n) => ` … 另 ${n} 处`,
|
|
146
|
+
editTotal: (before, after) => ` 共 ${before} → ${after} 行`,
|
|
147
|
+
editDryRunFailed: (path, reason) => `修改 ${path}:干跑失败——${reason}`,
|
|
148
|
+
failed: (reason) => `预览失败:${reason}`,
|
|
149
|
+
moreLines: (n) => `… 另 ${n} 行`,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息目录:plan(键名规范见 docs/i18n.md)。[W6-C0 建空壳,归 W6-I2]
|
|
3
|
+
*
|
|
4
|
+
* en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
|
|
5
|
+
* 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
|
|
6
|
+
*
|
|
7
|
+
* `/plan` 命令(`plan-command.ts`)、Plan 审批框(`plan-dialog.ts`)与审批后的提示(`plan-flow.ts`)。
|
|
8
|
+
* 用户**输入**的别名(`批准`、步骤标题)不在这里,两种语言同时识别(`plan/controller.ts`、`plan/extract.ts`)。
|
|
9
|
+
*/
|
|
10
|
+
export declare const en: {
|
|
11
|
+
usage: string;
|
|
12
|
+
status: {
|
|
13
|
+
proposed: string;
|
|
14
|
+
approved: string;
|
|
15
|
+
rejected: string;
|
|
16
|
+
superseded: string;
|
|
17
|
+
};
|
|
18
|
+
untitled: string;
|
|
19
|
+
command: {
|
|
20
|
+
modePlan: (back: string) => string;
|
|
21
|
+
mode: (mode: string) => string;
|
|
22
|
+
noPlanYet: string;
|
|
23
|
+
noPlan: string;
|
|
24
|
+
head: (version: number, status: string, title: string) => string;
|
|
25
|
+
file: (path: string) => string;
|
|
26
|
+
steps: (n: number) => string;
|
|
27
|
+
todos: (done: number, total: number, current: string | undefined) => string;
|
|
28
|
+
actions: string;
|
|
29
|
+
notFound: string;
|
|
30
|
+
unavailable: string;
|
|
31
|
+
invalidMode: (arg: string, usage: string) => string;
|
|
32
|
+
approved: (version: number, mode: string) => string;
|
|
33
|
+
rejected: (version: number) => string;
|
|
34
|
+
};
|
|
35
|
+
dialog: {
|
|
36
|
+
title: string;
|
|
37
|
+
optionApprove: string;
|
|
38
|
+
optionApproveFresh: string;
|
|
39
|
+
optionRevise: (ellipsis: string) => string;
|
|
40
|
+
optionReject: string;
|
|
41
|
+
modeBack: (mode: string) => string;
|
|
42
|
+
modeHeadingFresh: string;
|
|
43
|
+
modeHeading: string;
|
|
44
|
+
editing: (ellipsis: string) => string;
|
|
45
|
+
version: (version: number) => string;
|
|
46
|
+
stepCount: (n: number) => string;
|
|
47
|
+
edited: string;
|
|
48
|
+
moreSteps: (ellipsis: string, n: number) => string;
|
|
49
|
+
feedbackCompact: string;
|
|
50
|
+
feedback: string;
|
|
51
|
+
hintMainCompact: (arrows: string, edit: boolean) => string;
|
|
52
|
+
hintMain: (arrows: string, edit: boolean) => string;
|
|
53
|
+
hintModeCompact: (arrows: string) => string;
|
|
54
|
+
hintMode: (arrows: string) => string;
|
|
55
|
+
hintReviseCompact: (edit: boolean) => string;
|
|
56
|
+
hintRevise: (edit: boolean) => string;
|
|
57
|
+
hintEditing: string;
|
|
58
|
+
};
|
|
59
|
+
flow: {
|
|
60
|
+
pending: (version: number) => string;
|
|
61
|
+
approved: (version: number, mode: string) => string;
|
|
62
|
+
approvedFresh: (version: number, sessionId: string, mode: string) => string;
|
|
63
|
+
rejectedExit: (version: number, mode: string) => string;
|
|
64
|
+
rejectedStay: (version: number) => string;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export declare const zh: {
|
|
68
|
+
usage: string;
|
|
69
|
+
status: {
|
|
70
|
+
proposed: string;
|
|
71
|
+
approved: string;
|
|
72
|
+
rejected: string;
|
|
73
|
+
superseded: string;
|
|
74
|
+
};
|
|
75
|
+
untitled: string;
|
|
76
|
+
command: {
|
|
77
|
+
modePlan: (back: string) => string;
|
|
78
|
+
mode: (mode: string) => string;
|
|
79
|
+
noPlanYet: string;
|
|
80
|
+
noPlan: string;
|
|
81
|
+
head: (version: number, status: string, title: string) => string;
|
|
82
|
+
file: (path: string) => string;
|
|
83
|
+
steps: (n: number) => string;
|
|
84
|
+
todos: (done: number, total: number, current: string | undefined) => string;
|
|
85
|
+
actions: string;
|
|
86
|
+
notFound: string;
|
|
87
|
+
unavailable: string;
|
|
88
|
+
invalidMode: (arg: string, usage: string) => string;
|
|
89
|
+
approved: (version: number, mode: string) => string;
|
|
90
|
+
rejected: (version: number) => string;
|
|
91
|
+
};
|
|
92
|
+
dialog: {
|
|
93
|
+
title: string;
|
|
94
|
+
optionApprove: string;
|
|
95
|
+
optionApproveFresh: string;
|
|
96
|
+
optionRevise: (ellipsis: string) => string;
|
|
97
|
+
optionReject: string;
|
|
98
|
+
modeBack: (mode: string) => string;
|
|
99
|
+
modeHeadingFresh: string;
|
|
100
|
+
modeHeading: string;
|
|
101
|
+
editing: (ellipsis: string) => string;
|
|
102
|
+
version: (version: number) => string;
|
|
103
|
+
stepCount: (n: number) => string;
|
|
104
|
+
edited: string;
|
|
105
|
+
moreSteps: (ellipsis: string, n: number) => string;
|
|
106
|
+
feedbackCompact: string;
|
|
107
|
+
feedback: string;
|
|
108
|
+
hintMainCompact: (arrows: string, edit: boolean) => string;
|
|
109
|
+
hintMain: (arrows: string, edit: boolean) => string;
|
|
110
|
+
hintModeCompact: (arrows: string) => string;
|
|
111
|
+
hintMode: (arrows: string) => string;
|
|
112
|
+
hintReviseCompact: (edit: boolean) => string;
|
|
113
|
+
hintRevise: (edit: boolean) => string;
|
|
114
|
+
hintEditing: string;
|
|
115
|
+
};
|
|
116
|
+
flow: {
|
|
117
|
+
pending: (version: number) => string;
|
|
118
|
+
approved: (version: number, mode: string) => string;
|
|
119
|
+
approvedFresh: (version: number, sessionId: string, mode: string) => string;
|
|
120
|
+
rejectedExit: (version: number, mode: string) => string;
|
|
121
|
+
rejectedStay: (version: number) => string;
|
|
122
|
+
};
|
|
123
|
+
};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息目录:plan(键名规范见 docs/i18n.md)。[W6-C0 建空壳,归 W6-I2]
|
|
3
|
+
*
|
|
4
|
+
* en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
|
|
5
|
+
* 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
|
|
6
|
+
*
|
|
7
|
+
* `/plan` 命令(`plan-command.ts`)、Plan 审批框(`plan-dialog.ts`)与审批后的提示(`plan-flow.ts`)。
|
|
8
|
+
* 用户**输入**的别名(`批准`、步骤标题)不在这里,两种语言同时识别(`plan/controller.ts`、`plan/extract.ts`)。
|
|
9
|
+
*/
|
|
10
|
+
import { plural } from "../format.js";
|
|
11
|
+
export const en = {
|
|
12
|
+
usage: "Usage: /plan [goal] | /plan approve [mode|fresh] | /plan reject",
|
|
13
|
+
status: {
|
|
14
|
+
proposed: "awaiting approval",
|
|
15
|
+
approved: "approved",
|
|
16
|
+
rejected: "rejected",
|
|
17
|
+
superseded: "superseded by a newer version",
|
|
18
|
+
},
|
|
19
|
+
untitled: "(untitled)",
|
|
20
|
+
command: {
|
|
21
|
+
modePlan: (back) => `Mode: Plan (returns to ${back} after approval)`,
|
|
22
|
+
mode: (mode) => `Mode: ${mode}`,
|
|
23
|
+
noPlanYet: "No plan yet: approve here once the model gives a <proposed_plan>",
|
|
24
|
+
noPlan: "No plan. /plan <goal> enters Plan mode",
|
|
25
|
+
head: (version, status, title) => `Plan v${version} · ${status} · ${title}`,
|
|
26
|
+
file: (path) => `File: ${path}`,
|
|
27
|
+
steps: (n) => `Steps (${n}):`,
|
|
28
|
+
todos: (done, total, current) => `Todos: ${done}/${total} done${current !== undefined ? ` · in progress ${current}` : ""}`,
|
|
29
|
+
actions: "/plan approve [mode|fresh] to approve · /plan reject to reject · type to give feedback",
|
|
30
|
+
notFound: "No plan awaiting approval",
|
|
31
|
+
unavailable: "This session has no Plan capability",
|
|
32
|
+
invalidMode: (arg, usage) => `Invalid execution mode: ${arg} (${usage})`,
|
|
33
|
+
approved: (version, mode) => `Approved plan v${version}; running in ${mode}`,
|
|
34
|
+
rejected: (version) => `Rejected plan v${version} (still in Plan mode)`,
|
|
35
|
+
},
|
|
36
|
+
dialog: {
|
|
37
|
+
title: "Plan awaiting approval",
|
|
38
|
+
optionApprove: "Approve and run",
|
|
39
|
+
optionApproveFresh: "Approve, run in fresh context",
|
|
40
|
+
optionRevise: (ellipsis) => `Keep revising${ellipsis}`,
|
|
41
|
+
optionReject: "Reject and leave Plan mode",
|
|
42
|
+
modeBack: (mode) => `Back to the previous mode (${mode})`,
|
|
43
|
+
modeHeadingFresh: "Run in a fresh context; execution mode",
|
|
44
|
+
modeHeading: "Execution mode",
|
|
45
|
+
editing: (ellipsis) => `Editing in the external editor${ellipsis}`,
|
|
46
|
+
version: (version) => `Plan v${version}`,
|
|
47
|
+
stepCount: (n) => plural(n, "step"),
|
|
48
|
+
edited: "Edited in the editor: approval runs the edited plan",
|
|
49
|
+
moreSteps: (ellipsis, n) => ` ${ellipsis} ${plural(n, "more step")} (/plan shows all)`,
|
|
50
|
+
feedbackCompact: "Feedback",
|
|
51
|
+
feedback: "Feedback (stays in Plan mode; the model rewrites the plan)",
|
|
52
|
+
hintMainCompact: (arrows, edit) => `${arrows} Enter${edit ? " · e edit" : ""} · Esc stay in Plan`,
|
|
53
|
+
hintMain: (arrows, edit) => `${arrows} select · Enter confirm${edit ? " · e edit plan" : ""} · Esc stay in Plan`,
|
|
54
|
+
hintModeCompact: (arrows) => `${arrows} Enter · Esc back`,
|
|
55
|
+
hintMode: (arrows) => `${arrows} select · Enter confirm · Esc back`,
|
|
56
|
+
hintReviseCompact: (edit) => `Enter send${edit ? " · Ctrl+E editor" : ""} · Esc back`,
|
|
57
|
+
hintRevise: (edit) => `Enter send${edit ? " · Ctrl+E external editor" : ""} · Esc back`,
|
|
58
|
+
hintEditing: "Save and close the editor to come back here",
|
|
59
|
+
},
|
|
60
|
+
flow: {
|
|
61
|
+
pending: (version) => `Plan v${version} awaits approval: /plan opens the dialog`,
|
|
62
|
+
approved: (version, mode) => `Approved plan v${version}; running in ${mode}`,
|
|
63
|
+
approvedFresh: (version, sessionId, mode) => `Approved plan v${version}; running in ${mode} in new session ${sessionId}`,
|
|
64
|
+
rejectedExit: (version, mode) => `Rejected plan v${version}; back to ${mode}`,
|
|
65
|
+
rejectedStay: (version) => `Rejected plan v${version} (still in Plan mode; /plan to view)`,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
export const zh = {
|
|
69
|
+
usage: "用法:/plan [目标] | /plan approve [模式|fresh] | /plan reject",
|
|
70
|
+
status: {
|
|
71
|
+
proposed: "待审批",
|
|
72
|
+
approved: "已批准",
|
|
73
|
+
rejected: "已放弃",
|
|
74
|
+
superseded: "已被新版本取代",
|
|
75
|
+
},
|
|
76
|
+
untitled: "(无标题)",
|
|
77
|
+
command: {
|
|
78
|
+
modePlan: (back) => `模式:Plan(批准后回到 ${back})`,
|
|
79
|
+
mode: (mode) => `模式:${mode}`,
|
|
80
|
+
noPlanYet: "还没有计划:模型给出 <proposed_plan> 后在这里审批",
|
|
81
|
+
noPlan: "没有计划。/plan <目标> 进入 Plan 模式",
|
|
82
|
+
head: (version, status, title) => `计划 v${version} · ${status} · ${title}`,
|
|
83
|
+
file: (path) => `文件:${path}`,
|
|
84
|
+
steps: (n) => `步骤(${n}):`,
|
|
85
|
+
todos: (done, total, current) => `待办:${done}/${total} 完成${current !== undefined ? ` · 进行中 ${current}` : ""}`,
|
|
86
|
+
actions: "/plan approve [模式|fresh] 批准 · /plan reject 放弃 · 直接输入修改意见",
|
|
87
|
+
notFound: "没有待审批的计划",
|
|
88
|
+
unavailable: "当前会话没有 Plan 能力",
|
|
89
|
+
invalidMode: (arg, usage) => `执行模式无效:${arg}(${usage})`,
|
|
90
|
+
approved: (version, mode) => `已批准计划 v${version},以 ${mode} 执行`,
|
|
91
|
+
rejected: (version) => `已放弃计划 v${version}(仍在 Plan 模式)`,
|
|
92
|
+
},
|
|
93
|
+
dialog: {
|
|
94
|
+
title: "计划待审批",
|
|
95
|
+
optionApprove: "批准并执行",
|
|
96
|
+
optionApproveFresh: "批准,在新上下文执行",
|
|
97
|
+
optionRevise: (ellipsis) => `继续修改${ellipsis}`,
|
|
98
|
+
optionReject: "放弃,退出 Plan 模式",
|
|
99
|
+
modeBack: (mode) => `回到进入前的模式(${mode})`,
|
|
100
|
+
modeHeadingFresh: "在新上下文执行,执行模式",
|
|
101
|
+
modeHeading: "执行模式",
|
|
102
|
+
editing: (ellipsis) => `正在外部编辑器里编辑${ellipsis}`,
|
|
103
|
+
version: (version) => `计划 v${version}`,
|
|
104
|
+
stepCount: (n) => `${n} 步`,
|
|
105
|
+
edited: "已在编辑器里修改:批准时以修改后的计划执行",
|
|
106
|
+
moreSteps: (ellipsis, n) => ` ${ellipsis} 另 ${n} 步(/plan 查看全部)`,
|
|
107
|
+
feedbackCompact: "修改意见",
|
|
108
|
+
feedback: "修改意见(留在 Plan 模式,模型据此重写计划)",
|
|
109
|
+
hintMainCompact: (arrows, edit) => `${arrows} Enter${edit ? " · e 编辑" : ""} · Esc 留在 Plan`,
|
|
110
|
+
hintMain: (arrows, edit) => `${arrows} 选择 · Enter 确认${edit ? " · e 编辑计划" : ""} · Esc 留在 Plan`,
|
|
111
|
+
hintModeCompact: (arrows) => `${arrows} Enter · Esc 返回`,
|
|
112
|
+
hintMode: (arrows) => `${arrows} 选择 · Enter 确认 · Esc 返回`,
|
|
113
|
+
hintReviseCompact: (edit) => `Enter 发送${edit ? " · Ctrl+E 编辑器" : ""} · Esc 返回`,
|
|
114
|
+
hintRevise: (edit) => `Enter 发送${edit ? " · Ctrl+E 外部编辑器" : ""} · Esc 返回`,
|
|
115
|
+
hintEditing: "保存并关闭编辑器后回到这里",
|
|
116
|
+
},
|
|
117
|
+
flow: {
|
|
118
|
+
pending: (version) => `计划 v${version} 待审批:/plan 打开审批框`,
|
|
119
|
+
approved: (version, mode) => `已批准计划 v${version},以 ${mode} 执行`,
|
|
120
|
+
approvedFresh: (version, sessionId, mode) => `已批准计划 v${version},在新会话 ${sessionId} 以 ${mode} 执行`,
|
|
121
|
+
rejectedExit: (version, mode) => `已放弃计划 v${version},回到 ${mode}`,
|
|
122
|
+
rejectedStay: (version) => `已放弃计划 v${version}(仍在 Plan 模式,/plan 查看)`,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息目录:print(键名规范见 docs/i18n.md)。[W6-C0 建空壳,W6-I3 迁入 `src/modes/{print,rpc,acp}/**`]
|
|
3
|
+
*
|
|
4
|
+
* en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
|
|
5
|
+
* 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
|
|
6
|
+
* RPC / ACP 的 `error` / `message` 是人读文本,宿主按 `code` 判断(docs/rpc.md);JSON 字段名不在这里。
|
|
7
|
+
*/
|
|
8
|
+
export declare const en: {
|
|
9
|
+
/** `ama -p` 的 stderr。 */
|
|
10
|
+
print: {
|
|
11
|
+
stdinIgnored: (wait: string) => string;
|
|
12
|
+
stdinWaiting: string;
|
|
13
|
+
seconds: (n: number) => string;
|
|
14
|
+
millis: (n: number) => string;
|
|
15
|
+
needsPrompt: string;
|
|
16
|
+
retry: (attempt: number, max: number, seconds: number, error: string) => string;
|
|
17
|
+
modelFailed: string;
|
|
18
|
+
planPending: (version: number, where: string) => string;
|
|
19
|
+
limitTurns: (limit: number) => string;
|
|
20
|
+
limitCost: (limit: string, spent: string) => string;
|
|
21
|
+
denied: (count: number, tools: readonly string[], reason: string) => string;
|
|
22
|
+
};
|
|
23
|
+
/** RPC 响应的 `error`(人读)。 */
|
|
24
|
+
rpc: {
|
|
25
|
+
unknownCommand: (type: string) => string;
|
|
26
|
+
parseFailed: (error: string) => string;
|
|
27
|
+
missingType: string;
|
|
28
|
+
unsupported: string;
|
|
29
|
+
noPlan: string;
|
|
30
|
+
badMode: (modes: readonly string[]) => string;
|
|
31
|
+
};
|
|
32
|
+
/** ACP 服务端(`ama --mode acp`)。 */
|
|
33
|
+
acp: {
|
|
34
|
+
missingParam: (key: string) => string;
|
|
35
|
+
promptNotArray: string;
|
|
36
|
+
unparsable: (reason: string) => string;
|
|
37
|
+
missingProtocolVersion: string;
|
|
38
|
+
fixedCwd: (cwd: string, got: string) => string;
|
|
39
|
+
sessionNotFound: (id: string, error: string) => string;
|
|
40
|
+
busy: string;
|
|
41
|
+
modelFailed: string;
|
|
42
|
+
unknownMode: (mode: string) => string;
|
|
43
|
+
allowOnce: string;
|
|
44
|
+
allowAlways: string;
|
|
45
|
+
rejectOnce: string;
|
|
46
|
+
truncated: (length: number) => string;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export declare const zh: {
|
|
50
|
+
print: {
|
|
51
|
+
stdinIgnored: (wait: string) => string;
|
|
52
|
+
stdinWaiting: string;
|
|
53
|
+
seconds: (n: number) => string;
|
|
54
|
+
millis: (n: number) => string;
|
|
55
|
+
needsPrompt: string;
|
|
56
|
+
retry: (attempt: number, max: number, seconds: number, error: string) => string;
|
|
57
|
+
modelFailed: string;
|
|
58
|
+
planPending: (version: number, where: string) => string;
|
|
59
|
+
limitTurns: (limit: number) => string;
|
|
60
|
+
limitCost: (limit: string, spent: string) => string;
|
|
61
|
+
denied: (count: number, tools: readonly string[], reason: string) => string;
|
|
62
|
+
};
|
|
63
|
+
rpc: {
|
|
64
|
+
unknownCommand: (type: string) => string;
|
|
65
|
+
parseFailed: (error: string) => string;
|
|
66
|
+
missingType: string;
|
|
67
|
+
unsupported: string;
|
|
68
|
+
noPlan: string;
|
|
69
|
+
badMode: (modes: readonly string[]) => string;
|
|
70
|
+
};
|
|
71
|
+
acp: {
|
|
72
|
+
missingParam: (key: string) => string;
|
|
73
|
+
promptNotArray: string;
|
|
74
|
+
unparsable: (reason: string) => string;
|
|
75
|
+
missingProtocolVersion: string;
|
|
76
|
+
fixedCwd: (cwd: string, got: string) => string;
|
|
77
|
+
sessionNotFound: (id: string, error: string) => string;
|
|
78
|
+
busy: string;
|
|
79
|
+
modelFailed: string;
|
|
80
|
+
unknownMode: (mode: string) => string;
|
|
81
|
+
allowOnce: string;
|
|
82
|
+
allowAlways: string;
|
|
83
|
+
rejectOnce: string;
|
|
84
|
+
truncated: (length: number) => string;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息目录:print(键名规范见 docs/i18n.md)。[W6-C0 建空壳,W6-I3 迁入 `src/modes/{print,rpc,acp}/**`]
|
|
3
|
+
*
|
|
4
|
+
* en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
|
|
5
|
+
* 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
|
|
6
|
+
* RPC / ACP 的 `error` / `message` 是人读文本,宿主按 `code` 判断(docs/rpc.md);JSON 字段名不在这里。
|
|
7
|
+
*/
|
|
8
|
+
import { plural } from "../format.js";
|
|
9
|
+
export const en = {
|
|
10
|
+
/** `ama -p` 的 stderr。 */
|
|
11
|
+
print: {
|
|
12
|
+
stdinIgnored: (wait) => `ama: no piped input within ${wait}, ignored; to wait for it, end the arguments with -\n`,
|
|
13
|
+
stdinWaiting: "ama: waiting for stdin to end (Ctrl+D ends it; the prompt can also be an argument)…\n",
|
|
14
|
+
seconds: (n) => plural(n, "second"),
|
|
15
|
+
millis: (n) => `${n} ms`,
|
|
16
|
+
needsPrompt: "ama: -p needs a prompt (positional argument or stdin pipe)\n",
|
|
17
|
+
retry: (attempt, max, seconds, error) => `ama: ↻ retry ${attempt}/${max} (in ${seconds}s): ${error}\n`,
|
|
18
|
+
modelFailed: "model call failed",
|
|
19
|
+
planPending: (version, where) => `ama: plan v${version} saved, awaiting approval (not executed): ${where}; -p does not approve on anyone's behalf — ` +
|
|
20
|
+
"approve it in the interactive UI or via RPC plan_response, or set plan.unattended: approve to let -p approve and continue",
|
|
21
|
+
limitTurns: (limit) => `ama: reached the turn limit ${limit} (--max-turns / limits.maxTurns); run ended before finishing`,
|
|
22
|
+
limitCost: (limit, spent) => `ama: reached the cost limit ${limit} (spent ${spent}; --max-cost / limits.maxCostUsd); run ended before finishing`,
|
|
23
|
+
denied: (count, tools, reason) => `ama: ${plural(count, "tool call")} denied: ${tools.join(", ")}${reason !== "" ? ` (${reason})` : ""}; ` +
|
|
24
|
+
"-p has no one to approve; to allow them use --permission-mode auto-edit|auto or --allow <rule>",
|
|
25
|
+
},
|
|
26
|
+
/** RPC 响应的 `error`(人读)。 */
|
|
27
|
+
rpc: {
|
|
28
|
+
unknownCommand: (type) => `unknown command: ${type}`,
|
|
29
|
+
parseFailed: (error) => `JSON parse failed: ${error}`,
|
|
30
|
+
missingType: "missing type",
|
|
31
|
+
unsupported: "this session does not support this command",
|
|
32
|
+
noPlan: "this session has no plan extension",
|
|
33
|
+
badMode: (modes) => `mode must be ${modes.join(" | ")}`,
|
|
34
|
+
},
|
|
35
|
+
/** ACP 服务端(`ama --mode acp`)。 */
|
|
36
|
+
acp: {
|
|
37
|
+
missingParam: (key) => `missing ${key}`,
|
|
38
|
+
promptNotArray: "prompt must be an array of content blocks",
|
|
39
|
+
unparsable: (reason) => `ACP: unparsable input (${reason})`,
|
|
40
|
+
missingProtocolVersion: "missing protocolVersion",
|
|
41
|
+
fixedCwd: (cwd, got) => `the session directory of ama --mode acp is fixed to the start directory ${cwd} (got ${got})`,
|
|
42
|
+
sessionNotFound: (id, error) => `session ${id} not found: ${error}`,
|
|
43
|
+
busy: "the current session is running; send session/cancel first",
|
|
44
|
+
modelFailed: "model request failed",
|
|
45
|
+
unknownMode: (mode) => `unknown mode: ${mode}`,
|
|
46
|
+
allowOnce: "Allow",
|
|
47
|
+
allowAlways: "Allow for this session",
|
|
48
|
+
rejectOnce: "Deny",
|
|
49
|
+
truncated: (length) => `…(truncated, ${plural(length, "character")} in total)`,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
export const zh = {
|
|
53
|
+
print: {
|
|
54
|
+
stdinIgnored: (wait) => `ama: 未在 ${wait}内收到管道输入,已忽略;需要等待请在末尾加 -\n`,
|
|
55
|
+
stdinWaiting: "ama: 正在等待 stdin 输入结束(Ctrl+D 结束;提示也可以直接写成参数)…\n",
|
|
56
|
+
seconds: (n) => `${n} 秒`,
|
|
57
|
+
millis: (n) => `${n} 毫秒`,
|
|
58
|
+
needsPrompt: "ama: -p 需要提示(位置参数或 stdin 管道)\n",
|
|
59
|
+
retry: (attempt, max, seconds, error) => `ama: ↻ 重试 ${attempt}/${max}(${seconds}s 后):${error}\n`,
|
|
60
|
+
modelFailed: "模型调用失败",
|
|
61
|
+
planPending: (version, where) => `ama: 计划 v${version} 已落盘、待审批(未执行):${where};-p 不替人批准——` +
|
|
62
|
+
"在交互界面或 RPC plan_response 里审批,或设 plan.unattended: approve 让 -p 批准后接着执行",
|
|
63
|
+
limitTurns: (limit) => `ama: 已达到回合上限 ${limit}(--max-turns / limits.maxTurns),运行在完成前结束`,
|
|
64
|
+
limitCost: (limit, spent) => `ama: 已达到费用上限 ${limit}(累计 ${spent};--max-cost / limits.maxCostUsd),运行在完成前结束`,
|
|
65
|
+
denied: (count, tools, reason) => `ama: ${count} 次工具调用被拒:${tools.join("、")}${reason !== "" ? `(${reason})` : ""};` +
|
|
66
|
+
"-p 没有人审批,需要放行时用 --permission-mode auto-edit|auto 或 --allow <规则>",
|
|
67
|
+
},
|
|
68
|
+
rpc: {
|
|
69
|
+
unknownCommand: (type) => `未知命令:${type}`,
|
|
70
|
+
parseFailed: (error) => `JSON 解析失败:${error}`,
|
|
71
|
+
missingType: "缺少 type",
|
|
72
|
+
unsupported: "该会话不支持此命令",
|
|
73
|
+
noPlan: "该会话没有装配 plan 扩展",
|
|
74
|
+
badMode: (modes) => `mode 应为 ${modes.join(" | ")}`,
|
|
75
|
+
},
|
|
76
|
+
acp: {
|
|
77
|
+
missingParam: (key) => `缺少 ${key}`,
|
|
78
|
+
promptNotArray: "prompt 应为内容块数组",
|
|
79
|
+
unparsable: (reason) => `ACP:无法解析的输入(${reason})`,
|
|
80
|
+
missingProtocolVersion: "缺少 protocolVersion",
|
|
81
|
+
fixedCwd: (cwd, got) => `ama --mode acp 的会话目录固定为启动目录 ${cwd}(收到 ${got})`,
|
|
82
|
+
sessionNotFound: (id, error) => `找不到会话 ${id}:${error}`,
|
|
83
|
+
busy: "当前会话正在运行,先 session/cancel",
|
|
84
|
+
modelFailed: "模型请求失败",
|
|
85
|
+
unknownMode: (mode) => `未知模式:${mode}`,
|
|
86
|
+
allowOnce: "允许",
|
|
87
|
+
allowAlways: "本会话允许",
|
|
88
|
+
rejectOnce: "拒绝",
|
|
89
|
+
truncated: (length) => `…(已截断,共 ${length} 字符)`,
|
|
90
|
+
},
|
|
91
|
+
};
|