@cotal-ai/core 0.12.0 → 0.13.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 (152) hide show
  1. package/dist/acls.d.ts +31 -7
  2. package/dist/acls.d.ts.map +1 -1
  3. package/dist/acls.js +105 -17
  4. package/dist/acls.js.map +1 -1
  5. package/dist/agent-file.js +1 -1
  6. package/dist/agent-file.js.map +1 -1
  7. package/dist/auth-provider.d.ts +8 -0
  8. package/dist/auth-provider.d.ts.map +1 -1
  9. package/dist/auth-provider.js.map +1 -1
  10. package/dist/backup.d.ts.map +1 -1
  11. package/dist/backup.js +6 -4
  12. package/dist/backup.js.map +1 -1
  13. package/dist/broker-floor.d.ts +34 -0
  14. package/dist/broker-floor.d.ts.map +1 -0
  15. package/dist/broker-floor.js +39 -0
  16. package/dist/broker-floor.js.map +1 -0
  17. package/dist/canonical.d.ts +24 -0
  18. package/dist/canonical.d.ts.map +1 -0
  19. package/dist/canonical.js +159 -0
  20. package/dist/canonical.js.map +1 -0
  21. package/dist/connector.d.ts +4 -0
  22. package/dist/connector.d.ts.map +1 -1
  23. package/dist/endpoint-action.d.ts +424 -0
  24. package/dist/endpoint-action.d.ts.map +1 -0
  25. package/dist/endpoint-action.js +910 -0
  26. package/dist/endpoint-action.js.map +1 -0
  27. package/dist/endpoint-binding.d.ts +344 -0
  28. package/dist/endpoint-binding.d.ts.map +1 -0
  29. package/dist/endpoint-binding.js +753 -0
  30. package/dist/endpoint-binding.js.map +1 -0
  31. package/dist/endpoint-checkpoint.d.ts +292 -0
  32. package/dist/endpoint-checkpoint.d.ts.map +1 -0
  33. package/dist/endpoint-checkpoint.js +818 -0
  34. package/dist/endpoint-checkpoint.js.map +1 -0
  35. package/dist/endpoint-cluster.d.ts +95 -0
  36. package/dist/endpoint-cluster.d.ts.map +1 -0
  37. package/dist/endpoint-cluster.js +194 -0
  38. package/dist/endpoint-cluster.js.map +1 -0
  39. package/dist/endpoint-contract-store.d.ts +90 -0
  40. package/dist/endpoint-contract-store.d.ts.map +1 -0
  41. package/dist/endpoint-contract-store.js +348 -0
  42. package/dist/endpoint-contract-store.js.map +1 -0
  43. package/dist/endpoint-envelope.d.ts +165 -0
  44. package/dist/endpoint-envelope.d.ts.map +1 -0
  45. package/dist/endpoint-envelope.js +346 -0
  46. package/dist/endpoint-envelope.js.map +1 -0
  47. package/dist/endpoint-grants.d.ts +123 -0
  48. package/dist/endpoint-grants.d.ts.map +1 -0
  49. package/dist/endpoint-grants.js +215 -0
  50. package/dist/endpoint-grants.js.map +1 -0
  51. package/dist/endpoint-guard.d.ts +222 -0
  52. package/dist/endpoint-guard.d.ts.map +1 -0
  53. package/dist/endpoint-guard.js +468 -0
  54. package/dist/endpoint-guard.js.map +1 -0
  55. package/dist/endpoint-handle.d.ts +176 -0
  56. package/dist/endpoint-handle.d.ts.map +1 -0
  57. package/dist/endpoint-handle.js +608 -0
  58. package/dist/endpoint-handle.js.map +1 -0
  59. package/dist/endpoint-journal.d.ts +225 -0
  60. package/dist/endpoint-journal.d.ts.map +1 -0
  61. package/dist/endpoint-journal.js +431 -0
  62. package/dist/endpoint-journal.js.map +1 -0
  63. package/dist/endpoint-receipt.d.ts +225 -0
  64. package/dist/endpoint-receipt.d.ts.map +1 -0
  65. package/dist/endpoint-receipt.js +417 -0
  66. package/dist/endpoint-receipt.js.map +1 -0
  67. package/dist/endpoint-records.d.ts +243 -0
  68. package/dist/endpoint-records.d.ts.map +1 -0
  69. package/dist/endpoint-records.js +591 -0
  70. package/dist/endpoint-records.js.map +1 -0
  71. package/dist/endpoint-serve.d.ts +176 -0
  72. package/dist/endpoint-serve.d.ts.map +1 -0
  73. package/dist/endpoint-serve.js +446 -0
  74. package/dist/endpoint-serve.js.map +1 -0
  75. package/dist/endpoint-service.d.ts +518 -0
  76. package/dist/endpoint-service.d.ts.map +1 -0
  77. package/dist/endpoint-service.js +973 -0
  78. package/dist/endpoint-service.js.map +1 -0
  79. package/dist/endpoint-session.d.ts +398 -0
  80. package/dist/endpoint-session.d.ts.map +1 -0
  81. package/dist/endpoint-session.js +834 -0
  82. package/dist/endpoint-session.js.map +1 -0
  83. package/dist/endpoint-signing.d.ts +105 -0
  84. package/dist/endpoint-signing.d.ts.map +1 -0
  85. package/dist/endpoint-signing.js +190 -0
  86. package/dist/endpoint-signing.js.map +1 -0
  87. package/dist/endpoint-subjects.d.ts +222 -0
  88. package/dist/endpoint-subjects.d.ts.map +1 -0
  89. package/dist/endpoint-subjects.js +381 -0
  90. package/dist/endpoint-subjects.js.map +1 -0
  91. package/dist/endpoint-supervisor.d.ts +19 -0
  92. package/dist/endpoint-supervisor.d.ts.map +1 -0
  93. package/dist/endpoint-supervisor.js +12 -0
  94. package/dist/endpoint-supervisor.js.map +1 -0
  95. package/dist/endpoint-traits.d.ts +225 -0
  96. package/dist/endpoint-traits.d.ts.map +1 -0
  97. package/dist/endpoint-traits.js +469 -0
  98. package/dist/endpoint-traits.js.map +1 -0
  99. package/dist/endpoint-verbs.d.ts +277 -0
  100. package/dist/endpoint-verbs.d.ts.map +1 -0
  101. package/dist/endpoint-verbs.js +576 -0
  102. package/dist/endpoint-verbs.js.map +1 -0
  103. package/dist/endpoint-virtual.d.ts +308 -0
  104. package/dist/endpoint-virtual.d.ts.map +1 -0
  105. package/dist/endpoint-virtual.js +440 -0
  106. package/dist/endpoint-virtual.js.map +1 -0
  107. package/dist/endpoint-work.d.ts +304 -0
  108. package/dist/endpoint-work.d.ts.map +1 -0
  109. package/dist/endpoint-work.js +728 -0
  110. package/dist/endpoint-work.js.map +1 -0
  111. package/dist/endpoint.d.ts +66 -22
  112. package/dist/endpoint.d.ts.map +1 -1
  113. package/dist/endpoint.js +289 -89
  114. package/dist/endpoint.js.map +1 -1
  115. package/dist/evict.d.ts +95 -32
  116. package/dist/evict.d.ts.map +1 -1
  117. package/dist/evict.js +193 -3
  118. package/dist/evict.js.map +1 -1
  119. package/dist/index.d.ts +25 -0
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +25 -0
  122. package/dist/index.js.map +1 -1
  123. package/dist/lease.d.ts +4 -0
  124. package/dist/lease.d.ts.map +1 -1
  125. package/dist/lease.js.map +1 -1
  126. package/dist/members.d.ts +4 -4
  127. package/dist/members.d.ts.map +1 -1
  128. package/dist/members.js +12 -12
  129. package/dist/members.js.map +1 -1
  130. package/dist/provision.d.ts +70 -18
  131. package/dist/provision.d.ts.map +1 -1
  132. package/dist/provision.js +194 -33
  133. package/dist/provision.js.map +1 -1
  134. package/dist/safe-pattern.d.ts +33 -0
  135. package/dist/safe-pattern.d.ts.map +1 -0
  136. package/dist/safe-pattern.js +486 -0
  137. package/dist/safe-pattern.js.map +1 -0
  138. package/dist/schema-profile.d.ts +93 -0
  139. package/dist/schema-profile.d.ts.map +1 -0
  140. package/dist/schema-profile.js +284 -0
  141. package/dist/schema-profile.js.map +1 -0
  142. package/dist/streams.d.ts +13 -8
  143. package/dist/streams.d.ts.map +1 -1
  144. package/dist/streams.js +35 -18
  145. package/dist/streams.js.map +1 -1
  146. package/dist/subjects.d.ts +100 -40
  147. package/dist/subjects.d.ts.map +1 -1
  148. package/dist/subjects.js +136 -60
  149. package/dist/subjects.js.map +1 -1
  150. package/dist/types.d.ts +9 -0
  151. package/dist/types.d.ts.map +1 -1
  152. package/package.json +3 -1
