@adonis-agora/durable 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 (316) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -0
  3. package/dist/assets/dashboard.html +446 -0
  4. package/dist/commands/main.d.ts +15 -0
  5. package/dist/commands/main.d.ts.map +1 -0
  6. package/dist/commands/main.js +15 -0
  7. package/dist/commands/main.js.map +1 -0
  8. package/dist/commands/retry.d.ts +16 -0
  9. package/dist/commands/retry.d.ts.map +1 -0
  10. package/dist/commands/retry.js +34 -0
  11. package/dist/commands/retry.js.map +1 -0
  12. package/dist/commands/runs.d.ts +17 -0
  13. package/dist/commands/runs.d.ts.map +1 -0
  14. package/dist/commands/runs.js +40 -0
  15. package/dist/commands/runs.js.map +1 -0
  16. package/dist/commands/work.d.ts +18 -0
  17. package/dist/commands/work.d.ts.map +1 -0
  18. package/dist/commands/work.js +58 -0
  19. package/dist/commands/work.js.map +1 -0
  20. package/dist/configure.d.ts +15 -0
  21. package/dist/configure.d.ts.map +1 -0
  22. package/dist/configure.js +26 -0
  23. package/dist/configure.js.map +1 -0
  24. package/dist/providers/dashboard_provider.d.ts +27 -0
  25. package/dist/providers/dashboard_provider.d.ts.map +1 -0
  26. package/dist/providers/dashboard_provider.js +94 -0
  27. package/dist/providers/dashboard_provider.js.map +1 -0
  28. package/dist/providers/durable_provider.d.ts +36 -0
  29. package/dist/providers/durable_provider.d.ts.map +1 -0
  30. package/dist/providers/durable_provider.js +113 -0
  31. package/dist/providers/durable_provider.js.map +1 -0
  32. package/dist/src/admission-redis/index.d.ts +2 -0
  33. package/dist/src/admission-redis/index.d.ts.map +1 -0
  34. package/dist/src/admission-redis/index.js +2 -0
  35. package/dist/src/admission-redis/index.js.map +1 -0
  36. package/dist/src/admission-redis/redis-admission-backend.d.ts +83 -0
  37. package/dist/src/admission-redis/redis-admission-backend.d.ts.map +1 -0
  38. package/dist/src/admission-redis/redis-admission-backend.js +200 -0
  39. package/dist/src/admission-redis/redis-admission-backend.js.map +1 -0
  40. package/dist/src/admission.d.ts +49 -0
  41. package/dist/src/admission.d.ts.map +1 -0
  42. package/dist/src/admission.js +30 -0
  43. package/dist/src/admission.js.map +1 -0
  44. package/dist/src/backoff.d.ts +5 -0
  45. package/dist/src/backoff.d.ts.map +1 -0
  46. package/dist/src/backoff.js +11 -0
  47. package/dist/src/backoff.js.map +1 -0
  48. package/dist/src/checkpoints.d.ts +42 -0
  49. package/dist/src/checkpoints.d.ts.map +1 -0
  50. package/dist/src/checkpoints.js +57 -0
  51. package/dist/src/checkpoints.js.map +1 -0
  52. package/dist/src/codec-state-store.d.ts +60 -0
  53. package/dist/src/codec-state-store.d.ts.map +1 -0
  54. package/dist/src/codec-state-store.js +129 -0
  55. package/dist/src/codec-state-store.js.map +1 -0
  56. package/dist/src/commands/index.d.ts +3 -0
  57. package/dist/src/commands/index.d.ts.map +1 -0
  58. package/dist/src/commands/index.js +3 -0
  59. package/dist/src/commands/index.js.map +1 -0
  60. package/dist/src/commands/runs.d.ts +24 -0
  61. package/dist/src/commands/runs.d.ts.map +1 -0
  62. package/dist/src/commands/runs.js +39 -0
  63. package/dist/src/commands/runs.js.map +1 -0
  64. package/dist/src/commands/worker.d.ts +61 -0
  65. package/dist/src/commands/worker.d.ts.map +1 -0
  66. package/dist/src/commands/worker.js +74 -0
  67. package/dist/src/commands/worker.js.map +1 -0
  68. package/dist/src/completion.d.ts +15 -0
  69. package/dist/src/completion.d.ts.map +1 -0
  70. package/dist/src/completion.js +10 -0
  71. package/dist/src/completion.js.map +1 -0
  72. package/dist/src/dashboard/define_config.d.ts +48 -0
  73. package/dist/src/dashboard/define_config.d.ts.map +1 -0
  74. package/dist/src/dashboard/define_config.js +57 -0
  75. package/dist/src/dashboard/define_config.js.map +1 -0
  76. package/dist/src/dashboard/handlers.d.ts +47 -0
  77. package/dist/src/dashboard/handlers.d.ts.map +1 -0
  78. package/dist/src/dashboard/handlers.js +163 -0
  79. package/dist/src/dashboard/handlers.js.map +1 -0
  80. package/dist/src/dashboard/html.d.ts +7 -0
  81. package/dist/src/dashboard/html.d.ts.map +1 -0
  82. package/dist/src/dashboard/html.js +24 -0
  83. package/dist/src/dashboard/html.js.map +1 -0
  84. package/dist/src/dashboard/index.d.ts +8 -0
  85. package/dist/src/dashboard/index.d.ts.map +1 -0
  86. package/dist/src/dashboard/index.js +6 -0
  87. package/dist/src/dashboard/index.js.map +1 -0
  88. package/dist/src/define_config.d.ts +72 -0
  89. package/dist/src/define_config.d.ts.map +1 -0
  90. package/dist/src/define_config.js +8 -0
  91. package/dist/src/define_config.js.map +1 -0
  92. package/dist/src/diagnostics-bridge.d.ts +22 -0
  93. package/dist/src/diagnostics-bridge.d.ts.map +1 -0
  94. package/dist/src/diagnostics-bridge.js +25 -0
  95. package/dist/src/diagnostics-bridge.js.map +1 -0
  96. package/dist/src/duration.d.ts +6 -0
  97. package/dist/src/duration.d.ts.map +1 -0
  98. package/dist/src/duration.js +39 -0
  99. package/dist/src/duration.js.map +1 -0
  100. package/dist/src/engine.d.ts +583 -0
  101. package/dist/src/engine.d.ts.map +1 -0
  102. package/dist/src/engine.js +1894 -0
  103. package/dist/src/engine.js.map +1 -0
  104. package/dist/src/entities.d.ts +44 -0
  105. package/dist/src/entities.d.ts.map +1 -0
  106. package/dist/src/entities.js +64 -0
  107. package/dist/src/entities.js.map +1 -0
  108. package/dist/src/errors.d.ts +68 -0
  109. package/dist/src/errors.d.ts.map +1 -0
  110. package/dist/src/errors.js +102 -0
  111. package/dist/src/errors.js.map +1 -0
  112. package/dist/src/event-accumulators.d.ts +39 -0
  113. package/dist/src/event-accumulators.d.ts.map +1 -0
  114. package/dist/src/event-accumulators.js +70 -0
  115. package/dist/src/event-accumulators.js.map +1 -0
  116. package/dist/src/events.d.ts +9 -0
  117. package/dist/src/events.d.ts.map +1 -0
  118. package/dist/src/events.js +35 -0
  119. package/dist/src/events.js.map +1 -0
  120. package/dist/src/index.d.ts +36 -0
  121. package/dist/src/index.d.ts.map +1 -0
  122. package/dist/src/index.js +37 -0
  123. package/dist/src/index.js.map +1 -0
  124. package/dist/src/interfaces.d.ts +909 -0
  125. package/dist/src/interfaces.d.ts.map +1 -0
  126. package/dist/src/interfaces.js +2 -0
  127. package/dist/src/interfaces.js.map +1 -0
  128. package/dist/src/metrics.d.ts +44 -0
  129. package/dist/src/metrics.d.ts.map +1 -0
  130. package/dist/src/metrics.js +78 -0
  131. package/dist/src/metrics.js.map +1 -0
  132. package/dist/src/otel/durable-metrics.d.ts +42 -0
  133. package/dist/src/otel/durable-metrics.d.ts.map +1 -0
  134. package/dist/src/otel/durable-metrics.js +75 -0
  135. package/dist/src/otel/durable-metrics.js.map +1 -0
  136. package/dist/src/otel/durable-otel.d.ts +20 -0
  137. package/dist/src/otel/durable-otel.d.ts.map +1 -0
  138. package/dist/src/otel/durable-otel.js +74 -0
  139. package/dist/src/otel/durable-otel.js.map +1 -0
  140. package/dist/src/otel/index.d.ts +4 -0
  141. package/dist/src/otel/index.d.ts.map +1 -0
  142. package/dist/src/otel/index.js +4 -0
  143. package/dist/src/otel/index.js.map +1 -0
  144. package/dist/src/otel/traceparent.d.ts +17 -0
  145. package/dist/src/otel/traceparent.d.ts.map +1 -0
  146. package/dist/src/otel/traceparent.js +21 -0
  147. package/dist/src/otel/traceparent.js.map +1 -0
  148. package/dist/src/pollers.d.ts +33 -0
  149. package/dist/src/pollers.d.ts.map +1 -0
  150. package/dist/src/pollers.js +76 -0
  151. package/dist/src/pollers.js.map +1 -0
  152. package/dist/src/protocol.d.ts +17 -0
  153. package/dist/src/protocol.d.ts.map +1 -0
  154. package/dist/src/protocol.js +47 -0
  155. package/dist/src/protocol.js.map +1 -0
  156. package/dist/src/queue.d.ts +113 -0
  157. package/dist/src/queue.d.ts.map +1 -0
  158. package/dist/src/queue.js +128 -0
  159. package/dist/src/queue.js.map +1 -0
  160. package/dist/src/remote-step-factory.d.ts +15 -0
  161. package/dist/src/remote-step-factory.d.ts.map +1 -0
  162. package/dist/src/remote-step-factory.js +12 -0
  163. package/dist/src/remote-step-factory.js.map +1 -0
  164. package/dist/src/remote-workflow-executor.d.ts +24 -0
  165. package/dist/src/remote-workflow-executor.d.ts.map +1 -0
  166. package/dist/src/remote-workflow-executor.js +70 -0
  167. package/dist/src/remote-workflow-executor.js.map +1 -0
  168. package/dist/src/scheduler.d.ts +67 -0
  169. package/dist/src/scheduler.d.ts.map +1 -0
  170. package/dist/src/scheduler.js +111 -0
  171. package/dist/src/scheduler.js.map +1 -0
  172. package/dist/src/search-attributes.d.ts +48 -0
  173. package/dist/src/search-attributes.d.ts.map +1 -0
  174. package/dist/src/search-attributes.js +98 -0
  175. package/dist/src/search-attributes.js.map +1 -0
  176. package/dist/src/singleton-gate.d.ts +44 -0
  177. package/dist/src/singleton-gate.d.ts.map +1 -0
  178. package/dist/src/singleton-gate.js +90 -0
  179. package/dist/src/singleton-gate.js.map +1 -0
  180. package/dist/src/step-logger.d.ts +9 -0
  181. package/dist/src/step-logger.d.ts.map +1 -0
  182. package/dist/src/step-logger.js +89 -0
  183. package/dist/src/step-logger.js.map +1 -0
  184. package/dist/src/stores/factory.d.ts +42 -0
  185. package/dist/src/stores/factory.d.ts.map +1 -0
  186. package/dist/src/stores/factory.js +29 -0
  187. package/dist/src/stores/factory.js.map +1 -0
  188. package/dist/src/stores/lucid-helpers.d.ts +11 -0
  189. package/dist/src/stores/lucid-helpers.d.ts.map +1 -0
  190. package/dist/src/stores/lucid-helpers.js +38 -0
  191. package/dist/src/stores/lucid-helpers.js.map +1 -0
  192. package/dist/src/stores/lucid-mappers.d.ts +58 -0
  193. package/dist/src/stores/lucid-mappers.d.ts.map +1 -0
  194. package/dist/src/stores/lucid-mappers.js +174 -0
  195. package/dist/src/stores/lucid-mappers.js.map +1 -0
  196. package/dist/src/stores/lucid-schema.d.ts +28 -0
  197. package/dist/src/stores/lucid-schema.d.ts.map +1 -0
  198. package/dist/src/stores/lucid-schema.js +115 -0
  199. package/dist/src/stores/lucid-schema.js.map +1 -0
  200. package/dist/src/stores/lucid.d.ts +69 -0
  201. package/dist/src/stores/lucid.d.ts.map +1 -0
  202. package/dist/src/stores/lucid.js +342 -0
  203. package/dist/src/stores/lucid.js.map +1 -0
  204. package/dist/src/telescope/dashboard.d.ts +15 -0
  205. package/dist/src/telescope/dashboard.d.ts.map +1 -0
  206. package/dist/src/telescope/dashboard.js +113 -0
  207. package/dist/src/telescope/dashboard.js.map +1 -0
  208. package/dist/src/telescope/data-providers.d.ts +20 -0
  209. package/dist/src/telescope/data-providers.d.ts.map +1 -0
  210. package/dist/src/telescope/data-providers.js +322 -0
  211. package/dist/src/telescope/data-providers.js.map +1 -0
  212. package/dist/src/telescope/extension.d.ts +22 -0
  213. package/dist/src/telescope/extension.d.ts.map +1 -0
  214. package/dist/src/telescope/extension.js +38 -0
  215. package/dist/src/telescope/extension.js.map +1 -0
  216. package/dist/src/telescope/index.d.ts +5 -0
  217. package/dist/src/telescope/index.d.ts.map +1 -0
  218. package/dist/src/telescope/index.js +4 -0
  219. package/dist/src/telescope/index.js.map +1 -0
  220. package/dist/src/telescope/telescope-sdk.d.ts +123 -0
  221. package/dist/src/telescope/telescope-sdk.d.ts.map +1 -0
  222. package/dist/src/telescope/telescope-sdk.js +12 -0
  223. package/dist/src/telescope/telescope-sdk.js.map +1 -0
  224. package/dist/src/test-helpers.d.ts +11 -0
  225. package/dist/src/test-helpers.d.ts.map +1 -0
  226. package/dist/src/test-helpers.js +12 -0
  227. package/dist/src/test-helpers.js.map +1 -0
  228. package/dist/src/testing/in-memory-state-store.d.ts +64 -0
  229. package/dist/src/testing/in-memory-state-store.d.ts.map +1 -0
  230. package/dist/src/testing/in-memory-state-store.js +259 -0
  231. package/dist/src/testing/in-memory-state-store.js.map +1 -0
  232. package/dist/src/testing/in-memory-transport.d.ts +25 -0
  233. package/dist/src/testing/in-memory-transport.d.ts.map +1 -0
  234. package/dist/src/testing/in-memory-transport.js +49 -0
  235. package/dist/src/testing/in-memory-transport.js.map +1 -0
  236. package/dist/src/testing-kit/admission-backend-conformance.d.ts +18 -0
  237. package/dist/src/testing-kit/admission-backend-conformance.d.ts.map +1 -0
  238. package/dist/src/testing-kit/admission-backend-conformance.js +81 -0
  239. package/dist/src/testing-kit/admission-backend-conformance.js.map +1 -0
  240. package/dist/src/testing-kit/assertions.d.ts +10 -0
  241. package/dist/src/testing-kit/assertions.d.ts.map +1 -0
  242. package/dist/src/testing-kit/assertions.js +41 -0
  243. package/dist/src/testing-kit/assertions.js.map +1 -0
  244. package/dist/src/testing-kit/harness.d.ts +28 -0
  245. package/dist/src/testing-kit/harness.d.ts.map +1 -0
  246. package/dist/src/testing-kit/harness.js +42 -0
  247. package/dist/src/testing-kit/harness.js.map +1 -0
  248. package/dist/src/testing-kit/index.d.ts +8 -0
  249. package/dist/src/testing-kit/index.d.ts.map +1 -0
  250. package/dist/src/testing-kit/index.js +8 -0
  251. package/dist/src/testing-kit/index.js.map +1 -0
  252. package/dist/src/testing-kit/replay.d.ts +22 -0
  253. package/dist/src/testing-kit/replay.d.ts.map +1 -0
  254. package/dist/src/testing-kit/replay.js +38 -0
  255. package/dist/src/testing-kit/replay.js.map +1 -0
  256. package/dist/src/testing-kit/state-store-conformance.d.ts +51 -0
  257. package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -0
  258. package/dist/src/testing-kit/state-store-conformance.js +430 -0
  259. package/dist/src/testing-kit/state-store-conformance.js.map +1 -0
  260. package/dist/src/testing-kit/steps.d.ts +5 -0
  261. package/dist/src/testing-kit/steps.d.ts.map +1 -0
  262. package/dist/src/testing-kit/steps.js +15 -0
  263. package/dist/src/testing-kit/steps.js.map +1 -0
  264. package/dist/src/testing-kit/transport-conformance.d.ts +16 -0
  265. package/dist/src/testing-kit/transport-conformance.d.ts.map +1 -0
  266. package/dist/src/testing-kit/transport-conformance.js +64 -0
  267. package/dist/src/testing-kit/transport-conformance.js.map +1 -0
  268. package/dist/src/tokens.d.ts +18 -0
  269. package/dist/src/tokens.d.ts.map +1 -0
  270. package/dist/src/tokens.js +18 -0
  271. package/dist/src/tokens.js.map +1 -0
  272. package/dist/src/transport-pool.d.ts +30 -0
  273. package/dist/src/transport-pool.d.ts.map +1 -0
  274. package/dist/src/transport-pool.js +82 -0
  275. package/dist/src/transport-pool.js.map +1 -0
  276. package/dist/src/transports/db-helpers.d.ts +10 -0
  277. package/dist/src/transports/db-helpers.d.ts.map +1 -0
  278. package/dist/src/transports/db-helpers.js +33 -0
  279. package/dist/src/transports/db-helpers.js.map +1 -0
  280. package/dist/src/transports/db-schema.d.ts +28 -0
  281. package/dist/src/transports/db-schema.d.ts.map +1 -0
  282. package/dist/src/transports/db-schema.js +98 -0
  283. package/dist/src/transports/db-schema.js.map +1 -0
  284. package/dist/src/transports/db.d.ts +81 -0
  285. package/dist/src/transports/db.d.ts.map +1 -0
  286. package/dist/src/transports/db.js +340 -0
  287. package/dist/src/transports/db.js.map +1 -0
  288. package/dist/src/transports/factory.d.ts +79 -0
  289. package/dist/src/transports/factory.d.ts.map +1 -0
  290. package/dist/src/transports/factory.js +57 -0
  291. package/dist/src/transports/factory.js.map +1 -0
  292. package/dist/src/transports/queue-mock-adapter.d.ts +39 -0
  293. package/dist/src/transports/queue-mock-adapter.d.ts.map +1 -0
  294. package/dist/src/transports/queue-mock-adapter.js +86 -0
  295. package/dist/src/transports/queue-mock-adapter.js.map +1 -0
  296. package/dist/src/transports/queue.d.ts +84 -0
  297. package/dist/src/transports/queue.d.ts.map +1 -0
  298. package/dist/src/transports/queue.js +210 -0
  299. package/dist/src/transports/queue.js.map +1 -0
  300. package/dist/src/workflow-ctx.d.ts +64 -0
  301. package/dist/src/workflow-ctx.d.ts.map +1 -0
  302. package/dist/src/workflow-ctx.js +457 -0
  303. package/dist/src/workflow-ctx.js.map +1 -0
  304. package/dist/src/workflow-ref.d.ts +34 -0
  305. package/dist/src/workflow-ref.d.ts.map +1 -0
  306. package/dist/src/workflow-ref.js +28 -0
  307. package/dist/src/workflow-ref.js.map +1 -0
  308. package/dist/stubs/config/durable.stub +49 -0
  309. package/dist/stubs/config/durable_dashboard.stub +17 -0
  310. package/dist/stubs/database/migrations/create_durable_tables.stub +87 -0
  311. package/dist/stubs/database/migrations/create_durable_transport_tables.stub +75 -0
  312. package/dist/stubs/main.d.ts +3 -0
  313. package/dist/stubs/main.d.ts.map +1 -0
  314. package/dist/stubs/main.js +4 -0
  315. package/dist/stubs/main.js.map +1 -0
  316. package/package.json +154 -0
