@adonis-agora/durable 0.49.0 → 0.50.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 (324) hide show
  1. package/CHANGELOG.md +261 -0
  2. package/README.md +53 -22
  3. package/dist/assets/spa/assets/index-DupjrK7N.js +16 -0
  4. package/dist/assets/spa/assets/index-DupjrK7N.js.map +1 -0
  5. package/dist/assets/spa/index.html +1 -1
  6. package/dist/commands/durable_worker.d.ts.map +1 -1
  7. package/dist/commands/durable_worker.js +9 -8
  8. package/dist/commands/durable_worker.js.map +1 -1
  9. package/dist/configure.d.ts.map +1 -1
  10. package/dist/configure.js +1 -0
  11. package/dist/configure.js.map +1 -1
  12. package/dist/providers/dashboard_provider.d.ts +2 -0
  13. package/dist/providers/dashboard_provider.d.ts.map +1 -1
  14. package/dist/providers/dashboard_provider.js +50 -6
  15. package/dist/providers/dashboard_provider.js.map +1 -1
  16. package/dist/providers/durable_provider.d.ts.map +1 -1
  17. package/dist/providers/durable_provider.js +143 -34
  18. package/dist/providers/durable_provider.js.map +1 -1
  19. package/dist/src/admission-redis/redis-admission-backend.d.ts.map +1 -1
  20. package/dist/src/admission-redis/redis-admission-backend.js +3 -1
  21. package/dist/src/admission-redis/redis-admission-backend.js.map +1 -1
  22. package/dist/src/ambient-step.d.ts +24 -0
  23. package/dist/src/ambient-step.d.ts.map +1 -0
  24. package/dist/src/ambient-step.js +42 -0
  25. package/dist/src/ambient-step.js.map +1 -0
  26. package/dist/src/base-workflow.d.ts +10 -1
  27. package/dist/src/base-workflow.d.ts.map +1 -1
  28. package/dist/src/base-workflow.js.map +1 -1
  29. package/dist/src/codec-state-store.d.ts +28 -2
  30. package/dist/src/codec-state-store.d.ts.map +1 -1
  31. package/dist/src/codec-state-store.js +61 -3
  32. package/dist/src/codec-state-store.js.map +1 -1
  33. package/dist/src/commands/worker.d.ts +4 -1
  34. package/dist/src/commands/worker.d.ts.map +1 -1
  35. package/dist/src/commands/worker.js +27 -3
  36. package/dist/src/commands/worker.js.map +1 -1
  37. package/dist/src/config_types.d.ts +6 -0
  38. package/dist/src/config_types.d.ts.map +1 -1
  39. package/dist/src/control-plane-redis/redis-control-plane.d.ts.map +1 -1
  40. package/dist/src/control-plane-redis/redis-control-plane.js +22 -6
  41. package/dist/src/control-plane-redis/redis-control-plane.js.map +1 -1
  42. package/dist/src/control-planes/factory.d.ts +6 -0
  43. package/dist/src/control-planes/factory.d.ts.map +1 -1
  44. package/dist/src/control-planes/factory.js +1 -0
  45. package/dist/src/control-planes/factory.js.map +1 -1
  46. package/dist/src/dashboard/gateway-adapter.d.ts +15 -5
  47. package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
  48. package/dist/src/dashboard/gateway-adapter.js +71 -7
  49. package/dist/src/dashboard/gateway-adapter.js.map +1 -1
  50. package/dist/src/dashboard/handlers.d.ts +53 -1
  51. package/dist/src/dashboard/handlers.d.ts.map +1 -1
  52. package/dist/src/dashboard/handlers.js +200 -20
  53. package/dist/src/dashboard/handlers.js.map +1 -1
  54. package/dist/src/dashboard/index.d.ts +2 -2
  55. package/dist/src/dashboard/index.d.ts.map +1 -1
  56. package/dist/src/dashboard/index.js +2 -2
  57. package/dist/src/dashboard/index.js.map +1 -1
  58. package/dist/src/dashboard/openapi.d.ts.map +1 -1
  59. package/dist/src/dashboard/openapi.js +71 -1
  60. package/dist/src/dashboard/openapi.js.map +1 -1
  61. package/dist/src/define_config.d.ts +122 -8
  62. package/dist/src/define_config.d.ts.map +1 -1
  63. package/dist/src/define_config.js.map +1 -1
  64. package/dist/src/diagnostics-bridge.d.ts +16 -3
  65. package/dist/src/diagnostics-bridge.d.ts.map +1 -1
  66. package/dist/src/diagnostics-bridge.js +9 -3
  67. package/dist/src/diagnostics-bridge.js.map +1 -1
  68. package/dist/src/discovery-roots.d.ts +92 -0
  69. package/dist/src/discovery-roots.d.ts.map +1 -0
  70. package/dist/src/discovery-roots.js +150 -0
  71. package/dist/src/discovery-roots.js.map +1 -0
  72. package/dist/src/engine.d.ts +418 -20
  73. package/dist/src/engine.d.ts.map +1 -1
  74. package/dist/src/engine.js +1523 -159
  75. package/dist/src/engine.js.map +1 -1
  76. package/dist/src/entities.d.ts +36 -1
  77. package/dist/src/entities.d.ts.map +1 -1
  78. package/dist/src/entities.js +65 -4
  79. package/dist/src/entities.js.map +1 -1
  80. package/dist/src/errors.d.ts +36 -0
  81. package/dist/src/errors.d.ts.map +1 -1
  82. package/dist/src/errors.js +44 -0
  83. package/dist/src/errors.js.map +1 -1
  84. package/dist/src/event-trigger-bridge.d.ts +8 -0
  85. package/dist/src/event-trigger-bridge.d.ts.map +1 -1
  86. package/dist/src/event-trigger-bridge.js +24 -3
  87. package/dist/src/event-trigger-bridge.js.map +1 -1
  88. package/dist/src/handshake/announced.d.ts +27 -0
  89. package/dist/src/handshake/announced.d.ts.map +1 -1
  90. package/dist/src/handshake/announced.js +62 -0
  91. package/dist/src/handshake/announced.js.map +1 -1
  92. package/dist/src/handshake/directory.d.ts +92 -0
  93. package/dist/src/handshake/directory.d.ts.map +1 -0
  94. package/dist/src/handshake/directory.js +139 -0
  95. package/dist/src/handshake/directory.js.map +1 -0
  96. package/dist/src/hooks/barrel-sources.d.ts +28 -0
  97. package/dist/src/hooks/barrel-sources.d.ts.map +1 -0
  98. package/dist/src/hooks/barrel-sources.js +92 -0
  99. package/dist/src/hooks/barrel-sources.js.map +1 -0
  100. package/dist/src/hooks/steps.d.ts +12 -3
  101. package/dist/src/hooks/steps.d.ts.map +1 -1
  102. package/dist/src/hooks/steps.js +7 -11
  103. package/dist/src/hooks/steps.js.map +1 -1
  104. package/dist/src/hooks/workflows.d.ts +12 -3
  105. package/dist/src/hooks/workflows.d.ts.map +1 -1
  106. package/dist/src/hooks/workflows.js +7 -13
  107. package/dist/src/hooks/workflows.js.map +1 -1
  108. package/dist/src/index.d.ts +12 -3
  109. package/dist/src/index.d.ts.map +1 -1
  110. package/dist/src/index.js +12 -3
  111. package/dist/src/index.js.map +1 -1
  112. package/dist/src/interfaces.d.ts +309 -21
  113. package/dist/src/interfaces.d.ts.map +1 -1
  114. package/dist/src/interfaces.js +10 -0
  115. package/dist/src/interfaces.js.map +1 -1
  116. package/dist/src/metrics.d.ts.map +1 -1
  117. package/dist/src/metrics.js +5 -0
  118. package/dist/src/metrics.js.map +1 -1
  119. package/dist/src/namespaces.d.ts +17 -0
  120. package/dist/src/namespaces.d.ts.map +1 -0
  121. package/dist/src/namespaces.js +24 -0
  122. package/dist/src/namespaces.js.map +1 -0
  123. package/dist/src/otel/durable-metrics.d.ts.map +1 -1
  124. package/dist/src/otel/durable-metrics.js +5 -0
  125. package/dist/src/otel/durable-metrics.js.map +1 -1
  126. package/dist/src/otel/durable-otel.d.ts.map +1 -1
  127. package/dist/src/otel/durable-otel.js +5 -0
  128. package/dist/src/otel/durable-otel.js.map +1 -1
  129. package/dist/src/pollers.d.ts +10 -1
  130. package/dist/src/pollers.d.ts.map +1 -1
  131. package/dist/src/pollers.js +15 -5
  132. package/dist/src/pollers.js.map +1 -1
  133. package/dist/src/protocol.d.ts +12 -0
  134. package/dist/src/protocol.d.ts.map +1 -1
  135. package/dist/src/protocol.js +27 -1
  136. package/dist/src/protocol.js.map +1 -1
  137. package/dist/src/remote-event.d.ts +6 -0
  138. package/dist/src/remote-event.d.ts.map +1 -0
  139. package/dist/src/remote-event.js +19 -0
  140. package/dist/src/remote-event.js.map +1 -0
  141. package/dist/src/remote-workflow-executor.d.ts +34 -12
  142. package/dist/src/remote-workflow-executor.d.ts.map +1 -1
  143. package/dist/src/remote-workflow-executor.js +42 -40
  144. package/dist/src/remote-workflow-executor.js.map +1 -1
  145. package/dist/src/run-detail-summary.d.ts +90 -3
  146. package/dist/src/run-detail-summary.d.ts.map +1 -1
  147. package/dist/src/run-detail-summary.js +360 -2
  148. package/dist/src/run-detail-summary.js.map +1 -1
  149. package/dist/src/run-facets.d.ts +48 -0
  150. package/dist/src/run-facets.d.ts.map +1 -0
  151. package/dist/src/run-facets.js +100 -0
  152. package/dist/src/run-facets.js.map +1 -0
  153. package/dist/src/run-gateway/interface.d.ts +27 -1
  154. package/dist/src/run-gateway/interface.d.ts.map +1 -1
  155. package/dist/src/run-gateway/proxy-run-gateway.d.ts +32 -4
  156. package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
  157. package/dist/src/run-gateway/proxy-run-gateway.js +101 -5
  158. package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
  159. package/dist/src/run-gateway/run-request-responder.d.ts +18 -5
  160. package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
  161. package/dist/src/run-gateway/run-request-responder.js +155 -32
  162. package/dist/src/run-gateway/run-request-responder.js.map +1 -1
  163. package/dist/src/run-gateway/store-run-gateway.d.ts +23 -1
  164. package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -1
  165. package/dist/src/run-gateway/store-run-gateway.js +38 -0
  166. package/dist/src/run-gateway/store-run-gateway.js.map +1 -1
  167. package/dist/src/search-attributes-schema.d.ts +44 -0
  168. package/dist/src/search-attributes-schema.d.ts.map +1 -0
  169. package/dist/src/search-attributes-schema.js +51 -0
  170. package/dist/src/search-attributes-schema.js.map +1 -0
  171. package/dist/src/singleton-admission.d.ts +75 -0
  172. package/dist/src/singleton-admission.d.ts.map +1 -0
  173. package/dist/src/singleton-admission.js +156 -0
  174. package/dist/src/singleton-admission.js.map +1 -0
  175. package/dist/src/singleton-gate.d.ts +23 -8
  176. package/dist/src/singleton-gate.d.ts.map +1 -1
  177. package/dist/src/singleton-gate.js +59 -12
  178. package/dist/src/singleton-gate.js.map +1 -1
  179. package/dist/src/standard-schema.d.ts +83 -0
  180. package/dist/src/standard-schema.d.ts.map +1 -0
  181. package/dist/src/standard-schema.js +31 -0
  182. package/dist/src/standard-schema.js.map +1 -0
  183. package/dist/src/step-discovery.d.ts +21 -11
  184. package/dist/src/step-discovery.d.ts.map +1 -1
  185. package/dist/src/step-discovery.js +86 -45
  186. package/dist/src/step-discovery.js.map +1 -1
  187. package/dist/src/step-ref.d.ts +38 -12
  188. package/dist/src/step-ref.d.ts.map +1 -1
  189. package/dist/src/step-ref.js +5 -13
  190. package/dist/src/step-ref.js.map +1 -1
  191. package/dist/src/stores/factory.d.ts +6 -0
  192. package/dist/src/stores/factory.d.ts.map +1 -1
  193. package/dist/src/stores/factory.js +4 -1
  194. package/dist/src/stores/factory.js.map +1 -1
  195. package/dist/src/stores/lucid-helpers.d.ts +2 -0
  196. package/dist/src/stores/lucid-helpers.d.ts.map +1 -1
  197. package/dist/src/stores/lucid-helpers.js +7 -0
  198. package/dist/src/stores/lucid-helpers.js.map +1 -1
  199. package/dist/src/stores/lucid-mappers.d.ts +25 -0
  200. package/dist/src/stores/lucid-mappers.d.ts.map +1 -1
  201. package/dist/src/stores/lucid-mappers.js +81 -18
  202. package/dist/src/stores/lucid-mappers.js.map +1 -1
  203. package/dist/src/stores/lucid-schema.d.ts +59 -1
  204. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  205. package/dist/src/stores/lucid-schema.js +271 -25
  206. package/dist/src/stores/lucid-schema.js.map +1 -1
  207. package/dist/src/stores/lucid.d.ts +61 -2
  208. package/dist/src/stores/lucid.d.ts.map +1 -1
  209. package/dist/src/stores/lucid.js +346 -41
  210. package/dist/src/stores/lucid.js.map +1 -1
  211. package/dist/src/telescope/dashboard.d.ts.map +1 -1
  212. package/dist/src/telescope/dashboard.js +30 -1
  213. package/dist/src/telescope/dashboard.js.map +1 -1
  214. package/dist/src/telescope/data-providers.d.ts +19 -1
  215. package/dist/src/telescope/data-providers.d.ts.map +1 -1
  216. package/dist/src/telescope/data-providers.js +119 -3
  217. package/dist/src/telescope/data-providers.js.map +1 -1
  218. package/dist/src/telescope/extension.d.ts.map +1 -1
  219. package/dist/src/telescope/extension.js +2 -1
  220. package/dist/src/telescope/extension.js.map +1 -1
  221. package/dist/src/telescope/index.d.ts +1 -1
  222. package/dist/src/telescope/index.d.ts.map +1 -1
  223. package/dist/src/telescope/index.js +1 -1
  224. package/dist/src/telescope/index.js.map +1 -1
  225. package/dist/src/testing/in-memory-state-store.d.ts +44 -15
  226. package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
  227. package/dist/src/testing/in-memory-state-store.js +204 -41
  228. package/dist/src/testing/in-memory-state-store.js.map +1 -1
  229. package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts +16 -0
  230. package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts.map +1 -0
  231. package/dist/src/testing-kit/checkpoint-aggregation-contract.js +228 -0
  232. package/dist/src/testing-kit/checkpoint-aggregation-contract.js.map +1 -0
  233. package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
  234. package/dist/src/testing-kit/state-store-conformance.js +355 -3
  235. package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
  236. package/dist/src/transport-pool.d.ts +15 -1
  237. package/dist/src/transport-pool.d.ts.map +1 -1
  238. package/dist/src/transport-pool.js +50 -4
  239. package/dist/src/transport-pool.js.map +1 -1
  240. package/dist/src/transports/adaptive-concurrency.d.ts +168 -0
  241. package/dist/src/transports/adaptive-concurrency.d.ts.map +1 -0
  242. package/dist/src/transports/adaptive-concurrency.js +353 -0
  243. package/dist/src/transports/adaptive-concurrency.js.map +1 -0
  244. package/dist/src/transports/bullmq/adaptive-concurrency.d.ts +1 -143
  245. package/dist/src/transports/bullmq/adaptive-concurrency.d.ts.map +1 -1
  246. package/dist/src/transports/bullmq/adaptive-concurrency.js +3 -311
  247. package/dist/src/transports/bullmq/adaptive-concurrency.js.map +1 -1
  248. package/dist/src/transports/bullmq/bullmq-transport.d.ts +49 -1
  249. package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
  250. package/dist/src/transports/bullmq/bullmq-transport.js +330 -38
  251. package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
  252. package/dist/src/transports/bullmq/deps.d.ts +18 -2
  253. package/dist/src/transports/bullmq/deps.d.ts.map +1 -1
  254. package/dist/src/transports/bullmq/deps.js +44 -2
  255. package/dist/src/transports/bullmq/deps.js.map +1 -1
  256. package/dist/src/transports/db-helpers.d.ts +39 -0
  257. package/dist/src/transports/db-helpers.d.ts.map +1 -1
  258. package/dist/src/transports/db-helpers.js +73 -0
  259. package/dist/src/transports/db-helpers.js.map +1 -1
  260. package/dist/src/transports/db-remote.d.ts +53 -0
  261. package/dist/src/transports/db-remote.d.ts.map +1 -0
  262. package/dist/src/transports/db-remote.js +147 -0
  263. package/dist/src/transports/db-remote.js.map +1 -0
  264. package/dist/src/transports/db-schema.d.ts +44 -1
  265. package/dist/src/transports/db-schema.d.ts.map +1 -1
  266. package/dist/src/transports/db-schema.js +227 -88
  267. package/dist/src/transports/db-schema.js.map +1 -1
  268. package/dist/src/transports/db.d.ts +189 -6
  269. package/dist/src/transports/db.d.ts.map +1 -1
  270. package/dist/src/transports/db.js +1291 -137
  271. package/dist/src/transports/db.js.map +1 -1
  272. package/dist/src/transports/event-emitter.d.ts +8 -0
  273. package/dist/src/transports/event-emitter.d.ts.map +1 -1
  274. package/dist/src/transports/event-emitter.js +36 -3
  275. package/dist/src/transports/event-emitter.js.map +1 -1
  276. package/dist/src/transports/factory.d.ts +110 -5
  277. package/dist/src/transports/factory.d.ts.map +1 -1
  278. package/dist/src/transports/factory.js +56 -9
  279. package/dist/src/transports/factory.js.map +1 -1
  280. package/dist/src/transports/queue-mock-adapter.d.ts +7 -2
  281. package/dist/src/transports/queue-mock-adapter.d.ts.map +1 -1
  282. package/dist/src/transports/queue-mock-adapter.js +18 -2
  283. package/dist/src/transports/queue-mock-adapter.js.map +1 -1
  284. package/dist/src/transports/queue-remote.d.ts +146 -0
  285. package/dist/src/transports/queue-remote.d.ts.map +1 -0
  286. package/dist/src/transports/queue-remote.js +398 -0
  287. package/dist/src/transports/queue-remote.js.map +1 -0
  288. package/dist/src/transports/queue.d.ts +159 -6
  289. package/dist/src/transports/queue.d.ts.map +1 -1
  290. package/dist/src/transports/queue.js +747 -37
  291. package/dist/src/transports/queue.js.map +1 -1
  292. package/dist/src/transports/task-failure.d.ts +31 -0
  293. package/dist/src/transports/task-failure.d.ts.map +1 -0
  294. package/dist/src/transports/task-failure.js +50 -0
  295. package/dist/src/transports/task-failure.js.map +1 -0
  296. package/dist/src/workflow-als.d.ts +1 -1
  297. package/dist/src/workflow-als.d.ts.map +1 -1
  298. package/dist/src/workflow-ctx.d.ts +10 -0
  299. package/dist/src/workflow-ctx.d.ts.map +1 -1
  300. package/dist/src/workflow-ctx.js +97 -15
  301. package/dist/src/workflow-ctx.js.map +1 -1
  302. package/dist/src/workflow-discovery.d.ts +32 -41
  303. package/dist/src/workflow-discovery.d.ts.map +1 -1
  304. package/dist/src/workflow-discovery.js +65 -88
  305. package/dist/src/workflow-discovery.js.map +1 -1
  306. package/dist/src/workflow-ref.d.ts +24 -0
  307. package/dist/src/workflow-ref.d.ts.map +1 -1
  308. package/dist/src/workflow-ref.js.map +1 -1
  309. package/dist/stubs/config/durable.stub +6 -0
  310. package/dist/stubs/config/durable_dashboard.stub +7 -3
  311. package/dist/stubs/database/migrations/create_durable_tables.stub +2 -1
  312. package/dist/stubs/database/migrations/create_durable_transport_messages.stub +43 -0
  313. package/dist/stubs/database/migrations/create_durable_transport_tables.stub +12 -9
  314. package/dist/stubs/database/migrations/create_durable_transport_worker_keys.stub +1 -1
  315. package/dist/stubs/make/workflow/main.stub +1 -1
  316. package/package.json +6 -4
  317. package/skills/durable-cluster/SKILL.md +80 -11
  318. package/skills/durable-determinism/SKILL.md +11 -5
  319. package/skills/durable-reliability/SKILL.md +77 -37
  320. package/skills/durable-setup/SKILL.md +51 -22
  321. package/skills/durable-transports-stores/SKILL.md +130 -19
  322. package/skills/durable-workflows/SKILL.md +71 -18
  323. package/dist/assets/spa/assets/index-DdB9zxuX.js +0 -16
  324. package/dist/assets/spa/assets/index-DdB9zxuX.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { createHash } from 'node:crypto';
