@decionis/agent-safe-pipeline 0.3.5 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +7 -6
  2. package/dist/Index.d.ts +6 -0
  3. package/dist/Index.d.ts.map +1 -1
  4. package/dist/Index.js +6 -0
  5. package/dist/Index.js.map +1 -1
  6. package/dist/approval/PresenceApprovalCoordinator.d.ts +2 -2
  7. package/dist/audit/AuditRecorder.d.ts +6 -6
  8. package/dist/audit/AuditRecorder.d.ts.map +1 -1
  9. package/dist/audit/AuditRecorder.js.map +1 -1
  10. package/dist/decision/DecionisGate.d.ts +16 -5
  11. package/dist/decision/DecionisGate.d.ts.map +1 -1
  12. package/dist/decision/DecionisGate.js +113 -11
  13. package/dist/decision/DecionisGate.js.map +1 -1
  14. package/dist/decision/DecisionAuthority.d.ts +42 -4
  15. package/dist/decision/DecisionAuthority.d.ts.map +1 -1
  16. package/dist/decision/DecisionAuthority.js +2 -2
  17. package/dist/decision/DecisionAuthority.js.map +1 -1
  18. package/dist/decision/FixtureDecisionAuthority.d.ts +7 -3
  19. package/dist/decision/FixtureDecisionAuthority.d.ts.map +1 -1
  20. package/dist/decision/FixtureDecisionAuthority.js +26 -3
  21. package/dist/decision/FixtureDecisionAuthority.js.map +1 -1
  22. package/dist/decision/ImmutableDecisionGate.d.ts +3 -0
  23. package/dist/decision/ImmutableDecisionGate.d.ts.map +1 -0
  24. package/dist/decision/{ImmutableGateDecision.js → ImmutableDecisionGate.js} +2 -2
  25. package/dist/decision/{ImmutableGateDecision.js.map → ImmutableDecisionGate.js.map} +1 -1
  26. package/dist/decision/ShadowGate.d.ts +2 -2
  27. package/dist/decision/ShadowGate.js +2 -2
  28. package/dist/decision/edge/BundleWindow.d.ts +43 -0
  29. package/dist/decision/edge/BundleWindow.d.ts.map +1 -0
  30. package/dist/decision/edge/BundleWindow.js +41 -0
  31. package/dist/decision/edge/BundleWindow.js.map +1 -0
  32. package/dist/decision/edge/EdgeBundleManager.d.ts +87 -0
  33. package/dist/decision/edge/EdgeBundleManager.d.ts.map +1 -0
  34. package/dist/decision/edge/EdgeBundleManager.js +175 -0
  35. package/dist/decision/edge/EdgeBundleManager.js.map +1 -0
  36. package/dist/decision/edge/EdgeBundleSource.d.ts +59 -0
  37. package/dist/decision/edge/EdgeBundleSource.d.ts.map +1 -0
  38. package/dist/decision/edge/EdgeBundleSource.js +99 -0
  39. package/dist/decision/edge/EdgeBundleSource.js.map +1 -0
  40. package/dist/decision/edge/EdgeDecisionAuthority.d.ts +104 -0
  41. package/dist/decision/edge/EdgeDecisionAuthority.d.ts.map +1 -0
  42. package/dist/decision/edge/EdgeDecisionAuthority.js +197 -0
  43. package/dist/decision/edge/EdgeDecisionAuthority.js.map +1 -0
  44. package/dist/decision/edge/EdgeModule.d.ts +63 -0
  45. package/dist/decision/edge/EdgeModule.d.ts.map +1 -0
  46. package/dist/decision/edge/EdgeModule.js +147 -0
  47. package/dist/decision/edge/EdgeModule.js.map +1 -0
  48. package/dist/execution/ActionRegistry.d.ts +23 -0
  49. package/dist/execution/ActionRegistry.d.ts.map +1 -1
  50. package/dist/execution/ActionRegistry.js +32 -2
  51. package/dist/execution/ActionRegistry.js.map +1 -1
  52. package/dist/execution/AuthorizationVerifier.d.ts +19 -4
  53. package/dist/execution/AuthorizationVerifier.d.ts.map +1 -1
  54. package/dist/execution/AuthorizationVerifier.js +41 -2
  55. package/dist/execution/AuthorizationVerifier.js.map +1 -1
  56. package/dist/execution/LocalAuthorizationVerifier.d.ts +74 -0
  57. package/dist/execution/LocalAuthorizationVerifier.d.ts.map +1 -0
  58. package/dist/execution/LocalAuthorizationVerifier.js +138 -0
  59. package/dist/execution/LocalAuthorizationVerifier.js.map +1 -0
  60. package/dist/execution/PostgresReplayStore.d.ts +57 -0
  61. package/dist/execution/PostgresReplayStore.d.ts.map +1 -0
  62. package/dist/execution/PostgresReplayStore.js +81 -0
  63. package/dist/execution/PostgresReplayStore.js.map +1 -0
  64. package/dist/execution/ReplayStore.d.ts +14 -0
  65. package/dist/execution/ReplayStore.d.ts.map +1 -1
  66. package/dist/execution/ReplayStore.js +8 -0
  67. package/dist/execution/ReplayStore.js.map +1 -1
  68. package/dist/execution/SafeExecutor.d.ts +117 -5
  69. package/dist/execution/SafeExecutor.d.ts.map +1 -1
  70. package/dist/execution/SafeExecutor.js +259 -67
  71. package/dist/execution/SafeExecutor.js.map +1 -1
  72. package/dist/report/DecisionReport.d.ts +2 -2
  73. package/dist/report/HostedOutcome.d.ts +2 -2
  74. package/dist/shadow/ShadowPipeline.d.ts +1 -1
  75. package/dist/testing/LocalAuthority.d.ts +35 -2
  76. package/dist/testing/LocalAuthority.d.ts.map +1 -1
  77. package/dist/testing/LocalAuthority.js +54 -1
  78. package/dist/testing/LocalAuthority.js.map +1 -1
  79. package/package.json +3 -3
  80. package/dist/decision/ImmutableGateDecision.d.ts +0 -3
  81. package/dist/decision/ImmutableGateDecision.d.ts.map +0 -1