@@ -0,0 +1,87 @@
1
+ {{{
2
+ exports({ to: app.migrationsPath(`${new Date().getTime()}_create_durable_tables.ts`) })
3
+ }}}
4
+ import { BaseSchema } from '@adonisjs/lucid/schema'
5
+
6
+ /**
7
+ * Durable workflow tables for the @adonis-agora/durable `lucid` state store: runs, step checkpoints, the
8
+ * search-attribute side-table, signal waiters and buffered signals. JSON payloads are stored as TEXT (the store
9
+ * (de)serializes them) and timestamps as epoch-ms integers, so the schema is portable across
10
+ * SQLite / Postgres / MySQL.
11
+ */
12
+ export default class extends BaseSchema {
13
+ async up() {
14
+ this.schema.createTable('durable_workflow_runs', (table) => {
15
+ table.string('id').primary()
16
+ table.string('workflow').notNullable()
17
+ table.string('workflow_version').notNullable()
18
+ table.string('status').notNullable()
19
+ table.text('input')
20
+ table.text('output')
21
+ table.text('error')
22
+ table.bigInteger('wake_at')
23
+ table.string('locked_by')
24
+ table.bigInteger('locked_until')
25
+ table.integer('recovery_attempts')
26
+ table.text('tags')
27
+ table.text('search_attributes')
28
+ table.integer('priority')
29
+ table.bigInteger('created_at').notNullable()
30
+ table.bigInteger('updated_at').notNullable()
31
+ table.index(['status'], 'durable_runs_status_idx')
32
+ table.index(['status', 'wake_at'], 'durable_runs_due_idx')
33
+ })
34
+
35
+ this.schema.createTable('durable_step_checkpoints', (table) => {
36
+ table.string('run_id').notNullable()
37
+ table.integer('seq').notNullable()
38
+ table.string('name').notNullable()
39
+ table.string('kind').notNullable()
40
+ table.string('step_id').notNullable()
41
+ table.string('status').notNullable()
42
+ table.text('input')
43
+ table.text('output')
44
+ table.text('error')
45
+ table.text('events')
46
+ table.integer('attempts').notNullable()
47
+ table.string('worker_group')
48
+ table.bigInteger('wake_at')
49
+ table.bigInteger('enqueued_at')
50
+ table.bigInteger('started_at').notNullable()
51
+ table.bigInteger('finished_at').notNullable()
52
+ table.primary(['run_id', 'seq'])
53
+ table.index(['run_id', 'name'], 'durable_checkpoints_name_idx')
54
+ })
55
+
56
+ this.schema.createTable('durable_run_attributes', (table) => {
57
+ table.string('run_id').notNullable()
58
+ table.string('key').notNullable()
59
+ table.string('str_value')
60
+ table.double('num_value')
61
+ table.primary(['run_id', 'key'])
62
+ table.index(['key', 'num_value'], 'durable_run_attributes_num_idx')
63
+ table.index(['key', 'str_value'], 'durable_run_attributes_str_idx')
64
+ })
65
+
66
+ this.schema.createTable('durable_signal_waiters', (table) => {
67
+ table.string('token').primary()
68
+ table.string('run_id').notNullable()
69
+ table.integer('seq').notNullable()
70
+ })
71
+
72
+ this.schema.createTable('durable_buffered_signals', (table) => {
73
+ table.increments('id').primary()
74
+ table.string('token').notNullable()
75
+ table.text('payload')
76
+ table.index(['token'], 'durable_buffered_signals_token_idx')
77
+ })
78
+ }
79
+
80
+ async down() {
81
+ this.schema.dropTableIfExists('durable_buffered_signals')
82
+ this.schema.dropTableIfExists('durable_signal_waiters')
83
+ this.schema.dropTableIfExists('durable_run_attributes')
84
+ this.schema.dropTableIfExists('durable_step_checkpoints')
85
+ this.schema.dropTableIfExists('durable_workflow_runs')
86
+ }
87
+ }
@@ -0,0 +1,75 @@
1
+ {{{
2
+ exports({ to: app.migrationsPath(`${new Date().getTime()}_create_durable_transport_tables.ts`) })
3
+ }}}
4
+ import { BaseSchema } from '@adonisjs/lucid/schema'
5
+
6
+ /**
7
+ * Transport tables for the @adonis-agora/durable `db` transport: the point-to-point work channels (tasks /
8
+ * results / heartbeats / control) that let durable remote steps run cross-process over the database
9
+ * alone. JSON payloads are stored as TEXT (the transport (de)serializes them) and timestamps as
10
+ * epoch-ms integers, so the schema is portable across SQLite / Postgres / MySQL. Only needed when you
11
+ * select the `db` transport in config/durable.ts.
12
+ */
13
+ export default class extends BaseSchema {
14
+ async up() {
15
+ this.schema.createTable('durable_transport_tasks', (table) => {
16
+ table.string('step_id').primary()
17
+ table.string('run_id').notNullable()
18
+ table.integer('seq').notNullable()
19
+ table.string('name').notNullable()
20
+ table.string('grp').notNullable()
21
+ table.text('input')
22
+ table.string('traceparent')
23
+ table.text('context')
24
+ table.string('transport')
25
+ table.integer('attempt').notNullable()
26
+ table.string('claimed_by')
27
+ table.bigInteger('claimed_at')
28
+ table.bigInteger('created_at').notNullable()
29
+ table.index(['grp', 'claimed_at', 'created_at'], 'durable_transport_tasks_grp_idx')
30
+ })
31
+
32
+ this.schema.createTable('durable_transport_results', (table) => {
33
+ table.string('step_id').primary()
34
+ table.string('run_id').notNullable()
35
+ table.integer('seq').notNullable()
36
+ table.string('status').notNullable()
37
+ table.text('output')
38
+ table.text('error')
39
+ table.bigInteger('started_at')
40
+ table.text('events')
41
+ table.string('claimed_by')
42
+ table.bigInteger('claimed_at')
43
+ table.bigInteger('created_at').notNullable()
44
+ table.index(['claimed_at', 'created_at'], 'durable_transport_results_idx')
45
+ })
46
+
47
+ this.schema.createTable('durable_transport_heartbeats', (table) => {
48
+ table.increments('id').primary()
49
+ table.string('run_id').notNullable()
50
+ table.integer('seq').notNullable()
51
+ table.string('step_id').notNullable()
52
+ table.string('grp').notNullable()
53
+ table.string('claimed_by')
54
+ table.bigInteger('claimed_at')
55
+ table.bigInteger('created_at').notNullable()
56
+ table.index(['claimed_at', 'created_at'], 'durable_transport_heartbeats_idx')
57
+ })
58
+
59
+ this.schema.createTable('durable_transport_control', (table) => {
60
+ table.increments('id').primary()
61
+ table.text('payload').notNullable()
62
+ table.string('claimed_by')
63
+ table.bigInteger('claimed_at')
64
+ table.bigInteger('created_at').notNullable()
65
+ table.index(['claimed_at', 'created_at'], 'durable_transport_control_idx')
66
+ })
67
+ }
68
+
69
+ async down() {
70
+ this.schema.dropTableIfExists('durable_transport_control')
71
+ this.schema.dropTableIfExists('durable_transport_heartbeats')
72
+ this.schema.dropTableIfExists('durable_transport_results')
73
+ this.schema.dropTableIfExists('durable_transport_tasks')
74
+ }
75
+ }
@@ -0,0 +1,3 @@
1
+ /** Absolute path to the published stubs directory (`dist/stubs/main.js`). */
2
+ export declare const stubsRoot: string;
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../stubs/main.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,eAAO,MAAM,SAAS,QAAgD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ /** Absolute path to the published stubs directory (`dist/stubs/main.js`). */
3
+ export const stubsRoot = fileURLToPath(new URL('./', import.meta.url));
4
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../stubs/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,154 @@
1
+ {
2
+ "name": "@adonis-agora/durable",
3
+ "version": "0.1.0",
4
+ "description": "Durable cross-app workflows for AdonisJS — deterministic replay engine, AdonisJS binding, ace commands, dashboard, OpenTelemetry, Telescope, testing harness and Redis admission, all in one package. Part of the Agora ecosystem.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/DavideCarvalho/adonis-durable.git",
9
+ "directory": "packages/adonis"
10
+ },
11
+ "author": "Davi Carvalho <davi@goflip.ai>",
12
+ "type": "module",
13
+ "main": "./dist/src/index.js",
14
+ "types": "./dist/src/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/src/index.d.ts",
18
+ "import": "./dist/src/index.js",
19
+ "default": "./dist/src/index.js"
20
+ },
21
+ "./durable_provider": {
22
+ "types": "./dist/providers/durable_provider.d.ts",
23
+ "import": "./dist/providers/durable_provider.js",
24
+ "default": "./dist/providers/durable_provider.js"
25
+ },
26
+ "./dashboard_provider": {
27
+ "types": "./dist/providers/dashboard_provider.d.ts",
28
+ "import": "./dist/providers/dashboard_provider.js",
29
+ "default": "./dist/providers/dashboard_provider.js"
30
+ },
31
+ "./configure": {
32
+ "types": "./dist/configure.d.ts",
33
+ "import": "./dist/configure.js",
34
+ "default": "./dist/configure.js"
35
+ },
36
+ "./otel": {
37
+ "types": "./dist/src/otel/index.d.ts",
38
+ "import": "./dist/src/otel/index.js",
39
+ "default": "./dist/src/otel/index.js"
40
+ },
41
+ "./telescope": {
42
+ "types": "./dist/src/telescope/index.d.ts",
43
+ "import": "./dist/src/telescope/index.js",
44
+ "default": "./dist/src/telescope/index.js"
45
+ },
46
+ "./dashboard": {
47
+ "types": "./dist/src/dashboard/index.d.ts",
48
+ "import": "./dist/src/dashboard/index.js",
49
+ "default": "./dist/src/dashboard/index.js"
50
+ },
51
+ "./testing": {
52
+ "types": "./dist/src/testing-kit/index.d.ts",
53
+ "import": "./dist/src/testing-kit/index.js",
54
+ "default": "./dist/src/testing-kit/index.js"
55
+ },
56
+ "./admission-redis": {
57
+ "types": "./dist/src/admission-redis/index.d.ts",
58
+ "import": "./dist/src/admission-redis/index.js",
59
+ "default": "./dist/src/admission-redis/index.js"
60
+ },
61
+ "./commands": {
62
+ "types": "./dist/commands/main.d.ts",
63
+ "import": "./dist/commands/main.js",
64
+ "default": "./dist/commands/main.js"
65
+ },
66
+ "./commands/*": {
67
+ "types": "./dist/commands/*.d.ts",
68
+ "import": "./dist/commands/*.js",
69
+ "default": "./dist/commands/*.js"
70
+ }
71
+ },
72
+ "files": [
73
+ "dist/",
74
+ "README.md",
75
+ "CHANGELOG.md"
76
+ ],
77
+ "sideEffects": false,
78
+ "dependencies": {
79
+ "zod": "^3.23.0"
80
+ },
81
+ "peerDependencies": {
82
+ "@adonisjs/core": "^6.12.0",
83
+ "@adonisjs/lucid": "^20.0.0 || ^21.0.0",
84
+ "@adonisjs/queue": "^0.6.0",
85
+ "@adonisjs/redis": "^9.0.0",
86
+ "@opentelemetry/api": "^1.0.0",
87
+ "cron-parser": "^4.0.0 || ^5.0.0",
88
+ "ioredis": "^5.0.0",
89
+ "vitest": "^3.0.0"
90
+ },
91
+ "peerDependenciesMeta": {
92
+ "@adonisjs/lucid": {
93
+ "optional": true
94
+ },
95
+ "@adonisjs/queue": {
96
+ "optional": true
97
+ },
98
+ "@adonisjs/redis": {
99
+ "optional": true
100
+ },
101
+ "@opentelemetry/api": {
102
+ "optional": true
103
+ },
104
+ "cron-parser": {
105
+ "optional": true
106
+ },
107
+ "ioredis": {
108
+ "optional": true
109
+ },
110
+ "vitest": {
111
+ "optional": true
112
+ }
113
+ },
114
+ "devDependencies": {
115
+ "@adonisjs/assembler": "^7.8.0",
116
+ "@adonisjs/core": "^6.17.0",
117
+ "@adonisjs/lucid": "^21.6.0",
118
+ "@adonisjs/queue": "^0.6.1",
119
+ "@adonisjs/redis": "^9.0.0",
120
+ "@opentelemetry/api": "^1.9.0",
121
+ "@opentelemetry/context-async-hooks": "^1.30.0",
122
+ "@opentelemetry/sdk-trace-base": "^1.30.0",
123
+ "@types/node": "^20.0.0",
124
+ "better-sqlite3": "^11.0.0",
125
+ "cron-parser": "^4.9.0",
126
+ "ioredis": "^5.4.0",
127
+ "typescript": "^5.4.0",
128
+ "vitest": "^3.0.0",
129
+ "zod": "^3.25.0"
130
+ },
131
+ "engines": {
132
+ "node": ">=20.6.0"
133
+ },
134
+ "keywords": [
135
+ "adonisjs",
136
+ "adonis",
137
+ "durable",
138
+ "workflow",
139
+ "saga",
140
+ "replay",
141
+ "dashboard",
142
+ "opentelemetry",
143
+ "telescope",
144
+ "testing",
145
+ "agora"
146
+ ],
147
+ "scripts": {
148
+ "build": "tsc -p tsconfig.json && pnpm run copy:stubs",
149
+ "copy:stubs": "mkdir -p dist/stubs/config dist/stubs/database/migrations dist/assets && cp stubs/config/durable.stub dist/stubs/config/durable.stub && cp stubs/config/durable_dashboard.stub dist/stubs/config/durable_dashboard.stub && cp -r stubs/database/migrations/. dist/stubs/database/migrations/ && cp assets/dashboard.html dist/assets/dashboard.html",
150
+ "test": "vitest run --passWithNoTests",
151
+ "test:watch": "vitest",
152
+ "typecheck": "tsc -p tsconfig.json --noEmit"
153
+ }
154
+ }