@agenticprimitives/fabric 0.0.0-alpha.1 → 0.0.0-alpha.10

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 (147) hide show
  1. package/CLAUDE.md +22 -2
  2. package/README.md +16 -16
  3. package/dist/case-emissions.d.ts +95 -0
  4. package/dist/case-emissions.d.ts.map +1 -0
  5. package/dist/case-emissions.js +208 -0
  6. package/dist/case-emissions.js.map +1 -0
  7. package/dist/case-machine.d.ts +28 -2
  8. package/dist/case-machine.d.ts.map +1 -1
  9. package/dist/case-machine.js +34 -7
  10. package/dist/case-machine.js.map +1 -1
  11. package/dist/cloudflare/index.d.ts +1 -0
  12. package/dist/cloudflare/index.d.ts.map +1 -1
  13. package/dist/cloudflare/index.js +4 -0
  14. package/dist/cloudflare/index.js.map +1 -1
  15. package/dist/cloudflare/interaction-store.d.ts +55 -0
  16. package/dist/cloudflare/interaction-store.d.ts.map +1 -0
  17. package/dist/cloudflare/interaction-store.js +230 -0
  18. package/dist/cloudflare/interaction-store.js.map +1 -0
  19. package/dist/cloudflare/principal-gateway-do.d.ts +118 -2
  20. package/dist/cloudflare/principal-gateway-do.d.ts.map +1 -1
  21. package/dist/cloudflare/principal-gateway-do.js +182 -7
  22. package/dist/cloudflare/principal-gateway-do.js.map +1 -1
  23. package/dist/communicative-act.d.ts +24 -1
  24. package/dist/communicative-act.d.ts.map +1 -1
  25. package/dist/communicative-act.js +28 -0
  26. package/dist/communicative-act.js.map +1 -1
  27. package/dist/delivery-envelope.d.ts.map +1 -1
  28. package/dist/delivery-envelope.js +0 -1
  29. package/dist/delivery-envelope.js.map +1 -1
  30. package/dist/enum-retirement.d.ts +43 -0
  31. package/dist/enum-retirement.d.ts.map +1 -0
  32. package/dist/enum-retirement.js +93 -0
  33. package/dist/enum-retirement.js.map +1 -0
  34. package/dist/exchange-record.d.ts +35 -4
  35. package/dist/exchange-record.d.ts.map +1 -1
  36. package/dist/exchange-record.js.map +1 -1
  37. package/dist/exchange-reducer.d.ts +32 -4
  38. package/dist/exchange-reducer.d.ts.map +1 -1
  39. package/dist/exchange-reducer.js +75 -1
  40. package/dist/exchange-reducer.js.map +1 -1
  41. package/dist/exchange-state.d.ts +30 -8
  42. package/dist/exchange-state.d.ts.map +1 -1
  43. package/dist/exchange-state.js +12 -10
  44. package/dist/exchange-state.js.map +1 -1
  45. package/dist/inbox-doc.d.ts +2 -2
  46. package/dist/inbox-doc.d.ts.map +1 -1
  47. package/dist/inbox-doc.js.map +1 -1
  48. package/dist/inbox-projection.d.ts +2 -2
  49. package/dist/inbox-projection.d.ts.map +1 -1
  50. package/dist/inbox-projection.js.map +1 -1
  51. package/dist/inbox-revision.d.ts +42 -0
  52. package/dist/inbox-revision.d.ts.map +1 -0
  53. package/dist/inbox-revision.js +57 -0
  54. package/dist/inbox-revision.js.map +1 -0
  55. package/dist/index.d.ts +23 -3
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +36 -2
  58. package/dist/index.js.map +1 -1
  59. package/dist/interaction-machines.d.ts +136 -0
  60. package/dist/interaction-machines.d.ts.map +1 -0
  61. package/dist/interaction-machines.js +174 -0
  62. package/dist/interaction-machines.js.map +1 -0
  63. package/dist/interaction-profile.d.ts +126 -0
  64. package/dist/interaction-profile.d.ts.map +1 -0
  65. package/dist/interaction-profile.js +192 -0
  66. package/dist/interaction-profile.js.map +1 -0
  67. package/dist/interaction-record.d.ts +168 -0
  68. package/dist/interaction-record.d.ts.map +1 -0
  69. package/dist/interaction-record.js +108 -0
  70. package/dist/interaction-record.js.map +1 -0
  71. package/dist/interactions/machine.d.ts +2 -2
  72. package/dist/interactions/machine.d.ts.map +1 -1
  73. package/dist/interactions/machine.js +2 -2
  74. package/dist/interactions/machine.js.map +1 -1
  75. package/dist/interactions/store.d.ts +9 -0
  76. package/dist/interactions/store.d.ts.map +1 -1
  77. package/dist/interactions/store.js +57 -2
  78. package/dist/interactions/store.js.map +1 -1
  79. package/dist/messaging/board.d.ts +86 -6
  80. package/dist/messaging/board.d.ts.map +1 -1
  81. package/dist/messaging/board.js +100 -9
  82. package/dist/messaging/board.js.map +1 -1
  83. package/dist/messaging/consult-routing.d.ts +289 -0
  84. package/dist/messaging/consult-routing.d.ts.map +1 -0
  85. package/dist/messaging/consult-routing.js +455 -0
  86. package/dist/messaging/consult-routing.js.map +1 -0
  87. package/dist/messaging/consult.d.ts +158 -0
  88. package/dist/messaging/consult.d.ts.map +1 -0
  89. package/dist/messaging/consult.js +141 -0
  90. package/dist/messaging/consult.js.map +1 -0
  91. package/dist/messaging/conversation-interaction.d.ts +66 -0
  92. package/dist/messaging/conversation-interaction.d.ts.map +1 -0
  93. package/dist/messaging/conversation-interaction.js +139 -0
  94. package/dist/messaging/conversation-interaction.js.map +1 -0
  95. package/dist/messaging/delivery.d.ts +2 -2
  96. package/dist/messaging/delivery.d.ts.map +1 -1
  97. package/dist/messaging/delivery.js +8 -1
  98. package/dist/messaging/delivery.js.map +1 -1
  99. package/dist/messaging/directory.d.ts +16 -0
  100. package/dist/messaging/directory.d.ts.map +1 -1
  101. package/dist/messaging/directory.js.map +1 -1
  102. package/dist/messaging/envelope.d.ts +7 -3
  103. package/dist/messaging/envelope.d.ts.map +1 -1
  104. package/dist/messaging/envelope.js +18 -1
  105. package/dist/messaging/envelope.js.map +1 -1
  106. package/dist/messaging/hash.d.ts +8 -2
  107. package/dist/messaging/hash.d.ts.map +1 -1
  108. package/dist/messaging/hash.js +6 -0
  109. package/dist/messaging/hash.js.map +1 -1
  110. package/dist/messaging/inbox-assistant.d.ts +80 -0
  111. package/dist/messaging/inbox-assistant.d.ts.map +1 -0
  112. package/dist/messaging/inbox-assistant.js +125 -0
  113. package/dist/messaging/inbox-assistant.js.map +1 -0
  114. package/dist/messaging/index.d.ts +9 -3
  115. package/dist/messaging/index.d.ts.map +1 -1
  116. package/dist/messaging/index.js +17 -2
  117. package/dist/messaging/index.js.map +1 -1
  118. package/dist/messaging/projector.d.ts +3 -3
  119. package/dist/messaging/projector.d.ts.map +1 -1
  120. package/dist/messaging/projector.js.map +1 -1
  121. package/dist/messaging/receipts.d.ts +3 -3
  122. package/dist/messaging/receipts.d.ts.map +1 -1
  123. package/dist/messaging/receipts.js.map +1 -1
  124. package/dist/messaging/rules.d.ts +10 -3
  125. package/dist/messaging/rules.d.ts.map +1 -1
  126. package/dist/messaging/rules.js +8 -1
  127. package/dist/messaging/rules.js.map +1 -1
  128. package/dist/messaging/store.d.ts +4 -4
  129. package/dist/messaging/store.d.ts.map +1 -1
  130. package/dist/messaging/store.js +5 -3
  131. package/dist/messaging/store.js.map +1 -1
  132. package/dist/messaging/types.d.ts +52 -0
  133. package/dist/messaging/types.d.ts.map +1 -1
  134. package/dist/messaging/types.js +18 -1
  135. package/dist/messaging/types.js.map +1 -1
  136. package/dist/messaging/vault-store.d.ts +35 -2
  137. package/dist/messaging/vault-store.d.ts.map +1 -1
  138. package/dist/messaging/vault-store.js +53 -5
  139. package/dist/messaging/vault-store.js.map +1 -1
  140. package/dist/protocol-binding.d.ts +71 -0
  141. package/dist/protocol-binding.d.ts.map +1 -0
  142. package/dist/protocol-binding.js +0 -0
  143. package/dist/protocol-binding.js.map +1 -0
  144. package/dist/record-catalog.d.ts.map +1 -1
  145. package/dist/record-catalog.js +19 -0
  146. package/dist/record-catalog.js.map +1 -1
  147. package/package.json +7 -7
