rivetkit 2.3.5-rc.1 → 2.3.6

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 (111) hide show
  1. package/dist/browser/client.d.ts +19 -5
  2. package/dist/browser/client.js +32 -9
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +12 -2
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/agent-os/index.cjs +115 -5
  7. package/dist/tsup/agent-os/index.cjs.map +1 -1
  8. package/dist/tsup/agent-os/index.d.cts +19 -5
  9. package/dist/tsup/agent-os/index.d.ts +19 -5
  10. package/dist/tsup/agent-os/index.js +115 -5
  11. package/dist/tsup/agent-os/index.js.map +1 -1
  12. package/dist/tsup/{chunk-6HQCLWAW.cjs → chunk-234EFKN2.cjs} +13 -3
  13. package/dist/tsup/chunk-234EFKN2.cjs.map +1 -0
  14. package/dist/tsup/{chunk-NIC3QLKL.js → chunk-3ZE5UDOA.js} +3 -3
  15. package/dist/tsup/{chunk-4XKED5P5.cjs → chunk-AXEGEUYB.cjs} +262 -252
  16. package/dist/tsup/chunk-AXEGEUYB.cjs.map +1 -0
  17. package/dist/tsup/{chunk-P4OGQ4JL.js → chunk-BX4G2O6M.js} +3 -3
  18. package/dist/tsup/{chunk-GAV4PKFT.js → chunk-F6ZW7JZQ.js} +130 -120
  19. package/dist/tsup/chunk-F6ZW7JZQ.js.map +1 -0
  20. package/dist/tsup/{chunk-TR5NLR5V.cjs → chunk-FNTTW25Q.cjs} +4 -4
  21. package/dist/tsup/{chunk-TR5NLR5V.cjs.map → chunk-FNTTW25Q.cjs.map} +1 -1
  22. package/dist/tsup/{chunk-G3CCRCTK.cjs → chunk-HNHLBM3Y.cjs} +108 -6
  23. package/dist/tsup/chunk-HNHLBM3Y.cjs.map +1 -0
  24. package/dist/tsup/{chunk-UJ2FQY63.cjs → chunk-HVOKIYUB.cjs} +7 -7
  25. package/dist/tsup/{chunk-UJ2FQY63.cjs.map → chunk-HVOKIYUB.cjs.map} +1 -1
  26. package/dist/tsup/{chunk-PAG6G46L.js → chunk-OH6CBWUD.js} +2 -2
  27. package/dist/tsup/{chunk-TNIWIUNV.cjs → chunk-PD7SZKHY.cjs} +9 -9
  28. package/dist/tsup/{chunk-TNIWIUNV.cjs.map → chunk-PD7SZKHY.cjs.map} +1 -1
  29. package/dist/tsup/{chunk-MGTSVSUC.js → chunk-PLLHHJWR.js} +2 -2
  30. package/dist/tsup/{chunk-SHBE77IT.js → chunk-QWLJCP3X.js} +106 -4
  31. package/dist/tsup/chunk-QWLJCP3X.js.map +1 -0
  32. package/dist/tsup/{chunk-B4IZU537.js → chunk-RDTFPGU2.js} +13 -3
  33. package/dist/tsup/chunk-RDTFPGU2.js.map +1 -0
  34. package/dist/tsup/{chunk-M3FCXL3Q.cjs → chunk-WS3PP253.cjs} +3 -3
  35. package/dist/tsup/{chunk-M3FCXL3Q.cjs.map → chunk-WS3PP253.cjs.map} +1 -1
  36. package/dist/tsup/client/mod.cjs +5 -5
  37. package/dist/tsup/client/mod.d.cts +2 -2
  38. package/dist/tsup/client/mod.d.ts +2 -2
  39. package/dist/tsup/client/mod.js +4 -4
  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-BzdqbLAP.d.ts → config-BRpVbJCD.d.ts} +20 -6
  45. package/dist/tsup/{config-CPPEwn_e.d.cts → config-BobvQpex.d.cts} +20 -6
  46. package/dist/tsup/{context-wWv-K2K_.d.ts → context-Cj-DFyiy.d.ts} +1 -1
  47. package/dist/tsup/{context-DSA9gFXB.d.cts → context-YEBNJrws.d.cts} +1 -1
  48. package/dist/tsup/db/drizzle.cjs +2 -2
  49. package/dist/tsup/db/drizzle.js +1 -1
  50. package/dist/tsup/db/mod.cjs +2 -2
  51. package/dist/tsup/db/mod.js +1 -1
  52. package/dist/tsup/dynamic/mod.cjs +2 -2
  53. package/dist/tsup/dynamic/mod.d.cts +1 -1
  54. package/dist/tsup/dynamic/mod.d.ts +1 -1
  55. package/dist/tsup/dynamic/mod.js +1 -1
  56. package/dist/tsup/inspector/mod.cjs +4 -4
  57. package/dist/tsup/inspector/mod.js +3 -3
  58. package/dist/tsup/inspector-tab/mod.cjs +2 -2
  59. package/dist/tsup/inspector-tab/mod.d.cts +2 -2
  60. package/dist/tsup/inspector-tab/mod.d.ts +2 -2
  61. package/dist/tsup/inspector-tab/mod.js +1 -1
  62. package/dist/tsup/mod.cjs +175 -85
  63. package/dist/tsup/mod.cjs.map +1 -1
  64. package/dist/tsup/mod.d.cts +3 -3
  65. package/dist/tsup/mod.d.ts +3 -3
  66. package/dist/tsup/mod.js +107 -17
  67. package/dist/tsup/mod.js.map +1 -1
  68. package/dist/tsup/test/mod.cjs +16 -13
  69. package/dist/tsup/test/mod.cjs.map +1 -1
  70. package/dist/tsup/test/mod.d.cts +1 -1
  71. package/dist/tsup/test/mod.d.ts +1 -1
  72. package/dist/tsup/test/mod.js +15 -12
  73. package/dist/tsup/test/mod.js.map +1 -1
  74. package/dist/tsup/unstable/migrations.cjs +101 -0
  75. package/dist/tsup/unstable/migrations.cjs.map +1 -0
  76. package/dist/tsup/unstable/migrations.d.cts +29 -0
  77. package/dist/tsup/unstable/migrations.d.ts +29 -0
  78. package/dist/tsup/unstable/migrations.js +101 -0
  79. package/dist/tsup/unstable/migrations.js.map +1 -0
  80. package/dist/tsup/utils.cjs +2 -2
  81. package/dist/tsup/utils.js +1 -1
  82. package/dist/tsup/workflow/mod.cjs +9 -9
  83. package/dist/tsup/workflow/mod.d.cts +3 -3
  84. package/dist/tsup/workflow/mod.d.ts +3 -3
  85. package/dist/tsup/workflow/mod.js +4 -4
  86. package/package.json +19 -9
  87. package/src/actor/actions.ts +119 -0
  88. package/src/actor/config.ts +61 -18
  89. package/src/actor/definition.ts +3 -0
  90. package/src/client/actor-common.ts +3 -1
  91. package/src/client/client.ts +24 -11
  92. package/src/registry/config/index.ts +2 -4
  93. package/src/registry/index.ts +86 -5
  94. package/src/registry/napi-runtime.ts +4 -0
  95. package/src/registry/native.ts +17 -16
  96. package/src/registry/runtime.ts +1 -0
  97. package/src/registry/wasm-runtime.ts +6 -0
  98. package/src/test/mod.ts +1 -19
  99. package/src/test/ready.ts +22 -0
  100. package/src/unstable/migrations.test.ts +170 -0
  101. package/src/unstable/migrations.ts +141 -0
  102. package/dist/tsup/chunk-4XKED5P5.cjs.map +0 -1
  103. package/dist/tsup/chunk-6HQCLWAW.cjs.map +0 -1
  104. package/dist/tsup/chunk-B4IZU537.js.map +0 -1
  105. package/dist/tsup/chunk-G3CCRCTK.cjs.map +0 -1
  106. package/dist/tsup/chunk-GAV4PKFT.js.map +0 -1
  107. package/dist/tsup/chunk-SHBE77IT.js.map +0 -1
  108. /package/dist/tsup/{chunk-NIC3QLKL.js.map → chunk-3ZE5UDOA.js.map} +0 -0
  109. /package/dist/tsup/{chunk-P4OGQ4JL.js.map → chunk-BX4G2O6M.js.map} +0 -0
  110. /package/dist/tsup/{chunk-PAG6G46L.js.map → chunk-OH6CBWUD.js.map} +0 -0
  111. /package/dist/tsup/{chunk-MGTSVSUC.js.map → chunk-PLLHHJWR.js.map} +0 -0
