@voltro/protocol 0.69.1 → 0.71.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.
package/dist/index.js CHANGED
@@ -1,58 +1,58 @@
1
- import { A as e, B as t, C as n, D as r, E as i, F as a, G as o, H as s, I as c, K as ee, L as te, M as ne, N as re, O as ie, P as l, R as ae, S as oe, T as se, U as ce, V as le, W as ue, _ as de, a as u, b as fe, c as pe, d as me, f as he, g as d, h as ge, i as _e, j as ve, k as ye, l as be, m as xe, n as Se, o as Ce, p as we, q as Te, r as Ee, s as De, t as Oe, u as ke, v as Ae, w as je, x as Me, y as f, z as Ne } from "./scopes-DVtiKKsm.js";
2
- import { a as Pe, c as Fe, d as Ie, i as p, l as Le, n as Re, o as ze, r as Be, s as Ve, t as He, u as Ue } from "./serverErrorBus-BTnTpMqj.js";
3
- import { Context as We, Layer as Ge, Schema as m } from "effect";
4
- import { Rpc as h } from "@effect/rpc";
5
- import { VersionConflict as Ke } from "@voltro/database/wire";
1
+ import { A as e, B as t, C as n, D as r, E as i, F as a, G as o, H as s, I as c, J as ee, K as te, L as ne, M as re, N as ie, O as ae, P as oe, R as se, S as ce, T as le, U as ue, V as de, W as fe, Y as pe, _ as me, a as l, b as he, c as ge, d as _e, f as ve, g as u, h as ye, i as be, j as xe, k as Se, l as Ce, m as we, n as Te, o as Ee, p as De, q as Oe, r as ke, s as Ae, t as je, u as Me, v as Ne, w as Pe, x as Fe, y as d, z as Ie } from "./scopes-CW9_LbDO.js";
2
+ import { C as Le, D as Re, E as ze, S as Be, T as Ve, _ as He, a as Ue, b as We, c as Ge, d as Ke, f as qe, g as Je, h as Ye, i as Xe, l as Ze, m as Qe, n as $e, o as et, p as tt, r as nt, s as rt, t as it, u as at, v as ot, w as st, x as ct, y as lt } from "./restFormat-ChSVyufA.js";
3
+ import { Context as ut, Layer as dt, Schema as f } from "effect";
4
+ import { Rpc as p } from "@effect/rpc";
5
+ import { VersionConflict as ft } from "@voltro/database/wire";
6
6
  //#region src/rowPatch.ts
