@glows777/vela-channels 0.0.0-stage → 0.5.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.
Files changed (96) hide show
  1. package/CHANGELOG.md +263 -0
  2. package/LICENSE +21 -0
  3. package/README.md +4 -2
  4. package/dist/admission.d.ts +15 -0
  5. package/dist/admission.d.ts.map +1 -0
  6. package/dist/admission.js +31 -0
  7. package/dist/admission.js.map +1 -0
  8. package/dist/atomic-json.d.ts +3 -0
  9. package/dist/atomic-json.d.ts.map +1 -0
  10. package/dist/atomic-json.js +23 -0
  11. package/dist/atomic-json.js.map +1 -0
  12. package/dist/commands.d.ts +47 -0
  13. package/dist/commands.d.ts.map +1 -0
  14. package/dist/commands.js +130 -0
  15. package/dist/commands.js.map +1 -0
  16. package/dist/directory.d.ts +144 -0
  17. package/dist/directory.d.ts.map +1 -0
  18. package/dist/directory.js +309 -0
  19. package/dist/directory.js.map +1 -0
  20. package/dist/event-receiver.d.ts +19 -0
  21. package/dist/event-receiver.d.ts.map +1 -0
  22. package/dist/event-receiver.js +192 -0
  23. package/dist/event-receiver.js.map +1 -0
  24. package/dist/events.d.ts +40 -0
  25. package/dist/events.d.ts.map +1 -0
  26. package/dist/events.js +247 -0
  27. package/dist/events.js.map +1 -0
  28. package/dist/feedback.d.ts +61 -0
  29. package/dist/feedback.d.ts.map +1 -0
  30. package/dist/feedback.js +470 -0
  31. package/dist/feedback.js.map +1 -0
  32. package/dist/gateway.d.ts +76 -0
  33. package/dist/gateway.d.ts.map +1 -0
  34. package/dist/gateway.js +536 -0
  35. package/dist/gateway.js.map +1 -0
  36. package/dist/generic-events.d.ts +9 -0
  37. package/dist/generic-events.d.ts.map +1 -0
  38. package/dist/generic-events.js +33 -0
  39. package/dist/generic-events.js.map +1 -0
  40. package/dist/github-events.d.ts +11 -0
  41. package/dist/github-events.d.ts.map +1 -0
  42. package/dist/github-events.js +118 -0
  43. package/dist/github-events.js.map +1 -0
  44. package/dist/handoff.d.ts +28 -0
  45. package/dist/handoff.d.ts.map +1 -0
  46. package/dist/handoff.js +189 -0
  47. package/dist/handoff.js.map +1 -0
  48. package/dist/index.d.ts +8 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +5 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/log.d.ts +2 -0
  53. package/dist/log.d.ts.map +1 -0
  54. package/dist/log.js +2 -0
  55. package/dist/log.js.map +1 -0
  56. package/dist/recovery.d.ts +19 -0
  57. package/dist/recovery.d.ts.map +1 -0
  58. package/dist/recovery.js +190 -0
  59. package/dist/recovery.js.map +1 -0
  60. package/dist/routine-time.d.ts +8 -0
  61. package/dist/routine-time.d.ts.map +1 -0
  62. package/dist/routine-time.js +114 -0
  63. package/dist/routine-time.js.map +1 -0
  64. package/dist/routines.d.ts +126 -0
  65. package/dist/routines.d.ts.map +1 -0
  66. package/dist/routines.js +370 -0
  67. package/dist/routines.js.map +1 -0
  68. package/dist/scope.d.ts +11 -0
  69. package/dist/scope.d.ts.map +1 -0
  70. package/dist/scope.js +26 -0
  71. package/dist/scope.js.map +1 -0
  72. package/dist/session-id.d.ts +6 -0
  73. package/dist/session-id.d.ts.map +1 -0
  74. package/dist/session-id.js +21 -0
  75. package/dist/session-id.js.map +1 -0
  76. package/dist/sessions.d.ts +13 -0
  77. package/dist/sessions.d.ts.map +1 -0
  78. package/dist/sessions.js +40 -0
  79. package/dist/sessions.js.map +1 -0
  80. package/dist/testing.d.ts +4 -0
  81. package/dist/testing.d.ts.map +1 -0
  82. package/dist/testing.js +8 -0
  83. package/dist/testing.js.map +1 -0
  84. package/dist/types.d.ts +177 -0
  85. package/dist/types.d.ts.map +1 -0
  86. package/dist/types.js +2 -0
  87. package/dist/types.js.map +1 -0
  88. package/dist/usage.d.ts +31 -0
  89. package/dist/usage.d.ts.map +1 -0
  90. package/dist/usage.js +151 -0
  91. package/dist/usage.js.map +1 -0
  92. package/dist/vela.d.ts +38 -0
  93. package/dist/vela.d.ts.map +1 -0
  94. package/dist/vela.js +112 -0
  95. package/dist/vela.js.map +1 -0
  96. package/package.json +41 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routines.js","sourceRoot":"","sources":["../src/routines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAS1B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG;KAClB,QAAQ,EAAE;KACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;AAC3E,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC;IACrD,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAChE,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,EAAE,CAAA;AACX,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IAClC,eAAe;CAChB,CAAC,CAAA;AAEF,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;CAC5E,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB;KACjD,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC1C,IAAI,CACH,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IAC7B,mBAAmB;IACnB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IAChD,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1E,CAAC,CACH,CAAA;AACH,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,MAAM,EAAE,CAAA;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;KACnE,MAAM,EAAE,CAAA;AAQX,yFAAyF;AACzF,MAAM,OAAO,eAAe;IAqBhB;IACA;IACA;IACA;IAKA;IA5BV,KAAK,GAAiB;QACpB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC5D,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CACtB,YAAY,CAAC,KAAsC,CAAC;KACvD,CAAA;IACO,OAAO,GAAqB,EAAE,CAAA;IAC9B,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1C,MAAM,CAAgB;IACtB,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACjC,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAC5B,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IACnC,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAA;IAClC,KAAK,CAAU;IACf,OAAO,GAAG,IAAI,CAAA;IACL,IAAI,CAAS;IAE9B,YACE,OAA2B,EACnB,SAA2B,EAC3B,OAAwD,EACxD,OAA8D,EAC9D,QAI6B,EAC7B,MAAkB;QARlB,cAAS,GAAT,SAAS,CAAkB;QAC3B,YAAO,GAAP,OAAO,CAAiD;QACxD,YAAO,GAAP,OAAO,CAAuD;QAC9D,aAAQ,GAAR,QAAQ,CAIqB;QAC7B,WAAM,GAAN,MAAM,CAAY;QAE1B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAqC;QAC9C,KAAK,MAAM,EAAE,IAAI,QAAQ;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QACvD,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAA;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QACtB,IAAI,IAAY,CAAA;QAChB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAM;YAC9D,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,EAAE;gBAC3D,KAAK,EAAE,KAAK;aACb,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1D,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM;gBACvE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,EACzD,EAAE,KAAK,EAAE,CACV,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC;IAEO,MAAM,CACZ,MAAuD;QAEvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;aACtB,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;aACf,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACjC,IAAI,IAAI,CAAC,IAAI;gBACX,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;YAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACrB,CAAC,CAAC,CAAA;QACJ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,KAAK,IAAI,CAAC,IAAI,CACZ,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAC/B,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,MAAc;QAClC,OAAO,eAAe,CACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CACzE,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAA+D;QAE/D,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;YACjC,GAAG,KAAK;YACR,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;YACnD,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;QACF,IACE,CAAC,cAAc,CACb,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAE,CAChC;YAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5B,IACE,OAAO,CAAC,MAAM,CACZ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAClE,CAAC,MAAM,IAAI,EAAE;gBAEd,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,MAAc,EAAE,EAAU;QACtD,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,MAAM,OAAO,GACX,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAA;YAC7D,IAAI,OAAO;gBAAE,SAAS,GAAG,IAAI,CAAA;YAC7B,OAAO,CAAC,OAAO,CAAA;QACjB,CAAC,CAAC,CACH,CAAA;QACD,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,OAAO,SAAS,CAAA;IAClB,CAAC;IAEO,QAAQ,CAAC,MAAsB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAE,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;QACxE,OAAO;YACL,GAAG,eAAe,CAAC,MAAM,CAAC;YAC1B,QAAQ;YACR,YAAY,EACV,IAAI,IAAI,MAAM,CAAC,QAAQ;gBACrB,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;gBAC5D,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;YAChF,MAAM,EAAE,CAAC,MAAM;gBACb,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,MAAM,CAAC,MAAM;oBACb,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,EAAE;oBACzB,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO;wBAC3B,CAAC,CAAC,eAAe;wBACjB,CAAC,CAAC,aAAa;YACrB,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;SACtE,CAAA;IACH,CAAC;IAEO,YAAY,CAAC,OAAe,EAAE,MAAc;QAClD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE;YAClC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClE,CAAA;IACH,CAAC;IAED,UAAU,CAAC,OAAe,EAAE,MAAc;QACxC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACjE,OAAO;YACL,aAAa,QAAQ,GAAG;YACxB,GAAG,QAAQ,CAAC,GAAG,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,CAAC,OAAO,IAAI,sBAAsB,EAAE,CACxH;YACD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;SAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;IAED,MAAM,CACJ,IAAY,EACZ,OAAoD;QAEpD,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC5C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;YAC3D,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;QACrB,CAAC,CAAA;QACD,OAAO;YACL,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACtC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;oBAC/B,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,GAAG,CAAC,SAAS;oBACrB,SAAS,EAAE,GAAG;oBACd,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE;oBACnD,OAAO;oBACP,QAAQ,EACN,IAAI,IAAI,QAAQ;wBACd,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,EAAE;wBACjE,CAAC,CAAC,QAAQ;iBACf,CAAC,CAAA;gBACF,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;YACD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YAC/D,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CACxB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;SACzD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAoB;QAClC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAM;QACxB,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,OAAO,CAAA;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,IACE,CAAC,CAAC,EAAE,KAAK,EAAE;gBACX,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO;gBACtD,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS;gBAC1B,CAAC,CAAC,CAAC,WAAW;oBACZ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAEvD,OAAO,CAAC,CAAC,CAAC,CAAA;YACZ,OAAO,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAA;QACvE,CAAC,CAAC,CACH,CAAA;QACD,IAAI,CAAC,GAAG,EAAE,CAAA;IACZ,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,SAAS,CACb,GAAoB,EACpB,OAAoB;QAEpB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,eAAe;gBACjE,SAAQ;YACV,MAAM,OAAO,GAAI,KAAK,CAAC,IAAiD;gBACtE,EAAE,OAAO,CAAA;YACX,IAAI,OAAO,EAAE,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE;gBACjC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACjE,OAAO,CACL,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,WAAW;gBAClB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAQ,CAAC,WAAW,CAAC,CAAC,CACzE,CAAA;IACH,CAAC;IAEO,IAAI,CAAC,IAAa;QACxB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IACE,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC;gBACjC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC;wBAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC;gBAElC,SAAQ;YACV,MAAM,EAAE,GAAG,gBAAgB,CACzB,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,EAClD,GAAG,EACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAE,CAChC,CAAA;YACD,IAAI,EAAE,KAAK,SAAS;gBAAE,SAAQ;YAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;iBAC1C,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,EAAE,YAAY,YAAY,CAAC,KAAK,CAAC,EAAE,CAC1E,CAAA;YACH,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;oBACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACxB,IAAI,CAAC,GAAG,EAAE,CAAA;YACZ,CAAC,CAAC,CAAA;YACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAA;IACZ,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,OAAuB,EACvB,EAAU,EACV,OAAgB;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7C,IACE,CAAC,MAAM;YACP,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;YAClC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YAChC,CAAC,OAAO,EACR,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,IAAI,OAAO,CAAC,OAAO,aAAa,OAAO,CAAC,EAAE,wBAAwB,CACnE,CAAA;YACD,OAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;QAClC,IAAI,GAAG,GAAoB;YACzB,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5B,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;YAChC,IAAI,EAAE,qBAAqB,OAAO,CAAC,EAAE,YAAY,OAAO,CAAC,OAAO,CAAC,IAAI,mBAAmB,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE;YAC9O,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;YACpE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ;gBAClC,CAAC,CAAC;oBACE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;oBAC3D,SAAS,EAAE,MAAM,CAAC,MAAM;iBACzB;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAA;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,CAAA;YACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,IAAI,OAAO,CAAC,OAAO,qCAAqC,CACzD,CAAA;YACH,CAAC;YACD,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;YAAE,OAAM;QAC1E,IAAI,OAAO,EAAE,CAAC;YACZ,oFAAoF;YACpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CACjC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,OAAO,EACf,GAAG,CACJ,CAAA;YACD,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO;gBACnE,OAAM;QACV,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE;gBAClE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ;gBAAE,OAAM;YACrB,GAAG,GAAG,QAAQ,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC7D,CAAC;IAEO,GAAG;QACT,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC3C,MAAM,IAAI,GAAG,cAAc,CACzB,CAAC,CAAC,QAAQ,EACV,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EACvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAE,CAC3B,CAAA;YACD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAChC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EACjB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAC/D,CAAA;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5D,MAAM,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { SessionScope } from '@glows777/vela-core/extension-api';
