@voltro/protocol 0.37.0 → 0.39.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,30 +1,30 @@
1
- import { A as e, B as t, C as n, D as r, E as i, F as a, H as o, I as ee, L as te, M as ne, N as re, O as ie, P as ae, R as s, S as oe, T as c, U as se, V as ce, _ as le, a as ue, b as de, c as fe, d as pe, f as me, g as he, 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, r as Te, s as Ee, t as De, u as Oe, v as ke, w as Ae, x as je, y as Me, z as Ne } from "./auth-B6YZuSBr.js";
2
- import { a as Pe, c as Fe, i as Ie, n as Le, o as Re, r as ze, s as Be, t as Ve } from "./serverErrorBus-BeN9pOpY.js";
3
- import { Context as He, Layer as Ue, Schema as l } from "effect";
4
- import { Rpc as u } from "@effect/rpc";
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 ee, I as te, L as s, M as ne, N as re, O as ie, P as ae, R as oe, S as se, T as ce, U as le, V as ue, W as de, _ as fe, a as pe, b as me, c as he, d as ge, f as _e, g as ve, 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, r as Oe, s as ke, t as Ae, u as je, v as Me, w as Ne, x as Pe, y as Fe, z as Ie } from "./auth-CKS3UNnf.js";
2
+ import { a as Le, c as Re, i as ze, n as Be, o as Ve, r as He, s as Ue, t as We } from "./serverErrorBus-BeN9pOpY.js";
3
+ import { Context as Ge, Layer as Ke, Schema as c } from "effect";
4
+ import { Rpc as l } from "@effect/rpc";
5
5
  //#region src/rowPatch.ts
