@cotal-ai/core 0.90.1 → 0.92.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.
Files changed (169) hide show
  1. package/dist/agent-file.d.ts +2 -1
  2. package/dist/agent-file.d.ts.map +1 -1
  3. package/dist/agent-file.js +5 -3
  4. package/dist/agent-file.js.map +1 -1
  5. package/dist/auth-provider.d.ts +155 -1
  6. package/dist/auth-provider.d.ts.map +1 -1
  7. package/dist/auth-provider.js +24 -0
  8. package/dist/auth-provider.js.map +1 -1
  9. package/dist/authority-store-config.d.ts +31 -0
  10. package/dist/authority-store-config.d.ts.map +1 -0
  11. package/dist/authority-store-config.js +45 -0
  12. package/dist/authority-store-config.js.map +1 -0
  13. package/dist/backup-config.d.ts +32 -1
  14. package/dist/backup-config.d.ts.map +1 -1
  15. package/dist/backup-config.js +11 -0
  16. package/dist/backup-config.js.map +1 -1
  17. package/dist/backup.d.ts +4 -0
  18. package/dist/backup.d.ts.map +1 -1
  19. package/dist/backup.js +14 -0
  20. package/dist/backup.js.map +1 -1
  21. package/dist/broker-identity.d.ts +24 -0
  22. package/dist/broker-identity.d.ts.map +1 -0
  23. package/dist/broker-identity.js +36 -0
  24. package/dist/broker-identity.js.map +1 -0
  25. package/dist/browser-control.d.ts +1 -0
  26. package/dist/browser-control.d.ts.map +1 -1
  27. package/dist/browser-control.js +1 -0
  28. package/dist/browser-control.js.map +1 -1
  29. package/dist/browser-validators-build.d.ts +1 -0
  30. package/dist/browser-validators-build.d.ts.map +1 -1
  31. package/dist/channels.d.ts +14 -0
  32. package/dist/channels.d.ts.map +1 -1
  33. package/dist/channels.js +19 -5
  34. package/dist/channels.js.map +1 -1
  35. package/dist/command.d.ts +57 -0
  36. package/dist/command.d.ts.map +1 -1
  37. package/dist/command.js +49 -2
  38. package/dist/command.js.map +1 -1
  39. package/dist/connector-setup.d.ts +6 -0
  40. package/dist/connector-setup.d.ts.map +1 -1
  41. package/dist/connector.d.ts +3 -0
  42. package/dist/connector.d.ts.map +1 -1
  43. package/dist/connector.js.map +1 -1
  44. package/dist/endpoint-binding.d.ts +66 -1
  45. package/dist/endpoint-binding.d.ts.map +1 -1
  46. package/dist/endpoint-binding.js +167 -118
  47. package/dist/endpoint-binding.js.map +1 -1
  48. package/dist/endpoint-call.js +1 -1
  49. package/dist/endpoint-call.js.map +1 -1
  50. package/dist/endpoint-caller.d.ts +2 -0
  51. package/dist/endpoint-caller.d.ts.map +1 -1
  52. package/dist/endpoint-caller.js.map +1 -1
  53. package/dist/endpoint-grants.d.ts +15 -5
  54. package/dist/endpoint-grants.d.ts.map +1 -1
  55. package/dist/endpoint-grants.js +17 -5
  56. package/dist/endpoint-grants.js.map +1 -1
  57. package/dist/endpoint-invoke.d.ts +9 -0
  58. package/dist/endpoint-invoke.d.ts.map +1 -1
  59. package/dist/endpoint-invoke.js +7 -0
  60. package/dist/endpoint-invoke.js.map +1 -1
  61. package/dist/endpoint-schema-diff.d.ts +20 -0
  62. package/dist/endpoint-schema-diff.d.ts.map +1 -0
  63. package/dist/endpoint-schema-diff.js +15 -0
  64. package/dist/endpoint-schema-diff.js.map +1 -0
  65. package/dist/endpoint-serve.d.ts +4 -0
  66. package/dist/endpoint-serve.d.ts.map +1 -1
  67. package/dist/endpoint-serve.js +1 -1
  68. package/dist/endpoint-serve.js.map +1 -1
  69. package/dist/endpoint.d.ts +98 -5
  70. package/dist/endpoint.d.ts.map +1 -1
  71. package/dist/endpoint.js +350 -36
  72. package/dist/endpoint.js.map +1 -1
  73. package/dist/identity.d.ts +18 -0
  74. package/dist/identity.d.ts.map +1 -1
  75. package/dist/identity.js +28 -1
  76. package/dist/identity.js.map +1 -1
  77. package/dist/index.d.ts +15 -1
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +15 -1
  80. package/dist/index.js.map +1 -1
  81. package/dist/issued-authority.d.ts +25 -1
  82. package/dist/issued-authority.d.ts.map +1 -1
  83. package/dist/issued-authority.js +24 -7
  84. package/dist/issued-authority.js.map +1 -1
  85. package/dist/membership-feed.d.ts +16 -12
  86. package/dist/membership-feed.d.ts.map +1 -1
  87. package/dist/membership-feed.js +143 -12
  88. package/dist/membership-feed.js.map +1 -1
  89. package/dist/one-line.d.ts +5 -4
  90. package/dist/one-line.d.ts.map +1 -1
  91. package/dist/one-line.js +6 -5
  92. package/dist/one-line.js.map +1 -1
  93. package/dist/provision.d.ts +8 -1
  94. package/dist/provision.d.ts.map +1 -1
  95. package/dist/provision.js +39 -17
  96. package/dist/provision.js.map +1 -1
  97. package/dist/registry.d.ts +8 -4
  98. package/dist/registry.d.ts.map +1 -1
  99. package/dist/registry.js +58 -20
  100. package/dist/registry.js.map +1 -1
  101. package/dist/remote-manager-authority.d.ts +34 -2
  102. package/dist/remote-manager-authority.d.ts.map +1 -1
  103. package/dist/remote-manager-authority.js.map +1 -1
  104. package/dist/remote-service-authority.d.ts +10 -6
  105. package/dist/remote-service-authority.d.ts.map +1 -1
  106. package/dist/remote-service-authority.js +4 -1
  107. package/dist/remote-service-authority.js.map +1 -1
  108. package/dist/run-admission.d.ts +24 -1
  109. package/dist/run-admission.d.ts.map +1 -1
  110. package/dist/run-admission.js +60 -3
  111. package/dist/run-admission.js.map +1 -1
  112. package/dist/run-cancel.d.ts +43 -0
  113. package/dist/run-cancel.d.ts.map +1 -0
  114. package/dist/run-cancel.js +72 -0
  115. package/dist/run-cancel.js.map +1 -0
  116. package/dist/run-host.d.ts +12 -0
  117. package/dist/run-host.d.ts.map +1 -1
  118. package/dist/run-submission-client.d.ts +35 -0
  119. package/dist/run-submission-client.d.ts.map +1 -0
  120. package/dist/run-submission-client.js +61 -0
  121. package/dist/run-submission-client.js.map +1 -0
  122. package/dist/run-submission.d.ts +78 -0
  123. package/dist/run-submission.d.ts.map +1 -0
  124. package/dist/run-submission.js +158 -0
  125. package/dist/run-submission.js.map +1 -0
  126. package/dist/sealed-reply.d.ts +21 -0
  127. package/dist/sealed-reply.d.ts.map +1 -0
  128. package/dist/sealed-reply.js +75 -0
  129. package/dist/sealed-reply.js.map +1 -0
  130. package/dist/secret-fs.d.ts +29 -6
  131. package/dist/secret-fs.d.ts.map +1 -1
  132. package/dist/secret-fs.js +107 -18
  133. package/dist/secret-fs.js.map +1 -1
  134. package/dist/space-deletion-targets.d.ts +4 -0
  135. package/dist/space-deletion-targets.d.ts.map +1 -0
  136. package/dist/space-deletion-targets.js +15 -0
  137. package/dist/space-deletion-targets.js.map +1 -0
  138. package/dist/space-initialization-diff.d.ts +47 -0
  139. package/dist/space-initialization-diff.d.ts.map +1 -0
  140. package/dist/space-initialization-diff.js +100 -0
  141. package/dist/space-initialization-diff.js.map +1 -0
  142. package/dist/space-initialization-observation.d.ts +52 -0
  143. package/dist/space-initialization-observation.d.ts.map +1 -0
  144. package/dist/space-initialization-observation.js +133 -0
  145. package/dist/space-initialization-observation.js.map +1 -0
  146. package/dist/space-resource-definitions.d.ts +86 -0
  147. package/dist/space-resource-definitions.d.ts.map +1 -0
  148. package/dist/space-resource-definitions.js +133 -0
  149. package/dist/space-resource-definitions.js.map +1 -0
  150. package/dist/space-schema-diff.d.ts +45 -0
  151. package/dist/space-schema-diff.d.ts.map +1 -0
  152. package/dist/space-schema-diff.js +204 -0
  153. package/dist/space-schema-diff.js.map +1 -0
  154. package/dist/space-schema-observation.d.ts +45 -0
  155. package/dist/space-schema-observation.d.ts.map +1 -0
  156. package/dist/space-schema-observation.js +78 -0
  157. package/dist/space-schema-observation.js.map +1 -0
  158. package/dist/spaces.d.ts.map +1 -1
  159. package/dist/spaces.js +5 -25
  160. package/dist/spaces.js.map +1 -1
  161. package/dist/stream-schema-diff.d.ts +31 -0
  162. package/dist/stream-schema-diff.d.ts.map +1 -0
  163. package/dist/stream-schema-diff.js +45 -0
  164. package/dist/stream-schema-diff.js.map +1 -0
  165. package/dist/streams.d.ts +30 -1
  166. package/dist/streams.d.ts.map +1 -1
  167. package/dist/streams.js +41 -18
  168. package/dist/streams.js.map +1 -1
  169. package/package.json +2 -2
