rivetkit 2.3.30 → 3.0.0-preview.1

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 (135) hide show
  1. package/dist/browser/client.d.ts +58 -9
  2. package/dist/browser/client.js +193 -20
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +1 -2
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/{chunk-5UUOECX2.cjs → chunk-3E2BPHQO.cjs} +10 -10
  7. package/dist/tsup/{chunk-5UUOECX2.cjs.map → chunk-3E2BPHQO.cjs.map} +1 -1
  8. package/dist/tsup/{chunk-I472KTIC.js → chunk-3MMTF3QA.js} +188 -28
  9. package/dist/tsup/chunk-3MMTF3QA.js.map +1 -0
  10. package/dist/tsup/{chunk-CORYIKDC.js → chunk-5OCN7VHH.js} +10 -11
  11. package/dist/tsup/chunk-5OCN7VHH.js.map +1 -0
  12. package/dist/tsup/{chunk-OJFVABRH.cjs → chunk-6DDQSAAT.cjs} +7 -7
  13. package/dist/tsup/{chunk-OJFVABRH.cjs.map → chunk-6DDQSAAT.cjs.map} +1 -1
  14. package/dist/tsup/{chunk-JI6GZ2C2.js → chunk-A2CF6PFH.js} +18 -1
  15. package/dist/tsup/chunk-A2CF6PFH.js.map +1 -0
  16. package/dist/tsup/{chunk-P2PHHJMH.cjs → chunk-CTQKKUZC.cjs} +327 -167
  17. package/dist/tsup/chunk-CTQKKUZC.cjs.map +1 -0
  18. package/dist/tsup/{chunk-H3SGQEHZ.js → chunk-DCDCHB5J.js} +2 -2
  19. package/dist/tsup/{chunk-EKAQ7HG2.js → chunk-DQ6K3VVV.js} +3 -3
  20. package/dist/tsup/{chunk-OUB7SGSA.js → chunk-H6W37YLT.js} +2 -2
  21. package/dist/tsup/{chunk-5SN6GAYX.cjs → chunk-HW2D5OFJ.cjs} +3 -3
  22. package/dist/tsup/{chunk-5SN6GAYX.cjs.map → chunk-HW2D5OFJ.cjs.map} +1 -1
  23. package/dist/tsup/{chunk-2BIRGEIU.cjs → chunk-IBEFA6CX.cjs} +10 -11
  24. package/dist/tsup/chunk-IBEFA6CX.cjs.map +1 -0
  25. package/dist/tsup/{chunk-GEUBEODU.cjs → chunk-JLBPBEWC.cjs} +3 -3
  26. package/dist/tsup/{chunk-GEUBEODU.cjs.map → chunk-JLBPBEWC.cjs.map} +1 -1
  27. package/dist/tsup/{chunk-4SNS3PYZ.js → chunk-KQ2WQDYT.js} +2 -2
  28. package/dist/tsup/{chunk-MYWZCDML.cjs → chunk-RTWH3AX3.cjs} +19 -2
  29. package/dist/tsup/chunk-RTWH3AX3.cjs.map +1 -0
  30. package/dist/tsup/{chunk-6LOYTFPZ.js → chunk-SJPPKBT3.js} +2 -2
  31. package/dist/tsup/{chunk-MXV26ZBB.js → chunk-TBJ4I3R3.js} +4 -4
  32. package/dist/tsup/{chunk-ZIIQQHC3.cjs → chunk-VCVV726P.cjs} +4 -4
  33. package/dist/tsup/{chunk-ZIIQQHC3.cjs.map → chunk-VCVV726P.cjs.map} +1 -1
  34. package/dist/tsup/{chunk-ABPZG7QV.cjs → chunk-XUO6G4H6.cjs} +3 -3
  35. package/dist/tsup/{chunk-ABPZG7QV.cjs.map → chunk-XUO6G4H6.cjs.map} +1 -1
  36. package/dist/tsup/client/mod.cjs +6 -6
  37. package/dist/tsup/client/mod.d.cts +15 -3
  38. package/dist/tsup/client/mod.d.ts +15 -3
  39. package/dist/tsup/client/mod.js +5 -5
  40. package/dist/tsup/common/log.cjs +2 -2
  41. package/dist/tsup/common/log.js +1 -1
  42. package/dist/tsup/common/websocket.cjs +3 -3
  43. package/dist/tsup/common/websocket.js +2 -2
  44. package/dist/tsup/{config-osdJqQwX.d.cts → config-8NgsxIcT.d.cts} +43 -12
  45. package/dist/tsup/{config-ey2I2zz5.d.ts → config-B2wlj9wx.d.cts} +7 -1
  46. package/dist/tsup/{config-ey2I2zz5.d.cts → config-B2wlj9wx.d.ts} +7 -1
  47. package/dist/tsup/{config-Cv6pjCt-.d.ts → config-DJ3KW-fe.d.ts} +43 -12
  48. package/dist/tsup/{context-CoVbKBuk.d.ts → context-BL8kUGjq.d.ts} +2 -2
  49. package/dist/tsup/{context-DpjrM7n7.d.cts → context-_RoE_YHL.d.cts} +2 -2
  50. package/dist/tsup/db/drizzle.cjs +2 -2
  51. package/dist/tsup/db/drizzle.d.cts +1 -1
  52. package/dist/tsup/db/drizzle.d.ts +1 -1
  53. package/dist/tsup/db/drizzle.js +1 -1
  54. package/dist/tsup/db/mod.cjs +3 -3
  55. package/dist/tsup/db/mod.d.cts +2 -2
  56. package/dist/tsup/db/mod.d.ts +2 -2
  57. package/dist/tsup/db/mod.js +2 -2
  58. package/dist/tsup/dynamic/mod.d.cts +2 -2
  59. package/dist/tsup/dynamic/mod.d.ts +2 -2
  60. package/dist/tsup/inspector/mod.cjs +5 -5
  61. package/dist/tsup/inspector/mod.js +4 -4
  62. package/dist/tsup/inspector/workflow.cjs +4 -4
  63. package/dist/tsup/inspector/workflow.js +3 -3
  64. package/dist/tsup/inspector-tab/mod.d.cts +3 -3
  65. package/dist/tsup/inspector-tab/mod.d.ts +3 -3
  66. package/dist/tsup/mod.cjs +254 -166
  67. package/dist/tsup/mod.cjs.map +1 -1
  68. package/dist/tsup/mod.d.cts +4 -4
  69. package/dist/tsup/mod.d.ts +4 -4
  70. package/dist/tsup/mod.js +168 -80
  71. package/dist/tsup/mod.js.map +1 -1
  72. package/dist/tsup/test/mod.cjs +7 -7
  73. package/dist/tsup/test/mod.d.cts +2 -2
  74. package/dist/tsup/test/mod.d.ts +2 -2
  75. package/dist/tsup/test/mod.js +5 -5
  76. package/dist/tsup/unstable/migrations.d.cts +1 -1
  77. package/dist/tsup/unstable/migrations.d.ts +1 -1
  78. package/dist/tsup/utils.cjs +2 -2
  79. package/dist/tsup/utils.js +1 -1
  80. package/dist/tsup/workflow/mod.cjs +17 -17
  81. package/dist/tsup/workflow/mod.d.cts +4 -4
  82. package/dist/tsup/workflow/mod.d.ts +4 -4
  83. package/dist/tsup/workflow/mod.js +5 -5
  84. package/package.json +9 -10
  85. package/src/actor/keys.ts +86 -0
  86. package/src/client/actor-conn.ts +92 -6
  87. package/src/client/actor-handle.ts +21 -3
  88. package/src/client/client.ts +6 -0
  89. package/src/client/config.ts +12 -1
  90. package/src/client/lifecycle-errors.ts +16 -1
  91. package/src/client/retry-budget.ts +78 -0
  92. package/src/client/utils.ts +13 -2
  93. package/src/common/database/config.ts +7 -1
  94. package/src/common/database/native-database.ts +17 -6
  95. package/src/common/router.ts +1 -1
  96. package/src/engine-api/actors.ts +3 -3
  97. package/src/engine-client/actor-websocket-client.ts +4 -2
  98. package/src/engine-client/api-endpoints.ts +44 -14
  99. package/src/engine-client/mod.ts +2 -2
  100. package/src/registry/config/envoy.ts +1 -1
  101. package/src/registry/config/index.ts +28 -31
  102. package/src/registry/index.ts +51 -19
  103. package/src/registry/napi-runtime.ts +3 -2
  104. package/src/registry/native.ts +126 -34
  105. package/src/registry/runtime.ts +27 -10
  106. package/src/registry/wasm-runtime.ts +6 -3
  107. package/src/utils/env-vars.ts +15 -10
  108. package/dist/tsup/chunk-2BIRGEIU.cjs.map +0 -1
  109. package/dist/tsup/chunk-CORYIKDC.js.map +0 -1
  110. package/dist/tsup/chunk-I472KTIC.js.map +0 -1
  111. package/dist/tsup/chunk-JI6GZ2C2.js.map +0 -1
  112. package/dist/tsup/chunk-MYWZCDML.cjs.map +0 -1
  113. package/dist/tsup/chunk-P2PHHJMH.cjs.map +0 -1
  114. package/src/actor/config.test.ts +0 -78
  115. package/src/actor/keys.test.ts +0 -275
  116. package/src/actor/utils.test.ts +0 -48
  117. package/src/client/test.ts +0 -44
  118. package/src/client/token-provider.test.ts +0 -86
  119. package/src/common/database/mod.test.ts +0 -364
  120. package/src/common/database/native-database.test.ts +0 -220
  121. package/src/common/inline-websocket-adapter.test.ts +0 -51
  122. package/src/db/drizzle.test.ts +0 -164
  123. package/src/registry/config/index.test.ts +0 -25
  124. package/src/registry/run-handler-coordinator.test.ts +0 -252
  125. package/src/registry/runtime.test.ts +0 -124
  126. package/src/unstable/migrations.test.ts +0 -170
  127. package/src/utils/endpoint-parser.test.ts +0 -206
  128. package/src/utils.test.ts +0 -34
  129. package/src/workflow/driver.test.ts +0 -62
  130. /package/dist/tsup/{chunk-H3SGQEHZ.js.map → chunk-DCDCHB5J.js.map} +0 -0
  131. /package/dist/tsup/{chunk-EKAQ7HG2.js.map → chunk-DQ6K3VVV.js.map} +0 -0
  132. /package/dist/tsup/{chunk-OUB7SGSA.js.map → chunk-H6W37YLT.js.map} +0 -0
  133. /package/dist/tsup/{chunk-4SNS3PYZ.js.map → chunk-KQ2WQDYT.js.map} +0 -0
  134. /package/dist/tsup/{chunk-6LOYTFPZ.js.map → chunk-SJPPKBT3.js.map} +0 -0
  135. /package/dist/tsup/{chunk-MXV26ZBB.js.map → chunk-TBJ4I3R3.js.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
2
 
3
- var _chunkABPZG7QVcjs = require('./chunk-ABPZG7QV.cjs');
3
+ var _chunkXUO6G4H6cjs = require('./chunk-XUO6G4H6.cjs');
4
4
 
5
5
 
6
- var _chunkZIIQQHC3cjs = require('./chunk-ZIIQQHC3.cjs');
6
+ var _chunkVCVV726Pcjs = require('./chunk-VCVV726P.cjs');
7
7
 
8
8
 
9
- var _chunk2BIRGEIUcjs = require('./chunk-2BIRGEIU.cjs');
9
+ var _chunkIBEFA6CXcjs = require('./chunk-IBEFA6CX.cjs');
10
10
 
11
11
  // src/workflow/inspector.ts
12
12
  function createHistoryEmitter() {
@@ -38,7 +38,7 @@ function createWorkflowInspectorAdapter() {
38
38
  };
39
39
  const update = (snapshot) => {
40
40
  const transportHistory = toWorkflowHistory(snapshot);
41
- const next = _chunkZIIQQHC3cjs.encodeWorkflowHistoryTransport.call(void 0, transportHistory);
41
+ const next = _chunkVCVV726Pcjs.encodeWorkflowHistoryTransport.call(void 0, transportHistory);
42
42
  history = next;
43
43
  emitter.emit(next);
44
44
  };
@@ -54,7 +54,7 @@ function createWorkflowInspectorAdapter() {
54
54
  };
55
55
  }
56
56
  function encodeCbor(value) {
57
- return _chunkABPZG7QVcjs.encodeWorkflowInspectorValue.call(void 0, value);
57
+ return _chunkXUO6G4H6cjs.encodeWorkflowInspectorValue.call(void 0, value);
58
58
  }
59
59
  function encodeOptionalCbor(value) {
60
60
  if (value === void 0) {
@@ -151,7 +151,7 @@ function toWorkflowEntryKind(kind) {
151
151
  }
152
152
  };
153
153
  default:
154
- _chunk2BIRGEIUcjs.assertUnreachable.call(void 0, kind);
154
+ _chunkIBEFA6CXcjs.assertUnreachable.call(void 0, kind);
155
155
  }
156
156
  }
