@agenticprimitives/fabric 0.0.0-alpha.4 → 0.0.0-alpha.5
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 +12 -2
- package/dist/cloudflare/index.d.ts +1 -0
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +4 -0
- 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 +118 -2
- package/dist/cloudflare/principal-gateway-do.d.ts.map +1 -1
- package/dist/cloudflare/principal-gateway-do.js +182 -7
- package/dist/cloudflare/principal-gateway-do.js.map +1 -1
- 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 +34 -0
- package/dist/enum-retirement.d.ts.map +1 -0
- package/dist/enum-retirement.js +87 -0
- package/dist/enum-retirement.js.map +1 -0
- package/dist/exchange-record.d.ts +19 -3
- package/dist/exchange-record.d.ts.map +1 -1
- package/dist/exchange-record.js.map +1 -1
- package/dist/exchange-reducer.d.ts +33 -0
- package/dist/exchange-reducer.d.ts.map +1 -1
- package/dist/exchange-reducer.js +48 -0
- package/dist/exchange-reducer.js.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -0
- 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/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/inbox-assistant.d.ts +6 -3
- package/dist/messaging/inbox-assistant.d.ts.map +1 -1
- package/dist/messaging/inbox-assistant.js +23 -2
- package/dist/messaging/inbox-assistant.js.map +1 -1
- package/dist/messaging/index.d.ts +4 -1
- package/dist/messaging/index.d.ts.map +1 -1
- package/dist/messaging/index.js +4 -0
- package/dist/messaging/index.js.map +1 -1
- package/dist/messaging/rules.d.ts +9 -2
- 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.map +1 -1
- package/dist/messaging/store.js +5 -3
- package/dist/messaging/store.js.map +1 -1
- package/dist/messaging/types.d.ts +30 -0
- package/dist/messaging/types.d.ts.map +1 -1
- package/dist/messaging/types.js +3 -0
- package/dist/messaging/types.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 +7 -0
- package/dist/record-catalog.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { CanonicalAgentId } from '@agenticprimitives/types';
|
|
2
|
+
import type { ConversationDescriptorV1, ConversationId } from './types.js';
|
|
3
|
+
import type { InteractionId, ProfileVersion, ParticipationV1 } from '../interaction-record.js';
|
|
4
|
+
import type { InteractionState } from '../interaction-machines.js';
|
|
5
|
+
import { type ChannelV1 } from './board.js';
|
|
6
|
+
/** Derived from the conversation id, so the two can never disagree and no field needs adding. */
|
|
7
|
+
export declare function conversationInteractionId(conversationId: ConversationId | string): InteractionId;
|
|
8
|
+
/** The inverse, or `null` for an id that is not a conversation interaction. Null rather than a guess —
|
|
9
|
+
* the same rule that keeps derived-participation resolution fail-closed. */
|
|
10
|
+
export declare function conversationIdFromInteraction(interactionId: string): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* `participantPolicy` IS `participationMode`, and noticing that is what made this a projection.
|
|
13
|
+
*
|
|
14
|
+
* `open-to-context` means "anyone in the anchored org" — membership owned elsewhere, resolved at read
|
|
15
|
+
* time, never copied per conversation. That is precisely `derived`. `fixed` and `owner-managed` both
|
|
16
|
+
* mean the participant list on the record is the membership: `asserted`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function participationModeOfConversation(descriptor: Pick<ConversationDescriptorV1, 'participantPolicy'>): 'asserted' | 'derived';
|
|
19
|
+
/**
|
|
20
|
+
* Which profile governs this conversation.
|
|
21
|
+
*
|
|
22
|
+
* `forum`/`discussion` are boards — `topic`. Everything else is conversation — `direct`. Neither can
|
|
23
|
+
* create an obligation, which is true of both today and stated rather than left to inference. A
|
|
24
|
+
* conversation that needs to negotiate is promoted to its own Interaction under the negotiation
|
|
25
|
+
* profile (ADR-0058 §14), not granted extra acts here.
|
|
26
|
+
*/
|
|
27
|
+
export declare function profileVersionOfConversation(descriptor: Pick<ConversationDescriptorV1, 'profile'>): ProfileVersion;
|
|
28
|
+
/**
|
|
29
|
+
* Lifecycle state.
|
|
30
|
+
*
|
|
31
|
+
* `archived` is deliberately NOT read as an ending. Spec 340 §P settled that shelving is a display
|
|
32
|
+
* concern that already lives in `InboxState`; an archived conversation has still either concluded or
|
|
33
|
+
* not, and conflating them would mean unarchiving a board silently reopened a concluded situation.
|
|
34
|
+
* The descriptor carries no concluded flag today, so every live conversation is `active` — stated here
|
|
35
|
+
* rather than invented, because inferring a conclusion from `archived` would be exactly the wrong fix.
|
|
36
|
+
*/
|
|
37
|
+
export declare function lifecycleStateOfConversation(_descriptor: Pick<ConversationDescriptorV1, 'archived'>): InteractionState;
|
|
38
|
+
/** Participations, for an `asserted` conversation. Empty for a `derived` one — the whole point. */
|
|
39
|
+
export declare function participationsOfConversation(descriptor: Pick<ConversationDescriptorV1, 'participantPolicy' | 'participants' | 'createdAt'>): readonly ParticipationV1[];
|
|
40
|
+
/** What an Exchange in this conversation pins — `interactionId` + `profileVersion` in one call, so a
|
|
41
|
+
* caller cannot set one and forget the other. */
|
|
42
|
+
export interface ConversationExchangePins {
|
|
43
|
+
interactionId: InteractionId;
|
|
44
|
+
profileVersion: ProfileVersion;
|
|
45
|
+
}
|
|
46
|
+
export declare function conversationPins(descriptor: Pick<ConversationDescriptorV1, 'id' | 'profile'>): ConversationExchangePins;
|
|
47
|
+
/** The full interaction view of a conversation — the projection, assembled. */
|
|
48
|
+
export interface ConversationInteractionView {
|
|
49
|
+
interactionId: InteractionId;
|
|
50
|
+
profileVersion: ProfileVersion;
|
|
51
|
+
principal: CanonicalAgentId;
|
|
52
|
+
lifecycleState: InteractionState;
|
|
53
|
+
participationMode: 'asserted' | 'derived';
|
|
54
|
+
participations: readonly ParticipationV1[];
|
|
55
|
+
}
|
|
56
|
+
export declare function interactionViewOfConversation(descriptor: ConversationDescriptorV1): ConversationInteractionView;
|
|
57
|
+
/** Participation mode of a board channel — `open` topics derive membership, `restricted` assert it. */
|
|
58
|
+
export declare function participationModeOfChannel(channel: Pick<ChannelV1, 'participationPolicy' | 'visibility'>): 'asserted' | 'derived';
|
|
59
|
+
/**
|
|
60
|
+
* The interaction view of a live board channel — the one `demo-a2a` actually serves.
|
|
61
|
+
*
|
|
62
|
+
* Zero storage change: every field is read from what the board already persists. A topic in the vault
|
|
63
|
+
* IS an Interaction; this is how to read it as one.
|
|
64
|
+
*/
|
|
65
|
+
export declare function interactionViewOfChannel(channel: ChannelV1): ConversationInteractionView;
|
|
66
|
+
//# sourceMappingURL=conversation-interaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-interaction.d.ts","sourceRoot":"","sources":["../../src/messaging/conversation-interaction.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAIxE,iGAAiG;AACjG,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,GAAG,aAAa,CAEhG;AAED;6EAC6E;AAC7E,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElF;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,GAC9D,UAAU,GAAG,SAAS,CAExB;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,GACpD,cAAc,CAIhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,CAAC,GACtD,gBAAgB,CAElB;AAED,mGAAmG;AACnG,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,GAAG,cAAc,GAAG,WAAW,CAAC,GAC7F,SAAS,eAAe,EAAE,CAU5B;AAED;kDACkD;AAClD,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,GAAG,SAAS,CAAC,GAC3D,wBAAwB,CAK1B;AAED,+EAA+E;AAC/E,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,cAAc,EAAE,gBAAgB,CAAC;IACjC,iBAAiB,EAAE,UAAU,GAAG,SAAS,CAAC;IAC1C,cAAc,EAAE,SAAS,eAAe,EAAE,CAAC;CAC5C;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,wBAAwB,GACnC,2BAA2B,CAU7B;AAcD,uGAAuG;AACvG,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,GAAG,YAAY,CAAC,GAC7D,UAAU,GAAG,SAAS,CAExB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,GAAG,2BAA2B,CAkBxF"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// The vault-backed conversation, viewed as the Interaction it already is (spec 340 W12).
|
|
2
|
+
//
|
|
3
|
+
// WHY THIS FILE EXISTS, stated plainly because it is a correction. W11 made org topics a real
|
|
4
|
+
// Interaction by wiring `PrincipalGatewayDO.createChannel`/`postToChannel` — the DO-SQL channel store.
|
|
5
|
+
// `demo-a2a`, the only app that actually serves topics, does not use that store. It uses the
|
|
6
|
+
// VAULT-backed board (`createBoardChannel` / `appendBoardPost` over `ConversationDescriptorV1`). So
|
|
7
|
+
// W11 landed in a code path no demo runs, which is the same dormancy the whole exercise was meant to
|
|
8
|
+
// end — this time with the added problem that a third model of "a governed conversation" now existed.
|
|
9
|
+
//
|
|
10
|
+
// THE FIX IS A PROJECTION, NOT A MIGRATION. `ConversationDescriptorV1` already carries every field the
|
|
11
|
+
// Interaction needs, under different names:
|
|
12
|
+
//
|
|
13
|
+
// descriptor.id → the interaction identity (derived, see below)
|
|
14
|
+
// descriptor.owner → the custodian (`principal`)
|
|
15
|
+
// descriptor.participantPolicy → `participationMode`, exactly
|
|
16
|
+
// descriptor.participants → the asserted list, when there is one
|
|
17
|
+
// descriptor.profile → which InteractionProfile applies
|
|
18
|
+
// descriptor.archived → shelving, NOT the lifecycle (spec 340 §P)
|
|
19
|
+
//
|
|
20
|
+
// So nothing is stored twice and nothing migrates. A conversation IS an interaction; this says how to
|
|
21
|
+
// read it as one. Deriving rather than storing is deliberate: a stored copy of a value computable from
|
|
22
|
+
// the record is the drift this ontology work exists to remove, and it would need a migration to add.
|
|
23
|
+
import { TOPIC_PROFILE, DIRECT_PROFILE } from '../interaction-profile.js';
|
|
24
|
+
import { channelParticipationPolicy } from './board.js';
|
|
25
|
+
const CONVERSATION_PREFIX = 'ixn_conv_';
|
|
26
|
+
/** Derived from the conversation id, so the two can never disagree and no field needs adding. */
|
|
27
|
+
export function conversationInteractionId(conversationId) {
|
|
28
|
+
return `${CONVERSATION_PREFIX}${conversationId}`;
|
|
29
|
+
}
|
|
30
|
+
/** The inverse, or `null` for an id that is not a conversation interaction. Null rather than a guess —
|
|
31
|
+
* the same rule that keeps derived-participation resolution fail-closed. */
|
|
32
|
+
export function conversationIdFromInteraction(interactionId) {
|
|
33
|
+
return interactionId.startsWith(CONVERSATION_PREFIX) ? interactionId.slice(CONVERSATION_PREFIX.length) : null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `participantPolicy` IS `participationMode`, and noticing that is what made this a projection.
|
|
37
|
+
*
|
|
38
|
+
* `open-to-context` means "anyone in the anchored org" — membership owned elsewhere, resolved at read
|
|
39
|
+
* time, never copied per conversation. That is precisely `derived`. `fixed` and `owner-managed` both
|
|
40
|
+
* mean the participant list on the record is the membership: `asserted`.
|
|
41
|
+
*/
|
|
42
|
+
export function participationModeOfConversation(descriptor) {
|
|
43
|
+
return descriptor.participantPolicy === 'open-to-context' ? 'derived' : 'asserted';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Which profile governs this conversation.
|
|
47
|
+
*
|
|
48
|
+
* `forum`/`discussion` are boards — `topic`. Everything else is conversation — `direct`. Neither can
|
|
49
|
+
* create an obligation, which is true of both today and stated rather than left to inference. A
|
|
50
|
+
* conversation that needs to negotiate is promoted to its own Interaction under the negotiation
|
|
51
|
+
* profile (ADR-0058 §14), not granted extra acts here.
|
|
52
|
+
*/
|
|
53
|
+
export function profileVersionOfConversation(descriptor) {
|
|
54
|
+
return descriptor.profile === 'forum' || descriptor.profile === 'discussion'
|
|
55
|
+
? TOPIC_PROFILE.profileVersion
|
|
56
|
+
: DIRECT_PROFILE.profileVersion;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Lifecycle state.
|
|
60
|
+
*
|
|
61
|
+
* `archived` is deliberately NOT read as an ending. Spec 340 §P settled that shelving is a display
|
|
62
|
+
* concern that already lives in `InboxState`; an archived conversation has still either concluded or
|
|
63
|
+
* not, and conflating them would mean unarchiving a board silently reopened a concluded situation.
|
|
64
|
+
* The descriptor carries no concluded flag today, so every live conversation is `active` — stated here
|
|
65
|
+
* rather than invented, because inferring a conclusion from `archived` would be exactly the wrong fix.
|
|
66
|
+
*/
|
|
67
|
+
export function lifecycleStateOfConversation(_descriptor) {
|
|
68
|
+
return 'active';
|
|
69
|
+
}
|
|
70
|
+
/** Participations, for an `asserted` conversation. Empty for a `derived` one — the whole point. */
|
|
71
|
+
export function participationsOfConversation(descriptor) {
|
|
72
|
+
if (participationModeOfConversation(descriptor) === 'derived')
|
|
73
|
+
return [];
|
|
74
|
+
return descriptor.participants.map((agent) => ({
|
|
75
|
+
agent,
|
|
76
|
+
role: 'participant',
|
|
77
|
+
// The descriptor records no per-participant join time, so the conversation's own is the honest
|
|
78
|
+
// answer: it is when membership was first observable, and claiming a more precise one would be
|
|
79
|
+
// inventing provenance.
|
|
80
|
+
joinedAt: descriptor.createdAt,
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
export function conversationPins(descriptor) {
|
|
84
|
+
return {
|
|
85
|
+
interactionId: conversationInteractionId(descriptor.id),
|
|
86
|
+
profileVersion: profileVersionOfConversation(descriptor),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export function interactionViewOfConversation(descriptor) {
|
|
90
|
+
return {
|
|
91
|
+
...conversationPins(descriptor),
|
|
92
|
+
// The descriptor's `owner` is the store that holds this copy, which for an org board is the org —
|
|
93
|
+
// the same custodial rule W3 enforces, arrived at from the other direction.
|
|
94
|
+
principal: descriptor.owner,
|
|
95
|
+
lifecycleState: lifecycleStateOfConversation(descriptor),
|
|
96
|
+
participationMode: participationModeOfConversation(descriptor),
|
|
97
|
+
participations: participationsOfConversation(descriptor),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// ─── Board channels ──────────────────────────────────────────────────────────
|
|
101
|
+
//
|
|
102
|
+
// A board `ChannelV1` (this subpath) is NOT the DO-SQL `ChannelV1` in `../cloudflare/channel-store.ts`.
|
|
103
|
+
// Same name, two different concepts, two subpaths — noted here rather than renamed, because renaming a
|
|
104
|
+
// live wire type is its own change; see spec 340 §C.
|
|
105
|
+
//
|
|
106
|
+
// The board channel is the better projection source than its descriptor: it carries
|
|
107
|
+
// `participationPolicy` DIRECTLY (`open` = derived from org membership and never stored; `restricted` =
|
|
108
|
+
// `members` is the list), with `channelParticipationPolicy` already resolving the legacy `visibility`
|
|
109
|
+
// spelling. Reading that instead of re-deriving from `participantPolicy` means one answer, from the
|
|
110
|
+
// field that actually decides it.
|
|
111
|
+
/** Participation mode of a board channel — `open` topics derive membership, `restricted` assert it. */
|
|
112
|
+
export function participationModeOfChannel(channel) {
|
|
113
|
+
return channelParticipationPolicy(channel) === 'open' ? 'derived' : 'asserted';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The interaction view of a live board channel — the one `demo-a2a` actually serves.
|
|
117
|
+
*
|
|
118
|
+
* Zero storage change: every field is read from what the board already persists. A topic in the vault
|
|
119
|
+
* IS an Interaction; this is how to read it as one.
|
|
120
|
+
*/
|
|
121
|
+
export function interactionViewOfChannel(channel) {
|
|
122
|
+
const mode = participationModeOfChannel(channel);
|
|
123
|
+
return {
|
|
124
|
+
...conversationPins(channel.descriptor),
|
|
125
|
+
principal: channel.descriptor.owner,
|
|
126
|
+
lifecycleState: lifecycleStateOfConversation(channel.descriptor),
|
|
127
|
+
participationMode: mode,
|
|
128
|
+
// A restricted topic's `members` IS the participant list (legacy field name; these are discussion
|
|
129
|
+
// participants, not the org roster). An open topic stores none, by design.
|
|
130
|
+
participations: mode === 'derived'
|
|
131
|
+
? []
|
|
132
|
+
: (channel.members ?? []).map((agent) => ({
|
|
133
|
+
agent: agent,
|
|
134
|
+
role: 'participant',
|
|
135
|
+
joinedAt: channel.descriptor.createdAt,
|
|
136
|
+
})),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=conversation-interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-interaction.js","sourceRoot":"","sources":["../../src/messaging/conversation-interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CanonicalAgentId } from '@agenticprimitives/types';
|
|
2
|
-
import type { ConversationDescriptorV1, MessageEnvelopeV1 } from './types.js';
|
|
2
|
+
import type { ConversationDescriptorV1, MessageEnvelopeV1, MessageEnvelopeV2, AnyMessageEnvelope } from './types.js';
|
|
3
3
|
/** Owner-controlled auto-reply assistant config for a PERSON's 1:1 inbox (spec 328 §2).
|
|
4
4
|
* One record in the person's vault; `enabled:false` is the disable tombstone (one record, no
|
|
5
5
|
* delete ceremony — absent and disabled are the same answer). Display name is captured AT
|
|
@@ -27,13 +27,16 @@ export declare const INBOX_ASSISTANT_FRESH_WINDOW_MS: number;
|
|
|
27
27
|
* - not addressed `to` the principal → false
|
|
28
28
|
* - createdAt stale (> fresh window) or before enabledAt → false (backfill floods can't fire)
|
|
29
29
|
* The seen-ledger dedup and the per-conversation rate bucket are the caller's (DO storage). */
|
|
30
|
-
export declare function inboxAssistantTrigger(assistant: PersonAssistantV1 | null | undefined, envelope: Pick<
|
|
30
|
+
export declare function inboxAssistantTrigger(assistant: PersonAssistantV1 | null | undefined, envelope: Pick<AnyMessageEnvelope, 'from' | 'to' | 'actor' | 'createdAt' | 'inReplyTo'> & Partial<Pick<MessageEnvelopeV1, 'kind'>> & Partial<Pick<MessageEnvelopeV2, 'performative'>>, principalAddr: string, nowMs?: number): boolean;
|
|
31
31
|
/** One fixed-window rate state (DO-storage resident at the execution point). */
|
|
32
32
|
export interface FixedWindowState {
|
|
33
33
|
windowStart: number;
|
|
34
34
|
count: number;
|
|
35
35
|
}
|
|
36
|
-
/** Pure fixed-window rate decision
|
|
36
|
+
/** Pure fixed-window rate decision — SAME ALGORITHM as `rate-control.fixedWindowAllow`, kept local
|
|
37
|
+
* because `fabric` may not import `rate-control` (not in its allowedImports; adding that edge is an
|
|
38
|
+
* architectural decision, not a cleanup). If you change the boundary condition here, change it
|
|
39
|
+
* there. (spec 328 §3; the same 6/10min semantics as spec 327's
|
|
37
40
|
* per-topic bucket, extracted so the bound is unit-testable without a DO). The caller persists
|
|
38
41
|
* `next` whether or not the dispatch is allowed (denied attempts still consume nothing — the
|
|
39
42
|
* count only advances on allow). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-assistant.d.ts","sourceRoot":"","sources":["../../src/messaging/inbox-assistant.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox-assistant.d.ts","sourceRoot":"","sources":["../../src/messaging/inbox-assistant.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrH;;;gGAGgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB;0EACsE;IACtE,OAAO,EAAE,KAAK,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,eAAO,MAAM,+BAA+B,QAAc,CAAC;AAE3D;;;;;;;;;;gGAUgG;AAChG,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC/C,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC,GACrF,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,EAC7F,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CA6BT;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;qCAMqC;AACrC,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAO9C;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,gBAAgB,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAE,GAC1H;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;yFAIyF;AACzF,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,wBAAwB,EAAE,GAAG,SAAS,EACrD,IAAI,EAAE;IAAE,SAAS,EAAE,gBAAgB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5F,OAAO,CAAC,oBAAoB,CAAC,CAuC/B"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { generateMessageId, validateMessageEnvelope } from './envelope.js';
|
|
2
2
|
import { sha256Hex32 } from './hash.js';
|
|
3
3
|
import { messageBodyResource } from './vault-store.js';
|
|
4
|
+
import { isOriginalMessage } from '../communicative-act.js';
|
|
5
|
+
import { isEnvelopeV2 } from './types.js';
|
|
4
6
|
/** Backfill/replay guard: only envelopes created within this window of the scan may trigger. */
|
|
5
7
|
export const INBOX_ASSISTANT_FRESH_WINDOW_MS = 10 * 60_000;
|
|
6
8
|
/** Should a just-committed inbound envelope trigger the person's auto-reply assistant
|
|
@@ -19,8 +21,24 @@ export function inboxAssistantTrigger(assistant, envelope, principalAddr, nowMs)
|
|
|
19
21
|
return false;
|
|
20
22
|
if (envelope.actor)
|
|
21
23
|
return false;
|
|
22
|
-
|
|
24
|
+
// ONE RULE PER WIRE VERSION, not a translation (spec 340 W9). V1 keeps `kind === 'plain'` byte for
|
|
25
|
+
// byte: its behaviour must not shift under a version bump it is not part of.
|
|
26
|
+
//
|
|
27
|
+
// V2 cannot express that test. `performativeForKind` is not injective — `plain` and `response` BOTH
|
|
28
|
+
// map to INFORM — so a V2 envelope has no way to say "not a response". Translating the V1 rule as
|
|
29
|
+
// `performative === 'INFORM'` would have widened it, and the assistant would start answering
|
|
30
|
+
// replies, including its own. What `kind: 'response'` actually meant is "this has an antecedent",
|
|
31
|
+
// and `inReplyTo` says that directly. Hence the V2 CONFORMANCE REQUIREMENT: a V2 envelope that
|
|
32
|
+
// responds to another MUST carry `inReplyTo`; it is what makes it a response.
|
|
33
|
+
if (isEnvelopeV2(envelope)) {
|
|
34
|
+
if (envelope.performative !== 'INFORM')
|
|
35
|
+
return false;
|
|
36
|
+
if (!isOriginalMessage(envelope))
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
else if (envelope.kind !== 'plain') {
|
|
23
40
|
return false;
|
|
41
|
+
}
|
|
24
42
|
const me = principalAddr.toLowerCase();
|
|
25
43
|
const addrOf = (caip) => (caip.match(/0x[0-9a-fA-F]{40}$/)?.[0] ?? '').toLowerCase();
|
|
26
44
|
if (addrOf(String(envelope.from)) === me)
|
|
@@ -38,7 +56,10 @@ export function inboxAssistantTrigger(assistant, envelope, principalAddr, nowMs)
|
|
|
38
56
|
return false;
|
|
39
57
|
return true;
|
|
40
58
|
}
|
|
41
|
-
/** Pure fixed-window rate decision
|
|
59
|
+
/** Pure fixed-window rate decision — SAME ALGORITHM as `rate-control.fixedWindowAllow`, kept local
|
|
60
|
+
* because `fabric` may not import `rate-control` (not in its allowedImports; adding that edge is an
|
|
61
|
+
* architectural decision, not a cleanup). If you change the boundary condition here, change it
|
|
62
|
+
* there. (spec 328 §3; the same 6/10min semantics as spec 327's
|
|
42
63
|
* per-topic bucket, extracted so the bound is unit-testable without a DO). The caller persists
|
|
43
64
|
* `next` whether or not the dispatch is allowed (denied attempts still consume nothing — the
|
|
44
65
|
* count only advances on allow). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-assistant.js","sourceRoot":"","sources":["../../src/messaging/inbox-assistant.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox-assistant.js","sourceRoot":"","sources":["../../src/messaging/inbox-assistant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export declare const PACKAGE_NAME = "@agenticprimitives/fabric/messaging";
|
|
2
2
|
export declare const PACKAGE_STATUS: "w5-context";
|
|
3
3
|
export declare const SPEC_REF = "specs/309-messaging-and-interactions.md";
|
|
4
|
-
export {
|
|
4
|
+
export { isEnvelopeV2 } from './types.js';
|
|
5
|
+
export { conversationInteractionId, conversationIdFromInteraction, participationModeOfConversation, profileVersionOfConversation, lifecycleStateOfConversation, participationsOfConversation, conversationPins, interactionViewOfConversation, participationModeOfChannel, interactionViewOfChannel, } from './conversation-interaction.js';
|
|
6
|
+
export type { ConversationExchangePins, ConversationInteractionView } from './conversation-interaction.js';
|
|
7
|
+
export { type Hex32, type MessageId, type ConversationId, type ThreadId, type FolderKind, type MessagePriority, type MessageKind, type ContextRefV1, type SignatureProof, type MessageAttachmentRef, type RetentionPolicyRef, type MessageEnvelopeV1, type MessageEnvelopeV2, type AnyMessageEnvelope, type MessageEventType, type MessageEventV1, type InboxItemV1, type ConversationDescriptorV1, type ConversationProfile, type DiscussionTopicV1, type MessageThreadV1, ENDEAVOR_CONTEXT_KIND, endeavorContextRef, } from './types.js';
|
|
5
8
|
export { canonicalizeMessage, sha256Hex32, hashMessageEnvelope, verifyBodyHash, } from './hash.js';
|
|
6
9
|
export { generateMessageId, generateConversationId, generateThreadId, type EnvelopeValidationError, validateMessageEnvelope, MAX_CONTEXT_REFS, } from './envelope.js';
|
|
7
10
|
export { type ConversationValidationError, validateConversationDescriptor, type ConversationSummaryV1, summarizeConversations, } from './conversation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,wCAAwC,CAAC;AAClE,eAAO,MAAM,cAAc,EAAG,YAAqB,CAAC;AACpD,eAAO,MAAM,QAAQ,4CAA4C,CAAC;AAElE,OAAO,EACL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,cAAc,GACf,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,2BAA2B,EAChC,8BAA8B,EAC9B,KAAK,qBAAqB,EAC1B,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,KAAK,YAAY,EACjB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,eAAe,EACpB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAItF,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,iCAAiC,EACtC,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAKtB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"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"}
|
package/dist/messaging/index.js
CHANGED
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
export const PACKAGE_NAME = '@agenticprimitives/fabric/messaging';
|
|
13
13
|
export const PACKAGE_STATUS = 'w5-context';
|
|
14
14
|
export const SPEC_REF = 'specs/309-messaging-and-interactions.md';
|
|
15
|
+
export { isEnvelopeV2 } from './types.js';
|
|
16
|
+
// The vault-backed conversation, read as the Interaction it already is (spec 340 W12). A PROJECTION —
|
|
17
|
+
// nothing is stored twice and nothing migrates.
|
|
18
|
+
export { conversationInteractionId, conversationIdFromInteraction, participationModeOfConversation, profileVersionOfConversation, lifecycleStateOfConversation, participationsOfConversation, conversationPins, interactionViewOfConversation, participationModeOfChannel, interactionViewOfChannel, } from './conversation-interaction.js';
|
|
15
19
|
export { ENDEAVOR_CONTEXT_KIND, endeavorContextRef, } from './types.js';
|
|
16
20
|
export { canonicalizeMessage, sha256Hex32, hashMessageEnvelope, verifyBodyHash, } from './hash.js';
|
|
17
21
|
export { generateMessageId, generateConversationId, generateThreadId, validateMessageEnvelope, MAX_CONTEXT_REFS, } from './envelope.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,2CAA2C;AAC3C,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,wEAAwE;AACxE,0EAA0E;AAC1E,8CAA8C;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,qCAAqC,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,YAAqB,CAAC;AACpD,MAAM,CAAC,MAAM,QAAQ,GAAG,yCAAyC,CAAC;AAElE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,2CAA2C;AAC3C,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,wEAAwE;AACxE,0EAA0E;AAC1E,8CAA8C;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,qCAAqC,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,YAAqB,CAAC;AACpD,MAAM,CAAC,MAAM,QAAQ,GAAG,yCAAyC,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,sGAAsG;AACtG,gDAAgD;AAChD,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAsBL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,cAAc,GACf,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAEhB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEL,8BAA8B,EAE9B,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EAEjB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAML,oBAAoB,EACpB,iBAAiB,EAEjB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,gBAAgB,EAOhB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EAGzB,2BAA2B,EAC3B,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAA6B,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAEtF,mGAAmG;AACnG,iCAAiC;AACjC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAMhB,MAAM,YAAY,CAAC;AAEpB,8FAA8F;AAC9F,8FAA8F;AAC9F,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,GAIzB,MAAM,sBAAsB,CAAC;AAE9B,gGAAgG;AAChG,OAAO,EACL,wBAAwB,EACxB,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AAExB,8FAA8F;AAC9F,gGAAgG;AAChG,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAU1B,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AAEtB,8FAA8F;AAC9F,kGAAkG;AAClG,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GAWtB,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import type { CanonicalAgentId } from '@agenticprimitives/types';
|
|
2
2
|
import type { VaultClassification } from '@agenticprimitives/vault';
|
|
3
|
-
import type { ContextRefV1, FolderKind, InboxItemV1, MessageEnvelopeV1, MessageId, MessageKind, MessagePriority } from './types.js';
|
|
3
|
+
import type { ContextRefV1, FolderKind, InboxItemV1, MessageEnvelopeV1, MessageId, MessageKind, MessagePriority, AnyMessageEnvelope } from './types.js';
|
|
4
|
+
import { type Performative } from '../communicative-act.js';
|
|
4
5
|
/** AND across specified members; any-of within each list. Empty predicate matches all. */
|
|
5
6
|
export interface InboxRulePredicateV1 {
|
|
6
7
|
fromAnyOf?: CanonicalAgentId[];
|
|
8
|
+
/** V1 ONLY. A V2 envelope has no `kind`, and this deliberately does NOT derive one from the
|
|
9
|
+
* performative: `performativeForKind` is not injective, so the inverse would be a guess (ADR-0013).
|
|
10
|
+
* A V1 rule therefore stops matching V2 mail — visibly (the message lands in `inbox` instead of the
|
|
11
|
+
* rule's folder), never dangerously. Use `performativeAnyOf` for rules that must span both. */
|
|
7
12
|
kindAnyOf?: MessageKind[];
|
|
13
|
+
/** Spans both wire versions — V2 states the performative, V1 derives it. */
|
|
14
|
+
performativeAnyOf?: Performative[];
|
|
8
15
|
/** Case-insensitive substring match, any-of. */
|
|
9
16
|
subjectContainsAnyOf?: string[];
|
|
10
17
|
labelAnyOf?: string[];
|
|
@@ -67,7 +74,7 @@ export interface NotificationEventV1 {
|
|
|
67
74
|
export interface NotificationSink {
|
|
68
75
|
notify(event: NotificationEventV1): void | Promise<void>;
|
|
69
76
|
}
|
|
70
|
-
export declare function matchesRulePredicate(predicate: InboxRulePredicateV1, envelope:
|
|
77
|
+
export declare function matchesRulePredicate(predicate: InboxRulePredicateV1, envelope: AnyMessageEnvelope, item: InboxItemV1): boolean;
|
|
71
78
|
export interface RuleApplication {
|
|
72
79
|
item: InboxItemV1;
|
|
73
80
|
/** Empty when suppressed — a matching suppress-notification wins over notify. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/messaging/rules.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/messaging/rules.ts"],"names":[],"mappings":"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"}
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/messaging/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/messaging/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAC;AAmBpB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,cAAc,GACpB,WAAW,CAqDb;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACpD,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;AASvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,wEAAwE;AACxE,SAAS,aAAa,CAAC,QAA2B,EAAE,KAAqB;IACvE,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/messaging/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
@@ -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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"}
|