@agenticprimitives/fabric 0.0.0-alpha.3 → 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.
Files changed (78) hide show
  1. package/CLAUDE.md +12 -2
  2. package/dist/cloudflare/index.d.ts +1 -0
  3. package/dist/cloudflare/index.d.ts.map +1 -1
  4. package/dist/cloudflare/index.js +4 -0
  5. package/dist/cloudflare/index.js.map +1 -1
  6. package/dist/cloudflare/interaction-store.d.ts +55 -0
  7. package/dist/cloudflare/interaction-store.d.ts.map +1 -0
  8. package/dist/cloudflare/interaction-store.js +230 -0
  9. package/dist/cloudflare/interaction-store.js.map +1 -0
  10. package/dist/cloudflare/principal-gateway-do.d.ts +118 -2
  11. package/dist/cloudflare/principal-gateway-do.d.ts.map +1 -1
  12. package/dist/cloudflare/principal-gateway-do.js +182 -7
  13. package/dist/cloudflare/principal-gateway-do.js.map +1 -1
  14. package/dist/communicative-act.d.ts +24 -1
  15. package/dist/communicative-act.d.ts.map +1 -1
  16. package/dist/communicative-act.js +28 -0
  17. package/dist/communicative-act.js.map +1 -1
  18. package/dist/delivery-envelope.d.ts.map +1 -1
  19. package/dist/delivery-envelope.js +0 -1
  20. package/dist/delivery-envelope.js.map +1 -1
  21. package/dist/enum-retirement.d.ts +34 -0
  22. package/dist/enum-retirement.d.ts.map +1 -0
  23. package/dist/enum-retirement.js +87 -0
  24. package/dist/enum-retirement.js.map +1 -0
  25. package/dist/exchange-record.d.ts +19 -3
  26. package/dist/exchange-record.d.ts.map +1 -1
  27. package/dist/exchange-record.js.map +1 -1
  28. package/dist/exchange-reducer.d.ts +33 -0
  29. package/dist/exchange-reducer.d.ts.map +1 -1
  30. package/dist/exchange-reducer.js +48 -0
  31. package/dist/exchange-reducer.js.map +1 -1
  32. package/dist/index.d.ts +14 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +23 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/interaction-machines.d.ts +136 -0
  37. package/dist/interaction-machines.d.ts.map +1 -0
  38. package/dist/interaction-machines.js +174 -0
  39. package/dist/interaction-machines.js.map +1 -0
  40. package/dist/interaction-profile.d.ts +126 -0
  41. package/dist/interaction-profile.d.ts.map +1 -0
  42. package/dist/interaction-profile.js +192 -0
  43. package/dist/interaction-profile.js.map +1 -0
  44. package/dist/interaction-record.d.ts +168 -0
  45. package/dist/interaction-record.d.ts.map +1 -0
  46. package/dist/interaction-record.js +108 -0
  47. package/dist/interaction-record.js.map +1 -0
  48. package/dist/messaging/conversation-interaction.d.ts +66 -0
  49. package/dist/messaging/conversation-interaction.d.ts.map +1 -0
  50. package/dist/messaging/conversation-interaction.js +139 -0
  51. package/dist/messaging/conversation-interaction.js.map +1 -0
  52. package/dist/messaging/inbox-assistant.d.ts +6 -3
  53. package/dist/messaging/inbox-assistant.d.ts.map +1 -1
  54. package/dist/messaging/inbox-assistant.js +23 -2
  55. package/dist/messaging/inbox-assistant.js.map +1 -1
  56. package/dist/messaging/index.d.ts +4 -1
  57. package/dist/messaging/index.d.ts.map +1 -1
  58. package/dist/messaging/index.js +4 -0
  59. package/dist/messaging/index.js.map +1 -1
  60. package/dist/messaging/rules.d.ts +9 -2
  61. package/dist/messaging/rules.d.ts.map +1 -1
  62. package/dist/messaging/rules.js +8 -1
  63. package/dist/messaging/rules.js.map +1 -1
  64. package/dist/messaging/store.d.ts.map +1 -1
  65. package/dist/messaging/store.js +5 -3
  66. package/dist/messaging/store.js.map +1 -1
  67. package/dist/messaging/types.d.ts +30 -0
  68. package/dist/messaging/types.d.ts.map +1 -1
  69. package/dist/messaging/types.js +3 -0
  70. package/dist/messaging/types.js.map +1 -1
  71. package/dist/protocol-binding.d.ts +71 -0
  72. package/dist/protocol-binding.d.ts.map +1 -0
  73. package/dist/protocol-binding.js +0 -0
  74. package/dist/protocol-binding.js.map +1 -0
  75. package/dist/record-catalog.d.ts.map +1 -1
  76. package/dist/record-catalog.js +7 -0
  77. package/dist/record-catalog.js.map +1 -1
  78. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-record.d.ts","sourceRoot":"","sources":["../src/exchange-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exchange-record.d.ts","sourceRoot":"","sources":["../src/exchange-record.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-record.js","sourceRoot":"","sources":["../src/exchange-record.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,6GAA6G;AAC7G,0GAA0G;AAC1G,EAAE;AACF,oGAAoG;AACpG,2GAA2G;AAC3G,6GAA6G;AAC7G,8GAA8G;AAC9G,+EAA+E;AAC/E,EAAE;AACF,4GAA4G;AAC5G,oGAAoG;AAGpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiC3D;;kDAEkD;AAClD,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AA8EtD;uGACuG;AACvG,MAAM,UAAU,OAAO,CAAC,MAAqD;IAC3E,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"exchange-record.js","sourceRoot":"","sources":["../src/exchange-record.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,6GAA6G;AAC7G,0GAA0G;AAC1G,EAAE;AACF,oGAAoG;AACpG,2GAA2G;AAC3G,6GAA6G;AAC7G,8GAA8G;AAC9G,+EAA+E;AAC/E,EAAE;AACF,4GAA4G;AAC5G,oGAAoG;AAGpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAkC3D;;kDAEkD;AAClD,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAiGtD;uGACuG;AACvG,MAAM,UAAU,OAAO,CAAC,MAAqD;IAC3E,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;AAC1C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { type CaseFsmFields } from './case-machine.js';
2
2
  import type { ExchangeRecordV1, ExchangeEventV1 } from './exchange-record.js';
3
+ import type { Hex32 } from './messaging/index.js';
3
4
  export type ExchangeApplyResult = {
4
5
  ok: true;
5
6
  record: ExchangeRecordV1;
@@ -22,4 +23,36 @@ export declare function caseViewFromRecord(record: ExchangeRecordV1): CaseFsmFie
22
23
  * replay (`changed: false`), or a typed rejection.
23
24
  */
24
25
  export declare function applyExchangeEvent(record: ExchangeRecordV1, event: ExchangeEventV1): ExchangeApplyResult;
26
+ /** Bumped ONLY when a fold changes an output for inputs it already accepted. Adding a rejection reason
27
+ * is not a bump; changing what an accepted event does to the record is. */
28
+ export declare const EXCHANGE_REDUCER_VERSION: "ap.exchange-reducer.v1";
29
+ export interface MaterializationProvenanceV1 {
30
+ reducerVersion: typeof EXCHANGE_REDUCER_VERSION;
31
+ /** sha256 over the canonical event array — order-sensitive, because the fold is. */
32
+ eventSetDigest: Hex32;
33
+ eventCount: number;
34
+ }
35
+ /** Digest of the exact event sequence a materialization consumed. Order-sensitive on purpose: the same
36
+ * events in a different order are a different history, and folding them yields a different record. */
37
+ export declare function eventSetDigest(events: readonly ExchangeEventV1[]): Promise<Hex32>;
38
+ export type ExchangeReplayResult = {
39
+ ok: true;
40
+ record: ExchangeRecordV1;
41
+ provenance: MaterializationProvenanceV1;
42
+ } | {
43
+ ok: false;
44
+ reason: string;
45
+ atSeq: number;
46
+ };
47
+ /**
48
+ * Rebuild an exchange from its event stream, and return the state WITH the evidence of how it was
49
+ * built.
50
+ *
51
+ * `seed` is the record as it existed before any event — the identity fields only. Its `events` are
52
+ * ignored and replaced by the fold, so replaying an already-materialized record cannot double-apply.
53
+ *
54
+ * Failure carries `atSeq` rather than just a reason: on a stream of two hundred events, "illegal
55
+ * transition" without the position is not a diagnosis.
56
+ */
57
+ export declare function replayExchange(seed: ExchangeRecordV1, events: readonly ExchangeEventV1[]): Promise<ExchangeReplayResult>;
25
58
  //# sourceMappingURL=exchange-reducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-reducer.d.ts","sourceRoot":"","sources":["../src/exchange-reducer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,GAAG,IAAI,CAajF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,GAAG,mBAAmB,CAiExG"}
1
+ {"version":3,"file":"exchange-reducer.d.ts","sourceRoot":"","sources":["../src/exchange-reducer.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,GAAG,IAAI,CAajF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,GAAG,mBAAmB,CAiExG;AAaD;4EAC4E;AAC5E,eAAO,MAAM,wBAAwB,EAAG,wBAAiC,CAAC;AAE1E,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,OAAO,wBAAwB,CAAC;IAChD,oFAAoF;IACpF,cAAc,EAAE,KAAK,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;uGACuG;AACvG,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAEvF;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,2BAA2B,CAAA;CAAE,GAC/E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,SAAS,eAAe,EAAE,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAgB/B"}
@@ -13,8 +13,10 @@
13
13
  //
14
14
  // Fail-closed: an illegal case transition, an inconsistent transport move, or a seq gap is a typed rejection,
15
15
  // never a silent state change. Idempotent: a replayed event (same `idempotencyKey`) is a no-op.
16
+ import { canonicalizeJson } from '@agenticprimitives/types';
16
17
  import { canTaskTransition, expectedExecForCase, isExecCaseConsistent } from './exchange-state.js';
17
18
  import { applyCaseTransition } from './case-machine.js';
19
+ import { sha256Hex32 } from './messaging/index.js';
18
20
  /**
19
21
  * Derive the transient case FSM view from a lean `ExchangeRecordV1` (option (a) — the record stays the lean
20
22
  * spine; the case view is constructed only when applying a transition). Role convention: `requester` = the
@@ -105,4 +107,50 @@ export function applyExchangeEvent(record, event) {
105
107
  }
106
108
  }
107
109
  }
110
+ // ─── Materialization provenance (spec 340 INV-340-8) ─────────────────────────
111
+ //
112
+ // "Materialized state rebuilds deterministically from signed events" is a claim, and a claim nobody can
113
+ // check is a hope. Two things make it checkable, and both must travel WITH the rebuilt state:
114
+ //
115
+ // eventSetDigest — WHICH events produced this. Without it, a state that silently dropped an event
116
+ // and a state that legitimately never received one are indistinguishable.
117
+ // reducerVersion — WHICH rules produced this. Two nodes on different reducer versions can fold the
118
+ // same events into different states and both be internally consistent; the
119
+ // disagreement then looks like data corruption instead of a version skew.
120
+ /** Bumped ONLY when a fold changes an output for inputs it already accepted. Adding a rejection reason
121
+ * is not a bump; changing what an accepted event does to the record is. */
122
+ export const EXCHANGE_REDUCER_VERSION = 'ap.exchange-reducer.v1';
123
+ /** Digest of the exact event sequence a materialization consumed. Order-sensitive on purpose: the same
124
+ * events in a different order are a different history, and folding them yields a different record. */
125
+ export async function eventSetDigest(events) {
126
+ return sha256Hex32(canonicalizeJson(events));
127
+ }
128
+ /**
129
+ * Rebuild an exchange from its event stream, and return the state WITH the evidence of how it was
130
+ * built.
131
+ *
132
+ * `seed` is the record as it existed before any event — the identity fields only. Its `events` are
133
+ * ignored and replaced by the fold, so replaying an already-materialized record cannot double-apply.
134
+ *
135
+ * Failure carries `atSeq` rather than just a reason: on a stream of two hundred events, "illegal
136
+ * transition" without the position is not a diagnosis.
137
+ */
138
+ export async function replayExchange(seed, events) {
139
+ let record = { ...seed, events: [] };
140
+ for (const event of events) {
141
+ const res = applyExchangeEvent(record, event);
142
+ if (!res.ok)
143
+ return { ok: false, reason: res.reason, atSeq: event.seq };
144
+ record = res.record;
145
+ }
146
+ return {
147
+ ok: true,
148
+ record,
149
+ provenance: {
150
+ reducerVersion: EXCHANGE_REDUCER_VERSION,
151
+ eventSetDigest: await eventSetDigest(events),
152
+ eventCount: events.length,
153
+ },
154
+ };
155
+ }
108
156
  //# sourceMappingURL=exchange-reducer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-reducer.js","sourceRoot":"","sources":["../src/exchange-reducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exchange-reducer.js","sourceRoot":"","sources":["../src/exchange-reducer.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,20 @@ export { applyCaseTransition, isTerminalCaseState, TERMINAL_CASE_STATES, } from
8
8
  export type { FabricCaseV1, CaseFsmFields, CaseTransition, CaseTransitionEventV1, CaseResult, CaseRejection, } from './case-machine.js';
9
9
  export { applyExchangeEvent, caseViewFromRecord } from './exchange-reducer.js';
10
10
  export type { ExchangeApplyResult } from './exchange-reducer.js';
11
+ export { EXCHANGE_REDUCER_VERSION, eventSetDigest, replayExchange } from './exchange-reducer.js';
12
+ export type { MaterializationProvenanceV1, ExchangeReplayResult } from './exchange-reducer.js';
13
+ export { PROTOCOL, looksCanonical, bindProtocol, bindingKey, buildBindingIndex, resolveInteractionByBinding, topicInteractionId, channelIdFromTopicInteraction, } from './protocol-binding.js';
14
+ export type { ProtocolBindingV1, BindingRejection, BindingIndex, BindingResolution } from './protocol-binding.js';
15
+ export { PROFILE_FOR_MESSAGE_KIND, MACHINE_FOR_CASE_STATE, machinesSpannedByCaseState } from './enum-retirement.js';
16
+ export type { OwningMachine } from './enum-retirement.js';
17
+ export { checkExchangeAgainstProfile, profileFor, PROFILE_LIBRARY, DIRECT_PROFILE, NEGOTIATION_PROFILE, CONSULTATION_PROFILE, ENGAGEMENT_PROFILE, TOPIC_PROFILE, ENGAGEMENT_RESPONSE_KIND_AXES, } from './interaction-profile.js';
18
+ export type { InteractionProfileV1, ProfileViolation, ExchangeUnderProfile, } from './interaction-profile.js';
19
+ export { applyInboxTransition, applyInteractionTransition, applyDecisionTransition, applyCommitmentTransition, mayDischargeOnExecution, TERMINAL_INTERACTION_STATES, TERMINAL_DECISION_STATES, TERMINAL_COMMITMENT_STATES, } from './interaction-machines.js';
20
+ export type { MachineRejection, MachineResult, InboxState, InboxTransition, InboxEntryV1, InteractionState, InteractionTransition, InteractionLifecycleV1, DecisionState, DecisionTransition, DecisionRecordV1, CommitmentState, CommitmentTransition, CommitmentRecordV1, } from './interaction-machines.js';
21
+ export { isProfileVersion, isFloatingVersion, checkReproducible, assertReproducible, hashContextSnapshot, buildContextSnapshot, verifyContextSnapshot, participantsAt, detectProfileDowngrades, } from './interaction-record.js';
22
+ export type { InteractionId, InteractionRecordV1, ProfileVersion, ParticipationV1, ContextDigest, ContextReferenceV1, ContextSnapshotV1, ContextReproducibilityFailure, ProfileDowngrade, } from './interaction-record.js';
23
+ export { conversationInteractionId, conversationIdFromInteraction, participationModeOfConversation, profileVersionOfConversation, participationsOfConversation, conversationPins, interactionViewOfConversation, participationModeOfChannel, interactionViewOfChannel, } from './messaging/conversation-interaction.js';
24
+ export type { ConversationExchangePins, ConversationInteractionView } from './messaging/conversation-interaction.js';
11
25
  export { projectInboxItem, applyMessageEvent, applyInboxRules, createInMemoryInboxProjector, } from './inbox-projection.js';
12
26
  export type { InboxProjectionEvent, InboxItemV1, InboxRuleV1, InboxProjector, CreateInboxProjectorOpts, FolderKind, } from './inbox-projection.js';
13
27
  export { buildGatewaySurfaceCommitment, hashGatewaySurfaceCommitment, verifyGatewaySurfaceCommitment, } from './gateway-surface.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzF,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,cAAc,EACd,wBAAwB,EACxB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIpF,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,6 +15,29 @@ export { performativeForKind } from './communicative-act.js';
15
15
  export { applyCaseTransition, isTerminalCaseState, TERMINAL_CASE_STATES, } from './case-machine.js';
16
16
  // The unified exchange-event reducer (spec 316 §b/§2) — one append-only stream, one reducer over the record.
17
17
  export { applyExchangeEvent, caseViewFromRecord } from './exchange-reducer.js';
18
+ // Materialization provenance (spec 340 INV-340-8) — rebuilt state travels WITH which events and which
19
+ // rules produced it, so a dropped event and a never-received one stop looking identical.
20
+ export { EXCHANGE_REDUCER_VERSION, eventSetDigest, replayExchange } from './exchange-reducer.js';
21
+ // Protocol bindings (spec 340 §11 / W5) — foreign keys into other protocols' namespaces, NEVER our
22
+ // canonical ids. Resolution returns a typed ambiguity rather than a first match: cross-wiring two
23
+ // interactions merges two participant sets, two commitment ledgers and two audit trails.
24
+ export { PROTOCOL, looksCanonical, bindProtocol, bindingKey, buildBindingIndex, resolveInteractionByBinding, topicInteractionId, channelIdFromTopicInteraction, } from './protocol-binding.js';
25
+ // TRANSITIONAL (spec 340 W5) — the MessageKind/CaseState retirement path. This module exists to be
26
+ // deleted; both enums are still live, and the total compiler-checked mapping is what makes the later
27
+ // removal mechanical instead of a judgement call per call site.
28
+ export { PROFILE_FOR_MESSAGE_KIND, MACHINE_FOR_CASE_STATE, machinesSpannedByCaseState } from './enum-retirement.js';
29
+ // The profile mechanism (spec 340 W4) — what replaces the frozen MessageKind/CaseState enums. A new
30
+ // interaction type is DATA, not a schema change. A profile permits nothing.
31
+ export { checkExchangeAgainstProfile, profileFor, PROFILE_LIBRARY, DIRECT_PROFILE, NEGOTIATION_PROFILE, CONSULTATION_PROFILE, ENGAGEMENT_PROFILE, TOPIC_PROFILE, ENGAGEMENT_RESPONSE_KIND_AXES, } from './interaction-profile.js';
32
+ // The four state machines spec 340 §5 named and the fabric did not have (W3). Six, never collapsed:
33
+ // delivery · inbox · interaction · decision · commitment · execution. None of them is authority.
34
+ export { applyInboxTransition, applyInteractionTransition, applyDecisionTransition, applyCommitmentTransition, mayDischargeOnExecution, TERMINAL_INTERACTION_STATES, TERMINAL_DECISION_STATES, TERMINAL_COMMITMENT_STATES, } from './interaction-machines.js';
35
+ // The durable governed situation (spec 340 W2; ADR-0058). The aggregate an Exchange occurs IN — an
36
+ // Exchange without one is a message, which is a legitimate state and why the pins are optional.
37
+ export { isProfileVersion, isFloatingVersion, checkReproducible, assertReproducible, hashContextSnapshot, buildContextSnapshot, verifyContextSnapshot, participantsAt, detectProfileDowngrades, } from './interaction-record.js';
38
+ // The vault-backed conversation as an Interaction (spec 340 W12) — the projection `demo-a2a`'s live
39
+ // board path uses. W11 wired the DO-SQL channel store, which no app runs; this reaches the one that does.
40
+ export { conversationInteractionId, conversationIdFromInteraction, participationModeOfConversation, profileVersionOfConversation, participationsOfConversation, conversationPins, interactionViewOfConversation, participationModeOfChannel, interactionViewOfChannel, } from './messaging/conversation-interaction.js';
18
41
  // Inbox projection (spec 316 §b) — the vault-resident inbox row projected from the message-event slice.
19
42
  export { projectInboxItem, applyMessageEvent, applyInboxRules, createInMemoryInboxProjector, } from './inbox-projection.js';
20
43
  // Gateway surface commitment (spec 316 §4.1 / W4 — decentralized discovery; the atl:gatewayRoot preimage).
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,sGAAsG;AACtG,oGAAoG;AACpG,8EAA8E;AAC9E,EAAE;AACF,qGAAqG;AACrG,oFAAoF;AAEpF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAG7B,6GAA6G;AAC7G,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAUzF,0GAA0G;AAC1G,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAQ7D,0GAA0G;AAC1G,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAU3B,6GAA6G;AAC7G,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG/E,wGAAwG;AACxG,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAU/B,2GAA2G;AAC3G,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAG9B,sFAAsF;AACtF,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAGhC,mGAAmG;AACnG,yFAAyF;AACzF,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AAExB,iGAAiG;AACjG,uFAAuF;AACvF,OAAO,EAAE,cAAc,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import type { CanonicalAgentId } from '@agenticprimitives/types';
2
+ import type { InteractionId, ParticipationV1 } from './interaction-record.js';
3
+ /** Shared rejection vocabulary. Every machine is fail-closed: an unknown or ill-timed move is a TYPED
4
+ * rejection, never a silent no-op, because a silent no-op is indistinguishable from success. */
5
+ export type MachineRejection = 'invalid-transition' | 'unauthorized-actor' | 'terminal-state' | 'wrong-subject';
6
+ export type MachineResult<T> = {
7
+ ok: true;
8
+ next: T;
9
+ } | {
10
+ ok: false;
11
+ reason: MachineRejection;
12
+ };
13
+ /**
14
+ * What one participant's client has done with an exchange. Deliberately separate from delivery: two
15
+ * recipients of the same exchange have different inbox states, and neither is a fact about the
16
+ * exchange itself.
17
+ *
18
+ * `read` is the state ADR-0058 §16 is most careful about. It means a client marked something read. It
19
+ * is not comprehension, not acknowledgement, not consent, and not acceptance.
20
+ */
21
+ export type InboxState = 'unread' | 'read' | 'archived' | 'deleted';
22
+ export type InboxTransition = 'mark-read' | 'mark-unread' | 'archive' | 'restore' | 'delete';
23
+ export interface InboxEntryV1 {
24
+ /** WHOSE inbox. The state belongs to this viewer alone. */
25
+ viewer: CanonicalAgentId;
26
+ exchangeId: string;
27
+ state: InboxState;
28
+ updatedAt: string;
29
+ }
30
+ /**
31
+ * Only the viewer moves their own inbox state.
32
+ *
33
+ * `deleted` is a tombstone, not an erasure: `restore` can bring it back, and the exchange itself is
34
+ * untouched. One participant deleting their copy must never remove the record other participants and
35
+ * the audit trail depend on.
36
+ */
37
+ export declare function applyInboxTransition(entry: InboxEntryV1, event: {
38
+ transition: InboxTransition;
39
+ actor: CanonicalAgentId;
40
+ at: string;
41
+ }): MachineResult<InboxEntryV1>;
42
+ export type InteractionState = 'forming' | 'active' | 'suspended' | 'concluded' | 'abandoned';
43
+ export type InteractionTransition = 'open' | 'suspend' | 'resume' | 'conclude' | 'abandon';
44
+ export declare const TERMINAL_INTERACTION_STATES: readonly InteractionState[];
45
+ export interface InteractionLifecycleV1 {
46
+ interactionId: InteractionId;
47
+ state: InteractionState;
48
+ /** The SA custodying the interaction. Ending it is a custodial act, not a participant's. */
49
+ principal: CanonicalAgentId;
50
+ participations: readonly ParticipationV1[];
51
+ updatedAt: string;
52
+ }
53
+ /**
54
+ * Ending an interaction is CUSTODIAL — the principal, not any participant. A counterparty who could
55
+ * conclude a negotiation could end it the moment it stopped favouring them.
56
+ *
57
+ * Concluding does NOT touch commitments. That separation is the entire reason this machine and the
58
+ * commitment machine are distinct: otherwise closing a conversation quietly voids what was promised
59
+ * in it, and the party who benefits from that is exactly the party who closes it.
60
+ */
61
+ export declare function applyInteractionTransition(lifecycle: InteractionLifecycleV1, event: {
62
+ transition: InteractionTransition;
63
+ actor: CanonicalAgentId;
64
+ at: string;
65
+ }): MachineResult<InteractionLifecycleV1>;
66
+ /**
67
+ * A determination's own lifecycle, separate from the work it may authorize.
68
+ *
69
+ * `granted` means a decision was recorded. It does not mean anything ran, and it does not by itself
70
+ * permit anything — the authority re-check happens at the moment of acting regardless of what this
71
+ * says (ADR-0041). A `DecisionReceipt` attests that a decision was made, never that it was executed.
72
+ */
73
+ export type DecisionState = 'pending' | 'granted' | 'refused' | 'withdrawn' | 'expired' | 'superseded';
74
+ export type DecisionTransition = 'grant' | 'refuse' | 'withdraw' | 'expire' | 'supersede';
75
+ export declare const TERMINAL_DECISION_STATES: readonly DecisionState[];
76
+ export interface DecisionRecordV1 {
77
+ decisionId: string;
78
+ state: DecisionState;
79
+ /** Whose determination this is. */
80
+ decider: CanonicalAgentId;
81
+ /** What it is about — an exchange, an act, a request. */
82
+ subject: string;
83
+ decidedAt?: string;
84
+ expiresAt?: string;
85
+ updatedAt: string;
86
+ }
87
+ /** Only the decider moves their own decision. `expire` is the exception: time is not an actor, so any
88
+ * party may record that the deadline passed, and only once it actually has. */
89
+ export declare function applyDecisionTransition(decision: DecisionRecordV1, event: {
90
+ transition: DecisionTransition;
91
+ actor: CanonicalAgentId;
92
+ at: string;
93
+ subject?: string;
94
+ }): MachineResult<DecisionRecordV1>;
95
+ /**
96
+ * A normative obligation with a debtor, a creditor and its own lifecycle.
97
+ *
98
+ * The two states doing the real work are `fulfilment-claimed` and `discharged`, and they are separate
99
+ * because the debtor saying "done" and the obligation ENDING are different facts with different
100
+ * signers. Collapsing them lets the party who owes the obligation declare it satisfied — which is the
101
+ * failure ADR-0058 §15 names when it says workflow completion discharges nothing on its own.
102
+ */
103
+ export type CommitmentState = 'proposed' | 'active' | 'fulfilment-claimed' | 'discharged' | 'breached' | 'void';
104
+ export type CommitmentTransition = 'activate' | 'claim-fulfilment' | 'dispute-claim' | 'discharge' | 'assert-breach' | 'void';
105
+ export declare const TERMINAL_COMMITMENT_STATES: readonly CommitmentState[];
106
+ export interface CommitmentRecordV1 {
107
+ commitmentId: string;
108
+ state: CommitmentState;
109
+ /** Who owes. */
110
+ debtor: CanonicalAgentId;
111
+ /** Who is owed. */
112
+ creditor: CanonicalAgentId;
113
+ /** The Offer this obligation came from — an Offer is not a Commitment (ADR-0058 §15). */
114
+ fromOffer?: string;
115
+ updatedAt: string;
116
+ }
117
+ export declare function applyCommitmentTransition(commitment: CommitmentRecordV1, event: {
118
+ transition: CommitmentTransition;
119
+ actor: CanonicalAgentId;
120
+ at: string;
121
+ }): MachineResult<CommitmentRecordV1>;
122
+ /**
123
+ * Whether finishing the work discharges the obligation.
124
+ *
125
+ * The answer is NO unless the profile says otherwise, and this function exists so that answer has a
126
+ * name a caller can find instead of an assumption a caller can make. A profile MAY declare
127
+ * auto-discharge for obligations whose fulfilment is objectively observable (a payment settling); it
128
+ * MUST NOT for anything requiring the creditor's judgement, which is most things.
129
+ *
130
+ * There is no code path from an execution event to a commitment transition. That is deliberate: the
131
+ * link has to be written by a profile that chose it, so the choice appears in a diff.
132
+ */
133
+ export declare function mayDischargeOnExecution(profile: {
134
+ autoDischargeOnExecution?: boolean;
135
+ }): boolean;
136
+ //# sourceMappingURL=interaction-machines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-machines.d.ts","sourceRoot":"","sources":["../src/interaction-machines.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE9E;iGACiG;AACjG,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,eAAe,CAAC;AAEpB,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAI/F;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7F,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE;IAAE,UAAU,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1E,aAAa,CAAC,YAAY,CAAC,CAM7B;AAID,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9F,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3F,eAAO,MAAM,2BAA2B,EAAE,SAAS,gBAAgB,EAA+B,CAAC;AAEnG,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,gBAAgB,CAAC;IACxB,4FAA4F;IAC5F,SAAS,EAAE,gBAAgB,CAAC;IAC5B,cAAc,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAE;IAAE,UAAU,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChF,aAAa,CAAC,sBAAsB,CAAC,CAevC;AAID;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAEvG,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE1F,eAAO,MAAM,wBAAwB,EAAE,SAAS,aAAa,EAE5D,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,mCAAmC;IACnC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD;gFACgF;AAChF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/F,aAAa,CAAC,gBAAgB,CAAC,CAyBjC;AAID;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,QAAQ,GACR,oBAAoB,GACpB,YAAY,GACZ,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAC5B,UAAU,GACV,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,eAAe,GACf,MAAM,CAAC;AAEX,eAAO,MAAM,0BAA0B,EAAE,SAAS,eAAe,EAAuC,CAAC;AAEzG,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC;IACvB,gBAAgB;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,mBAAmB;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE;IAAE,UAAU,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/E,aAAa,CAAC,kBAAkB,CAAC,CAYnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAEhG"}
@@ -0,0 +1,174 @@
1
+ // The four state machines spec 340 §5 names and the fabric did not have.
2
+ //
3
+ // Six machines, never collapsed: `delivery · inbox · interaction · decision · commitment · execution`.
4
+ // Two exist — `ExecState` (delivery/transport) and `CaseState` (execution substate). These are the
5
+ // other four.
6
+ //
7
+ // WHY SIX AND NOT ONE. A single `status` field forces every question through one answer, and the
8
+ // answers genuinely differ. The chain that must never be short-circuited:
9
+ //
10
+ // delivered ≠ admitted ≠ authenticated ≠ canonical-agent-bound ≠ authorized ≠ executed ≠ completed
11
+ //
12
+ // Each collapse below is a real, specific misreading — not a theoretical one:
13
+ //
14
+ // inbox into delivery → "they read it" becomes "they agreed". Read state is PER-VIEWER and
15
+ // proves only that a client marked something read (ADR-0058 §16).
16
+ // decision into execution → a granted decision reads as work done. Deciding is not doing.
17
+ // commitment into execution → finishing the work discharges the obligation. It does not, unless the
18
+ // profile's discharge conditions are met (ADR-0058 §15) — which is why
19
+ // `claim-fulfilment` and `discharge` are two states with two signers.
20
+ // interaction into case → concluding a conversation silently voids what was promised in it.
21
+ //
22
+ // NONE OF THESE MACHINES IS AUTHORITY. They record what a situation IS, never what a party MAY do.
23
+ // A transition being legal here says nothing about whether the actor was permitted to make it —
24
+ // that is `delegation` + `entitlements` + `tool-policy`, re-evaluated at the moment of acting
25
+ // (ADR-0041, ADR-0043). The role checks below are integrity checks on the record's own shape
26
+ // ("the creditor releases their own claim"), not permission grants.
27
+ const INBOX_TRANSITIONS = {
28
+ 'mark-read': { from: ['unread', 'archived'], to: 'read' },
29
+ // Reversible on purpose: marking unread is a UI affordance, and a machine that forbade it would push
30
+ // clients into tracking read state somewhere this machine could not see.
31
+ 'mark-unread': { from: ['read', 'archived'], to: 'unread' },
32
+ archive: { from: ['unread', 'read'], to: 'archived' },
33
+ restore: { from: ['archived', 'deleted'], to: 'read' },
34
+ delete: { from: ['unread', 'read', 'archived'], to: 'deleted' },
35
+ };
36
+ /**
37
+ * Only the viewer moves their own inbox state.
38
+ *
39
+ * `deleted` is a tombstone, not an erasure: `restore` can bring it back, and the exchange itself is
40
+ * untouched. One participant deleting their copy must never remove the record other participants and
41
+ * the audit trail depend on.
42
+ */
43
+ export function applyInboxTransition(entry, event) {
44
+ if (event.actor !== entry.viewer)
45
+ return { ok: false, reason: 'unauthorized-actor' };
46
+ const spec = INBOX_TRANSITIONS[event.transition];
47
+ if (!spec)
48
+ return { ok: false, reason: 'invalid-transition' };
49
+ if (!spec.from.includes(entry.state))
50
+ return { ok: false, reason: 'invalid-transition' };
51
+ return { ok: true, next: { ...entry, state: spec.to, updatedAt: event.at } };
52
+ }
53
+ export const TERMINAL_INTERACTION_STATES = ['concluded', 'abandoned'];
54
+ const INTERACTION_TRANSITIONS = {
55
+ open: { from: ['forming'], to: 'active', custodialOnly: false },
56
+ suspend: { from: ['active'], to: 'suspended', custodialOnly: true },
57
+ resume: { from: ['suspended'], to: 'active', custodialOnly: true },
58
+ conclude: { from: ['active', 'suspended'], to: 'concluded', custodialOnly: true },
59
+ abandon: { from: ['forming', 'active', 'suspended'], to: 'abandoned', custodialOnly: true },
60
+ };
61
+ /**
62
+ * Ending an interaction is CUSTODIAL — the principal, not any participant. A counterparty who could
63
+ * conclude a negotiation could end it the moment it stopped favouring them.
64
+ *
65
+ * Concluding does NOT touch commitments. That separation is the entire reason this machine and the
66
+ * commitment machine are distinct: otherwise closing a conversation quietly voids what was promised
67
+ * in it, and the party who benefits from that is exactly the party who closes it.
68
+ */
69
+ export function applyInteractionTransition(lifecycle, event) {
70
+ const spec = INTERACTION_TRANSITIONS[event.transition];
71
+ if (!spec)
72
+ return { ok: false, reason: 'invalid-transition' };
73
+ if (TERMINAL_INTERACTION_STATES.includes(lifecycle.state))
74
+ return { ok: false, reason: 'terminal-state' };
75
+ if (!spec.from.includes(lifecycle.state))
76
+ return { ok: false, reason: 'invalid-transition' };
77
+ if (spec.custodialOnly) {
78
+ if (event.actor !== lifecycle.principal)
79
+ return { ok: false, reason: 'unauthorized-actor' };
80
+ }
81
+ else {
82
+ const isParticipant = lifecycle.participations.some((p) => p.agent === event.actor && p.leftAt === undefined);
83
+ if (!isParticipant && event.actor !== lifecycle.principal)
84
+ return { ok: false, reason: 'unauthorized-actor' };
85
+ }
86
+ return { ok: true, next: { ...lifecycle, state: spec.to, updatedAt: event.at } };
87
+ }
88
+ export const TERMINAL_DECISION_STATES = [
89
+ 'refused', 'withdrawn', 'expired', 'superseded',
90
+ ];
91
+ const DECISION_TRANSITIONS = {
92
+ grant: { from: ['pending'], to: 'granted' },
93
+ refuse: { from: ['pending'], to: 'refused' },
94
+ // A GRANT may be withdrawn; a refusal may not be "un-refused" into nothing — reversing a refusal is
95
+ // a NEW decision, so the trail shows both rather than one mutable verdict.
96
+ withdraw: { from: ['pending', 'granted'], to: 'withdrawn' },
97
+ expire: { from: ['pending', 'granted'], to: 'expired' },
98
+ supersede: { from: ['pending', 'granted'], to: 'superseded' },
99
+ };
100
+ /** Only the decider moves their own decision. `expire` is the exception: time is not an actor, so any
101
+ * party may record that the deadline passed, and only once it actually has. */
102
+ export function applyDecisionTransition(decision, event) {
103
+ if (event.subject !== undefined && event.subject !== decision.subject) {
104
+ return { ok: false, reason: 'wrong-subject' };
105
+ }
106
+ const spec = DECISION_TRANSITIONS[event.transition];
107
+ if (!spec)
108
+ return { ok: false, reason: 'invalid-transition' };
109
+ if (!spec.from.includes(decision.state)) {
110
+ return { ok: false, reason: TERMINAL_DECISION_STATES.includes(decision.state) ? 'terminal-state' : 'invalid-transition' };
111
+ }
112
+ if (event.transition === 'expire') {
113
+ if (decision.expiresAt === undefined || Date.parse(event.at) < Date.parse(decision.expiresAt)) {
114
+ return { ok: false, reason: 'invalid-transition' };
115
+ }
116
+ }
117
+ else if (event.actor !== decision.decider) {
118
+ return { ok: false, reason: 'unauthorized-actor' };
119
+ }
120
+ return {
121
+ ok: true,
122
+ next: {
123
+ ...decision,
124
+ state: spec.to,
125
+ decidedAt: spec.to === 'granted' || spec.to === 'refused' ? event.at : decision.decidedAt,
126
+ updatedAt: event.at,
127
+ },
128
+ };
129
+ }
130
+ export const TERMINAL_COMMITMENT_STATES = ['discharged', 'breached', 'void'];
131
+ const COMMITMENT_TRANSITIONS = {
132
+ // Activation follows a VALID, authorized Accept. This machine records that it happened; it does not
133
+ // judge the acceptance — acceptance by an unauthorized party creates nothing, and the check for that
134
+ // lives in the authority layer, which is why no amount of calling `activate` here can substitute.
135
+ activate: { from: ['proposed'], to: 'active', signers: ['creditor'] },
136
+ 'claim-fulfilment': { from: ['active'], to: 'fulfilment-claimed', signers: ['debtor'] },
137
+ 'dispute-claim': { from: ['fulfilment-claimed'], to: 'active', signers: ['creditor'] },
138
+ discharge: { from: ['active', 'fulfilment-claimed'], to: 'discharged', signers: ['creditor'] },
139
+ 'assert-breach': { from: ['active', 'fulfilment-claimed'], to: 'breached', signers: ['creditor'] },
140
+ // Only the creditor voids: giving up your own claim is yours to do; cancelling what you owe is not.
141
+ void: { from: ['proposed', 'active'], to: 'void', signers: ['creditor'] },
142
+ };
143
+ export function applyCommitmentTransition(commitment, event) {
144
+ const spec = COMMITMENT_TRANSITIONS[event.transition];
145
+ if (!spec)
146
+ return { ok: false, reason: 'invalid-transition' };
147
+ if (TERMINAL_COMMITMENT_STATES.includes(commitment.state))
148
+ return { ok: false, reason: 'terminal-state' };
149
+ if (!spec.from.includes(commitment.state))
150
+ return { ok: false, reason: 'invalid-transition' };
151
+ const parties = new Set();
152
+ if (event.actor === commitment.debtor)
153
+ parties.add('debtor');
154
+ if (event.actor === commitment.creditor)
155
+ parties.add('creditor');
156
+ if (!spec.signers.some((p) => parties.has(p)))
157
+ return { ok: false, reason: 'unauthorized-actor' };
158
+ return { ok: true, next: { ...commitment, state: spec.to, updatedAt: event.at } };
159
+ }
160
+ /**
161
+ * Whether finishing the work discharges the obligation.
162
+ *
163
+ * The answer is NO unless the profile says otherwise, and this function exists so that answer has a
164
+ * name a caller can find instead of an assumption a caller can make. A profile MAY declare
165
+ * auto-discharge for obligations whose fulfilment is objectively observable (a payment settling); it
166
+ * MUST NOT for anything requiring the creditor's judgement, which is most things.
167
+ *
168
+ * There is no code path from an execution event to a commitment transition. That is deliberate: the
169
+ * link has to be written by a profile that chose it, so the choice appears in a diff.
170
+ */
171
+ export function mayDischargeOnExecution(profile) {
172
+ return profile.autoDischargeOnExecution === true;
173
+ }
174
+ //# sourceMappingURL=interaction-machines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-machines.js","sourceRoot":"","sources":["../src/interaction-machines.ts"],"names":[],"mappings":"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"}