@armadra/agent 0.5.0 → 0.6.0
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 +177 -294
- package/CHANGELOG.zh-CN.md +442 -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/enrich.js +2 -7
- 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/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 +33 -0
- package/dist/auth/chatgpt/cli.js +252 -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 +28307 -13241
- 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.d.ts +58 -0
- package/dist/cli/choice-prompt.js +142 -0
- 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 +5 -0
- package/dist/cli/compose-providers.js +32 -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 +137 -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.d.ts +1 -1
- package/dist/cli/subcommands/models-cache-probe.js +26 -32
- package/dist/cli/subcommands/models-discover.d.ts +3 -0
- package/dist/cli/subcommands/models-discover.js +44 -21
- package/dist/cli/subcommands/models.d.ts +1 -1
- package/dist/cli/subcommands/models.js +29 -22
- 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 +2 -2
- package/dist/cli/subcommands/providers.js +48 -59
- 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 +101 -68
- 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 +3 -2
- 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 +78 -0
- package/dist/config/settings-registry.js +184 -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 +2169 -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 +187 -0
- package/dist/i18n/messages/auth.js +189 -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 +244 -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 +289 -0
- package/dist/i18n/messages/config-keys.js +292 -0
- package/dist/i18n/messages/config.d.ts +502 -0
- package/dist/i18n/messages/config.js +239 -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 +103 -0
- package/dist/i18n/messages/interactive-startup.js +104 -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 +493 -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 +190 -0
- package/dist/i18n/messages/panels.js +189 -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 +348 -0
- package/dist/i18n/messages/settings.js +336 -0
- package/dist/i18n/messages/subcommands-config.d.ts +111 -0
- package/dist/i18n/messages/subcommands-config.js +127 -0
- package/dist/i18n/messages/subcommands.d.ts +548 -0
- package/dist/i18n/messages/subcommands.js +474 -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 +17 -0
- package/dist/modes/commands-core.js +101 -61
- 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 +93 -38
- 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.d.ts +49 -0
- package/dist/modes/interactive/confirm-dialog.js +120 -0
- 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 +25 -22
- package/dist/modes/interactive/key-dispatch.d.ts +18 -0
- package/dist/modes/interactive/key-dispatch.js +39 -13
- package/dist/modes/interactive/line/line-editor.js +2 -1
- package/dist/modes/interactive/line/line-mode.d.ts +2 -0
- package/dist/modes/interactive/line/line-mode.js +24 -4
- 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/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.js +41 -29
- 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 +30 -0
- package/dist/permissions/bypass.js +45 -0
- 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/settings-list.d.ts +61 -0
- package/dist/tui/components/settings-list.js +135 -0
- package/dist/tui/keybindings.d.ts +6 -1
- package/dist/tui/keybindings.js +18 -6
- 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 +625 -0
- package/docs/en/rpc.md +361 -0
- package/docs/en/sessions.md +219 -0
- package/docs/en/tui.md +527 -0
- package/docs/host-api.md +18 -17
- package/docs/memory.md +172 -0
- package/docs/permissions.md +3 -2
- package/docs/providers.md +67 -1
- package/docs/rpc.md +31 -3
- package/docs/session-format.md +8 -2
- package/docs/sessions.md +29 -1
- package/docs/tui.md +189 -21
- package/package.json +8 -3
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
* (docs/providers.md「配置目录」)。规则与 schema.ts 的 `validateConfig` 一一对应:未知字段在那里是
|
|
4
4
|
* warning、这里是 `additionalProperties: false`;渠道引用(模型 `channels` 指向已定义的渠道)这类跨字段
|
|
5
5
|
* 规则 JSON Schema 表达不了,只在 `validateConfig` 里查。一致性由 json-schema.test.ts 的正反例守住。
|
|
6
|
-
* 顶层与各段的键(供应商内部除外)的 description / default 来自 key-docs.ts(`annotate
|
|
6
|
+
* 顶层与各段的键(供应商内部除外)的 description / default 来自 key-docs.ts(`annotate`);说明跟随界面
|
|
7
|
+
* 语言(D21),`ama init` 按当前语言重写。
|
|
7
8
|
*/
|
|
8
9
|
import { WARMING_MODES } from "../ai/cache/types.js";
|
|
9
10
|
import { PERMISSION_MODES_STRICT_FIRST } from "../permissions/types.js";
|
|
10
|
-
import {
|
|
11
|
+
import { msg } from "../i18n/index.js";
|
|
12
|
+
import { defaultFor, isDynamicDefault, keyDoc } from "./key-docs.js";
|
|
11
13
|
import { HOOK_TIMEOUT_MAX_MS, THINKING_LEVELS } from "./schema.js";
|
|
12
|
-
import { CACHE_RETENTIONS, CHANNEL_NAME_PATTERN, CHECKPOINT_MODES, SANDBOX_ENABLED_MODES, SANDBOX_NETWORK_MODES, CODEMODE_MODES, IMAGE_RESIZE_MODES, PLAN_BASH_MODES_STRICT_FIRST, PLAN_UNATTENDED_MODES, STATUS_LINE_MODES, TOOLS_PRESET_INPUTS, } from "./types.js";
|
|
14
|
+
import { CACHE_RETENTIONS, CHANNEL_NAME_PATTERN, CHECKPOINT_MODES, SANDBOX_ENABLED_MODES, SANDBOX_NETWORK_MODES, CODEMODE_MODES, IMAGE_RESIZE_MODES, PLAN_BASH_MODES_STRICT_FIRST, PLAN_UNATTENDED_MODES, STATUS_LINE_MODES, TOOLS_PRESET_INPUTS, LANGUAGE_SETTINGS, AGENT_BAR_MODES, CHATGPT_FLAVORS, MEMORY_SCOPES, MEMORY_SUBAGENT_MODES, } from "./types.js";
|
|
13
15
|
import { AGENT_ID_PATTERN } from "./schema-w5.js";
|
|
14
16
|
import { AGENTS_RESERVED_KEYS } from "./types-w5.js";
|
|
15
17
|
export const CONFIG_SCHEMA_FILE = "config.schema.json";
|
|
@@ -44,45 +46,47 @@ const oneOf = (values, description) => ({
|
|
|
44
46
|
enum: [...values],
|
|
45
47
|
...(description ? { description } : {}),
|
|
46
48
|
});
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
49
|
+
/** 供应商的 schema(说明按当前界面语言,每次生成时现取)。 */
|
|
50
|
+
function providerSchema() {
|
|
51
|
+
const m = msg().config.jsonSchema;
|
|
52
|
+
/** api 只查是字符串(与 validateConfig 一致),enum 给编辑器补全。 */
|
|
53
|
+
const api = {
|
|
54
|
+
type: "string",
|
|
55
|
+
description: m.api,
|
|
56
|
+
examples: KNOWN_APIS,
|
|
57
|
+
anyOf: [{ enum: KNOWN_APIS }, { type: "string" }],
|
|
58
|
+
};
|
|
59
|
+
const compat = {
|
|
60
|
+
type: "object",
|
|
61
|
+
description: m.compat,
|
|
62
|
+
properties: {
|
|
63
|
+
sendPromptCacheKey: bool(),
|
|
64
|
+
sendSessionAffinityHeaders: bool(),
|
|
65
|
+
supportsLongCacheRetention: bool(),
|
|
66
|
+
supportsExplicitPromptCacheMode: bool(),
|
|
67
|
+
cacheReporting: oneOf(["auto", "silent", "reported"]),
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
const model = (description) => ({
|
|
67
71
|
type: "object",
|
|
68
72
|
description,
|
|
69
73
|
required: ["id"],
|
|
70
74
|
properties: {
|
|
71
|
-
id: str(
|
|
75
|
+
id: str(m.modelId),
|
|
72
76
|
name: str(),
|
|
73
77
|
api,
|
|
74
|
-
baseUrl: str(
|
|
75
|
-
contextWindow: num(1, undefined,
|
|
76
|
-
maxTokens: num(1, undefined,
|
|
78
|
+
baseUrl: str(m.modelBaseUrl),
|
|
79
|
+
contextWindow: num(1, undefined, m.contextWindow),
|
|
80
|
+
maxTokens: num(1, undefined, m.maxTokens),
|
|
77
81
|
reasoning: bool(),
|
|
78
82
|
input: {
|
|
79
83
|
type: "array",
|
|
80
84
|
items: { enum: ["text", "image"] },
|
|
81
|
-
description:
|
|
85
|
+
description: m.input,
|
|
82
86
|
},
|
|
83
|
-
channels: { ...strings, description:
|
|
87
|
+
channels: { ...strings, description: m.modelChannels },
|
|
84
88
|
modelsDev: {
|
|
85
|
-
description:
|
|
89
|
+
description: m.modelsDev,
|
|
86
90
|
anyOf: [{ type: "string", pattern: "^[^/]+/.+$" }, { const: false }],
|
|
87
91
|
},
|
|
88
92
|
headers: stringRecord,
|
|
@@ -92,37 +96,37 @@ function model(description) {
|
|
|
92
96
|
thinkingLevelMap: { type: "object" },
|
|
93
97
|
samplingParams: { type: "object" },
|
|
94
98
|
},
|
|
95
|
-
};
|
|
99
|
+
});
|
|
100
|
+
const channel = object({
|
|
101
|
+
api,
|
|
102
|
+
baseUrl: str(m.baseUrl),
|
|
103
|
+
apiKey: str(m.channelApiKey),
|
|
104
|
+
authHeader: { type: "object" },
|
|
105
|
+
headers: stringRecord,
|
|
106
|
+
compat,
|
|
107
|
+
}, { required: ["api", "baseUrl"] });
|
|
108
|
+
return object({
|
|
109
|
+
name: str(),
|
|
110
|
+
api,
|
|
111
|
+
baseUrl: str(),
|
|
112
|
+
apiKey: str(m.apiKey),
|
|
113
|
+
envKeys: strings,
|
|
114
|
+
authHeader: { type: "object" },
|
|
115
|
+
headers: stringRecord,
|
|
116
|
+
compat,
|
|
117
|
+
requiresApiKey: bool(),
|
|
118
|
+
channels: {
|
|
119
|
+
type: "object",
|
|
120
|
+
description: m.channels,
|
|
121
|
+
minProperties: 1,
|
|
122
|
+
propertyNames: { pattern: CHANNEL_NAME_PATTERN.source },
|
|
123
|
+
additionalProperties: channel,
|
|
124
|
+
},
|
|
125
|
+
defaultChannel: str(m.defaultChannel),
|
|
126
|
+
models: { type: "array", items: model(m.models) },
|
|
127
|
+
modelOverrides: { type: "array", items: model(m.modelOverrides) },
|
|
128
|
+
});
|
|
96
129
|
}
|
|
97
|
-
const channel = object({
|
|
98
|
-
api,
|
|
99
|
-
baseUrl: str("接口地址"),
|
|
100
|
-
apiKey: str("$ENV / ${ENV} / !command / 字面量;缺省用供应商的 key"),
|
|
101
|
-
authHeader: { type: "object" },
|
|
102
|
-
headers: stringRecord,
|
|
103
|
-
compat,
|
|
104
|
-
}, { required: ["api", "baseUrl"] });
|
|
105
|
-
const provider = object({
|
|
106
|
-
name: str(),
|
|
107
|
-
api,
|
|
108
|
-
baseUrl: str(),
|
|
109
|
-
apiKey: str("$ENV / ${ENV} / !command / 字面量"),
|
|
110
|
-
envKeys: strings,
|
|
111
|
-
authHeader: { type: "object" },
|
|
112
|
-
headers: stringRecord,
|
|
113
|
-
compat,
|
|
114
|
-
requiresApiKey: bool(),
|
|
115
|
-
channels: {
|
|
116
|
-
type: "object",
|
|
117
|
-
description: "渠道:一个供应商下的多种接口",
|
|
118
|
-
minProperties: 1,
|
|
119
|
-
propertyNames: { pattern: CHANNEL_NAME_PATTERN.source },
|
|
120
|
-
additionalProperties: channel,
|
|
121
|
-
},
|
|
122
|
-
defaultChannel: str("首选渠道;缺省 channels 的第一个"),
|
|
123
|
-
models: { type: "array", items: model("自定义模型(同 id 整条替换)") },
|
|
124
|
-
modelOverrides: { type: "array", items: model("只改已有模型的元数据") },
|
|
125
|
-
});
|
|
126
130
|
// [W5-C0] 第五波的段(规则同 schema-w5.ts)
|
|
127
131
|
const agentEntry = object({
|
|
128
132
|
maxConcurrent: num(1, 64),
|
|
@@ -159,6 +163,31 @@ function w5Sections() {
|
|
|
159
163
|
todo: object({ reminder: num(0) }),
|
|
160
164
|
};
|
|
161
165
|
}
|
|
166
|
+
// [W6-C0] 第六波的段(规则同 schema-w6.ts)
|
|
167
|
+
function w6Sections() {
|
|
168
|
+
return {
|
|
169
|
+
memory: object({
|
|
170
|
+
enabled: bool(),
|
|
171
|
+
scopes: { type: "array", items: { enum: [...MEMORY_SCOPES] } },
|
|
172
|
+
indexMaxBytes: num(0, 1_048_576),
|
|
173
|
+
fileMaxBytes: num(1, 1_048_576),
|
|
174
|
+
maxFiles: num(1, 10_000),
|
|
175
|
+
subagents: oneOf(MEMORY_SUBAGENT_MODES),
|
|
176
|
+
}),
|
|
177
|
+
auth: object({
|
|
178
|
+
chatgpt: object({
|
|
179
|
+
flavor: oneOf(CHATGPT_FLAVORS),
|
|
180
|
+
clientId: str(),
|
|
181
|
+
issuer: str(),
|
|
182
|
+
originator: str(),
|
|
183
|
+
redirectPorts: {
|
|
184
|
+
type: "array",
|
|
185
|
+
items: { type: "integer", minimum: 0, maximum: 65535 },
|
|
186
|
+
},
|
|
187
|
+
}),
|
|
188
|
+
}),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
162
191
|
/** 给顶层与各段的键写上 description 与 default(key-docs.ts);供应商内部不动。 */
|
|
163
192
|
function annotate(properties, prefix = "") {
|
|
164
193
|
for (const [key, shared] of Object.entries(properties)) {
|
|
@@ -166,7 +195,7 @@ function annotate(properties, prefix = "") {
|
|
|
166
195
|
// 片段(strings、bool() 等)在多处复用:先浅拷贝再写说明
|
|
167
196
|
const schema = { ...shared };
|
|
168
197
|
properties[key] = schema;
|
|
169
|
-
const description =
|
|
198
|
+
const description = keyDoc(path);
|
|
170
199
|
if (description !== undefined)
|
|
171
200
|
schema["description"] = description;
|
|
172
201
|
const nested = schema["properties"];
|
|
@@ -175,7 +204,7 @@ function annotate(properties, prefix = "") {
|
|
|
175
204
|
continue;
|
|
176
205
|
}
|
|
177
206
|
const value = defaultFor(path);
|
|
178
|
-
if (value !== undefined &&
|
|
207
|
+
if (value !== undefined && !isDynamicDefault(path))
|
|
179
208
|
schema["default"] = value;
|
|
180
209
|
}
|
|
181
210
|
}
|
|
@@ -193,15 +222,15 @@ function buildBaseSchema() {
|
|
|
193
222
|
...object({
|
|
194
223
|
$schema: str(),
|
|
195
224
|
version: { const: 1 },
|
|
196
|
-
defaultModel: str(
|
|
225
|
+
defaultModel: str(),
|
|
197
226
|
thinkingLevel: oneOf(THINKING_LEVELS),
|
|
198
|
-
providers: { type: "object", additionalProperties:
|
|
227
|
+
providers: { type: "object", additionalProperties: providerSchema() },
|
|
199
228
|
permission: object({
|
|
200
229
|
mode: oneOf(PERMISSION_MODES_STRICT_FIRST),
|
|
201
230
|
allow: strings,
|
|
202
231
|
deny: strings,
|
|
203
232
|
builtinDeny: { anyOf: [{ type: "boolean" }, strings] },
|
|
204
|
-
autoModel: str(
|
|
233
|
+
autoModel: str(),
|
|
205
234
|
autoSafeCommands: strings,
|
|
206
235
|
}),
|
|
207
236
|
compaction: object({
|
|
@@ -244,6 +273,9 @@ function buildBaseSchema() {
|
|
|
244
273
|
animation: bool(),
|
|
245
274
|
restoreOnCancel: bool(),
|
|
246
275
|
statusLine: oneOf(STATUS_LINE_MODES),
|
|
276
|
+
language: oneOf(LANGUAGE_SETTINGS),
|
|
277
|
+
replyLanguage: str(),
|
|
278
|
+
agentBar: oneOf(AGENT_BAR_MODES),
|
|
247
279
|
}),
|
|
248
280
|
skills: object({ dirs: strings }),
|
|
249
281
|
cache: object({
|
|
@@ -261,11 +293,12 @@ function buildBaseSchema() {
|
|
|
261
293
|
}),
|
|
262
294
|
sandbox: object({
|
|
263
295
|
enabled: oneOf(SANDBOX_ENABLED_MODES),
|
|
264
|
-
bash: oneOf(SANDBOX_ENABLED_MODES
|
|
265
|
-
network: oneOf(SANDBOX_NETWORK_MODES
|
|
266
|
-
writable:
|
|
296
|
+
bash: oneOf(SANDBOX_ENABLED_MODES),
|
|
297
|
+
network: oneOf(SANDBOX_NETWORK_MODES),
|
|
298
|
+
writable: strings,
|
|
267
299
|
}),
|
|
268
300
|
...w5Sections(),
|
|
301
|
+
...w6Sections(),
|
|
269
302
|
}),
|
|
270
303
|
required: ["version"],
|
|
271
304
|
};
|
|
@@ -2,20 +2,31 @@
|
|
|
2
2
|
* config.json 每个键的说明与缺省值:config.schema.json(编辑器悬停)与 `ama config show`(来源 default
|
|
3
3
|
* 的行)共用这一张表。
|
|
4
4
|
*
|
|
5
|
-
* - `description`
|
|
6
|
-
* `DEFAULT_CACHE_CONFIG`(types.ts)与代码里的隐式缺省(`IMPLICIT_DEFAULTS`)合成 `DISPLAY_DEFAULTS`;
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
5
|
+
* - `description` 写在消息目录 `src/i18n/messages/config-keys.ts`(中英两份,`keyDoc(path)` 按界面
|
|
6
|
+
* 语言取);缺省值不手写,从 `DEFAULT_CONFIG`(merge.ts)、`DEFAULT_CACHE_CONFIG`(types.ts)与代码里的隐式缺省(`IMPLICIT_DEFAULTS`)合成 `DISPLAY_DEFAULTS`;
|
|
7
|
+
* - 缺省值取决于运行时的键(自动选模型、跟随预设等)列在消息目录的 `dynamicDefaults`
|
|
8
|
+
* (`isDynamicDefault(path)`),schema 里不写 `default`,说明里写规则;
|
|
9
9
|
* - 一致性由 json-schema.test.ts 守住:schema 的每个键都在表里,表里的每个键 schema 都有,缺省值与
|
|
10
10
|
* DISPLAY_DEFAULTS 相同,DISPLAY_DEFAULTS 本身通过 `validateConfig`。
|
|
11
11
|
*/
|
|
12
12
|
import { type AmaConfig } from "./types.js";
|
|
13
13
|
/** 全部有固定缺省值的键(展示用;运行时仍以 DEFAULT_CONFIG 合并)。 */
|
|
14
14
|
export declare const DISPLAY_DEFAULTS: Readonly<AmaConfig>;
|
|
15
|
-
/** 缺省值由运行时决定的键 →
|
|
16
|
-
export declare
|
|
17
|
-
/**
|
|
15
|
+
/** 缺省值由运行时决定的键 → 规则(当前界面语言;schema 不写 default)。 */
|
|
16
|
+
export declare function dynamicDefaults(): Readonly<Record<string, string>>;
|
|
17
|
+
/** 该键的缺省值是否由运行时决定(与语言无关)。 */
|
|
18
|
+
export declare function isDynamicDefault(path: string): boolean;
|
|
19
|
+
/** 键路径 → 说明(当前界面语言;段落本身也有一条)。 */
|
|
20
|
+
export declare function configKeyDocs(): Readonly<Record<string, string>>;
|
|
21
|
+
/** 一个键的说明(当前界面语言);没有说明返回 undefined。 */
|
|
22
|
+
export declare function keyDoc(path: string): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated 中文原表(第六波前的导出,供尚未迁移的调用方编译通过);新代码用 `keyDoc(path)` /
|
|
25
|
+
* `configKeyDocs()`。
|
|
26
|
+
*/
|
|
18
27
|
export declare const CONFIG_KEY_DOCS: Readonly<Record<string, string>>;
|
|
28
|
+
/** @deprecated 中文原表;新代码用 `dynamicDefaults()` / `isDynamicDefault(path)`。 */
|
|
29
|
+
export declare const DYNAMIC_DEFAULTS: Readonly<Record<string, string>>;
|
|
19
30
|
/** 叶子路径(段落不算)。 */
|
|
20
31
|
export declare function documentedLeaves(): string[];
|
|
21
32
|
/** 键路径的缺省值(DISPLAY_DEFAULTS 里取;没有返回 undefined)。 */
|
package/dist/config/key-docs.js
CHANGED
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
* config.json 每个键的说明与缺省值:config.schema.json(编辑器悬停)与 `ama config show`(来源 default
|
|
3
3
|
* 的行)共用这一张表。
|
|
4
4
|
*
|
|
5
|
-
* - `description`
|
|
6
|
-
* `DEFAULT_CACHE_CONFIG`(types.ts)与代码里的隐式缺省(`IMPLICIT_DEFAULTS`)合成 `DISPLAY_DEFAULTS`;
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
5
|
+
* - `description` 写在消息目录 `src/i18n/messages/config-keys.ts`(中英两份,`keyDoc(path)` 按界面
|
|
6
|
+
* 语言取);缺省值不手写,从 `DEFAULT_CONFIG`(merge.ts)、`DEFAULT_CACHE_CONFIG`(types.ts)与代码里的隐式缺省(`IMPLICIT_DEFAULTS`)合成 `DISPLAY_DEFAULTS`;
|
|
7
|
+
* - 缺省值取决于运行时的键(自动选模型、跟随预设等)列在消息目录的 `dynamicDefaults`
|
|
8
|
+
* (`isDynamicDefault(path)`),schema 里不写 `default`,说明里写规则;
|
|
9
9
|
* - 一致性由 json-schema.test.ts 守住:schema 的每个键都在表里,表里的每个键 schema 都有,缺省值与
|
|
10
10
|
* DISPLAY_DEFAULTS 相同,DISPLAY_DEFAULTS 本身通过 `validateConfig`。
|
|
11
11
|
*/
|
|
12
12
|
import { DEFAULT_IDLE_TIMEOUT_MS } from "../ai/http.js";
|
|
13
|
+
import { messagesFor, msg } from "../i18n/index.js";
|
|
13
14
|
import { DEFAULT_INLINE_BUDGET } from "../codemode/declarations.js";
|
|
14
15
|
import { DEFAULT_CONFIG, mergeConfig } from "./merge.js";
|
|
15
16
|
import { DEFAULT_CACHE_CONFIG, DEFAULT_CHECKPOINTS_CONFIG } from "./types.js";
|
|
@@ -21,7 +22,19 @@ const IMPLICIT_DEFAULTS = {
|
|
|
21
22
|
codemode: { inlineBudget: DEFAULT_INLINE_BUDGET, requireStrict: false },
|
|
22
23
|
cache: { ...DEFAULT_CACHE_CONFIG },
|
|
23
24
|
request: { idleTimeoutMs: DEFAULT_IDLE_TIMEOUT_MS },
|
|
24
|
-
ui: { compact: false, animation: true, restoreOnCancel: true },
|
|
25
|
+
ui: { compact: false, animation: true, restoreOnCancel: true, language: "auto" },
|
|
26
|
+
// [W6-C0] 第六波键的缺省(行为由各批次实现)
|
|
27
|
+
memory: {
|
|
28
|
+
enabled: false,
|
|
29
|
+
scopes: ["user", "project"],
|
|
30
|
+
indexMaxBytes: 4096,
|
|
31
|
+
fileMaxBytes: 16384,
|
|
32
|
+
maxFiles: 200,
|
|
33
|
+
subagents: "read",
|
|
34
|
+
},
|
|
35
|
+
auth: {
|
|
36
|
+
chatgpt: { flavor: "siwc", issuer: "https://auth.openai.com", originator: "codex_cli_rs" },
|
|
37
|
+
},
|
|
25
38
|
checkpoints: { ...DEFAULT_CHECKPOINTS_CONFIG },
|
|
26
39
|
sandbox: { enabled: "auto", bash: "off", network: "deny", writable: [] },
|
|
27
40
|
// [W5-C0] 第五波键的缺省(行为由各批次实现)
|
|
@@ -35,131 +48,33 @@ const IMPLICIT_DEFAULTS = {
|
|
|
35
48
|
};
|
|
36
49
|
/** 全部有固定缺省值的键(展示用;运行时仍以 DEFAULT_CONFIG 合并)。 */
|
|
37
50
|
export const DISPLAY_DEFAULTS = Object.freeze(mergeConfig(DEFAULT_CONFIG, IMPLICIT_DEFAULTS));
|
|
38
|
-
/** 缺省值由运行时决定的键 →
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
export const CONFIG_KEY_DOCS =
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
defaultModel: "缺省模型 provider/model 或 provider/model@channel;不写时零配置自动选择(ama config show 显示选了谁、为什么)",
|
|
63
|
-
thinkingLevel: "思考强度",
|
|
64
|
-
providers: "自定义供应商与对内置供应商的覆盖(docs/providers.md)",
|
|
65
|
-
permission: "权限(docs/permissions.md)",
|
|
66
|
-
"permission.mode": "权限模式;项目级只能更严",
|
|
67
|
-
"permission.allow": "放行规则,如 bash(npm test);项目级不能加",
|
|
68
|
-
"permission.deny": "拒绝规则,如 write(**/.env);各层累加",
|
|
69
|
-
"permission.builtinDeny": "内置 deny 表(.git/** 写、.ssh/** 读写):true 全部启用,false 全部移除,数组 = 要移除的规则原文;只认用户级",
|
|
70
|
-
"permission.autoModel": "auto 模式分类器的模型 provider/model;不写时用当前会话模型;只认用户级",
|
|
71
|
-
"permission.autoSafeCommands": "auto 模式安全名单追加(词前缀或含 * 的通配);只认用户级",
|
|
72
|
-
compaction: "自动压缩",
|
|
73
|
-
"compaction.enabled": "上下文接近上限时自动压缩",
|
|
74
|
-
"compaction.reserveTokens": "为回复预留的 token;剩余不足时触发压缩",
|
|
75
|
-
"compaction.keepRecentTokens": "压缩时原样保留的最近消息 token",
|
|
76
|
-
"compaction.prune": "档一裁剪(旧工具结果换成占位);只认用户级(第五波 W5-H1 起生效)",
|
|
77
|
-
"compaction.prune.keepResults": "保留最近 N 个工具结果不裁",
|
|
78
|
-
"compaction.prune.clearAtLeast": "一次至少能省这么多 token 才裁(避免频繁打断缓存);auto = max(20000, 0.1 × 上下文预算)",
|
|
79
|
-
"compaction.pruneExclude": "不被档一裁剪的工具名;只认用户级(第五波 W5-H1 起生效)",
|
|
80
|
-
retry: "请求失败重试",
|
|
81
|
-
"retry.enabled": "可重试的错误(限流、服务端错误、连接中断等)自动重试",
|
|
82
|
-
"retry.maxRetries": "最多重试次数",
|
|
83
|
-
"retry.baseDelayMs": "首次重试等待(毫秒,指数退避;有 Retry-After 时按它)",
|
|
84
|
-
"retry.maxDelayMs": "单次等待上限(毫秒)",
|
|
85
|
-
tools: "内置工具",
|
|
86
|
-
"tools.preset": "工具预设:default(六个工具;网络隔离时另加 codemode,todo 需在 tools.default 加 +todo)、minimal、codemode-only、coordinator;codemode 是 codemode-only 的旧名;项目级只能更严",
|
|
87
|
-
"tools.default": "在预设上微调:+name 加、-name 去,不带前缀的名字整组替换预设的内置工具;只认用户级",
|
|
88
|
-
"tools.maxToolResultChars": "单条工具结果进上下文的字符上限,超出保留首尾",
|
|
89
|
-
"tools.bashTimeoutMs": "bash 缺省超时(毫秒,单次调用可覆盖,最大 600000)",
|
|
90
|
-
"tools.disabled": "禁用的工具名;各层累加",
|
|
91
|
-
codemode: "codemode:模型写脚本批量调用工具(docs/codemode.md)",
|
|
92
|
-
"codemode.mode": "off | on | only;不写时跟随预设:default → on(Node ≥ 25;Node 22 / 24 → off)、codemode-only → only、minimal / coordinator → off;项目级只接受 off",
|
|
93
|
-
"codemode.inlineBudget": "only 模式在描述里内联工具声明的预算(估算 token),超出只列名字",
|
|
94
|
-
"codemode.requireStrict": "true:运行时 Node 不隔离网络(Node 22 / 24)时直接禁用 codemode",
|
|
95
|
-
hooks: "Hook 设置(Hook 本身写在 hooks.json)",
|
|
96
|
-
"hooks.timeoutMs": "单个 Hook 命令的缺省超时(毫秒)",
|
|
97
|
-
ui: "终端界面",
|
|
98
|
-
"ui.theme": "配色主题:dark、light,或 auto(按 COLORFGBG 猜,不发终端查询,猜不出用 dark)",
|
|
99
|
-
"ui.markdown": "按 Markdown 渲染回复",
|
|
100
|
-
"ui.showThinking": "思考内容的显示方式",
|
|
101
|
-
"ui.tuiMode": "终端界面形态(目前只有 regular)",
|
|
102
|
-
"ui.quietStartup": "启动画面详略",
|
|
103
|
-
"ui.ascii": "ASCII 字形(> * L、+ - |);不写时自动检测:区域设置不含 UTF-8、TERM=linux、旧 conhost 时开启;AMA_ASCII=1/0 覆盖",
|
|
104
|
-
"ui.compact": "消息区块间不空行、启动头不画框",
|
|
105
|
-
"ui.animation": "false:运行中 spinner 静止,只在秒数变化时重绘",
|
|
106
|
-
"ui.restoreOnCancel": "运行中 Esc 中断、本回合还没有任何回复或工具调用时,撤回该回合并把原消息放回输入框",
|
|
107
|
-
"ui.statusLine": "底部信息行:full 两行(速率行 + 状态行),compact 一行;运行时 Ctrl+G 或 /statusline 切换(第五波 W5-A 起生效)",
|
|
108
|
-
skills: "Skill",
|
|
109
|
-
"skills.dirs": "追加的 Skill 目录;各层累加",
|
|
110
|
-
cache: "提示缓存;整段只认用户级",
|
|
111
|
-
request: "模型请求;整段只认用户级 / profile",
|
|
112
|
-
"request.idleTimeoutMs": "流空闲超时(毫秒):等响应头或两块数据之间超过即判卡住并按可重试错误重试;0 关闭;AMA_IDLE_TIMEOUT_MS 覆盖",
|
|
113
|
-
"cache.warming": "保温:off 关闭,streaming 生成期间保温,idle 空闲时也保温",
|
|
114
|
-
"cache.retention": "缓存时长档:none、short、long(供应商支持时)",
|
|
115
|
-
"cache.minSavingsUsd": "保温的最低期望节省(美元)",
|
|
116
|
-
"cache.missNotices": "在消息区提示缓存未命中与上下文余量",
|
|
117
|
-
"cache.warmSubagents": "子会话(task)也保温",
|
|
118
|
-
checkpoints: "检查点:回滚代码用的文件备份(docs/sessions.md「检查点与文件备份」)",
|
|
119
|
-
"checkpoints.mode": "tools:跟踪 edit / write 改过的文件;shadow-git:另用影子 git 快照整个工作目录,bash 等直接改动也能回滚(需要 git,大目录自动降级为 tools);off:关闭;AMA_CHECKPOINTS 覆盖;项目级只接受 off",
|
|
120
|
-
"checkpoints.maxFileBytes": "单个文件的备份上限(字节),超出不备份、回滚时报告无法恢复;项目级只能调小",
|
|
121
|
-
"checkpoints.keep": "可回滚的最近检查点数,更早的不再列为回滚点;只认用户级 / profile",
|
|
122
|
-
sandbox: '操作系统级沙箱(docs/sandbox.md);只认用户级 / profile,项目级只接受 network: "deny"',
|
|
123
|
-
"sandbox.enabled": "auto:探测到可用的 macOS sandbox-exec / Linux bwrap、unshare 就用(codemode 子进程拒绝网络与写入;Node 22 / 24 上 codemode 因此网络隔离);off:不用;AMA_SANDBOX=off 覆盖",
|
|
124
|
-
"sandbox.bash": "auto:bash 经 sandbox-exec / bwrap 运行(unshare 不算),写入只限工作区、临时目录、输出目录与 sandbox.writable,default 模式下沙箱内命令免审批;off:不用;只认用户级 / profile",
|
|
125
|
-
"sandbox.network": "bash 沙箱里的网络:deny 拒绝(沙箱内免审批的前提);allow 允许联网但写入仍受限、照常审批;项目级只能设 deny",
|
|
126
|
-
"sandbox.writable": "bash 沙箱追加的可写目录(绝对路径或 ~/…);只认用户级 / profile",
|
|
127
|
-
// [W5-C0] 第五波(docs/wave5-plan.md);括号里是起生效的批次
|
|
128
|
-
images: "图像输入;只认用户级(第五波 W5-I 起生效)",
|
|
129
|
-
"images.resize": "auto:图片超过端点上限时用系统工具(sips / magick)缩放,找不到工具按原规则拒绝;off:从不缩放",
|
|
130
|
-
plan: "Plan 模式(第五波 W5-F 起生效)",
|
|
131
|
-
"plan.bash": "plan 模式下的 bash:readonly 只读命令放行其余拒绝,ask 其余询问,deny 全拒;项目级只能更严",
|
|
132
|
-
"plan.directory": "计划文件目录(必须在项目根之内,否则回落缺省);只认用户级",
|
|
133
|
-
"plan.unattended": "无人值守(-p、RPC 未声明 plans 能力)时:stop 落盘计划后停下等人审批,approve 自动批准执行;只认用户级",
|
|
134
|
-
"plan.model": "规划用模型 provider/model[@channel]:进入 plan 时切换、批准时切回;只认用户级",
|
|
135
|
-
"plan.thinkingLevel": "规划时的思考强度;只认用户级",
|
|
136
|
-
agents: "外部 Agent(claude / codex / ACP)与子 Agent 类型;agents.<id> 设单个 Agent 的 maxConcurrent / maxMode / model / env.passthrough;只认用户级(第五波 W5-E / W5-G 起生效)",
|
|
137
|
-
"agents.maxConcurrent": "外部 Agent 的总并发",
|
|
138
|
-
"agents.sessionBudgetUsd": "本会话外部 Agent 的美元预算",
|
|
139
|
-
"agents.dirs": "追加的子 Agent 定义目录(*.md);各层累加",
|
|
140
|
-
subagents: "ama 自己的 task 子会话;只认用户级(第五波 W5-G 起生效)",
|
|
141
|
-
"subagents.maxConcurrent": "同时运行的子会话数",
|
|
142
|
-
"subagents.maxPending": "排队上限,超出时 task 报错",
|
|
143
|
-
"subagents.defaultModel": "子会话缺省模型 provider/model[@channel]",
|
|
144
|
-
models: "模型别名;只认用户级(第五波 W5-G 起生效)",
|
|
145
|
-
"models.aliases": "子 Agent 定义里 model: fast / strong 指向的模型",
|
|
146
|
-
"models.aliases.fast": "fast 别名的模型 provider/model[@channel]",
|
|
147
|
-
"models.aliases.strong": "strong 别名的模型 provider/model[@channel]",
|
|
148
|
-
fallbackModel: "回退模型 provider/model[@channel]:可重试错误用尽或过载时切换重试一次,下一回合回主模型;只认用户级(第五波 W5-H2 起生效)",
|
|
149
|
-
limits: "会话预算,到限结束本次运行(-p 退出码 8);--max-turns / --max-cost 覆盖;只认用户级(第五波 W5-H2 起生效)",
|
|
150
|
-
"limits.maxTurns": "一次运行最多回合数",
|
|
151
|
-
"limits.maxCostUsd": "一次运行的美元上限",
|
|
152
|
-
reminders: "附在对话尾部的提醒(不改缓存前缀);项目级可设(第五波 W5-H2 起生效)",
|
|
153
|
-
"reminders.todo": "todo 有未完成项且多回合未更新时复述",
|
|
154
|
-
"reminders.fileChanges": "读过的文件被外部改动时列出",
|
|
155
|
-
"reminders.contextPressure": "上下文用量到 70% / 85% 时各提醒一次",
|
|
156
|
-
"reminders.budget": "预算剩余不足 20% 时提醒",
|
|
157
|
-
todo: "todo 工具;只认用户级(第五波 W5-F / W5-H2 起生效)",
|
|
158
|
-
"todo.reminder": "连续 N 回合未更新且有未完成项时提醒复述;0 关闭",
|
|
159
|
-
});
|
|
51
|
+
/** 缺省值由运行时决定的键 → 规则(当前界面语言;schema 不写 default)。 */
|
|
52
|
+
export function dynamicDefaults() {
|
|
53
|
+
return msg().config.dynamicDefaults;
|
|
54
|
+
}
|
|
55
|
+
/** 该键的缺省值是否由运行时决定(与语言无关)。 */
|
|
56
|
+
export function isDynamicDefault(path) {
|
|
57
|
+
return Object.hasOwn(messagesFor("en").config.dynamicDefaults, path);
|
|
58
|
+
}
|
|
59
|
+
/** 键路径 → 说明(当前界面语言;段落本身也有一条)。 */
|
|
60
|
+
export function configKeyDocs() {
|
|
61
|
+
return msg().config.keys;
|
|
62
|
+
}
|
|
63
|
+
/** 一个键的说明(当前界面语言);没有说明返回 undefined。 */
|
|
64
|
+
export function keyDoc(path) {
|
|
65
|
+
const docs = msg().config.keys;
|
|
66
|
+
return Object.hasOwn(docs, path) ? docs[path] : undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated 中文原表(第六波前的导出,供尚未迁移的调用方编译通过);新代码用 `keyDoc(path)` /
|
|
70
|
+
* `configKeyDocs()`。
|
|
71
|
+
*/
|
|
72
|
+
export const CONFIG_KEY_DOCS = messagesFor("zh").config.keys;
|
|
73
|
+
/** @deprecated 中文原表;新代码用 `dynamicDefaults()` / `isDynamicDefault(path)`。 */
|
|
74
|
+
export const DYNAMIC_DEFAULTS = messagesFor("zh").config.dynamicDefaults;
|
|
160
75
|
/** 叶子路径(段落不算)。 */
|
|
161
76
|
export function documentedLeaves() {
|
|
162
|
-
const keys = Object.keys(
|
|
77
|
+
const keys = Object.keys(messagesFor("en").config.keys);
|
|
163
78
|
return keys.filter((key) => !keys.some((other) => other.startsWith(`${key}.`)));
|
|
164
79
|
}
|
|
165
80
|
/** 键路径的缺省值(DISPLAY_DEFAULTS 里取;没有返回 undefined)。 */
|
package/dist/config/load.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { readFileSync } from "node:fs";
|
|
9
9
|
import { StartupError } from "../errors.js";
|
|
10
|
+
import { msg } from "../i18n/index.js";
|
|
10
11
|
import { hasErrors, validateAuthFile, validateConfig, validateHookConfig, validateProfile, validateTrustFile, } from "./schema.js";
|
|
11
12
|
const EXIT_CONFIG = 3;
|
|
12
13
|
const VALIDATORS = {
|
|
@@ -32,16 +33,16 @@ export function parseJsonText(text) {
|
|
|
32
33
|
const message = error instanceof Error ? error.message : String(error);
|
|
33
34
|
const lineCol = /line (\d+) column (\d+)/.exec(message);
|
|
34
35
|
if (lineCol !== null)
|
|
35
|
-
throw new Error(
|
|
36
|
+
throw new Error(msg().config.load.jsonSyntax(lineCol[1] ?? "", lineCol[2] ?? "", message));
|
|
36
37
|
const position = /position (\d+)/.exec(message);
|
|
37
38
|
if (position?.[1] !== undefined) {
|
|
38
39
|
const { line, column } = lineColumnAt(source, Number(position[1]));
|
|
39
|
-
throw new Error(
|
|
40
|
+
throw new Error(msg().config.load.jsonSyntax(line, column, message));
|
|
40
41
|
}
|
|
41
42
|
if (source.trim() === "")
|
|
42
|
-
throw new Error(
|
|
43
|
+
throw new Error(msg().config.load.jsonEmpty);
|
|
43
44
|
const end = lineColumnAt(source, source.length);
|
|
44
|
-
throw new Error(
|
|
45
|
+
throw new Error(msg().config.load.jsonSyntaxNear(end.line, end.column, message));
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
export function formatDiagnostic(path, d) {
|
|
@@ -60,7 +61,7 @@ export function loadConfigFile(kind, path, options = {}) {
|
|
|
60
61
|
const code = error.code;
|
|
61
62
|
if (code === "ENOENT" && options.required !== true)
|
|
62
63
|
return undefined;
|
|
63
|
-
const reason = code === "ENOENT" ?
|
|
64
|
+
const reason = code === "ENOENT" ? msg().config.load.notFound : error.message;
|
|
64
65
|
throw failure(kind, `${path}: ${reason}`, { path });
|
|
65
66
|
}
|
|
66
67
|
let value;
|
|
@@ -75,7 +76,7 @@ export function loadConfigFile(kind, path, options = {}) {
|
|
|
75
76
|
const lines = diagnostics
|
|
76
77
|
.filter((d) => d.severity === "error")
|
|
77
78
|
.map((d) => formatDiagnostic(path, d));
|
|
78
|
-
throw failure(kind,
|
|
79
|
+
throw failure(kind, msg().config.load.invalid(lines), { path, diagnostics });
|
|
79
80
|
}
|
|
80
81
|
return {
|
|
81
82
|
path,
|
package/dist/config/merge.d.ts
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* auto / full-auto)、
|
|
9
9
|
* `compaction`、`tools.disabled`、`tools.preset`(只能更严)、`codemode.mode: "off"`、`ui`、
|
|
10
10
|
* `checkpoints.mode: "off"`、`checkpoints.maxFileBytes`(只能调小)、(W5-C0)`plan.bash`(只能更严)、
|
|
11
|
-
* `reminders`;`compaction.prune / pruneExclude`
|
|
11
|
+
* `reminders`;`compaction.prune / pruneExclude` 与第五波其余段只认用户级;(W6-C0)`ui.language` /
|
|
12
|
+
* `ui.agentBar` 随 `ui` 段、`memory.enabled: false`;`ui.replyLanguage`、`memory` 其余键、`auth` 只认用户级;
|
|
12
13
|
* 其它字段与放宽项(含 `permission.builtinDeny / autoModel / autoSafeCommands`)被忽略并记 warning。
|
|
13
14
|
* - 同时产出带来源的权限规则清单(`ruleSpecs`),交给权限管线(B3 的 rules.ts 解析)。
|
|
14
15
|
*/
|
|
@@ -51,6 +52,8 @@ export interface CliConfigOverrides {
|
|
|
51
52
|
toolsPreset?: ToolsPresetInput | undefined;
|
|
52
53
|
/** `--codemode`。 */
|
|
53
54
|
codemode?: CodemodeMode | undefined;
|
|
55
|
+
/** [W6-C0] `--memory` / `--no-memory`:覆盖 `memory.enabled`。 */
|
|
56
|
+
memory?: boolean | undefined;
|
|
54
57
|
}
|
|
55
58
|
export declare function cliOverridesToConfig(cli: CliConfigOverrides): Partial<AmaConfig>;
|
|
56
59
|
export interface ConfigLayers {
|