7
- var qe = m.Union(m.String, m.Number), Je = m.Record({
8
- key: m.String,
9
- value: m.Unknown
10
- }).pipe(m.filter((e) => "id" in e, { message: () => "patch row must carry an id" })), Ye = m.Union(m.Struct({
11
- op: m.Literal("add"),
12
- path: m.String,
13
- value: Je
14
- }), m.Struct({
15
- op: m.Literal("replace"),
16
- path: m.String,
17
- value: Je
18
- }), m.Struct({
19
- op: m.Literal("remove"),
20
- path: m.String
21
- }), m.Struct({
22
- op: m.Literal("mergeCells"),
23
- path: m.String,
24
- value: m.Record({
25
- key: m.String,
26
- value: m.Unknown
7
+ var pt = f.Union(f.String, f.Number), m = f.Record({
8
+ key: f.String,
9
+ value: f.Unknown
10
+ }).pipe(f.filter((e) => "id" in e, { message: () => "patch row must carry an id" })), mt = f.Union(f.Struct({
11
+ op: f.Literal("add"),
12
+ path: f.String,
13
+ value: m
14
+ }), f.Struct({
15
+ op: f.Literal("replace"),
16
+ path: f.String,
17
+ value: m
18
+ }), f.Struct({
19
+ op: f.Literal("remove"),
20
+ path: f.String
21
+ }), f.Struct({
22
+ op: f.Literal("mergeCells"),
23
+ path: f.String,
24
+ value: f.Record({
25
+ key: f.String,
26
+ value: f.Unknown
27
27
  })
28
- })), Xe = m.Struct({
29
- ops: m.Array(Ye),
30
- order: m.Array(qe)
31
- }), g = (e) => `/${String(e).replace(/~/g, "~0").replace(/\//g, "~1")}`, _ = (e) => (e.startsWith("/") ? e.slice(1) : e).replace(/~1/g, "/").replace(/~0/g, "~"), v = (e) => {
28
+ })), ht = f.Struct({
29
+ ops: f.Array(mt),
30
+ order: f.Array(pt)
31
+ }), h = (e) => `/${String(e).replace(/~/g, "~0").replace(/\//g, "~1")}`, gt = (e) => (e.startsWith("/") ? e.slice(1) : e).replace(/~1/g, "/").replace(/~0/g, "~"), g = (e) => {
32
32
  let t = Object.keys(e).sort(), n = {};
33
33
  for (let r of t) n[r] = e[r];
34
34
  return JSON.stringify(n);
35
- }, y = (e, t) => v(e) === v(t), Ze = (e, t) => {
35
+ }, _ = (e, t) => g(e) === g(t), _t = (e, t) => {
36
36
  if (e instanceof Uint8Array && t instanceof Uint8Array) {
37
37
  if (e.length !== t.length) return !1;
38
38
  for (let n = 0; n < e.length; n += 1) if (e[n] !== t[n]) return !1;
39
39
  return !0;
40
40
  }
41
- return v({
41
+ return g({
42
42
  id: 0,
43
43
  v: e
44
- }) === v({
44
+ }) === g({
45
45
  id: 0,
46
46
  v: t
47
47
  });
48
- }, Qe = (e, t, n = {}) => {
48
+ }, vt = (e, t, n = {}) => {
49
49
  let r = /* @__PURE__ */ new Map();
50
50
  for (let t of e) r.set(t.id, t);
51
51
  let i = [], a = [], o = /* @__PURE__ */ new Set(), s = n.crdt, c = (e, t) => {
52
52
  if (s === void 0 || s.columns.size === 0) return;
53
53
  let n = {}, r = !1;
54
54
  for (let i of s.columns) {
55
- if (!(i in t) || Ze(e[i], t[i])) continue;
55
+ if (!(i in t) || _t(e[i], t[i])) continue;
56
56
  let a = s.incremental(i, e[i], t[i]);
57
57
  if (a === void 0) return;
58
58
  n[i] = a, r = !0;
@@ -70,43 +70,43 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
70
70
  let t = r.get(e.id);
71
71
  if (t === void 0) i.push({
72
72
  op: "add",
73
- path: g(e.id),
73
+ path: h(e.id),
74
74
  value: e
75
75
  });
76
- else if (!y(t, e)) {
76
+ else if (!_(t, e)) {
77
77
  let n = c(t, e);
78
78
  n === void 0 ? i.push({
79
79
  op: "replace",
80
- path: g(e.id),
80
+ path: h(e.id),
81
81
  value: e
82
- }) : (y(Object.fromEntries(Object.entries(t).filter(([e]) => !s.columns.has(e))), n.scalars) || i.push({
82
+ }) : (_(Object.fromEntries(Object.entries(t).filter(([e]) => !s.columns.has(e))), n.scalars) || i.push({
83
83
  op: "replace",
84
- path: g(e.id),
84
+ path: h(e.id),
85
85
  value: n.scalars
86
86
  }), i.push({
87
87
  op: "mergeCells",
88
- path: g(e.id),
88
+ path: h(e.id),
89
89
  value: n.merges
90
90
  }));
91
91
  }
92
92
  }
93
93
  for (let t of e) o.has(t.id) || i.push({
94
94
  op: "remove",
95
- path: g(t.id)
95
+ path: h(t.id)
96
96
  });
97
97
  return {
98
98
  ops: i,
99
99
  order: a
100
100
  };
101
- }, $e = (e) => e.every((e) => {
101
+ }, yt = (e) => e.every((e) => {
102
102
  let t = e.id;
103
103
  return typeof t == "string" || typeof t == "number";
104
- }), et = (e, t, n = {}) => {
104
+ }), bt = (e, t, n = {}) => {
105
105
  let r = /* @__PURE__ */ new Map();
106
106
  for (let t of e) r.set(t.id, t);
107
107
  for (let e of t.ops) {
108
108
  if (e.op === "mergeCells") {
109
- let t = _(e.path), i = r.get(t) ?? r.get(Number(t)), a = r.has(t) ? t : Number(t);
109
+ let t = gt(e.path), i = r.get(t) ?? r.get(Number(t)), a = r.has(t) ? t : Number(t);
110
110
  if (i === void 0) continue;
111
111
  let o = { ...i };
112
112
  for (let [t, r] of Object.entries(e.value)) o[t] = n.mergeCell === void 0 ? r : n.mergeCell(t, i[t], r);
@@ -121,57 +121,57 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
121
121
  t !== void 0 && i.push(t);
122
122
  }
123
123
  return i;
124
- }, b = (e) => m.Union(m.Struct({
125
- _tag: m.Literal("snapshot"),
126
- revision: m.Number,
124
+ }, v = (e) => f.Union(f.Struct({
125
+ _tag: f.Literal("snapshot"),
126
+ revision: f.Number,
127
127
  data: e,
128
- computed: m.optional(m.Boolean),
129
- reconciles: m.optional(m.String)
130
- }), m.Struct({
131
- _tag: m.Literal("delta"),
132
- revision: m.Number,
133
- emittedAt: m.Number,
134
- patch: Xe
135
- }), m.Struct({
136
- _tag: m.Literal("error"),
137
- error: m.Unknown,
138
- revision: m.optional(m.Number)
139
- })), x = (e, t) => {
128
+ computed: f.optional(f.Boolean),
129
+ reconciles: f.optional(f.String)
130
+ }), f.Struct({
131
+ _tag: f.Literal("delta"),
132
+ revision: f.Number,
133
+ emittedAt: f.Number,
134
+ patch: ht
135
+ }), f.Struct({
136
+ _tag: f.Literal("error"),
137
+ error: f.Unknown,
138
+ revision: f.optional(f.Number)
139
+ })), y = (e, t) => {
140
140
  let n = `${e ?? "this procedure"} input`;
141
141
  return t === !0 ? `${n} (guarded — the guard did NOT run: the payload failed to decode first, so this says nothing about access)` : n;
142
- }, tt = (e) => {
142
+ }, xt = (e) => {
143
143
  let t = e.ast;
144
144
  return t._tag === "TypeLiteral" && (t.propertySignatures?.length ?? 0) === 0 && (t.indexSignatures?.length ?? 0) === 0;
145
- }, S = (e, t, n) => {
146
- let r = x(t, n), i = e.annotations({
145
+ }, b = (e, t, n) => {
146
+ let r = y(t, n), i = e.annotations({
147
147
  parseOptions: { onExcessProperty: "error" },
148
148
  parseIssueTitle: () => r
149
149
  });
150
- return tt(e) ? m.filter((e) => typeof e == "object" && e && Object.keys(e).length > 0 ? `this procedure declares no input; received: ${Object.keys(e).join(", ")}` : void 0)(i).annotations({ identifier: r }) : i;
151
- }, nt = class extends m.TaggedError()("BusinessRuleViolation", {
152
- rule: m.String,
153
- params: m.optional(m.Record({
154
- key: m.String,
155
- value: m.Unknown
150
+ return xt(e) ? f.filter((e) => typeof e == "object" && e && Object.keys(e).length > 0 ? `this procedure declares no input; received: ${Object.keys(e).join(", ")}` : void 0)(i).annotations({ identifier: r }) : i;
151
+ }, x = class extends f.TaggedError()("BusinessRuleViolation", {
152
+ rule: f.String,
153
+ params: f.optional(f.Record({
154
+ key: f.String,
155
+ value: f.Unknown
156
156
  })),
157
- field: m.optional(m.String),
158
- message: m.optional(m.String),
159
- severity: m.Literal("error", "warning")
160
- }) {}, rt = m.Struct({
161
- field: m.String,
162
- message: m.String,
163
- params: m.optional(m.Record({
164
- key: m.String,
165
- value: m.Unknown
157
+ field: f.optional(f.String),
158
+ message: f.optional(f.String),
159
+ severity: f.Literal("error", "warning")
160
+ }) {}, St = f.Struct({
161
+ field: f.String,
162
+ message: f.String,
163
+ params: f.optional(f.Record({
164
+ key: f.String,
165
+ value: f.Unknown
166
166
  }))
167
- }), it = class extends m.TaggedError()("ValidationError", {
168
- field: m.String,
169
- message: m.String,
170
- params: m.optional(m.Record({
171
- key: m.String,
172
- value: m.Unknown
167
+ }), Ct = class extends f.TaggedError()("ValidationError", {
168
+ field: f.String,
169
+ message: f.String,
170
+ params: f.optional(f.Record({
171
+ key: f.String,
172
+ value: f.Unknown
173
173
  }))
174
- }) {}, at = class extends m.TaggedError()("ValidationErrors", { issues: m.Array(rt).pipe(m.minItems(1)) }) {}, ot = (e) => {
174
+ }) {}, wt = class extends f.TaggedError()("ValidationErrors", { issues: f.Array(St).pipe(f.minItems(1)) }) {}, Tt = (e) => {
175
175
  if (typeof e != "object" || !e) return [];
176
176
  let t = e._tag;
177
177
  if (t === "ValidationError") {
@@ -197,69 +197,69 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
197
197
  }];
198
198
  }
199
199
  return [];
200
- }, st = class extends m.TaggedError()("ApprovalRequired", {
201
- approvalId: m.String,
202
- procedure: m.String,
203
- expiresAt: m.String,
204
- requiredScopes: m.Array(m.String),
205
- reason: m.NullOr(m.String),
206
- created: m.Boolean
207
- }) {}, ct = class extends m.TaggedError()("ApprovalNotFound", { approvalId: m.String }) {}, lt = class extends m.TaggedError()("ApprovalSelfApproval", {
208
- approvalId: m.String,
209
- subjectId: m.NullOr(m.String)
210
- }) {}, ut = class extends m.TaggedError()("ApprovalRejected", {
211
- approvalId: m.String,
212
- decidedBy: m.NullOr(m.String),
213
- note: m.NullOr(m.String)
214
- }) {}, C = class extends m.TaggedError()("ApprovalExpired", {
215
- approvalId: m.String,
216
- expiredAt: m.String
217
- }) {}, dt = class extends m.TaggedError()("ApprovalNotPending", {
218
- approvalId: m.String,
219
- status: m.String
220
- }) {}, ft = class extends m.TaggedError()("ApprovalForbidden", {
221
- approvalId: m.String,
222
- required: m.NullOr(m.String),
223
- message: m.String
224
- }) {}, w = class extends m.TaggedError()("ApprovalUnavailable", {
225
- procedure: m.String,
226
- message: m.String
227
- }) {}, pt = m.Union(st, ut, C, w), mt = m.Union(ct, lt, C, dt, ft, w), ht = m.Struct({
228
- id: m.String,
229
- procedure: m.String,
230
- kind: m.Literal("mutation", "action"),
231
- requestedBy: m.NullOr(m.String),
232
- status: m.Literal("pending", "approved", "rejected", "expired", "consumed"),
233
- reason: m.NullOr(m.String),
234
- requiredScopes: m.Array(m.String),
235
- requestedAt: m.String,
236
- expiresAt: m.String,
237
- decidedBy: m.NullOr(m.String),
238
- decidedAt: m.NullOr(m.String),
239
- note: m.NullOr(m.String),
240
- relation: m.Literal("to-decide", "requested")
241
- }), T = "channel:", gt = Symbol.for("@voltro/protocol/reactivityChannels"), _t = globalThis, E = _t[gt] ?? (_t[gt] = /* @__PURE__ */ new Map()), vt = /^[a-z][a-z0-9-]*(\.[a-z0-9-]+)*$/, yt = (e) => {
242
- if (!vt.test(e)) throw Error(`reactivityChannel('${e}'): invalid channel name.\n Use lowercase kebab segments separated by dots — \`presence\`, \`job-queue\`,
200
+ }, Et = class extends f.TaggedError()("ApprovalRequired", {
201
+ approvalId: f.String,
202
+ procedure: f.String,
203
+ expiresAt: f.String,
204
+ requiredScopes: f.Array(f.String),
205
+ reason: f.NullOr(f.String),
206
+ created: f.Boolean
207
+ }) {}, Dt = class extends f.TaggedError()("ApprovalNotFound", { approvalId: f.String }) {}, Ot = class extends f.TaggedError()("ApprovalSelfApproval", {
208
+ approvalId: f.String,
209
+ subjectId: f.NullOr(f.String)
210
+ }) {}, kt = class extends f.TaggedError()("ApprovalRejected", {
211
+ approvalId: f.String,
212
+ decidedBy: f.NullOr(f.String),
213
+ note: f.NullOr(f.String)
214
+ }) {}, S = class extends f.TaggedError()("ApprovalExpired", {
215
+ approvalId: f.String,
216
+ expiredAt: f.String
217
+ }) {}, At = class extends f.TaggedError()("ApprovalNotPending", {
218
+ approvalId: f.String,
219
+ status: f.String
220
+ }) {}, jt = class extends f.TaggedError()("ApprovalForbidden", {
221
+ approvalId: f.String,
222
+ required: f.NullOr(f.String),
223
+ message: f.String
224
+ }) {}, C = class extends f.TaggedError()("ApprovalUnavailable", {
225
+ procedure: f.String,
226
+ message: f.String
227
+ }) {}, Mt = f.Union(Et, kt, S, C), Nt = f.Union(Dt, Ot, S, At, jt, C), Pt = f.Struct({
228
+ id: f.String,
229
+ procedure: f.String,
230
+ kind: f.Literal("mutation", "action"),
231
+ requestedBy: f.NullOr(f.String),
232
+ status: f.Literal("pending", "approved", "rejected", "expired", "consumed"),
233
+ reason: f.NullOr(f.String),
234
+ requiredScopes: f.Array(f.String),
235
+ requestedAt: f.String,
236
+ expiresAt: f.String,
237
+ decidedBy: f.NullOr(f.String),
238
+ decidedAt: f.NullOr(f.String),
239
+ note: f.NullOr(f.String),
240
+ relation: f.Literal("to-decide", "requested")
241
+ }), w = "channel:", Ft = Symbol.for("@voltro/protocol/reactivityChannels"), It = globalThis, T = It[Ft] ?? (It[Ft] = /* @__PURE__ */ new Map()), Lt = /^[a-z][a-z0-9-]*(\.[a-z0-9-]+)*$/, Rt = (e) => {
242
+ if (!Lt.test(e)) throw Error(`reactivityChannel('${e}'): invalid channel name.\n Use lowercase kebab segments separated by dots — \`presence\`, \`job-queue\`,
243
243
  \`billing.usage\`. A \`:\` is refused because it is the namespace separator in
244
- the routing key (\`${T}<name>\`), and an uppercase letter is\n refused because a key that differs only by case reads as one channel and
244
+ the routing key (\`${w}<name>\`), and an uppercase letter is\n refused because a key that differs only by case reads as one channel and
245
245
  routes as two.`);
246
- let t = E.get(e);
246
+ let t = T.get(e);
247
247
  if (t !== void 0) return t;
248
- let n = `${T}${e}`, r = Object.freeze({
248
+ let n = `${w}${e}`, r = Object.freeze({
249
249
  kind: "reactivity-channel",
250
250
  name: e,
251
251
  key: n,
252
252
  toString: () => n
253
253
  });
254
- return E.set(e, r), r;
255
- }, D = (e) => typeof e == "object" && !!e && e.kind === "reactivity-channel", O = (e) => e.startsWith(T), k = () => new Set([...E.values()].map((e) => e.key)), A = (e) => D(e) ? e.key : e, j = (e) => e === void 0 ? [] : Array.isArray(e) ? e.map(A) : [A(e)], M = (e) => e === void 0 ? void 0 : Array.isArray(e) ? e.map(A) : A(e), bt = (e) => {
256
- let t = k(), n = [];
257
- for (let r of e) for (let e of j(r.source)) O(e) && !t.has(e) && n.push({
254
+ return T.set(e, r), r;
255
+ }, zt = (e) => typeof e == "object" && !!e && e.kind === "reactivity-channel", Bt = (e) => e.startsWith(w), Vt = () => new Set([...T.values()].map((e) => e.key)), E = (e) => zt(e) ? e.key : e, D = (e) => e === void 0 ? [] : Array.isArray(e) ? e.map(E) : [E(e)], O = (e) => e === void 0 ? void 0 : Array.isArray(e) ? e.map(E) : E(e), Ht = (e) => {
256
+ let t = Vt(), n = [];
257
+ for (let r of e) for (let e of D(r.source)) Bt(e) && !t.has(e) && n.push({
258
258
  procedure: r.name,
259
259
  key: e
260
260
  });
261
261
  return n;
262
- }, xt = (e, t) => {
262
+ }, Ut = (e, t) => {
263
263
  let n = e?.injectExternalChange;
264
264
  return n !== void 0 && (n.call(e, {
265
265
  table: t.key,
@@ -268,13 +268,18 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
268
268
  old: {},
269
269
  origin: "inline"
270
270
  }), !0);
271
- }, St = (e) => e.internal !== !0, N = (e) => {
272
- if (Ct(e), e.idempotencyScope !== void 0 && e.idempotencyScope !== "subject" && e.idempotencyScope !== "connection") throw Error(`${e.name}: idempotencyScope must be 'subject' or 'connection'`);
271
+ }, Wt = (e) => e.internal !== !0, k = (e) => {
272
+ if (Gt(e), e.idempotencyScope !== void 0 && e.idempotencyScope !== "subject" && e.idempotencyScope !== "connection") throw Error(`${e.name}: idempotencyScope must be 'subject' or 'connection'`);
273
+ let t = e.serialize;
274
+ if (t !== void 0) {
275
+ if (typeof t.key != "function") throw Error(`${e.name}: serialize.key must be a function of the input`);
276
+ if (t.maxPending !== void 0 && (!Number.isSafeInteger(t.maxPending) || t.maxPending < 1)) throw Error(`${e.name}: serialize.maxPending must be a positive integer`);
277
+ }
273
278
  if (e.idempotencyScope === "connection" && (e.internal === !0 || e.publicApi !== void 0 || e.exposeAsTool !== void 0)) throw Error(`${e.name}: connection-scoped mutations require the native WebSocket RPC surface; internal, publicApi and exposeAsTool cannot establish its connection state`);
274
279
  if (Array.isArray(e.guards) && e.guards.length === 0) throw Error(`${e.name}: \`guards: []\` is empty, so it enforces nothing — but it reads\n at the call site as if this procedure were protected. Omit the field for an
275
280
  unguarded procedure, or list the scopes required to call it.`);
276
- let t = typeof e.source == "string" ? [e.source] : Array.isArray(e.source) ? e.source : void 0;
277
- if (t !== void 0 && (t.length === 0 || t.some((e) => String(e).trim() === ""))) throw Error(`${e.name}: \`source\` is empty, so this query declares reactivity and\n subscribes to nothing — it serves one snapshot and never updates again,
281
+ let n = typeof e.source == "string" ? [e.source] : Array.isArray(e.source) ? e.source : void 0;
282
+ if (n !== void 0 && (n.length === 0 || n.some((e) => String(e).trim() === ""))) throw Error(`${e.name}: \`source\` is empty, so this query declares reactivity and\n subscribes to nothing — it serves one snapshot and never updates again,
278
283
  which is indistinguishable from "nothing changed". Name the table(s) it
279
284
  reads, or omit \`source\` for a non-reactive query.`);
280
285
  if (e.internal !== !0) return e;
@@ -285,10 +290,10 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
285
290
  if (e.overridesPlugin === !0) throw Error(`${e.name}: \`internal: true\` cannot be combined with \`overridesPlugin\`.\n The override REMOVES the plugin route, and an internal procedure is not
286
291
  wire-reachable — so the plugin's route would vanish with nothing callable
287
292
  in its place, and callers would get a 404 for something that used to work.`);
288
- let n = [e.publicApi === void 0 ? void 0 : "publicApi", e.exposeAsTool === void 0 ? void 0 : "exposeAsTool"].filter((e) => e !== void 0);
289
- if (n.length === 0) return e;
290
- throw Error(`${e.name}: \`internal: true\` cannot be combined with ${n.map((e) => `\`${e}\``).join(" or ")}. \`internal\` takes the procedure OFF the wire; those put it back ON a different one (${n.includes("publicApi") ? "a REST route" : "an agent tool"}), and that surface is projected without consulting the flag — so the procedure would be unreachable from your client and reachable from the internet. Drop \`internal: true\` if the wider surface is intended, or remove the ${n.join(" / ")} annotation if it is not.`);
291
- }, Ct = (e) => {
293
+ let r = [e.publicApi === void 0 ? void 0 : "publicApi", e.exposeAsTool === void 0 ? void 0 : "exposeAsTool"].filter((e) => e !== void 0);
294
+ if (r.length === 0) return e;
295
+ throw Error(`${e.name}: \`internal: true\` cannot be combined with ${r.map((e) => `\`${e}\``).join(" or ")}. \`internal\` takes the procedure OFF the wire; those put it back ON a different one (${r.includes("publicApi") ? "a REST route" : "an agent tool"}), and that surface is projected without consulting the flag — so the procedure would be unreachable from your client and reachable from the internet. Drop \`internal: true\` if the wider surface is intended, or remove the ${r.join(" / ")} annotation if it is not.`);
296
+ }, Gt = (e) => {
292
297
  let t = e.requiresApproval;
293
298
  if (t !== void 0) {
294
299
  if (!Array.isArray(t.approvers) || t.approvers.length === 0) throw Error(`${e.name}: \`requiresApproval.approvers\` is empty, so NOBODY can approve this\n procedure and every call would park forever. Name the scope(s) an approver must hold
@@ -298,49 +303,50 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
298
303
  human from every other, and the second-pair-of-eyes control would enforce nothing.
299
304
  Give the procedure a \`guards:\` decision, or drop \`requiresApproval\`.`);
300
305
  }
301
- }, wt = (e) => e.action !== void 0 && e.resourceType !== void 0, Tt = (e) => e.authenticated === !0, Et = (e) => e.openAccess !== void 0 || e.guards !== void 0 && e.guards.length > 0, P = (e, t, n) => {
306
+ }, Kt = (e) => e.action !== void 0 && e.resourceType !== void 0, qt = (e) => e.authenticated === !0, Jt = (e) => e.openAccess !== void 0 || e.guards !== void 0 && e.guards.length > 0, A = (e, t, n) => {
302
307
  if (n === void 0) return t;
303
308
  if (n.trim() === "") throw Error(`${e}: \`openAccess\` needs a REASON, not an empty string. It is the sentence a\n reviewer reads to decide whether this procedure should really be callable
304
309
  without an authorization check — e.g. \`openAccess: 'public pricing, no caller data'\`.`);
305
310
  if (t !== void 0 && t.length > 0) throw Error(`${e}: \`openAccess\` and \`guards\` are two different access decisions, so\n declaring both says the procedure is protected AND open. Keep the guards if a
306
311
  caller must hold a scope; drop them if anyone may call it.`);
307
- return [f(n.trim())];
308
- }, F = (e) => N({
312
+ return [d(n.trim())];
313
+ }, j = (e) => k({
309
314
  kind: "query",
310
315
  name: e.name,
311
316
  input: e.input,
312
317
  output: e.output,
313
- error: e.error ?? m.Never,
314
- source: M(e.source),
318
+ error: e.error ?? f.Never,
319
+ source: O(e.source),
315
320
  cache: e.cache,
316
- guards: P(e.name, e.guards, e.openAccess),
321
+ guards: A(e.name, e.guards, e.openAccess),
317
322
  openAccess: e.openAccess,
318
323
  publicApi: e.publicApi,
319
324
  exposeAsTool: e.exposeAsTool,
320
325
  internal: e.internal,
321
326
  overridesPlugin: e.overridesPlugin
322
- }), I = (e) => N({
327
+ }), M = (e) => k({
323
328
  kind: "mutation",
324
329
  name: e.name,
325
330
  input: e.input,
326
331
  output: e.output,
327
- error: e.error ?? m.Never,
332
+ error: e.error ?? f.Never,
328
333
  ...e.idempotencyScope === void 0 ? {} : { idempotencyScope: e.idempotencyScope },
334
+ ...e.serialize === void 0 ? {} : { serialize: e.serialize },
329
335
  target: e.target,
330
- guards: P(e.name, e.guards, e.openAccess),
336
+ guards: A(e.name, e.guards, e.openAccess),
331
337
  openAccess: e.openAccess,
332
338
  publicApi: e.publicApi,
333
339
  exposeAsTool: e.exposeAsTool,
334
340
  requiresApproval: e.requiresApproval,
335
341
  internal: e.internal,
336
342
  overridesPlugin: e.overridesPlugin
337
- }), L = (e) => N({
343
+ }), N = (e) => k({
338
344
  kind: "action",
339
345
  name: e.name,
340
346
  input: e.input,
341
347
  output: e.output,
342
- error: e.error ?? m.Never,
343
- guards: P(e.name, e.guards, e.openAccess),
348
+ error: e.error ?? f.Never,
349
+ guards: A(e.name, e.guards, e.openAccess),
344
350
  openAccess: e.openAccess,
345
351
  source: e.source,
346
352
  target: e.target,
@@ -349,55 +355,55 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
349
355
  requiresApproval: e.requiresApproval,
350
356
  internal: e.internal,
351
357
  overridesPlugin: e.overridesPlugin
352
- }), Dt = (e) => N({
358
+ }), Yt = (e) => k({
353
359
  kind: "stream",
354
360
  name: e.name,
355
361
  input: e.input,
356
362
  element: e.element,
357
- error: e.error ?? m.Never,
363
+ error: e.error ?? f.Never,
358
364
  internal: e.internal,
359
365
  overridesPlugin: e.overridesPlugin,
360
- guards: P(e.name, e.guards, e.openAccess),
366
+ guards: A(e.name, e.guards, e.openAccess),
361
367
  openAccess: e.openAccess
362
- }), R = (e, t) => t && t.length > 0 ? m.Union(e, ...t) : e, z = (e) => e !== void 0 && e.some((e) => !d(e)), Ot = (e, t) => z(t) ? m.Union(e, u, l) : e, kt = (e) => m.Union(e, nt), At = (e) => m.Union(e, it, at), jt = (e, t) => t === void 0 ? e : m.Union(e, pt), B = (e, t) => {
368
+ }), P = (e, t) => t && t.length > 0 ? f.Union(e, ...t) : e, F = (e) => e !== void 0 && e.some((e) => !u(e)), Xt = (e, t) => F(t) ? f.Union(e, l, a) : e, Zt = (e) => f.Union(e, x), Qt = (e) => f.Union(e, Ct, wt), $t = (e, t) => t === void 0 ? e : f.Union(e, Mt), I = (e, t) => {
363
369
  if (t === "stream") return e.error;
364
- let n = Ot(e.error, e.guards);
370
+ let n = Xt(e.error, e.guards);
365
371
  if (t === "query") return n;
366
- let r = t === "mutation" ? m.Union(kt(n), Pe, Ke) : n;
367
- return jt(At(t === "mutation" && e.idempotencyScope === "connection" ? m.Union(r, p) : r), e.requiresApproval);
368
- }, Mt = (e, t) => R(Ot(e.errorSchema, e.guards), t), Nt = (e, t) => ({
372
+ let r = t === "mutation" ? f.Union(Zt(n), ct, ft) : n;
373
+ return $t(Qt(t === "mutation" && e.idempotencyScope === "connection" ? f.Union(r, We) : r), e.requiresApproval);
374
+ }, en = (e, t) => P(Xt(e.errorSchema, e.guards), t), tn = (e, t) => ({
369
375
  ...e,
370
376
  name: t
371
- }), Pt = (e, t) => h.make(e.name, {
372
- payload: S(e.input, e.name, z(e.guards)),
373
- success: b(e.output),
374
- error: R(B(e, "query"), t),
377
+ }), nn = (e, t) => p.make(e.name, {
378
+ payload: b(e.input, e.name, F(e.guards)),
379
+ success: v(e.output),
380
+ error: P(I(e, "query"), t),
375
381
  stream: !0
376
- }), Ft = (e, t) => h.make(e.name, {
377
- payload: S(e.input, e.name, z(e.guards)),
382
+ }), rn = (e, t) => p.make(e.name, {
383
+ payload: b(e.input, e.name, F(e.guards)),
378
384
  success: e.output,
379
- error: R(B(e, "mutation"), t)
380
- }), It = (e, t) => h.make(e.name, {
381
- payload: S(e.input, e.name, z(e.guards)),
385
+ error: P(I(e, "mutation"), t)
386
+ }), an = (e, t) => p.make(e.name, {
387
+ payload: b(e.input, e.name, F(e.guards)),
382
388
  success: e.output,
383
- error: R(B(e, "action"), t)
384
- }), Lt = (e, t) => h.make(e.name, {
385
- payload: S(e.input, e.name, z(e.guards)),
389
+ error: P(I(e, "action"), t)
390
+ }), on = (e, t) => p.make(e.name, {
391
+ payload: b(e.input, e.name, F(e.guards)),
386
392
  success: e.element,
387
- error: R(e.error, t),
393
+ error: P(e.error, t),
388
394
  stream: !0
389
- }), Rt = (e) => {
395
+ }), sn = (e) => {
390
396
  if (typeof e != "object" || !e) return;
391
397
  let t = e._tag;
392
398
  return typeof t == "string" ? t : void 0;
393
- }, zt = (e) => {
399
+ }, cn = (e) => {
394
400
  switch (e.kind) {
395
- case "query": return Pt(e);
396
- case "mutation": return Ft(e);
397
- case "action": return It(e);
398
- case "stream": return Lt(e);
401
+ case "query": return nn(e);
402
+ case "mutation": return rn(e);
403
+ case "action": return an(e);
404
+ case "stream": return on(e);
399
405
  }
400
- }, Bt = (e) => {
406
+ }, ln = (e) => {
401
407
  let t = e.input, n = t === void 0 ? {} : { input: t }, r = e.output, i = r === void 0 ? {} : { output: r };
402
408
  if (e.kind === "query") return {
403
409
  kind: "query",
@@ -415,20 +421,22 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
415
421
  ...n,
416
422
  ...i
417
423
  };
418
- let a = e.target, o = e.idempotencyScope === void 0 ? {} : { idempotencyScope: e.idempotencyScope };
424
+ let a = e.target, o = e.idempotencyScope === void 0 ? {} : { idempotencyScope: e.idempotencyScope }, s = e.serialize === void 0 ? {} : { serialize: e.serialize };
419
425
  if (a === void 0) return {
420
426
  kind: "mutation",
421
427
  ...n,
422
428
  ...i,
423
- ...o
429
+ ...o,
430
+ ...s
424
431
  };
425
- let s = Array.isArray(a) ? a : [a];
432
+ let c = Array.isArray(a) ? a : [a];
426
433
  return {
427
434
  kind: "mutation",
428
435
  ...n,
429
436
  ...i,
430
437
  ...o,
431
- targets: s.map((e) => ({
438
+ ...s,
439
+ targets: c.map((e) => ({
432
440
  table: e.table,
433
441
  op: e.op,
434
442
  ..."order" in e && e.order !== void 0 ? { order: e.order } : {},
@@ -441,7 +449,7 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
441
449
  ..."relations" in e && e.relations !== void 0 ? { relations: e.relations } : {}
442
450
  }))
443
451
  };
444
- }, Vt = 7500, Ht = (e) => typeof e == "object" && !!e && e.kind === "event", Ut = (e) => {
452
+ }, un = 7500, dn = (e) => typeof e == "object" && !!e && e.kind === "event", fn = (e) => {
445
453
  if (e.name.length === 0) throw Error("defineEvent: `name` must not be empty");
446
454
  if (/\s/.test(e.name)) throw Error(`defineEvent("${e.name}"): \`name\` must not contain whitespace.\n The name is used as a broker subject segment. NATS refuses a subject with
447
455
  whitespace and delivers nothing — silently, and only on that broker, so an
@@ -470,66 +478,66 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
470
478
  name: e.name,
471
479
  key: e.key,
472
480
  payload: e.payload,
473
- guards: e.openAccess === void 0 ? e.guards : [f(e.openAccess.trim())],
481
+ guards: e.openAccess === void 0 ? e.guards : [d(e.openAccess.trim())],
474
482
  openAccess: e.openAccess,
475
483
  rewind: e.rewind,
476
484
  webhook: e.webhook,
477
485
  delivery: e.delivery
478
486
  };
479
- }, Wt = (e) => m.Struct({
480
- _tag: m.Literal("event"),
481
- origin: m.String,
482
- n: m.Number,
483
- emittedAt: m.Number,
487
+ }, pn = (e) => f.Struct({
488
+ _tag: f.Literal("event"),
489
+ origin: f.String,
490
+ n: f.Number,
491
+ emittedAt: f.Number,
484
492
  payload: e
485
- }), Gt = m.Struct({
486
- _tag: m.Literal("gap"),
487
- missed: m.Number,
488
- reason: m.Literal("buffer", "resume")
489
- }), Kt = m.Struct({ _tag: m.Literal("attached") }), qt = (e) => m.Union(Kt, Wt(e), Gt), Jt = m.Struct({
490
- origin: m.String,
491
- n: m.Number
492
- }), Yt = (e) => m.Struct({
493
+ }), mn = f.Struct({
494
+ _tag: f.Literal("gap"),
495
+ missed: f.Number,
496
+ reason: f.Literal("buffer", "resume")
497
+ }), hn = f.Struct({ _tag: f.Literal("attached") }), gn = (e) => f.Union(hn, pn(e), mn), _n = f.Struct({
498
+ origin: f.String,
499
+ n: f.Number
500
+ }), vn = (e) => f.Struct({
493
501
  key: e,
494
- resume: m.optional(m.Array(Jt))
495
- }), Xt = (e, t) => {
496
- let n = e.guards !== void 0 && e.guards.some((e) => !d(e)) ? m.Union(u, l) : m.Never, r = t && t.length > 0 ? m.Union(n, ...t) : n;
497
- return h.make(e.name, {
498
- payload: S(Yt(e.key), e.name, z(e.guards)),
499
- success: qt(e.payload),
502
+ resume: f.optional(f.Array(_n))
503
+ }), yn = (e, t) => {
504
+ let n = e.guards !== void 0 && e.guards.some((e) => !u(e)) ? f.Union(l, a) : f.Never, r = t && t.length > 0 ? f.Union(n, ...t) : n;
505
+ return p.make(e.name, {
506
+ payload: b(vn(e.key), e.name, F(e.guards)),
507
+ success: gn(e.payload),
500
508
  error: r,
501
509
  stream: !0
502
510
  });
503
- }, Zt = class extends m.TaggedError()("EventPayloadInvalid", {
504
- event: m.String,
505
- message: m.String
506
- }) {}, Qt = class extends m.TaggedError()("EventKeyInvalid", {
507
- event: m.String,
508
- message: m.String
509
- }) {}, $t = class extends m.TaggedError()("EventPayloadTooLarge", {
510
- event: m.String,
511
- bytes: m.Number,
512
- limit: m.Number
513
- }) {}, en = (e) => {
511
+ }, bn = class extends f.TaggedError()("EventPayloadInvalid", {
512
+ event: f.String,
513
+ message: f.String
514
+ }) {}, xn = class extends f.TaggedError()("EventKeyInvalid", {
515
+ event: f.String,
516
+ message: f.String
517
+ }) {}, Sn = class extends f.TaggedError()("EventPayloadTooLarge", {
518
+ event: f.String,
519
+ bytes: f.Number,
520
+ limit: f.Number
521
+ }) {}, Cn = (e) => {
514
522
  if (typeof e != "object" || !e) return JSON.stringify(e) ?? "null";
515
523
  let t = Object.entries(e).filter(([, e]) => e !== void 0).sort(([e], [t]) => e < t ? -1 : +(e > t));
516
524
  return JSON.stringify(t);
517
- }, tn = "\0", nn = (e, t, n) => [
525
+ }, wn = "\0", Tn = (e, t, n) => [
518
526
  e ?? "~",
519
527
  t,
520
- en(n)
521
- ].join("\0"), rn = (e) => {
528
+ Cn(n)
529
+ ].join("\0"), En = (e) => {
522
530
  let [t = "~", n = "", r = ""] = e.split("\0");
523
531
  return {
524
532
  tenantId: t === "~" ? null : t,
525
533
  event: n,
526
534
  key: r
527
535
  };
528
- }, an = (e) => e.split("\0").join(" · "), V = Symbol.for("@voltro/protocol/workflow-access"), on = {
536
+ }, Dn = (e) => e.split("\0").join(" · "), L = Symbol.for("@voltro/protocol/workflow-access"), On = {
529
537
  guards: void 0,
530
538
  openAccess: void 0,
531
539
  internal: !1
532
- }, sn = (e, t) => {
540
+ }, kn = (e, t) => {
533
541
  let n = t.guards;
534
542
  if (n !== void 0 && n.length === 0) throw Error(`workflow("${e}"): \`guards: []\` is empty, so it enforces nothing —\n but it reads at the call site as if the start were protected. Omit the field
535
543
  and decide with \`openAccess\` or \`internal\`, or list the scopes that may start it.`);
@@ -545,96 +553,41 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
545
553
  \`internal: true\` if the workflow really is meant to be startable by clients.`);
546
554
  }
547
555
  return {
548
- guards: t.openAccess === void 0 ? t.guards : [f(t.openAccess.trim())],
556
+ guards: t.openAccess === void 0 ? t.guards : [d(t.openAccess.trim())],
549
557
  openAccess: t.openAccess?.trim(),
550
558
  internal: t.internal === !0
551
559
  };
552
- }, cn = (e, t) => {
553
- Object.defineProperty(e, V, {
560
+ }, An = (e, t) => {
561
+ Object.defineProperty(e, L, {
554
562
  value: t,
555
563
  enumerable: !1
556
564
  });
557
- }, H = (e) => {
558
- if (typeof e != "object" || !e) return on;
559
- let t = e[V];
560
- return t === void 0 ? on : t;
561
- }, ln = (e) => {
562
- let t = H(e);
565
+ }, R = (e) => {
566
+ if (typeof e != "object" || !e) return On;
567
+ let t = e[L];
568
+ return t === void 0 ? On : t;
569
+ }, jn = (e) => {
570
+ let t = R(e);
563
571
  return {
564
572
  name: e.name,
565
573
  internal: t.internal,
566
574
  guards: t.guards,
567
575
  openAccess: t.openAccess
568
576
  };
569
- }, un = (e) => typeof e == "object" && !!e && typeof e._tag == "string", dn = 64, U = (e, t = 0) => {
570
- if (!un(e)) return String(e);
571
- if (t >= dn) return "…";
572
- let n = t + 1, r = (t) => U(e[t], n), i = (t) => Array.isArray(e[t]) ? e[t] : [];
573
- switch (e._tag) {
574
- case "Transformation": return `T(${r("from")}->${r("to")})`;
575
- case "Refinement": return `R(${r("from")})`;
576
- case "Suspend": return "S(…)";
577
- case "TypeLiteral": {
578
- let e = i("propertySignatures").map((e) => {
579
- let t = e;
580
- return `${String(t.name)}${t.isOptional === !0 ? "?" : ""}:${U(t.type, n)}`;
581
- }).join(","), t = i("indexSignatures").map((e) => {
582
- let t = e;
583
- return `[${U(t.parameter, n)}]:${U(t.type, n)}`;
584
- }).join(",");
585
- return t === "" ? `{${e}}` : `{${e};${t}}`;
586
- }
587
- case "Union": return `U(${i("types").map((e) => U(e, n)).join("|")})`;
588
- case "TupleType": {
589
- let e = i("elements").map((e) => {
590
- let t = e;
591
- return `${U(t.type, n)}${t.isOptional === !0 ? "?" : ""}`;
592
- }).join(","), t = i("rest").map((e) => U(e.type, n)).join(",");
593
- return `A(${e}${t === "" ? "" : `...${t}`})`;
594
- }
595
- case "Declaration": return `D(${i("typeParameters").map((e) => U(e, n)).join(",")})`;
596
- default: return String(e);
597
- }
598
- }, fn = (e) => {
599
- let t = 2166136261;
600
- for (let n = 0; n < e.length; n++) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619) >>> 0;
601
- return t.toString(16).padStart(8, "0");
602
- }, pn = (e) => fn([
603
- U(e.payloadSchema?.ast),
604
- U(e.successSchema?.ast),
605
- U(e.errorSchema?.ast)
606
- ].join("\0")), mn = (e) => {
607
- let t = {}, n = e.requests, r = n instanceof Map ? n.entries() : Array.isArray(n) ? n.map((e, t) => [t, e]) : [];
608
- for (let [, e] of r) {
609
- if (typeof e != "object" && typeof e != "function" || e === null) continue;
610
- let n = e;
611
- typeof n._tag == "string" && (t[n._tag] = pn(n));
612
- }
613
- return t;
614
- }, hn = (e, t) => {
615
- let n = [], r = [];
616
- for (let [i, a] of Object.entries(t)) {
617
- let t = e[i];
618
- t === void 0 ? r.push(i) : t !== a && n.push(i);
619
- }
620
- return {
621
- differing: n.sort(),
622
- missingHere: r.sort()
623
- };
624
- }, gn = (e) => e, _n = (e) => e, vn = (e) => {
577
+ }, Mn = (e) => e, Nn = (e) => e, Pn = (e) => {
625
578
  let t = e.alias?.trim(), n = e.instance?.trim(), r = t !== void 0 && t !== "" ? t : e.base;
626
579
  return n !== void 0 && n !== "" ? `${r}#${n}` : r;
627
- }, yn = (e) => {
580
+ }, Fn = (e) => {
628
581
  if (e.length !== 0) return (t, n) => e.reduceRight((e, t) => t(e, n), t);
629
- }, bn = (e, t) => {
630
- let n = We.GenericTag(e);
582
+ }, In = (e, t) => {
583
+ let n = ut.GenericTag(e);
631
584
  return {
632
585
  Tag: n,
633
- Live: Ge.succeed(n, t)
586
+ Live: dt.succeed(n, t)
634
587
  };
635
- }, xn = (e, t, n) => {
588
+ }, Ln = (e, t, n) => {
636
589
  if (!t) return { ok: !0 };
637
- let r = n === void 0 ? null : W(n);
590
+ let r = n === void 0 ? null : z(n);
638
591
  if (!r) return {
639
592
  ok: !0,
640
593
  unverified: `plugin "${e}" requires framework ${t}, but the running framework version is ${n === void 0 ? "unknown" : `unreadable ("${n}")`} — not checked.`
@@ -642,12 +595,12 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
642
595
  let i = t.trim();
643
596
  if (i === "*" || i === "") return { ok: !0 };
644
597
  let a = i.split(/\s+/).filter((e) => e.length > 0);
645
- for (let i of a) if (!Sn(i, r)) return {
598
+ for (let i of a) if (!Rn(i, r)) return {
646
599
  ok: !1,
647
600
  reason: `plugin "${e}" requires framework ${t}, running ${n}`
648
601
  };
649
602
  return { ok: !0 };
650
- }, W = (e) => {
603
+ }, z = (e) => {
651
604
  let t = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9a-zA-Z.-]+))?$/.exec(e.trim());
652
605
  return t ? {
653
606
  major: Number(t[1]),
@@ -655,273 +608,368 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
655
608
  patch: Number(t[3]),
656
609
  pre: t[4] ?? ""
657
610
  } : null;
658
- }, G = (e, t) => e.major === t.major ? e.minor === t.minor ? e.patch === t.patch ? e.pre && !t.pre ? -1 : !e.pre && t.pre ? 1 : e.pre && t.pre ? e.pre < t.pre ? -1 : +(e.pre > t.pre) : 0 : e.patch - t.patch : e.minor - t.minor : e.major - t.major, Sn = (e, t) => {
611
+ }, B = (e, t) => e.major === t.major ? e.minor === t.minor ? e.patch === t.patch ? e.pre && !t.pre ? -1 : !e.pre && t.pre ? 1 : e.pre && t.pre ? e.pre < t.pre ? -1 : +(e.pre > t.pre) : 0 : e.patch - t.patch : e.minor - t.minor : e.major - t.major, Rn = (e, t) => {
659
612
  if (e === "*") return !0;
660
613
  if (e.startsWith("^")) {
661
- let n = W(e.slice(1));
662
- return !n || t.major !== n.major ? !1 : G(t, n) >= 0;
614
+ let n = z(e.slice(1));
615
+ return !n || t.major !== n.major ? !1 : B(t, n) >= 0;
663
616
  }
664
617
  if (e.startsWith("~")) {
665
- let n = W(e.slice(1));
666
- return !n || t.major !== n.major || t.minor !== n.minor ? !1 : G(t, n) >= 0;
618
+ let n = z(e.slice(1));
619
+ return !n || t.major !== n.major || t.minor !== n.minor ? !1 : B(t, n) >= 0;
667
620
  }
668
621
  let n = /^(>=|<=|>|<)(.+)$/.exec(e);
669
622
  if (n) {
670
- let e = n[1], r = W(n[2]);
623
+ let e = n[1], r = z(n[2]);
671
624
  if (!r) return !1;
672
- let i = G(t, r);
625
+ let i = B(t, r);
673
626
  if (e === ">=") return i >= 0;
674
627
  if (e === "<=") return i <= 0;
675
628
  if (e === ">") return i > 0;
676
629
  if (e === "<") return i < 0;
677
630
  }
678
- let r = W(e);
679
- return r ? G(t, r) === 0 : !1;
680
- }, Cn = (e) => {
631
+ let r = z(e);
632
+ return r ? B(t, r) === 0 : !1;
633
+ }, zn = (e) => {
681
634
  let t = e.startsWith("@") ? e.replace(/^@[^/]+\//, "") : e;
682
635
  return (t.startsWith("plugin-") ? t.slice(7) : t).replace(/-([a-zA-Z0-9])/g, (e, t) => t.toUpperCase());
683
- }, wn = (e) => {
636
+ }, Bn = (e) => {
684
637
  let t = e.startsWith("@") ? e.replace(/^@[^/]+\//, "") : e;
685
638
  return (t.startsWith("plugin-") ? t.slice(7) : t).replace(/#/g, "--").replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
686
- }, Tn = Symbol.for("@voltro/protocol/pluginAliases"), K = () => {
687
- let e = globalThis, t = e[Tn];
639
+ }, Vn = Symbol.for("@voltro/protocol/pluginAliases"), V = () => {
640
+ let e = globalThis, t = e[Vn];
688
641
  if (t instanceof Map) return t;
689
642
  let n = /* @__PURE__ */ new Map();
690
- return e[Tn] = n, n;
691
- }, En = (e) => {
692
- let t = K();
643
+ return e[Vn] = n, n;
644
+ }, Hn = (e) => {
645
+ let t = V();
693
646
  for (let [n, r] of Object.entries(e)) {
694
647
  if (r === "") continue;
695
648
  let e = t.get(n);
696
649
  e === void 0 ? t.set(n, /* @__PURE__ */ new Set([r])) : e.add(r);
697
650
  }
698
- }, Dn = () => {
699
- K().clear();
700
- }, On = (e, t) => {
701
- let n = K().get(e);
702
- if (n === void 0 || n.size === 0) return `${Cn(e)}.${t}`;
651
+ }, Un = () => {
652
+ V().clear();
653
+ }, Wn = (e, t) => {
654
+ let n = V().get(e);
655
+ if (n === void 0 || n.size === 0) return `${zn(e)}.${t}`;
703
656
  if (n.size === 1) return `${[...n][0]}.${t}`;
704
657
  let r = [...n].filter((e) => !e.includes("#"));
705
658
  if (r.length === 1) return `${r[0]}.${t}`;
706
659
  throw Error(`[voltro] ${e} is installed more than once (${[...n].sort().join(", ")}) and no single install is the primary one, so a plugin hook cannot tell which of them it addresses. Call the route by its full tag instead — e.g. useSubscription(api, '${[...n].sort()[0]}.${t}').`);
707
- }, q = m.Literal("running", "succeeded", "failed", "cancelled", "suspended"), kn = m.Literal("cancel", "terminate", "abandon"), An = m.Struct({
708
- mode: m.String,
709
- dueAt: m.NullOr(m.Number),
710
- retryAfterMs: m.NullOr(m.Number),
711
- intentId: m.NullOr(m.String)
712
- }), jn = m.Struct({
713
- id: m.String,
714
- workflowName: m.String,
715
- executionId: m.NullOr(m.String),
716
- status: m.Literal("running", "queued", "dropped", "skipped", "replayed"),
717
- deferral: m.optional(An)
718
- }), Mn = (e, t) => {
719
- let n = H(e);
720
- return h.make(e.name, {
721
- payload: S(e.payloadSchema, e.name, z(n.guards)),
722
- success: jn,
723
- error: Mt({
660
+ }, Gn = f.Union(f.Struct({
661
+ kind: f.Literal("dropped"),
662
+ at: f.Number,
663
+ retryAfterMs: f.Number
664
+ }), f.Struct({
665
+ kind: f.Literal("skipped"),
666
+ at: f.Number,
667
+ executionId: f.String,
668
+ runId: f.String
669
+ }), f.Struct({
670
+ kind: f.Literal("superseded"),
671
+ at: f.Number
672
+ }), f.Struct({
673
+ kind: f.Literal("cancelled"),
674
+ at: f.Number
675
+ }), f.Struct({
676
+ kind: f.Literal("abandoned"),
677
+ at: f.Number,
678
+ failureId: f.NonEmptyString
679
+ })), H = f.Literal("running", "succeeded", "failed", "cancelled", "suspended"), U = f.Struct({
680
+ id: f.String,
681
+ workflowName: f.String,
682
+ executionId: f.String,
683
+ status: f.Union(H, f.Literal("unknown")),
684
+ output: f.optional(f.Unknown),
685
+ error: f.optional(f.Struct({
686
+ tag: f.NullOr(f.String),
687
+ message: f.String
688
+ }))
689
+ }), W = f.Struct({
690
+ operation: f.Literal("cancel", "resume"),
691
+ kind: f.Literal("accepted", "confirmed", "unknown", "already-terminal"),
692
+ requestId: f.NullOr(f.NonEmptyString),
693
+ snapshot: U
694
+ }).pipe(f.filter((e) => e.kind === "unknown" ? !0 : e.kind === "accepted" ? e.requestId !== null && (e.snapshot.status === "running" || e.snapshot.status === "suspended") : e.kind === "already-terminal" ? e.snapshot.status === "succeeded" || e.snapshot.status === "failed" || e.snapshot.status === "cancelled" : e.operation === "cancel" ? e.snapshot.status === "cancelled" : e.requestId !== null && e.snapshot.status === "running", { message: () => "Workflow control acknowledgement contradicts its observed state or receipt identity" })), G = f.Struct({
695
+ operation: f.Literal("cancel"),
696
+ workflowName: f.NonEmptyString,
697
+ receiptId: f.NonEmptyString,
698
+ requestId: f.NullOr(f.NonEmptyString),
699
+ kind: f.Literal("accepted", "confirmed", "unknown", "already-terminal"),
700
+ observation: f.Union(f.Struct({ kind: f.Literal("pending") }), f.Struct({
701
+ kind: f.Literal("admission"),
702
+ outcome: f.Union(Gn, f.Struct({
703
+ kind: f.Literal("rejected"),
704
+ failureId: f.NonEmptyString
705
+ }))
706
+ }), f.Struct({
707
+ kind: f.Literal("execution"),
708
+ snapshot: U
709
+ }), f.Struct({
710
+ kind: f.Literal("unavailable"),
711
+ reason: f.Literal("missing-request", "missing-run", "unconfirmed-generation", "unbound-submission")
712
+ }))
713
+ }).pipe(f.filter((e) => {
714
+ let t = e.observation;
715
+ if (t.kind === "unavailable") return e.kind === "unknown" && (t.reason === "missing-request" ? e.requestId === null : e.requestId !== null);
716
+ if (e.requestId === null) return !1;
717
+ if (t.kind === "pending") return e.kind === "accepted";
718
+ if (t.kind === "admission") return e.kind === (t.outcome.kind === "cancelled" ? "confirmed" : "already-terminal");
719
+ let n = t.snapshot;
720
+ return n.workflowName !== e.workflowName || n.id.length === 0 || n.executionId.length === 0 ? !1 : e.kind === "accepted" ? n.status === "running" || n.status === "suspended" : e.kind === "confirmed" ? n.status === "cancelled" : e.kind === "already-terminal" && (n.status === "succeeded" || n.status === "failed" || n.status === "cancelled");
721
+ }, { message: () => "Queued cancellation acknowledgement contradicts its receipt or observation" })), Kn = f.Literal("cancel", "terminate", "abandon"), qn = f.Struct({
722
+ mode: f.String,
723
+ dueAt: f.NullOr(f.Number),
724
+ retryAfterMs: f.NullOr(f.Number),
725
+ intentId: f.NullOr(f.String)
726
+ }), Jn = f.Struct({
727
+ id: f.String,
728
+ workflowName: f.String,
729
+ executionId: f.NullOr(f.String),
730
+ status: f.Literal("running", "succeeded", "queued", "dropped", "skipped", "replayed"),
731
+ deferral: f.optional(qn)
732
+ }), Yn = (e, t) => {
733
+ let n = R(e);
734
+ return p.make(e.name, {
735
+ payload: b(e.payloadSchema, e.name, F(n.guards)),
736
+ success: Jn,
737
+ error: en({
724
738
  errorSchema: e.errorSchema,
725
739
  guards: n.guards
726
740
  }, t)
727
741
  });
728
- }, J = m.Struct({
729
- id: m.String,
730
- tag: m.String,
731
- executionId: m.String,
732
- status: q,
733
- payload: m.Unknown,
734
- workflowVersion: m.NullOr(m.String),
735
- workflowPatches: m.NullOr(m.Unknown),
736
- output: m.NullOr(m.Unknown),
737
- subject: m.NullOr(m.Unknown),
738
- source: m.NullOr(m.String),
739
- errorTag: m.NullOr(m.String),
740
- errorMessage: m.NullOr(m.String),
741
- cancelled: m.Boolean,
742
- startedAt: m.Date,
743
- completedAt: m.NullOr(m.Date),
744
- durationMs: m.NullOr(m.Number),
745
- traceId: m.NullOr(m.String),
746
- parentExecutionId: m.NullOr(m.String),
747
- parentClosePolicy: m.NullOr(kn)
748
- }), Nn = m.Struct({
749
- tag: m.optional(m.String),
750
- status: m.optional(q),
751
- limit: m.optional(m.Number)
752
- }), Pn = m.Struct({
753
- id: m.String,
754
- runId: m.String,
755
- stepName: m.String,
756
- attempt: m.Number,
757
- status: m.Literal("running", "succeeded", "failed"),
758
- input: m.NullOr(m.Unknown),
759
- retryPolicy: m.NullOr(m.Unknown),
760
- output: m.NullOr(m.Unknown),
761
- errorTag: m.NullOr(m.String),
762
- errorMessage: m.NullOr(m.String),
763
- errorCause: m.NullOr(m.Unknown),
764
- startedAt: m.Date,
765
- completedAt: m.NullOr(m.Date),
766
- durationMs: m.NullOr(m.Number)
767
- }), Fn = m.Struct({
768
- id: m.String,
769
- runId: m.String,
770
- eventType: m.String,
771
- payload: m.NullOr(m.Unknown),
772
- occurredAt: m.Date,
773
- stepName: m.NullOr(m.String),
774
- attempt: m.NullOr(m.Number)
775
- }), In = m.Struct({
776
- id: m.String,
777
- name: m.String,
778
- payload: m.Unknown,
779
- source: m.String,
780
- subject: m.NullOr(m.Unknown),
781
- traceId: m.NullOr(m.String),
782
- occurredAt: m.Date
783
- }), Ln = m.Struct({
784
- id: m.String,
785
- eventId: m.String,
786
- eventName: m.String,
787
- triggerId: m.String,
788
- workflowName: m.String,
789
- executionId: m.NullOr(m.String),
790
- status: m.Literal("starting", "started", "skipped", "failed"),
791
- idempotencyKey: m.String,
792
- skipped: m.Boolean,
793
- errorMessage: m.NullOr(m.String),
794
- createdAt: m.Date,
795
- completedAt: m.NullOr(m.Date)
796
- }), Rn = m.Struct({ id: m.String }), Y = m.Struct({ runId: m.String }), zn = m.Struct({
797
- name: m.optional(m.String),
798
- limit: m.optional(m.Number)
799
- }), Bn = m.Struct({ eventId: m.String }), X = m.Struct({
800
- workflowName: m.String,
801
- executionId: m.String
802
- }), Vn = m.Struct({
803
- id: m.String,
804
- signalName: m.String,
805
- payload: m.optional(m.Unknown)
806
- }), Hn = m.Struct({
807
- id: m.String,
808
- updateName: m.String,
809
- payload: m.optional(m.Unknown),
810
- timeoutMs: m.optional(m.Number)
811
- }), Un = m.Struct({
812
- eventId: m.String,
813
- updateId: m.String,
814
- completedEventId: m.String,
815
- result: m.Unknown
816
- }), Wn = F({
742
+ }, K = f.Struct({
743
+ id: f.String,
744
+ tag: f.String,
745
+ executionId: f.String,
746
+ status: H,
747
+ payload: f.Unknown,
748
+ workflowVersion: f.NullOr(f.String),
749
+ workflowPatches: f.NullOr(f.Unknown),
750
+ output: f.NullOr(f.Unknown),
751
+ subject: f.NullOr(f.Unknown),
752
+ source: f.NullOr(f.String),
753
+ errorTag: f.NullOr(f.String),
754
+ errorMessage: f.NullOr(f.String),
755
+ cancelled: f.Boolean,
756
+ startedAt: f.Date,
757
+ completedAt: f.NullOr(f.Date),
758
+ durationMs: f.NullOr(f.Number),
759
+ traceId: f.NullOr(f.String),
760
+ parentExecutionId: f.NullOr(f.String),
761
+ parentClosePolicy: f.NullOr(Kn)
762
+ }), Xn = f.Struct({
763
+ tag: f.optional(f.String),
764
+ status: f.optional(H),
765
+ limit: f.optional(f.Number)
766
+ }), Zn = f.Struct({
767
+ id: f.String,
768
+ runId: f.String,
769
+ stepName: f.String,
770
+ attempt: f.Number,
771
+ status: f.Literal("running", "succeeded", "failed"),
772
+ input: f.NullOr(f.Unknown),
773
+ retryPolicy: f.NullOr(f.Unknown),
774
+ output: f.NullOr(f.Unknown),
775
+ errorTag: f.NullOr(f.String),
776
+ errorMessage: f.NullOr(f.String),
777
+ errorCause: f.NullOr(f.Unknown),
778
+ startedAt: f.Date,
779
+ completedAt: f.NullOr(f.Date),
780
+ durationMs: f.NullOr(f.Number)
781
+ }), Qn = f.Struct({
782
+ id: f.String,
783
+ runId: f.String,
784
+ eventType: f.String,
785
+ payload: f.NullOr(f.Unknown),
786
+ occurredAt: f.Date,
787
+ stepName: f.NullOr(f.String),
788
+ attempt: f.NullOr(f.Number)
789
+ }), $n = f.Struct({
790
+ id: f.String,
791
+ name: f.String,
792
+ payload: f.Unknown,
793
+ source: f.String,
794
+ subject: f.NullOr(f.Unknown),
795
+ traceId: f.NullOr(f.String),
796
+ occurredAt: f.Date
797
+ }), er = f.Struct({
798
+ id: f.String,
799
+ eventId: f.String,
800
+ eventName: f.String,
801
+ triggerId: f.String,
802
+ workflowName: f.String,
803
+ executionId: f.NullOr(f.String),
804
+ status: f.Literal("starting", "started", "skipped", "failed"),
805
+ idempotencyKey: f.String,
806
+ skipped: f.Boolean,
807
+ errorMessage: f.NullOr(f.String),
808
+ createdAt: f.Date,
809
+ completedAt: f.NullOr(f.Date)
810
+ }), tr = f.Struct({ id: f.String }), q = f.Struct({ runId: f.String }), nr = f.Struct({
811
+ name: f.optional(f.String),
812
+ limit: f.optional(f.Number)
813
+ }), rr = f.Struct({ eventId: f.String }), J = f.Struct({
814
+ requestId: f.NonEmptyString,
815
+ cause: f.optionalWith(f.Struct({
816
+ reason: f.NonEmptyString,
817
+ detail: f.optional(f.Record({
818
+ key: f.String,
819
+ value: f.Unknown
820
+ }))
821
+ }), { exact: !0 })
822
+ }), Y = f.Struct({
823
+ workflowName: f.String,
824
+ executionId: f.String,
825
+ control: f.optional(J)
826
+ }), ir = f.Struct({
827
+ workflowName: f.NonEmptyString,
828
+ executionId: f.NonEmptyString,
829
+ operation: f.Literal("cancel", "resume"),
830
+ requestId: f.NonEmptyString
831
+ }), X = f.Struct({
832
+ workflowName: f.NonEmptyString,
833
+ receiptId: f.NonEmptyString,
834
+ requestId: f.NonEmptyString
835
+ }), ar = f.Struct({
836
+ ...X.fields,
837
+ cause: J.fields.cause
838
+ }), or = N({
839
+ name: "__voltro.workflow.queued.cancel",
840
+ input: ar,
841
+ output: G
842
+ }), sr = j({
843
+ name: "__voltro.workflow.queued.control",
844
+ input: X,
845
+ output: G
846
+ }), cr = j({
847
+ name: "__voltro.workflow.control",
848
+ input: ir,
849
+ output: W
850
+ }), lr = f.Struct({
851
+ id: f.String,
852
+ signalName: f.String,
853
+ payload: f.optional(f.Unknown)
854
+ }), ur = f.Struct({
855
+ id: f.String,
856
+ updateName: f.String,
857
+ payload: f.optional(f.Unknown),
858
+ timeoutMs: f.optional(f.Number)
859
+ }), dr = f.Struct({
860
+ eventId: f.String,
861
+ updateId: f.String,
862
+ completedEventId: f.String,
863
+ result: f.Unknown
864
+ }), fr = j({
817
865
  name: "__voltro.workflow.run",
818
866
  source: "_voltro_workflow_runs",
819
- input: Rn,
820
- output: m.Array(J)
821
- }), Gn = F({
867
+ input: tr,
868
+ output: f.Array(K)
869
+ }), pr = j({
822
870
  name: "__voltro.workflow.runs",
823
871
  source: "_voltro_workflow_runs",
824
- input: Nn,
825
- output: m.Array(J)
826
- }), Kn = F({
872
+ input: Xn,
873
+ output: f.Array(K)
874
+ }), mr = j({
827
875
  name: "__voltro.workflow.run.steps",
828
876
  source: "_voltro_workflow_run_steps",
829
- input: Y,
830
- output: m.Array(Pn)
831
- }), qn = F({
877
+ input: q,
878
+ output: f.Array(Zn)
879
+ }), hr = j({
832
880
  name: "__voltro.workflow.run.events",
833
881
  source: "_voltro_workflow_run_events",
834
- input: Y,
835
- output: m.Array(Fn)
836
- }), Jn = F({
882
+ input: q,
883
+ output: f.Array(Qn)
884
+ }), gr = j({
837
885
  name: "__voltro.workflow.domainEvents",
838
886
  source: "_voltro_workflow_events",
839
- input: zn,
840
- output: m.Array(In)
841
- }), Yn = F({
887
+ input: nr,
888
+ output: f.Array($n)
889
+ }), _r = j({
842
890
  name: "__voltro.workflow.event.deliveries",
843
891
  source: "_voltro_workflow_event_deliveries",
844
- input: Bn,
845
- output: m.Array(Ln)
846
- }), Xn = L({
892
+ input: rr,
893
+ output: f.Array(er)
894
+ }), vr = N({
847
895
  name: "__voltro.workflow.cancel",
848
- input: X,
849
- output: m.Struct({ ok: m.Boolean })
850
- }), Zn = L({
896
+ input: Y,
897
+ output: W
898
+ }), yr = N({
851
899
  name: "__voltro.workflow.resume",
852
- input: X,
853
- output: m.Struct({ ok: m.Boolean })
854
- }), Qn = L({
900
+ input: Y,
901
+ output: W
902
+ }), br = N({
855
903
  name: "__voltro.workflow.signal",
856
- input: Vn,
857
- output: m.Struct({ eventId: m.String })
858
- }), $n = L({
904
+ input: lr,
905
+ output: f.Struct({ eventId: f.String })
906
+ }), xr = N({
859
907
  name: "__voltro.workflow.update",
860
- input: Hn,
861
- output: Un
862
- }), er = "__voltro.undo.log", tr = "__voltro.undo.apply", nr = "__voltro.undo.redo", rr = m.Struct({
863
- id: m.String,
864
- tag: m.String,
865
- label: m.NullOr(m.String),
866
- undone: m.Boolean,
867
- crossesAction: m.Boolean,
868
- createdAt: m.String
869
- }), ir = class extends m.TaggedError()("UndoNotFound", { invocationId: m.String }) {}, ar = class extends m.TaggedError()("UndoForbidden", { invocationId: m.String }) {}, or = class extends m.TaggedError()("UndoConflict", {
870
- invocationId: m.String,
871
- reason: m.Literal("conflict", "action")
872
- }) {}, Z = m.Union(ir, ar, or), sr = F({
873
- name: er,
908
+ input: ur,
909
+ output: dr
910
+ }), Sr = "__voltro.undo.log", Cr = "__voltro.undo.apply", wr = "__voltro.undo.redo", Tr = f.Struct({
911
+ id: f.String,
912
+ tag: f.String,
913
+ label: f.NullOr(f.String),
914
+ undone: f.Boolean,
915
+ crossesAction: f.Boolean,
916
+ createdAt: f.String
917
+ }), Er = class extends f.TaggedError()("UndoNotFound", { invocationId: f.String }) {}, Dr = class extends f.TaggedError()("UndoForbidden", { invocationId: f.String }) {}, Or = class extends f.TaggedError()("UndoConflict", {
918
+ invocationId: f.String,
919
+ reason: f.Literal("conflict", "action")
920
+ }) {}, kr = f.Union(Er, Dr, Or), Ar = j({
921
+ name: Sr,
874
922
  source: "_voltro_undo_log",
875
- input: m.Struct({ limit: m.optional(m.Number) }),
876
- output: m.Array(rr),
923
+ input: f.Struct({ limit: f.optional(f.Number) }),
924
+ output: f.Array(Tr),
877
925
  openAccess: "subject-scoped by construction: lists only the calling subject's own undoable actions"
878
- }), cr = I({
879
- name: tr,
880
- input: m.Struct({ invocationId: m.String }),
881
- output: m.Struct({ ok: m.Boolean }),
882
- error: Z,
926
+ }), jr = M({
927
+ name: Cr,
928
+ input: f.Struct({ invocationId: f.String }),
929
+ output: f.Struct({ ok: f.Boolean }),
930
+ error: kr,
883
931
  openAccess: "subject-scoped by construction: undo is per-actor — another subject's invocation fails typed with UndoForbidden"
884
- }), lr = I({
885
- name: nr,
886
- input: m.Struct({ invocationId: m.String }),
887
- output: m.Struct({ ok: m.Boolean }),
888
- error: Z,
932
+ }), Mr = M({
933
+ name: wr,
934
+ input: f.Struct({ invocationId: f.String }),
935
+ output: f.Struct({ ok: f.Boolean }),
936
+ error: kr,
889
937
  openAccess: "subject-scoped by construction: redo is per-actor — another subject's invocation fails typed with UndoForbidden"
890
- }), ur = class extends m.TaggedError()("TenantScopeViolation", {
891
- table: m.String,
892
- reason: m.String
893
- }) {}, dr = class extends m.TaggedError()("StoreOperationFailed", {
894
- operation: m.String,
895
- table: m.String,
896
- cause: m.String
897
- }) {}, fr = class extends m.TaggedError()("NoRowFound", {
898
- table: m.String,
899
- found: m.Number
938
+ }), Nr = class extends f.TaggedError()("TenantScopeViolation", {
939
+ table: f.String,
940
+ reason: f.String
941
+ }) {}, Pr = class extends f.TaggedError()("StoreOperationFailed", {
942
+ operation: f.String,
943
+ table: f.String,
944
+ cause: f.String
945
+ }) {}, Fr = class extends f.TaggedError()("NoRowFound", {
946
+ table: f.String,
947
+ found: f.Number
900
948
  }) {
901
949
  get message() {
902
950
  return this.found === 0 ? `expected exactly one row in '${this.table}', found none` : `expected exactly one row in '${this.table}', found more than one`;
903
951
  }
904
- }, pr = class extends m.TaggedError()("TableValidationFailed", {
905
- table: m.String,
906
- summary: m.String,
907
- issues: m.Array(m.Struct({
908
- path: m.String,
909
- message: m.String
952
+ }, Ir = class extends f.TaggedError()("TableValidationFailed", {
953
+ table: f.String,
954
+ summary: f.String,
955
+ issues: f.Array(f.Struct({
956
+ path: f.String,
957
+ message: f.String
910
958
  }))
911
- }) {}, mr = class extends m.TaggedError()("TenantRowNotFound", {
912
- table: m.String,
913
- id: m.String,
914
- reason: m.String
915
- }) {}, hr = class extends m.TaggedError()("ServerOnlyColumnWrite", {
916
- table: m.String,
917
- columns: m.Array(m.String)
918
- }) {}, gr = class extends m.TaggedError()("ConstraintViolation", {
919
- kind: m.Literal("foreignKey", "foreignKeyInUse", "unique", "notNull", "check"),
920
- table: m.String,
921
- operation: m.String,
922
- constraint: m.optional(m.String),
923
- column: m.optional(m.String),
924
- detail: m.optional(m.String)
959
+ }) {}, Lr = class extends f.TaggedError()("TenantRowNotFound", {
960
+ table: f.String,
961
+ id: f.String,
962
+ reason: f.String
963
+ }) {}, Rr = class extends f.TaggedError()("ServerOnlyColumnWrite", {
964
+ table: f.String,
965
+ columns: f.Array(f.String)
966
+ }) {}, zr = class extends f.TaggedError()("ConstraintViolation", {
967
+ kind: f.Literal("foreignKey", "foreignKeyInUse", "unique", "notNull", "check"),
968
+ table: f.String,
969
+ operation: f.String,
970
+ constraint: f.optional(f.String),
971
+ column: f.optional(f.String),
972
+ detail: f.optional(f.String)
925
973
  }) {
926
974
  get message() {
927
975
  if (this.detail !== void 0) return this.detail;
@@ -934,85 +982,85 @@ var qe = m.Union(m.String, m.Number), Je = m.Record({
934
982
  case "check": return `check constraint ${t}: the row does not satisfy it`;
935
983
  }
936
984
  }
937
- }, _r = "__voltro.approvals.pending", vr = "__voltro.approvals.decide", yr = F({
938
- name: _r,
985
+ }, Br = "__voltro.approvals.pending", Vr = "__voltro.approvals.decide", Hr = j({
986
+ name: Br,
939
987
  source: "_voltro_approvals",
940
- input: m.Struct({ limit: m.optional(m.Number) }),
941
- output: m.Array(ht),
988
+ input: f.Struct({ limit: f.optional(f.Number) }),
989
+ output: f.Array(Pt),
942
990
  openAccess: "the answer is scoped to the caller — a row appears only if they requested it or hold its recorded approver scopes, so an anonymous caller sees nothing"
943
- }), br = I({
944
- name: vr,
945
- input: m.Struct({
946
- approvalId: m.String,
947
- decision: m.Literal("approve", "reject"),
948
- note: m.optional(m.String)
991
+ }), Ur = M({
992
+ name: Vr,
993
+ input: f.Struct({
994
+ approvalId: f.String,
995
+ decision: f.Literal("approve", "reject"),
996
+ note: f.optional(f.String)
949
997
  }),
950
- output: m.Struct({
951
- approvalId: m.String,
952
- status: m.Literal("approved", "rejected")
998
+ output: f.Struct({
999
+ approvalId: f.String,
1000
+ status: f.Literal("approved", "rejected")
953
1001
  }),
954
- error: mt,
1002
+ error: Nt,
955
1003
  openAccess: "the approver authority is the PENDING ROW's own recorded scopes (plus an unconditional self-approval refusal), checked in-handler — a descriptor-level scope would have to be the union of every approval-requiring procedure in the app"
956
- }), xr = "__voltro.connections.list", Sr = "__voltro.connections.start", Cr = "__voltro.connections.submitToken", wr = "__voltro.connections.disconnect", Q = m.Literal("oauth2", "pat"), Tr = m.Literal("disconnected", "connected", "expired", "revoked", "error"), Er = m.Struct({
957
- connectionId: m.String,
958
- kind: Q,
959
- label: m.String,
960
- status: Tr,
961
- accountId: m.NullOr(m.String),
962
- accountLabel: m.NullOr(m.String),
963
- scopes: m.Array(m.String),
964
- expiresAt: m.NullOr(m.String),
965
- lastError: m.NullOr(m.String),
966
- connectedAt: m.NullOr(m.String)
967
- }), Dr = class extends m.TaggedError()("ConnectionNotDeclared", { connectionId: m.String }) {}, Or = class extends m.TaggedError()("ConnectionSubjectRequired", { connectionId: m.String }) {}, kr = class extends m.TaggedError()("ConnectionKindMismatch", {
968
- connectionId: m.String,
969
- expected: Q,
970
- actual: Q
971
- }) {}, Ar = class extends m.TaggedError()("ConnectionHandshakeFailed", {
972
- connectionId: m.String,
973
- reason: m.String,
974
- transient: m.Boolean
975
- }) {}, $ = m.Union(Dr, Or, kr, Ar), jr = F({
976
- name: xr,
1004
+ }), Wr = "__voltro.connections.list", Gr = "__voltro.connections.start", Kr = "__voltro.connections.submitToken", qr = "__voltro.connections.disconnect", Z = f.Literal("oauth2", "pat"), Jr = f.Literal("disconnected", "connected", "expired", "revoked", "error"), Yr = f.Struct({
1005
+ connectionId: f.String,
1006
+ kind: Z,
1007
+ label: f.String,
1008
+ status: Jr,
1009
+ accountId: f.NullOr(f.String),
1010
+ accountLabel: f.NullOr(f.String),
1011
+ scopes: f.Array(f.String),
1012
+ expiresAt: f.NullOr(f.String),
1013
+ lastError: f.NullOr(f.String),
1014
+ connectedAt: f.NullOr(f.String)
1015
+ }), Xr = class extends f.TaggedError()("ConnectionNotDeclared", { connectionId: f.String }) {}, Zr = class extends f.TaggedError()("ConnectionSubjectRequired", { connectionId: f.String }) {}, Qr = class extends f.TaggedError()("ConnectionKindMismatch", {
1016
+ connectionId: f.String,
1017
+ expected: Z,
1018
+ actual: Z
1019
+ }) {}, Q = class extends f.TaggedError()("ConnectionHandshakeFailed", {
1020
+ connectionId: f.String,
1021
+ reason: f.String,
1022
+ transient: f.Boolean
1023
+ }) {}, $ = f.Union(Xr, Zr, Qr, Q), $r = j({
1024
+ name: Wr,
977
1025
  source: "_voltro_connections",
978
- input: m.Struct({}),
979
- output: m.Array(Er),
1026
+ input: f.Struct({}),
1027
+ output: f.Array(Yr),
980
1028
  openAccess: "self-scoped read: projects the declared connections for the calling subject only (its own connect/disconnect state)"
981
- }), Mr = L({
982
- name: Sr,
983
- input: m.Struct({
984
- connectionId: m.String,
985
- redirectTo: m.optional(m.String)
1029
+ }), ei = N({
1030
+ name: Gr,
1031
+ input: f.Struct({
1032
+ connectionId: f.String,
1033
+ redirectTo: f.optional(f.String)
986
1034
  }),
987
- output: m.Struct({
988
- authorizeUrl: m.String,
989
- state: m.String
1035
+ output: f.Struct({
1036
+ authorizeUrl: f.String,
1037
+ state: f.String
990
1038
  }),
991
1039
  error: $,
992
1040
  openAccess: "self-service: begins an oauth handshake that stores a credential for the calling subject only; anonymous callers fail typed with ConnectionSubjectRequired"
993
- }), Nr = I({
994
- name: Cr,
995
- input: m.Struct({
996
- connectionId: m.String,
997
- token: m.String
1041
+ }), ti = M({
1042
+ name: Kr,
1043
+ input: f.Struct({
1044
+ connectionId: f.String,
1045
+ token: f.String
998
1046
  }),
999
- output: m.Struct({ ok: m.Boolean }),
1047
+ output: f.Struct({ ok: f.Boolean }),
1000
1048
  error: $,
1001
1049
  openAccess: "self-service: stores a pasted token as the calling subject's own credential; anonymous callers fail typed with ConnectionSubjectRequired"
1002
- }), Pr = I({
1003
- name: wr,
1004
- input: m.Struct({ connectionId: m.String }),
1005
- output: m.Struct({ ok: m.Boolean }),
1050
+ }), ni = M({
1051
+ name: qr,
1052
+ input: f.Struct({ connectionId: f.String }),
1053
+ output: f.Struct({ ok: f.Boolean }),
1006
1054
  error: $,
1007
1055
  openAccess: "self-service: deletes only the calling subject's own credential row for this connection"
1008
- }), Fr = (e) => {
1056
+ }), ri = (e) => {
1009
1057
  let t = e instanceof Date ? e.getTime() : typeof e == "number" ? e : typeof e == "string" ? new Date(e).getTime() : 0;
1010
1058
  return Number.isNaN(t) ? 0 : t;
1011
- }, Ir = 4001, Lr = /* @__PURE__ */ new Set(["/rpc", "/ws"]), Rr = (e) => {
1059
+ }, ii = 4001, ai = /* @__PURE__ */ new Set(["/rpc", "/ws"]), oi = (e) => {
1012
1060
  if (!e.path.startsWith("/")) throw Error(`defineWebSocket: path must be absolute, got '${e.path}'`);
1013
- if (Lr.has(e.path)) throw Error(`defineWebSocket: '${e.path}' is the framework's own socket surface — mount the gateway elsewhere`);
1061
+ if (ai.has(e.path)) throw Error(`defineWebSocket: '${e.path}' is the framework's own socket surface — mount the gateway elsewhere`);
1014
1062
  if (e.auth !== "subject" && e.auth !== "public") throw Error(`defineWebSocket: auth must be 'subject' or 'public' (explicitly — an unauthenticated socket has to be a decision somebody wrote down), got '${String(e.auth)}'`);
1015
1063
  return e;
1016
- }, zr = 1;
1064
+ }, si = 1;
1017
1065
  //#endregion
1018
- export { Oe as ADMIN_SCOPE, Se as APIKEY_ISSUE_ORG_SCOPE, Ee as APIKEY_ISSUE_OTHER_SCOPE, _e as APIKEY_ISSUE_SELF_SCOPE, vr as APPROVALS_DECIDE_TAG, _r as APPROVALS_PENDING_TAG, mt as ApprovalDecisionErrors, pt as ApprovalErrors, C as ApprovalExpired, ft as ApprovalForbidden, ct as ApprovalNotFound, dt as ApprovalNotPending, ut as ApprovalRejected, st as ApprovalRequired, lt as ApprovalSelfApproval, w as ApprovalUnavailable, se as AuthMiddleware, nt as BusinessRuleViolation, xr as CONNECTIONS_LIST_TAG, wr as CONNECTION_DISCONNECT_TAG, Sr as CONNECTION_START_TAG, Cr as CONNECTION_SUBMIT_TOKEN_TAG, Ar as ConnectionHandshakeFailed, i as ConnectionInfo, r as ConnectionInfoMiddleware, Q as ConnectionKind, kr as ConnectionKindMismatch, Dr as ConnectionNotDeclared, Er as ConnectionState, Tr as ConnectionStatus, Or as ConnectionSubjectRequired, gr as ConstraintViolation, ie as DEFAULT_SCOPE_CACHE_MAX_ENTRIES, ye as DEFAULT_SCOPE_CACHE_TTL_MS, tn as EVENT_ROUTE_SEP, Qt as EventKeyInvalid, Zt as EventPayloadInvalid, $t as EventPayloadTooLarge, Ir as GATEWAY_CREDENTIAL_EXPIRED_CLOSE_CODE, e as IMPERSONATION_METADATA_KEY, Vt as MAX_EVENT_ENVELOPE_BYTES, Be as MUTATION_IN_FLIGHT_RETRY_AFTER_MS, p as MutationConnectionRequired, Pe as MutationInFlight, fr as NoRowFound, zr as PROTOCOL_VERSION, ht as PendingApproval, T as REACTIVITY_CHANNEL_PREFIX, u as ScopeError, hr as ServerOnlyColumnWrite, dr as StoreOperationFailed, ve as Subject, ne as SubjectIdentity, re as SubjectService, pr as TableValidationFailed, mr as TenantRowNotFound, ur as TenantScopeViolation, tr as UNDO_APPLY_TAG, er as UNDO_LOG_TAG, nr as UNDO_REDO_TAG, l as Unauthenticated, or as UndoConflict, ar as UndoForbidden, rr as UndoLogEntry, ir as UndoNotFound, it as ValidationError, at as ValidationErrors, rt as ValidationIssue, V as WorkflowAccessProperty, X as WorkflowControlInputSchema, In as WorkflowDomainEventRowSchema, zn as WorkflowDomainEventsInputSchema, Bn as WorkflowEventDeliveriesInputSchema, Ln as WorkflowEventDeliveryRowSchema, kn as WorkflowParentClosePolicySchema, Fn as WorkflowRunEventRowSchema, jn as WorkflowRunHandleSchema, Rn as WorkflowRunRefSchema, J as WorkflowRunRowSchema, q as WorkflowRunStatusSchema, Pn as WorkflowRunStepRowSchema, Y as WorkflowRunTableRefSchema, Nn as WorkflowRunsInputSchema, Vn as WorkflowSignalInputSchema, An as WorkflowStartDeferralSchema, Hn as WorkflowUpdateInputSchema, Un as WorkflowUpdateResultSchema, It as actionToRpc, Ce as advisoryResourceGuardWarning, a as anonymousSubject, et as applyRowPatch, c as applyScopeDecision, br as approvalsDecideDescriptor, yr as approvalsPendingQueryDescriptor, te as assertAuthenticated, cn as attachWorkflowAccess, ze as beginIdempotent, xn as checkFrameworkCompat, De as checkGuards, pe as checkGuardsEffect, hn as compareSurfaces, ae as composeAuthStrategies, yn as composeRpcInterceptors, Pr as connectionDisconnectDescriptor, Mr as connectionStartDescriptor, Nr as connectionSubmitTokenDescriptor, jr as connectionsListQueryDescriptor, k as declaredReactivityChannelKeys, L as defineAction, Ut as defineEvent, I as defineMutation, gn as definePlugin, _n as definePluginRoute, bn as definePluginService, F as defineQuery, Dt as defineStream, Rr as defineWebSocket, Qe as diffRows, be as effectiveScopes, en as encodeEventKey, Rt as errorTag, Kt as eventAttached, Wt as eventEnvelope, Gt as eventGap, Jt as eventResumePoint, nn as eventRoute, qt as eventStreamEvent, Yt as eventSubscribeInput, Xt as eventToRpc, Ve as failIdempotent, ot as fieldIssuesOf, ke as findAdvisoryResourceGuards, Fe as finishIdempotent, an as formatEventRoute, me as getPolicyGuardResolver, he as getResourceScopeResolver, H as getWorkflowAccess, mn as groupShapeDigests, Et as hasAccessDecision, Ne as hasCallbackRoutes, we as hasEffectiveScope, z as hasEnforcedGuard, xe as hasScope, g as idToPath, Le as idempotencyScope, x as inputLabel, ge as isAuthenticatedCheck, Tt as isAuthenticatedGuard, Ht as isEventDescriptor, $e as isIdKeyed, d as isOpenAccess, de as isPolicyCheck, wt as isPolicyGuard, D as isReactivityChannel, O as isReactivityChannelKey, t as isSystemSubject, St as isWireReachable, le as makeScopeCache, Ue as memoryIdempotencyStore, Ae as missingAccessDecision, Ft as mutationToRpc, Bt as normalizeDescriptor, M as normalizeSource, f as openAccessSpec, s as orderByBearerPrefix, rn as parseEventRoute, _ as pathToId, Cn as pluginAlias, vn as pluginInstanceName, wn as pluginSlug, On as pluginTag, pn as procedureShapeDigest, xt as publishReactivity, He as publishServerError, Pt as queryToRpc, ce as rawImpersonationMark, yt as reactivityChannel, En as registerPluginAliases, fe as requireScope, Dn as resetPluginAliases, sn as resolveWorkflowAccess, Ye as rowPatchOpSchema, Xe as rowPatchSchema, U as schemaShape, ue as scopeCacheKey, Me as setEffectiveScopes, oe as setPolicyGuardResolver, n as setResourceScopeResolver, fn as shapeDigest, j as sourceKeys, Lt as streamToRpc, S as strictInput, o as subjectIdentity, je as subjectScopes, Re as subscribeServerErrors, b as subscriptionEvent, ee as systemSubject, Te as tenantScopedSubject, zt as toRpc, Fr as tsMs, bt as undeclaredChannelKeys, cr as undoApplyDescriptor, sr as undoLogQueryDescriptor, lr as undoRedoDescriptor, B as wireErrorUnion, Nt as withRpcTag, ln as workflowAccessDescriptor, Xn as workflowCancelDescriptor, Jn as workflowDomainEventsQueryDescriptor, Yn as workflowEventDeliveriesQueryDescriptor, Zn as workflowResumeDescriptor, qn as workflowRunEventsQueryDescriptor, Wn as workflowRunQueryDescriptor, Kn as workflowRunStepsQueryDescriptor, Gn as workflowRunsQueryDescriptor, Qn as workflowSignalDescriptor, Mn as workflowToRpc, $n as workflowUpdateDescriptor, Mt as workflowWireErrorUnion, Ie as wsMutationIdempotencyScope };
1066
+ export { je as ADMIN_SCOPE, Te as APIKEY_ISSUE_ORG_SCOPE, ke as APIKEY_ISSUE_OTHER_SCOPE, be as APIKEY_ISSUE_SELF_SCOPE, Vr as APPROVALS_DECIDE_TAG, Br as APPROVALS_PENDING_TAG, Nt as ApprovalDecisionErrors, Mt as ApprovalErrors, S as ApprovalExpired, jt as ApprovalForbidden, Dt as ApprovalNotFound, At as ApprovalNotPending, kt as ApprovalRejected, Et as ApprovalRequired, Ot as ApprovalSelfApproval, C as ApprovalUnavailable, i as AuthMiddleware, x as BusinessRuleViolation, Wr as CONNECTIONS_LIST_TAG, qr as CONNECTION_DISCONNECT_TAG, Gr as CONNECTION_START_TAG, Kr as CONNECTION_SUBMIT_TOKEN_TAG, Q as ConnectionHandshakeFailed, r as ConnectionInfo, ae as ConnectionInfoMiddleware, Z as ConnectionKind, Qr as ConnectionKindMismatch, Xr as ConnectionNotDeclared, Yr as ConnectionState, Jr as ConnectionStatus, Zr as ConnectionSubjectRequired, zr as ConstraintViolation, Se as DEFAULT_SCOPE_CACHE_MAX_ENTRIES, e as DEFAULT_SCOPE_CACHE_TTL_MS, wn as EVENT_ROUTE_SEP, xn as EventKeyInvalid, bn as EventPayloadInvalid, Sn as EventPayloadTooLarge, ii as GATEWAY_CREDENTIAL_EXPIRED_CLOSE_CODE, xe as IMPERSONATION_METADATA_KEY, it as JSONAPI_MEDIA_TYPE, un as MAX_EVENT_ENVELOPE_BYTES, lt as MUTATION_IN_FLIGHT_RETRY_AFTER_MS, We as MutationConnectionRequired, ct as MutationInFlight, Fr as NoRowFound, $e as PROBLEM_JSON, si as PROTOCOL_VERSION, Pt as PendingApproval, w as REACTIVITY_CHANNEL_PREFIX, nt as REST_PROFILE_NAMES, l as ScopeError, Rr as ServerOnlyColumnWrite, Pr as StoreOperationFailed, re as Subject, ie as SubjectIdentity, oe as SubjectService, Ir as TableValidationFailed, Lr as TenantRowNotFound, Nr as TenantScopeViolation, Cr as UNDO_APPLY_TAG, Sr as UNDO_LOG_TAG, wr as UNDO_REDO_TAG, a as Unauthenticated, Or as UndoConflict, Dr as UndoForbidden, Tr as UndoLogEntry, Er as UndoNotFound, Ct as ValidationError, wt as ValidationErrors, St as ValidationIssue, L as WorkflowAccessProperty, Y as WorkflowControlInputSchema, J as WorkflowControlIntentSchema, ir as WorkflowControlReadInputSchema, W as WorkflowControlResultSchema, $n as WorkflowDomainEventRowSchema, nr as WorkflowDomainEventsInputSchema, rr as WorkflowEventDeliveriesInputSchema, er as WorkflowEventDeliveryRowSchema, Kn as WorkflowParentClosePolicySchema, ar as WorkflowQueuedCancelInputSchema, G as WorkflowQueuedCancellationResultSchema, X as WorkflowQueuedControlTargetSchema, Qn as WorkflowRunEventRowSchema, Jn as WorkflowRunHandleSchema, tr as WorkflowRunRefSchema, K as WorkflowRunRowSchema, U as WorkflowRunSnapshotSchema, H as WorkflowRunStatusSchema, Zn as WorkflowRunStepRowSchema, q as WorkflowRunTableRefSchema, Xn as WorkflowRunsInputSchema, lr as WorkflowSignalInputSchema, qn as WorkflowStartDeferralSchema, Gn as WorkflowStartTerminalOutcomeSchema, ur as WorkflowUpdateInputSchema, dr as WorkflowUpdateResultSchema, an as actionToRpc, Ee as advisoryResourceGuardWarning, c as anonymousSubject, bt as applyRowPatch, ne as applyScopeDecision, Ur as approvalsDecideDescriptor, Hr as approvalsPendingQueryDescriptor, se as assertAuthenticated, An as attachWorkflowAccess, Be as beginIdempotent, Ln as checkFrameworkCompat, Ae as checkGuards, ge as checkGuardsEffect, Qe as compareSurfaces, Ie as composeAuthStrategies, Fn as composeRpcInterceptors, ni as connectionDisconnectDescriptor, ei as connectionStartDescriptor, ti as connectionSubmitTokenDescriptor, $r as connectionsListQueryDescriptor, Vt as declaredReactivityChannelKeys, N as defineAction, fn as defineEvent, M as defineMutation, Mn as definePlugin, Nn as definePluginRoute, In as definePluginService, j as defineQuery, Yt as defineStream, oi as defineWebSocket, vt as diffRows, Ce as effectiveScopes, Cn as encodeEventKey, Xe as encodeRestError, Ue as encodeRestSuccess, sn as errorTag, hn as eventAttached, pn as eventEnvelope, mn as eventGap, _n as eventResumePoint, Tn as eventRoute, gn as eventStreamEvent, vn as eventSubscribeInput, yn as eventToRpc, Le as failIdempotent, Tt as fieldIssuesOf, Me as findAdvisoryResourceGuards, st as finishIdempotent, Dn as formatEventRoute, _e as getPolicyGuardResolver, ve as getResourceScopeResolver, R as getWorkflowAccess, Ye as groupShapeDigests, Jt as hasAccessDecision, t as hasCallbackRoutes, De as hasEffectiveScope, F as hasEnforcedGuard, we as hasScope, h as idToPath, Ve as idempotencyScope, y as inputLabel, ye as isAuthenticatedCheck, qt as isAuthenticatedGuard, dn as isEventDescriptor, yt as isIdKeyed, u as isOpenAccess, me as isPolicyCheck, Kt as isPolicyGuard, zt as isReactivityChannel, Bt as isReactivityChannelKey, de as isSystemSubject, Wt as isWireReachable, s as makeScopeCache, ze as memoryIdempotencyStore, Ne as missingAccessDecision, rn as mutationToRpc, et as nextLink, ln as normalizeDescriptor, O as normalizeSource, d as openAccessSpec, ue as orderByBearerPrefix, En as parseEventRoute, gt as pathToId, zn as pluginAlias, Pn as pluginInstanceName, Bn as pluginSlug, Wn as pluginTag, rt as problemDetails, Ge as problemTypeOf, Je as procedureShapeDigest, Ut as publishReactivity, qe as publishServerError, nn as queryToRpc, fe as rawImpersonationMark, Rt as reactivityChannel, Hn as registerPluginAliases, he as requireScope, Un as resetPluginAliases, Fe as resolvePolicyAction, Ze as resolveRestFormat, kn as resolveWorkflowAccess, at as restViewSchema, mt as rowPatchOpSchema, ht as rowPatchSchema, He as schemaShape, o as scopeCacheKey, ce as setEffectiveScopes, n as setPolicyGuardResolver, Pe as setResourceScopeResolver, ot as shapeDigest, D as sourceKeys, on as streamToRpc, b as strictInput, te as subjectAuditActorId, Oe as subjectIdentity, le as subjectScopes, tt as subscribeServerErrors, v as subscriptionEvent, ee as systemSubject, pe as tenantScopedSubject, cn as toRpc, Ke as toSnakeCase, ri as tsMs, Ht as undeclaredChannelKeys, jr as undoApplyDescriptor, Ar as undoLogQueryDescriptor, Mr as undoRedoDescriptor, I as wireErrorUnion, tn as withRpcTag, jn as workflowAccessDescriptor, vr as workflowCancelDescriptor, cr as workflowControlQueryDescriptor, gr as workflowDomainEventsQueryDescriptor, _r as workflowEventDeliveriesQueryDescriptor, or as workflowQueuedCancelDescriptor, sr as workflowQueuedControlQueryDescriptor, yr as workflowResumeDescriptor, hr as workflowRunEventsQueryDescriptor, fr as workflowRunQueryDescriptor, mr as workflowRunStepsQueryDescriptor, pr as workflowRunsQueryDescriptor, br as workflowSignalDescriptor, Yn as workflowToRpc, xr as workflowUpdateDescriptor, en as workflowWireErrorUnion, Re as wsMutationIdempotencyScope };