@orion-agents/orion-code 0.1.3 → 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 +26 -4
- package/README.zh-CN.md +41 -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 -3562
- 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 +4 -4
- 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 +2 -2
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +57 -10
- package/dist/framework/query.js.map +1 -1
- package/dist/framework/store.d.ts +4 -4
- package/dist/framework/tool-scheduler.d.ts +16 -13
- package/dist/framework/tool-scheduler.d.ts.map +1 -1
- package/dist/framework/tool-scheduler.js +135 -32
- package/dist/framework/tool-scheduler.js.map +1 -1
- package/dist/framework/tool.d.ts +30 -2
- package/dist/framework/tool.d.ts.map +1 -1
- package/dist/framework/tool.js +27 -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 +2 -2
- 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 +10 -3
- package/dist/print-ui/launch.d.ts.map +1 -1
- package/dist/print-ui/launch.js +18 -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 +2 -2
- package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +6 -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 +10 -46
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +199 -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 +141 -10
- package/dist/runtime/goals/tools.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/ui-events.d.ts +8 -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 +14 -71
- 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 +2 -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-context.d.ts +8 -0
- package/dist/services/model-context.d.ts.map +1 -1
- package/dist/services/model-context.js +111 -7
- package/dist/services/model-context.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/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 +16 -8
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +26 -0
- 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 -8
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +248 -55
- 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 +236 -42
- 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 +3 -1
- package/dist/tools/sandbox.d.ts.map +1 -1
- package/dist/tools/sandbox.js +28 -13
- package/dist/tools/sandbox.js.map +1 -1
- 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 +240 -26
- 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/layout.d.ts.map +1 -1
- package/dist/tui-ui/layout.js +2 -0
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +1 -0
- package/dist/tui-ui/runner.js.map +1 -1
- package/dist/tui-ui/state.d.ts +9 -1
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +13 -0
- package/dist/tui-ui/state.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 +8 -1
- package/dist/utils/mask.d.ts.map +1 -1
- package/dist/utils/mask.js +10 -12
- package/dist/utils/mask.js.map +1 -1
- 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 +8 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-citation.js","sourceRoot":"","sources":["../../../src/runtime/subagents/research-citation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research contract and normalizer (v0.1.4, P0-R1).
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Validate a `ResearchRequest` before any work happens.
|
|
6
|
+
* - Map a legacy `SubtaskResult` (existing `research` role output) into a
|
|
7
|
+
* versioned `ResearchPacket` without rewriting the runtime.
|
|
8
|
+
* - Fail closed: missing summary, over-limit sources, or an `observed` claim
|
|
9
|
+
* without a source binding are rejected. Non-completed results never yield
|
|
10
|
+
* `observed` claims (no "looks researched" masquerading as verified).
|
|
11
|
+
* - Provide a deterministic serialization + content hash contract so packets
|
|
12
|
+
* are replayable and de-duplicable.
|
|
13
|
+
*/
|
|
14
|
+
import type { SubtaskPacket, SubtaskResult } from './types';
|
|
15
|
+
import { type ResearchPacket, type ResearchRequest, type ResearchSource } from './research-types';
|
|
16
|
+
/** Hard caps independent of per-request budget, to bound abuse. */
|
|
17
|
+
export declare const RESEARCH_HARD_LIMITS: {
|
|
18
|
+
readonly maxSources: {
|
|
19
|
+
readonly min: 1;
|
|
20
|
+
readonly max: 200;
|
|
21
|
+
};
|
|
22
|
+
readonly maxFetchBytes: {
|
|
23
|
+
readonly min: 0;
|
|
24
|
+
readonly max: number;
|
|
25
|
+
};
|
|
26
|
+
readonly maxDurationMs: {
|
|
27
|
+
readonly min: 1000;
|
|
28
|
+
readonly max: 600000;
|
|
29
|
+
};
|
|
30
|
+
readonly maxClaims: 500;
|
|
31
|
+
readonly maxSummaryLen: 20000;
|
|
32
|
+
};
|
|
33
|
+
export interface ValidationResult {
|
|
34
|
+
ok: boolean;
|
|
35
|
+
errors: string[];
|
|
36
|
+
}
|
|
37
|
+
export interface PacketContext {
|
|
38
|
+
sessionId: string;
|
|
39
|
+
projectPath: string;
|
|
40
|
+
goalId?: string;
|
|
41
|
+
objectiveRevision?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ResearchPacketInputs {
|
|
44
|
+
/** Sources produced by the root-approved dedicated web adapter. */
|
|
45
|
+
externalSources?: readonly ResearchSource[];
|
|
46
|
+
/** Adapter diagnostics that should survive persistence/resume. */
|
|
47
|
+
externalNotes?: readonly string[];
|
|
48
|
+
externalTimedOut?: boolean;
|
|
49
|
+
externalAborted?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/** Validate a research request before scheduling any work. */
|
|
52
|
+
export declare function validateResearchRequest(req: Partial<ResearchRequest> | null | undefined): ValidationResult;
|
|
53
|
+
/** Convenience builder for a local-only research request (POC-1 default). */
|
|
54
|
+
export declare function createLocalResearchRequest(objective: string, projectRoot: string, overrides?: Partial<ResearchRequest>): ResearchRequest;
|
|
55
|
+
/**
|
|
56
|
+
* Materialize the model-facing capability into the authoritative request.
|
|
57
|
+
* Project root/objective/path scope are always runtime-owned; the model can
|
|
58
|
+
* only narrow external domains and budgets. Missing capability means local.
|
|
59
|
+
*/
|
|
60
|
+
export declare function createResearchRequestForSubtask(packet: SubtaskPacket, projectRoot: string, overrides?: Partial<ResearchRequest>): ResearchRequest;
|
|
61
|
+
/**
|
|
62
|
+
* Map a legacy `SubtaskResult` into a versioned `ResearchPacket`.
|
|
63
|
+
*
|
|
64
|
+
* File findings become `observed` file claims bound to a `file` source. Findings
|
|
65
|
+
* without a file become `inference`/`unverified` claims. Failed/cancelled/timed
|
|
66
|
+
* out results downgrade every claim to `unverified` so a partial run can never
|
|
67
|
+
* report a verified conclusion.
|
|
68
|
+
*/
|
|
69
|
+
export declare function subtaskResultToPacket(result: SubtaskResult, request: ResearchRequest, ctx: PacketContext, inputs?: ResearchPacketInputs): ResearchPacket;
|
|
70
|
+
/**
|
|
71
|
+
* Fail-closed packet validation. An `observed`/`partially_observed` claim must
|
|
72
|
+
* bind to at least one existing source; an inference claim must not be marked
|
|
73
|
+
* `observed`; source counts must respect the request budget.
|
|
74
|
+
*/
|
|
75
|
+
export declare function validatePacket(packet: ResearchPacket): ValidationResult;
|
|
76
|
+
/** Deterministic JSON (sorted keys) for a value. */
|
|
77
|
+
export declare function stableStringify(value: unknown): string;
|
|
78
|
+
/**
|
|
79
|
+
* Content hash over the canonical packet body (timestamps excluded). Proves what
|
|
80
|
+
* was read, NOT that the content is true; used for dedupe and drift detection.
|
|
81
|
+
*/
|
|
82
|
+
export declare function hashPacket(packet: ResearchPacket): string;
|
|
83
|
+
//# sourceMappingURL=research-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-contract.d.ts","sourceRoot":"","sources":["../../../src/runtime/subagents/research-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAC1E,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAE1B,mEAAmE;AACnE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;CAMvB,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,kEAAkE;IAClE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAoBD,8DAA8D;AAC9D,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,SAAS,GAC/C,gBAAgB,CAoClB;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,eAAe,CAWjB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,eAAe,CAkBjB;AA6DD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,aAAa,EAClB,MAAM,GAAE,oBAAyB,GAChC,cAAc,CAkFhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CA8CvE;AAaD,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD;AAWD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAIzD"}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Research contract and normalizer (v0.1.4, P0-R1).
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Validate a `ResearchRequest` before any work happens.
|
|
7
|
+
* - Map a legacy `SubtaskResult` (existing `research` role output) into a
|
|
8
|
+
* versioned `ResearchPacket` without rewriting the runtime.
|
|
9
|
+
* - Fail closed: missing summary, over-limit sources, or an `observed` claim
|
|
10
|
+
* without a source binding are rejected. Non-completed results never yield
|
|
11
|
+
* `observed` claims (no "looks researched" masquerading as verified).
|
|
12
|
+
* - Provide a deterministic serialization + content hash contract so packets
|
|
13
|
+
* are replayable and de-duplicable.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.RESEARCH_HARD_LIMITS = void 0;
|
|
17
|
+
exports.validateResearchRequest = validateResearchRequest;
|
|
18
|
+
exports.createLocalResearchRequest = createLocalResearchRequest;
|
|
19
|
+
exports.createResearchRequestForSubtask = createResearchRequestForSubtask;
|
|
20
|
+
exports.subtaskResultToPacket = subtaskResultToPacket;
|
|
21
|
+
exports.validatePacket = validatePacket;
|
|
22
|
+
exports.stableStringify = stableStringify;
|
|
23
|
+
exports.hashPacket = hashPacket;
|
|
24
|
+
const crypto_1 = require("crypto");
|
|
25
|
+
const path_1 = require("path");
|
|
26
|
+
const research_types_1 = require("./research-types");
|
|
27
|
+
/** Hard caps independent of per-request budget, to bound abuse. */
|
|
28
|
+
exports.RESEARCH_HARD_LIMITS = {
|
|
29
|
+
maxSources: { min: 1, max: 200 },
|
|
30
|
+
maxFetchBytes: { min: 0, max: 32 * 1024 * 1024 },
|
|
31
|
+
maxDurationMs: { min: 1000, max: 600000 },
|
|
32
|
+
maxClaims: 500,
|
|
33
|
+
maxSummaryLen: 20000,
|
|
34
|
+
};
|
|
35
|
+
function nowIso() {
|
|
36
|
+
return new Date().toISOString();
|
|
37
|
+
}
|
|
38
|
+
function validateIntegerBudget(name, value, limits, errors) {
|
|
39
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value)) {
|
|
40
|
+
errors.push(`${name} must be a safe integer`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (value < limits.min)
|
|
44
|
+
errors.push(`${name} must be >= ${limits.min}`);
|
|
45
|
+
if (value > limits.max)
|
|
46
|
+
errors.push(`${name} must be <= ${limits.max}`);
|
|
47
|
+
}
|
|
48
|
+
/** Validate a research request before scheduling any work. */
|
|
49
|
+
function validateResearchRequest(req) {
|
|
50
|
+
const errors = [];
|
|
51
|
+
if (!req || typeof req !== 'object') {
|
|
52
|
+
return { ok: false, errors: ['request is required'] };
|
|
53
|
+
}
|
|
54
|
+
if (typeof req.schemaVersion !== 'number')
|
|
55
|
+
errors.push('schemaVersion is required');
|
|
56
|
+
if (req.schemaVersion !== undefined && req.schemaVersion !== research_types_1.RESEARCH_SCHEMA_VERSION) {
|
|
57
|
+
errors.push(`unsupported schemaVersion ${req.schemaVersion}`);
|
|
58
|
+
}
|
|
59
|
+
if (typeof req.objective !== 'string' || !req.objective.trim())
|
|
60
|
+
errors.push('objective is required');
|
|
61
|
+
if (!req.scope || typeof req.scope.projectRoot !== 'string')
|
|
62
|
+
errors.push('scope.projectRoot is required');
|
|
63
|
+
if (req.mode !== 'local' && req.mode !== 'web' && req.mode !== 'mixed') {
|
|
64
|
+
errors.push('mode must be local | web | mixed');
|
|
65
|
+
}
|
|
66
|
+
validateIntegerBudget('maxSources', req.maxSources, exports.RESEARCH_HARD_LIMITS.maxSources, errors);
|
|
67
|
+
validateIntegerBudget('maxFetchBytes', req.maxFetchBytes, exports.RESEARCH_HARD_LIMITS.maxFetchBytes, errors);
|
|
68
|
+
validateIntegerBudget('maxDurationMs', req.maxDurationMs, exports.RESEARCH_HARD_LIMITS.maxDurationMs, errors);
|
|
69
|
+
if (req.goalBinding) {
|
|
70
|
+
if (typeof req.goalBinding.goalId !== 'string')
|
|
71
|
+
errors.push('goalBinding.goalId is required');
|
|
72
|
+
if (typeof req.goalBinding.objectiveRevision !== 'number') {
|
|
73
|
+
errors.push('goalBinding.objectiveRevision is required');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return { ok: errors.length === 0, errors };
|
|
77
|
+
}
|
|
78
|
+
/** Convenience builder for a local-only research request (POC-1 default). */
|
|
79
|
+
function createLocalResearchRequest(objective, projectRoot, overrides = {}) {
|
|
80
|
+
return {
|
|
81
|
+
schemaVersion: research_types_1.RESEARCH_SCHEMA_VERSION,
|
|
82
|
+
objective,
|
|
83
|
+
scope: { projectRoot, ...(overrides.scope ?? {}) },
|
|
84
|
+
mode: overrides.mode ?? 'local',
|
|
85
|
+
maxSources: overrides.maxSources ?? 50,
|
|
86
|
+
maxFetchBytes: overrides.maxFetchBytes ?? 0,
|
|
87
|
+
maxDurationMs: overrides.maxDurationMs ?? 120000,
|
|
88
|
+
...overrides,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Materialize the model-facing capability into the authoritative request.
|
|
93
|
+
* Project root/objective/path scope are always runtime-owned; the model can
|
|
94
|
+
* only narrow external domains and budgets. Missing capability means local.
|
|
95
|
+
*/
|
|
96
|
+
function createResearchRequestForSubtask(packet, projectRoot, overrides = {}) {
|
|
97
|
+
const capability = packet.research;
|
|
98
|
+
const mode = capability?.mode ?? 'local';
|
|
99
|
+
return createLocalResearchRequest(packet.objective, projectRoot, {
|
|
100
|
+
mode,
|
|
101
|
+
scope: {
|
|
102
|
+
projectRoot,
|
|
103
|
+
...(packet.scope?.paths ? { paths: [...packet.scope.paths] } : {}),
|
|
104
|
+
...(capability?.domains ? { domains: [...capability.domains] } : {}),
|
|
105
|
+
...(capability?.freshness ? { freshness: capability.freshness } : {}),
|
|
106
|
+
...(capability?.asOf ? { asOf: capability.asOf } : {}),
|
|
107
|
+
},
|
|
108
|
+
maxSources: capability?.maxSources ?? 50,
|
|
109
|
+
maxFetchBytes: capability?.maxFetchBytes ?? (mode === 'local' ? 0 : 2 * 1024 * 1024),
|
|
110
|
+
maxDurationMs: capability?.maxDurationMs ?? 120000,
|
|
111
|
+
...(packet.expectedOutput ? { expectedOutput: packet.expectedOutput } : {}),
|
|
112
|
+
...overrides,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function deriveVerification(status, hasFile) {
|
|
116
|
+
// Fail closed: a non-completed result can never produce an `observed` claim.
|
|
117
|
+
if (status !== 'completed')
|
|
118
|
+
return 'unverified';
|
|
119
|
+
return hasFile ? 'observed' : 'unverified';
|
|
120
|
+
}
|
|
121
|
+
function hasUnsafePathSyntax(value) {
|
|
122
|
+
const hasUrlScheme = /^[a-z][a-z\d+.-]*:/iu.test(value) && !/^[a-z]:\//iu.test(value);
|
|
123
|
+
return (/[\u0000-\u001f\u007f]/u.test(value) ||
|
|
124
|
+
hasUrlScheme ||
|
|
125
|
+
(path_1.win32.isAbsolute(value) && !(0, path_1.isAbsolute)(value)));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Normalize an untrusted result path against the runtime-owned project root.
|
|
129
|
+
* Absolute paths are accepted only when native path resolution proves they are
|
|
130
|
+
* inside the project; the packet always receives a portable relative path.
|
|
131
|
+
*/
|
|
132
|
+
function normalizeProjectSourcePath(rawPath, projectRoot) {
|
|
133
|
+
if (typeof rawPath !== 'string')
|
|
134
|
+
return null;
|
|
135
|
+
const candidateInput = rawPath.trim().replace(/\\/gu, '/');
|
|
136
|
+
if (!candidateInput || hasUnsafePathSyntax(candidateInput))
|
|
137
|
+
return null;
|
|
138
|
+
const resolvedRoot = (0, path_1.resolve)(projectRoot);
|
|
139
|
+
const resolvedCandidate = (0, path_1.isAbsolute)(candidateInput)
|
|
140
|
+
? (0, path_1.resolve)(candidateInput)
|
|
141
|
+
: (0, path_1.resolve)(resolvedRoot, candidateInput);
|
|
142
|
+
const projectRelative = (0, path_1.relative)(resolvedRoot, resolvedCandidate);
|
|
143
|
+
if (!projectRelative ||
|
|
144
|
+
projectRelative === '..' ||
|
|
145
|
+
projectRelative.startsWith(`..${path_1.sep}`) ||
|
|
146
|
+
(0, path_1.isAbsolute)(projectRelative)) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
const portable = projectRelative.split(path_1.sep).join('/');
|
|
150
|
+
return isNormalizedProjectSourcePath(portable) ? portable : null;
|
|
151
|
+
}
|
|
152
|
+
/** Persisted/replayed file sources must already satisfy the canonical schema. */
|
|
153
|
+
function isNormalizedProjectSourcePath(projectPath) {
|
|
154
|
+
if (typeof projectPath !== 'string' || !projectPath || projectPath !== projectPath.trim()) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
if (projectPath.includes('\\') || hasUnsafePathSyntax(projectPath))
|
|
158
|
+
return false;
|
|
159
|
+
const normalized = path_1.posix.normalize(projectPath);
|
|
160
|
+
return (normalized === projectPath &&
|
|
161
|
+
normalized !== '.' &&
|
|
162
|
+
normalized !== '..' &&
|
|
163
|
+
!normalized.startsWith('../') &&
|
|
164
|
+
!path_1.posix.isAbsolute(normalized));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Map a legacy `SubtaskResult` into a versioned `ResearchPacket`.
|
|
168
|
+
*
|
|
169
|
+
* File findings become `observed` file claims bound to a `file` source. Findings
|
|
170
|
+
* without a file become `inference`/`unverified` claims. Failed/cancelled/timed
|
|
171
|
+
* out results downgrade every claim to `unverified` so a partial run can never
|
|
172
|
+
* report a verified conclusion.
|
|
173
|
+
*/
|
|
174
|
+
function subtaskResultToPacket(result, request, ctx, inputs = {}) {
|
|
175
|
+
const sources = [];
|
|
176
|
+
const sourceByPath = new Map();
|
|
177
|
+
const ensureFileSource = (rawPath) => {
|
|
178
|
+
const projectPath = normalizeProjectSourcePath(rawPath, ctx.projectPath);
|
|
179
|
+
if (!projectPath)
|
|
180
|
+
return undefined;
|
|
181
|
+
const existing = sourceByPath.get(projectPath);
|
|
182
|
+
if (existing)
|
|
183
|
+
return existing;
|
|
184
|
+
const source = {
|
|
185
|
+
id: `src-${sources.length + 1}`,
|
|
186
|
+
kind: 'file',
|
|
187
|
+
projectPath,
|
|
188
|
+
provider: 'local',
|
|
189
|
+
retrievedAt: nowIso(),
|
|
190
|
+
status: 'retrieved',
|
|
191
|
+
};
|
|
192
|
+
sourceByPath.set(projectPath, source);
|
|
193
|
+
sources.push(source);
|
|
194
|
+
return source;
|
|
195
|
+
};
|
|
196
|
+
for (const filePath of result.files)
|
|
197
|
+
ensureFileSource(filePath);
|
|
198
|
+
// The source budget covers local and external sources together. Web sources
|
|
199
|
+
// are already normalized/redacted by the dedicated adapter; clone and
|
|
200
|
+
// re-key collisions so persisted packets remain internally referential.
|
|
201
|
+
for (const external of inputs.externalSources ?? []) {
|
|
202
|
+
if (sources.length >= request.maxSources)
|
|
203
|
+
break;
|
|
204
|
+
const usedIds = new Set(sources.map(source => source.id));
|
|
205
|
+
let id = external.id;
|
|
206
|
+
let suffix = 1;
|
|
207
|
+
while (usedIds.has(id))
|
|
208
|
+
id = `${external.id}-${suffix++}`;
|
|
209
|
+
sources.push({ ...external, id });
|
|
210
|
+
}
|
|
211
|
+
const claims = result.findings.map((finding, i) => {
|
|
212
|
+
const bound = ensureFileSource(finding.file);
|
|
213
|
+
const hasFile = bound !== undefined;
|
|
214
|
+
const evidenceKind = hasFile ? 'file' : 'inference';
|
|
215
|
+
const verification = deriveVerification(result.status, hasFile);
|
|
216
|
+
const text = finding.evidence ? `${finding.title}: ${finding.evidence}` : finding.title;
|
|
217
|
+
const claim = {
|
|
218
|
+
id: `clm-${i + 1}`,
|
|
219
|
+
text,
|
|
220
|
+
sourceIds: bound ? [bound.id] : [],
|
|
221
|
+
evidenceKind,
|
|
222
|
+
verification,
|
|
223
|
+
};
|
|
224
|
+
if (finding.severity) {
|
|
225
|
+
const confidence = finding.severity === 'critical' || finding.severity === 'high'
|
|
226
|
+
? 'high'
|
|
227
|
+
: finding.severity === 'medium'
|
|
228
|
+
? 'medium'
|
|
229
|
+
: 'low';
|
|
230
|
+
claim.confidence = confidence;
|
|
231
|
+
}
|
|
232
|
+
return claim;
|
|
233
|
+
});
|
|
234
|
+
const packet = {
|
|
235
|
+
schemaVersion: research_types_1.RESEARCH_SCHEMA_VERSION,
|
|
236
|
+
packetId: `pkt-${result.id}`,
|
|
237
|
+
projectPath: ctx.projectPath,
|
|
238
|
+
sessionId: ctx.sessionId,
|
|
239
|
+
...(ctx.goalId ? { goalId: ctx.goalId } : {}),
|
|
240
|
+
...(ctx.objectiveRevision !== undefined ? { objectiveRevision: ctx.objectiveRevision } : {}),
|
|
241
|
+
request,
|
|
242
|
+
summary: result.summary,
|
|
243
|
+
claims,
|
|
244
|
+
sources,
|
|
245
|
+
gaps: [...(inputs.externalNotes ?? [])],
|
|
246
|
+
risks: [
|
|
247
|
+
...result.risks,
|
|
248
|
+
...(inputs.externalTimedOut ? ['external research timed out'] : []),
|
|
249
|
+
...(inputs.externalAborted ? ['external research cancelled by parent'] : []),
|
|
250
|
+
],
|
|
251
|
+
usage: result.usage,
|
|
252
|
+
createdAt: nowIso(),
|
|
253
|
+
};
|
|
254
|
+
return packet;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Fail-closed packet validation. An `observed`/`partially_observed` claim must
|
|
258
|
+
* bind to at least one existing source; an inference claim must not be marked
|
|
259
|
+
* `observed`; source counts must respect the request budget.
|
|
260
|
+
*/
|
|
261
|
+
function validatePacket(packet) {
|
|
262
|
+
const requestValidation = validateResearchRequest(packet.request);
|
|
263
|
+
const errors = requestValidation.errors.map(error => `packet.request: ${error}`);
|
|
264
|
+
if (!packet.summary || !packet.summary.trim())
|
|
265
|
+
errors.push('packet.summary is required');
|
|
266
|
+
if (packet.schemaVersion !== research_types_1.RESEARCH_SCHEMA_VERSION) {
|
|
267
|
+
errors.push(`unsupported schemaVersion ${packet.schemaVersion}`);
|
|
268
|
+
}
|
|
269
|
+
if (packet.summary.length > exports.RESEARCH_HARD_LIMITS.maxSummaryLen) {
|
|
270
|
+
errors.push('packet.summary exceeds max length');
|
|
271
|
+
}
|
|
272
|
+
if (packet.claims.length > exports.RESEARCH_HARD_LIMITS.maxClaims) {
|
|
273
|
+
errors.push(`claims ${packet.claims.length} exceed max ${exports.RESEARCH_HARD_LIMITS.maxClaims}`);
|
|
274
|
+
}
|
|
275
|
+
const sourceIds = new Set(packet.sources.map(s => s.id));
|
|
276
|
+
for (const source of packet.sources) {
|
|
277
|
+
if (!source.provider)
|
|
278
|
+
errors.push(`source ${source.id} missing provider`);
|
|
279
|
+
if (!source.status)
|
|
280
|
+
errors.push(`source ${source.id} missing status`);
|
|
281
|
+
if ((source.kind === 'file' || source.projectPath !== undefined) &&
|
|
282
|
+
!isNormalizedProjectSourcePath(source.projectPath)) {
|
|
283
|
+
errors.push(`source ${source.id} has invalid projectPath`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (packet.sources.length > packet.request.maxSources) {
|
|
287
|
+
errors.push(`sources ${packet.sources.length} exceed request.maxSources ${packet.request.maxSources}`);
|
|
288
|
+
}
|
|
289
|
+
for (const claim of packet.claims) {
|
|
290
|
+
for (const sid of claim.sourceIds) {
|
|
291
|
+
if (!sourceIds.has(sid))
|
|
292
|
+
errors.push(`claim ${claim.id} references unknown source ${sid}`);
|
|
293
|
+
}
|
|
294
|
+
const verified = claim.verification === 'observed' || claim.verification === 'partially_observed';
|
|
295
|
+
if (verified && claim.sourceIds.length === 0) {
|
|
296
|
+
errors.push(`claim ${claim.id} marked ${claim.verification} but has no source binding`);
|
|
297
|
+
}
|
|
298
|
+
if (claim.verification === 'observed' && claim.evidenceKind === 'inference') {
|
|
299
|
+
errors.push(`claim ${claim.id} is inference but marked observed`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return { ok: errors.length === 0, errors };
|
|
303
|
+
}
|
|
304
|
+
function sortDeep(value) {
|
|
305
|
+
if (Array.isArray(value))
|
|
306
|
+
return value.map(sortDeep);
|
|
307
|
+
if (value && typeof value === 'object') {
|
|
308
|
+
const obj = value;
|
|
309
|
+
const sorted = {};
|
|
310
|
+
for (const key of Object.keys(obj).sort())
|
|
311
|
+
sorted[key] = sortDeep(obj[key]);
|
|
312
|
+
return sorted;
|
|
313
|
+
}
|
|
314
|
+
return value;
|
|
315
|
+
}
|
|
316
|
+
/** Deterministic JSON (sorted keys) for a value. */
|
|
317
|
+
function stableStringify(value) {
|
|
318
|
+
return JSON.stringify(sortDeep(value));
|
|
319
|
+
}
|
|
320
|
+
/** Strip volatile timestamps so the content hash is reproducible across runs. */
|
|
321
|
+
function packetContentForHash(packet) {
|
|
322
|
+
return sortDeep({
|
|
323
|
+
...packet,
|
|
324
|
+
createdAt: undefined,
|
|
325
|
+
sources: packet.sources.map(s => ({ ...s, retrievedAt: undefined })),
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Content hash over the canonical packet body (timestamps excluded). Proves what
|
|
330
|
+
* was read, NOT that the content is true; used for dedupe and drift detection.
|
|
331
|
+
*/
|
|
332
|
+
function hashPacket(packet) {
|
|
333
|
+
return (0, crypto_1.createHash)('sha256')
|
|
334
|
+
.update(stableStringify(packetContentForHash(packet)))
|
|
335
|
+
.digest('hex');
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=research-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-contract.js","sourceRoot":"","sources":["../../../src/runtime/subagents/research-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research quality, cost, and recovery hardening (v0.1.4, P1-R6).
|
|
3
|
+
*
|
|
4
|
+
* - Source ranking is EXPLAINABLE ONLY: it returns an ordering plus a list of
|
|
5
|
+
* human-readable reasons (freshness / provider / scope match / dedup). It is
|
|
6
|
+
* never a verdict on truth - a higher rank does not mean a source is correct.
|
|
7
|
+
* - Cost diagnostics summarize model/tool/time/source usage for `npm run cost`
|
|
8
|
+
* reconciliation.
|
|
9
|
+
* - Recovery hints turn a structured failure reason into an actionable suggestion,
|
|
10
|
+
* without ever suggesting a generic MCP or a write path.
|
|
11
|
+
*/
|
|
12
|
+
import type { ResearchPacket, ResearchScope, ResearchSource } from './research-types';
|
|
13
|
+
export interface RankedSource {
|
|
14
|
+
sourceId: string;
|
|
15
|
+
rank: number;
|
|
16
|
+
score: number;
|
|
17
|
+
reasons: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface RankOptions {
|
|
20
|
+
/** Preferred providers in priority order (higher index = lower preference). */
|
|
21
|
+
preferredProviders?: string[];
|
|
22
|
+
scope?: ResearchScope;
|
|
23
|
+
now?: Date;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Rank sources by explainable signals. Stale revisions are demoted. The returned
|
|
27
|
+
* `reasons` explain every contribution; the score is advisory, not truth.
|
|
28
|
+
*/
|
|
29
|
+
export declare function rankSources(sources: ResearchSource[], opts?: RankOptions): RankedSource[];
|
|
30
|
+
export interface ResearchCostSummary {
|
|
31
|
+
modelRequests: number;
|
|
32
|
+
toolCalls: number;
|
|
33
|
+
durationMs: number;
|
|
34
|
+
sourceCount: number;
|
|
35
|
+
retrievedCount: number;
|
|
36
|
+
notes: string[];
|
|
37
|
+
}
|
|
38
|
+
/** Summarize research cost from the packet usage + source counts. */
|
|
39
|
+
export declare function researchCostSummary(packet: ResearchPacket, opts?: {
|
|
40
|
+
fetchedBytes?: number;
|
|
41
|
+
}): ResearchCostSummary;
|
|
42
|
+
/**
|
|
43
|
+
* Turn a structured failure reason into an actionable recovery hint. Never
|
|
44
|
+
* suggests a generic MCP or a write/exec path.
|
|
45
|
+
*/
|
|
46
|
+
export declare function recoveryHint(reason: string | undefined): string;
|
|
47
|
+
//# sourceMappingURL=research-quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-quality.d.ts","sourceRoot":"","sources":["../../../src/runtime/subagents/research-quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAuBD,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,IAAI,GAAE,WAAgB,GAAG,YAAY,EAAE,CAwC7F;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,mBAAmB,CAiBrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAkB/D"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Research quality, cost, and recovery hardening (v0.1.4, P1-R6).
|
|
4
|
+
*
|
|
5
|
+
* - Source ranking is EXPLAINABLE ONLY: it returns an ordering plus a list of
|
|
6
|
+
* human-readable reasons (freshness / provider / scope match / dedup). It is
|
|
7
|
+
* never a verdict on truth - a higher rank does not mean a source is correct.
|
|
8
|
+
* - Cost diagnostics summarize model/tool/time/source usage for `npm run cost`
|
|
9
|
+
* reconciliation.
|
|
10
|
+
* - Recovery hints turn a structured failure reason into an actionable suggestion,
|
|
11
|
+
* without ever suggesting a generic MCP or a write path.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.rankSources = rankSources;
|
|
15
|
+
exports.researchCostSummary = researchCostSummary;
|
|
16
|
+
exports.recoveryHint = recoveryHint;
|
|
17
|
+
function daysSince(iso, now) {
|
|
18
|
+
const t = new Date(iso).getTime();
|
|
19
|
+
if (Number.isNaN(t))
|
|
20
|
+
return 999;
|
|
21
|
+
return Math.max(0, Math.floor((now.getTime() - t) / 86400000));
|
|
22
|
+
}
|
|
23
|
+
function hostOf(url) {
|
|
24
|
+
if (!url)
|
|
25
|
+
return null;
|
|
26
|
+
try {
|
|
27
|
+
const h = new URL(url).hostname.toLowerCase();
|
|
28
|
+
return h.startsWith('[') && h.endsWith(']') ? h.slice(1, -1) : h;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function matchesDomain(host, domains = []) {
|
|
35
|
+
if (!host || domains.length === 0)
|
|
36
|
+
return false;
|
|
37
|
+
return domains.some(d => host === d.toLowerCase() || host.endsWith('.' + d.toLowerCase()));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Rank sources by explainable signals. Stale revisions are demoted. The returned
|
|
41
|
+
* `reasons` explain every contribution; the score is advisory, not truth.
|
|
42
|
+
*/
|
|
43
|
+
function rankSources(sources, opts = {}) {
|
|
44
|
+
const now = opts.now ?? new Date();
|
|
45
|
+
const ranked = sources.map(src => {
|
|
46
|
+
const reasons = [];
|
|
47
|
+
let score = 0;
|
|
48
|
+
const age = daysSince(src.retrievedAt, now);
|
|
49
|
+
score += Math.max(0, 30 - age); // fresher is better, capped
|
|
50
|
+
if (age <= 7)
|
|
51
|
+
reasons.push(`fresh (retrieved ${age}d ago)`);
|
|
52
|
+
else
|
|
53
|
+
reasons.push(`older (retrieved ${age}d ago)`);
|
|
54
|
+
if (src.status === 'stale') {
|
|
55
|
+
score -= 50;
|
|
56
|
+
reasons.push('stale revision (demoted)');
|
|
57
|
+
}
|
|
58
|
+
else if (src.status === 'blocked' || src.status === 'failed') {
|
|
59
|
+
score -= 40;
|
|
60
|
+
reasons.push(`unavailable (${src.status})`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
reasons.push('available');
|
|
64
|
+
}
|
|
65
|
+
const idx = opts.preferredProviders?.indexOf(src.provider) ?? -1;
|
|
66
|
+
if (idx >= 0) {
|
|
67
|
+
score += 10 - idx;
|
|
68
|
+
reasons.push(`preferred provider (${src.provider})`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
reasons.push(`provider ${src.provider}`);
|
|
72
|
+
}
|
|
73
|
+
const host = hostOf(src.canonicalUrl);
|
|
74
|
+
if (matchesDomain(host, opts.scope?.domains)) {
|
|
75
|
+
score += 15;
|
|
76
|
+
reasons.push('matches scope domain');
|
|
77
|
+
}
|
|
78
|
+
return { sourceId: src.id, score, reasons };
|
|
79
|
+
});
|
|
80
|
+
ranked.sort((a, b) => b.score - a.score || a.sourceId.localeCompare(b.sourceId));
|
|
81
|
+
return ranked.map((r, i) => ({ ...r, rank: i + 1 }));
|
|
82
|
+
}
|
|
83
|
+
/** Summarize research cost from the packet usage + source counts. */
|
|
84
|
+
function researchCostSummary(packet, opts = {}) {
|
|
85
|
+
const notes = [];
|
|
86
|
+
const retrieved = packet.sources.filter(s => s.status === 'retrieved').length;
|
|
87
|
+
if (packet.sources.length > packet.request.maxSources) {
|
|
88
|
+
notes.push(`source count exceeded request budget (${packet.sources.length} > ${packet.request.maxSources})`);
|
|
89
|
+
}
|
|
90
|
+
if (opts.fetchedBytes !== undefined && packet.request.maxFetchBytes > 0 && opts.fetchedBytes > packet.request.maxFetchBytes) {
|
|
91
|
+
notes.push(`fetched bytes exceeded budget (${opts.fetchedBytes} > ${packet.request.maxFetchBytes})`);
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
modelRequests: packet.usage.modelRequests,
|
|
95
|
+
toolCalls: packet.usage.toolCalls,
|
|
96
|
+
durationMs: packet.usage.durationMs,
|
|
97
|
+
sourceCount: packet.sources.length,
|
|
98
|
+
retrievedCount: retrieved,
|
|
99
|
+
notes,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Turn a structured failure reason into an actionable recovery hint. Never
|
|
104
|
+
* suggests a generic MCP or a write/exec path.
|
|
105
|
+
*/
|
|
106
|
+
function recoveryHint(reason) {
|
|
107
|
+
const r = (reason ?? '').toLowerCase();
|
|
108
|
+
if (r.includes('ssrf') || r.includes('blocked') || r.includes('internal')) {
|
|
109
|
+
return 'Blocked by security policy (SSRF/internal host). Use an allowlisted public URL.';
|
|
110
|
+
}
|
|
111
|
+
if (r.includes('dns')) {
|
|
112
|
+
return 'DNS resolution failed. Check network/allowlist; the guard runs on every redirect hop.';
|
|
113
|
+
}
|
|
114
|
+
if (r.includes('timeout') || r.includes('timed') || r.includes('too many redirect')) {
|
|
115
|
+
return 'Request timed out or redirected too often. Increase maxDurationMs or reduce sources.';
|
|
116
|
+
}
|
|
117
|
+
if (r.includes('too large') || r.includes('content-length') || r.includes('bytes')) {
|
|
118
|
+
return 'Response exceeded size budget. Increase maxFetchBytes or fetch a narrower excerpt.';
|
|
119
|
+
}
|
|
120
|
+
if (r.includes('provider') || r.includes('websearch') || r.includes('unavailable')) {
|
|
121
|
+
return 'Search provider unavailable. Configure an allowlisted provider (WebSearch/WebFetch only; no generic MCP).';
|
|
122
|
+
}
|
|
123
|
+
return 'Review the failure reason and retry within the request budget (sources/ bytes/ duration).';
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=research-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-quality.js","sourceRoot":"","sources":["../../../src/runtime/subagents/research-quality.ts"],"names":[],"mappings":"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"}
|