@lostgradient/weft 0.11.0 → 0.13.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 (242) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/api.d.ts +2 -0
  3. package/dist/cli/api.js +3 -4
  4. package/dist/cli/generated/operation-catalog.snapshot.json +5167 -0
  5. package/dist/cli/generated/operation-client.generated.d.ts +119 -10
  6. package/dist/cli/generated/operation-client.generated.js +74 -1
  7. package/dist/cli/index.js +1 -0
  8. package/dist/cli/operation-catalog-snapshot.d.ts +11 -2
  9. package/dist/cli/operation-catalog-snapshot.js +14 -5
  10. package/dist/cli/operation-client-runtime.d.ts +29 -0
  11. package/dist/cli-main.js +227 -401
  12. package/dist/client/client-storage.d.ts +24 -0
  13. package/dist/client/client-storage.js +14 -0
  14. package/dist/client/handle-delegation.d.ts +3 -3
  15. package/dist/client/handle-delegation.js +2 -2
  16. package/dist/client/http-client-requests.d.ts +5 -3
  17. package/dist/client/http-client-requests.js +20 -2
  18. package/dist/client/http-client-storage.d.ts +3 -0
  19. package/dist/client/http-client-storage.js +110 -0
  20. package/dist/client/http-client.d.ts +9 -6
  21. package/dist/client/http-client.js +13 -18
  22. package/dist/client/http-operations.d.ts +3 -1
  23. package/dist/client/http-operations.js +84 -2
  24. package/dist/client/http-request.d.ts +35 -6
  25. package/dist/client/http-request.js +31 -10
  26. package/dist/client/in-process-operations.d.ts +2 -2
  27. package/dist/client/in-process-operations.js +2 -2
  28. package/dist/client/index.d.ts +6 -0
  29. package/dist/client/index.js +18 -0
  30. package/dist/client/interface.d.ts +26 -26
  31. package/dist/client/local.d.ts +9 -6
  32. package/dist/client/local.js +9 -4
  33. package/dist/client/search-params.js +10 -6
  34. package/dist/client/start-body.d.ts +3 -1
  35. package/dist/client/start-body.js +9 -0
  36. package/dist/connection.d.ts +8 -0
  37. package/dist/connection.js +41 -17
  38. package/dist/core/bulk-workflow-filter.d.ts +2 -1
  39. package/dist/core/bulk-workflow-filter.js +5 -1
  40. package/dist/core/engine/async-activity-records.d.ts +12 -1
  41. package/dist/core/engine/async-activity-records.js +81 -2
  42. package/dist/core/engine/bulk-operations-purge.js +16 -1
  43. package/dist/core/engine/bulk-operations-shared.js +2 -0
  44. package/dist/core/engine/callback-creators-core.js +2 -1
  45. package/dist/core/engine/callback-creators-schedule.d.ts +2 -1
  46. package/dist/core/engine/callback-creators-schedule.js +3 -3
  47. package/dist/core/engine/checkpoint-reads.js +11 -1
  48. package/dist/core/engine/child-workflow.js +15 -6
  49. package/dist/core/engine/construction.js +3 -0
  50. package/dist/core/engine/disposal.js +2 -0
  51. package/dist/core/engine/engine-internal-types.d.ts +4 -1
  52. package/dist/core/engine/fenced-write.d.ts +5 -3
  53. package/dist/core/engine/finalizer-status.d.ts +10 -0
  54. package/dist/core/engine/finalizer-status.js +82 -0
  55. package/dist/core/engine/index.d.ts +69 -2
  56. package/dist/core/engine/index.js +71 -8
  57. package/dist/core/engine/internals.d.ts +3 -0
  58. package/dist/core/engine/lease-health.d.ts +64 -0
  59. package/dist/core/engine/lease-health.js +0 -0
  60. package/dist/core/engine/lease-manager.d.ts +4 -2
  61. package/dist/core/engine/lease-manager.js +32 -4
  62. package/dist/core/engine/lifecycle/recovered-services.js +0 -2
  63. package/dist/core/engine/lifecycle/shared.d.ts +28 -0
  64. package/dist/core/engine/lifecycle/start-batch.js +12 -0
  65. package/dist/core/engine/lifecycle/start.d.ts +1 -1
  66. package/dist/core/engine/lifecycle/start.js +34 -5
  67. package/dist/core/engine/lifecycle/transition.js +19 -9
  68. package/dist/core/engine/operations-coordination.d.ts +1 -12
  69. package/dist/core/engine/operations-coordination.js +57 -10
  70. package/dist/core/engine/operations-speculate.d.ts +1 -1
  71. package/dist/core/engine/operations-speculate.js +19 -5
  72. package/dist/core/engine/registration.js +14 -0
  73. package/dist/core/engine/schedule-handle.d.ts +4 -4
  74. package/dist/core/engine/schedule-handle.js +2 -2
  75. package/dist/core/engine/schedule-overlap.d.ts +11 -0
  76. package/dist/core/engine/schedule-overlap.js +50 -0
  77. package/dist/core/engine/schedule-run.d.ts +11 -3
  78. package/dist/core/engine/schedule-run.js +27 -4
  79. package/dist/core/engine/schedule-timer.js +10 -1
  80. package/dist/core/engine/schedules.d.ts +5 -4
  81. package/dist/core/engine/schedules.js +62 -56
  82. package/dist/core/engine/state-utilities.js +1 -1
  83. package/dist/core/engine/storage-io.d.ts +12 -0
  84. package/dist/core/engine/storage-io.js +49 -10
  85. package/dist/core/engine/termination/finalizer-claim.d.ts +8 -6
  86. package/dist/core/engine/termination/finalizer-claim.js +2 -1
  87. package/dist/core/engine/termination/finalizer.js +10 -14
  88. package/dist/core/engine/timeline-coordinator-constants.d.ts +3 -0
  89. package/dist/core/engine/timeline-coordinator-constants.js +1 -0
  90. package/dist/core/engine/timeline-coordinator-detail.d.ts +13 -0
  91. package/dist/core/engine/timeline-coordinator-detail.js +76 -0
  92. package/dist/core/engine/validation/schedule-options.d.ts +8 -1
  93. package/dist/core/engine/validation/schedule-options.js +18 -0
  94. package/dist/core/engine/validation/schedule.d.ts +1 -1
  95. package/dist/core/engine/validation/schedule.js +27 -3
  96. package/dist/core/engine/validation.js +66 -2
  97. package/dist/core/engine/workflow-state-stream.d.ts +5 -1
  98. package/dist/core/engine/workflow-state-stream.js +37 -14
  99. package/dist/core/events/schedule-events.d.ts +3 -4
  100. package/dist/core/events/workflow-events.d.ts +2 -1
  101. package/dist/core/list-filter-validation.d.ts +3 -0
  102. package/dist/core/list-filter-validation.js +11 -0
  103. package/dist/core/registry-snapshot.d.ts +32 -0
  104. package/dist/core/registry-snapshot.js +28 -0
  105. package/dist/core/review/index.d.ts +4 -4
  106. package/dist/core/types/activity.d.ts +52 -5
  107. package/dist/core/types/bulk.d.ts +1 -0
  108. package/dist/core/types/definition-schema-to-json.d.ts +11 -0
  109. package/dist/core/types/definition-schema-to-json.js +11 -2
  110. package/dist/core/types/list-options.d.ts +6 -0
  111. package/dist/core/types/options.d.ts +6 -5
  112. package/dist/core/types/reviews.d.ts +2 -2
  113. package/dist/core/types/schedules.d.ts +45 -2
  114. package/dist/core/types/services-resolution.d.ts +5 -5
  115. package/dist/core/types/state.d.ts +64 -0
  116. package/dist/core/types/workflow-log.d.ts +3 -2
  117. package/dist/core/types/workflow-observability.d.ts +50 -0
  118. package/dist/core/types/workflow-observability.js +0 -0
  119. package/dist/core/types/workflow-registry.d.ts +7 -0
  120. package/dist/core/types.d.ts +1 -0
  121. package/dist/core/types.js +1 -0
  122. package/dist/http.js +2 -0
  123. package/dist/index.d.ts +4 -3
  124. package/dist/indexeddb.js +1 -0
  125. package/dist/json-schema.js +3 -3
  126. package/dist/mcp/cli.js +63 -61
  127. package/dist/mcp/http.d.ts +7 -2
  128. package/dist/mcp/session.d.ts +3 -3
  129. package/dist/mcp/session.js +3 -2
  130. package/dist/mcp/stdio.d.ts +7 -2
  131. package/dist/observability/index.js +2 -2
  132. package/dist/runtime/portable.d.ts +33 -0
  133. package/dist/runtime/portable.js +17 -6
  134. package/dist/server/access-policy-metadata.d.ts +92 -0
  135. package/dist/server/access-policy-metadata.js +78 -0
  136. package/dist/server/engine-event-feed-backend.d.ts +22 -3
  137. package/dist/server/fault-to-http.d.ts +3 -7
  138. package/dist/server/fault-to-http.js +2 -34
  139. package/dist/server/fleet-event-feed.d.ts +65 -0
  140. package/dist/server/handler/index.d.ts +11 -2
  141. package/dist/server/handler/index.js +8 -1
  142. package/dist/server/handler/route-dispatch.d.ts +10 -3
  143. package/dist/server/handler/route-dispatch.js +19 -4
  144. package/dist/server/handler.js +1 -56
  145. package/dist/server/index.d.ts +13 -2
  146. package/dist/server/index.js +88 -64
  147. package/dist/server/interactive-operations.js +2 -0
  148. package/dist/server/openapi-error-responses.js +55 -4
  149. package/dist/server/openapi.d.ts +3 -1
  150. package/dist/server/openapi.js +4 -0
  151. package/dist/server/openrpc-document-schema.d.ts +64 -0
  152. package/dist/server/openrpc-document-schema.js +6 -26
  153. package/dist/server/openrpc.d.ts +4 -0
  154. package/dist/server/openrpc.js +9 -33
  155. package/dist/server/operation-fault.d.ts +24 -7
  156. package/dist/server/operation-fault.js +65 -13
  157. package/dist/server/operations/aggregate-workflows.d.ts +6 -0
  158. package/dist/server/operations/aggregate-workflows.js +3 -2
  159. package/dist/server/operations/async-activity.d.ts +14 -0
  160. package/dist/server/operations/async-activity.js +88 -4
  161. package/dist/server/operations/bulk-filter-helpers.d.ts +3 -0
  162. package/dist/server/operations/bulk-filter-helpers.js +27 -3
  163. package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +6 -0
  164. package/dist/server/operations/bulk-signal-workflows.d.ts +6 -0
  165. package/dist/server/operations/get-stream-chunks.js +2 -7
  166. package/dist/server/operations/get-system-lease.d.ts +19 -0
  167. package/dist/server/operations/get-system-lease.js +48 -0
  168. package/dist/server/operations/get-workflow-observability.d.ts +24 -0
  169. package/dist/server/operations/get-workflow-observability.js +80 -0
  170. package/dist/server/operations/get-workflow-result.js +2 -2
  171. package/dist/server/operations/get-workflow.d.ts +2 -2
  172. package/dist/server/operations/list-filter-query-extractor.js +15 -0
  173. package/dist/server/operations/list-workflows.d.ts +6 -0
  174. package/dist/server/operations/list-workflows.js +12 -3
  175. package/dist/server/operations/operation-helpers.d.ts +9 -18
  176. package/dist/server/operations/operation-helpers.js +5 -23
  177. package/dist/server/operations/purge-workflows.d.ts +3 -0
  178. package/dist/server/operations/recover-all.js +2 -1
  179. package/dist/server/operations/single-workflow-tag-mutation.js +2 -2
  180. package/dist/server/operations/sse-stream.js +2 -7
  181. package/dist/server/operations/storage-capabilities.d.ts +34 -0
  182. package/dist/server/operations/storage-capabilities.js +38 -0
  183. package/dist/server/operations/storage.js +8 -17
  184. package/dist/server/operations/stream-workflow-sse.js +3 -9
  185. package/dist/server/operations/submit-review-decision.d.ts +2 -0
  186. package/dist/server/operations/submit-review-decision.js +19 -2
  187. package/dist/server/operations/update-schedule.d.ts +8 -0
  188. package/dist/server/operations/update-schedule.js +70 -7
  189. package/dist/server/operations/workflow-events-sse.js +2 -2
  190. package/dist/server/replay-live-feed-internals.d.ts +19 -0
  191. package/dist/server/replay-live-feed-internals.js +76 -0
  192. package/dist/server/rest-binding.d.ts +7 -6
  193. package/dist/server/rest-bindings.d.ts +2 -13
  194. package/dist/server/rest-bindings.js +19 -10
  195. package/dist/server/runtime/authentication-bridge.d.ts +2 -2
  196. package/dist/server/serve-internals.js +3 -3
  197. package/dist/server/task-queue.d.ts +7 -5
  198. package/dist/server/workflow-event-feed.d.ts +100 -11
  199. package/dist/server/workflow-event-feed.js +1 -140
  200. package/dist/service-worker/index.d.ts +8 -2
  201. package/dist/service-worker/index.js +37 -56
  202. package/dist/service-worker/setup.d.ts +6 -2
  203. package/dist/storage/auto.js +1 -1
  204. package/dist/storage/bun-sql.js +3 -3
  205. package/dist/storage/capabilities.d.ts +1 -1
  206. package/dist/storage/cloudflare-durable-object-sql.d.ts +75 -0
  207. package/dist/storage/cloudflare-durable-object-sql.js +0 -0
  208. package/dist/storage/cloudflare-value-codec.d.ts +67 -0
  209. package/dist/storage/cloudflare-value-codec.js +46 -0
  210. package/dist/storage/cloudflare.d.ts +140 -0
  211. package/dist/storage/cloudflare.js +127 -0
  212. package/dist/storage/compressed-storage.js +1 -1
  213. package/dist/storage/http.js +200 -2
  214. package/dist/storage/index.d.ts +8 -1
  215. package/dist/storage/indexeddb.js +311 -1
  216. package/dist/storage/interface.d.ts +16 -4
  217. package/dist/storage/interface.js +1 -1
  218. package/dist/storage/key-prefixes.d.ts +1 -1
  219. package/dist/storage/key-prefixes.js +4 -0
  220. package/dist/storage/lmdb.js +1 -1
  221. package/dist/storage/memory.js +1 -1
  222. package/dist/storage/neon.js +4 -4
  223. package/dist/storage/node-sqlite.js +3 -3
  224. package/dist/storage/postgres-key-value-queries.d.ts +6 -0
  225. package/dist/storage/postgres-key-value-queries.js +2 -3
  226. package/dist/storage/postgres.js +4 -4
  227. package/dist/storage/resolve.js +1 -1
  228. package/dist/storage/scoped-storage.js +1 -1
  229. package/dist/storage/sql-identifier.d.ts +35 -0
  230. package/dist/storage/sql-identifier.js +5 -0
  231. package/dist/storage/sqlite-key-value-queries.d.ts +11 -6
  232. package/dist/storage/sqlite-key-value-queries.js +3 -3
  233. package/dist/storage/testing.js +1 -1
  234. package/dist/storage/turso.js +2 -2
  235. package/dist/storage/typed-storage.js +138 -2
  236. package/dist/storage/web-extension.js +298 -1
  237. package/dist/testing/index.js +21 -60
  238. package/dist/version.d.ts +1 -1
  239. package/dist/version.js +1 -1
  240. package/dist/web-extension.js +1 -0
  241. package/dist/worker/protocol.js +1 -1
  242. package/package.json +8 -3