6
- var We = l.Union(l.String, l.Number), d = l.Record({
7
- key: l.String,
8
- value: l.Unknown
9
- }).pipe(l.filter((e) => "id" in e, { message: () => "patch row must carry an id" })), f = l.Union(l.Struct({
10
- op: l.Literal("add"),
11
- path: l.String,
12
- value: d
13
- }), l.Struct({
14
- op: l.Literal("replace"),
15
- path: l.String,
16
- value: d
17
- }), l.Struct({
18
- op: l.Literal("remove"),
19
- path: l.String
20
- })), p = l.Struct({
21
- ops: l.Array(f),
22
- order: l.Array(We)
23
- }), m = (e) => `/${String(e).replace(/~/g, "~0").replace(/\//g, "~1")}`, Ge = (e) => (e.startsWith("/") ? e.slice(1) : e).replace(/~1/g, "/").replace(/~0/g, "~"), h = (e) => {
6
+ var qe = c.Union(c.String, c.Number), u = c.Record({
7
+ key: c.String,
8
+ value: c.Unknown
9
+ }).pipe(c.filter((e) => "id" in e, { message: () => "patch row must carry an id" })), d = c.Union(c.Struct({
10
+ op: c.Literal("add"),
11
+ path: c.String,
12
+ value: u
13
+ }), c.Struct({
14
+ op: c.Literal("replace"),
15
+ path: c.String,
16
+ value: u
17
+ }), c.Struct({
18
+ op: c.Literal("remove"),
19
+ path: c.String
20
+ })), f = c.Struct({
21
+ ops: c.Array(d),
22
+ order: c.Array(qe)
23
+ }), p = (e) => `/${String(e).replace(/~/g, "~0").replace(/\//g, "~1")}`, Je = (e) => (e.startsWith("/") ? e.slice(1) : e).replace(/~1/g, "/").replace(/~0/g, "~"), m = (e) => {
24
24
  let t = Object.keys(e).sort(), n = {};
25
25
  for (let r of t) n[r] = e[r];
26
26
  return JSON.stringify(n);
27
- }, Ke = (e, t) => h(e) === h(t), qe = (e, t) => {
27
+ }, Ye = (e, t) => m(e) === m(t), Xe = (e, t) => {
28
28
  let n = /* @__PURE__ */ new Map();
29
29
  for (let t of e) n.set(t.id, t);
30
30
  let r = [], i = [], a = /* @__PURE__ */ new Set();
@@ -33,26 +33,26 @@ var We = l.Union(l.String, l.Number), d = l.Record({
33
33
  let t = n.get(e.id);
34
34
  t === void 0 ? r.push({
35
35
  op: "add",
36
- path: m(e.id),
36
+ path: p(e.id),
37
37
  value: e
38
- }) : Ke(t, e) || r.push({
38
+ }) : Ye(t, e) || r.push({
39
39
  op: "replace",
40
- path: m(e.id),
40
+ path: p(e.id),
41
41
  value: e
42
42
  });
43
43
  }
44
44
  for (let t of e) a.has(t.id) || r.push({
45
45
  op: "remove",
46
- path: m(t.id)
46
+ path: p(t.id)
47
47
  });
48
48
  return {
49
49
  ops: r,
50
50
  order: i
51
51
  };
52
- }, Je = (e) => e.every((e) => {
52
+ }, Ze = (e) => e.every((e) => {
53
53
  let t = e.id;
54
54
  return typeof t == "string" || typeof t == "number";
55
- }), Ye = (e, t) => {
55
+ }), Qe = (e, t) => {
56
56
  let n = /* @__PURE__ */ new Map();
57
57
  for (let t of e) n.set(t.id, t);
58
58
  for (let e of t.ops) (e.op === "add" || e.op === "replace") && n.set(e.value.id, e.value);
@@ -62,108 +62,111 @@ var We = l.Union(l.String, l.Number), d = l.Record({
62
62
  t !== void 0 && r.push(t);
63
63
  }
64
64
  return r;
65
- }, g = (e) => l.Union(l.Struct({
66
- _tag: l.Literal("snapshot"),
67
- revision: l.Number,
65
+ }, h = (e) => c.Union(c.Struct({
66
+ _tag: c.Literal("snapshot"),
67
+ revision: c.Number,
68
68
  data: e,
69
- computed: l.optional(l.Boolean)
70
- }), l.Struct({
71
- _tag: l.Literal("delta"),
72
- revision: l.Number,
73
- emittedAt: l.Number,
74
- patch: p
75
- }), l.Struct({
76
- _tag: l.Literal("error"),
77
- error: l.Unknown,
78
- revision: l.optional(l.Number)
79
- })), Xe = (e) => {
69
+ computed: c.optional(c.Boolean)
70
+ }), c.Struct({
71
+ _tag: c.Literal("delta"),
72
+ revision: c.Number,
73
+ emittedAt: c.Number,
74
+ patch: f
75
+ }), c.Struct({
76
+ _tag: c.Literal("error"),
77
+ error: c.Unknown,
78
+ revision: c.optional(c.Number)
79
+ })), $e = (e) => {
80
80
  let t = e.ast;
81
81
  return t._tag === "TypeLiteral" && (t.propertySignatures?.length ?? 0) === 0 && (t.indexSignatures?.length ?? 0) === 0;
82
- }, _ = (e) => {
83
- let t = e.annotations({ parseOptions: { onExcessProperty: "error" } });
84
- return Xe(e) ? l.filter((e) => typeof e == "object" && e && Object.keys(e).length > 0 ? `this procedure declares no input; received: ${Object.keys(e).join(", ")}` : void 0)(t) : t;
85
- }, v = class extends l.TaggedError()("BusinessRuleViolation", {
86
- rule: l.String,
87
- params: l.optional(l.Record({
88
- key: l.String,
89
- value: l.Unknown
82
+ }, g = (e, t) => {
83
+ let n = e.annotations({
84
+ parseOptions: { onExcessProperty: "error" },
85
+ parseIssueTitle: () => `${t ?? "this procedure"} input`
86
+ });
87
+ return $e(e) ? c.filter((e) => typeof e == "object" && e && Object.keys(e).length > 0 ? `this procedure declares no input; received: ${Object.keys(e).join(", ")}` : void 0)(n).annotations({ identifier: `${t ?? "this procedure"} input` }) : n;
88
+ }, _ = class extends c.TaggedError()("BusinessRuleViolation", {
89
+ rule: c.String,
90
+ params: c.optional(c.Record({
91
+ key: c.String,
92
+ value: c.Unknown
90
93
  })),
91
- field: l.optional(l.String),
92
- message: l.optional(l.String),
93
- severity: l.Literal("error", "warning")
94
- }) {}, y = class extends l.TaggedError()("ApprovalRequired", {
95
- approvalId: l.String,
96
- procedure: l.String,
97
- expiresAt: l.String,
98
- requiredScopes: l.Array(l.String),
99
- reason: l.NullOr(l.String),
100
- created: l.Boolean
101
- }) {}, b = class extends l.TaggedError()("ApprovalNotFound", { approvalId: l.String }) {}, x = class extends l.TaggedError()("ApprovalSelfApproval", {
102
- approvalId: l.String,
103
- subjectId: l.NullOr(l.String)
104
- }) {}, S = class extends l.TaggedError()("ApprovalRejected", {
105
- approvalId: l.String,
106
- decidedBy: l.NullOr(l.String),
107
- note: l.NullOr(l.String)
108
- }) {}, C = class extends l.TaggedError()("ApprovalExpired", {
109
- approvalId: l.String,
110
- expiredAt: l.String
111
- }) {}, w = class extends l.TaggedError()("ApprovalNotPending", {
112
- approvalId: l.String,
113
- status: l.String
114
- }) {}, T = class extends l.TaggedError()("ApprovalForbidden", {
115
- approvalId: l.String,
116
- required: l.NullOr(l.String),
117
- message: l.String
118
- }) {}, E = class extends l.TaggedError()("ApprovalUnavailable", {
119
- procedure: l.String,
120
- message: l.String
121
- }) {}, D = l.Union(y, S, C, E), O = l.Union(b, x, C, w, T, E), k = l.Struct({
122
- id: l.String,
123
- procedure: l.String,
124
- kind: l.Literal("mutation", "action"),
125
- requestedBy: l.NullOr(l.String),
126
- status: l.Literal("pending", "approved", "rejected", "expired", "consumed"),
127
- reason: l.NullOr(l.String),
128
- requiredScopes: l.Array(l.String),
129
- requestedAt: l.String,
130
- expiresAt: l.String,
131
- decidedBy: l.NullOr(l.String),
132
- decidedAt: l.NullOr(l.String),
133
- note: l.NullOr(l.String),
134
- relation: l.Literal("to-decide", "requested")
135
- }), A = "channel:", j = Symbol.for("@voltro/protocol/reactivityChannels"), M = globalThis, N = M[j] ?? (M[j] = /* @__PURE__ */ new Map()), Ze = /^[a-z][a-z0-9-]*(\.[a-z0-9-]+)*$/, Qe = (e) => {
136
- if (!Ze.test(e)) throw Error(`reactivityChannel('${e}'): invalid channel name.\n Use lowercase kebab segments separated by dots — \`presence\`, \`job-queue\`,
94
+ field: c.optional(c.String),
95
+ message: c.optional(c.String),
96
+ severity: c.Literal("error", "warning")
97
+ }) {}, v = class extends c.TaggedError()("ApprovalRequired", {
98
+ approvalId: c.String,
99
+ procedure: c.String,
100
+ expiresAt: c.String,
101
+ requiredScopes: c.Array(c.String),
102
+ reason: c.NullOr(c.String),
103
+ created: c.Boolean
104
+ }) {}, y = class extends c.TaggedError()("ApprovalNotFound", { approvalId: c.String }) {}, b = class extends c.TaggedError()("ApprovalSelfApproval", {
105
+ approvalId: c.String,
106
+ subjectId: c.NullOr(c.String)
107
+ }) {}, x = class extends c.TaggedError()("ApprovalRejected", {
108
+ approvalId: c.String,
109
+ decidedBy: c.NullOr(c.String),
110
+ note: c.NullOr(c.String)
111
+ }) {}, S = class extends c.TaggedError()("ApprovalExpired", {
112
+ approvalId: c.String,
113
+ expiredAt: c.String
114
+ }) {}, C = class extends c.TaggedError()("ApprovalNotPending", {
115
+ approvalId: c.String,
116
+ status: c.String
117
+ }) {}, w = class extends c.TaggedError()("ApprovalForbidden", {
118
+ approvalId: c.String,
119
+ required: c.NullOr(c.String),
120
+ message: c.String
121
+ }) {}, T = class extends c.TaggedError()("ApprovalUnavailable", {
122
+ procedure: c.String,
123
+ message: c.String
124
+ }) {}, E = c.Union(v, x, S, T), D = c.Union(y, b, S, C, w, T), O = c.Struct({
125
+ id: c.String,
126
+ procedure: c.String,
127
+ kind: c.Literal("mutation", "action"),
128
+ requestedBy: c.NullOr(c.String),
129
+ status: c.Literal("pending", "approved", "rejected", "expired", "consumed"),
130
+ reason: c.NullOr(c.String),
131
+ requiredScopes: c.Array(c.String),
132
+ requestedAt: c.String,
133
+ expiresAt: c.String,
134
+ decidedBy: c.NullOr(c.String),
135
+ decidedAt: c.NullOr(c.String),
136
+ note: c.NullOr(c.String),
137
+ relation: c.Literal("to-decide", "requested")
138
+ }), k = "channel:", A = Symbol.for("@voltro/protocol/reactivityChannels"), j = globalThis, M = j[A] ?? (j[A] = /* @__PURE__ */ new Map()), et = /^[a-z][a-z0-9-]*(\.[a-z0-9-]+)*$/, tt = (e) => {
139
+ if (!et.test(e)) throw Error(`reactivityChannel('${e}'): invalid channel name.\n Use lowercase kebab segments separated by dots — \`presence\`, \`job-queue\`,
137
140
  \`billing.usage\`. A \`:\` is refused because it is the namespace separator in
138
- the routing key (\`${A}<name>\`), and an uppercase letter is\n refused because a key that differs only by case reads as one channel and
141
+ the routing key (\`${k}<name>\`), and an uppercase letter is\n refused because a key that differs only by case reads as one channel and
139
142
  routes as two.`);
140
- let t = N.get(e);
143
+ let t = M.get(e);
141
144
  if (t !== void 0) return t;
142
- let n = `${A}${e}`, r = Object.freeze({
145
+ let n = `${k}${e}`, r = Object.freeze({
143
146
  kind: "reactivity-channel",
144
147
  name: e,
145
148
  key: n,
146
149
  toString: () => n
147
150
  });
148
- return N.set(e, r), r;
149
- }, P = (e) => typeof e == "object" && !!e && e.kind === "reactivity-channel", F = (e) => e.startsWith(A), I = () => new Set([...N.values()].map((e) => e.key)), L = (e) => P(e) ? e.key : e, $e = (e) => e === void 0 ? [] : Array.isArray(e) ? e.map(L) : [L(e)], et = (e) => e === void 0 ? void 0 : Array.isArray(e) ? e.map(L) : L(e), tt = (e) => {
150
- let t = I(), n = [];
151
- for (let r of e) for (let e of $e(r.source)) !F(e) || t.has(e) || n.push({
151
+ return M.set(e, r), r;
152
+ }, N = (e) => typeof e == "object" && !!e && e.kind === "reactivity-channel", P = (e) => e.startsWith(k), F = () => new Set([...M.values()].map((e) => e.key)), I = (e) => N(e) ? e.key : e, L = (e) => e === void 0 ? [] : Array.isArray(e) ? e.map(I) : [I(e)], nt = (e) => e === void 0 ? void 0 : Array.isArray(e) ? e.map(I) : I(e), rt = (e) => {
153
+ let t = F(), n = [];
154
+ for (let r of e) for (let e of L(r.source)) !P(e) || t.has(e) || n.push({
152
155
  procedure: r.name,
153
156
  key: e
154
157
  });
155
158
  return n;
156
- }, nt = (e, t) => {
159
+ }, it = (e, t) => {
157
160
  let n = e?.injectExternalChange;
158
- return n === void 0 ? !1 : (n.call(e, {
161
+ return n !== void 0 && (n.call(e, {
159
162
  table: t.key,
160
163
  op: "update",
161
164
  new: {},
162
165
  old: {},
163
166
  origin: "inline"
164
167
  }), !0);
165
- }, rt = (e) => e.internal !== !0, R = (e) => {
166
- if (it(e), 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
168
+ }, at = (e) => e.internal !== !0, R = (e) => {
169
+ if (ot(e), 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
167
170
  unguarded procedure, or list the scopes required to call it.`);
168
171
  let t = typeof e.source == "string" ? [e.source] : Array.isArray(e.source) ? e.source : void 0;
169
172
  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,
@@ -180,7 +183,7 @@ var We = l.Union(l.String, l.Number), d = l.Record({
180
183
  let n = [e.publicApi === void 0 ? void 0 : "publicApi", e.exposeAsTool === void 0 ? void 0 : "exposeAsTool"].filter((e) => e !== void 0);
181
184
  if (n.length === 0) return e;
182
185
  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.`);
183
- }, it = (e) => {
186
+ }, ot = (e) => {
184
187
  let t = e.requiresApproval;
185
188
  if (t !== void 0) {
186
189
  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
@@ -190,20 +193,20 @@ var We = l.Union(l.String, l.Number), d = l.Record({
190
193
  human from every other, and the second-pair-of-eyes control would enforce nothing.
191
194
  Give the procedure a \`guards:\` decision, or drop \`requiresApproval\`.`);
192
195
  }
193
- }, at = (e) => e.action !== void 0 && e.resourceType !== void 0, ot = (e) => e.openAccess !== void 0 || e.guards !== void 0 && e.guards.length > 0, z = (e, t, n) => {
194
- if (n === void 0) return t;
195
- 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
196
+ }, st = (e) => e.action !== void 0 && e.resourceType !== void 0, ct = (e) => e.openAccess !== void 0 || e.guards !== void 0 && e.guards.length > 0, z = (e, n, r) => {
197
+ if (r === void 0) return n;
198
+ if (r.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
196
199
  without an authorization check — e.g. \`openAccess: 'public pricing, no caller data'\`.`);
197
- 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
200
+ if (n !== void 0 && n.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
198
201
  caller must hold a scope; drop them if anyone may call it.`);
199
- return [s(n.trim())];
202
+ return [t(r.trim())];
200
203
  }, B = (e) => R({
201
204
  kind: "query",
202
205
  name: e.name,
203
206
  input: e.input,
204
207
  output: e.output,
205
- error: e.error ?? l.Never,
206
- source: et(e.source),
208
+ error: e.error ?? c.Never,
209
+ source: nt(e.source),
207
210
  cache: e.cache,
208
211
  guards: z(e.name, e.guards, e.openAccess),
209
212
  openAccess: e.openAccess,
@@ -216,7 +219,7 @@ var We = l.Union(l.String, l.Number), d = l.Record({
216
219
  name: e.name,
217
220
  input: e.input,
218
221
  output: e.output,
219
- error: e.error ?? l.Never,
222
+ error: e.error ?? c.Never,
220
223
  target: e.target,
221
224
  guards: z(e.name, e.guards, e.openAccess),
222
225
  openAccess: e.openAccess,
@@ -230,7 +233,7 @@ var We = l.Union(l.String, l.Number), d = l.Record({
230
233
  name: e.name,
231
234
  input: e.input,
232
235
  output: e.output,
233
- error: e.error ?? l.Never,
236
+ error: e.error ?? c.Never,
234
237
  guards: z(e.name, e.guards, e.openAccess),
235
238
  openAccess: e.openAccess,
236
239
  source: e.source,
@@ -240,46 +243,46 @@ var We = l.Union(l.String, l.Number), d = l.Record({
240
243
  requiresApproval: e.requiresApproval,
241
244
  internal: e.internal,
242
245
  overridesPlugin: e.overridesPlugin
243
- }), st = (e) => R({
246
+ }), lt = (e) => R({
244
247
  kind: "stream",
245
248
  name: e.name,
246
249
  input: e.input,
247
250
  element: e.element,
248
- error: e.error ?? l.Never,
251
+ error: e.error ?? c.Never,
249
252
  internal: e.internal,
250
253
  overridesPlugin: e.overridesPlugin,
251
254
  guards: z(e.name, e.guards, e.openAccess),
252
255
  openAccess: e.openAccess
253
- }), U = (e, t) => t && t.length > 0 ? l.Union(e, ...t) : e, W = (e, t) => t && t.some((e) => !a(e)) ? l.Union(e, c) : e, ct = (e) => l.Union(e, v), lt = (e, t) => t === void 0 ? e : l.Union(e, D), ut = (e, t) => u.make(e.name, {
254
- payload: _(e.input),
255
- success: g(e.output),
256
+ }), U = (e, t) => t && t.length > 0 ? c.Union(e, ...t) : e, W = (e, t) => t && t.some((e) => !s(e)) ? c.Union(e, r) : e, ut = (e) => c.Union(e, _), dt = (e, t) => t === void 0 ? e : c.Union(e, E), ft = (e, t) => l.make(e.name, {
257
+ payload: g(e.input, e.name),
258
+ success: h(e.output),
256
259
  error: U(W(e.error, e.guards), t),
257
260
  stream: !0
258
- }), dt = (e, t) => u.make(e.name, {
259
- payload: _(e.input),
261
+ }), G = (e, t) => l.make(e.name, {
262
+ payload: g(e.input, e.name),
260
263
  success: e.output,
261
- error: U(lt(ct(W(e.error, e.guards)), e.requiresApproval), t)
262
- }), ft = (e, t) => u.make(e.name, {
263
- payload: _(e.input),
264
+ error: U(dt(ut(W(e.error, e.guards)), e.requiresApproval), t)
265
+ }), pt = (e, t) => l.make(e.name, {
266
+ payload: g(e.input, e.name),
264
267
  success: e.output,
265
- error: U(lt(W(e.error, e.guards), e.requiresApproval), t)
266
- }), pt = (e, t) => u.make(e.name, {
267
- payload: _(e.input),
268
+ error: U(dt(W(e.error, e.guards), e.requiresApproval), t)
269
+ }), mt = (e, t) => l.make(e.name, {
270
+ payload: g(e.input, e.name),
268
271
  success: e.element,
269
272
  error: U(e.error, t),
270
273
  stream: !0
271
- }), mt = (e) => {
274
+ }), ht = (e) => {
272
275
  if (typeof e != "object" || !e) return;
273
276
  let t = e._tag;
274
277
  return typeof t == "string" ? t : void 0;
275
- }, ht = (e) => {
278
+ }, gt = (e) => {
276
279
  switch (e.kind) {
277
- case "query": return ut(e);
278
- case "mutation": return dt(e);
279
- case "action": return ft(e);
280
- case "stream": return pt(e);
280
+ case "query": return ft(e);
281
+ case "mutation": return G(e);
282
+ case "action": return pt(e);
283
+ case "stream": return mt(e);
281
284
  }
282
- }, gt = (e) => {
285
+ }, _t = (e) => {
283
286
  let t = e.input, n = t === void 0 ? {} : { input: t }, r = e.output, i = r === void 0 ? {} : { output: r };
284
287
  if (e.kind === "query") return {
285
288
  kind: "query",
@@ -320,7 +323,7 @@ var We = l.Union(l.String, l.Number), d = l.Record({
320
323
  ..."shapeItem" in e && e.shapeItem !== void 0 ? { shapeItem: e.shapeItem } : {}
321
324
  }))
322
325
  };
323
- }, _t = 7500, vt = (e) => typeof e == "object" && !!e && e.kind === "event", yt = (e) => {
326
+ }, vt = 7500, yt = (e) => typeof e == "object" && !!e && e.kind === "event", bt = (e) => {
324
327
  if (e.name.length === 0) throw Error("defineEvent: `name` must not be empty");
325
328
  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
326
329
  whitespace and delivers nothing — silently, and only on that broker, so an
@@ -349,73 +352,73 @@ var We = l.Union(l.String, l.Number), d = l.Record({
349
352
  name: e.name,
350
353
  key: e.key,
351
354
  payload: e.payload,
352
- guards: e.openAccess === void 0 ? e.guards : [s(e.openAccess.trim())],
355
+ guards: e.openAccess === void 0 ? e.guards : [t(e.openAccess.trim())],
353
356
  openAccess: e.openAccess,
354
357
  rewind: e.rewind,
355
358
  webhook: e.webhook,
356
359
  delivery: e.delivery
357
360
  };
358
- }, bt = (e) => l.Struct({
359
- _tag: l.Literal("event"),
360
- origin: l.String,
361
- n: l.Number,
362
- emittedAt: l.Number,
361
+ }, xt = (e) => c.Struct({
362
+ _tag: c.Literal("event"),
363
+ origin: c.String,
364
+ n: c.Number,
365
+ emittedAt: c.Number,
363
366
  payload: e
364
- }), xt = l.Struct({
365
- _tag: l.Literal("gap"),
366
- missed: l.Number,
367
- reason: l.Literal("buffer", "resume")
368
- }), G = l.Struct({ _tag: l.Literal("attached") }), St = (e) => l.Union(G, bt(e), xt), Ct = l.Struct({
369
- origin: l.String,
370
- n: l.Number
371
- }), wt = (e) => l.Struct({
367
+ }), St = c.Struct({
368
+ _tag: c.Literal("gap"),
369
+ missed: c.Number,
370
+ reason: c.Literal("buffer", "resume")
371
+ }), Ct = c.Struct({ _tag: c.Literal("attached") }), wt = (e) => c.Union(Ct, xt(e), St), Tt = c.Struct({
372
+ origin: c.String,
373
+ n: c.Number
374
+ }), Et = (e) => c.Struct({
372
375
  key: e,
373
- resume: l.optional(l.Array(Ct))
374
- }), Tt = (e, t) => {
375
- let n = e.guards !== void 0 && e.guards.some((e) => !a(e)) ? c : l.Never, r = t && t.length > 0 ? l.Union(n, ...t) : n;
376
- return u.make(e.name, {
377
- payload: _(wt(e.key)),
378
- success: St(e.payload),
379
- error: r,
376
+ resume: c.optional(c.Array(Tt))
377
+ }), Dt = (e, t) => {
378
+ let n = e.guards !== void 0 && e.guards.some((e) => !s(e)) ? r : c.Never, i = t && t.length > 0 ? c.Union(n, ...t) : n;
379
+ return l.make(e.name, {
380
+ payload: g(Et(e.key), e.name),
381
+ success: wt(e.payload),
382
+ error: i,
380
383
  stream: !0
381
384
  });
382
- }, Et = class extends l.TaggedError()("EventPayloadInvalid", {
383
- event: l.String,
384
- message: l.String
385
- }) {}, Dt = class extends l.TaggedError()("EventKeyInvalid", {
386
- event: l.String,
387
- message: l.String
388
- }) {}, Ot = class extends l.TaggedError()("EventPayloadTooLarge", {
389
- event: l.String,
390
- bytes: l.Number,
391
- limit: l.Number
392
- }) {}, kt = (e) => {
385
+ }, Ot = class extends c.TaggedError()("EventPayloadInvalid", {
386
+ event: c.String,
387
+ message: c.String
388
+ }) {}, kt = class extends c.TaggedError()("EventKeyInvalid", {
389
+ event: c.String,
390
+ message: c.String
391
+ }) {}, At = class extends c.TaggedError()("EventPayloadTooLarge", {
392
+ event: c.String,
393
+ bytes: c.Number,
394
+ limit: c.Number
395
+ }) {}, jt = (e) => {
393
396
  if (typeof e != "object" || !e) return JSON.stringify(e) ?? "null";
394
397
  let t = Object.entries(e).filter(([, e]) => e !== void 0).sort(([e], [t]) => e < t ? -1 : +(e > t));
395
398
  return JSON.stringify(t);
396
- }, At = "\0", jt = (e, t, n) => [
399
+ }, Mt = "\0", Nt = (e, t, n) => [
397
400
  e ?? "~",
398
401
  t,
399
- kt(n)
400
- ].join("\0"), Mt = (e) => {
402
+ jt(n)
403
+ ].join("\0"), Pt = (e) => {
401
404
  let [t = "~", n = "", r = ""] = e.split("\0");
402
405
  return {
403
406
  tenantId: t === "~" ? null : t,
404
407
  event: n,
405
408
  key: r
406
409
  };
407
- }, Nt = (e) => e.split("\0").join(" · "), Pt = (e) => e, Ft = (e) => e, It = (e) => {
410
+ }, Ft = (e) => e.split("\0").join(" · "), It = (e) => e, Lt = (e) => e, Rt = (e) => {
408
411
  let t = e.alias?.trim(), n = e.instance?.trim(), r = t !== void 0 && t !== "" ? t : e.base;
409
412
  return n !== void 0 && n !== "" ? `${r}#${n}` : r;
410
- }, Lt = (e) => {
413
+ }, zt = (e) => {
411
414
  if (e.length !== 0) return (t, n) => e.reduceRight((e, t) => t(e, n), t);
412
- }, Rt = (e, t) => {
413
- let n = He.GenericTag(e);
415
+ }, Bt = (e, t) => {
416
+ let n = Ge.GenericTag(e);
414
417
  return {
415
418
  Tag: n,
416
- Live: Ue.succeed(n, t)
419
+ Live: Ke.succeed(n, t)
417
420
  };
418
- }, zt = (e, t, n) => {
421
+ }, Vt = (e, t, n) => {
419
422
  if (!t) return { ok: !0 };
420
423
  let r = K(n);
421
424
  if (!r) return {
@@ -425,7 +428,7 @@ var We = l.Union(l.String, l.Number), d = l.Record({
425
428
  let i = t.trim();
426
429
  if (i === "*" || i === "") return { ok: !0 };
427
430
  let a = i.split(/\s+/).filter((e) => e.length > 0);
428
- for (let i of a) if (!Bt(i, r)) return {
431
+ for (let i of a) if (!Ht(i, r)) return {
429
432
  ok: !1,
430
433
  reason: `plugin "${e}" requires framework ${t}, running ${n}`
431
434
  };
@@ -438,7 +441,7 @@ var We = l.Union(l.String, l.Number), d = l.Record({
438
441
  patch: Number(t[3]),
439
442
  pre: t[4] ?? ""
440
443
  } : null;
441
- }, q = (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, Bt = (e, t) => {
444
+ }, q = (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, Ht = (e, t) => {
442
445
  if (e === "*") return !0;
443
446
  if (e.startsWith("^")) {
444
447
  let n = K(e.slice(1));
@@ -460,253 +463,253 @@ var We = l.Union(l.String, l.Number), d = l.Record({
460
463
  }
461
464
  let r = K(e);
462
465
  return r ? q(t, r) === 0 : !1;
463
- }, J = l.Literal("running", "succeeded", "failed", "cancelled", "suspended"), Vt = l.Literal("cancel", "terminate", "abandon"), Ht = l.Struct({
464
- mode: l.String,
465
- dueAt: l.NullOr(l.Number),
466
- retryAfterMs: l.NullOr(l.Number),
467
- intentId: l.NullOr(l.String)
468
- }), Ut = l.Struct({
469
- id: l.String,
470
- workflowName: l.String,
471
- executionId: l.NullOr(l.String),
472
- status: l.Literal("running", "queued", "dropped", "skipped"),
473
- deferral: l.optional(Ht)
474
- }), Y = l.Struct({
475
- id: l.String,
476
- tag: l.String,
477
- executionId: l.String,
466
+ }, J = c.Literal("running", "succeeded", "failed", "cancelled", "suspended"), Ut = c.Literal("cancel", "terminate", "abandon"), Wt = c.Struct({
467
+ mode: c.String,
468
+ dueAt: c.NullOr(c.Number),
469
+ retryAfterMs: c.NullOr(c.Number),
470
+ intentId: c.NullOr(c.String)
471
+ }), Gt = c.Struct({
472
+ id: c.String,
473
+ workflowName: c.String,
474
+ executionId: c.NullOr(c.String),
475
+ status: c.Literal("running", "queued", "dropped", "skipped"),
476
+ deferral: c.optional(Wt)
477
+ }), Y = c.Struct({
478
+ id: c.String,
479
+ tag: c.String,
480
+ executionId: c.String,
478
481
  status: J,
479
- payload: l.Unknown,
480
- workflowVersion: l.NullOr(l.String),
481
- workflowPatches: l.NullOr(l.Unknown),
482
- output: l.NullOr(l.Unknown),
483
- subject: l.NullOr(l.Unknown),
484
- source: l.NullOr(l.String),
485
- errorTag: l.NullOr(l.String),
486
- errorMessage: l.NullOr(l.String),
487
- cancelled: l.Boolean,
488
- startedAt: l.Date,
489
- completedAt: l.NullOr(l.Date),
490
- durationMs: l.NullOr(l.Number),
491
- traceId: l.NullOr(l.String),
492
- parentExecutionId: l.NullOr(l.String),
493
- parentClosePolicy: l.NullOr(Vt)
494
- }), Wt = l.Struct({
495
- tag: l.optional(l.String),
496
- status: l.optional(J),
497
- limit: l.optional(l.Number)
498
- }), Gt = l.Struct({
499
- id: l.String,
500
- runId: l.String,
501
- stepName: l.String,
502
- attempt: l.Number,
503
- status: l.Literal("running", "succeeded", "failed"),
504
- input: l.NullOr(l.Unknown),
505
- retryPolicy: l.NullOr(l.Unknown),
506
- output: l.NullOr(l.Unknown),
507
- errorTag: l.NullOr(l.String),
508
- errorMessage: l.NullOr(l.String),
509
- errorCause: l.NullOr(l.Unknown),
510
- startedAt: l.Date,
511
- completedAt: l.NullOr(l.Date),
512
- durationMs: l.NullOr(l.Number)
513
- }), Kt = l.Struct({
514
- id: l.String,
515
- runId: l.String,
516
- eventType: l.String,
517
- payload: l.NullOr(l.Unknown),
518
- occurredAt: l.Date,
519
- stepName: l.NullOr(l.String),
520
- attempt: l.NullOr(l.Number)
521
- }), qt = l.Struct({
522
- id: l.String,
523
- name: l.String,
524
- payload: l.Unknown,
525
- source: l.String,
526
- subject: l.NullOr(l.Unknown),
527
- traceId: l.NullOr(l.String),
528
- occurredAt: l.Date
529
- }), Jt = l.Struct({
530
- id: l.String,
531
- eventId: l.String,
532
- eventName: l.String,
533
- triggerId: l.String,
534
- workflowName: l.String,
535
- executionId: l.NullOr(l.String),
536
- status: l.Literal("starting", "started", "skipped", "failed"),
537
- idempotencyKey: l.String,
538
- skipped: l.Boolean,
539
- errorMessage: l.NullOr(l.String),
540
- createdAt: l.Date,
541
- completedAt: l.NullOr(l.Date)
542
- }), Yt = l.Struct({ id: l.String }), X = l.Struct({ runId: l.String }), Xt = l.Struct({
543
- name: l.optional(l.String),
544
- limit: l.optional(l.Number)
545
- }), Zt = l.Struct({ eventId: l.String }), Z = l.Struct({
546
- workflowName: l.String,
547
- executionId: l.String
548
- }), Qt = l.Struct({
549
- id: l.String,
550
- signalName: l.String,
551
- payload: l.optional(l.Unknown)
552
- }), $t = l.Struct({
553
- id: l.String,
554
- updateName: l.String,
555
- payload: l.optional(l.Unknown),
556
- timeoutMs: l.optional(l.Number)
557
- }), en = l.Struct({
558
- eventId: l.String,
559
- updateId: l.String,
560
- completedEventId: l.String,
561
- result: l.Unknown
562
- }), tn = B({
482
+ payload: c.Unknown,
483
+ workflowVersion: c.NullOr(c.String),
484
+ workflowPatches: c.NullOr(c.Unknown),
485
+ output: c.NullOr(c.Unknown),
486
+ subject: c.NullOr(c.Unknown),
487
+ source: c.NullOr(c.String),
488
+ errorTag: c.NullOr(c.String),
489
+ errorMessage: c.NullOr(c.String),
490
+ cancelled: c.Boolean,
491
+ startedAt: c.Date,
492
+ completedAt: c.NullOr(c.Date),
493
+ durationMs: c.NullOr(c.Number),
494
+ traceId: c.NullOr(c.String),
495
+ parentExecutionId: c.NullOr(c.String),
496
+ parentClosePolicy: c.NullOr(Ut)
497
+ }), Kt = c.Struct({
498
+ tag: c.optional(c.String),
499
+ status: c.optional(J),
500
+ limit: c.optional(c.Number)
501
+ }), qt = c.Struct({
502
+ id: c.String,
503
+ runId: c.String,
504
+ stepName: c.String,
505
+ attempt: c.Number,
506
+ status: c.Literal("running", "succeeded", "failed"),
507
+ input: c.NullOr(c.Unknown),
508
+ retryPolicy: c.NullOr(c.Unknown),
509
+ output: c.NullOr(c.Unknown),
510
+ errorTag: c.NullOr(c.String),
511
+ errorMessage: c.NullOr(c.String),
512
+ errorCause: c.NullOr(c.Unknown),
513
+ startedAt: c.Date,
514
+ completedAt: c.NullOr(c.Date),
515
+ durationMs: c.NullOr(c.Number)
516
+ }), Jt = c.Struct({
517
+ id: c.String,
518
+ runId: c.String,
519
+ eventType: c.String,
520
+ payload: c.NullOr(c.Unknown),
521
+ occurredAt: c.Date,
522
+ stepName: c.NullOr(c.String),
523
+ attempt: c.NullOr(c.Number)
524
+ }), Yt = c.Struct({
525
+ id: c.String,
526
+ name: c.String,
527
+ payload: c.Unknown,
528
+ source: c.String,
529
+ subject: c.NullOr(c.Unknown),
530
+ traceId: c.NullOr(c.String),
531
+ occurredAt: c.Date
532
+ }), Xt = c.Struct({
533
+ id: c.String,
534
+ eventId: c.String,
535
+ eventName: c.String,
536
+ triggerId: c.String,
537
+ workflowName: c.String,
538
+ executionId: c.NullOr(c.String),
539
+ status: c.Literal("starting", "started", "skipped", "failed"),
540
+ idempotencyKey: c.String,
541
+ skipped: c.Boolean,
542
+ errorMessage: c.NullOr(c.String),
543
+ createdAt: c.Date,
544
+ completedAt: c.NullOr(c.Date)
545
+ }), Zt = c.Struct({ id: c.String }), X = c.Struct({ runId: c.String }), Qt = c.Struct({
546
+ name: c.optional(c.String),
547
+ limit: c.optional(c.Number)
548
+ }), $t = c.Struct({ eventId: c.String }), Z = c.Struct({
549
+ workflowName: c.String,
550
+ executionId: c.String
551
+ }), en = c.Struct({
552
+ id: c.String,
553
+ signalName: c.String,
554
+ payload: c.optional(c.Unknown)
555
+ }), tn = c.Struct({
556
+ id: c.String,
557
+ updateName: c.String,
558
+ payload: c.optional(c.Unknown),
559
+ timeoutMs: c.optional(c.Number)
560
+ }), nn = c.Struct({
561
+ eventId: c.String,
562
+ updateId: c.String,
563
+ completedEventId: c.String,
564
+ result: c.Unknown
565
+ }), rn = B({
563
566
  name: "__voltro.workflow.run",
564
567
  source: "_voltro_workflow_runs",
565
- input: Yt,
566
- output: l.Array(Y)
567
- }), nn = B({
568
+ input: Zt,
569
+ output: c.Array(Y)
570
+ }), an = B({
568
571
  name: "__voltro.workflow.runs",
569
572
  source: "_voltro_workflow_runs",
570
- input: Wt,
571
- output: l.Array(Y)
572
- }), rn = B({
573
+ input: Kt,
574
+ output: c.Array(Y)
575
+ }), on = B({
573
576
  name: "__voltro.workflow.run.steps",
574
577
  source: "_voltro_workflow_run_steps",
575
578
  input: X,
576
- output: l.Array(Gt)
577
- }), an = B({
579
+ output: c.Array(qt)
580
+ }), sn = B({
578
581
  name: "__voltro.workflow.run.events",
579
582
  source: "_voltro_workflow_run_events",
580
583
  input: X,
581
- output: l.Array(Kt)
582
- }), on = B({
584
+ output: c.Array(Jt)
585
+ }), cn = B({
583
586
  name: "__voltro.workflow.domainEvents",
584
587
  source: "_voltro_workflow_events",
585
- input: Xt,
586
- output: l.Array(qt)
587
- }), sn = B({
588
+ input: Qt,
589
+ output: c.Array(Yt)
590
+ }), ln = B({
588
591
  name: "__voltro.workflow.event.deliveries",
589
592
  source: "_voltro_workflow_event_deliveries",
590
- input: Zt,
591
- output: l.Array(Jt)
592
- }), cn = H({
593
+ input: $t,
594
+ output: c.Array(Xt)
595
+ }), un = H({
593
596
  name: "__voltro.workflow.cancel",
594
597
  input: Z,
595
- output: l.Struct({ ok: l.Boolean })
596
- }), ln = H({
598
+ output: c.Struct({ ok: c.Boolean })
599
+ }), dn = H({
597
600
  name: "__voltro.workflow.resume",
598
601
  input: Z,
599
- output: l.Struct({ ok: l.Boolean })
600
- }), un = H({
602
+ output: c.Struct({ ok: c.Boolean })
603
+ }), fn = H({
601
604
  name: "__voltro.workflow.signal",
602
- input: Qt,
603
- output: l.Struct({ eventId: l.String })
604
- }), dn = H({
605
+ input: en,
606
+ output: c.Struct({ eventId: c.String })
607
+ }), pn = H({
605
608
  name: "__voltro.workflow.update",
606
- input: $t,
607
- output: en
608
- }), fn = "__voltro.undo.log", pn = "__voltro.undo.apply", mn = "__voltro.undo.redo", hn = l.Struct({
609
- id: l.String,
610
- tag: l.String,
611
- label: l.NullOr(l.String),
612
- undone: l.Boolean,
613
- crossesAction: l.Boolean,
614
- createdAt: l.String
615
- }), gn = class extends l.TaggedError()("UndoNotFound", { invocationId: l.String }) {}, _n = class extends l.TaggedError()("UndoForbidden", { invocationId: l.String }) {}, vn = class extends l.TaggedError()("UndoConflict", {
616
- invocationId: l.String,
617
- reason: l.Literal("conflict", "action")
618
- }) {}, yn = l.Union(gn, _n, vn), bn = B({
619
- name: fn,
609
+ input: tn,
610
+ output: nn
611
+ }), mn = "__voltro.undo.log", hn = "__voltro.undo.apply", gn = "__voltro.undo.redo", _n = c.Struct({
612
+ id: c.String,
613
+ tag: c.String,
614
+ label: c.NullOr(c.String),
615
+ undone: c.Boolean,
616
+ crossesAction: c.Boolean,
617
+ createdAt: c.String
618
+ }), vn = class extends c.TaggedError()("UndoNotFound", { invocationId: c.String }) {}, yn = class extends c.TaggedError()("UndoForbidden", { invocationId: c.String }) {}, bn = class extends c.TaggedError()("UndoConflict", {
619
+ invocationId: c.String,
620
+ reason: c.Literal("conflict", "action")
621
+ }) {}, xn = c.Union(vn, yn, bn), Sn = B({
622
+ name: mn,
620
623
  source: "_voltro_undo_log",
621
- input: l.Struct({ limit: l.optional(l.Number) }),
622
- output: l.Array(hn),
624
+ input: c.Struct({ limit: c.optional(c.Number) }),
625
+ output: c.Array(_n),
623
626
  openAccess: "subject-scoped by construction: lists only the calling subject's own undoable actions"
624
- }), xn = V({
625
- name: pn,
626
- input: l.Struct({ invocationId: l.String }),
627
- output: l.Struct({ ok: l.Boolean }),
628
- error: yn,
627
+ }), Cn = V({
628
+ name: hn,
629
+ input: c.Struct({ invocationId: c.String }),
630
+ output: c.Struct({ ok: c.Boolean }),
631
+ error: xn,
629
632
  openAccess: "subject-scoped by construction: undo is per-actor — another subject's invocation fails typed with UndoForbidden"
630
- }), Sn = V({
631
- name: mn,
632
- input: l.Struct({ invocationId: l.String }),
633
- output: l.Struct({ ok: l.Boolean }),
634
- error: yn,
633
+ }), wn = V({
634
+ name: gn,
635
+ input: c.Struct({ invocationId: c.String }),
636
+ output: c.Struct({ ok: c.Boolean }),
637
+ error: xn,
635
638
  openAccess: "subject-scoped by construction: redo is per-actor — another subject's invocation fails typed with UndoForbidden"
636
- }), Cn = "__voltro.approvals.pending", wn = "__voltro.approvals.decide", Tn = B({
637
- name: Cn,
639
+ }), Tn = "__voltro.approvals.pending", En = "__voltro.approvals.decide", Dn = B({
640
+ name: Tn,
638
641
  source: "_voltro_approvals",
639
- input: l.Struct({ limit: l.optional(l.Number) }),
640
- output: l.Array(k),
642
+ input: c.Struct({ limit: c.optional(c.Number) }),
643
+ output: c.Array(O),
641
644
  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"
642
- }), En = V({
643
- name: wn,
644
- input: l.Struct({
645
- approvalId: l.String,
646
- decision: l.Literal("approve", "reject"),
647
- note: l.optional(l.String)
645
+ }), On = V({
646
+ name: En,
647
+ input: c.Struct({
648
+ approvalId: c.String,
649
+ decision: c.Literal("approve", "reject"),
650
+ note: c.optional(c.String)
648
651
  }),
649
- output: l.Struct({
650
- approvalId: l.String,
651
- status: l.Literal("approved", "rejected")
652
+ output: c.Struct({
653
+ approvalId: c.String,
654
+ status: c.Literal("approved", "rejected")
652
655
  }),
653
- error: O,
656
+ error: D,
654
657
  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"
655
- }), Dn = "__voltro.connections.list", On = "__voltro.connections.start", kn = "__voltro.connections.submitToken", An = "__voltro.connections.disconnect", Q = l.Literal("oauth2", "pat"), jn = l.Literal("disconnected", "connected", "expired", "revoked", "error"), Mn = l.Struct({
656
- connectionId: l.String,
658
+ }), kn = "__voltro.connections.list", An = "__voltro.connections.start", jn = "__voltro.connections.submitToken", Mn = "__voltro.connections.disconnect", Q = c.Literal("oauth2", "pat"), Nn = c.Literal("disconnected", "connected", "expired", "revoked", "error"), Pn = c.Struct({
659
+ connectionId: c.String,
657
660
  kind: Q,
658
- label: l.String,
659
- status: jn,
660
- accountId: l.NullOr(l.String),
661
- accountLabel: l.NullOr(l.String),
662
- scopes: l.Array(l.String),
663
- expiresAt: l.NullOr(l.String),
664
- lastError: l.NullOr(l.String),
665
- connectedAt: l.NullOr(l.String)
666
- }), Nn = class extends l.TaggedError()("ConnectionNotDeclared", { connectionId: l.String }) {}, Pn = class extends l.TaggedError()("ConnectionSubjectRequired", { connectionId: l.String }) {}, Fn = class extends l.TaggedError()("ConnectionKindMismatch", {
667
- connectionId: l.String,
661
+ label: c.String,
662
+ status: Nn,
663
+ accountId: c.NullOr(c.String),
664
+ accountLabel: c.NullOr(c.String),
665
+ scopes: c.Array(c.String),
666
+ expiresAt: c.NullOr(c.String),
667
+ lastError: c.NullOr(c.String),
668
+ connectedAt: c.NullOr(c.String)
669
+ }), Fn = class extends c.TaggedError()("ConnectionNotDeclared", { connectionId: c.String }) {}, In = class extends c.TaggedError()("ConnectionSubjectRequired", { connectionId: c.String }) {}, Ln = class extends c.TaggedError()("ConnectionKindMismatch", {
670
+ connectionId: c.String,
668
671
  expected: Q,
669
672
  actual: Q
670
- }) {}, In = class extends l.TaggedError()("ConnectionHandshakeFailed", {
671
- connectionId: l.String,
672
- reason: l.String,
673
- transient: l.Boolean
674
- }) {}, $ = l.Union(Nn, Pn, Fn, In), Ln = B({
675
- name: Dn,
673
+ }) {}, Rn = class extends c.TaggedError()("ConnectionHandshakeFailed", {
674
+ connectionId: c.String,
675
+ reason: c.String,
676
+ transient: c.Boolean
677
+ }) {}, $ = c.Union(Fn, In, Ln, Rn), zn = B({
678
+ name: kn,
676
679
  source: "_voltro_connections",
677
- input: l.Struct({}),
678
- output: l.Array(Mn),
680
+ input: c.Struct({}),
681
+ output: c.Array(Pn),
679
682
  openAccess: "self-scoped read: projects the declared connections for the calling subject only (its own connect/disconnect state)"
680
- }), Rn = H({
681
- name: On,
682
- input: l.Struct({
683
- connectionId: l.String,
684
- redirectTo: l.optional(l.String)
683
+ }), Bn = H({
684
+ name: An,
685
+ input: c.Struct({
686
+ connectionId: c.String,
687
+ redirectTo: c.optional(c.String)
685
688
  }),
686
- output: l.Struct({
687
- authorizeUrl: l.String,
688
- state: l.String
689
+ output: c.Struct({
690
+ authorizeUrl: c.String,
691
+ state: c.String
689
692
  }),
690
693
  error: $,
691
694
  openAccess: "self-service: begins an oauth handshake that stores a credential for the calling subject only; anonymous callers fail typed with ConnectionSubjectRequired"
692
- }), zn = V({
693
- name: kn,
694
- input: l.Struct({
695
- connectionId: l.String,
696
- token: l.String
695
+ }), Vn = V({
696
+ name: jn,
697
+ input: c.Struct({
698
+ connectionId: c.String,
699
+ token: c.String
697
700
  }),
698
- output: l.Struct({ ok: l.Boolean }),
701
+ output: c.Struct({ ok: c.Boolean }),
699
702
  error: $,
700
703
  openAccess: "self-service: stores a pasted token as the calling subject's own credential; anonymous callers fail typed with ConnectionSubjectRequired"
701
- }), Bn = V({
702
- name: An,
703
- input: l.Struct({ connectionId: l.String }),
704
- output: l.Struct({ ok: l.Boolean }),
704
+ }), Hn = V({
705
+ name: Mn,
706
+ input: c.Struct({ connectionId: c.String }),
707
+ output: c.Struct({ ok: c.Boolean }),
705
708
  error: $,
706
709
  openAccess: "self-service: deletes only the calling subject's own credential row for this connection"
707
- }), Vn = (e) => {
710
+ }), Un = (e) => {
708
711
  let t = e instanceof Date ? e.getTime() : typeof e == "number" ? e : typeof e == "string" ? new Date(e).getTime() : 0;
709
712
  return Number.isNaN(t) ? 0 : t;
710
- }, Hn = 1;
713
+ }, Wn = 1;
711
714
  //#endregion
712
- export { je as ADMIN_SCOPE, oe as APIKEY_ISSUE_ORG_SCOPE, n as APIKEY_ISSUE_OTHER_SCOPE, Ae as APIKEY_ISSUE_SELF_SCOPE, wn as APPROVALS_DECIDE_TAG, Cn as APPROVALS_PENDING_TAG, O as ApprovalDecisionErrors, D as ApprovalErrors, C as ApprovalExpired, T as ApprovalForbidden, b as ApprovalNotFound, w as ApprovalNotPending, S as ApprovalRejected, y as ApprovalRequired, x as ApprovalSelfApproval, E as ApprovalUnavailable, De as AuthMiddleware, v as BusinessRuleViolation, Dn as CONNECTIONS_LIST_TAG, An as CONNECTION_DISCONNECT_TAG, On as CONNECTION_START_TAG, kn as CONNECTION_SUBMIT_TOKEN_TAG, In as ConnectionHandshakeFailed, Se as ConnectionInfo, Te as ConnectionInfoMiddleware, Q as ConnectionKind, Fn as ConnectionKindMismatch, Nn as ConnectionNotDeclared, Mn as ConnectionState, jn as ConnectionStatus, Pn as ConnectionSubjectRequired, _e as DEFAULT_SCOPE_CACHE_MAX_ENTRIES, ue as DEFAULT_SCOPE_CACHE_TTL_MS, At as EVENT_ROUTE_SEP, Dt as EventKeyInvalid, Et as EventPayloadInvalid, Ot as EventPayloadTooLarge, _t as MAX_EVENT_ENVELOPE_BYTES, Hn as PROTOCOL_VERSION, k as PendingApproval, A as REACTIVITY_CHANNEL_PREFIX, c as ScopeError, Ce as Subject, Ee as SubjectIdentity, fe as SubjectService, pn as UNDO_APPLY_TAG, fn as UNDO_LOG_TAG, mn as UNDO_REDO_TAG, be as Unauthenticated, vn as UndoConflict, _n as UndoForbidden, hn as UndoLogEntry, gn as UndoNotFound, Z as WorkflowControlInputSchema, qt as WorkflowDomainEventRowSchema, Xt as WorkflowDomainEventsInputSchema, Zt as WorkflowEventDeliveriesInputSchema, Jt as WorkflowEventDeliveryRowSchema, Vt as WorkflowParentClosePolicySchema, Kt as WorkflowRunEventRowSchema, Ut as WorkflowRunHandleSchema, Yt as WorkflowRunRefSchema, Y as WorkflowRunRowSchema, J as WorkflowRunStatusSchema, Gt as WorkflowRunStepRowSchema, X as WorkflowRunTableRefSchema, Wt as WorkflowRunsInputSchema, Qt as WorkflowSignalInputSchema, Ht as WorkflowStartDeferralSchema, $t as WorkflowUpdateInputSchema, en as WorkflowUpdateResultSchema, ft as actionToRpc, i as advisoryResourceGuardWarning, Oe as anonymousSubject, Ye as applyRowPatch, pe as applyScopeDecision, En as approvalsDecideDescriptor, Tn as approvalsPendingQueryDescriptor, me as assertAuthenticated, ze as beginIdempotent, zt as checkFrameworkCompat, r as checkGuards, ie as checkGuardsEffect, we as composeAuthStrategies, Lt as composeRpcInterceptors, Bn as connectionDisconnectDescriptor, Rn as connectionStartDescriptor, zn as connectionSubmitTokenDescriptor, Ln as connectionsListQueryDescriptor, I as declaredReactivityChannelKeys, H as defineAction, yt as defineEvent, V as defineMutation, Pt as definePlugin, Ft as definePluginRoute, Rt as definePluginService, B as defineQuery, st as defineStream, qe as diffRows, ye as effectiveScopes, kt as encodeEventKey, mt as errorTag, G as eventAttached, bt as eventEnvelope, xt as eventGap, Ct as eventResumePoint, jt as eventRoute, St as eventStreamEvent, wt as eventSubscribeInput, Tt as eventToRpc, Ie as failIdempotent, e as findAdvisoryResourceGuards, Pe as finishIdempotent, Nt as formatEventRoute, ve as getPolicyGuardResolver, ne as getResourceScopeResolver, ot as hasAccessDecision, xe as hasCallbackRoutes, re as hasEffectiveScope, ae as hasScope, m as idToPath, Re as idempotencyScope, vt as isEventDescriptor, Je as isIdKeyed, a as isOpenAccess, ee as isPolicyCheck, at as isPolicyGuard, P as isReactivityChannel, F as isReactivityChannelKey, ge as isSystemSubject, rt as isWireReachable, he as makeScopeCache, Be as memoryIdempotencyStore, te as missingAccessDecision, dt as mutationToRpc, gt as normalizeDescriptor, et as normalizeSource, s as openAccessSpec, Mt as parseEventRoute, Ge as pathToId, It as pluginInstanceName, nt as publishReactivity, Ve as publishServerError, ut as queryToRpc, Qe as reactivityChannel, Ne as requireScope, f as rowPatchOpSchema, p as rowPatchSchema, le as scopeCacheKey, t as setEffectiveScopes, ce as setPolicyGuardResolver, o as setResourceScopeResolver, $e as sourceKeys, pt as streamToRpc, _ as strictInput, ke as subjectIdentity, se as subjectScopes, Le as subscribeServerErrors, g as subscriptionEvent, Me as systemSubject, de as tenantScopedSubject, ht as toRpc, Vn as tsMs, tt as undeclaredChannelKeys, xn as undoApplyDescriptor, bn as undoLogQueryDescriptor, Sn as undoRedoDescriptor, cn as workflowCancelDescriptor, on as workflowDomainEventsQueryDescriptor, sn as workflowEventDeliveriesQueryDescriptor, ln as workflowResumeDescriptor, an as workflowRunEventsQueryDescriptor, tn as workflowRunQueryDescriptor, rn as workflowRunStepsQueryDescriptor, nn as workflowRunsQueryDescriptor, un as workflowSignalDescriptor, dn as workflowUpdateDescriptor, Fe as wsMutationIdempotencyScope };
715
+ export { n as ADMIN_SCOPE, Ne as APIKEY_ISSUE_ORG_SCOPE, ce as APIKEY_ISSUE_OTHER_SCOPE, i as APIKEY_ISSUE_SELF_SCOPE, En as APPROVALS_DECIDE_TAG, Tn as APPROVALS_PENDING_TAG, D as ApprovalDecisionErrors, E as ApprovalErrors, S as ApprovalExpired, w as ApprovalForbidden, y as ApprovalNotFound, C as ApprovalNotPending, x as ApprovalRejected, v as ApprovalRequired, b as ApprovalSelfApproval, T as ApprovalUnavailable, Ae as AuthMiddleware, _ as BusinessRuleViolation, kn as CONNECTIONS_LIST_TAG, Mn as CONNECTION_DISCONNECT_TAG, An as CONNECTION_START_TAG, jn as CONNECTION_SUBMIT_TOKEN_TAG, Rn as ConnectionHandshakeFailed, Te as ConnectionInfo, Oe as ConnectionInfoMiddleware, Q as ConnectionKind, Ln as ConnectionKindMismatch, Fn as ConnectionNotDeclared, Pn as ConnectionState, Nn as ConnectionStatus, In as ConnectionSubjectRequired, be as DEFAULT_SCOPE_CACHE_MAX_ENTRIES, pe as DEFAULT_SCOPE_CACHE_TTL_MS, Mt as EVENT_ROUTE_SEP, kt as EventKeyInvalid, Ot as EventPayloadInvalid, At as EventPayloadTooLarge, Ee as IMPERSONATION_METADATA_KEY, vt as MAX_EVENT_ENVELOPE_BYTES, Wn as PROTOCOL_VERSION, O as PendingApproval, k as REACTIVITY_CHANNEL_PREFIX, r as ScopeError, ke as Subject, he as SubjectIdentity, Ce as SubjectService, hn as UNDO_APPLY_TAG, mn as UNDO_LOG_TAG, gn as UNDO_REDO_TAG, je as Unauthenticated, bn as UndoConflict, yn as UndoForbidden, _n as UndoLogEntry, vn as UndoNotFound, Z as WorkflowControlInputSchema, Yt as WorkflowDomainEventRowSchema, Qt as WorkflowDomainEventsInputSchema, $t as WorkflowEventDeliveriesInputSchema, Xt as WorkflowEventDeliveryRowSchema, Ut as WorkflowParentClosePolicySchema, Jt as WorkflowRunEventRowSchema, Gt as WorkflowRunHandleSchema, Zt as WorkflowRunRefSchema, Y as WorkflowRunRowSchema, J as WorkflowRunStatusSchema, qt as WorkflowRunStepRowSchema, X as WorkflowRunTableRefSchema, Kt as WorkflowRunsInputSchema, en as WorkflowSignalInputSchema, Wt as WorkflowStartDeferralSchema, tn as WorkflowUpdateInputSchema, nn as WorkflowUpdateResultSchema, pt as actionToRpc, ie as advisoryResourceGuardWarning, ge as anonymousSubject, Qe as applyRowPatch, _e as applyScopeDecision, On as approvalsDecideDescriptor, Dn as approvalsPendingQueryDescriptor, De as assertAuthenticated, He as beginIdempotent, Vt as checkFrameworkCompat, Se as checkGuards, e as checkGuardsEffect, we as composeAuthStrategies, zt as composeRpcInterceptors, Hn as connectionDisconnectDescriptor, Bn as connectionStartDescriptor, Vn as connectionSubmitTokenDescriptor, zn as connectionsListQueryDescriptor, F as declaredReactivityChannelKeys, H as defineAction, bt as defineEvent, V as defineMutation, It as definePlugin, Lt as definePluginRoute, Bt as definePluginService, B as defineQuery, lt as defineStream, Xe as diffRows, xe as effectiveScopes, jt as encodeEventKey, ht as errorTag, Ct as eventAttached, xt as eventEnvelope, St as eventGap, Tt as eventResumePoint, Nt as eventRoute, wt as eventStreamEvent, Et as eventSubscribeInput, Dt as eventToRpc, ze as failIdempotent, ne as findAdvisoryResourceGuards, Le as finishIdempotent, Ft as formatEventRoute, re as getPolicyGuardResolver, ae as getResourceScopeResolver, ct as hasAccessDecision, ye as hasCallbackRoutes, a as hasEffectiveScope, te as hasScope, p as idToPath, Ve as idempotencyScope, yt as isEventDescriptor, Ze as isIdKeyed, s as isOpenAccess, oe as isPolicyCheck, st as isPolicyGuard, N as isReactivityChannel, P as isReactivityChannelKey, ve as isSystemSubject, at as isWireReachable, fe as makeScopeCache, Ue as memoryIdempotencyStore, Ie as missingAccessDecision, G as mutationToRpc, _t as normalizeDescriptor, nt as normalizeSource, t as openAccessSpec, Pt as parseEventRoute, Je as pathToId, Rt as pluginInstanceName, it as publishReactivity, We as publishServerError, ft as queryToRpc, Me as rawImpersonationMark, tt as reactivityChannel, ue as requireScope, d as rowPatchOpSchema, f as rowPatchSchema, Fe as scopeCacheKey, ee as setEffectiveScopes, le as setPolicyGuardResolver, de as setResourceScopeResolver, L as sourceKeys, mt as streamToRpc, g as strictInput, me as subjectIdentity, o as subjectScopes, Be as subscribeServerErrors, h as subscriptionEvent, Pe as systemSubject, se as tenantScopedSubject, gt as toRpc, Un as tsMs, rt as undeclaredChannelKeys, Cn as undoApplyDescriptor, Sn as undoLogQueryDescriptor, wn as undoRedoDescriptor, un as workflowCancelDescriptor, cn as workflowDomainEventsQueryDescriptor, ln as workflowEventDeliveriesQueryDescriptor, dn as workflowResumeDescriptor, sn as workflowRunEventsQueryDescriptor, rn as workflowRunQueryDescriptor, on as workflowRunStepsQueryDescriptor, an as workflowRunsQueryDescriptor, fn as workflowSignalDescriptor, pn as workflowUpdateDescriptor, Re as wsMutationIdempotencyScope };