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,736 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { CuriosityStateSchema, CuriosityTriggerSchema, CuriosityProposalSchema, CuriosityConfigSchema, LearningRecordSchema, } from "./types/curiosity.js";
|
|
4
|
+
// ─── Constants ───
|
|
5
|
+
const CURIOSITY_STATE_PATH = "curiosity/state.json";
|
|
6
|
+
// ─── LLM Proposal Schema (for parsing LLM output) ───
|
|
7
|
+
const LLMProposalItemSchema = z.object({
|
|
8
|
+
description: z.string(),
|
|
9
|
+
rationale: z.string(),
|
|
10
|
+
suggested_dimensions: z
|
|
11
|
+
.array(z.object({
|
|
12
|
+
name: z.string(),
|
|
13
|
+
threshold_type: z.string(),
|
|
14
|
+
target: z.number(),
|
|
15
|
+
}))
|
|
16
|
+
.default([]),
|
|
17
|
+
scope_domain: z.string(),
|
|
18
|
+
detection_method: z
|
|
19
|
+
.enum([
|
|
20
|
+
"observation_log",
|
|
21
|
+
"stall_pattern",
|
|
22
|
+
"cross_goal_transfer",
|
|
23
|
+
"llm_heuristic",
|
|
24
|
+
"periodic_review",
|
|
25
|
+
"embedding_similarity",
|
|
26
|
+
])
|
|
27
|
+
.default("llm_heuristic"),
|
|
28
|
+
});
|
|
29
|
+
const LLMProposalsResponseSchema = z.array(LLMProposalItemSchema);
|
|
30
|
+
// ─── CuriosityEngine ───
|
|
31
|
+
/**
|
|
32
|
+
* CuriosityEngine implements Stage 11C (Curiosity MVP).
|
|
33
|
+
*
|
|
34
|
+
* It acts as a meta-motivator: while the 3 drive forces (dissatisfaction,
|
|
35
|
+
* deadline, opportunity) select tasks within existing goals, CuriosityEngine
|
|
36
|
+
* proposes new goals or goal restructurings based on learning feedback.
|
|
37
|
+
*
|
|
38
|
+
* Key responsibilities:
|
|
39
|
+
* - Evaluate 5 trigger conditions (§2 of curiosity.md)
|
|
40
|
+
* - Generate LLM-based proposals, filtered by ethics gate
|
|
41
|
+
* - Track proposal lifecycle (pending → approved/rejected/expired/auto_closed)
|
|
42
|
+
* - Enforce constraints: max proposals, rejection cooldown, resource budget
|
|
43
|
+
* - Persist all state to curiosity/state.json via StateManager
|
|
44
|
+
*/
|
|
45
|
+
export class CuriosityEngine {
|
|
46
|
+
stateManager;
|
|
47
|
+
llmClient;
|
|
48
|
+
ethicsGate;
|
|
49
|
+
satisficingJudge;
|
|
50
|
+
stallDetector;
|
|
51
|
+
observationEngine;
|
|
52
|
+
driveSystem;
|
|
53
|
+
vectorIndex;
|
|
54
|
+
knowledgeTransfer;
|
|
55
|
+
config;
|
|
56
|
+
state;
|
|
57
|
+
constructor(deps) {
|
|
58
|
+
this.stateManager = deps.stateManager;
|
|
59
|
+
this.llmClient = deps.llmClient;
|
|
60
|
+
this.ethicsGate = deps.ethicsGate;
|
|
61
|
+
this.satisficingJudge = deps.satisficingJudge;
|
|
62
|
+
this.stallDetector = deps.stallDetector;
|
|
63
|
+
this.observationEngine = deps.observationEngine;
|
|
64
|
+
this.driveSystem = deps.driveSystem;
|
|
65
|
+
this.vectorIndex = deps.vectorIndex;
|
|
66
|
+
this.knowledgeTransfer = deps.knowledgeTransfer;
|
|
67
|
+
// Merge user config with defaults
|
|
68
|
+
this.config = CuriosityConfigSchema.parse(deps.config ?? {});
|
|
69
|
+
// Load persisted state (or initialize empty)
|
|
70
|
+
this.state = this.loadState();
|
|
71
|
+
}
|
|
72
|
+
// ─── State Persistence ───
|
|
73
|
+
loadState() {
|
|
74
|
+
const raw = this.stateManager.readRaw(CURIOSITY_STATE_PATH);
|
|
75
|
+
if (raw === null) {
|
|
76
|
+
return CuriosityStateSchema.parse({
|
|
77
|
+
proposals: [],
|
|
78
|
+
learning_records: [],
|
|
79
|
+
last_exploration_at: null,
|
|
80
|
+
rejected_proposal_hashes: [],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
return CuriosityStateSchema.parse(raw);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Corrupt state — start fresh
|
|
88
|
+
return CuriosityStateSchema.parse({
|
|
89
|
+
proposals: [],
|
|
90
|
+
learning_records: [],
|
|
91
|
+
last_exploration_at: null,
|
|
92
|
+
rejected_proposal_hashes: [],
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
saveState() {
|
|
97
|
+
const parsed = CuriosityStateSchema.parse(this.state);
|
|
98
|
+
this.stateManager.writeRaw(CURIOSITY_STATE_PATH, parsed);
|
|
99
|
+
}
|
|
100
|
+
// ─── Trigger Helpers ───
|
|
101
|
+
/**
|
|
102
|
+
* 2.1: All active user goals are completed or waiting.
|
|
103
|
+
*/
|
|
104
|
+
checkTaskQueueEmpty(goals) {
|
|
105
|
+
const userGoals = goals.filter((g) => g.origin !== "curiosity" || g.origin === null);
|
|
106
|
+
if (userGoals.length === 0)
|
|
107
|
+
return null;
|
|
108
|
+
const allInactive = userGoals.every((g) => g.status === "completed" || g.status === "waiting");
|
|
109
|
+
if (!allInactive)
|
|
110
|
+
return null;
|
|
111
|
+
return CuriosityTriggerSchema.parse({
|
|
112
|
+
type: "task_queue_empty",
|
|
113
|
+
detected_at: new Date().toISOString(),
|
|
114
|
+
source_goal_id: null,
|
|
115
|
+
details: `All ${userGoals.length} user goal(s) are completed or waiting. Entering curiosity mode.`,
|
|
116
|
+
severity: 0.8,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 2.2: Unexpected observation — a dimension's value deviates significantly
|
|
121
|
+
* from its historical mean (> threshold * stddev).
|
|
122
|
+
*/
|
|
123
|
+
checkUnexpectedObservation(goals) {
|
|
124
|
+
const threshold = this.config.unexpected_observation_threshold;
|
|
125
|
+
for (const goal of goals) {
|
|
126
|
+
if (goal.status !== "active")
|
|
127
|
+
continue;
|
|
128
|
+
for (const dim of goal.dimensions) {
|
|
129
|
+
const history = dim.history;
|
|
130
|
+
if (history.length < 4)
|
|
131
|
+
continue; // need enough data
|
|
132
|
+
// Compute mean and stddev of numeric history values
|
|
133
|
+
const numericValues = history
|
|
134
|
+
.map((h) => (typeof h.value === "number" ? h.value : null))
|
|
135
|
+
.filter((v) => v !== null);
|
|
136
|
+
if (numericValues.length < 4)
|
|
137
|
+
continue;
|
|
138
|
+
const mean = numericValues.reduce((a, b) => a + b, 0) / numericValues.length;
|
|
139
|
+
const variance = numericValues.reduce((a, b) => a + (b - mean) ** 2, 0) /
|
|
140
|
+
numericValues.length;
|
|
141
|
+
const stddev = Math.sqrt(variance);
|
|
142
|
+
if (stddev === 0)
|
|
143
|
+
continue;
|
|
144
|
+
const currentValue = dim.current_value;
|
|
145
|
+
if (typeof currentValue !== "number")
|
|
146
|
+
continue;
|
|
147
|
+
const deviation = Math.abs(currentValue - mean);
|
|
148
|
+
if (deviation > threshold * stddev) {
|
|
149
|
+
return CuriosityTriggerSchema.parse({
|
|
150
|
+
type: "unexpected_observation",
|
|
151
|
+
detected_at: new Date().toISOString(),
|
|
152
|
+
source_goal_id: goal.id,
|
|
153
|
+
details: `Dimension "${dim.name}" in goal "${goal.id}" deviated ${deviation.toFixed(2)} from mean ${mean.toFixed(2)} (stddev=${stddev.toFixed(2)}, threshold=${threshold}σ).`,
|
|
154
|
+
severity: Math.min(1.0, deviation / (stddev * threshold * 2)),
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 2.3: Repeated domain failures — StallDetector reports consecutive_failure
|
|
163
|
+
* or global_stall for any active user goal.
|
|
164
|
+
*/
|
|
165
|
+
checkRepeatedFailures(goals) {
|
|
166
|
+
const activeUserGoals = goals.filter((g) => g.status === "active" && g.origin !== "curiosity");
|
|
167
|
+
for (const goal of activeUserGoals) {
|
|
168
|
+
const stallState = this.stallDetector.getStallState(goal.id);
|
|
169
|
+
// Check dimension-level escalation: any dimension with escalation_level > 0
|
|
170
|
+
// that was caused by consecutive failures
|
|
171
|
+
const hasConsecutiveFailure = Object.entries(stallState.dimension_escalation).some(([, level]) => level > 0);
|
|
172
|
+
if (hasConsecutiveFailure) {
|
|
173
|
+
const stalledDims = Object.entries(stallState.dimension_escalation)
|
|
174
|
+
.filter(([, level]) => level > 0)
|
|
175
|
+
.map(([dim]) => dim);
|
|
176
|
+
return CuriosityTriggerSchema.parse({
|
|
177
|
+
type: "repeated_failure",
|
|
178
|
+
detected_at: new Date().toISOString(),
|
|
179
|
+
source_goal_id: goal.id,
|
|
180
|
+
details: `Goal "${goal.id}" has escalated stall on dimension(s): ${stalledDims.join(", ")}. Task-level approaches are failing; goal structure may need revision.`,
|
|
181
|
+
severity: 0.7,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* 2.4: Goal Reviewer found undefined problems — dimensions with very low
|
|
189
|
+
* observation confidence indicate unmapped important problems.
|
|
190
|
+
*/
|
|
191
|
+
checkUndefinedProblems(goals) {
|
|
192
|
+
const activeGoals = goals.filter((g) => g.status === "active");
|
|
193
|
+
for (const goal of activeGoals) {
|
|
194
|
+
// Look for dimensions with extremely low confidence (< 0.3)
|
|
195
|
+
// that represent important but poorly understood aspects
|
|
196
|
+
const lowConfidenceDims = goal.dimensions.filter((d) => d.confidence < 0.3);
|
|
197
|
+
if (lowConfidenceDims.length > 0 && goal.dimensions.length > 0) {
|
|
198
|
+
const ratio = lowConfidenceDims.length / goal.dimensions.length;
|
|
199
|
+
// Trigger only when more than half the dimensions are poorly observed
|
|
200
|
+
if (ratio >= 0.5) {
|
|
201
|
+
const dimNames = lowConfidenceDims.map((d) => d.name).join(", ");
|
|
202
|
+
return CuriosityTriggerSchema.parse({
|
|
203
|
+
type: "undefined_problem",
|
|
204
|
+
detected_at: new Date().toISOString(),
|
|
205
|
+
source_goal_id: goal.id,
|
|
206
|
+
details: `Goal "${goal.id}" has ${lowConfidenceDims.length} dimension(s) with very low confidence (< 0.3): ${dimNames}. Current goal structure may not cover the real problem space.`,
|
|
207
|
+
severity: 0.5 + ratio * 0.3,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* 2.5: Periodic exploration — has it been >= periodic_exploration_hours
|
|
216
|
+
* since the last exploration trigger?
|
|
217
|
+
*/
|
|
218
|
+
checkPeriodicExploration() {
|
|
219
|
+
const lastExploration = this.state.last_exploration_at;
|
|
220
|
+
const intervalMs = this.config.periodic_exploration_hours * 60 * 60 * 1000;
|
|
221
|
+
if (lastExploration === null) {
|
|
222
|
+
// Never explored — trigger immediately
|
|
223
|
+
return CuriosityTriggerSchema.parse({
|
|
224
|
+
type: "periodic_exploration",
|
|
225
|
+
detected_at: new Date().toISOString(),
|
|
226
|
+
source_goal_id: null,
|
|
227
|
+
details: `First periodic exploration check. No previous exploration recorded.`,
|
|
228
|
+
severity: 0.3,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
const elapsed = Date.now() - new Date(lastExploration).getTime();
|
|
232
|
+
if (elapsed >= intervalMs) {
|
|
233
|
+
const hoursElapsed = (elapsed / (1000 * 60 * 60)).toFixed(1);
|
|
234
|
+
return CuriosityTriggerSchema.parse({
|
|
235
|
+
type: "periodic_exploration",
|
|
236
|
+
detected_at: new Date().toISOString(),
|
|
237
|
+
source_goal_id: null,
|
|
238
|
+
details: `${hoursElapsed} hours since last exploration (threshold: ${this.config.periodic_exploration_hours}h). Periodic curiosity check.`,
|
|
239
|
+
severity: 0.3,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
// ─── LLM Prompt Building ───
|
|
245
|
+
buildProposalPrompt(trigger, goals, learningRecords) {
|
|
246
|
+
const activeGoalsSummary = goals
|
|
247
|
+
.filter((g) => g.status === "active" || g.status === "waiting")
|
|
248
|
+
.map((g) => {
|
|
249
|
+
const dimNames = g.dimensions.map((d) => d.name).join(", ");
|
|
250
|
+
return `- Goal "${g.id}" (${g.title}): dimensions=[${dimNames}], origin=${g.origin ?? "user"}`;
|
|
251
|
+
})
|
|
252
|
+
.join("\n");
|
|
253
|
+
const recentLearning = learningRecords
|
|
254
|
+
.slice(-10) // last 10 records
|
|
255
|
+
.map((r) => `- Goal ${r.goal_id}, dim "${r.dimension_name}", approach "${r.approach}": ${r.outcome} (improvement_ratio=${r.improvement_ratio.toFixed(2)})`)
|
|
256
|
+
.join("\n");
|
|
257
|
+
return `You are Motiva, an AI agent orchestrator analyzing curiosity triggers to propose new exploration goals.
|
|
258
|
+
|
|
259
|
+
## Current Trigger
|
|
260
|
+
Type: ${trigger.type}
|
|
261
|
+
Details: ${trigger.details}
|
|
262
|
+
Severity: ${trigger.severity}
|
|
263
|
+
${trigger.source_goal_id ? `Source goal: ${trigger.source_goal_id}` : ""}
|
|
264
|
+
|
|
265
|
+
## Active Goals
|
|
266
|
+
${activeGoalsSummary || "(none)"}
|
|
267
|
+
|
|
268
|
+
## Recent Learning Records
|
|
269
|
+
${recentLearning || "(none)"}
|
|
270
|
+
|
|
271
|
+
## Task
|
|
272
|
+
Based on the trigger and learning history, propose 1-3 curiosity goals that:
|
|
273
|
+
1. Are grounded in the trigger and learning evidence (not generic advice)
|
|
274
|
+
2. Are directly related to the user's current goal domains or 1-step adjacent
|
|
275
|
+
3. Have clear rationale based on observed patterns
|
|
276
|
+
|
|
277
|
+
Return a JSON array of proposal objects. Each object must have:
|
|
278
|
+
- description: string — what to explore (specific, actionable)
|
|
279
|
+
- rationale: string — why this is worth exploring (cite the trigger/learning evidence)
|
|
280
|
+
- suggested_dimensions: array of { name: string, threshold_type: string, target: number }
|
|
281
|
+
- scope_domain: string — domain this exploration belongs to
|
|
282
|
+
- detection_method: one of "observation_log" | "stall_pattern" | "cross_goal_transfer" | "llm_heuristic" | "periodic_review"
|
|
283
|
+
|
|
284
|
+
Return only valid JSON array, no markdown, no explanation outside the JSON.`;
|
|
285
|
+
}
|
|
286
|
+
// ─── Proposal Hash (for rejection cooldown dedup) ───
|
|
287
|
+
/**
|
|
288
|
+
* Compute a simple hash for a proposal description to track rejected proposals.
|
|
289
|
+
* Uses a normalized lowercase version of the first 100 chars.
|
|
290
|
+
*/
|
|
291
|
+
computeProposalHash(description) {
|
|
292
|
+
const normalized = description.toLowerCase().trim().slice(0, 100);
|
|
293
|
+
// Simple djb2-style hash as a hex string
|
|
294
|
+
let hash = 5381;
|
|
295
|
+
for (let i = 0; i < normalized.length; i++) {
|
|
296
|
+
hash = (hash * 33) ^ normalized.charCodeAt(i);
|
|
297
|
+
}
|
|
298
|
+
return (hash >>> 0).toString(16);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Check if a proposal description is currently in rejection cooldown.
|
|
302
|
+
*/
|
|
303
|
+
isInRejectionCooldown(description) {
|
|
304
|
+
const hash = this.computeProposalHash(description);
|
|
305
|
+
return this.state.rejected_proposal_hashes.includes(hash);
|
|
306
|
+
}
|
|
307
|
+
// ─── Public API ───
|
|
308
|
+
/**
|
|
309
|
+
* Evaluate all 5 trigger conditions against current goal state.
|
|
310
|
+
* Returns an array of fired triggers (may be empty if none fire).
|
|
311
|
+
*/
|
|
312
|
+
evaluateTriggers(goals) {
|
|
313
|
+
if (!this.config.enabled)
|
|
314
|
+
return [];
|
|
315
|
+
const triggers = [];
|
|
316
|
+
const t1 = this.checkTaskQueueEmpty(goals);
|
|
317
|
+
if (t1)
|
|
318
|
+
triggers.push(t1);
|
|
319
|
+
const t2 = this.checkUnexpectedObservation(goals);
|
|
320
|
+
if (t2)
|
|
321
|
+
triggers.push(t2);
|
|
322
|
+
const t3 = this.checkRepeatedFailures(goals);
|
|
323
|
+
if (t3)
|
|
324
|
+
triggers.push(t3);
|
|
325
|
+
const t4 = this.checkUndefinedProblems(goals);
|
|
326
|
+
if (t4)
|
|
327
|
+
triggers.push(t4);
|
|
328
|
+
const t5 = this.checkPeriodicExploration();
|
|
329
|
+
if (t5)
|
|
330
|
+
triggers.push(t5);
|
|
331
|
+
return triggers;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Generate curiosity proposals using the LLM, filtered by ethics gate.
|
|
335
|
+
*
|
|
336
|
+
* - Respects max_active_proposals limit (skips generation if at capacity)
|
|
337
|
+
* - Skips proposals in rejection cooldown
|
|
338
|
+
* - Runs ethics check on each proposal before adding
|
|
339
|
+
* - Updates last_exploration_at on any periodic_exploration trigger
|
|
340
|
+
* - Saves state after mutation
|
|
341
|
+
*/
|
|
342
|
+
async generateProposals(triggers, goals) {
|
|
343
|
+
if (!this.config.enabled || triggers.length === 0)
|
|
344
|
+
return [];
|
|
345
|
+
// Check capacity
|
|
346
|
+
const activeProposals = this.getActiveProposals();
|
|
347
|
+
if (activeProposals.length >= this.config.max_active_proposals) {
|
|
348
|
+
return [];
|
|
349
|
+
}
|
|
350
|
+
const newProposals = [];
|
|
351
|
+
const now = new Date();
|
|
352
|
+
const expiresAt = new Date(now.getTime() + this.config.proposal_expiry_hours * 60 * 60 * 1000);
|
|
353
|
+
// Update last_exploration_at for periodic triggers
|
|
354
|
+
const hasPeriodicTrigger = triggers.some((t) => t.type === "periodic_exploration");
|
|
355
|
+
if (hasPeriodicTrigger) {
|
|
356
|
+
this.state.last_exploration_at = now.toISOString();
|
|
357
|
+
}
|
|
358
|
+
// Process each trigger (stop when at capacity)
|
|
359
|
+
for (const trigger of triggers) {
|
|
360
|
+
if (activeProposals.length + newProposals.length >=
|
|
361
|
+
this.config.max_active_proposals) {
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
let llmItems = [];
|
|
365
|
+
try {
|
|
366
|
+
const prompt = this.buildProposalPrompt(trigger, goals, this.state.learning_records);
|
|
367
|
+
const response = await this.llmClient.sendMessage([{ role: "user", content: prompt }], { temperature: 0.3 });
|
|
368
|
+
llmItems = this.llmClient.parseJSON(response.content, LLMProposalsResponseSchema);
|
|
369
|
+
}
|
|
370
|
+
catch (err) {
|
|
371
|
+
// Don't throw on LLM failure — return what we have so far
|
|
372
|
+
console.warn(`CuriosityEngine: LLM proposal generation failed for trigger "${trigger.type}": ${err}`);
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
for (const item of llmItems) {
|
|
376
|
+
if (activeProposals.length + newProposals.length >=
|
|
377
|
+
this.config.max_active_proposals) {
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
// Skip if in rejection cooldown
|
|
381
|
+
if (this.isInRejectionCooldown(item.description)) {
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
// Run ethics check
|
|
385
|
+
const proposalId = randomUUID();
|
|
386
|
+
let ethicsVerdict = { verdict: "pass" };
|
|
387
|
+
try {
|
|
388
|
+
ethicsVerdict = await this.ethicsGate.check("goal", proposalId, item.description, `Curiosity proposal triggered by: ${trigger.type}`);
|
|
389
|
+
}
|
|
390
|
+
catch (err) {
|
|
391
|
+
// On ethics check failure, skip this proposal (conservative)
|
|
392
|
+
console.warn(`CuriosityEngine: ethics check failed for proposal "${item.description.slice(0, 60)}": ${err}`);
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
if (ethicsVerdict.verdict === "reject") {
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
// Phase 2: use embedding_similarity detection method when vectorIndex
|
|
399
|
+
// is available and the trigger is undefined_problem
|
|
400
|
+
const detectionMethod = this.vectorIndex && trigger.type === "undefined_problem"
|
|
401
|
+
? "embedding_similarity"
|
|
402
|
+
: item.detection_method;
|
|
403
|
+
const proposal = CuriosityProposalSchema.parse({
|
|
404
|
+
id: proposalId,
|
|
405
|
+
trigger,
|
|
406
|
+
proposed_goal: {
|
|
407
|
+
description: item.description,
|
|
408
|
+
rationale: item.rationale,
|
|
409
|
+
suggested_dimensions: item.suggested_dimensions,
|
|
410
|
+
scope_domain: item.scope_domain,
|
|
411
|
+
detection_method: detectionMethod,
|
|
412
|
+
},
|
|
413
|
+
status: "pending",
|
|
414
|
+
created_at: now.toISOString(),
|
|
415
|
+
expires_at: expiresAt.toISOString(),
|
|
416
|
+
reviewed_at: null,
|
|
417
|
+
rejection_cooldown_until: null,
|
|
418
|
+
loop_count: 0,
|
|
419
|
+
goal_id: null,
|
|
420
|
+
});
|
|
421
|
+
newProposals.push(proposal);
|
|
422
|
+
this.state.proposals.push(proposal);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// ─── Stage 14F: Transfer-based curiosity proposals ───
|
|
426
|
+
// If knowledgeTransfer is available, detect cross-goal transfer opportunities
|
|
427
|
+
// and add them as curiosity proposals (suggestion-only, Phase 1).
|
|
428
|
+
if (this.knowledgeTransfer && goals.length > 0) {
|
|
429
|
+
const activeGoals = goals.filter((g) => g.status === "active");
|
|
430
|
+
for (const goal of activeGoals) {
|
|
431
|
+
if (activeProposals.length + newProposals.length >=
|
|
432
|
+
this.config.max_active_proposals) {
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
try {
|
|
436
|
+
const transferCandidates = await this.knowledgeTransfer.detectTransferOpportunities(goal.id);
|
|
437
|
+
for (const candidate of transferCandidates) {
|
|
438
|
+
if (activeProposals.length + newProposals.length >=
|
|
439
|
+
this.config.max_active_proposals) {
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
const description = `Apply pattern from goal ${candidate.source_goal_id} to goal ${candidate.target_goal_id}: ${candidate.estimated_benefit}`;
|
|
443
|
+
// Skip if in rejection cooldown
|
|
444
|
+
if (this.isInRejectionCooldown(description)) {
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
447
|
+
// Create a synthetic trigger for the transfer-based proposal.
|
|
448
|
+
// Uses "periodic_exploration" type as the closest match for
|
|
449
|
+
// cross-goal opportunity discovery (no dedicated transfer type exists).
|
|
450
|
+
const transferTrigger = CuriosityTriggerSchema.parse({
|
|
451
|
+
type: "periodic_exploration",
|
|
452
|
+
detected_at: now.toISOString(),
|
|
453
|
+
source_goal_id: candidate.source_goal_id,
|
|
454
|
+
details: `Cross-goal transfer candidate (similarity=${candidate.similarity_score.toFixed(2)}): ${candidate.estimated_benefit}`,
|
|
455
|
+
severity: candidate.similarity_score,
|
|
456
|
+
});
|
|
457
|
+
const proposalId = randomUUID();
|
|
458
|
+
const proposal = CuriosityProposalSchema.parse({
|
|
459
|
+
id: proposalId,
|
|
460
|
+
trigger: transferTrigger,
|
|
461
|
+
proposed_goal: {
|
|
462
|
+
description,
|
|
463
|
+
rationale: `Cross-goal knowledge transfer opportunity detected (similarity=${candidate.similarity_score.toFixed(2)}). ${candidate.estimated_benefit}`,
|
|
464
|
+
suggested_dimensions: [],
|
|
465
|
+
scope_domain: goal.id,
|
|
466
|
+
detection_method: "cross_goal_transfer",
|
|
467
|
+
},
|
|
468
|
+
status: "pending",
|
|
469
|
+
created_at: now.toISOString(),
|
|
470
|
+
expires_at: expiresAt.toISOString(),
|
|
471
|
+
reviewed_at: null,
|
|
472
|
+
rejection_cooldown_until: null,
|
|
473
|
+
loop_count: 0,
|
|
474
|
+
goal_id: null,
|
|
475
|
+
});
|
|
476
|
+
newProposals.push(proposal);
|
|
477
|
+
this.state.proposals.push(proposal);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
catch {
|
|
481
|
+
// Non-fatal: transfer detection failure should not block curiosity generation
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
this.saveState();
|
|
486
|
+
return newProposals;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Approve a pending proposal by ID.
|
|
490
|
+
* Sets status to "approved" and records reviewed_at.
|
|
491
|
+
* Throws if proposal is not found or not in "pending" status.
|
|
492
|
+
*/
|
|
493
|
+
approveProposal(proposalId) {
|
|
494
|
+
const index = this.state.proposals.findIndex((p) => p.id === proposalId);
|
|
495
|
+
if (index === -1) {
|
|
496
|
+
throw new Error(`CuriosityEngine.approveProposal: proposal "${proposalId}" not found`);
|
|
497
|
+
}
|
|
498
|
+
const proposal = this.state.proposals[index];
|
|
499
|
+
if (proposal.status !== "pending") {
|
|
500
|
+
throw new Error(`CuriosityEngine.approveProposal: proposal "${proposalId}" is not pending (status=${proposal.status})`);
|
|
501
|
+
}
|
|
502
|
+
const updated = CuriosityProposalSchema.parse({
|
|
503
|
+
...proposal,
|
|
504
|
+
status: "approved",
|
|
505
|
+
reviewed_at: new Date().toISOString(),
|
|
506
|
+
});
|
|
507
|
+
this.state.proposals[index] = updated;
|
|
508
|
+
this.saveState();
|
|
509
|
+
return updated;
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Reject a pending proposal by ID.
|
|
513
|
+
* Sets status to "rejected", records reviewed_at, and sets rejection_cooldown_until.
|
|
514
|
+
* Also adds the proposal hash to rejected_proposal_hashes for cooldown tracking.
|
|
515
|
+
* Throws if proposal is not found or not in "pending" status.
|
|
516
|
+
*/
|
|
517
|
+
rejectProposal(proposalId) {
|
|
518
|
+
const index = this.state.proposals.findIndex((p) => p.id === proposalId);
|
|
519
|
+
if (index === -1) {
|
|
520
|
+
throw new Error(`CuriosityEngine.rejectProposal: proposal "${proposalId}" not found`);
|
|
521
|
+
}
|
|
522
|
+
const proposal = this.state.proposals[index];
|
|
523
|
+
if (proposal.status !== "pending") {
|
|
524
|
+
throw new Error(`CuriosityEngine.rejectProposal: proposal "${proposalId}" is not pending (status=${proposal.status})`);
|
|
525
|
+
}
|
|
526
|
+
const now = new Date();
|
|
527
|
+
const cooldownUntil = new Date(now.getTime() +
|
|
528
|
+
this.config.rejection_cooldown_hours * 60 * 60 * 1000);
|
|
529
|
+
const updated = CuriosityProposalSchema.parse({
|
|
530
|
+
...proposal,
|
|
531
|
+
status: "rejected",
|
|
532
|
+
reviewed_at: now.toISOString(),
|
|
533
|
+
rejection_cooldown_until: cooldownUntil.toISOString(),
|
|
534
|
+
});
|
|
535
|
+
this.state.proposals[index] = updated;
|
|
536
|
+
// Track hash for cooldown deduplication
|
|
537
|
+
const hash = this.computeProposalHash(proposal.proposed_goal.description);
|
|
538
|
+
if (!this.state.rejected_proposal_hashes.includes(hash)) {
|
|
539
|
+
this.state.rejected_proposal_hashes.push(hash);
|
|
540
|
+
}
|
|
541
|
+
this.saveState();
|
|
542
|
+
return updated;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Expire pending proposals past their expires_at date, and auto-close
|
|
546
|
+
* approved proposals that have reached the unproductive_loop_limit.
|
|
547
|
+
*
|
|
548
|
+
* Returns the list of proposals that were changed in this call.
|
|
549
|
+
*/
|
|
550
|
+
checkAutoExpiration() {
|
|
551
|
+
const now = new Date();
|
|
552
|
+
const changed = [];
|
|
553
|
+
this.state.proposals = this.state.proposals.map((p) => {
|
|
554
|
+
// Expire pending proposals past expires_at
|
|
555
|
+
if (p.status === "pending" && new Date(p.expires_at) <= now) {
|
|
556
|
+
const updated = CuriosityProposalSchema.parse({
|
|
557
|
+
...p,
|
|
558
|
+
status: "expired",
|
|
559
|
+
});
|
|
560
|
+
changed.push(updated);
|
|
561
|
+
return updated;
|
|
562
|
+
}
|
|
563
|
+
// Auto-close approved proposals at or past the unproductive loop limit
|
|
564
|
+
if (p.status === "approved" &&
|
|
565
|
+
p.loop_count >= this.config.unproductive_loop_limit) {
|
|
566
|
+
const updated = CuriosityProposalSchema.parse({
|
|
567
|
+
...p,
|
|
568
|
+
status: "auto_closed",
|
|
569
|
+
});
|
|
570
|
+
changed.push(updated);
|
|
571
|
+
return updated;
|
|
572
|
+
}
|
|
573
|
+
return p;
|
|
574
|
+
});
|
|
575
|
+
if (changed.length > 0) {
|
|
576
|
+
this.saveState();
|
|
577
|
+
}
|
|
578
|
+
return changed;
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Increment loop_count for an approved curiosity proposal identified by its goal_id.
|
|
582
|
+
* No-op if no matching proposal is found.
|
|
583
|
+
*/
|
|
584
|
+
incrementLoopCount(goalId) {
|
|
585
|
+
let changed = false;
|
|
586
|
+
this.state.proposals = this.state.proposals.map((p) => {
|
|
587
|
+
if (p.status === "approved" && p.goal_id === goalId) {
|
|
588
|
+
changed = true;
|
|
589
|
+
return CuriosityProposalSchema.parse({
|
|
590
|
+
...p,
|
|
591
|
+
loop_count: p.loop_count + 1,
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
return p;
|
|
595
|
+
});
|
|
596
|
+
if (changed) {
|
|
597
|
+
this.saveState();
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Add a learning record to state and persist.
|
|
602
|
+
* Automatically sets recorded_at to now.
|
|
603
|
+
*/
|
|
604
|
+
recordLearning(record) {
|
|
605
|
+
const full = LearningRecordSchema.parse({
|
|
606
|
+
...record,
|
|
607
|
+
recorded_at: new Date().toISOString(),
|
|
608
|
+
});
|
|
609
|
+
this.state.learning_records.push(full);
|
|
610
|
+
this.saveState();
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Return all proposals with status "pending" or "approved".
|
|
614
|
+
*/
|
|
615
|
+
getActiveProposals() {
|
|
616
|
+
return this.state.proposals.filter((p) => p.status === "pending" || p.status === "approved");
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Quick check: are there any triggers that warrant curiosity?
|
|
620
|
+
* Used by CoreLoop to decide whether to run full evaluateTriggers.
|
|
621
|
+
*
|
|
622
|
+
* Returns true if:
|
|
623
|
+
* - Curiosity is enabled
|
|
624
|
+
* - Any of the quick-check conditions are met (task queue empty,
|
|
625
|
+
* periodic exploration overdue, or any stall state detected)
|
|
626
|
+
*/
|
|
627
|
+
shouldExplore(goals) {
|
|
628
|
+
if (!this.config.enabled)
|
|
629
|
+
return false;
|
|
630
|
+
// Quick check 1: task queue empty
|
|
631
|
+
const userGoals = goals.filter((g) => g.origin !== "curiosity");
|
|
632
|
+
if (userGoals.length > 0 &&
|
|
633
|
+
userGoals.every((g) => g.status === "completed" || g.status === "waiting")) {
|
|
634
|
+
return true;
|
|
635
|
+
}
|
|
636
|
+
// Quick check 2: periodic exploration overdue
|
|
637
|
+
const lastExploration = this.state.last_exploration_at;
|
|
638
|
+
if (lastExploration === null)
|
|
639
|
+
return true;
|
|
640
|
+
const intervalMs = this.config.periodic_exploration_hours * 60 * 60 * 1000;
|
|
641
|
+
if (Date.now() - new Date(lastExploration).getTime() >= intervalMs) {
|
|
642
|
+
return true;
|
|
643
|
+
}
|
|
644
|
+
// Quick check 3: any active goal has stall state with escalated dimensions
|
|
645
|
+
const activeGoals = goals.filter((g) => g.status === "active" && g.origin !== "curiosity");
|
|
646
|
+
for (const goal of activeGoals) {
|
|
647
|
+
const stallState = this.stallDetector.getStallState(goal.id);
|
|
648
|
+
const hasEscalated = Object.values(stallState.dimension_escalation).some((level) => level > 0);
|
|
649
|
+
if (hasEscalated)
|
|
650
|
+
return true;
|
|
651
|
+
}
|
|
652
|
+
return false;
|
|
653
|
+
}
|
|
654
|
+
// ─── Phase 2: Embedding-based Detection ───
|
|
655
|
+
/**
|
|
656
|
+
* Detect semantically similar dimensions across goals using VectorIndex.
|
|
657
|
+
* Returns cross-goal transfers with similarity > 0.7.
|
|
658
|
+
*/
|
|
659
|
+
async detectSemanticTransfer(goalId, dimensions) {
|
|
660
|
+
if (!this.vectorIndex)
|
|
661
|
+
return [];
|
|
662
|
+
const transfers = [];
|
|
663
|
+
for (const dim of dimensions) {
|
|
664
|
+
const results = await this.vectorIndex.search(dim, 5, 0.7);
|
|
665
|
+
for (const result of results) {
|
|
666
|
+
const sourceGoalId = result.metadata.goal_id;
|
|
667
|
+
if (sourceGoalId && sourceGoalId !== goalId) {
|
|
668
|
+
transfers.push({
|
|
669
|
+
source_goal_id: sourceGoalId,
|
|
670
|
+
dimension: dim,
|
|
671
|
+
similarity: result.similarity,
|
|
672
|
+
});
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
return transfers;
|
|
677
|
+
}
|
|
678
|
+
// ─── Stage 14F: KnowledgeTransfer Integration ───
|
|
679
|
+
/**
|
|
680
|
+
* Detect cross-goal knowledge transfer opportunities for all active goals.
|
|
681
|
+
* Requires knowledgeTransfer to be injected — returns [] otherwise.
|
|
682
|
+
*
|
|
683
|
+
* For each active goal, calls KnowledgeTransfer.detectTransferOpportunities()
|
|
684
|
+
* and converts the resulting TransferCandidates into a flat list.
|
|
685
|
+
* Results are suggestion-only (Phase 1); no transfers are applied automatically.
|
|
686
|
+
*/
|
|
687
|
+
async detectKnowledgeTransferOpportunities(goals) {
|
|
688
|
+
if (!this.knowledgeTransfer)
|
|
689
|
+
return [];
|
|
690
|
+
const activeGoals = goals.filter((g) => g.status === "active");
|
|
691
|
+
const allCandidates = [];
|
|
692
|
+
for (const goal of activeGoals) {
|
|
693
|
+
try {
|
|
694
|
+
const candidates = await this.knowledgeTransfer.detectTransferOpportunities(goal.id);
|
|
695
|
+
allCandidates.push(...candidates);
|
|
696
|
+
}
|
|
697
|
+
catch {
|
|
698
|
+
// non-fatal: transfer detection failure should not block curiosity loop
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
return allCandidates;
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* Calculate the allowed resource percentage for curiosity goals based on
|
|
705
|
+
* the current state of user goals.
|
|
706
|
+
*
|
|
707
|
+
* Returns:
|
|
708
|
+
* - 100 (no limit) if all user goals are completed
|
|
709
|
+
* - waiting_user_goals_max_percent if all user goals are waiting
|
|
710
|
+
* - active_user_goals_max_percent if any user goals are active
|
|
711
|
+
* - 0 if curiosity is disabled
|
|
712
|
+
*/
|
|
713
|
+
getResourceBudget(goals) {
|
|
714
|
+
if (!this.config.enabled)
|
|
715
|
+
return 0;
|
|
716
|
+
const userGoals = goals.filter((g) => g.origin !== "curiosity" && g.origin !== null);
|
|
717
|
+
// Also treat goals with no origin as user goals
|
|
718
|
+
const allUserGoals = goals.filter((g) => g.origin !== "curiosity");
|
|
719
|
+
if (allUserGoals.length === 0) {
|
|
720
|
+
// No user goals — unlimited curiosity budget
|
|
721
|
+
return 100;
|
|
722
|
+
}
|
|
723
|
+
const allCompleted = allUserGoals.every((g) => g.status === "completed");
|
|
724
|
+
if (allCompleted) {
|
|
725
|
+
return 100;
|
|
726
|
+
}
|
|
727
|
+
const allWaiting = allUserGoals.every((g) => g.status === "completed" || g.status === "waiting");
|
|
728
|
+
if (allWaiting) {
|
|
729
|
+
return this.config.resource_budget.waiting_user_goals_max_percent;
|
|
730
|
+
}
|
|
731
|
+
// Some goals are active — limited budget
|
|
732
|
+
void userGoals; // suppress unused-var warning; variable used above via allUserGoals
|
|
733
|
+
return this.config.resource_budget.active_user_goals_max_percent;
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
//# sourceMappingURL=curiosity-engine.js.map
|