@@ -0,0 +1,225 @@
1
+ import { type NatsConnection } from "@nats-io/transport-node";
2
+ import { type EpCaller } from "./endpoint-subjects.js";
3
+ import { type AcceptanceFact } from "./endpoint-journal.js";
4
+ import { type AnchorResolver } from "./endpoint-signing.js";
5
+ /** A trusted, space-bonded receipt-store context: an OPAQUE token carrying only the space. Its
6
+ * JS + JSM resources DERIVE from one binding-layer connection by the constructor and are held
7
+ * in a module-private WeakMap keyed by this token, NEVER as reachable properties (distsys
8
+ * c50817d MEDIUM): a caller holding the context cannot rebind its broker to split the publish
9
+ * from the lost-CAS winner read. Every store seam takes this context. */
10
+ export interface ReceiptStoreContext {
11
+ readonly space: string;
12
+ }
13
+ /** Bond the resources to one space by CONSTRUCTION (frozen token + WeakMap-private resources,
14
+ * same discipline as the other store contexts): a hand-assembled structural look-alike is
15
+ * rejected at every seam, and the broker cannot be rebound out from under a live operation. */
16
+ export declare function receiptStoreContext(nc: NatsConnection, space: string): Promise<ReceiptStoreContext>;
17
+ /** Prove a context is store-branded (minted by {@link receiptStoreContext}) without touching the
18
+ * broker: emission wiring is validated at seam ENTRY, so a hand-assembled store bundle refuses
19
+ * BEFORE any terminal is committed against it, never as a post-commit emission failure. */
20
+ export declare function assertReceiptStoreContext(ctx: ReceiptStoreContext): void;
21
+ /** Prove the store derives from EXACTLY this binding-layer connection (§13.4: "JS + JSM derive
22
+ * from ONE connection by construction"): a same-space store built over a DIFFERENT connection
23
+ * or broker passes any string-space compare, yet its publishes and lost-CAS winner reads land
24
+ * on ANOTHER broker's streams - splicing one operation's authority across brokers. The bond is
25
+ * connection IDENTITY, never a name. */
26
+ export declare function assertReceiptStoreConnection(ctx: ReceiptStoreContext, nc: unknown): void;
27
+ /** One receipt's coordinates: the accepted execution's identity (§13.2). The subject caller is
28
+ * the TRIPLE; the artifact's `caller` evidence carries `{id, lifecycleUid}`. */
29
+ export interface ReceiptRef {
30
+ endpoint: string;
31
+ caller: EpCaller;
32
+ requestId: string;
33
+ /** The accepted submission's stream sequence — the execution identity (§13.2/§13.10). */
34
+ sourceSeq: number;
35
+ }
36
+ /** The normative §13.10 Receipt artifact. */
37
+ export interface Receipt {
38
+ v: 1;
39
+ requestId: string;
40
+ sourceSeq: number;
41
+ space: string;
42
+ endpoint: string;
43
+ command: string;
44
+ /** The EMITTING instance, recorded as EVIDENCE of who produced this attestation (a
45
+ * post-crash reconciler records ITSELF here) - never proof of who executed the goal, and
46
+ * never redemption authority. The executed outcome's authority is the committed terminal. */
47
+ instance: {
48
+ id: string;
49
+ instanceId: string;
50
+ epoch: number;
51
+ };
52
+ caller: {
53
+ id: string;
54
+ lifecycleUid: string;
55
+ };
56
+ schemaDigests: {
57
+ input: string;
58
+ output: string;
59
+ };
60
+ argsDigest: string;
61
+ outcome: {
62
+ ok: boolean;
63
+ code?: string;
64
+ };
65
+ resultDigest?: string;
66
+ ts: number;
67
+ signer: {
68
+ keyId: string;
69
+ };
70
+ sig: string;
71
+ }
72
+ /** The receipt-fact subject (`epf.<e>.receipt.<cO>.<cA>.<cUid>.<id>.<sourceSeq>`, §13.2). */
73
+ export declare function receiptSubject(space: string, ref: ReceiptRef): string;
74
+ /** Build and SIGN a receipt from the raw execution evidence: the digests are computed HERE from
75
+ * the actual args/result (single source — an emitted digest can never mismatch what was
76
+ * digested), the outcome is closed, and the artifact signs D28 over its canonical form. */
77
+ export declare function mintReceipt(args: {
78
+ ref: ReceiptRef;
79
+ space: string;
80
+ command: string;
81
+ instance: {
82
+ id: string;
83
+ instanceId: string;
84
+ epoch: number;
85
+ };
86
+ /** The caller's lifecycle evidence (`id` is the principal id, distinct from the request id). */
87
+ caller: {
88
+ id: string;
89
+ lifecycleUid: string;
90
+ };
91
+ schemaDigests: {
92
+ input: string;
93
+ output: string;
94
+ };
95
+ /** The accepted submission's raw args (digested here; `undefined` digests as null). */
96
+ args: unknown;
97
+ outcome: {
98
+ ok: boolean;
99
+ code?: string;
100
+ };
101
+ /** The raw result, when one exists (digested here). MUTUALLY EXCLUSIVE with `resultDigest`. */
102
+ result?: unknown;
103
+ /** A pre-committed result digest, taken VERBATIM (the fact-derived path binds the terminal's
104
+ * OWN `outcomeDigest`, never re-digesting a substitute payload). Mutually exclusive with
105
+ * `result`. */
106
+ resultDigest?: string;
107
+ ts: number;
108
+ signer: {
109
+ keyId: string;
110
+ };
111
+ }, keyPair: {
112
+ sign(input: Uint8Array): Uint8Array;
113
+ }): Receipt;
114
+ /** A receipt's OUTCOME, derived from the authoritative committed terminal (never a caller's free
115
+ * claim): `ok` + optional catalog `code`, and the terminal's own `resultDigest` (already the
116
+ * digest the terminal fact committed — a receipt re-attests it, it never re-digests a different
117
+ * payload). {@link receiptOutcomeOfGoal} maps an action goal's terminal state onto this shape. */
118
+ export interface ReceiptOutcome {
119
+ ok: boolean;
120
+ code?: string;
121
+ resultDigest?: string;
122
+ }
123
+ /** Map an action goal's committed terminal (`state` + its `outcomeDigest`) onto the receipt
124
+ * outcome: only `succeeded` is `ok`; every other terminal state IS its own catalog code, so a
125
+ * receipt's `outcome.code` can never disagree with the committed goal state. The digest is the
126
+ * terminal fact's OWN `outcomeDigest` (the receipt attests the committed value, never re-digests
127
+ * a substitute). Kept generic (state + digest, not the GoalResultFact type) so the receipt
128
+ * module stays free of an action-composite dependency. */
129
+ export declare function receiptOutcomeOfGoal(state: string, outcomeDigest: string): ReceiptOutcome;
130
+ /** Build and sign a receipt whose EVERY attestation field is DERIVED from the two authoritative
131
+ * facts, never a caller's free parameter (distsys CF-1: an emitted receipt can no longer attest
132
+ * an outcome or identity that disagrees with the committed record). Identity (requestId,
133
+ * sourceSeq, caller, endpoint, command, schema digests, argsDigest) comes from the ACCEPTANCE
134
+ * fact; the outcome (ok/code/resultDigest) comes from the committed TERMINAL. The only inputs
135
+ * the caller supplies are the executing-instance EVIDENCE, the wall clock, the signer id, and
136
+ * the key. A receipt minted here is reconstructable from the two facts, so a crash between
137
+ * effect and emission is repaired by re-minting from the same facts (idempotent publish). */
138
+ export declare function mintReceiptFromFacts(args: {
139
+ acceptance: AcceptanceFact;
140
+ /** The caller triple from the acceptance's BROKER-AUTHENTICATED decision subject (§13.2):
141
+ * the authoritative owner/actor/uid, cross-checked against the fact body here so a receipt
142
+ * can never be subjected to a caller its acceptance body does not name. */
143
+ caller: EpCaller;
144
+ space: string;
145
+ /** The committed terminal outcome (from the authoritative terminal fact, via
146
+ * {@link receiptOutcomeOfGoal} for goals, or a journaled command's own committed result). */
147
+ terminal: ReceiptOutcome;
148
+ /** The EMITTING instance, recorded as EVIDENCE of who produced this attestation (a
149
+ * post-crash reconciler records ITSELF here) - never proof of who executed the goal, and
150
+ * never redemption authority. The executed outcome's authority is the committed terminal. */
151
+ instance: {
152
+ id: string;
153
+ instanceId: string;
154
+ epoch: number;
155
+ };
156
+ ts: number;
157
+ signer: {
158
+ keyId: string;
159
+ };
160
+ }, keyPair: {
161
+ sign(input: Uint8Array): Uint8Array;
162
+ }): Receipt;
163
+ /** Prove a RECORDED receipt attests the same facts as a freshly fact-derived candidate: every
164
+ * attestation field (identity + outcome) must agree; only the emission evidence (instance, ts,
165
+ * signer, sig) may differ, because two legitimate emitters — the inline commit path and the
166
+ * reconciler — mint from the SAME facts at different moments. First-recorded-wins is the §13.10
167
+ * rule; a recorded receipt that DISAGREES with the facts is exactly the forged-attestation class
168
+ * CF-1 closes and is a loud `conflict`, never silently adopted. */
169
+ export declare function assertReceiptAttestsSameFacts(recorded: Receipt, candidate: Receipt): void;
170
+ /** Closed shape validation, IDENTITY-BOUND to the ref/subject it was read for (§13.4/§13.10):
171
+ * a mis-subjected, cross-request, cross-caller, or garbled receipt never attests. The
172
+ * artifact's caller EVIDENCE must name the subject's caller triple — a receipt whose body
173
+ * names a different principal than its execution-scoped subject is forged attribution. */
174
+ export declare function parseReceipt(raw: unknown, ref: ReceiptRef, space: string): Receipt;
175
+ /** Publish a receipt create-only on its execution-scoped subject, with EXPLICIT subject
176
+ * coordinates (the artifact's caller evidence carries `{id, lifecycleUid}`, not the subject
177
+ * triple, and a publisher never derives one by guessing). The receipt is SNAPSHOTTED to a
178
+ * detached canonical candidate at entry: the identity binding ({@link parseReceipt}), the
179
+ * published bytes, the lost-CAS winner comparison, and the returned value are all EXACTLY
180
+ * that candidate — a caller mutating the receipt across the publish await can neither change
181
+ * what is stored nor smuggle a "winner" past the equality proof. A lost CAS reads the winner
182
+ * through the SAME bonded context and PROVES canonical identity — a DIFFERENT receipt already
183
+ * on the subject is a loud `conflict` (one execution, one receipt, forever), never adopted. */
184
+ export declare function publishReceipt(ctx: ReceiptStoreContext, ref: ReceiptRef, receipt: Receipt): Promise<{
185
+ won: boolean;
186
+ receipt: Receipt;
187
+ }>;
188
+ /** Read the execution's recorded receipt (`undefined` = none emitted yet), identity-bound. */
189
+ export declare function readReceipt(ctx: ReceiptStoreContext, ref: ReceiptRef): Promise<Receipt | undefined>;
190
+ /** VERIFY a receipt (§13.10, fail loud, UNCONDITIONAL): D28 signature over the EXACT RAW
191
+ * artifact against the FRESH-resolved anchor PLUS digest recomputation — both mandatory
192
+ * ("signature against the anchor registry + digest recomputation", §13.10). The raw args
193
+ * evidence is REQUIRED (undefined digests as null); the raw result evidence is REQUIRED
194
+ * exactly when the receipt carries a resultDigest (a receipt attesting a result is only
195
+ * verified against that result), and FORBIDDEN when it does not (a receipt with no
196
+ * resultDigest cannot attest a presented result). The evidence is read ONCE and its digests
197
+ * are computed at ENTRY, then compared BEFORE the anchor await — mutating the presented proof
198
+ * values mid-verification changes nothing. A reader without raw evidence uses the explicitly
199
+ * weaker {@link verifyReceiptSignature}. Returns the parsed receipt. */
200
+ export declare function verifyReceipt(raw: unknown, opts: {
201
+ ref: ReceiptRef;
202
+ space: string;
203
+ resolveAnchor: AnchorResolver;
204
+ /** The raw evidence to recompute against (MANDATORY, §13.10). `args` uses the
205
+ * undefined→null rule; `result` is present exactly when the receipt digested one. */
206
+ recompute: {
207
+ args: unknown;
208
+ result?: unknown;
209
+ };
210
+ /** Budget on the anchor resolution (default 5000ms): a stuck registry is a bounded
211
+ * `unavailable`, never a hung verification. */
212
+ verifyBudgetMs?: number;
213
+ }): Promise<Receipt>;
214
+ /** The deliberately WEAKER, separately named authenticity read: closed identity-bound parse +
215
+ * D28 signature against the fresh-resolved anchor, with NO digest attestation — for a reader
216
+ * that does not hold the raw args/result. This is NOT the §13.10 verification (which is
217
+ * unconditionally signature PLUS digest recomputation, {@link verifyReceipt}); it proves the
218
+ * artifact is authentic and names these coordinates, nothing about what was executed. */
219
+ export declare function verifyReceiptSignature(raw: unknown, opts: {
220
+ ref: ReceiptRef;
221
+ space: string;
222
+ resolveAnchor: AnchorResolver;
223
+ verifyBudgetMs?: number;
224
+ }): Promise<Receipt>;
225
+ //# sourceMappingURL=endpoint-receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-receipt.d.ts","sourceRoot":"","sources":["../src/endpoint-receipt.ts"],"names":[],"mappings":"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"}