@@ -0,0 +1,197 @@
1
+ import { createHash } from "node:crypto";
2
+ import { z } from "zod";
3
+ import { DecionisGate } from "../DecionisGate.js";
4
+ import { FailClosedDecision, } from "../DecisionAuthority.js";
5
+ import { immutableDecisionGate } from "../ImmutableDecisionGate.js";
6
+ const sha256 = z.string().regex(/^sha256:[0-9a-f]{64}$/);
7
+ const identifier = z.string().min(1).max(200);
8
+ /** The `decide` result (module ABI 3). Fields beyond these are not read. */
9
+ const DecideResultSchema = z.object({
10
+ verdict: z.enum(["ALLOW", "ESCALATE", "BLOCK"]),
11
+ reason_codes: z.array(identifier).max(50),
12
+ policy_version: identifier,
13
+ bundle: z.object({
14
+ bundle_id: identifier,
15
+ policy_version: identifier,
16
+ kid: identifier,
17
+ jti: identifier,
18
+ }),
19
+ authority_requirement: z.record(z.string(), z.unknown()).nullable(),
20
+ evaluation_digest: sha256,
21
+ });
22
+ /**
23
+ * A `DecisionAuthority` that decides inside the deployment, with the Decionis
24
+ * edge evaluator: the same verdict hosted `enforce-and-bind` gives for the
25
+ * same binding and bundle, with no network call on the way.
26
+ *
27
+ * - `ALLOW` in enforcement becomes a local authorization, held in
28
+ * `LocalGrants` and consumed once by `LocalAuthorizationVerifier`; there is
29
+ * no Decionis grant on this path and nothing to claim.
30
+ * - `BLOCK` is a refusal, as it is hosted.
31
+ * - `ESCALATE` in enforcement hands the same intent, with the same escalation
32
+ * options, to the hosted authority: the human-approval paths are hosted.
33
+ * - Approval evidence is only ever evaluated hosted.
34
+ * - No usable bundle, a module fault, or a result this host cannot read
35
+ * follows `onUnavailable`: the hosted authority, or a fail-closed `BLOCK`.
36
+ *
37
+ * This class is the open host. The evaluator is a separately licensed
38
+ * module this package does not contain; without it the executor runs on the
39
+ * hosted authority alone, exactly as it does without this class.
40
+ */
41
+ export class EdgeDecisionAuthority {
42
+ options;
43
+ evaluationMode;
44
+ onUnavailable;
45
+ clock;
46
+ constructor(options) {
47
+ this.options = options;
48
+ const mode = options.mode ?? "ENFORCEMENT";
49
+ if (mode !== "ENFORCEMENT" && mode !== "SHADOW")
50
+ throw new Error("EDGE_MODE_INVALID");
51
+ const hostedMode = options.hosted.evaluationMode;
52
+ if (hostedMode !== undefined && hostedMode !== mode)
53
+ throw new Error("EDGE_MODE_MISMATCH");
54
+ const onUnavailable = options.onUnavailable ?? "hosted";
55
+ if (onUnavailable !== "hosted" && onUnavailable !== "block") {
56
+ throw new Error("EDGE_ON_UNAVAILABLE_INVALID");
57
+ }
58
+ this.evaluationMode = mode;
59
+ this.onUnavailable = onUnavailable;
60
+ this.clock = options.clock ?? Date.now;
61
+ }
62
+ async evaluate(captured, evidence, options = {}) {
63
+ if (evidence !== undefined)
64
+ return await this.options.hosted.evaluate(captured, evidence, options);
65
+ const replayed = await this.replayed(captured);
66
+ if (replayed !== null)
67
+ return FailClosedDecision.create(captured.intentHash, replayed);
68
+ const now = this.clock();
69
+ const bundle = this.options.bundles.current(now);
70
+ if (bundle === null) {
71
+ return await this.unavailable(captured, "EDGE_BUNDLE_UNAVAILABLE", null, options);
72
+ }
73
+ let envelope;
74
+ try {
75
+ envelope = this.options.module.decide(bundle.handle, {
76
+ binding: DecionisGate.binding(captured),
77
+ mode: this.evaluationMode,
78
+ now: new Date(now).toISOString(),
79
+ });
80
+ }
81
+ catch {
82
+ return await this.unavailable(captured, "EDGE_MODULE_FAULTED", null, options);
83
+ }
84
+ if (!envelope.ok) {
85
+ return await this.unavailable(captured, "EDGE_MODULE_REFUSED", envelope.code, options);
86
+ }
87
+ const parsed = DecideResultSchema.safeParse(envelope.result);
88
+ if (!parsed.success || !EdgeDecisionAuthority.sameBundle(parsed.data, bundle)) {
89
+ return await this.unavailable(captured, "EDGE_RESULT_INVALID", null, options);
90
+ }
91
+ const result = parsed.data;
92
+ const delegated = result.verdict === "ESCALATE" && this.evaluationMode === "ENFORCEMENT";
93
+ const decisionId = EdgeDecisionAuthority.decisionId(captured, result);
94
+ try {
95
+ this.options.record?.({
96
+ event: "EDGE_DECISION",
97
+ mode: this.evaluationMode,
98
+ intent_id: captured.intent.intentId,
99
+ intent_hash: captured.intentHash,
100
+ decision_id: decisionId,
101
+ verdict: result.verdict,
102
+ reason_codes: [...result.reason_codes],
103
+ policy_version: result.policy_version,
104
+ bundle_id: result.bundle.bundle_id,
105
+ kid: result.bundle.kid,
106
+ jti: result.bundle.jti,
107
+ evaluation_digest: result.evaluation_digest,
108
+ delegated,
109
+ });
110
+ }
111
+ catch {
112
+ return FailClosedDecision.create(captured.intentHash, "EDGE_RECORD_UNAVAILABLE");
113
+ }
114
+ if (delegated)
115
+ return await this.options.hosted.evaluate(captured, undefined, options);
116
+ return this.local(captured, result, decisionId, bundle, now);
117
+ }
118
+ local(captured, result, decisionId, bundle, now) {
119
+ const dossierId = `edge:${result.evaluation_digest}`;
120
+ let authorization = null;
121
+ if (result.verdict === "ALLOW" && this.evaluationMode === "ENFORCEMENT") {
122
+ // The authorization lives no longer than the intent or the bundle.
123
+ const expiresAtMs = Math.min(Date.parse(captured.intent.expiresAt), bundle.expiresAtMs);
124
+ if (!(expiresAtMs > now)) {
125
+ return FailClosedDecision.create(captured.intentHash, "INTENT_EXPIRED");
126
+ }
127
+ const expiresAt = new Date(expiresAtMs).toISOString();
128
+ const token = this.options.grants.issue({
129
+ intentId: captured.intent.intentId,
130
+ intentHash: captured.intentHash,
131
+ decisionId,
132
+ dossierId,
133
+ expiresAt,
134
+ });
135
+ authorization = { token, expiresAt };
136
+ }
137
+ return immutableDecisionGate({
138
+ verdict: result.verdict,
139
+ decisionId,
140
+ dossierId,
141
+ intentHash: captured.intentHash,
142
+ reasonCodes: result.reason_codes,
143
+ authorization,
144
+ failClosed: false,
145
+ });
146
+ }
147
+ async unavailable(captured, reason, moduleCode, options) {
148
+ const fallback = this.onUnavailable === "hosted" ? "HOSTED" : "BLOCK";
149
+ try {
150
+ this.options.record?.({
151
+ event: "EDGE_UNAVAILABLE",
152
+ mode: this.evaluationMode,
153
+ intent_id: captured.intent.intentId,
154
+ intent_hash: captured.intentHash,
155
+ reason,
156
+ module_code: moduleCode !== null && /^[a-z][a-z0-9_]{0,62}$/.test(moduleCode) ? moduleCode : null,
157
+ fallback,
158
+ });
159
+ }
160
+ catch {
161
+ return FailClosedDecision.create(captured.intentHash, "EDGE_RECORD_UNAVAILABLE");
162
+ }
163
+ if (fallback === "HOSTED")
164
+ return await this.options.hosted.evaluate(captured, undefined, options);
165
+ return FailClosedDecision.create(captured.intentHash, reason);
166
+ }
167
+ /**
168
+ * Why an enforcement decision must not be made: the intent has already
169
+ * been claimed, or the store that would say so cannot be asked. Neither is
170
+ * a decision, so neither is recorded or counted.
171
+ */
172
+ async replayed(captured) {
173
+ const store = this.options.replay;
174
+ if (this.evaluationMode !== "ENFORCEMENT" || store?.consumed === undefined)
175
+ return null;
176
+ try {
177
+ return (await store.consumed(captured.intent.intentId)) ? "INTENT_ALREADY_CONSUMED" : null;
178
+ }
179
+ catch {
180
+ return "EDGE_REPLAY_STORE_UNAVAILABLE";
181
+ }
182
+ }
183
+ /** The module must have decided on the bundle this host gave it. */
184
+ static sameBundle(result, bundle) {
185
+ return (result.bundle.bundle_id === bundle.bundleId &&
186
+ result.bundle.policy_version === bundle.policyVersion &&
187
+ result.bundle.kid === bundle.kid);
188
+ }
189
+ /** Unique per intent and evaluation, and derivable from the record that names it. */
190
+ static decisionId(captured, result) {
191
+ const digest = createHash("sha256")
192
+ .update(`${captured.intentHash}\n${result.evaluation_digest}\n${result.bundle.jti}`, "utf8")
193
+ .digest("hex");
194
+ return `edge:${digest.slice(0, 40)}`;
195
+ }
196
+ }
197
+ //# sourceMappingURL=EdgeDecisionAuthority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeDecisionAuthority.js","sourceRoot":"","sources":["../../../src/decision/edge/EdgeDecisionAuthority.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /** The module ABI this host speaks: ABI 2's bundle exports plus `decide`. */
2
+ export declare const EDGE_MODULE_ABI_VERSION = 3;
3
+ /** Why a module was refused, or why a call into it failed. Never a message from the module. */
4
+ export type EdgeModuleErrorCode = "EDGE_MODULE_UNREADABLE" | "EDGE_MODULE_INVALID" | "EDGE_MODULE_ABI_UNSUPPORTED" | "EDGE_MODULE_FAULTED";
5
+ export declare class EdgeModuleError extends Error {
6
+ readonly code: EdgeModuleErrorCode;
7
+ constructor(code: EdgeModuleErrorCode);
8
+ }
9
+ /**
10
+ * One answer from the module: its result, or the refusal code it gave. The
11
+ * module's own message is dropped here; it may quote the input, and nothing
12
+ * of the input belongs in a log line.
13
+ */
14
+ export type EdgeEnvelope = {
15
+ readonly ok: true;
16
+ readonly result: unknown;
17
+ } | {
18
+ readonly ok: false;
19
+ readonly code: string;
20
+ };
21
+ /**
22
+ * The host side of the Decionis edge evaluator: the proprietary WebAssembly
23
+ * module, licensed separately and not part of this package, instantiated with
24
+ * no imports. This class knows the module's calling convention and nothing of
25
+ * its policy semantics.
26
+ *
27
+ * A module that does not export ABI 3 is refused at construction, so a
28
+ * process configured for the edge never starts on an older or a foreign
29
+ * module. A call that traps marks the instance faulted: its memory can no
30
+ * longer be trusted, so every later call refuses rather than answering from
31
+ * it.
32
+ */
33
+ export declare class EdgeModule {
34
+ private readonly exports;
35
+ private faulted;
36
+ private readonly encoder;
37
+ private readonly decoder;
38
+ private constructor();
39
+ /** Reads, compiles and instantiates the module at `path`. */
40
+ static fromFile(path: string): EdgeModule;
41
+ /**
42
+ * Compiles and instantiates `bytes` synchronously, so a refusal is a
43
+ * refusal to start rather than a promise someone forgets to await.
44
+ */
45
+ static fromBytes(bytes: Uint8Array<ArrayBuffer>): EdgeModule;
46
+ /** Checks an instance's exports against ABI 3. */
47
+ static fromExports(exports: WebAssembly.Exports): EdgeModule;
48
+ /** True once a call trapped; the instance answers nothing after that. */
49
+ get isFaulted(): boolean;
50
+ /** `load_bundle({signed_bundle, org_id, now})`. */
51
+ loadBundle(input: {
52
+ readonly signed_bundle: string;
53
+ readonly org_id: string;
54
+ readonly now: string;
55
+ }): EdgeEnvelope;
56
+ /** `decide(handle, {binding, mode, now})`. */
57
+ decide(handle: number, input: unknown): EdgeEnvelope;
58
+ /** `unload_bundle(handle)`: true when the handle was loaded and is now released. */
59
+ unloadBundle(handle: number): boolean;
60
+ private call;
61
+ private static envelope;
62
+ }
63
+ //# sourceMappingURL=EdgeModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeModule.d.ts","sourceRoot":"","sources":["../../../src/decision/edge/EdgeModule.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,+FAA+F;AAC/F,MAAM,MAAM,mBAAmB,GAC3B,wBAAwB,GACxB,qBAAqB,GACrB,6BAA6B,GAC7B,qBAAqB,CAAC;AAE1B,qBAAa,eAAgB,SAAQ,KAAK;aACL,IAAI,EAAE,mBAAmB;gBAAzB,IAAI,EAAE,mBAAmB;CAI7D;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACtB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAuBlG;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IAKD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IAErE,OAAO;IAEP,6DAA6D;WAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAUhD;;;OAGG;WACW,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU;IAUnE,kDAAkD;WACpC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,UAAU;IAyBnE,yEAAyE;IACzE,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,mDAAmD;IAC5C,UAAU,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,GAAG,YAAY;IAIhB,8CAA8C;IACvC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY;IAI3D,oFAAoF;IAC7E,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAU5C,OAAO,CAAC,IAAI;IAuBZ,OAAO,CAAC,MAAM,CAAC,QAAQ;CAYxB"}
@@ -0,0 +1,147 @@
1
+ import { readFileSync } from "node:fs";
2
+ /** The module ABI this host speaks: ABI 2's bundle exports plus `decide`. */
3
+ export const EDGE_MODULE_ABI_VERSION = 3;
4
+ export class EdgeModuleError extends Error {
5
+ code;
6
+ constructor(code) {
7
+ super(code);
8
+ this.code = code;
9
+ this.name = "EdgeModuleError";
10
+ }
11
+ }
12
+ const FUNCTIONS = [
13
+ "alloc",
14
+ "dealloc",
15
+ "abi_version",
16
+ "load_bundle",
17
+ "evaluate_bundle",
18
+ "decide",
19
+ "unload_bundle",
20
+ ];
21
+ /**
22
+ * The host side of the Decionis edge evaluator: the proprietary WebAssembly
23
+ * module, licensed separately and not part of this package, instantiated with
24
+ * no imports. This class knows the module's calling convention and nothing of
25
+ * its policy semantics.
26
+ *
27
+ * A module that does not export ABI 3 is refused at construction, so a
28
+ * process configured for the edge never starts on an older or a foreign
29
+ * module. A call that traps marks the instance faulted: its memory can no
30
+ * longer be trusted, so every later call refuses rather than answering from
31
+ * it.
32
+ */
33
+ export class EdgeModule {
34
+ exports;
35
+ faulted = false;
36
+ encoder = new TextEncoder();
37
+ decoder = new TextDecoder("utf-8", { fatal: true });
38
+ constructor(exports) {
39
+ this.exports = exports;
40
+ }
41
+ /** Reads, compiles and instantiates the module at `path`. */
42
+ static fromFile(path) {
43
+ let bytes;
44
+ try {
45
+ bytes = readFileSync(path);
46
+ }
47
+ catch {
48
+ throw new EdgeModuleError("EDGE_MODULE_UNREADABLE");
49
+ }
50
+ return EdgeModule.fromBytes(bytes);
51
+ }
52
+ /**
53
+ * Compiles and instantiates `bytes` synchronously, so a refusal is a
54
+ * refusal to start rather than a promise someone forgets to await.
55
+ */
56
+ static fromBytes(bytes) {
57
+ let instance;
58
+ try {
59
+ instance = new WebAssembly.Instance(new WebAssembly.Module(bytes), {});
60
+ }
61
+ catch {
62
+ throw new EdgeModuleError("EDGE_MODULE_INVALID");
63
+ }
64
+ return EdgeModule.fromExports(instance.exports);
65
+ }
66
+ /** Checks an instance's exports against ABI 3. */
67
+ static fromExports(exports) {
68
+ if (!(exports["memory"] instanceof WebAssembly.Memory)) {
69
+ throw new EdgeModuleError("EDGE_MODULE_INVALID");
70
+ }
71
+ for (const name of FUNCTIONS) {
72
+ if (typeof exports[name] !== "function") {
73
+ // An ABI 2 module lacks `decide`; it is an older module, not a broken one.
74
+ throw new EdgeModuleError(name === "decide" ? "EDGE_MODULE_ABI_UNSUPPORTED" : "EDGE_MODULE_INVALID");
75
+ }
76
+ }
77
+ const module = new EdgeModule(exports);
78
+ let version;
79
+ try {
80
+ version = module.exports.abi_version();
81
+ }
82
+ catch {
83
+ throw new EdgeModuleError("EDGE_MODULE_INVALID");
84
+ }
85
+ if (version !== EDGE_MODULE_ABI_VERSION) {
86
+ throw new EdgeModuleError("EDGE_MODULE_ABI_UNSUPPORTED");
87
+ }
88
+ return module;
89
+ }
90
+ /** True once a call trapped; the instance answers nothing after that. */
91
+ get isFaulted() {
92
+ return this.faulted;
93
+ }
94
+ /** `load_bundle({signed_bundle, org_id, now})`. */
95
+ loadBundle(input) {
96
+ return this.call(input, (ptr, len) => this.exports.load_bundle(ptr, len));
97
+ }
98
+ /** `decide(handle, {binding, mode, now})`. */
99
+ decide(handle, input) {
100
+ return this.call(input, (ptr, len) => this.exports.decide(handle, ptr, len));
101
+ }
102
+ /** `unload_bundle(handle)`: true when the handle was loaded and is now released. */
103
+ unloadBundle(handle) {
104
+ if (this.faulted)
105
+ return false;
106
+ try {
107
+ return this.exports.unload_bundle(handle) === 1;
108
+ }
109
+ catch {
110
+ this.faulted = true;
111
+ return false;
112
+ }
113
+ }
114
+ call(input, invoke) {
115
+ if (this.faulted)
116
+ throw new EdgeModuleError("EDGE_MODULE_FAULTED");
117
+ try {
118
+ const bytes = this.encoder.encode(JSON.stringify(input));
119
+ const ptr = this.exports.alloc(bytes.length);
120
+ if (ptr === 0)
121
+ throw new EdgeModuleError("EDGE_MODULE_FAULTED");
122
+ // The buffer is read after `alloc`, which may have grown the memory.
123
+ new Uint8Array(this.exports.memory.buffer, ptr, bytes.length).set(bytes);
124
+ const packed = invoke(ptr, bytes.length);
125
+ this.exports.dealloc(ptr, bytes.length);
126
+ const outPtr = Number(packed >> 32n);
127
+ const outLen = Number(packed & 0xffffffffn);
128
+ const text = this.decoder.decode(new Uint8Array(this.exports.memory.buffer, outPtr, outLen).slice());
129
+ this.exports.dealloc(outPtr, outLen);
130
+ return EdgeModule.envelope(JSON.parse(text));
131
+ }
132
+ catch {
133
+ this.faulted = true;
134
+ throw new EdgeModuleError("EDGE_MODULE_FAULTED");
135
+ }
136
+ }
137
+ static envelope(value) {
138
+ const envelope = value;
139
+ if (envelope.ok === true && "result" in envelope)
140
+ return { ok: true, result: envelope.result };
141
+ if (envelope.ok === false && typeof envelope.error?.code === "string") {
142
+ return { ok: false, code: envelope.error.code };
143
+ }
144
+ throw new EdgeModuleError("EDGE_MODULE_FAULTED");
145
+ }
146
+ }
147
+ //# sourceMappingURL=EdgeModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeModule.js","sourceRoot":"","sources":["../../../src/decision/edge/EdgeModule.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,8 @@ export type ActionExecutionAttempt = {
49
49
  readonly receipt: string | null;
