conatus 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +189 -0
- package/dist/adapter-layer.d.ts +67 -0
- package/dist/adapter-layer.d.ts.map +1 -0
- package/dist/adapter-layer.js +50 -0
- package/dist/adapter-layer.js.map +1 -0
- package/dist/adapters/a2a-adapter.d.ts +49 -0
- package/dist/adapters/a2a-adapter.d.ts.map +1 -0
- package/dist/adapters/a2a-adapter.js +211 -0
- package/dist/adapters/a2a-adapter.js.map +1 -0
- package/dist/adapters/a2a-client.d.ts +28 -0
- package/dist/adapters/a2a-client.d.ts.map +1 -0
- package/dist/adapters/a2a-client.js +178 -0
- package/dist/adapters/a2a-client.js.map +1 -0
- package/dist/adapters/browser-use-cli.d.ts +19 -0
- package/dist/adapters/browser-use-cli.d.ts.map +1 -0
- package/dist/adapters/browser-use-cli.js +112 -0
- package/dist/adapters/browser-use-cli.js.map +1 -0
- package/dist/adapters/claude-api.d.ts +10 -0
- package/dist/adapters/claude-api.d.ts.map +1 -0
- package/dist/adapters/claude-api.js +63 -0
- package/dist/adapters/claude-api.js.map +1 -0
- package/dist/adapters/claude-code-cli.d.ts +14 -0
- package/dist/adapters/claude-code-cli.d.ts.map +1 -0
- package/dist/adapters/claude-code-cli.js +99 -0
- package/dist/adapters/claude-code-cli.js.map +1 -0
- package/dist/adapters/file-existence-datasource.d.ts +16 -0
- package/dist/adapters/file-existence-datasource.d.ts.map +1 -0
- package/dist/adapters/file-existence-datasource.js +71 -0
- package/dist/adapters/file-existence-datasource.js.map +1 -0
- package/dist/adapters/github-issue-datasource.d.ts +45 -0
- package/dist/adapters/github-issue-datasource.d.ts.map +1 -0
- package/dist/adapters/github-issue-datasource.js +329 -0
- package/dist/adapters/github-issue-datasource.js.map +1 -0
- package/dist/adapters/github-issue.d.ts +87 -0
- package/dist/adapters/github-issue.d.ts.map +1 -0
- package/dist/adapters/github-issue.js +497 -0
- package/dist/adapters/github-issue.js.map +1 -0
- package/dist/adapters/openai-codex.d.ts +26 -0
- package/dist/adapters/openai-codex.d.ts.map +1 -0
- package/dist/adapters/openai-codex.js +112 -0
- package/dist/adapters/openai-codex.js.map +1 -0
- package/dist/adapters/shell-datasource.d.ts +36 -0
- package/dist/adapters/shell-datasource.d.ts.map +1 -0
- package/dist/adapters/shell-datasource.js +138 -0
- package/dist/adapters/shell-datasource.js.map +1 -0
- package/dist/capability-detector.d.ts +124 -0
- package/dist/capability-detector.d.ts.map +1 -0
- package/dist/capability-detector.js +576 -0
- package/dist/capability-detector.js.map +1 -0
- package/dist/character-config.d.ts +34 -0
- package/dist/character-config.d.ts.map +1 -0
- package/dist/character-config.js +53 -0
- package/dist/character-config.js.map +1 -0
- package/dist/cli/cli-logger.d.ts +3 -0
- package/dist/cli/cli-logger.d.ts.map +1 -0
- package/dist/cli/cli-logger.js +12 -0
- package/dist/cli/cli-logger.js.map +1 -0
- package/dist/cli/commands/config.d.ts +12 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +345 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +6 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +99 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/goal-raw.d.ts +7 -0
- package/dist/cli/commands/goal-raw.d.ts.map +1 -0
- package/dist/cli/commands/goal-raw.js +93 -0
- package/dist/cli/commands/goal-raw.js.map +1 -0
- package/dist/cli/commands/goal-utils.d.ts +41 -0
- package/dist/cli/commands/goal-utils.d.ts.map +1 -0
- package/dist/cli/commands/goal-utils.js +184 -0
- package/dist/cli/commands/goal-utils.js.map +1 -0
- package/dist/cli/commands/goal.d.ts +22 -0
- package/dist/cli/commands/goal.d.ts.map +1 -0
- package/dist/cli/commands/goal.js +382 -0
- package/dist/cli/commands/goal.js.map +1 -0
- package/dist/cli/commands/plugin.d.ts +9 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +336 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/cli/commands/report.d.ts +3 -0
- package/dist/cli/commands/report.d.ts.map +1 -0
- package/dist/cli/commands/report.js +29 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/run.d.ts +10 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +159 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/suggest.d.ts +7 -0
- package/dist/cli/commands/suggest.d.ts.map +1 -0
- package/dist/cli/commands/suggest.js +466 -0
- package/dist/cli/commands/suggest.js.map +1 -0
- package/dist/cli/ensure-api-key.d.ts +14 -0
- package/dist/cli/ensure-api-key.d.ts.map +1 -0
- package/dist/cli/ensure-api-key.js +28 -0
- package/dist/cli/ensure-api-key.js.map +1 -0
- package/dist/cli/setup.d.ts +18 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +147 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/utils.d.ts +9 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +113 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/cli-runner.d.ts +32 -0
- package/dist/cli-runner.d.ts.map +1 -0
- package/dist/cli-runner.js +467 -0
- package/dist/cli-runner.js.map +1 -0
- package/dist/codex-llm-client.d.ts +47 -0
- package/dist/codex-llm-client.d.ts.map +1 -0
- package/dist/codex-llm-client.js +193 -0
- package/dist/codex-llm-client.js.map +1 -0
- package/dist/context-provider.d.ts +16 -0
- package/dist/context-provider.d.ts.map +1 -0
- package/dist/context-provider.js +107 -0
- package/dist/context-provider.js.map +1 -0
- package/dist/context-providers/workspace-context.d.ts +8 -0
- package/dist/context-providers/workspace-context.d.ts.map +1 -0
- package/dist/context-providers/workspace-context.js +217 -0
- package/dist/context-providers/workspace-context.js.map +1 -0
- package/dist/core/suggest/repo-context.d.ts +8 -0
- package/dist/core/suggest/repo-context.d.ts.map +1 -0
- package/dist/core/suggest/repo-context.js +154 -0
- package/dist/core/suggest/repo-context.js.map +1 -0
- package/dist/core-loop.d.ts +63 -0
- package/dist/core-loop.d.ts.map +1 -0
- package/dist/core-loop.js +521 -0
- package/dist/core-loop.js.map +1 -0
- package/dist/cross-goal-portfolio.d.ts +153 -0
- package/dist/cross-goal-portfolio.d.ts.map +1 -0
- package/dist/cross-goal-portfolio.js +790 -0
- package/dist/cross-goal-portfolio.js.map +1 -0
- package/dist/curiosity-engine.d.ts +177 -0
- package/dist/curiosity-engine.d.ts.map +1 -0
- package/dist/curiosity-engine.js +736 -0
- package/dist/curiosity-engine.js.map +1 -0
- package/dist/daemon-runner.d.ts +109 -0
- package/dist/daemon-runner.d.ts.map +1 -0
- package/dist/daemon-runner.js +389 -0
- package/dist/daemon-runner.js.map +1 -0
- package/dist/data-source-adapter.d.ts +42 -0
- package/dist/data-source-adapter.d.ts.map +1 -0
- package/dist/data-source-adapter.js +223 -0
- package/dist/data-source-adapter.js.map +1 -0
- package/dist/drive/drive-scorer.d.ts +96 -0
- package/dist/drive/drive-scorer.d.ts.map +1 -0
- package/dist/drive/drive-scorer.js +240 -0
- package/dist/drive/drive-scorer.js.map +1 -0
- package/dist/drive/drive-system.d.ts +99 -0
- package/dist/drive/drive-system.d.ts.map +1 -0
- package/dist/drive/drive-system.js +344 -0
- package/dist/drive/drive-system.js.map +1 -0
- package/dist/drive/gap-calculator.d.ts +80 -0
- package/dist/drive/gap-calculator.d.ts.map +1 -0
- package/dist/drive/gap-calculator.js +219 -0
- package/dist/drive/gap-calculator.js.map +1 -0
- package/dist/drive/reward-log.d.ts +51 -0
- package/dist/drive/reward-log.d.ts.map +1 -0
- package/dist/drive/reward-log.js +48 -0
- package/dist/drive/reward-log.js.map +1 -0
- package/dist/drive/satisficing-helpers.d.ts +28 -0
- package/dist/drive/satisficing-helpers.d.ts.map +1 -0
- package/dist/drive/satisficing-helpers.js +111 -0
- package/dist/drive/satisficing-helpers.js.map +1 -0
- package/dist/drive/satisficing-judge.d.ts +140 -0
- package/dist/drive/satisficing-judge.d.ts.map +1 -0
- package/dist/drive/satisficing-judge.js +432 -0
- package/dist/drive/satisficing-judge.js.map +1 -0
- package/dist/drive/satisficing-propagation.d.ts +30 -0
- package/dist/drive/satisficing-propagation.d.ts.map +1 -0
- package/dist/drive/satisficing-propagation.js +196 -0
- package/dist/drive/satisficing-propagation.js.map +1 -0
- package/dist/drive/stall-detector.d.ts +113 -0
- package/dist/drive/stall-detector.d.ts.map +1 -0
- package/dist/drive/stall-detector.js +378 -0
- package/dist/drive/stall-detector.js.map +1 -0
- package/dist/drive-scorer.d.ts +96 -0
- package/dist/drive-scorer.d.ts.map +1 -0
- package/dist/drive-scorer.js +235 -0
- package/dist/drive-scorer.js.map +1 -0
- package/dist/drive-system.d.ts +92 -0
- package/dist/drive-system.d.ts.map +1 -0
- package/dist/drive-system.js +325 -0
- package/dist/drive-system.js.map +1 -0
- package/dist/embedding-client.d.ts +49 -0
- package/dist/embedding-client.d.ts.map +1 -0
- package/dist/embedding-client.js +141 -0
- package/dist/embedding-client.js.map +1 -0
- package/dist/ethics-gate.d.ts +70 -0
- package/dist/ethics-gate.d.ts.map +1 -0
- package/dist/ethics-gate.js +567 -0
- package/dist/ethics-gate.js.map +1 -0
- package/dist/event-server.d.ts +23 -0
- package/dist/event-server.d.ts.map +1 -0
- package/dist/event-server.js +69 -0
- package/dist/event-server.js.map +1 -0
- package/dist/execution/adapter-layer.d.ts +88 -0
- package/dist/execution/adapter-layer.d.ts.map +1 -0
- package/dist/execution/adapter-layer.js +123 -0
- package/dist/execution/adapter-layer.js.map +1 -0
- package/dist/execution/checkpoint-manager.d.ts +49 -0
- package/dist/execution/checkpoint-manager.d.ts.map +1 -0
- package/dist/execution/checkpoint-manager.js +143 -0
- package/dist/execution/checkpoint-manager.js.map +1 -0
- package/dist/execution/context-budget.d.ts +35 -0
- package/dist/execution/context-budget.d.ts.map +1 -0
- package/dist/execution/context-budget.js +73 -0
- package/dist/execution/context-budget.js.map +1 -0
- package/dist/execution/dimension-selector.d.ts +22 -0
- package/dist/execution/dimension-selector.d.ts.map +1 -0
- package/dist/execution/dimension-selector.js +57 -0
- package/dist/execution/dimension-selector.js.map +1 -0
- package/dist/execution/impact-analyzer.d.ts +24 -0
- package/dist/execution/impact-analyzer.d.ts.map +1 -0
- package/dist/execution/impact-analyzer.js +88 -0
- package/dist/execution/impact-analyzer.js.map +1 -0
- package/dist/execution/parallel-executor.d.ts +35 -0
- package/dist/execution/parallel-executor.d.ts.map +1 -0
- package/dist/execution/parallel-executor.js +162 -0
- package/dist/execution/parallel-executor.js.map +1 -0
- package/dist/execution/pipeline-executor.d.ts +54 -0
- package/dist/execution/pipeline-executor.d.ts.map +1 -0
- package/dist/execution/pipeline-executor.js +250 -0
- package/dist/execution/pipeline-executor.js.map +1 -0
- package/dist/execution/reflection-generator.d.ts +24 -0
- package/dist/execution/reflection-generator.d.ts.map +1 -0
- package/dist/execution/reflection-generator.js +143 -0
- package/dist/execution/reflection-generator.js.map +1 -0
- package/dist/execution/result-reconciler.d.ts +23 -0
- package/dist/execution/result-reconciler.d.ts.map +1 -0
- package/dist/execution/result-reconciler.js +109 -0
- package/dist/execution/result-reconciler.js.map +1 -0
- package/dist/execution/session-manager.d.ts +182 -0
- package/dist/execution/session-manager.d.ts.map +1 -0
- package/dist/execution/session-manager.js +506 -0
- package/dist/execution/session-manager.js.map +1 -0
- package/dist/execution/task-approval-check.d.ts +9 -0
- package/dist/execution/task-approval-check.d.ts.map +1 -0
- package/dist/execution/task-approval-check.js +14 -0
- package/dist/execution/task-approval-check.js.map +1 -0
- package/dist/execution/task-approval.d.ts +37 -0
- package/dist/execution/task-approval.d.ts.map +1 -0
- package/dist/execution/task-approval.js +147 -0
- package/dist/execution/task-approval.js.map +1 -0
- package/dist/execution/task-execution-types.d.ts +14 -0
- package/dist/execution/task-execution-types.d.ts.map +1 -0
- package/dist/execution/task-execution-types.js +2 -0
- package/dist/execution/task-execution-types.js.map +1 -0
- package/dist/execution/task-executor.d.ts +30 -0
- package/dist/execution/task-executor.d.ts.map +1 -0
- package/dist/execution/task-executor.js +196 -0
- package/dist/execution/task-executor.js.map +1 -0
- package/dist/execution/task-generation.d.ts +154 -0
- package/dist/execution/task-generation.d.ts.map +1 -0
- package/dist/execution/task-generation.js +406 -0
- package/dist/execution/task-generation.js.map +1 -0
- package/dist/execution/task-health-check.d.ts +38 -0
- package/dist/execution/task-health-check.d.ts.map +1 -0
- package/dist/execution/task-health-check.js +66 -0
- package/dist/execution/task-health-check.js.map +1 -0
- package/dist/execution/task-lifecycle.d.ts +122 -0
- package/dist/execution/task-lifecycle.d.ts.map +1 -0
- package/dist/execution/task-lifecycle.js +303 -0
- package/dist/execution/task-lifecycle.js.map +1 -0
- package/dist/execution/task-pipeline-cycle.d.ts +45 -0
- package/dist/execution/task-pipeline-cycle.d.ts.map +1 -0
- package/dist/execution/task-pipeline-cycle.js +134 -0
- package/dist/execution/task-pipeline-cycle.js.map +1 -0
- package/dist/execution/task-prompt-builder.d.ts +9 -0
- package/dist/execution/task-prompt-builder.d.ts.map +1 -0
- package/dist/execution/task-prompt-builder.js +165 -0
- package/dist/execution/task-prompt-builder.js.map +1 -0
- package/dist/execution/task-verifier.d.ts +112 -0
- package/dist/execution/task-verifier.d.ts.map +1 -0
- package/dist/execution/task-verifier.js +782 -0
- package/dist/execution/task-verifier.js.map +1 -0
- package/dist/gap-calculator.d.ts +80 -0
- package/dist/gap-calculator.d.ts.map +1 -0
- package/dist/gap-calculator.js +218 -0
- package/dist/gap-calculator.js.map +1 -0
- package/dist/goal/goal-decomposer.d.ts +30 -0
- package/dist/goal/goal-decomposer.d.ts.map +1 -0
- package/dist/goal/goal-decomposer.js +167 -0
- package/dist/goal/goal-decomposer.js.map +1 -0
- package/dist/goal/goal-dependency-graph.d.ts +119 -0
- package/dist/goal/goal-dependency-graph.d.ts.map +1 -0
- package/dist/goal/goal-dependency-graph.js +322 -0
- package/dist/goal/goal-dependency-graph.js.map +1 -0
- package/dist/goal/goal-negotiator.d.ts +66 -0
- package/dist/goal/goal-negotiator.d.ts.map +1 -0
- package/dist/goal/goal-negotiator.js +260 -0
- package/dist/goal/goal-negotiator.js.map +1 -0
- package/dist/goal/goal-suggest.d.ts +85 -0
- package/dist/goal/goal-suggest.d.ts.map +1 -0
- package/dist/goal/goal-suggest.js +178 -0
- package/dist/goal/goal-suggest.js.map +1 -0
- package/dist/goal/goal-tree-manager.d.ts +71 -0
- package/dist/goal/goal-tree-manager.d.ts.map +1 -0
- package/dist/goal/goal-tree-manager.js +580 -0
- package/dist/goal/goal-tree-manager.js.map +1 -0
- package/dist/goal/goal-tree-pruner.d.ts +25 -0
- package/dist/goal/goal-tree-pruner.d.ts.map +1 -0
- package/dist/goal/goal-tree-pruner.js +93 -0
- package/dist/goal/goal-tree-pruner.js.map +1 -0
- package/dist/goal/goal-tree-quality.d.ts +22 -0
- package/dist/goal/goal-tree-quality.d.ts.map +1 -0
- package/dist/goal/goal-tree-quality.js +183 -0
- package/dist/goal/goal-tree-quality.js.map +1 -0
- package/dist/goal/goal-validation.d.ts +20 -0
- package/dist/goal/goal-validation.d.ts.map +1 -0
- package/dist/goal/goal-validation.js +93 -0
- package/dist/goal/goal-validation.js.map +1 -0
- package/dist/goal/negotiator-context.d.ts +13 -0
- package/dist/goal/negotiator-context.d.ts.map +1 -0
- package/dist/goal/negotiator-context.js +119 -0
- package/dist/goal/negotiator-context.js.map +1 -0
- package/dist/goal/negotiator-prompts.d.ts +31 -0
- package/dist/goal/negotiator-prompts.d.ts.map +1 -0
- package/dist/goal/negotiator-prompts.js +65 -0
- package/dist/goal/negotiator-prompts.js.map +1 -0
- package/dist/goal/negotiator-steps.d.ts +59 -0
- package/dist/goal/negotiator-steps.d.ts.map +1 -0
- package/dist/goal/negotiator-steps.js +269 -0
- package/dist/goal/negotiator-steps.js.map +1 -0
- package/dist/goal/state-aggregator.d.ts +89 -0
- package/dist/goal/state-aggregator.d.ts.map +1 -0
- package/dist/goal/state-aggregator.js +292 -0
- package/dist/goal/state-aggregator.js.map +1 -0
- package/dist/goal/tree-loop-orchestrator.d.ts +79 -0
- package/dist/goal/tree-loop-orchestrator.d.ts.map +1 -0
- package/dist/goal/tree-loop-orchestrator.js +230 -0
- package/dist/goal/tree-loop-orchestrator.js.map +1 -0
- package/dist/goal-dependency-graph.d.ts +112 -0
- package/dist/goal-dependency-graph.d.ts.map +1 -0
- package/dist/goal-dependency-graph.js +291 -0
- package/dist/goal-dependency-graph.js.map +1 -0
- package/dist/goal-negotiator.d.ts +109 -0
- package/dist/goal-negotiator.d.ts.map +1 -0
- package/dist/goal-negotiator.js +1044 -0
- package/dist/goal-negotiator.js.map +1 -0
- package/dist/goal-tree-manager.d.ts +120 -0
- package/dist/goal-tree-manager.d.ts.map +1 -0
- package/dist/goal-tree-manager.js +954 -0
- package/dist/goal-tree-manager.js.map +1 -0
- package/dist/guardrail-runner.d.ts +29 -0
- package/dist/guardrail-runner.d.ts.map +1 -0
- package/dist/guardrail-runner.js +81 -0
- package/dist/guardrail-runner.js.map +1 -0
- package/dist/index.d.ts +95 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/drive-score-adapter.d.ts +39 -0
- package/dist/knowledge/drive-score-adapter.d.ts.map +1 -0
- package/dist/knowledge/drive-score-adapter.js +32 -0
- package/dist/knowledge/drive-score-adapter.js.map +1 -0
- package/dist/knowledge/embedding-client.d.ts +49 -0
- package/dist/knowledge/embedding-client.d.ts.map +1 -0
- package/dist/knowledge/embedding-client.js +141 -0
- package/dist/knowledge/embedding-client.js.map +1 -0
- package/dist/knowledge/knowledge-decisions.d.ts +41 -0
- package/dist/knowledge/knowledge-decisions.d.ts.map +1 -0
- package/dist/knowledge/knowledge-decisions.js +191 -0
- package/dist/knowledge/knowledge-decisions.js.map +1 -0
- package/dist/knowledge/knowledge-graph.d.ts +74 -0
- package/dist/knowledge/knowledge-graph.d.ts.map +1 -0
- package/dist/knowledge/knowledge-graph.js +207 -0
- package/dist/knowledge/knowledge-graph.js.map +1 -0
- package/dist/knowledge/knowledge-manager.d.ts +138 -0
- package/dist/knowledge/knowledge-manager.d.ts.map +1 -0
- package/dist/knowledge/knowledge-manager.js +497 -0
- package/dist/knowledge/knowledge-manager.js.map +1 -0
- package/dist/knowledge/knowledge-revalidation.d.ts +27 -0
- package/dist/knowledge/knowledge-revalidation.d.ts.map +1 -0
- package/dist/knowledge/knowledge-revalidation.js +130 -0
- package/dist/knowledge/knowledge-revalidation.js.map +1 -0
- package/dist/knowledge/knowledge-search.d.ts +49 -0
- package/dist/knowledge/knowledge-search.d.ts.map +1 -0
- package/dist/knowledge/knowledge-search.js +108 -0
- package/dist/knowledge/knowledge-search.js.map +1 -0
- package/dist/knowledge/knowledge-transfer-prompts.d.ts +45 -0
- package/dist/knowledge/knowledge-transfer-prompts.d.ts.map +1 -0
- package/dist/knowledge/knowledge-transfer-prompts.js +72 -0
- package/dist/knowledge/knowledge-transfer-prompts.js.map +1 -0
- package/dist/knowledge/knowledge-transfer.d.ts +148 -0
- package/dist/knowledge/knowledge-transfer.d.ts.map +1 -0
- package/dist/knowledge/knowledge-transfer.js +718 -0
- package/dist/knowledge/knowledge-transfer.js.map +1 -0
- package/dist/knowledge/learning-cross-goal.d.ts +19 -0
- package/dist/knowledge/learning-cross-goal.d.ts.map +1 -0
- package/dist/knowledge/learning-cross-goal.js +173 -0
- package/dist/knowledge/learning-cross-goal.js.map +1 -0
- package/dist/knowledge/learning-feedback.d.ts +26 -0
- package/dist/knowledge/learning-feedback.d.ts.map +1 -0
- package/dist/knowledge/learning-feedback.js +183 -0
- package/dist/knowledge/learning-feedback.js.map +1 -0
- package/dist/knowledge/learning-pipeline-prompts.d.ts +134 -0
- package/dist/knowledge/learning-pipeline-prompts.d.ts.map +1 -0
- package/dist/knowledge/learning-pipeline-prompts.js +103 -0
- package/dist/knowledge/learning-pipeline-prompts.js.map +1 -0
- package/dist/knowledge/learning-pipeline.d.ts +108 -0
- package/dist/knowledge/learning-pipeline.d.ts.map +1 -0
- package/dist/knowledge/learning-pipeline.js +467 -0
- package/dist/knowledge/learning-pipeline.js.map +1 -0
- package/dist/knowledge/memory-compression.d.ts +44 -0
- package/dist/knowledge/memory-compression.d.ts.map +1 -0
- package/dist/knowledge/memory-compression.js +289 -0
- package/dist/knowledge/memory-compression.js.map +1 -0
- package/dist/knowledge/memory-distill.d.ts +31 -0
- package/dist/knowledge/memory-distill.d.ts.map +1 -0
- package/dist/knowledge/memory-distill.js +170 -0
- package/dist/knowledge/memory-distill.js.map +1 -0
- package/dist/knowledge/memory-index.d.ts +11 -0
- package/dist/knowledge/memory-index.d.ts.map +1 -0
- package/dist/knowledge/memory-index.js +134 -0
- package/dist/knowledge/memory-index.js.map +1 -0
- package/dist/knowledge/memory-lifecycle.d.ts +172 -0
- package/dist/knowledge/memory-lifecycle.d.ts.map +1 -0
- package/dist/knowledge/memory-lifecycle.js +398 -0
- package/dist/knowledge/memory-lifecycle.js.map +1 -0
- package/dist/knowledge/memory-persistence.d.ts +30 -0
- package/dist/knowledge/memory-persistence.d.ts.map +1 -0
- package/dist/knowledge/memory-persistence.js +120 -0
- package/dist/knowledge/memory-persistence.js.map +1 -0
- package/dist/knowledge/memory-phases.d.ts +14 -0
- package/dist/knowledge/memory-phases.d.ts.map +1 -0
- package/dist/knowledge/memory-phases.js +14 -0
- package/dist/knowledge/memory-phases.js.map +1 -0
- package/dist/knowledge/memory-query.d.ts +4 -0
- package/dist/knowledge/memory-query.d.ts.map +1 -0
- package/dist/knowledge/memory-query.js +64 -0
- package/dist/knowledge/memory-query.js.map +1 -0
- package/dist/knowledge/memory-selection.d.ts +80 -0
- package/dist/knowledge/memory-selection.d.ts.map +1 -0
- package/dist/knowledge/memory-selection.js +356 -0
- package/dist/knowledge/memory-selection.js.map +1 -0
- package/dist/knowledge/memory-stats.d.ts +7 -0
- package/dist/knowledge/memory-stats.d.ts.map +1 -0
- package/dist/knowledge/memory-stats.js +162 -0
- package/dist/knowledge/memory-stats.js.map +1 -0
- package/dist/knowledge/memory-tier.d.ts +47 -0
- package/dist/knowledge/memory-tier.d.ts.map +1 -0
- package/dist/knowledge/memory-tier.js +212 -0
- package/dist/knowledge/memory-tier.js.map +1 -0
- package/dist/knowledge/transfer-trust.d.ts +40 -0
- package/dist/knowledge/transfer-trust.d.ts.map +1 -0
- package/dist/knowledge/transfer-trust.js +137 -0
- package/dist/knowledge/transfer-trust.js.map +1 -0
- package/dist/knowledge/vector-index.d.ts +65 -0
- package/dist/knowledge/vector-index.d.ts.map +1 -0
- package/dist/knowledge/vector-index.js +153 -0
- package/dist/knowledge/vector-index.js.map +1 -0
- package/dist/knowledge-graph.d.ts +70 -0
- package/dist/knowledge-graph.d.ts.map +1 -0
- package/dist/knowledge-graph.js +194 -0
- package/dist/knowledge-graph.js.map +1 -0
- package/dist/knowledge-manager.d.ts +110 -0
- package/dist/knowledge-manager.d.ts.map +1 -0
- package/dist/knowledge-manager.js +544 -0
- package/dist/knowledge-manager.js.map +1 -0
- package/dist/knowledge-transfer.d.ts +101 -0
- package/dist/knowledge-transfer.d.ts.map +1 -0
- package/dist/knowledge-transfer.js +484 -0
- package/dist/knowledge-transfer.js.map +1 -0
- package/dist/learning-pipeline.d.ts +107 -0
- package/dist/learning-pipeline.d.ts.map +1 -0
- package/dist/learning-pipeline.js +840 -0
- package/dist/learning-pipeline.js.map +1 -0
- package/dist/llm/base-llm-client.d.ts +20 -0
- package/dist/llm/base-llm-client.d.ts.map +1 -0
- package/dist/llm/base-llm-client.js +48 -0
- package/dist/llm/base-llm-client.js.map +1 -0
- package/dist/llm/codex-llm-client.d.ts +41 -0
- package/dist/llm/codex-llm-client.d.ts.map +1 -0
- package/dist/llm/codex-llm-client.js +188 -0
- package/dist/llm/codex-llm-client.js.map +1 -0
- package/dist/llm/llm-client.d.ts +54 -0
- package/dist/llm/llm-client.d.ts.map +1 -0
- package/dist/llm/llm-client.js +148 -0
- package/dist/llm/llm-client.js.map +1 -0
- package/dist/llm/ollama-client.d.ts +24 -0
- package/dist/llm/ollama-client.d.ts.map +1 -0
- package/dist/llm/ollama-client.js +94 -0
- package/dist/llm/ollama-client.js.map +1 -0
- package/dist/llm/openai-client.d.ts +34 -0
- package/dist/llm/openai-client.d.ts.map +1 -0
- package/dist/llm/openai-client.js +140 -0
- package/dist/llm/openai-client.js.map +1 -0
- package/dist/llm/provider-config.d.ts +55 -0
- package/dist/llm/provider-config.d.ts.map +1 -0
- package/dist/llm/provider-config.js +136 -0
- package/dist/llm/provider-config.js.map +1 -0
- package/dist/llm/provider-factory.d.ts +25 -0
- package/dist/llm/provider-factory.d.ts.map +1 -0
- package/dist/llm/provider-factory.js +111 -0
- package/dist/llm/provider-factory.js.map +1 -0
- package/dist/llm-client.d.ts +65 -0
- package/dist/llm-client.d.ts.map +1 -0
- package/dist/llm-client.js +151 -0
- package/dist/llm-client.js.map +1 -0
- package/dist/logger.d.ts +30 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +121 -0
- package/dist/logger.js.map +1 -0
- package/dist/loop/core-loop-capability.d.ts +19 -0
- package/dist/loop/core-loop-capability.d.ts.map +1 -0
- package/dist/loop/core-loop-capability.js +107 -0
- package/dist/loop/core-loop-capability.js.map +1 -0
- package/dist/loop/core-loop-learning.d.ts +34 -0
- package/dist/loop/core-loop-learning.d.ts.map +1 -0
- package/dist/loop/core-loop-learning.js +78 -0
- package/dist/loop/core-loop-learning.js.map +1 -0
- package/dist/loop/core-loop-phases-b.d.ts +25 -0
- package/dist/loop/core-loop-phases-b.d.ts.map +1 -0
- package/dist/loop/core-loop-phases-b.js +510 -0
- package/dist/loop/core-loop-phases-b.js.map +1 -0
- package/dist/loop/core-loop-phases.d.ts +40 -0
- package/dist/loop/core-loop-phases.d.ts.map +1 -0
- package/dist/loop/core-loop-phases.js +228 -0
- package/dist/loop/core-loop-phases.js.map +1 -0
- package/dist/loop/core-loop-types.d.ts +202 -0
- package/dist/loop/core-loop-types.d.ts.map +1 -0
- package/dist/loop/core-loop-types.js +38 -0
- package/dist/loop/core-loop-types.js.map +1 -0
- package/dist/loop/tree-loop-runner.d.ts +24 -0
- package/dist/loop/tree-loop-runner.d.ts.map +1 -0
- package/dist/loop/tree-loop-runner.js +116 -0
- package/dist/loop/tree-loop-runner.js.map +1 -0
- package/dist/memory-lifecycle.d.ts +244 -0
- package/dist/memory-lifecycle.d.ts.map +1 -0
- package/dist/memory-lifecycle.js +1328 -0
- package/dist/memory-lifecycle.js.map +1 -0
- package/dist/notification-dispatcher.d.ts +36 -0
- package/dist/notification-dispatcher.d.ts.map +1 -0
- package/dist/notification-dispatcher.js +363 -0
- package/dist/notification-dispatcher.js.map +1 -0
- package/dist/observation/capability-dependencies.d.ts +45 -0
- package/dist/observation/capability-dependencies.d.ts.map +1 -0
- package/dist/observation/capability-dependencies.js +208 -0
- package/dist/observation/capability-dependencies.js.map +1 -0
- package/dist/observation/capability-detector.d.ts +72 -0
- package/dist/observation/capability-detector.d.ts.map +1 -0
- package/dist/observation/capability-detector.js +372 -0
- package/dist/observation/capability-detector.js.map +1 -0
- package/dist/observation/capability-registry.d.ts +48 -0
- package/dist/observation/capability-registry.d.ts.map +1 -0
- package/dist/observation/capability-registry.js +131 -0
- package/dist/observation/capability-registry.js.map +1 -0
- package/dist/observation/context-provider.d.ts +39 -0
- package/dist/observation/context-provider.d.ts.map +1 -0
- package/dist/observation/context-provider.js +177 -0
- package/dist/observation/context-provider.js.map +1 -0
- package/dist/observation/data-source-adapter.d.ts +42 -0
- package/dist/observation/data-source-adapter.d.ts.map +1 -0
- package/dist/observation/data-source-adapter.js +227 -0
- package/dist/observation/data-source-adapter.js.map +1 -0
- package/dist/observation/observation-apply.d.ts +18 -0
- package/dist/observation/observation-apply.d.ts.map +1 -0
- package/dist/observation/observation-apply.js +138 -0
- package/dist/observation/observation-apply.js.map +1 -0
- package/dist/observation/observation-datasource.d.ts +21 -0
- package/dist/observation/observation-datasource.d.ts.map +1 -0
- package/dist/observation/observation-datasource.js +96 -0
- package/dist/observation/observation-datasource.js.map +1 -0
- package/dist/observation/observation-engine.d.ts +156 -0
- package/dist/observation/observation-engine.d.ts.map +1 -0
- package/dist/observation/observation-engine.js +359 -0
- package/dist/observation/observation-engine.js.map +1 -0
- package/dist/observation/observation-helpers.d.ts +112 -0
- package/dist/observation/observation-helpers.d.ts.map +1 -0
- package/dist/observation/observation-helpers.js +173 -0
- package/dist/observation/observation-helpers.js.map +1 -0
- package/dist/observation/observation-llm.d.ts +46 -0
- package/dist/observation/observation-llm.d.ts.map +1 -0
- package/dist/observation/observation-llm.js +220 -0
- package/dist/observation/observation-llm.js.map +1 -0
- package/dist/observation/observation-task.d.ts +29 -0
- package/dist/observation/observation-task.d.ts.map +1 -0
- package/dist/observation/observation-task.js +51 -0
- package/dist/observation/observation-task.js.map +1 -0
- package/dist/observation/workspace-context.d.ts +8 -0
- package/dist/observation/workspace-context.d.ts.map +1 -0
- package/dist/observation/workspace-context.js +229 -0
- package/dist/observation/workspace-context.js.map +1 -0
- package/dist/observation-engine.d.ts +218 -0
- package/dist/observation-engine.d.ts.map +1 -0
- package/dist/observation-engine.js +711 -0
- package/dist/observation-engine.js.map +1 -0
- package/dist/ollama-client.d.ts +30 -0
- package/dist/ollama-client.d.ts.map +1 -0
- package/dist/ollama-client.js +112 -0
- package/dist/ollama-client.js.map +1 -0
- package/dist/openai-client.d.ts +40 -0
- package/dist/openai-client.d.ts.map +1 -0
- package/dist/openai-client.js +155 -0
- package/dist/openai-client.js.map +1 -0
- package/dist/pid-manager.d.ts +18 -0
- package/dist/pid-manager.d.ts.map +1 -0
- package/dist/pid-manager.js +64 -0
- package/dist/pid-manager.js.map +1 -0
- package/dist/portfolio-manager.d.ts +147 -0
- package/dist/portfolio-manager.d.ts.map +1 -0
- package/dist/portfolio-manager.js +371 -0
- package/dist/portfolio-manager.js.map +1 -0
- package/dist/portfolio-rebalance.d.ts +75 -0
- package/dist/portfolio-rebalance.d.ts.map +1 -0
- package/dist/portfolio-rebalance.js +254 -0
- package/dist/portfolio-rebalance.js.map +1 -0
- package/dist/prompt/context-assembler.d.ts +70 -0
- package/dist/prompt/context-assembler.d.ts.map +1 -0
- package/dist/prompt/context-assembler.js +346 -0
- package/dist/prompt/context-assembler.js.map +1 -0
- package/dist/prompt/formatters.d.ts +49 -0
- package/dist/prompt/formatters.d.ts.map +1 -0
- package/dist/prompt/formatters.js +136 -0
- package/dist/prompt/formatters.js.map +1 -0
- package/dist/prompt/gateway.d.ts +30 -0
- package/dist/prompt/gateway.d.ts.map +1 -0
- package/dist/prompt/gateway.js +43 -0
- package/dist/prompt/gateway.js.map +1 -0
- package/dist/prompt/index.d.ts +12 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +9 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/purposes/capability.d.ts +64 -0
- package/dist/prompt/purposes/capability.d.ts.map +1 -0
- package/dist/prompt/purposes/capability.js +38 -0
- package/dist/prompt/purposes/capability.js.map +1 -0
- package/dist/prompt/purposes/checkpoint.d.ts +22 -0
- package/dist/prompt/purposes/checkpoint.d.ts.map +1 -0
- package/dist/prompt/purposes/checkpoint.js +17 -0
- package/dist/prompt/purposes/checkpoint.js.map +1 -0
- package/dist/prompt/purposes/curiosity.d.ts +41 -0
- package/dist/prompt/purposes/curiosity.d.ts.map +1 -0
- package/dist/prompt/purposes/curiosity.js +20 -0
- package/dist/prompt/purposes/curiosity.js.map +1 -0
- package/dist/prompt/purposes/dependency.d.ts +34 -0
- package/dist/prompt/purposes/dependency.d.ts.map +1 -0
- package/dist/prompt/purposes/dependency.js +21 -0
- package/dist/prompt/purposes/dependency.js.map +1 -0
- package/dist/prompt/purposes/ethics.d.ts +47 -0
- package/dist/prompt/purposes/ethics.d.ts.map +1 -0
- package/dist/prompt/purposes/ethics.js +89 -0
- package/dist/prompt/purposes/ethics.js.map +1 -0
- package/dist/prompt/purposes/final-migration.d.ts +15 -0
- package/dist/prompt/purposes/final-migration.d.ts.map +1 -0
- package/dist/prompt/purposes/final-migration.js +15 -0
- package/dist/prompt/purposes/final-migration.js.map +1 -0
- package/dist/prompt/purposes/goal-decomposition.d.ts +46 -0
- package/dist/prompt/purposes/goal-decomposition.d.ts.map +1 -0
- package/dist/prompt/purposes/goal-decomposition.js +20 -0
- package/dist/prompt/purposes/goal-decomposition.js.map +1 -0
- package/dist/prompt/purposes/goal-quality.d.ts +61 -0
- package/dist/prompt/purposes/goal-quality.d.ts.map +1 -0
- package/dist/prompt/purposes/goal-quality.js +37 -0
- package/dist/prompt/purposes/goal-quality.js.map +1 -0
- package/dist/prompt/purposes/index.d.ts +29 -0
- package/dist/prompt/purposes/index.d.ts.map +1 -0
- package/dist/prompt/purposes/index.js +320 -0
- package/dist/prompt/purposes/index.js.map +1 -0
- package/dist/prompt/purposes/knowledge-transfer.d.ts +81 -0
- package/dist/prompt/purposes/knowledge-transfer.d.ts.map +1 -0
- package/dist/prompt/purposes/knowledge-transfer.js +33 -0
- package/dist/prompt/purposes/knowledge-transfer.js.map +1 -0
- package/dist/prompt/purposes/knowledge.d.ts +88 -0
- package/dist/prompt/purposes/knowledge.d.ts.map +1 -0
- package/dist/prompt/purposes/knowledge.js +59 -0
- package/dist/prompt/purposes/knowledge.js.map +1 -0
- package/dist/prompt/purposes/learning.d.ts +70 -0
- package/dist/prompt/purposes/learning.d.ts.map +1 -0
- package/dist/prompt/purposes/learning.js +32 -0
- package/dist/prompt/purposes/learning.js.map +1 -0
- package/dist/prompt/purposes/memory-distill.d.ts +75 -0
- package/dist/prompt/purposes/memory-distill.d.ts.map +1 -0
- package/dist/prompt/purposes/memory-distill.js +27 -0
- package/dist/prompt/purposes/memory-distill.js.map +1 -0
- package/dist/prompt/purposes/observation.d.ts +25 -0
- package/dist/prompt/purposes/observation.d.ts.map +1 -0
- package/dist/prompt/purposes/observation.js +17 -0
- package/dist/prompt/purposes/observation.js.map +1 -0
- package/dist/prompt/purposes/strategy-template.d.ts +57 -0
- package/dist/prompt/purposes/strategy-template.d.ts.map +1 -0
- package/dist/prompt/purposes/strategy-template.js +31 -0
- package/dist/prompt/purposes/strategy-template.js.map +1 -0
- package/dist/prompt/purposes/strategy.d.ts +41 -0
- package/dist/prompt/purposes/strategy.d.ts.map +1 -0
- package/dist/prompt/purposes/strategy.js +19 -0
- package/dist/prompt/purposes/strategy.js.map +1 -0
- package/dist/prompt/purposes/task-generation.d.ts +26 -0
- package/dist/prompt/purposes/task-generation.d.ts.map +1 -0
- package/dist/prompt/purposes/task-generation.js +22 -0
- package/dist/prompt/purposes/task-generation.js.map +1 -0
- package/dist/prompt/purposes/verification.d.ts +25 -0
- package/dist/prompt/purposes/verification.d.ts.map +1 -0
- package/dist/prompt/purposes/verification.js +17 -0
- package/dist/prompt/purposes/verification.js.map +1 -0
- package/dist/prompt/slot-definitions 2.d.ts +33 -0
- package/dist/prompt/slot-definitions 2.d.ts.map +1 -0
- package/dist/prompt/slot-definitions 2.js +332 -0
- package/dist/prompt/slot-definitions 2.js.map +1 -0
- package/dist/prompt/slot-definitions.d.ts +33 -0
- package/dist/prompt/slot-definitions.d.ts.map +1 -0
- package/dist/prompt/slot-definitions.js +383 -0
- package/dist/prompt/slot-definitions.js.map +1 -0
- package/dist/provider-config.d.ts +43 -0
- package/dist/provider-config.d.ts.map +1 -0
- package/dist/provider-config.js +131 -0
- package/dist/provider-config.js.map +1 -0
- package/dist/provider-factory.d.ts +23 -0
- package/dist/provider-factory.d.ts.map +1 -0
- package/dist/provider-factory.js +83 -0
- package/dist/provider-factory.js.map +1 -0
- package/dist/reporting-engine.d.ts +58 -0
- package/dist/reporting-engine.d.ts.map +1 -0
- package/dist/reporting-engine.js +592 -0
- package/dist/reporting-engine.js.map +1 -0
- package/dist/runtime/daemon-runner.d.ts +147 -0
- package/dist/runtime/daemon-runner.d.ts.map +1 -0
- package/dist/runtime/daemon-runner.js +549 -0
- package/dist/runtime/daemon-runner.js.map +1 -0
- package/dist/runtime/event-server.d.ts +50 -0
- package/dist/runtime/event-server.d.ts.map +1 -0
- package/dist/runtime/event-server.js +192 -0
- package/dist/runtime/event-server.js.map +1 -0
- package/dist/runtime/logger.d.ts +57 -0
- package/dist/runtime/logger.d.ts.map +1 -0
- package/dist/runtime/logger.js +254 -0
- package/dist/runtime/logger.js.map +1 -0
- package/dist/runtime/notification-dispatcher.d.ts +49 -0
- package/dist/runtime/notification-dispatcher.d.ts.map +1 -0
- package/dist/runtime/notification-dispatcher.js +444 -0
- package/dist/runtime/notification-dispatcher.js.map +1 -0
- package/dist/runtime/notifier-registry.d.ts +26 -0
- package/dist/runtime/notifier-registry.d.ts.map +1 -0
- package/dist/runtime/notifier-registry.js +36 -0
- package/dist/runtime/notifier-registry.js.map +1 -0
- package/dist/runtime/pid-manager.d.ts +18 -0
- package/dist/runtime/pid-manager.d.ts.map +1 -0
- package/dist/runtime/pid-manager.js +61 -0
- package/dist/runtime/pid-manager.js.map +1 -0
- package/dist/runtime/plugin-loader.d.ts +78 -0
- package/dist/runtime/plugin-loader.d.ts.map +1 -0
- package/dist/runtime/plugin-loader.js +349 -0
- package/dist/runtime/plugin-loader.js.map +1 -0
- package/dist/satisficing-judge.d.ts +113 -0
- package/dist/satisficing-judge.d.ts.map +1 -0
- package/dist/satisficing-judge.js +592 -0
- package/dist/satisficing-judge.js.map +1 -0
- package/dist/session-manager.d.ts +159 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +458 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/stall-detector.d.ts +100 -0
- package/dist/stall-detector.d.ts.map +1 -0
- package/dist/stall-detector.js +306 -0
- package/dist/stall-detector.js.map +1 -0
- package/dist/state-aggregator.d.ts +89 -0
- package/dist/state-aggregator.d.ts.map +1 -0
- package/dist/state-aggregator.js +290 -0
- package/dist/state-aggregator.js.map +1 -0
- package/dist/state-manager.d.ts +121 -0
- package/dist/state-manager.d.ts.map +1 -0
- package/dist/state-manager.js +547 -0
- package/dist/state-manager.js.map +1 -0
- package/dist/strategy/cross-goal-portfolio.d.ts +118 -0
- package/dist/strategy/cross-goal-portfolio.d.ts.map +1 -0
- package/dist/strategy/cross-goal-portfolio.js +431 -0
- package/dist/strategy/cross-goal-portfolio.js.map +1 -0
- package/dist/strategy/portfolio-allocation.d.ts +36 -0
- package/dist/strategy/portfolio-allocation.d.ts.map +1 -0
- package/dist/strategy/portfolio-allocation.js +215 -0
- package/dist/strategy/portfolio-allocation.js.map +1 -0
- package/dist/strategy/portfolio-momentum.d.ts +11 -0
- package/dist/strategy/portfolio-momentum.d.ts.map +1 -0
- package/dist/strategy/portfolio-momentum.js +64 -0
- package/dist/strategy/portfolio-momentum.js.map +1 -0
- package/dist/strategy/portfolio-scheduling.d.ts +25 -0
- package/dist/strategy/portfolio-scheduling.d.ts.map +1 -0
- package/dist/strategy/portfolio-scheduling.js +133 -0
- package/dist/strategy/portfolio-scheduling.js.map +1 -0
- package/dist/strategy/strategy-helpers.d.ts +109 -0
- package/dist/strategy/strategy-helpers.d.ts.map +1 -0
- package/dist/strategy/strategy-helpers.js +125 -0
- package/dist/strategy/strategy-helpers.js.map +1 -0
- package/dist/strategy/strategy-manager-base.d.ts +95 -0
- package/dist/strategy/strategy-manager-base.d.ts.map +1 -0
- package/dist/strategy/strategy-manager-base.js +363 -0
- package/dist/strategy/strategy-manager-base.js.map +1 -0
- package/dist/strategy/strategy-manager.d.ts +65 -0
- package/dist/strategy/strategy-manager.d.ts.map +1 -0
- package/dist/strategy/strategy-manager.js +226 -0
- package/dist/strategy/strategy-manager.js.map +1 -0
- package/dist/strategy/strategy-template-registry.d.ts +84 -0
- package/dist/strategy/strategy-template-registry.d.ts.map +1 -0
- package/dist/strategy/strategy-template-registry.js +350 -0
- package/dist/strategy/strategy-template-registry.js.map +1 -0
- package/dist/strategy-manager.d.ts +128 -0
- package/dist/strategy-manager.d.ts.map +1 -0
- package/dist/strategy-manager.js +579 -0
- package/dist/strategy-manager.js.map +1 -0
- package/dist/strategy-template-registry.d.ts +80 -0
- package/dist/strategy-template-registry.d.ts.map +1 -0
- package/dist/strategy-template-registry.js +320 -0
- package/dist/strategy-template-registry.js.map +1 -0
- package/dist/task-lifecycle.d.ts +167 -0
- package/dist/task-lifecycle.d.ts.map +1 -0
- package/dist/task-lifecycle.js +1161 -0
- package/dist/task-lifecycle.js.map +1 -0
- package/dist/traits/character-config.d.ts +34 -0
- package/dist/traits/character-config.d.ts.map +1 -0
- package/dist/traits/character-config.js +53 -0
- package/dist/traits/character-config.js.map +1 -0
- package/dist/traits/curiosity-engine.d.ts +185 -0
- package/dist/traits/curiosity-engine.d.ts.map +1 -0
- package/dist/traits/curiosity-engine.js +530 -0
- package/dist/traits/curiosity-engine.js.map +1 -0
- package/dist/traits/curiosity-proposals.d.ts +38 -0
- package/dist/traits/curiosity-proposals.d.ts.map +1 -0
- package/dist/traits/curiosity-proposals.js +259 -0
- package/dist/traits/curiosity-proposals.js.map +1 -0
- package/dist/traits/curiosity-transfer.d.ts +27 -0
- package/dist/traits/curiosity-transfer.d.ts.map +1 -0
- package/dist/traits/curiosity-transfer.js +50 -0
- package/dist/traits/curiosity-transfer.js.map +1 -0
- package/dist/traits/ethics-gate.d.ts +72 -0
- package/dist/traits/ethics-gate.d.ts.map +1 -0
- package/dist/traits/ethics-gate.js +591 -0
- package/dist/traits/ethics-gate.js.map +1 -0
- package/dist/traits/trust-manager.d.ts +90 -0
- package/dist/traits/trust-manager.d.ts.map +1 -0
- package/dist/traits/trust-manager.js +276 -0
- package/dist/traits/trust-manager.js.map +1 -0
- package/dist/tree-loop-orchestrator.d.ts +79 -0
- package/dist/tree-loop-orchestrator.d.ts.map +1 -0
- package/dist/tree-loop-orchestrator.js +225 -0
- package/dist/tree-loop-orchestrator.js.map +1 -0
- package/dist/trust-manager.d.ts +67 -0
- package/dist/trust-manager.d.ts.map +1 -0
- package/dist/trust-manager.js +201 -0
- package/dist/trust-manager.js.map +1 -0
- package/dist/tui/actions.d.ts +38 -0
- package/dist/tui/actions.d.ts.map +1 -0
- package/dist/tui/actions.js +229 -0
- package/dist/tui/actions.js.map +1 -0
- package/dist/tui/app.d.ts +24 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +159 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/approval-overlay.d.ts +8 -0
- package/dist/tui/approval-overlay.d.ts.map +1 -0
- package/dist/tui/approval-overlay.js +20 -0
- package/dist/tui/approval-overlay.js.map +1 -0
- package/dist/tui/chat.d.ts +15 -0
- package/dist/tui/chat.d.ts.map +1 -0
- package/dist/tui/chat.js +196 -0
- package/dist/tui/chat.js.map +1 -0
- package/dist/tui/dashboard.d.ts +9 -0
- package/dist/tui/dashboard.d.ts.map +1 -0
- package/dist/tui/dashboard.js +69 -0
- package/dist/tui/dashboard.js.map +1 -0
- package/dist/tui/entry.d.ts +3 -0
- package/dist/tui/entry.d.ts.map +1 -0
- package/dist/tui/entry.js +222 -0
- package/dist/tui/entry.js.map +1 -0
- package/dist/tui/fuzzy.d.ts +22 -0
- package/dist/tui/fuzzy.d.ts.map +1 -0
- package/dist/tui/fuzzy.js +66 -0
- package/dist/tui/fuzzy.js.map +1 -0
- package/dist/tui/help-overlay.d.ts +6 -0
- package/dist/tui/help-overlay.d.ts.map +1 -0
- package/dist/tui/help-overlay.js +12 -0
- package/dist/tui/help-overlay.js.map +1 -0
- package/dist/tui/intent-recognizer.d.ts +19 -0
- package/dist/tui/intent-recognizer.d.ts.map +1 -0
- package/dist/tui/intent-recognizer.js +125 -0
- package/dist/tui/intent-recognizer.js.map +1 -0
- package/dist/tui/markdown-renderer.d.ts +37 -0
- package/dist/tui/markdown-renderer.d.ts.map +1 -0
- package/dist/tui/markdown-renderer.js +220 -0
- package/dist/tui/markdown-renderer.js.map +1 -0
- package/dist/tui/report-view.d.ts +6 -0
- package/dist/tui/report-view.d.ts.map +1 -0
- package/dist/tui/report-view.js +79 -0
- package/dist/tui/report-view.js.map +1 -0
- package/dist/tui/use-loop.d.ts +54 -0
- package/dist/tui/use-loop.d.ts.map +1 -0
- package/dist/tui/use-loop.js +185 -0
- package/dist/tui/use-loop.js.map +1 -0
- package/dist/types/a2a.d.ts +972 -0
- package/dist/types/a2a.d.ts.map +1 -0
- package/dist/types/a2a.js +130 -0
- package/dist/types/a2a.js.map +1 -0
- package/dist/types/capability.d.ts +292 -0
- package/dist/types/capability.d.ts.map +1 -0
- package/dist/types/capability.js +53 -0
- package/dist/types/capability.js.map +1 -0
- package/dist/types/character.d.ts +20 -0
- package/dist/types/character.d.ts.map +1 -0
- package/dist/types/character.js +10 -0
- package/dist/types/character.js.map +1 -0
- package/dist/types/checkpoint.d.ts +109 -0
- package/dist/types/checkpoint.d.ts.map +1 -0
- package/dist/types/checkpoint.js +27 -0
- package/dist/types/checkpoint.js.map +1 -0
- package/dist/types/core.d.ts +175 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +154 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/cross-portfolio.d.ts +378 -0
- package/dist/types/cross-portfolio.d.ts.map +1 -0
- package/dist/types/cross-portfolio.js +155 -0
- package/dist/types/cross-portfolio.js.map +1 -0
- package/dist/types/curiosity.d.ts +443 -0
- package/dist/types/curiosity.d.ts.map +1 -0
- package/dist/types/curiosity.js +86 -0
- package/dist/types/curiosity.js.map +1 -0
- package/dist/types/daemon.d.ts +111 -0
- package/dist/types/daemon.d.ts.map +1 -0
- package/dist/types/daemon.js +37 -0
- package/dist/types/daemon.js.map +1 -0
- package/dist/types/data-source.d.ts +311 -0
- package/dist/types/data-source.d.ts.map +1 -0
- package/dist/types/data-source.js +53 -0
- package/dist/types/data-source.js.map +1 -0
- package/dist/types/dependency.d.ts +108 -0
- package/dist/types/dependency.d.ts.map +1 -0
- package/dist/types/dependency.js +21 -0
- package/dist/types/dependency.js.map +1 -0
- package/dist/types/drive.d.ts +194 -0
- package/dist/types/drive.d.ts.map +1 -0
- package/dist/types/drive.js +77 -0
- package/dist/types/drive.js.map +1 -0
- package/dist/types/embedding.d.ts +59 -0
- package/dist/types/embedding.d.ts.map +1 -0
- package/dist/types/embedding.js +22 -0
- package/dist/types/embedding.js.map +1 -0
- package/dist/types/ethics.d.ts +169 -0
- package/dist/types/ethics.d.ts.map +1 -0
- package/dist/types/ethics.js +47 -0
- package/dist/types/ethics.js.map +1 -0
- package/dist/types/gap.d.ts +146 -0
- package/dist/types/gap.d.ts.map +1 -0
- package/dist/types/gap.js +41 -0
- package/dist/types/gap.js.map +1 -0
- package/dist/types/goal-tree.d.ts +180 -0
- package/dist/types/goal-tree.d.ts.map +1 -0
- package/dist/types/goal-tree.js +73 -0
- package/dist/types/goal-tree.js.map +1 -0
- package/dist/types/goal.d.ts +1233 -0
- package/dist/types/goal.d.ts.map +1 -0
- package/dist/types/goal.js +119 -0
- package/dist/types/goal.js.map +1 -0
- package/dist/types/guardrail.d.ts +104 -0
- package/dist/types/guardrail.d.ts.map +1 -0
- package/dist/types/guardrail.js +34 -0
- package/dist/types/guardrail.js.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +31 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/knowledge.d.ts +402 -0
- package/dist/types/knowledge.d.ts.map +1 -0
- package/dist/types/knowledge.js +116 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/learning.d.ts +292 -0
- package/dist/types/learning.d.ts.map +1 -0
- package/dist/types/learning.js +120 -0
- package/dist/types/learning.js.map +1 -0
- package/dist/types/memory-lifecycle.d.ts +617 -0
- package/dist/types/memory-lifecycle.d.ts.map +1 -0
- package/dist/types/memory-lifecycle.js +159 -0
- package/dist/types/memory-lifecycle.js.map +1 -0
- package/dist/types/negotiation.d.ts +450 -0
- package/dist/types/negotiation.d.ts.map +1 -0
- package/dist/types/negotiation.js +84 -0
- package/dist/types/negotiation.js.map +1 -0
- package/dist/types/notification.d.ts +879 -0
- package/dist/types/notification.d.ts.map +1 -0
- package/dist/types/notification.js +75 -0
- package/dist/types/notification.js.map +1 -0
- package/dist/types/pipeline.d.ts +191 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +62 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/types/plugin.d.ts +335 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +61 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/portfolio.d.ts +146 -0
- package/dist/types/portfolio.d.ts.map +1 -0
- package/dist/types/portfolio.js +55 -0
- package/dist/types/portfolio.js.map +1 -0
- package/dist/types/reflection.d.ts +34 -0
- package/dist/types/reflection.d.ts.map +1 -0
- package/dist/types/reflection.js +14 -0
- package/dist/types/reflection.js.map +1 -0
- package/dist/types/report.d.ts +205 -0
- package/dist/types/report.d.ts.map +1 -0
- package/dist/types/report.js +59 -0
- package/dist/types/report.js.map +1 -0
- package/dist/types/satisficing.d.ts +130 -0
- package/dist/types/satisficing.d.ts.map +1 -0
- package/dist/types/satisficing.js +54 -0
- package/dist/types/satisficing.js.map +1 -0
- package/dist/types/session.d.ts +95 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +36 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/stall.d.ts +68 -0
- package/dist/types/stall.d.ts.map +1 -0
- package/dist/types/stall.js +28 -0
- package/dist/types/stall.js.map +1 -0
- package/dist/types/state.d.ts +245 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +36 -0
- package/dist/types/state.js.map +1 -0
- package/dist/types/strategy.d.ts +541 -0
- package/dist/types/strategy.d.ts.map +1 -0
- package/dist/types/strategy.js +55 -0
- package/dist/types/strategy.js.map +1 -0
- package/dist/types/suggest.d.ts +92 -0
- package/dist/types/suggest.d.ts.map +1 -0
- package/dist/types/suggest.js +15 -0
- package/dist/types/suggest.js.map +1 -0
- package/dist/types/task-group.d.ts +231 -0
- package/dist/types/task-group.d.ts.map +1 -0
- package/dist/types/task-group.js +14 -0
- package/dist/types/task-group.js.map +1 -0
- package/dist/types/task.d.ts +258 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +66 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/trust.d.ts +126 -0
- package/dist/types/trust.d.ts.map +1 -0
- package/dist/types/trust.js +38 -0
- package/dist/types/trust.js.map +1 -0
- package/dist/utils/errors.d.ts +17 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +34 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/json-io.d.ts +28 -0
- package/dist/utils/json-io.d.ts.map +1 -0
- package/dist/utils/json-io.js +71 -0
- package/dist/utils/json-io.js.map +1 -0
- package/dist/utils/paths.d.ts +14 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +38 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/sleep.d.ts +2 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +4 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/vector-index.d.ts +39 -0
- package/dist/vector-index.d.ts.map +1 -0
- package/dist/vector-index.js +111 -0
- package/dist/vector-index.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,782 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* task-verifier.ts
|
|
3
|
+
*
|
|
4
|
+
* Verification logic extracted from TaskLifecycle:
|
|
5
|
+
* - verifyTask
|
|
6
|
+
* - handleVerdict
|
|
7
|
+
* - handleFailure
|
|
8
|
+
*
|
|
9
|
+
* All functions are standalone and receive explicit dependencies instead of
|
|
10
|
+
* relying on `this`. TaskLifecycle keeps thin wrapper methods for backward
|
|
11
|
+
* compatibility.
|
|
12
|
+
*/
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
import { VerificationResultSchema } from "../types/task.js";
|
|
15
|
+
import { wrapXmlTag, formatKnowledge } from "../prompt/formatters.js";
|
|
16
|
+
// ─── CompletionJudgerResponseSchema: Zod schema for LLM completion judgment response ───
|
|
17
|
+
const CompletionJudgerResponseSchema = z.object({
|
|
18
|
+
verdict: z.enum(["pass", "partial", "fail"]).default("fail"),
|
|
19
|
+
reasoning: z.string().default(""),
|
|
20
|
+
criteria_met: z.number().int().min(0).optional(),
|
|
21
|
+
criteria_total: z.number().int().min(0).optional(),
|
|
22
|
+
});
|
|
23
|
+
// ─── verifyTask ───
|
|
24
|
+
/**
|
|
25
|
+
* Verify task execution results using 3-layer verification.
|
|
26
|
+
*
|
|
27
|
+
* Layer 1: Mechanical verification (via adapter in review session)
|
|
28
|
+
* Layer 2: LLM task reviewer (independent, no self-report)
|
|
29
|
+
* Layer 3: Executor self-report (reference only)
|
|
30
|
+
*
|
|
31
|
+
* Contradiction resolution:
|
|
32
|
+
* - L1 PASS + L2 PASS → pass
|
|
33
|
+
* - L1 PASS + L2 FAIL → re-review; if still FAIL → fail
|
|
34
|
+
* - L1 FAIL + L2 PASS → fail (mechanical priority)
|
|
35
|
+
* - L1 FAIL + L2 FAIL → fail
|
|
36
|
+
* - L1 SKIP → use L2 only (lower confidence)
|
|
37
|
+
*/
|
|
38
|
+
export async function verifyTask(deps, task, executionResult) {
|
|
39
|
+
// ─── Short-circuit: GitHub issue URL evidence ───
|
|
40
|
+
// When execution succeeded and output contains a GitHub issue URL,
|
|
41
|
+
// treat as mechanical pass without running full L1/L2 verification.
|
|
42
|
+
// Dimension updates are left to ObservationEngine (next loop iteration).
|
|
43
|
+
const githubIssueUrlPattern = /github\.com\/.+\/issues\/\d+/;
|
|
44
|
+
if (executionResult.success === true &&
|
|
45
|
+
executionResult.output &&
|
|
46
|
+
githubIssueUrlPattern.test(executionResult.output)) {
|
|
47
|
+
const scResult = VerificationResultSchema.parse({
|
|
48
|
+
task_id: task.id,
|
|
49
|
+
verdict: "pass",
|
|
50
|
+
confidence: 0.95,
|
|
51
|
+
evidence: [
|
|
52
|
+
{
|
|
53
|
+
layer: "mechanical",
|
|
54
|
+
description: "GitHub issue URL found in execution output — mechanical evidence of successful issue creation",
|
|
55
|
+
confidence: 0.95,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
dimension_updates: [],
|
|
59
|
+
timestamp: new Date().toISOString(),
|
|
60
|
+
});
|
|
61
|
+
return scResult;
|
|
62
|
+
}
|
|
63
|
+
// ─── Layer 1: Mechanical verification ───
|
|
64
|
+
const l1Result = await runMechanicalVerification(deps, task);
|
|
65
|
+
// ─── Build optional enrichment blocks for LLM review ───
|
|
66
|
+
let knowledgeBlock = "";
|
|
67
|
+
if (deps.knowledgeManager?.getRelevantKnowledge) {
|
|
68
|
+
try {
|
|
69
|
+
const entries = await deps.knowledgeManager.getRelevantKnowledge(task.goal_id);
|
|
70
|
+
if (entries.length > 0) {
|
|
71
|
+
knowledgeBlock = wrapXmlTag("relevant_knowledge", formatKnowledge(entries.map((e) => ({ question: e.question, answer: e.answer, confidence: e.confidence }))));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch { /* knowledge enrichment is optional */ }
|
|
75
|
+
}
|
|
76
|
+
let stateBlock = "";
|
|
77
|
+
try {
|
|
78
|
+
const goalDataForState = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
|
|
79
|
+
if (goalDataForState && typeof goalDataForState === "object") {
|
|
80
|
+
const dims = goalDataForState.dimensions;
|
|
81
|
+
const primaryDim = dims?.find((d) => d.name === task.primary_dimension);
|
|
82
|
+
if (primaryDim) {
|
|
83
|
+
const currentValue = typeof primaryDim.current_value === "number" ? primaryDim.current_value : undefined;
|
|
84
|
+
const threshold = primaryDim.threshold;
|
|
85
|
+
if (currentValue !== undefined) {
|
|
86
|
+
stateBlock = wrapXmlTag("current_state", `Dimension: ${task.primary_dimension}, current value: ${currentValue}${threshold !== undefined ? `, target: ${JSON.stringify(threshold)}` : ""}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch { /* state enrichment is optional */ }
|
|
92
|
+
// ─── Layer 2: LLM task reviewer (independent) ───
|
|
93
|
+
const l2Result = await runLLMReview(deps, task, executionResult, knowledgeBlock, stateBlock);
|
|
94
|
+
// ─── Layer 3: Executor self-report (reference only) ───
|
|
95
|
+
const executorReport = parseExecutorReport(executionResult);
|
|
96
|
+
// ─── Contradiction resolution ───
|
|
97
|
+
let verdict;
|
|
98
|
+
let confidence;
|
|
99
|
+
let l2Retry;
|
|
100
|
+
if (l1Result.applicable) {
|
|
101
|
+
if (l1Result.passed && l2Result.passed) {
|
|
102
|
+
verdict = "pass";
|
|
103
|
+
confidence = 0.9;
|
|
104
|
+
}
|
|
105
|
+
else if (l1Result.passed && l2Result.partial) {
|
|
106
|
+
// L1 pass + L2 partial → partial
|
|
107
|
+
verdict = "partial";
|
|
108
|
+
confidence = 0.7;
|
|
109
|
+
}
|
|
110
|
+
else if (l1Result.passed && !l2Result.passed && !l2Result.partial) {
|
|
111
|
+
// L1 pass + L2 fail → re-review
|
|
112
|
+
l2Retry = await runLLMReview(deps, task, executionResult, knowledgeBlock, stateBlock);
|
|
113
|
+
if (l2Retry.passed) {
|
|
114
|
+
verdict = "pass";
|
|
115
|
+
confidence = 0.75;
|
|
116
|
+
}
|
|
117
|
+
else if (l2Retry.partial) {
|
|
118
|
+
verdict = "partial";
|
|
119
|
+
confidence = 0.65;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
verdict = "fail";
|
|
123
|
+
confidence = 0.8;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if (!l1Result.passed && l2Result.passed) {
|
|
127
|
+
// Mechanical verification takes priority
|
|
128
|
+
verdict = "fail";
|
|
129
|
+
confidence = 0.85;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Both fail (or L1 fail + L2 partial → fail, mechanical priority)
|
|
133
|
+
verdict = "fail";
|
|
134
|
+
confidence = 0.9;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// L1 skipped — use L2 only with lower confidence
|
|
139
|
+
if (l2Result.passed) {
|
|
140
|
+
verdict = "pass";
|
|
141
|
+
confidence = 0.6;
|
|
142
|
+
}
|
|
143
|
+
else if (l2Result.partial) {
|
|
144
|
+
verdict = "partial";
|
|
145
|
+
confidence = 0.5;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
verdict = "fail";
|
|
149
|
+
confidence = 0.6;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Handle partial from L2 when L1 is applicable but didn't fail
|
|
153
|
+
if (l1Result.applicable && l2Result.partial && verdict !== "fail") {
|
|
154
|
+
verdict = "partial";
|
|
155
|
+
}
|
|
156
|
+
// Use retry result for evidence when a retry occurred, to keep audit trail accurate
|
|
157
|
+
const effectiveL2 = l2Retry ?? l2Result;
|
|
158
|
+
const now = new Date().toISOString();
|
|
159
|
+
const evidence = [
|
|
160
|
+
...(l1Result.applicable
|
|
161
|
+
? [
|
|
162
|
+
{
|
|
163
|
+
layer: "mechanical",
|
|
164
|
+
description: l1Result.description,
|
|
165
|
+
confidence: 0.9,
|
|
166
|
+
},
|
|
167
|
+
]
|
|
168
|
+
: []),
|
|
169
|
+
{
|
|
170
|
+
layer: "independent_review",
|
|
171
|
+
description: effectiveL2.description,
|
|
172
|
+
confidence: effectiveL2.confidence,
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
layer: "self_report",
|
|
176
|
+
description: executorReport.summary,
|
|
177
|
+
confidence: 0.3, // self-report has lowest confidence
|
|
178
|
+
},
|
|
179
|
+
];
|
|
180
|
+
// Build dimension_updates from task's target dimensions based on verdict.
|
|
181
|
+
// pass: significant progress (+0.2), partial: moderate progress (+0.15), fail: no update.
|
|
182
|
+
const progressByVerdict = {
|
|
183
|
+
pass: 0.2,
|
|
184
|
+
partial: 0.15,
|
|
185
|
+
fail: 0,
|
|
186
|
+
};
|
|
187
|
+
const progressDelta = progressByVerdict[verdict] ?? 0;
|
|
188
|
+
// Read goal state to get actual current dimension values for previous_value / new_value.
|
|
189
|
+
const goalDataForUpdate = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
|
|
190
|
+
const goalDimsForUpdate = goalDataForUpdate && typeof goalDataForUpdate === "object"
|
|
191
|
+
? goalDataForUpdate.dimensions
|
|
192
|
+
: undefined;
|
|
193
|
+
const dimension_updates = verdict === "fail"
|
|
194
|
+
? []
|
|
195
|
+
: task.target_dimensions.map((dimName) => {
|
|
196
|
+
const dim = goalDimsForUpdate?.find((d) => d.name === dimName);
|
|
197
|
+
const prevVal = dim !== undefined && typeof dim.current_value === "number"
|
|
198
|
+
? dim.current_value
|
|
199
|
+
: null;
|
|
200
|
+
const newVal = prevVal !== null
|
|
201
|
+
? Math.min(1, Math.max(0, prevVal + progressDelta))
|
|
202
|
+
: progressDelta;
|
|
203
|
+
return {
|
|
204
|
+
dimension_name: dimName,
|
|
205
|
+
previous_value: prevVal,
|
|
206
|
+
new_value: newVal,
|
|
207
|
+
confidence,
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
const verificationResult = VerificationResultSchema.parse({
|
|
211
|
+
task_id: task.id,
|
|
212
|
+
verdict,
|
|
213
|
+
confidence,
|
|
214
|
+
evidence,
|
|
215
|
+
dimension_updates,
|
|
216
|
+
timestamp: now,
|
|
217
|
+
});
|
|
218
|
+
// Persist verification result — include criteria fields from LLM review for failure context
|
|
219
|
+
await deps.stateManager.writeRaw(`verification/${task.id}/verification-result.json`, {
|
|
220
|
+
...verificationResult,
|
|
221
|
+
criteria_met: effectiveL2.criteria_met,
|
|
222
|
+
criteria_total: effectiveL2.criteria_total,
|
|
223
|
+
});
|
|
224
|
+
return verificationResult;
|
|
225
|
+
}
|
|
226
|
+
// ─── handleVerdict ───
|
|
227
|
+
/**
|
|
228
|
+
* Handle a verification verdict (pass/partial/fail).
|
|
229
|
+
*/
|
|
230
|
+
export async function handleVerdict(deps, task, verificationResult) {
|
|
231
|
+
// P0: Progress-verdict contradiction check (§4.1)
|
|
232
|
+
// If dimension values worsened but verdict is "pass", override to "partial"
|
|
233
|
+
// "Worsened" is threshold-type-aware: min-type expects increase, max-type expects decrease.
|
|
234
|
+
if (verificationResult.verdict === "pass" && verificationResult.dimension_updates?.length > 0) {
|
|
235
|
+
// Load goal dimensions to determine threshold type per dimension
|
|
236
|
+
const goalRawForGuard = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
|
|
237
|
+
const goalDimsForGuard = (goalRawForGuard &&
|
|
238
|
+
typeof goalRawForGuard === "object" &&
|
|
239
|
+
Array.isArray(goalRawForGuard.dimensions)
|
|
240
|
+
? goalRawForGuard.dimensions
|
|
241
|
+
: []);
|
|
242
|
+
const anyWorsened = verificationResult.dimension_updates.some((u) => {
|
|
243
|
+
const prev = typeof u.previous_value === "number" ? u.previous_value : null;
|
|
244
|
+
const next = typeof u.new_value === "number" ? u.new_value : null;
|
|
245
|
+
if (prev === null || next === null)
|
|
246
|
+
return false;
|
|
247
|
+
// Determine threshold type for this dimension
|
|
248
|
+
const dimMeta = goalDimsForGuard.find((d) => d.name === u.dimension_name);
|
|
249
|
+
const thresholdType = dimMeta && typeof dimMeta.threshold === "object" && dimMeta.threshold !== null
|
|
250
|
+
? dimMeta.threshold.type
|
|
251
|
+
: undefined;
|
|
252
|
+
// For min-type: lower value is worse (decrease = worsened)
|
|
253
|
+
// For max-type: higher value is worse (increase = worsened)
|
|
254
|
+
// For range/present/match or unknown: skip (can't determine direction safely)
|
|
255
|
+
if (thresholdType === "min") {
|
|
256
|
+
return next < prev - 0.05;
|
|
257
|
+
}
|
|
258
|
+
else if (thresholdType === "max") {
|
|
259
|
+
return next > prev + 0.05;
|
|
260
|
+
}
|
|
261
|
+
return false;
|
|
262
|
+
});
|
|
263
|
+
if (anyWorsened) {
|
|
264
|
+
deps.logger?.warn("progress-verdict contradiction: dimension value moved away from target but verdict was pass. Overriding to partial.");
|
|
265
|
+
verificationResult = { ...verificationResult, verdict: "partial" };
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Save failure context for fail/partial verdicts (§4.7)
|
|
269
|
+
if (verificationResult.verdict === "fail" || verificationResult.verdict === "partial") {
|
|
270
|
+
const firstEvidence = verificationResult.evidence?.[0];
|
|
271
|
+
const reasoning = typeof firstEvidence?.description === "string" ? firstEvidence.description : "";
|
|
272
|
+
// Read criteria_met/criteria_total from the persisted verification result (written by verifyTask)
|
|
273
|
+
let criteria_met;
|
|
274
|
+
let criteria_total;
|
|
275
|
+
try {
|
|
276
|
+
const raw = await deps.stateManager.readRaw(`verification/${task.id}/verification-result.json`);
|
|
277
|
+
if (raw && typeof raw.criteria_met === "number")
|
|
278
|
+
criteria_met = raw.criteria_met;
|
|
279
|
+
if (raw && typeof raw.criteria_total === "number")
|
|
280
|
+
criteria_total = raw.criteria_total;
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Non-fatal: criteria fields are best-effort
|
|
284
|
+
}
|
|
285
|
+
const failureContext = {
|
|
286
|
+
prev_task_description: task.work_description,
|
|
287
|
+
verdict: verificationResult.verdict,
|
|
288
|
+
reasoning,
|
|
289
|
+
criteria_met,
|
|
290
|
+
criteria_total,
|
|
291
|
+
timestamp: new Date().toISOString(),
|
|
292
|
+
};
|
|
293
|
+
try {
|
|
294
|
+
await deps.stateManager.writeRaw(`tasks/${task.goal_id}/last-failure-context.json`, failureContext);
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// Non-fatal: failure context saving is best-effort
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
switch (verificationResult.verdict) {
|
|
301
|
+
case "pass": {
|
|
302
|
+
// Clear stale failure context (pass means previous failures are no longer relevant)
|
|
303
|
+
try {
|
|
304
|
+
await deps.stateManager.writeRaw(`tasks/${task.goal_id}/last-failure-context.json`, null);
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
// Non-fatal: clearing failure context is best-effort
|
|
308
|
+
}
|
|
309
|
+
// Record success
|
|
310
|
+
deps.trustManager.recordSuccess(task.task_category);
|
|
311
|
+
const now = new Date().toISOString();
|
|
312
|
+
// Reset consecutive failure count
|
|
313
|
+
const completedTask = {
|
|
314
|
+
...task,
|
|
315
|
+
consecutive_failure_count: 0,
|
|
316
|
+
status: "completed",
|
|
317
|
+
completed_at: now,
|
|
318
|
+
};
|
|
319
|
+
await deps.stateManager.writeRaw(`tasks/${task.goal_id}/${task.id}.json`, completedTask);
|
|
320
|
+
// Apply dimension_updates and update last_updated for the primary dimension.
|
|
321
|
+
const goalData = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
|
|
322
|
+
if (goalData && typeof goalData === "object") {
|
|
323
|
+
const goal = goalData;
|
|
324
|
+
const dimensions = goal.dimensions;
|
|
325
|
+
if (dimensions) {
|
|
326
|
+
for (const dim of dimensions) {
|
|
327
|
+
// Apply current_value updates from verification result
|
|
328
|
+
const update = verificationResult.dimension_updates.find((u) => u.dimension_name === dim.name);
|
|
329
|
+
if (update !== undefined && typeof update.new_value === "number") {
|
|
330
|
+
const prev = typeof dim.current_value === "number" ? dim.current_value : 0;
|
|
331
|
+
if (!checkDimensionDirection(task.intended_direction, prev, update.new_value, deps.logger, String(dim.name))) {
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
dim.current_value = clampDimensionUpdate(prev, update.new_value, deps.logger, String(dim.name));
|
|
335
|
+
}
|
|
336
|
+
// Update last_updated for the primary dimension
|
|
337
|
+
if (dim.name === task.primary_dimension) {
|
|
338
|
+
dim.last_updated = now;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
await deps.stateManager.writeRaw(`goals/${task.goal_id}/goal.json`, goal);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// Update task history
|
|
345
|
+
await appendTaskHistory(deps, task.goal_id, completedTask);
|
|
346
|
+
// Notify portfolio manager of task completion
|
|
347
|
+
if (deps.onTaskComplete && completedTask.strategy_id) {
|
|
348
|
+
deps.onTaskComplete(completedTask.strategy_id);
|
|
349
|
+
}
|
|
350
|
+
return { action: "completed", task: completedTask };
|
|
351
|
+
}
|
|
352
|
+
case "partial": {
|
|
353
|
+
// Check direction from evidence
|
|
354
|
+
const directionCorrect = isDirectionCorrect(verificationResult);
|
|
355
|
+
if (directionCorrect) {
|
|
356
|
+
// Apply partial dimension_updates to goal state
|
|
357
|
+
const goalDataPartial = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
|
|
358
|
+
if (goalDataPartial && typeof goalDataPartial === "object") {
|
|
359
|
+
const goal = goalDataPartial;
|
|
360
|
+
const dimensions = goal.dimensions;
|
|
361
|
+
if (dimensions) {
|
|
362
|
+
for (const dim of dimensions) {
|
|
363
|
+
const update = verificationResult.dimension_updates.find((u) => u.dimension_name === dim.name);
|
|
364
|
+
if (update !== undefined && typeof update.new_value === "number") {
|
|
365
|
+
const prev = typeof dim.current_value === "number" ? dim.current_value : 0;
|
|
366
|
+
if (!checkDimensionDirection(task.intended_direction, prev, update.new_value, deps.logger, String(dim.name))) {
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
dim.current_value = clampDimensionUpdate(prev, update.new_value, deps.logger, String(dim.name));
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
await deps.stateManager.writeRaw(`goals/${task.goal_id}/goal.json`, goal);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
await appendTaskHistory(deps, task.goal_id, task);
|
|
376
|
+
return { action: "keep", task };
|
|
377
|
+
}
|
|
378
|
+
// Direction wrong — delegate to handleFailure
|
|
379
|
+
return handleFailure(deps, task, verificationResult);
|
|
380
|
+
}
|
|
381
|
+
case "fail": {
|
|
382
|
+
return handleFailure(deps, task, verificationResult);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
// ─── handleFailure ───
|
|
387
|
+
/**
|
|
388
|
+
* Handle a task failure: increment failure count, record failure,
|
|
389
|
+
* decide keep/discard/escalate.
|
|
390
|
+
*/
|
|
391
|
+
export async function handleFailure(deps, task, verificationResult) {
|
|
392
|
+
// Increment consecutive_failure_count
|
|
393
|
+
const updatedTask = {
|
|
394
|
+
...task,
|
|
395
|
+
consecutive_failure_count: task.consecutive_failure_count + 1,
|
|
396
|
+
};
|
|
397
|
+
// Record failure with TrustManager
|
|
398
|
+
deps.trustManager.recordFailure(task.task_category);
|
|
399
|
+
// Persist updated task
|
|
400
|
+
await deps.stateManager.writeRaw(`tasks/${task.goal_id}/${task.id}.json`, updatedTask);
|
|
401
|
+
// Check escalation threshold
|
|
402
|
+
if (updatedTask.consecutive_failure_count >= 3) {
|
|
403
|
+
deps.stallDetector.checkConsecutiveFailures(task.goal_id, task.primary_dimension, updatedTask.consecutive_failure_count);
|
|
404
|
+
await appendTaskHistory(deps, task.goal_id, updatedTask);
|
|
405
|
+
return { action: "escalate", task: updatedTask };
|
|
406
|
+
}
|
|
407
|
+
// Direction check
|
|
408
|
+
const directionCorrect = isDirectionCorrect(verificationResult);
|
|
409
|
+
if (directionCorrect) {
|
|
410
|
+
await appendTaskHistory(deps, task.goal_id, updatedTask);
|
|
411
|
+
return { action: "keep", task: updatedTask };
|
|
412
|
+
}
|
|
413
|
+
// Direction wrong
|
|
414
|
+
if (updatedTask.reversibility === "reversible") {
|
|
415
|
+
// Attempt revert
|
|
416
|
+
const revertSuccess = await attemptRevert(deps, updatedTask);
|
|
417
|
+
if (revertSuccess) {
|
|
418
|
+
await appendTaskHistory(deps, task.goal_id, updatedTask);
|
|
419
|
+
return { action: "discard", task: updatedTask };
|
|
420
|
+
}
|
|
421
|
+
// Revert failed — set state_integrity to "uncertain" and escalate
|
|
422
|
+
await setDimensionIntegrity(deps, task.goal_id, task.primary_dimension, "uncertain");
|
|
423
|
+
await appendTaskHistory(deps, task.goal_id, updatedTask);
|
|
424
|
+
return { action: "escalate", task: updatedTask };
|
|
425
|
+
}
|
|
426
|
+
// irreversible or unknown → escalate
|
|
427
|
+
await appendTaskHistory(deps, task.goal_id, updatedTask);
|
|
428
|
+
return { action: "escalate", task: updatedTask };
|
|
429
|
+
}
|
|
430
|
+
// ─── Private helpers (module-local) ───
|
|
431
|
+
/**
|
|
432
|
+
* Wrap a promise with a timeout. Rejects with a TimeoutError if the promise
|
|
433
|
+
* does not resolve within `ms` milliseconds.
|
|
434
|
+
*/
|
|
435
|
+
function withTimeout(promise, ms) {
|
|
436
|
+
return new Promise((resolve, reject) => {
|
|
437
|
+
const timer = setTimeout(() => {
|
|
438
|
+
reject(new Error(`completion_judger timeout after ${ms}ms`));
|
|
439
|
+
}, ms);
|
|
440
|
+
promise.then((value) => { clearTimeout(timer); resolve(value); }, (err) => { clearTimeout(timer); reject(err); });
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Call an async function with retry + exponential backoff.
|
|
445
|
+
* On each failure (including timeout), wait `backoffMs * 2^attempt` before retrying.
|
|
446
|
+
* After `maxRetries` retries, the last error is re-thrown.
|
|
447
|
+
*/
|
|
448
|
+
async function withRetry(fn, maxRetries, backoffMs, logger, label) {
|
|
449
|
+
let lastErr;
|
|
450
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
451
|
+
try {
|
|
452
|
+
return await fn();
|
|
453
|
+
}
|
|
454
|
+
catch (err) {
|
|
455
|
+
lastErr = err;
|
|
456
|
+
if (attempt < maxRetries) {
|
|
457
|
+
const delay = backoffMs * Math.pow(2, attempt);
|
|
458
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
459
|
+
logger?.warn(`[completion_judger] ${label ?? "LLM call"} failed (attempt ${attempt + 1}/${maxRetries + 1}): ${msg} — retrying in ${delay}ms`);
|
|
460
|
+
await new Promise((res) => setTimeout(res, delay));
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
throw lastErr;
|
|
465
|
+
}
|
|
466
|
+
async function runMechanicalVerification(deps, task) {
|
|
467
|
+
// Mechanical prefixes that indicate a command can be run directly
|
|
468
|
+
const mechanicalPrefixes = ["npm", "npx", "pytest", "sh", "bash", "node", "make", "cargo", "go ", "gh "];
|
|
469
|
+
// Find the first success criterion with a mechanically-verifiable verification_method
|
|
470
|
+
const mechanicalCriterion = task.success_criteria.find((c) => {
|
|
471
|
+
const method = c.verification_method.toLowerCase().trim();
|
|
472
|
+
return mechanicalPrefixes.some((prefix) => method.startsWith(prefix));
|
|
473
|
+
});
|
|
474
|
+
if (!mechanicalCriterion) {
|
|
475
|
+
return {
|
|
476
|
+
applicable: false,
|
|
477
|
+
passed: false,
|
|
478
|
+
description: "No mechanical verification criteria applicable",
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
// If no adapter registry is available, fall back to assumed pass (backward compat)
|
|
482
|
+
if (!deps.adapterRegistry) {
|
|
483
|
+
return {
|
|
484
|
+
applicable: true,
|
|
485
|
+
passed: true,
|
|
486
|
+
description: "Mechanical verification criteria detected (no adapter: assumed pass)",
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
// Select the first available adapter from the registry for command execution
|
|
490
|
+
const availableAdapters = deps.adapterRegistry.listAdapters();
|
|
491
|
+
if (availableAdapters.length === 0) {
|
|
492
|
+
return {
|
|
493
|
+
applicable: true,
|
|
494
|
+
passed: true,
|
|
495
|
+
description: "Mechanical verification criteria detected (no adapters registered: assumed pass)",
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
const adapterType = availableAdapters[0];
|
|
499
|
+
let adapter;
|
|
500
|
+
try {
|
|
501
|
+
adapter = deps.adapterRegistry.getAdapter(adapterType);
|
|
502
|
+
}
|
|
503
|
+
catch {
|
|
504
|
+
return {
|
|
505
|
+
applicable: true,
|
|
506
|
+
passed: true,
|
|
507
|
+
description: "Mechanical verification criteria detected (adapter lookup failed: assumed pass)",
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
// Execute the verification command via the adapter
|
|
511
|
+
const verificationCommand = mechanicalCriterion.verification_method.trim();
|
|
512
|
+
const verificationTimeoutMs = 30_000; // 30 seconds default for L1 mechanical checks
|
|
513
|
+
const agentTask = {
|
|
514
|
+
prompt: verificationCommand,
|
|
515
|
+
timeout_ms: verificationTimeoutMs,
|
|
516
|
+
adapter_type: adapterType,
|
|
517
|
+
};
|
|
518
|
+
let result;
|
|
519
|
+
try {
|
|
520
|
+
result = await adapter.execute(agentTask);
|
|
521
|
+
}
|
|
522
|
+
catch (err) {
|
|
523
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
524
|
+
deps.logger?.error("runMechanicalVerification: adapter.execute() threw", { error: errMsg });
|
|
525
|
+
return {
|
|
526
|
+
applicable: true,
|
|
527
|
+
passed: false,
|
|
528
|
+
description: `Mechanical verification command threw: ${errMsg}`,
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
if (result.stopped_reason === "timeout") {
|
|
532
|
+
return {
|
|
533
|
+
applicable: true,
|
|
534
|
+
passed: false,
|
|
535
|
+
description: `Mechanical verification timed out after ${verificationTimeoutMs}ms (command: ${verificationCommand})`,
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
const passed = result.exit_code === 0 && result.success;
|
|
539
|
+
const description = passed
|
|
540
|
+
? `Mechanical verification passed (exit 0): ${verificationCommand}`
|
|
541
|
+
: `Mechanical verification failed (exit ${result.exit_code ?? "null"}): ${verificationCommand}${result.error ? ` — ${result.error}` : ""}`;
|
|
542
|
+
return { applicable: true, passed, description };
|
|
543
|
+
}
|
|
544
|
+
async function runLLMReview(deps, task, executionResult, knowledgeBlock = "", stateBlock = "") {
|
|
545
|
+
const timeoutMs = deps.completionJudgerConfig?.timeoutMs ?? 30_000;
|
|
546
|
+
const maxRetries = deps.completionJudgerConfig?.maxRetries ?? 2;
|
|
547
|
+
const retryBackoffMs = deps.completionJudgerConfig?.retryBackoffMs ?? 1_000;
|
|
548
|
+
// Create review session
|
|
549
|
+
const reviewSession = await deps.sessionManager.createSession("task_review", task.goal_id, task.id);
|
|
550
|
+
// Build review context (excludes executor self-report for bias prevention)
|
|
551
|
+
const reviewContext = deps.sessionManager.buildTaskReviewContext(task.goal_id, task.id);
|
|
552
|
+
const criteriaList = task.success_criteria
|
|
553
|
+
.map((c, i) => `${i + 1}. ${c.description} (blocking: ${c.is_blocking}, method: ${c.verification_method})`)
|
|
554
|
+
.join("\n");
|
|
555
|
+
const enrichmentBlocks = [knowledgeBlock, stateBlock].filter(Boolean).join("\n");
|
|
556
|
+
const prompt = `Evaluate task execution against success criteria.
|
|
557
|
+
|
|
558
|
+
Task: ${task.work_description}
|
|
559
|
+
Approach: ${task.approach}
|
|
560
|
+
|
|
561
|
+
Criteria:
|
|
562
|
+
${criteriaList}
|
|
563
|
+
${enrichmentBlocks ? `\n${enrichmentBlocks}\n` : ""}
|
|
564
|
+
Output (first 2000 chars):
|
|
565
|
+
${executionResult.output.slice(0, 2000)}
|
|
566
|
+
|
|
567
|
+
Status: ${executionResult.stopped_reason} | Success: ${executionResult.success}
|
|
568
|
+
Context: ${reviewContext.map((s) => s.content).join(" ")}
|
|
569
|
+
|
|
570
|
+
Return JSON:
|
|
571
|
+
{"verdict": "pass"|"partial"|"fail", "reasoning": "...", "criteria_met": #, "criteria_total": #}`;
|
|
572
|
+
// Gateway path: route through PromptGateway when available
|
|
573
|
+
if (deps.gateway) {
|
|
574
|
+
let parsed;
|
|
575
|
+
try {
|
|
576
|
+
parsed = await withRetry(() => withTimeout(deps.gateway.execute({
|
|
577
|
+
purpose: "verification",
|
|
578
|
+
goalId: task.goal_id,
|
|
579
|
+
additionalContext: { review_prompt: prompt },
|
|
580
|
+
responseSchema: CompletionJudgerResponseSchema,
|
|
581
|
+
maxTokens: 1024,
|
|
582
|
+
}), timeoutMs), maxRetries, retryBackoffMs, deps.logger, `completion_judger for task ${task.id}`);
|
|
583
|
+
}
|
|
584
|
+
catch (err) {
|
|
585
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
586
|
+
deps.logger?.error(`[completion_judger] All retries exhausted for task ${task.id}: ${msg}`);
|
|
587
|
+
await deps.sessionManager.endSession(reviewSession.id, `completion_judger failed: ${msg}`);
|
|
588
|
+
return {
|
|
589
|
+
passed: false,
|
|
590
|
+
partial: false,
|
|
591
|
+
description: `completion_judger failed after ${maxRetries + 1} attempt(s): ${msg}`,
|
|
592
|
+
confidence: 0.0,
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
const verdictStr = parsed.verdict;
|
|
596
|
+
const result = {
|
|
597
|
+
passed: verdictStr === "pass",
|
|
598
|
+
partial: verdictStr === "partial",
|
|
599
|
+
description: parsed.reasoning || "LLM review completed",
|
|
600
|
+
confidence: verdictStr === "pass" ? 0.8 : verdictStr === "partial" ? 0.6 : 0.8,
|
|
601
|
+
criteria_met: parsed.criteria_met,
|
|
602
|
+
criteria_total: parsed.criteria_total,
|
|
603
|
+
};
|
|
604
|
+
await deps.sessionManager.endSession(reviewSession.id, `LLM review: ${verdictStr}`);
|
|
605
|
+
return result;
|
|
606
|
+
}
|
|
607
|
+
// Direct LLM path (fallback when no gateway)
|
|
608
|
+
let response;
|
|
609
|
+
try {
|
|
610
|
+
response = await withRetry(() => withTimeout((deps.reviewerLlmClient ?? deps.llmClient).sendMessage([{ role: "user", content: prompt }], {
|
|
611
|
+
system: "Review task results objectively against criteria. Ignore executor self-assessment.",
|
|
612
|
+
max_tokens: 1024,
|
|
613
|
+
}), timeoutMs), maxRetries, retryBackoffMs, deps.logger, `completion_judger for task ${task.id}`);
|
|
614
|
+
}
|
|
615
|
+
catch (err) {
|
|
616
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
617
|
+
deps.logger?.error(`[completion_judger] All retries exhausted for task ${task.id}: ${msg}`);
|
|
618
|
+
await deps.sessionManager.endSession(reviewSession.id, `completion_judger failed: ${msg}`);
|
|
619
|
+
return {
|
|
620
|
+
passed: false,
|
|
621
|
+
partial: false,
|
|
622
|
+
description: `completion_judger failed after ${maxRetries + 1} attempt(s): ${msg}`,
|
|
623
|
+
confidence: 0.0,
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
try {
|
|
627
|
+
const rawJson = response.content.replace(/```json\n?/g, "").replace(/```/g, "").trim();
|
|
628
|
+
const parseResult = CompletionJudgerResponseSchema.safeParse(JSON.parse(rawJson));
|
|
629
|
+
if (!parseResult.success) {
|
|
630
|
+
deps.logger?.warn(`[completion_judger] Zod parse failed for task ${task.id}: ${parseResult.error.message}`);
|
|
631
|
+
await deps.sessionManager.endSession(reviewSession.id, "Failed to parse LLM review result");
|
|
632
|
+
return {
|
|
633
|
+
passed: false,
|
|
634
|
+
partial: false,
|
|
635
|
+
description: "Failed to parse LLM review result",
|
|
636
|
+
confidence: 0.3,
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
const parsed = parseResult.data;
|
|
640
|
+
const verdictStr = parsed.verdict;
|
|
641
|
+
const result = {
|
|
642
|
+
passed: verdictStr === "pass",
|
|
643
|
+
partial: verdictStr === "partial",
|
|
644
|
+
description: parsed.reasoning || "LLM review completed",
|
|
645
|
+
confidence: verdictStr === "pass" ? 0.8 : verdictStr === "partial" ? 0.6 : 0.8,
|
|
646
|
+
criteria_met: parsed.criteria_met,
|
|
647
|
+
criteria_total: parsed.criteria_total,
|
|
648
|
+
};
|
|
649
|
+
await deps.sessionManager.endSession(reviewSession.id, `LLM review: ${verdictStr}`);
|
|
650
|
+
return result;
|
|
651
|
+
}
|
|
652
|
+
catch {
|
|
653
|
+
deps.logger?.warn(`[completion_judger] JSON.parse failed for task ${task.id}`);
|
|
654
|
+
await deps.sessionManager.endSession(reviewSession.id, "Failed to parse LLM review result");
|
|
655
|
+
return {
|
|
656
|
+
passed: false,
|
|
657
|
+
partial: false,
|
|
658
|
+
description: "Failed to parse LLM review result",
|
|
659
|
+
confidence: 0.3,
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
function parseExecutorReport(executionResult) {
|
|
664
|
+
// Parse executor's output for self-assessment (reference only)
|
|
665
|
+
return {
|
|
666
|
+
completed: executionResult.success,
|
|
667
|
+
summary: executionResult.output.slice(0, 500),
|
|
668
|
+
partial_results: [],
|
|
669
|
+
blockers: executionResult.error ? [executionResult.error] : [],
|
|
670
|
+
};
|
|
671
|
+
}
|
|
672
|
+
function isDirectionCorrect(verificationResult) {
|
|
673
|
+
// Direction is correct when the verdict is "partial" (some criteria met)
|
|
674
|
+
// Direction is wrong when the verdict is "fail" (no criteria met / wrong approach)
|
|
675
|
+
return verificationResult.verdict === "partial";
|
|
676
|
+
}
|
|
677
|
+
async function attemptRevert(deps, task) {
|
|
678
|
+
// Attempt to revert a task's changes
|
|
679
|
+
// In MVP, we create a revert prompt and check if it succeeds
|
|
680
|
+
// This is called only for reversible tasks
|
|
681
|
+
try {
|
|
682
|
+
const revertSession = await deps.sessionManager.createSession("task_execution", task.goal_id, task.id);
|
|
683
|
+
const revertPrompt = `Revert task "${task.work_description}". Undo all changes in: ${task.scope_boundary.in_scope.join(", ")}.
|
|
684
|
+
|
|
685
|
+
Return JSON: {"success": true|false, "reason": "..."}`;
|
|
686
|
+
const response = await deps.llmClient.sendMessage([{ role: "user", content: revertPrompt }], { system: "Revert failed task changes. Respond with JSON only.", max_tokens: 512 });
|
|
687
|
+
await deps.sessionManager.endSession(revertSession.id, response.content);
|
|
688
|
+
// Parse structured JSON response
|
|
689
|
+
try {
|
|
690
|
+
const parsed = deps.llmClient.parseJSON(response.content, z.object({ success: z.boolean(), reason: z.string() }));
|
|
691
|
+
return parsed.success;
|
|
692
|
+
}
|
|
693
|
+
catch {
|
|
694
|
+
// If parse fails, assume revert failed
|
|
695
|
+
return false;
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
catch {
|
|
699
|
+
return false;
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
async function setDimensionIntegrity(deps, goalId, dimensionName, integrity) {
|
|
703
|
+
// Attempt to update the dimension's state_integrity flag
|
|
704
|
+
// Read the goal, find the dimension, update integrity
|
|
705
|
+
const goalData = await deps.stateManager.readRaw(`goals/${goalId}/goal.json`);
|
|
706
|
+
if (goalData && typeof goalData === "object") {
|
|
707
|
+
const goal = goalData;
|
|
708
|
+
const dimensions = goal.dimensions;
|
|
709
|
+
if (dimensions) {
|
|
710
|
+
for (const dim of dimensions) {
|
|
711
|
+
if (dim.name === dimensionName) {
|
|
712
|
+
dim.state_integrity = integrity;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
await deps.stateManager.writeRaw(`goals/${goalId}/goal.json`, goal);
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
async function appendTaskHistory(deps, goalId, task) {
|
|
720
|
+
const historyPath = `tasks/${goalId}/task-history.json`;
|
|
721
|
+
const existing = await deps.stateManager.readRaw(historyPath);
|
|
722
|
+
const history = Array.isArray(existing) ? existing : [];
|
|
723
|
+
const actual_elapsed_ms = task.started_at && task.completed_at
|
|
724
|
+
? new Date(task.completed_at).getTime() - new Date(task.started_at).getTime()
|
|
725
|
+
: null;
|
|
726
|
+
const estimated_duration_ms = task.estimated_duration
|
|
727
|
+
? deps.durationToMs(task.estimated_duration)
|
|
728
|
+
: null;
|
|
729
|
+
history.push({
|
|
730
|
+
task_id: task.id,
|
|
731
|
+
status: task.status,
|
|
732
|
+
primary_dimension: task.primary_dimension,
|
|
733
|
+
consecutive_failure_count: task.consecutive_failure_count,
|
|
734
|
+
completed_at: task.completed_at ?? new Date().toISOString(),
|
|
735
|
+
actual_elapsed_ms,
|
|
736
|
+
estimated_duration_ms,
|
|
737
|
+
});
|
|
738
|
+
await deps.stateManager.writeRaw(historyPath, history);
|
|
739
|
+
}
|
|
740
|
+
// ─── P0 Guard 1: dimension_updates change magnitude limit (§3.2) ───
|
|
741
|
+
/**
|
|
742
|
+
* Clamp a proposed dimension update to within ±30% absolute or ±30% relative
|
|
743
|
+
* of the current value (whichever is larger). Logs a warning when clamping occurs.
|
|
744
|
+
*
|
|
745
|
+
* Exported for unit testing.
|
|
746
|
+
*/
|
|
747
|
+
export function clampDimensionUpdate(current, proposed, logger, dimName) {
|
|
748
|
+
const absLimit = 0.3;
|
|
749
|
+
const relLimit = Math.abs(current) * 0.3;
|
|
750
|
+
const maxDelta = Math.max(absLimit, relLimit);
|
|
751
|
+
const clamped = Math.max(current - maxDelta, Math.min(current + maxDelta, proposed));
|
|
752
|
+
if (clamped !== proposed) {
|
|
753
|
+
logger?.warn(`dimension_update clamped: dim=${dimName}, proposed=${proposed}, applied=${clamped}, current=${current}`);
|
|
754
|
+
}
|
|
755
|
+
return clamped;
|
|
756
|
+
}
|
|
757
|
+
// ─── §4.5 Guard: dimension_updates direction check ───
|
|
758
|
+
/**
|
|
759
|
+
* Check whether a proposed dimension update moves in the intended direction.
|
|
760
|
+
* Returns true if the update should be applied, false if it should be skipped.
|
|
761
|
+
*
|
|
762
|
+
* Exported for unit testing.
|
|
763
|
+
*/
|
|
764
|
+
export function checkDimensionDirection(intendedDirection, currentValue, proposedValue, logger, dimName) {
|
|
765
|
+
if (!intendedDirection || intendedDirection === "neutral")
|
|
766
|
+
return true;
|
|
767
|
+
const actualDirection = proposedValue > currentValue
|
|
768
|
+
? "increase"
|
|
769
|
+
: proposedValue < currentValue
|
|
770
|
+
? "decrease"
|
|
771
|
+
: "neutral";
|
|
772
|
+
if (intendedDirection === "increase" && actualDirection === "decrease") {
|
|
773
|
+
logger?.warn(`dimension_update direction mismatch: task intended ${intendedDirection}, but update suggests ${actualDirection} for dim ${dimName ?? "unknown"}`);
|
|
774
|
+
return false;
|
|
775
|
+
}
|
|
776
|
+
if (intendedDirection === "decrease" && actualDirection === "increase") {
|
|
777
|
+
logger?.warn(`dimension_update direction mismatch: task intended ${intendedDirection}, but update suggests ${actualDirection} for dim ${dimName ?? "unknown"}`);
|
|
778
|
+
return false;
|
|
779
|
+
}
|
|
780
|
+
return true;
|
|
781
|
+
}
|
|
782
|
+
//# sourceMappingURL=task-verifier.js.map
|