convex-effect-workflows 0.1.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 (190) hide show
  1. package/README.md +107 -0
  2. package/dist/client/ConvexCtx.d.ts +12 -0
  3. package/dist/client/ConvexCtx.d.ts.map +1 -0
  4. package/dist/client/ConvexCtx.js +6 -0
  5. package/dist/client/ConvexCtx.js.map +1 -0
  6. package/dist/client/ConvexLogger.d.ts +7 -0
  7. package/dist/client/ConvexLogger.d.ts.map +1 -0
  8. package/dist/client/ConvexLogger.js +39 -0
  9. package/dist/client/ConvexLogger.js.map +1 -0
  10. package/dist/client/ConvexTracer.d.ts +7 -0
  11. package/dist/client/ConvexTracer.d.ts.map +1 -0
  12. package/dist/client/ConvexTracer.js +60 -0
  13. package/dist/client/ConvexTracer.js.map +1 -0
  14. package/dist/client/ConvexWorkflowEngine.d.ts +308 -0
  15. package/dist/client/ConvexWorkflowEngine.d.ts.map +1 -0
  16. package/dist/client/ConvexWorkflowEngine.js +88 -0
  17. package/dist/client/ConvexWorkflowEngine.js.map +1 -0
  18. package/dist/client/activityWorker.d.ts +23 -0
  19. package/dist/client/activityWorker.d.ts.map +1 -0
  20. package/dist/client/activityWorker.js +41 -0
  21. package/dist/client/activityWorker.js.map +1 -0
  22. package/dist/client/boundaries.d.ts +27 -0
  23. package/dist/client/boundaries.d.ts.map +1 -0
  24. package/dist/client/boundaries.js +17 -0
  25. package/dist/client/boundaries.js.map +1 -0
  26. package/dist/client/encoded.d.ts +22 -0
  27. package/dist/client/encoded.d.ts.map +1 -0
  28. package/dist/client/encoded.js +276 -0
  29. package/dist/client/encoded.js.map +1 -0
  30. package/dist/client/index.d.ts +13 -0
  31. package/dist/client/index.d.ts.map +1 -0
  32. package/dist/client/index.js +11 -0
  33. package/dist/client/index.js.map +1 -0
  34. package/dist/client/registry.d.ts +17 -0
  35. package/dist/client/registry.d.ts.map +1 -0
  36. package/dist/client/registry.js +21 -0
  37. package/dist/client/registry.js.map +1 -0
  38. package/dist/client/runner.d.ts +27 -0
  39. package/dist/client/runner.d.ts.map +1 -0
  40. package/dist/client/runner.js +90 -0
  41. package/dist/client/runner.js.map +1 -0
  42. package/dist/client/runtime.d.ts +10 -0
  43. package/dist/client/runtime.d.ts.map +1 -0
  44. package/dist/client/runtime.js +15 -0
  45. package/dist/client/runtime.js.map +1 -0
  46. package/dist/component/_generated/api.d.ts +148 -0
  47. package/dist/component/_generated/api.d.ts.map +1 -0
  48. package/dist/component/_generated/api.js +31 -0
  49. package/dist/component/_generated/api.js.map +1 -0
  50. package/dist/component/_generated/component.d.ts +921 -0
  51. package/dist/component/_generated/component.d.ts.map +1 -0
  52. package/dist/component/_generated/component.js +11 -0
  53. package/dist/component/_generated/component.js.map +1 -0
  54. package/dist/component/_generated/dataModel.d.ts +46 -0
  55. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  56. package/dist/component/_generated/dataModel.js +11 -0
  57. package/dist/component/_generated/dataModel.js.map +1 -0
  58. package/dist/component/_generated/server.d.ts +121 -0
  59. package/dist/component/_generated/server.d.ts.map +1 -0
  60. package/dist/component/_generated/server.js +78 -0
  61. package/dist/component/_generated/server.js.map +1 -0
  62. package/dist/component/activityCompletions.d.ts +27 -0
  63. package/dist/component/activityCompletions.d.ts.map +1 -0
  64. package/dist/component/activityCompletions.js +70 -0
  65. package/dist/component/activityCompletions.js.map +1 -0
  66. package/dist/component/boundaries.d.ts +20 -0
  67. package/dist/component/boundaries.d.ts.map +1 -0
  68. package/dist/component/boundaries.js +17 -0
  69. package/dist/component/boundaries.js.map +1 -0
  70. package/dist/component/cleanup.d.ts +11 -0
  71. package/dist/component/cleanup.d.ts.map +1 -0
  72. package/dist/component/cleanup.js +163 -0
  73. package/dist/component/cleanup.js.map +1 -0
  74. package/dist/component/clocks.d.ts +12 -0
  75. package/dist/component/clocks.d.ts.map +1 -0
  76. package/dist/component/clocks.js +26 -0
  77. package/dist/component/clocks.js.map +1 -0
  78. package/dist/component/config.d.ts +25 -0
  79. package/dist/component/config.d.ts.map +1 -0
  80. package/dist/component/config.js +110 -0
  81. package/dist/component/config.js.map +1 -0
  82. package/dist/component/convex.config.d.ts +3 -0
  83. package/dist/component/convex.config.d.ts.map +1 -0
  84. package/dist/component/convex.config.js +6 -0
  85. package/dist/component/convex.config.js.map +1 -0
  86. package/dist/component/dashboard.d.ts +268 -0
  87. package/dist/component/dashboard.d.ts.map +1 -0
  88. package/dist/component/dashboard.js +622 -0
  89. package/dist/component/dashboard.js.map +1 -0
  90. package/dist/component/deferreds.d.ts +31 -0
  91. package/dist/component/deferreds.d.ts.map +1 -0
  92. package/dist/component/deferreds.js +138 -0
  93. package/dist/component/deferreds.js.map +1 -0
  94. package/dist/component/executions.d.ts +77 -0
  95. package/dist/component/executions.d.ts.map +1 -0
  96. package/dist/component/executions.js +186 -0
  97. package/dist/component/executions.js.map +1 -0
  98. package/dist/component/journalSteps.d.ts +261 -0
  99. package/dist/component/journalSteps.d.ts.map +1 -0
  100. package/dist/component/journalSteps.js +203 -0
  101. package/dist/component/journalSteps.js.map +1 -0
  102. package/dist/component/logs.d.ts +68 -0
  103. package/dist/component/logs.d.ts.map +1 -0
  104. package/dist/component/logs.js +123 -0
  105. package/dist/component/logs.js.map +1 -0
  106. package/dist/component/onComplete.d.ts +31 -0
  107. package/dist/component/onComplete.d.ts.map +1 -0
  108. package/dist/component/onComplete.js +146 -0
  109. package/dist/component/onComplete.js.map +1 -0
  110. package/dist/component/payloads.d.ts +26 -0
  111. package/dist/component/payloads.d.ts.map +1 -0
  112. package/dist/component/payloads.js +57 -0
  113. package/dist/component/payloads.js.map +1 -0
  114. package/dist/component/queries.d.ts +2 -0
  115. package/dist/component/queries.d.ts.map +1 -0
  116. package/dist/component/queries.js +2 -0
  117. package/dist/component/queries.js.map +1 -0
  118. package/dist/component/runner.d.ts +31 -0
  119. package/dist/component/runner.d.ts.map +1 -0
  120. package/dist/component/runner.js +87 -0
  121. package/dist/component/runner.js.map +1 -0
  122. package/dist/component/schema.d.ts +282 -0
  123. package/dist/component/schema.d.ts.map +1 -0
  124. package/dist/component/schema.js +119 -0
  125. package/dist/component/schema.js.map +1 -0
  126. package/dist/component/spans.d.ts +105 -0
  127. package/dist/component/spans.d.ts.map +1 -0
  128. package/dist/component/spans.js +190 -0
  129. package/dist/component/spans.js.map +1 -0
  130. package/dist/component/utils.d.ts +15 -0
  131. package/dist/component/utils.d.ts.map +1 -0
  132. package/dist/component/utils.js +53 -0
  133. package/dist/component/utils.js.map +1 -0
  134. package/dist/shared/constants.d.ts +12 -0
  135. package/dist/shared/constants.d.ts.map +1 -0
  136. package/dist/shared/constants.js +12 -0
  137. package/dist/shared/constants.js.map +1 -0
  138. package/dist/shared/validators.d.ts +69 -0
  139. package/dist/shared/validators.d.ts.map +1 -0
  140. package/dist/shared/validators.js +30 -0
  141. package/dist/shared/validators.js.map +1 -0
  142. package/package.json +74 -0
  143. package/src/client/ConvexCtx.ts +21 -0
  144. package/src/client/ConvexLogger.ts +52 -0
  145. package/src/client/ConvexTracer.ts +75 -0
  146. package/src/client/ConvexWorkflowEngine.test.ts +124 -0
  147. package/src/client/ConvexWorkflowEngine.ts +209 -0
  148. package/src/client/activityWorker.ts +62 -0
  149. package/src/client/boundaries.test.ts +83 -0
  150. package/src/client/boundaries.ts +79 -0
  151. package/src/client/encoded.lifecycle.test.ts +336 -0
  152. package/src/client/encoded.test.ts +153 -0
  153. package/src/client/encoded.ts +484 -0
  154. package/src/client/index.ts +47 -0
  155. package/src/client/registry.ts +35 -0
  156. package/src/client/runner.ts +165 -0
  157. package/src/client/runtime.ts +30 -0
  158. package/src/component/_generated/api.ts +179 -0
  159. package/src/component/_generated/component.ts +1216 -0
  160. package/src/component/_generated/dataModel.ts +60 -0
  161. package/src/component/_generated/server.ts +156 -0
  162. package/src/component/activityCompletions.ts +73 -0
  163. package/src/component/boundaries.ts +55 -0
  164. package/src/component/cleanup.test.ts +219 -0
  165. package/src/component/cleanup.ts +218 -0
  166. package/src/component/clocks.ts +26 -0
  167. package/src/component/config.test.ts +159 -0
  168. package/src/component/config.ts +145 -0
  169. package/src/component/convex.config.ts +7 -0
  170. package/src/component/core.test.ts +829 -0
  171. package/src/component/dashboard.scaling.test.ts +268 -0
  172. package/src/component/dashboard.ts +743 -0
  173. package/src/component/deferreds.ts +162 -0
  174. package/src/component/executions.ts +225 -0
  175. package/src/component/journalSteps.ts +252 -0
  176. package/src/component/logs.ts +152 -0
  177. package/src/component/onComplete.ts +170 -0
  178. package/src/component/payloads.ts +83 -0
  179. package/src/component/queries.ts +8 -0
  180. package/src/component/runner.ts +122 -0
  181. package/src/component/schema.ts +155 -0
  182. package/src/component/setup.test.ts +15 -0
  183. package/src/component/spans.ts +241 -0
  184. package/src/component/utils.test.ts +32 -0
  185. package/src/component/utils.ts +73 -0
  186. package/src/shared/constants.test.ts +14 -0
  187. package/src/shared/constants.ts +15 -0
  188. package/src/shared/validators.ts +98 -0
  189. package/src/test.d.ts +8 -0
  190. package/src/test.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/component/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;IAChC,IAAI,EAAE;QACJ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAClC;IACD,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;IACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,WAAW,GACf,IAAI,CAAC,IAAI,KAAK,SAAS;YACrB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,qBAAqB,CACzB,GAAG,EACH,SAAS,EACT,IAAI,CAAC,IAAI,EACT,kBAAkB,CACnB,CAAC;QAER,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,WAAW,EAAE,OAAO;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;SACrC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;IACrC,IAAI,EAAE;QACJ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC/B;IACD,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;IAChB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAErD,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE;aACpB,KAAK,CAAC,MAAM,CAAC;aACb,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aAC5E,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,cAAe,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClC,MAAM,kBAAkB,GACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAErE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACtC,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;IAChC,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACvC;IACD,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;IAChB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE;aACpB,KAAK,CAAC,MAAM,CAAC;aACb,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC7D,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,cAAe,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClC,MAAM,kBAAkB,GACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAErE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACtC,CAAC;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;IAChC,IAAI,EAAE;QACJ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CACnB;QACD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EACnB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CACpB;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACnC;IACD,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;IACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Workpool onComplete handler for activity attempts.