157
157
  function toWorkflowEntry(entry) {
@@ -174,7 +174,7 @@ function toWorkflowEntryStatus(status) {
174
174
  case "exhausted":
175
175
  return "EXHAUSTED" /* EXHAUSTED */;
176
176
  default:
177
- _chunk2BIRGEIUcjs.assertUnreachable.call(void 0, status);
177
+ _chunkIBEFA6CXcjs.assertUnreachable.call(void 0, status);
178
178
  }
179
179
  }
180
180
  function toWorkflowSleepState(state) {
@@ -186,7 +186,7 @@ function toWorkflowSleepState(state) {
186
186
  case "interrupted":
187
187
  return "INTERRUPTED" /* INTERRUPTED */;
188
188
  default:
189
- _chunk2BIRGEIUcjs.assertUnreachable.call(void 0, state);
189
+ _chunkIBEFA6CXcjs.assertUnreachable.call(void 0, state);
190
190
  }
191
191
  }
192
192
  function toWorkflowBranchStatusType(status) {
@@ -202,7 +202,7 @@ function toWorkflowBranchStatusType(status) {
202
202
  case "cancelled":
203
203
  return "CANCELLED" /* CANCELLED */;
204
204
  default:
205
- _chunk2BIRGEIUcjs.assertUnreachable.call(void 0, status);
205
+ _chunkIBEFA6CXcjs.assertUnreachable.call(void 0, status);
206
206
  }
207
207
  }