@@ -1,10 +1,108 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/agent-os/actor/index.ts
2
2
  var _agentoscore = require('@rivet-dev/agent-os-core');
3
3
 
4
+ // src/actor/actions.ts
5
+ function flattenActionHandlers(actions) {
6
+ const flattened = /* @__PURE__ */ Object.create(null);
7
+ for (const { name, handler } of collectActionEntries(actions)) {
8
+ flattened[name] = handler;
9
+ }
10
+ return flattened;
11
+ }
12
+ function flattenActionInputSchemas(actions, schemas) {
13
+ if (schemas === void 0) return void 0;
14
+ if (!isRecord(schemas)) {
15
+ throw new TypeError("actionInputSchemas must be an object");
16
+ }
17
+ const flattened = /* @__PURE__ */ Object.create(null);
18
+ for (const { name, path } of collectActionEntries(actions)) {
19
+ const nestedSchema = lookupNestedSchema(schemas, path);
20
+ const flatSchema = schemas[name];
21
+ if (nestedSchema !== void 0 && flatSchema !== void 0 && nestedSchema !== flatSchema) {
22
+ throw new TypeError(
23
+ `Action input schema \`${name}\` is defined by both a nested path and a dotted key`
24
+ );
25
+ }
26
+ const schema = _nullishCoalesce(nestedSchema, () => ( flatSchema));
27
+ if (schema !== void 0) {
28
+ flattened[name] = schema;
29
+ }
30
+ }
31
+ return flattened;
32
+ }
33
+ function collectActionEntries(actions) {
34
+ const entries = [];
35
+ const names = /* @__PURE__ */ new Set();
36
+ visitActionGroup(_nullishCoalesce(actions, () => ( {})), [], entries, names);
37
+ return entries;
38
+ }
39
+ function visitActionGroup(value, path, entries, names) {
40
+ if (!isRecord(value)) {
41
+ throw new TypeError(
42
+ `${formatActionPath(path)} must be an action handler or group`
43
+ );
44
+ }
45
+ for (const [segment, child] of Object.entries(value)) {
46
+ const childPath = [...path, segment];
47
+ if (typeof child === "function") {
48
+ const name = childPath.join(".");
49
+ if (names.has(name)) {
50
+ throw new TypeError(
51
+ `Multiple action definitions flatten to \`${name}\``
52
+ );
53
+ }
54
+ names.add(name);
55
+ entries.push({
56
+ name,
57
+ path: childPath,
58
+ handler: child
59
+ });
60
+ } else {
61
+ visitActionGroup(child, childPath, entries, names);
62
+ }
63
+ }
64
+ }
65
+ function lookupNestedSchema(schemas, path) {
66
+ let value = schemas;
67
+ for (const segment of path) {
68
+ if (!isRecord(value) || !Object.hasOwn(value, segment)) {
69
+ return void 0;
70
+ }
71
+ value = value[segment];
72
+ }
73
+ return value;
74
+ }
75
+ function isRecord(value) {
76
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
77
+ return false;
78
+ }
79
+ const prototype = Object.getPrototypeOf(value);
80
+ return prototype === Object.prototype || prototype === null;
81
+ }
82
+ function formatActionPath(path) {
83
+ return path.length === 0 ? "actions" : `Action \`${path.join(".")}\``;
84
+ }
85
+
4
86
  // src/actor/config.ts
