@orion-agents/orion-code 0.1.2 → 0.1.4-2
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/README.md +98 -4
- package/README.zh-CN.md +116 -5
- package/dist/agents/coder.d.ts.map +1 -1
- package/dist/agents/coder.js.map +1 -1
- package/dist/agents/fork.d.ts +12 -4
- package/dist/agents/fork.d.ts.map +1 -1
- package/dist/agents/fork.js +28 -32
- package/dist/agents/fork.js.map +1 -1
- package/dist/agents/leader.d.ts.map +1 -1
- package/dist/agents/leader.js.map +1 -1
- package/dist/agents/worker-pool.d.ts.map +1 -1
- package/dist/agents/worker-pool.js +38 -29
- package/dist/agents/worker-pool.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +0 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/context-commands.d.ts +4 -0
- package/dist/commands/context-commands.d.ts.map +1 -0
- package/dist/commands/context-commands.js +52 -0
- package/dist/commands/context-commands.js.map +1 -0
- package/dist/commands/context-tool-command-handlers.d.ts +13 -0
- package/dist/commands/context-tool-command-handlers.d.ts.map +1 -0
- package/dist/commands/context-tool-command-handlers.js +573 -0
- package/dist/commands/context-tool-command-handlers.js.map +1 -0
- package/dist/commands/core-command-handlers.d.ts +12 -0
- package/dist/commands/core-command-handlers.d.ts.map +1 -0
- package/dist/commands/core-command-handlers.js +798 -0
- package/dist/commands/core-command-handlers.js.map +1 -0
- package/dist/commands/diagnostic-command-handlers.d.ts +14 -0
- package/dist/commands/diagnostic-command-handlers.d.ts.map +1 -0
- package/dist/commands/diagnostic-command-handlers.js +1043 -0
- package/dist/commands/diagnostic-command-handlers.js.map +1 -0
- package/dist/commands/diagnostic-commands.d.ts +4 -0
- package/dist/commands/diagnostic-commands.d.ts.map +1 -0
- package/dist/commands/diagnostic-commands.js +132 -0
- package/dist/commands/diagnostic-commands.js.map +1 -0
- package/dist/commands/index.d.ts +7 -8
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +34 -3448
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/legacy-commands.d.ts +4 -0
- package/dist/commands/legacy-commands.d.ts.map +1 -0
- package/dist/commands/legacy-commands.js +44 -0
- package/dist/commands/legacy-commands.js.map +1 -0
- package/dist/commands/model-command-handlers.d.ts +13 -0
- package/dist/commands/model-command-handlers.d.ts.map +1 -0
- package/dist/commands/model-command-handlers.js +314 -0
- package/dist/commands/model-command-handlers.js.map +1 -0
- package/dist/commands/model-commands.d.ts +4 -0
- package/dist/commands/model-commands.d.ts.map +1 -0
- package/dist/commands/model-commands.js +52 -0
- package/dist/commands/model-commands.js.map +1 -0
- package/dist/commands/session-command-handlers.d.ts +9 -0
- package/dist/commands/session-command-handlers.d.ts.map +1 -0
- package/dist/commands/session-command-handlers.js +566 -0
- package/dist/commands/session-command-handlers.js.map +1 -0
- package/dist/commands/session-commands.d.ts +4 -0
- package/dist/commands/session-commands.d.ts.map +1 -0
- package/dist/commands/session-commands.js +78 -0
- package/dist/commands/session-commands.js.map +1 -0
- package/dist/commands/system-commands.d.ts +4 -0
- package/dist/commands/system-commands.d.ts.map +1 -0
- package/dist/commands/system-commands.js +92 -0
- package/dist/commands/system-commands.js.map +1 -0
- package/dist/commands/target-command.d.ts.map +1 -1
- package/dist/commands/target-command.js +29 -2
- package/dist/commands/target-command.js.map +1 -1
- package/dist/commands/tool-commands.d.ts +4 -0
- package/dist/commands/tool-commands.d.ts.map +1 -0
- package/dist/commands/tool-commands.js +49 -0
- package/dist/commands/tool-commands.js.map +1 -0
- package/dist/commands/types.d.ts +7 -5
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/workflow-command-handlers.d.ts +7 -0
- package/dist/commands/workflow-command-handlers.d.ts.map +1 -0
- package/dist/commands/workflow-command-handlers.js +35 -0
- package/dist/commands/workflow-command-handlers.js.map +1 -0
- package/dist/commands/workflow-commands.d.ts +4 -0
- package/dist/commands/workflow-commands.d.ts.map +1 -0
- package/dist/commands/workflow-commands.js +92 -0
- package/dist/commands/workflow-commands.js.map +1 -0
- package/dist/core/checkpoint.d.ts +12 -4
- package/dist/core/checkpoint.d.ts.map +1 -1
- package/dist/core/checkpoint.js +114 -28
- package/dist/core/checkpoint.js.map +1 -1
- package/dist/core/cost-tracker.d.ts +5 -1
- package/dist/core/cost-tracker.d.ts.map +1 -1
- package/dist/core/cost-tracker.js +12 -2
- package/dist/core/cost-tracker.js.map +1 -1
- package/dist/core/warn-dedup.d.ts +3 -0
- package/dist/core/warn-dedup.d.ts.map +1 -1
- package/dist/core/warn-dedup.js +6 -6
- package/dist/core/warn-dedup.js.map +1 -1
- package/dist/framework/index.d.ts +1 -1
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/prompt.d.ts +2 -2
- package/dist/framework/query.d.ts +5 -2
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +58 -10
- package/dist/framework/query.js.map +1 -1
- package/dist/framework/store.d.ts +4 -4
- package/dist/framework/tool-scheduler.d.ts +67 -4
- package/dist/framework/tool-scheduler.d.ts.map +1 -1
- package/dist/framework/tool-scheduler.js +271 -50
- package/dist/framework/tool-scheduler.js.map +1 -1
- package/dist/framework/tool.d.ts +36 -2
- package/dist/framework/tool.d.ts.map +1 -1
- package/dist/framework/tool.js +29 -1
- package/dist/framework/tool.js.map +1 -1
- package/dist/harness/assembler.d.ts.map +1 -1
- package/dist/harness/assembler.js +4 -2
- package/dist/harness/assembler.js.map +1 -1
- package/dist/harness/evidence.d.ts.map +1 -1
- package/dist/harness/evidence.js +3 -2
- package/dist/harness/evidence.js.map +1 -1
- package/dist/harness/safety.d.ts +11 -1
- package/dist/harness/safety.d.ts.map +1 -1
- package/dist/harness/safety.js +112 -16
- package/dist/harness/safety.js.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +4 -8
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +4 -4
- package/dist/init.js.map +1 -1
- package/dist/ink-ui/App.d.ts +2 -2
- package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
- package/dist/ink-ui/components/Markdown.js.map +1 -1
- package/dist/ink-ui/components/PixelHorseBanner.d.ts +2 -2
- package/dist/ink-ui/components/StatusLine.d.ts +2 -2
- package/dist/ink-ui/launch.d.ts +2 -2
- package/dist/ink-ui/screens/ReplScreen.d.ts +3 -2
- package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.js +65 -0
- package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
- package/dist/memory/embeddings.d.ts.map +1 -1
- package/dist/memory/embeddings.js +3 -2
- package/dist/memory/embeddings.js.map +1 -1
- package/dist/memory/relevant-finder.d.ts +2 -1
- package/dist/memory/relevant-finder.d.ts.map +1 -1
- package/dist/memory/relevant-finder.js +17 -8
- package/dist/memory/relevant-finder.js.map +1 -1
- package/dist/memory/semantic-config.d.ts +9 -0
- package/dist/memory/semantic-config.d.ts.map +1 -0
- package/dist/memory/semantic-config.js +16 -0
- package/dist/memory/semantic-config.js.map +1 -0
- package/dist/memory/semantic-search.d.ts +1 -6
- package/dist/memory/semantic-search.d.ts.map +1 -1
- package/dist/memory/semantic-search.js +5 -16
- package/dist/memory/semantic-search.js.map +1 -1
- package/dist/memory/storage.d.ts +23 -0
- package/dist/memory/storage.d.ts.map +1 -1
- package/dist/memory/storage.js +109 -8
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/vector-store.d.ts +12 -0
- package/dist/memory/vector-store.d.ts.map +1 -1
- package/dist/memory/vector-store.js +139 -18
- package/dist/memory/vector-store.js.map +1 -1
- package/dist/migration/command.d.ts.map +1 -1
- package/dist/migration/command.js +0 -1
- package/dist/migration/command.js.map +1 -1
- package/dist/migration/migrate.d.ts.map +1 -1
- package/dist/migration/migrate.js +43 -109
- package/dist/migration/migrate.js.map +1 -1
- package/dist/migration/types.d.ts +0 -1
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/print-ui/launch.d.ts +11 -3
- package/dist/print-ui/launch.d.ts.map +1 -1
- package/dist/print-ui/launch.js +25 -0
- package/dist/print-ui/launch.js.map +1 -1
- package/dist/product/environment.d.ts +3 -5
- package/dist/product/environment.d.ts.map +1 -1
- package/dist/product/environment.js +4 -32
- package/dist/product/environment.js.map +1 -1
- package/dist/product/index.d.ts +1 -1
- package/dist/product/index.d.ts.map +1 -1
- package/dist/product/index.js +1 -3
- package/dist/product/index.js.map +1 -1
- package/dist/product/paths.d.ts.map +1 -1
- package/dist/product/paths.js +12 -0
- package/dist/product/paths.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +3 -2
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +24 -3
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +16 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +12 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/chat-checkpoint.d.ts +17 -0
- package/dist/runtime/chat-checkpoint.d.ts.map +1 -0
- package/dist/runtime/chat-checkpoint.js +108 -0
- package/dist/runtime/chat-checkpoint.js.map +1 -0
- package/dist/runtime/chat-controller.d.ts +16 -46
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +212 -1051
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/runtime/chat-presentation.d.ts +60 -0
- package/dist/runtime/chat-presentation.d.ts.map +1 -0
- package/dist/runtime/chat-presentation.js +537 -0
- package/dist/runtime/chat-presentation.js.map +1 -0
- package/dist/runtime/chat-trace.d.ts +52 -0
- package/dist/runtime/chat-trace.d.ts.map +1 -0
- package/dist/runtime/chat-trace.js +234 -0
- package/dist/runtime/chat-trace.js.map +1 -0
- package/dist/runtime/chat-workspace.d.ts +22 -0
- package/dist/runtime/chat-workspace.d.ts.map +1 -0
- package/dist/runtime/chat-workspace.js +154 -0
- package/dist/runtime/chat-workspace.js.map +1 -0
- package/dist/runtime/goals/accounting.js +1 -1
- package/dist/runtime/goals/accounting.js.map +1 -1
- package/dist/runtime/goals/completion-audit.d.ts.map +1 -1
- package/dist/runtime/goals/completion-audit.js +5 -4
- package/dist/runtime/goals/completion-audit.js.map +1 -1
- package/dist/runtime/goals/coordinator.d.ts +3 -0
- package/dist/runtime/goals/coordinator.d.ts.map +1 -1
- package/dist/runtime/goals/coordinator.js +30 -2
- package/dist/runtime/goals/coordinator.js.map +1 -1
- package/dist/runtime/goals/prompt.d.ts +1 -1
- package/dist/runtime/goals/prompt.d.ts.map +1 -1
- package/dist/runtime/goals/prompt.js +3 -2
- package/dist/runtime/goals/prompt.js.map +1 -1
- package/dist/runtime/goals/tools.d.ts +21 -8
- package/dist/runtime/goals/tools.d.ts.map +1 -1
- package/dist/runtime/goals/tools.js +152 -21
- package/dist/runtime/goals/tools.js.map +1 -1
- package/dist/runtime/goals/types.d.ts +6 -0
- package/dist/runtime/goals/types.d.ts.map +1 -1
- package/dist/runtime/goals/types.js.map +1 -1
- package/dist/runtime/loop-budget.d.ts +2 -2
- package/dist/runtime/model-coordinator.d.ts.map +1 -1
- package/dist/runtime/model-coordinator.js.map +1 -1
- package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -1
- package/dist/runtime/subagents/child-executor-guard.js +4 -0
- package/dist/runtime/subagents/child-executor-guard.js.map +1 -1
- package/dist/runtime/subagents/index.d.ts +10 -3
- package/dist/runtime/subagents/index.d.ts.map +1 -1
- package/dist/runtime/subagents/index.js +25 -1
- package/dist/runtime/subagents/index.js.map +1 -1
- package/dist/runtime/subagents/policy.d.ts +1 -1
- package/dist/runtime/subagents/policy.d.ts.map +1 -1
- package/dist/runtime/subagents/policy.js.map +1 -1
- package/dist/runtime/subagents/presets.d.ts +2 -2
- package/dist/runtime/subagents/provider-gate.d.ts.map +1 -1
- package/dist/runtime/subagents/provider-gate.js +0 -1
- package/dist/runtime/subagents/provider-gate.js.map +1 -1
- package/dist/runtime/subagents/research-artifact.d.ts +101 -0
- package/dist/runtime/subagents/research-artifact.d.ts.map +1 -0
- package/dist/runtime/subagents/research-artifact.js +210 -0
- package/dist/runtime/subagents/research-artifact.js.map +1 -0
- package/dist/runtime/subagents/research-citation.d.ts +66 -0
- package/dist/runtime/subagents/research-citation.d.ts.map +1 -0
- package/dist/runtime/subagents/research-citation.js +185 -0
- package/dist/runtime/subagents/research-citation.js.map +1 -0
- package/dist/runtime/subagents/research-contract.d.ts +83 -0
- package/dist/runtime/subagents/research-contract.d.ts.map +1 -0
- package/dist/runtime/subagents/research-contract.js +337 -0
- package/dist/runtime/subagents/research-contract.js.map +1 -0
- package/dist/runtime/subagents/research-quality.d.ts +47 -0
- package/dist/runtime/subagents/research-quality.d.ts.map +1 -0
- package/dist/runtime/subagents/research-quality.js +125 -0
- package/dist/runtime/subagents/research-quality.js.map +1 -0
- package/dist/runtime/subagents/research-renderer.d.ts +95 -0
- package/dist/runtime/subagents/research-renderer.d.ts.map +1 -0
- package/dist/runtime/subagents/research-renderer.js +186 -0
- package/dist/runtime/subagents/research-renderer.js.map +1 -0
- package/dist/runtime/subagents/research-types.d.ts +105 -0
- package/dist/runtime/subagents/research-types.d.ts.map +1 -0
- package/dist/runtime/subagents/research-types.js +16 -0
- package/dist/runtime/subagents/research-types.js.map +1 -0
- package/dist/runtime/subagents/result-parser.d.ts +1 -5
- package/dist/runtime/subagents/result-parser.d.ts.map +1 -1
- package/dist/runtime/subagents/result-parser.js +5 -72
- package/dist/runtime/subagents/result-parser.js.map +1 -1
- package/dist/runtime/subagents/runtime-integration.d.ts +13 -7
- package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
- package/dist/runtime/subagents/runtime-integration.js +112 -2
- package/dist/runtime/subagents/runtime-integration.js.map +1 -1
- package/dist/runtime/subagents/supervisor.d.ts +15 -1
- package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
- package/dist/runtime/subagents/supervisor.js +58 -3
- package/dist/runtime/subagents/supervisor.js.map +1 -1
- package/dist/runtime/subagents/tool.d.ts +2 -2
- package/dist/runtime/subagents/tool.d.ts.map +1 -1
- package/dist/runtime/subagents/tool.js +129 -9
- package/dist/runtime/subagents/tool.js.map +1 -1
- package/dist/runtime/subagents/types.d.ts +20 -0
- package/dist/runtime/subagents/types.d.ts.map +1 -1
- package/dist/runtime/subagents/types.js.map +1 -1
- package/dist/runtime/subagents/web-research-adapter.d.ts +85 -0
- package/dist/runtime/subagents/web-research-adapter.d.ts.map +1 -0
- package/dist/runtime/subagents/web-research-adapter.js +328 -0
- package/dist/runtime/subagents/web-research-adapter.js.map +1 -0
- package/dist/runtime/turn-controller.d.ts.map +1 -1
- package/dist/runtime/turn-controller.js +3 -1
- package/dist/runtime/turn-controller.js.map +1 -1
- package/dist/runtime/ui-events.d.ts +25 -8
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/runtime/ui-view-model.d.ts +40 -0
- package/dist/runtime/ui-view-model.d.ts.map +1 -1
- package/dist/runtime/ui-view-model.js +126 -0
- package/dist/runtime/ui-view-model.js.map +1 -1
- package/dist/services/agent-runner.d.ts +5 -2
- package/dist/services/agent-runner.d.ts.map +1 -1
- package/dist/services/agent-runner.js +18 -18
- package/dist/services/agent-runner.js.map +1 -1
- package/dist/services/atomic-write.d.ts +9 -1
- package/dist/services/atomic-write.d.ts.map +1 -1
- package/dist/services/atomic-write.js +55 -2
- package/dist/services/atomic-write.js.map +1 -1
- package/dist/services/auth/auth.d.ts +11 -7
- package/dist/services/auth/auth.d.ts.map +1 -1
- package/dist/services/auth/auth.js +133 -34
- package/dist/services/auth/auth.js.map +1 -1
- package/dist/services/auth/aws.d.ts +2 -0
- package/dist/services/auth/aws.d.ts.map +1 -1
- package/dist/services/auth/aws.js +126 -12
- package/dist/services/auth/aws.js.map +1 -1
- package/dist/services/auth/index.d.ts +1 -1
- package/dist/services/auth/index.d.ts.map +1 -1
- package/dist/services/auth/index.js +2 -1
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auto-fix/autoFixConfig.d.ts +0 -3
- package/dist/services/auto-fix/autoFixConfig.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixConfig.js +25 -8
- package/dist/services/auto-fix/autoFixConfig.js.map +1 -1
- package/dist/services/auto-fix/autoFixHook.d.ts +7 -0
- package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixHook.js +10 -1
- package/dist/services/auto-fix/autoFixHook.js.map +1 -1
- package/dist/services/compact/auto-compact.d.ts +2 -0
- package/dist/services/compact/auto-compact.d.ts.map +1 -1
- package/dist/services/compact/auto-compact.js +15 -1
- package/dist/services/compact/auto-compact.js.map +1 -1
- package/dist/services/compact/compact.d.ts.map +1 -1
- package/dist/services/compact/compact.js +9 -11
- package/dist/services/compact/compact.js.map +1 -1
- package/dist/services/compact/summary-generator.d.ts.map +1 -1
- package/dist/services/compact/summary-generator.js +28 -4
- package/dist/services/compact/summary-generator.js.map +1 -1
- package/dist/services/compact/tool-call-groups.d.ts +19 -0
- package/dist/services/compact/tool-call-groups.d.ts.map +1 -0
- package/dist/services/compact/tool-call-groups.js +105 -0
- package/dist/services/compact/tool-call-groups.js.map +1 -0
- package/dist/services/concurrent-sessions.d.ts +4 -0
- package/dist/services/concurrent-sessions.d.ts.map +1 -1
- package/dist/services/concurrent-sessions.js +76 -21
- package/dist/services/concurrent-sessions.js.map +1 -1
- package/dist/services/config-dir.d.ts.map +1 -1
- package/dist/services/config-dir.js +19 -5
- package/dist/services/config-dir.js.map +1 -1
- package/dist/services/config.d.ts +6 -4
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +16 -72
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts +2 -2
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/file-glob.d.ts.map +1 -1
- package/dist/services/file-glob.js +22 -2
- package/dist/services/file-glob.js.map +1 -1
- package/dist/services/file-lock.d.ts +7 -0
- package/dist/services/file-lock.d.ts.map +1 -0
- package/dist/services/file-lock.js +139 -0
- package/dist/services/file-lock.js.map +1 -0
- package/dist/services/global-config.d.ts +33 -0
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +67 -4
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/goal-storage.d.ts.map +1 -1
- package/dist/services/goal-storage.js +52 -19
- package/dist/services/goal-storage.js.map +1 -1
- package/dist/services/llm.d.ts +12 -0
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +166 -69
- package/dist/services/llm.js.map +1 -1
- package/dist/services/mcp/transports.d.ts +0 -1
- package/dist/services/mcp/transports.d.ts.map +1 -1
- package/dist/services/mcp/transports.js +12 -13
- package/dist/services/mcp/transports.js.map +1 -1
- package/dist/services/model-catalog.d.ts +2 -0
- package/dist/services/model-catalog.d.ts.map +1 -1
- package/dist/services/model-catalog.js +25 -15
- package/dist/services/model-catalog.js.map +1 -1
- package/dist/services/model-context.d.ts +8 -0
- package/dist/services/model-context.d.ts.map +1 -1
- package/dist/services/model-context.js +147 -7
- package/dist/services/model-context.js.map +1 -1
- package/dist/services/model-registry.d.ts.map +1 -1
- package/dist/services/model-registry.js +32 -0
- package/dist/services/model-registry.js.map +1 -1
- package/dist/services/provider-resilience/coordinator.d.ts +9 -4
- package/dist/services/provider-resilience/coordinator.d.ts.map +1 -1
- package/dist/services/provider-resilience/coordinator.js +88 -21
- package/dist/services/provider-resilience/coordinator.js.map +1 -1
- package/dist/services/provider-resilience/error-classifier.d.ts +1 -0
- package/dist/services/provider-resilience/error-classifier.d.ts.map +1 -1
- package/dist/services/provider-resilience/error-classifier.js +50 -29
- package/dist/services/provider-resilience/error-classifier.js.map +1 -1
- package/dist/services/provider-resilience/index.d.ts +3 -3
- package/dist/services/provider-resilience/index.d.ts.map +1 -1
- package/dist/services/provider-resilience/index.js +3 -1
- package/dist/services/provider-resilience/index.js.map +1 -1
- package/dist/services/provider-resilience/request-gate.d.ts +6 -0
- package/dist/services/provider-resilience/request-gate.d.ts.map +1 -1
- package/dist/services/provider-resilience/request-gate.js +24 -9
- package/dist/services/provider-resilience/request-gate.js.map +1 -1
- package/dist/services/provider-resilience/stream-recovery.d.ts +1 -1
- package/dist/services/provider-resilience/stream-recovery.d.ts.map +1 -1
- package/dist/services/provider-resilience/stream-recovery.js +1 -1
- package/dist/services/provider-resilience/stream-recovery.js.map +1 -1
- package/dist/services/provider-resilience/types.d.ts +9 -0
- package/dist/services/provider-resilience/types.d.ts.map +1 -1
- package/dist/services/provider-resilience/types.js.map +1 -1
- package/dist/services/redaction.d.ts.map +1 -1
- package/dist/services/redaction.js +29 -1
- package/dist/services/redaction.js.map +1 -1
- package/dist/services/session-index.d.ts.map +1 -1
- package/dist/services/session-index.js +75 -44
- package/dist/services/session-index.js.map +1 -1
- package/dist/services/session-memory/sessionMemory.d.ts.map +1 -1
- package/dist/services/session-memory/sessionMemory.js +6 -3
- package/dist/services/session-memory/sessionMemory.js.map +1 -1
- package/dist/services/session-storage.d.ts +8 -0
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +105 -27
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/storage-maintenance.d.ts.map +1 -1
- package/dist/services/storage-maintenance.js +62 -9
- package/dist/services/storage-maintenance.js.map +1 -1
- package/dist/services/task-manager.d.ts +9 -4
- package/dist/services/task-manager.d.ts.map +1 -1
- package/dist/services/task-manager.js +18 -4
- package/dist/services/task-manager.js.map +1 -1
- package/dist/services/tool-allowlist.d.ts +100 -0
- package/dist/services/tool-allowlist.d.ts.map +1 -0
- package/dist/services/tool-allowlist.js +250 -0
- package/dist/services/tool-allowlist.js.map +1 -0
- package/dist/services/usage-state.d.ts +1 -0
- package/dist/services/usage-state.d.ts.map +1 -1
- package/dist/services/usage-state.js +81 -45
- package/dist/services/usage-state.js.map +1 -1
- package/dist/services/verification-profile.d.ts.map +1 -1
- package/dist/services/verification-profile.js +23 -3
- package/dist/services/verification-profile.js.map +1 -1
- package/dist/services/web-search-adapters.d.ts.map +1 -1
- package/dist/services/web-search-adapters.js +48 -18
- package/dist/services/web-search-adapters.js.map +1 -1
- package/dist/services/web-search-mcp.d.ts.map +1 -1
- package/dist/services/web-search-mcp.js +27 -11
- package/dist/services/web-search-mcp.js.map +1 -1
- package/dist/services/workspace-diff.d.ts +14 -0
- package/dist/services/workspace-diff.d.ts.map +1 -1
- package/dist/services/workspace-diff.js +60 -11
- package/dist/services/workspace-diff.js.map +1 -1
- package/dist/services/yaml-config.d.ts.map +1 -1
- package/dist/services/yaml-config.js +2 -1
- package/dist/services/yaml-config.js.map +1 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +26 -11
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/runtime.d.ts +3 -3
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +37 -4
- package/dist/skills/runtime.js.map +1 -1
- package/dist/skills/types.d.ts +1 -1
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/terminal-ui/launch.d.ts +36 -8
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +171 -1
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/terminal-ui/raw-editor.js.map +1 -1
- package/dist/tools/bash_security.d.ts +58 -18
- package/dist/tools/bash_security.d.ts.map +1 -1
- package/dist/tools/bash_security.js +587 -80
- package/dist/tools/bash_security.js.map +1 -1
- package/dist/tools/git.d.ts +8 -4
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +518 -18
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/index.d.ts +14 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +292 -49
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp.d.ts +74 -6
- package/dist/tools/lsp.d.ts.map +1 -1
- package/dist/tools/lsp.js +24 -5
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/mcp.d.ts +19 -6
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/mcp.js +143 -26
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/plan.d.ts +4 -4
- package/dist/tools/sandbox.d.ts +141 -0
- package/dist/tools/sandbox.d.ts.map +1 -0
- package/dist/tools/sandbox.js +500 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/todo.d.ts +3 -3
- package/dist/tools/web.d.ts +15 -4
- package/dist/tools/web.d.ts.map +1 -1
- package/dist/tools/web.js +346 -61
- package/dist/tools/web.js.map +1 -1
- package/dist/tui-core/frame.js.map +1 -1
- package/dist/tui-ui/launch.d.ts +3 -3
- package/dist/tui-ui/launch.d.ts.map +1 -1
- package/dist/tui-ui/launch.js +46 -8
- package/dist/tui-ui/launch.js.map +1 -1
- package/dist/tui-ui/layout.d.ts.map +1 -1
- package/dist/tui-ui/layout.js +64 -0
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/runner.d.ts +6 -0
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +82 -1
- package/dist/tui-ui/runner.js.map +1 -1
- package/dist/tui-ui/state.d.ts +28 -2
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +48 -7
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/tui-ui/terminal-image.d.ts +3 -13
- package/dist/tui-ui/terminal-image.d.ts.map +1 -1
- package/dist/tui-ui/terminal-image.js +5 -160
- package/dist/tui-ui/terminal-image.js.map +1 -1
- package/dist/ui/markdown.js.map +1 -1
- package/dist/utils/debug-log.d.ts +52 -0
- package/dist/utils/debug-log.d.ts.map +1 -0
- package/dist/utils/debug-log.js +94 -0
- package/dist/utils/debug-log.js.map +1 -0
- package/dist/utils/errors.d.ts +25 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +47 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/json.d.ts +6 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +66 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/mask.d.ts +35 -0
- package/dist/utils/mask.d.ts.map +1 -0
- package/dist/utils/mask.js +52 -0
- package/dist/utils/mask.js.map +1 -0
- package/dist/utils/observability.d.ts +22 -0
- package/dist/utils/observability.d.ts.map +1 -0
- package/dist/utils/observability.js +80 -0
- package/dist/utils/observability.js.map +1 -0
- package/dist/utils/token-estimate.d.ts +8 -0
- package/dist/utils/token-estimate.d.ts.map +1 -1
- package/dist/utils/token-estimate.js +30 -17
- package/dist/utils/token-estimate.js.map +1 -1
- package/package.json +9 -7
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **Goal-driven coding agent for the terminal.**
|
|
4
4
|
>
|
|
5
|
-
> v0.1.
|
|
5
|
+
> v0.1.4 — Goal continuity, model config & shell sandbox POC
|
|
6
6
|
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](https://nodejs.org)
|
|
@@ -29,14 +29,15 @@ Orion Code is a terminal-based coding agent. It wraps LLM APIs in a harness of s
|
|
|
29
29
|
|
|
30
30
|
### Requirements
|
|
31
31
|
|
|
32
|
-
- Node.js
|
|
32
|
+
- Node.js 20, 22, or 24 LTS
|
|
33
33
|
- npm >= 9.0
|
|
34
34
|
|
|
35
35
|
### Install & Run
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
# Install the v0.1.2
|
|
39
|
-
npm install -g @orion-agents/orion-code@0.1.2
|
|
38
|
+
# Install the v0.1.4-2 maintenance prerelease:
|
|
39
|
+
npm install -g @orion-agents/orion-code@0.1.4-2
|
|
40
|
+
# Equivalent after publication: npm install -g @orion-agents/orion-code@next
|
|
40
41
|
|
|
41
42
|
# Or run from a checked-out source tree:
|
|
42
43
|
npm ci
|
|
@@ -73,6 +74,10 @@ orion -p "review the current git diff"
|
|
|
73
74
|
echo "summarize this project" | orion --print
|
|
74
75
|
```
|
|
75
76
|
|
|
77
|
+
> **Prerelease status.** `0.1.4-2` is a maintenance release candidate intended for
|
|
78
|
+
> the npm `next` dist-tag; it is not tagged or published yet. Stable `latest` remains
|
|
79
|
+
> `0.1.4` until a separate stable release is approved.
|
|
80
|
+
|
|
76
81
|
### TUI startup banner
|
|
77
82
|
|
|
78
83
|
The default TUI displays a portable sky-blue pixel banner: a compact landscape
|
|
@@ -147,6 +152,78 @@ Configuration: `~/.orion-code/orion.json` | Priority: `CLI flags > config > env
|
|
|
147
152
|
The renderer is a runtime choice rather than a persisted setting: `orion` starts
|
|
148
153
|
the TUI, while `--ui terminal` selects the technical renderer.
|
|
149
154
|
|
|
155
|
+
### Project tool rules (`allowedTools`)
|
|
156
|
+
|
|
157
|
+
Per-project permission rules live under `projects["<absolute path>"].allowedTools`.
|
|
158
|
+
They are scoped to a single repository and are evaluated on top of each tool's own
|
|
159
|
+
policy — they can tighten the gate, never loosen it.
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"projects": {
|
|
164
|
+
"/Users/me/work/api": {
|
|
165
|
+
"allowedTools": [
|
|
166
|
+
"exec_command(git status*)",
|
|
167
|
+
"exec_command(npm test*)",
|
|
168
|
+
"ask:exec_command(git push*)",
|
|
169
|
+
"deny:read_file(*.env)"
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
- Grammar: `[allow|ask|deny:]tool[(subject glob)]`; `*` matches any run of characters,
|
|
177
|
+
`?` a single one, and `*` as the tool name matches every tool.
|
|
178
|
+
- The subject is the call's `command` / `file_path` / `path` / `url` / `pattern` / `query`
|
|
179
|
+
argument, whichever comes first.
|
|
180
|
+
- Conflicts resolve most-restrictive-first (`deny` > `ask` > `allow`), independent of order.
|
|
181
|
+
- `allow` only skips an interactive confirmation. It never overrides a tool's own `deny`,
|
|
182
|
+
never escapes plan mode, and never auto-approves a destructive invocation.
|
|
183
|
+
- Malformed entries are ignored and listed by `/config` rather than silently applied.
|
|
184
|
+
|
|
185
|
+
### Shell execution sandbox (`sandbox`)
|
|
186
|
+
|
|
187
|
+
`exec_command` can run inside an OS-level sandbox. This is a **security POC**: the
|
|
188
|
+
backend is probed at runtime and a configured-but-unusable sandbox **fails closed**
|
|
189
|
+
(refuses to run) rather than silently degrading to an unsandboxed execution.
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{
|
|
193
|
+
"sandbox": {
|
|
194
|
+
"profile": "none",
|
|
195
|
+
"backend": "auto",
|
|
196
|
+
"allowNetwork": false,
|
|
197
|
+
"writableRoots": [],
|
|
198
|
+
"image": "alpine:latest"
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
- **Ownership** — `sandbox` lives in the global config (`~/.orion-code/orion.json`)
|
|
204
|
+
and can be overridden per project under `projects["<path>"].sandbox`. Project
|
|
205
|
+
keys win individually; absent keys inherit the global value.
|
|
206
|
+
- **`profile`** — `none` (default, no isolation, identical to the legacy `sh -c`),
|
|
207
|
+
`read-only` (no writes anywhere, no network), or `workspace-write` (writes
|
|
208
|
+
confined to the workspace + temp dirs, network still blocked unless
|
|
209
|
+
`allowNetwork: true`). An unknown value (e.g. written by a newer Orion) is a
|
|
210
|
+
hard failure, never a downgrade to `none`.
|
|
211
|
+
- **`backend`** — `auto` (default, picks the first usable backend), `seatbelt`
|
|
212
|
+
(macOS `sandbox-exec`), `bubblewrap` (Linux `bwrap`), or `docker`. Each backend
|
|
213
|
+
is validated with a real execution probe; `which`-based guessing is never used.
|
|
214
|
+
- **`image`** — required only for `docker`; names the container image to run in.
|
|
215
|
+
- **`writableRoots`** — extra host roots the `workspace-write` profile may write
|
|
216
|
+
to (in addition to the cwd and temp). Non-string / empty entries are dropped.
|
|
217
|
+
- **Migration / rollback** — adding the `sandbox` key is backward compatible: the
|
|
218
|
+
default `profile: "none"` reproduces the previous behaviour exactly. Removing the
|
|
219
|
+
key (or reverting to a pre-sandbox version) is a safe rollback; older Orion
|
|
220
|
+
simply ignores the unknown field. No secrets are stored, so no redaction is
|
|
221
|
+
required.
|
|
222
|
+
- **Known limitations** — `seatbelt` cannot be nested inside another sandbox (e.g.
|
|
223
|
+
when Orion itself runs inside an app sandbox); `docker` runs the command in a
|
|
224
|
+
separate process tree and only constrains what is bind-mounted (the image rootfs
|
|
225
|
+
is made read-only via `--read-only`); none of the backends constrain CPU/memory.
|
|
226
|
+
|
|
150
227
|
## Interactive Commands
|
|
151
228
|
|
|
152
229
|
| Command | Description |
|
|
@@ -204,6 +281,23 @@ See the [v0.1.2 release notes](https://github.com/orion-agents/orion-code/blob/m
|
|
|
204
281
|
[Goal evidence and recovery guide](https://github.com/orion-agents/orion-code/blob/main/docs/goals/goal-evidence-and-recovery.md),
|
|
205
282
|
and [execution plan](https://github.com/orion-agents/orion-code/blob/main/docs/plan/v0.1.2-execution-plan.md).
|
|
206
283
|
|
|
284
|
+
## Research-to-Evidence (v0.1.4, experimental)
|
|
285
|
+
|
|
286
|
+
> **Status: experimental.** Turns the read-only `research` subagent output into a **traceable, recoverable** research→evidence loop.
|
|
287
|
+
|
|
288
|
+
Hard guarantees (any violation is a No-Go; never published):
|
|
289
|
+
|
|
290
|
+
- **Only specialized WebSearch / WebFetch** — no generic MCP, no write/exec grant.
|
|
291
|
+
- **SSRF / DNS-rebind / redirect / body-size / timeout** re-use the existing guards: a lexical SSRF pre-check at selection, and the full per-hop guard set delegated to the real WebFetch tool.
|
|
292
|
+
- A **claim must bind a source** to reach `observed`; a claim with no independent verification stays `partial`/`unmet` and is never counted as verified/complete.
|
|
293
|
+
- A **security-gate failure becomes `blocked`/`failed` with a structured reason** — never faked as a hit; provider fallback only swaps the provider, never downgrades a source status or writes a failure as a success.
|
|
294
|
+
- Research evidence (web) and execution-verification evidence (file / test / build / file facts) are **kept distinct**; a web summary cannot stand in for execution verification.
|
|
295
|
+
- Packet + source metadata are saved **atomically with a CAS token**; project / session / Goal scope isolation; resume only derives state and never replays external side effects; old schema versions fail closed.
|
|
296
|
+
|
|
297
|
+
Modules: `src/runtime/subagents/{research-types,research-contract,research-citation,web-research-adapter,research-renderer,research-artifact,research-quality}.ts`.
|
|
298
|
+
|
|
299
|
+
> Real-terminal (PTY) and external-state evidence are marked `not_run` in CI; local tests are not treated as release completion.
|
|
300
|
+
|
|
207
301
|
## Development
|
|
208
302
|
|
|
209
303
|
```bash
|
package/README.zh-CN.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **Orion Code — 通用 Agent 驾驭框架**
|
|
4
4
|
> 一个 CLI 驱动的编码 Agent,具备安全边界、工具编排、记忆系统和上下文管理。
|
|
5
5
|
>
|
|
6
|
-
> v0.1.
|
|
6
|
+
> v0.1.4 — Goal 连续性、模型配置与命令沙箱 POC
|
|
7
7
|
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
[](https://nodejs.org)
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
|
|
61
61
|
### 环境要求
|
|
62
62
|
|
|
63
|
-
- Node.js
|
|
63
|
+
- Node.js 20、22 或 24 LTS
|
|
64
64
|
- npm >= 9.0
|
|
65
65
|
|
|
66
66
|
### 安装运行
|
|
@@ -104,16 +104,20 @@ npm start -- --print "review the current git diff"
|
|
|
104
104
|
|
|
105
105
|
### 全局安装
|
|
106
106
|
|
|
107
|
-
固定安装 v0.1.2
|
|
107
|
+
固定安装 v0.1.4-2 维护预发布版本:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
npm install -g @orion-agents/orion-code@0.1.2
|
|
110
|
+
npm install -g @orion-agents/orion-code@0.1.4-2
|
|
111
|
+
# 发布后也可使用:npm install -g @orion-agents/orion-code@next
|
|
111
112
|
# 任意目录运行
|
|
112
113
|
orion
|
|
113
114
|
```
|
|
114
115
|
|
|
115
116
|
也可以在源码工作树中使用 `npm ci && npm run build && npm start`。
|
|
116
117
|
|
|
118
|
+
> **预发布状态**:`0.1.4-2` 是计划发布到 npm `next` dist-tag 的维护候选,
|
|
119
|
+
> 当前尚未创建标签或发布。稳定版 `latest` 仍为 `0.1.4`。
|
|
120
|
+
|
|
117
121
|
公众体验、交互优化和新增工作流优先落在 TUI。`terminal-ui` 不作为与
|
|
118
122
|
TUI 并行发展的公众产品;Ink 只保留迁移期兼容,不再增加产品能力。
|
|
119
123
|
|
|
@@ -173,6 +177,69 @@ v0.1.2 只覆盖单 Session、单 Active Goal,不承诺多 Goal 调度或无
|
|
|
173
177
|
CLI 参数 > ~/.orion-code/orion.json > 环境变量 > 内部默认
|
|
174
178
|
```
|
|
175
179
|
|
|
180
|
+
### 项目级工具规则(`allowedTools`)
|
|
181
|
+
|
|
182
|
+
权限规则写在 `projects["<项目绝对路径>"].allowedTools`,只作用于该仓库。规则叠加在
|
|
183
|
+
工具自身的权限策略之上:**只能收紧,不能放宽**。
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"projects": {
|
|
188
|
+
"/Users/me/work/api": {
|
|
189
|
+
"allowedTools": [
|
|
190
|
+
"exec_command(git status*)",
|
|
191
|
+
"exec_command(npm test*)",
|
|
192
|
+
"ask:exec_command(git push*)",
|
|
193
|
+
"deny:read_file(*.env)"
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
- 语法:`[allow|ask|deny:]工具名[(参数通配)]`;`*` 匹配任意字符串,`?` 匹配单个字符,
|
|
201
|
+
工具名写 `*` 表示匹配所有工具。
|
|
202
|
+
- 参数通配匹配的是调用参数中的 `command` / `file_path` / `path` / `url` / `pattern` /
|
|
203
|
+
`query`(按此顺序取第一个非空字符串)。
|
|
204
|
+
- 冲突时按“最严格优先”解析:`deny` > `ask` > `allow`,与书写顺序无关。
|
|
205
|
+
- `allow` 仅用于免去交互确认,**不会**覆盖工具自身的 `deny`、**不会**突破 plan 模式的
|
|
206
|
+
只读约束,也**不会**自动放行破坏性调用。
|
|
207
|
+
- 无法解析的条目会被忽略而不是静默放行,可通过 `/config` 查看解析结果与非法条目。
|
|
208
|
+
|
|
209
|
+
### 命令执行沙箱(`sandbox`)
|
|
210
|
+
|
|
211
|
+
`exec_command` 可在操作系统级沙箱内执行。这是**安全 POC**:后端在运行
|
|
212
|
+
时实测探测,已配置但不可用的沙箱会**fail closed**(拒绝执行),而不会静默降级为
|
|
213
|
+
无沙箱执行。
|
|
214
|
+
|
|
215
|
+
```json
|
|
216
|
+
{
|
|
217
|
+
"sandbox": {
|
|
218
|
+
"profile": "none",
|
|
219
|
+
"backend": "auto",
|
|
220
|
+
"allowNetwork": false,
|
|
221
|
+
"writableRoots": [],
|
|
222
|
+
"image": "alpine:latest"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
- **归属** — `sandbox` 位于全局配置(`~/.orion-code/orion.json`),并可在项目级
|
|
228
|
+
`projects["<项目绝对路径>"].sandbox` 覆盖。项目级按 key 单独覆盖,缺省 key 继承全局。
|
|
229
|
+
- **`profile`** — `none`(默认,不隔离,等价于旧版 `sh -c`)、`read-only`(任何位置不可写、无网络)、
|
|
230
|
+
`workspace-write`(写权限限定在工作区与临时目录,除非 `allowNetwork: true` 否则仍禁网)。
|
|
231
|
+
未知取值(如新版 Orion 写入的更严格值)一律硬失败,绝不降级为 `none`。
|
|
232
|
+
- **`backend`** — `auto`(默认,自动选首个可用后端)、`seatbelt`(macOS `sandbox-exec`)、
|
|
233
|
+
`bubblewrap`(Linux `bwrap`)或 `docker`。每个后端都用真实执行探针校验,从不靠 `which` 推断。
|
|
234
|
+
- **`image`** — 仅 `docker` 需要,指定运行所用的容器镜像。
|
|
235
|
+
- **`writableRoots`** — `workspace-write` 可写入的额外宿主根目录(除工作区与临时目录外)。
|
|
236
|
+
非字符串 / 空项会被丢弃。
|
|
237
|
+
- **迁移 / 回滚** — 新增 `sandbox` 完全向后兼容:默认 `profile: "none"` 与旧行为完全一致。
|
|
238
|
+
删除该 key(或回退到沙箱前的版本)是安全回滚;旧版 Orion 会忽略该未知字段。不涉及任何敏感信息,无需脱敏。
|
|
239
|
+
- **已知限制** — `seatbelt` 不能嵌套在另一沙箱内(例如 Orion 自身运行在应用沙箱中时);
|
|
240
|
+
`docker` 在独立进程树中运行命令,只约束被 bind-mount 的部分(镜像根文件系统已通过 `--read-only` 设为只读);
|
|
241
|
+
各后端均不限制 CPU / 内存。
|
|
242
|
+
|
|
176
243
|
### 环境变量
|
|
177
244
|
|
|
178
245
|
| 变量 | 默认值 | 说明 |
|
|
@@ -399,7 +466,29 @@ orion-code/
|
|
|
399
466
|
|
|
400
467
|
## 版本历史
|
|
401
468
|
|
|
402
|
-
### v0.1.2
|
|
469
|
+
### v0.1.4-2(候选,未发布)
|
|
470
|
+
|
|
471
|
+
- 汇总 v0.1.4 后续的安全、持久化、Goal/runtime、Research、依赖与发布门禁修复;
|
|
472
|
+
- 以 npm `next` dist-tag 发布,不移动稳定版 `latest`。
|
|
473
|
+
|
|
474
|
+
### v0.1.4(已发布)
|
|
475
|
+
|
|
476
|
+
- 版本元数据对齐:`package.json` / `package-lock.json` 升至 `0.1.4`,`orion --version`、
|
|
477
|
+
出站 `User-Agent` 与崩溃/遥测上报不再误报 `0.1.3`;
|
|
478
|
+
- 类型安全推进:外部边界(LLM provider、MCP wire、工具返回)由 `any` 收窄为 `unknown` +
|
|
479
|
+
类型守卫,顺带修复被 `any` 掩盖的真实缺陷;
|
|
480
|
+
- 可靠性:持久化与鉴权路径不再静默吞掉异常,ESLint 启用 `no-empty` 门禁。
|
|
481
|
+
|
|
482
|
+
### v0.1.3(已发布)
|
|
483
|
+
|
|
484
|
+
- `/model` 与 `/models` 拆分:`/model` 只显示当前模型信息,`/models` 承接交互式切换;
|
|
485
|
+
- `modelRegistry` 成为模型展示与切换的唯一事实源,静态 catalog 退为 legacy fallback;
|
|
486
|
+
- 内置 catalog 补全(火山方舟 / xf-yun / deepseek 等),未配置上下文时正确回退;
|
|
487
|
+
- 命令沙箱 POC、只读 Git 工具与工具 allowlist 的安全基线。
|
|
488
|
+
|
|
489
|
+
> 完整变更与交付状态(已发布 / 已合并 / 候选)以 `CHANGELOG.md` 为准。
|
|
490
|
+
|
|
491
|
+
### v0.1.2(已发布)
|
|
403
492
|
|
|
404
493
|
- 单 Session、单 Active Goal 的 typed continuation;
|
|
405
494
|
- restart/resume 后安全暂停,必须显式恢复;
|
|
@@ -419,6 +508,25 @@ orion-code/
|
|
|
419
508
|
|
|
420
509
|
---
|
|
421
510
|
|
|
511
|
+
## Research-to-Evidence(v0.1.4,实验性)
|
|
512
|
+
|
|
513
|
+
> **状态标记:experimental(实验性)。** 把只读 `research` 子 agent 的结果转化为**可追踪、可恢复**的研究→证据闭环。
|
|
514
|
+
|
|
515
|
+
核心保证(违反任一即 No-Go,绝不发布):
|
|
516
|
+
|
|
517
|
+
- **只接专用 WebSearch / WebFetch**,不暴露通用 MCP、不授予 write/exec。
|
|
518
|
+
- **SSRF / DNS 重解析 / 重定向 / 响应大小 / 超时** 全部走既有守卫:选择期做 lexical SSRF 预检,逐跳防护委托给真实 WebFetch 工具。
|
|
519
|
+
- **claim 必须有 source 绑定**才能进入 `observed`;无独立验证的 claim 永远停在 `partial`/`unmet`,绝不被算作已验证/完成。
|
|
520
|
+
- **安全闸门失败 → `blocked`/`failed` + 结构化原因**,绝不伪装成命中;provider fallback 只换 provider,不降级 source status,也不把失败写成成功。
|
|
521
|
+
- 研究证据(web)与执行验证证据(file / 测试 / 构建 / 文件事实)**明确区分**,web 摘要不能替代执行验证。
|
|
522
|
+
- 包与源元数据**原子 CAS 保存**,project / session / Goal 作用域隔离;恢复只推导状态、不重放外部副作用;旧 schema 版本 fail-closed。
|
|
523
|
+
|
|
524
|
+
模块:`src/runtime/subagents/{research-types,research-contract,research-citation,web-research-adapter,research-renderer,research-artifact,research-quality}.ts`。
|
|
525
|
+
|
|
526
|
+
> 真实终端(PTY)与外部状态证据在 CI 中标记为 `not_run`;本地测试不视为发布完成。
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
422
530
|
## 开发
|
|
423
531
|
|
|
424
532
|
```bash
|
|
@@ -439,6 +547,9 @@ npm run lint
|
|
|
439
547
|
|
|
440
548
|
# 格式化
|
|
441
549
|
npm run format
|
|
550
|
+
|
|
551
|
+
# 发布前只读检查(不会 tag / push / publish)
|
|
552
|
+
npm run release:check
|
|
442
553
|
```
|
|
443
554
|
|
|
444
555
|
---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coder.d.ts","sourceRoot":"","sources":["../../src/agents/coder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"coder.d.ts","sourceRoot":"","sources":["../../src/agents/coder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,eAAe,CAAC;AAOzF,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAUnC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;YAwBhC,aAAa;CAO5B"}
|
package/dist/agents/coder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coder.js","sourceRoot":"","sources":["../../src/agents/coder.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"coder.js","sourceRoot":"","sources":["../../src/agents/coder.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,yCAAyF;AAOzF,MAAa,UAAW,SAAQ,iBAAS;IACvC,YAAY,MAA6B;QACvC,KAAK,CAAC;YACJ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,OAAO;YACzB,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,OAAO;YAC7B,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,8BAA8B;YAClE,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC;YAC3F,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAU;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAExD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAE1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAU;QACpC,OAAO;QACP,OAAO;YACL,OAAO,EAAE,gBAAgB,IAAI,CAAC,IAAI,aAAa;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;CACF;AA1CD,gCA0CC"}
|
package/dist/agents/fork.d.ts
CHANGED
|
@@ -4,16 +4,24 @@
|
|
|
4
4
|
* Fork 一个子 Agent 继承父上下文,执行独立任务后返回结果。
|
|
5
5
|
* 参考 OpenClaude 的 forkSubagent.ts 实现。
|
|
6
6
|
*/
|
|
7
|
-
import type { Message } from '../services/llm';
|
|
8
|
-
import type {
|
|
7
|
+
import type { LLMService, Message } from '../services/llm';
|
|
8
|
+
import type { OrionCodeTool } from '../framework/tool';
|
|
9
9
|
import type { PermissionMode } from '../commands/types';
|
|
10
|
+
import type { ToolConfirmationPolicy } from '../services/config';
|
|
11
|
+
import type { ToolAllowlistEvaluator } from '../services/tool-allowlist';
|
|
10
12
|
export interface ForkOptions {
|
|
11
13
|
/** 继承父上下文(messages + systemPrompt) */
|
|
12
14
|
inheritContext: boolean;
|
|
13
15
|
/** 权限模式 */
|
|
14
16
|
permissionMode?: PermissionMode;
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
+
/** LLM 服务实例。Fork 不会从 CLI 单例中隐式加载。 */
|
|
18
|
+
llm?: LLMService;
|
|
19
|
+
/** 可用工具(默认最小只读工具集) */
|
|
20
|
+
tools?: OrionCodeTool[];
|
|
21
|
+
/** 需要交互确认时的无 UI 回退策略 */
|
|
22
|
+
toolConfirmation?: ToolConfirmationPolicy;
|
|
23
|
+
/** 项目级工具 allow/ask/deny 规则 */
|
|
24
|
+
toolAllowlist?: ToolAllowlistEvaluator;
|
|
17
25
|
/** 最大轮次 */
|
|
18
26
|
maxTurns?: number;
|
|
19
27
|
/** 后台执行(不阻塞父 Agent) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/agents/fork.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/agents/fork.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAQzE,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW;IACX,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,qCAAqC;IACrC,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,sBAAsB;IACtB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,8BAA8B;IAC9B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY;IACZ,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3B,YAAY;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAMD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA0I5E;AAoBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAMD,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,UAAU,IAAI,kBAAkB,EAAE,CAAC"}
|
package/dist/agents/fork.js
CHANGED
|
@@ -18,7 +18,7 @@ const tools_1 = require("../tools");
|
|
|
18
18
|
* Fork 子 Agent 执行任务
|
|
19
19
|
*/
|
|
20
20
|
async function forkSubagent(options) {
|
|
21
|
-
const { inheritContext = true, tools =
|
|
21
|
+
const { inheritContext = true, llm, tools = getDefaultForkTools(), permissionMode = 'plan', toolConfirmation, toolAllowlist, maxTurns = 5, background = false, taskDescription, parentMessages = [], parentSystemPrompt, cwd = process.cwd(), memoryContent = '', skillsContent = '', } = options;
|
|
22
22
|
const startTime = Date.now();
|
|
23
23
|
// 构建子 Agent 的消息历史
|
|
24
24
|
let messages;
|
|
@@ -47,26 +47,27 @@ async function forkSubagent(options) {
|
|
|
47
47
|
{ role: 'user', content: taskDescription },
|
|
48
48
|
];
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
const toolContext = {
|
|
51
|
+
cwd,
|
|
52
|
+
config: { name: 'orion-code', mode: 'development' },
|
|
53
|
+
permissionMode,
|
|
54
|
+
toolAllowlist,
|
|
55
|
+
};
|
|
56
|
+
// query scheduler 在调用执行器前统一应用 tool policy、permission mode 与 allowlist。
|
|
51
57
|
const toolExecutor = async (name, args) => {
|
|
52
|
-
// 简化版:直接执行工具
|
|
53
58
|
const tool = tools.find(t => t.name === name);
|
|
54
59
|
if (!tool) {
|
|
55
60
|
return JSON.stringify({ success: false, error: `Unknown tool: ${name}` });
|
|
56
61
|
}
|
|
57
|
-
// 调用工具的 execute
|
|
58
|
-
const context = { cwd, config: { name: 'orion-code', mode: 'development' } };
|
|
59
62
|
try {
|
|
60
|
-
const result = await tool.execute(args,
|
|
63
|
+
const result = await tool.execute(args, toolContext);
|
|
61
64
|
return JSON.stringify(result);
|
|
62
65
|
}
|
|
63
|
-
catch (
|
|
64
|
-
|
|
66
|
+
catch (error) {
|
|
67
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
68
|
+
return JSON.stringify({ success: false, error: message });
|
|
65
69
|
}
|
|
66
70
|
};
|
|
67
|
-
// 简化的 LLM(不使用完整 LLMService,避免依赖)
|
|
68
|
-
// 这里假设有全局的 llm 实例可用
|
|
69
|
-
const llm = getGlobalLLM();
|
|
70
71
|
if (!llm) {
|
|
71
72
|
return {
|
|
72
73
|
success: false,
|
|
@@ -86,6 +87,10 @@ async function forkSubagent(options) {
|
|
|
86
87
|
toolExecutor,
|
|
87
88
|
llm,
|
|
88
89
|
maxTurns,
|
|
90
|
+
permissionMode,
|
|
91
|
+
toolConfirmation,
|
|
92
|
+
toolAllowlist,
|
|
93
|
+
toolContext,
|
|
89
94
|
streamCallbacks: {
|
|
90
95
|
onChunk: (chunk) => {
|
|
91
96
|
if (!background) {
|
|
@@ -120,34 +125,25 @@ async function forkSubagent(options) {
|
|
|
120
125
|
tokenUsage: finalUsage,
|
|
121
126
|
};
|
|
122
127
|
}
|
|
123
|
-
catch (
|
|
128
|
+
catch (error) {
|
|
129
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
124
130
|
return {
|
|
125
131
|
success: false,
|
|
126
132
|
content: '',
|
|
127
|
-
error:
|
|
133
|
+
error: message,
|
|
128
134
|
duration: Date.now() - startTime,
|
|
129
135
|
};
|
|
130
136
|
}
|
|
131
137
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
function
|
|
140
|
-
|
|
141
|
-
try {
|
|
142
|
-
const cliModule = require('../cli');
|
|
143
|
-
if (cliModule.llm) {
|
|
144
|
-
return cliModule.llm;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
catch {
|
|
148
|
-
// ignore
|
|
149
|
-
}
|
|
150
|
-
return null;
|
|
138
|
+
const DEFAULT_FORK_TOOL_NAMES = new Set([
|
|
139
|
+
'read_file',
|
|
140
|
+
'list_files',
|
|
141
|
+
'glob',
|
|
142
|
+
'grep',
|
|
143
|
+
'batch_read',
|
|
144
|
+
]);
|
|
145
|
+
function getDefaultForkTools() {
|
|
146
|
+
return tools_1.TOOLS.filter(tool => DEFAULT_FORK_TOOL_NAMES.has(tool.name));
|
|
151
147
|
}
|
|
152
148
|
// ============================================================================
|
|
153
149
|
// 防递归保护
|
package/dist/agents/fork.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/agents/fork.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/agents/fork.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA4DH,oCA0IC;AAuBD,sDAEC;AAKD,0DAEC;AA/ND,4CAA0E;AAC1E,oCAAiC;AA6CjC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACI,KAAK,UAAU,YAAY,CAAC,OAAoB;IACrD,MAAM,EACJ,cAAc,GAAG,IAAI,EACrB,GAAG,EACH,KAAK,GAAG,mBAAmB,EAAE,EAC7B,cAAc,GAAG,MAAM,EACvB,gBAAgB,EAChB,aAAa,EACb,QAAQ,GAAG,CAAC,EACZ,UAAU,GAAG,KAAK,EAClB,eAAe,EACf,cAAc,GAAG,EAAE,EACnB,kBAAkB,EAClB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACnB,aAAa,GAAG,EAAE,EAClB,aAAa,GAAG,EAAE,GACnB,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,kBAAkB;IAClB,IAAI,QAAmB,CAAC;IAExB,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,iBAAiB;QACjB,QAAQ,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;QAC/B,eAAe;QACf,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,eAAe,eAAe,iJAAiJ;SACzL,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,UAAU;QACV,MAAM,SAAS,GAAkB;YAC/B,GAAG;YACH,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,KAAK;YACL,aAAa;YACb,aAAa;SACd,CAAC;QACF,MAAM,YAAY,GAAG,kBAAkB,IAAI,IAAA,2BAAe,EAAC,SAAS,CAAC,CAAC;QACtE,QAAQ,GAAG;YACT,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAgB;QAC/B,GAAG;QACH,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE;QACnD,cAAc;QACd,aAAa;KACd,CAAC;IAEF,uEAAuE;IACvE,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAE,IAA6B,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,oCAAoC;YAC3C,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACjC,CAAC;IACJ,CAAC;IAED,OAAO;IACP,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,UAA0E,CAAC;IAC/E,MAAM,SAAS,GAA2E,EAAE,CAAC;IAE7F,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAA,iBAAK,EAAC;YAC9B,QAAQ;YACR,KAAK;YACL,YAAY;YACZ,GAAG;YACH,QAAQ;YACR,cAAc;YACd,gBAAgB;YAChB,aAAa;YACb,WAAW;YACX,eAAe,EAAE;gBACf,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACjB,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,mBAAmB;wBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;aACF;SACF,CAAC,EAAE,CAAC;YACH,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,WAAW;oBACd,SAAS;oBACT,MAAM;gBACR,KAAK,aAAa;oBAChB,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;qBACrB,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,UAAU;oBACb,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC7B,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;oBACzB,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,YAAY;YACrB,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,UAAU,EAAE,UAAU;SACvB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACjC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,WAAW;IACX,YAAY;IACZ,MAAM;IACN,MAAM;IACN,YAAY;CACb,CAAC,CAAC;AAEH,SAAS,mBAAmB;IAC1B,OAAO,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,OAAO,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,OAAO,GAAG,oBAAoB,KAAK,OAAO,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leader.d.ts","sourceRoot":"","sources":["../../src/agents/leader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"leader.d.ts","sourceRoot":"","sources":["../../src/agents/leader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,eAAe,CAAC;AAOzF,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAUnC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;YAyBhC,cAAc;CAO7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leader.js","sourceRoot":"","sources":["../../src/agents/leader.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"leader.js","sourceRoot":"","sources":["../../src/agents/leader.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,yCAAyF;AAOzF,MAAa,WAAY,SAAQ,iBAAS;IACxC,YAAY,MAA6B;QACvC,KAAK,CAAC;YACJ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,QAAQ;YAC1B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ;YAC9B,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,yBAAyB;YAC7D,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,CAAC,mBAAmB,EAAE,cAAc,EAAE,YAAY,CAAC;YACzF,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAU;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC;YACH,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAExD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAE1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAAU;QACrC,cAAc;QACd,OAAO;YACL,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,yBAAyB;YACpD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;CACF;AA3CD,kCA2CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/agents/worker-pool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAMzE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3C;
|
|
1
|
+
{"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/agents/worker-pool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAMzE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3C;AAaD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,CAAC,EAAE,gBAAgB;IAMrC;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAmCjF;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAetG;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAShC;;OAEG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAIzC;;OAEG;IACH,YAAY,IAAI,IAAI;IAQpB;;OAEG;IACH,SAAS,IAAI;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB;IAUD;;OAEG;IACH,OAAO,IAAI,IAAI;IAsBf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;YAyBR,WAAW;CAwD1B;AAQD,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAKnE;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
|
@@ -32,29 +32,28 @@ class WorkerPool {
|
|
|
32
32
|
if (idleWorkers.length > 0 || this.workers.size < this.maxWorkers) {
|
|
33
33
|
// 有空闲 Worker 或未达到上限:直接执行
|
|
34
34
|
const workerId = this.allocateWorker(task);
|
|
35
|
-
|
|
36
|
-
return result;
|
|
35
|
+
return this.executeTask(workerId, task, forkOptions);
|
|
37
36
|
}
|
|
38
|
-
// 无空闲 Worker
|
|
39
|
-
|
|
40
|
-
// 等待有空闲 Worker
|
|
37
|
+
// 无空闲 Worker:入队,待某个 Worker 完成任务后由 drainQueue 取出执行。
|
|
38
|
+
// 每个入队任务携带自己的 resolver,确保只被执行一次,避免重复执行。
|
|
41
39
|
return new Promise((resolve) => {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
const finish = (result) => {
|
|
41
|
+
clearTimeout(timer);
|
|
42
|
+
resolve(result);
|
|
43
|
+
};
|
|
44
|
+
this.taskQueue.push({ task, forkOptions, resolve: finish });
|
|
45
|
+
// 超时保护:仍未被取出执行时才以超时失败结束。
|
|
46
|
+
const timer = setTimeout(() => {
|
|
47
|
+
const idx = this.taskQueue.findIndex(q => q.task === task && q.resolve === finish);
|
|
48
|
+
if (idx !== -1) {
|
|
49
|
+
this.taskQueue.splice(idx, 1);
|
|
50
|
+
finish({
|
|
51
|
+
success: false,
|
|
52
|
+
content: '',
|
|
53
|
+
error: 'Task queue timeout',
|
|
54
|
+
duration: this.taskTimeout,
|
|
55
|
+
});
|
|
47
56
|
}
|
|
48
|
-
}, 100);
|
|
49
|
-
// 超时处理
|
|
50
|
-
setTimeout(() => {
|
|
51
|
-
clearInterval(checkInterval);
|
|
52
|
-
resolve({
|
|
53
|
-
success: false,
|
|
54
|
-
content: '',
|
|
55
|
-
error: 'Task queue timeout',
|
|
56
|
-
duration: this.taskTimeout,
|
|
57
|
-
});
|
|
58
57
|
}, this.taskTimeout);
|
|
59
58
|
});
|
|
60
59
|
}
|
|
@@ -119,7 +118,16 @@ class WorkerPool {
|
|
|
119
118
|
this.workers.set(workerId, { ...info, status: 'failed' });
|
|
120
119
|
}
|
|
121
120
|
}
|
|
122
|
-
|
|
121
|
+
// 解除仍在队列中的任务,避免 submit 返回的 Promise 永远挂起。
|
|
122
|
+
while (this.taskQueue.length > 0) {
|
|
123
|
+
const item = this.taskQueue.shift();
|
|
124
|
+
item.resolve({
|
|
125
|
+
success: false,
|
|
126
|
+
content: '',
|
|
127
|
+
error: 'Worker pool stopped',
|
|
128
|
+
duration: 0,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
123
131
|
}
|
|
124
132
|
// ============================================================================
|
|
125
133
|
// 内部方法
|
|
@@ -169,14 +177,15 @@ class WorkerPool {
|
|
|
169
177
|
});
|
|
170
178
|
// 保存结果
|
|
171
179
|
this.results.set(task.id, result);
|
|
172
|
-
//
|
|
180
|
+
// 处理队列中的下一个任务(每个任务只会被 shift 一次,保证只执行一次)
|
|
173
181
|
if (this.taskQueue.length > 0) {
|
|
174
|
-
const
|
|
175
|
-
if (
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
182
|
+
const next = this.taskQueue.shift();
|
|
183
|
+
if (!next)
|
|
184
|
+
return result;
|
|
185
|
+
const nextWorkerId = this.allocateWorker(next.task);
|
|
186
|
+
this.executeTask(nextWorkerId, next.task, next.forkOptions)
|
|
187
|
+
.then(next.resolve)
|
|
188
|
+
.catch(next.resolve);
|
|
180
189
|
}
|
|
181
190
|
return result;
|
|
182
191
|
}
|
|
@@ -190,7 +199,7 @@ class WorkerPool {
|
|
|
190
199
|
const result = {
|
|
191
200
|
success: false,
|
|
192
201
|
content: '',
|
|
193
|
-
error: err.message,
|
|
202
|
+
error: err instanceof Error ? err.message : String(err),
|
|
194
203
|
duration: Date.now() - (this.workers.get(workerId)?.startTime || Date.now()),
|
|
195
204
|
};
|
|
196
205
|
this.results.set(task.id, result);
|