@@ -0,0 +1,43 @@
1
+ import type { EpServeContext } from "./endpoint-serve.js";
2
+ import type { RunHostOutcome } from "./run-host.js";
3
+ import type { RunRevocation } from "./run-admission.js";
4
+ import type { RunStatusValue } from "./run-record.js";
5
+ import type { JetStreamManager } from "@nats-io/jetstream";
6
+ /** Cancellation needs a leader-served holder observation, never a follower KV projection.
7
+ * A torn pair refuses immediately; it does not become an absent or invented run state. */
8
+ export declare function readRunCancellationStatus(jsm: JetStreamManager, space: string, endpoint: string, runId: string): Promise<RunStatusValue | undefined>;
9
+ export declare const RUN_CANCEL_MAX_DEADLINE_MS = 30000;
10
+ export interface RunCancelInput {
11
+ readonly runId: string;
12
+ readonly reason: string;
13
+ }
14
+ export type RunCancelAuthority = "original" | "owner-interactive" | "admin";
15
+ export type RunCancelCommitCode = "permission-denied" | "failed-precondition" | "deadline-exceeded" | "resource-exhausted" | "unavailable";
16
+ export type RunCancelCommit = {
17
+ readonly kind: "committed";
18
+ readonly outcome: "created" | "existed";
19
+ readonly revocation: RunRevocation;
20
+ } | {
21
+ readonly kind: "refused-before-dispatch" | "outcome-unknown";
22
+ readonly code: RunCancelCommitCode;
23
+ };
24
+ export interface RunCancelResult {
25
+ readonly runId: string;
26
+ readonly revocation?: Pick<RunRevocation, "by" | "reason" | "revokedAt">;
27
+ readonly duplicate: boolean | null;
28
+ readonly authority: RunCancelAuthority;
29
+ readonly observed: {
30
+ readonly processEpoch: number;
31
+ readonly phase: "terminal" | "launch-abandoned" | "stop-requested" | "stopped" | "not-driven-here";
32
+ readonly recordedState?: RunStatusValue["state"];
33
+ readonly runEpoch?: number;
34
+ readonly fencingToken?: number;
35
+ readonly holder?: string;
36
+ readonly driveOutcome?: RunHostOutcome;
37
+ };
38
+ }
39
+ /** Shared by the served handler and issuing host's observer. Never truncate a reason. */
40
+ export declare function readRunCancelInput(raw: unknown): RunCancelInput;
41
+ /** Run before the manager's serving/reconciliation gate. Returns the original monotonic deadline. */
42
+ export declare function runCancelCoordinates(ctx: EpServeContext, instanceId: string): number;
43
+ //# sourceMappingURL=run-cancel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-cancel.d.ts","sourceRoot":"","sources":["../src/run-cancel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D;2FAC2F;AAC3F,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAyB1J;AAED,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,mBAAmB,GAAG,OAAO,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAC3I,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;CAAE,GAC3G;IAAE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,GAAG,iBAAiB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEzG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC;IACzE,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,GAAG,iBAAiB,CAAC;QACnG,QAAQ,CAAC,aAAa,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;KACxC,CAAC;CACH;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAgB/D;AAED,qGAAqG;AACrG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAepF"}
@@ -0,0 +1,72 @@
1
+ import { EpEnvelopeError } from "./endpoint-envelope.js";
2
+ import { EP_UNBOUND_CALLER_AUTHORITY } from "./issued-authority.js";
3
+ import { assertIdToken, isIssuedCaller } from "./endpoint-subjects.js";
4
+ import { readRecordLeader, recordSpecKey, recordStatusKey, RECORD_KINDS } from "./endpoint-records.js";
5
+ /** Cancellation needs a leader-served holder observation, never a follower KV projection.
6
+ * A torn pair refuses immediately; it does not become an absent or invented run state. */
7
+ export async function readRunCancellationStatus(jsm, space, endpoint, runId) {
8
+ try {
9
+ const spec = await readRecordLeader(jsm, space, recordSpecKey(RECORD_KINDS.run, [endpoint, runId]));
10
+ const status = await readRecordLeader(jsm, space, recordStatusKey(RECORD_KINDS.run, [endpoint, runId]));
11
+ if (!spec) {
12
+ if (status)
13
+ throw new Error("status without spec");
14
+ return undefined;
15
+ }
16
+ const s = spec.value;
17
+ if (!s || s.v !== 1 || s.run !== runId || !s.pins || typeof s.pins !== "object" || !Number.isSafeInteger(s.createdAt))
18
+ throw new Error("invalid run spec");
19
+ if (!status)
20
+ return undefined;
21
+ const value = status.value;
22
+ if (!value || value.v !== 1 || !["running", "released", "completed", "failed"].includes(value.state)
23
+ || typeof value.holder !== "string" || !value.holder
24
+ || !Number.isSafeInteger(value.epoch) || value.epoch < 0
25
+ || !Number.isSafeInteger(value.fencingToken) || value.fencingToken < 0
26
+ || !Number.isSafeInteger(value.observedSpecRevision) || value.observedSpecRevision < 0
27
+ || value.observedSpecRevision > spec.revision
28
+ || !Number.isSafeInteger(value.journalHigh) || !Number.isSafeInteger(value.at))
29
+ throw new Error("invalid or torn run status");
30
+ return value;
31
+ }
32
+ catch {
33
+ throw new EpEnvelopeError("unavailable", "run-cancel could not read a valid run record");
34
+ }
35
+ }
36
+ export const RUN_CANCEL_MAX_DEADLINE_MS = 30_000;
37
+ /** Shared by the served handler and issuing host's observer. Never truncate a reason. */
38
+ export function readRunCancelInput(raw) {
39
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
40
+ throw new EpEnvelopeError("bad-request", "run-cancel requires a closed runId/reason object");
41
+ const object = raw;
42
+ if (Object.keys(object).length !== 2 || typeof object.runId !== "string" || typeof object.reason !== "string")
43
+ throw new EpEnvelopeError("bad-request", "run-cancel requires only runId and reason strings");
44
+ assertIdToken(object.runId, "runId");
45
+ for (const character of object.reason) {
46
+ const point = character.codePointAt(0);
47
+ if (point >= 0xd800 && point <= 0xdfff)
48
+ throw new EpEnvelopeError("bad-request", "run-cancel reason must be well-formed Unicode");
49
+ }
50
+ const bytes = new TextEncoder().encode(object.reason).length;
51
+ if (bytes < 1 || bytes > 512)
52
+ throw new EpEnvelopeError("bad-request", "run-cancel reason must encode to 1..512 UTF-8 bytes");
53
+ return { runId: object.runId, reason: object.reason };
54
+ }
55
+ /** Run before the manager's serving/reconciliation gate. Returns the original monotonic deadline. */
56
+ export function runCancelCoordinates(ctx, instanceId) {
57
+ const caller = ctx.subject.caller;
58
+ if (ctx.subject.rail !== "v1" || !isIssuedCaller(caller))
59
+ throw new EpEnvelopeError("permission-denied", "run-cancel requires issued caller authority", [
60
+ { kind: EP_UNBOUND_CALLER_AUTHORITY, owner: caller.owner, actor: caller.actor, uid: caller.uid },
61
+ ]);
62
+ const bind = ctx.request.bind;
63
+ const deadline = ctx.request.deadlineMs;
64
+ if (ctx.subject.route !== "inst" || ctx.subject.instanceId !== instanceId || ctx.subject.target !== null
65
+ || !bind || bind.instanceId !== instanceId || bind.epoch !== ctx.identity.epoch
66
+ || !Number.isFinite(ctx.receivedAtMonotonicMs) || !Number.isSafeInteger(deadline) || deadline <= 0)
67
+ throw new EpEnvelopeError("permission-denied", "run-cancel request is not authorized");
68
+ if (deadline > RUN_CANCEL_MAX_DEADLINE_MS)
69
+ throw new EpEnvelopeError("bad-request", `run-cancel deadline exceeds ${RUN_CANCEL_MAX_DEADLINE_MS}ms`);
70
+ return ctx.receivedAtMonotonicMs + deadline;
71
+ }
72
+ //# sourceMappingURL=run-cancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-cancel.js","sourceRoot":"","sources":["../src/run-cancel.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,9 @@ export interface RunHostDriveRequest {
72
72
  * every channel effect. A drive without one performs no channel effect: the host refuses at