@@ -1,7 +1,25 @@
1
1
  import { type CatalogWeftClient, type WeftClientConnection } from '../operation-client-runtime.ts';
2
- export declare const CATALOG_OPERATION_NAMES: readonly ["weft.activities.complete", "weft.activities.fail", "weft.recover.all", "weft.retention.get", "weft.reviews.decision.submit", "weft.reviews.get", "weft.reviews.list", "weft.schedules.cancel", "weft.schedules.create", "weft.schedules.get", "weft.schedules.list", "weft.schedules.pause", "weft.schedules.resume", "weft.schedules.update", "weft.system.metrics", "weft.system.registry", "weft.task.queues.list", "weft.tasks.diagnostics", "weft.updates.result.get", "weft.worker.deployments.drain", "weft.worker.deployments.resume", "weft.workers.drain", "weft.workers.list", "weft.workers.resume", "weft.workflows.aggregate", "weft.workflows.attributes.get", "weft.workflows.attributes.set", "weft.workflows.bulk.cancel", "weft.workflows.bulk.delete", "weft.workflows.bulk.retryfailed", "weft.workflows.bulk.signal", "weft.workflows.bulk.tags", "weft.workflows.cancel", "weft.workflows.checkpoints.get", "weft.workflows.checkpoints.list", "weft.workflows.events.list", "weft.workflows.fork", "weft.workflows.get", "weft.workflows.list", "weft.workflows.purge", "weft.workflows.query", "weft.workflows.replay", "weft.workflows.result.get", "weft.workflows.resume", "weft.workflows.signal", "weft.workflows.start", "weft.workflows.startorsignal", "weft.workflows.streams.chunks", "weft.workflows.suspend", "weft.workflows.tags.add", "weft.workflows.tags.remove", "weft.workflows.timeline.get", "weft.workflows.timeout", "weft.workflows.update"];
2
+ export declare const CATALOG_OPERATION_NAMES: readonly ["weft.activities.complete", "weft.activities.fail", "weft.recover.all", "weft.retention.get", "weft.reviews.decision.submit", "weft.reviews.get", "weft.reviews.list", "weft.schedules.cancel", "weft.schedules.create", "weft.schedules.get", "weft.schedules.list", "weft.schedules.pause", "weft.schedules.resume", "weft.schedules.update", "weft.storage.capabilities", "weft.system.lease", "weft.system.metrics", "weft.system.registry", "weft.task.queues.list", "weft.tasks.diagnostics", "weft.updates.result.get", "weft.worker.deployments.drain", "weft.worker.deployments.resume", "weft.workers.drain", "weft.workers.list", "weft.workers.resume", "weft.workflows.activities.pending.list", "weft.workflows.aggregate", "weft.workflows.attributes.get", "weft.workflows.attributes.set", "weft.workflows.bulk.cancel", "weft.workflows.bulk.delete", "weft.workflows.bulk.retryfailed", "weft.workflows.bulk.signal", "weft.workflows.bulk.tags", "weft.workflows.cancel", "weft.workflows.checkpoints.get", "weft.workflows.checkpoints.list", "weft.workflows.events.list", "weft.workflows.finalizer.get", "weft.workflows.fork", "weft.workflows.get", "weft.workflows.list", "weft.workflows.purge", "weft.workflows.query", "weft.workflows.replay", "weft.workflows.result.get", "weft.workflows.resume", "weft.workflows.scheduleprovenance.get", "weft.workflows.signal", "weft.workflows.start", "weft.workflows.startorsignal", "weft.workflows.streams.chunks", "weft.workflows.suspend", "weft.workflows.tags.add", "weft.workflows.tags.remove", "weft.workflows.timeline.get", "weft.workflows.timeout", "weft.workflows.update"];
3
3
  export type CatalogOperationName = (typeof CATALOG_OPERATION_NAMES)[number];
