@adonis-agora/durable 1.0.0-rc.2 → 1.0.0-rc.21

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 (398) hide show
  1. package/CHANGELOG.md +204 -0
  2. package/dist/assets/spa/assets/index-BgoNV3TR.css +1 -0
  3. package/dist/assets/spa/assets/index-DzXygyDm.js +57 -0
  4. package/dist/assets/spa/assets/index-DzXygyDm.js.map +1 -0
  5. package/dist/assets/spa/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  6. package/dist/assets/spa/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  7. package/dist/assets/spa/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  8. package/dist/assets/spa/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  9. package/dist/assets/spa/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff +0 -0
  10. package/dist/assets/spa/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2 +0 -0
  11. package/dist/assets/spa/assets/sora-latin-400-normal-CRt88UEn.woff2 +0 -0
  12. package/dist/assets/spa/assets/sora-latin-400-normal-OW7qkl5a.woff +0 -0
  13. package/dist/assets/spa/assets/sora-latin-500-normal-01eiPEn0.woff2 +0 -0
  14. package/dist/assets/spa/assets/sora-latin-500-normal-w58xtEt9.woff +0 -0
  15. package/dist/assets/spa/assets/sora-latin-600-normal-1_7fyUAY.woff +0 -0
  16. package/dist/assets/spa/assets/sora-latin-600-normal-Cdg4DaK0.woff2 +0 -0
  17. package/dist/assets/spa/assets/sora-latin-700-normal-9waGdLWo.woff2 +0 -0
  18. package/dist/assets/spa/assets/sora-latin-700-normal-BKPfQAnC.woff +0 -0
  19. package/dist/assets/spa/index.html +2 -8
  20. package/dist/commands/agora_doctor.d.ts +23 -0
  21. package/dist/commands/agora_doctor.d.ts.map +1 -0
  22. package/dist/commands/agora_doctor.js +110 -0
  23. package/dist/commands/agora_doctor.js.map +1 -0
  24. package/dist/commands/durable_doctor.d.ts +8 -0
  25. package/dist/commands/durable_doctor.d.ts.map +1 -0
  26. package/dist/commands/durable_doctor.js +8 -0
  27. package/dist/commands/durable_doctor.js.map +1 -0
  28. package/dist/commands/durable_worker.d.ts +3 -3
  29. package/dist/commands/durable_worker.js +7 -7
  30. package/dist/commands/durable_worker.js.map +1 -1
  31. package/dist/commands/health.d.ts +12 -0
  32. package/dist/commands/health.d.ts.map +1 -0
  33. package/dist/commands/health.js +34 -0
  34. package/dist/commands/health.js.map +1 -0
  35. package/dist/commands/lifecycle_republish.d.ts +8 -9
  36. package/dist/commands/lifecycle_republish.d.ts.map +1 -1
  37. package/dist/commands/lifecycle_republish.js +29 -16
  38. package/dist/commands/lifecycle_republish.js.map +1 -1
  39. package/dist/commands/main.d.ts +25 -5
  40. package/dist/commands/main.d.ts.map +1 -1
  41. package/dist/commands/main.js +54 -7
  42. package/dist/commands/main.js.map +1 -1
  43. package/dist/commands/runs.d.ts +9 -16
  44. package/dist/commands/runs.d.ts.map +1 -1
  45. package/dist/commands/runs.js +60 -47
  46. package/dist/commands/runs.js.map +1 -1
  47. package/dist/commands/runs_bulk.d.ts +17 -0
  48. package/dist/commands/runs_bulk.d.ts.map +1 -0
  49. package/dist/commands/runs_bulk.js +76 -0
  50. package/dist/commands/runs_bulk.js.map +1 -0
  51. package/dist/commands/runs_cancel.d.ts +15 -0
  52. package/dist/commands/runs_cancel.d.ts.map +1 -0
  53. package/dist/commands/runs_cancel.js +39 -0
  54. package/dist/commands/runs_cancel.js.map +1 -0
  55. package/dist/commands/runs_continue.d.ts +12 -0
  56. package/dist/commands/runs_continue.d.ts.map +1 -0
  57. package/dist/commands/runs_continue.js +28 -0
  58. package/dist/commands/runs_continue.js.map +1 -0
  59. package/dist/commands/runs_event.d.ts +13 -0
  60. package/dist/commands/runs_event.d.ts.map +1 -0
  61. package/dist/commands/runs_event.js +28 -0
  62. package/dist/commands/runs_event.js.map +1 -0
  63. package/dist/commands/runs_fan.d.ts +16 -0
  64. package/dist/commands/runs_fan.d.ts.map +1 -0
  65. package/dist/commands/runs_fan.js +58 -0
  66. package/dist/commands/runs_fan.js.map +1 -0
  67. package/dist/commands/runs_redispatch.d.ts +14 -0
  68. package/dist/commands/runs_redispatch.d.ts.map +1 -0
  69. package/dist/commands/runs_redispatch.js +35 -0
  70. package/dist/commands/runs_redispatch.js.map +1 -0
  71. package/dist/commands/runs_replay.d.ts +14 -0
  72. package/dist/commands/runs_replay.d.ts.map +1 -0
  73. package/dist/commands/runs_replay.js +38 -0
  74. package/dist/commands/runs_replay.js.map +1 -0
  75. package/dist/commands/runs_retry.d.ts +13 -0
  76. package/dist/commands/runs_retry.d.ts.map +1 -0
  77. package/dist/commands/runs_retry.js +29 -0
  78. package/dist/commands/runs_retry.js.map +1 -0
  79. package/dist/commands/runs_show.d.ts +14 -0
  80. package/dist/commands/runs_show.d.ts.map +1 -0
  81. package/dist/commands/runs_show.js +96 -0
  82. package/dist/commands/runs_show.js.map +1 -0
  83. package/dist/commands/runs_signal.d.ts +17 -0
  84. package/dist/commands/runs_signal.d.ts.map +1 -0
  85. package/dist/commands/runs_signal.js +49 -0
  86. package/dist/commands/runs_signal.js.map +1 -0
  87. package/dist/commands/runs_update.d.ts +15 -0
  88. package/dist/commands/runs_update.d.ts.map +1 -0
  89. package/dist/commands/runs_update.js +39 -0
  90. package/dist/commands/runs_update.js.map +1 -0
  91. package/dist/commands/runs_values.d.ts +15 -0
  92. package/dist/commands/runs_values.d.ts.map +1 -0
  93. package/dist/commands/runs_values.js +45 -0
  94. package/dist/commands/runs_values.js.map +1 -0
  95. package/dist/commands/schedules.d.ts +18 -0
  96. package/dist/commands/schedules.d.ts.map +1 -0
  97. package/dist/commands/schedules.js +70 -0
  98. package/dist/commands/schedules.js.map +1 -0
  99. package/dist/commands/schedules_pause.d.ts +16 -0
  100. package/dist/commands/schedules_pause.d.ts.map +1 -0
  101. package/dist/commands/schedules_pause.js +40 -0
  102. package/dist/commands/schedules_pause.js.map +1 -0
  103. package/dist/commands/schedules_resume.d.ts +8 -0
  104. package/dist/commands/schedules_resume.d.ts.map +1 -0
  105. package/dist/commands/schedules_resume.js +8 -0
  106. package/dist/commands/schedules_resume.js.map +1 -0
  107. package/dist/commands/schedules_trigger.d.ts +13 -0
  108. package/dist/commands/schedules_trigger.d.ts.map +1 -0
  109. package/dist/commands/schedules_trigger.js +32 -0
  110. package/dist/commands/schedules_trigger.js.map +1 -0
  111. package/dist/commands/tasks_complete.d.ts +15 -0
  112. package/dist/commands/tasks_complete.d.ts.map +1 -0
  113. package/dist/commands/tasks_complete.js +41 -0
  114. package/dist/commands/tasks_complete.js.map +1 -0
  115. package/dist/commands/tasks_fail.d.ts +16 -0
  116. package/dist/commands/tasks_fail.d.ts.map +1 -0
  117. package/dist/commands/tasks_fail.js +47 -0
  118. package/dist/commands/tasks_fail.js.map +1 -0
  119. package/dist/commands/workers.d.ts +11 -0
  120. package/dist/commands/workers.d.ts.map +1 -0
  121. package/dist/commands/workers.js +35 -0
  122. package/dist/commands/workers.js.map +1 -0
  123. package/dist/commands/workflows_lifecycle.d.ts +12 -0
  124. package/dist/commands/workflows_lifecycle.d.ts.map +1 -0
  125. package/dist/commands/workflows_lifecycle.js +37 -0
  126. package/dist/commands/workflows_lifecycle.js.map +1 -0
  127. package/dist/configure.d.ts +2 -2
  128. package/dist/configure.js +2 -2
  129. package/dist/providers/dashboard_provider.d.ts +57 -54
  130. package/dist/providers/dashboard_provider.d.ts.map +1 -1
  131. package/dist/providers/dashboard_provider.js +399 -288
  132. package/dist/providers/dashboard_provider.js.map +1 -1
  133. package/dist/providers/durable_provider.d.ts.map +1 -1
  134. package/dist/providers/durable_provider.js +67 -37
  135. package/dist/providers/durable_provider.js.map +1 -1
  136. package/dist/src/commands/console_command.d.ts +82 -0
  137. package/dist/src/commands/console_command.d.ts.map +1 -0
  138. package/dist/src/commands/console_command.js +238 -0
  139. package/dist/src/commands/console_command.js.map +1 -0
  140. package/dist/src/commands/runs.js +2 -2
  141. package/dist/src/commands/runs.js.map +1 -1
  142. package/dist/src/concurrency.d.ts.map +1 -1
  143. package/dist/src/concurrency.js +1 -0
  144. package/dist/src/concurrency.js.map +1 -1
  145. package/dist/src/config_types.d.ts +79 -26
  146. package/dist/src/config_types.d.ts.map +1 -1
  147. package/dist/src/dashboard/access_denied_page.d.ts +5 -7
  148. package/dist/src/dashboard/access_denied_page.d.ts.map +1 -1
  149. package/dist/src/dashboard/access_denied_page.js +2 -6
  150. package/dist/src/dashboard/access_denied_page.js.map +1 -1
  151. package/dist/src/dashboard/audit.d.ts +14 -0
  152. package/dist/src/dashboard/audit.d.ts.map +1 -0
  153. package/dist/src/dashboard/audit.js +36 -0
  154. package/dist/src/dashboard/audit.js.map +1 -0
  155. package/dist/src/dashboard/console_authorize.d.ts +98 -0
  156. package/dist/src/dashboard/console_authorize.d.ts.map +1 -0
  157. package/dist/src/dashboard/console_authorize.js +163 -0
  158. package/dist/src/dashboard/console_authorize.js.map +1 -0
  159. package/dist/src/dashboard/console_shell.d.ts +45 -0
  160. package/dist/src/dashboard/console_shell.d.ts.map +1 -0
  161. package/dist/src/dashboard/console_shell.js +125 -0
  162. package/dist/src/dashboard/console_shell.js.map +1 -0
  163. package/dist/src/dashboard/console_switcher.d.ts +132 -0
  164. package/dist/src/dashboard/console_switcher.d.ts.map +1 -0
  165. package/dist/src/dashboard/console_switcher.js +201 -0
  166. package/dist/src/dashboard/console_switcher.js.map +1 -0
  167. package/dist/src/dashboard/define_config.d.ts +68 -81
  168. package/dist/src/dashboard/define_config.d.ts.map +1 -1
  169. package/dist/src/dashboard/define_config.js +18 -112
  170. package/dist/src/dashboard/define_config.js.map +1 -1
  171. package/dist/src/dashboard/dev_tools.d.ts +102 -0
  172. package/dist/src/dashboard/dev_tools.d.ts.map +1 -0
  173. package/dist/src/dashboard/dev_tools.js +502 -0
  174. package/dist/src/dashboard/dev_tools.js.map +1 -0
  175. package/dist/src/dashboard/diagnostics-recorder.d.ts +1 -1
  176. package/dist/src/dashboard/diagnostics-recorder.js +1 -1
  177. package/dist/src/dashboard/gateway-adapter.d.ts +6 -6
  178. package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
  179. package/dist/src/dashboard/gateway-adapter.js +5 -5
  180. package/dist/src/dashboard/gateway-adapter.js.map +1 -1
  181. package/dist/src/dashboard/handlers.d.ts +48 -39
  182. package/dist/src/dashboard/handlers.d.ts.map +1 -1
  183. package/dist/src/dashboard/handlers.js +181 -83
  184. package/dist/src/dashboard/handlers.js.map +1 -1
  185. package/dist/src/dashboard/index.d.ts +12 -9
  186. package/dist/src/dashboard/index.d.ts.map +1 -1
  187. package/dist/src/dashboard/index.js +10 -7
  188. package/dist/src/dashboard/index.js.map +1 -1
  189. package/dist/src/dashboard/list-filters.d.ts +27 -0
  190. package/dist/src/dashboard/list-filters.d.ts.map +1 -0
  191. package/dist/src/dashboard/list-filters.js +69 -0
  192. package/dist/src/dashboard/list-filters.js.map +1 -0
  193. package/dist/src/dashboard/openapi.d.ts.map +1 -1
  194. package/dist/src/dashboard/openapi.js +127 -52
  195. package/dist/src/dashboard/openapi.js.map +1 -1
  196. package/dist/src/dashboard/run-filter.d.ts +18 -15
  197. package/dist/src/dashboard/run-filter.d.ts.map +1 -1
  198. package/dist/src/dashboard/run-filter.js +30 -22
  199. package/dist/src/dashboard/run-filter.js.map +1 -1
  200. package/dist/src/dashboard/spa.d.ts +26 -1
  201. package/dist/src/dashboard/spa.d.ts.map +1 -1
  202. package/dist/src/dashboard/spa.js +9 -2
  203. package/dist/src/dashboard/spa.js.map +1 -1
  204. package/dist/src/dashboard/tenant_scope.d.ts +38 -0
  205. package/dist/src/dashboard/tenant_scope.d.ts.map +1 -0
  206. package/dist/src/dashboard/tenant_scope.js +166 -0
  207. package/dist/src/dashboard/tenant_scope.js.map +1 -0
  208. package/dist/src/define_config.d.ts +27 -12
  209. package/dist/src/define_config.d.ts.map +1 -1
  210. package/dist/src/define_config.js +9 -4
  211. package/dist/src/define_config.js.map +1 -1
  212. package/dist/src/diagnostics/index.d.ts +11 -0
  213. package/dist/src/diagnostics/index.d.ts.map +1 -0
  214. package/dist/src/diagnostics/index.js +6 -0
  215. package/dist/src/diagnostics/index.js.map +1 -0
  216. package/dist/src/diagnostics/transport.d.ts +71 -0
  217. package/dist/src/diagnostics/transport.d.ts.map +1 -0
  218. package/dist/src/diagnostics/transport.js +188 -0
  219. package/dist/src/diagnostics/transport.js.map +1 -0
  220. package/dist/src/diagnostics-bridge.d.ts +2 -1
  221. package/dist/src/diagnostics-bridge.d.ts.map +1 -1
  222. package/dist/src/diagnostics-bridge.js +7 -1
  223. package/dist/src/diagnostics-bridge.js.map +1 -1
  224. package/dist/src/doctor/agora_doctor.d.ts +116 -0
  225. package/dist/src/doctor/agora_doctor.d.ts.map +1 -0
  226. package/dist/src/doctor/agora_doctor.js +685 -0
  227. package/dist/src/doctor/agora_doctor.js.map +1 -0
  228. package/dist/src/doctor/checks.d.ts +28 -0
  229. package/dist/src/doctor/checks.d.ts.map +1 -0
  230. package/dist/src/doctor/checks.js +288 -0
  231. package/dist/src/doctor/checks.js.map +1 -0
  232. package/dist/src/doctor/index.d.ts +9 -0
  233. package/dist/src/doctor/index.d.ts.map +1 -0
  234. package/dist/src/doctor/index.js +16 -0
  235. package/dist/src/doctor/index.js.map +1 -0
  236. package/dist/src/engine.d.ts +55 -9
  237. package/dist/src/engine.d.ts.map +1 -1
  238. package/dist/src/engine.js +333 -84
  239. package/dist/src/engine.js.map +1 -1
  240. package/dist/src/errors.d.ts +9 -0
  241. package/dist/src/errors.d.ts.map +1 -1
  242. package/dist/src/errors.js +13 -0
  243. package/dist/src/errors.js.map +1 -1
  244. package/dist/src/event-trigger-bridge.d.ts +5 -14
  245. package/dist/src/event-trigger-bridge.d.ts.map +1 -1
  246. package/dist/src/event-trigger-bridge.js +11 -99
  247. package/dist/src/event-trigger-bridge.js.map +1 -1
  248. package/dist/src/index.d.ts +8 -5
  249. package/dist/src/index.d.ts.map +1 -1
  250. package/dist/src/index.js +6 -4
  251. package/dist/src/index.js.map +1 -1
  252. package/dist/src/interfaces.d.ts +53 -9
  253. package/dist/src/interfaces.d.ts.map +1 -1
  254. package/dist/src/interfaces.js +8 -0
  255. package/dist/src/interfaces.js.map +1 -1
  256. package/dist/src/origin.js +3 -3
  257. package/dist/src/role_bindings.d.ts +8 -8
  258. package/dist/src/role_bindings.js +8 -8
  259. package/dist/src/run-gateway/interface.d.ts +4 -3
  260. package/dist/src/run-gateway/interface.d.ts.map +1 -1
  261. package/dist/src/run-gateway/proxy-run-gateway.d.ts +4 -2
  262. package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
  263. package/dist/src/run-gateway/proxy-run-gateway.js +21 -6
  264. package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
  265. package/dist/src/run-gateway/run-request-responder.d.ts +6 -1
  266. package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
  267. package/dist/src/run-gateway/run-request-responder.js +30 -3
  268. package/dist/src/run-gateway/run-request-responder.js.map +1 -1
  269. package/dist/src/run-gateway/store-run-gateway.d.ts +4 -4
  270. package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -1
  271. package/dist/src/run-gateway/store-run-gateway.js +4 -4
  272. package/dist/src/run-gateway/store-run-gateway.js.map +1 -1
  273. package/dist/src/run-gateway/tenant-auth.d.ts +19 -1
  274. package/dist/src/run-gateway/tenant-auth.d.ts.map +1 -1
  275. package/dist/src/run-gateway/tenant-auth.js +133 -0
  276. package/dist/src/run-gateway/tenant-auth.js.map +1 -1
  277. package/dist/src/run-gateway/tenant-scoped-gateway.d.ts +10 -0
  278. package/dist/src/run-gateway/tenant-scoped-gateway.d.ts.map +1 -0
  279. package/dist/src/run-gateway/tenant-scoped-gateway.js +107 -0
  280. package/dist/src/run-gateway/tenant-scoped-gateway.js.map +1 -0
  281. package/dist/src/run-value-facets.d.ts +1 -1
  282. package/dist/src/run-value-facets.d.ts.map +1 -1
  283. package/dist/src/run-value-facets.js +5 -1
  284. package/dist/src/run-value-facets.js.map +1 -1
  285. package/dist/src/scheduler.d.ts.map +1 -1
  286. package/dist/src/scheduler.js +2 -1
  287. package/dist/src/scheduler.js.map +1 -1
  288. package/dist/src/schedules.d.ts +16 -1
  289. package/dist/src/schedules.d.ts.map +1 -1
  290. package/dist/src/schedules.js +29 -4
  291. package/dist/src/schedules.js.map +1 -1
  292. package/dist/src/services/main.d.ts +3 -3
  293. package/dist/src/services/main.js +6 -6
  294. package/dist/src/services/main.js.map +1 -1
  295. package/dist/src/singleton-admission.d.ts.map +1 -1
  296. package/dist/src/singleton-admission.js +2 -0
  297. package/dist/src/singleton-admission.js.map +1 -1
  298. package/dist/src/singleton-gate.d.ts +1 -1
  299. package/dist/src/singleton-gate.d.ts.map +1 -1
  300. package/dist/src/singleton-gate.js +4 -3
  301. package/dist/src/singleton-gate.js.map +1 -1
  302. package/dist/src/sql-schema.d.ts +54 -0
  303. package/dist/src/sql-schema.d.ts.map +1 -0
  304. package/dist/src/sql-schema.js +145 -0
  305. package/dist/src/sql-schema.js.map +1 -0
  306. package/dist/src/stores/factory.d.ts +6 -0
  307. package/dist/src/stores/factory.d.ts.map +1 -1
  308. package/dist/src/stores/factory.js +3 -0
  309. package/dist/src/stores/factory.js.map +1 -1
  310. package/dist/src/stores/lucid-mappers.d.ts +3 -0
  311. package/dist/src/stores/lucid-mappers.d.ts.map +1 -1
  312. package/dist/src/stores/lucid-mappers.js +12 -0
  313. package/dist/src/stores/lucid-mappers.js.map +1 -1
  314. package/dist/src/stores/lucid-pg-hot-path.d.ts +6 -2
  315. package/dist/src/stores/lucid-pg-hot-path.d.ts.map +1 -1
  316. package/dist/src/stores/lucid-pg-hot-path.js +7 -3
  317. package/dist/src/stores/lucid-pg-hot-path.js.map +1 -1
  318. package/dist/src/stores/lucid-schema.d.ts +18 -4
  319. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  320. package/dist/src/stores/lucid-schema.js +106 -61
  321. package/dist/src/stores/lucid-schema.js.map +1 -1
  322. package/dist/src/stores/lucid.d.ts +42 -2
  323. package/dist/src/stores/lucid.d.ts.map +1 -1
  324. package/dist/src/stores/lucid.js +450 -231
  325. package/dist/src/stores/lucid.js.map +1 -1
  326. package/dist/src/tenancy.d.ts +104 -0
  327. package/dist/src/tenancy.d.ts.map +1 -0
  328. package/dist/src/tenancy.js +91 -0
  329. package/dist/src/tenancy.js.map +1 -0
  330. package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
  331. package/dist/src/testing/in-memory-state-store.js +9 -3
  332. package/dist/src/testing/in-memory-state-store.js.map +1 -1
  333. package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
  334. package/dist/src/testing-kit/state-store-conformance.js +59 -0
  335. package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
  336. package/dist/src/testing-kit/transport-conformance.d.ts.map +1 -1
  337. package/dist/src/testing-kit/transport-conformance.js +5 -1
  338. package/dist/src/testing-kit/transport-conformance.js.map +1 -1
  339. package/dist/src/transports/bullmq/bullmq-transport.d.ts +1 -1
  340. package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
  341. package/dist/src/transports/bullmq/bullmq-transport.js +14 -3
  342. package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
  343. package/dist/src/transports/db-schema.d.ts +13 -5
  344. package/dist/src/transports/db-schema.d.ts.map +1 -1
  345. package/dist/src/transports/db-schema.js +52 -27
  346. package/dist/src/transports/db-schema.js.map +1 -1
  347. package/dist/src/transports/db.d.ts +6 -0
  348. package/dist/src/transports/db.d.ts.map +1 -1
  349. package/dist/src/transports/db.js +91 -42
  350. package/dist/src/transports/db.js.map +1 -1
  351. package/dist/src/transports/factory.d.ts +16 -0
  352. package/dist/src/transports/factory.d.ts.map +1 -1
  353. package/dist/src/transports/factory.js +6 -1
  354. package/dist/src/transports/factory.js.map +1 -1
  355. package/dist/src/transports/queue.d.ts +2 -2
  356. package/dist/src/transports/queue.d.ts.map +1 -1
  357. package/dist/src/transports/queue.js +49 -8
  358. package/dist/src/transports/queue.js.map +1 -1
  359. package/dist/src/transports/worker-keys-db.d.ts +5 -0
  360. package/dist/src/transports/worker-keys-db.d.ts.map +1 -1
  361. package/dist/src/transports/worker-keys-db.js +10 -8
  362. package/dist/src/transports/worker-keys-db.js.map +1 -1
  363. package/dist/src/workflow-discovery.d.ts +1 -1
  364. package/dist/src/workflow-discovery.d.ts.map +1 -1
  365. package/dist/src/workflow-discovery.js +4 -7
  366. package/dist/src/workflow-discovery.js.map +1 -1
  367. package/dist/src/workflow-events.d.ts +20 -51
  368. package/dist/src/workflow-events.d.ts.map +1 -1
  369. package/dist/src/workflow-events.js +12 -30
  370. package/dist/src/workflow-events.js.map +1 -1
  371. package/dist/src/workflow-ref.d.ts +1 -1
  372. package/dist/stubs/config/durable_dashboard.stub +9 -29
  373. package/dist/stubs/database/migrations/create_durable_tables.stub +12 -2
  374. package/dist/stubs/database/migrations/create_durable_transport_messages.stub +34 -5
  375. package/dist/stubs/database/migrations/create_durable_transport_tables.stub +30 -8
  376. package/dist/stubs/database/migrations/create_durable_transport_worker_keys.stub +24 -2
  377. package/package.json +25 -7
  378. package/skills/durable-cluster/SKILL.md +43 -23
  379. package/skills/durable-reliability/SKILL.md +13 -7
  380. package/dist/assets/spa/assets/index-70hGzOnT.css +0 -1
  381. package/dist/assets/spa/assets/index-CJjMAUau.js +0 -16
  382. package/dist/assets/spa/assets/index-CJjMAUau.js.map +0 -1
  383. package/dist/commands/retry.d.ts +0 -16
  384. package/dist/commands/retry.d.ts.map +0 -1
  385. package/dist/commands/retry.js +0 -34
  386. package/dist/commands/retry.js.map +0 -1
  387. package/dist/src/dashboard/auth.d.ts +0 -134
  388. package/dist/src/dashboard/auth.d.ts.map +0 -1
  389. package/dist/src/dashboard/auth.js +0 -156
  390. package/dist/src/dashboard/auth.js.map +0 -1
  391. package/dist/src/dashboard/login_page.d.ts +0 -36
  392. package/dist/src/dashboard/login_page.d.ts.map +0 -1
  393. package/dist/src/dashboard/login_page.js +0 -158
  394. package/dist/src/dashboard/login_page.js.map +0 -1
  395. package/dist/src/dashboard/session_cookie.d.ts +0 -45
  396. package/dist/src/dashboard/session_cookie.d.ts.map +0 -1
  397. package/dist/src/dashboard/session_cookie.js +0 -97
  398. package/dist/src/dashboard/session_cookie.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-adapter.js","sourceRoot":"","sources":["../../../src/dashboard/gateway-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-adapter.js","sourceRoot":"","sources":["../../../src/dashboard/gateway-adapter.ts"],"names":[],"mappings":"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"}
