@amodalai/runtime 0.2.10 → 0.3.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/dist/src/__fixtures__/e2e.test.js +2 -2
- package/dist/src/__fixtures__/e2e.test.js.map +1 -1
- package/dist/src/__fixtures__/smoke.test.js +0 -88
- package/dist/src/__fixtures__/smoke.test.js.map +1 -1
- package/dist/src/__tests__/studio-integration.test.js +298 -0
- package/dist/src/__tests__/studio-integration.test.js.map +1 -0
- package/dist/src/agent/agent-types.d.ts +4 -0
- package/dist/src/agent/feedback-store.d.ts +11 -10
- package/dist/src/agent/feedback-store.js +147 -75
- package/dist/src/agent/feedback-store.js.map +1 -1
- package/dist/src/agent/local-server.js +30 -111
- package/dist/src/agent/local-server.js.map +1 -1
- package/dist/src/agent/local-server.test.js +17 -1
- package/dist/src/agent/local-server.test.js.map +1 -1
- package/dist/src/agent/routes/context.d.ts +24 -0
- package/dist/src/agent/routes/context.js +30 -0
- package/dist/src/agent/routes/context.js.map +1 -0
- package/dist/src/agent/routes/feedback.js +28 -56
- package/dist/src/agent/routes/feedback.js.map +1 -1
- package/dist/src/api/create-agent.js +8 -4
- package/dist/src/api/create-agent.js.map +1 -1
- package/dist/src/api/types.d.ts +1 -1
- package/dist/src/channels/channel-session-mapper.js +1 -1
- package/dist/src/channels/channel-session-mapper.js.map +1 -1
- package/dist/src/config.d.ts +2 -2
- package/dist/src/config.js +2 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/config.test.js +1 -1
- package/dist/src/config.test.js.map +1 -1
- package/dist/src/errors.d.ts +2 -2
- package/dist/src/errors.js +2 -2
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.js +0 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/session/drizzle-session-store.d.ts +4 -6
- package/dist/src/session/drizzle-session-store.js +15 -5
- package/dist/src/session/drizzle-session-store.js.map +1 -1
- package/dist/src/session/manager.js +1 -1
- package/dist/src/session/manager.test.js +7 -5
- package/dist/src/session/manager.test.js.map +1 -1
- package/dist/src/session/postgres-session-store.d.ts +3 -24
- package/dist/src/session/postgres-session-store.js +9 -128
- package/dist/src/session/postgres-session-store.js.map +1 -1
- package/dist/src/session/session-builder.d.ts +0 -4
- package/dist/src/session/session-builder.js +2 -9
- package/dist/src/session/session-builder.js.map +1 -1
- package/dist/src/session/session-builder.test.js +0 -25
- package/dist/src/session/session-builder.test.js.map +1 -1
- package/dist/src/session/session-store-selector.d.ts +11 -26
- package/dist/src/session/session-store-selector.js +3 -48
- package/dist/src/session/session-store-selector.js.map +1 -1
- package/dist/src/session/session-store-selector.test.js +5 -57
- package/dist/src/session/session-store-selector.test.js.map +1 -1
- package/dist/src/session/store.d.ts +8 -14
- package/dist/src/session/store.js +8 -10
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/store.test.js +6 -126
- package/dist/src/session/store.test.js.map +1 -1
- package/dist/src/session/tool-context-factory.js +1 -1
- package/dist/src/session/tool-context-factory.js.map +1 -1
- package/dist/src/stores/drizzle-store-backend.d.ts +5 -0
- package/dist/src/stores/drizzle-store-backend.js +23 -3
- package/dist/src/stores/drizzle-store-backend.js.map +1 -1
- package/dist/src/stores/drizzle-store-backend.test.js +10 -58
- package/dist/src/stores/drizzle-store-backend.test.js.map +1 -1
- package/dist/src/stores/index.d.ts +0 -2
- package/dist/src/stores/index.js +0 -1
- package/dist/src/stores/index.js.map +1 -1
- package/dist/src/stores/postgres-store-backend.d.ts +5 -15
- package/dist/src/stores/postgres-store-backend.js +14 -72
- package/dist/src/stores/postgres-store-backend.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -6
- package/dist/src/agent/automation-bridge.d.ts +0 -33
- package/dist/src/agent/automation-bridge.js +0 -50
- package/dist/src/agent/automation-bridge.js.map +0 -1
- package/dist/src/agent/automation-bridge.test.d.ts +0 -6
- package/dist/src/agent/automation-bridge.test.js +0 -130
- package/dist/src/agent/automation-bridge.test.js.map +0 -1
- package/dist/src/agent/eval-store.d.ts +0 -50
- package/dist/src/agent/eval-store.js +0 -137
- package/dist/src/agent/eval-store.js.map +0 -1
- package/dist/src/agent/proactive/delivery-router.d.ts +0 -68
- package/dist/src/agent/proactive/delivery-router.js +0 -337
- package/dist/src/agent/proactive/delivery-router.js.map +0 -1
- package/dist/src/agent/proactive/delivery-router.test.js +0 -455
- package/dist/src/agent/proactive/delivery-router.test.js.map +0 -1
- package/dist/src/agent/proactive/delivery.d.ts +0 -21
- package/dist/src/agent/proactive/delivery.js +0 -68
- package/dist/src/agent/proactive/delivery.js.map +0 -1
- package/dist/src/agent/proactive/delivery.test.d.ts +0 -6
- package/dist/src/agent/proactive/delivery.test.js +0 -65
- package/dist/src/agent/proactive/delivery.test.js.map +0 -1
- package/dist/src/agent/proactive/proactive-runner.d.ts +0 -129
- package/dist/src/agent/proactive/proactive-runner.js +0 -301
- package/dist/src/agent/proactive/proactive-runner.js.map +0 -1
- package/dist/src/agent/proactive/proactive-runner.test.d.ts +0 -6
- package/dist/src/agent/proactive/proactive-runner.test.js +0 -250
- package/dist/src/agent/proactive/proactive-runner.test.js.map +0 -1
- package/dist/src/agent/routes/admin-chat-abort.test.d.ts +0 -6
- package/dist/src/agent/routes/admin-chat-abort.test.js +0 -207
- package/dist/src/agent/routes/admin-chat-abort.test.js.map +0 -1
- package/dist/src/agent/routes/admin-chat.d.ts +0 -28
- package/dist/src/agent/routes/admin-chat.js +0 -110
- package/dist/src/agent/routes/admin-chat.js.map +0 -1
- package/dist/src/agent/routes/automations.d.ts +0 -19
- package/dist/src/agent/routes/automations.js +0 -86
- package/dist/src/agent/routes/automations.js.map +0 -1
- package/dist/src/agent/routes/automations.test.d.ts +0 -6
- package/dist/src/agent/routes/automations.test.js +0 -117
- package/dist/src/agent/routes/automations.test.js.map +0 -1
- package/dist/src/agent/routes/evals.d.ts +0 -17
- package/dist/src/agent/routes/evals.js +0 -389
- package/dist/src/agent/routes/evals.js.map +0 -1
- package/dist/src/agent/routes/webhooks.d.ts +0 -17
- package/dist/src/agent/routes/webhooks.js +0 -63
- package/dist/src/agent/routes/webhooks.js.map +0 -1
- package/dist/src/agent/routes/webhooks.test.d.ts +0 -6
- package/dist/src/agent/routes/webhooks.test.js +0 -100
- package/dist/src/agent/routes/webhooks.test.js.map +0 -1
- package/dist/src/session/pglite-session-store.d.ts +0 -23
- package/dist/src/session/pglite-session-store.js +0 -92
- package/dist/src/session/pglite-session-store.js.map +0 -1
- package/dist/src/stores/pglite-store-backend.d.ts +0 -39
- package/dist/src/stores/pglite-store-backend.js +0 -128
- package/dist/src/stores/pglite-store-backend.js.map +0 -1
- package/dist/src/stores/pglite-store-backend.test.d.ts +0 -6
- package/dist/src/stores/pglite-store-backend.test.js +0 -150
- package/dist/src/stores/pglite-store-backend.test.js.map +0 -1
- package/dist/src/stores/schema.d.ts +0 -593
- package/dist/src/stores/schema.js +0 -75
- package/dist/src/stores/schema.js.map +0 -1
- package/dist/src/tools/admin-file-tools.d.ts +0 -42
- package/dist/src/tools/admin-file-tools.js +0 -714
- package/dist/src/tools/admin-file-tools.js.map +0 -1
- package/dist/src/tools/admin-file-tools.test.d.ts +0 -6
- package/dist/src/tools/admin-file-tools.test.js +0 -523
- package/dist/src/tools/admin-file-tools.test.js.map +0 -1
- /package/dist/src/{agent/proactive/delivery-router.test.d.ts → __tests__/studio-integration.test.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evals.js","sourceRoot":"","sources":["../../../../src/agent/routes/evals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAI/B,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAE1H,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAsB3D,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,OAAe,EACf,OAAiB,EACjB,QAAgB,EAChB,KAAc,EACd,SAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;QAC7C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC;QAC7C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC;KAC/G,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAA+D,EAAE,CAAC;IACjF,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,KAA6B,CAAC;IAClC,IAAI,UAA8B,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QACzC,IAAI,CAAC;YACH,sFAAsF;YACtF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAA4B,CAAC;YACvE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAE9C,IAAI,SAAS,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/C,YAAY,IAAI,OAAO,CAAC;gBACxB,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,SAAS,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAA4B,CAAC,CAAC,kEAAkE;gBACzI,SAAS,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC;gBAC7E,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC;YACtG,CAAC;iBAAM,IAAI,SAAS,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;gBACrD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClE,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;gBAC7E,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,EAAC,CAAC,CAAC;YACjK,CAAC;iBAAM,IAAI,SAAS,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC5C,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,CAAC;gBAC3E,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,SAAS,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;gBAE3C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAA4G,CAAC;gBAC5I,wEAAwE;gBACxE,oDAAoD;gBACpD,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1F,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,KAAK,GAAG,EAAC,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAC,CAAC;oBAC5C,CAAC;oBACD,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;oBACzC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC;oBAC3C,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;wBACpB,KAAK,CAAC,oBAAoB,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;oBACnF,CAAC;oBACD,IAAI,CAAC,CAAC,qBAAqB,EAAE,CAAC;wBAC5B,KAAK,CAAC,wBAAwB,GAAG,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC;oBACnG,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;QACrF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;QACxC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACnD,KAAK,GAAG,EAAC,WAAW,EAAE,eAAe,GAAG,CAAC,EAAE,YAAY,EAAE,eAAe,EAAC,CAAC;IAC5E,CAAC;IAED,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC;AAC7G,CAAC;AAOD;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,WAAwB;IACzD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GAAyB;QACpC,gBAAgB,EAAE,CAAC;QACnB,iBAAiB,EAAE,CAAC;QACpB,KAAK,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;oBACnC,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,YAAY,EAAE,oCAAoC;oBAClD,QAAQ,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC;oBAC3C,KAAK,EAAE,EAAE;oBACT,SAAS,EAAE,GAAG;iBACf,CAAC,CAAC;gBAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;qBAC1B,MAAM,CAAC,CAAC,CAAC,EAAqC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;qBACnE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBAClB,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEZ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC;oBACrJ,OAAO,CAAC,iBAAiB,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC3D,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5E,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAa,EAAE,IAAa;IAC5C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IACzD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,0CAA0C;IAC1C,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,qBAAqB,EAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM;YACnC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC;YACzE,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC,CAAC;QACJ,GAAG,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,eAAe,EAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,eAAe,EAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,kBAAkB,EAAC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,qBAAqB,EAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAE5E,6DAA6D;QAC7D,uFAAuF;QACvF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QACzD,uFAAuF;QACvF,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAyB,CAAC;QAC5D,uFAAuF;QACvF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAkD,CAAC;QAErF,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,kBAAkB,EAAC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,4DAA4D;QAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QAE1D,qDAAqD;QACrD,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;gBAC3B,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,KAAK,EAAE,aAAa,CAAC,KAAK;aAC3B,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAE3C,MAAM,aAAa,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,IAAI,SAAS;YAC7D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,SAAS;SACxD,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC;QAE5C,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,YAAY,GAAmB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,yEAAyE;QACzE,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,mBAAmB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,QAAQ,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC;YAE5F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,iDAAiD;gBACjD,MAAM,EAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAC,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBAErJ,qCAAqC;gBACrC,YAAY,EAAE,CAAC;gBAEf,IAAI,UAAU,GAAoD,EAAE,CAAC;gBACrE,IAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,IAAI,SAAmC,CAAC;gBAExC,qCAAqC;gBACrC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,4FAA4F;oBAC5F,IAAI,QAAQ,GAAG,QAAQ,CAAC;oBACxB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,QAAQ,IAAI,wBAAwB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBAChI,CAAC;oBACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,QAAQ,IAAI,+BAA+B,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBAC7E,CAAC;oBAED,mDAAmD;oBACnD,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;oBACxD,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;oBAC1D,UAAU,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;oBAC9E,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAE3C,MAAM,cAAc,GAAG,aAAa,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;oBACzE,MAAM,eAAe,GAAG,aAAa,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;oBAC5E,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/I,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;wBAC3B,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,KAAK,EAAE,aAAa,CAAC,KAAK;qBAC3B,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CACvC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EACtD,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,wBAAwB,CAC3D,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEd,IAAI,SAAS;oBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAE5C,MAAM,MAAM,GAAe;oBACzB,IAAI,EAAE,EAAE;oBACR,QAAQ;oBACR,SAAS;oBACT,UAAU;oBACV,MAAM;oBACN,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,IAAI,EAAE,SAAS;oBACf,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3C,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAErB,uEAAuE;gBACvE,QAAQ,CAAC,GAAG,EAAE;oBACZ,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,EAAE,CAAC,IAAI;oBACjB,MAAM;oBACN,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,KAAK,EAAE,KAAK,CAAC,MAAM;oBACnB,MAAM,EAAE;wBACN,QAAQ;wBACR,SAAS;wBACT,WAAW;wBACX,UAAU;wBACV,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,SAAS;wBACT,SAAS;wBACT,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC3C;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,sCAAsC;gBACtC,YAAY,EAAE,CAAC;gBACf,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;wBAC3B,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,KAAK,EAAE,aAAa,CAAC,KAAK;qBAC3B,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,GAAe;oBACzB,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,EAAE;oBACb,UAAU,EAAE,EAAE;oBACd,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,KAAK,EAAE,GAAG;iBACX,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,QAAQ,CAAC,GAAG,EAAE;oBACZ,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,EAAE,CAAC,IAAI;oBACjB,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,KAAK,EAAE,KAAK,CAAC,MAAM;oBACnB,MAAM,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAC;iBACjG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,YAAY,EAAE,CAAC;QAEf,qBAAqB;QACrB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,WAAW,GAAoB;YACnC,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;YACnD,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;YACpD,YAAY,EAAE,CAAC;YACf,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACvC,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAyC,CAAC,CAAC,CAAC,kEAAkE;QAErI,oCAAoC;QACpC,KAAK,aAAa,CAAC;QAEnB,QAAQ,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QAC9B,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC,CAAC;IAEJ,2CAA2C;IAC3C,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAC9E,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,qBAAqB,EAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,uFAAuF;QACvF,MAAM,SAAS,GAAG,MAA4C,CAAC;QAC/D,uFAAuF;QACvF,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAwC,CAAC;QACxE,uFAAuF;QACvF,MAAM,YAAY,GAAG,KAAK,EAAE,CAAC,QAAQ,CAAyE,CAAC;QAE/G,MAAM,MAAM,GAAG,YAAY,IAAI;YAC7B,EAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAC;YAC3E,EAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAC;YAC/E,EAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,kBAAkB,EAAC;YACtF,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC;YACtD,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAC;YAChE,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAC;YACxD,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAC;YAClE,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAC;YACtE,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAC;YAC1E,EAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAC;YACtE,EAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAC;YAC9E,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,sBAAsB,EAAC;YACnF,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,qBAAqB,EAAC;YAC/E,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,2CAA2C,EAAE,KAAK,EAAE,sBAAsB,EAAC;YACrG,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAC;YACvE,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,gBAAgB,EAAC;YACjF,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,EAAC;YAC9E,EAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,eAAe,EAAC;YAC5E,EAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,eAAe,EAAC;YAC5E,EAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAC;YACpE,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC;YACnD,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAC;SAC9D,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import { Router } from 'express';
|
|
7
|
-
import type { ProactiveRunner } from '../proactive/proactive-runner.js';
|
|
8
|
-
export interface WebhookRouterOptions {
|
|
9
|
-
runner: ProactiveRunner;
|
|
10
|
-
webhookSecret?: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Creates routes for receiving webhook events from external systems.
|
|
14
|
-
*
|
|
15
|
-
* POST /webhooks/:name — trigger a webhook-based automation
|
|
16
|
-
*/
|
|
17
|
-
export declare function createWebhookRouter(options: WebhookRouterOptions): Router;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import { Router } from 'express';
|
|
7
|
-
import rateLimit from 'express-rate-limit';
|
|
8
|
-
import { verifyHmacSignature } from '../proactive/delivery.js';
|
|
9
|
-
import { asyncHandler } from '../../routes/route-helpers.js';
|
|
10
|
-
/**
|
|
11
|
-
* Creates routes for receiving webhook events from external systems.
|
|
12
|
-
*
|
|
13
|
-
* POST /webhooks/:name — trigger a webhook-based automation
|
|
14
|
-
*/
|
|
15
|
-
export function createWebhookRouter(options) {
|
|
16
|
-
const router = Router();
|
|
17
|
-
// Rate-limit inbound webhooks per IP so HMAC verification and
|
|
18
|
-
// automation dispatch can't be triggered unboundedly by an attacker.
|
|
19
|
-
const webhookLimiter = rateLimit({
|
|
20
|
-
windowMs: 60 * 1000,
|
|
21
|
-
max: 100,
|
|
22
|
-
standardHeaders: true,
|
|
23
|
-
legacyHeaders: false,
|
|
24
|
-
});
|
|
25
|
-
router.post('/webhooks/:name', webhookLimiter, asyncHandler(async (req, res) => {
|
|
26
|
-
const automationName = req.params['name'] ?? '';
|
|
27
|
-
// HMAC verification
|
|
28
|
-
if (options.webhookSecret) {
|
|
29
|
-
const signature = req.headers['x-amodal-signature'];
|
|
30
|
-
if (typeof signature !== 'string') {
|
|
31
|
-
res.status(401).json({ error: 'Missing X-Amodal-Signature header' });
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const rawBody = typeof req.body === 'string'
|
|
35
|
-
? req.body
|
|
36
|
-
: JSON.stringify(req.body);
|
|
37
|
-
if (!verifyHmacSignature(rawBody, signature, options.webhookSecret)) {
|
|
38
|
-
res.status(401).json({ error: 'Invalid webhook signature' });
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Express body parsing
|
|
43
|
-
const payload = (req.body ?? {});
|
|
44
|
-
try {
|
|
45
|
-
const result = await options.runner.handleWebhook(automationName, payload);
|
|
46
|
-
if (!result.matched) {
|
|
47
|
-
res.status(404).json({ error: result.error });
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (result.error) {
|
|
51
|
-
res.status(500).json({ error: result.error, matched: true });
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
res.json({ status: 'accepted', automation: automationName });
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
58
|
-
res.status(500).json({ error: msg });
|
|
59
|
-
}
|
|
60
|
-
}));
|
|
61
|
-
return router;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=webhooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../../../src/agent/routes/webhooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
7
|
-
import express from 'express';
|
|
8
|
-
import request from 'supertest';
|
|
9
|
-
import { createHmac } from 'node:crypto';
|
|
10
|
-
import { createWebhookRouter } from './webhooks.js';
|
|
11
|
-
function makeMockRunner(overrides) {
|
|
12
|
-
return {
|
|
13
|
-
start: vi.fn(),
|
|
14
|
-
stop: vi.fn(),
|
|
15
|
-
listAutomations: vi.fn().mockReturnValue([]),
|
|
16
|
-
handleWebhook: vi.fn().mockResolvedValue({ matched: true }),
|
|
17
|
-
triggerAutomation: vi.fn().mockResolvedValue({ success: true }),
|
|
18
|
-
...overrides,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
function createApp(runner, webhookSecret) {
|
|
22
|
-
const app = express();
|
|
23
|
-
app.use(express.json());
|
|
24
|
-
app.use(createWebhookRouter({ runner, webhookSecret }));
|
|
25
|
-
return app;
|
|
26
|
-
}
|
|
27
|
-
describe('repo-webhooks routes', () => {
|
|
28
|
-
it('should accept valid webhook', async () => {
|
|
29
|
-
const runner = makeMockRunner();
|
|
30
|
-
const app = createApp(runner);
|
|
31
|
-
const res = await request(app)
|
|
32
|
-
.post('/webhooks/my-auto')
|
|
33
|
-
.send({ alert: 'cpu-high' });
|
|
34
|
-
expect(res.status).toBe(200);
|
|
35
|
-
expect(res.body.status).toBe('accepted');
|
|
36
|
-
expect(runner.handleWebhook).toHaveBeenCalledWith('my-auto', { alert: 'cpu-high' });
|
|
37
|
-
});
|
|
38
|
-
it('should return 404 for unmatched automation', async () => {
|
|
39
|
-
const runner = makeMockRunner({
|
|
40
|
-
handleWebhook: vi.fn().mockResolvedValue({ matched: false, error: 'Not found' }),
|
|
41
|
-
});
|
|
42
|
-
const app = createApp(runner);
|
|
43
|
-
const res = await request(app)
|
|
44
|
-
.post('/webhooks/unknown')
|
|
45
|
-
.send({});
|
|
46
|
-
expect(res.status).toBe(404);
|
|
47
|
-
});
|
|
48
|
-
it('should return 500 on automation error', async () => {
|
|
49
|
-
const runner = makeMockRunner({
|
|
50
|
-
handleWebhook: vi.fn().mockResolvedValue({ matched: true, error: 'Exec failed' }),
|
|
51
|
-
});
|
|
52
|
-
const app = createApp(runner);
|
|
53
|
-
const res = await request(app)
|
|
54
|
-
.post('/webhooks/my-auto')
|
|
55
|
-
.send({});
|
|
56
|
-
expect(res.status).toBe(500);
|
|
57
|
-
expect(res.body.error).toBe('Exec failed');
|
|
58
|
-
});
|
|
59
|
-
it('should verify HMAC signature when secret is set', async () => {
|
|
60
|
-
const runner = makeMockRunner();
|
|
61
|
-
const secret = 'my-secret';
|
|
62
|
-
const app = createApp(runner, secret);
|
|
63
|
-
const body = JSON.stringify({ alert: 'test' });
|
|
64
|
-
const sig = `sha256=${createHmac('sha256', secret).update(body).digest('hex')}`;
|
|
65
|
-
const res = await request(app)
|
|
66
|
-
.post('/webhooks/my-auto')
|
|
67
|
-
.set('Content-Type', 'application/json')
|
|
68
|
-
.set('X-Amodal-Signature', sig)
|
|
69
|
-
.send(body);
|
|
70
|
-
expect(res.status).toBe(200);
|
|
71
|
-
});
|
|
72
|
-
it('should reject missing signature when secret is set', async () => {
|
|
73
|
-
const runner = makeMockRunner();
|
|
74
|
-
const app = createApp(runner, 'my-secret');
|
|
75
|
-
const res = await request(app)
|
|
76
|
-
.post('/webhooks/my-auto')
|
|
77
|
-
.send({ alert: 'test' });
|
|
78
|
-
expect(res.status).toBe(401);
|
|
79
|
-
expect(res.body.error).toContain('Missing');
|
|
80
|
-
});
|
|
81
|
-
it('should reject invalid signature', async () => {
|
|
82
|
-
const runner = makeMockRunner();
|
|
83
|
-
const app = createApp(runner, 'my-secret');
|
|
84
|
-
const res = await request(app)
|
|
85
|
-
.post('/webhooks/my-auto')
|
|
86
|
-
.set('X-Amodal-Signature', 'sha256=invalid')
|
|
87
|
-
.send({ alert: 'test' });
|
|
88
|
-
expect(res.status).toBe(401);
|
|
89
|
-
expect(res.body.error).toContain('Invalid');
|
|
90
|
-
});
|
|
91
|
-
it('should not require signature when no secret configured', async () => {
|
|
92
|
-
const runner = makeMockRunner();
|
|
93
|
-
const app = createApp(runner);
|
|
94
|
-
const res = await request(app)
|
|
95
|
-
.post('/webhooks/my-auto')
|
|
96
|
-
.send({});
|
|
97
|
-
expect(res.status).toBe(200);
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
//# sourceMappingURL=webhooks.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.test.js","sourceRoot":"","sources":["../../../../src/agent/routes/webhooks.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import type { Logger } from '../logger.js';
|
|
7
|
-
import { DrizzleSessionStore } from './drizzle-session-store.js';
|
|
8
|
-
import type { SessionStoreHooks } from './store.js';
|
|
9
|
-
export interface PGLiteSessionStoreOptions {
|
|
10
|
-
/** Data directory for PGLite. If unset, runs fully in-memory. */
|
|
11
|
-
dataDir?: string;
|
|
12
|
-
/** Logger. Defaults to the runtime's global logger. */
|
|
13
|
-
logger?: Logger;
|
|
14
|
-
/** Optional hooks for dual-write / observability. */
|
|
15
|
-
hooks?: SessionStoreHooks;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Create and initialize a PGLite-backed session store.
|
|
19
|
-
*
|
|
20
|
-
* Returns a `DrizzleSessionStore` whose `close()` will close the
|
|
21
|
-
* underlying PGLite instance.
|
|
22
|
-
*/
|
|
23
|
-
export declare function createPGLiteSessionStore(opts?: PGLiteSessionStoreOptions): Promise<DrizzleSessionStore>;
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* PGLite factory for the session store.
|
|
8
|
-
*
|
|
9
|
-
* Opens an in-process WASM Postgres (PGLite), runs idempotent DDL,
|
|
10
|
-
* and returns a `DrizzleSessionStore` wired to it. Thin factory —
|
|
11
|
-
* all query logic lives in DrizzleSessionStore.
|
|
12
|
-
*
|
|
13
|
-
* Default choice for `amodal dev`: zero config, no Docker, no DB to
|
|
14
|
-
* manage. Pair with `createPostgresSessionStore` for hosted runtime
|
|
15
|
-
* or ISV production deployments.
|
|
16
|
-
*/
|
|
17
|
-
import { drizzle } from 'drizzle-orm/pglite';
|
|
18
|
-
import { agentSessions } from '../stores/schema.js';
|
|
19
|
-
import { log as defaultLogger } from '../logger.js';
|
|
20
|
-
import { DrizzleSessionStore } from './drizzle-session-store.js';
|
|
21
|
-
const BACKEND_NAME = 'pglite';
|
|
22
|
-
// Must match the Drizzle schema in ../stores/schema.ts exactly.
|
|
23
|
-
const CREATE_TABLE_DDL = `
|
|
24
|
-
CREATE TABLE IF NOT EXISTS agent_sessions (
|
|
25
|
-
id TEXT PRIMARY KEY,
|
|
26
|
-
messages JSONB NOT NULL,
|
|
27
|
-
token_usage JSONB NOT NULL,
|
|
28
|
-
metadata JSONB DEFAULT '{}',
|
|
29
|
-
image_data JSONB DEFAULT '{}',
|
|
30
|
-
version INTEGER NOT NULL DEFAULT 1,
|
|
31
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
32
|
-
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
-- Add image_data column to existing tables (idempotent migration)
|
|
36
|
-
DO $$ BEGIN
|
|
37
|
-
ALTER TABLE agent_sessions ADD COLUMN IF NOT EXISTS image_data JSONB DEFAULT '{}';
|
|
38
|
-
EXCEPTION WHEN duplicate_column THEN NULL;
|
|
39
|
-
END $$;
|
|
40
|
-
|
|
41
|
-
CREATE INDEX IF NOT EXISTS idx_agent_sessions_updated
|
|
42
|
-
ON agent_sessions (updated_at DESC);
|
|
43
|
-
|
|
44
|
-
CREATE TABLE IF NOT EXISTS channel_sessions (
|
|
45
|
-
channel_type TEXT NOT NULL,
|
|
46
|
-
channel_user_id TEXT NOT NULL,
|
|
47
|
-
session_id TEXT NOT NULL,
|
|
48
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
49
|
-
last_active_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
50
|
-
metadata JSONB DEFAULT '{}',
|
|
51
|
-
PRIMARY KEY (channel_type, channel_user_id)
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
CREATE INDEX IF NOT EXISTS idx_channel_sessions_session
|
|
55
|
-
ON channel_sessions (session_id);
|
|
56
|
-
CREATE INDEX IF NOT EXISTS idx_channel_sessions_activity
|
|
57
|
-
ON channel_sessions (last_active_at DESC);
|
|
58
|
-
`;
|
|
59
|
-
/**
|
|
60
|
-
* Create and initialize a PGLite-backed session store.
|
|
61
|
-
*
|
|
62
|
-
* Returns a `DrizzleSessionStore` whose `close()` will close the
|
|
63
|
-
* underlying PGLite instance.
|
|
64
|
-
*/
|
|
65
|
-
export async function createPGLiteSessionStore(opts = {}) {
|
|
66
|
-
const logger = opts.logger ?? defaultLogger;
|
|
67
|
-
if (opts.dataDir) {
|
|
68
|
-
const { mkdirSync } = await import('node:fs');
|
|
69
|
-
mkdirSync(opts.dataDir, { recursive: true });
|
|
70
|
-
}
|
|
71
|
-
// Dynamic import keeps PGLite lazy — Postgres-only deployments don't
|
|
72
|
-
// need to pay the WASM parsing cost.
|
|
73
|
-
const { PGlite } = await import('@electric-sql/pglite');
|
|
74
|
-
const pglite = new PGlite(opts.dataDir ?? undefined);
|
|
75
|
-
await pglite.exec(CREATE_TABLE_DDL);
|
|
76
|
-
const db = drizzle(pglite);
|
|
77
|
-
logger.info('session_store_initialized', {
|
|
78
|
-
backend: BACKEND_NAME,
|
|
79
|
-
dataDir: opts.dataDir ?? 'in-memory',
|
|
80
|
-
});
|
|
81
|
-
return new DrizzleSessionStore({
|
|
82
|
-
db,
|
|
83
|
-
table: agentSessions,
|
|
84
|
-
backendName: BACKEND_NAME,
|
|
85
|
-
logger,
|
|
86
|
-
hooks: opts.hooks,
|
|
87
|
-
onClose: async () => {
|
|
88
|
-
await pglite.close();
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=pglite-session-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pglite-session-store.js","sourceRoot":"","sources":["../../../src/session/pglite-session-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAEH,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAG3C,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,GAAG,IAAI,aAAa,EAAC,MAAM,cAAc,CAAC;AAElD,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAG/D,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B,gEAAgE;AAChE,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCxB,CAAC;AAWF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAkC,EAAE;IAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;IAE5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAC7C,CAAC;IAED,qEAAqE;IACrE,qCAAqC;IACrC,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IACrD,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEpC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;QACvC,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,WAAW;KACrC,CAAC,CAAC;IAEH,OAAO,IAAI,mBAAmB,CAAC;QAC7B,EAAE;QACF,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,YAAY;QACzB,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import type { LoadedStore } from '@amodalai/core';
|
|
7
|
-
import type { StoreBackend, StoreDocument, StoreDocumentMeta, StorePutResult, StoreListOptions, StoreListResult } from '@amodalai/types';
|
|
8
|
-
import type { Logger } from '../logger.js';
|
|
9
|
-
/**
|
|
10
|
-
* PGLite store backend. Delegates all query logic to DrizzleStoreBackend
|
|
11
|
-
* once the underlying PGLite instance has been initialized.
|
|
12
|
-
*
|
|
13
|
-
* Constructor + initialize() pattern is preserved for backwards
|
|
14
|
-
* compatibility with existing callers (and test suites that `new` then
|
|
15
|
-
* call `initialize()`).
|
|
16
|
-
*/
|
|
17
|
-
export interface PGLiteStoreBackendOptions {
|
|
18
|
-
dataDir?: string;
|
|
19
|
-
logger?: Logger;
|
|
20
|
-
}
|
|
21
|
-
export declare class PGLiteStoreBackend implements StoreBackend {
|
|
22
|
-
private readonly dataDir;
|
|
23
|
-
private readonly logger;
|
|
24
|
-
private inner;
|
|
25
|
-
constructor(dataDirOrOpts?: string | PGLiteStoreBackendOptions);
|
|
26
|
-
initialize(stores: LoadedStore[]): Promise<void>;
|
|
27
|
-
private ensure;
|
|
28
|
-
get(appId: string, store: string, key: string): Promise<StoreDocument | null>;
|
|
29
|
-
put(appId: string, store: string, key: string, payload: Record<string, unknown>, meta: Partial<StoreDocumentMeta>): Promise<StorePutResult>;
|
|
30
|
-
list(appId: string, store: string, options?: StoreListOptions): Promise<StoreListResult>;
|
|
31
|
-
delete(appId: string, store: string, key: string): Promise<boolean>;
|
|
32
|
-
history(appId: string, store: string, key: string): Promise<StoreDocument[]>;
|
|
33
|
-
purgeExpired(appId: string, store?: string): Promise<number>;
|
|
34
|
-
close(): Promise<void>;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Create a PGLite store backend.
|
|
38
|
-
*/
|
|
39
|
-
export declare function createPGLiteStoreBackend(stores: LoadedStore[], dataDirOrOpts?: string | PGLiteStoreBackendOptions): Promise<PGLiteStoreBackend>;
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Amodal Labs, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* PGLite-backed store backend.
|
|
8
|
-
*
|
|
9
|
-
* Uses in-process WASM Postgres via @electric-sql/pglite + Drizzle ORM.
|
|
10
|
-
* Data is stored in a configurable directory (default: in-memory).
|
|
11
|
-
*
|
|
12
|
-
* This file is a thin factory over DrizzleStoreBackend — it constructs
|
|
13
|
-
* the PGLite client, runs DDL, wraps it in drizzle(), and hands off all
|
|
14
|
-
* query logic to the shared backend.
|
|
15
|
-
*/
|
|
16
|
-
import { drizzle } from 'drizzle-orm/pglite';
|
|
17
|
-
import { DrizzleStoreBackend } from './drizzle-store-backend.js';
|
|
18
|
-
import { StoreError } from '../errors.js';
|
|
19
|
-
import { log as defaultLogger } from '../logger.js';
|
|
20
|
-
const CREATE_TABLES_DDL = `
|
|
21
|
-
CREATE TABLE IF NOT EXISTS store_documents (
|
|
22
|
-
app_id TEXT NOT NULL,
|
|
23
|
-
store TEXT NOT NULL,
|
|
24
|
-
key TEXT NOT NULL,
|
|
25
|
-
version INTEGER NOT NULL DEFAULT 1,
|
|
26
|
-
payload JSONB NOT NULL,
|
|
27
|
-
meta JSONB NOT NULL,
|
|
28
|
-
expires_at TIMESTAMPTZ,
|
|
29
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
30
|
-
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
31
|
-
PRIMARY KEY (app_id, store, key)
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
CREATE INDEX IF NOT EXISTS idx_store_documents_store
|
|
35
|
-
ON store_documents (app_id, store);
|
|
36
|
-
|
|
37
|
-
CREATE INDEX IF NOT EXISTS idx_store_documents_expires
|
|
38
|
-
ON store_documents (expires_at)
|
|
39
|
-
WHERE expires_at IS NOT NULL;
|
|
40
|
-
|
|
41
|
-
CREATE TABLE IF NOT EXISTS store_document_versions (
|
|
42
|
-
id SERIAL PRIMARY KEY,
|
|
43
|
-
app_id TEXT NOT NULL,
|
|
44
|
-
store TEXT NOT NULL,
|
|
45
|
-
key TEXT NOT NULL,
|
|
46
|
-
version INTEGER NOT NULL,
|
|
47
|
-
payload JSONB NOT NULL,
|
|
48
|
-
meta JSONB NOT NULL,
|
|
49
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
CREATE INDEX IF NOT EXISTS idx_store_versions_lookup
|
|
53
|
-
ON store_document_versions (app_id, store, key, version DESC);
|
|
54
|
-
`;
|
|
55
|
-
export class PGLiteStoreBackend {
|
|
56
|
-
dataDir;
|
|
57
|
-
logger;
|
|
58
|
-
inner = null;
|
|
59
|
-
constructor(dataDirOrOpts) {
|
|
60
|
-
const opts = typeof dataDirOrOpts === 'string' || dataDirOrOpts === undefined
|
|
61
|
-
? { dataDir: dataDirOrOpts }
|
|
62
|
-
: dataDirOrOpts;
|
|
63
|
-
this.dataDir = opts.dataDir;
|
|
64
|
-
this.logger = opts.logger ?? defaultLogger;
|
|
65
|
-
}
|
|
66
|
-
async initialize(stores) {
|
|
67
|
-
if (this.inner)
|
|
68
|
-
return;
|
|
69
|
-
if (this.dataDir) {
|
|
70
|
-
const { mkdirSync } = await import('node:fs');
|
|
71
|
-
mkdirSync(this.dataDir, { recursive: true });
|
|
72
|
-
}
|
|
73
|
-
const { PGlite } = await import('@electric-sql/pglite');
|
|
74
|
-
const pglite = new PGlite(this.dataDir ?? undefined);
|
|
75
|
-
await pglite.exec(CREATE_TABLES_DDL);
|
|
76
|
-
const db = drizzle(pglite);
|
|
77
|
-
this.inner = new DrizzleStoreBackend({
|
|
78
|
-
db,
|
|
79
|
-
stores,
|
|
80
|
-
logger: this.logger,
|
|
81
|
-
onClose: async () => {
|
|
82
|
-
await pglite.close();
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
ensure() {
|
|
87
|
-
if (!this.inner) {
|
|
88
|
-
throw new StoreError('PGLite store backend is not initialized or was closed', {
|
|
89
|
-
store: '(uninitialized)',
|
|
90
|
-
operation: 'ensure',
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
return this.inner;
|
|
94
|
-
}
|
|
95
|
-
async get(appId, store, key) {
|
|
96
|
-
return this.ensure().get(appId, store, key);
|
|
97
|
-
}
|
|
98
|
-
async put(appId, store, key, payload, meta) {
|
|
99
|
-
return this.ensure().put(appId, store, key, payload, meta);
|
|
100
|
-
}
|
|
101
|
-
async list(appId, store, options) {
|
|
102
|
-
return this.ensure().list(appId, store, options);
|
|
103
|
-
}
|
|
104
|
-
async delete(appId, store, key) {
|
|
105
|
-
return this.ensure().delete(appId, store, key);
|
|
106
|
-
}
|
|
107
|
-
async history(appId, store, key) {
|
|
108
|
-
return this.ensure().history(appId, store, key);
|
|
109
|
-
}
|
|
110
|
-
async purgeExpired(appId, store) {
|
|
111
|
-
return this.ensure().purgeExpired(appId, store);
|
|
112
|
-
}
|
|
113
|
-
async close() {
|
|
114
|
-
if (!this.inner)
|
|
115
|
-
return;
|
|
116
|
-
await this.inner.close();
|
|
117
|
-
this.inner = null;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Create a PGLite store backend.
|
|
122
|
-
*/
|
|
123
|
-
export async function createPGLiteStoreBackend(stores, dataDirOrOpts) {
|
|
124
|
-
const backend = new PGLiteStoreBackend(dataDirOrOpts);
|
|
125
|
-
await backend.initialize(stores);
|
|
126
|
-
return backend;
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=pglite-store-backend.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pglite-store-backend.js","sourceRoot":"","sources":["../../../src/stores/pglite-store-backend.ts"],"names":[],"mappings":"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"}
|