@agenticprimitives/fabric 0.0.0-alpha.1 → 0.0.0-alpha.11
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.
- package/CLAUDE.md +26 -30
- package/README.md +16 -16
- package/dist/case-emissions.d.ts +95 -0
- package/dist/case-emissions.d.ts.map +1 -0
- package/dist/case-emissions.js +208 -0
- package/dist/case-emissions.js.map +1 -0
- package/dist/case-machine.d.ts +28 -2
- package/dist/case-machine.d.ts.map +1 -1
- package/dist/case-machine.js +34 -7
- package/dist/case-machine.js.map +1 -1
- package/dist/cloudflare/authority-verdict-cache.d.ts +28 -1
- package/dist/cloudflare/authority-verdict-cache.d.ts.map +1 -1
- package/dist/cloudflare/authority-verdict-cache.js +32 -1
- package/dist/cloudflare/authority-verdict-cache.js.map +1 -1
- package/dist/cloudflare/index.d.ts +4 -1
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +7 -1
- package/dist/cloudflare/index.js.map +1 -1
- package/dist/cloudflare/interaction-store.d.ts +55 -0
- package/dist/cloudflare/interaction-store.d.ts.map +1 -0
- package/dist/cloudflare/interaction-store.js +230 -0
- package/dist/cloudflare/interaction-store.js.map +1 -0
- package/dist/cloudflare/principal-gateway-do.d.ts +136 -2
- package/dist/cloudflare/principal-gateway-do.d.ts.map +1 -1
- package/dist/cloudflare/principal-gateway-do.js +190 -8
- package/dist/cloudflare/principal-gateway-do.js.map +1 -1
- package/dist/cloudflare/vault-exchange-store.d.ts +47 -0
- package/dist/cloudflare/vault-exchange-store.d.ts.map +1 -0
- package/dist/cloudflare/vault-exchange-store.js +118 -0
- package/dist/cloudflare/vault-exchange-store.js.map +1 -0
- package/dist/cloudflare/vault-interaction-store.d.ts +44 -0
- package/dist/cloudflare/vault-interaction-store.d.ts.map +1 -0
- package/dist/cloudflare/vault-interaction-store.js +245 -0
- package/dist/cloudflare/vault-interaction-store.js.map +1 -0
- package/dist/communicative-act.d.ts +24 -1
- package/dist/communicative-act.d.ts.map +1 -1
- package/dist/communicative-act.js +28 -0
- package/dist/communicative-act.js.map +1 -1
- package/dist/delivery-envelope.d.ts.map +1 -1
- package/dist/delivery-envelope.js +0 -1
- package/dist/delivery-envelope.js.map +1 -1
- package/dist/enum-retirement.d.ts +43 -0
- package/dist/enum-retirement.d.ts.map +1 -0
- package/dist/enum-retirement.js +93 -0
- package/dist/enum-retirement.js.map +1 -0
- package/dist/exchange-record.d.ts +35 -4
- package/dist/exchange-record.d.ts.map +1 -1
- package/dist/exchange-record.js.map +1 -1
- package/dist/exchange-reducer.d.ts +32 -4
- package/dist/exchange-reducer.d.ts.map +1 -1
- package/dist/exchange-reducer.js +75 -1
- package/dist/exchange-reducer.js.map +1 -1
- package/dist/exchange-state.d.ts +30 -8
- package/dist/exchange-state.d.ts.map +1 -1
- package/dist/exchange-state.js +12 -10
- package/dist/exchange-state.js.map +1 -1
- package/dist/inbox-doc.d.ts +2 -2
- package/dist/inbox-doc.d.ts.map +1 -1
- package/dist/inbox-doc.js.map +1 -1
- package/dist/inbox-projection.d.ts +2 -2
- package/dist/inbox-projection.d.ts.map +1 -1
- package/dist/inbox-projection.js.map +1 -1
- package/dist/inbox-revision.d.ts +42 -0
- package/dist/inbox-revision.d.ts.map +1 -0
- package/dist/inbox-revision.js +57 -0
- package/dist/inbox-revision.js.map +1 -0
- package/dist/index.d.ts +24 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -2
- package/dist/index.js.map +1 -1
- package/dist/interaction-machines.d.ts +136 -0
- package/dist/interaction-machines.d.ts.map +1 -0
- package/dist/interaction-machines.js +174 -0
- package/dist/interaction-machines.js.map +1 -0
- package/dist/interaction-profile.d.ts +126 -0
- package/dist/interaction-profile.d.ts.map +1 -0
- package/dist/interaction-profile.js +192 -0
- package/dist/interaction-profile.js.map +1 -0
- package/dist/interaction-record.d.ts +168 -0
- package/dist/interaction-record.d.ts.map +1 -0
- package/dist/interaction-record.js +108 -0
- package/dist/interaction-record.js.map +1 -0
- package/dist/interactions/machine.d.ts +2 -2
- package/dist/interactions/machine.d.ts.map +1 -1
- package/dist/interactions/machine.js +2 -2
- package/dist/interactions/machine.js.map +1 -1
- package/dist/interactions/open-case.d.ts +60 -0
- package/dist/interactions/open-case.d.ts.map +1 -0
- package/dist/interactions/open-case.js +83 -0
- package/dist/interactions/open-case.js.map +1 -0
- package/dist/interactions/store.d.ts +9 -0
- package/dist/interactions/store.d.ts.map +1 -1
- package/dist/interactions/store.js +57 -2
- package/dist/interactions/store.js.map +1 -1
- package/dist/messaging/board.d.ts +86 -6
- package/dist/messaging/board.d.ts.map +1 -1
- package/dist/messaging/board.js +100 -9
- package/dist/messaging/board.js.map +1 -1
- package/dist/messaging/consult-routing.d.ts +289 -0
- package/dist/messaging/consult-routing.d.ts.map +1 -0
- package/dist/messaging/consult-routing.js +455 -0
- package/dist/messaging/consult-routing.js.map +1 -0
- package/dist/messaging/consult.d.ts +158 -0
- package/dist/messaging/consult.d.ts.map +1 -0
- package/dist/messaging/consult.js +141 -0
- package/dist/messaging/consult.js.map +1 -0
- package/dist/messaging/conversation-interaction.d.ts +66 -0
- package/dist/messaging/conversation-interaction.d.ts.map +1 -0
- package/dist/messaging/conversation-interaction.js +139 -0
- package/dist/messaging/conversation-interaction.js.map +1 -0
- package/dist/messaging/delivery.d.ts +2 -2
- package/dist/messaging/delivery.d.ts.map +1 -1
- package/dist/messaging/delivery.js +8 -1
- package/dist/messaging/delivery.js.map +1 -1
- package/dist/messaging/directory.d.ts +16 -0
- package/dist/messaging/directory.d.ts.map +1 -1
- package/dist/messaging/directory.js.map +1 -1
- package/dist/messaging/envelope.d.ts +7 -3
- package/dist/messaging/envelope.d.ts.map +1 -1
- package/dist/messaging/envelope.js +18 -1
- package/dist/messaging/envelope.js.map +1 -1
- package/dist/messaging/hash.d.ts +8 -2
- package/dist/messaging/hash.d.ts.map +1 -1
- package/dist/messaging/hash.js +6 -0
- package/dist/messaging/hash.js.map +1 -1
- package/dist/messaging/inbox-assistant.d.ts +80 -0
- package/dist/messaging/inbox-assistant.d.ts.map +1 -0
- package/dist/messaging/inbox-assistant.js +125 -0
- package/dist/messaging/inbox-assistant.js.map +1 -0
- package/dist/messaging/index.d.ts +10 -3
- package/dist/messaging/index.d.ts.map +1 -1
- package/dist/messaging/index.js +20 -2
- package/dist/messaging/index.js.map +1 -1
- package/dist/messaging/outbound-message.d.ts +42 -0
- package/dist/messaging/outbound-message.d.ts.map +1 -0
- package/dist/messaging/outbound-message.js +64 -0
- package/dist/messaging/outbound-message.js.map +1 -0
- package/dist/messaging/projector.d.ts +3 -3
- package/dist/messaging/projector.d.ts.map +1 -1
- package/dist/messaging/projector.js.map +1 -1
- package/dist/messaging/receipts.d.ts +3 -3
- package/dist/messaging/receipts.d.ts.map +1 -1
- package/dist/messaging/receipts.js.map +1 -1
- package/dist/messaging/rules.d.ts +10 -3
- package/dist/messaging/rules.d.ts.map +1 -1
- package/dist/messaging/rules.js +8 -1
- package/dist/messaging/rules.js.map +1 -1
- package/dist/messaging/store.d.ts +4 -4
- package/dist/messaging/store.d.ts.map +1 -1
- package/dist/messaging/store.js +5 -3
- package/dist/messaging/store.js.map +1 -1
- package/dist/messaging/types.d.ts +52 -0
- package/dist/messaging/types.d.ts.map +1 -1
- package/dist/messaging/types.js +18 -1
- package/dist/messaging/types.js.map +1 -1
- package/dist/messaging/vault-store.d.ts +35 -2
- package/dist/messaging/vault-store.d.ts.map +1 -1
- package/dist/messaging/vault-store.js +53 -5
- package/dist/messaging/vault-store.js.map +1 -1
- package/dist/protocol-binding.d.ts +71 -0
- package/dist/protocol-binding.d.ts.map +1 -0
- package/dist/protocol-binding.js +0 -0
- package/dist/protocol-binding.js.map +1 -0
- package/dist/record-catalog.d.ts.map +1 -1
- package/dist/record-catalog.js +24 -0
- package/dist/record-catalog.js.map +1 -1
- package/package.json +7 -7
package/dist/messaging/rules.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
// The action union is closed on purpose: a rule can never issue entitlements,
|
|
4
4
|
// grant delegation, release keys, or change custody — those verbs do not exist
|
|
5
5
|
// here and must never be added.
|
|
6
|
+
import { isEnvelopeV2 } from './types.js';
|
|
7
|
+
import { performativeOf } from '../communicative-act.js';
|
|
6
8
|
const PRIORITY_ORDER = ['low', 'normal', 'high', 'urgent'];
|
|
7
9
|
/** Shared context-match used by rules and `listByContext` — ONE mechanism (ADR-0013). */
|
|
8
10
|
export function matchesContextRef(refs, query) {
|
|
@@ -11,7 +13,12 @@ export function matchesContextRef(refs, query) {
|
|
|
11
13
|
export function matchesRulePredicate(predicate, envelope, item) {
|
|
12
14
|
if (predicate.fromAnyOf && !predicate.fromAnyOf.includes(envelope.from))
|
|
13
15
|
return false;
|
|
14
|
-
if (predicate.kindAnyOf
|
|
16
|
+
if (predicate.kindAnyOf) {
|
|
17
|
+
// No kind on a V2 envelope, and no inferred one either — the rule simply does not match.
|
|
18
|
+
if (isEnvelopeV2(envelope) || !predicate.kindAnyOf.includes(envelope.kind))
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (predicate.performativeAnyOf && !predicate.performativeAnyOf.includes(performativeOf(envelope)))
|
|
15
22
|
return false;
|
|
16
23
|
if (predicate.subjectContainsAnyOf) {
|
|
17
24
|
const subject = (envelope.subject ?? '').toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/messaging/rules.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,gCAAgC;AAchC,MAAM,cAAc,GAA+B,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/messaging/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import type { FolderKind, InboxItemV1,
|
|
1
|
+
import type { FolderKind, InboxItemV1, AnyMessageEnvelope, MessageEventV1, MessageId } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Pure projection step. Given the previous inbox row (or undefined for the
|
|
4
4
|
* first event) and the next lifecycle event, produce the new row.
|
|
5
5
|
* Throws on a messageId mismatch — events never apply across messages.
|
|
6
6
|
*/
|
|
7
|
-
export declare function applyMessageEvent(prev: InboxItemV1 | undefined, envelope:
|
|
7
|
+
export declare function applyMessageEvent(prev: InboxItemV1 | undefined, envelope: AnyMessageEnvelope, event: MessageEventV1): InboxItemV1;
|
|
8
8
|
export interface MessageStore {
|
|
9
9
|
/**
|
|
10
10
|
* Admit an envelope. Fail-closed: structurally invalid envelopes throw.
|
|
11
11
|
* Re-putting an identical envelope is idempotent; a DIFFERENT envelope under
|
|
12
12
|
* an existing id throws (blocks envelope substitution under a known id).
|
|
13
13
|
*/
|
|
14
|
-
putMessage(envelope:
|
|
15
|
-
getMessage(id: MessageId):
|
|
14
|
+
putMessage(envelope: AnyMessageEnvelope): void;
|
|
15
|
+
getMessage(id: MessageId): AnyMessageEnvelope | null;
|
|
16
16
|
/** Append a lifecycle event. Throws for unknown messages or id mismatch. */
|
|
17
17
|
appendEvent(event: MessageEventV1): InboxItemV1;
|
|
18
18
|
listEvents(id: MessageId): MessageEventV1[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/messaging/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/messaging/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,kBAAkB,EAClB,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAC;AAmBpB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,cAAc,GACpB,WAAW,CAqDb;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACrD,4EAA4E;IAC5E,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,CAAC;IAChD,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,EAAE,CAAC;IAC5C,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,CAAC;IAC9C,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC1C;AAED,wBAAgB,0BAA0B,IAAI,YAAY,CA4CzD"}
|
package/dist/messaging/store.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// The projection is a pure reducer — replaying the same events always yields
|
|
5
5
|
// the same InboxItemV1. Rules / categories / delta cursors land in W2.
|
|
6
6
|
import { validateMessageEnvelope } from './envelope.js';
|
|
7
|
+
import { performativeOf } from '../communicative-act.js';
|
|
7
8
|
import { canonicalizeMessage } from './hash.js';
|
|
8
9
|
/** Where a message lands when first admitted, by perspective + kind. */
|
|
9
10
|
function initialFolder(envelope, event) {
|
|
@@ -13,8 +14,9 @@ function initialFolder(envelope, event) {
|
|
|
13
14
|
case 'sent':
|
|
14
15
|
return 'sent';
|
|
15
16
|
default:
|
|
16
|
-
// Typed requests queue for review instead of burying in mail (spec 309 §6).
|
|
17
|
-
|
|
17
|
+
// Typed requests queue for review instead of burying in mail (spec 309 §6). Reads the
|
|
18
|
+
// performative rather than `kind` so a V2 envelope routes identically (spec 340 W9).
|
|
19
|
+
return performativeOf(envelope) === 'REQUEST' ? 'pending' : 'inbox';
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
@@ -57,7 +59,7 @@ export function applyMessageEvent(prev, envelope, event) {
|
|
|
57
59
|
next.bodyPreview = undefined;
|
|
58
60
|
break;
|
|
59
61
|
case 'restored':
|
|
60
|
-
next.folder = envelope
|
|
62
|
+
next.folder = performativeOf(envelope) === 'REQUEST' ? 'pending' : 'inbox';
|
|
61
63
|
break;
|
|
62
64
|
case 'drafted':
|
|
63
65
|
next.folder = 'drafts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/messaging/store.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,6EAA6E;AAC7E,uEAAuE;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/messaging/store.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,6EAA6E;AAC7E,uEAAuE;AAUvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,wEAAwE;AACxE,SAAS,aAAa,CAAC,QAA4B,EAAE,KAAqB;IACxE,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,sFAAsF;YACtF,qFAAqF;YACrF,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA6B,EAC7B,QAA4B,EAC5B,KAAqB;IAErB,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,SAAS,+BAA+B,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,IAAI,GAAgB,IAAI,IAAI;QAChC,SAAS,EAAE,QAAQ,CAAC,EAAE;QACtB,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC;QACtC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACpC,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,EAAE,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW;QACzE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ;QACvC,WAAW,EAAE,KAAK,CAAC,EAAE;QACrB,aAAa,EAAE,QAAQ,CAAC,aAAa;KACtC,CAAC;IAEF,MAAM,IAAI,GAAgB,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAC7D,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM;QACR,KAAK,MAAM;YACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,MAAM;QACR,KAAK,UAAU;YACb,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,MAAM;QACR,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,MAAM;QACR,KAAK,UAAU;YACb,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3E,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,qEAAqE;YACrE,MAAM;IACV,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAkBD,MAAM,UAAU,0BAA0B;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAA+B,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEhD,OAAO;QACL,UAAU,CAAC,QAAQ;YACjB,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChF,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAChF,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;QACD,UAAU,CAAC,EAAE;YACX,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QACnC,CAAC;QACD,WAAW,CAAC,KAAK;YACf,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7E,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,CAAC,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,YAAY,CAAC,EAAE;YACb,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAC/B,CAAC;QACD,SAAS,CAAC,MAAM;YACd,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACrF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,WAAW,CAAC,MAAM;YAChB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CACzD,CAAC,MAAM,CAAC;QACX,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"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"}
|
package/dist/messaging/types.js
CHANGED
|
@@ -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:
|
|
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;
|
|
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
|
-
|
|
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":"AAAA,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,8EAA8E;AAI9E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAC;AACvD,MAAM,CAAC,MAAM,8BAA8B,GAAG,oBAAoB,CAAC;AAEnE;;;;iFAIiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,EAAa;IAC/C,OAAO,GAAG,wBAAwB,OAAO,EAAE,EAAE,CAAC;AAChD,CAAC;AAED;yDACyD;AACzD,MAAM,UAAU,iBAAiB,CAAC,cAAsB,EAAE,EAAa;IACrE,OAAO,GAAG,wBAAwB,UAAU,cAAc,IAAI,EAAE,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAAa,EAAE,KAAa;IACpE,OAAO,GAAG,8BAA8B,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAiB;IACjC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC;AACb,CAAC;
|
|
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,
|
|
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,EA0C9C,CAAC;AAEX,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAIhF"}
|
package/dist/record-catalog.js
CHANGED
|
@@ -26,7 +26,31 @@ export const RECORD_CATALOG = [
|
|
|
26
26
|
{ pattern: 'grants.delivery', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'confidential', owner: 'both' },
|
|
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
|
+
// spec 342 — the steward's administrative lifecycle decision about the org (active | inactive |
|
|
30
|
+
// deleted). Its OWN record, not a field on org.profile: a decision is not a profile detail, and a
|
|
31
|
+
// separate record keeps the profile editor's read-modify-write from ever clobbering it. `deleted`
|
|
32
|
+
// is a tombstone — this record is written, nothing is removed.
|
|
33
|
+
{ pattern: 'org.lifecycle', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'internal', owner: 'org' },
|
|
29
34
|
{ pattern: 'org.invite:*', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'confidential', owner: 'org' },
|
|
35
|
+
// Routed consultation (spec 329). The consult GRANT record is a capability (a member-signed
|
|
36
|
+
// delegation wire — delegation-gated residency, never KV; W1 custody note: the wire currently
|
|
37
|
+
// lives in the org's DO grant store, the delegate-service side per spec 322 §2, keyed by this
|
|
38
|
+
// name). The ConsultationIntent record is the Layer-2 spine DESCRIPTION per routed consult.
|
|
39
|
+
{ pattern: 'org.consult-grant:*', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'confidential', owner: 'org' },
|
|
40
|
+
{ pattern: 'routing.consult:*', typeTag: 'ap.consultation-intent.v1', classIri: CLASS.ConsultationIntent, shapeIri: SHAPE.ConsultationIntent, classificationFloor: 'internal', owner: 'org' },
|
|
41
|
+
// W3 additions (spec 329 §3.1/§4.1; both custodied in org DO storage — the W1 custody note's
|
|
42
|
+
// rationale). `routing.orgWire` is a CAPABILITY (the steward-minted org consult wire — a stored
|
|
43
|
+
// wire lives with its delegate service); `routing.pending:*` is a derived pending-ring
|
|
44
|
+
// PROJECTION (deliberately class-less per spec 329 §6 — projections get no ontology classes).
|
|
45
|
+
{ pattern: 'routing.orgWire', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'confidential', owner: 'org' },
|
|
46
|
+
{ pattern: 'routing.pending:*', typeTag: null, classIri: null, shapeIri: null, classificationFloor: 'internal', owner: 'org' },
|
|
47
|
+
// Agentic Interaction spine (spec 340 W2; ADR-0058). The interaction record carries participants,
|
|
48
|
+
// profile and protocol bindings — no bodies. A context snapshot carries references, versions and
|
|
49
|
+
// digests — also no bodies; it records what was KNOWN, never the content that was known about.
|
|
50
|
+
// Both are `internal` rather than `confidential` for that reason, and neither is authority: the
|
|
51
|
+
// snapshot names the delegations an evaluator saw, it does not grant them.
|
|
52
|
+
{ pattern: 'interaction.record:*', typeTag: 'ap.interaction.v1', classIri: CLASS.Interaction, shapeIri: SHAPE.Interaction, classificationFloor: 'internal', owner: 'both' },
|
|
53
|
+
{ pattern: 'interaction.context:*', typeTag: 'ap.context-snapshot.v1', classIri: CLASS.ContextSnapshot, shapeIri: SHAPE.ContextSnapshot, classificationFloor: 'internal', owner: 'both' },
|
|
30
54
|
];
|
|
31
55
|
/** Look up the catalog entry governing a concrete resource name (exact, then prefix family). */
|
|
32
56
|
export function catalogEntryFor(resource) {
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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.
|
|
3
|
+
"version": "0.0.0-alpha.11",
|
|
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.
|
|
66
|
-
"@agenticprimitives/fulfillment": "0.0.0-alpha.
|
|
67
|
-
"@agenticprimitives/ontology": "1.0.0-alpha.
|
|
68
|
-
"@agenticprimitives/tool-policy": "1.0.0-alpha.
|
|
69
|
-
"@agenticprimitives/types": "1.0.0-alpha.
|
|
65
|
+
"@agenticprimitives/audit": "1.0.0-alpha.22",
|
|
66
|
+
"@agenticprimitives/fulfillment": "0.0.0-alpha.19",
|
|
67
|
+
"@agenticprimitives/ontology": "1.0.0-alpha.22",
|
|
68
|
+
"@agenticprimitives/tool-policy": "1.0.0-alpha.22",
|
|
69
|
+
"@agenticprimitives/types": "1.0.0-alpha.22",
|
|
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.
|
|
72
|
+
"@agenticprimitives/provenance": "0.0.0-alpha.1"
|
|
73
73
|
},
|
|
74
74
|
"scripts": {
|
|
75
75
|
"build": "tsc -p tsconfig.build.json",
|