@@ -16,19 +16,15 @@ import { type FanPage, type FanPageQuery, type RunDetail, type RunDetailOptions
16
16
  * with no HTTP server. The provider adapts an AdonisJS `HttpContext` to these
17
17
  * shapes.
18
18
  *
19
- * `listRuns`/`getRun`/`retryRun`/`redispatchPendingRun`/`cancelRun`/`health` are the original
20
- * handlers this file always had (response shapes unchanged, so a hand-written client over the
21
- * JSON API keeps working — see `compat.ts`/`compat-view.ts`).
22
- * `workers`, `topology`, `retryWithInputRun`, `continueRun`, `runValues`, and `bulkAction` are
23
- * additions that give the new `@adonis-agora/durable-dashboard` React SPA parity with
24
- * `@dudousxd/nestjs-durable-dashboard`'s `DurableApiController` (fix-and-replay, bulk retry/cancel,
25
- * breakpoint continue, full worker heartbeats, topology badge, value pickers). The SSE `runs/:id/stream` route is wired directly in
19
+ * The list routes (`GET /runs`, `/runs/:id/fans/:group`, `/schedules`) speak the
20
+ * `@adonis-agora/filter` wire format: `filter[...]`, `sort`, `page`/`size`, and a
21
+ * `{ data, meta }` answer. The SSE `runs/:id/stream` route is wired directly in
26
22
  * `providers/dashboard_provider.ts` since streaming needs the raw HTTP response, not a JSON `ApiResponse`.
