@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
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Citation, conflict, and evidence-candidate resolution (v0.1.4, P0-R3).
|
|
4
|
+
*
|
|
5
|
+
* Turns a `ResearchPacket` (with its claims + sources) into:
|
|
6
|
+
* - resolved claim->source bindings (reference-integrity validated),
|
|
7
|
+
* - same-URL multi-version dedupe (older revisions marked `stale` on hash drift),
|
|
8
|
+
* - conflict records for contradictory sources (never auto-picked),
|
|
9
|
+
* - a verification classification per claim,
|
|
10
|
+
* - evidence candidates (only rule-compliant claims; research vs execution kept
|
|
11
|
+
* distinct so a web summary can never stand in for test/build/file facts),
|
|
12
|
+
* - a completion audit that stays `partial`/`unmet` for claims that have sources
|
|
13
|
+
* but no independent verification.
|
|
14
|
+
*
|
|
15
|
+
* This module is pure (no IO) so it is fully testable without network or disk.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.urlKey = urlKey;
|
|
19
|
+
exports.resolveCitations = resolveCitations;
|
|
20
|
+
/** Normalize a URL for dedupe: drop fragment + trailing slash, lowercase host. */
|
|
21
|
+
function urlKey(url) {
|
|
22
|
+
if (!url)
|
|
23
|
+
return '';
|
|
24
|
+
try {
|
|
25
|
+
const u = new URL(url);
|
|
26
|
+
const host = u.host.toLowerCase();
|
|
27
|
+
let path = u.pathname;
|
|
28
|
+
if (path.length > 1 && path.endsWith('/'))
|
|
29
|
+
path = path.slice(0, -1);
|
|
30
|
+
const query = u.search;
|
|
31
|
+
return `${u.protocol}//${host}${path}${query}`;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return url;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve citations for a packet.
|
|
39
|
+
*
|
|
40
|
+
* Reference integrity: a claim binding to an unknown source id is flagged
|
|
41
|
+
* `dangling` (and downgraded to `unverified`). Dedupe: sources sharing a
|
|
42
|
+
* canonical URL key are collapsed; the newest by `retrievedAt` wins and older
|
|
43
|
+
* revisions with a different content hash are marked `stale`. Conflict: a claim
|
|
44
|
+
* backed by both a `retrieved` source and a `failed`/`blocked` source (or two
|
|
45
|
+
* sources explicitly flagged contradictory) yields a conflict record and is
|
|
46
|
+
* never silently resolved in the model-favorable direction.
|
|
47
|
+
*/
|
|
48
|
+
function resolveCitations(packet) {
|
|
49
|
+
const sourceIds = new Set(packet.sources.map(s => s.id));
|
|
50
|
+
const byId = new Map(packet.sources.map(s => [s.id, s]));
|
|
51
|
+
// --- dedupe same-URL multi-version -> stale ---
|
|
52
|
+
const staleSourceIds = [];
|
|
53
|
+
const groups = new Map();
|
|
54
|
+
for (const s of packet.sources) {
|
|
55
|
+
const key = urlKey(s.canonicalUrl);
|
|
56
|
+
if (!key)
|
|
57
|
+
continue;
|
|
58
|
+
const arr = groups.get(key) ?? [];
|
|
59
|
+
arr.push(s);
|
|
60
|
+
groups.set(key, arr);
|
|
61
|
+
}
|
|
62
|
+
for (const [, group] of groups) {
|
|
63
|
+
if (group.length < 2)
|
|
64
|
+
continue;
|
|
65
|
+
// newest by retrievedAt wins; older ones with a different hash become stale.
|
|
66
|
+
const sorted = [...group].sort((a, b) => b.retrievedAt.localeCompare(a.retrievedAt));
|
|
67
|
+
const winner = sorted[0];
|
|
68
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
69
|
+
const s = sorted[i];
|
|
70
|
+
if (s.contentHash && winner.contentHash && s.contentHash !== winner.contentHash) {
|
|
71
|
+
staleSourceIds.push(s.id);
|
|
72
|
+
s.status = 'stale';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const staleSet = new Set(staleSourceIds);
|
|
77
|
+
const bindings = [];
|
|
78
|
+
const conflicts = [];
|
|
79
|
+
const evidenceCandidates = [];
|
|
80
|
+
for (const claim of packet.claims) {
|
|
81
|
+
const referenced = claim.sourceIds.filter(id => sourceIds.has(id));
|
|
82
|
+
const danglingRefs = claim.sourceIds.filter(id => !sourceIds.has(id));
|
|
83
|
+
const active = referenced.filter(id => !staleSet.has(id));
|
|
84
|
+
const activeSources = active.map(id => byId.get(id)).filter(Boolean);
|
|
85
|
+
const hasRetrieved = activeSources.some(s => s.status === 'retrieved');
|
|
86
|
+
const hasFailed = activeSources.some(s => s.status === 'failed' || s.status === 'blocked');
|
|
87
|
+
let status;
|
|
88
|
+
if (danglingRefs.length > 0 && referenced.length === 0) {
|
|
89
|
+
status = 'dangling';
|
|
90
|
+
}
|
|
91
|
+
else if (hasRetrieved && hasFailed) {
|
|
92
|
+
status = 'conflicted';
|
|
93
|
+
}
|
|
94
|
+
else if (active.length === 0 && referenced.length > 0) {
|
|
95
|
+
status = 'stale_only';
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
status = 'bound';
|
|
99
|
+
}
|
|
100
|
+
if (status === 'conflicted') {
|
|
101
|
+
conflicts.push({
|
|
102
|
+
claimId: claim.id,
|
|
103
|
+
sourceIds: active,
|
|
104
|
+
reason: 'claim backed by both a retrieved source and a failed/blocked source',
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
bindings.push({
|
|
108
|
+
claimId: claim.id,
|
|
109
|
+
sourceIds: active,
|
|
110
|
+
referencedSourceIds: referenced,
|
|
111
|
+
status,
|
|
112
|
+
});
|
|
113
|
+
// Verification classification: conflicted -> contradicted.
|
|
114
|
+
const verification = status === 'conflicted'
|
|
115
|
+
? 'contradicted'
|
|
116
|
+
: classifyVerification(claim, hasRetrieved, activeSources);
|
|
117
|
+
claim.verification = verification;
|
|
118
|
+
// Evidence candidate: only rule-compliant claims.
|
|
119
|
+
if ((verification === 'observed' || verification === 'partially_observed') &&
|
|
120
|
+
claim.evidenceKind !== 'inference' &&
|
|
121
|
+
status !== 'conflicted') {
|
|
122
|
+
const primary = activeSources.find(s => s.status === 'retrieved');
|
|
123
|
+
const isFile = primary?.kind === 'file';
|
|
124
|
+
evidenceCandidates.push({
|
|
125
|
+
claimId: claim.id,
|
|
126
|
+
kind: isFile ? 'execution' : 'research',
|
|
127
|
+
basis: isFile ? 'file' : 'external',
|
|
128
|
+
summary: claim.text,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const audit = auditCompletion(packet, bindings);
|
|
133
|
+
return {
|
|
134
|
+
packetId: packet.packetId,
|
|
135
|
+
bindings,
|
|
136
|
+
conflicts,
|
|
137
|
+
staleSourceIds,
|
|
138
|
+
evidenceCandidates,
|
|
139
|
+
audit,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function classifyVerification(claim, hasRetrieved, activeSources) {
|
|
143
|
+
if (claim.evidenceKind === 'inference')
|
|
144
|
+
return 'unverified';
|
|
145
|
+
if (!hasRetrieved)
|
|
146
|
+
return 'unverified';
|
|
147
|
+
const onlyExcerpt = activeSources.every(s => !!s.excerpt && s.excerpt.length < 4000 && !s.contentHash);
|
|
148
|
+
return onlyExcerpt ? 'partially_observed' : 'observed';
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Completion audit. The key invariant (plan exit condition): a claim that HAS
|
|
152
|
+
* sources but no independent verification must keep the audit `partial`/`unmet`
|
|
153
|
+
* - never `met`. We therefore treat any claim with referenced sources whose
|
|
154
|
+
* verification is not `observed` as unverified for audit purposes.
|
|
155
|
+
*/
|
|
156
|
+
function auditCompletion(packet, bindings) {
|
|
157
|
+
const notes = [];
|
|
158
|
+
const unverifiedClaimIds = [];
|
|
159
|
+
for (const claim of packet.claims) {
|
|
160
|
+
const binding = bindings.find(b => b.claimId === claim.id);
|
|
161
|
+
const hasSources = (binding?.referencedSourceIds.length ?? 0) > 0;
|
|
162
|
+
const independentlyVerified = claim.verification === 'observed';
|
|
163
|
+
if (!independentlyVerified) {
|
|
164
|
+
if (hasSources) {
|
|
165
|
+
unverifiedClaimIds.push(claim.id);
|
|
166
|
+
notes.push(`claim ${claim.id} has sources but no independent verification (stays partial)`);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
unverifiedClaimIds.push(claim.id);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
let status;
|
|
174
|
+
if (unverifiedClaimIds.length === 0) {
|
|
175
|
+
status = 'met';
|
|
176
|
+
}
|
|
177
|
+
else if (packet.claims.some(c => (bindings.find(b => b.claimId === c.id)?.referencedSourceIds.length ?? 0) > 0)) {
|
|
178
|
+
status = 'partial';
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
status = 'unmet';
|
|
182
|
+
}
|
|
183
|
+
return { status, unverifiedClaimIds, notes };
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=research-citation.js.map
|
|
@@ -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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"}
|