208
208
  function toWorkflowBranchStatus(status) {
@@ -249,4 +249,4 @@ function toWorkflowHistory(snapshot) {
249
249
 
250
250
 
251
251
  exports.createWorkflowInspectorAdapter = createWorkflowInspectorAdapter;
252
- //# sourceMappingURL=chunk-5UUOECX2.cjs.map
252
+ //# sourceMappingURL=chunk-3E2BPHQO.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-5UUOECX2.cjs","../../src/workflow/inspector.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-5UUOECX2.cjs","sourcesContent":[null,"import type {\n\tBranchStatus,\n\tBranchStatusType,\n\tEntryKind,\n\tEntryStatus,\n\tLocation,\n\tSleepState,\n\tWorkflowEntryMetadataSnapshot,\n\tWorkflowHistoryEntry,\n\tWorkflowHistorySnapshot,\n\tWorkflowState,\n} from \"@rivetkit/workflow-engine\";\nimport * as transport from \"@/inspector/workflow\";\nimport {\n\tencodeWorkflowHistoryTransport,\n\tencodeWorkflowInspectorValue,\n\ttype WorkflowInspectorAdapter as PublicWorkflowInspectorAdapter,\n\ttype WorkflowHistoryBytes,\n} from \"@/inspector/workflow\";\nimport { assertUnreachable } from \"@/utils\";\n\ntype HistoryListener = (history: WorkflowHistoryBytes) => void;\n\nfunction createHistoryEmitter() {\n\tconst listeners = new Set<HistoryListener>();\n\n\treturn {\n\t\ton: (listener: HistoryListener) => {\n\t\t\tlisteners.add(listener);\n\t\t\treturn () => listeners.delete(listener);\n\t\t},\n\t\temit: (history: WorkflowHistoryBytes) => {\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener(history);\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport type WorkflowInspectorAdapter = PublicWorkflowInspectorAdapter;\n\nexport function createWorkflowInspectorAdapter(): {\n\tadapter: WorkflowInspectorAdapter;\n\tupdate: (snapshot: WorkflowHistorySnapshot) => void;\n\tsetGetState: (fn: () => Promise<WorkflowState | null>) => void;\n\tsetReplayFromStep: (\n\t\tfn: (entryId?: string) => Promise<WorkflowHistoryBytes | null>,\n\t) => void;\n} {\n\tconst emitter = createHistoryEmitter();\n\tlet history: WorkflowHistoryBytes | null = null;\n\tlet getState: () => Promise<WorkflowState | null> = async () => null;\n\tlet replayFromStep: (\n\t\tentryId?: string,\n\t) => Promise<WorkflowHistoryBytes | null> = async () => {\n\t\tthrow new Error(\"Workflow replay controls are not initialized\");\n\t};\n\n\tconst adapter: WorkflowInspectorAdapter = {\n\t\tgetHistory: () => history,\n\t\tgetState: async () => await getState(),\n\t\tonHistoryUpdated: (listener) => emitter.on(listener),\n\t\treplayFromStep: async (entryId) => await replayFromStep(entryId),\n\t};\n\n\tconst update = (snapshot: WorkflowHistorySnapshot) => {\n\t\tconst transportHistory = toWorkflowHistory(snapshot);\n\t\tconst next = encodeWorkflowHistoryTransport(transportHistory);\n\t\thistory = next;\n\t\temitter.emit(next);\n\t};\n\n\treturn {\n\t\tadapter,\n\t\tupdate,\n\t\tsetGetState: (fn) => {\n\t\t\tgetState = fn;\n\t\t},\n\t\tsetReplayFromStep: (fn) => {\n\t\t\treplayFromStep = fn;\n\t\t},\n\t};\n}\n\nfunction encodeCbor(value: unknown): ArrayBuffer {\n\treturn encodeWorkflowInspectorValue(value);\n}\n\nfunction encodeOptionalCbor(value: unknown): ArrayBuffer | null {\n\tif (value === undefined) {\n\t\treturn null;\n\t}\n\treturn encodeCbor(value);\n}\n\nfunction toU64(value: number): bigint {\n\treturn BigInt(Math.max(0, Math.floor(value)));\n}\n\nfunction toWorkflowLocation(location: Location): transport.WorkflowLocation {\n\treturn location.map((segment) => {\n\t\tif (typeof segment === \"number\") {\n\t\t\treturn { tag: \"WorkflowNameIndex\", val: segment };\n\t\t}\n\t\treturn {\n\t\t\ttag: \"WorkflowLoopIterationMarker\",\n\t\t\tval: {\n\t\t\t\tloop: segment.loop,\n\t\t\t\titeration: segment.iteration,\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction toWorkflowEntryKind(kind: EntryKind): transport.WorkflowEntryKind {\n\tswitch (kind.type) {\n\t\tcase \"step\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowStepEntry\",\n\t\t\t\tval: {\n\t\t\t\t\toutput: encodeOptionalCbor(kind.data.output),\n\t\t\t\t\terror: kind.data.error ?? null,\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"loop\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowLoopEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tstate: encodeCbor(kind.data.state),\n\t\t\t\t\titeration: kind.data.iteration,\n\t\t\t\t\toutput: encodeOptionalCbor(kind.data.output),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"sleep\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowSleepEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tdeadline: toU64(kind.data.deadline),\n\t\t\t\t\tstate: toWorkflowSleepState(kind.data.state),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"message\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowMessageEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tname: kind.data.name,\n\t\t\t\t\tmessageData: encodeCbor(kind.data.data),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"rollback_checkpoint\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowRollbackCheckpointEntry\",\n\t\t\t\tval: { name: kind.data.name },\n\t\t\t};\n\t\tcase \"join\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowJoinEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tbranches: toWorkflowBranchStatusMap(kind.data.branches),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"race\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowRaceEntry\",\n\t\t\t\tval: {\n\t\t\t\t\twinner: kind.data.winner ?? null,\n\t\t\t\t\tbranches: toWorkflowBranchStatusMap(kind.data.branches),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"removed\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowRemovedEntry\",\n\t\t\t\tval: {\n\t\t\t\t\toriginalType: kind.data.originalType,\n\t\t\t\t\toriginalName: kind.data.originalName ?? null,\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"version_check\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowVersionCheckEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tresolved: kind.data.resolved,\n\t\t\t\t\tlatest: kind.data.latest,\n\t\t\t\t},\n\t\t\t};\n\t\tdefault:\n\t\t\tassertUnreachable(kind as never);\n\t}\n}\n\nfunction toWorkflowEntry(entry: WorkflowHistoryEntry): transport.WorkflowEntry {\n\treturn {\n\t\tid: entry.id,\n\t\tlocation: toWorkflowLocation(entry.location),\n\t\tkind: toWorkflowEntryKind(entry.kind),\n\t};\n}\n\nfunction toWorkflowEntryStatus(\n\tstatus: EntryStatus,\n): transport.WorkflowEntryStatus {\n\tswitch (status) {\n\t\tcase \"pending\":\n\t\t\treturn transport.WorkflowEntryStatus.PENDING;\n\t\tcase \"running\":\n\t\t\treturn transport.WorkflowEntryStatus.RUNNING;\n\t\tcase \"completed\":\n\t\t\treturn transport.WorkflowEntryStatus.COMPLETED;\n\t\tcase \"failed\":\n\t\t\treturn transport.WorkflowEntryStatus.FAILED;\n\t\tcase \"exhausted\":\n\t\t\treturn transport.WorkflowEntryStatus.EXHAUSTED;\n\t\tdefault:\n\t\t\tassertUnreachable(status as never);\n\t}\n}\n\nfunction toWorkflowSleepState(state: SleepState): transport.WorkflowSleepState {\n\tswitch (state) {\n\t\tcase \"pending\":\n\t\t\treturn transport.WorkflowSleepState.PENDING;\n\t\tcase \"completed\":\n\t\t\treturn transport.WorkflowSleepState.COMPLETED;\n\t\tcase \"interrupted\":\n\t\t\treturn transport.WorkflowSleepState.INTERRUPTED;\n\t\tdefault:\n\t\t\tassertUnreachable(state as never);\n\t}\n}\n\nfunction toWorkflowBranchStatusType(\n\tstatus: BranchStatusType,\n): transport.WorkflowBranchStatusType {\n\tswitch (status) {\n\t\tcase \"pending\":\n\t\t\treturn transport.WorkflowBranchStatusType.PENDING;\n\t\tcase \"running\":\n\t\t\treturn transport.WorkflowBranchStatusType.RUNNING;\n\t\tcase \"completed\":\n\t\t\treturn transport.WorkflowBranchStatusType.COMPLETED;\n\t\tcase \"failed\":\n\t\t\treturn transport.WorkflowBranchStatusType.FAILED;\n\t\tcase \"cancelled\":\n\t\t\treturn transport.WorkflowBranchStatusType.CANCELLED;\n\t\tdefault:\n\t\t\tassertUnreachable(status as never);\n\t}\n}\n\nfunction toWorkflowBranchStatus(\n\tstatus: BranchStatus,\n): transport.WorkflowBranchStatus {\n\treturn {\n\t\tstatus: toWorkflowBranchStatusType(status.status),\n\t\toutput: encodeOptionalCbor(status.output),\n\t\terror: status.error ?? null,\n\t};\n}\n\nfunction toWorkflowBranchStatusMap(\n\tbranches: Record<string, BranchStatus>,\n): ReadonlyMap<string, transport.WorkflowBranchStatus> {\n\treturn new Map(\n\t\tObject.entries(branches).map(([name, status]) => [\n\t\t\tname,\n\t\t\ttoWorkflowBranchStatus(status),\n\t\t]),\n\t);\n}\n\nfunction toWorkflowEntryMetadata(\n\tmetadata: WorkflowEntryMetadataSnapshot,\n): transport.WorkflowEntryMetadata {\n\tconst rollbackCompletedAt = (\n\t\tmetadata as WorkflowEntryMetadataSnapshot & {\n\t\t\trollbackCompletedAt?: number;\n\t\t}\n\t).rollbackCompletedAt;\n\tconst rollbackError = (\n\t\tmetadata as WorkflowEntryMetadataSnapshot & {\n\t\t\trollbackError?: string | null;\n\t\t}\n\t).rollbackError;\n\n\treturn {\n\t\tstatus: toWorkflowEntryStatus(metadata.status),\n\t\terror: metadata.error ?? null,\n\t\tattempts: metadata.attempts,\n\t\tlastAttemptAt: toU64(metadata.lastAttemptAt),\n\t\tcreatedAt: toU64(metadata.createdAt),\n\t\tcompletedAt:\n\t\t\tmetadata.completedAt === undefined\n\t\t\t\t? null\n\t\t\t\t: toU64(metadata.completedAt),\n\t\trollbackCompletedAt:\n\t\t\trollbackCompletedAt === undefined\n\t\t\t\t? null\n\t\t\t\t: toU64(rollbackCompletedAt),\n\t\trollbackError: rollbackError ?? null,\n\t};\n}\n\nfunction toWorkflowHistory(\n\tsnapshot: WorkflowHistorySnapshot,\n): transport.WorkflowHistory {\n\tconst entryMetadata = new Map<string, transport.WorkflowEntryMetadata>();\n\tfor (const [id, metadata] of snapshot.entryMetadata) {\n\t\tentryMetadata.set(id, toWorkflowEntryMetadata(metadata));\n\t}\n\n\treturn {\n\t\tnameRegistry: [...snapshot.nameRegistry],\n\t\tentries: snapshot.entries.map(toWorkflowEntry),\n\t\tentryMetadata,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-3E2BPHQO.cjs","../../src/workflow/inspector.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-3E2BPHQO.cjs","sourcesContent":[null,"import type {\n\tBranchStatus,\n\tBranchStatusType,\n\tEntryKind,\n\tEntryStatus,\n\tLocation,\n\tSleepState,\n\tWorkflowEntryMetadataSnapshot,\n\tWorkflowHistoryEntry,\n\tWorkflowHistorySnapshot,\n\tWorkflowState,\n} from \"@rivetkit/workflow-engine\";\nimport * as transport from \"@/inspector/workflow\";\nimport {\n\tencodeWorkflowHistoryTransport,\n\tencodeWorkflowInspectorValue,\n\ttype WorkflowInspectorAdapter as PublicWorkflowInspectorAdapter,\n\ttype WorkflowHistoryBytes,\n} from \"@/inspector/workflow\";\nimport { assertUnreachable } from \"@/utils\";\n\ntype HistoryListener = (history: WorkflowHistoryBytes) => void;\n\nfunction createHistoryEmitter() {\n\tconst listeners = new Set<HistoryListener>();\n\n\treturn {\n\t\ton: (listener: HistoryListener) => {\n\t\t\tlisteners.add(listener);\n\t\t\treturn () => listeners.delete(listener);\n\t\t},\n\t\temit: (history: WorkflowHistoryBytes) => {\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener(history);\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport type WorkflowInspectorAdapter = PublicWorkflowInspectorAdapter;\n\nexport function createWorkflowInspectorAdapter(): {\n\tadapter: WorkflowInspectorAdapter;\n\tupdate: (snapshot: WorkflowHistorySnapshot) => void;\n\tsetGetState: (fn: () => Promise<WorkflowState | null>) => void;\n\tsetReplayFromStep: (\n\t\tfn: (entryId?: string) => Promise<WorkflowHistoryBytes | null>,\n\t) => void;\n} {\n\tconst emitter = createHistoryEmitter();\n\tlet history: WorkflowHistoryBytes | null = null;\n\tlet getState: () => Promise<WorkflowState | null> = async () => null;\n\tlet replayFromStep: (\n\t\tentryId?: string,\n\t) => Promise<WorkflowHistoryBytes | null> = async () => {\n\t\tthrow new Error(\"Workflow replay controls are not initialized\");\n\t};\n\n\tconst adapter: WorkflowInspectorAdapter = {\n\t\tgetHistory: () => history,\n\t\tgetState: async () => await getState(),\n\t\tonHistoryUpdated: (listener) => emitter.on(listener),\n\t\treplayFromStep: async (entryId) => await replayFromStep(entryId),\n\t};\n\n\tconst update = (snapshot: WorkflowHistorySnapshot) => {\n\t\tconst transportHistory = toWorkflowHistory(snapshot);\n\t\tconst next = encodeWorkflowHistoryTransport(transportHistory);\n\t\thistory = next;\n\t\temitter.emit(next);\n\t};\n\n\treturn {\n\t\tadapter,\n\t\tupdate,\n\t\tsetGetState: (fn) => {\n\t\t\tgetState = fn;\n\t\t},\n\t\tsetReplayFromStep: (fn) => {\n\t\t\treplayFromStep = fn;\n\t\t},\n\t};\n}\n\nfunction encodeCbor(value: unknown): ArrayBuffer {\n\treturn encodeWorkflowInspectorValue(value);\n}\n\nfunction encodeOptionalCbor(value: unknown): ArrayBuffer | null {\n\tif (value === undefined) {\n\t\treturn null;\n\t}\n\treturn encodeCbor(value);\n}\n\nfunction toU64(value: number): bigint {\n\treturn BigInt(Math.max(0, Math.floor(value)));\n}\n\nfunction toWorkflowLocation(location: Location): transport.WorkflowLocation {\n\treturn location.map((segment) => {\n\t\tif (typeof segment === \"number\") {\n\t\t\treturn { tag: \"WorkflowNameIndex\", val: segment };\n\t\t}\n\t\treturn {\n\t\t\ttag: \"WorkflowLoopIterationMarker\",\n\t\t\tval: {\n\t\t\t\tloop: segment.loop,\n\t\t\t\titeration: segment.iteration,\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction toWorkflowEntryKind(kind: EntryKind): transport.WorkflowEntryKind {\n\tswitch (kind.type) {\n\t\tcase \"step\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowStepEntry\",\n\t\t\t\tval: {\n\t\t\t\t\toutput: encodeOptionalCbor(kind.data.output),\n\t\t\t\t\terror: kind.data.error ?? null,\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"loop\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowLoopEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tstate: encodeCbor(kind.data.state),\n\t\t\t\t\titeration: kind.data.iteration,\n\t\t\t\t\toutput: encodeOptionalCbor(kind.data.output),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"sleep\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowSleepEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tdeadline: toU64(kind.data.deadline),\n\t\t\t\t\tstate: toWorkflowSleepState(kind.data.state),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"message\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowMessageEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tname: kind.data.name,\n\t\t\t\t\tmessageData: encodeCbor(kind.data.data),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"rollback_checkpoint\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowRollbackCheckpointEntry\",\n\t\t\t\tval: { name: kind.data.name },\n\t\t\t};\n\t\tcase \"join\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowJoinEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tbranches: toWorkflowBranchStatusMap(kind.data.branches),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"race\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowRaceEntry\",\n\t\t\t\tval: {\n\t\t\t\t\twinner: kind.data.winner ?? null,\n\t\t\t\t\tbranches: toWorkflowBranchStatusMap(kind.data.branches),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"removed\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowRemovedEntry\",\n\t\t\t\tval: {\n\t\t\t\t\toriginalType: kind.data.originalType,\n\t\t\t\t\toriginalName: kind.data.originalName ?? null,\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"version_check\":\n\t\t\treturn {\n\t\t\t\ttag: \"WorkflowVersionCheckEntry\",\n\t\t\t\tval: {\n\t\t\t\t\tresolved: kind.data.resolved,\n\t\t\t\t\tlatest: kind.data.latest,\n\t\t\t\t},\n\t\t\t};\n\t\tdefault:\n\t\t\tassertUnreachable(kind as never);\n\t}\n}\n\nfunction toWorkflowEntry(entry: WorkflowHistoryEntry): transport.WorkflowEntry {\n\treturn {\n\t\tid: entry.id,\n\t\tlocation: toWorkflowLocation(entry.location),\n\t\tkind: toWorkflowEntryKind(entry.kind),\n\t};\n}\n\nfunction toWorkflowEntryStatus(\n\tstatus: EntryStatus,\n): transport.WorkflowEntryStatus {\n\tswitch (status) {\n\t\tcase \"pending\":\n\t\t\treturn transport.WorkflowEntryStatus.PENDING;\n\t\tcase \"running\":\n\t\t\treturn transport.WorkflowEntryStatus.RUNNING;\n\t\tcase \"completed\":\n\t\t\treturn transport.WorkflowEntryStatus.COMPLETED;\n\t\tcase \"failed\":\n\t\t\treturn transport.WorkflowEntryStatus.FAILED;\n\t\tcase \"exhausted\":\n\t\t\treturn transport.WorkflowEntryStatus.EXHAUSTED;\n\t\tdefault:\n\t\t\tassertUnreachable(status as never);\n\t}\n}\n\nfunction toWorkflowSleepState(state: SleepState): transport.WorkflowSleepState {\n\tswitch (state) {\n\t\tcase \"pending\":\n\t\t\treturn transport.WorkflowSleepState.PENDING;\n\t\tcase \"completed\":\n\t\t\treturn transport.WorkflowSleepState.COMPLETED;\n\t\tcase \"interrupted\":\n\t\t\treturn transport.WorkflowSleepState.INTERRUPTED;\n\t\tdefault:\n\t\t\tassertUnreachable(state as never);\n\t}\n}\n\nfunction toWorkflowBranchStatusType(\n\tstatus: BranchStatusType,\n): transport.WorkflowBranchStatusType {\n\tswitch (status) {\n\t\tcase \"pending\":\n\t\t\treturn transport.WorkflowBranchStatusType.PENDING;\n\t\tcase \"running\":\n\t\t\treturn transport.WorkflowBranchStatusType.RUNNING;\n\t\tcase \"completed\":\n\t\t\treturn transport.WorkflowBranchStatusType.COMPLETED;\n\t\tcase \"failed\":\n\t\t\treturn transport.WorkflowBranchStatusType.FAILED;\n\t\tcase \"cancelled\":\n\t\t\treturn transport.WorkflowBranchStatusType.CANCELLED;\n\t\tdefault:\n\t\t\tassertUnreachable(status as never);\n\t}\n}\n\nfunction toWorkflowBranchStatus(\n\tstatus: BranchStatus,\n): transport.WorkflowBranchStatus {\n\treturn {\n\t\tstatus: toWorkflowBranchStatusType(status.status),\n\t\toutput: encodeOptionalCbor(status.output),\n\t\terror: status.error ?? null,\n\t};\n}\n\nfunction toWorkflowBranchStatusMap(\n\tbranches: Record<string, BranchStatus>,\n): ReadonlyMap<string, transport.WorkflowBranchStatus> {\n\treturn new Map(\n\t\tObject.entries(branches).map(([name, status]) => [\n\t\t\tname,\n\t\t\ttoWorkflowBranchStatus(status),\n\t\t]),\n\t);\n}\n\nfunction toWorkflowEntryMetadata(\n\tmetadata: WorkflowEntryMetadataSnapshot,\n): transport.WorkflowEntryMetadata {\n\tconst rollbackCompletedAt = (\n\t\tmetadata as WorkflowEntryMetadataSnapshot & {\n\t\t\trollbackCompletedAt?: number;\n\t\t}\n\t).rollbackCompletedAt;\n\tconst rollbackError = (\n\t\tmetadata as WorkflowEntryMetadataSnapshot & {\n\t\t\trollbackError?: string | null;\n\t\t}\n\t).rollbackError;\n\n\treturn {\n\t\tstatus: toWorkflowEntryStatus(metadata.status),\n\t\terror: metadata.error ?? null,\n\t\tattempts: metadata.attempts,\n\t\tlastAttemptAt: toU64(metadata.lastAttemptAt),\n\t\tcreatedAt: toU64(metadata.createdAt),\n\t\tcompletedAt:\n\t\t\tmetadata.completedAt === undefined\n\t\t\t\t? null\n\t\t\t\t: toU64(metadata.completedAt),\n\t\trollbackCompletedAt:\n\t\t\trollbackCompletedAt === undefined\n\t\t\t\t? null\n\t\t\t\t: toU64(rollbackCompletedAt),\n\t\trollbackError: rollbackError ?? null,\n\t};\n}\n\nfunction toWorkflowHistory(\n\tsnapshot: WorkflowHistorySnapshot,\n): transport.WorkflowHistory {\n\tconst entryMetadata = new Map<string, transport.WorkflowEntryMetadata>();\n\tfor (const [id, metadata] of snapshot.entryMetadata) {\n\t\tentryMetadata.set(id, toWorkflowEntryMetadata(metadata));\n\t}\n\n\treturn {\n\t\tnameRegistry: [...snapshot.nameRegistry],\n\t\tentries: snapshot.entries.map(toWorkflowEntry),\n\t\tentryMetadata,\n\t};\n}\n"]}
@@ -1,14 +1,15 @@
1
1
  import {
2
+ actorKeyToGatewayQuery,
2
3
  deserializeActorKey,
3
4
  serializeActorKey
4
- } from "./chunk-JI6GZ2C2.js";
5
- import {
6
- AsyncMutex
7
- } from "./chunk-JTHHCZCZ.js";
5
+ } from "./chunk-A2CF6PFH.js";
8
6
  import {
9
7
  importWebSocket,
10
8
  logger
11
- } from "./chunk-H3SGQEHZ.js";
9
+ } from "./chunk-DCDCHB5J.js";
10
+ import {
11
+ AsyncMutex
12
+ } from "./chunk-JTHHCZCZ.js";
12
13
  import {
13
14
  EncodingSchema,
14
15
  assertUnreachable,
@@ -35,7 +36,7 @@ import {
35
36
  serializeWithEncoding,
36
37
  stringifyError,
37
38
  uint8ArrayToBase64
38
- } from "./chunk-CORYIKDC.js";
39
+ } from "./chunk-5OCN7VHH.js";
39
40
  import {
40
41
  INTERNAL_ERROR_CODE,
41
42
  RivetError,
@@ -2176,6 +2177,56 @@ function readRequestBody(request) {
2176
2177
  ).arrayBuffer();
2177
2178
  }