50
50
  } | {
51
51
  readonly status: "FAILED_BEFORE_DISPATCH";
52
+ /** The handler's own code, when it refused with a `PreDispatchRefusal`. */
53
+ readonly code?: string;
52
54
  } | {
53
55
  readonly status: "REFUSED_AFTER_DISPATCH";
54
56
  readonly reason: string;
@@ -83,6 +85,27 @@ export declare class ProviderRefusal extends Error {
83
85
  /** The provider's own reason, as a code; never its response body. */
84
86
  reason: string);
85
87
  }
88
+ /**
89
+ * What a handler throws when it refuses before anything was sent: the request
90
+ * cannot be built, a credential cannot be resolved, or the payload no longer
91
+ * matches what the authority bound.
92
+ *
93
+ * Any error thrown before the dispatch already counts as a failure before
94
+ * dispatch. This one says why: its code reaches the execution result and the
95
+ * audit trail instead of collapsing into HANDLER_FAILED_BEFORE_DISPATCH, so a
96
+ * payload that changed after the decision reads as PAYLOAD_BINDING_MISMATCH
97
+ * (BEAP-L3-ADP-05: what can fail before the dispatch boundary fails before
98
+ * it, and says so). A code that is not upper snake case is replaced with
99
+ * HANDLER_FAILED_BEFORE_DISPATCH, so a handler cannot write free text into the
100
+ * audit trail.
101
+ *
102
+ * Thrown inside the dispatch it means nothing more than any other error: the
103
+ * request left, so the outcome is unknown.
104
+ */
105
+ export declare class PreDispatchRefusal extends Error {
106
+ readonly code: string;
107
+ constructor(code: string);
108
+ }
86
109
  export declare class ActionRegistry {
87
110
  private readonly actions;
88
111
  private readonly pendingReconciliations;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRegistry.d.ts","sourceRoot":"","sources":["../../src/execution/ActionRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionRegistry.d.ts","sourceRoot":"","sources":["../../src/execution/ActionRegistry.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,34 @@ export class ProviderRefusal extends Error {
27
27
  this.name = "ProviderRefusal";
28
28
  }
29
29
  }