3
+ *
4
+ * Invariants:
5
+ * - idempotent by workId (activityCompletions table)
6
+ * - stale generation callbacks are ignored
7
+ * - step and span completion are terminal/idempotent
8
+ */
9
+ export declare const handleActivityCompletion: import("convex/server").RegisteredMutation<"public", {
10
+ workId: string;
11
+ result: {
12
+ kind: "success";
13
+ returnValue: any;
14
+ } | {
15
+ kind: "failed";
16
+ error: string;
17
+ } | {
18
+ kind: "canceled";
19
+ };
20
+ context: {
21
+ spanId?: string | undefined;
22
+ executionId: string;
23
+ stepNumber: number;
24
+ generation: number;
25
+ };
26
+ }, Promise<{
27
+ processed: boolean;
28
+ resumed: boolean;
29
+ stale: boolean;
30
+ }>>;
31
+ //# sourceMappingURL=onComplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onComplete.d.ts","sourceRoot":"","sources":["../../src/component/onComplete.ts"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;GAoJnC,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { vResult } from "@convex-dev/workpool";
2
+ import { v } from "convex/values";
3
+ import { mutation } from "./_generated/server.js";
4
+ import { scheduleRunnerFanIn } from "./boundaries.js";
5
+ import { nowTs } from "./utils.js";
6
+ const vCompletionContext = v.object({
7
+ executionId: v.string(),
8
+ stepNumber: v.number(),
9
+ spanId: v.optional(v.string()),
10
+ generation: v.number(),
11
+ });
12
+ /**
13
+ * Workpool onComplete handler for activity attempts.
14
+ *
15
+ * Invariants:
16
+ * - idempotent by workId (activityCompletions table)
17
+ * - stale generation callbacks are ignored
18
+ * - step and span completion are terminal/idempotent
19
+ */
20
+ export const handleActivityCompletion = mutation({
21
+ args: {
22
+ workId: v.string(),
23
+ context: vCompletionContext,
24
+ result: vResult,
25
+ },
26
+ returns: v.object({
27
+ processed: v.boolean(),
28
+ resumed: v.boolean(),
29
+ stale: v.boolean(),
30
+ }),
31
+ handler: async (ctx, args) => {
32
+ const completion = await ctx.db
33
+ .query("activityCompletions")
34
+ .withIndex("by_work_id", (q) => q.eq("workId", args.workId))
35
+ .unique();
36
+ if (completion) {
37
+ return { processed: false, resumed: false, stale: false };
38
+ }
39
+ await ctx.db.insert("activityCompletions", {
40
+ workId: args.workId,
41
+ executionId: args.context.executionId,
42
+ stepNumber: args.context.stepNumber,
43
+ processedAt: nowTs(),
44
+ });
45
+ const execution = await ctx.db
46
+ .query("executions")
47
+ .withIndex("by_execution_id", (q) => q.eq("executionId", args.context.executionId))
48
+ .unique();
49
+ if (!execution) {
50
+ throw new Error(`Execution not found: ${args.context.executionId}`);
51
+ }
52
+ if (execution.generation !== args.context.generation) {
53
+ await ctx.db.insert("logs", {
54
+ executionId: execution.executionId,
55
+ traceId: execution.traceId,
56
+ spanId: args.context.spanId,
57
+ stepNumber: args.context.stepNumber,
58
+ level: "warn",
59
+ source: "engine",
60
+ message: "Ignoring stale activity completion due to generation mismatch",
61
+ data: {
62
+ callbackGeneration: args.context.generation,
63
+ executionGeneration: execution.generation,
64
+ },
65
+ timestamp: nowTs(),
66
+ });
67
+ return { processed: true, resumed: false, stale: true };
68
+ }
69
+ const step = await ctx.db
70
+ .query("journalSteps")
71
+ .withIndex("by_execution_step", (q) => q
72
+ .eq("executionId", args.context.executionId)
73
+ .eq("stepNumber", args.context.stepNumber))
74
+ .unique();
75
+ if (!step) {
76
+ throw new Error(`Journal step not found: ${args.context.executionId}/${args.context.stepNumber}`);
77
+ }
78
+ if (step.state !== "completed" && step.state !== "failed" && step.state !== "canceled") {
79
+ await ctx.db.patch(step._id, {
80
+ state: args.result.kind === "success"
81
+ ? "completed"
82
+ : args.result.kind === "failed"
83
+ ? "failed"
84
+ : "canceled",
85
+ runResult: args.result.kind === "success"
86
+ ? {
87
+ kind: "success",
88
+ valuePreview: args.result.returnValue,
89
+ }
90
+ : args.result.kind === "failed"
91
+ ? {
92
+ kind: "failed",
93
+ error: args.result.error,
94
+ }
95
+ : {
96
+ kind: "canceled",
97
+ },
98
+ completedAt: nowTs(),
99
+ });
100
+ }
101
+ if (args.context.spanId) {
102
+ const span = await ctx.db
103
+ .query("spans")
104
+ .withIndex("by_execution_span", (q) => q
105
+ .eq("executionId", args.context.executionId)
106
+ .eq("spanId", args.context.spanId))
107
+ .unique();
108
+ if (span && span.status !== "ended") {
109
+ await ctx.db.patch(span._id, {
110
+ status: "ended",
111
+ endTime: nowTs(),
112
+ outputPreview: args.result.kind === "success" ? args.result.returnValue : undefined,
113
+ error: args.result.kind === "failed" ? args.result.error : undefined,
114
+ });
115
+ }
116
+ }
117
+ await ctx.db.insert("logs", {
118
+ executionId: args.context.executionId,
119
+ traceId: execution.traceId,
120
+ spanId: args.context.spanId,
121
+ stepNumber: args.context.stepNumber,
122
+ level: args.result.kind === "failed" ? "error" : "info",
123
+ source: "activity",
124
+ message: args.result.kind === "success"
125
+ ? "Activity completed"
126
+ : args.result.kind === "failed"
127
+ ? "Activity failed"
128
+ : "Activity canceled",
129
+ data: args.result,
130
+ timestamp: nowTs(),
131
+ });
132
+ let resumed = false;
133
+ if (execution.runnerHandle &&
134
+ execution.status !== "interrupted" &&
135
+ execution.status !== "failed" &&
136
+ execution.status !== "completed") {
137
+ await scheduleRunnerFanIn(ctx.scheduler, {
138
+ executionId: args.context.executionId,
139
+ generation: execution.generation,
140
+ });
141
+ resumed = true;
142
+ }
143
+ return { processed: true, resumed, stale: false };
144
+ },
145
+ });
146
+ //# sourceMappingURL=onComplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onComplete.js","sourceRoot":"","sources":["../../src/component/onComplete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type MutationCtx, type QueryCtx } from "./_generated/server.js";
2
+ import type { Doc, Id } from "./_generated/dataModel.js";
3
+ type PayloadRef = {
4
+ size: number;
5
+ ref: Id<"payloads"> | undefined;
6
+ preview: unknown;
7
+ };
8
+ type DbReaderCtx = Pick<QueryCtx, "db">;
9
+ export declare function persistBoundedPayload(ctx: MutationCtx, kind: Doc<"payloads">["kind"], value: unknown, inlineLimit?: number): Promise<PayloadRef>;
10
+ export declare function hydratePayload<T>(ctx: DbReaderCtx, ref: Id<"payloads"> | undefined, preview: T): Promise<T>;
11
+ export declare const getPayload: import("convex/server").RegisteredQuery<"public", {
12
+ payloadId: import("convex/values").GenericId<"payloads">;
13
+ }, Promise<{
14
+ _id: import("convex/values").GenericId<"payloads">;
15
+ _creationTime: number;
16
+ kind: "executionPayload" | "stepInput" | "stepOutput" | "deferredExit" | "spanInput" | "spanOutput" | "logData";
17
+ data: any;
18
+ size: number;
19
+ createdAt: number;
20
+ } | null>>;
21
+ export declare const createPayload: import("convex/server").RegisteredMutation<"public", {
22
+ kind: "executionPayload" | "stepInput" | "stepOutput" | "deferredExit" | "spanInput" | "spanOutput" | "logData";
23
+ data: any;
24
+ }, Promise<import("convex/values").GenericId<"payloads">>>;
25
+ export {};
26
+ //# sourceMappingURL=payloads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/component/payloads.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAM1F,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAGzD,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAExC,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAC7B,KAAK,EAAE,OAAO,EACd,WAAW,SAA2B,GACrC,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAED,wBAAsB,cAAc,CAAC,CAAC,EACpC,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,EAC/B,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED,eAAO,MAAM,UAAU;;;;;;;;;UAMrB,CAAC;AAEH,eAAO,MAAM,aAAa;;;0DAcxB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { v } from "convex/values";
2
+ import { mutation, query } from "./_generated/server.js";
3
+ import { MAX_INLINE_PAYLOAD_BYTES, MAX_PREVIEW_STRING_BYTES, } from "../shared/constants.js";
4
+ import { valueSize, toPreview, nowTs } from "./utils.js";
5
+ import { vPayloadKind } from "../shared/validators.js";
6
+ export async function persistBoundedPayload(ctx, kind, value, inlineLimit = MAX_INLINE_PAYLOAD_BYTES) {
7
+ const size = valueSize(value);
8
+ if (size <= inlineLimit) {
9
+ return { size, ref: undefined, preview: value };
10
+ }
11
+ const ref = await ctx.db.insert("payloads", {
12
+ kind,
13
+ data: value,
14
+ size,
15
+ createdAt: nowTs(),
16
+ });
17
+ return {
18
+ size,
19
+ ref,
20
+ preview: toPreview(value, MAX_PREVIEW_STRING_BYTES),
21
+ };
22
+ }
23
+ export async function hydratePayload(ctx, ref, preview) {
24
+ if (!ref) {
25
+ return preview;
26
+ }
27
+ const payload = await ctx.db.get(ref);
28
+ if (!payload || !("data" in payload)) {
29
+ return preview;
30
+ }
31
+ // Boundary note: payload rows store opaque user values. This helper trusts
32
+ // caller context for T and falls back to preview when offloaded data is missing.
33
+ return payload.data;
34
+ }
35
+ export const getPayload = query({
36
+ args: { payloadId: v.id("payloads") },
37
+ returns: v.any(),
38
+ handler: async (ctx, { payloadId }) => {
39
+ return await ctx.db.get(payloadId);
40
+ },
41
+ });
42
+ export const createPayload = mutation({
43
+ args: {
44
+ kind: vPayloadKind,
45
+ data: v.any(),
46
+ },
47
+ returns: v.id("payloads"),
48
+ handler: async (ctx, { kind, data }) => {
49
+ return await ctx.db.insert("payloads", {
50
+ kind,
51
+ data,
52
+ size: valueSize(data),
53
+ createdAt: nowTs(),
54
+ });
55
+ },
56
+ });
57
+ //# sourceMappingURL=payloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../src/component/payloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAmC,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAUvD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAgB,EAChB,IAA6B,EAC7B,KAAc,EACd,WAAW,GAAG,wBAAwB;IAEtC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;QAC1C,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,IAAI;QACJ,SAAS,EAAE,KAAK,EAAE;KACnB,CAAC,CAAC;IACH,OAAO;QACL,IAAI;QACJ,GAAG;QACH,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,wBAAwB,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAgB,EAChB,GAA+B,EAC/B,OAAU;IAEV,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2EAA2E;IAC3E,iFAAiF;IACjF,OAAO,OAAO,CAAC,IAAS,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;IAC9B,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;IAChB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACpC,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;KACd;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACrC,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;YACrC,IAAI;YACJ,IAAI;YACJ,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;YACrB,SAAS,EAAE,KAAK,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { listExecutions, getExecution, listExecutionSteps, listExecutionSpans, listExecutionLogs, executionMetrics, } from "./dashboard.js";
2
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/component/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { listExecutions, getExecution, listExecutionSteps, listExecutionSpans, listExecutionLogs, executionMetrics, } from "./dashboard.js";
2
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/component/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,31 @@
1
+ export declare const run: import("convex/server").RegisteredMutation<"public", {
2
+ executionId: string;
3
+ generation: number;
4
+ }, Promise<{
5
+ enqueued: boolean;
6
+ reason: string;
7
+ } | {
8
+ enqueued: boolean;
9
+ reason?: undefined;
10
+ }>>;
11
+ export declare const enqueueActivity: import("convex/server").RegisteredMutation<"public", {
12
+ spanId?: string | undefined;
13
+ workpoolOptions?: {
14
+ maxParallelism?: number | undefined;
15
+ logLevel?: "DEBUG" | "TRACE" | "INFO" | "REPORT" | "WARN" | "ERROR" | undefined;
16
+ defaultRetryBehavior?: {
17
+ maxAttempts: number;
18
+ initialBackoffMs: number;
19
+ base: number;
20
+ } | undefined;
21
+ retryActionsByDefault?: boolean | undefined;
22
+ } | undefined;
23
+ executionId: string;
24
+ stepNumber: number;
25
+ workflowName: string;
26
+ generation: number;
27
+ attempt: number;
28
+ activityName: string;
29
+ activityWorkerHandle: string;
30
+ }, Promise<import("@convex-dev/workpool").WorkId>>;
31
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/component/runner.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,GAAG;;;;;;;;;GA8Cd,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;kDA+C1B,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { Workpool, vLogLevel, vRetryBehavior } from "@convex-dev/workpool";
2
+ import { componentsGeneric, makeFunctionReference } from "convex/server";
3
+ import { v } from "convex/values";
4
+ import { mutation } from "./_generated/server.js";
5
+ import { deserializeRunnerHandle } from "./boundaries.js";
6
+ /**
7
+ * Fan-in runner trigger for workflow resumption.
8
+ *
9
+ * This mutation centralizes generation/terminal guards and schedules
10
+ * the host-provided runner handle stored on the execution row.
11
+ */
12
+ const components = componentsGeneric();
13
+ const vWorkpoolOptions = v.optional(v.object({
14
+ maxParallelism: v.optional(v.number()),
15
+ logLevel: v.optional(vLogLevel),
16
+ defaultRetryBehavior: v.optional(vRetryBehavior),
17
+ retryActionsByDefault: v.optional(v.boolean()),
18
+ }));
19
+ export const run = mutation({
20
+ args: {
21
+ executionId: v.string(),
22
+ generation: v.number(),
23
+ },
24
+ returns: v.object({
25
+ enqueued: v.boolean(),
26
+ reason: v.optional(v.string()),
27
+ }),
28
+ handler: async (ctx, args) => {
29
+ const execution = await ctx.db
30
+ .query("executions")
31
+ .withIndex("by_execution_id", (q) => q.eq("executionId", args.executionId))
32
+ .unique();
33
+ if (!execution) {
34
+ return { enqueued: false, reason: "execution_not_found" };
35
+ }
36
+ if (args.generation < execution.generation) {
37
+ return { enqueued: false, reason: "stale_generation" };
38
+ }
39
+ if (execution.status === "completed" ||
40
+ execution.status === "failed" ||
41
+ execution.status === "interrupted") {
42
+ return { enqueued: false, reason: "terminal_execution" };
43
+ }
44
+ if (!execution.runnerHandle) {
45
+ return { enqueued: false, reason: "runner_handle_missing" };
46
+ }
47
+ await ctx.scheduler.runAfter(0, deserializeRunnerHandle(execution.runnerHandle), {
48
+ executionId: execution.executionId,
49
+ generation: execution.generation,
50
+ });
51
+ return { enqueued: true };
52
+ },
53
+ });
54
+ export const enqueueActivity = mutation({
55
+ args: {
56
+ executionId: v.string(),
57
+ generation: v.number(),
58
+ workflowName: v.string(),
59
+ activityName: v.string(),
60
+ attempt: v.number(),
61
+ stepNumber: v.number(),
62
+ spanId: v.optional(v.string()),
63
+ activityWorkerHandle: v.string(),
64
+ workpoolOptions: vWorkpoolOptions,
65
+ },
66
+ returns: v.string(),
67
+ handler: async (ctx, args) => {
68
+ const workpool = new Workpool(components.workpool, args.workpoolOptions ?? {});
69
+ const activityHandle = args.activityWorkerHandle;
70
+ return await workpool.enqueueAction(ctx, activityHandle, {
71
+ workflowName: args.workflowName,
72
+ activityName: args.activityName,
73
+ executionId: args.executionId,
74
+ attempt: args.attempt,
75
+ }, {
76
+ retry: false,
77
+ onComplete: makeFunctionReference("onComplete:handleActivityCompletion"),
78
+ context: {
79
+ executionId: args.executionId,
80
+ stepNumber: args.stepNumber,
81
+ spanId: args.spanId,
82
+ generation: args.generation,
83
+ },
84
+ });
85
+ },
86
+ });
87
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/component/runner.ts"],"names":[],"mappings":"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"}