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

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 (35) hide show
  1. package/dist/messaging/board.d.ts +84 -4
  2. package/dist/messaging/board.d.ts.map +1 -1
  3. package/dist/messaging/board.js +98 -7
  4. package/dist/messaging/board.js.map +1 -1
  5. package/dist/messaging/consult-routing.d.ts +289 -0
  6. package/dist/messaging/consult-routing.d.ts.map +1 -0
  7. package/dist/messaging/consult-routing.js +455 -0
  8. package/dist/messaging/consult-routing.js.map +1 -0
  9. package/dist/messaging/consult.d.ts +158 -0
  10. package/dist/messaging/consult.d.ts.map +1 -0
  11. package/dist/messaging/consult.js +141 -0
  12. package/dist/messaging/consult.js.map +1 -0
  13. package/dist/messaging/directory.d.ts +16 -0
  14. package/dist/messaging/directory.d.ts.map +1 -1
  15. package/dist/messaging/directory.js.map +1 -1
  16. package/dist/messaging/inbox-assistant.d.ts +68 -0
  17. package/dist/messaging/inbox-assistant.d.ts.map +1 -0
  18. package/dist/messaging/inbox-assistant.js +102 -0
  19. package/dist/messaging/inbox-assistant.js.map +1 -0
  20. package/dist/messaging/index.d.ts +6 -3
  21. package/dist/messaging/index.d.ts.map +1 -1
  22. package/dist/messaging/index.js +13 -2
  23. package/dist/messaging/index.js.map +1 -1
  24. package/dist/messaging/types.d.ts +22 -0
  25. package/dist/messaging/types.d.ts.map +1 -1
  26. package/dist/messaging/types.js +15 -1
  27. package/dist/messaging/types.js.map +1 -1
  28. package/dist/messaging/vault-store.d.ts +33 -0
  29. package/dist/messaging/vault-store.d.ts.map +1 -1
  30. package/dist/messaging/vault-store.js +53 -5
  31. package/dist/messaging/vault-store.js.map +1 -1
  32. package/dist/record-catalog.d.ts.map +1 -1
  33. package/dist/record-catalog.js +12 -0
  34. package/dist/record-catalog.js.map +1 -1
  35. package/package.json +8 -8
@@ -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;
@@ -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,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;;;;;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,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC5D;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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"}
@@ -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,EA8B9C,CAAC;AAEX,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAIhF"}
@@ -27,6 +27,18 @@ 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' },
30
42
  ];
31
43
  /** Look up the catalog entry governing a concrete resource name (exact, then prefix family). */
32
44
  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":"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"}
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.3",
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/fulfillment": "0.0.0-alpha.16",
66
+ "@agenticprimitives/audit": "1.0.0-alpha.19",
67
+ "@agenticprimitives/tool-policy": "1.0.0-alpha.19",
70
68
  "@agenticprimitives/vault": "0.0.0-alpha.2",
71
- "@agenticprimitives/orchestration": "0.0.0-alpha.1",
72
- "@agenticprimitives/provenance": "0.0.0-alpha.0"
69
+ "@agenticprimitives/ontology": "1.0.0-alpha.19",
70
+ "@agenticprimitives/types": "1.0.0-alpha.19",
71
+ "@agenticprimitives/provenance": "0.0.0-alpha.0",
72
+ "@agenticprimitives/orchestration": "0.0.0-alpha.1"
73
73
  },
74
74
  "scripts": {
75
75
  "build": "tsc -p tsconfig.build.json",