2178
2179
 
2180
+ // src/client/retry-budget.ts
2181
+ var DEFAULT_PERCENT = 10;
2182
+ var DEFAULT_MAX_TOKENS = 100;
2183
+ var RetryBudget = class {
2184
+ #tokens;
2185
+ #maxTokens;
2186
+ #deposit;
2187
+ constructor(options = {}) {
2188
+ const percent = options.percent ?? DEFAULT_PERCENT;
2189
+ const maxTokens = options.maxTokens ?? DEFAULT_MAX_TOKENS;
2190
+ if (!(percent >= 0 && percent <= 100)) {
2191
+ throw new Error("retryBudget.percent must be in 0..=100");
2192
+ }
2193
+ if (!(maxTokens >= 0)) {
2194
+ throw new Error("retryBudget.maxTokens must be at least 0");
2195
+ }
2196
+ this.#maxTokens = maxTokens;
2197
+ this.#tokens = maxTokens;
2198
+ this.#deposit = percent / 100;
2199
+ }
2200
+ /** Credits one request sent. */
2201
+ deposit() {
2202
+ this.#tokens = Math.min(this.#maxTokens, this.#tokens + this.#deposit);
2203
+ }
2204
+ /** Spends one token. Returns `false` when the budget is spent. */
2205
+ tryWithdraw() {
2206
+ if (this.#tokens + 1e-9 < 1) {
2207
+ return false;
2208
+ }
2209
+ this.#tokens = Math.max(0, this.#tokens - 1);
2210
+ return true;
2211
+ }
2212
+ };
2213
+ function retryAfterMs(error) {
2214
+ if (!(error instanceof RivetError)) {
2215
+ return void 0;
2216
+ }
2217
+ const metadata = error.metadata;
2218
+ if (metadata === null || typeof metadata !== "object") {
2219
+ return void 0;
2220
+ }
2221
+ const hint = metadata.retry_after_ms;
2222
+ return typeof hint === "number" && hint >= 0 ? hint : void 0;
2223
+ }
2224
+ function retryDelayMs(attempt, opts) {
2225
+ const backoff = Math.min(opts.initialDelayMs * 2 ** attempt, opts.maxDelayMs);
2226
+ const jittered = backoff / 2 + Math.random() * (backoff / 2);
2227
+ return Math.max(jittered, opts.hintMs ?? 0);
2228
+ }
2229
+
2179
2230
  // src/client/lifecycle-errors.ts