@@ -1,11 +1,41 @@
1
1
  import type { CanonicalAgentId, Hex32, SignatureProof } from '@agenticprimitives/types';
2
2
  import type { VaultRef, VaultClassification } from '@agenticprimitives/vault';
3
+ import type { Performative } from '../communicative-act.js';
3
4
  export type { Hex32, SignatureProof };
4
5
  export type MessageId = `msg_${string}`;
5
6
  export type ConversationId = `conv_${string}`;
6
7
  export type ThreadId = `thr_${string}`;
7
8
  export type FolderKind = 'inbox' | 'sent' | 'drafts' | 'archive' | 'trash' | 'pending' | 'custom';
8
9
  export type MessagePriority = 'low' | 'normal' | 'high' | 'urgent';
10
+ /**
11
+ * `ap.message.v2` — the envelope without `kind` (spec 340 W9).
12
+ *
13
+ * WHY A NEW VERSION RATHER THAN AN EDIT. `kind` is inside the signed hash: `hashMessageEnvelope`
14
+ * excludes only `signature`. Dropping the field in place would change every digest and invalidate
15
+ * every existing signature and delivery receipt. So V1 stays exactly as it is, verifies exactly as it
16
+ * did, and V2 is a second shape that new senders emit. Nothing is re-signed and no history is rewritten.
17
+ *
18
+ * `version` is inside the hashed body, so V1 and V2 of otherwise-identical content already produce
19
+ * different digests — the versions are domain-separated for free, and `envelope-v2.test.ts` asserts it
20
+ * rather than assuming it.
21
+ *
22
+ * WHAT V2 CARRIES INSTEAD. `performative` — what the act DOES — natively, which is what `kind` was
23
+ * standing in for. It does NOT yet carry `actor`/`principal` natively; those stay body-adjacent. That
24
+ * was anticipated in `communicative-act.ts` and is a separate concern from removing a frozen taxonomy,
25
+ * so it is not smuggled into this bump.
26
+ *
27
+ * THE TRANSLATION IS ONE-WAY, and that matters. `performativeForKind` is not injective: `plain` and
28
+ * `response` both map to `INFORM`. So V1 → V2 is total, V2 → V1 is not, and any reader that keyed off
29
+ * `kind` must be rewritten in terms of what it actually meant rather than mapped back. See
30
+ * `isOriginalMessage` for the case where that surfaced a latent bug.
31
+ */
32
+ export interface MessageEnvelopeV2 extends Omit<MessageEnvelopeV1, 'version' | 'kind'> {
33
+ version: 'ap.message.v2';
34
+ performative: Performative;
35
+ }
36
+ /** Either wire version. Readers take this; only the hash and the accessors care which it is. */
37
+ export type AnyMessageEnvelope = MessageEnvelopeV1 | MessageEnvelopeV2;
38
+ export declare function isEnvelopeV2(e: AnyMessageEnvelope): e is MessageEnvelopeV2;
9
39
  export type MessageKind = 'plain' | 'request' | 'response' | 'credential-delivery' | 'receipt' | 'system' | 'tombstone';
