@vibes.diy/api-svc 4.0.15 → 4.0.17
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/README.md +1 -1
- package/billing.d.ts +3 -0
- package/billing.js +10 -0
- package/billing.js.map +1 -1
- package/check-auth.d.ts +9 -0
- package/check-auth.js +17 -0
- package/check-auth.js.map +1 -1
- package/create-handler.js +2 -0
- package/create-handler.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/intern/attempt-backend-fetch.js.map +1 -1
- package/intern/backend-db-callback.js +7 -1
- package/intern/backend-db-callback.js.map +1 -1
- package/intern/chat-persist-gate.d.ts +7 -0
- package/intern/chat-persist-gate.js +50 -0
- package/intern/chat-persist-gate.js.map +1 -0
- package/intern/emit-backend-onchange.d.ts +1 -0
- package/intern/emit-backend-onchange.js +28 -0
- package/intern/emit-backend-onchange.js.map +1 -1
- package/intern/grouped-vibe-import-map.js +1 -1
- package/intern/grouped-vibe-import-map.js.map +1 -1
- package/intern/load-vibe-env.d.ts +2 -0
- package/intern/load-vibe-env.js +17 -0
- package/intern/load-vibe-env.js.map +1 -0
- package/intern/process-access-bindings.js +74 -35
- package/intern/process-access-bindings.js.map +1 -1
- package/intern/put-access-gate.js +1 -1
- package/intern/put-access-gate.js.map +1 -1
- package/intern/render-vibe.d.ts +2 -1
- package/intern/render-vibe.js +16 -4
- package/intern/render-vibe.js.map +1 -1
- package/intern/resolve-backend-session-user.d.ts +6 -0
- package/intern/resolve-backend-session-user.js +9 -0
- package/intern/resolve-backend-session-user.js.map +1 -0
- package/intern/vibe-ssr-attempt.d.ts +4 -2
- package/intern/vibe-ssr-attempt.js +13 -5
- package/intern/vibe-ssr-attempt.js.map +1 -1
- package/package.json +13 -13
- package/peers/r2-to-s3api.d.ts +1 -0
- package/peers/r2-to-s3api.js +4 -1
- package/peers/r2-to-s3api.js.map +1 -1
- package/public/app-documents-read-eventos.js +5 -5
- package/public/app-documents-read-eventos.js.map +1 -1
- package/public/app-documents-write-eventos.js +59 -27
- package/public/app-documents-write-eventos.js.map +1 -1
- package/public/asset-session.js +2 -20
- package/public/asset-session.js.map +1 -1
- package/public/channel-read-filter.js +1 -1
- package/public/channel-read-filter.js.map +1 -1
- package/public/ensure-app-slug-item.js.map +1 -1
- package/public/prompt-chat-section.d.ts +3 -1
- package/public/prompt-chat-section.js +146 -14
- package/public/prompt-chat-section.js.map +1 -1
- package/public/serv-entry-point.d.ts +1 -0
- package/public/serv-entry-point.js +13 -5
- package/public/serv-entry-point.js.map +1 -1
- package/public/who-am-i.js +7 -10
- package/public/who-am-i.js.map +1 -1
- package/usage-report/backfill-avatars.js +6 -4
- package/usage-report/backfill-avatars.js.map +1 -1
- package/usage-report/billing-reconcile-util.d.ts +25 -0
- package/usage-report/billing-reconcile-util.js +47 -0
- package/usage-report/billing-reconcile-util.js.map +1 -0
- package/usage-report/billing-reconcile.d.ts +1 -0
- package/usage-report/billing-reconcile.js +60 -0
- package/usage-report/billing-reconcile.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-app-slug-item.js","sourceRoot":"","sources":["../../jsr/public/ensure-app-slug-item.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ensure-app-slug-item.js","sourceRoot":"","sources":["../../jsr/public/ensure-app-slug-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,MAAM,EAGN,YAAY,EACZ,iBAAiB,EACjB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EAEf,gBAAgB,GASjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAMrF,SAAS,0BAA0B,CAAC,UAA+B;IACjE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO,gDAAgD,SAAS,CAAC,QAAQ,OAAO,SAAS,EAAE,CAAC;AAC9F,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAoB,EACpB,GAA0C,EAC1C,IAA+B;IAG/B,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IACxE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,EAAE,CAAC;YACf,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE;gBACL,OAAO,EAAE,6FAA6F;gBACtG,IAAI,EAAE,kBAAkB;aACzB;SACgC,CAAC,CAAC;IACvC,CAAC;IAMD,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC;IAC7E,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,WAAW,CAAC,IAAI,KAAK,iBAAiB,CAAC,EAAE,CAAC;QACjG,MAAM,aAAa,GAAG,kBAAkB,CAAC,WAAW,CAAC,OAAiB,CAAC,CAAC;QACxE,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC,EAAE,CAAC;gBACf,IAAI,EAAE,qBAAqB;gBAC3B,KAAK,EAAE,EAAE,OAAO,EAAE,eAAe,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;aAC7D,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE;QACpD,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;QACrC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;QAC5C,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC,CAAC;IACH,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,eAAe,GAKf,EAAE,CAAC;IACT,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAEpC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,YAAY,CAAC;YAClB,KAAK,iBAAiB,CAAC;YACvB,KAAK,mBAAmB;gBACtB,CAAC;oBACC,eAAe,CAAC,IAAI,CAAC;wBACnB,MAAM;wBACN,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;qBAClC,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YACR,KAAK,iBAAiB,CAAC;YACvB,KAAK,UAAU,CAAC;YAChB,KAAK,eAAe,CAAC;YACrB;gBAEE,OAAO,MAAM,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAC/C,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAChC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7E,CAAC;IACF,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3C,OAAO,MAAM,CAAC,GAAG,CACf,uCAAuC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrH,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACvD,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM;QACzC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;KACjB,CAAC,CAAC,CAAC;IAEJ,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,IAAI,EACJ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EACtG,eAAe,CAAC,EAAE,EAAE,EACpB,cAAc,CACf,CAAC;IACF,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAC7B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,GAAG,CAAC,oEAAoE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC;IAQD,MAAM,aAAa,GAAG,iBAAiB,CAAC;QACtC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;QACxB,QAAQ,EAAE;YACR,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB;KACF,CAAC,CAAC;IAwBH,MAAM,cAAc,GAAG,0BAA0B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,CAAC,KAAK,IAAI,EAAE;QACpC,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5D,qBAAqB,CAAC,IAAI,EAAE;gBAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,cAAc;gBAQd,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;YAOF,sBAAsB,CAAC,IAAI,EAAE;gBAC3B,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;gBAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,mBAAmB,EAAE,OAAO,CAAC,UAAU;gBACvC,cAAc;aACf,CAAC;SACH,CAAC,CAAC;QACH,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CACV,2DAA2D,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,EACpG,eAAe,CAAC,GAAG,EAAE,CACtB,CAAC;QACJ,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CACV,4DAA4D,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,EACrG,gBAAgB,CAAC,GAAG,EAAE,CACvB,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC;YAShB,CAAC,KAAK,IAAI,EAAE;gBACV,IAAI,CAAC,cAAc;oBAAE,OAAO;gBAC5B,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE;oBAC9C,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;oBAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM,EAAE,cAAc;oBACtB,GAAG,EAAE,mBAAmB;iBACzB,CAAC,CAAC;gBACH,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;oBACtB,OAAO,CAAC,IAAI,CACV,mDAAmD,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,EAC5F,SAAS,CAAC,GAAG,EAAE,CAChB,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,EAAE;YAMJ,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE;oBACP,IAAI,EAAE,2BAA2B;oBACjC,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB;gBACD,GAAG,EAAE,aAAa;gBAClB,GAAG,EAAE,mBAAmB;gBACxB,GAAG,EAAE,eAAe;gBACpB,GAAG,EAAE,CAAC;aAC0B,CAAC;YACnC,OAAO,CAAC,IAAI;gBACV,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE;wBACP,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;wBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,OAAO,EAAE,aAAa;wBACtB,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,GAAG,CAAC,IAAI;qBACf;oBACD,GAAG,EAAE,aAAa;oBAClB,GAAG,EAAE,mBAAmB;oBACxB,GAAG,EAAE,eAAe;oBACpB,GAAG,EAAE,CAAC;iBACuB,CAAC;gBAClC,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IASL,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE;YAC7C,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;YAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,sDAAsD,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,EAAE,CAAC;QACf,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAIhC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU;QAE9B,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAIhC;IACF,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,GAAY,EAAE,EAAE;QAE7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,GAAG,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,CACd,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,GAAG;YACN,OAAO,EAAE,GAAG;SACb,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,EAAE,SAAS,CACf,KAAK,EACH,GAA0H,EACvF,EAAE;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAiB,aAAa,CAAC,CAAC;QAO/D,SAAS,YAAY,CAAC,IAAyB;YAC7C,MAAM,QAAQ,GAAgB;gBAC5B,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;aAC1E,CAAC;YAGF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACzF,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACrC,CAAC;QAOD,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,CACF;CACF,CAAC"}
|
|
@@ -10,7 +10,7 @@ export type { PromptAssetFetchDeps };
|
|
|
10
10
|
export { createPromptAssetFetch, promptsPkgBaseUrl };
|
|
11
11
|
export { resolveCodeBlocksToFileSystem, createStreamingResolver, createBlockAccumulator, logApplyError };
|
|
12
12
|
export type { ApplyErrorEvent, StreamingResolverDeps, BlockApplyResult, StreamingResolver, ClosedCodeBlock, BlockAccumulator, ApplyEditsError, FenceParseError, };
|
|
13
|
-
export declare function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks, fileSystem, model, codegenTheme, }: {
|
|
13
|
+
export declare function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks, fileSystem, model, codegenTheme, onFsRef, }: {
|
|
14
14
|
vctx: VibesApiSQLCtx;
|
|
15
15
|
req: ReqWithVerifiedAuth<ReqPromptChatSection>;
|
|
16
16
|
resChat: ResChat;
|
|
@@ -22,6 +22,7 @@ export declare function handlePromptContext({ vctx, req, resChat, promptId, bloc
|
|
|
22
22
|
fileSystem?: VibeFile[];
|
|
23
23
|
model?: string;
|
|
24
24
|
codegenTheme?: string;
|
|
25
|
+
onFsRef?: (fsRef: FileSystemRef) => Promise<void>;
|
|
25
26
|
}): Promise<Result<{
|
|
26
27
|
blockSeq: number;
|
|
27
28
|
fsRef: Option<FileSystemRef>;
|
|
@@ -35,6 +36,7 @@ interface ResChat {
|
|
|
35
36
|
}
|
|
36
37
|
interface PromptTerminalSignal {
|
|
37
38
|
promptBlockEndEmitted: boolean;
|
|
39
|
+
releasePersistGate?: () => void;
|
|
38
40
|
}
|
|
39
41
|
export declare function handleFSPrompt({ scope, vctx, resChat, req, ctx, promptId, terminal, }: {
|
|
40
42
|
scope: Scope;
|
|
@@ -2,10 +2,10 @@ import { Result, Option, EventoResult, exception2Result, chunkyAsync } from "@ad
|
|
|
2
2
|
import { storeAndAuditAsset } from "./store-and-audit-asset.js";
|
|
3
3
|
import { convertImageEvtToFileRef } from "./convert-image-evt.js";
|
|
4
4
|
import { scopey } from "@adviser/scopey";
|
|
5
|
-
import { isReqCreationPromptChatSection, isReqPromptApplicationChatSection, isPromptFSStyle, isReqPromptFSChatSection, isReqPromptFSUpdateChatSection, isReqPromptImageChatSection, isReqPromptLLMChatSection, reqPromptChatSection, isReqPromptFSSetChatSection, parseArray,
|
|
5
|
+
import { isReqCreationPromptChatSection, isReqPromptApplicationChatSection, isPromptFSStyle, isReqPromptFSChatSection, isReqPromptFSUpdateChatSection, isReqPromptImageChatSection, isReqPromptLLMChatSection, reqPromptChatSection, isReqPromptFSSetChatSection, parseArray, fileSystemItem, isVibeCodeBlock, } from "@vibes.diy/api-types";
|
|
6
6
|
import { ensureLogger } from "@vibes.diy/identity";
|
|
7
7
|
import { type } from "arktype";
|
|
8
|
-
import { costCentsFromUsage } from "../billing.js";
|
|
8
|
+
import { costCentsFromUsage, prodiaCostCents } from "../billing.js";
|
|
9
9
|
import { checkAuth } from "../check-auth.js";
|
|
10
10
|
import { unwrapMsgBase, wrapMsgBase } from "../unwrap-msg-base.js";
|
|
11
11
|
import { assertChatShardIdentity } from "../shard-gate.js";
|
|
@@ -16,7 +16,8 @@ import { getRecoveryAddendum, getRecoveryStitchAddendum } from "@vibes.diy/promp
|
|
|
16
16
|
import { ensureAppSlugItem } from "./ensure-app-slug-item.js";
|
|
17
17
|
import { getModelDefaults } from "../intern/get-model-defaults.js";
|
|
18
18
|
import { buildRecoveryRequest, buildTruncatedEvent, shouldAttemptRecovery, updateRecoveryCounter, } from "../intern/recovery.js";
|
|
19
|
-
import { loadVersionTimeline } from "../intern/version-timeline.js";
|
|
19
|
+
import { loadVersionTimeline, resolveVfsFromFileSystem } from "../intern/version-timeline.js";
|
|
20
|
+
import { langForFilename } from "../intern/ensure-push-seeded-chat.js";
|
|
20
21
|
import { resolveSlotConfig } from "../intern/slot-assembler.js";
|
|
21
22
|
import { preAllocate } from "../intern/pre-allocate.js";
|
|
22
23
|
import { dryRunHandleIsForeign } from "../intern/ensure-chat-id.js";
|
|
@@ -24,6 +25,7 @@ import { createPromptAssetFetch, promptsPkgBaseUrl } from "../intern/prompt-asse
|
|
|
24
25
|
import { resolveCodeBlocksToFileSystem, createStreamingResolver, createBlockAccumulator, logApplyError, } from "../intern/prompt-streaming.js";
|
|
25
26
|
import { reconstructConversationMessages, assemblePromptPayload, persistCodegenThemeMarker, } from "../intern/prompt-assembly.js";
|
|
26
27
|
import { bumpAppRecency } from "../intern/bump-app-recency.js";
|
|
28
|
+
import { acquireChatPersistGate, waitChatPersistIdle } from "../intern/chat-persist-gate.js";
|
|
27
29
|
import { loadModels } from "./list-models.js";
|
|
28
30
|
function clientWsSend(ctx) {
|
|
29
31
|
return ctx.send.provider;
|
|
@@ -161,6 +163,13 @@ function extractProviderErrorFields(bodyFull) {
|
|
|
161
163
|
}
|
|
162
164
|
return out;
|
|
163
165
|
}
|
|
166
|
+
const INVALID_MODEL_STATUSES = new Set([400, 404]);
|
|
167
|
+
const INVALID_MODEL_MESSAGE_RE = /not a valid model|invalid model|unknown model|no endpoints found for|model\b.{0,120}\b(not found|does not exist|no longer (available|supported)|deprecated|retired)/i;
|
|
168
|
+
function isInvalidModelError(status, provider) {
|
|
169
|
+
if (!INVALID_MODEL_STATUSES.has(status))
|
|
170
|
+
return false;
|
|
171
|
+
return typeof provider.errorMessage === "string" && INVALID_MODEL_MESSAGE_RE.test(provider.errorMessage);
|
|
172
|
+
}
|
|
164
173
|
function extractEdgeError(bodySnippet, rawSnippet, headers) {
|
|
165
174
|
const haystacks = [bodySnippet, rawSnippet].filter((s) => typeof s === "string" && s.length > 0);
|
|
166
175
|
let code;
|
|
@@ -309,6 +318,7 @@ async function attemptLlmRequest(args) {
|
|
|
309
318
|
abort.abort();
|
|
310
319
|
const retryable = TRANSIENT_LLM_STATUSES.has(res.status);
|
|
311
320
|
const provider = extractProviderErrorFields(bodyFull);
|
|
321
|
+
const invalidModel = isInvalidModelError(res.status, provider);
|
|
312
322
|
const edge = extractEdgeError(bodySnippet, provider.rawSnippet, res.headers);
|
|
313
323
|
const headers = pickDiagnosticHeaders(res.headers);
|
|
314
324
|
logLlmAttemptFailure({
|
|
@@ -322,6 +332,7 @@ async function attemptLlmRequest(args) {
|
|
|
322
332
|
status: res.status,
|
|
323
333
|
statusText: res.statusText,
|
|
324
334
|
retryable,
|
|
335
|
+
...(invalidModel ? { invalidModel } : {}),
|
|
325
336
|
...(typeof retryAfterMs === "number" ? { retryAfterMs } : {}),
|
|
326
337
|
...(headers ? { headers } : {}),
|
|
327
338
|
...(bodySnippet.length > 0 ? { bodySnippet } : {}),
|
|
@@ -336,6 +347,7 @@ async function attemptLlmRequest(args) {
|
|
|
336
347
|
status: res.status,
|
|
337
348
|
statusText: res.statusText,
|
|
338
349
|
retryable,
|
|
350
|
+
...(invalidModel ? { invalidModel } : {}),
|
|
339
351
|
...(bodySnippet.length > 0 ? { bodySnippet } : {}),
|
|
340
352
|
...(typeof retryAfterMs === "number" ? { retryAfterMs } : {}),
|
|
341
353
|
};
|
|
@@ -388,6 +400,10 @@ async function dispatchLlmRequestWithFallback(args) {
|
|
|
388
400
|
return { ok: true, res: attempt.res, llmReq: args.llmReq, abort: attempt.abort, attempts };
|
|
389
401
|
attempts.push(attempt.failure);
|
|
390
402
|
if (attempt.failure.retryable === false) {
|
|
403
|
+
if (attempt.failure.kind === "http-status" && attempt.failure.invalidModel === true) {
|
|
404
|
+
lastPrimary = attempt;
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
391
407
|
return { ok: false, llmReq: args.llmReq, abort: attempt.abort, attempts, error: formatLlmAttemptFailures(attempts) };
|
|
392
408
|
}
|
|
393
409
|
lastPrimary = attempt;
|
|
@@ -477,7 +493,7 @@ async function appendBlockEvent({ ctx, vctx, req, promptId, blockSeq, evt, emitM
|
|
|
477
493
|
}
|
|
478
494
|
return Result.Ok();
|
|
479
495
|
}
|
|
480
|
-
export async function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks = 100, fileSystem, model, codegenTheme, }) {
|
|
496
|
+
export async function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks = 100, fileSystem, model, codegenTheme, onFsRef, }) {
|
|
481
497
|
let fsRef = Option.None();
|
|
482
498
|
const code = [];
|
|
483
499
|
const sections = [];
|
|
@@ -535,6 +551,12 @@ export async function handlePromptContext({ vctx, req, resChat, promptId, blockS
|
|
|
535
551
|
return Result.Err(`Failed to parse FileSystemRef: ${tFsRef.summary}`);
|
|
536
552
|
}
|
|
537
553
|
fsRef = Option.Some(tFsRef);
|
|
554
|
+
if (onFsRef) {
|
|
555
|
+
const rReveal = await exception2Result(() => onFsRef(tFsRef));
|
|
556
|
+
if (rReveal.isErr()) {
|
|
557
|
+
vctx.logger.Warn().Err(rReveal).Str("promptId", promptId).Msg("reveal-emit-failed");
|
|
558
|
+
}
|
|
559
|
+
}
|
|
538
560
|
}
|
|
539
561
|
value.fsRef = fsRef.toValue();
|
|
540
562
|
const rSql = await exception2Result(() => vctx.sql.db.insert(vctx.sql.tables.promptContexts).values({
|
|
@@ -916,6 +938,41 @@ async function handleProdiaImageRequest({ scope, ctx, vctx, req, promptId, block
|
|
|
916
938
|
if (rStored.isErr()) {
|
|
917
939
|
return Result.Err(`Failed to store Prodia image: ${rStored.Err().message}`);
|
|
918
940
|
}
|
|
941
|
+
const imageCostCents = prodiaCostCents(prodiaStem);
|
|
942
|
+
const zeroTokens = { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 };
|
|
943
|
+
const rPromptCtx = await exception2Result(() => vctx.sql.db.insert(vctx.sql.tables.promptContexts).values({
|
|
944
|
+
userId: req._auth.verifiedAuth.claims.userId,
|
|
945
|
+
chatId: req.chatId,
|
|
946
|
+
promptId,
|
|
947
|
+
nethash: vctx.netHash(),
|
|
948
|
+
promptTokens: 0,
|
|
949
|
+
completionTokens: 0,
|
|
950
|
+
totalTokens: 0,
|
|
951
|
+
ref: {
|
|
952
|
+
type: "prompt.usage.sql",
|
|
953
|
+
usage: {
|
|
954
|
+
given: [{ ...zeroTokens, cost: imageCostCents / 100 }],
|
|
955
|
+
calculated: zeroTokens,
|
|
956
|
+
},
|
|
957
|
+
model: resolvedModel,
|
|
958
|
+
},
|
|
959
|
+
created: new Date().toISOString(),
|
|
960
|
+
}));
|
|
961
|
+
if (rPromptCtx.isErr()) {
|
|
962
|
+
vctx.logger.Warn().Err(rPromptCtx).Str("promptId", promptId).Msg("image-prompt-context-persist-failed");
|
|
963
|
+
}
|
|
964
|
+
if (imageCostCents > 0) {
|
|
965
|
+
const rTrack = await vctx.billing.trackUsage({
|
|
966
|
+
userId: req._auth.verifiedAuth.claims.userId,
|
|
967
|
+
costCents: imageCostCents,
|
|
968
|
+
promptId,
|
|
969
|
+
model: resolvedModel,
|
|
970
|
+
mode: "image",
|
|
971
|
+
});
|
|
972
|
+
if (rTrack.isErr()) {
|
|
973
|
+
vctx.logger.Warn().Err(rTrack).Str("promptId", promptId).Msg("billing-track-failed");
|
|
974
|
+
}
|
|
975
|
+
}
|
|
919
976
|
const stored = rStored.Ok();
|
|
920
977
|
const fileMimeType = stored.mimeType ?? "image/png";
|
|
921
978
|
const blockId = vctx.sthis.nextId(12).str;
|
|
@@ -1008,6 +1065,7 @@ async function handleProdiaImageRequest({ scope, ctx, vctx, req, promptId, block
|
|
|
1008
1065
|
return Result.Ok(blockSeq);
|
|
1009
1066
|
}
|
|
1010
1067
|
async function handleEndMsg({ collectedMsgs, vctx, req, ctx, resChat, promptId, value, blockSeq, fileSystem, terminal, model, codegenTheme, }) {
|
|
1068
|
+
terminal.releasePersistGate ??= acquireChatPersistGate(vctx.connections, req.chatId);
|
|
1011
1069
|
const endSeq = blockSeq++;
|
|
1012
1070
|
const rEnd = await appendBlockEvent({
|
|
1013
1071
|
ctx,
|
|
@@ -1022,6 +1080,7 @@ async function handleEndMsg({ collectedMsgs, vctx, req, ctx, resChat, promptId,
|
|
|
1022
1080
|
return Result.Err(rEnd);
|
|
1023
1081
|
}
|
|
1024
1082
|
terminal.promptBlockEndEmitted = true;
|
|
1083
|
+
const revealSeq = blockSeq++;
|
|
1025
1084
|
const r = await handlePromptContext({
|
|
1026
1085
|
vctx,
|
|
1027
1086
|
req,
|
|
@@ -1033,6 +1092,27 @@ async function handleEndMsg({ collectedMsgs, vctx, req, ctx, resChat, promptId,
|
|
|
1033
1092
|
fileSystem,
|
|
1034
1093
|
model,
|
|
1035
1094
|
codegenTheme,
|
|
1095
|
+
onFsRef: async (fsRefVal) => {
|
|
1096
|
+
const rReveal = await appendBlockEvent({
|
|
1097
|
+
ctx,
|
|
1098
|
+
vctx,
|
|
1099
|
+
req,
|
|
1100
|
+
promptId,
|
|
1101
|
+
blockSeq: revealSeq,
|
|
1102
|
+
evt: {
|
|
1103
|
+
type: "prompt.fs-persisted",
|
|
1104
|
+
streamId: promptId,
|
|
1105
|
+
chatId: req.chatId,
|
|
1106
|
+
seq: revealSeq,
|
|
1107
|
+
timestamp: new Date(),
|
|
1108
|
+
fsRef: fsRefVal,
|
|
1109
|
+
},
|
|
1110
|
+
emitMode: "emit-only",
|
|
1111
|
+
});
|
|
1112
|
+
if (rReveal.isErr()) {
|
|
1113
|
+
vctx.logger.Warn().Err(rReveal).Str("promptId", promptId).Msg("reveal-emit-failed");
|
|
1114
|
+
}
|
|
1115
|
+
},
|
|
1036
1116
|
});
|
|
1037
1117
|
if (r.isErr()) {
|
|
1038
1118
|
return Result.Err(r);
|
|
@@ -1448,24 +1528,44 @@ export async function handleFSPrompt({ scope, vctx, resChat, req, ctx, promptId,
|
|
|
1448
1528
|
fileSystem = req.fsSet;
|
|
1449
1529
|
}
|
|
1450
1530
|
else if (isReqPromptFSUpdateChatSection(req)) {
|
|
1451
|
-
|
|
1452
|
-
if (
|
|
1531
|
+
let baseItems;
|
|
1532
|
+
if (req.refFsId) {
|
|
1533
|
+
const refApp = await vctx.sql.db
|
|
1534
|
+
.select({ fileSystem: vctx.sql.tables.apps.fileSystem })
|
|
1535
|
+
.from(vctx.sql.tables.apps)
|
|
1536
|
+
.where(and(eq(vctx.sql.tables.apps.fsId, req.refFsId), eq(vctx.sql.tables.apps.ownerHandle, resChat.ownerHandle), eq(vctx.sql.tables.apps.appSlug, resChat.appSlug)))
|
|
1537
|
+
.orderBy(desc(vctx.sql.tables.apps.releaseSeq))
|
|
1538
|
+
.limit(1)
|
|
1539
|
+
.then((r) => r[0]);
|
|
1540
|
+
if (!refApp) {
|
|
1541
|
+
throw new Error(`fs-update refFsId ${req.refFsId} is not a release of ${resChat.ownerHandle}/${resChat.appSlug}`);
|
|
1542
|
+
}
|
|
1543
|
+
baseItems = refApp.fileSystem;
|
|
1544
|
+
}
|
|
1545
|
+
else {
|
|
1453
1546
|
const lastestPrompt = await vctx.sql.db
|
|
1454
1547
|
.select()
|
|
1455
1548
|
.from(vctx.sql.tables.promptContexts)
|
|
1456
1549
|
.innerJoin(vctx.sql.tables.apps, eq(vctx.sql.tables.apps.fsId, vctx.sql.tables.promptContexts.fsId))
|
|
1457
|
-
.where(
|
|
1550
|
+
.where(eq(vctx.sql.tables.promptContexts.chatId, req.chatId))
|
|
1458
1551
|
.orderBy(desc(vctx.sql.tables.promptContexts.created))
|
|
1459
1552
|
.limit(1)
|
|
1460
1553
|
.then((r) => r[0]);
|
|
1461
|
-
|
|
1462
|
-
|
|
1554
|
+
baseItems = lastestPrompt?.Apps.fileSystem;
|
|
1555
|
+
}
|
|
1556
|
+
const refFS = [];
|
|
1557
|
+
if (baseItems !== undefined) {
|
|
1558
|
+
const vfs = await resolveVfsFromFileSystem(vctx, parseArray(baseItems, fileSystemItem));
|
|
1559
|
+
for (const [filename, content] of vfs) {
|
|
1560
|
+
if (filename.startsWith("/~~calculated~~/"))
|
|
1561
|
+
continue;
|
|
1562
|
+
refFS.push({ type: "code-block", filename, lang: langForFilename(filename), content });
|
|
1463
1563
|
}
|
|
1464
1564
|
}
|
|
1465
1565
|
const mapFS = refFS.reduce((acc, file) => {
|
|
1466
1566
|
acc.set(file.filename, file);
|
|
1467
1567
|
return acc;
|
|
1468
|
-
},
|
|
1568
|
+
}, new Map());
|
|
1469
1569
|
req.fsUpdate.update.forEach((update) => {
|
|
1470
1570
|
mapFS.set(update.filename, update);
|
|
1471
1571
|
});
|
|
@@ -1602,6 +1702,7 @@ export const promptChatSection = {
|
|
|
1602
1702
|
const req = ctx.validated.payload;
|
|
1603
1703
|
const orig = ctx.enRequest.payload;
|
|
1604
1704
|
const vctx = ctx.ctx.getOrThrow("vibesApiCtx");
|
|
1705
|
+
await waitChatPersistIdle(vctx.connections, req.chatId, { logger: vctx.logger });
|
|
1605
1706
|
const rResChat = await getResChatFromMode(vctx, req, orig);
|
|
1606
1707
|
if (rResChat.isErr()) {
|
|
1607
1708
|
return Result.Err(rResChat);
|
|
@@ -1824,9 +1925,18 @@ export const promptChatSection = {
|
|
|
1824
1925
|
await scopey(async (scope) => {
|
|
1825
1926
|
const seq = { val: 0 };
|
|
1826
1927
|
scope.onCatch(async (e) => {
|
|
1928
|
+
const rMaxSeq = await exception2Result(() => vctx.sql.db
|
|
1929
|
+
.select({ blockSeq: vctx.sql.tables.chatSections.blockSeq })
|
|
1930
|
+
.from(vctx.sql.tables.chatSections)
|
|
1931
|
+
.where(and(eq(vctx.sql.tables.chatSections.chatId, req.chatId), eq(vctx.sql.tables.chatSections.promptId, promptId)))
|
|
1932
|
+
.orderBy(desc(vctx.sql.tables.chatSections.blockSeq))
|
|
1933
|
+
.limit(1));
|
|
1934
|
+
if (rMaxSeq.isOk() && rMaxSeq.Ok().length > 0) {
|
|
1935
|
+
seq.val = Math.max(seq.val, rMaxSeq.Ok()[0].blockSeq + 1);
|
|
1936
|
+
}
|
|
1827
1937
|
const errorSeq = seq.val;
|
|
1828
1938
|
seq.val++;
|
|
1829
|
-
await appendBlockEvent({
|
|
1939
|
+
const rError = await appendBlockEvent({
|
|
1830
1940
|
ctx,
|
|
1831
1941
|
vctx,
|
|
1832
1942
|
req,
|
|
@@ -1841,6 +1951,13 @@ export const promptChatSection = {
|
|
|
1841
1951
|
error: e.message,
|
|
1842
1952
|
},
|
|
1843
1953
|
});
|
|
1954
|
+
if (rError.isErr()) {
|
|
1955
|
+
vctx.logger
|
|
1956
|
+
.Error()
|
|
1957
|
+
.Err(rError)
|
|
1958
|
+
.Any("event", { chatId: req.chatId, promptId, blockSeq: errorSeq })
|
|
1959
|
+
.Msg("prompt-error-persist-failed");
|
|
1960
|
+
}
|
|
1844
1961
|
if (vctx.notifyUser) {
|
|
1845
1962
|
const userId = req._auth.verifiedAuth.claims.userId;
|
|
1846
1963
|
const connId = clientWsSend(ctx).connId;
|
|
@@ -1879,9 +1996,18 @@ export const promptChatSection = {
|
|
|
1879
1996
|
return res;
|
|
1880
1997
|
})
|
|
1881
1998
|
.finally(async () => {
|
|
1999
|
+
try {
|
|
2000
|
+
await finalizePromptTurn();
|
|
2001
|
+
}
|
|
2002
|
+
finally {
|
|
2003
|
+
terminal.releasePersistGate?.();
|
|
2004
|
+
}
|
|
2005
|
+
})
|
|
2006
|
+
.do();
|
|
2007
|
+
async function finalizePromptTurn() {
|
|
1882
2008
|
if (seq.val === 0)
|
|
1883
2009
|
return;
|
|
1884
|
-
await appendBlockEvent({
|
|
2010
|
+
const rEnd = await appendBlockEvent({
|
|
1885
2011
|
ctx,
|
|
1886
2012
|
vctx,
|
|
1887
2013
|
req,
|
|
@@ -1896,6 +2022,13 @@ export const promptChatSection = {
|
|
|
1896
2022
|
},
|
|
1897
2023
|
emitMode: terminal.promptBlockEndEmitted ? "store-only" : "store",
|
|
1898
2024
|
});
|
|
2025
|
+
if (rEnd.isErr()) {
|
|
2026
|
+
vctx.logger
|
|
2027
|
+
.Error()
|
|
2028
|
+
.Err(rEnd)
|
|
2029
|
+
.Any("event", { chatId: req.chatId, promptId, blockSeq: seq.val })
|
|
2030
|
+
.Msg("prompt-block-end-persist-failed");
|
|
2031
|
+
}
|
|
1899
2032
|
if (vctx.notifyUser) {
|
|
1900
2033
|
const userId = req._auth.verifiedAuth.claims.userId;
|
|
1901
2034
|
const connId = clientWsSend(ctx).connId;
|
|
@@ -1909,8 +2042,7 @@ export const promptChatSection = {
|
|
|
1909
2042
|
.catch((_e) => {
|
|
1910
2043
|
});
|
|
1911
2044
|
}
|
|
1912
|
-
}
|
|
1913
|
-
.do();
|
|
2045
|
+
}
|
|
1914
2046
|
});
|
|
1915
2047
|
return Result.Ok(EventoResult.Continue);
|
|
1916
2048
|
}),
|