2180
2231
  function* walkErrorChain(error, maxDepth = 8) {
2181
2232
  let current = error;
@@ -2351,9 +2402,11 @@ async function waitWithSignal(ms, signal) {
2351
2402
  });
2352
2403
  }
2353
2404
  async function retryOnLifecycleBoundary(run, opts) {
2405
+ var _a;
2354
2406
  const maxAttempts = (opts == null ? void 0 : opts.maxAttempts) ?? 5;
2355
2407
  const initialDelayMs = (opts == null ? void 0 : opts.initialDelayMs) ?? 25;
2356
2408
  const maxDelayMs = (opts == null ? void 0 : opts.maxDelayMs) ?? 200;
2409
+ (_a = opts == null ? void 0 : opts.budget) == null ? void 0 : _a.deposit();
2357
2410
  let lastError;
2358
2411
  for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
2359
2412
  throwIfAborted(opts == null ? void 0 : opts.signal);
@@ -2367,7 +2420,14 @@ async function retryOnLifecycleBoundary(run, opts) {
2367
2420
  if (attempt === maxAttempts - 1) {
2368
2421
  break;
2369
2422
  }
2370
- const delayMs = Math.min(initialDelayMs * 2 ** attempt, maxDelayMs);
2423
+ if ((opts == null ? void 0 : opts.budget) && !opts.budget.tryWithdraw()) {
2424
+ break;
2425
+ }
2426
+ const delayMs = retryDelayMs(attempt, {
2427
+ initialDelayMs,
2428
+ maxDelayMs,
2429
+ hintMs: retryAfterMs(error)
2430
+ });
2371
2431
  await waitWithSignal(delayMs, opts == null ? void 0 : opts.signal);
2372
2432
  }
2373
2433
  }