73
73
  * the boundary rather than running the effect under the mediator's own authority. */
74
74
  readonly admission: RunAdmissionView;
75
+ /** The host's observed local cancellation intent. Classification only: this does not signal
76
+ * the root or replace the current-holder check before calling the drive's cancel handle. */
77
+ readonly cancellationObserved?: () => string | undefined;
75
78
  }
76
79
  /** How a drive attempt ended. `released` is the driver saying the run is not its to continue (a
77
80
  * takeover won, a step was refused on this host, the host asked it to stop, the run was never
@@ -102,6 +105,8 @@ export type RunHostOutcome = {
102
105
  export interface RunHostDrive {
103
106
  readonly done: Promise<RunHostOutcome>;
104
107
  release(reason: string): void;
108
+ /** Cooperatively cancel the root and in-flight effect contexts after the host establishes authority. */
109
+ cancel(reason: string): void;
105
110
  }
106
111
  /** The READ half of an answer: which pause, addressed by its step. */
107
112
  export interface RunHostLocateRequest {
@@ -285,6 +290,13 @@ export interface RunStatusView {
285
290
  readonly endpoint: string;
286
291
  readonly spec: RunSpecValue;
287
292
  readonly status?: RunStatusValue;
293
+ /** The independently observed marker, not proof that the recorded holder has stopped. */
294
+ readonly revoked?: {
295
+ readonly by: string;
296
+ readonly reason: string;
297
+ };
298
+ /** A failed marker read is unknown, not an absent marker or a resumable run. */
299
+ readonly revocationUnreadable?: string;
288
300
  readonly journal: RunJournalRow[];
289
301
  }
290
302
  export type RunValidation = {
@@ -1 +1 @@
1
- {"version":3,"file":"run-host.d.ts","sourceRoot":"","sources":["../src/run-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-host.d.ts","sourceRoot":"","sources":["../src/run-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { NatsConnection } from "@nats-io/transport-node";
2
+ import { type ResolvedService } from "./endpoint-caller.js";
3
+ import { type EpCaller } from "./endpoint-subjects.js";
4
+ import type { RunSubmissionView } from "./run-submission.js";
5
+ export interface KeyedRunSubmission {
6
+ readonly submissionId: string;
7
+ readonly fingerprint: string;
8
+ readonly instanceId: string;
9
+ readonly processEpoch: number;
10
+ readonly caller: EpCaller;
11
+ readonly inputDigest: string;
12
+ readonly outputDigest: string;
13
+ readonly source: string;
14
+ readonly file?: string;
15
+ readonly timeout?: string;
16
+ }
17
+ /** Snapshot a digest-verified exact-instance Describe before dispatch. The sole scheduler must
18
+ * persist these coordinates with its reservation. This process-local WeakMap handle cannot be
19
+ * rehydrated from JSON. This helper owns neither persisted restart recovery, retries nor work. */
20
+ export declare function prepareKeyedRunSubmission(space: string, service: ResolvedService, submissionId: string, input: {
21
+ source: string;
22
+ file?: string;
23
+ timeout?: string;
24
+ }): KeyedRunSubmission;
25
+ /** One attempt only, original id/semantic bytes/contracts/instance+epoch. No legacy fallback,
26
+ * currentEpoch override, split repair, re-resolve, new key or replacement run. */
27
+ export declare function invokeKeyedRunSubmission(nc: NatsConnection, space: string, submission: KeyedRunSubmission, opts: {
28
+ deadlineMs: number;
29
+ signal?: AbortSignal;
30
+ }): Promise<RunSubmissionView>;
31
+ export declare function readKeyedRunSubmission(nc: NatsConnection, space: string, submission: KeyedRunSubmission, opts: {
32
+ deadlineMs: number;
33
+ signal?: AbortSignal;
34
+ }): Promise<RunSubmissionView>;
35
+ //# sourceMappingURL=run-submission-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-submission-client.d.ts","sourceRoot":"","sources":["../src/run-submission-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD;;kGAEkG;AAClG,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EACrG,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAgBhF;AAED;kFACkF;AAClF,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAC9G,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQhF;AAED,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAC5G,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAOhF"}
@@ -0,0 +1,61 @@
1
+ import { canonicalJson } from "./canonical.js";
2
+ import { submissionFingerprint } from "./endpoint-journal.js";
3
+ import { invokeCommand } from "./endpoint-caller.js";
4
+ import { epRequestSubject, parseEpSubject } from "./endpoint-subjects.js";
5
+ import { EpEnvelopeError } from "./endpoint-error.js";
6
+ const pins = new WeakMap();
7
+ /** Snapshot a digest-verified exact-instance Describe before dispatch. The sole scheduler must
8
+ * persist these coordinates with its reservation. This process-local WeakMap handle cannot be
9
+ * rehydrated from JSON. This helper owns neither persisted restart recovery, retries nor work. */
10
+ export function prepareKeyedRunSubmission(space, service, submissionId, input) {
11
+ const command = service.commands.get("run-start-keyed"), read = service.commands.get("run-submission-status");
12
+ if (!command || !read || !service.pinnedInstanceId || service.pinnedInstanceId !== service.responder.instanceId)
13
+ throw new EpEnvelopeError("unimplemented", "keyed submission requires both distinct contracts described on one pinned manager instance");
14
+ const args = { ...input }, caller = { ...service.caller }, identity = { ...service.responder };
15
+ const subject = parseEpSubject(epRequestSubject(space, { route: { mode: "inst", instanceId: identity.instanceId },
16
+ endpoint: service.endpoint, command: "run-start-keyed", caller, nonce: "n".repeat(24) }));
17
+ if (!subject || subject.plane !== "request")
18
+ throw new Error("invalid keyed caller");
19
+ const op = { endpoint: service.endpoint, command: "run-start-keyed", inputDigest: command.contract.input.closureDigest,
20
+ outputDigest: command.contract.output.closureDigest };
21
+ const fingerprint = submissionFingerprint({ id: submissionId, class: command.class, op, args }, subject).fingerprint;
22
+ const value = Object.freeze({ submissionId, fingerprint, instanceId: identity.instanceId, processEpoch: identity.epoch,
23
+ caller: Object.freeze(caller), inputDigest: op.inputDigest, outputDigest: op.outputDigest, ...args });
24
+ const snapshot = { ...service, caller, responder: identity, commands: new Map(service.commands) };
25
+ pins.set(value, { service: snapshot, args });
26
+ return value;
27
+ }
28
+ /** One attempt only, original id/semantic bytes/contracts/instance+epoch. No legacy fallback,
29
+ * currentEpoch override, split repair, re-resolve, new key or replacement run. */
30
+ export async function invokeKeyedRunSubmission(nc, space, submission, opts) {
31
+ const p = pins.get(submission);
32
+ if (!p || canonicalJson(p.service.caller) !== canonicalJson(submission.caller))
33
+ throw new EpEnvelopeError("failed-precondition", "keyed submission was not prepared from pinned native support");
34
+ const result = await invokeCommand(nc, space, p.service, "run-start-keyed", p.args, { ...supported(opts), id: submission.submissionId });
35
+ if (!result.reply.ok)
36
+ throw new EpEnvelopeError((result.reply.error?.code ?? "internal"), result.reply.error?.message ?? "keyed start refused", result.reply.error?.details, result.reply.error?.outcome);
37
+ return pinnedView(submission, result.reply.data);
38
+ }
39
+ export async function readKeyedRunSubmission(nc, space, submission, opts) {
40
+ const p = pins.get(submission);
41
+ if (!p)
42
+ throw new EpEnvelopeError("failed-precondition", "keyed read needs its original pinned support");
43
+ const result = await invokeCommand(nc, space, p.service, "run-submission-status", { submissionId: submission.submissionId }, supported(opts));
44
+ if (!result.reply.ok)
45
+ throw new EpEnvelopeError((result.reply.error?.code ?? "internal"), result.reply.error?.message ?? "keyed read refused", result.reply.error?.details, result.reply.error?.outcome);
46
+ return pinnedView(submission, result.reply.data);
47
+ }
48
+ /** Only the declared options reach the call, so no JavaScript caller can override the exact bind. */
49
+ function supported(opts) {
50
+ return { deadlineMs: opts.deadlineMs, ...(opts.signal !== undefined ? { signal: opts.signal } : {}) };
51
+ }
52
+ /** A reply that names another submission, instance, epoch or fingerprint is not this submission's.
53
+ * Its outcome stays unknown: keep the original reservation. */
54
+ function pinnedView(submission, view) {
55
+ if (view.submissionId !== submission.submissionId || view.instanceId !== submission.instanceId
56
+ || view.processEpoch !== submission.processEpoch
57
+ || view.fingerprint !== (view.state === "unbound" ? undefined : submission.fingerprint))
58
+ throw new EpEnvelopeError("internal", "keyed reply names other submission coordinates");
59
+ return view;
60
+ }
61
+ //# sourceMappingURL=run-submission-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-submission-client.js","sourceRoot":"","sources":["../src/run-submission-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { KV } from "@nats-io/kv";
2
+ import type { JetStreamManager } from "@nats-io/jetstream";
3
+ import { type RunAdmission } from "./run-admission.js";
4
+ import { type EpCaller } from "./endpoint-subjects.js";
5
+ export interface RunSubmissionBinding {
6
+ v: 1;
7
+ space: string;
8
+ endpoint: string;
9
+ caller: EpCaller;
10
+ submissionId: string;
11
+ fingerprint: string;
12
+ instanceId: string;
13
+ processEpoch: number;
14
+ runId: string;
15
+ admissionDigest: string;
16
+ /** Wall-clock projection of the binding callback's window, in epoch milliseconds. A record
17
+ * only: no host enforces a deadline or recovers anything from it. */
18
+ callbackDeadline: number;
19
+ }
20
+ export interface RunSubmissionView {
21
+ submissionId: string;
22
+ state: "unbound" | "binding-only" | "admitted" | "activated" | "indeterminate";
23
+ runId?: string;
24
+ fingerprint?: string;
25
+ instanceId: string;
26
+ processEpoch: number;
27
+ callbackDeadline?: number;
28
+ reason?: string;
29
+ }
30
+ /** The largest `deadlineMs` a keyed request may carry. A request budget only: it proves nothing
31
+ * about broker settlement or credential validity. The receiving process measures it on its own
32
+ * monotonic clock, and checks the caller's authority expiry on the wall clock as well. */
33
+ export declare const KEYED_SUBMISSION_MAX_DEADLINE_MS = 30000;
34
+ export declare function runSubmissionKey(endpoint: string, caller: EpCaller, submissionId: string): string;
35
+ export declare function runSubmissionSnapshot(raw: unknown): RunSubmissionBinding;
36
+ /** The admission store is shape-proved at the existing composition bind. Read its leader,
37
+ * never Direct Get. Missing is observation-time absence, not proof the winner cannot write. */
38
+ export declare function readSubmissionRecord(jsm: JetStreamManager, space: string, key: string): Promise<{
39
+ value: unknown;
40
+ revision: number;
41
+ } | undefined>;
42
+ export declare function readRunSubmission(args: {
43
+ jsm: JetStreamManager;
44
+ space: string;
45
+ endpoint: string;
46
+ caller: EpCaller;
47
+ submissionId: string;
48
+ instanceId: string;
49
+ processEpoch: number;
50
+ }): Promise<RunSubmissionView>;
51
+ /** A keyed request's two windows, each read on its own clock in the process that binds.
52
+ * `requestEndsAt` is the `performance.now()` reading at which the request budget ends: it is
53
+ * local to this process, never persisted or sent. `authorityExpiresAt` is the caller authority's
54
+ * wall-clock expiry in epoch milliseconds, checked against `Date.now()`. */
55
+ export interface KeyedSubmissionDeadline {
56
+ readonly requestEndsAt: number;
57
+ readonly authorityExpiresAt?: number;
58
+ }
59
+ /** Initial authorization/evidence validation precedes this call. The original binding winner
60
+ * rechecks that authority before each admission attempt; a failed recheck can retain binding-only
61
+ * debt. Only that winner performs at most3 creates. The bytes/timestamp never change. */
62
+ export declare function bindAndAdmitRunSubmission(args: {
63
+ kv: KV;
64
+ jsm: JetStreamManager;
65
+ admission: RunAdmission;
66
+ submissionId: string;
67
+ fingerprint: string;
68
+ processEpoch: number;
69
+ deadline: KeyedSubmissionDeadline;
70
+ /** Fresh checks may refuse/hold, never replace the original frozen admission bytes. */
71
+ assertCurrent?: () => Promise<void>;
72
+ }): Promise<{
73
+ winner: boolean;
74
+ view: RunSubmissionView;
75
+ admission?: RunAdmission;
76
+ }>;
77
+ export declare function newSubmissionRunId(): string;
78
+ //# sourceMappingURL=run-submission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-submission.d.ts","sourceRoot":"","sources":["../src/run-submission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /** Keyed run identity beside immutable admissions. No read or duplicate repairs a binding. */
2
+ import { randomBytes } from "node:crypto";
3
+ import { canonicalJson, contractDigest, isContractDigest } from "./canonical.js";
4
+ import { EpEnvelopeError } from "./endpoint-error.js";
5
+ import { admissionBucket, admissionKey, admissionSnapshot } from "./run-admission.js";
6
+ import { assertIdToken, endpointToken, isIssuedCaller } from "./endpoint-subjects.js";
7
+ import { callerRailTokens } from "./endpoint-subjects.js";
8
+ /** The largest `deadlineMs` a keyed request may carry. A request budget only: it proves nothing
9
+ * about broker settlement or credential validity. The receiving process measures it on its own
10
+ * monotonic clock, and checks the caller's authority expiry on the wall clock as well. */
11
+ export const KEYED_SUBMISSION_MAX_DEADLINE_MS = 30_000;
12
+ const enc = new TextEncoder(), dec = new TextDecoder("utf-8", { fatal: true });
13
+ const refuse = (message) => { throw new EpEnvelopeError("failed-precondition", message); };
14
+ export function runSubmissionKey(endpoint, caller, submissionId) {
15
+ if (!isIssuedCaller(caller))
16
+ return refuse("keyed runs require issued caller authority");
17
+ callerRailTokens(caller);
18
+ assertIdToken(submissionId, "submissionId");
19
+ // Generation is stored and checked, not part of the incarnation's permanent key.
20
+ const namespace = contractDigest([caller.owner, caller.actor, caller.uid]).slice(7);
21
+ return `submission.v1.${endpointToken(endpoint)}.${namespace}.${submissionId}`;
22
+ }
23
+ export function runSubmissionSnapshot(raw) {
24
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
25
+ return refuse("invalid run submission binding");
26
+ const o = raw;
27
+ const fields = ["v", "space", "endpoint", "caller", "submissionId", "fingerprint", "instanceId", "processEpoch", "runId", "admissionDigest", "callbackDeadline"];
28
+ if (Object.keys(o).length !== fields.length || fields.some(k => !Object.hasOwn(o, k)) || o.v !== 1
29
+ || typeof o.space !== "string" || typeof o.endpoint !== "string" || typeof o.submissionId !== "string"
30
+ || typeof o.instanceId !== "string" || typeof o.runId !== "string" || !/^run-[a-f0-9]{32}$/.test(o.runId)
31
+ || typeof o.fingerprint !== "string" || !isContractDigest(o.fingerprint)
32
+ || typeof o.admissionDigest !== "string" || !isContractDigest(o.admissionDigest)
33
+ || !Number.isSafeInteger(o.processEpoch) || o.processEpoch < 0
34
+ || !Number.isSafeInteger(o.callbackDeadline) || o.callbackDeadline <= 0)
35
+ return refuse("invalid closed run submission binding");
36
+ const c = o.caller;
37
+ if (!c || Object.keys(c).sort().join(",") !== "actor,generation,owner,uid" || !isIssuedCaller(c))
38
+ return refuse("invalid submission caller");
39
+ runSubmissionKey(o.endpoint, c, o.submissionId);
40
+ return structuredClone(o);
41
+ }
42
+ /** The admission store is shape-proved at the existing composition bind. Read its leader,
43
+ * never Direct Get. Missing is observation-time absence, not proof the winner cannot write. */
44
+ export async function readSubmissionRecord(jsm, space, key) {
45
+ const bucket = admissionBucket(space);
46
+ let m;
47
+ try {
48
+ m = await jsm.streams.getMessage(`KV_${bucket}`, { last_by_subj: `$KV.${bucket}.${key}` });
49
+ }
50
+ catch (e) {
51
+ if (e.code === 10037)
52
+ return undefined;
53
+ throw e;
54
+ }
55
+ if (!m)
56
+ return undefined;
57
+ if (m.header?.get("KV-Operation"))
58
+ return refuse("submission authority carries a deletion marker");
59
+ return { value: JSON.parse(dec.decode(m.data)), revision: m.seq };
60
+ }
61
+ export async function readRunSubmission(args) {
62
+ const entry = await readSubmissionRecord(args.jsm, args.space, runSubmissionKey(args.endpoint, args.caller, args.submissionId));
63
+ const base = { submissionId: args.submissionId, instanceId: args.instanceId, processEpoch: args.processEpoch };
64
+ if (!entry)
65
+ return { ...base, state: "unbound", reason: "observation-time absence only; retain the original submission" };
66
+ const b = runSubmissionSnapshot(entry.value);
67
+ if (b.space !== args.space || b.endpoint !== args.endpoint || b.submissionId !== args.submissionId
68
+ || canonicalJson(b.caller) !== canonicalJson(args.caller) || b.instanceId !== args.instanceId || b.processEpoch !== args.processEpoch)
69
+ return refuse("run submission belongs to another caller generation or manager incarnation");
70
+ const bound = { ...base, runId: b.runId, fingerprint: b.fingerprint, callbackDeadline: b.callbackDeadline };
71
+ let admitted;
72
+ try {
73
+ admitted = await readSubmissionRecord(args.jsm, args.space, admissionKey(args.endpoint, b.runId));
74
+ }
75
+ catch {
76
+ return { ...bound, state: "indeterminate", reason: "the original admission could not be read" };
77
+ }
78
+ if (!admitted)
79
+ return { ...bound, state: "binding-only", reason: "reconcile-held; no later callback may repair; admission absence is observation-time only" };
80
+ if (contractDigest(admissionSnapshot(admitted.value)) !== b.admissionDigest)
81
+ return refuse("run submission admission diverges from its immutable snapshot");
82
+ return { ...bound, state: "admitted" };
83
+ }
84
+ const remainingMs = (d) => Math.min(d.requestEndsAt - performance.now(), d.authorityExpiresAt === undefined ? Infinity : d.authorityExpiresAt - Date.now());
85
+ const transient = (e) => ["TIMEOUT", "503", "408", "unavailable", "timeout", "deadline-exceeded"].includes(String(e?.code));
86
+ async function beforeDeadline(deadline, work) {
87
+ // Bounds the await and later attempt starts, not an already-issued broker effect. A timed-out
88
+ // publish can still land with the original frozen bytes. Its reservation remains held.
89
+ const ms = remainingMs(deadline);
90
+ if (ms <= 0)
91
+ throw new EpEnvelopeError("deadline-exceeded", "original keyed callback deadline elapsed; retain its binding");
92
+ let timer;
93
+ try {
94
+ return await Promise.race([work(), new Promise((_, reject) => { timer = setTimeout(() => reject(new EpEnvelopeError("deadline-exceeded", "keyed admission outcome is unknown at its original deadline")), ms); })]);
95
+ }
96
+ finally {
97
+ clearTimeout(timer);
98
+ }
99
+ }
100
+ /** Initial authorization/evidence validation precedes this call. The original binding winner
101
+ * rechecks that authority before each admission attempt; a failed recheck can retain binding-only
102
+ * debt. Only that winner performs at most3 creates. The bytes/timestamp never change. */
103
+ export async function bindAndAdmitRunSubmission(args) {
104
+ const d = args.deadline;
105
+ if (!d || !Number.isFinite(d.requestEndsAt) || (d.authorityExpiresAt !== undefined && !Number.isFinite(d.authorityExpiresAt)))
106
+ throw new EpEnvelopeError("bad-request", "keyed deadline needs a finite request end and a finite authority expiry");
107
+ const deadline = Object.freeze({ requestEndsAt: d.requestEndsAt,
108
+ ...(d.authorityExpiresAt !== undefined ? { authorityExpiresAt: d.authorityExpiresAt } : {}) });
109
+ if (deadline.requestEndsAt - performance.now() > KEYED_SUBMISSION_MAX_DEADLINE_MS)
110
+ throw new EpEnvelopeError("bad-request", `keyed request window exceeds the ${KEYED_SUBMISSION_MAX_DEADLINE_MS}ms request budget`);
111
+ // The binding records a wall-clock projection of the window, rounded down so it never names a
112
+ // later instant than the one enforced here. Nothing enforces or recovers from the record.
113
+ const callbackDeadline = Math.floor(Date.now() + remainingMs(deadline));
114
+ const a = admissionSnapshot(args.admission), binding = runSubmissionSnapshot({ v: 1, space: a.space, endpoint: a.endpoint,
115
+ caller: a.caller, submissionId: args.submissionId, fingerprint: args.fingerprint, instanceId: a.instanceId,
116
+ processEpoch: args.processEpoch, runId: a.runId, admissionDigest: contractDigest(a), callbackDeadline });
117
+ const key = runSubmissionKey(a.endpoint, a.caller, args.submissionId), bytes = enc.encode(canonicalJson(a));
118
+ const read = () => readRunSubmission({ ...binding, jsm: args.jsm });
119
+ let winner = false;
120
+ if (args.assertCurrent)
121
+ await beforeDeadline(deadline, args.assertCurrent);
122
+ try {
123
+ await beforeDeadline(deadline, () => args.kv.put(key, enc.encode(canonicalJson(binding)), { previousSeq: 0 }));
124
+ winner = true;
125
+ }
126
+ catch (error) {
127
+ // First-wins/per-subject-limit and unknown create outcomes all classify by exact leader read.
128
+ const found = await beforeDeadline(deadline, () => readSubmissionRecord(args.jsm, a.space, key));
129
+ if (!found)
130
+ throw error;
131
+ const prior = runSubmissionSnapshot(found.value);
132
+ if (prior.fingerprint !== binding.fingerprint)
133
+ throw new EpEnvelopeError("conflict", "submission id is already bound to another semantic fingerprint");
134
+ // Even exact bytes after a lost binding-create reply do not prove THIS callback won.
135
+ return { winner: false, view: await beforeDeadline(deadline, read) };
136
+ }
137
+ for (let attempt = 0; attempt < 3; attempt++) {
138
+ if (args.assertCurrent)
139
+ await beforeDeadline(deadline, args.assertCurrent);
140
+ try {
141
+ await beforeDeadline(deadline, () => args.kv.put(admissionKey(a.endpoint, a.runId), bytes, { previousSeq: 0 }));
142
+ return { winner, view: await beforeDeadline(deadline, read), admission: a };
143
+ }
144
+ catch (error) {
145
+ const found = await beforeDeadline(deadline, () => readSubmissionRecord(args.jsm, a.space, admissionKey(a.endpoint, a.runId)));
146
+ if (found) {
147
+ if (canonicalJson(admissionSnapshot(found.value)) !== canonicalJson(a))
148
+ return refuse("keyed admission conflicts with the original frozen bytes");
149
+ return { winner, view: await beforeDeadline(deadline, read), admission: a };
150
+ }
151
+ if (!transient(error) || attempt === 2 || remainingMs(deadline) <= 0)
152
+ throw error;
153
+ }
154
+ }
155
+ return refuse("keyed admission remains reconcile-held");
156
+ }
157
+ export function newSubmissionRunId() { return `run-${randomBytes(16).toString("hex")}`; }
158
+ //# sourceMappingURL=run-submission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-submission.js","sourceRoot":"","sources":["../src/run-submission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /** Whether `key` is an encoded curve public key: `X`, 55 more base32 characters and a valid
2
+ * checksum. */
3
+ export declare function isCurvePublicKey(key: string): boolean;
4
+ /** Seal `value`, as JSON, to the curve key `recipient` under a one-time sender key. `sealed` is
5
+ * base64url. Throws for a recipient that is not a curve public key. */
6
+ export declare function sealJson(value: unknown, recipient: string): {
7
+ sealer: string;
8
+ sealed: string;
9
+ };
10
+ /** A one-time curve key for receiving one sealed reply. It opens at most once and is cleared
11
+ * then, or by {@link SealRecipient.clear}. */
12
+ export declare class SealRecipient {
13
+ readonly publicKey: string;
14
+ private key;
15
+ constructor();
16
+ /** The JSON value `sealer` sealed to this key, or undefined when the bytes do not open or are
17
+ * not JSON, or this key was already used or cleared. */
18
+ openJson(sealed: string, sealer: string): unknown;
19
+ clear(): void;
20
+ }
21
+ //# sourceMappingURL=sealed-reply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sealed-reply.d.ts","sourceRoot":"","sources":["../src/sealed-reply.ts"],"names":[],"mappings":"AAgBA;gBACgB;AAChB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED;wEACwE;AACxE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAS9F;AAED;+CAC+C;AAC/C,qBAAa,aAAa;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAsB;;IAOjC;6DACyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAcjD,KAAK,IAAI,IAAI;CAId"}