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,718 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { extractJSON } from "../llm/llm-client.js";
|
|
3
|
+
import { TransferCandidateSchema, TransferResultSchema, TransferEffectivenessSchema, } from "../types/cross-portfolio.js";
|
|
4
|
+
import { CrossGoalPatternSchema } from "../types/learning.js";
|
|
5
|
+
import { TransferTrustManager } from "./transfer-trust.js";
|
|
6
|
+
import { AdaptationResponseSchema, MetaPatternsResponseSchema, buildAdaptationPrompt, buildMetaPatternPrompt, } from "./knowledge-transfer-prompts.js";
|
|
7
|
+
// ─── KnowledgeTransfer ───
|
|
8
|
+
/**
|
|
9
|
+
* KnowledgeTransfer implements cross-goal knowledge and strategy transfer.
|
|
10
|
+
*
|
|
11
|
+
* Phase 1 (MVP): Transfer is always suggestion-only.
|
|
12
|
+
* applyTransfer() exists but should only be called after explicit user approval.
|
|
13
|
+
*
|
|
14
|
+
* Stored in-memory (Map/array). No file persistence for MVP.
|
|
15
|
+
*/
|
|
16
|
+
export class KnowledgeTransfer {
|
|
17
|
+
deps;
|
|
18
|
+
transferTrust;
|
|
19
|
+
/** In-memory candidate store: candidate_id → TransferCandidate */
|
|
20
|
+
candidates = new Map();
|
|
21
|
+
/** In-memory result store: transfer_id → TransferResult */
|
|
22
|
+
results = new Map();
|
|
23
|
+
/** Context stored at apply time: transfer_id → TransferContext */
|
|
24
|
+
applyContexts = new Map();
|
|
25
|
+
/** Effectiveness records: transfer_id → TransferEffectivenessRecord */
|
|
26
|
+
effectivenessRecords = new Map();
|
|
27
|
+
/** Per-pattern consecutive non-positive outcome tracker */
|
|
28
|
+
patternTrackers = new Map();
|
|
29
|
+
/** Cross-goal pattern store: pattern id → CrossGoalPattern */
|
|
30
|
+
crossGoalPatterns = new Map();
|
|
31
|
+
/** Timestamp of last incremental meta-pattern aggregation (ISO string) */
|
|
32
|
+
lastAggregatedAt = null;
|
|
33
|
+
constructor(deps) {
|
|
34
|
+
this.deps = deps;
|
|
35
|
+
this.transferTrust =
|
|
36
|
+
deps.transferTrust ??
|
|
37
|
+
new TransferTrustManager({ stateManager: deps.stateManager });
|
|
38
|
+
}
|
|
39
|
+
// ─── detectTransferOpportunities ───
|
|
40
|
+
/**
|
|
41
|
+
* Detect transfer opportunities for the given target goal.
|
|
42
|
+
*
|
|
43
|
+
* Steps:
|
|
44
|
+
* 1. Cross-goal knowledge search via KnowledgeManager
|
|
45
|
+
* 2. Load all learned patterns across goals
|
|
46
|
+
* 3. Filter patterns whose source_goal_ids doesn't include the target
|
|
47
|
+
* 4. Score each pattern: similarity × source_confidence × effectiveness
|
|
48
|
+
* 5. Filter: similarity >= 0.7, confidence >= 0.6
|
|
49
|
+
* 6. Build TransferCandidate for each qualifying pattern
|
|
50
|
+
* 7. Store and return ranked candidates
|
|
51
|
+
*/
|
|
52
|
+
async detectTransferOpportunities(goalId) {
|
|
53
|
+
const allGoalIds = await this.deps.stateManager.listGoalIds();
|
|
54
|
+
const sourceGoalIds = allGoalIds.filter((id) => id !== goalId);
|
|
55
|
+
// Collect all learned patterns from other goals
|
|
56
|
+
const allPatterns = [];
|
|
57
|
+
for (const sourceGoalId of sourceGoalIds) {
|
|
58
|
+
const patterns = await this.deps.learningPipeline.getPatterns(sourceGoalId);
|
|
59
|
+
for (const pattern of patterns) {
|
|
60
|
+
// Only include patterns that haven't already been sourced from the target
|
|
61
|
+
if (!pattern.source_goal_ids.includes(goalId)) {
|
|
62
|
+
allPatterns.push({ pattern, sourceGoalId });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (allPatterns.length === 0) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
// Check if VectorIndex has entries to use for semantic similarity
|
|
70
|
+
const vectorIndexHasEntries = this.deps.vectorIndex !== null && this.deps.vectorIndex.size > 0;
|
|
71
|
+
const scored = [];
|
|
72
|
+
for (const { pattern, sourceGoalId } of allPatterns) {
|
|
73
|
+
let similarityScore = 0.7; // default (no vector data available)
|
|
74
|
+
if (vectorIndexHasEntries && this.deps.vectorIndex !== null && pattern.embedding_id !== null) {
|
|
75
|
+
try {
|
|
76
|
+
const vi = this.deps.vectorIndex;
|
|
77
|
+
// Search for the pattern description in the vector index
|
|
78
|
+
const searchResults = await vi.search(pattern.description, 10, 0.0);
|
|
79
|
+
// Find the entry for this pattern's embedding_id or the best match
|
|
80
|
+
const ownEntry = searchResults.find((r) => r.id === pattern.embedding_id);
|
|
81
|
+
if (ownEntry) {
|
|
82
|
+
// Use average similarity of top matches as proxy for goal context similarity
|
|
83
|
+
const topMatches = searchResults.slice(0, 5);
|
|
84
|
+
if (topMatches.length > 0) {
|
|
85
|
+
const avgSimilarity = topMatches.reduce((sum, r) => sum + r.similarity, 0) /
|
|
86
|
+
topMatches.length;
|
|
87
|
+
similarityScore = avgSimilarity;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Fall back to direct search for goal-level similarity
|
|
92
|
+
const goalSearchResults = await vi.search(pattern.description, 5, 0.0);
|
|
93
|
+
if (goalSearchResults.length > 0) {
|
|
94
|
+
similarityScore = goalSearchResults[0]?.similarity ?? similarityScore;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// non-fatal: keep default similarity
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Filter by minimum thresholds
|
|
103
|
+
if (similarityScore < 0.7 || pattern.confidence < 0.6) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
// Check if pattern has been invalidated
|
|
107
|
+
const tracker = this.patternTrackers.get(pattern.pattern_id);
|
|
108
|
+
if (tracker?.invalidated) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
// Build domain pair key from pattern's applicable_domains (sorted for consistency)
|
|
112
|
+
const domainPair = pattern.applicable_domains.length > 0
|
|
113
|
+
? [...pattern.applicable_domains].sort().join("::")
|
|
114
|
+
: `${sourceGoalId}::${goalId}`;
|
|
115
|
+
// Get trust score for this domain pair
|
|
116
|
+
let trustScore = 0.5;
|
|
117
|
+
try {
|
|
118
|
+
const trustRecord = await this.transferTrust.getTrustScore(domainPair);
|
|
119
|
+
trustScore = trustRecord.trust_score;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// non-fatal: use default
|
|
123
|
+
}
|
|
124
|
+
// Check if this domain pair should be skipped due to invalidation
|
|
125
|
+
try {
|
|
126
|
+
const shouldSkip = await this.transferTrust.shouldInvalidate(domainPair);
|
|
127
|
+
if (shouldSkip) {
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// non-fatal: proceed
|
|
133
|
+
}
|
|
134
|
+
// domain_tag_match: true if pattern has at least one applicable domain
|
|
135
|
+
const domainTagMatch = pattern.applicable_domains.length > 0;
|
|
136
|
+
// Scoring: similarity * confidence * trust_score + domain_tag bonus
|
|
137
|
+
const baseScore = similarityScore * pattern.confidence * trustScore;
|
|
138
|
+
const rankScore = domainTagMatch
|
|
139
|
+
? Math.min(1.0, baseScore + 0.1)
|
|
140
|
+
: baseScore;
|
|
141
|
+
scored.push({ pattern, sourceGoalId, similarityScore, rankScore, domainTagMatch });
|
|
142
|
+
}
|
|
143
|
+
// Sort by rank score descending
|
|
144
|
+
scored.sort((a, b) => b.rankScore - a.rankScore);
|
|
145
|
+
const newCandidates = [];
|
|
146
|
+
const seenPatternIds = new Set();
|
|
147
|
+
for (const { pattern, sourceGoalId, similarityScore, rankScore, domainTagMatch } of scored) {
|
|
148
|
+
// Deduplicate: same pattern from multiple source goals → keep highest-ranked
|
|
149
|
+
if (seenPatternIds.has(pattern.pattern_id)) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
seenPatternIds.add(pattern.pattern_id);
|
|
153
|
+
const candidate = TransferCandidateSchema.parse({
|
|
154
|
+
candidate_id: `tc_${randomUUID()}`,
|
|
155
|
+
source_goal_id: sourceGoalId,
|
|
156
|
+
target_goal_id: goalId,
|
|
157
|
+
type: "pattern",
|
|
158
|
+
source_item_id: pattern.pattern_id,
|
|
159
|
+
similarity_score: similarityScore,
|
|
160
|
+
estimated_benefit: `Pattern "${pattern.description.slice(0, 80)}" (confidence: ${pattern.confidence.toFixed(2)}, rank: ${rankScore.toFixed(3)})`,
|
|
161
|
+
domain_tag_match: domainTagMatch,
|
|
162
|
+
});
|
|
163
|
+
this.candidates.set(candidate.candidate_id, candidate);
|
|
164
|
+
newCandidates.push(candidate);
|
|
165
|
+
}
|
|
166
|
+
return newCandidates;
|
|
167
|
+
}
|
|
168
|
+
// ─── applyTransfer ───
|
|
169
|
+
/**
|
|
170
|
+
* Apply a transfer candidate to the target goal.
|
|
171
|
+
*
|
|
172
|
+
* Phase 1: Should only be called after explicit user approval.
|
|
173
|
+
*
|
|
174
|
+
* Steps:
|
|
175
|
+
* 1. Look up candidate
|
|
176
|
+
* 2. Ethics gate check
|
|
177
|
+
* 3. LLM adaptation of source pattern to target context
|
|
178
|
+
* 4. Record and return TransferResult
|
|
179
|
+
*/
|
|
180
|
+
async applyTransfer(candidateId, targetGoalId) {
|
|
181
|
+
const candidate = this.candidates.get(candidateId);
|
|
182
|
+
if (!candidate) {
|
|
183
|
+
const failResult = TransferResultSchema.parse({
|
|
184
|
+
transfer_id: `tr_${randomUUID()}`,
|
|
185
|
+
candidate_id: candidateId,
|
|
186
|
+
applied_at: new Date().toISOString(),
|
|
187
|
+
adaptation_description: "Candidate not found",
|
|
188
|
+
success: false,
|
|
189
|
+
});
|
|
190
|
+
this.results.set(failResult.transfer_id, failResult);
|
|
191
|
+
return failResult;
|
|
192
|
+
}
|
|
193
|
+
// Ethics gate check
|
|
194
|
+
const ethicsDescription = `Transfer pattern "${candidate.source_item_id}" from goal "${candidate.source_goal_id}" to goal "${targetGoalId}". Estimated benefit: ${candidate.estimated_benefit}`;
|
|
195
|
+
let ethicsVerdict;
|
|
196
|
+
try {
|
|
197
|
+
ethicsVerdict = await this.deps.ethicsGate.check("task", candidateId, ethicsDescription);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
const failResult = TransferResultSchema.parse({
|
|
201
|
+
transfer_id: `tr_${randomUUID()}`,
|
|
202
|
+
candidate_id: candidateId,
|
|
203
|
+
applied_at: new Date().toISOString(),
|
|
204
|
+
adaptation_description: "Ethics gate check failed",
|
|
205
|
+
success: false,
|
|
206
|
+
});
|
|
207
|
+
this.results.set(failResult.transfer_id, failResult);
|
|
208
|
+
return failResult;
|
|
209
|
+
}
|
|
210
|
+
if (ethicsVerdict.verdict === "reject") {
|
|
211
|
+
const failResult = TransferResultSchema.parse({
|
|
212
|
+
transfer_id: `tr_${randomUUID()}`,
|
|
213
|
+
candidate_id: candidateId,
|
|
214
|
+
applied_at: new Date().toISOString(),
|
|
215
|
+
adaptation_description: `Ethics gate rejected: ${ethicsVerdict.reasoning}`,
|
|
216
|
+
success: false,
|
|
217
|
+
});
|
|
218
|
+
this.results.set(failResult.transfer_id, failResult);
|
|
219
|
+
return failResult;
|
|
220
|
+
}
|
|
221
|
+
// Find the source pattern
|
|
222
|
+
const sourceGoalId = candidate.source_goal_id;
|
|
223
|
+
const allSourcePatterns = await this.deps.learningPipeline.getPatterns(sourceGoalId);
|
|
224
|
+
const sourcePattern = allSourcePatterns.find((p) => p.pattern_id === candidate.source_item_id) ??
|
|
225
|
+
null;
|
|
226
|
+
// Capture gap at apply time for later effectiveness evaluation
|
|
227
|
+
const gapAtApply = await this._estimateCurrentGap(targetGoalId);
|
|
228
|
+
// LLM adaptation
|
|
229
|
+
let adaptationDescription = candidate.estimated_benefit;
|
|
230
|
+
let adaptationSuccess = true;
|
|
231
|
+
if (sourcePattern !== null) {
|
|
232
|
+
try {
|
|
233
|
+
const adaptationPrompt = buildAdaptationPrompt(sourcePattern, sourceGoalId, targetGoalId);
|
|
234
|
+
let adaptationParsed;
|
|
235
|
+
if (this.deps.gateway) {
|
|
236
|
+
adaptationParsed = await this.deps.gateway.execute({
|
|
237
|
+
purpose: "knowledge_transfer_adapt",
|
|
238
|
+
goalId: targetGoalId,
|
|
239
|
+
additionalContext: { adaptation_prompt: adaptationPrompt },
|
|
240
|
+
responseSchema: AdaptationResponseSchema,
|
|
241
|
+
maxTokens: 1024,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
const adaptationResponse = await this.deps.llmClient.sendMessage([{ role: "user", content: adaptationPrompt }], { max_tokens: 1024 });
|
|
246
|
+
const adaptationJson = extractJSON(adaptationResponse.content);
|
|
247
|
+
const adaptationRaw = JSON.parse(adaptationJson);
|
|
248
|
+
adaptationParsed = AdaptationResponseSchema.parse(adaptationRaw);
|
|
249
|
+
}
|
|
250
|
+
adaptationDescription = adaptationParsed.adaptation_description;
|
|
251
|
+
adaptationSuccess = adaptationParsed.success;
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
// non-fatal: fall back to estimated_benefit
|
|
255
|
+
adaptationSuccess = true; // assume it can be applied
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
const transferId = `tr_${randomUUID()}`;
|
|
259
|
+
const result = TransferResultSchema.parse({
|
|
260
|
+
transfer_id: transferId,
|
|
261
|
+
candidate_id: candidateId,
|
|
262
|
+
applied_at: new Date().toISOString(),
|
|
263
|
+
adaptation_description: adaptationDescription,
|
|
264
|
+
success: adaptationSuccess,
|
|
265
|
+
});
|
|
266
|
+
this.results.set(result.transfer_id, result);
|
|
267
|
+
// Store context for effectiveness evaluation
|
|
268
|
+
this.applyContexts.set(result.transfer_id, {
|
|
269
|
+
candidate,
|
|
270
|
+
gap_at_apply: gapAtApply,
|
|
271
|
+
source_pattern: sourcePattern,
|
|
272
|
+
});
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
// ─── evaluateTransferEffect ───
|
|
276
|
+
/**
|
|
277
|
+
* Evaluate the effectiveness of a previously applied transfer.
|
|
278
|
+
*
|
|
279
|
+
* Compares gap before and after application.
|
|
280
|
+
* If 3 consecutive neutral/negative for the same source pattern,
|
|
281
|
+
* marks that pattern as ineffective for transfer.
|
|
282
|
+
*/
|
|
283
|
+
async evaluateTransferEffect(transferId) {
|
|
284
|
+
const result = this.results.get(transferId);
|
|
285
|
+
const context = this.applyContexts.get(transferId);
|
|
286
|
+
if (!result || !context) {
|
|
287
|
+
// Return a neutral record when the transfer is unknown
|
|
288
|
+
return TransferEffectivenessSchema.parse({
|
|
289
|
+
transfer_id: transferId,
|
|
290
|
+
gap_delta_before: 0,
|
|
291
|
+
gap_delta_after: 0,
|
|
292
|
+
effectiveness: "neutral",
|
|
293
|
+
evaluated_at: new Date().toISOString(),
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
const gapNow = await this._estimateCurrentGap(context.candidate.target_goal_id);
|
|
297
|
+
const gapDeltaBefore = context.gap_at_apply;
|
|
298
|
+
const gapDeltaAfter = gapNow;
|
|
299
|
+
// Determine effectiveness based on gap delta
|
|
300
|
+
// Positive = gap reduced (improvement), negative = gap increased (worse)
|
|
301
|
+
const delta = gapDeltaBefore - gapDeltaAfter;
|
|
302
|
+
let effectiveness;
|
|
303
|
+
if (delta > 0.05) {
|
|
304
|
+
effectiveness = "positive";
|
|
305
|
+
}
|
|
306
|
+
else if (delta < -0.05) {
|
|
307
|
+
effectiveness = "negative";
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
effectiveness = "neutral";
|
|
311
|
+
}
|
|
312
|
+
const record = TransferEffectivenessSchema.parse({
|
|
313
|
+
transfer_id: transferId,
|
|
314
|
+
gap_delta_before: gapDeltaBefore,
|
|
315
|
+
gap_delta_after: gapDeltaAfter,
|
|
316
|
+
effectiveness,
|
|
317
|
+
evaluated_at: new Date().toISOString(),
|
|
318
|
+
});
|
|
319
|
+
this.effectivenessRecords.set(transferId, record);
|
|
320
|
+
// Track consecutive non-positive outcomes for the source pattern
|
|
321
|
+
if (context.source_pattern !== null) {
|
|
322
|
+
const patternId = context.source_pattern.pattern_id;
|
|
323
|
+
const tracker = this.patternTrackers.get(patternId) ?? {
|
|
324
|
+
consecutive_non_positive: 0,
|
|
325
|
+
invalidated: false,
|
|
326
|
+
};
|
|
327
|
+
if (effectiveness === "positive") {
|
|
328
|
+
tracker.consecutive_non_positive = 0;
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
tracker.consecutive_non_positive += 1;
|
|
332
|
+
}
|
|
333
|
+
// Auto-invalidate after 3 consecutive neutral/negative
|
|
334
|
+
if (tracker.consecutive_non_positive >= 3) {
|
|
335
|
+
tracker.invalidated = true;
|
|
336
|
+
}
|
|
337
|
+
this.patternTrackers.set(patternId, tracker);
|
|
338
|
+
}
|
|
339
|
+
// Update transfer trust score for the domain pair
|
|
340
|
+
const domainPair = context.source_pattern !== null &&
|
|
341
|
+
context.source_pattern.applicable_domains.length > 0
|
|
342
|
+
? [...context.source_pattern.applicable_domains].sort().join("::")
|
|
343
|
+
: `${context.candidate.source_goal_id}::${context.candidate.target_goal_id}`;
|
|
344
|
+
try {
|
|
345
|
+
await this.transferTrust.updateTrust(domainPair, effectiveness);
|
|
346
|
+
// If this domain pair should now be invalidated, mark the candidate
|
|
347
|
+
const shouldInvalidate = await this.transferTrust.shouldInvalidate(domainPair);
|
|
348
|
+
if (shouldInvalidate) {
|
|
349
|
+
const candidate = this.candidates.get(context.candidate.candidate_id);
|
|
350
|
+
if (candidate) {
|
|
351
|
+
const updated = TransferCandidateSchema.parse({
|
|
352
|
+
...candidate,
|
|
353
|
+
state: "invalidated",
|
|
354
|
+
invalidated_at: new Date().toISOString(),
|
|
355
|
+
});
|
|
356
|
+
this.candidates.set(candidate.candidate_id, updated);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
catch {
|
|
361
|
+
// non-fatal: trust update failure should not block effectiveness record
|
|
362
|
+
}
|
|
363
|
+
return record;
|
|
364
|
+
}
|
|
365
|
+
// ─── buildCrossGoalKnowledgeBase ───
|
|
366
|
+
/**
|
|
367
|
+
* Aggregate all LearnedPatterns across all goals and extract
|
|
368
|
+
* cross-domain meta-patterns via LLM.
|
|
369
|
+
*
|
|
370
|
+
* Stores meta-patterns internally.
|
|
371
|
+
*/
|
|
372
|
+
async buildCrossGoalKnowledgeBase() {
|
|
373
|
+
const allGoalIds = await this.deps.stateManager.listGoalIds();
|
|
374
|
+
// Collect all high-confidence patterns
|
|
375
|
+
const highConfidencePatterns = [];
|
|
376
|
+
for (const goalId of allGoalIds) {
|
|
377
|
+
const patterns = await this.deps.learningPipeline.getPatterns(goalId);
|
|
378
|
+
for (const pattern of patterns) {
|
|
379
|
+
if (pattern.confidence >= 0.6) {
|
|
380
|
+
highConfidencePatterns.push(pattern);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
if (highConfidencePatterns.length === 0) {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
// Use LLM to extract cross-domain meta-patterns
|
|
388
|
+
try {
|
|
389
|
+
const metaPrompt = buildMetaPatternPrompt(highConfidencePatterns);
|
|
390
|
+
let metaParsed;
|
|
391
|
+
if (this.deps.gateway) {
|
|
392
|
+
metaParsed = await this.deps.gateway.execute({
|
|
393
|
+
purpose: "knowledge_transfer_meta_patterns",
|
|
394
|
+
additionalContext: { meta_pattern_prompt: metaPrompt },
|
|
395
|
+
responseSchema: MetaPatternsResponseSchema,
|
|
396
|
+
maxTokens: 2048,
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
const metaResponse = await this.deps.llmClient.sendMessage([{ role: "user", content: metaPrompt }], { max_tokens: 2048 });
|
|
401
|
+
const metaJson = extractJSON(metaResponse.content);
|
|
402
|
+
const metaRaw = JSON.parse(metaJson);
|
|
403
|
+
metaParsed = MetaPatternsResponseSchema.parse(metaRaw);
|
|
404
|
+
}
|
|
405
|
+
// Store meta-patterns in VectorIndex for future retrieval
|
|
406
|
+
if (this.deps.vectorIndex === null)
|
|
407
|
+
return;
|
|
408
|
+
for (const meta of metaParsed.meta_patterns) {
|
|
409
|
+
const metaId = `meta_${randomUUID()}`;
|
|
410
|
+
try {
|
|
411
|
+
await this.deps.vectorIndex.add(metaId, meta.description, {
|
|
412
|
+
type: "meta_pattern",
|
|
413
|
+
applicable_domains: meta.applicable_domains,
|
|
414
|
+
source_pattern_ids: meta.source_pattern_ids,
|
|
415
|
+
created_at: new Date().toISOString(),
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
// non-fatal: embedding failure should not block
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
// non-fatal: LLM failure or parse failure
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
// ─── updateMetaPatternsIncremental ───
|
|
428
|
+
/**
|
|
429
|
+
* Incremental meta-pattern update — processes only patterns created since last aggregation.
|
|
430
|
+
* Called by LearningPipeline after analyzeLogs() produces new patterns.
|
|
431
|
+
*/
|
|
432
|
+
async updateMetaPatternsIncremental() {
|
|
433
|
+
const lastTs = this.lastAggregatedAt ?? await this.loadLastAggregatedAt();
|
|
434
|
+
const now = new Date().toISOString();
|
|
435
|
+
// Collect all patterns across all goals
|
|
436
|
+
const allGoalIds = await this.deps.stateManager.listGoalIds();
|
|
437
|
+
const allPatterns = [];
|
|
438
|
+
for (const goalId of allGoalIds) {
|
|
439
|
+
const patterns = await this.deps.learningPipeline.getPatterns(goalId);
|
|
440
|
+
for (const pattern of patterns) {
|
|
441
|
+
allPatterns.push(pattern);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
// Filter to new ones since last aggregation
|
|
445
|
+
const newPatterns = lastTs
|
|
446
|
+
? allPatterns.filter(p => p.created_at > lastTs)
|
|
447
|
+
: allPatterns;
|
|
448
|
+
// Only high-confidence patterns
|
|
449
|
+
const highConfidence = newPatterns.filter(p => p.confidence >= 0.6);
|
|
450
|
+
if (highConfidence.length === 0) {
|
|
451
|
+
await this.saveLastAggregatedAt(now);
|
|
452
|
+
return 0;
|
|
453
|
+
}
|
|
454
|
+
// Call LLM to extract meta-patterns from new patterns only
|
|
455
|
+
const patternDescriptions = highConfidence
|
|
456
|
+
.map(p => `[${p.type}] ${p.description} (confidence: ${p.confidence}, domains: ${p.applicable_domains.join(',')})`)
|
|
457
|
+
.join('\n');
|
|
458
|
+
const prompt = `Given these newly learned patterns, extract 1-3 cross-domain meta-patterns that could apply to other goals:\n\n${patternDescriptions}\n\nReturn JSON object: { "meta_patterns": [{ "description": string, "applicable_domains": string[], "source_pattern_ids": string[] }] }`;
|
|
459
|
+
try {
|
|
460
|
+
let metaParsed;
|
|
461
|
+
if (this.deps.gateway) {
|
|
462
|
+
metaParsed = await this.deps.gateway.execute({
|
|
463
|
+
purpose: "knowledge_transfer_incremental",
|
|
464
|
+
additionalContext: { incremental_prompt: prompt },
|
|
465
|
+
responseSchema: MetaPatternsResponseSchema,
|
|
466
|
+
maxTokens: 1024,
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
const response = await this.deps.llmClient.sendMessage([{ role: 'user', content: prompt }], { max_tokens: 1024 });
|
|
471
|
+
const metaJson = extractJSON(response.content);
|
|
472
|
+
const metaRaw = JSON.parse(metaJson);
|
|
473
|
+
metaParsed = MetaPatternsResponseSchema.parse(metaRaw);
|
|
474
|
+
}
|
|
475
|
+
// Register in VectorIndex (if available)
|
|
476
|
+
let registered = 0;
|
|
477
|
+
if (this.deps.vectorIndex !== null) {
|
|
478
|
+
for (const mp of metaParsed.meta_patterns) {
|
|
479
|
+
if (!mp.description)
|
|
480
|
+
continue;
|
|
481
|
+
const metaId = `meta_${randomUUID()}`;
|
|
482
|
+
try {
|
|
483
|
+
await this.deps.vectorIndex.add(metaId, mp.description, {
|
|
484
|
+
type: 'meta_pattern',
|
|
485
|
+
applicable_domains: mp.applicable_domains ?? [],
|
|
486
|
+
source_pattern_ids: mp.source_pattern_ids ?? [],
|
|
487
|
+
created_at: now,
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
catch {
|
|
491
|
+
// non-fatal: embedding failure should not block
|
|
492
|
+
}
|
|
493
|
+
registered++;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
await this.saveLastAggregatedAt(now);
|
|
497
|
+
return registered;
|
|
498
|
+
}
|
|
499
|
+
catch {
|
|
500
|
+
// non-fatal: LLM failure or parse failure
|
|
501
|
+
await this.saveLastAggregatedAt(now);
|
|
502
|
+
return 0;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
// ─── autoApplyHighConfidenceTransfers ───
|
|
506
|
+
/**
|
|
507
|
+
* Phase 2: Automatically apply high-confidence transfer candidates.
|
|
508
|
+
*
|
|
509
|
+
* Candidates with confidence >= 0.85 AND trust_score >= 0.7 are applied
|
|
510
|
+
* automatically (after ethics-gate check). Others remain as proposals.
|
|
511
|
+
*
|
|
512
|
+
* Returns all processed candidates (applied/proposed/rejected mixed).
|
|
513
|
+
*/
|
|
514
|
+
async autoApplyHighConfidenceTransfers(goalId) {
|
|
515
|
+
const candidates = await this.detectTransferOpportunities(goalId);
|
|
516
|
+
const processed = [];
|
|
517
|
+
for (const candidate of candidates) {
|
|
518
|
+
// Get trust score for the candidate's domain pair
|
|
519
|
+
const pattern = await this._findSourcePattern(candidate);
|
|
520
|
+
const domainPair = pattern && pattern.applicable_domains.length > 0
|
|
521
|
+
? [...pattern.applicable_domains].sort().join("::")
|
|
522
|
+
: `${candidate.source_goal_id}::${candidate.target_goal_id}`;
|
|
523
|
+
let trustScore = 0.5;
|
|
524
|
+
try {
|
|
525
|
+
const trustRecord = await this.transferTrust.getTrustScore(domainPair);
|
|
526
|
+
trustScore = trustRecord.trust_score;
|
|
527
|
+
}
|
|
528
|
+
catch {
|
|
529
|
+
// non-fatal: use default
|
|
530
|
+
}
|
|
531
|
+
const confidence = pattern?.confidence ?? 0;
|
|
532
|
+
if (confidence >= 0.85 && trustScore >= 0.7) {
|
|
533
|
+
// Auto-apply path: ethics gate check first
|
|
534
|
+
const description = `Auto-apply transfer of pattern "${candidate.source_item_id}" to goal "${goalId}". ${candidate.estimated_benefit}`;
|
|
535
|
+
let verdict;
|
|
536
|
+
try {
|
|
537
|
+
verdict = await this.deps.ethicsGate.check("task", candidate.candidate_id, description);
|
|
538
|
+
}
|
|
539
|
+
catch {
|
|
540
|
+
const rejected = TransferCandidateSchema.parse({ ...candidate, state: "rejected" });
|
|
541
|
+
this.candidates.set(candidate.candidate_id, rejected);
|
|
542
|
+
processed.push(rejected);
|
|
543
|
+
continue;
|
|
544
|
+
}
|
|
545
|
+
if (verdict.verdict === "reject" || verdict.verdict === "flag") {
|
|
546
|
+
const rejected = TransferCandidateSchema.parse({ ...candidate, state: "rejected" });
|
|
547
|
+
this.candidates.set(candidate.candidate_id, rejected);
|
|
548
|
+
processed.push(rejected);
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
// Apply the transfer
|
|
552
|
+
try {
|
|
553
|
+
await this.applyTransfer(candidate.candidate_id, goalId);
|
|
554
|
+
const applied = TransferCandidateSchema.parse({ ...candidate, state: "applied", applied_at: new Date().toISOString() });
|
|
555
|
+
this.candidates.set(candidate.candidate_id, applied);
|
|
556
|
+
processed.push(applied);
|
|
557
|
+
}
|
|
558
|
+
catch {
|
|
559
|
+
// non-fatal: fall back to proposed
|
|
560
|
+
const proposed = TransferCandidateSchema.parse({ ...candidate, state: "proposed", proposed_at: new Date().toISOString() });
|
|
561
|
+
this.candidates.set(candidate.candidate_id, proposed);
|
|
562
|
+
processed.push(proposed);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
else {
|
|
567
|
+
// Below threshold: keep as proposed
|
|
568
|
+
const proposed = TransferCandidateSchema.parse({ ...candidate, state: "proposed", proposed_at: new Date().toISOString() });
|
|
569
|
+
this.candidates.set(candidate.candidate_id, proposed);
|
|
570
|
+
processed.push(proposed);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
return processed;
|
|
574
|
+
}
|
|
575
|
+
// ─── detectCandidatesRealtime ───
|
|
576
|
+
/**
|
|
577
|
+
* Phase 2: Realtime detection of transfer candidates for task generation.
|
|
578
|
+
*
|
|
579
|
+
* Returns high-score candidates and their adapted_content as contextSnippets
|
|
580
|
+
* for injection into task generation context.
|
|
581
|
+
*/
|
|
582
|
+
async detectCandidatesRealtime(goalId) {
|
|
583
|
+
const candidates = await this.detectTransferOpportunities(goalId);
|
|
584
|
+
const contextSnippets = [];
|
|
585
|
+
for (const candidate of candidates) {
|
|
586
|
+
// Use similarity_score as proxy rank — include snippets for score >= 0.7
|
|
587
|
+
if (candidate.similarity_score >= 0.7 && candidate.adapted_content !== null) {
|
|
588
|
+
contextSnippets.push(candidate.adapted_content);
|
|
589
|
+
}
|
|
590
|
+
else if (candidate.similarity_score >= 0.7) {
|
|
591
|
+
// Fall back to estimated_benefit as snippet
|
|
592
|
+
contextSnippets.push(candidate.estimated_benefit);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
return { candidates, contextSnippets };
|
|
596
|
+
}
|
|
597
|
+
// ─── Accessors ───
|
|
598
|
+
/** Return all detected transfer candidates */
|
|
599
|
+
getTransferCandidates() {
|
|
600
|
+
return Array.from(this.candidates.values());
|
|
601
|
+
}
|
|
602
|
+
/** Return all transfer results */
|
|
603
|
+
getTransferResults() {
|
|
604
|
+
return Array.from(this.results.values());
|
|
605
|
+
}
|
|
606
|
+
// ─── Accessors for Reporting ───
|
|
607
|
+
getEffectivenessRecords() {
|
|
608
|
+
return Array.from(this.effectivenessRecords.values());
|
|
609
|
+
}
|
|
610
|
+
getAppliedTransferCount() {
|
|
611
|
+
return Array.from(this.candidates.values()).filter(c => c.state === 'applied').length;
|
|
612
|
+
}
|
|
613
|
+
getTransferSuccessRate() {
|
|
614
|
+
const records = this.getEffectivenessRecords();
|
|
615
|
+
const total = records.length;
|
|
616
|
+
if (total === 0)
|
|
617
|
+
return { total: 0, positive: 0, negative: 0, neutral: 0, rate: 0 };
|
|
618
|
+
const positive = records.filter(r => r.effectiveness === 'positive').length;
|
|
619
|
+
const negative = records.filter(r => r.effectiveness === 'negative').length;
|
|
620
|
+
const neutral = records.filter(r => r.effectiveness === 'neutral').length;
|
|
621
|
+
return { total, positive, negative, neutral, rate: positive / total };
|
|
622
|
+
}
|
|
623
|
+
// ─── Cross-Goal Pattern Storage ───
|
|
624
|
+
/**
|
|
625
|
+
* Store a CrossGoalPattern for later retrieval.
|
|
626
|
+
* Uses KnowledgeGraph if available, otherwise stores in-memory.
|
|
627
|
+
*/
|
|
628
|
+
storePattern(pattern) {
|
|
629
|
+
const validated = CrossGoalPatternSchema.parse(pattern);
|
|
630
|
+
this.crossGoalPatterns.set(validated.id, validated);
|
|
631
|
+
// Optionally store in VectorIndex for semantic retrieval
|
|
632
|
+
if (this.deps.vectorIndex !== null) {
|
|
633
|
+
this.deps.vectorIndex
|
|
634
|
+
.add(validated.id, validated.description, {
|
|
635
|
+
type: "cross_goal_pattern",
|
|
636
|
+
patternType: validated.patternType,
|
|
637
|
+
feedbackType: validated.feedbackType,
|
|
638
|
+
confidence: validated.confidence,
|
|
639
|
+
})
|
|
640
|
+
.catch(() => {
|
|
641
|
+
// non-fatal: embedding failure should not block storage
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Retrieve stored CrossGoalPatterns, optionally filtered by feedbackType or patternType.
|
|
647
|
+
*/
|
|
648
|
+
retrievePatterns(filter) {
|
|
649
|
+
let results = Array.from(this.crossGoalPatterns.values());
|
|
650
|
+
if (filter?.feedbackType !== undefined) {
|
|
651
|
+
results = results.filter((p) => p.feedbackType === filter.feedbackType);
|
|
652
|
+
}
|
|
653
|
+
if (filter?.patternType !== undefined) {
|
|
654
|
+
results = results.filter((p) => p.patternType === filter.patternType);
|
|
655
|
+
}
|
|
656
|
+
return results;
|
|
657
|
+
}
|
|
658
|
+
// ─── Private Persistence Helpers ───
|
|
659
|
+
async loadLastAggregatedAt() {
|
|
660
|
+
try {
|
|
661
|
+
const data = await this.deps.stateManager.readRaw('meta-patterns/last_aggregated_at.json');
|
|
662
|
+
if (data && typeof data === 'object' && 'ts' in data) {
|
|
663
|
+
return data.ts;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
catch {
|
|
667
|
+
// non-fatal
|
|
668
|
+
}
|
|
669
|
+
return null;
|
|
670
|
+
}
|
|
671
|
+
async saveLastAggregatedAt(ts) {
|
|
672
|
+
try {
|
|
673
|
+
await this.deps.stateManager.writeRaw('meta-patterns/last_aggregated_at.json', { ts });
|
|
674
|
+
}
|
|
675
|
+
catch {
|
|
676
|
+
// non-fatal
|
|
677
|
+
}
|
|
678
|
+
this.lastAggregatedAt = ts;
|
|
679
|
+
}
|
|
680
|
+
// ─── Private Helpers ───
|
|
681
|
+
/**
|
|
682
|
+
* Look up the source LearnedPattern for a candidate.
|
|
683
|
+
* Returns null if not found.
|
|
684
|
+
*/
|
|
685
|
+
async _findSourcePattern(candidate) {
|
|
686
|
+
try {
|
|
687
|
+
const patterns = await this.deps.learningPipeline.getPatterns(candidate.source_goal_id);
|
|
688
|
+
return patterns.find((p) => p.pattern_id === candidate.source_item_id) ?? null;
|
|
689
|
+
}
|
|
690
|
+
catch {
|
|
691
|
+
return null;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Estimate the current gap for a goal.
|
|
696
|
+
* Returns 0.5 as a neutral default if goal state is unavailable.
|
|
697
|
+
*/
|
|
698
|
+
async _estimateCurrentGap(goalId) {
|
|
699
|
+
try {
|
|
700
|
+
const raw = await this.deps.stateManager.readRaw(`goals/${goalId}/state.json`);
|
|
701
|
+
if (raw && typeof raw === "object" && raw !== null) {
|
|
702
|
+
const state = raw;
|
|
703
|
+
if (typeof state["gap"] === "number") {
|
|
704
|
+
return state["gap"];
|
|
705
|
+
}
|
|
706
|
+
// Try gap_score from loop state
|
|
707
|
+
if (typeof state["gap_score"] === "number") {
|
|
708
|
+
return state["gap_score"];
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
catch {
|
|
713
|
+
// non-fatal
|
|
714
|
+
}
|
|
715
|
+
return 0.5;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
//# sourceMappingURL=knowledge-transfer.js.map
|