10
40
  /**
11
41
  * Typed "about-ness" pointer (spec 312 §4.1): binds a message/conversation to
@@ -23,6 +53,15 @@ export interface ContextRefV1 {
23
53
  /** Display-only label; not authoritative, not verified. */
24
54
  label?: string;
25
55
  }
56
+ /** contextRef kind pointing at a coordination Endeavor (spec 334 §9): messages
57
+ * ABOUT an Endeavor carry it; UIs render an endeavor chip deep-linking to the
58
+ * Endeavor detail. Ref id = `<managingPrincipalSA>/<endeavorId>` (same
59
+ * `<owner>/<id>` shape as the discussion-topic chip). A POINTER only — never
60
+ * authority, never a coordination record; finer scopes ('endeavor-step',
61
+ * 'endeavor-decision', 'endeavor-artifact') stay app-defined kinds. */
62
+ export declare const ENDEAVOR_CONTEXT_KIND: "endeavor";
63
+ /** Build the endeavor contextRef: id = `<managingPrincipalSA>/<endeavorId>`. */
64
+ export declare function endeavorContextRef(managingPrincipal: string, endeavorId: string, label?: string): ContextRefV1;
26
65
  export interface MessageAttachmentRef {
27
66
  ref: VaultRef;
28
67
  hash: Hex32;
@@ -62,6 +101,14 @@ export interface MessageEnvelopeV1 {
62
101
  attachments?: MessageAttachmentRef[];
63
102
  /** String ref into an `interactions` case (no import back-edge). */
64
103
  interactionId?: string;
104
+ /** spec 324 §9 acting-agent provenance (spec 328): WHO performed the authoring move when it was
105
+ * not a human session — for a person-assistant auto-reply, the author's OWN SA (CAIP-10).
106
+ * Absent ⇒ human-authored. Unlike the board-entry `actor` (spec 327), this rides the WIRE:
107
+ * the inbox stores envelopes directly and the marker must reach the COUNTERPARTY's store for
108
+ * loop prevention (an assistant never answers an agent-authored message). Display + loop
109
+ * metadata only — NEVER authority (ADR-0041); a sender-claimed `actor` only suppresses
110
+ * auto-replies to that sender and chips their message as agent-sent. */
111
+ actor?: CanonicalAgentId;
65
112
  /** Entities this message is ABOUT (spec 312) — covered by the envelope hash,
66
113
  * so refs are signed with the message. Bounded (≤ 8, enforced). */
67
114
  contextRefs?: ContextRefV1[];
@@ -148,6 +195,11 @@ export interface DiscussionTopicV1 {
148
195
  createdByAgent: CanonicalAgentId;
149
196
  createdAt: string;
150
197
  status: 'open' | 'closed' | 'archived';
198
+ /** apmsg:participationPolicy — who may dialog. `open` (default; absent ⇒ open): every org MEMBER is
199
+ * automatically a PARTICIPANT, derived from OrganizationMembership at read time — never stored per
200
+ * topic. `restricted`: invite-only — participation is asserted via DiscussionInvitation → acceptance →
201
+ * DiscussionParticipation carrying a discussion-scoped RoleAssignment. Orthogonal to `status` (lifecycle). */
202
+ participationPolicy?: 'open' | 'restricted';
151
203
  pinned?: boolean;
152
204
  hidden?: boolean;
153
205
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,22 @@
3
3
  // A message CARRIES a request / evidence / credential reference; a message is
4
4
  // NEVER authority (spec 309 §4.2). Bodies live in the vault — the envelope and
5
5
  // inbox state carry hashes + refs only (spec 309 §4.3).
6
- export {};
6
+ export function isEnvelopeV2(e) {
7
+ return e.version === 'ap.message.v2';
8
+ }
9
+ /** contextRef kind pointing at a coordination Endeavor (spec 334 §9): messages
10
+ * ABOUT an Endeavor carry it; UIs render an endeavor chip deep-linking to the
11
+ * Endeavor detail. Ref id = `<managingPrincipalSA>/<endeavorId>` (same
12
+ * `<owner>/<id>` shape as the discussion-topic chip). A POINTER only — never
13
+ * authority, never a coordination record; finer scopes ('endeavor-step',
14
+ * 'endeavor-decision', 'endeavor-artifact') stay app-defined kinds. */
15
+ export const ENDEAVOR_CONTEXT_KIND = 'endeavor';
16
+ /** Build the endeavor contextRef: id = `<managingPrincipalSA>/<endeavorId>`. */
17
+ export function endeavorContextRef(managingPrincipal, endeavorId, label) {
18
+ return {
19
+ kind: ENDEAVOR_CONTEXT_KIND,
20
+ id: `${managingPrincipal.toLowerCase()}/${endeavorId}`,
21
+ ...(label !== undefined ? { label } : {}),
22
+ };
23
+ }
7
24
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,wDAAwD"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,wDAAwD;AAgDxD,MAAM,UAAU,YAAY,CAAC,CAAqB;IAChD,OAAO,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC;AACvC,CAAC;AA4BD;;;;;wEAKwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAmB,CAAC;AAEzD,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAChC,iBAAyB,EACzB,UAAkB,EAClB,KAAc;IAEd,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,EAAE,EAAE,GAAG,iBAAiB,CAAC,WAAW,EAAE,IAAI,UAAU,EAAE;QACtD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Vault, VaultClassification, VaultRef } from '@agenticprimitives/vault';
2
- import type { MessageEnvelopeV1, MessageId, Hex32 } from './types.js';
2
+ import type { AnyMessageEnvelope, MessageEnvelopeV1, MessageId, Hex32 } from './types.js';
3
3
  export declare const MESSAGE_BODY_RECORD_TYPE = "message.body";
4
4
  export declare const MESSAGE_ATTACHMENT_RECORD_TYPE = "message.attachment";
5
5
  /** 1-1 (DM) body resource — spec 322 W3 namespacing: `message.body:dm:<id>`. Changing THIS
@@ -12,6 +12,39 @@ export declare function messageBodyResource(id: MessageId): string;
12
12
  * `message.body:topic:<conversationId>:<messageId>`. */
13
13
  export declare function topicBodyResource(conversationId: string, id: MessageId): string;
14
14
  export declare function messageAttachmentResource(id: MessageId, index: number): string;
15
+ /**
16
+ * Decode + hash-verify ONE stored body record against its envelope (spec 309 §8.4).
17
+ * Fail-closed: a missing/malformed record or a hash mismatch throws — never partial
18
+ * bytes. This is the SINGLE verification mechanism (ADR-0013) shared by the
19
+ * per-envelope `loadBody` and the batched {@link verifiedBodiesFromBatch}.
20
+ */
21
+ export declare function verifyStoredBody(envelope: Pick<MessageEnvelopeV1, 'id' | 'bodyHash'>, stored: unknown): Promise<Uint8Array>;
22
+ /**
23
+ * Verify a BATCHED body read: `records` maps resource name → stored body record (the
24
+ * vault get-many response); returns verified bytes keyed by MESSAGE id.
25
+ *
26
+ * Why batching exists (2026-07-18 live regression): board reads issued one delegated
27
+ * vault read PER MESSAGE, so a polling Discussions tab scaled O(board size) verified
28
+ * calls against the org principal's rate budget; once the soft limiter tripped, the
29
+ * MEMBER-GATE reads on the same budget were rejected and the board surfaced a raw
30
+ * "auth failed". One get-many round-trip makes the per-poll cost O(1).
31
+ *
32
+ * Fail-closed PER RECORD, matching the per-envelope read's catch-and-omit: a
33
+ * missing/malformed/hash-mismatched body is OMITTED and never fails its siblings.
34
+ */
35
+ export declare function verifiedBodiesFromBatch(envelopes: ReadonlyArray<Pick<MessageEnvelopeV1, 'id' | 'bodyHash' | 'body'>>, records: Record<string, unknown>): Promise<Record<MessageId, Uint8Array>>;
36
+ /**
37
+ * True iff a vault-tool response is a TRANSIENT throughput reject (the runtime's
38
+ * stage-2 soft rate limiter: HTTP 429, or the opaque 401 whose body carries
39
+ * `code: 'rate-limited'`), safe to retry after a short backoff — the runtime rejects
40
+ * rate-limited calls BEFORE the tool handler runs, so a retried call was never
41
+ * executed. NOT a credential failure: surfacing this as "auth failed" was the
42
+ * 2026-07-18 live-regression symptom (a throttled member board rendered a raw
43
+ * auth error instead of retrying).
44
+ */
45
+ export declare function isRetryableVaultToolFailure(status: number, body: {
46
+ code?: unknown;
47
+ } | null | undefined): boolean;
15
48
  export interface PutBodyResult {
16
49
  ref: VaultRef;
17
50
  bodyHash: Hex32;
@@ -31,7 +64,7 @@ export interface MessageBodyStore {
31
64
  * Load the body an envelope references and verify it against `bodyHash`.
32
65
  * Fail-closed: missing record or hash mismatch throws — never partial bytes.
33
66
  */
34
- loadBody(envelope: MessageEnvelopeV1): Promise<Uint8Array>;
67
+ loadBody(envelope: AnyMessageEnvelope): Promise<Uint8Array>;
35
68
  }
36
69
  export declare function createVaultMessageBodyStore(vault: Vault, owner: string): MessageBodyStore;
37
70
  //# sourceMappingURL=vault-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vault-store.d.ts","sourceRoot":"","sources":["../../src/messaging/vault-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGtE,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAEnE;;;;iFAIiF;AACjF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAEzD;AAED;yDACyD;AACzD,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAE/E;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9E;AAqBD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,OAAO,CAAC,IAAI,EAAE;QACZ,SAAS,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,UAAU,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,mBAAmB,CAAC;QACpC,gHAAgH;QAChH,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC5D;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAwBzF"}
1
+ {"version":3,"file":"vault-store.d.ts","sourceRoot":"","sources":["../../src/messaging/vault-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAG1F,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAEnE;;;;iFAIiF;AACjF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAEzD;AAED;yDACyD;AACzD,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAE/E;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9E;AAqBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,UAAU,CAAC,EACpD,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,UAAU,CAAC,CAUrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,EAC7E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAQxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAET;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,OAAO,CAAC,IAAI,EAAE;QACZ,SAAS,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,UAAU,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,mBAAmB,CAAC;QACpC,gHAAgH;QAChH,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAoBzF"}
@@ -34,6 +34,58 @@ function fromBase64(b64) {
34
34
  out[i] = bin.charCodeAt(i);
35
35
  return out;
36
36
  }
37
+ /**
38
+ * Decode + hash-verify ONE stored body record against its envelope (spec 309 §8.4).
39
+ * Fail-closed: a missing/malformed record or a hash mismatch throws — never partial
40
+ * bytes. This is the SINGLE verification mechanism (ADR-0013) shared by the
41
+ * per-envelope `loadBody` and the batched {@link verifiedBodiesFromBatch}.
42
+ */
43
+ export async function verifyStoredBody(envelope, stored) {
44
+ const b64 = stored?.b64;
45
+ if (typeof b64 !== 'string') {
46
+ throw new Error(`message body for ${envelope.id} is missing or malformed`);
47
+ }
48
+ const bytes = fromBase64(b64);
49
+ if ((await sha256Hex32(bytes)) !== envelope.bodyHash) {
50
+ throw new Error(`message body ${envelope.id} does not match envelope bodyHash`);
51
+ }
52
+ return bytes;
53
+ }
54
+ /**
55
+ * Verify a BATCHED body read: `records` maps resource name → stored body record (the
56
+ * vault get-many response); returns verified bytes keyed by MESSAGE id.
57
+ *
58
+ * Why batching exists (2026-07-18 live regression): board reads issued one delegated
59
+ * vault read PER MESSAGE, so a polling Discussions tab scaled O(board size) verified
60
+ * calls against the org principal's rate budget; once the soft limiter tripped, the
61
+ * MEMBER-GATE reads on the same budget were rejected and the board surfaced a raw
62
+ * "auth failed". One get-many round-trip makes the per-poll cost O(1).
63
+ *
64
+ * Fail-closed PER RECORD, matching the per-envelope read's catch-and-omit: a
65
+ * missing/malformed/hash-mismatched body is OMITTED and never fails its siblings.
66
+ */
67
+ export async function verifiedBodiesFromBatch(envelopes, records) {
68
+ const out = {};
69
+ await Promise.all(envelopes.map(async (e) => {
70
+ try {
71
+ out[e.id] = await verifyStoredBody(e, records[e.body.resource]);
72
+ }
73
+ catch { /* fail-closed omit — mirrors loadBody's per-message catch */ }
74
+ }));
75
+ return out;
76
+ }
77
+ /**
78
+ * True iff a vault-tool response is a TRANSIENT throughput reject (the runtime's
79
+ * stage-2 soft rate limiter: HTTP 429, or the opaque 401 whose body carries
80
+ * `code: 'rate-limited'`), safe to retry after a short backoff — the runtime rejects
81
+ * rate-limited calls BEFORE the tool handler runs, so a retried call was never
82
+ * executed. NOT a credential failure: surfacing this as "auth failed" was the
83
+ * 2026-07-18 live-regression symptom (a throttled member board rendered a raw
84
+ * auth error instead of retrying).
85
+ */
86
+ export function isRetryableVaultToolFailure(status, body) {
87
+ return status === 429 || (typeof body === 'object' && body !== null && body.code === 'rate-limited');
88
+ }
37
89
  export function createVaultMessageBodyStore(vault, owner) {
38
90
  return {
39
91
  async putBody({ messageId, bytes, contentType, classification, resource: resourceOverride }) {
@@ -51,11 +103,7 @@ export function createVaultMessageBodyStore(vault, owner) {
51
103
  if (obj === null) {
52
104
  throw new Error(`message body ${envelope.body.resource} not found in vault`);
53
105
  }
54
- const bytes = fromBase64(obj.data.b64);
55
- if ((await sha256Hex32(bytes)) !== envelope.bodyHash) {
56
- throw new Error(`message body ${envelope.id} does not match envelope bodyHash`);
57
- }
58
- return bytes;
106
+ return verifyStoredBody(envelope, obj.data);
59
107
  },
60
108
  };
61
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vault-store.js","sourceRoot":"","sources":["../../src/messaging/vault-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vault-store.js","sourceRoot":"","sources":["../../src/messaging/vault-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { InteractionId } from './interaction-record.js';
2
+ /** Well-known protocol namespaces. Open by design — a new protocol is data, not a code change. */
3
+ export declare const PROTOCOL: {
4
+ readonly a2a: "a2a";
5
+ readonly didcomm: "didcomm";
6
+ readonly matrix: "matrix";
7
+ readonly cloudevents: "cloudevents";
8
+ readonly mcp: "mcp";
9
+ };
10
+ /** The field within that protocol carrying the correlator. Named because `a2a:contextId` and
11
+ * `a2a:taskId` are different foreign keys and conflating them mis-resolves silently. */
12
+ export interface ProtocolBindingV1 {
13
+ protocol: string;
14
+ field: string;
15
+ value: string;
16
+ /** When this correspondence was observed. A binding is a claim about a moment, like every other
17
+ * reference in this model. */
18
+ observedAt: string;
19
+ }
20
+ export declare function looksCanonical(value: string): boolean;
21
+ export type BindingRejection = 'empty-field' | 'canonical-id-as-foreign-key';
22
+ /**
23
+ * Build a binding, refusing the two shapes that mean the namespaces got crossed.
24
+ *
25
+ * Storing one of OUR ids as a foreign key is the more interesting refusal: it usually means a caller
26
+ * round-tripped an id through a protocol adapter and stored the result back, at which point our
27
+ * identity and the peer's are the same string and the distinction this file exists to keep is gone.
28
+ */
29
+ export declare function bindProtocol(input: {
30
+ protocol: string;
31
+ field: string;
32
+ value: string;
33
+ observedAt: string;
34
+ }): {
35
+ ok: true;
36
+ binding: ProtocolBindingV1;
37
+ } | {
38
+ ok: false;
39
+ reason: BindingRejection;
40
+ };
41
+ /** Scoped so that the same value under two protocols never collides. */
42
+ export declare function bindingKey(protocol: string, field: string, value: string): string;
43
+ export type BindingIndex = ReadonlyMap<string, readonly InteractionId[]>;
44
+ export declare function buildBindingIndex(interactions: readonly {
45
+ interactionId: InteractionId;
46
+ bindings: readonly ProtocolBindingV1[];
47
+ }[]): BindingIndex;
48
+ export type BindingResolution = {
49
+ ok: true;
50
+ interactionId: InteractionId;
51
+ } | {
52
+ ok: false;
53
+ reason: 'not-found';
54
+ } | {
55
+ ok: false;
56
+ reason: 'ambiguous';
57
+ candidates: readonly InteractionId[];
58
+ };
59
+ /**
60
+ * Resolve a foreign correlator to OUR id.
61
+ *
62
+ * `not-found` is an answer, not a trigger to search more loosely (ADR-0013). `ambiguous` returns every
63
+ * candidate and resolves nothing: a caller that genuinely knows how to disambiguate can, and one that
64
+ * does not must fail rather than guess. There is deliberately no `resolveOrFirst`.
65
+ */
66
+ export declare function resolveInteractionByBinding(index: BindingIndex, protocol: string, field: string, value: string): BindingResolution;
67
+ export declare function topicInteractionId(channelId: string): InteractionId;
68
+ /** The inverse, or `null` when the id is not a topic interaction. Returning null rather than guessing
69
+ * is what keeps `resolveDerivedParticipation` fail-closed for ids it does not recognize. */
70
+ export declare function channelIdFromTopicInteraction(interactionId: string): string | null;
71
+ //# sourceMappingURL=protocol-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-binding.d.ts","sourceRoot":"","sources":["../src/protocol-binding.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,kGAAkG;AAClG,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX;yFACyF;AACzF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd;mCAC+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAKD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,6BAA6B,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAcrF;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC,CAAC;AAEzE,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,SAAS;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,EAAE,GAChG,YAAY,CAYd;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAKnB;AAWD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAEnE;AAED;6FAC6F;AAC7F,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElF"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-binding.js","sourceRoot":"","sources":["../src/protocol-binding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"record-catalog.d.ts","sourceRoot":"","sources":["../src/record-catalog.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC;mFAC+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wFAAwF;IACxF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,sDAAsD;IACtD,mBAAmB,EAAE,UAAU,GAAG,cAAc,CAAC;IACjD,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAClC;AAED;;;wCAGwC;AACxC,eAAO,MAAM,cAAc,EAAE,SAAS,kBAAkB,EAkB9C,CAAC;AAEX,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAIhF"}
1
+ {"version":3,"file":"record-catalog.d.ts","sourceRoot":"","sources":["../src/record-catalog.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC;mFAC+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wFAAwF;IACxF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,sDAAsD;IACtD,mBAAmB,EAAE,UAAU,GAAG,cAAc,CAAC;IACjD,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAClC;AAED;;;wCAGwC;AACxC,eAAO,MAAM,cAAc,EAAE,SAAS,kBAAkB,EAqC9C,CAAC;AAEX,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAIhF"}
@@ -27,6 +27,25 @@ export const RECORD_CATALOG = [
27
27
  // Org admin (reachable from NO messaging scope)
28
28
  { pattern: 'org.profile', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'internal', owner: 'org' },
29
29
  { pattern: 'org.invite:*', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'confidential', owner: 'org' },
30
+ // Routed consultation (spec 329). The consult GRANT record is a capability (a member-signed
31
+ // delegation wire — delegation-gated residency, never KV; W1 custody note: the wire currently
32
+ // lives in the org's DO grant store, the delegate-service side per spec 322 §2, keyed by this
33
+ // name). The ConsultationIntent record is the Layer-2 spine DESCRIPTION per routed consult.
34
+ { pattern: 'org.consult-grant:*', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'confidential', owner: 'org' },
35
+ { pattern: 'routing.consult:*', typeTag: 'ap.consultation-intent.v1', classIri: CLASS.ConsultationIntent, shapeIri: SHAPE.ConsultationIntent, classificationFloor: 'internal', owner: 'org' },
36
+ // W3 additions (spec 329 §3.1/§4.1; both custodied in org DO storage — the W1 custody note's
37
+ // rationale). `routing.orgWire` is a CAPABILITY (the steward-minted org consult wire — a stored
38
+ // wire lives with its delegate service); `routing.pending:*` is a derived pending-ring
39
+ // PROJECTION (deliberately class-less per spec 329 §6 — projections get no ontology classes).
40
+ { pattern: 'routing.orgWire', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'confidential', owner: 'org' },
41
+ { pattern: 'routing.pending:*', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'internal', owner: 'org' },
42
+ // Agentic Interaction spine (spec 340 W2; ADR-0058). The interaction record carries participants,
43
+ // profile and protocol bindings — no bodies. A context snapshot carries references, versions and
44
+ // digests — also no bodies; it records what was KNOWN, never the content that was known about.
45
+ // Both are `internal` rather than `confidential` for that reason, and neither is authority: the
46
+ // snapshot names the delegations an evaluator saw, it does not grant them.
47
+ { pattern: 'interaction.record:*', typeTag: 'ap.interaction.v1', classIri: CLASS.Interaction, shapeIri: SHAPE.Interaction, classificationFloor: 'internal', owner: 'both' },
48
+ { pattern: 'interaction.context:*', typeTag: 'ap.context-snapshot.v1', classIri: CLASS.ContextSnapshot, shapeIri: SHAPE.ContextSnapshot, classificationFloor: 'internal', owner: 'both' },
30
49
  ];
31
50
  /** Look up the catalog entry governing a concrete resource name (exact, then prefix family). */
32
51
  export function catalogEntryFor(resource) {
@@ -1 +1 @@
1
- {"version":3,"file":"record-catalog.js","sourceRoot":"","sources":["../src/record-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-catalog.js","sourceRoot":"","sources":["../src/record-catalog.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oGAAoG;AACpG,2FAA2F;AAC3F,mGAAmG;AACnG,4FAA4F;AAC5F,6FAA6F;AAC7F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAiB3D;;;wCAGwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,0DAA0D;IAC1D,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;IACxH,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE;IAChI,iEAAiE;IACjE,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;IACtJ,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;IAC3J,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7K,6BAA6B;IAC7B,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;IACzL,gDAAgD;IAChD,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtI,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChI,gFAAgF;IAChF,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE;IACjI,gDAAgD;IAChD,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;IACxH,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7H,4FAA4F;IAC5F,8FAA8F;IAC9F,8FAA8F;IAC9F,4FAA4F;IAC5F,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;IACpI,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7L,6FAA6F;IAC7F,gGAAgG;IAChG,uFAAuF;IACvF,8FAA8F;IAC9F,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;IAChI,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;IAC9H,kGAAkG;IAClG,iGAAiG;IACjG,+FAA+F;IAC/F,gGAAgG;IAChG,2EAA2E;IAC3E,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3K,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;CACjL,CAAC;AAEX,gGAAgG;AAChG,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,cAAc,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1G,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenticprimitives/fabric",
3
- "version": "0.0.0-alpha.1",
3
+ "version": "0.0.0-alpha.10",
4
4
  "description": "The Agentic Interaction Fabric (spec 316): one canonical ExchangeRecordV1 + two-level exec/case FSM that absorbs messaging (envelope/inbox) and interactions (case/run) into an A2A-native, decentralized, low-latency substrate. Transport-agnostic core; the Cloudflare PrincipalGatewayDO ships as the ./cloudflare adapter subpath.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -62,14 +62,14 @@
62
62
  "dependencies": {
63
63
  "@noble/curves": "^2.2.0",
64
64
  "@noble/hashes": "^2.2.0",
65
- "@agenticprimitives/audit": "1.0.0-alpha.17",
66
- "@agenticprimitives/fulfillment": "0.0.0-alpha.14",
67
- "@agenticprimitives/ontology": "1.0.0-alpha.17",
68
- "@agenticprimitives/tool-policy": "1.0.0-alpha.17",
69
- "@agenticprimitives/types": "1.0.0-alpha.17",
65
+ "@agenticprimitives/audit": "1.0.0-alpha.21",
66
+ "@agenticprimitives/ontology": "1.0.0-alpha.21",
67
+ "@agenticprimitives/fulfillment": "0.0.0-alpha.18",
68
+ "@agenticprimitives/tool-policy": "1.0.0-alpha.21",
69
+ "@agenticprimitives/types": "1.0.0-alpha.21",
70
70
  "@agenticprimitives/vault": "0.0.0-alpha.2",
71
71
  "@agenticprimitives/orchestration": "0.0.0-alpha.1",
72
- "@agenticprimitives/provenance": "0.0.0-alpha.0"
72
+ "@agenticprimitives/provenance": "0.0.0-alpha.1"
73
73
  },
74
74
  "scripts": {
75
75
  "build": "tsc -p tsconfig.build.json",