30
+ /** A pre-dispatch refusal code: upper snake case, as every reason code here is. */
31
+ const PRE_DISPATCH_CODE = /^[A-Z][A-Z0-9_]{2,63}$/;
32
+ /**
33
+ * What a handler throws when it refuses before anything was sent: the request
34
+ * cannot be built, a credential cannot be resolved, or the payload no longer
35
+ * matches what the authority bound.
36
+ *
37
+ * Any error thrown before the dispatch already counts as a failure before
38
+ * dispatch. This one says why: its code reaches the execution result and the
39
+ * audit trail instead of collapsing into HANDLER_FAILED_BEFORE_DISPATCH, so a
40
+ * payload that changed after the decision reads as PAYLOAD_BINDING_MISMATCH
41
+ * (BEAP-L3-ADP-05: what can fail before the dispatch boundary fails before
42
+ * it, and says so). A code that is not upper snake case is replaced with
43
+ * HANDLER_FAILED_BEFORE_DISPATCH, so a handler cannot write free text into the
44
+ * audit trail.
45
+ *
46
+ * Thrown inside the dispatch it means nothing more than any other error: the
47
+ * request left, so the outcome is unknown.
48
+ */
49
+ export class PreDispatchRefusal extends Error {
50
+ code;
51
+ constructor(code) {
52
+ const safe = PRE_DISPATCH_CODE.test(code) ? code : "HANDLER_FAILED_BEFORE_DISPATCH";
53
+ super(safe);
54
+ this.name = "PreDispatchRefusal";
55
+ this.code = safe;
56
+ }
57
+ }
30
58
  export class ActionRegistry {
31
59
  actions = new Map();
32
60
  pendingReconciliations = new Map();
@@ -107,8 +135,10 @@ export class ActionRegistry {
107
135
  if (dispatched && error instanceof ProviderRefusal) {
108
136
  return { status: "REFUSED_AFTER_DISPATCH", reason: error.reason, receipt };
109
137
  }
110
- return dispatched
111
- ? { status: "UNKNOWN_AFTER_DISPATCH", receipt }
138
+ if (dispatched)
139
+ return { status: "UNKNOWN_AFTER_DISPATCH", receipt };
140
+ return error instanceof PreDispatchRefusal
141
+ ? { status: "FAILED_BEFORE_DISPATCH", code: error.code }
112
142
  : { status: "FAILED_BEFORE_DISPATCH" };
113
143
  }
114
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRegistry.js","sourceRoot":"","sources":["../../src/execution/ActionRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionRegistry.js","sourceRoot":"","sources":["../../src/execution/ActionRegistry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type Credential } from "../http/Credential.js";
2
2
  import type { CapturedIntent } from "../intent/ExecutionIntent.js";
