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,840 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { extractJSON } from "./llm/llm-client.js";
|
|
4
|
+
import { LearningTriggerSchema, LearnedPatternSchema, LearnedPatternTypeEnum, FeedbackEntrySchema, LearningPipelineConfigSchema, StructuralFeedbackSchema, StructuralFeedbackTypeEnum, CrossGoalPatternSchema, } from "./types/learning.js";
|
|
5
|
+
// ─── LLM Response Schemas ───
|
|
6
|
+
const TripletSchema = z.object({
|
|
7
|
+
state_context: z.string(),
|
|
8
|
+
action_taken: z.string(),
|
|
9
|
+
outcome: z.string(),
|
|
10
|
+
gap_delta: z.number(),
|
|
11
|
+
});
|
|
12
|
+
const TripletsResponseSchema = z.object({
|
|
13
|
+
triplets: z.array(TripletSchema),
|
|
14
|
+
});
|
|
15
|
+
const PatternItemSchema = z.object({
|
|
16
|
+
description: z.string(),
|
|
17
|
+
pattern_type: LearnedPatternTypeEnum,
|
|
18
|
+
action_group: z.string(),
|
|
19
|
+
applicable_domains: z.array(z.string()).default([]),
|
|
20
|
+
occurrence_count: z.number().int().min(0),
|
|
21
|
+
consistent_count: z.number().int().min(0),
|
|
22
|
+
total_count: z.number().int().min(1),
|
|
23
|
+
is_specific: z.boolean(),
|
|
24
|
+
});
|
|
25
|
+
const PatternsResponseSchema = z.object({
|
|
26
|
+
patterns: z.array(PatternItemSchema),
|
|
27
|
+
});
|
|
28
|
+
// ─── Prompt Builders ───
|
|
29
|
+
function buildExtractionPrompt(trigger, logs) {
|
|
30
|
+
return `Analyze the experience logs for goal "${trigger.goal_id}" and extract state→action→outcome triplets.
|
|
31
|
+
|
|
32
|
+
Trigger type: ${trigger.type}
|
|
33
|
+
Context: ${trigger.context}
|
|
34
|
+
Timestamp: ${trigger.timestamp}
|
|
35
|
+
|
|
36
|
+
Experience logs:
|
|
37
|
+
${JSON.stringify(logs, null, 2)}
|
|
38
|
+
|
|
39
|
+
Extract concrete triplets describing what happened. Each triplet must include:
|
|
40
|
+
- state_context: the observable state when the action was taken
|
|
41
|
+
- action_taken: a specific, concrete action that was executed
|
|
42
|
+
- outcome: what actually happened as a result
|
|
43
|
+
- gap_delta: change in goal gap (-1.0 to 1.0, negative means gap reduced/improved)
|
|
44
|
+
|
|
45
|
+
IMPORTANT: Only include triplets where action_taken describes a specific, concrete action.
|
|
46
|
+
Examples of ACCEPTED actions: "reduced task scope to 3 steps", "added prerequisite check at start", "estimated effort at 1.5x"
|
|
47
|
+
Examples of REJECTED actions: "did something better", "made improvements", "tried harder"
|
|
48
|
+
|
|
49
|
+
Output JSON:
|
|
50
|
+
{
|
|
51
|
+
"triplets": [
|
|
52
|
+
{
|
|
53
|
+
"state_context": "<specific state description>",
|
|
54
|
+
"action_taken": "<concrete specific action>",
|
|
55
|
+
"outcome": "<measurable outcome>",
|
|
56
|
+
"gap_delta": <number -1.0 to 1.0>
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
Return ONLY the JSON object, no other text.`;
|
|
62
|
+
}
|
|
63
|
+
function buildPatternizationPrompt(triplets) {
|
|
64
|
+
return `Analyze the following state→action→outcome triplets and identify repeating patterns.
|
|
65
|
+
|
|
66
|
+
Triplets:
|
|
67
|
+
${JSON.stringify(triplets, null, 2)}
|
|
68
|
+
|
|
69
|
+
For each group of similar actions, create a pattern entry. Each pattern must have:
|
|
70
|
+
- description: a concrete, actionable description (must specify what to do exactly)
|
|
71
|
+
- pattern_type: one of "observation_accuracy", "strategy_selection", "scope_sizing", "task_generation"
|
|
72
|
+
- action_group: the common action theme across the grouped triplets
|
|
73
|
+
- applicable_domains: list of domains where this pattern applies (infer from context)
|
|
74
|
+
- occurrence_count: how many triplets have this action group
|
|
75
|
+
- consistent_count: how many of those triplets showed consistent outcome direction (all improving or all worsening)
|
|
76
|
+
- total_count: total number of triplets analyzed
|
|
77
|
+
- is_specific: true if description is concrete enough to act on directly (false for vague descriptions like "do better")
|
|
78
|
+
|
|
79
|
+
Pattern type mapping:
|
|
80
|
+
- "observation_accuracy": patterns about how well observations matched reality
|
|
81
|
+
- "strategy_selection": patterns about which strategies worked/failed in which contexts
|
|
82
|
+
- "scope_sizing": patterns about task scope, size, or granularity
|
|
83
|
+
- "task_generation": patterns about task structure, format, or prerequisites
|
|
84
|
+
|
|
85
|
+
Only include patterns where is_specific = true AND occurrence_count >= 2.
|
|
86
|
+
|
|
87
|
+
Output JSON:
|
|
88
|
+
{
|
|
89
|
+
"patterns": [
|
|
90
|
+
{
|
|
91
|
+
"description": "<concrete actionable description>",
|
|
92
|
+
"pattern_type": "<type>",
|
|
93
|
+
"action_group": "<common action theme>",
|
|
94
|
+
"applicable_domains": ["<domain1>"],
|
|
95
|
+
"occurrence_count": <int>,
|
|
96
|
+
"consistent_count": <int>,
|
|
97
|
+
"total_count": <int>,
|
|
98
|
+
"is_specific": <boolean>
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
Return ONLY the JSON object, no other text.`;
|
|
104
|
+
}
|
|
105
|
+
// ─── LearningPipeline ───
|
|
106
|
+
/**
|
|
107
|
+
* LearningPipeline extracts patterns from goal execution logs and
|
|
108
|
+
* applies feedback to future iterations via SessionManager context injection.
|
|
109
|
+
*
|
|
110
|
+
* File layout:
|
|
111
|
+
* <base>/learning/<goal_id>_logs.json
|
|
112
|
+
* <base>/learning/<goal_id>_patterns.json
|
|
113
|
+
* <base>/learning/<goal_id>_feedback.json
|
|
114
|
+
*/
|
|
115
|
+
export class LearningPipeline {
|
|
116
|
+
llmClient;
|
|
117
|
+
vectorIndex;
|
|
118
|
+
stateManager;
|
|
119
|
+
config;
|
|
120
|
+
constructor(llmClient, vectorIndex, stateManager, config) {
|
|
121
|
+
this.llmClient = llmClient;
|
|
122
|
+
this.vectorIndex = vectorIndex;
|
|
123
|
+
this.stateManager = stateManager;
|
|
124
|
+
this.config = config ?? LearningPipelineConfigSchema.parse({});
|
|
125
|
+
}
|
|
126
|
+
// ─── Trigger Handlers ───
|
|
127
|
+
/**
|
|
128
|
+
* Called when a goal dimension reaches a milestone threshold.
|
|
129
|
+
*/
|
|
130
|
+
async onMilestoneReached(goalId, milestoneContext) {
|
|
131
|
+
const trigger = LearningTriggerSchema.parse({
|
|
132
|
+
type: "milestone_reached",
|
|
133
|
+
goal_id: goalId,
|
|
134
|
+
context: milestoneContext,
|
|
135
|
+
timestamp: new Date().toISOString(),
|
|
136
|
+
});
|
|
137
|
+
const patterns = await this.analyzeLogs(trigger);
|
|
138
|
+
if (patterns.length > 0) {
|
|
139
|
+
this.generateFeedback(patterns);
|
|
140
|
+
}
|
|
141
|
+
return patterns;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Called when a stall is detected for a goal.
|
|
145
|
+
*/
|
|
146
|
+
async onStallDetected(goalId, stallInfo) {
|
|
147
|
+
const trigger = LearningTriggerSchema.parse({
|
|
148
|
+
type: "stall_detected",
|
|
149
|
+
goal_id: goalId,
|
|
150
|
+
context: JSON.stringify(stallInfo),
|
|
151
|
+
timestamp: new Date().toISOString(),
|
|
152
|
+
});
|
|
153
|
+
const patterns = await this.analyzeLogs(trigger);
|
|
154
|
+
if (patterns.length > 0) {
|
|
155
|
+
this.generateFeedback(patterns);
|
|
156
|
+
}
|
|
157
|
+
return patterns;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Called during periodic review of a goal.
|
|
161
|
+
*/
|
|
162
|
+
async onPeriodicReview(goalId) {
|
|
163
|
+
const trigger = LearningTriggerSchema.parse({
|
|
164
|
+
type: "periodic_review",
|
|
165
|
+
goal_id: goalId,
|
|
166
|
+
context: `Periodic review at ${new Date().toISOString()}`,
|
|
167
|
+
timestamp: new Date().toISOString(),
|
|
168
|
+
});
|
|
169
|
+
const patterns = await this.analyzeLogs(trigger);
|
|
170
|
+
if (patterns.length > 0) {
|
|
171
|
+
this.generateFeedback(patterns);
|
|
172
|
+
}
|
|
173
|
+
return patterns;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Called when a goal is marked as completed.
|
|
177
|
+
* Also triggers cross-goal pattern sharing if enabled.
|
|
178
|
+
*/
|
|
179
|
+
async onGoalCompleted(goalId) {
|
|
180
|
+
const trigger = LearningTriggerSchema.parse({
|
|
181
|
+
type: "goal_completed",
|
|
182
|
+
goal_id: goalId,
|
|
183
|
+
context: `Goal ${goalId} completed at ${new Date().toISOString()}`,
|
|
184
|
+
timestamp: new Date().toISOString(),
|
|
185
|
+
});
|
|
186
|
+
const patterns = await this.analyzeLogs(trigger);
|
|
187
|
+
if (patterns.length > 0) {
|
|
188
|
+
this.generateFeedback(patterns);
|
|
189
|
+
// Share patterns across goals if enabled
|
|
190
|
+
if (this.config.cross_goal_sharing_enabled) {
|
|
191
|
+
for (const pattern of patterns) {
|
|
192
|
+
try {
|
|
193
|
+
await this.sharePatternAcrossGoals(pattern.pattern_id);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// non-fatal: sharing failure should not block completion handling
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return patterns;
|
|
202
|
+
}
|
|
203
|
+
// ─── Analysis Pipeline ───
|
|
204
|
+
/**
|
|
205
|
+
* Core analysis pipeline: reads logs, extracts triplets via LLM,
|
|
206
|
+
* detects patterns, filters by confidence, and persists results.
|
|
207
|
+
*/
|
|
208
|
+
async analyzeLogs(trigger) {
|
|
209
|
+
// 1. Load experience logs
|
|
210
|
+
const logsKey = `learning/${trigger.goal_id}_logs.json`;
|
|
211
|
+
const rawLogs = this.stateManager.readRaw(logsKey);
|
|
212
|
+
if (!rawLogs) {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
// 2. Stage 1: Extract triplets via LLM
|
|
216
|
+
let triplets;
|
|
217
|
+
try {
|
|
218
|
+
const extractionPrompt = buildExtractionPrompt(trigger, rawLogs);
|
|
219
|
+
const extractionResponse = await this.llmClient.sendMessage([{ role: "user", content: extractionPrompt }], { max_tokens: 2048 });
|
|
220
|
+
const extractionJson = extractJSON(extractionResponse.content);
|
|
221
|
+
const extractionRaw = JSON.parse(extractionJson);
|
|
222
|
+
const extractionParsed = TripletsResponseSchema.parse(extractionRaw);
|
|
223
|
+
triplets = extractionParsed.triplets;
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
// LLM failure or parse failure — return empty (non-fatal)
|
|
227
|
+
return [];
|
|
228
|
+
}
|
|
229
|
+
if (triplets.length === 0) {
|
|
230
|
+
return [];
|
|
231
|
+
}
|
|
232
|
+
// 3. Stage 2: Patternize triplets via LLM
|
|
233
|
+
let patternItems;
|
|
234
|
+
try {
|
|
235
|
+
const patternizationPrompt = buildPatternizationPrompt(triplets);
|
|
236
|
+
const patternizationResponse = await this.llmClient.sendMessage([{ role: "user", content: patternizationPrompt }], { max_tokens: 2048 });
|
|
237
|
+
const patternizationJson = extractJSON(patternizationResponse.content);
|
|
238
|
+
const patternizationRaw = JSON.parse(patternizationJson);
|
|
239
|
+
const patternizationParsed = PatternsResponseSchema.parse(patternizationRaw);
|
|
240
|
+
patternItems = patternizationParsed.patterns.filter((p) => p.is_specific);
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
// LLM failure or parse failure — return empty (non-fatal)
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
246
|
+
// 4. Compute confidence (TypeScript-side) and filter
|
|
247
|
+
const now = new Date().toISOString();
|
|
248
|
+
const newPatterns = [];
|
|
249
|
+
for (const item of patternItems) {
|
|
250
|
+
const occurrenceFrequency = item.occurrence_count / item.total_count;
|
|
251
|
+
const resultConsistency = item.occurrence_count > 0
|
|
252
|
+
? item.consistent_count / item.occurrence_count
|
|
253
|
+
: 0;
|
|
254
|
+
const confidence = occurrenceFrequency * resultConsistency;
|
|
255
|
+
if (confidence < this.config.min_confidence_threshold) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
const pattern = LearnedPatternSchema.parse({
|
|
259
|
+
pattern_id: `pat_${randomUUID()}`,
|
|
260
|
+
type: item.pattern_type,
|
|
261
|
+
description: item.description,
|
|
262
|
+
confidence,
|
|
263
|
+
evidence_count: item.occurrence_count,
|
|
264
|
+
source_goal_ids: [trigger.goal_id],
|
|
265
|
+
applicable_domains: item.applicable_domains,
|
|
266
|
+
embedding_id: null,
|
|
267
|
+
created_at: now,
|
|
268
|
+
last_applied_at: null,
|
|
269
|
+
});
|
|
270
|
+
newPatterns.push(pattern);
|
|
271
|
+
}
|
|
272
|
+
if (newPatterns.length === 0) {
|
|
273
|
+
return [];
|
|
274
|
+
}
|
|
275
|
+
// 5. Merge with existing patterns (respecting max_patterns_per_goal)
|
|
276
|
+
const existing = this.getPatterns(trigger.goal_id);
|
|
277
|
+
const merged = [...existing, ...newPatterns];
|
|
278
|
+
// If over limit, remove lowest-confidence patterns
|
|
279
|
+
if (merged.length > this.config.max_patterns_per_goal) {
|
|
280
|
+
merged.sort((a, b) => b.confidence - a.confidence);
|
|
281
|
+
merged.splice(this.config.max_patterns_per_goal);
|
|
282
|
+
}
|
|
283
|
+
this.savePatterns(trigger.goal_id, merged);
|
|
284
|
+
// 6. Register embeddings in VectorIndex if available
|
|
285
|
+
if (this.vectorIndex !== null) {
|
|
286
|
+
for (const pattern of newPatterns) {
|
|
287
|
+
try {
|
|
288
|
+
const entry = await this.vectorIndex.add(pattern.pattern_id, pattern.description, {
|
|
289
|
+
pattern_id: pattern.pattern_id,
|
|
290
|
+
type: pattern.type,
|
|
291
|
+
goal_id: trigger.goal_id,
|
|
292
|
+
confidence: pattern.confidence,
|
|
293
|
+
});
|
|
294
|
+
// Update pattern with embedding_id
|
|
295
|
+
const updatedPatterns = this.getPatterns(trigger.goal_id).map((p) => p.pattern_id === pattern.pattern_id
|
|
296
|
+
? { ...p, embedding_id: entry.id }
|
|
297
|
+
: p);
|
|
298
|
+
this.savePatterns(trigger.goal_id, updatedPatterns);
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
// non-fatal: embedding failure should not block pattern registration
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return newPatterns;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Generate FeedbackEntry objects from learned patterns.
|
|
309
|
+
* Maps each pattern type to a target step and persists the feedback.
|
|
310
|
+
*/
|
|
311
|
+
generateFeedback(patterns) {
|
|
312
|
+
const targetStepMap = {
|
|
313
|
+
observation_accuracy: "observation",
|
|
314
|
+
strategy_selection: "strategy",
|
|
315
|
+
scope_sizing: "task",
|
|
316
|
+
task_generation: "task",
|
|
317
|
+
};
|
|
318
|
+
const now = new Date().toISOString();
|
|
319
|
+
const entries = patterns.map((pattern, index) => {
|
|
320
|
+
const targetStep = targetStepMap[pattern.type];
|
|
321
|
+
return FeedbackEntrySchema.parse({
|
|
322
|
+
feedback_id: `fb_${Date.now()}_${index}`,
|
|
323
|
+
pattern_id: pattern.pattern_id,
|
|
324
|
+
target_step: targetStep,
|
|
325
|
+
adjustment: pattern.description,
|
|
326
|
+
applied_at: now,
|
|
327
|
+
effect_observed: null,
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
// Group by goal: patterns share source_goal_ids[0] as the owner
|
|
331
|
+
const byGoal = new Map();
|
|
332
|
+
for (let i = 0; i < patterns.length; i++) {
|
|
333
|
+
const pattern = patterns[i];
|
|
334
|
+
const entry = entries[i];
|
|
335
|
+
const goalId = pattern.source_goal_ids[0];
|
|
336
|
+
if (!goalId)
|
|
337
|
+
continue;
|
|
338
|
+
const existing = byGoal.get(goalId) ?? [];
|
|
339
|
+
existing.push(entry);
|
|
340
|
+
byGoal.set(goalId, existing);
|
|
341
|
+
}
|
|
342
|
+
for (const [goalId, newEntries] of byGoal) {
|
|
343
|
+
const existing = this.getFeedbackEntries(goalId);
|
|
344
|
+
this.saveFeedbackEntries(goalId, [...existing, ...newEntries]);
|
|
345
|
+
}
|
|
346
|
+
return entries;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Return adjustment strings for a given goal and target step.
|
|
350
|
+
* Returns at most 3 entries sorted by confidence descending.
|
|
351
|
+
*/
|
|
352
|
+
applyFeedback(goalId, step) {
|
|
353
|
+
const allEntries = this.getFeedbackEntries(goalId);
|
|
354
|
+
const stepEntries = allEntries.filter((e) => e.target_step === step);
|
|
355
|
+
// Enrich with pattern confidence for sorting
|
|
356
|
+
const patterns = this.getPatterns(goalId);
|
|
357
|
+
const patternConfidenceMap = new Map(patterns.map((p) => [p.pattern_id, p.confidence]));
|
|
358
|
+
const enriched = stepEntries.map((e) => ({
|
|
359
|
+
entry: e,
|
|
360
|
+
confidence: patternConfidenceMap.get(e.pattern_id) ?? 0,
|
|
361
|
+
}));
|
|
362
|
+
// Sort by confidence descending, take top 3
|
|
363
|
+
enriched.sort((a, b) => b.confidence - a.confidence);
|
|
364
|
+
const top3 = enriched.slice(0, 3);
|
|
365
|
+
return top3.map((e) => e.entry.adjustment);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Share a pattern from its source goal to similar goals in the VectorIndex.
|
|
369
|
+
* Only runs if vectorIndex is available and cross_goal_sharing_enabled.
|
|
370
|
+
*/
|
|
371
|
+
async sharePatternAcrossGoals(patternId) {
|
|
372
|
+
if (!this.vectorIndex || !this.config.cross_goal_sharing_enabled) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
// Find the pattern across all goals
|
|
376
|
+
const allGoalIds = this.stateManager.listGoalIds();
|
|
377
|
+
let sourcePattern = null;
|
|
378
|
+
let sourceGoalId = null;
|
|
379
|
+
for (const goalId of allGoalIds) {
|
|
380
|
+
const patterns = this.getPatterns(goalId);
|
|
381
|
+
const found = patterns.find((p) => p.pattern_id === patternId);
|
|
382
|
+
if (found) {
|
|
383
|
+
sourcePattern = found;
|
|
384
|
+
sourceGoalId = goalId;
|
|
385
|
+
break;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
if (!sourcePattern || !sourceGoalId) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
// Search for similar goals using the pattern description
|
|
392
|
+
let similarResults;
|
|
393
|
+
try {
|
|
394
|
+
similarResults = await this.vectorIndex.search(sourcePattern.description, 10, 0.7);
|
|
395
|
+
}
|
|
396
|
+
catch {
|
|
397
|
+
// non-fatal
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
// Filter to goal-level entries only (metadata.goal_id present but different from source)
|
|
401
|
+
const targetGoalIds = new Set();
|
|
402
|
+
for (const result of similarResults) {
|
|
403
|
+
const entry = this.vectorIndex.getEntry(result.id);
|
|
404
|
+
if (!entry)
|
|
405
|
+
continue;
|
|
406
|
+
const metaGoalId = entry.metadata?.["goal_id"];
|
|
407
|
+
if (metaGoalId && metaGoalId !== sourceGoalId) {
|
|
408
|
+
targetGoalIds.add(metaGoalId);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
// Share to each target goal with confidence discount
|
|
412
|
+
for (const targetGoalId of targetGoalIds) {
|
|
413
|
+
const targetPatterns = this.getPatterns(targetGoalId);
|
|
414
|
+
// Duplicate check: skip if same pattern_id already in target
|
|
415
|
+
const alreadyShared = targetPatterns.some((p) => p.pattern_id === patternId);
|
|
416
|
+
if (alreadyShared)
|
|
417
|
+
continue;
|
|
418
|
+
// Apply confidence discount
|
|
419
|
+
const transferredConfidence = sourcePattern.confidence * 0.7;
|
|
420
|
+
// Skip if transferred confidence is below threshold
|
|
421
|
+
if (transferredConfidence < this.config.min_confidence_threshold) {
|
|
422
|
+
continue;
|
|
423
|
+
}
|
|
424
|
+
const sharedPattern = LearnedPatternSchema.parse({
|
|
425
|
+
...sourcePattern,
|
|
426
|
+
pattern_id: `pat_${randomUUID()}`, // New ID for the shared copy
|
|
427
|
+
confidence: transferredConfidence,
|
|
428
|
+
source_goal_ids: [...sourcePattern.source_goal_ids, sourceGoalId],
|
|
429
|
+
created_at: new Date().toISOString(),
|
|
430
|
+
last_applied_at: null,
|
|
431
|
+
embedding_id: null,
|
|
432
|
+
});
|
|
433
|
+
const updatedTargetPatterns = [...targetPatterns, sharedPattern];
|
|
434
|
+
// Respect max_patterns_per_goal limit
|
|
435
|
+
if (updatedTargetPatterns.length > this.config.max_patterns_per_goal) {
|
|
436
|
+
updatedTargetPatterns.sort((a, b) => b.confidence - a.confidence);
|
|
437
|
+
updatedTargetPatterns.splice(this.config.max_patterns_per_goal);
|
|
438
|
+
}
|
|
439
|
+
this.savePatterns(targetGoalId, updatedTargetPatterns);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
// ─── Persistence ───
|
|
443
|
+
/**
|
|
444
|
+
* Load learned patterns for a goal. Returns empty array if not found.
|
|
445
|
+
*/
|
|
446
|
+
getPatterns(goalId) {
|
|
447
|
+
const raw = this.stateManager.readRaw(`learning/${goalId}_patterns.json`);
|
|
448
|
+
if (!raw || !Array.isArray(raw))
|
|
449
|
+
return [];
|
|
450
|
+
try {
|
|
451
|
+
return raw.map((item) => LearnedPatternSchema.parse(item));
|
|
452
|
+
}
|
|
453
|
+
catch {
|
|
454
|
+
return [];
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Persist learned patterns for a goal.
|
|
459
|
+
*/
|
|
460
|
+
savePatterns(goalId, patterns) {
|
|
461
|
+
this.stateManager.writeRaw(`learning/${goalId}_patterns.json`, patterns);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Load feedback entries for a goal. Returns empty array if not found.
|
|
465
|
+
*/
|
|
466
|
+
getFeedbackEntries(goalId) {
|
|
467
|
+
const raw = this.stateManager.readRaw(`learning/${goalId}_feedback.json`);
|
|
468
|
+
if (!raw || !Array.isArray(raw))
|
|
469
|
+
return [];
|
|
470
|
+
try {
|
|
471
|
+
return raw.map((item) => FeedbackEntrySchema.parse(item));
|
|
472
|
+
}
|
|
473
|
+
catch {
|
|
474
|
+
return [];
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Persist feedback entries for a goal.
|
|
479
|
+
*/
|
|
480
|
+
saveFeedbackEntries(goalId, entries) {
|
|
481
|
+
this.stateManager.writeRaw(`learning/${goalId}_feedback.json`, entries);
|
|
482
|
+
}
|
|
483
|
+
// ─── Structural Feedback (Phase 2) ───
|
|
484
|
+
/**
|
|
485
|
+
* Record a structural feedback entry for a goal/iteration.
|
|
486
|
+
* Validates with Zod and persists via StateManager.
|
|
487
|
+
*/
|
|
488
|
+
recordStructuralFeedback(feedback) {
|
|
489
|
+
const validated = StructuralFeedbackSchema.parse(feedback);
|
|
490
|
+
const existing = this.getStructuralFeedback(validated.goalId);
|
|
491
|
+
existing.push(validated);
|
|
492
|
+
this.stateManager.writeRaw(`learning/${validated.goalId}_structural_feedback.json`, existing);
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Load structural feedback for a goal.
|
|
496
|
+
*/
|
|
497
|
+
getStructuralFeedback(goalId) {
|
|
498
|
+
const raw = this.stateManager.readRaw(`learning/${goalId}_structural_feedback.json`);
|
|
499
|
+
if (!raw || !Array.isArray(raw))
|
|
500
|
+
return [];
|
|
501
|
+
try {
|
|
502
|
+
return raw.map((item) => StructuralFeedbackSchema.parse(item));
|
|
503
|
+
}
|
|
504
|
+
catch {
|
|
505
|
+
return [];
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Aggregate structural feedback for a goal, optionally filtered by type.
|
|
510
|
+
* Calculates averageDelta, recent trend (last 10 vs previous 10), and worst area.
|
|
511
|
+
*/
|
|
512
|
+
aggregateFeedback(goalId, feedbackType) {
|
|
513
|
+
const all = this.getStructuralFeedback(goalId);
|
|
514
|
+
const types = feedbackType
|
|
515
|
+
? [feedbackType]
|
|
516
|
+
: StructuralFeedbackTypeEnum.options;
|
|
517
|
+
const results = [];
|
|
518
|
+
for (const type of types) {
|
|
519
|
+
const entries = all.filter((f) => f.feedbackType === type);
|
|
520
|
+
if (entries.length === 0)
|
|
521
|
+
continue;
|
|
522
|
+
const totalCount = entries.length;
|
|
523
|
+
const averageDelta = entries.reduce((sum, e) => sum + e.delta, 0) / totalCount;
|
|
524
|
+
// Sort by timestamp for trend calculation
|
|
525
|
+
const sorted = [...entries].sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
|
|
526
|
+
// Compare last 10 vs previous 10
|
|
527
|
+
const recent = sorted.slice(-10);
|
|
528
|
+
const previous = sorted.slice(-20, -10);
|
|
529
|
+
let recentTrend = "stable";
|
|
530
|
+
if (previous.length > 0 && recent.length > 0) {
|
|
531
|
+
const recentAvg = recent.reduce((sum, e) => sum + e.delta, 0) / recent.length;
|
|
532
|
+
const prevAvg = previous.reduce((sum, e) => sum + e.delta, 0) / previous.length;
|
|
533
|
+
const diff = recentAvg - prevAvg;
|
|
534
|
+
if (diff > 0.05) {
|
|
535
|
+
recentTrend = "improving";
|
|
536
|
+
}
|
|
537
|
+
else if (diff < -0.05) {
|
|
538
|
+
recentTrend = "degrading";
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
// Worst area: find the context key or dimension with lowest average delta
|
|
542
|
+
const areaDeltas = new Map();
|
|
543
|
+
for (const entry of entries) {
|
|
544
|
+
// Use context keys as area identifiers; fall back to iterationId
|
|
545
|
+
const areaKeys = Object.keys(entry.context);
|
|
546
|
+
if (areaKeys.length > 0) {
|
|
547
|
+
for (const key of areaKeys) {
|
|
548
|
+
const existing = areaDeltas.get(key) ?? [];
|
|
549
|
+
existing.push(entry.delta);
|
|
550
|
+
areaDeltas.set(key, existing);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
const existing = areaDeltas.get(entry.iterationId) ?? [];
|
|
555
|
+
existing.push(entry.delta);
|
|
556
|
+
areaDeltas.set(entry.iterationId, existing);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
let worstArea = "unknown";
|
|
560
|
+
let worstAvg = Infinity;
|
|
561
|
+
for (const [area, deltas] of areaDeltas) {
|
|
562
|
+
const avg = deltas.reduce((s, d) => s + d, 0) / deltas.length;
|
|
563
|
+
if (avg < worstAvg) {
|
|
564
|
+
worstAvg = avg;
|
|
565
|
+
worstArea = area;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
results.push({
|
|
569
|
+
feedbackType: type,
|
|
570
|
+
totalCount,
|
|
571
|
+
averageDelta,
|
|
572
|
+
recentTrend,
|
|
573
|
+
worstArea,
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
return results;
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Analyze feedback history and suggest parameter adjustments.
|
|
580
|
+
* Only suggests when basedOnFeedbackCount >= 5 and confidence >= 0.6.
|
|
581
|
+
*/
|
|
582
|
+
autoTuneParameters(goalId) {
|
|
583
|
+
const all = this.getStructuralFeedback(goalId);
|
|
584
|
+
const suggestions = [];
|
|
585
|
+
const typeGroups = new Map();
|
|
586
|
+
for (const entry of all) {
|
|
587
|
+
const existing = typeGroups.get(entry.feedbackType) ?? [];
|
|
588
|
+
existing.push(entry);
|
|
589
|
+
typeGroups.set(entry.feedbackType, existing);
|
|
590
|
+
}
|
|
591
|
+
for (const [type, entries] of typeGroups) {
|
|
592
|
+
if (entries.length < 5)
|
|
593
|
+
continue;
|
|
594
|
+
const avgDelta = entries.reduce((sum, e) => sum + e.delta, 0) / entries.length;
|
|
595
|
+
// Confidence based on consistency: proportion with same sign as average
|
|
596
|
+
const sameSign = entries.filter((e) => avgDelta >= 0 ? e.delta >= 0 : e.delta < 0).length;
|
|
597
|
+
const confidence = sameSign / entries.length;
|
|
598
|
+
if (confidence < 0.6)
|
|
599
|
+
continue;
|
|
600
|
+
switch (type) {
|
|
601
|
+
case "observation_accuracy": {
|
|
602
|
+
// Suggest confidence threshold adjustment
|
|
603
|
+
// Negative avgDelta = observations were overconfident → raise threshold
|
|
604
|
+
// Positive avgDelta = observations were too conservative → lower threshold
|
|
605
|
+
const currentValue = this.config.min_confidence_threshold;
|
|
606
|
+
const adjustment = avgDelta < 0 ? 0.05 : -0.05;
|
|
607
|
+
const suggestedValue = Math.min(1, Math.max(0, currentValue + adjustment));
|
|
608
|
+
suggestions.push({
|
|
609
|
+
parameterId: `param_confidence_threshold_${goalId}`,
|
|
610
|
+
parameterName: "min_confidence_threshold",
|
|
611
|
+
currentValue,
|
|
612
|
+
suggestedValue,
|
|
613
|
+
confidence,
|
|
614
|
+
basedOnFeedbackCount: entries.length,
|
|
615
|
+
feedbackType: type,
|
|
616
|
+
});
|
|
617
|
+
break;
|
|
618
|
+
}
|
|
619
|
+
case "strategy_selection": {
|
|
620
|
+
// Suggest strategy weight change
|
|
621
|
+
// Negative avgDelta = strategies underperformed → increase exploration weight
|
|
622
|
+
// Positive avgDelta = strategies performed well → increase exploitation weight
|
|
623
|
+
const currentValue = 0.5; // default strategy weight
|
|
624
|
+
const suggestedValue = avgDelta < 0 ? 0.3 : 0.7;
|
|
625
|
+
suggestions.push({
|
|
626
|
+
parameterId: `param_strategy_weight_${goalId}`,
|
|
627
|
+
parameterName: "strategy_exploitation_weight",
|
|
628
|
+
currentValue,
|
|
629
|
+
suggestedValue,
|
|
630
|
+
confidence,
|
|
631
|
+
basedOnFeedbackCount: entries.length,
|
|
632
|
+
feedbackType: type,
|
|
633
|
+
});
|
|
634
|
+
break;
|
|
635
|
+
}
|
|
636
|
+
case "scope_sizing": {
|
|
637
|
+
// Suggest task granularity change
|
|
638
|
+
// Negative avgDelta = tasks were too large → reduce granularity
|
|
639
|
+
// Positive avgDelta = tasks were appropriately sized → maintain or increase
|
|
640
|
+
const currentValue = 1.0; // default granularity multiplier
|
|
641
|
+
const suggestedValue = avgDelta < 0 ? 0.7 : 1.2;
|
|
642
|
+
suggestions.push({
|
|
643
|
+
parameterId: `param_task_granularity_${goalId}`,
|
|
644
|
+
parameterName: "task_granularity_multiplier",
|
|
645
|
+
currentValue,
|
|
646
|
+
suggestedValue,
|
|
647
|
+
confidence,
|
|
648
|
+
basedOnFeedbackCount: entries.length,
|
|
649
|
+
feedbackType: type,
|
|
650
|
+
});
|
|
651
|
+
break;
|
|
652
|
+
}
|
|
653
|
+
case "task_generation": {
|
|
654
|
+
// Suggest prompt/template change weight
|
|
655
|
+
// Negative avgDelta = templates were ineffective → suggest template refresh
|
|
656
|
+
// Positive avgDelta = templates were effective → reinforce current template
|
|
657
|
+
const currentValue = 0.5; // default template reuse weight
|
|
658
|
+
const suggestedValue = avgDelta < 0 ? 0.2 : 0.8;
|
|
659
|
+
suggestions.push({
|
|
660
|
+
parameterId: `param_template_reuse_${goalId}`,
|
|
661
|
+
parameterName: "task_template_reuse_weight",
|
|
662
|
+
currentValue,
|
|
663
|
+
suggestedValue,
|
|
664
|
+
confidence,
|
|
665
|
+
basedOnFeedbackCount: entries.length,
|
|
666
|
+
feedbackType: type,
|
|
667
|
+
});
|
|
668
|
+
break;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
return suggestions;
|
|
673
|
+
}
|
|
674
|
+
// ─── Cross-Goal Pattern Extraction ───
|
|
675
|
+
/**
|
|
676
|
+
* Extract cross-goal patterns by analyzing structural feedback across multiple goals.
|
|
677
|
+
* A pattern is identified when the same feedbackType appears with similar delta values
|
|
678
|
+
* (within ±0.2) across 2 or more goals.
|
|
679
|
+
*/
|
|
680
|
+
extractCrossGoalPatterns(goalIds) {
|
|
681
|
+
if (goalIds.length < 2) {
|
|
682
|
+
return [];
|
|
683
|
+
}
|
|
684
|
+
// Collect all structural feedback grouped by feedbackType
|
|
685
|
+
const byType = new Map();
|
|
686
|
+
for (const goalId of goalIds) {
|
|
687
|
+
const feedbacks = this.getStructuralFeedback(goalId);
|
|
688
|
+
for (const fb of feedbacks) {
|
|
689
|
+
const existing = byType.get(fb.feedbackType) ?? [];
|
|
690
|
+
existing.push({ goalId, feedback: fb });
|
|
691
|
+
byType.set(fb.feedbackType, existing);
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
const patterns = [];
|
|
695
|
+
const now = new Date().toISOString();
|
|
696
|
+
for (const [feedbackType, entries] of byType) {
|
|
697
|
+
if (entries.length < 2)
|
|
698
|
+
continue;
|
|
699
|
+
// Group entries by similar delta values (within ±0.2)
|
|
700
|
+
const clustered = [];
|
|
701
|
+
for (const entry of entries) {
|
|
702
|
+
const delta = entry.feedback.delta;
|
|
703
|
+
let placed = false;
|
|
704
|
+
for (const cluster of clustered) {
|
|
705
|
+
if (Math.abs(cluster.representative - delta) <= 0.2) {
|
|
706
|
+
cluster.members.push(entry);
|
|
707
|
+
// Update representative as mean
|
|
708
|
+
cluster.representative =
|
|
709
|
+
cluster.members.reduce((sum, m) => sum + m.feedback.delta, 0) / cluster.members.length;
|
|
710
|
+
placed = true;
|
|
711
|
+
break;
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
if (!placed) {
|
|
715
|
+
clustered.push({ representative: delta, members: [entry] });
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
// Only keep clusters where 2+ distinct goals are represented
|
|
719
|
+
for (const cluster of clustered) {
|
|
720
|
+
const goalSet = new Set(cluster.members.map((m) => m.goalId));
|
|
721
|
+
if (goalSet.size < 2)
|
|
722
|
+
continue;
|
|
723
|
+
const avgDelta = cluster.representative;
|
|
724
|
+
const patternType = avgDelta < -0.05
|
|
725
|
+
? "success"
|
|
726
|
+
: avgDelta > 0.05
|
|
727
|
+
? "failure"
|
|
728
|
+
: "optimization";
|
|
729
|
+
const sourceGoalIds = Array.from(goalSet);
|
|
730
|
+
const occurrenceCount = cluster.members.length;
|
|
731
|
+
const confidence = goalSet.size / goalIds.length;
|
|
732
|
+
// Build suggested action from feedbackType
|
|
733
|
+
const suggestedAction = this._buildSuggestedAction(feedbackType, avgDelta);
|
|
734
|
+
// Build applicable conditions from context keys
|
|
735
|
+
const conditionSet = new Set();
|
|
736
|
+
for (const m of cluster.members) {
|
|
737
|
+
for (const key of Object.keys(m.feedback.context)) {
|
|
738
|
+
conditionSet.add(key);
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
const applicableConditions = Array.from(conditionSet);
|
|
742
|
+
const description = `${feedbackType} pattern: avg delta=${avgDelta.toFixed(2)} observed across ${sourceGoalIds.length} goals`;
|
|
743
|
+
const pattern = CrossGoalPatternSchema.parse({
|
|
744
|
+
id: `cgp_${randomUUID()}`,
|
|
745
|
+
patternType,
|
|
746
|
+
description,
|
|
747
|
+
sourceGoalIds,
|
|
748
|
+
feedbackType,
|
|
749
|
+
confidence,
|
|
750
|
+
applicableConditions,
|
|
751
|
+
suggestedAction,
|
|
752
|
+
occurrenceCount,
|
|
753
|
+
lastObserved: now,
|
|
754
|
+
});
|
|
755
|
+
patterns.push(pattern);
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
return patterns;
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Apply cross-goal patterns to target goals as feedback insights.
|
|
762
|
+
* For each target goal, patterns whose applicableConditions match the goal's
|
|
763
|
+
* feedback context keys are applied.
|
|
764
|
+
*/
|
|
765
|
+
sharePatternsAcrossGoals(patterns, targetGoalIds) {
|
|
766
|
+
let patternsShared = 0;
|
|
767
|
+
const newPatterns = [];
|
|
768
|
+
const affectedGoals = new Set();
|
|
769
|
+
for (const targetGoalId of targetGoalIds) {
|
|
770
|
+
// Gather context keys from existing structural feedback
|
|
771
|
+
const existingFeedback = this.getStructuralFeedback(targetGoalId);
|
|
772
|
+
const existingContextKeys = new Set();
|
|
773
|
+
for (const fb of existingFeedback) {
|
|
774
|
+
for (const key of Object.keys(fb.context)) {
|
|
775
|
+
existingContextKeys.add(key);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
for (const pattern of patterns) {
|
|
779
|
+
// Skip if target goal is already a source
|
|
780
|
+
if (pattern.sourceGoalIds.includes(targetGoalId)) {
|
|
781
|
+
continue;
|
|
782
|
+
}
|
|
783
|
+
// Check if applicableConditions match: either no conditions (universal)
|
|
784
|
+
// or at least one condition key exists in the target's context
|
|
785
|
+
const conditionsMatch = pattern.applicableConditions.length === 0 ||
|
|
786
|
+
pattern.applicableConditions.some((c) => existingContextKeys.has(c));
|
|
787
|
+
if (!conditionsMatch) {
|
|
788
|
+
continue;
|
|
789
|
+
}
|
|
790
|
+
// Generate a synthetic StructuralFeedback entry to represent this shared pattern
|
|
791
|
+
const syntheticFeedback = StructuralFeedbackSchema.parse({
|
|
792
|
+
id: `sf_shared_${randomUUID()}`,
|
|
793
|
+
goalId: targetGoalId,
|
|
794
|
+
iterationId: `shared_from_cross_goal_pattern_${pattern.id}`,
|
|
795
|
+
feedbackType: pattern.feedbackType,
|
|
796
|
+
expected: pattern.suggestedAction,
|
|
797
|
+
actual: pattern.description,
|
|
798
|
+
delta: pattern.patternType === "success" ? -0.1 : pattern.patternType === "failure" ? 0.1 : 0,
|
|
799
|
+
timestamp: new Date().toISOString(),
|
|
800
|
+
context: {
|
|
801
|
+
cross_goal_pattern_id: pattern.id,
|
|
802
|
+
source_goal_count: pattern.sourceGoalIds.length,
|
|
803
|
+
},
|
|
804
|
+
});
|
|
805
|
+
this.recordStructuralFeedback(syntheticFeedback);
|
|
806
|
+
patternsShared++;
|
|
807
|
+
affectedGoals.add(targetGoalId);
|
|
808
|
+
newPatterns.push(pattern);
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
return {
|
|
812
|
+
patternsExtracted: patterns.length,
|
|
813
|
+
patternsShared,
|
|
814
|
+
targetGoalIds: Array.from(affectedGoals),
|
|
815
|
+
newPatterns,
|
|
816
|
+
};
|
|
817
|
+
}
|
|
818
|
+
// ─── Private helpers ───
|
|
819
|
+
_buildSuggestedAction(feedbackType, avgDelta) {
|
|
820
|
+
switch (feedbackType) {
|
|
821
|
+
case "observation_accuracy":
|
|
822
|
+
return avgDelta < 0
|
|
823
|
+
? "Improve observation accuracy by cross-checking with data sources"
|
|
824
|
+
: "Maintain current observation approach";
|
|
825
|
+
case "strategy_selection":
|
|
826
|
+
return avgDelta < 0
|
|
827
|
+
? "Switch to incremental strategy to reduce risk"
|
|
828
|
+
: "Continue current strategy selection";
|
|
829
|
+
case "scope_sizing":
|
|
830
|
+
return avgDelta < 0
|
|
831
|
+
? "Reduce task scope to smaller units"
|
|
832
|
+
: "Increase task scope for efficiency";
|
|
833
|
+
case "task_generation":
|
|
834
|
+
return avgDelta < 0
|
|
835
|
+
? "Refine task generation templates"
|
|
836
|
+
: "Reinforce current task generation approach";
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
//# sourceMappingURL=learning-pipeline.js.map
|