groundswell 0.0.1 → 0.0.3
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/CHANGELOG.md +188 -0
- package/README.md +99 -5
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts +16 -0
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/attachChild-performance.test.js +187 -0
- package/dist/__tests__/adversarial/attachChild-performance.test.js.map +1 -0
- package/dist/__tests__/adversarial/circular-reference.test.d.ts +13 -0
- package/dist/__tests__/adversarial/circular-reference.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/circular-reference.test.js +92 -0
- package/dist/__tests__/adversarial/circular-reference.test.js.map +1 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts +16 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.js +127 -0
- package/dist/__tests__/adversarial/complex-circular-reference.test.js.map +1 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts +21 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js +667 -0
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js.map +1 -0
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts +6 -0
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/deep-analysis.test.js +877 -0
- package/dist/__tests__/adversarial/deep-analysis.test.js.map +1 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts +13 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js +186 -0
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js.map +1 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts +6 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js +626 -0
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js.map +1 -0
- package/dist/__tests__/adversarial/edge-case.test.d.ts +6 -0
- package/dist/__tests__/adversarial/edge-case.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/edge-case.test.js +857 -0
- package/dist/__tests__/adversarial/edge-case.test.js.map +1 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts +20 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.js +907 -0
- package/dist/__tests__/adversarial/error-merge-strategy.test.js.map +1 -0
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts +2 -0
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/incremental-performance.test.js +113 -0
- package/dist/__tests__/adversarial/incremental-performance.test.js.map +1 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts +22 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js +383 -0
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js.map +1 -0
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts +21 -0
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/observer-propagation.test.js +404 -0
- package/dist/__tests__/adversarial/observer-propagation.test.js.map +1 -0
- package/dist/__tests__/adversarial/parent-validation.test.d.ts +13 -0
- package/dist/__tests__/adversarial/parent-validation.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/parent-validation.test.js +128 -0
- package/dist/__tests__/adversarial/parent-validation.test.js.map +1 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts +20 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js +482 -0
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js.map +1 -0
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts +6 -0
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts.map +1 -0
- package/dist/__tests__/adversarial/prd-compliance.test.js +886 -0
- package/dist/__tests__/adversarial/prd-compliance.test.js.map +1 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts +22 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts.map +1 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.js +1843 -0
- package/dist/__tests__/compatibility/backward-compatibility.test.js.map +1 -0
- package/dist/__tests__/helpers/index.d.ts +10 -0
- package/dist/__tests__/helpers/index.d.ts.map +1 -0
- package/dist/__tests__/helpers/index.js +10 -0
- package/dist/__tests__/helpers/index.js.map +1 -0
- package/dist/__tests__/helpers/tree-verification.d.ts +90 -0
- package/dist/__tests__/helpers/tree-verification.d.ts.map +1 -0
- package/dist/__tests__/helpers/tree-verification.js +202 -0
- package/dist/__tests__/helpers/tree-verification.js.map +1 -0
- package/dist/__tests__/integration/agent-workflow.test.d.ts +2 -0
- package/dist/__tests__/integration/agent-workflow.test.d.ts.map +1 -0
- package/dist/__tests__/integration/agent-workflow.test.js +256 -0
- package/dist/__tests__/integration/agent-workflow.test.js.map +1 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts +14 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts.map +1 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.js +668 -0
- package/dist/__tests__/integration/bidirectional-consistency.test.js.map +1 -0
- package/dist/__tests__/integration/observer-logging.test.d.ts +2 -0
- package/dist/__tests__/integration/observer-logging.test.d.ts.map +1 -0
- package/dist/__tests__/integration/observer-logging.test.js +517 -0
- package/dist/__tests__/integration/observer-logging.test.js.map +1 -0
- package/dist/__tests__/integration/tree-mirroring.test.d.ts +2 -0
- package/dist/__tests__/integration/tree-mirroring.test.d.ts.map +1 -0
- package/dist/__tests__/integration/tree-mirroring.test.js +117 -0
- package/dist/__tests__/integration/tree-mirroring.test.js.map +1 -0
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts +12 -0
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts.map +1 -0
- package/dist/__tests__/integration/workflow-reparenting.test.js +239 -0
- package/dist/__tests__/integration/workflow-reparenting.test.js.map +1 -0
- package/dist/__tests__/unit/agent.test.d.ts +2 -0
- package/dist/__tests__/unit/agent.test.d.ts.map +1 -0
- package/dist/__tests__/unit/agent.test.js +143 -0
- package/dist/__tests__/unit/agent.test.js.map +1 -0
- package/dist/__tests__/unit/cache-key.test.d.ts +5 -0
- package/dist/__tests__/unit/cache-key.test.d.ts.map +1 -0
- package/dist/__tests__/unit/cache-key.test.js +145 -0
- package/dist/__tests__/unit/cache-key.test.js.map +1 -0
- package/dist/__tests__/unit/cache.test.d.ts +5 -0
- package/dist/__tests__/unit/cache.test.d.ts.map +1 -0
- package/dist/__tests__/unit/cache.test.js +132 -0
- package/dist/__tests__/unit/cache.test.js.map +1 -0
- package/dist/__tests__/unit/context.test.d.ts +2 -0
- package/dist/__tests__/unit/context.test.d.ts.map +1 -0
- package/dist/__tests__/unit/context.test.js +220 -0
- package/dist/__tests__/unit/context.test.js.map +1 -0
- package/dist/__tests__/unit/decorators.test.d.ts +2 -0
- package/dist/__tests__/unit/decorators.test.d.ts.map +1 -0
- package/dist/__tests__/unit/decorators.test.js +162 -0
- package/dist/__tests__/unit/decorators.test.js.map +1 -0
- package/dist/__tests__/unit/introspection-tools.test.d.ts +5 -0
- package/dist/__tests__/unit/introspection-tools.test.d.ts.map +1 -0
- package/dist/__tests__/unit/introspection-tools.test.js +191 -0
- package/dist/__tests__/unit/introspection-tools.test.js.map +1 -0
- package/dist/__tests__/unit/logger.test.d.ts +2 -0
- package/dist/__tests__/unit/logger.test.d.ts.map +1 -0
- package/dist/__tests__/unit/logger.test.js +241 -0
- package/dist/__tests__/unit/logger.test.js.map +1 -0
- package/dist/__tests__/unit/observable.test.d.ts +2 -0
- package/dist/__tests__/unit/observable.test.d.ts.map +1 -0
- package/dist/__tests__/unit/observable.test.js +251 -0
- package/dist/__tests__/unit/observable.test.js.map +1 -0
- package/dist/__tests__/unit/prompt.test.d.ts +2 -0
- package/dist/__tests__/unit/prompt.test.d.ts.map +1 -0
- package/dist/__tests__/unit/prompt.test.js +113 -0
- package/dist/__tests__/unit/prompt.test.js.map +1 -0
- package/dist/__tests__/unit/reflection.test.d.ts +5 -0
- package/dist/__tests__/unit/reflection.test.d.ts.map +1 -0
- package/dist/__tests__/unit/reflection.test.js +160 -0
- package/dist/__tests__/unit/reflection.test.js.map +1 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts +2 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts.map +1 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.js +136 -0
- package/dist/__tests__/unit/tree-debugger-incremental.test.js.map +1 -0
- package/dist/__tests__/unit/tree-debugger.test.d.ts +2 -0
- package/dist/__tests__/unit/tree-debugger.test.d.ts.map +1 -0
- package/dist/__tests__/unit/tree-debugger.test.js +69 -0
- package/dist/__tests__/unit/tree-debugger.test.js.map +1 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts +2 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts.map +1 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js +154 -0
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js.map +1 -0
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow-detachChild.test.js +76 -0
- package/dist/__tests__/unit/workflow-detachChild.test.js.map +1 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js +122 -0
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js.map +1 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js +140 -0
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js.map +1 -0
- package/dist/__tests__/unit/workflow.test.d.ts +2 -0
- package/dist/__tests__/unit/workflow.test.d.ts.map +1 -0
- package/dist/__tests__/unit/workflow.test.js +330 -0
- package/dist/__tests__/unit/workflow.test.js.map +1 -0
- package/dist/cache/cache-key.d.ts +66 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +195 -0
- package/dist/cache/cache-key.js.map +1 -0
- package/dist/cache/cache.d.ts +104 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +179 -0
- package/dist/cache/cache.js.map +1 -0
- package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/core/agent.d.ts +112 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +426 -0
- package/dist/core/agent.js.map +1 -0
- package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +80 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/event-tree.d.ts +72 -0
- package/dist/core/event-tree.d.ts.map +1 -0
- package/dist/core/event-tree.js +211 -0
- package/dist/core/event-tree.js.map +1 -0
- package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
- package/dist/core/factory.d.ts.map +1 -0
- package/dist/core/factory.js +110 -0
- package/dist/core/factory.js.map +1 -0
- package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +50 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +91 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mcp-handler.d.ts +69 -0
- package/dist/core/mcp-handler.d.ts.map +1 -0
- package/dist/core/mcp-handler.js +143 -0
- package/dist/core/mcp-handler.js.map +1 -0
- package/dist/core/prompt.d.ts +80 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +120 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/workflow-context.d.ts +57 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +263 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workflow.d.ts +241 -0
- package/dist/core/workflow.d.ts.map +1 -0
- package/dist/core/workflow.js +464 -0
- package/dist/core/workflow.js.map +1 -0
- package/dist/debugger/index.d.ts +2 -0
- package/dist/debugger/index.d.ts.map +1 -0
- package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
- package/dist/debugger/index.js.map +1 -0
- package/dist/debugger/tree-debugger.d.ts +71 -0
- package/dist/debugger/tree-debugger.d.ts.map +1 -0
- package/dist/debugger/tree-debugger.js +198 -0
- package/dist/debugger/tree-debugger.js.map +1 -0
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/observed-state.d.ts +32 -0
- package/dist/decorators/observed-state.d.ts.map +1 -0
- package/dist/decorators/observed-state.js +79 -0
- package/dist/decorators/observed-state.js.map +1 -0
- package/dist/decorators/step.d.ts +15 -0
- package/dist/decorators/step.d.ts.map +1 -0
- package/dist/decorators/step.js +110 -0
- package/dist/decorators/step.js.map +1 -0
- package/dist/decorators/task.d.ts +50 -0
- package/dist/decorators/task.d.ts.map +1 -0
- package/dist/decorators/task.js +118 -0
- package/dist/decorators/task.js.map +1 -0
- package/dist/examples/index.d.ts +3 -0
- package/dist/examples/index.d.ts.map +1 -0
- package/{src/examples/index.ts → dist/examples/index.js} +1 -0
- package/dist/examples/index.js.map +1 -0
- package/dist/examples/tdd-orchestrator.d.ts +15 -0
- package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
- package/dist/examples/tdd-orchestrator.js +121 -0
- package/dist/examples/tdd-orchestrator.js.map +1 -0
- package/dist/examples/test-cycle-workflow.d.ts +14 -0
- package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
- package/dist/examples/test-cycle-workflow.js +116 -0
- package/dist/examples/test-cycle-workflow.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/reflection/index.d.ts +5 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/reflection.d.ts +84 -0
- package/dist/reflection/reflection.d.ts.map +1 -0
- package/dist/reflection/reflection.js +329 -0
- package/dist/reflection/reflection.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/introspection.d.ts +165 -0
- package/dist/tools/introspection.d.ts.map +1 -0
- package/dist/tools/introspection.js +324 -0
- package/dist/tools/introspection.js.map +1 -0
- package/dist/types/agent.d.ts +66 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +6 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/decorators.d.ts +31 -0
- package/dist/types/decorators.d.ts.map +1 -0
- package/dist/types/decorators.js +2 -0
- package/dist/types/decorators.js.map +1 -0
- package/dist/types/error-strategy.d.ts +13 -0
- package/dist/types/error-strategy.d.ts.map +1 -0
- package/dist/types/error-strategy.js +2 -0
- package/dist/types/error-strategy.js.map +1 -0
- package/dist/types/error.d.ts +20 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +2 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/events.d.ts +87 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/logging.d.ts +24 -0
- package/dist/types/logging.d.ts.map +1 -0
- package/dist/types/logging.js +2 -0
- package/dist/types/logging.js.map +1 -0
- package/dist/types/observer.d.ts +18 -0
- package/dist/types/observer.d.ts.map +1 -0
- package/dist/types/observer.js +2 -0
- package/dist/types/observer.js.map +1 -0
- package/dist/types/prompt.d.ts +31 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +6 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/types/reflection.d.ts +96 -0
- package/dist/types/reflection.d.ts.map +1 -0
- package/dist/types/reflection.js +24 -0
- package/dist/types/reflection.js.map +1 -0
- package/dist/types/sdk-primitives.d.ts +118 -0
- package/dist/types/sdk-primitives.d.ts.map +1 -0
- package/dist/types/sdk-primitives.js +6 -0
- package/dist/types/sdk-primitives.js.map +1 -0
- package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
- package/dist/types/snapshot.d.ts.map +1 -0
- package/dist/types/snapshot.js +2 -0
- package/dist/types/snapshot.js.map +1 -0
- package/dist/types/workflow-context.d.ts +139 -0
- package/dist/types/workflow-context.d.ts.map +1 -0
- package/dist/types/workflow-context.js +8 -0
- package/dist/types/workflow-context.js.map +1 -0
- package/dist/types/workflow.d.ts +30 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +2 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/id.d.ts +6 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +12 -0
- package/dist/utils/id.js.map +1 -0
- package/{src/utils/index.ts → dist/utils/index.d.ts} +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/observable.d.ts +54 -0
- package/dist/utils/observable.d.ts.map +1 -0
- package/dist/utils/observable.js +82 -0
- package/dist/utils/observable.js.map +1 -0
- package/dist/utils/workflow-error-utils.d.ts +22 -0
- package/dist/utils/workflow-error-utils.d.ts.map +1 -0
- package/dist/utils/workflow-error-utils.js +45 -0
- package/dist/utils/workflow-error-utils.js.map +1 -0
- package/package.json +7 -2
- package/.claude/settings.local.json +0 -9
- package/.claude/system_prompts/task-breakdown.md +0 -100
- package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
- package/PRPs/PRDs/001-hierarchical-workflow-engine.md +0 -543
- package/PRPs/PRDs/002-agent-prompt.md +0 -390
- package/PRPs/PRDs/003-agent-prompt.md +0 -943
- package/PRPs/PRDs/004-agent-prompt.md +0 -1136
- package/PRPs/PRDs/tasks-001.json +0 -492
- package/PRPs/README.md +0 -83
- package/PRPs/templates/prp_base.md +0 -222
- package/docs/agent.md +0 -422
- package/docs/prompt.md +0 -419
- package/docs/workflow.md +0 -600
- package/examples/README.md +0 -244
- package/examples/examples/01-basic-workflow.ts +0 -100
- package/examples/examples/02-decorator-options.ts +0 -217
- package/examples/examples/03-parent-child.ts +0 -241
- package/examples/examples/04-observers-debugger.ts +0 -340
- package/examples/examples/05-error-handling.ts +0 -387
- package/examples/examples/06-concurrent-tasks.ts +0 -352
- package/examples/examples/07-agent-loops.ts +0 -432
- package/examples/examples/08-sdk-features.ts +0 -667
- package/examples/examples/09-reflection.ts +0 -573
- package/examples/examples/10-introspection.ts +0 -550
- package/examples/index.ts +0 -143
- package/examples/utils/helpers.ts +0 -57
- package/llms_full.txt +0 -5890
- package/plan/P1P2/PRP.md +0 -527
- package/plan/P1P2/research/LRU_CACHE_BEST_PRACTICES.md +0 -1929
- package/plan/P1P2/research/LRU_CACHE_CODE_PATTERNS.md +0 -857
- package/plan/P1P2/research/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
- package/plan/P1P2/research/LRU_CACHE_RESEARCH_INDEX.md +0 -424
- package/plan/P1P2/research/REFLECTION_INDEX.md +0 -291
- package/plan/P1P2/research/REFLECTION_RESEARCH_REPORT.md +0 -1342
- package/plan/P1P2/research/RESEARCH_SUMMARY.md +0 -342
- package/plan/P1P2/research/anthropic-sdk.md +0 -174
- package/plan/P1P2/research/async-local-storage.md +0 -200
- package/plan/P1P2/research/reflection-code-patterns.md +0 -1205
- package/plan/P1P2/research/reflection-decision-matrix.md +0 -421
- package/plan/P1P2/research/reflection-implementation-guide.md +0 -1341
- package/plan/P1P2/research/reflection-integration-guide.md +0 -834
- package/plan/P1P2/research/reflection-patterns.md +0 -1468
- package/plan/P1P2/research/reflection-quick-reference.md +0 -558
- package/plan/P1P2/research/zod-schema.md +0 -152
- package/plan/P3P4/PRP.md +0 -1388
- package/plan/P3P4/research/caching-lru.md +0 -116
- package/plan/P3P4/research/introspection-tools.md +0 -177
- package/plan/P3P4/research/reflection-patterns.md +0 -117
- package/plan/P4P5/PRP.md +0 -1136
- package/plan/P4P5/research/RESEARCH_SUMMARY.md +0 -151
- package/plan/architecture/external_deps.md +0 -358
- package/plan/architecture/system_context.md +0 -242
- package/plan/backlog.json +0 -867
- package/plan/research/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
- package/plan/research/README-INTROSPECTION.md +0 -352
- package/plan/research/agent-introspection-patterns.md +0 -1085
- package/plan/research/introspection-security-guide.md +0 -928
- package/plan/research/introspection-tool-examples.md +0 -875
- package/scripts/generate-llms-full.ts +0 -206
- package/src/__tests__/integration/agent-workflow.test.ts +0 -256
- package/src/__tests__/integration/tree-mirroring.test.ts +0 -114
- package/src/__tests__/unit/agent.test.ts +0 -169
- package/src/__tests__/unit/cache-key.test.ts +0 -182
- package/src/__tests__/unit/cache.test.ts +0 -172
- package/src/__tests__/unit/context.test.ts +0 -138
- package/src/__tests__/unit/decorators.test.ts +0 -100
- package/src/__tests__/unit/introspection-tools.test.ts +0 -277
- package/src/__tests__/unit/prompt.test.ts +0 -135
- package/src/__tests__/unit/reflection.test.ts +0 -210
- package/src/__tests__/unit/tree-debugger.test.ts +0 -85
- package/src/__tests__/unit/workflow.test.ts +0 -81
- package/src/cache/cache-key.ts +0 -244
- package/src/cache/cache.ts +0 -236
- package/src/core/agent.ts +0 -573
- package/src/core/event-tree.ts +0 -260
- package/src/core/logger.ts +0 -87
- package/src/core/mcp-handler.ts +0 -184
- package/src/core/prompt.ts +0 -150
- package/src/core/workflow-context.ts +0 -349
- package/src/core/workflow.ts +0 -302
- package/src/debugger/tree-debugger.ts +0 -210
- package/src/decorators/observed-state.ts +0 -95
- package/src/decorators/step.ts +0 -139
- package/src/decorators/task.ts +0 -96
- package/src/examples/tdd-orchestrator.ts +0 -65
- package/src/examples/test-cycle-workflow.ts +0 -64
- package/src/index.ts +0 -140
- package/src/reflection/reflection.ts +0 -407
- package/src/tools/index.ts +0 -36
- package/src/tools/introspection.ts +0 -464
- package/src/types/agent.ts +0 -90
- package/src/types/decorators.ts +0 -25
- package/src/types/error-strategy.ts +0 -13
- package/src/types/error.ts +0 -20
- package/src/types/events.ts +0 -74
- package/src/types/index.ts +0 -55
- package/src/types/logging.ts +0 -24
- package/src/types/observer.ts +0 -18
- package/src/types/prompt.ts +0 -40
- package/src/types/reflection.ts +0 -117
- package/src/types/sdk-primitives.ts +0 -128
- package/src/types/workflow-context.ts +0 -163
- package/src/types/workflow.ts +0 -37
- package/src/utils/id.ts +0 -11
- package/src/utils/observable.ts +0 -77
- package/tasks.json +0 -0
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -16
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Key Generation - Deterministic key generation for LLM response caching
|
|
3
|
+
*
|
|
4
|
+
* Uses SHA-256 hashing with deterministic JSON serialization to ensure
|
|
5
|
+
* identical inputs always produce identical cache keys.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
/**
|
|
9
|
+
* Deterministically stringify a value with sorted object keys
|
|
10
|
+
*
|
|
11
|
+
* Unlike JSON.stringify, this function guarantees consistent output
|
|
12
|
+
* regardless of key insertion order by sorting all object keys.
|
|
13
|
+
*
|
|
14
|
+
* @param value - Value to stringify
|
|
15
|
+
* @returns Deterministic JSON string
|
|
16
|
+
* @throws TypeError if circular reference detected
|
|
17
|
+
*/
|
|
18
|
+
export function deterministicStringify(value) {
|
|
19
|
+
const seen = new WeakSet();
|
|
20
|
+
function stringify(val) {
|
|
21
|
+
if (val === null)
|
|
22
|
+
return 'null';
|
|
23
|
+
if (val === undefined)
|
|
24
|
+
return 'undefined';
|
|
25
|
+
if (typeof val === 'string')
|
|
26
|
+
return JSON.stringify(val);
|
|
27
|
+
if (typeof val === 'number') {
|
|
28
|
+
if (Number.isNaN(val))
|
|
29
|
+
return 'NaN';
|
|
30
|
+
if (!Number.isFinite(val))
|
|
31
|
+
return val > 0 ? 'Infinity' : '-Infinity';
|
|
32
|
+
return String(val);
|
|
33
|
+
}
|
|
34
|
+
if (typeof val === 'boolean')
|
|
35
|
+
return String(val);
|
|
36
|
+
if (typeof val === 'function')
|
|
37
|
+
return 'function';
|
|
38
|
+
if (typeof val === 'symbol')
|
|
39
|
+
return 'symbol';
|
|
40
|
+
if (typeof val === 'bigint')
|
|
41
|
+
return `${val}n`;
|
|
42
|
+
if (typeof val === 'object') {
|
|
43
|
+
if (seen.has(val)) {
|
|
44
|
+
throw new TypeError('Converting circular structure to JSON');
|
|
45
|
+
}
|
|
46
|
+
seen.add(val);
|
|
47
|
+
let result;
|
|
48
|
+
if (Array.isArray(val)) {
|
|
49
|
+
result = '[' + val.map(stringify).join(',') + ']';
|
|
50
|
+
}
|
|
51
|
+
else if (val instanceof Date) {
|
|
52
|
+
result = JSON.stringify(val.toISOString());
|
|
53
|
+
}
|
|
54
|
+
else if (val instanceof Map) {
|
|
55
|
+
const entries = Array.from(val.entries())
|
|
56
|
+
.sort(([a], [b]) => String(a).localeCompare(String(b)))
|
|
57
|
+
.map(([k, v]) => `[${stringify(k)},${stringify(v)}]`);
|
|
58
|
+
result = `Map{${entries.join(',')}}`;
|
|
59
|
+
}
|
|
60
|
+
else if (val instanceof Set) {
|
|
61
|
+
const values = Array.from(val)
|
|
62
|
+
.map(stringify)
|
|
63
|
+
.sort();
|
|
64
|
+
result = `Set{${values.join(',')}}`;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Regular object - sort keys
|
|
68
|
+
const keys = Object.keys(val).sort();
|
|
69
|
+
const pairs = keys.map((k) => JSON.stringify(k) +
|
|
70
|
+
':' +
|
|
71
|
+
stringify(val[k]));
|
|
72
|
+
result = '{' + pairs.join(',') + '}';
|
|
73
|
+
}
|
|
74
|
+
seen.delete(val);
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
return String(val);
|
|
78
|
+
}
|
|
79
|
+
return stringify(value);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Generate a hash from a Zod schema's internal definition
|
|
83
|
+
*
|
|
84
|
+
* Zod schemas are functions that cannot be directly serialized.
|
|
85
|
+
* This extracts the schema's _def property which contains the
|
|
86
|
+
* schema structure and hashes it.
|
|
87
|
+
*
|
|
88
|
+
* @param schema - Zod schema to hash
|
|
89
|
+
* @returns SHA-256 hex digest of the schema definition
|
|
90
|
+
*/
|
|
91
|
+
export function getSchemaHash(schema) {
|
|
92
|
+
if (!schema) {
|
|
93
|
+
return 'no-schema';
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
// Access Zod's internal _def property
|
|
97
|
+
const def = schema._def;
|
|
98
|
+
if (!def) {
|
|
99
|
+
return 'unknown-schema';
|
|
100
|
+
}
|
|
101
|
+
// Create a simplified representation of the schema
|
|
102
|
+
const schemaRep = extractSchemaStructure(def);
|
|
103
|
+
const serialized = deterministicStringify(schemaRep);
|
|
104
|
+
return createHash('sha256').update(serialized, 'utf8').digest('hex');
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Fallback for schemas that can't be introspected
|
|
108
|
+
return 'fallback-schema';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Extract a serializable structure from a Zod schema definition
|
|
113
|
+
*/
|
|
114
|
+
function extractSchemaStructure(def) {
|
|
115
|
+
if (def === null || def === undefined) {
|
|
116
|
+
return def;
|
|
117
|
+
}
|
|
118
|
+
if (typeof def !== 'object') {
|
|
119
|
+
return def;
|
|
120
|
+
}
|
|
121
|
+
const typedDef = def;
|
|
122
|
+
const result = {};
|
|
123
|
+
// Extract key properties that define schema structure
|
|
124
|
+
if ('typeName' in typedDef) {
|
|
125
|
+
result.typeName = typedDef.typeName;
|
|
126
|
+
}
|
|
127
|
+
if ('shape' in typedDef && typeof typedDef.shape === 'function') {
|
|
128
|
+
// Object schema - extract shape
|
|
129
|
+
try {
|
|
130
|
+
const shape = typedDef.shape();
|
|
131
|
+
result.shape = Object.fromEntries(Object.entries(shape).map(([key, value]) => [
|
|
132
|
+
key,
|
|
133
|
+
extractSchemaStructure(value?._def),
|
|
134
|
+
]));
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
result.shape = 'complex-shape';
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if ('type' in typedDef && typedDef.type && typeof typedDef.type === 'object') {
|
|
141
|
+
result.type = extractSchemaStructure(typedDef.type._def);
|
|
142
|
+
}
|
|
143
|
+
if ('values' in typedDef) {
|
|
144
|
+
result.values = typedDef.values;
|
|
145
|
+
}
|
|
146
|
+
if ('checks' in typedDef && Array.isArray(typedDef.checks)) {
|
|
147
|
+
result.checks = typedDef.checks.map((check) => check.kind);
|
|
148
|
+
}
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Generate a deterministic cache key from prompt execution inputs
|
|
153
|
+
*
|
|
154
|
+
* The key is a 64-character SHA-256 hex digest that uniquely identifies
|
|
155
|
+
* a specific combination of prompt, data, configuration, and tools.
|
|
156
|
+
*
|
|
157
|
+
* @param inputs - Cache key inputs
|
|
158
|
+
* @returns 64-character hex SHA-256 digest
|
|
159
|
+
*/
|
|
160
|
+
export function generateCacheKey(inputs) {
|
|
161
|
+
// Build normalized representation with sorted arrays
|
|
162
|
+
const normalized = {
|
|
163
|
+
user: inputs.user,
|
|
164
|
+
model: inputs.model,
|
|
165
|
+
};
|
|
166
|
+
// Include optional fields only if defined
|
|
167
|
+
if (inputs.data !== undefined) {
|
|
168
|
+
normalized.data = inputs.data;
|
|
169
|
+
}
|
|
170
|
+
if (inputs.system !== undefined) {
|
|
171
|
+
normalized.system = inputs.system;
|
|
172
|
+
}
|
|
173
|
+
if (inputs.temperature !== undefined) {
|
|
174
|
+
normalized.temperature = inputs.temperature;
|
|
175
|
+
}
|
|
176
|
+
if (inputs.maxTokens !== undefined) {
|
|
177
|
+
normalized.maxTokens = inputs.maxTokens;
|
|
178
|
+
}
|
|
179
|
+
// Sort tool/mcp/skill names for determinism
|
|
180
|
+
if (inputs.tools && inputs.tools.length > 0) {
|
|
181
|
+
normalized.tools = inputs.tools.map((t) => t.name).sort();
|
|
182
|
+
}
|
|
183
|
+
if (inputs.mcps && inputs.mcps.length > 0) {
|
|
184
|
+
normalized.mcps = inputs.mcps.map((m) => m.name).sort();
|
|
185
|
+
}
|
|
186
|
+
if (inputs.skills && inputs.skills.length > 0) {
|
|
187
|
+
normalized.skills = inputs.skills.map((s) => s.name).sort();
|
|
188
|
+
}
|
|
189
|
+
// Include schema hash
|
|
190
|
+
normalized.schemaHash = getSchemaHash(inputs.responseFormat);
|
|
191
|
+
// Generate SHA-256 hash
|
|
192
|
+
const serialized = deterministicStringify(normalized);
|
|
193
|
+
return createHash('sha256').update(serialized, 'utf8').digest('hex');
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=cache-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key.js","sourceRoot":"","sources":["../../src/cache/cache-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMCache - LRU cache for LLM responses with size and TTL limits
|
|
3
|
+
*
|
|
4
|
+
* Wraps the lru-cache package to provide:
|
|
5
|
+
* - Item count limits
|
|
6
|
+
* - Memory size limits
|
|
7
|
+
* - Time-based expiration (TTL)
|
|
8
|
+
* - Prefix-based cache busting for related entries
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Cache configuration options
|
|
12
|
+
*/
|
|
13
|
+
export interface CacheConfig {
|
|
14
|
+
/** Maximum number of items in cache (default: 1000) */
|
|
15
|
+
maxItems?: number;
|
|
16
|
+
/** Maximum cache size in bytes (default: 50MB) */
|
|
17
|
+
maxSizeBytes?: number;
|
|
18
|
+
/** Default TTL in milliseconds (default: 1 hour) */
|
|
19
|
+
defaultTTLMs?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Cache performance metrics
|
|
23
|
+
*/
|
|
24
|
+
export interface CacheMetrics {
|
|
25
|
+
/** Number of cache hits */
|
|
26
|
+
hits: number;
|
|
27
|
+
/** Number of cache misses */
|
|
28
|
+
misses: number;
|
|
29
|
+
/** Current number of items in cache */
|
|
30
|
+
size: number;
|
|
31
|
+
/** Current cache size in bytes (estimated) */
|
|
32
|
+
sizeBytes: number;
|
|
33
|
+
/** Hit rate percentage */
|
|
34
|
+
hitRate: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* LLMCache - High-performance LRU cache for LLM responses
|
|
38
|
+
*/
|
|
39
|
+
export declare class LLMCache<T = unknown> {
|
|
40
|
+
private readonly cache;
|
|
41
|
+
private readonly prefixIndex;
|
|
42
|
+
private readonly config;
|
|
43
|
+
private hitCount;
|
|
44
|
+
private missCount;
|
|
45
|
+
/**
|
|
46
|
+
* Create a new LLMCache instance
|
|
47
|
+
* @param config Cache configuration
|
|
48
|
+
*/
|
|
49
|
+
constructor(config?: CacheConfig);
|
|
50
|
+
/**
|
|
51
|
+
* Get a value from the cache
|
|
52
|
+
* @param key Cache key
|
|
53
|
+
* @returns Cached value or undefined if not found
|
|
54
|
+
*/
|
|
55
|
+
get(key: string): Promise<T | undefined>;
|
|
56
|
+
/**
|
|
57
|
+
* Set a value in the cache
|
|
58
|
+
* @param key Cache key
|
|
59
|
+
* @param value Value to cache
|
|
60
|
+
* @param options Optional TTL override and prefix for grouping
|
|
61
|
+
*/
|
|
62
|
+
set(key: string, value: T, options?: {
|
|
63
|
+
ttl?: number;
|
|
64
|
+
prefix?: string;
|
|
65
|
+
}): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Check if a key exists in the cache (without affecting LRU order)
|
|
68
|
+
* @param key Cache key
|
|
69
|
+
* @returns True if key exists
|
|
70
|
+
*/
|
|
71
|
+
has(key: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Remove a specific key from the cache
|
|
74
|
+
* @param key Cache key to remove
|
|
75
|
+
*/
|
|
76
|
+
bust(key: string): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Remove all keys with a given prefix
|
|
79
|
+
* @param prefix Prefix to match
|
|
80
|
+
*/
|
|
81
|
+
bustPrefix(prefix: string): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Clear the entire cache
|
|
84
|
+
*/
|
|
85
|
+
clear(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Get cache performance metrics
|
|
88
|
+
* @returns Current cache metrics
|
|
89
|
+
*/
|
|
90
|
+
metrics(): CacheMetrics;
|
|
91
|
+
/**
|
|
92
|
+
* Get the number of items in the cache
|
|
93
|
+
*/
|
|
94
|
+
get size(): number;
|
|
95
|
+
/**
|
|
96
|
+
* Get all keys in the cache
|
|
97
|
+
*/
|
|
98
|
+
keys(): IterableIterator<string>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Default singleton cache instance
|
|
102
|
+
*/
|
|
103
|
+
export declare const defaultCache: LLMCache<unknown>;
|
|
104
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAE/C,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IAEtB;;;OAGG;gBACS,MAAM,GAAE,WAAgB;IAuCpC;;;;OAIG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAU9C;;;;;OAKG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,IAAI,CAAC;IAwBhB;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;OAGG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IActC;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACH,OAAO,IAAI,YAAY;IAWvB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;CAGjC;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,mBAAiB,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMCache - LRU cache for LLM responses with size and TTL limits
|
|
3
|
+
*
|
|
4
|
+
* Wraps the lru-cache package to provide:
|
|
5
|
+
* - Item count limits
|
|
6
|
+
* - Memory size limits
|
|
7
|
+
* - Time-based expiration (TTL)
|
|
8
|
+
* - Prefix-based cache busting for related entries
|
|
9
|
+
*/
|
|
10
|
+
import { LRUCache } from 'lru-cache';
|
|
11
|
+
/**
|
|
12
|
+
* LLMCache - High-performance LRU cache for LLM responses
|
|
13
|
+
*/
|
|
14
|
+
export class LLMCache {
|
|
15
|
+
cache;
|
|
16
|
+
prefixIndex;
|
|
17
|
+
config;
|
|
18
|
+
hitCount = 0;
|
|
19
|
+
missCount = 0;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new LLMCache instance
|
|
22
|
+
* @param config Cache configuration
|
|
23
|
+
*/
|
|
24
|
+
constructor(config = {}) {
|
|
25
|
+
this.config = {
|
|
26
|
+
maxItems: config.maxItems ?? 1000,
|
|
27
|
+
maxSizeBytes: config.maxSizeBytes ?? 52_428_800, // 50MB
|
|
28
|
+
defaultTTLMs: config.defaultTTLMs ?? 3_600_000, // 1 hour
|
|
29
|
+
};
|
|
30
|
+
this.prefixIndex = new Map();
|
|
31
|
+
this.cache = new LRUCache({
|
|
32
|
+
max: this.config.maxItems,
|
|
33
|
+
maxSize: this.config.maxSizeBytes,
|
|
34
|
+
sizeCalculation: (entry) => {
|
|
35
|
+
// Estimate size based on JSON serialization
|
|
36
|
+
try {
|
|
37
|
+
return JSON.stringify(entry.value).length;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Fallback for non-serializable values
|
|
41
|
+
return 1000;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
ttl: this.config.defaultTTLMs,
|
|
45
|
+
updateAgeOnGet: true,
|
|
46
|
+
allowStale: false,
|
|
47
|
+
dispose: (entry, key) => {
|
|
48
|
+
// Clean up prefix index on eviction
|
|
49
|
+
if (entry.prefix) {
|
|
50
|
+
const keys = this.prefixIndex.get(entry.prefix);
|
|
51
|
+
if (keys) {
|
|
52
|
+
keys.delete(key);
|
|
53
|
+
if (keys.size === 0) {
|
|
54
|
+
this.prefixIndex.delete(entry.prefix);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get a value from the cache
|
|
63
|
+
* @param key Cache key
|
|
64
|
+
* @returns Cached value or undefined if not found
|
|
65
|
+
*/
|
|
66
|
+
async get(key) {
|
|
67
|
+
const entry = this.cache.get(key);
|
|
68
|
+
if (entry) {
|
|
69
|
+
this.hitCount++;
|
|
70
|
+
return entry.value;
|
|
71
|
+
}
|
|
72
|
+
this.missCount++;
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Set a value in the cache
|
|
77
|
+
* @param key Cache key
|
|
78
|
+
* @param value Value to cache
|
|
79
|
+
* @param options Optional TTL override and prefix for grouping
|
|
80
|
+
*/
|
|
81
|
+
async set(key, value, options) {
|
|
82
|
+
const entry = {
|
|
83
|
+
value,
|
|
84
|
+
prefix: options?.prefix,
|
|
85
|
+
};
|
|
86
|
+
const cacheOptions = {};
|
|
87
|
+
if (options?.ttl !== undefined) {
|
|
88
|
+
cacheOptions.ttl = options.ttl;
|
|
89
|
+
}
|
|
90
|
+
this.cache.set(key, entry, cacheOptions);
|
|
91
|
+
// Track prefix for bulk invalidation
|
|
92
|
+
if (options?.prefix) {
|
|
93
|
+
let keys = this.prefixIndex.get(options.prefix);
|
|
94
|
+
if (!keys) {
|
|
95
|
+
keys = new Set();
|
|
96
|
+
this.prefixIndex.set(options.prefix, keys);
|
|
97
|
+
}
|
|
98
|
+
keys.add(key);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if a key exists in the cache (without affecting LRU order)
|
|
103
|
+
* @param key Cache key
|
|
104
|
+
* @returns True if key exists
|
|
105
|
+
*/
|
|
106
|
+
has(key) {
|
|
107
|
+
return this.cache.has(key);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Remove a specific key from the cache
|
|
111
|
+
* @param key Cache key to remove
|
|
112
|
+
*/
|
|
113
|
+
async bust(key) {
|
|
114
|
+
const entry = this.cache.peek(key);
|
|
115
|
+
if (entry?.prefix) {
|
|
116
|
+
const keys = this.prefixIndex.get(entry.prefix);
|
|
117
|
+
if (keys) {
|
|
118
|
+
keys.delete(key);
|
|
119
|
+
if (keys.size === 0) {
|
|
120
|
+
this.prefixIndex.delete(entry.prefix);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
this.cache.delete(key);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Remove all keys with a given prefix
|
|
128
|
+
* @param prefix Prefix to match
|
|
129
|
+
*/
|
|
130
|
+
async bustPrefix(prefix) {
|
|
131
|
+
const keys = this.prefixIndex.get(prefix);
|
|
132
|
+
if (keys) {
|
|
133
|
+
for (const key of keys) {
|
|
134
|
+
this.cache.delete(key);
|
|
135
|
+
}
|
|
136
|
+
this.prefixIndex.delete(prefix);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Clear the entire cache
|
|
141
|
+
*/
|
|
142
|
+
async clear() {
|
|
143
|
+
this.cache.clear();
|
|
144
|
+
this.prefixIndex.clear();
|
|
145
|
+
this.hitCount = 0;
|
|
146
|
+
this.missCount = 0;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get cache performance metrics
|
|
150
|
+
* @returns Current cache metrics
|
|
151
|
+
*/
|
|
152
|
+
metrics() {
|
|
153
|
+
const total = this.hitCount + this.missCount;
|
|
154
|
+
return {
|
|
155
|
+
hits: this.hitCount,
|
|
156
|
+
misses: this.missCount,
|
|
157
|
+
size: this.cache.size,
|
|
158
|
+
sizeBytes: this.cache.calculatedSize ?? 0,
|
|
159
|
+
hitRate: total > 0 ? (this.hitCount / total) * 100 : 0,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get the number of items in the cache
|
|
164
|
+
*/
|
|
165
|
+
get size() {
|
|
166
|
+
return this.cache.size;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get all keys in the cache
|
|
170
|
+
*/
|
|
171
|
+
keys() {
|
|
172
|
+
return this.cache.keys();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Default singleton cache instance
|
|
177
|
+
*/
|
|
178
|
+
export const defaultCache = new LLMCache();
|
|
179
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cache module exports
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
4
|
export { LLMCache, defaultCache } from './cache.js';
|
|
6
5
|
export type { CacheConfig, CacheMetrics } from './cache.js';
|
|
7
6
|
export { generateCacheKey, deterministicStringify, getSchemaHash } from './cache-key.js';
|
|
8
7
|
export type { CacheKeyInputs } from './cache-key.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACzF,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent - Lightweight wrapper around Anthropic's Agent SDK
|
|
3
|
+
*
|
|
4
|
+
* Agents execute prompts and manage tool invocation cycles.
|
|
5
|
+
* All configuration properties map 1:1 to Anthropic SDK.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentConfig, PromptOverrides, TokenUsage } from '../types/index.js';
|
|
8
|
+
import type { Prompt } from './prompt.js';
|
|
9
|
+
import { MCPHandler } from './mcp-handler.js';
|
|
10
|
+
/**
|
|
11
|
+
* Result from a prompt execution including metadata
|
|
12
|
+
*/
|
|
13
|
+
export interface PromptResult<T> {
|
|
14
|
+
/** Validated response data */
|
|
15
|
+
data: T;
|
|
16
|
+
/** Token usage from the API */
|
|
17
|
+
usage: TokenUsage;
|
|
18
|
+
/** Total duration in milliseconds */
|
|
19
|
+
duration: number;
|
|
20
|
+
/** Number of tool invocations */
|
|
21
|
+
toolCalls: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Agent class - executes prompts via Anthropic SDK
|
|
25
|
+
*/
|
|
26
|
+
export declare class Agent {
|
|
27
|
+
/** Unique identifier for this agent instance */
|
|
28
|
+
readonly id: string;
|
|
29
|
+
/** Agent name */
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/** Stored configuration */
|
|
32
|
+
private readonly config;
|
|
33
|
+
/** Anthropic client instance */
|
|
34
|
+
private readonly client;
|
|
35
|
+
/** MCP handler for tool management */
|
|
36
|
+
private readonly mcpHandler;
|
|
37
|
+
/** Direct MCPHandler instances for delegated execution */
|
|
38
|
+
private readonly mcpHandlers;
|
|
39
|
+
/** Default model to use */
|
|
40
|
+
private readonly model;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new Agent instance
|
|
43
|
+
* @param config Agent configuration
|
|
44
|
+
*/
|
|
45
|
+
constructor(config?: AgentConfig);
|
|
46
|
+
/**
|
|
47
|
+
* Execute a prompt and return validated response
|
|
48
|
+
* @param prompt Prompt to execute
|
|
49
|
+
* @param overrides Optional overrides for this execution
|
|
50
|
+
* @returns Validated response of type T
|
|
51
|
+
*/
|
|
52
|
+
prompt<T>(prompt: Prompt<T>, overrides?: PromptOverrides): Promise<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Execute a prompt with full result metadata
|
|
55
|
+
* @param prompt Prompt to execute
|
|
56
|
+
* @param overrides Optional overrides for this execution
|
|
57
|
+
* @returns Full result including metadata
|
|
58
|
+
*/
|
|
59
|
+
promptWithMetadata<T>(prompt: Prompt<T>, overrides?: PromptOverrides): Promise<PromptResult<T>>;
|
|
60
|
+
/**
|
|
61
|
+
* Execute a prompt with reflection capabilities
|
|
62
|
+
* @param prompt Prompt to execute
|
|
63
|
+
* @param overrides Optional overrides for this execution
|
|
64
|
+
* @returns Validated response of type T
|
|
65
|
+
*/
|
|
66
|
+
reflect<T>(prompt: Prompt<T>, overrides?: PromptOverrides): Promise<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Get the MCP handler for custom tool registration
|
|
69
|
+
*/
|
|
70
|
+
getMcpHandler(): MCPHandler;
|
|
71
|
+
/**
|
|
72
|
+
* Emit an event if within workflow context
|
|
73
|
+
*/
|
|
74
|
+
private emitWorkflowEvent;
|
|
75
|
+
/**
|
|
76
|
+
* Internal prompt execution with full flow
|
|
77
|
+
*/
|
|
78
|
+
private executePrompt;
|
|
79
|
+
/**
|
|
80
|
+
* Call the Anthropic API
|
|
81
|
+
*/
|
|
82
|
+
private callApi;
|
|
83
|
+
/**
|
|
84
|
+
* Execute a tool (either direct or via MCP)
|
|
85
|
+
*/
|
|
86
|
+
private executeTool;
|
|
87
|
+
/**
|
|
88
|
+
* Merge tools from config and MCP servers
|
|
89
|
+
*/
|
|
90
|
+
private mergeTools;
|
|
91
|
+
/**
|
|
92
|
+
* Merge hooks from multiple sources
|
|
93
|
+
*/
|
|
94
|
+
private mergeHooks;
|
|
95
|
+
/**
|
|
96
|
+
* Call hooks of a specific type
|
|
97
|
+
*/
|
|
98
|
+
private callHooks;
|
|
99
|
+
/**
|
|
100
|
+
* Set up environment variables
|
|
101
|
+
*/
|
|
102
|
+
private setupEnvironment;
|
|
103
|
+
/**
|
|
104
|
+
* Restore environment variables
|
|
105
|
+
*/
|
|
106
|
+
private restoreEnvironment;
|
|
107
|
+
/**
|
|
108
|
+
* Add token usage from response
|
|
109
|
+
*/
|
|
110
|
+
private addUsage;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EAGf,UAAU,EAMX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,8BAA8B;IAC9B,IAAI,EAAE,CAAC,CAAC;IACR,+BAA+B;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD;;GAEG;AACH,qBAAa,KAAK;IAChB,gDAAgD;IAChD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAE3B,iBAAiB;IACjB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEhD,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B;;;OAGG;gBACS,MAAM,GAAE,WAAgB;IA4BpC;;;;;OAKG;IACU,MAAM,CAAC,CAAC,EACnB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,SAAS,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;OAKG;IACU,kBAAkB,CAAC,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,SAAS,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAI3B;;;;;OAKG;IACU,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,SAAS,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,CAAC,CAAC;IAsBb;;OAEG;IACI,aAAa,IAAI,UAAU;IAIlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;YACW,aAAa;IAwP3B;;OAEG;YACW,OAAO;IAsCrB;;OAEG;YACW,WAAW;IAyBzB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,UAAU;IA6BlB;;OAEG;YACW,SAAS;IAUvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,QAAQ;CAMjB"}
|