3
3
  import type { JsonObject } from "../intent/JsonValue.js";
4
- import type { GateDecision } from "../decision/DecisionAuthority.js";
4
+ import type { DecisionGate } from "../decision/DecisionAuthority.js";
5
5
  export interface VerifiedAuthorization {
6
6
  readonly decisionId: string;
7
7
  readonly dossierId: string;
@@ -99,7 +99,7 @@ export interface AuthorityEffectReport {
99
99
  }
100
100
  export interface AuthorizationFinalizationInput {
101
101
  readonly captured: CapturedIntent;
102
- readonly decision: GateDecision;
102
+ readonly decision: DecisionGate;
103
103
  readonly authorization: VerifiedAuthorization;
104
104
  readonly outcome: ExecutionCommitOutcome;
105
105
  /**
@@ -124,13 +124,26 @@ export interface AuthorizationFinalizationInput {
124
124
  readonly effectReceipt?: string;
125
125
  }
126
126
  export interface AuthorizationVerifier {
127
- verifyAndConsume(captured: CapturedIntent, decision: GateDecision): Promise<VerifiedAuthorization | null>;
127
+ verifyAndConsume(captured: CapturedIntent, decision: DecisionGate): Promise<VerifiedAuthorization | null>;
128
128
  /**
129
129
  * Reports the downstream attempt outcome for an authorization returned by
130
130
  * this verifier's `verifyAndConsume`. Finalization is evidence, never
131
131
  * authority: it must not retry a side effect, and it must not throw.
132
132
  */
133
133
  finalize?(input: AuthorizationFinalizationInput): Promise<"RECORDED" | "PENDING">;
134
+ /**
135
+ * What another process needs to finalize a claim this verifier made, for
136
+ * a store the replicas share to keep sealed; it is claim material, which
137
+ * this verifier exposes nowhere else. Absent on a verifier whose claims
138
+ * cannot leave the process; null for an authorization it did not claim.
139
+ */
140
+ claimMaterial?(authorization: VerifiedAuthorization): JsonObject | null;
141
+ /**
142
+ * Registers claim material read back from such a store against an
143
+ * authorization rebuilt from it, so `finalize` can proceed in this
144
+ * process. False when the material is not this verifier's.
145
+ */
146
+ adoptClaim?(authorization: VerifiedAuthorization, material: JsonObject): boolean;
134
147
  }
135
148
  export interface DecionisGrantVerifierOptions {
136
149
  readonly baseUrl: string;
@@ -163,7 +176,9 @@ export declare class DecionisGrantVerifier implements AuthorizationVerifier {
163
176
  */
164
177
  static parametersDigest(parameters: JsonObject): `sha256:${string}`;
165
178
  constructor(options: DecionisGrantVerifierOptions);
166
- verifyAndConsume(captured: CapturedIntent, decision: GateDecision): Promise<VerifiedAuthorization | null>;
179
+ verifyAndConsume(captured: CapturedIntent, decision: DecisionGate): Promise<VerifiedAuthorization | null>;
180
+ claimMaterial(authorization: VerifiedAuthorization): JsonObject | null;
181
+ adoptClaim(authorization: VerifiedAuthorization, material: JsonObject): boolean;
167
182
  finalize(input: AuthorizationFinalizationInput): Promise<"RECORDED" | "PENDING">;
168
183
  /**
169
184
  * What the authority reported about effect evidence for an authorization this
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorizationVerifier.d.ts","sourceRoot":"","sources":["../../src/execution/AuthorizationVerifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthorizationVerifier.d.ts","sourceRoot":"","sources":["../../src/execution/AuthorizationVerifier.ts"],"names":[],"mappings":"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"}