27
23
  */
28
24
  /**
29
25
  * The bounded read/control surface the JSON handlers drive — declared STRUCTURALLY (a port), not by
30
26
  * importing the concrete `WorkflowEngine` class, so the same handlers serve BOTH durable topologies
31
- * (design §8): a store role passes an adapter over the real {@link
27
+ * (design §8): a store topology passes an adapter over the real {@link
32
28
  * import('../engine.js').WorkflowEngine} (`storeDashboardEngine`); a store-less `tenant` pod passes an
33
29
  * adapter over its {@link import('../run-gateway/interface.js').RunGateway} (`gatewayDashboardEngine`).
34
30
  * Store presence is therefore invisible to the handlers. Mirrors the `RunGatewayEngine` port pattern
@@ -143,8 +139,8 @@ export interface Deps {
143
139
  export interface ApiRequest {
144
140
  /** Route params, e.g. `{ id: 'run-1' }`. */
145
141
  params: Record<string, string | undefined>;
146
- /** Decoded query string — nested when the client sends the filter envelope
147
- * (`filter[where][0][field]`), flat for the legacy spelling. */
142
+ /** Decoded query string, nested for the filter envelope (`filter[status]=failed` arrives as
143
+ * `{ filter: { status: 'failed' } }`). */
148
144
  query: Record<string, unknown>;
