groundswell 0.0.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +26 -9
- package/dist/cache/cache-key.d.ts +20 -0
- package/dist/cache/cache-key.d.ts.map +1 -1
- package/dist/cache/cache-key.js +9 -0
- package/dist/cache/cache-key.js.map +1 -1
- package/dist/core/agent.d.ts +120 -29
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +584 -177
- package/dist/core/agent.js.map +1 -1
- package/dist/core/mcp-handler.d.ts +63 -5
- package/dist/core/mcp-handler.d.ts.map +1 -1
- package/dist/core/mcp-handler.js +184 -4
- package/dist/core/mcp-handler.js.map +1 -1
- package/dist/core/workflow-context.d.ts +6 -2
- package/dist/core/workflow-context.d.ts.map +1 -1
- package/dist/core/workflow-context.js +99 -4
- package/dist/core/workflow-context.js.map +1 -1
- package/dist/core/workflow.d.ts +315 -13
- package/dist/core/workflow.d.ts.map +1 -1
- package/dist/core/workflow.js +552 -30
- package/dist/core/workflow.js.map +1 -1
- package/dist/debugger/event-replayer.d.ts +422 -0
- package/dist/debugger/event-replayer.d.ts.map +1 -0
- package/dist/debugger/event-replayer.js +639 -0
- package/dist/debugger/event-replayer.js.map +1 -0
- package/dist/debugger/tree-debugger.d.ts +170 -1
- package/dist/debugger/tree-debugger.d.ts.map +1 -1
- package/dist/debugger/tree-debugger.js +423 -1
- package/dist/debugger/tree-debugger.js.map +1 -1
- package/dist/decorators/step.d.ts.map +1 -1
- package/dist/decorators/step.js +129 -47
- package/dist/decorators/step.js.map +1 -1
- package/dist/harnesses/claude-code-harness.d.ts +391 -0
- package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
- package/dist/harnesses/claude-code-harness.js +1076 -0
- package/dist/harnesses/claude-code-harness.js.map +1 -0
- package/dist/harnesses/harness-registry.d.ts +440 -0
- package/dist/harnesses/harness-registry.d.ts.map +1 -0
- package/dist/harnesses/harness-registry.js +543 -0
- package/dist/harnesses/harness-registry.js.map +1 -0
- package/dist/harnesses/index.d.ts +12 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +11 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/pi-harness.d.ts +219 -0
- package/dist/harnesses/pi-harness.d.ts.map +1 -0
- package/dist/harnesses/pi-harness.js +676 -0
- package/dist/harnesses/pi-harness.js.map +1 -0
- package/dist/harnesses/pi-schema-converter.d.ts +24 -0
- package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
- package/dist/harnesses/pi-schema-converter.js +81 -0
- package/dist/harnesses/pi-schema-converter.js.map +1 -0
- package/dist/harnesses/register-defaults.d.ts +24 -0
- package/dist/harnesses/register-defaults.d.ts.map +1 -0
- package/dist/harnesses/register-defaults.js +40 -0
- package/dist/harnesses/register-defaults.js.map +1 -0
- package/dist/harnesses/session-store.d.ts +201 -0
- package/dist/harnesses/session-store.d.ts.map +1 -0
- package/dist/harnesses/session-store.js +254 -0
- package/dist/harnesses/session-store.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/reflection/reflection.d.ts.map +1 -1
- package/dist/reflection/reflection.js +19 -4
- package/dist/reflection/reflection.js.map +1 -1
- package/dist/types/agent.d.ts +1253 -2
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +418 -1
- package/dist/types/agent.js.map +1 -1
- package/dist/types/decorators.d.ts +10 -1
- package/dist/types/decorators.d.ts.map +1 -1
- package/dist/types/events.d.ts +26 -0
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/harnesses.d.ts +474 -0
- package/dist/types/harnesses.d.ts.map +1 -0
- package/dist/types/harnesses.js +2 -0
- package/dist/types/harnesses.js.map +1 -0
- package/dist/types/index.d.ts +9 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/providers.d.ts +691 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +14 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/restart.d.ts +132 -0
- package/dist/types/restart.d.ts.map +1 -0
- package/dist/types/restart.js +2 -0
- package/dist/types/restart.js.map +1 -0
- package/dist/types/streaming.d.ts +194 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +67 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/workflow-context.d.ts +137 -1
- package/dist/types/workflow-context.d.ts.map +1 -1
- package/dist/utils/agent-validation.d.ts +88 -0
- package/dist/utils/agent-validation.d.ts.map +1 -0
- package/dist/utils/agent-validation.js +87 -0
- package/dist/utils/agent-validation.js.map +1 -0
- package/dist/utils/delay.d.ts +7 -0
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +9 -0
- package/dist/utils/delay.js.map +1 -0
- package/dist/utils/harness-config.d.ts +180 -0
- package/dist/utils/harness-config.d.ts.map +1 -0
- package/dist/utils/harness-config.js +311 -0
- package/dist/utils/harness-config.js.map +1 -0
- package/dist/utils/index.d.ts +9 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/model-spec.d.ts +110 -0
- package/dist/utils/model-spec.d.ts.map +1 -0
- package/dist/utils/model-spec.js +149 -0
- package/dist/utils/model-spec.js.map +1 -0
- package/dist/utils/provider-config.d.ts +10 -0
- package/dist/utils/provider-config.d.ts.map +1 -0
- package/dist/utils/provider-config.js +10 -0
- package/dist/utils/provider-config.js.map +1 -0
- package/dist/utils/restart-analysis.d.ts +202 -0
- package/dist/utils/restart-analysis.d.ts.map +1 -0
- package/dist/utils/restart-analysis.js +426 -0
- package/dist/utils/restart-analysis.js.map +1 -0
- package/dist/utils/session-serialization.d.ts +118 -0
- package/dist/utils/session-serialization.d.ts.map +1 -0
- package/dist/utils/session-serialization.js +217 -0
- package/dist/utils/session-serialization.js.map +1 -0
- package/package.json +31 -5
- package/CHANGELOG.md +0 -188
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts +0 -16
- package/dist/__tests__/adversarial/attachChild-performance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/attachChild-performance.test.js +0 -187
- package/dist/__tests__/adversarial/attachChild-performance.test.js.map +0 -1
- package/dist/__tests__/adversarial/circular-reference.test.d.ts +0 -13
- package/dist/__tests__/adversarial/circular-reference.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/circular-reference.test.js +0 -92
- package/dist/__tests__/adversarial/circular-reference.test.js.map +0 -1
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts +0 -16
- package/dist/__tests__/adversarial/complex-circular-reference.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/complex-circular-reference.test.js +0 -127
- package/dist/__tests__/adversarial/complex-circular-reference.test.js.map +0 -1
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts +0 -21
- package/dist/__tests__/adversarial/concurrent-task-failures.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js +0 -667
- package/dist/__tests__/adversarial/concurrent-task-failures.test.js.map +0 -1
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts +0 -6
- package/dist/__tests__/adversarial/deep-analysis.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/deep-analysis.test.js +0 -877
- package/dist/__tests__/adversarial/deep-analysis.test.js.map +0 -1
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts +0 -13
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js +0 -186
- package/dist/__tests__/adversarial/deep-hierarchy-stress.test.js.map +0 -1
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts +0 -6
- package/dist/__tests__/adversarial/e2e-prd-validation.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js +0 -626
- package/dist/__tests__/adversarial/e2e-prd-validation.test.js.map +0 -1
- package/dist/__tests__/adversarial/edge-case.test.d.ts +0 -6
- package/dist/__tests__/adversarial/edge-case.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/edge-case.test.js +0 -857
- package/dist/__tests__/adversarial/edge-case.test.js.map +0 -1
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts +0 -20
- package/dist/__tests__/adversarial/error-merge-strategy.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/error-merge-strategy.test.js +0 -907
- package/dist/__tests__/adversarial/error-merge-strategy.test.js.map +0 -1
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts +0 -2
- package/dist/__tests__/adversarial/incremental-performance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/incremental-performance.test.js +0 -113
- package/dist/__tests__/adversarial/incremental-performance.test.js.map +0 -1
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts +0 -22
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js +0 -383
- package/dist/__tests__/adversarial/node-map-update-benchmarks.test.js.map +0 -1
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts +0 -21
- package/dist/__tests__/adversarial/observer-propagation.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/observer-propagation.test.js +0 -404
- package/dist/__tests__/adversarial/observer-propagation.test.js.map +0 -1
- package/dist/__tests__/adversarial/parent-validation.test.d.ts +0 -13
- package/dist/__tests__/adversarial/parent-validation.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/parent-validation.test.js +0 -128
- package/dist/__tests__/adversarial/parent-validation.test.js.map +0 -1
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts +0 -20
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js +0 -482
- package/dist/__tests__/adversarial/prd-12-2-compliance.test.js.map +0 -1
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts +0 -6
- package/dist/__tests__/adversarial/prd-compliance.test.d.ts.map +0 -1
- package/dist/__tests__/adversarial/prd-compliance.test.js +0 -886
- package/dist/__tests__/adversarial/prd-compliance.test.js.map +0 -1
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts +0 -22
- package/dist/__tests__/compatibility/backward-compatibility.test.d.ts.map +0 -1
- package/dist/__tests__/compatibility/backward-compatibility.test.js +0 -1843
- package/dist/__tests__/compatibility/backward-compatibility.test.js.map +0 -1
- package/dist/__tests__/helpers/index.d.ts +0 -10
- package/dist/__tests__/helpers/index.d.ts.map +0 -1
- package/dist/__tests__/helpers/index.js +0 -10
- package/dist/__tests__/helpers/index.js.map +0 -1
- package/dist/__tests__/helpers/tree-verification.d.ts +0 -90
- package/dist/__tests__/helpers/tree-verification.d.ts.map +0 -1
- package/dist/__tests__/helpers/tree-verification.js +0 -202
- package/dist/__tests__/helpers/tree-verification.js.map +0 -1
- package/dist/__tests__/integration/agent-workflow.test.d.ts +0 -2
- package/dist/__tests__/integration/agent-workflow.test.d.ts.map +0 -1
- package/dist/__tests__/integration/agent-workflow.test.js +0 -256
- package/dist/__tests__/integration/agent-workflow.test.js.map +0 -1
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts +0 -14
- package/dist/__tests__/integration/bidirectional-consistency.test.d.ts.map +0 -1
- package/dist/__tests__/integration/bidirectional-consistency.test.js +0 -668
- package/dist/__tests__/integration/bidirectional-consistency.test.js.map +0 -1
- package/dist/__tests__/integration/observer-logging.test.d.ts +0 -2
- package/dist/__tests__/integration/observer-logging.test.d.ts.map +0 -1
- package/dist/__tests__/integration/observer-logging.test.js +0 -517
- package/dist/__tests__/integration/observer-logging.test.js.map +0 -1
- package/dist/__tests__/integration/tree-mirroring.test.d.ts +0 -2
- package/dist/__tests__/integration/tree-mirroring.test.d.ts.map +0 -1
- package/dist/__tests__/integration/tree-mirroring.test.js +0 -117
- package/dist/__tests__/integration/tree-mirroring.test.js.map +0 -1
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts +0 -12
- package/dist/__tests__/integration/workflow-reparenting.test.d.ts.map +0 -1
- package/dist/__tests__/integration/workflow-reparenting.test.js +0 -239
- package/dist/__tests__/integration/workflow-reparenting.test.js.map +0 -1
- package/dist/__tests__/unit/agent.test.d.ts +0 -2
- package/dist/__tests__/unit/agent.test.d.ts.map +0 -1
- package/dist/__tests__/unit/agent.test.js +0 -143
- package/dist/__tests__/unit/agent.test.js.map +0 -1
- package/dist/__tests__/unit/cache-key.test.d.ts +0 -5
- package/dist/__tests__/unit/cache-key.test.d.ts.map +0 -1
- package/dist/__tests__/unit/cache-key.test.js +0 -145
- package/dist/__tests__/unit/cache-key.test.js.map +0 -1
- package/dist/__tests__/unit/cache.test.d.ts +0 -5
- package/dist/__tests__/unit/cache.test.d.ts.map +0 -1
- package/dist/__tests__/unit/cache.test.js +0 -132
- package/dist/__tests__/unit/cache.test.js.map +0 -1
- package/dist/__tests__/unit/context.test.d.ts +0 -2
- package/dist/__tests__/unit/context.test.d.ts.map +0 -1
- package/dist/__tests__/unit/context.test.js +0 -220
- package/dist/__tests__/unit/context.test.js.map +0 -1
- package/dist/__tests__/unit/decorators.test.d.ts +0 -2
- package/dist/__tests__/unit/decorators.test.d.ts.map +0 -1
- package/dist/__tests__/unit/decorators.test.js +0 -162
- package/dist/__tests__/unit/decorators.test.js.map +0 -1
- package/dist/__tests__/unit/introspection-tools.test.d.ts +0 -5
- package/dist/__tests__/unit/introspection-tools.test.d.ts.map +0 -1
- package/dist/__tests__/unit/introspection-tools.test.js +0 -191
- package/dist/__tests__/unit/introspection-tools.test.js.map +0 -1
- package/dist/__tests__/unit/logger.test.d.ts +0 -2
- package/dist/__tests__/unit/logger.test.d.ts.map +0 -1
- package/dist/__tests__/unit/logger.test.js +0 -241
- package/dist/__tests__/unit/logger.test.js.map +0 -1
- package/dist/__tests__/unit/observable.test.d.ts +0 -2
- package/dist/__tests__/unit/observable.test.d.ts.map +0 -1
- package/dist/__tests__/unit/observable.test.js +0 -251
- package/dist/__tests__/unit/observable.test.js.map +0 -1
- package/dist/__tests__/unit/prompt.test.d.ts +0 -2
- package/dist/__tests__/unit/prompt.test.d.ts.map +0 -1
- package/dist/__tests__/unit/prompt.test.js +0 -113
- package/dist/__tests__/unit/prompt.test.js.map +0 -1
- package/dist/__tests__/unit/reflection.test.d.ts +0 -5
- package/dist/__tests__/unit/reflection.test.d.ts.map +0 -1
- package/dist/__tests__/unit/reflection.test.js +0 -160
- package/dist/__tests__/unit/reflection.test.js.map +0 -1
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts +0 -2
- package/dist/__tests__/unit/tree-debugger-incremental.test.d.ts.map +0 -1
- package/dist/__tests__/unit/tree-debugger-incremental.test.js +0 -136
- package/dist/__tests__/unit/tree-debugger-incremental.test.js.map +0 -1
- package/dist/__tests__/unit/tree-debugger.test.d.ts +0 -2
- package/dist/__tests__/unit/tree-debugger.test.d.ts.map +0 -1
- package/dist/__tests__/unit/tree-debugger.test.js +0 -69
- package/dist/__tests__/unit/tree-debugger.test.js.map +0 -1
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts +0 -2
- package/dist/__tests__/unit/utils/workflow-error-utils.test.d.ts.map +0 -1
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js +0 -154
- package/dist/__tests__/unit/utils/workflow-error-utils.test.js.map +0 -1
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow-detachChild.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow-detachChild.test.js +0 -76
- package/dist/__tests__/unit/workflow-detachChild.test.js.map +0 -1
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js +0 -122
- package/dist/__tests__/unit/workflow-emitEvent-childDetached.test.js.map +0 -1
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow-isDescendantOf.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js +0 -140
- package/dist/__tests__/unit/workflow-isDescendantOf.test.js.map +0 -1
- package/dist/__tests__/unit/workflow.test.d.ts +0 -2
- package/dist/__tests__/unit/workflow.test.d.ts.map +0 -1
- package/dist/__tests__/unit/workflow.test.js +0 -330
- package/dist/__tests__/unit/workflow.test.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-harness.js","sourceRoot":"","sources":["../../src/harnesses/pi-harness.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAoB7E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,SAAS;IACpB,qCAAqC;IAC5B,EAAE,GAAc,IAAI,CAAC;IAE9B,kFAAkF;IACzE,YAAY,GAAwB;QAC3C,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,gBAAgB,EAAE,IAAI;KACO,CAAC;IAEhC,8FAA8F;IAC9F,8FAA8F;IACtF,GAAG,GAA4D,IAAI,CAAC;IAC5E,qFAAqF;IAC7E,WAAW,GAAuB,IAAI,CAAC;IAC/C,6FAA6F;IACrF,aAAa,GAAyB,IAAI,CAAC;IACnD,oFAAoF;IAC5E,OAAO,GAA0B,IAAI,CAAC;IAC9C,0DAA0D;IAClD,UAAU,GAAe,IAAI,UAAU,EAAE,CAAC;IAClD;;;;;;;OAOG;IACK,YAAY,GAAW,EAAE,CAAC;IAElC,8FAA8F;IAC9F;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU,CAAC,OAAwB;QACvC,wDAAwD;QACxD,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO;QAErB,uDAAuD;QACvD,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,mDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QAED,yFAAyF;QACzF,mDAAmD;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9D,6EAA6E;QAC7E,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS;QACb,wDAAwD;QACxD,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;YAAE,OAAO;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,8FAA8F;IAC9F;;;;;;;;;OASG;IACH,YAAY,CAAC,IAAe;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,gGAAgG;QAChG,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,WAAW,CACnB,UAAU,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,wCAAwC;gBAC3E,iEAAiE;gBACjE,4DAA4D,EAC9D;gBACE,IAAI,EAAE,iBAAiB,CAAC,YAAY;gBACpC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;aAC5E,CACF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;OAWG;IACH,OAAO,CACL,OAAuB,EACvB,YAAyE,EACzE,KAAyB;QAEzB,kGAAkG;QAClG,kGAAkG;QAClG,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAI,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,+FAA+F;QAC/F,OAAO,CAAC,KAAK,IAA+B,EAAE;YAC5C,6EAA6E;YAC7E,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,8DAA8D;YAE5F,gEAAgE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CACnC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,0BAA0B,CACpD,CAAC;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAkD;YAE9F,mFAAmF;YACnF,uEAAuE;YACvE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,yBAAyB,CACzD,OAAO,CAAC,OAAO,CAAC,YAAY,CAC7B,CAAC;YAEF,gFAAgF;YAChF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,GAAI,CAAC,kBAAkB,CAAC;gBACrD,KAAK;gBACL,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;gBAChD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,2CAA2C;aAC3F,CAAC,CAAC;YAEH,uFAAuF;YACvF,kFAAkF;YAClF,IAAI,iBAAiB,GAAG,EAAE,CAAC;YAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,aAAa,GAAG,CAAC,CAAC;YAEtB,iFAAiF;YACjF,MAAM,OAAO,GAAwB;gBACnC,UAAU,EAAE,IAAI,GAAG,EAAE;gBACrB,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;aAC1B,CAAC;YAEF,MAAM,QAAQ,GAA8B,CAAC,KAAwB,EAAE,EAAE;gBACvE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,kCAAkC;gBAC9E,uFAAuF;gBACvF,MAAM,CAAC,GAAG,KAA0D,CAAC;gBACrE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;oBACf,KAAK,eAAe,EAAE,6BAA6B;wBACjD,KAAK,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;wBAC/B,MAAM;oBACR,KAAK,kBAAkB,EAAE,qCAAqC;wBAC5D,KAAK,KAAK,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;wBACnD,MAAM;oBACR,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;wBACtB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;4BAClE,uEAAuE;4BACvE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;iCACrB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC;iCACtC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;iCAC7B,IAAI,CAAC,EAAE,CAAC,CAAC;4BACZ,IAAI,IAAI;gCAAE,iBAAiB,GAAG,IAAI,CAAC;4BACnC,6EAA6E;4BAC7E,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gCACd,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;gCACnC,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;4BACvC,CAAC;4BACD,4DAA4D;4BAC5D,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gCAC5B,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU;oCAAE,aAAa,EAAE,CAAC;4BAC9C,CAAC;wBACH,CAAC;wBACD,MAAM;oBACR,CAAC;oBACD,qFAAqF;gBACvF,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEhD,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,iEAAiE;YACzG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qFAAqF;gBACrF,OAAO,mBAAmB,CACxB,iBAAiB,CAAC,gBAAgB,EAClC,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtF;oBACE,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,KAAK,EAAE,SAAS,CAAC,GAAG;oBACpB,GAAG,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzE,EACD,IAAI,CACe,CAAC;YACxB,CAAC;oBAAS,CAAC;gBACT,WAAW,EAAE,CAAC,CAAC,iEAAiE;YAClF,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,OAAO,qBAAqB,CAAC,iBAAiC,EAAE;gBAC9D,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,QAAQ;gBACR,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE;gBAC/D,SAAS,EAAE,aAAa;aACzB,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,KAAK,CAAC,CAAC,gBAAgB,CAC7B,OAAuB,EACvB,YAAyE,EACzE,KAAyB;QAEzB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,0BAA0B,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAkD;QAE9F,mFAAmF;QACnF,uEAAuE;QACvE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,yBAAyB,CACzD,OAAO,CAAC,OAAO,CAAC,YAAY,CAC7B,CAAC;QAEF,mFAAmF;QACnF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,GAAI,CAAC,kBAAkB,CAAC;YACrD,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAChD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,2CAA2C;SAC3F,CAAC,CAAC;QAEH,4DAA4D;QAC5D,MAAM;YACJ,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;gBACrC,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC7B;SACmD,CAAC;QAEvD,mFAAmF;QACnF,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,IAAI,WAAW,GAAwB,IAAI,CAAC;QAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,OAAO,GAAG,CAAC,CAAoB,EAAE,EAAE;YACvC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACd,WAAW,EAAE,EAAE,CAAC;YAChB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;QAEF,0DAA0D;QAC1D,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,SAA6B,CAAC;QAElC,iFAAiF;QACjF,MAAM,OAAO,GAAwB;YACnC,UAAU,EAAE,IAAI,GAAG,EAAE;YACrB,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;SAC1B,CAAC;QAEF,MAAM,QAAQ,GAA8B,CAAC,KAAwB,EAAE,EAAE;YACvE,MAAM,CAAC,GAAG,KAAwC,CAAC;YACnD,oEAAoE;YACpE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,eAAe;oBAClB,KAAK,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;oBAC/B,MAAM;gBACR,KAAK,kBAAkB;oBACrB,KAAK,KAAK,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;oBACnD,MAAM;YACV,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,wDAAwD;YACpG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,mDAAmD;QACrE,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEhD,4FAA4F;QAC5F,IAAI,WAAW,GAAY,IAAI,CAAC;QAChC,KAAK,OAAO;aACT,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACtB,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,WAAW,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,QAAQ,GAAG,IAAI,CAAC;YAChB,WAAW,EAAE,EAAE,CAAC;YAChB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC;YACH,gFAAgF;YAChF,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE;wBAC5B,WAAW,GAAG,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;oBAC7B,MAAM,CAAC,GAAG,KAOT,CAAC;oBACF,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;wBACf,KAAK,gBAAgB,CAAC,CAAC,CAAC;4BACtB,oDAAoD;4BACpD,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gCACxE,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO;qCAC3B,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC;qCACtC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;qCAC7B,IAAI,CAAC,EAAE,CAAC,CAAC;gCACZ,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oCAC/D,MAAM;wCACJ,IAAI,EAAE,YAAY;wCAClB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;wCAClC,KAAK,EAAE,SAAS,EAAE;qCACoC,CAAC;oCACzD,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;qCAAM,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;oCACzC,8DAA8D;oCAC9D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAyD,CAAC;oCAC5I,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,KAAK,sBAAsB;4BACzB,MAAM;gCACJ,IAAI,EAAE,iBAAiB;gCACvB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;gCAC9B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;gCAC9B,KAAK,EAAE,SAAS,EAAE;6BACyC,CAAC;4BAC9D,MAAM;wBACR,KAAK,oBAAoB;4BACvB,MAAM;gCACJ,IAAI,EAAE,gBAAgB;gCACtB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;gCAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;6BACkC,CAAC;4BAC7D,MAAM;wBACR,KAAK,UAAU,CAAC,CAAC,CAAC;4BAChB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;4BACtB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gCACjD,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;gCACjC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gCACnC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,oCAAoC;4BAC/F,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,wFAAwF;oBAC1F,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gFAAgF;YAChF,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACzF,MAAM;oBACJ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC;oBACzD,IAAI,EAAE,iBAAiB,CAAC,gBAAgB;oBACxC,SAAS,EAAE,IAAI;iBACkC,CAAC;gBACpD,OAAO,mBAAmB,CACxB,iBAAiB,CAAC,gBAAgB,EAClC,8BAA8B,OAAO,EAAE,EACvC;oBACE,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,KAAK,EAAE,SAAS,CAAC,GAAG;oBACpB,GAAG,CAAC,WAAW,YAAY,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3F,EACD,IAAI,CACe,CAAC;YACxB,CAAC;YAED,kDAAkD;YAClD,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAA4C;oBAC1D,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,SAAS;oBACtB,YAAY,EAAE,UAAU;iBACzB,CAAC;gBACF,IAAI,SAAS,KAAK,SAAS;oBAAE,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;gBAChE,MAAM,UAAU,CAAC;YACnB,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAmD,CAAC;YAE9F,OAAO,qBAAqB,CAAC,QAAwB,EAAE;gBACrD,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,WAAW,EAAE,CAAC,CAAC,kDAAkD;QACnE,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACK,cAAc,CACpB,KAAwB,EACxB,KAAoC,EACpC,GAAwB;QAExB,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,yBAAyB;QAC7C,MAAM,CAAC,GAAG,KAQT,CAAC;QACF,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,GAAG,GAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5E,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE;wBAC/B,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,+CAA+C;qBACvE,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB;gBAChD,MAAM;YACR,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,8EAA8E;gBAC9E,MAAM,GAAG,GAAyB,KAAK;oBACrC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;oBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,uBAAuB;gBACzE,MAAM,MAAM,GAAwB;oBAClC,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;oBACzB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,EAAE,kCAAkC;iBAChE,CAAC;gBACF,IAAI,EAAE;oBAAE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC;gBACzE,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB;gBAChE,MAAM;YACR,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,6EAA6E;gBAC7E,4FAA4F;gBAC5F,0DAA0D;gBAC1D,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;gBACtB,IAAI,GAAG,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;yBACrB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC;yBACtC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;yBAC7B,IAAI,CAAC,EAAE,CAAC,CAAC;oBACZ,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACtD,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;wBAC7B,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,8FAA8F;YAC9F,2EAA2E;QAC7E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED;;;;;;;;;;OAUG;IACK,gBAAgB,CACtB,YAA0E;QAE1E,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,UAAU,CAAC,MAAe;QAC9B,mEAAmE;QACnE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,4FAA4F;QAC5F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,gGAAgG;QAChG,uEAAuE;QACvE,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,8FAA8F;gBAC9F,0EAA0E;gBAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;oBACxC,GAAG,EAAE,KAAK,CAAC,IAAI;oBACf,MAAM,EAAE,KAAK,CAAC,IAAI;iBACnB,CAAC,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wEAAwE;gBACxE,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,IAAI;oBACzD,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,iGAAiG;QACjG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACK,KAAK,CAAC,yBAAyB,CACrC,YAAqB;QAIrB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,kEAAkE;QAClE,6EAA6E;QAC7E,0EAA0E;QAC1E,wEAAwE;QACxE,yEAAyE;QACzE,8CAA8C;QAC9C,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,YAAY;YAAE,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,YAAY;YAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,oDAAoD;QACpG,oGAAoG;QACpG,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAChD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;YAChC,kBAAkB,EAAE,WAAW,EAAE,6DAA6D;YAC9F,QAAQ,EAAE,IAAI,EAAE,8CAA8C;SAC/D,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,8DAA8D;QACrF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,KAAa;QAC1B,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAC,oBAAoB,CAAC;QACtE,OAAO,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,CAAC,UAAqC;QAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB,CAAC,QAAuC;QACtD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type TSchema } from "@sinclair/typebox";
|
|
2
|
+
import type { Tool } from "../types/sdk-primitives.js";
|
|
3
|
+
export { Type } from "@sinclair/typebox";
|
|
4
|
+
export type { TSchema } from "@sinclair/typebox";
|
|
5
|
+
/**
|
|
6
|
+
* Convert a Groundswell Tool JSON-Schema (`input_schema`) into a TypeBox `TSchema`
|
|
7
|
+
* for Pi's `ToolDefinition.parameters` (PRD §7.10, §7.12, §7.14.1).
|
|
8
|
+
*
|
|
9
|
+
* **PURE function** — no I/O, no mocks, no definitions registry.
|
|
10
|
+
* Parallel to `MCPHandler.jsonSchemaToZodRawShape()` (the Claude Code SDK path).
|
|
11
|
+
*
|
|
12
|
+
* Coverage (parity+ over the Zod converter on every arm):
|
|
13
|
+
* - object (required/optional via `Type.Optional`, nested, open → `Type.Record`)
|
|
14
|
+
* - string / number / integer (distinct) / boolean
|
|
15
|
+
* - array (items recursive; no items → `Type.Unknown`)
|
|
16
|
+
* - enum → `Type.Union(values.map(Type.Literal))` [JSON-Schema array, NOT `Type.Enum`'s Record]
|
|
17
|
+
* - $ref → `Type.Any()` [permissive; no registry in S1; S2+ may extend]
|
|
18
|
+
* - unknown/missing type → `Type.Unknown()`
|
|
19
|
+
*
|
|
20
|
+
* @param schema - `Tool['input_schema']` (top-level always an object) or a nested JSON-Schema fragment.
|
|
21
|
+
* @returns A TypeBox `TSchema` assignable to `ToolDefinition.parameters`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function jsonSchemaToTypebox(schema: Tool["input_schema"] | Record<string, unknown>): TSchema;
|
|
24
|
+
//# sourceMappingURL=pi-schema-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-schema-converter.d.ts","sourceRoot":"","sources":["../../src/harnesses/pi-schema-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrD,OAAO,CAuBT"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
// Re-export so S2 imports converter + builders from ONE module.
|
|
3
|
+
export { Type } from "@sinclair/typebox";
|
|
4
|
+
/**
|
|
5
|
+
* Convert a Groundswell Tool JSON-Schema (`input_schema`) into a TypeBox `TSchema`
|
|
6
|
+
* for Pi's `ToolDefinition.parameters` (PRD §7.10, §7.12, §7.14.1).
|
|
7
|
+
*
|
|
8
|
+
* **PURE function** — no I/O, no mocks, no definitions registry.
|
|
9
|
+
* Parallel to `MCPHandler.jsonSchemaToZodRawShape()` (the Claude Code SDK path).
|
|
10
|
+
*
|
|
11
|
+
* Coverage (parity+ over the Zod converter on every arm):
|
|
12
|
+
* - object (required/optional via `Type.Optional`, nested, open → `Type.Record`)
|
|
13
|
+
* - string / number / integer (distinct) / boolean
|
|
14
|
+
* - array (items recursive; no items → `Type.Unknown`)
|
|
15
|
+
* - enum → `Type.Union(values.map(Type.Literal))` [JSON-Schema array, NOT `Type.Enum`'s Record]
|
|
16
|
+
* - $ref → `Type.Any()` [permissive; no registry in S1; S2+ may extend]
|
|
17
|
+
* - unknown/missing type → `Type.Unknown()`
|
|
18
|
+
*
|
|
19
|
+
* @param schema - `Tool['input_schema']` (top-level always an object) or a nested JSON-Schema fragment.
|
|
20
|
+
* @returns A TypeBox `TSchema` assignable to `ToolDefinition.parameters`.
|
|
21
|
+
*/
|
|
22
|
+
export function jsonSchemaToTypebox(schema) {
|
|
23
|
+
const s = schema;
|
|
24
|
+
// Defensive: top-level must be an object.
|
|
25
|
+
if (s.type !== "object") {
|
|
26
|
+
return Type.Unknown();
|
|
27
|
+
}
|
|
28
|
+
const properties = (s.properties ?? {});
|
|
29
|
+
const requiredSet = new Set((s.required ?? []));
|
|
30
|
+
// Property-less object → open record (parity with `z.record(z.unknown())`); NOT `Type.Object({})`.
|
|
31
|
+
if (Object.keys(properties).length === 0) {
|
|
32
|
+
return Type.Record(Type.String(), Type.Any());
|
|
33
|
+
}
|
|
34
|
+
// Build each property's schema, then apply optionality to non-required values.
|
|
35
|
+
const props = {};
|
|
36
|
+
for (const [key, value] of Object.entries(properties)) {
|
|
37
|
+
const converted = propertyToTypebox(value);
|
|
38
|
+
props[key] = requiredSet.has(key) ? converted : Type.Optional(converted);
|
|
39
|
+
}
|
|
40
|
+
return Type.Object(props);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Convert a single JSON-Schema property/fragment to a TypeBox `TSchema` (recursive).
|
|
44
|
+
* Mirrors `MCPHandler.jsonSchemaPropertyToZod` (mcp-handler.ts L266-308), + enum + $ref arms.
|
|
45
|
+
*/
|
|
46
|
+
function propertyToTypebox(prop) {
|
|
47
|
+
// $ref → permissive Any (S1 has no registry; parity with Zod default arm). Check FIRST.
|
|
48
|
+
if (typeof prop.$ref === "string") {
|
|
49
|
+
return Type.Any();
|
|
50
|
+
}
|
|
51
|
+
// enum (array) → Union of Literals (`Type.Enum` takes a Record, not an array). Check BEFORE type.
|
|
52
|
+
// NOTE: JSON-Schema allows `null` in enum values but TypeBox `TLiteralValue` excludes null;
|
|
53
|
+
// those entries are silently skipped (permissive — never rejects valid LLM args).
|
|
54
|
+
if (Array.isArray(prop.enum) && prop.enum.length > 0) {
|
|
55
|
+
const literals = prop.enum
|
|
56
|
+
.filter((v) => v !== null)
|
|
57
|
+
.map((v) => Type.Literal(v));
|
|
58
|
+
return literals.length === 1 ? literals[0] : Type.Union(literals);
|
|
59
|
+
}
|
|
60
|
+
switch (prop.type) {
|
|
61
|
+
case "string":
|
|
62
|
+
return Type.String();
|
|
63
|
+
case "number":
|
|
64
|
+
return Type.Number();
|
|
65
|
+
case "integer":
|
|
66
|
+
return Type.Integer(); // parity+ (Zod collapses int→number; TypeBox keeps distinct)
|
|
67
|
+
case "boolean":
|
|
68
|
+
return Type.Boolean();
|
|
69
|
+
case "array":
|
|
70
|
+
return Type.Array(prop.items
|
|
71
|
+
? propertyToTypebox(prop.items)
|
|
72
|
+
: Type.Unknown());
|
|
73
|
+
case "object":
|
|
74
|
+
// Delegate back to the public entry (handles nested required/optional + open-record).
|
|
75
|
+
return jsonSchemaToTypebox(prop);
|
|
76
|
+
default:
|
|
77
|
+
// unknown type, type arrays (e.g. ["string","null"]), missing type → permissive Unknown.
|
|
78
|
+
return Type.Unknown();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=pi-schema-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-schema-converter.js","sourceRoot":"","sources":["../../src/harnesses/pi-schema-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrap helper: register Groundswell's built-in harnesses with the
|
|
3
|
+
* HarnessRegistry (PRD §7.6 / §7.1). Idempotent — safe to call multiple times
|
|
4
|
+
* (guards each registration with `registry.has(id)` so the registry's own
|
|
5
|
+
* duplicate-error is never triggered).
|
|
6
|
+
*
|
|
7
|
+
* Registers:
|
|
8
|
+
* - ClaudeCodeHarness (id 'claude-code') — Anthropic-only (PRD §7.8).
|
|
9
|
+
* - PiHarness (id 'pi') — vendor-neutral default (PRD §7.1, §7.6).
|
|
10
|
+
*
|
|
11
|
+
* @param registry - Target registry (defaults to the HarnessRegistry singleton).
|
|
12
|
+
* @returns The registry (for chaining / testing).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { registerDefaultHarnesses } from 'groundswell/harnesses';
|
|
17
|
+
* const registry = registerDefaultHarnesses();
|
|
18
|
+
* const cc = registry.get('claude-code'); // ClaudeCodeHarness instance
|
|
19
|
+
* const pi = registry.get('pi'); // PiHarness instance
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { HarnessRegistry } from './harness-registry.js';
|
|
23
|
+
export declare function registerDefaultHarnesses(registry?: HarnessRegistry): HarnessRegistry;
|
|
24
|
+
//# sourceMappingURL=register-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-defaults.d.ts","sourceRoot":"","sources":["../../src/harnesses/register-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,eAA+C,GACxD,eAAe,CAgBjB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrap helper: register Groundswell's built-in harnesses with the
|
|
3
|
+
* HarnessRegistry (PRD §7.6 / §7.1). Idempotent — safe to call multiple times
|
|
4
|
+
* (guards each registration with `registry.has(id)` so the registry's own
|
|
5
|
+
* duplicate-error is never triggered).
|
|
6
|
+
*
|
|
7
|
+
* Registers:
|
|
8
|
+
* - ClaudeCodeHarness (id 'claude-code') — Anthropic-only (PRD §7.8).
|
|
9
|
+
* - PiHarness (id 'pi') — vendor-neutral default (PRD §7.1, §7.6).
|
|
10
|
+
*
|
|
11
|
+
* @param registry - Target registry (defaults to the HarnessRegistry singleton).
|
|
12
|
+
* @returns The registry (for chaining / testing).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { registerDefaultHarnesses } from 'groundswell/harnesses';
|
|
17
|
+
* const registry = registerDefaultHarnesses();
|
|
18
|
+
* const cc = registry.get('claude-code'); // ClaudeCodeHarness instance
|
|
19
|
+
* const pi = registry.get('pi'); // PiHarness instance
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { HarnessRegistry } from './harness-registry.js';
|
|
23
|
+
import { ClaudeCodeHarness } from './claude-code-harness.js';
|
|
24
|
+
import { PiHarness } from './pi-harness.js';
|
|
25
|
+
export function registerDefaultHarnesses(registry = HarnessRegistry.getInstance()) {
|
|
26
|
+
// Claude Code harness — Anthropic-only (PRD §7.8).
|
|
27
|
+
const CLAUDE_CODE = 'claude-code';
|
|
28
|
+
if (!registry.has(CLAUDE_CODE)) {
|
|
29
|
+
registry.register(new ClaudeCodeHarness());
|
|
30
|
+
}
|
|
31
|
+
// Pi harness — vendor-neutral DEFAULT (PRD §7.1, §7.6). defaultHarness is already 'pi' in
|
|
32
|
+
// src/utils/harness-config.ts (DEFAULT_HARNESS_CONFIG); this registration pairs the id with a
|
|
33
|
+
// live instance so registry.get('pi') resolves. Idempotent (guard mirrors the claude-code block).
|
|
34
|
+
const PI = 'pi';
|
|
35
|
+
if (!registry.has(PI)) {
|
|
36
|
+
registry.register(new PiHarness());
|
|
37
|
+
}
|
|
38
|
+
return registry;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=register-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-defaults.js","sourceRoot":"","sources":["../../src/harnesses/register-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,UAAU,wBAAwB,CACtC,WAA4B,eAAe,CAAC,WAAW,EAAE;IAEzD,mDAAmD;IACnD,MAAM,WAAW,GAAc,aAAa,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,0FAA0F;IAC1F,8FAA8F;IAC9F,kGAAkG;IAClG,MAAM,EAAE,GAAc,IAAI,CAAC;IAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session store implementations
|
|
3
|
+
*
|
|
4
|
+
* Provides pluggable session storage backends for maintaining conversation
|
|
5
|
+
* state across requests. Supports in-memory, file-based, and future Redis
|
|
6
|
+
* storage.
|
|
7
|
+
*
|
|
8
|
+
* PRP: P2.M2.T1.S1 - Session Persistence Implementation
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { SessionState } from '../types/providers.js';
|
|
12
|
+
/**
|
|
13
|
+
* Generic session store interface
|
|
14
|
+
*
|
|
15
|
+
* @template T - The session state type (defaults to SessionState)
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* Defines the contract for session storage backends. Implementations
|
|
19
|
+
* can provide in-memory, file-based, or distributed storage.
|
|
20
|
+
*
|
|
21
|
+
* All methods are async to support I/O operations and network requests.
|
|
22
|
+
*
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export interface SessionStore<T = SessionState> {
|
|
26
|
+
/**
|
|
27
|
+
* Save session state to storage
|
|
28
|
+
*
|
|
29
|
+
* @param sessionId - Unique session identifier
|
|
30
|
+
* @param state - Session state to save
|
|
31
|
+
* @throws {Error} If save operation fails
|
|
32
|
+
*/
|
|
33
|
+
save(sessionId: string, state: T): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Load session state from storage
|
|
36
|
+
*
|
|
37
|
+
* @param sessionId - Unique session identifier
|
|
38
|
+
* @returns Session state or null if not found
|
|
39
|
+
* @throws {Error} If load operation fails
|
|
40
|
+
*/
|
|
41
|
+
load(sessionId: string): Promise<T | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Delete session from storage
|
|
44
|
+
*
|
|
45
|
+
* @param sessionId - Unique session identifier
|
|
46
|
+
* @returns true if deleted, false if not found
|
|
47
|
+
* @throws {Error} If delete operation fails
|
|
48
|
+
*/
|
|
49
|
+
delete(sessionId: string): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* List all session IDs in storage
|
|
52
|
+
*
|
|
53
|
+
* @returns Array of session IDs
|
|
54
|
+
* @throws {Error} If list operation fails
|
|
55
|
+
*/
|
|
56
|
+
list(): Promise<string[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Check if session exists
|
|
59
|
+
*
|
|
60
|
+
* @param sessionId - Unique session identifier
|
|
61
|
+
* @returns true if session exists, false otherwise
|
|
62
|
+
*/
|
|
63
|
+
has(sessionId: string): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Clear all sessions from storage
|
|
66
|
+
*
|
|
67
|
+
* @throws {Error} If clear operation fails
|
|
68
|
+
*/
|
|
69
|
+
clear(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Delete expired sessions from storage
|
|
72
|
+
*
|
|
73
|
+
* @param ttl - Optional time-to-live in milliseconds. Sessions older than
|
|
74
|
+
* (lastAccessedAt + ttl) are deleted. If not provided, uses
|
|
75
|
+
* the store's default TTL if configured.
|
|
76
|
+
* @returns Array of session IDs that were deleted
|
|
77
|
+
* @throws {Error} If delete operation fails
|
|
78
|
+
* @remarks
|
|
79
|
+
* For FileSessionStore, this scans all session files and removes expired ones.
|
|
80
|
+
* For MemorySessionStore, this clears expired entries from the in-memory Map.
|
|
81
|
+
* Uses a 60-second tolerance window for clock skew handling.
|
|
82
|
+
*/
|
|
83
|
+
deleteExpired(ttl?: number): Promise<string[]>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* In-memory session store using Map
|
|
87
|
+
*
|
|
88
|
+
* @remarks
|
|
89
|
+
* Wraps a Map for in-memory session storage. No persistence.
|
|
90
|
+
* Maintains backward compatibility with existing Map-based usage.
|
|
91
|
+
*
|
|
92
|
+
* Thread-safety: Not thread-safe (single-threaded Node.js environment).
|
|
93
|
+
*
|
|
94
|
+
* @template T - The session state type
|
|
95
|
+
* @public
|
|
96
|
+
*/
|
|
97
|
+
export declare class MemorySessionStore<T = SessionState> implements SessionStore<T> {
|
|
98
|
+
private sessions;
|
|
99
|
+
constructor();
|
|
100
|
+
save(sessionId: string, state: T): Promise<void>;
|
|
101
|
+
load(sessionId: string): Promise<T | null>;
|
|
102
|
+
delete(sessionId: string): Promise<boolean>;
|
|
103
|
+
list(): Promise<string[]>;
|
|
104
|
+
has(sessionId: string): Promise<boolean>;
|
|
105
|
+
clear(): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Delete expired sessions from in-memory storage
|
|
108
|
+
*
|
|
109
|
+
* @param ttl - Optional time-to-live in milliseconds
|
|
110
|
+
* @returns Array of session IDs that were deleted
|
|
111
|
+
* @remarks
|
|
112
|
+
* MemorySessionStore is cleared on terminate, so TTL is less critical.
|
|
113
|
+
* This method is provided for interface consistency and can be used
|
|
114
|
+
* for manual cleanup or testing purposes.
|
|
115
|
+
*/
|
|
116
|
+
deleteExpired(ttl?: number): Promise<string[]>;
|
|
117
|
+
/**
|
|
118
|
+
* Get the underlying Map (for backward compatibility)
|
|
119
|
+
*
|
|
120
|
+
* @internal
|
|
121
|
+
*/
|
|
122
|
+
_getMap(): Map<string, T>;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* File-based session store with JSON persistence
|
|
126
|
+
*
|
|
127
|
+
* @remarks
|
|
128
|
+
* Persists sessions to disk as JSON files. Each session is stored
|
|
129
|
+
* as a separate file: `{directory}/{sessionId}.json`
|
|
130
|
+
*
|
|
131
|
+
* Uses atomic writes (temp file + rename) for data safety.
|
|
132
|
+
* Supports TTL-based session expiration with lazy and active cleanup.
|
|
133
|
+
*
|
|
134
|
+
* @template T - The session state type
|
|
135
|
+
* @public
|
|
136
|
+
*/
|
|
137
|
+
export declare class FileSessionStore<T = SessionState> implements SessionStore<T> {
|
|
138
|
+
private directory;
|
|
139
|
+
private ttl?;
|
|
140
|
+
private static readonly CLOCK_SKEW_TOLERANCE;
|
|
141
|
+
constructor(directory?: string, ttl?: number);
|
|
142
|
+
private getPath;
|
|
143
|
+
private ensureDirectory;
|
|
144
|
+
save(sessionId: string, state: T): Promise<void>;
|
|
145
|
+
load(sessionId: string): Promise<T | null>;
|
|
146
|
+
delete(sessionId: string): Promise<boolean>;
|
|
147
|
+
list(): Promise<string[]>;
|
|
148
|
+
has(sessionId: string): Promise<boolean>;
|
|
149
|
+
clear(): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Delete expired sessions from file storage
|
|
152
|
+
*
|
|
153
|
+
* @param ttl - Optional time-to-live in milliseconds. If not provided,
|
|
154
|
+
* uses the store's configured TTL.
|
|
155
|
+
* @returns Array of session IDs that were deleted
|
|
156
|
+
* @remarks
|
|
157
|
+
* Scans all session files in the directory, checks expiration based on
|
|
158
|
+
* lastAccessedAt timestamp, and deletes expired files. Uses a 60-second
|
|
159
|
+
* tolerance window for clock skew handling.
|
|
160
|
+
*/
|
|
161
|
+
deleteExpired(ttl?: number): Promise<string[]>;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Redis-based session store (interface stub)
|
|
165
|
+
*
|
|
166
|
+
* @remarks
|
|
167
|
+
* Interface definition for future Redis implementation.
|
|
168
|
+
* Not implemented in this PRP - reserved for future work.
|
|
169
|
+
*
|
|
170
|
+
* @template T - The session state type
|
|
171
|
+
* @public
|
|
172
|
+
*/
|
|
173
|
+
export interface RedisSessionStore<T = SessionState> extends SessionStore<T> {
|
|
174
|
+
/**
|
|
175
|
+
* Connect to Redis server
|
|
176
|
+
*/
|
|
177
|
+
connect(): Promise<void>;
|
|
178
|
+
/**
|
|
179
|
+
* Disconnect from Redis server
|
|
180
|
+
*/
|
|
181
|
+
disconnect(): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Set TTL for session
|
|
184
|
+
*
|
|
185
|
+
* @param sessionId - Session identifier
|
|
186
|
+
* @param ttlSeconds - Time to live in seconds
|
|
187
|
+
*/
|
|
188
|
+
setTTL(sessionId: string, ttlSeconds: number): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Delete expired sessions from storage
|
|
191
|
+
*
|
|
192
|
+
* @param ttl - Optional time-to-live in milliseconds
|
|
193
|
+
* @returns Array of session IDs that were deleted
|
|
194
|
+
* @remarks
|
|
195
|
+
* Redis implementation will use native TTL expiration.
|
|
196
|
+
* This method is provided for interface consistency and may be a no-op
|
|
197
|
+
* since Redis handles expiration automatically.
|
|
198
|
+
*/
|
|
199
|
+
deleteExpired(ttl?: number): Promise<string[]>;
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/harnesses/session-store.ts"],"names":[],"mappings":"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"}
|