1
2
  /**
2
3
  * The canonical durable table names. They match the cross-adapter snake_case contract the other
3
4
  * Agora/aviary stores use (Drizzle is the reference), so a dashboard or migration can be pointed at
@@ -12,6 +13,126 @@ export const DURABLE_TABLES = {
12
13
  bufferedEvents: 'durable_buffered_events',
13
14
  schedules: 'durable_schedules',
14
15
  };
16
+ /**
17
+ * The table where {@link createDurableTables} records which schema it last applied: one row
18
+ * (`id = 'durable'`) holding a fingerprint of {@link DURABLE_SCHEMA_REVISION} and the options that
19
+ * shape the DDL. When the row matches, a boot reads that row and returns without probing a single
20
+ * table, column or index. A missing or different row runs the full, additive check under a
21
+ * cross-process lock, then rewrites the row. Dropped by {@link dropDurableTables}.
22
+ */
23
+ export const DURABLE_SCHEMA_META_TABLE = 'durable_schema_meta';
24
+ /**
25
+ * The revision of the DDL in this file. Bump it with every change to what {@link createDurableTables}
26
+ * creates or repairs: the new value changes the fingerprint, so every database runs the full check
27
+ * once on its next boot and then goes back to the one-row read. A test pins the SQLite DDL to this
28
+ * number, so a schema change without a bump fails CI.
29
+ */
30
+ export const DURABLE_SCHEMA_REVISION = 3;
31
+ const SCHEMA_META_ROW = 'durable';
32
+ /** Advisory-lock key for the Postgres heal (`pg_advisory_xact_lock`): "dura" "ble" as a bigint. */
33
+ const PG_SCHEMA_LOCK_KEY = 7_310_315_633_779_045;
34
+ /** Seconds a MySQL boot waits for a sibling's heal (`GET_LOCK`) before checking without the lock. */
35
+ const MYSQL_SCHEMA_LOCK_TIMEOUT_S = 60;
36
+ /**
37
+ * The columns that hold free-form JSON payloads. They are `longtext` on MySQL, where `text` stops at
38
+ * 64KB and a longer value is cut off (strict mode rejects the write; non-strict silently truncates
39
+ * it, and the row then fails to parse on read). Postgres and SQLite `text` has no such limit.
40
+ * `notNull` lists the ones declared `NOT NULL`, which a MySQL `MODIFY` must restate.
41
+ */
42
+ export const DURABLE_JSON_COLUMNS = {
43
+ [DURABLE_TABLES.runs]: { columns: ['input', 'output', 'error', 'tags', 'search_attributes'] },
44
+ [DURABLE_TABLES.checkpoints]: {
45
+ columns: ['input', 'output', 'error', 'events', 'heartbeat_progress'],
46
+ },
47
+ [DURABLE_TABLES.bufferedSignals]: { columns: ['payload'] },
48
+ [DURABLE_TABLES.bufferedEvents]: { columns: ['payload'] },
49
+ [DURABLE_TABLES.schedules]: { columns: ['tags', 'spec', 'state'], notNull: ['spec', 'state'] },
50
+ };
51
+ /** A collation name we are willing to put in DDL. */
52
+ function safeCollation(value) {
53
+ return value !== undefined && /^[A-Za-z0-9_]+$/.test(value) ? value : undefined;
54
+ }
55
+ /** The collation to align MySQL tables to: the explicit option, else the Knex connection's `collate`. */
56
+ function configuredCollation(client, options) {
57
+ if (options.collation !== undefined)
58
+ return safeCollation(options.collation);
59
+ const settings = client.getWriteClient().client?.connectionSettings;
60
+ return typeof settings?.collate === 'string' ? safeCollation(settings.collate) : undefined;
61
+ }
62
+ /** What the stored marker must equal for a boot to skip the check. */
63
+ function schemaFingerprint(collation) {
64
+ return createHash('sha256')
65
+ .update(`rev=${DURABLE_SCHEMA_REVISION}|collation=${collation ?? ''}`)
66
+ .digest('hex');
67
+ }
68
+ async function readSchemaFingerprint(client) {
69
+ if (!(await client.schema.hasTable(DURABLE_SCHEMA_META_TABLE)))
70
+ return undefined;
71
+ const q = client
72
+ .query()
73
+ .from(DURABLE_SCHEMA_META_TABLE)
74
+ .select('fingerprint')
75
+ .where('id', SCHEMA_META_ROW);
76
+ // A locking read on MySQL: under REPEATABLE READ a plain read could answer from a snapshot older
77
+ // than the sibling heal that just released the lock.
78
+ if (client.dialect.name === 'mysql')
79
+ q.forUpdate();
80
+ const row = (await q.first());
81
+ return row?.fingerprint ?? undefined;
82
+ }
83
+ async function writeSchemaFingerprint(client, fingerprint) {
84
+ if (!(await client.schema.hasTable(DURABLE_SCHEMA_META_TABLE))) {
85
+ await client.schema.createTable(DURABLE_SCHEMA_META_TABLE, (table) => {
86
+ table.string('id', 32).primary();
87
+ table.string('fingerprint', 64).notNullable();
88
+ table.bigInteger('applied_at').notNullable();
89
+ });
90
+ }
91
+ await client
92
+ .insertQuery()
93
+ .table(DURABLE_SCHEMA_META_TABLE)
94
+ .knexQuery.insert({ id: SCHEMA_META_ROW, fingerprint, applied_at: Date.now() })
95
+ .onConflict('id')
96
+ .merge();
97
+ }
98
+ /**
99
+ * Run `work` holding the cross-process schema lock, so pods booting together don't race the same
100
+ * `CREATE TABLE`: Postgres takes `pg_advisory_xact_lock` in a transaction (the DDL runs in it and the
101
+ * lock is released by the commit); MySQL takes `GET_LOCK` on a connection pinned by a transaction
102
+ * (its DDL commits implicitly, the lock is the session's) and releases it after. SQLite, and any
103
+ * other dialect, runs `work` without a lock.
104
+ */
105
+ async function withSchemaLock(connection, logger, work) {
106
+ switch (connection.dialect.name) {
107
+ case 'postgres':
108
+ await connection.transaction(async (trx) => {
109
+ await trx.rawQuery('select pg_advisory_xact_lock(?)', [PG_SCHEMA_LOCK_KEY]);
110
+ await work(trx);
111
+ });
112
+ return;
113
+ case 'mysql':
114
+ await connection.transaction(async (trx) => {
115
+ const result = (await trx.rawQuery("select get_lock(concat('durable_schema:', database()), ?) as got", [MYSQL_SCHEMA_LOCK_TIMEOUT_S]));
116
+ const got = Number(result[0]?.[0]?.got) === 1;
117
+ if (!got) {
118
+ logger.warn(`@adonis-agora/durable: waited ${MYSQL_SCHEMA_LOCK_TIMEOUT_S}s for the durable schema lock; checking the schema without it.`);
119
+ }
120
+ try {
121
+ await work(trx);
122
+ }
123
+ finally {
124
+ if (got) {
125
+ await trx
126
+ .rawQuery("select release_lock(concat('durable_schema:', database()))")
127
+ .catch(() => undefined);
128
+ }
129
+ }
130
+ });
131
+ return;
132
+ default:
133
+ await work(connection);
134
+ }
135
+ }
15
136
  /**
16
137
  * The warning {@link createDurableTables} emits when it actually `ALTER`ed something.
17
138
  *
@@ -24,7 +145,7 @@ export const DURABLE_TABLES = {
24
145
  */