4
- type SharedAttributesBulkConcurrenc_73ecbca6 = {
4
+ export declare const CLIENT_OPERATION_NAMES: readonly ["weft.activities.complete", "weft.activities.fail", "weft.recover.all", "weft.retention.get", "weft.reviews.decision.submit", "weft.reviews.get", "weft.reviews.list", "weft.schedules.cancel", "weft.schedules.create", "weft.schedules.get", "weft.schedules.list", "weft.schedules.pause", "weft.schedules.resume", "weft.schedules.update", "weft.storage.capabilities", "weft.system.lease", "weft.system.metrics", "weft.system.registry", "weft.task.queues.list", "weft.tasks.diagnostics", "weft.tasks.diagnostics.deadletters.clear", "weft.updates.result.get", "weft.worker.deployments.drain", "weft.worker.deployments.resume", "weft.workers.drain", "weft.workers.list", "weft.workers.resume", "weft.workflows.activities.pending.list", "weft.workflows.aggregate", "weft.workflows.attributes.get", "weft.workflows.attributes.set", "weft.workflows.bulk.cancel", "weft.workflows.bulk.delete", "weft.workflows.bulk.retryfailed", "weft.workflows.bulk.signal", "weft.workflows.bulk.tags", "weft.workflows.cancel", "weft.workflows.checkpoints.get", "weft.workflows.checkpoints.list", "weft.workflows.events.list", "weft.workflows.finalizer.get", "weft.workflows.fork", "weft.workflows.get", "weft.workflows.list", "weft.workflows.purge", "weft.workflows.query", "weft.workflows.replay", "weft.workflows.result.get", "weft.workflows.resume", "weft.workflows.scheduleprovenance.get", "weft.workflows.signal", "weft.workflows.start", "weft.workflows.startorsignal", "weft.workflows.streams.chunks", "weft.workflows.suspend", "weft.workflows.tags.add", "weft.workflows.tags.remove", "weft.workflows.timeline.get", "weft.workflows.timeout", "weft.workflows.update"];
5
+ export type ClientOperationName = (typeof CLIENT_OPERATION_NAMES)[number];
6
+ export declare const CLIENT_REST_OPERATION_BINDINGS: {
7
+ readonly 'weft.tasks.diagnostics.deadletters.clear': {
8
+ readonly method: "DELETE";
9
+ readonly path: "/tasks/diagnostics/dead-letter/:operationId";
10
+ readonly inputSources: {
11
+ readonly operationId: {
12
+ readonly kind: "path";
13
+ readonly pathParam: "operationId";
14
+ };
15
+ };
16
+ readonly success: {
17
+ readonly kind: "json";
18
+ readonly status: 200;
19
+ };
20
+ };
21
+ };
22
+ type SharedAttributesBulkConcurrenc_f62debcf = {
5
23
  readonly attributes?: ReadonlyArray<SharedGtGteKey_896a0c41>;
6
24
  readonly bulkConcurrency?: number;
7
25
  readonly confirmationToken?: string;
@@ -12,13 +30,16 @@ type SharedAttributesBulkConcurrenc_73ecbca6 = {
12
30
  readonly idPrefix?: string;
13
31
  readonly limit?: number;
14
32
  readonly offset?: number;
33
+ readonly parentWorkflowExecutionToken?: string;
34
+ readonly parentWorkflowId?: string;
15
35
  readonly requestId?: string;
36
+ readonly scheduleId?: string;
16
37
  readonly status?: unknown;
17
38
  readonly tags?: ReadonlyArray<string>;
18
39
  readonly type?: string;
19
40
  readonly updatedAt?: SharedGtGteLt_d9a61361;
20
41
  };
21
- type SharedAttributesCreatedAtExecu_c9ba5dc6 = {
42
+ type SharedAttributesCreatedAtExecu_2af7f9ff = {
22
43
  readonly attributes?: ReadonlyArray<SharedGtGteKey_896a0c41>;
23
44
  readonly createdAt?: SharedGtGteLt_d9a61361;
24
45
  readonly executionDeadline?: SharedGtGteLt_d9a61361;
@@ -26,6 +47,9 @@ type SharedAttributesCreatedAtExecu_c9ba5dc6 = {
26
47
  readonly idPrefix?: string;
27
48
  readonly limit?: number;
28
49
  readonly offset?: number;
50
+ readonly parentWorkflowExecutionToken?: string;
51
+ readonly parentWorkflowId?: string;
52
+ readonly scheduleId?: string;
29
53
  readonly status?: unknown;
30
54
  readonly tags?: ReadonlyArray<string>;
31
55
  readonly type?: string;
@@ -45,7 +69,7 @@ type SharedGtGteLt_d9a61361 = {
45
69
  readonly lt?: number;
46
70
  readonly lte?: number;
47
71
  };
48
- export type CatalogOperationTypes = {
72
+ export type ClientOperationTypes = {
49
73
  'weft.activities.complete': {
50
74
  readonly input: {
51
75
  readonly result?: unknown;
@@ -87,6 +111,7 @@ export type CatalogOperationTypes = {
87
111
  readonly feedback?: unknown;
88
112
  readonly reviewId: string;
89
113
  readonly reviewer?: unknown;
114
+ readonly sectionDecisions?: unknown;
90
115
  readonly workflowId?: unknown;
91
116
  };
92
117
  readonly output: {
@@ -170,12 +195,43 @@ export type CatalogOperationTypes = {
170
195
  };
171
196
  'weft.schedules.update': {
172
197
  readonly input: {
198
+ readonly backfill?: unknown;
173
199
  readonly cronExpression?: unknown;
200
+ readonly description?: unknown;
174
201
  readonly every?: unknown;
202
+ readonly jitter?: unknown;
203
+ readonly overlap?: unknown;
175
204
  readonly scheduleId: string;
176
205
  };
177
206
  readonly output: null;
178
- readonly faults: 'Conflict' | 'NotFound';
207
+ readonly faults: 'Conflict' | 'InvalidParams' | 'NotFound';
208
+ };
209
+ 'weft.storage.capabilities': {
210
+ readonly input: {};
211
+ readonly output: {
212
+ readonly atomicBatch: boolean;
213
+ readonly boundedRangeDelete: boolean;
214
+ readonly conditionalBatch: boolean;
215
+ readonly persistence: 'ephemeral' | 'local' | 'remote';
216
+ readonly readAfterWrite: 'linearizable' | 'session' | 'eventual';
217
+ readonly scanConsistency: 'snapshot' | 'best-effort';
218
+ };
219
+ readonly faults: never;
220
+ };
221
+ 'weft.system.lease': {
222
+ readonly input: {};
223
+ readonly output: {
224
+ readonly expiresAt?: number;
225
+ readonly fencingEpoch?: number;
226
+ readonly heldSince?: number;
227
+ readonly holderId?: string;
228
+ readonly holdsLease: boolean;
229
+ readonly lastRenewedAt?: number;
230
+ readonly lossReason?: 'deposed' | 'renewal-unconfirmable';
231
+ readonly mode: 'none' | 'lease';
232
+ readonly status: 'disabled' | 'healthy' | 'no-lease' | 'contested';
233
+ };
234
+ readonly faults: never;
179
235
  };
180
236
  'weft.system.metrics': {
181
237
  readonly input: {};
@@ -250,6 +306,15 @@ export type CatalogOperationTypes = {
250
306
  };
251
307
  readonly faults: never;
252
308
  };
309
+ 'weft.tasks.diagnostics.deadletters.clear': {
310
+ readonly input: {
311
+ readonly operationId: string;
312
+ };
313
+ readonly output: {
314
+ readonly ok: boolean;
315
+ };
316
+ readonly faults: never;
317
+ };
253
318
  'weft.updates.result.get': {
254
319
  readonly input: {
255
320
  readonly updateId: string;
@@ -325,6 +390,25 @@ export type CatalogOperationTypes = {
325
390
  readonly output: unknown;
326
391
  readonly faults: 'NotFound';
327
392
  };
393
+ 'weft.workflows.activities.pending.list': {
394
+ readonly input: {
395
+ readonly cursor?: string;
396
+ readonly limit: number;
397
+ readonly workflowId: string;
398
+ };
399
+ readonly output: {
400
+ readonly items: ReadonlyArray<{
401
+ readonly activityName: string;
402
+ readonly attempt: number;
403
+ readonly createdAt: number;
404
+ readonly operationId: string;
405
+ readonly step: number;
406
+ readonly token: string;
407
+ }>;
408
+ readonly nextCursor?: string;
409
+ };
410
+ readonly faults: 'InvalidParams' | 'NotFound';
411
+ };
328
412
  'weft.workflows.aggregate': {
329
413
  readonly input: {
330
414
  readonly attributes?: ReadonlyArray<{
@@ -341,6 +425,9 @@ export type CatalogOperationTypes = {
341
425
  readonly groupBy: unknown;
342
426
  readonly idPrefix?: string;
343
427
  readonly limit?: number;
428
+ readonly parentWorkflowExecutionToken?: string;
429
+ readonly parentWorkflowId?: string;
430
+ readonly scheduleId?: string;
344
431
  readonly status?: unknown;
345
432
  readonly tags?: ReadonlyArray<string>;
346
433
  readonly type?: string;
@@ -374,17 +461,17 @@ export type CatalogOperationTypes = {
374
461
  readonly faults: never;
375
462
  };
376
463
  'weft.workflows.bulk.cancel': {
377
- readonly input: SharedAttributesBulkConcurrenc_73ecbca6;
464
+ readonly input: SharedAttributesBulkConcurrenc_f62debcf;
378
465
  readonly output: unknown;
379
466
  readonly faults: never;
380
467
  };
381
468
  'weft.workflows.bulk.delete': {
382
- readonly input: SharedAttributesBulkConcurrenc_73ecbca6;
469
+ readonly input: SharedAttributesBulkConcurrenc_f62debcf;
383
470
  readonly output: unknown;
384
471
  readonly faults: 'Unprocessable';
385
472
  };
386
473
  'weft.workflows.bulk.retryfailed': {
387
- readonly input: SharedAttributesBulkConcurrenc_73ecbca6;
474
+ readonly input: SharedAttributesBulkConcurrenc_f62debcf;
388
475
  readonly output: unknown;
389
476
  readonly faults: never;
390
477
  };
@@ -401,8 +488,11 @@ export type CatalogOperationTypes = {
401
488
  readonly limit?: number;
402
489
  readonly name: string;
403
490
  readonly offset?: number;
491
+ readonly parentWorkflowExecutionToken?: string;
492
+ readonly parentWorkflowId?: string;
404
493
  readonly payload?: unknown;
405
494
  readonly requestId?: string;
495
+ readonly scheduleId?: string;
406
496
  readonly status?: unknown;
407
497
  readonly tags?: ReadonlyArray<string>;
408
498
  readonly type?: string;
@@ -416,7 +506,7 @@ export type CatalogOperationTypes = {
416
506
  readonly bulkConcurrency?: number;
417
507
  readonly confirmationToken?: string;
418
508
  readonly dryRun?: boolean;
419
- readonly filter?: SharedAttributesCreatedAtExecu_c9ba5dc6;
509
+ readonly filter?: SharedAttributesCreatedAtExecu_2af7f9ff;
420
510
  readonly operation: 'add' | 'remove';
421
511
  readonly requestId?: string;
422
512
  readonly tags: ReadonlyArray<string>;
@@ -453,6 +543,13 @@ export type CatalogOperationTypes = {
453
543
  readonly output: unknown;
454
544
  readonly faults: 'NotFound';
455
545
  };
546
+ 'weft.workflows.finalizer.get': {
547
+ readonly input: {
548
+ readonly workflowId: string;
549
+ };
550
+ readonly output: unknown;
551
+ readonly faults: never;
552
+ };
456
553
  'weft.workflows.fork': {
457
554
  readonly input: {
458
555
  readonly fromStep?: unknown;
@@ -480,6 +577,9 @@ export type CatalogOperationTypes = {
480
577
  readonly include?: unknown;
481
578
  readonly limit?: number;
482
579
  readonly offset?: number;
580
+ readonly parentWorkflowExecutionToken?: string;
581
+ readonly parentWorkflowId?: string;
582
+ readonly scheduleId?: string;
483
583
  readonly status?: unknown;
484
584
  readonly tags?: ReadonlyArray<string>;
485
585
  readonly type?: string;
@@ -489,7 +589,7 @@ export type CatalogOperationTypes = {
489
589
  readonly faults: 'Unprocessable';
490
590
  };
491
591
  'weft.workflows.purge': {
492
- readonly input: SharedAttributesCreatedAtExecu_c9ba5dc6;
592
+ readonly input: SharedAttributesCreatedAtExecu_2af7f9ff;
493
593
  readonly output: unknown;
494
594
  readonly faults: never;
495
595
  };
@@ -526,6 +626,13 @@ export type CatalogOperationTypes = {
526
626
  };
527
627
  readonly faults: 'Conflict' | 'NotFound';
528
628
  };
629
+ 'weft.workflows.scheduleprovenance.get': {
630
+ readonly input: {
631
+ readonly workflowId: string;
632
+ };
633
+ readonly output: unknown;
634
+ readonly faults: never;
635
+ };
529
636
  'weft.workflows.signal': {
530
637
  readonly input: {
531
638
  readonly payload?: unknown;
@@ -644,6 +751,8 @@ export type CatalogOperationTypes = {
644
751
  readonly faults: 'Timeout' | 'Unprocessable';
645
752
  };
646
753
  };
754
+ export type CatalogOperationTypes = Pick<ClientOperationTypes, CatalogOperationName>;
647
755
  export type WeftClient = CatalogWeftClient<CatalogOperationTypes>;
756
+ export type ClientOperations = CatalogWeftClient<ClientOperationTypes>;
648
757
  export declare function createWeftClient(connection?: WeftClientConnection): WeftClient;
649
758
  export {};
@@ -17,6 +17,8 @@ export const CATALOG_OPERATION_NAMES = [
17
17
  "weft.schedules.pause",
18
18
  "weft.schedules.resume",
19
19
  "weft.schedules.update",
20
+ "weft.storage.capabilities",
21
+ "weft.system.lease",
20
22
  "weft.system.metrics",
21
23
  "weft.system.registry",
22
24
  "weft.task.queues.list",
@@ -27,6 +29,7 @@ export const CATALOG_OPERATION_NAMES = [
27
29
  "weft.workers.drain",
28
30
  "weft.workers.list",
29
31
  "weft.workers.resume",
32
+ "weft.workflows.activities.pending.list",
30
33
  "weft.workflows.aggregate",
31
34
  "weft.workflows.attributes.get",
32
35
  "weft.workflows.attributes.set",
@@ -39,6 +42,7 @@ export const CATALOG_OPERATION_NAMES = [
39
42
  "weft.workflows.checkpoints.get",
40
43
  "weft.workflows.checkpoints.list",
41
44
  "weft.workflows.events.list",
45
+ "weft.workflows.finalizer.get",
42
46
  "weft.workflows.fork",
43
47
  "weft.workflows.get",
44
48
  "weft.workflows.list",
@@ -47,6 +51,7 @@ export const CATALOG_OPERATION_NAMES = [
47
51
  "weft.workflows.replay",
48
52
  "weft.workflows.result.get",
49
53
  "weft.workflows.resume",
54
+ "weft.workflows.scheduleprovenance.get",
50
55
  "weft.workflows.signal",
51
56
  "weft.workflows.start",
52
57
  "weft.workflows.startorsignal",
@@ -57,7 +62,75 @@ export const CATALOG_OPERATION_NAMES = [
57
62
  "weft.workflows.timeline.get",
58
63
  "weft.workflows.timeout",
59
64
  "weft.workflows.update"
60
- ];
65
+ ], CLIENT_OPERATION_NAMES = [
66
+ "weft.activities.complete",
67
+ "weft.activities.fail",
68
+ "weft.recover.all",
69
+ "weft.retention.get",
70
+ "weft.reviews.decision.submit",
71
+ "weft.reviews.get",
72
+ "weft.reviews.list",
73
+ "weft.schedules.cancel",
74
+ "weft.schedules.create",
75
+ "weft.schedules.get",
76
+ "weft.schedules.list",
77
+ "weft.schedules.pause",
78
+ "weft.schedules.resume",
79
+ "weft.schedules.update",
80
+ "weft.storage.capabilities",
81
+ "weft.system.lease",
82
+ "weft.system.metrics",
83
+ "weft.system.registry",
84
+ "weft.task.queues.list",
85
+ "weft.tasks.diagnostics",
86
+ "weft.tasks.diagnostics.deadletters.clear",
87
+ "weft.updates.result.get",
88
+ "weft.worker.deployments.drain",
89
+ "weft.worker.deployments.resume",
90
+ "weft.workers.drain",
91
+ "weft.workers.list",
92
+ "weft.workers.resume",
93
+ "weft.workflows.activities.pending.list",
94
+ "weft.workflows.aggregate",
95
+ "weft.workflows.attributes.get",
96
+ "weft.workflows.attributes.set",
97
+ "weft.workflows.bulk.cancel",
98
+ "weft.workflows.bulk.delete",
99
+ "weft.workflows.bulk.retryfailed",
100
+ "weft.workflows.bulk.signal",
101
+ "weft.workflows.bulk.tags",
102
+ "weft.workflows.cancel",
103
+ "weft.workflows.checkpoints.get",
104
+ "weft.workflows.checkpoints.list",
105
+ "weft.workflows.events.list",
106
+ "weft.workflows.finalizer.get",
107
+ "weft.workflows.fork",
108
+ "weft.workflows.get",
109
+ "weft.workflows.list",
110
+ "weft.workflows.purge",
111
+ "weft.workflows.query",
112
+ "weft.workflows.replay",
113
+ "weft.workflows.result.get",
114
+ "weft.workflows.resume",
115
+ "weft.workflows.scheduleprovenance.get",
116
+ "weft.workflows.signal",
117
+ "weft.workflows.start",
118
+ "weft.workflows.startorsignal",
119
+ "weft.workflows.streams.chunks",
120
+ "weft.workflows.suspend",
121
+ "weft.workflows.tags.add",
122
+ "weft.workflows.tags.remove",
123
+ "weft.workflows.timeline.get",
124
+ "weft.workflows.timeout",
125
+ "weft.workflows.update"
126
+ ], CLIENT_REST_OPERATION_BINDINGS = {
127
+ "weft.tasks.diagnostics.deadletters.clear": {
128
+ method: "DELETE",
129
+ path: "/tasks/diagnostics/dead-letter/:operationId",
130
+ inputSources: { operationId: { kind: "path", pathParam: "operationId" } },
131
+ success: { kind: "json", status: 200 }
132
+ }
133
+ };
61
134
  export function createWeftClient(connection = {}) {
62
135
  return createCatalogWeftClient(CATALOG_OPERATION_NAMES, httpJsonRpcTransport(connection));
63
136
  }
package/dist/cli/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env bun
1
2
  export { removeRunLockfile, writeRunLockfile } from "../connection.js";
2
3
  export { executeApi } from "./api.js";
3
4
  export { executeCodegen } from "./codegen.js";
@@ -1,5 +1,12 @@
1
- import type { OperationKind, TransportAvailability } from '../server/operation-catalog.ts';
1
+ import type { ErasedOperation, OperationKind, TransportAvailability } from '../server/operation-catalog.ts';
2
2
  import type { FaultCode } from '../server/operation-fault.ts';
3
+ import type { ParamSource, ResponseShape } from '../server/rest-binding.ts';
4
+ export type CatalogRestBindingSnapshot = {
5
+ readonly method: string;
6
+ readonly path: string;
7
+ readonly inputSources: Readonly<Record<string, ParamSource>>;
8
+ readonly success: ResponseShape;
9
+ };
3
10
  export type CatalogAccessSnapshot = {
4
11
  readonly kind: 'public';
5
12
  } | {
@@ -36,11 +43,13 @@ export type CatalogOperationSnapshot = {
36
43
  readonly inputSchema: Record<string, unknown>;
37
44
  readonly outputSchema: Record<string, unknown>;
38
45
  readonly eventSchema?: Record<string, unknown>;
46
+ /** Declarative REST route metadata for generated client transports. */
47
+ readonly rest?: CatalogRestBindingSnapshot;
39
48
  };
40
49
  export type CatalogSnapshot = {
41
50
  readonly generatedBy: 'weft catalog snapshot';
42
51
  readonly version: 1;
43
52
  readonly operations: ReadonlyArray<CatalogOperationSnapshot>;
44
53
  };
45
- export declare function createCatalogSnapshot(): CatalogSnapshot;
54
+ export declare function createCatalogSnapshot(sourceOperations?: ReadonlyArray<ErasedOperation>): CatalogSnapshot;
46
55
  export declare function stringifyCatalogSnapshot(snapshot: CatalogSnapshot): string;
@@ -1,18 +1,19 @@
1
1
  import { definitionSchemaToJsonSchema } from "../core/types/definition-schema-to-json.js";
2
2
  import { compareStrings, normalizeJsonObject } from "../server/json-schema-utilities.js";
3
- import { createLiveOperationRegistry } from "../server/rest-bindings.js";
4
- export function createCatalogSnapshot() {
3
+ import { createLiveOperationRegistry, createLiveRestBindings } from "../server/rest-bindings.js";
4
+ export function createCatalogSnapshot(sourceOperations = createLiveOperationRegistry().list()) {
5
+ const restBindings = new Map(createLiveRestBindings().map((binding) => [binding.operationName, binding]));
5
6
  return {
6
7
  generatedBy: "weft catalog snapshot",
7
8
  version: 1,
8
- operations: createLiveOperationRegistry().list().map(operationToSnapshot).toSorted((left, right) => compareStrings(left.name, right.name))
9
+ operations: sourceOperations.map((operation) => operationToSnapshot(operation, (operation.kind ?? "unary") === "unary" && operation.transports.http && !operation.transports.jsonRpcHttp && !operation.tags.includes("Storage") ? restBindings.get(operation.name) : void 0)).toSorted((left, right) => compareStrings(left.name, right.name))
9
10
  };
10
11
  }
11
12
  export function stringifyCatalogSnapshot(snapshot) {
12
13
  return `${JSON.stringify(snapshot, null, 2)}
13
14
  `;
14
15
  }
15
- function operationToSnapshot(operation) {
16
+ function operationToSnapshot(operation, restBinding) {
16
17
  const eventSchema = operation.eventSchema;
17
18
  return {
18
19
  name: operation.name,
@@ -27,7 +28,15 @@ function operationToSnapshot(operation) {
27
28
  producibleFaults: [...operation.producibleFaults ?? []].toSorted(compareStrings),
28
29
  inputSchema: normalizeJsonObject(definitionSchemaToJsonSchema(operation.inputSchema, "input")),
29
30
  outputSchema: normalizeJsonObject(definitionSchemaToJsonSchema(operation.outputSchema, "output")),
30
- ...eventSchema === void 0 ? {} : { eventSchema: normalizeJsonObject(definitionSchemaToJsonSchema(eventSchema, "output")) }
31
+ ...eventSchema === void 0 ? {} : { eventSchema: normalizeJsonObject(definitionSchemaToJsonSchema(eventSchema, "output")) },
32
+ ...restBinding === void 0 ? {} : {
33
+ rest: {
34
+ method: restBinding.method,
35
+ path: restBinding.path,
36
+ inputSources: Object.fromEntries(Object.entries(restBinding.inputSources).filter((entry) => entry[1] !== void 0)),
37
+ success: { ...restBinding.success }
38
+ }
39
+ }
31
40
  };
32
41
  }
33
42
  function parameterizedAccessToSnapshot(hint) {
@@ -33,6 +33,35 @@ export type WeftClientConnection = ConnectionOptions;
33
33
  * one generated surface instead of drifting apart.
34
34
  */
35
35
  export type CatalogTransport = (operationName: string, input: unknown) => Promise<unknown>;
36
+ /** Generated metadata needed to map a typed client operation onto REST. */
37
+ export type ClientRestOperationBinding = {
38
+ readonly method: string;
39
+ readonly path: string;
40
+ readonly inputSources: Readonly<Record<string, {
41
+ readonly kind: 'path';
42
+ readonly pathParam: string;
43
+ } | {
44
+ readonly kind: 'query';
45
+ readonly queryParam: string;
46
+ readonly repeating?: boolean;
47
+ } | {
48
+ readonly kind: 'header';
49
+ readonly headerName: string;
50
+ } | {
51
+ readonly kind: 'body';
52
+ readonly mediaType?: 'application/json';
53
+ } | {
54
+ readonly kind: 'body-field';
55
+ readonly bodyField: string;
56
+ }>>;
57
+ readonly success: {
58
+ readonly kind: 'json';
59
+ readonly status: number;
60
+ } | {
61
+ readonly kind: 'empty';
62
+ readonly status: number;
63
+ };
64
+ };
36
65
  /**
37
66
  * Build a catalog client from a list of operation names and a transport. Each
38
67
  * name becomes a method that forwards its input through the transport, so the