groundswell 0.0.2 → 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/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/{src/__tests__/helpers/index.ts → dist/__tests__/helpers/index.js} +2 -10
- 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} +1 -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 +5 -2
- package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
- package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
- package/.claude/commands/task-breakdown.md +0 -94
- package/.claude/settings.local.json +0 -9
- package/.claude/system_prompts/task-breakdown.md +0 -101
- package/PRD.md +0 -543
- package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
- 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 -258
- 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/examples/11-reparenting-workflows.ts +0 -269
- package/examples/index.ts +0 -147
- package/examples/utils/helpers.ts +0 -57
- package/package-lock.json +0 -2398
- package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
- package/plan/001_d3bb02af4886/backlog.json +0 -867
- package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
- package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
- package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
- package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
- package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
- package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
- package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
- package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
- package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
- package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
- package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
- package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
- package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
- package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
- package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
- package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
- package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
- package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
- package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
- package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
- package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
- package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
- package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
- package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
- package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
- package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
- package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
- package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
- package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
- package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
- package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
- package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
- package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
- package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
- package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
- package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
- package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
- package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
- package/scripts/generate-llms-full.ts +0 -206
- package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
- package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
- package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
- package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
- package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
- package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
- package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
- package/src/__tests__/adversarial/edge-case.test.ts +0 -703
- package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
- package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
- package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
- package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
- package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
- package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
- package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
- package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
- package/src/__tests__/helpers/tree-verification.ts +0 -257
- package/src/__tests__/integration/agent-workflow.test.ts +0 -256
- package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
- package/src/__tests__/integration/observer-logging.test.ts +0 -643
- package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
- package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
- 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 -217
- package/src/__tests__/unit/decorators.test.ts +0 -100
- package/src/__tests__/unit/introspection-tools.test.ts +0 -277
- package/src/__tests__/unit/logger.test.ts +0 -293
- package/src/__tests__/unit/observable.test.ts +0 -321
- package/src/__tests__/unit/prompt.test.ts +0 -135
- package/src/__tests__/unit/reflection.test.ts +0 -210
- package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
- package/src/__tests__/unit/tree-debugger.test.ts +0 -85
- package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
- package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
- package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
- package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
- package/src/__tests__/unit/workflow.test.ts +0 -357
- package/src/cache/cache-key.ts +0 -244
- package/src/cache/cache.ts +0 -236
- package/src/core/agent.ts +0 -593
- package/src/core/event-tree.ts +0 -260
- package/src/core/logger.ts +0 -112
- package/src/core/mcp-handler.ts +0 -184
- package/src/core/prompt.ts +0 -150
- package/src/core/workflow-context.ts +0 -351
- package/src/core/workflow.ts +0 -540
- package/src/debugger/tree-debugger.ts +0 -255
- package/src/decorators/observed-state.ts +0 -95
- package/src/decorators/step.ts +0 -139
- package/src/decorators/task.ts +0 -159
- package/src/examples/tdd-orchestrator.ts +0 -65
- package/src/examples/test-cycle-workflow.ts +0 -64
- package/src/index.ts +0 -142
- 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 -32
- package/src/types/error-strategy.ts +0 -13
- package/src/types/error.ts +0 -20
- package/src/types/events.ts +0 -75
- 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 -106
- package/src/utils/workflow-error-utils.ts +0 -56
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -16
package/src/core/event-tree.ts
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EventTreeHandle - Queryable interface for the workflow event tree
|
|
3
|
-
*
|
|
4
|
-
* Provides methods for traversing and querying the event tree
|
|
5
|
-
* that mirrors workflow execution.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type {
|
|
9
|
-
EventTreeHandle,
|
|
10
|
-
EventNode,
|
|
11
|
-
EventMetrics,
|
|
12
|
-
} from '../types/workflow-context.js';
|
|
13
|
-
import type { WorkflowNode, WorkflowEvent } from '../types/index.js';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Implementation of EventTreeHandle
|
|
17
|
-
*/
|
|
18
|
-
export class EventTreeHandleImpl implements EventTreeHandle {
|
|
19
|
-
/** Root node of the tree */
|
|
20
|
-
public readonly root: EventNode;
|
|
21
|
-
|
|
22
|
-
/** Index of nodes by ID for fast lookup */
|
|
23
|
-
private nodeIndex: Map<string, EventNode> = new Map();
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Create a new EventTreeHandle from a workflow node
|
|
27
|
-
* @param workflowNode Root workflow node
|
|
28
|
-
*/
|
|
29
|
-
constructor(workflowNode: WorkflowNode) {
|
|
30
|
-
this.root = this.buildEventNode(workflowNode);
|
|
31
|
-
this.buildIndex(this.root);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Get a node by ID
|
|
36
|
-
* @param id Node ID to find
|
|
37
|
-
*/
|
|
38
|
-
public getNode(id: string): EventNode | undefined {
|
|
39
|
-
return this.nodeIndex.get(id);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Get all children of a node
|
|
44
|
-
* @param id Parent node ID
|
|
45
|
-
*/
|
|
46
|
-
public getChildren(id: string): EventNode[] {
|
|
47
|
-
const node = this.nodeIndex.get(id);
|
|
48
|
-
return node?.children ?? [];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Get all ancestors of a node (from node up to root, excluding the node itself)
|
|
53
|
-
* @param id Node ID
|
|
54
|
-
*/
|
|
55
|
-
public getAncestors(id: string): EventNode[] {
|
|
56
|
-
const ancestors: EventNode[] = [];
|
|
57
|
-
const node = this.nodeIndex.get(id);
|
|
58
|
-
|
|
59
|
-
if (!node || !node.parentId) {
|
|
60
|
-
return ancestors;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
let currentId = node.parentId;
|
|
64
|
-
while (currentId) {
|
|
65
|
-
const parent = this.nodeIndex.get(currentId);
|
|
66
|
-
if (!parent) break;
|
|
67
|
-
ancestors.push(parent);
|
|
68
|
-
currentId = parent.parentId ?? '';
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return ancestors;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Export tree as JSON
|
|
76
|
-
*/
|
|
77
|
-
public toJSON(): EventNode {
|
|
78
|
-
return this.cloneNode(this.root);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Rebuild the tree from an updated workflow node
|
|
83
|
-
* @param workflowNode Updated workflow node
|
|
84
|
-
*/
|
|
85
|
-
public rebuild(workflowNode: WorkflowNode): void {
|
|
86
|
-
const newRoot = this.buildEventNode(workflowNode);
|
|
87
|
-
(this.root as { children: EventNode[] }).children = newRoot.children;
|
|
88
|
-
Object.assign(this.root, {
|
|
89
|
-
type: newRoot.type,
|
|
90
|
-
name: newRoot.name,
|
|
91
|
-
timestamp: newRoot.timestamp,
|
|
92
|
-
metrics: newRoot.metrics,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
this.nodeIndex.clear();
|
|
96
|
-
this.buildIndex(this.root);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Build an EventNode from a WorkflowNode
|
|
101
|
-
*/
|
|
102
|
-
private buildEventNode(
|
|
103
|
-
wfNode: WorkflowNode,
|
|
104
|
-
parentId?: string
|
|
105
|
-
): EventNode {
|
|
106
|
-
const eventNode: EventNode = {
|
|
107
|
-
id: wfNode.id,
|
|
108
|
-
type: 'workflow',
|
|
109
|
-
timestamp: Date.now(),
|
|
110
|
-
name: wfNode.name,
|
|
111
|
-
parentId,
|
|
112
|
-
children: [],
|
|
113
|
-
metrics: this.extractMetrics(wfNode),
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
// Add event nodes from workflow events
|
|
117
|
-
for (const event of wfNode.events) {
|
|
118
|
-
const childNode = this.eventToNode(event, wfNode.id);
|
|
119
|
-
if (childNode) {
|
|
120
|
-
eventNode.children.push(childNode);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Add child workflow nodes
|
|
125
|
-
for (const child of wfNode.children) {
|
|
126
|
-
eventNode.children.push(this.buildEventNode(child, wfNode.id));
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return eventNode;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Convert a WorkflowEvent to an EventNode
|
|
134
|
-
*/
|
|
135
|
-
private eventToNode(
|
|
136
|
-
event: WorkflowEvent,
|
|
137
|
-
parentId: string
|
|
138
|
-
): EventNode | null {
|
|
139
|
-
const baseNode: Omit<EventNode, 'type' | 'payload'> = {
|
|
140
|
-
id: `${parentId}-${event.type}-${Date.now()}`,
|
|
141
|
-
timestamp: Date.now(),
|
|
142
|
-
parentId,
|
|
143
|
-
children: [],
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
switch (event.type) {
|
|
147
|
-
case 'stepStart':
|
|
148
|
-
return {
|
|
149
|
-
...baseNode,
|
|
150
|
-
type: 'step',
|
|
151
|
-
name: event.step,
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
case 'stepEnd':
|
|
155
|
-
return {
|
|
156
|
-
...baseNode,
|
|
157
|
-
type: 'stepComplete',
|
|
158
|
-
name: event.step,
|
|
159
|
-
metrics: { duration: event.duration },
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
case 'agentPromptStart':
|
|
163
|
-
return {
|
|
164
|
-
...baseNode,
|
|
165
|
-
id: `${event.agentId}-prompt-${event.promptId}`,
|
|
166
|
-
type: 'agentPrompt',
|
|
167
|
-
name: event.agentName,
|
|
168
|
-
payload: { promptId: event.promptId },
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
case 'agentPromptEnd':
|
|
172
|
-
return {
|
|
173
|
-
...baseNode,
|
|
174
|
-
id: `${event.agentId}-promptEnd-${event.promptId}`,
|
|
175
|
-
type: 'agentPromptComplete',
|
|
176
|
-
name: event.agentName,
|
|
177
|
-
metrics: {
|
|
178
|
-
duration: event.duration,
|
|
179
|
-
tokenUsage: event.tokenUsage
|
|
180
|
-
? {
|
|
181
|
-
input: event.tokenUsage.input_tokens,
|
|
182
|
-
output: event.tokenUsage.output_tokens,
|
|
183
|
-
}
|
|
184
|
-
: undefined,
|
|
185
|
-
},
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
case 'toolInvocation':
|
|
189
|
-
return {
|
|
190
|
-
...baseNode,
|
|
191
|
-
type: 'tool',
|
|
192
|
-
name: event.toolName,
|
|
193
|
-
payload: { input: event.input, output: event.output },
|
|
194
|
-
metrics: { duration: event.duration },
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
case 'error':
|
|
198
|
-
return {
|
|
199
|
-
...baseNode,
|
|
200
|
-
type: 'error',
|
|
201
|
-
name: event.error.message,
|
|
202
|
-
payload: event.error,
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
default:
|
|
206
|
-
return null;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Extract metrics from a workflow node
|
|
212
|
-
*/
|
|
213
|
-
private extractMetrics(wfNode: WorkflowNode): EventMetrics | undefined {
|
|
214
|
-
// Calculate total duration from step events
|
|
215
|
-
const stepEndEvents = wfNode.events.filter(
|
|
216
|
-
(e) => e.type === 'stepEnd'
|
|
217
|
-
) as Array<{ type: 'stepEnd'; duration: number }>;
|
|
218
|
-
|
|
219
|
-
if (stepEndEvents.length === 0) {
|
|
220
|
-
return undefined;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
const totalDuration = stepEndEvents.reduce(
|
|
224
|
-
(sum, e) => sum + e.duration,
|
|
225
|
-
0
|
|
226
|
-
);
|
|
227
|
-
|
|
228
|
-
return { duration: totalDuration };
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Build index of all nodes
|
|
233
|
-
*/
|
|
234
|
-
private buildIndex(node: EventNode): void {
|
|
235
|
-
this.nodeIndex.set(node.id, node);
|
|
236
|
-
for (const child of node.children) {
|
|
237
|
-
this.buildIndex(child);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Deep clone a node for JSON export
|
|
243
|
-
*/
|
|
244
|
-
private cloneNode(node: EventNode): EventNode {
|
|
245
|
-
return {
|
|
246
|
-
...node,
|
|
247
|
-
children: node.children.map((c) => this.cloneNode(c)),
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Create an EventTreeHandle from a workflow node
|
|
254
|
-
* @param workflowNode Root workflow node
|
|
255
|
-
*/
|
|
256
|
-
export function createEventTreeHandle(
|
|
257
|
-
workflowNode: WorkflowNode
|
|
258
|
-
): EventTreeHandle {
|
|
259
|
-
return new EventTreeHandleImpl(workflowNode);
|
|
260
|
-
}
|
package/src/core/logger.ts
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import type { WorkflowNode, LogEntry, LogLevel, WorkflowObserver } from '../types/index.js';
|
|
2
|
-
import { generateId } from '../utils/id.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Logger that emits log entries to workflow node and observers
|
|
6
|
-
*/
|
|
7
|
-
export class WorkflowLogger {
|
|
8
|
-
private readonly parentLogId?: string;
|
|
9
|
-
|
|
10
|
-
constructor(
|
|
11
|
-
private readonly node: WorkflowNode,
|
|
12
|
-
private readonly observers: WorkflowObserver[],
|
|
13
|
-
parentLogId?: string
|
|
14
|
-
) {
|
|
15
|
-
this.parentLogId = parentLogId;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Emit a log entry directly to the node without notifying observers
|
|
20
|
-
* Used to avoid infinite recursion when observer.onLog() throws
|
|
21
|
-
*/
|
|
22
|
-
private emitWithoutObserverNotification(entry: LogEntry): void {
|
|
23
|
-
this.node.logs.push(entry);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Emit a log entry to the node and all observers
|
|
28
|
-
*/
|
|
29
|
-
private emit(entry: LogEntry): void {
|
|
30
|
-
this.node.logs.push(entry);
|
|
31
|
-
for (const obs of this.observers) {
|
|
32
|
-
try {
|
|
33
|
-
obs.onLog(entry);
|
|
34
|
-
} catch (err) {
|
|
35
|
-
// Create error entry and emit without observer notification to avoid infinite recursion
|
|
36
|
-
const errorEntry: LogEntry = {
|
|
37
|
-
id: generateId(),
|
|
38
|
-
workflowId: this.node.id,
|
|
39
|
-
timestamp: Date.now(),
|
|
40
|
-
level: 'error',
|
|
41
|
-
message: 'Observer onLog error',
|
|
42
|
-
data: { error: err },
|
|
43
|
-
};
|
|
44
|
-
this.emitWithoutObserverNotification(errorEntry);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Create a log entry with the given level
|
|
51
|
-
*/
|
|
52
|
-
private log(level: LogLevel, message: string, data?: unknown): void {
|
|
53
|
-
const entry: LogEntry = {
|
|
54
|
-
id: generateId(),
|
|
55
|
-
workflowId: this.node.id,
|
|
56
|
-
timestamp: Date.now(),
|
|
57
|
-
level,
|
|
58
|
-
message,
|
|
59
|
-
data,
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
// Add parent log ID if this is a child logger
|
|
63
|
-
if (this.parentLogId) {
|
|
64
|
-
entry.parentLogId = this.parentLogId;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
this.emit(entry);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Log a debug message
|
|
72
|
-
*/
|
|
73
|
-
debug(message: string, data?: unknown): void {
|
|
74
|
-
this.log('debug', message, data);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Log an info message
|
|
79
|
-
*/
|
|
80
|
-
info(message: string, data?: unknown): void {
|
|
81
|
-
this.log('info', message, data);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Log a warning message
|
|
86
|
-
*/
|
|
87
|
-
warn(message: string, data?: unknown): void {
|
|
88
|
-
this.log('warn', message, data);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Log an error message
|
|
93
|
-
*/
|
|
94
|
-
error(message: string, data?: unknown): void {
|
|
95
|
-
this.log('error', message, data);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Create a child logger that includes parentLogId
|
|
100
|
-
* @param parentLogId - ID of the parent log entry (legacy API)
|
|
101
|
-
*/
|
|
102
|
-
child(parentLogId: string): WorkflowLogger;
|
|
103
|
-
/**
|
|
104
|
-
* Create a child logger with metadata
|
|
105
|
-
* @param meta - Partial log entry metadata (typically { parentLogId: string })
|
|
106
|
-
*/
|
|
107
|
-
child(meta: Partial<LogEntry>): WorkflowLogger;
|
|
108
|
-
child(input: string | Partial<LogEntry>): WorkflowLogger {
|
|
109
|
-
const parentLogId = typeof input === 'string' ? input : input.parentLogId;
|
|
110
|
-
return new WorkflowLogger(this.node, this.observers, parentLogId);
|
|
111
|
-
}
|
|
112
|
-
}
|
package/src/core/mcp-handler.ts
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Handler - Manages MCP server connections and tool execution
|
|
3
|
-
*
|
|
4
|
-
* Provides integration with MCP (Model Context Protocol) servers,
|
|
5
|
-
* converting MCP tools to Anthropic Tool format.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { MCPServer, Tool, ToolResult } from '../types/index.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Tool executor function type
|
|
12
|
-
*/
|
|
13
|
-
export type ToolExecutor = (input: unknown) => Promise<unknown>;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Registered tool with its executor
|
|
17
|
-
*/
|
|
18
|
-
interface RegisteredTool {
|
|
19
|
-
tool: Tool;
|
|
20
|
-
executor: ToolExecutor;
|
|
21
|
-
serverName: string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* MCPHandler - Manages MCP server registration and tool execution
|
|
26
|
-
*
|
|
27
|
-
* Currently supports:
|
|
28
|
-
* - inprocess transport: Direct tool registration
|
|
29
|
-
* - stdio transport: Documented for future implementation
|
|
30
|
-
*/
|
|
31
|
-
export class MCPHandler {
|
|
32
|
-
/** Registered MCP servers */
|
|
33
|
-
private servers: Map<string, MCPServer> = new Map();
|
|
34
|
-
|
|
35
|
-
/** Registered tools from all servers */
|
|
36
|
-
private registeredTools: Map<string, RegisteredTool> = new Map();
|
|
37
|
-
|
|
38
|
-
/** Custom tool executors for inprocess servers */
|
|
39
|
-
private toolExecutors: Map<string, ToolExecutor> = new Map();
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Register an MCP server
|
|
43
|
-
* @param server MCP server configuration
|
|
44
|
-
*/
|
|
45
|
-
public registerServer(server: MCPServer): void {
|
|
46
|
-
if (this.servers.has(server.name)) {
|
|
47
|
-
throw new Error(`MCP server '${server.name}' is already registered`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
this.servers.set(server.name, server);
|
|
51
|
-
|
|
52
|
-
// Register tools from the server
|
|
53
|
-
if (server.tools) {
|
|
54
|
-
for (const tool of server.tools) {
|
|
55
|
-
const fullName = `${server.name}__${tool.name}`;
|
|
56
|
-
this.registeredTools.set(fullName, {
|
|
57
|
-
tool: { ...tool, name: fullName },
|
|
58
|
-
executor: this.createToolExecutor(server, tool),
|
|
59
|
-
serverName: server.name,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Unregister an MCP server
|
|
67
|
-
* @param name Server name to unregister
|
|
68
|
-
*/
|
|
69
|
-
public unregisterServer(name: string): void {
|
|
70
|
-
const server = this.servers.get(name);
|
|
71
|
-
if (server?.tools) {
|
|
72
|
-
for (const tool of server.tools) {
|
|
73
|
-
const fullName = `${name}__${tool.name}`;
|
|
74
|
-
this.registeredTools.delete(fullName);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
this.servers.delete(name);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Register a custom tool executor for an inprocess tool
|
|
82
|
-
* @param serverName Server name
|
|
83
|
-
* @param toolName Tool name
|
|
84
|
-
* @param executor Executor function
|
|
85
|
-
*/
|
|
86
|
-
public registerToolExecutor(
|
|
87
|
-
serverName: string,
|
|
88
|
-
toolName: string,
|
|
89
|
-
executor: ToolExecutor
|
|
90
|
-
): void {
|
|
91
|
-
const fullName = `${serverName}__${toolName}`;
|
|
92
|
-
this.toolExecutors.set(fullName, executor);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Get all tools from registered servers in Anthropic format
|
|
97
|
-
* @returns Array of Tool definitions
|
|
98
|
-
*/
|
|
99
|
-
public getTools(): Tool[] {
|
|
100
|
-
return Array.from(this.registeredTools.values()).map((rt) => rt.tool);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Execute a tool by name
|
|
105
|
-
* @param toolName Full tool name (serverName__toolName)
|
|
106
|
-
* @param input Tool input
|
|
107
|
-
* @returns Tool result
|
|
108
|
-
*/
|
|
109
|
-
public async executeTool(
|
|
110
|
-
toolName: string,
|
|
111
|
-
input: unknown
|
|
112
|
-
): Promise<ToolResult> {
|
|
113
|
-
const registered = this.registeredTools.get(toolName);
|
|
114
|
-
if (!registered) {
|
|
115
|
-
return {
|
|
116
|
-
type: 'tool_result',
|
|
117
|
-
tool_use_id: '',
|
|
118
|
-
content: `Tool '${toolName}' not found`,
|
|
119
|
-
is_error: true,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
try {
|
|
124
|
-
const result = await registered.executor(input);
|
|
125
|
-
return {
|
|
126
|
-
type: 'tool_result',
|
|
127
|
-
tool_use_id: '',
|
|
128
|
-
content: typeof result === 'string' ? result : JSON.stringify(result),
|
|
129
|
-
};
|
|
130
|
-
} catch (error) {
|
|
131
|
-
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
132
|
-
return {
|
|
133
|
-
type: 'tool_result',
|
|
134
|
-
tool_use_id: '',
|
|
135
|
-
content: `Tool execution failed: ${message}`,
|
|
136
|
-
is_error: true,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Check if a tool is registered
|
|
143
|
-
* @param toolName Tool name to check
|
|
144
|
-
*/
|
|
145
|
-
public hasTool(toolName: string): boolean {
|
|
146
|
-
return this.registeredTools.has(toolName);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Get registered server names
|
|
151
|
-
*/
|
|
152
|
-
public getServerNames(): string[] {
|
|
153
|
-
return Array.from(this.servers.keys());
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Create a tool executor based on transport type
|
|
158
|
-
*/
|
|
159
|
-
private createToolExecutor(server: MCPServer, tool: Tool): ToolExecutor {
|
|
160
|
-
const fullName = `${server.name}__${tool.name}`;
|
|
161
|
-
|
|
162
|
-
if (server.transport === 'inprocess') {
|
|
163
|
-
// For inprocess, look for registered executor
|
|
164
|
-
return async (input: unknown) => {
|
|
165
|
-
const executor = this.toolExecutors.get(fullName);
|
|
166
|
-
if (!executor) {
|
|
167
|
-
throw new Error(
|
|
168
|
-
`No executor registered for inprocess tool '${fullName}'. ` +
|
|
169
|
-
`Use registerToolExecutor() to provide an executor.`
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
return executor(input);
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// stdio transport - placeholder for future implementation
|
|
177
|
-
return async (_input: unknown) => {
|
|
178
|
-
throw new Error(
|
|
179
|
-
`stdio transport for MCP server '${server.name}' is not yet implemented. ` +
|
|
180
|
-
`Use inprocess transport or register a custom executor.`
|
|
181
|
-
);
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
}
|
package/src/core/prompt.ts
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt<T> - Immutable type-safe prompt definition
|
|
3
|
-
*
|
|
4
|
-
* Prompts define what to send to an agent and how to validate the response.
|
|
5
|
-
* They are value objects - immutable and reusable across agents and workflows.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { z } from 'zod';
|
|
9
|
-
import type {
|
|
10
|
-
PromptConfig,
|
|
11
|
-
Tool,
|
|
12
|
-
MCPServer,
|
|
13
|
-
Skill,
|
|
14
|
-
AgentHooks,
|
|
15
|
-
} from '../types/index.js';
|
|
16
|
-
import { generateId } from '../utils/id.js';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Prompt class - immutable definition of a single agent call
|
|
20
|
-
* @template T The expected response type (validated via Zod schema)
|
|
21
|
-
*/
|
|
22
|
-
export class Prompt<T> {
|
|
23
|
-
/** Unique identifier for this prompt instance */
|
|
24
|
-
public readonly id: string;
|
|
25
|
-
|
|
26
|
-
/** User message content */
|
|
27
|
-
public readonly user: string;
|
|
28
|
-
|
|
29
|
-
/** Structured data to inject into the prompt */
|
|
30
|
-
public readonly data: Record<string, unknown>;
|
|
31
|
-
|
|
32
|
-
/** Zod schema defining the expected response format */
|
|
33
|
-
public readonly responseFormat: z.ZodType<T>;
|
|
34
|
-
|
|
35
|
-
/** System prompt override (takes precedence over agent config) */
|
|
36
|
-
public readonly systemOverride?: string;
|
|
37
|
-
|
|
38
|
-
/** Tools override */
|
|
39
|
-
public readonly toolsOverride?: Tool[];
|
|
40
|
-
|
|
41
|
-
/** MCPs override */
|
|
42
|
-
public readonly mcpsOverride?: MCPServer[];
|
|
43
|
-
|
|
44
|
-
/** Skills override */
|
|
45
|
-
public readonly skillsOverride?: Skill[];
|
|
46
|
-
|
|
47
|
-
/** Hooks override */
|
|
48
|
-
public readonly hooksOverride?: AgentHooks;
|
|
49
|
-
|
|
50
|
-
/** Enable reflection for this specific prompt */
|
|
51
|
-
public readonly enableReflection?: boolean;
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Create a new Prompt instance
|
|
55
|
-
* @param config Prompt configuration
|
|
56
|
-
*/
|
|
57
|
-
constructor(config: PromptConfig<T>) {
|
|
58
|
-
this.id = generateId();
|
|
59
|
-
this.user = config.user;
|
|
60
|
-
this.data = config.data ?? {};
|
|
61
|
-
this.responseFormat = config.responseFormat;
|
|
62
|
-
this.systemOverride = config.system;
|
|
63
|
-
this.toolsOverride = config.tools;
|
|
64
|
-
this.mcpsOverride = config.mcps;
|
|
65
|
-
this.skillsOverride = config.skills;
|
|
66
|
-
this.hooksOverride = config.hooks;
|
|
67
|
-
this.enableReflection = config.enableReflection;
|
|
68
|
-
|
|
69
|
-
// Freeze to ensure immutability
|
|
70
|
-
Object.freeze(this);
|
|
71
|
-
Object.freeze(this.data);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Validate a response against the response format schema
|
|
76
|
-
* @param data Unknown data to validate
|
|
77
|
-
* @returns Typed validated data
|
|
78
|
-
* @throws ZodError if validation fails
|
|
79
|
-
*/
|
|
80
|
-
public validateResponse(data: unknown): T {
|
|
81
|
-
return this.responseFormat.parse(data);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Safely validate response without throwing
|
|
86
|
-
* @param data Unknown data to validate
|
|
87
|
-
* @returns Result object with success flag and data or error
|
|
88
|
-
*/
|
|
89
|
-
public safeValidateResponse(
|
|
90
|
-
data: unknown
|
|
91
|
-
): { success: true; data: T } | { success: false; error: z.ZodError } {
|
|
92
|
-
const result = this.responseFormat.safeParse(data);
|
|
93
|
-
if (result.success) {
|
|
94
|
-
return { success: true, data: result.data };
|
|
95
|
-
}
|
|
96
|
-
return { success: false, error: result.error };
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Build the full user message including any injected data
|
|
101
|
-
* @returns Formatted user message
|
|
102
|
-
*/
|
|
103
|
-
public buildUserMessage(): string {
|
|
104
|
-
if (Object.keys(this.data).length === 0) {
|
|
105
|
-
return this.user;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Format data as a structured section
|
|
109
|
-
const dataSection = Object.entries(this.data)
|
|
110
|
-
.map(([key, value]) => `<${key}>\n${JSON.stringify(value, null, 2)}\n</${key}>`)
|
|
111
|
-
.join('\n\n');
|
|
112
|
-
|
|
113
|
-
return `${this.user}\n\n${dataSection}`;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Create a new Prompt with updated data (immutable pattern)
|
|
118
|
-
* @param newData Data to merge or replace
|
|
119
|
-
* @returns New Prompt instance
|
|
120
|
-
*/
|
|
121
|
-
public withData(newData: Record<string, unknown>): Prompt<T> {
|
|
122
|
-
return new Prompt({
|
|
123
|
-
user: this.user,
|
|
124
|
-
data: { ...this.data, ...newData },
|
|
125
|
-
responseFormat: this.responseFormat,
|
|
126
|
-
system: this.systemOverride,
|
|
127
|
-
tools: this.toolsOverride,
|
|
128
|
-
mcps: this.mcpsOverride,
|
|
129
|
-
skills: this.skillsOverride,
|
|
130
|
-
hooks: this.hooksOverride,
|
|
131
|
-
enableReflection: this.enableReflection,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Get the prompt data (used for cache key generation)
|
|
137
|
-
* @returns The prompt data object
|
|
138
|
-
*/
|
|
139
|
-
public getData(): Record<string, unknown> {
|
|
140
|
-
return this.data;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Get the response format schema (used for cache key generation)
|
|
145
|
-
* @returns The Zod response format schema
|
|
146
|
-
*/
|
|
147
|
-
public getResponseFormat(): z.ZodType<T> {
|
|
148
|
-
return this.responseFormat;
|
|
149
|
-
}
|
|
150
|
-
}
|