2
+ export interface ChannelScope extends SessionScope {
3
+ readonly channel: string;
4
+ readonly chatId: string;
5
+ readonly chatKind: 'group' | 'direct';
6
+ }
7
+ export declare function resolveChannelScope(dataDir: string, channel: string, chatId: string, chatKind: 'group' | 'direct', storageKey?: string): ChannelScope;
8
+ export declare function chatDirectory(dataDir: string, channel: string, chatId: string): string;
9
+ /** Resolve the shared workspace, without creating data for unowned-topic probes. */
10
+ export declare function groupWorkspace(dataDir: string, channel: string, chatId: string, create?: boolean): string;
11
+ //# sourceMappingURL=scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAGrE,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAA;CACtC;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,GAAG,QAAQ,EAC5B,UAAU,CAAC,EAAE,MAAM,GAClB,YAAY,CAWd;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,UAAO,GACZ,MAAM,CAIR"}
package/dist/scope.js ADDED
@@ -0,0 +1,26 @@
1
+ import { mkdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { channelSessionId } from "./session-id.js";
4
+ export function resolveChannelScope(dataDir, channel, chatId, chatKind, storageKey) {
5
+ return {
6
+ id: channelSessionId(channel, chatId),
7
+ kind: chatKind === 'group' ? 'shared' : 'private',
8
+ dataDir: storageKey
9
+ ? join(dataDir, 'channels', storageKey)
10
+ : chatDirectory(dataDir, channel, chatId),
11
+ channel,
12
+ chatId,
13
+ chatKind,
14
+ };
15
+ }
16
+ export function chatDirectory(dataDir, channel, chatId) {
17
+ return join(dataDir, 'channels', channelSessionId(channel, chatId));
18
+ }
19
+ /** Resolve the shared workspace, without creating data for unowned-topic probes. */
20
+ export function groupWorkspace(dataDir, channel, chatId, create = true) {
21
+ const cwd = join(chatDirectory(dataDir, channel, chatId), 'workspace');
22
+ if (create)
23
+ mkdirSync(cwd, { recursive: true });
24
+ return cwd;
25
+ }
26
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAQlD,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,OAAe,EACf,MAAc,EACd,QAA4B,EAC5B,UAAmB;IAEnB,OAAO;QACL,EAAE,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;QACrC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACjD,OAAO,EAAE,UAAU;YACjB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;YACvC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;QAC3C,OAAO;QACP,MAAM;QACN,QAAQ;KACT,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,OAAe,EACf,MAAc;IAEd,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AACrE,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,OAAe,EACf,MAAc,EACd,MAAM,GAAG,IAAI;IAEb,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAA;IACtE,IAAI,MAAM;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Shared session id for a chat or topic, e.g. `lark-oc_456`. Non-plain or long ids get a
3
+ * hash suffix so different (channel, conversation, topic root) tuples cannot share history.
4
+ */
5
+ export declare const channelSessionId: (channel: string, conversationId: string, topicRootId?: string) => string;
6
+ //# sourceMappingURL=session-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-id.d.ts","sourceRoot":"","sources":["../src/session-id.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,gBAAgB,MAAM,EACtB,cAAc,MAAM,WAarB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { createHash } from 'node:crypto';
2
+ const PLAIN = /^[A-Za-z0-9_]+$/;
3
+ /**
4
+ * Shared session id for a chat or topic, e.g. `lark-oc_456`. Non-plain or long ids get a
5
+ * hash suffix so different (channel, conversation, topic root) tuples cannot share history.
6
+ */
7
+ export const channelSessionId = (channel, conversationId, topicRootId) => {
8
+ const parts = [channel, conversationId];
9
+ if (topicRootId !== undefined)
10
+ parts.push(topicRootId);
11
+ const plain = parts.join('-');
12
+ if (parts.every((part) => PLAIN.test(part)) && plain.length <= 128)
13
+ return plain;
14
+ const hash = createHash('sha256')
15
+ .update(parts.join('\0'))
16
+ .digest('hex')
17
+ .slice(0, 16);
18
+ const safe = plain.replace(/[^A-Za-z0-9_-]/g, '_').slice(0, 128 - 17);
19
+ return `${safe}.${hash}`;
20
+ };
21
+ //# sourceMappingURL=session-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-id.js","sourceRoot":"","sources":["../src/session-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,KAAK,GAAG,iBAAiB,CAAA;AAE/B;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAe,EACf,cAAsB,EACtB,WAAoB,EACpB,EAAE;IACF,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;IACvC,IAAI,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAChE,OAAO,KAAK,CAAA;IACd,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACf,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;IACrE,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;AAC1B,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { SessionOptions, VelaSession } from '@glows777/vela-core/extension-api';
2
+ import { type ChannelDirectory } from './directory.ts';
3
+ import type { ChannelDefinition, IncomingMessage } from './types.ts';
4
+ /** Every opening path resolves current options from the logical chat, before resume or hooks. */
5
+ export declare class ChannelSessions {
6
+ private directory;
7
+ private channel;
8
+ private session;
9
+ private dataDir;
10
+ constructor(directory: ChannelDirectory, channel: (name: string) => ChannelDefinition | undefined, session: (id: string, options?: SessionOptions) => VelaSession, dataDir: string);
11
+ open(id: string, name?: string, message?: IncomingMessage): VelaSession;
12
+ }
13
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACZ,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,gBAAgB,CAAA;AAGpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEpE,iGAAiG;AACjG,qBAAa,eAAe;IAExB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;gBAHP,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,EACxD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,WAAW,EAC9D,OAAO,EAAE,MAAM;IAGzB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW;CA6BxE"}
@@ -0,0 +1,40 @@
1
+ import { isGroupInput } from "./directory.js";
2
+ import { storedMessage } from "./recovery.js";
3
+ import { resolveChannelScope } from "./scope.js";
4
+ /** Every opening path resolves current options from the logical chat, before resume or hooks. */
5
+ export class ChannelSessions {
6
+ directory;
7
+ channel;
8
+ session;
9
+ dataDir;
10
+ constructor(directory, channel, session, dataDir) {
11
+ this.directory = directory;
12
+ this.channel = channel;
13
+ this.session = session;
14
+ this.dataDir = dataDir;
15
+ }
16
+ open(id, name, message) {
17
+ const key = this.directory.keyForSession(id);
18
+ const record = this.directory.get(key);
19
+ const channel = this.channel(record?.channel ?? name ?? '');
20
+ const address = record ? storedMessage(record) : message;
21
+ const msg = address && {
22
+ ...address,
23
+ ...message,
24
+ channelId: address.channelId,
25
+ topic: address.topic,
26
+ };
27
+ if (!channel || !msg)
28
+ throw new Error('Missing logical channel scope');
29
+ const chatKind = record?.chatKind ?? (isGroupInput(msg) ? 'group' : 'direct');
30
+ if (channel.canRecover?.(msg, chatKind) === false)
31
+ throw new Error('Channel scope is no longer enabled');
32
+ const scope = resolveChannelScope(this.dataDir, channel.name, msg.channelId, chatKind, this.directory.storageKey(channel.name, msg.channelId));
33
+ return this.session(this.directory.sessionId(key), {
34
+ ...channel.sessionOptions?.(msg),
35
+ channel: channel.name,
36
+ scope: { id: scope.id, kind: scope.kind, dataDir: scope.dataDir },
37
+ });
38
+ }
39
+ }
40
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGhD,iGAAiG;AACjG,MAAM,OAAO,eAAe;IAEhB;IACA;IACA;IACA;IAJV,YACU,SAA2B,EAC3B,OAAwD,EACxD,OAA8D,EAC9D,OAAe;QAHf,cAAS,GAAT,SAAS,CAAkB;QAC3B,YAAO,GAAP,OAAO,CAAiD;QACxD,YAAO,GAAP,OAAO,CAAuD;QAC9D,YAAO,GAAP,OAAO,CAAQ;IACtB,CAAC;IAEJ,IAAI,CAAC,EAAU,EAAE,IAAa,EAAE,OAAyB;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QACxD,MAAM,GAAG,GAAG,OAAO,IAAI;YACrB,GAAG,OAAO;YACV,GAAG,OAAO;YACV,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAA;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACtE,MAAM,QAAQ,GACZ,MAAM,EAAE,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC9D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,KAAK;YAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,mBAAmB,CAC/B,IAAI,CAAC,OAAO,EACZ,OAAO,CAAC,IAAI,EACZ,GAAG,CAAC,SAAS,EACb,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CACvD,CAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACjD,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC;YAChC,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;SAClE,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { type ChannelVela } from './vela.ts';
2
+ /** Testing only: replies/feedback and queues created by a handoff must settle too. */
3
+ export declare function drainChannels(vela: ChannelVela): Promise<void>;
4
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,WAAW,CAAA;AAE9D,sFAAsF;AACtF,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpE"}
@@ -0,0 +1,8 @@
1
+ import { channelInternals } from "./vela.js";
2
+ /** Testing only: replies/feedback and queues created by a handoff must settle too. */
3
+ export async function drainChannels(vela) {
4
+ const gateway = channelInternals(vela);
5
+ while (gateway.queues.size)
6
+ await Promise.all([...gateway.queues.values()]);
7
+ }
8
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE9D,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAEpC,CAAA;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI;QAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,177 @@
1
+ import type { ImageContent, PermissionRules, VelaEvent } from '@glows777/vela-core/extension-api';
2
+ /** A source event is untrusted data, with routing determined only by local subscriptions. */
3
+ export interface ChannelEvent {
4
+ source: string;
5
+ key: string;
6
+ summary: string;
7
+ details?: string;
8
+ deliveryId: string;
9
+ final?: boolean;
10
+ }
11
+ export interface IncomingMessage {
12
+ /** The conversation the message came from (a group chat or a direct chat); replies go here. Together with the channel name and optional topic root it selects the session. */
13
+ channelId: string;
14
+ /** Who sent the message */
15
+ senderId: string;
16
+ senderName: string;
17
+ text: string;
18
+ images?: ImageContent[];
19
+ /** Reply to this service message instead of starting a new message (for group conversations). */
20
+ replyToId?: string;
21
+ /** The root message identifies a topic independently of its platform container. */
22
+ topic?: {
23
+ rootId: string;
24
+ threadId: string;
25
+ };
26
+ /** Admit only if this topic already has a saved session. */
27
+ requireExistingSession?: boolean;
28
+ /** Set by the gateway before preparation when entering a topic without saved context. */
29
+ isNewTopic?: boolean;
30
+ /** Unsolicited group discussion: queue quietly and never recover work after restart. */
31
+ passive?: boolean;
32
+ /** Scheduled inputs have no incoming service message ID and always queue. */
33
+ routine?: {
34
+ id: string;
35
+ scheduledAt: string;
36
+ };
37
+ /** Queued external data, never a human command or a steer. */
38
+ externalEvent?: ChannelEvent;
39
+ /**
40
+ * A note from another Vela session in this group, never a human command or a steer. `depth` counts hops since the
41
+ * last human input; `id` lets recovery tell whether the note reached the session before a crash.
42
+ */
43
+ handoff?: {
44
+ id: string;
45
+ from: string;
46
+ depth: number;
47
+ };
48
+ raw?: unknown;
49
+ }
50
+ export type RoutineSchedule = {
51
+ at: string;
52
+ } | {
53
+ time: string;
54
+ days?: ('mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun')[];
55
+ };
56
+ export interface ChannelRoutine {
57
+ id: string;
58
+ channel: string;
59
+ chatId: string;
60
+ targetKey: string;
61
+ creator: {
62
+ id: string;
63
+ name: string;
64
+ };
65
+ message: string;
66
+ schedule: RoutineSchedule;
67
+ createdAt: string;
68
+ lastFiredAt: string | null;
69
+ }
70
+ /** A persisted routine with deployment-local display metadata. */
71
+ export interface ChannelRoutineInfo extends ChannelRoutine {
72
+ timezone: string;
73
+ scheduleText: string;
74
+ target: string;
75
+ nextRun: string | null;
76
+ }
77
+ export interface OutgoingMessage {
78
+ routine?: IncomingMessage['routine'];
79
+ /** Set on the reply to a hand-off note; a top-level reply then mentions its recipient. */
80
+ handoff?: IncomingMessage['handoff'];
81
+ topic?: IncomingMessage['topic'];
82
+ channelId: string;
83
+ /** Optional person to mention; a reply target alone addresses a service message. */
84
+ recipientId?: string;
85
+ text: string;
86
+ replyToId?: string;
87
+ }
88
+ /** An owned topic from the durable directory with its current execution state. */
89
+ export interface ChannelTopic {
90
+ rootId: string;
91
+ threadId: string;
92
+ task: string;
93
+ state: 'running' | 'queued' | 'waiting' | 'done' | 'stopped';
94
+ requester: {
95
+ id: string;
96
+ name: string;
97
+ };
98
+ updatedAt: string;
99
+ waitingReason?: string;
100
+ }
101
+ export interface ChannelRuntime {
102
+ scope(sessionId: string): import('./scope.ts').ChannelScope | undefined;
103
+ routines: {
104
+ /** One-off at is deployment-local YYYY-MM-DDTHH:mm; recurring times are local too. */
105
+ create(sessionId: string, message: string, schedule: RoutineSchedule): Promise<ChannelRoutineInfo>;
106
+ list(sessionId: string): {
107
+ timezone: string;
108
+ routines: ChannelRoutineInfo[];
109
+ };
110
+ cancel(sessionId: string, id: string): Promise<boolean>;
111
+ };
112
+ context(sessionId: string): IncomingMessage | undefined;
113
+ topics(chatId: string): ChannelTopic[];
114
+ topicCoverage(): string;
115
+ /** Suppress this active passive run's reply; the tool call is its only durable decision. */
116
+ skipReply(sessionId: string): void;
117
+ /** Record a required human decision; waiting becomes visible after successful delivery. */
118
+ waitForInput(sessionId: string, reason: string): Promise<void>;
119
+ /** Hand off without waiting for the target run; suppress the source run's duplicate reply. `label` is the topic list entry when the message text is a longer brief. */
120
+ dispatch(sourceSessionId: string, message: IncomingMessage, label?: string): void;
121
+ }
122
+ /** `silent` removes a deferred passive marker without adding an outcome reaction. */
123
+ export type ChannelOutcome = 'done' | 'failed' | 'stopped' | 'silent';
124
+ /** Channel-local lifecycle updates; agent events retain their core shape. */
125
+ export type ChannelFeedbackUpdate = {
126
+ type: 'controls';
127
+ message: IncomingMessage;
128
+ /** Aborted when the targeted run ends; expire its callbacks then. */
129
+ signal: AbortSignal;
130
+ /** Synchronously reserves a choice; false means expired or already chosen. */
131
+ choose: (action: 'queue' | 'steer' | 'stop') => boolean;
132
+ error: (error: unknown) => Promise<void>;
133
+ } | {
134
+ type: 'agent';
135
+ event: VelaEvent;
136
+ };
137
+ export interface ChannelRunFeedback {
138
+ /** Controls are awaited before prompting. Agent updates do not block the stream; pending work drains before the reply. */
139
+ event(update: ChannelFeedbackUpdate): void | Promise<void>;
140
+ /** Called once after result delivery (or failure/Stop), including transferred inputs. */
141
+ finish(outcome: ChannelOutcome): Promise<void>;
142
+ }
143
+ /** Channel hooks remain experimental: only Lark is implemented so far; stabilization waits for a second channel implementation. */
144
+ export interface ChannelDefinition {
145
+ name: string;
146
+ description: string;
147
+ /** Deployment-local schedule zone, validated before transport startup. */
148
+ timezone?: unknown;
149
+ /** Adapt scheduled input routing; undefined skips a wake-up with operator diagnostics. */
150
+ prepareRoutine?: (msg: IncomingMessage, chatKind: 'group' | 'direct', reminder: {
151
+ message: string;
152
+ lateByMs: number;
153
+ }) => Promise<IncomingMessage | undefined>;
154
+ connect?: (runtime: ChannelRuntime) => void;
155
+ sessionOptions?: (msg: IncomingMessage) => {
156
+ cwd?: string;
157
+ tools?: string[];
158
+ permissions?: PermissionRules;
159
+ };
160
+ /** Validate configured tool names after extensions load, before transport or recovery starts. */
161
+ validateTools?: (names: readonly string[]) => void;
162
+ /** Recheck current channel access before restoring work from the directory. False skips recovery. */
163
+ canRecover?: (message: IncomingMessage, chatKind: 'group' | 'direct') => boolean;
164
+ /** `false` means the channel is not configured to connect; the gateway skips its startup line, routines and recovery. */
165
+ start(): Promise<boolean | void> | boolean | void;
166
+ stop(): Promise<void> | void;
167
+ send(message: OutgoingMessage): Promise<void>;
168
+ /** Await the handler to wait until the gateway finishes this message and its reply. */
169
+ onMessage?: (handler: (msg: IncomingMessage) => void | Promise<void>) => void;
170
+ /** Prepare names/context when ready to run. Steer also receives the active trigger already in the session. Undefined means handled without a prompt. */
171
+ prepareMessage?: (msg: IncomingMessage, activeMessage?: IncomingMessage) => Promise<IncomingMessage | undefined>;
172
+ /** Remains experimental pending a second channel implementation. Starts after admission, before preparation; false requests presentation without another acknowledgement. No live receive event is required. */
173
+ startRun?: (message: IncomingMessage, options: {
174
+ acknowledge: boolean;
175
+ }) => Promise<ChannelRunFeedback | void>;
176
+ }
177
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ import type { VelaSession } from '@glows777/vela-core/extension-api';
3
+ import type { ChannelDirectory } from './directory.ts';
4
+ export declare const channelUsageRowSchema: z.ZodObject<{
5
+ key: z.ZodString;
6
+ chatId: z.ZodString;
7
+ model: z.ZodString;
8
+ ts: z.ZodNumber;
9
+ tokens: z.ZodObject<{
10
+ inputTokens: z.ZodNumber;
11
+ outputTokens: z.ZodNumber;
12
+ cacheReadTokens: z.ZodNumber;
13
+ cacheWriteTokens: z.ZodNumber;
14
+ }, z.core.$strip>;
15
+ cost: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>;
17
+ /** Channel-owned requests only; append rows, never rewrite totals or session history. */
18
+ export declare class ChannelUsage {
19
+ private directory;
20
+ private readonly path?;
21
+ private rows;
22
+ private loaded;
23
+ private subscribed;
24
+ constructor(dataDir: string | undefined, directory: ChannelDirectory);
25
+ load(): void;
26
+ track(key: string, chatId: string, session: VelaSession): void;
27
+ private append;
28
+ status(key: string, channel: string, chatId: string, session: VelaSession): string;
29
+ private total;
30
+ }
31
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAYhC,CAAA;AAGF,yFAAyF;AACzF,qBAAa,YAAY;IAQrB,OAAO,CAAC,SAAS;IAPnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAQ;IAC9B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAA6B;gBAG7C,OAAO,EAAE,MAAM,GAAG,SAAS,EACnB,SAAS,EAAE,gBAAgB;IAKrC,IAAI,IAAI,IAAI;IAyBZ,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IA4C9D,OAAO,CAAC,MAAM;IASd,MAAM,CACJ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,GACnB,MAAM;IA2BT,OAAO,CAAC,KAAK;CAqBd"}
package/dist/usage.js ADDED
@@ -0,0 +1,151 @@
1
+ import { appendFileSync, mkdirSync, readFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { z } from 'zod';
4
+ const formatUsd = (amount) => `$${amount.toFixed(4)}`;
5
+ const count = z.number().finite().nonnegative();
6
+ export const channelUsageRowSchema = z.object({
7
+ key: z.string(),
8
+ chatId: z.string(),
9
+ model: z.string(),
10
+ ts: count,
11
+ tokens: z.object({
12
+ inputTokens: count,
13
+ outputTokens: count,
14
+ cacheReadTokens: count,
15
+ cacheWriteTokens: count,
16
+ }),
17
+ cost: count.optional(),
18
+ });
19
+ /** Channel-owned requests only; append rows, never rewrite totals or session history. */
20
+ export class ChannelUsage {
21
+ directory;
22
+ path;
23
+ rows = [];
24
+ loaded = false;
25
+ subscribed = new WeakSet();
26
+ constructor(dataDir, directory) {
27
+ this.directory = directory;
28
+ this.path = dataDir ? join(dataDir, 'channels', 'usage.jsonl') : undefined;
29
+ }
30
+ load() {
31
+ if (this.loaded)
32
+ return;
33
+ if (this.path) {
34
+ let text;
35
+ try {
36
+ text = readFileSync(this.path, 'utf8');
37
+ }
38
+ catch (error) {
39
+ if (error.code !== 'ENOENT')
40
+ throw error;
41
+ text = '';
42
+ }
43
+ this.rows = text.split('\n').flatMap((line, index) => {
44
+ if (!line.trim())
45
+ return [];
46
+ try {
47
+ return [channelUsageRowSchema.parse(JSON.parse(line))];
48
+ }
49
+ catch (error) {
50
+ throw new Error(`Invalid channel usage ledger ${this.path}, line ${index + 1}`, { cause: error });
51
+ }
52
+ });
53
+ }
54
+ this.loaded = true;
55
+ }
56
+ track(key, chatId, session) {
57
+ if (this.subscribed.has(session))
58
+ return;
59
+ this.subscribed.add(session);
60
+ let before;
61
+ session.subscribe((event) => {
62
+ if (event.type === 'usage') {
63
+ this.append({
64
+ key,
65
+ chatId,
66
+ model: event.modelId,
67
+ ts: event.record?.ts ?? Date.now(),
68
+ tokens: event.usage,
69
+ cost: event.record?.cost,
70
+ });
71
+ }
72
+ else if (event.type === 'compaction_start') {
73
+ before = session.usage.totals;
74
+ }
75
+ else if (event.type === 'compaction_end' && before) {
76
+ const after = session.usage.totals;
77
+ const start = before;
78
+ before = undefined;
79
+ if (after.steps === start.steps)
80
+ return;
81
+ // A priced subtotal alone cannot distinguish an unpriced summary from a free one.
82
+ const summary = session.usage.lastRecord;
83
+ const tokens = {
84
+ inputTokens: after.inputTokens - start.inputTokens,
85
+ outputTokens: after.outputTokens - start.outputTokens,
86
+ cacheReadTokens: after.cacheReadTokens - start.cacheReadTokens,
87
+ cacheWriteTokens: after.cacheWriteTokens - start.cacheWriteTokens,
88
+ };
89
+ this.append({
90
+ key,
91
+ chatId,
92
+ model: summary.model,
93
+ ts: summary.ts,
94
+ tokens,
95
+ cost: summary.cost === undefined
96
+ ? undefined
97
+ : (after.cost ?? 0) - (start.cost ?? 0),
98
+ });
99
+ }
100
+ });
101
+ }
102
+ append(row) {
103
+ this.load();
104
+ if (this.path) {
105
+ mkdirSync(dirname(this.path), { recursive: true, mode: 0o700 });
106
+ appendFileSync(this.path, `${JSON.stringify(row)}\n`, { mode: 0o600 });
107
+ }
108
+ this.rows.push(row);
109
+ }
110
+ status(key, channel, chatId, session) {
111
+ this.load();
112
+ const info = session.modelInfo;
113
+ const usage = session.usage;
114
+ const topic = this.rows.filter((row) => (this.directory.get(row.key)?.key ?? row.key) === key);
115
+ const group = this.rows.filter((row) => row.chatId === chatId &&
116
+ this.directory.get(row.key)?.channel === channel);
117
+ const first = this.rows[0];
118
+ return [
119
+ `Model: ${info.ref}`,
120
+ `Context: ${usage.tokens} estimated tokens (${usage.percent}% of ${info.contextWindow ?? session.usage.contextWindow})`,
121
+ this.total('Topic', topic),
122
+ this.total('Group', group),
123
+ first
124
+ ? `Recorded since ${new Date(first.ts).toISOString()}. Earlier usage is not included.`
125
+ : 'No usage recorded yet. Earlier usage is not included.',
126
+ this.path
127
+ ? 'Counts completed usage reports; an interrupted request without a usage report is not included.'
128
+ : 'In-memory accounting only; totals are not saved across process restarts.',
129
+ ].join('\n');
130
+ }
131
+ total(label, rows) {
132
+ let tokens = 0, cost = 0, priced = 0;
133
+ for (const row of rows) {
134
+ tokens +=
135
+ row.tokens.inputTokens +
136
+ row.tokens.outputTokens +
137
+ row.tokens.cacheReadTokens +
138
+ row.tokens.cacheWriteTokens;
139
+ if (row.cost !== undefined) {
140
+ cost += row.cost;
141
+ priced++;
142
+ }
143
+ }
144
+ const missing = rows.length - priced;
145
+ const price = priced
146
+ ? `${missing ? 'known cost' : 'cost'} ${formatUsd(cost)}`
147
+ : 'cost unavailable';
148
+ return `${label}: ${tokens} tokens; ${price}${missing ? ` (${missing} unpriced request${missing === 1 ? '' : 's'})` : ''}`;
149
+ }
150
+ }
151
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"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"}