5
87
  var _v4 = require('zod/v4');
6
88
  var DEFAULT_SLEEP_GRACE_PERIOD = 15e3;
7
89
  var zFunction = () => _v4.z.custom((val) => typeof val === "function");
90
+ var zActionTree = _v4.z.custom((value) => {
91
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
92
+ return false;
93
+ }
94
+ const prototype = Object.getPrototypeOf(value);
95
+ return prototype === Object.prototype || prototype === null;
96
+ }).superRefine((actions, ctx) => {
97
+ try {
98
+ flattenActionHandlers(actions);
99
+ } catch (error) {
100
+ ctx.addIssue({
101
+ code: "custom",
102
+ message: error instanceof Error ? error.message : "Invalid action definition"
103
+ });
104
+ }
105
+ });
8
106
  var WorkflowInspectorConfigSchema = _v4.z.object({
9
107
  getHistory: zFunction(),
10
108
  onHistoryUpdated: zFunction().optional(),
@@ -141,7 +239,7 @@ var ActorConfigSchema = _v4.z.object({
141
239
  onBeforeActionResponse: zFunction().optional(),
142
240
  onRequest: zFunction().optional(),
143
241
  onWebSocket: zFunction().optional(),
144
- actions: _v4.z.record(_v4.z.string(), zFunction()).default(() => ({})),
242
+ actions: zActionTree.default(() => ({})),
145
243
  actionInputSchemas: _v4.z.record(_v4.z.string(), _v4.z.any()).optional(),
146
244
  connParamsSchema: _v4.z.any().optional(),
147
245
  events: _v4.z.record(_v4.z.string(), _v4.z.any()).optional(),
@@ -285,10 +383,10 @@ var DocActorConfigSchema = _v4.z.object({
285
383
  "Called for raw WebSocket connections to /actors/{name}/websocket/* endpoints."
286
384
  ),
287
385
  actions: _v4.z.record(_v4.z.string(), _v4.z.unknown()).optional().describe(
288
- "Map of action name to handler function. Defaults to an empty object."
386
+ "Tree of action names or nested groups to handler functions. Nested paths use dot-separated low-level action names. Defaults to an empty object."
289
387
  ),
290
388
  actionInputSchemas: _v4.z.record(_v4.z.string(), _v4.z.unknown()).optional().describe(
291
- "Optional schema map for validating action argument tuples in native runtimes."
389
+ "Optional schemas for validating action argument tuples in native runtimes. May mirror nested action groups or use dot-separated low-level action names."
292
390
  ),
293
391
  connParamsSchema: _v4.z.unknown().optional().describe(
294
392
  "Optional schema for validating connection params in native runtimes."
@@ -319,7 +417,7 @@ function isRivetErrorCode(error, group, code) {
319
417
  // package.json
320
418
  var package_default = {
321
419
  name: "rivetkit",
322
- version: "2.3.5-rc.1",
420
+ version: "2.3.6",
323
421
  description: "Lightweight libraries for building stateful actors on edge platforms",
324
422
  license: "Apache-2.0",
325
423
  keywords: [
@@ -391,6 +489,16 @@ var package_default = {
391
489
  default: "./dist/tsup/db/drizzle.cjs"
392
490
  }
393
491
  },
492
+ "./unstable/migrations": {
493
+ import: {
494
+ types: "./dist/tsup/unstable/migrations.d.ts",
495
+ default: "./dist/tsup/unstable/migrations.js"
496
+ },
497
+ require: {
498
+ types: "./dist/tsup/unstable/migrations.d.cts",
499
+ default: "./dist/tsup/unstable/migrations.cjs"
500
+ }
501
+ },
394
502
  "./dynamic": {
395
503
  import: {
396
504
  types: "./dist/tsup/dynamic/mod.d.ts",
@@ -490,7 +598,7 @@ var package_default = {
490
598
  "./dist/tsup/chunk-*.cjs"
491
599
  ],
492
600
  scripts: {
493
- build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/utils.ts src/workflow/mod.ts src/test/mod.ts src/inspector/mod.ts src/inspector-tab/mod.ts src/db/mod.ts src/db/drizzle.ts src/dynamic/mod.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os",
601
+ build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/utils.ts src/workflow/mod.ts src/test/mod.ts src/inspector/mod.ts src/inspector-tab/mod.ts src/db/mod.ts src/db/drizzle.ts src/dynamic/mod.ts src/unstable/migrations.ts && tsup src/agent-os/index.ts --no-clean --out-dir dist/tsup/agent-os",
494
602
  "build:browser": "tsup --config tsup.browser.config.ts",
495
603
  "check-types": "tsc --noEmit",
496
604
  lint: "biome check . && pnpm run check:test-skips && pnpm run check:wait-for-comments",
@@ -769,6 +877,8 @@ function actor(input) {
769
877
  input == null ? void 0 : input.options
770
878
  );
771
879
  const config = ActorConfigSchema.parse(input);
880
+ flattenActionHandlers(config.actions);
881
+ flattenActionInputSchemas(config.actions, config.actionInputSchemas);
772
882
  return new ActorDefinition(config);
773
883
  }
774
884