149
145
  /** Parsed JSON body (for POST actions). */
150
146
  body?: unknown;
@@ -164,26 +160,20 @@ export declare const ok: (body: unknown) => ApiResponse;
164
160
  * `GET /runs/values` — the distinct values one filter axis takes across the runs matching every
165
161
  * OTHER active predicate, with counts — what the console's pickers list instead of asking an
166
162
  * operator to type a value blind. Served through the filter lib's `groupByCountFromRequest` with
167
- * the console's adapter: the scope rides the same params as `listRuns`, and `field`/`limit`/
168
- * `offset`/`search` ride top-level (with the `groupByCount[field]` envelope as fallback).
163
+ * the console's adapter: the scope rides the same `filter[...]` envelope as `listRuns`, and the
164
+ * axis rides `groupByCount[field]` (`limit`/`offset`/`search` likewise, or top-level).
169
165
  *
170
- * A picker pages as it scrolls and narrows as the operator types, both against the whole matching
171
- * set rather than the fetched page.
172
- *
173
- * Note this endpoint keeps `limit`/`offset` while `GET /runs` moved to `page`/`size`: it is not a
174
- * listing of runs but filter's own group-by-count aggregation, and `limit`/`offset` IS that
175
- * feature's shape in `@adonis-agora/filter` (`groupByCount[limit]`/`groupByCount[offset]`,
176
- * `GroupByCountFromRequestOptions`). Matching the lib per surface is the point — respelling this
177
- * one as `page`/`size` would diverge from it, not align with it.
166
+ * It keeps `limit`/`offset`: it is filter's own group-by-count aggregation, not a listing, and
167
+ * that is the aggregation's wire format.
178
168
  */
