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,426 @@
|
|
|
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 Anthropic from '@anthropic-ai/sdk';
|
|
8
|
+
import { MCPHandler } from './mcp-handler.js';
|
|
9
|
+
import { generateId } from '../utils/id.js';
|
|
10
|
+
import { getExecutionContext } from './context.js';
|
|
11
|
+
import { generateCacheKey, defaultCache } from '../cache/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* Agent class - executes prompts via Anthropic SDK
|
|
14
|
+
*/
|
|
15
|
+
export class Agent {
|
|
16
|
+
/** Unique identifier for this agent instance */
|
|
17
|
+
id;
|
|
18
|
+
/** Agent name */
|
|
19
|
+
name;
|
|
20
|
+
/** Stored configuration */
|
|
21
|
+
config;
|
|
22
|
+
/** Anthropic client instance */
|
|
23
|
+
client;
|
|
24
|
+
/** MCP handler for tool management */
|
|
25
|
+
mcpHandler;
|
|
26
|
+
/** Direct MCPHandler instances for delegated execution */
|
|
27
|
+
mcpHandlers = [];
|
|
28
|
+
/** Default model to use */
|
|
29
|
+
model;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new Agent instance
|
|
32
|
+
* @param config Agent configuration
|
|
33
|
+
*/
|
|
34
|
+
constructor(config = {}) {
|
|
35
|
+
this.id = generateId();
|
|
36
|
+
this.name = config.name ?? 'Agent';
|
|
37
|
+
this.config = config;
|
|
38
|
+
this.model = config.model ?? 'claude-sonnet-4-20250514';
|
|
39
|
+
// Create Anthropic client
|
|
40
|
+
this.client = new Anthropic({
|
|
41
|
+
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
42
|
+
});
|
|
43
|
+
// Initialize MCP handler
|
|
44
|
+
this.mcpHandler = new MCPHandler();
|
|
45
|
+
// Register MCP servers
|
|
46
|
+
if (config.mcps) {
|
|
47
|
+
for (const mcp of config.mcps) {
|
|
48
|
+
// If the MCP is already an MCPHandler instance, store it directly
|
|
49
|
+
// for delegated tool execution (preserves registered executors)
|
|
50
|
+
if (mcp instanceof MCPHandler) {
|
|
51
|
+
this.mcpHandlers.push(mcp);
|
|
52
|
+
}
|
|
53
|
+
// Always register with main handler for tool discovery
|
|
54
|
+
this.mcpHandler.registerServer(mcp);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Execute a prompt and return validated response
|
|
60
|
+
* @param prompt Prompt to execute
|
|
61
|
+
* @param overrides Optional overrides for this execution
|
|
62
|
+
* @returns Validated response of type T
|
|
63
|
+
*/
|
|
64
|
+
async prompt(prompt, overrides) {
|
|
65
|
+
const result = await this.executePrompt(prompt, overrides);
|
|
66
|
+
return result.data;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Execute a prompt with full result metadata
|
|
70
|
+
* @param prompt Prompt to execute
|
|
71
|
+
* @param overrides Optional overrides for this execution
|
|
72
|
+
* @returns Full result including metadata
|
|
73
|
+
*/
|
|
74
|
+
async promptWithMetadata(prompt, overrides) {
|
|
75
|
+
return this.executePrompt(prompt, overrides);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Execute a prompt with reflection capabilities
|
|
79
|
+
* @param prompt Prompt to execute
|
|
80
|
+
* @param overrides Optional overrides for this execution
|
|
81
|
+
* @returns Validated response of type T
|
|
82
|
+
*/
|
|
83
|
+
async reflect(prompt, overrides) {
|
|
84
|
+
// Add reflection system prefix if reflection is enabled
|
|
85
|
+
const reflectionEnabled = prompt.enableReflection ??
|
|
86
|
+
overrides?.enableReflection ??
|
|
87
|
+
this.config.enableReflection;
|
|
88
|
+
const systemPrefix = reflectionEnabled
|
|
89
|
+
? 'Before answering, reflect on your reasoning step by step. Consider alternative approaches and potential errors. Then provide your final answer.\n\n'
|
|
90
|
+
: '';
|
|
91
|
+
const effectiveOverrides = {
|
|
92
|
+
...overrides,
|
|
93
|
+
system: systemPrefix +
|
|
94
|
+
(prompt.systemOverride ?? overrides?.system ?? this.config.system ?? ''),
|
|
95
|
+
};
|
|
96
|
+
const result = await this.executePrompt(prompt, effectiveOverrides);
|
|
97
|
+
return result.data;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get the MCP handler for custom tool registration
|
|
101
|
+
*/
|
|
102
|
+
getMcpHandler() {
|
|
103
|
+
return this.mcpHandler;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Emit an event if within workflow context
|
|
107
|
+
*/
|
|
108
|
+
emitWorkflowEvent(event) {
|
|
109
|
+
const ctx = getExecutionContext();
|
|
110
|
+
if (ctx) {
|
|
111
|
+
ctx.emitEvent(event);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Internal prompt execution with full flow
|
|
116
|
+
*/
|
|
117
|
+
async executePrompt(prompt, overrides) {
|
|
118
|
+
const startTime = Date.now();
|
|
119
|
+
let toolCallCount = 0;
|
|
120
|
+
let totalUsage = { input_tokens: 0, output_tokens: 0 };
|
|
121
|
+
// Get execution context for event emission
|
|
122
|
+
const ctx = getExecutionContext();
|
|
123
|
+
// Merge configuration: Prompt > Overrides > Config
|
|
124
|
+
const effectiveSystem = prompt.systemOverride ?? overrides?.system ?? this.config.system;
|
|
125
|
+
const effectiveModel = overrides?.model ?? this.model;
|
|
126
|
+
const effectiveMaxTokens = overrides?.maxTokens ?? this.config.maxTokens ?? 4096;
|
|
127
|
+
const effectiveTemperature = overrides?.temperature ?? this.config.temperature;
|
|
128
|
+
// Check cache if enabled
|
|
129
|
+
const cacheEnabled = this.config.enableCache && !overrides?.disableCache;
|
|
130
|
+
let cacheKey;
|
|
131
|
+
if (cacheEnabled) {
|
|
132
|
+
const cacheInputs = {
|
|
133
|
+
user: prompt.buildUserMessage(),
|
|
134
|
+
data: prompt.getData(),
|
|
135
|
+
system: effectiveSystem,
|
|
136
|
+
model: effectiveModel,
|
|
137
|
+
temperature: effectiveTemperature,
|
|
138
|
+
maxTokens: effectiveMaxTokens,
|
|
139
|
+
tools: this.config.tools,
|
|
140
|
+
mcps: this.config.mcps,
|
|
141
|
+
skills: this.config.skills,
|
|
142
|
+
responseFormat: prompt.getResponseFormat(),
|
|
143
|
+
};
|
|
144
|
+
cacheKey = generateCacheKey(cacheInputs);
|
|
145
|
+
const cached = await defaultCache.get(cacheKey);
|
|
146
|
+
if (cached) {
|
|
147
|
+
// Emit cache hit event
|
|
148
|
+
if (ctx) {
|
|
149
|
+
this.emitWorkflowEvent({
|
|
150
|
+
type: 'cacheHit',
|
|
151
|
+
key: cacheKey,
|
|
152
|
+
node: ctx.workflowNode,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return cached;
|
|
156
|
+
}
|
|
157
|
+
// Emit cache miss event
|
|
158
|
+
if (ctx) {
|
|
159
|
+
this.emitWorkflowEvent({
|
|
160
|
+
type: 'cacheMiss',
|
|
161
|
+
key: cacheKey,
|
|
162
|
+
node: ctx.workflowNode,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Emit prompt start event if in workflow context
|
|
167
|
+
if (ctx) {
|
|
168
|
+
this.emitWorkflowEvent({
|
|
169
|
+
type: 'agentPromptStart',
|
|
170
|
+
agentId: this.id,
|
|
171
|
+
agentName: this.name,
|
|
172
|
+
promptId: prompt.id,
|
|
173
|
+
node: ctx.workflowNode,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
const effectiveTools = this.mergeTools(prompt.toolsOverride ?? overrides?.tools ?? this.config.tools);
|
|
177
|
+
const effectiveHooks = this.mergeHooks(prompt.hooksOverride, overrides?.hooks, this.config.hooks);
|
|
178
|
+
const effectiveStop = overrides?.stop;
|
|
179
|
+
// Set up environment variables
|
|
180
|
+
const originalEnv = this.setupEnvironment(overrides?.env ?? this.config.env);
|
|
181
|
+
try {
|
|
182
|
+
// Call session start hooks
|
|
183
|
+
await this.callHooks(effectiveHooks?.sessionStart, {
|
|
184
|
+
agentId: this.id,
|
|
185
|
+
agentName: this.name,
|
|
186
|
+
});
|
|
187
|
+
// Build initial messages
|
|
188
|
+
const messages = [
|
|
189
|
+
{ role: 'user', content: prompt.buildUserMessage() },
|
|
190
|
+
];
|
|
191
|
+
// Execute conversation loop
|
|
192
|
+
let response = await this.callApi(messages, effectiveSystem, effectiveTools, effectiveModel, effectiveMaxTokens, effectiveTemperature, effectiveStop);
|
|
193
|
+
totalUsage = this.addUsage(totalUsage, response.usage);
|
|
194
|
+
// Handle tool use loop
|
|
195
|
+
while (response.stop_reason === 'tool_use') {
|
|
196
|
+
const toolUseBlocks = response.content.filter((block) => block.type === 'tool_use');
|
|
197
|
+
const toolResults = [];
|
|
198
|
+
for (const toolUse of toolUseBlocks) {
|
|
199
|
+
toolCallCount++;
|
|
200
|
+
// Call pre-tool hooks
|
|
201
|
+
await this.callHooks(effectiveHooks?.preToolUse, {
|
|
202
|
+
toolName: toolUse.name,
|
|
203
|
+
toolInput: toolUse.input,
|
|
204
|
+
agentId: this.id,
|
|
205
|
+
});
|
|
206
|
+
const toolStartTime = Date.now();
|
|
207
|
+
// Execute tool
|
|
208
|
+
const result = await this.executeTool(toolUse.name, toolUse.input);
|
|
209
|
+
const toolDuration = Date.now() - toolStartTime;
|
|
210
|
+
// Emit tool invocation event if in workflow context
|
|
211
|
+
if (ctx) {
|
|
212
|
+
this.emitWorkflowEvent({
|
|
213
|
+
type: 'toolInvocation',
|
|
214
|
+
toolName: toolUse.name,
|
|
215
|
+
input: toolUse.input,
|
|
216
|
+
output: result,
|
|
217
|
+
duration: toolDuration,
|
|
218
|
+
node: ctx.workflowNode,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// Call post-tool hooks
|
|
222
|
+
await this.callHooks(effectiveHooks?.postToolUse, {
|
|
223
|
+
toolName: toolUse.name,
|
|
224
|
+
toolInput: toolUse.input,
|
|
225
|
+
toolOutput: result,
|
|
226
|
+
agentId: this.id,
|
|
227
|
+
duration: toolDuration,
|
|
228
|
+
});
|
|
229
|
+
toolResults.push({
|
|
230
|
+
type: 'tool_result',
|
|
231
|
+
tool_use_id: toolUse.id,
|
|
232
|
+
content: typeof result === 'string' ? result : JSON.stringify(result),
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
// Add assistant message with tool uses
|
|
236
|
+
messages.push({ role: 'assistant', content: response.content });
|
|
237
|
+
// Add tool results
|
|
238
|
+
messages.push({ role: 'user', content: toolResults });
|
|
239
|
+
// Continue conversation
|
|
240
|
+
response = await this.callApi(messages, effectiveSystem, effectiveTools, effectiveModel, effectiveMaxTokens, effectiveTemperature, effectiveStop);
|
|
241
|
+
totalUsage = this.addUsage(totalUsage, response.usage);
|
|
242
|
+
}
|
|
243
|
+
// Extract text response
|
|
244
|
+
const textContent = response.content.find((block) => block.type === 'text');
|
|
245
|
+
if (!textContent) {
|
|
246
|
+
throw new Error('No text response received from API');
|
|
247
|
+
}
|
|
248
|
+
// Parse JSON from response
|
|
249
|
+
const jsonMatch = textContent.text.match(/\{[\s\S]*\}/);
|
|
250
|
+
if (!jsonMatch) {
|
|
251
|
+
throw new Error('No JSON object found in response');
|
|
252
|
+
}
|
|
253
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
254
|
+
// Validate with schema
|
|
255
|
+
const validated = prompt.validateResponse(parsed);
|
|
256
|
+
// Call session end hooks
|
|
257
|
+
await this.callHooks(effectiveHooks?.sessionEnd, {
|
|
258
|
+
agentId: this.id,
|
|
259
|
+
agentName: this.name,
|
|
260
|
+
totalDuration: Date.now() - startTime,
|
|
261
|
+
});
|
|
262
|
+
const duration = Date.now() - startTime;
|
|
263
|
+
// Emit prompt end event if in workflow context
|
|
264
|
+
if (ctx) {
|
|
265
|
+
this.emitWorkflowEvent({
|
|
266
|
+
type: 'agentPromptEnd',
|
|
267
|
+
agentId: this.id,
|
|
268
|
+
agentName: this.name,
|
|
269
|
+
promptId: prompt.id,
|
|
270
|
+
node: ctx.workflowNode,
|
|
271
|
+
duration,
|
|
272
|
+
tokenUsage: totalUsage,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
const result = {
|
|
276
|
+
data: validated,
|
|
277
|
+
usage: totalUsage,
|
|
278
|
+
duration,
|
|
279
|
+
toolCalls: toolCallCount,
|
|
280
|
+
};
|
|
281
|
+
// Store in cache if enabled
|
|
282
|
+
if (cacheEnabled && cacheKey) {
|
|
283
|
+
await defaultCache.set(cacheKey, result, { prefix: this.id });
|
|
284
|
+
}
|
|
285
|
+
return result;
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
// Restore environment
|
|
289
|
+
this.restoreEnvironment(originalEnv);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Call the Anthropic API
|
|
294
|
+
*/
|
|
295
|
+
async callApi(messages, system, tools, model, maxTokens, temperature, stop) {
|
|
296
|
+
const params = {
|
|
297
|
+
model,
|
|
298
|
+
max_tokens: maxTokens,
|
|
299
|
+
messages,
|
|
300
|
+
};
|
|
301
|
+
if (system) {
|
|
302
|
+
params.system = system;
|
|
303
|
+
}
|
|
304
|
+
if (tools && tools.length > 0) {
|
|
305
|
+
params.tools = tools.map((tool) => ({
|
|
306
|
+
name: tool.name,
|
|
307
|
+
description: tool.description,
|
|
308
|
+
input_schema: tool.input_schema,
|
|
309
|
+
}));
|
|
310
|
+
}
|
|
311
|
+
if (temperature !== undefined) {
|
|
312
|
+
params.temperature = temperature;
|
|
313
|
+
}
|
|
314
|
+
if (stop && stop.length > 0) {
|
|
315
|
+
params.stop_sequences = stop;
|
|
316
|
+
}
|
|
317
|
+
return this.client.messages.create(params);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Execute a tool (either direct or via MCP)
|
|
321
|
+
*/
|
|
322
|
+
async executeTool(name, input) {
|
|
323
|
+
// First, check stored MCPHandler instances (they have registered executors)
|
|
324
|
+
for (const handler of this.mcpHandlers) {
|
|
325
|
+
if (handler.hasTool(name)) {
|
|
326
|
+
const result = await handler.executeTool(name, input);
|
|
327
|
+
if (result.is_error) {
|
|
328
|
+
throw new Error(result.content);
|
|
329
|
+
}
|
|
330
|
+
return result.content;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// Fall back to main mcpHandler (for non-MCPHandler MCPServers)
|
|
334
|
+
if (this.mcpHandler.hasTool(name)) {
|
|
335
|
+
const result = await this.mcpHandler.executeTool(name, input);
|
|
336
|
+
if (result.is_error) {
|
|
337
|
+
throw new Error(result.content);
|
|
338
|
+
}
|
|
339
|
+
return result.content;
|
|
340
|
+
}
|
|
341
|
+
// Look for direct tool handler - this would be set by subclasses
|
|
342
|
+
throw new Error(`No handler found for tool '${name}'`);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Merge tools from config and MCP servers
|
|
346
|
+
*/
|
|
347
|
+
mergeTools(configTools) {
|
|
348
|
+
const mcpTools = this.mcpHandler.getTools();
|
|
349
|
+
const directTools = configTools ?? [];
|
|
350
|
+
const allTools = [...directTools, ...mcpTools];
|
|
351
|
+
return allTools.length > 0 ? allTools : undefined;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Merge hooks from multiple sources
|
|
355
|
+
*/
|
|
356
|
+
mergeHooks(promptHooks, overrideHooks, configHooks) {
|
|
357
|
+
return {
|
|
358
|
+
preToolUse: [
|
|
359
|
+
...(configHooks?.preToolUse ?? []),
|
|
360
|
+
...(overrideHooks?.preToolUse ?? []),
|
|
361
|
+
...(promptHooks?.preToolUse ?? []),
|
|
362
|
+
],
|
|
363
|
+
postToolUse: [
|
|
364
|
+
...(configHooks?.postToolUse ?? []),
|
|
365
|
+
...(overrideHooks?.postToolUse ?? []),
|
|
366
|
+
...(promptHooks?.postToolUse ?? []),
|
|
367
|
+
],
|
|
368
|
+
sessionStart: [
|
|
369
|
+
...(configHooks?.sessionStart ?? []),
|
|
370
|
+
...(overrideHooks?.sessionStart ?? []),
|
|
371
|
+
...(promptHooks?.sessionStart ?? []),
|
|
372
|
+
],
|
|
373
|
+
sessionEnd: [
|
|
374
|
+
...(configHooks?.sessionEnd ?? []),
|
|
375
|
+
...(overrideHooks?.sessionEnd ?? []),
|
|
376
|
+
...(promptHooks?.sessionEnd ?? []),
|
|
377
|
+
],
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Call hooks of a specific type
|
|
382
|
+
*/
|
|
383
|
+
async callHooks(hooks, context) {
|
|
384
|
+
if (!hooks)
|
|
385
|
+
return;
|
|
386
|
+
for (const hook of hooks) {
|
|
387
|
+
await hook(context);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Set up environment variables
|
|
392
|
+
*/
|
|
393
|
+
setupEnvironment(env) {
|
|
394
|
+
if (!env)
|
|
395
|
+
return {};
|
|
396
|
+
const original = {};
|
|
397
|
+
for (const [key, value] of Object.entries(env)) {
|
|
398
|
+
original[key] = process.env[key];
|
|
399
|
+
process.env[key] = value;
|
|
400
|
+
}
|
|
401
|
+
return original;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Restore environment variables
|
|
405
|
+
*/
|
|
406
|
+
restoreEnvironment(original) {
|
|
407
|
+
for (const [key, value] of Object.entries(original)) {
|
|
408
|
+
if (value === undefined) {
|
|
409
|
+
delete process.env[key];
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
process.env[key] = value;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Add token usage from response
|
|
418
|
+
*/
|
|
419
|
+
addUsage(total, usage) {
|
|
420
|
+
return {
|
|
421
|
+
input_tokens: total.input_tokens + usage.input_tokens,
|
|
422
|
+
output_tokens: total.output_tokens + usage.output_tokens,
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,116 +4,65 @@
|
|
|
4
4
|
* Uses Node.js AsyncLocalStorage to automatically propagate context
|
|
5
5
|
* through async call chains without manual passing.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
7
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
9
8
|
import type { WorkflowNode, WorkflowEvent } from '../types/index.js';
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
* Context available during agent/prompt execution
|
|
13
11
|
*/
|
|
14
12
|
export interface AgentExecutionContext {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/** Parent workflow ID if nested */
|
|
25
|
-
parentWorkflowId?: string;
|
|
13
|
+
/** Current workflow node in the hierarchy */
|
|
14
|
+
workflowNode: WorkflowNode;
|
|
15
|
+
/** Function to emit events to the workflow tree */
|
|
16
|
+
emitEvent: (event: WorkflowEvent) => void;
|
|
17
|
+
/** Workflow ID for tracking */
|
|
18
|
+
workflowId: string;
|
|
19
|
+
/** Parent workflow ID if nested */
|
|
20
|
+
parentWorkflowId?: string;
|
|
26
21
|
}
|
|
27
|
-
|
|
28
22
|
/**
|
|
29
23
|
* Global AsyncLocalStorage instance for execution context
|
|
30
24
|
* Single shared instance per application (recommended pattern)
|
|
31
25
|
*/
|
|
32
|
-
const executionContext
|
|
33
|
-
|
|
26
|
+
declare const executionContext: AsyncLocalStorage<AgentExecutionContext>;
|
|
34
27
|
/**
|
|
35
28
|
* Get the current execution context
|
|
36
29
|
* @returns Current context or undefined if not in a workflow
|
|
37
30
|
*/
|
|
38
|
-
export function getExecutionContext(): AgentExecutionContext | undefined
|
|
39
|
-
return executionContext.getStore();
|
|
40
|
-
}
|
|
41
|
-
|
|
31
|
+
export declare function getExecutionContext(): AgentExecutionContext | undefined;
|
|
42
32
|
/**
|
|
43
33
|
* Get the current execution context, throwing if not available
|
|
44
34
|
* @param operation Name of the operation requiring context
|
|
45
35
|
* @returns Current context
|
|
46
36
|
* @throws Error if not within a workflow context
|
|
47
37
|
*/
|
|
48
|
-
export function requireExecutionContext(
|
|
49
|
-
operation: string
|
|
50
|
-
): AgentExecutionContext {
|
|
51
|
-
const context = executionContext.getStore();
|
|
52
|
-
if (!context) {
|
|
53
|
-
throw new Error(
|
|
54
|
-
`${operation} called outside of workflow context. ` +
|
|
55
|
-
`Agent/Prompt operations must be executed within a workflow step.`
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
return context;
|
|
59
|
-
}
|
|
60
|
-
|
|
38
|
+
export declare function requireExecutionContext(operation: string): AgentExecutionContext;
|
|
61
39
|
/**
|
|
62
40
|
* Run a function within an execution context
|
|
63
41
|
* @param context Context to establish
|
|
64
42
|
* @param fn Function to execute
|
|
65
43
|
* @returns Result of the function
|
|
66
44
|
*/
|
|
67
|
-
export
|
|
68
|
-
context: AgentExecutionContext,
|
|
69
|
-
fn: () => Promise<T>
|
|
70
|
-
): Promise<T> {
|
|
71
|
-
return executionContext.run(context, fn);
|
|
72
|
-
}
|
|
73
|
-
|
|
45
|
+
export declare function runInContext<T>(context: AgentExecutionContext, fn: () => Promise<T>): Promise<T>;
|
|
74
46
|
/**
|
|
75
47
|
* Run a synchronous function within an execution context
|
|
76
48
|
* @param context Context to establish
|
|
77
49
|
* @param fn Function to execute
|
|
78
50
|
* @returns Result of the function
|
|
79
51
|
*/
|
|
80
|
-
export function runInContextSync<T>(
|
|
81
|
-
context: AgentExecutionContext,
|
|
82
|
-
fn: () => T
|
|
83
|
-
): T {
|
|
84
|
-
return executionContext.run(context, fn);
|
|
85
|
-
}
|
|
86
|
-
|
|
52
|
+
export declare function runInContextSync<T>(context: AgentExecutionContext, fn: () => T): T;
|
|
87
53
|
/**
|
|
88
54
|
* Check if currently within an execution context
|
|
89
55
|
* @returns true if context is available
|
|
90
56
|
*/
|
|
91
|
-
export function hasExecutionContext(): boolean
|
|
92
|
-
return executionContext.getStore() !== undefined;
|
|
93
|
-
}
|
|
94
|
-
|
|
57
|
+
export declare function hasExecutionContext(): boolean;
|
|
95
58
|
/**
|
|
96
59
|
* Create a child context with updated node
|
|
97
60
|
* @param childNode The new workflow node for the child context
|
|
98
61
|
* @returns New context with child node
|
|
99
62
|
*/
|
|
100
|
-
export function createChildContext(
|
|
101
|
-
childNode: WorkflowNode
|
|
102
|
-
): AgentExecutionContext | undefined {
|
|
103
|
-
const parent = getExecutionContext();
|
|
104
|
-
if (!parent) {
|
|
105
|
-
return undefined;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return {
|
|
109
|
-
workflowNode: childNode,
|
|
110
|
-
emitEvent: parent.emitEvent,
|
|
111
|
-
workflowId: parent.workflowId,
|
|
112
|
-
parentWorkflowId: parent.parentWorkflowId,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
|
|
63
|
+
export declare function createChildContext(childNode: WorkflowNode): AgentExecutionContext | undefined;
|
|
116
64
|
/**
|
|
117
65
|
* Export the raw AsyncLocalStorage for advanced use cases
|
|
118
66
|
*/
|
|
119
67
|
export { executionContext as agentExecutionStorage };
|
|
68
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,YAAY,EAAE,YAAY,CAAC;IAE3B,mDAAmD;IACnD,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAE1C,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IAEnB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,QAAA,MAAM,gBAAgB,0CAAiD,CAAC;AAExE;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,qBAAqB,GAAG,SAAS,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAChB,qBAAqB,CASvB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,OAAO,EAAE,qBAAqB,EAC9B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,qBAAqB,EAC9B,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAEH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,GACtB,qBAAqB,GAAG,SAAS,CAYnC;AAED;;GAEG;AACH,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentExecutionContext - Provides zero-plumbing context propagation
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js AsyncLocalStorage to automatically propagate context
|
|
5
|
+
* through async call chains without manual passing.
|
|
6
|
+
*/
|
|
7
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
8
|
+
/**
|
|
9
|
+
* Global AsyncLocalStorage instance for execution context
|
|
10
|
+
* Single shared instance per application (recommended pattern)
|
|
11
|
+
*/
|
|
12
|
+
const executionContext = new AsyncLocalStorage();
|
|
13
|
+
/**
|
|
14
|
+
* Get the current execution context
|
|
15
|
+
* @returns Current context or undefined if not in a workflow
|
|
16
|
+
*/
|
|
17
|
+
export function getExecutionContext() {
|
|
18
|
+
return executionContext.getStore();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get the current execution context, throwing if not available
|
|
22
|
+
* @param operation Name of the operation requiring context
|
|
23
|
+
* @returns Current context
|
|
24
|
+
* @throws Error if not within a workflow context
|
|
25
|
+
*/
|
|
26
|
+
export function requireExecutionContext(operation) {
|
|
27
|
+
const context = executionContext.getStore();
|
|
28
|
+
if (!context) {
|
|
29
|
+
throw new Error(`${operation} called outside of workflow context. ` +
|
|
30
|
+
`Agent/Prompt operations must be executed within a workflow step.`);
|
|
31
|
+
}
|
|
32
|
+
return context;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Run a function within an execution context
|
|
36
|
+
* @param context Context to establish
|
|
37
|
+
* @param fn Function to execute
|
|
38
|
+
* @returns Result of the function
|
|
39
|
+
*/
|
|
40
|
+
export async function runInContext(context, fn) {
|
|
41
|
+
return executionContext.run(context, fn);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Run a synchronous function within an execution context
|
|
45
|
+
* @param context Context to establish
|
|
46
|
+
* @param fn Function to execute
|
|
47
|
+
* @returns Result of the function
|
|
48
|
+
*/
|
|
49
|
+
export function runInContextSync(context, fn) {
|
|
50
|
+
return executionContext.run(context, fn);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if currently within an execution context
|
|
54
|
+
* @returns true if context is available
|
|
55
|
+
*/
|
|
56
|
+
export function hasExecutionContext() {
|
|
57
|
+
return executionContext.getStore() !== undefined;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a child context with updated node
|
|
61
|
+
* @param childNode The new workflow node for the child context
|
|
62
|
+
* @returns New context with child node
|
|
63
|
+
*/
|
|
64
|
+
export function createChildContext(childNode) {
|
|
65
|
+
const parent = getExecutionContext();
|
|
66
|
+
if (!parent) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
workflowNode: childNode,
|
|
71
|
+
emitEvent: parent.emitEvent,
|
|
72
|
+
workflowId: parent.workflowId,
|
|
73
|
+
parentWorkflowId: parent.parentWorkflowId,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Export the raw AsyncLocalStorage for advanced use cases
|
|
78
|
+
*/
|
|
79
|
+
export { executionContext as agentExecutionStorage };
|
|
80
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAoBrD;;;GAGG;AACH,MAAM,gBAAgB,GAAG,IAAI,iBAAiB,EAAyB,CAAC;AAExE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAiB;IAEjB,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,uCAAuC;YACjD,kEAAkE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA8B,EAC9B,EAAoB;IAEpB,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA8B,EAC9B,EAAW;IAEX,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAuB;IAEvB,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,YAAY,EAAE,SAAS;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,CAAC"}
|