25
146
  function repairWarning(repairs) {
26
147
  return [
27
- `@adonis-agora/durable: repaired the durable schema in place — added ${repairs.join(', ')}.`,
148
+ `@adonis-agora/durable: repaired the durable schema in place — added or changed ${repairs.join(', ')}.`,
28
149
  'The database was behind the installed library version, so these were added at runtime',
29
150
  'and nothing recorded it in your migration history. To record it (and to stop depending on the',
30
151
  'runtime repair), add a migration that calls `createDurableTables(db, this.db.connectionName)`',
@@ -46,8 +167,7 @@ function repairWarning(repairs) {
46
167
  * catalog `SELECT` can never fail that way, so the repair never touches the database unless the
47
168
  * index is genuinely missing.
48
169
  */
49
- async function indexExists(db, connectionName, indexName) {
50
- const connection = db.connection(connectionName);
170
+ async function indexExists(connection, indexName) {
51
171
  switch (connection.dialect.name) {
52
172
  case 'postgres': {
53
173
  const rows = await connection
@@ -86,8 +206,17 @@ async function indexExists(db, connectionName, indexName) {
86
206
  * Idempotent DDL for the durable tables, expressed via Lucid's schema builder (Knex). Works across
87
207
  * SQLite / Postgres / MySQL. Timestamps and `wake_at` are stored as epoch-ms `bigInteger` columns so
88
208
  * the store never depends on a native date type and replay is exact across engines. JSON payloads
89
- * (`input`/`output`/`error`/`events`/`tags`/`search_attributes`) are stored as `text` and (de)serialized
209
+ * (`input`/`output`/`error`/`events`/`tags`/`search_attributes`) are stored as text and (de)serialized
90
210
  * by the store, so the schema is portable (SQLite has no JSON column type; Postgres/MySQL accept text).
211
+ * On MySQL those columns are `longtext` (see {@link DURABLE_JSON_COLUMNS}); an existing `text` one is
212
+ * widened in place.
213
+ *
214
+ * Boots are cheap once the schema is current: the call reads one row of
215
+ * {@link DURABLE_SCHEMA_META_TABLE} and returns when its fingerprint matches. Otherwise it checks
216
+ * every table, column and index under a cross-process lock (Postgres advisory lock, MySQL
217
+ * `GET_LOCK`), so pods booting together against a fresh database don't race the same `CREATE TABLE`,
218
+ * and records the fingerprint. A schema changed by hand behind the marker is not re-checked; pass
219
+ * `{ force: true }` for that.
91
220
  *
92
221
  * Call this on boot (e.g. from a `StateStore.ensureSchema`) or once at deploy time. For an AdonisJS app
93
222
  * prefer the published migration (`node ace configure @adonis-agora/durable`); this helper is for standalone
@@ -103,10 +232,36 @@ async function indexExists(db, connectionName, indexName) {
103
232
  * repair. Pass `options.logger` to route it; it defaults to `console`.
104
233
  */
105
234
  export async function createDurableTables(db, connectionName, options = {}) {
235
+ const connection = db.connection(connectionName);
236
+ const logger = options.logger ?? console;
237
+ const collation = connection.dialect.name === 'mysql' ? configuredCollation(connection, options) : undefined;
238
+ const expected = schemaFingerprint(collation);
239
+ // The steady-state boot: one catalog probe and one PK read, no per-table checks.
240
+ if (!options.force && (await readSchemaFingerprint(connection)) === expected)
241
+ return;
242
+ await withSchemaLock(connection, logger, async (client) => {
243
+ // A sibling may have healed while this process waited for the lock.
244
+ if (!options.force && (await readSchemaFingerprint(client)) === expected)
245
+ return;
246
+ await healDurableTables(client, collation, logger);
247
+ await writeSchemaFingerprint(client, expected);
248
+ });
249
+ }
250
+ /** The additive check-and-repair behind {@link createDurableTables}, on one client (or transaction). */
251
+ async function healDurableTables(client, collation, logger) {
106
252
  // Knex's schema builder is stateful — operations chained on one instance run together. Take a FRESH
107
- // `db.connection(connectionName).schema` for every hasTable/createTable so each DDL statement executes
108
- // exactly once, all on the store's own connection.
109
- const conn = () => db.connection(connectionName).schema;
253
+ // `client.schema` for every hasTable/createTable so each DDL statement executes exactly once, all on
254
+ // the store's own connection (or the lock-holding transaction).
255
+ const conn = () => client.schema;
256
+ const isMysql = client.dialect.name === 'mysql';
257
+ // MySQL: create new tables with the configured collation (CONVERT below aligns existing ones).
258
+ const charset = collation?.split('_')[0];
259
+ const tableCollation = (table) => {
260
+ if (!isMysql || !collation || !charset)
261
+ return;
262
+ table.charset(charset);
263
+ table.collate(collation);
264
+ };
110
265
  // `<table>.<column-or-index>` for every ALTER actually issued below. Stays empty on the
111
266
  // fresh-install path (a missing table is CREATEd whole and never reaches a `hasColumn` branch),
112
267
  // which is what makes the warning at the end mean "your schema was wrong" instead of "boot happened".
@@ -116,7 +271,7 @@ export async function createDurableTables(db, connectionName, options = {}) {
116
271
  // best-effort path stays — still transaction-unsafe, but only outside the store's declared
117
272
  // targets.
118
273
  const ensureIndex = async (table, columns, indexName) => {
119
- const known = await indexExists(db, connectionName, indexName);
274
+ const known = await indexExists(client, indexName);
120
275
  if (known === true)
121
276
  return;
122
277
  if (known === null) {
@@ -133,22 +288,24 @@ export async function createDurableTables(db, connectionName, options = {}) {
133
288
  };
134
289
  if (!(await conn().hasTable(DURABLE_TABLES.runs))) {
135
290
  await conn().createTable(DURABLE_TABLES.runs, (table) => {
291
+ tableCollation(table);
136
292
  table.string('id').primary();
137
293
  table.string('workflow').notNullable();
138
294
  table.string('workflow_version').notNullable();
139
295
  table.string('status').notNullable();
140
296
  table.string('namespace').notNullable().defaultTo('default');
141
297
  table.string('origin');
142
- table.text('input');
143
- table.text('output');
144
- table.text('error');
298
+ table.text('input', 'longtext');
299
+ table.text('output', 'longtext');
300
+ table.text('error', 'longtext');
145
301
  table.bigInteger('wake_at');
146
302
  table.string('locked_by');
147
303
  table.bigInteger('locked_until');
148
304
  table.integer('recovery_attempts');
149
- table.text('tags');
150
- table.text('search_attributes');
305
+ table.text('tags', 'longtext');
306
+ table.text('search_attributes', 'longtext');
151
307
  table.integer('priority');
308
+ table.text('awaiting_decision_task_id');
152
309
  table.bigInteger('created_at').notNullable();
153
310
  table.bigInteger('updated_at').notNullable();
154
311
  table.index(['status'], 'durable_runs_status_idx');
@@ -187,22 +344,31 @@ export async function createDurableTables(db, connectionName, options = {}) {
187
344
  });
188
345
  repairs.push(`${DURABLE_TABLES.runs}.origin`);
189
346
  }
347
+ if (!(await conn().hasColumn(DURABLE_TABLES.runs, 'awaiting_decision_task_id'))) {
348
+ // Remote-turn decision marker (multi-instance decisions): nullable, so an existing run reads back
349
+ // as "not awaiting a dispatched turn". TEXT: it embeds the run id plus a UUID.
350
+ await conn().alterTable(DURABLE_TABLES.runs, (table) => {
351
+ table.text('awaiting_decision_task_id');
352
+ });
353
+ repairs.push(`${DURABLE_TABLES.runs}.awaiting_decision_task_id`);
354
+ }
190
355
  // Index-only repair: the dashboard's default (unfiltered) listing orders by created_at DESC —
191
356
  // without this a page load over a large table is a full sort.
192
357
  await ensureIndex(DURABLE_TABLES.runs, ['created_at'], 'durable_runs_created_idx');
193
358
  }
194
359
  if (!(await conn().hasTable(DURABLE_TABLES.checkpoints))) {
195
360
  await conn().createTable(DURABLE_TABLES.checkpoints, (table) => {
361
+ tableCollation(table);
196
362
  table.string('run_id').notNullable();
197
363
  table.integer('seq').notNullable();
198
364
  table.string('name').notNullable();
199
365
  table.string('kind').notNullable();
200
366
  table.string('step_id').notNullable();
201
367
  table.string('status').notNullable();
202
- table.text('input');
203
- table.text('output');
204
- table.text('error');
205
- table.text('events');
368
+ table.text('input', 'longtext');
369
+ table.text('output', 'longtext');
370
+ table.text('error', 'longtext');
371
+ table.text('events', 'longtext');
206
372
  table.integer('attempts').notNullable();
207
373
  table.string('worker_group');
208
374
  table.string('queue');
@@ -212,9 +378,11 @@ export async function createDurableTables(db, connectionName, options = {}) {
212
378
  table.bigInteger('started_at').notNullable();
213
379
  table.bigInteger('finished_at').notNullable();
214
380
  table.bigInteger('last_heartbeat_at');
215
- table.text('heartbeat_progress');
381
+ table.text('heartbeat_progress', 'longtext');
216
382
  table.primary(['run_id', 'seq']);
217
383
  table.index(['run_id', 'name'], 'durable_checkpoints_name_idx');
384
+ // The run detail's per-fan reads (`checkpointStats({ group })`, a fan page in seq order).
385
+ table.index(['run_id', 'parallel_group', 'seq'], 'durable_step_checkpoints_group_idx');
218
386
  });
219
387
  }
220
388
  else {
@@ -231,7 +399,7 @@ export async function createDurableTables(db, connectionName, options = {}) {
231
399
  // no liveness claim (absent ≠ silent-since-epoch).
232
400
  await conn().alterTable(DURABLE_TABLES.checkpoints, (table) => {
233
401
  table.bigInteger('last_heartbeat_at');
234
- table.text('heartbeat_progress');
402
+ table.text('heartbeat_progress', 'longtext');
235
403
  });
236
404
  // Both columns land in one ALTER, so both are reported — the operator needs the column list,
237
405
  // not the statement count.
@@ -246,9 +414,11 @@ export async function createDurableTables(db, connectionName, options = {}) {
246
414
  });
247
415
  repairs.push(`${DURABLE_TABLES.checkpoints}.queue`);
248
416
  }
417
+ await ensureIndex(DURABLE_TABLES.checkpoints, ['run_id', 'parallel_group', 'seq'], 'durable_step_checkpoints_group_idx');
249
418
  }
250
419
  if (!(await conn().hasTable(DURABLE_TABLES.attributes))) {
251
420
  await conn().createTable(DURABLE_TABLES.attributes, (table) => {
421
+ tableCollation(table);
252
422
  table.string('run_id').notNullable();
253
423
  table.string('key').notNullable();
254
424
  table.string('str_value');
@@ -260,6 +430,7 @@ export async function createDurableTables(db, connectionName, options = {}) {
260
430
  }
261
431
  if (!(await conn().hasTable(DURABLE_TABLES.signalWaiters))) {
262
432
  await conn().createTable(DURABLE_TABLES.signalWaiters, (table) => {
433
+ tableCollation(table);
263
434
  table.string('token').primary();
264
435
  table.string('run_id').notNullable();
265
436
  table.integer('seq').notNullable();
@@ -283,9 +454,10 @@ export async function createDurableTables(db, connectionName, options = {}) {
283
454
  }
284
455
  if (!(await conn().hasTable(DURABLE_TABLES.bufferedSignals))) {
285
456
  await conn().createTable(DURABLE_TABLES.bufferedSignals, (table) => {
457
+ tableCollation(table);
286
458
  table.increments('id').primary();
287
459
  table.string('token').notNullable();
288
- table.text('payload');
460
+ table.text('payload', 'longtext');
289
461
  table.index(['token'], 'durable_buffered_signals_token_idx');
290
462
  });
291
463
  }
@@ -295,9 +467,10 @@ export async function createDurableTables(db, connectionName, options = {}) {
295
467
  // an exact row. `published_at` is epoch-ms (for oldest-first scan + optional TTL pruning).
296
468
  if (!(await conn().hasTable(DURABLE_TABLES.bufferedEvents))) {
297
469
  await conn().createTable(DURABLE_TABLES.bufferedEvents, (table) => {
470
+ tableCollation(table);
298
471
  table.string('id').primary();
299
472
  table.string('name').notNullable();
300
- table.text('payload');
473
+ table.text('payload', 'longtext');
301
474
  table.bigInteger('published_at').notNullable();
302
475
  table.index(['name', 'published_at'], 'durable_buffered_events_name_idx');
303
476
  });
@@ -307,14 +480,15 @@ export async function createDurableTables(db, connectionName, options = {}) {
307
480
  // again), exact, so `updateSchedule`'s compare-and-set on it is reliable on every dialect.
308
481
  if (!(await conn().hasTable(DURABLE_TABLES.schedules))) {
309
482
  await conn().createTable(DURABLE_TABLES.schedules, (table) => {
483
+ tableCollation(table);
310
484
  table.string('id').primary();
311
485
  table.string('namespace').notNullable().defaultTo('default');
312
486
  table.string('workflow').notNullable();
313
487
  table.boolean('paused').notNullable().defaultTo(false);
314
488
  table.bigInteger('next_fire_at');
315
- table.text('tags');
316
- table.text('spec').notNullable();
317
- table.text('state').notNullable();
489
+ table.text('tags', 'longtext');
490
+ table.text('spec', 'longtext').notNullable();
491
+ table.text('state', 'longtext').notNullable();
318
492
  table.bigInteger('created_at').notNullable();
319
493
  table.bigInteger('updated_at').notNullable();
320
494
  // The worker tick's "due by T" scan: `paused = false AND next_fire_at <= T`.
@@ -324,13 +498,85 @@ export async function createDurableTables(db, connectionName, options = {}) {
324
498
  // ONE warning for the whole call, listing every column added, or none at all. Not one per ALTER:
325
499
  // an operator needs to know their schema was behind and by what, and a burst of lines is easier to
326
500
  // lose than a single one.
501
+ if (isMysql) {
502
+ repairs.push(...(await widenMysqlJsonColumns(client)));
503
+ if (collation && charset) {
504
+ repairs.push(...(await alignMysqlCollation(client, charset, collation, logger)));
505
+ }
506
+ }
327
507
  if (repairs.length > 0) {
328
- (options.logger ?? console).warn(repairWarning(repairs));
508
+ logger.warn(repairWarning(repairs));
509
+ }
510
+ }
511
+ /**
512
+ * MySQL: `MODIFY` every JSON column that is not `longtext` yet (a table created before they were
513
+ * `longtext` holds them as `text`, capped at 64KB). One `ALTER` per table with every column it needs,
514
+ * since MySQL rebuilds the table for each; a table already widened is not touched. Returns the
515
+ * columns it changed.
516
+ */
517
+ async function widenMysqlJsonColumns(client) {
518
+ return widenMysqlLongtextColumns(client, DURABLE_JSON_COLUMNS);
519
+ }
520
+ /**
521
+ * MySQL: `MODIFY` to `longtext` every column of `spec` that exists and isn't `longtext` yet, one
522
+ * `ALTER` per table. Shared by the store schema and the db transport's (`createDurableTransportTables`).
523
+ * Returns the columns it changed.
524
+ */
525
+ export async function widenMysqlLongtextColumns(client, spec) {
526
+ const tables = Object.keys(spec);
527
+ const rows = (await client
528
+ .query()
529
+ .from('information_schema.columns')
530
+ .select('table_name as t', 'column_name as c', 'data_type as d')
531
+ .whereRaw('table_schema = database()')
532
+ .whereIn('table_name', tables));
533
+ const widened = [];
534
+ for (const [table, columns] of Object.entries(spec)) {
535
+ const narrow = columns.columns.filter((column) => {
536
+ const row = rows.find((r) => r.t === table && r.c === column);
537
+ return row !== undefined && row.d.toLowerCase() !== 'longtext';
538
+ });
539
+ if (narrow.length === 0)
540
+ continue;
541
+ const modify = narrow
542
+ .map((column) => `modify \`${column}\` longtext ${columns.notNull?.includes(column) ? 'not null' : 'null'}`)
543
+ .join(', ');
544
+ await client.rawQuery(`alter table \`${table}\` ${modify}`);
545
+ widened.push(...narrow.map((column) => `${table}.${column} (longtext)`));
546
+ }
547
+ return widened;
548
+ }
549
+ /**
550
+ * MySQL: `CONVERT` each durable table whose collation is not `collation` (tables created by an older
551
+ * version, or before the option was set, carry the server default). A failed `CONVERT` is warned and
552
+ * left for the next forced check rather than failing the boot. Returns the tables it converted.
553
+ */
554
+ async function alignMysqlCollation(client, charset, collation, logger) {
555
+ const tables = [...Object.values(DURABLE_TABLES), DURABLE_SCHEMA_META_TABLE];
556
+ const rows = (await client
557
+ .query()
558
+ .from('information_schema.tables')
559
+ .select('table_name as t', 'table_collation as c')
560
+ .whereRaw('table_schema = database()')
561
+ .whereIn('table_name', tables));
562
+ const converted = [];
563
+ for (const row of rows) {
564
+ if (row.c == null || row.c === collation)
565
+ continue;
566
+ try {
567
+ await client.rawQuery(`alter table \`${row.t}\` convert to character set ${charset} collate ${collation}`);
568
+ converted.push(`${row.t} (collation ${collation})`);
569
+ }
570
+ catch (err) {
571
+ logger.warn(`@adonis-agora/durable: could not convert \`${row.t}\` to collation ${collation} (left as-is): ${err instanceof Error ? err.message : String(err)}`);
572
+ }
329
573
  }
574
+ return converted;
330
575
  }
331
576
  /** Drop every durable table (reverse FK order). Used by tests and migration `down`. */
332
577
  export async function dropDurableTables(db, connectionName) {
333
578
  const conn = () => db.connection(connectionName).schema;
579
+ await conn().dropTableIfExists(DURABLE_SCHEMA_META_TABLE);
334
580
  await conn().dropTableIfExists(DURABLE_TABLES.schedules);
335
581
  await conn().dropTableIfExists(DURABLE_TABLES.bufferedEvents);
336
582
  await conn().dropTableIfExists(DURABLE_TABLES.bufferedSignals);
@@ -1 +1 @@
1
- {"version":3,"file":"lucid-schema.js","sourceRoot":"","sources":["../../../src/stores/lucid-schema.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,0BAA0B;IACvC,UAAU,EAAE,wBAAwB;IACpC,aAAa,EAAE,wBAAwB;IACvC,eAAe,EAAE,0BAA0B;IAC3C,cAAc,EAAE,yBAAyB;IACzC,SAAS,EAAE,mBAAmB;CACtB,CAAC;AAgBX;;;;;;;;;GASG;AACH,SAAS,aAAa,CAAC,OAAiB;IACtC,OAAO;QACL,uEAAuE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC5F,uFAAuF;QACvF,+FAA+F;QAC/F,+FAA+F;QAC/F,4EAA4E;QAC5E,6FAA6F;QAC7F,yDAAyD;KAC1D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,WAAW,CACxB,EAAY,EACZ,cAAkC,EAClC,SAAiB;IAEjB,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACjD,QAAQ,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,UAAU;iBAC1B,KAAK,EAAE;iBACP,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC;iBAC7B,WAAW,CAAC,+BAA+B,CAAC;iBAC5C,KAAK,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,SAAS,CAAC;QACf,KAAK,gBAAgB,CAAC;QACtB,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,UAAU;iBAC1B,KAAK,EAAE;iBACP,IAAI,CAAC,eAAe,CAAC;iBACrB,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;iBACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;iBAC3B,KAAK,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,MAAM,UAAU;iBAC1B,KAAK,EAAE;iBACP,IAAI,CAAC,+BAA+B,CAAC;iBACrC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC;iBAC9B,WAAW,CAAC,2BAA2B,CAAC;iBACxC,KAAK,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAY,EACZ,cAAuB,EACvB,OAAO,GAA+B,EAAE;IAExC,oGAAoG;IACpG,uGAAuG;IACvG,mDAAmD;IACnD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IAExD,wFAAwF;IACxF,gGAAgG;IAChG,sGAAsG;IACtG,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,0FAA0F;IAC1F,8FAA8F;IAC9F,2FAA2F;IAC3F,WAAW;IACX,MAAM,WAAW,GAAG,KAAK,EACvB,KAAa,EACb,OAAiB,EACjB,SAAiB,EACF,EAAE;QACjB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAC3B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YACvF,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;YACzE,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;YACtD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7D,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC5B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1B,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACjC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1B,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,CAAC;YACnD,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,sBAAsB,CAAC,CAAC;YAC3D,4FAA4F;YAC5F,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,4BAA4B,CAAC,CAAC;YACjF,0FAA0F;YAC1F,+CAA+C;YAC/C,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,gGAAgG;QAChG,kGAAkG;QAClG,iGAAiG;QACjG,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAC/D,sGAAsG;YACtG,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrD,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,WAAW,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;YAChE,gGAAgG;YAChG,yEAAyE;YACzE,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC7D,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,4BAA4B,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC7D,4FAA4F;YAC5F,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,8FAA8F;QAC9F,8DAA8D;QAC9D,MAAM,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7D,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC5B,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC/B,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAChC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9C,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACjC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YAC5E,8FAA8F;YAC9F,mFAAmF;YACnF,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5D,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,iBAAiB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;YAC/E,4FAA4F;YAC5F,mDAAmD;YACnD,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5D,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,6FAA6F;YAC7F,2BAA2B;YAC3B,OAAO,CAAC,IAAI,CACV,GAAG,cAAc,CAAC,WAAW,oBAAoB,EACjD,GAAG,cAAc,CAAC,WAAW,qBAAqB,CACnD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YACnE,6FAA6F;YAC7F,+FAA+F;YAC/F,2BAA2B;YAC3B,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5D,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,QAAQ,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5D,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACjC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,gCAAgC,CAAC,CAAC;YACpE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,gCAAgC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/D,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;YAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC/B,qFAAqF;YACrF,oFAAoF;YACpF,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YAC9E,0FAA0F;YAC1F,8FAA8F;YAC9F,gBAAgB;YAChB,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC9D,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,aAAa,iBAAiB,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,gCAAgC,CAAC,CAAC;IAChG,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YACjE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,oCAAoC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kGAAkG;IAClG,kGAAkG;IAClG,oGAAoG;IACpG,2FAA2F;IAC3F,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;YAChE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iGAAiG;IACjG,gGAAgG;IAChG,2FAA2F;IAC3F,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3D,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7D,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvD,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,6EAA6E;YAC7E,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iGAAiG;IACjG,mGAAmG;IACnG,0BAA0B;IAC1B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAY,EAAE,cAAuB;IAC3E,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC9D,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"lucid-schema.js","sourceRoot":"","sources":["../../../src/stores/lucid-schema.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,25 @@
1
1
  import type { Database } from '@adonisjs/lucid/database';
2
- import type { ChildWait, RunFacetQuery, RunQuery, RunStatus, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, ScheduleQuery, ScheduleRecord, SignalWaiter, StateStore, StepCheckpoint, WorkflowRun } from '../interfaces.js';
2
+ import type { CheckpointQuery, CheckpointStat, ChildWait, RunFacetQuery, RunFacetRow, RunQuery, RunStatus, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, ScheduleQuery, ScheduleRecord, SignalWaiter, StateStore, StepCheckpoint, WorkflowRun } from '../interfaces.js';
3
3
  export interface LucidStateStoreOptions {
4
4
  /**
5
5
  * The Lucid connection name to use. Defaults to the connection's primary (the `Database` default).
6
6
  * Pass this if the durable tables live on a dedicated connection.
7
7
  */
8
8
  connectionName?: string;
9
+ /**
10
+ * Confine the store's RUN reads to one namespace (`getRun`, `listRuns`, `countRuns`, the facet
11
+ * queries and the recovery/dispatch/timer scans): a tenant-boundary view. Writes stay unscoped.
12
+ * Omit (or `{ namespace: undefined }`) for the operator view that sees every namespace. The
13
+ * `scopeReads` config option builds this from `namespace` via {@link LucidStateStore.withScope}.
14
+ */
15
+ scope?: {
16
+ namespace?: string | undefined;
17
+ } | undefined;
18
+ /**
19
+ * MySQL/MariaDB: the collation `ensureSchema` creates and aligns the durable tables to (see
20
+ * `CreateDurableTablesOptions.collation`). Ignored on other dialects.
21
+ */
22
+ collation?: string | undefined;
9
23
  }
10
24
  /**
11
25
  * A production-grade, persistent `StateStore` backed by AdonisJS **Lucid** (Knex). Runs, checkpoints,
@@ -21,7 +35,19 @@ export interface LucidStateStoreOptions {
21
35
  export declare class LucidStateStore implements StateStore {
22
36
  private readonly db;
23
37
  private readonly connectionName;
38
+ private readonly options;
39
+ /** The namespace run reads are fenced to, or undefined for the operator view. */
40
+ private readonly scopeNamespace;
24
41
  constructor(db: Database, options?: LucidStateStoreOptions);
42
+ /**
43
+ * A store over the same `Database` whose run reads are confined to `scope.namespace` (see
44
+ * {@link LucidStateStoreOptions.scope}). `{ namespace: undefined }` is the unscoped operator view.
45
+ */
46
+ withScope(scope: {
47
+ namespace?: string | undefined;
48
+ }): LucidStateStore;
49
+ /** Fence a runs-table read to the store's scope (no-op for the operator view). */
50
+ private fenced;
25
51
  /** The base query client (or a named connection's), used unless an explicit tx client is passed. */
26
52
  private client;
27
53
  /** Idempotently provision the durable tables (called on boot when `autoSchema` is on). */
@@ -29,11 +55,24 @@ export declare class LucidStateStore implements StateStore {
29
55
  createRun(run: WorkflowRun): Promise<void>;
30
56
  updateRun(runId: string, patch: Partial<WorkflowRun>): Promise<void>;
31
57
  updateRunIf(runId: string, expectedStatuses: RunStatus[], patch: Partial<WorkflowRun>): Promise<boolean>;
58
+ /** Whether the runs table has `awaiting_decision_task_id`, probed once per store and cached. */
59
+ private decisionMarkerColumn;
60
+ private hasDecisionMarkerColumn;
61
+ /**
62
+ * The row patch for `patch`, plus — when it settles the run terminally — the run's tags without the
63
+ * singleton admission marker, so a terminal settle releases the slot. The current tags are read
64
+ * under a row lock (Postgres/MySQL) so an admission committing concurrently can't be overwritten
65
+ * with a stale tag list.
66
+ */
67
+ private releaseSlot;
68
+ tryAdmitSingleton(runId: string, tag: string, workflow: string, limit: number, retryWakeAt?: number): Promise<boolean>;
32
69
  getRun(runId: string): Promise<WorkflowRun | null>;
33
70
  deleteRun(runId: string): Promise<void>;
71
+ deleteRuns(runIds: string[]): Promise<void>;
34
72
  getCheckpoint(runId: string, seq: number): Promise<StepCheckpoint | null>;
35
73
  saveCheckpoint(checkpoint: StepCheckpoint): Promise<void>;
36
74
  saveCheckpointIfPending(checkpoint: StepCheckpoint): Promise<boolean>;
75
+ saveCheckpointsIfPending(checkpoints: StepCheckpoint[]): Promise<boolean[]>;
37
76
  /** Persist the latest worker heartbeat on the step's checkpoint row (see the interface doc).
38
77
  * A targeted two-column UPDATE — never an upsert: a beat racing the checkpoint's own insert (or
39
78
  * outliving a deleted run) matches zero rows and is a silent no-op, by design. */
@@ -46,7 +85,7 @@ export declare class LucidStateStore implements StateStore {
46
85
  */
47
86
  private upsertCheckpoint;
48
87
  listIncompleteRuns(namespace?: string): Promise<WorkflowRun[]>;
49
- listOrphanedRuns(nowMs: number, limit: number, namespace?: string): Promise<WorkflowRun[]>;
88
+ listOrphanedRuns(nowMs: number, limit: number, namespace?: string, owner?: string): Promise<WorkflowRun[]>;
50
89
  listPendingRuns(limit: number, namespace?: string): Promise<WorkflowRun[]>;
51
90
  listDueTimers(nowMs: number, namespace?: string, limit?: number): Promise<WorkflowRun[]>;
52
91
  tryLockRun(runId: string, owner: string, leaseUntilMs: number, nowMs: number): Promise<boolean>;
@@ -61,6 +100,7 @@ export declare class LucidStateStore implements StateStore {
61
100
  compactCheckpoints(runId: string, fromSeq: number, toSeq: number, into: StepCheckpoint): Promise<void>;
62
101
  removeSignalWaiter(waiter: SignalWaiter): Promise<void>;
63
102
  bufferSignal(token: string, payload: unknown): Promise<void>;
103
+ listBufferedSignalTokens(prefix: string, limit: number): Promise<string[]>;
64
104
  takeBufferedSignal(token: string): Promise<{
65
105
  payload: unknown;
66
106
  } | null>;
@@ -75,11 +115,14 @@ export declare class LucidStateStore implements StateStore {
75
115
  payload: unknown;
76
116
  publishedAt: number;
77
117
  }>>;
118
+ pruneBufferedEvents(publishedBefore: number, limit: number): Promise<number>;
78
119
  removeBufferedEvent(id: string): Promise<boolean>;
79
120
  transaction<T>(work: (tx: {
80
121
  raw: unknown;
81
122
  saveCheckpoint: (cp: StepCheckpoint) => Promise<void>;
82
123
  }) => Promise<T>): Promise<T>;
124
+ /** One `GROUP BY status, origin` over the same predicates {@link listRuns} applies. */
125
+ runFacets(query: RunFacetQuery): Promise<RunFacetRow[]>;
83
126
  /** One `COUNT(*)` over the same predicates {@link listRuns} applies. */
84
127
  countRuns(query: Omit<RunQuery, 'page' | 'size'>): Promise<number>;
85
128
  saveSchedule(record: ScheduleRecord): Promise<void>;
@@ -117,6 +160,22 @@ export declare class LucidStateStore implements StateStore {
117
160
  getLatestCheckpointByName(runId: string, name: string): Promise<StepCheckpoint | undefined>;
118
161
  listCheckpointsByNamePrefix(runId: string, prefixes: string[]): Promise<StepCheckpoint[]>;
119
162
  countCheckpoints(runId: string, fromSeq: number, toSeq: number, statuses: StepCheckpoint['status'][]): Promise<number>;
163
+ /**
164
+ * One `GROUP BY parallel_group, status, <name kind>` over the run's checkpoints — the buckets a run
165
+ * detail summarizes a fan from, without loading its rows. The name-kind `CASE` is the SQL of
166
+ * `checkpointNameKind` (case-sensitive prefix tests, like `startsWith`), and
167
+ * `min(coalesce(enqueued_at, started_at))` reads `enqueuedAt` the way {@link listCheckpoints} does.
168
+ */
169
+ checkpointStats(runId: string, opts?: {
170
+ group?: string | undefined;
171
+ }): Promise<CheckpointStat[]>;
172
+ /**
173
+ * The run's checkpoints matching `query`, in `seq` order and paged in the database — a fan's
174
+ * failures or one page of its members without the rest of the run. An excluded group keeps the
175
+ * ungrouped rows (`parallel_group is null or not in (...)`); an empty `statuses`/`namePrefixes`
176
+ * matches nothing, so it returns before querying.
177
+ */
178
+ queryCheckpoints(runId: string, query: CheckpointQuery): Promise<StepCheckpoint[]>;
120
179
  /** Rewrite a run's normalized attribute rows: delete the old set, insert the current one. Mirrors
121
180
  * the in-memory store's reindex so the side-table always reflects the run's live searchAttributes. */
122
181
  private reindexAttributes;