179
169
  export declare function runValues(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
180
170
  /**
181
- * `GET /runs` — list runs filtered by status/workflow/tag/namespace/search-attributes, paginated.
171
+ * `GET /runs` — runs matching the `filter[...]` envelope (status, workflow, tag, namespace, origin,
172
+ * created range, search attributes), newest first, offset-paged (`page`, 1-based, and `size`).
182
173
  *
183
- * Paging is `?page=&size=`: a 1-BASED page number (default `1`) and a page size (default `50`,
184
- * capped at `200`) — the same offset-pagination shape `@adonis-agora/filter` takes, so one console
185
- * builder spells paging identically against this engine and against a Lucid-backed listing. The
186
- * 0-based offset it resolves to never appears on the wire; the store computes it (`runPageWindow`).
174
+ * Answers `{ data, meta: { total, perPage, currentPage, lastPage, firstPage }, statuses }`:
175
+ * `statuses` is every run status, for the console's chips. `sort` accepts `-createdAt` only (the
176
+ * stores' one order); anything else, and any refused filter, is a `400`.
187
177
  */
188
178
  export declare function listRuns(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
189
179
  /** A fan wider than this comes back from `GET /runs/:id` as one summary, unless `?full=true`. */
@@ -195,8 +185,9 @@ export declare const SUMMARIZE_FANS_OVER = 50;
195
185
  */
196
186
  export declare function getRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
197
187
  /**
198
- * `GET /runs/:id/fans/:group` — one page of a summarized fan's members, in seq order, with the
199
- * total. Query: `offset`, `limit` (at most 500, default 100), `failed=true` for failed members only.
188
+ * `GET /runs/:id/fans/:group` — one page of a summarized fan's members, in seq order,
189
+ * offset-paged (`page`, `size` up to 500, default 100). `filter[status]=failed` keeps the failed
190
+ * members only; `sort` accepts `seq` only. Answers `{ data, meta }`.
200
191
  */
201
192
  export declare function getFanMembers(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
202
193
  /**
@@ -264,29 +255,47 @@ export declare function updateRun(deps: Deps, req: ApiRequest): Promise<ApiRespo
264
255
  export declare function completeTaskRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
265
256
  /** `POST /runs/:id/tasks/:name/fail` — fail a `ctx.task` from the console with `{ error }`. */
266
257
  export declare function failTaskRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
267
- /** `GET /schedules` — the ticked schedules with live control state and fire windows. */
268
- export declare function listSchedules(deps: Deps, _req: ApiRequest): Promise<ApiResponse>;
258
+ /**
259
+ * `GET /schedules` — the ticked schedules with live control state and fire windows, offset-paged
260
+ * (`page`, `size`). Filters: `filter[workflow]`, `filter[namespace]`, `filter[paused]`. Sort by
261
+ * `key` (default), `workflow`, `nextFireAt` or `lastFireAt`. Answers `{ data, meta }`.
262
+ */
263
+ export declare function listSchedules(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
269
264
  /** `POST /schedules/:key/:action` — `pause` / `resume` / `trigger` a schedule at runtime. */
270
265
  export declare function scheduleAction(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
271
266
  /**
272
267
  * `POST /bulk/:action` (`action` = `retry`|`cancel`) — apply an action to every run matching the same
273
- * filter `listRuns` accepts (status/workflow/tag/namespace/attr), capped at 500 matches. Skips (does
268
+ * `filter[...]` envelope `listRuns` accepts, capped at 500 matches. Skips (does
274
269
  * not abort on) a run that can't take the action (e.g. already terminal). Mirrors
275
270
  * `@dudousxd/nestjs-durable-dashboard`'s `DashboardService.bulk`.
276
271
  */
277
272
  export declare function bulkAction(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
278
- /** `GET /health` — per-group worker health (queue backlog + live worker heartbeats), reduced to a
279
- * compact shape. Kept as a public endpoint for hand-written clients; the console uses `/workers`. */
273
+ /** `GET /health` — per-group worker health (queue backlog + live worker count), reduced to a
274
+ * compact shape: `{ data: [{ group, depth, liveWorkers, stalled }] }`. */
280
275
  export declare function health(deps: Deps): Promise<ApiResponse>;
276
+ /** What {@link fleetHealth} answers. */
277
+ export interface FleetHealth {
278
+ /** Per worker group: queue backlog, live workers, and `stalled` (backlog with no worker). */
279
+ groups: Array<{
280
+ group: string;
281
+ depth: number;
282
+ liveWorkers: number;
283
+ stalled: boolean;
284
+ }>;
285
+ /** How many runs are pending, dead and blocked, when the port can count runs. */
286
+ runs?: Record<'pending' | 'dead' | 'blocked', number>;
287
+ }
288
+ /**
289
+ * The fleet health the `durable_get_health` developer tool and `node ace durable:health` report: the
290
+ * {@link health} groups plus the pending / dead / blocked run counts.
291
+ */
292
+ export declare function fleetHealth(deps: Deps): Promise<FleetHealth>;
281
293
  /** `GET /workers` — full per-group worker health (every live worker's heartbeat, not just a count),
282
- * for the new SPA's Workers panel (`pivot-by-worker.ts`/`group-by-partition.ts` need per-instance
283
- * `instanceId`/`lastBeatAt`). Raw `GroupHealth[]`, unwrapped — matches
284
- * `@dudousxd/nestjs-durable-dashboard`'s `GET /workers` shape byte for byte (minus the `status`
285
- * telemetry field, which the AdonisJS engine's heartbeat doesn't carry — see `durable-client.ts`). */
294
+ * for the console's Workers panel: `{ data: GroupHealth[] }`, one entry per routing token. */
286
295
  export declare function workers(deps: Deps): Promise<ApiResponse>;
287
- /** `GET /topology` — this deployment's durable role, for the header badge. Pure/local (no engine
288
- * round-trip): the role is already known by `dashboard_provider.ts` from `config/durable.ts`. */
289
- export declare function topology(role: 'standalone' | 'control-plane' | 'tenant', tenant?: string): ApiResponse;
296
+ /** `GET /topology` — this deployment's durable topology, for the header badge. Pure/local (no engine
297
+ * round-trip): it is already known by `dashboard_provider.ts` from `config/durable.ts`. */
298
+ export declare function topology(durableTopology: 'standalone' | 'control-plane' | 'tenant', tenant?: string): ApiResponse;
290
299
  /**
291
300
  * `GET /metrics` — Prometheus text exposition: this process's event counters (runs and steps by
292
301
  * outcome, per-workflow counts, step durations; see `collectMetrics`) plus gauges read at scrape
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { applyCustomFilter, groupByCountFromRequest, InvalidColumnFilterError, } from '@adonis-agora/filter';
1
+ import { applyCustomFilter, groupByCountFromRequest, InvalidColumnFilterError, offsetPage, parsePageParams, resolveSort, } from '@adonis-agora/filter';
2
2
  import { lifecycleKindOf, } from '../lifecycle-events.js';
3
3
  import { loadFanMembers, loadRunDetail, } from '../run-detail-summary.js';
4
4
  import { RUN_VALUE_FACET_LIMIT } from '../run-value-facets.js';
5
5
  import { indexWaitersByRun, resolveRunWaiting } from '../run-waiting.js';
6
- import { RUN_STATUSES, RunFilter } from './run-filter.js';
6
+ import { FanMemberDraft, FanMemberFilter, ScheduleDraft, ScheduleFilter } from './list-filters.js';
7
+ import { RUN_FILTER_FIELDS, RUN_STATUSES, RunFilter } from './run-filter.js';
7
8
  import { RunQueryDraft } from './run-query-draft.js';
8
9
  import { runValueAdapter } from './run-values.js';
9
10
  /** Apply the host's redaction hook to a serialized shape (identity when unconfigured). */
@@ -131,25 +132,52 @@ function readFlag(req, key) {
131
132
  const fromQuery = parseFlag(firstQuery(req.query[key]));
132
133
  return fromQuery ?? false;
133
134
  }
134
- /** Build a {@link RunQuery} from the query params shared by `listRuns`, `bulkAction` and the
135
- * `runValues` scope — by running the console's {@link RunFilter} class over them (the filter
136
- * lib's unified class form, with a draft in place of a Lucid builder).
137
- *
138
- * Both spellings feed the same class: the flat form the console has always sent
139
- * (`?status=failed&tag=etl`, repeatable for a set, `attr=key:op:value` repeats) and the structured
140
- * `filter[...]` envelope `@adonis-agora/filter-client` builds. A refused filter
141
- * (`InvalidColumnFilterError` — unknown field, unsupported operator, a group the draft cannot
142
- * express) throws, and every caller maps it to `400` — a typo'd filter fails loudly instead of
143
- * silently widening.
144
- *
145
- * `page`/`size` never enter the draft (no method owns those endpoint mechanics — the caller
146
- * reads them), and neither does `origin`: the engine has no `origin` column, so the class reads
147
- * but ignores it and a client that always sends it never 400s. */
135
+ /**
136
+ * Refuse a filter field sent bare (`?status=failed`, `?attr.tier=pro`) instead of inside
137
+ * `filter[...]`. The filter lib would otherwise dispatch it to the same-named method; refusing it
138
+ * keeps one spelling on the wire, and a stale client that would have scoped a bulk action by it
139
+ * gets a `400` instead of acting on everything.
140
+ */
141
+ function assertNoBareFilterFields(query, fields) {
142
+ for (const key of Object.keys(query)) {
143
+ const head = key.split('.')[0] ?? key;
144
+ if (fields.includes(head)) {
145
+ throw new InvalidColumnFilterError(`Send "${key}" as filter[${key}].`);
146
+ }
147
+ }
148
+ }
149
+ /** Run `cls` over the request's `filter[...]` envelope onto `draft`, refusing bare filter fields. */
150
+ async function applyListFilter(draft, cls, query, fields) {
151
+ assertNoBareFilterFields(query, fields);
152
+ await applyCustomFilter(draft, cls, { request: { qs: () => ({ ...query }) } });
153
+ return draft;
154
+ }
155
+ /** Build a {@link RunQuery} from the `filter[...]` envelope `listRuns`, `bulkAction` and the
156
+ * `runValues` scope share, by running the console's {@link RunFilter} class over it. A refused
157
+ * filter (`InvalidColumnFilterError`: unknown field, unsupported operator, an `OR` group, a bare
158
+ * filter field) throws, and every caller maps it to `400`. */
148
159
  async function runFilterQuery(query) {
149
- const draft = new RunQueryDraft();
150
- await applyCustomFilter(draft, RunFilter, { request: { qs: () => ({ ...query }) } });
160
+ const draft = await applyListFilter(new RunQueryDraft(), RunFilter, query, RUN_FILTER_FIELDS);
151
161
  return draft.query;
152
162
  }
163
+ /** The one order the run stores list in: newest first. */
164
+ const RUN_SORT = [{ field: 'createdAt', direction: 'desc' }];
165
+ /**
166
+ * Check `sort` against an endpoint whose store lists in one fixed order: absent, or exactly that
167
+ * order, else `InvalidColumnFilterError`.
168
+ */
169
+ function assertFixedSort(sort, fixed) {
170
+ const fields = [...new Set(fixed.map((item) => item.field))];
171
+ const items = resolveSort(sort, { sortable: fields });
172
+ if (items.length === 0)
173
+ return;
174
+ const same = items.length === fixed.length &&
175
+ items.every((item, i) => item.field === fixed[i]?.field && item.direction === fixed[i]?.direction);
176
+ if (!same) {
177
+ const spelled = fixed.map((s) => (s.direction === 'desc' ? `-${s.field}` : s.field)).join(',');
178
+ throw new InvalidColumnFilterError(`This list is sorted by "${spelled}" only.`);
179
+ }
180
+ }
153
181
  /** Map a refused run filter to `400` (see {@link runFilterQuery}); rethrow anything else. */
154
182
  function filterRejection(error) {
155
183
  if (error instanceof InvalidColumnFilterError)
@@ -160,23 +188,18 @@ function filterRejection(error) {
160
188
  * `GET /runs/values` — the distinct values one filter axis takes across the runs matching every
161
189
  * OTHER active predicate, with counts — what the console's pickers list instead of asking an
162
190
  * operator to type a value blind. Served through the filter lib's `groupByCountFromRequest` with
163
- * the console's adapter: the scope rides the same params as `listRuns`, and `field`/`limit`/
164
- * `offset`/`search` ride top-level (with the `groupByCount[field]` envelope as fallback).
165
- *
166
- * A picker pages as it scrolls and narrows as the operator types, both against the whole matching
167
- * set rather than the fetched page.
191
+ * the console's adapter: the scope rides the same `filter[...]` envelope as `listRuns`, and the
192
+ * axis rides `groupByCount[field]` (`limit`/`offset`/`search` likewise, or top-level).
168
193
  *
169
- * Note this endpoint keeps `limit`/`offset` while `GET /runs` moved to `page`/`size`: it is not a
170
- * listing of runs but filter's own group-by-count aggregation, and `limit`/`offset` IS that
171
- * feature's shape in `@adonis-agora/filter` (`groupByCount[limit]`/`groupByCount[offset]`,
172
- * `GroupByCountFromRequestOptions`). Matching the lib per surface is the point — respelling this
173
- * one as `page`/`size` would diverge from it, not align with it.
194
+ * It keeps `limit`/`offset`: it is filter's own group-by-count aggregation, not a listing, and
195
+ * that is the aggregation's wire format.
174
196
  */
175
197
  export async function runValues(deps, req) {
176
198
  const qs = req.query;
177
199
  const field = firstQuery(qs.field);
178
200
  const search = firstQuery(qs.search)?.trim();
179
201
  try {
202
+ assertNoBareFilterFields(qs, RUN_FILTER_FIELDS);
180
203
  return ok(await groupByCountFromRequest(new RunQueryDraft(), RunFilter, { request: { qs: () => ({ ...qs }) } }, {
181
204
  adapter: runValueAdapter(deps.engine),
182
205
  ...(field !== undefined && { field }),
@@ -189,40 +212,57 @@ export async function runValues(deps, req) {
189
212
  return filterRejection(error);
190
213
  }
191
214
  }
215
+ /** `GET /runs` page sizes: 50 by default, at most 200. */
216
+ const RUNS_PAGE = { defaultSize: 50, maxSize: 200 };
192
217
  /**
193
- * `GET /runs` — list runs filtered by status/workflow/tag/namespace/search-attributes, paginated.
218
+ * `GET /runs` — runs matching the `filter[...]` envelope (status, workflow, tag, namespace, origin,
219
+ * created range, search attributes), newest first, offset-paged (`page`, 1-based, and `size`).
194
220
  *
195
- * Paging is `?page=&size=`: a 1-BASED page number (default `1`) and a page size (default `50`,
196
- * capped at `200`) — the same offset-pagination shape `@adonis-agora/filter` takes, so one console
197
- * builder spells paging identically against this engine and against a Lucid-backed listing. The
198
- * 0-based offset it resolves to never appears on the wire; the store computes it (`runPageWindow`).
221
+ * Answers `{ data, meta: { total, perPage, currentPage, lastPage, firstPage }, statuses }`:
222
+ * `statuses` is every run status, for the console's chips. `sort` accepts `-createdAt` only (the
223
+ * stores' one order); anything else, and any refused filter, is a `400`.
199
224
  */
200
225
  export async function listRuns(deps, req) {
201
226
  const { engine } = deps;
202
- const size = Math.min(intQuery(req.query.size, 50), 200);
203
- // A page below 1 reads as the first page rather than 400ing — same tolerance the other params get.
204
- const page = Math.max(1, intQuery(req.query.page, 1));
227
+ const { page, size } = parsePageParams(req.query, RUNS_PAGE);
205
228
  let filter;
206
229
  try {
230
+ assertFixedSort(req.query.sort, RUN_SORT);
207
231
  filter = await runFilterQuery(req.query);
208
232
  }
209
233
  catch (error) {
210
234
  return filterRejection(error);
211
235
  }
212
- const query = { page, size, ...filter };
213
- const runs = await engine.listRuns(query);
236
+ const [runs, total] = await Promise.all([
237
+ engine.listRuns({ ...filter, page, size }),
238
+ countMatching(engine, filter),
239
+ ]);
214
240
  // Resolve what each suspended run on THIS page is parked on — signal / webhook / child /
215
241
  // breakpoint — with no per-run timeline fetch. Prefers the targeted per-page lookup (`run_id IN
216
- // (...)`, indexed) over the legacy full-table waiter scan; absent on a topology that can't do
217
- // either yet (see `DashboardEngine.listSignalWaiters`'s doc), where the `waiting` stamp is
218
- // simply skipped, same as `@dudousxd/nestjs-durable-dashboard`.
242
+ // (...)`, indexed) over the full waiter scan; absent on a topology that can't do either, where
243
+ // the `waiting` stamp is simply skipped.
219
244
  const waitingOf = await waitingResolver(engine, runs);
220
245
  return ok({
221
- runs: runs.map((run) => redacted(deps.redact?.run, summarizeRun(run, waitingOf))),
222
- meta: { page, size, count: runs.length },
246
+ ...offsetPage(runs.map((run) => redacted(deps.redact?.run, summarizeRun(run, waitingOf))), { total, page, size }),
223
247
  statuses: RUN_STATUSES,
224
248
  });
225
249
  }
250
+ /**
251
+ * How many runs match `filter`: the port's `countRuns`, else (no count on the port, or a tenant
252
+ * pod's control plane too old to answer one) the length of the full listing.
253
+ */
254
+ async function countMatching(engine, filter) {
255
+ if (engine.countRuns) {
256
+ try {
257
+ return await engine.countRuns(filter);
258
+ }
259
+ catch (err) {
260
+ if (err?.code !== 'unsupported-request')
261
+ throw err;
262
+ }
263
+ }
264
+ return (await engine.listRuns(filter)).length;
265
+ }
226
266
  /** A fan wider than this comes back from `GET /runs/:id` as one summary, unless `?full=true`. */
227
267
  export const SUMMARIZE_FANS_OVER = 50;
228
268
  /**
@@ -250,9 +290,12 @@ export async function getRun(deps, req) {
250
290
  if (detail.etag && detail.notModified)
251
291
  return notModified(detail.etag);
252
292
  const checkpoint = (cp) => redacted(deps.redact?.checkpoint, summarizeCheckpoint(cp));
293
+ // What a suspended run is parked on (a signal, an update, a task, a child), as the list rows carry
294
+ // it, so the console offers the matching action from the run itself.
295
+ const waitingOf = detail.run.status === 'suspended' ? await waitingResolver(engine, [detail.run]) : undefined;
253
296
  return {
254
297
  ...ok({
255
- run: redacted(deps.redact?.run, detailRun(detail.run)),
298
+ run: redacted(deps.redact?.run, detailRun(detail.run, waitingOf)),
256
299
  timeline: detail.timeline.map(checkpoint),
257
300
  children: detail.children,
258
301
  ...(detail.fans ? { fans: detail.fans.map((fan) => serializeFan(fan, checkpoint)) } : {}),
@@ -268,9 +311,12 @@ export async function getRun(deps, req) {
268
311
  ...(detail.etag ? { headers: etagHeaders(detail.etag) } : {}),
269
312
  };
270
313
  }
314
+ /** `GET /runs/:id/fans/:group` page sizes: 100 by default, at most 500. */
315
+ const FAN_PAGE = { defaultSize: 100, maxSize: 500 };
271
316
  /**
272
- * `GET /runs/:id/fans/:group` — one page of a summarized fan's members, in seq order, with the
273
- * total. Query: `offset`, `limit` (at most 500, default 100), `failed=true` for failed members only.
317
+ * `GET /runs/:id/fans/:group` — one page of a summarized fan's members, in seq order,
318
+ * offset-paged (`page`, `size` up to 500, default 100). `filter[status]=failed` keeps the failed
319
+ * members only; `sort` accepts `seq` only. Answers `{ data, meta }`.
274
320
  */
275
321
  export async function getFanMembers(deps, req) {
276
322
  const { engine } = deps;
@@ -278,33 +324,34 @@ export async function getFanMembers(deps, req) {
278
324
  const group = req.params.group;
279
325
  if (!id || !group)
280
326
  return notFound('run id and fan group are required');
281
- const failed = readFlag(req, 'failed');
282
- if (failed === INVALID_FLAG)
283
- return badRequest('failed must be a boolean');
284
- const number = (key) => {
285
- const raw = firstQuery(req.query[key]);
286
- return raw === undefined ? undefined : Number(raw);
287
- };
327
+ const { page, size } = parsePageParams(req.query, FAN_PAGE);
328
+ let failedOnly;
329
+ try {
330
+ assertFixedSort(req.query.sort, [{ field: 'seq', direction: 'asc' }]);
331
+ ({ failedOnly } = await applyListFilter(new FanMemberDraft(), FanMemberFilter, req.query, [
332
+ 'status',
333
+ ]));
334
+ }
335
+ catch (error) {
336
+ return filterRejection(error);
337
+ }
288
338
  const ifNoneMatch = req.headers?.['if-none-match'];
289
339
  const query = {
290
- offset: number('offset'),
291
- limit: number('limit'),
292
- failedOnly: failed,
340
+ offset: (page - 1) * size,
341
+ limit: size,
342
+ failedOnly,
293
343
  ...(ifNoneMatch ? { ifNoneMatch } : {}),
294
344
  };
295
- const page = engine.getFanMembers
345
+ const members = engine.getFanMembers
296
346
  ? await engine.getFanMembers(id, group, query)
297
347
  : await loadFanMembers(engine, id, group, query);
298
- if (!page)
348
+ if (!members)
299
349
  return notFound(`run ${id} not found`);
300
- if (page.etag && page.notModified)
301
- return notModified(page.etag);
350
+ if (members.etag && members.notModified)
351
+ return notModified(members.etag);
302
352
  return {
303
- ...ok({
304
- items: page.items.map((cp) => redacted(deps.redact?.checkpoint, summarizeCheckpoint(cp))),
305
- total: page.total,
306
- }),
307
- ...(page.etag ? { headers: etagHeaders(page.etag) } : {}),
353
+ ...ok(offsetPage(members.items.map((cp) => redacted(deps.redact?.checkpoint, summarizeCheckpoint(cp))), { total: members.total, page, size })),
354
+ ...(members.etag ? { headers: etagHeaders(members.etag) } : {}),
308
355
  };
309
356
  }
310
357
  /** A {@link FanSummary} on the wire: ISO dates, and its failure sample shaped like timeline steps. */
@@ -578,12 +625,49 @@ export async function failTaskRun(deps, req) {
578
625
  // Null = buffered (no live waiter yet) — same reliable-delivery semantics as completeTaskRun.
579
626
  return ok({ result, delivered: result != null });
580
627
  }
581
- /** `GET /schedules` — the ticked schedules with live control state and fire windows. */
582
- export async function listSchedules(deps, _req) {
628
+ /** `GET /schedules` page sizes: 100 by default, at most 200. */
629
+ const SCHEDULES_PAGE = { defaultSize: 100, maxSize: 200 };
630
+ /** The fields `GET /schedules` sorts by. */
631
+ const SCHEDULE_SORTABLE = ['key', 'workflow', 'nextFireAt', 'lastFireAt'];
632
+ /**
633
+ * `GET /schedules` — the ticked schedules with live control state and fire windows, offset-paged
634
+ * (`page`, `size`). Filters: `filter[workflow]`, `filter[namespace]`, `filter[paused]`. Sort by
635
+ * `key` (default), `workflow`, `nextFireAt` or `lastFireAt`. Answers `{ data, meta }`.
636
+ */
637
+ export async function listSchedules(deps, req) {
583
638
  const { engine } = deps;
584
639
  if (!engine.listSchedules)
585
640
  return notFound('schedules are not available on this topology yet');
586
- return ok({ schedules: await engine.listSchedules() });
641
+ const { page, size } = parsePageParams(req.query, SCHEDULES_PAGE);
642
+ let draft;
643
+ let sort;
644
+ try {
645
+ sort = resolveSort(req.query.sort, {
646
+ sortable: SCHEDULE_SORTABLE,
647
+ default: 'key',
648
+ });
649
+ draft = await applyListFilter(new ScheduleDraft(), ScheduleFilter, req.query, [
650
+ 'workflow',
651
+ 'namespace',
652
+ 'paused',
653
+ ]);
654
+ }
655
+ catch (error) {
656
+ return filterRejection(error);
657
+ }
658
+ const rows = (await engine.listSchedules()).filter((s) => draft.matches(s));
659
+ rows.sort((a, b) => {
660
+ for (const { field, direction } of sort) {
661
+ const x = a[field];
662
+ const y = b[field];
663
+ const order = x < y ? -1 : x > y ? 1 : 0;
664
+ if (order !== 0)
665
+ return direction === 'desc' ? -order : order;
666
+ }
667
+ return a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
668
+ });
669
+ const start = (page - 1) * size;
670
+ return ok(offsetPage(rows.slice(start, start + size), { total: rows.length, page, size }));
587
671
  }
588
672
  /** `POST /schedules/:key/:action` — `pause` / `resume` / `trigger` a schedule at runtime. */
589
673
  export async function scheduleAction(deps, req) {
@@ -614,7 +698,7 @@ export async function scheduleAction(deps, req) {
614
698
  }
615
699
  /**
616
700
  * `POST /bulk/:action` (`action` = `retry`|`cancel`) — apply an action to every run matching the same
617
- * filter `listRuns` accepts (status/workflow/tag/namespace/attr), capped at 500 matches. Skips (does
701
+ * `filter[...]` envelope `listRuns` accepts, capped at 500 matches. Skips (does
618
702
  * not abort on) a run that can't take the action (e.g. already terminal). Mirrors
619
703
  * `@dudousxd/nestjs-durable-dashboard`'s `DashboardService.bulk`.
620
704
  */
@@ -654,12 +738,12 @@ export async function bulkAction(deps, req) {
654
738
  }
655
739
  return ok({ matched: runs.length, applied });
656
740
  }
657
- /** `GET /health` — per-group worker health (queue backlog + live worker heartbeats), reduced to a
658
- * compact shape. Kept as a public endpoint for hand-written clients; the console uses `/workers`. */
741
+ /** `GET /health` — per-group worker health (queue backlog + live worker count), reduced to a
742
+ * compact shape: `{ data: [{ group, depth, liveWorkers, stalled }] }`. */
659
743
  export async function health(deps) {
660
744
  const groups = await deps.engine.workerHealth();
661
745
  return ok({
662
- groups: groups.map((g) => ({
746
+ data: groups.map((g) => ({
663
747
  group: g.group,
664
748
  depth: g.depth,
665
749
  liveWorkers: g.liveWorkers.length,
@@ -668,19 +752,31 @@ export async function health(deps) {
668
752
  })),
669
753
  });
670
754
  }
755
+ /**
756
+ * The fleet health the `durable_get_health` developer tool and `node ace durable:health` report: the
757
+ * {@link health} groups plus the pending / dead / blocked run counts.
758
+ */
759
+ export async function fleetHealth(deps) {
760
+ const groups = (await health(deps)).body.data;
761
+ if (!deps.engine.countRuns)
762
+ return { groups };
763
+ const runs = { pending: 0, dead: 0, blocked: 0 };
764
+ for (const status of ['pending', 'dead', 'blocked']) {
765
+ runs[status] = await deps.engine.countRuns({ status });
766
+ }
767
+ return { groups, runs };
768
+ }
671
769
  /** `GET /workers` — full per-group worker health (every live worker's heartbeat, not just a count),
672
- * for the new SPA's Workers panel (`pivot-by-worker.ts`/`group-by-partition.ts` need per-instance
673
- * `instanceId`/`lastBeatAt`). Raw `GroupHealth[]`, unwrapped — matches
674
- * `@dudousxd/nestjs-durable-dashboard`'s `GET /workers` shape byte for byte (minus the `status`
675
- * telemetry field, which the AdonisJS engine's heartbeat doesn't carry — see `durable-client.ts`). */
770
+ * for the console's Workers panel: `{ data: GroupHealth[] }`, one entry per routing token. */
676
771
  export async function workers(deps) {
677
772
  const groups = await deps.engine.workerHealth();
678
- return ok(groups);
773
+ return ok({ data: groups });
679
774
  }
680
- /** `GET /topology` — this deployment's durable role, for the header badge. Pure/local (no engine
681
- * round-trip): the role is already known by `dashboard_provider.ts` from `config/durable.ts`. */
682
- export function topology(role, tenant) {
683
- return ok(tenant !== undefined ? { role, tenant } : { role });
775
+ /** `GET /topology` — this deployment's durable topology, for the header badge. Pure/local (no engine
776
+ * round-trip): it is already known by `dashboard_provider.ts` from `config/durable.ts`. */
777
+ export function topology(durableTopology, tenant) {
778
+ // The body keeps aviary's `DurableTopology` wire shape (`{ role, tenant? }`).
779
+ return ok(tenant !== undefined ? { role: durableTopology, tenant } : { role: durableTopology });
684
780
  }
685
781
  /**
686
782
  * How `listRuns` names what each run on a page is parked on: from the store's waiter rows (the
@@ -714,6 +810,8 @@ function summarizeRun(run, waitingOf) {
714
810
  status: run.status,
715
811
  namespace: run.namespace,
716
812
  origin: run.origin,
813
+ ...(run.tenantId !== undefined ? { tenantId: run.tenantId } : {}),
814
+ ...(run.tenantKind !== undefined ? { tenantKind: run.tenantKind } : {}),
717
815
  tags: run.tags ?? [],
718
816
  createdAt: run.createdAt.toISOString(),
719
817
  updatedAt: run.updatedAt.toISOString(),
@@ -729,10 +827,10 @@ function summarizeRun(run, waitingOf) {
729
827
  };
730
828
  }
731
829
  /** Fuller run shape for the detail view. */
732
- function detailRun(run) {
830
+ function detailRun(run, waitingOf) {
733
831
  return {
734
832
  // recoveryAttempts already comes through from summarizeRun.
735
- ...summarizeRun(run),
833
+ ...summarizeRun(run, waitingOf),
736
834
  input: run.input,
737
835
  output: run.output,
738
836
  error: run.error,