@@ -2460,17 +2520,22 @@ function addOutboundTelemetryHeaders(headers, telemetry) {
2460
2520
 
2461
2521
  // src/client/utils.ts
2462
2522
  import invariant from "invariant";
2523
+ var RETRY_AFTER_SUFFIX = /^retry_after_ms=(\d+)$/;
2463
2524
  function parseWebSocketCloseReason(reason) {
2464
- const [mainPart, rayId] = reason.split("#");
2525
+ const [mainPart, suffix] = reason.split("#");
2465
2526
  const [group, code] = mainPart.split(".");
2466
2527
  if (!group || !code) {
2467
2528
  logger().warn({ msg: "failed to parse close reason", reason });
2468
2529
  return void 0;
2469
2530
  }
2531
+ const retryAfter = suffix == null ? void 0 : suffix.match(RETRY_AFTER_SUFFIX);
2532
+ if (retryAfter) {
2533
+ return { group, code, retryAfterMs: Number(retryAfter[1]) };
2534
+ }
2470
2535
  return {
2471
2536
  group,
2472
2537
  code,
2473
- rayId
2538
+ rayId: suffix
2474
2539
  };
2475
2540
  }
2476
2541
  function messageLength(message) {
@@ -2868,6 +2933,7 @@ var ActorHandleRaw = class {
2868
2933
  #queueSendMutex = new AsyncMutex();
2869
2934
  #currentActorInvocation;
2870
2935
  #startCallSpan;
2936
+ #retryBudget;
2871
2937
  /**
2872
2938
  * Do not call this directly.
2873
2939
  *
@@ -2875,7 +2941,7 @@ var ActorHandleRaw = class {
2875
2941
  *
2876
2942
  * @protected
2877
2943
  */
2878
- constructor(client, driver, params, getParams, encoding, actorResolutionState, gatewayOptions = {}, signal, currentActorInvocation, startCallSpan) {
2944
+ constructor(client, driver, params, getParams, encoding, actorResolutionState, gatewayOptions = {}, signal, currentActorInvocation, startCallSpan, retryBudget = new RetryBudget()) {
2879
2945
  this.#client = client;
2880
2946
  this.#driver = driver;
2881
2947
  this.#encoding = encoding;
@@ -2886,6 +2952,7 @@ var ActorHandleRaw = class {
2886
2952
  this.#signal = signal;
2887
2953
  this.#currentActorInvocation = currentActorInvocation;
2888
2954
  this.#startCallSpan = startCallSpan;
2955
+ this.#retryBudget = retryBudget;
2889
2956
  }
2890
2957
  async #resolveConnectionParams() {
2891
2958
  if (this.#getParams) {
@@ -2902,6 +2969,7 @@ var ActorHandleRaw = class {
2902
2969
  let useQueryTarget = isDynamicActorQuery(
2903
2970
  this.#actorResolutionState
2904
2971
  );
2972
+ this.#retryBudget.deposit();
2905
2973
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
2906
2974
  let actorId;
2907
2975
  try {
@@ -2938,8 +3006,17 @@ var ActorHandleRaw = class {
2938
3006
  metadata,
2939
3007
  attempt,
2940
3008
  maxAttempts
2941
- )) {
2942
- await this.#waitForRetryWindow();
3009
+ ) && this.#retryBudget.tryWithdraw()) {
3010
+ await new Promise(
3011
+ (resolve) => setTimeout(
3012
+ resolve,
3013
+ retryDelayMs(attempt, {
3014
+ initialDelayMs: 25,
3015
+ maxDelayMs: 1e3,
3016
+ hintMs: retryAfterMs(err)
3017
+ })
3018
+ )
3019
+ );
2943
3020
  continue;
2944
3021
  }
2945
3022
  if (await this.#shouldRetrySchedulingError(
@@ -3016,7 +3093,10 @@ var ActorHandleRaw = class {
3016
3093
  if (opts.name === "destroy") {
3017
3094
  return await run();
3018
3095
  }
3019
- return await retryOnLifecycleBoundary(run, { signal });
3096
+ return await retryOnLifecycleBoundary(run, {
3097
+ signal,
3098
+ budget: this.#retryBudget
3099
+ });
3020
3100
  };
3021
3101
  if (!call) {
3022
3102
  return await send();
@@ -3558,6 +3638,7 @@ var ClientRaw = class {
3558
3638
  #gatewayOptions;
3559
3639
  #currentActorInvocation;
3560
3640
  #startCallSpan;
3641
+ #retryBudget;
3561
3642
  /**
3562
3643
  * Creates an instance of Client.
3563
3644
  */
@@ -3570,6 +3651,7 @@ var ClientRaw = class {
3570
3651
  this.#gatewayOptions = options.gateway ?? {};
3571
3652
  this.#currentActorInvocation = options.currentActorInvocation;
3572
3653
  this.#startCallSpan = options.startCallSpan;
3654
+ this.#retryBudget = new RetryBudget(options.retryBudget);
3573
3655
  }
3574
3656
  /**
3575
3657
  * Gets a stateless handle to a actor by its ID.
@@ -3727,7 +3809,8 @@ var ClientRaw = class {
3727
3809
  this.#gatewayOptions,
3728
3810
  signal,
3729
3811
  this.#currentActorInvocation,
3730
- this.#startCallSpan
3812
+ this.#startCallSpan,
3813
+ this.#retryBudget
3731
3814
  );
3732
3815
  }
3733
3816
  [CREATE_ACTOR_CONN_PROXY](conn) {
@@ -3927,6 +4010,10 @@ function jwtExpiration(token) {
3927
4010
  }
3928
4011
 
3929
4012
  // src/client/actor-conn.ts
4013
+ var CONNECT_TIMEOUT_MS = 2e4;
4014
+ function isConnectionOpenTimeout(error) {
4015
+ return error instanceof RivetError && error.group === "client" && error.code === "connection_open_timeout";
4016
+ }
3930
4017
  var CONNECT_SYMBOL = /* @__PURE__ */ Symbol("connect");
3931
4018
  var ActorConnRaw = class {
3932
4019
  #disposed = false;
@@ -3954,6 +4041,8 @@ var ActorConnRaw = class {
3954
4041
  #keepNodeAliveInterval;
3955
4042
  /** Promise used to indicate the socket has connected successfully. This will be rejected if the connection fails. */
3956
4043
  #onOpenPromise;
4044
+ /** Sockets given up on by the connect timeout. Their late events are ignored. */
4045
+ #abandonedSockets = /* @__PURE__ */ new WeakSet();
3957
4046
  #websocket;
3958
4047
  #authRetryAvailable = true;
3959
4048
  #client;
@@ -4144,12 +4233,16 @@ var ActorConnRaw = class {
4144
4233
  forever: true,
4145
4234
  minTimeout: 250,
4146
4235
  maxTimeout: 3e4,
4147
- onFailedAttempt: (error) => {
4236
+ onFailedAttempt: async (error) => {
4148
4237
  logger().warn({
4149
4238
  msg: "failed to reconnect",
4150
4239
  attempt: error.attemptNumber,
4151
4240
  error: stringifyError(error)
4152
4241
  });
4242
+ const hintMs = retryAfterMs(error);
4243
+ if (hintMs !== void 0) {
4244
+ await new Promise((resolve) => setTimeout(resolve, hintMs));
4245
+ }
4153
4246
  },
4154
4247
  // Cancel retry if aborted
4155
4248
  signal: this.#abortController.signal
@@ -4175,7 +4268,7 @@ var ActorConnRaw = class {
4175
4268
  })
4176
4269
  );
4177
4270
  await this.#connectWebSocket();
4178
- await this.#onOpenPromise.promise;
4271
+ await this.#waitForOpen(this.#onOpenPromise.promise);
4179
4272
  } catch (error) {
4180
4273
  if (this.#shouldRetryConnectionOpenError(error)) {
4181
4274
  throw error;
@@ -4197,10 +4290,63 @@ var ActorConnRaw = class {
4197
4290
  this.#onOpenPromise = void 0;
4198
4291
  }
4199
4292
  }
4293
+ /**
4294
+ * Waits for the actor's Init on the current socket, up to {@link CONNECT_TIMEOUT_MS}. A socket
4295
+ * can stay connecting with no open, error or close event, as when the engine holds the
4296
+ * upgrade or a refused connect reports only an error. On timeout the socket is abandoned
4297
+ * and closed, and the retryable `client.connection_open_timeout` starts the next attempt.
4298
+ */
4299
+ async #waitForOpen(open) {
4300
+ let timer;
4301
+ const timedOut = new Promise((_, reject) => {
4302
+ timer = setTimeout(() => {
4303
+ reject(
4304
+ new RivetError(
4305
+ "client",
4306
+ "connection_open_timeout",
4307
+ `Connection did not open within ${CONNECT_TIMEOUT_MS} ms`
4308
+ )
4309
+ );
4310
+ }, CONNECT_TIMEOUT_MS);
4311
+ });
4312
+ try {
4313
+ await Promise.race([open, timedOut]);
4314
+ } catch (error) {
4315
+ if (isConnectionOpenTimeout(error)) {
4316
+ this.#abandonCurrentSocket();
4317
+ }
4318
+ throw error;
4319
+ } finally {
4320
+ clearTimeout(timer);
4321
+ }
4322
+ }
4323
+ #abandonCurrentSocket() {
4324
+ const ws = this.#websocket;
4325
+ if (!ws) return;
4326
+ this.#websocket = void 0;
4327
+ this.#abandonedSockets.add(ws);
4328
+ logger().warn({
4329
+ msg: "connection did not open in time, retrying",
4330
+ connId: this.#connId,
4331
+ readyState: ws.readyState,
4332
+ timeoutMs: CONNECT_TIMEOUT_MS
4333
+ });
4334
+ try {
4335
+ ws.close(1e3, "Connect timeout");
4336
+ } catch (err) {
4337
+ logger().debug({
4338
+ msg: "failed to close abandoned websocket",
4339
+ error: stringifyError(err)
4340
+ });
4341
+ }
4342
+ }
4200
4343
  #shouldRetryConnectionOpenError(error) {
4201
4344
  if (error instanceof ActorConnDisposed) {
4202
4345
  return false;
4203
4346
  }
4347
+ if (isConnectionOpenTimeout(error)) {
4348
+ return true;
4349
+ }
4204
4350
  if (error instanceof RivetError && isInvalidToken(error.group, error.code) && this.#driver.refreshAuthToken && this.#authRetryAvailable) {
4205
4351
  this.#authRetryAvailable = false;
4206
4352
  return true;
@@ -4260,12 +4406,14 @@ var ActorConnRaw = class {
4260
4406
  });
4261
4407
  this.#websocket = ws;
4262
4408
  ws.addEventListener("open", () => {
4409
+ if (this.#abandonedSockets.has(ws)) return;
4263
4410
  logger().debug({
4264
4411
  msg: "client websocket open",
4265
4412
  connId: this.#connId
4266
4413
  });
4267
4414
  });
4268
4415
  ws.addEventListener("message", async (ev) => {
4416
+ if (this.#abandonedSockets.has(ws)) return;
4269
4417
  try {
4270
4418
  await this.#handleOnMessage(ev.data);
4271
4419
  } catch (err) {
@@ -4276,6 +4424,7 @@ var ActorConnRaw = class {
4276
4424
  }
4277
4425
  });
4278
4426
  ws.addEventListener("close", async (ev) => {
4427
+ if (this.#abandonedSockets.has(ws)) return;
4279
4428
  try {
4280
4429
  await this.#handleOnClose(ev);
4281
4430
  } catch (err) {
@@ -4286,6 +4435,7 @@ var ActorConnRaw = class {
4286
4435
  }
4287
4436
  });
4288
4437
  ws.addEventListener("error", () => {
4438
+ if (this.#abandonedSockets.has(ws)) return;
4289
4439
  try {
4290
4440
  this.#handleOnError();
4291
4441
  } catch (err) {
@@ -4494,7 +4644,8 @@ var ActorConnRaw = class {
4494
4644
  const reason = closeEvent.reason || "";
4495
4645
  const parsed = parseWebSocketCloseReason(reason);
4496
4646
  if (parsed) {
4497
- const { group, code, rayId } = parsed;
4647
+ const { group, code, rayId, retryAfterMs: retryAfterMs2 } = parsed;
4648
+ const closeOptions = retryAfterMs2 === void 0 ? { rayId } : { rayId, metadata: { retry_after_ms: retryAfterMs2 } };
4498
4649
  if (isInvalidToken(group, code) && closeEvent.code === 1008 && failedSocket) {
4499
4650
  try {
4500
4651
  if (!await ((_b = (_a = this.#driver).refreshAuthToken) == null ? void 0 : _b.call(
@@ -4517,7 +4668,7 @@ var ActorConnRaw = class {
4517
4668
  group,
4518
4669
  code,
4519
4670
  `Connection closed: ${reason}`,
4520
- { rayId }
4671
+ closeOptions
4521
4672
  )
4522
4673
  );
4523
4674
  return;
@@ -4538,7 +4689,7 @@ var ActorConnRaw = class {
4538
4689
  group,
4539
4690
  code,
4540
4691
  `Connection closed: ${reason}`,
4541
- { rayId }
4692
+ closeOptions
4542
4693
  );
4543
4694
  }
4544
4695
  } else {
@@ -4546,7 +4697,7 @@ var ActorConnRaw = class {
4546
4697
  group,
4547
4698
  code,
4548
4699
  `Connection closed: ${reason}`,
4549
- { rayId }
4700
+ closeOptions
4550
4701
  );
4551
4702
  }
4552
4703
  this.#invalidateActorIfStale(group, code);
@@ -5164,6 +5315,14 @@ var ClientConfigSchemaBase = z2.object({
5164
5315
  // This is required in the client config in order to support
5165
5316
  // `proxyWebSocket`
5166
5317
  getUpgradeWebSocket: z2.custom().optional(),
5318
+ /**
5319
+ * Bounds retries of refused requests: `percent` retries per 100 requests (default 10), with
5320
+ * up to `maxTokens` banked for bursts (default 100). A refusal past the budget is thrown.
5321
+ */
5322
+ retryBudget: z2.object({
5323
+ percent: z2.number().min(0).max(100).optional(),
5324
+ maxTokens: z2.number().int().min(0).optional()
5325
+ }).optional(),
5167
5326
  /** Replaces global fetch for actor HTTP gateway requests. */
5168
5327
  fetch: z2.custom().optional(),
5169
5328
  /** Whether to automatically perform health checks when the client is created. */
@@ -5206,7 +5365,7 @@ function convertRegistryConfigToClientConfig(config) {
5206
5365
  token: config.token,
5207
5366
  getToken: void 0,
5208
5367
  namespace: config.namespace,
5209
- poolName: config.envoy.poolName,
5368
+ poolName: config.node.poolName,
5210
5369
  headers: config.headers,
5211
5370
  gateway: { skipReadyWait: false },
5212
5371
  encoding: "bare",
@@ -5533,8 +5692,9 @@ function buildActorQueryGatewayUrl(endpoint, namespace, query, token, path = "",
5533
5692
  return combineUrlPath(endpoint, gatewayPath);
5534
5693
  }
5535
5694
  function pushKeyQueryParams(params, key) {
5536
- if (key.length > 0) {
5537
- params.append("rvt-key", key.join(","));
5695
+ const rvtKey = actorKeyToGatewayQuery(key);
5696
+ if (rvtKey !== void 0) {
5697
+ params.append("rvt-key", rvtKey);
5538
5698
  }
5539
5699
  }
5540
5700
  function pushInputQueryParam(params, input, maxInputSize) {
@@ -5716,8 +5876,8 @@ async function updateRunnerConfig(config, runnerName, request) {
5716
5876
  return apiCall(
5717
5877
  config,
5718
5878
  "PUT",
5719
- `/runner-configs/${runnerName}`,
5720
- request
5879
+ `/pools/${encodeURIComponent(runnerName)}`,
5880
+ Object.values(request.datacenters)[0]
5721
5881
  );
5722
5882
  }
5723
5883
 
@@ -6050,7 +6210,7 @@ var RemoteEngineControlClient = class {
6050
6210
  datacenter: region,
6051
6211
  name,
6052
6212
  key: serializeActorKey(key),
6053
- runner_name_selector: poolName ?? this.#config.poolName,
6213
+ pool: poolName ?? this.#config.poolName,
6054
6214
  input: actorInput ? uint8ArrayToBase64(
6055
6215
  encodeCborCompat(actorInput)
6056
6216
  ) : void 0,
@@ -6103,7 +6263,7 @@ var RemoteEngineControlClient = class {
6103
6263
  (config) => createActor(config, {
6104
6264
  datacenter: region,
6105
6265
  name,
6106
- runner_name_selector: poolName ?? this.#config.poolName,
6266
+ pool: poolName ?? this.#config.poolName,
6107
6267
  key: serializeActorKey(key),
6108
6268
  input: input ? uint8ArrayToBase64(
6109
6269
  encodeCborCompat(input)
@@ -6369,4 +6529,4 @@ export {
6369
6529
  updateRunnerConfig,
6370
6530
  RemoteEngineControlClient
6371
6531
  };
6372
- //# sourceMappingURL=chunk-I472KTIC.js.map
6532
+ //# sourceMappingURL=chunk-3MMTF3QA.js.map