@econ-v1/domain 0.0.0

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 (173) hide show
  1. package/dist/errors/index.d.ts +41 -0
  2. package/dist/errors/index.d.ts.map +1 -0
  3. package/dist/errors/index.js +45 -0
  4. package/dist/errors/index.js.map +1 -0
  5. package/dist/events/index.d.ts +55 -0
  6. package/dist/events/index.d.ts.map +1 -0
  7. package/dist/events/index.js +17 -0
  8. package/dist/events/index.js.map +1 -0
  9. package/dist/index.d.ts +47 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +24 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/models/agent.d.ts +12 -0
  14. package/dist/models/agent.d.ts.map +1 -0
  15. package/dist/models/agent.js +17 -0
  16. package/dist/models/agent.js.map +1 -0
  17. package/dist/models/conversation.d.ts +3 -0
  18. package/dist/models/conversation.d.ts.map +1 -0
  19. package/dist/models/conversation.js +2 -0
  20. package/dist/models/conversation.js.map +1 -0
  21. package/dist/models/delegation.d.ts +4 -0
  22. package/dist/models/delegation.d.ts.map +1 -0
  23. package/dist/models/delegation.js +23 -0
  24. package/dist/models/delegation.js.map +1 -0
  25. package/dist/models/device-identity.d.ts +4 -0
  26. package/dist/models/device-identity.d.ts.map +1 -0
  27. package/dist/models/device-identity.js +53 -0
  28. package/dist/models/device-identity.js.map +1 -0
  29. package/dist/models/graph.d.ts +20 -0
  30. package/dist/models/graph.d.ts.map +1 -0
  31. package/dist/models/graph.js +30 -0
  32. package/dist/models/graph.js.map +1 -0
  33. package/dist/models/index.d.ts +18 -0
  34. package/dist/models/index.d.ts.map +1 -0
  35. package/dist/models/index.js +8 -0
  36. package/dist/models/index.js.map +1 -0
  37. package/dist/models/json.d.ts +8 -0
  38. package/dist/models/json.d.ts.map +1 -0
  39. package/dist/models/json.js +2 -0
  40. package/dist/models/json.js.map +1 -0
  41. package/dist/models/l402.d.ts +15 -0
  42. package/dist/models/l402.d.ts.map +1 -0
  43. package/dist/models/l402.js +2 -0
  44. package/dist/models/l402.js.map +1 -0
  45. package/dist/models/live-query-definition.d.ts +22 -0
  46. package/dist/models/live-query-definition.d.ts.map +1 -0
  47. package/dist/models/live-query-definition.js +2 -0
  48. package/dist/models/live-query-definition.js.map +1 -0
  49. package/dist/models/outbox-intent.d.ts +10 -0
  50. package/dist/models/outbox-intent.d.ts.map +1 -0
  51. package/dist/models/outbox-intent.js +2 -0
  52. package/dist/models/outbox-intent.js.map +1 -0
  53. package/dist/models/outbox.d.ts +50 -0
  54. package/dist/models/outbox.d.ts.map +1 -0
  55. package/dist/models/outbox.js +133 -0
  56. package/dist/models/outbox.js.map +1 -0
  57. package/dist/models/owner-views.d.ts +67 -0
  58. package/dist/models/owner-views.d.ts.map +1 -0
  59. package/dist/models/owner-views.js +7 -0
  60. package/dist/models/owner-views.js.map +1 -0
  61. package/dist/models/payment.d.ts +32 -0
  62. package/dist/models/payment.d.ts.map +1 -0
  63. package/dist/models/payment.js +3 -0
  64. package/dist/models/payment.js.map +1 -0
  65. package/dist/models/query-diff.d.ts +7 -0
  66. package/dist/models/query-diff.d.ts.map +1 -0
  67. package/dist/models/query-diff.js +2 -0
  68. package/dist/models/query-diff.js.map +1 -0
  69. package/dist/models/repository-write.d.ts +7 -0
  70. package/dist/models/repository-write.d.ts.map +1 -0
  71. package/dist/models/repository-write.js +2 -0
  72. package/dist/models/repository-write.js.map +1 -0
  73. package/dist/models/revisioned-commands.d.ts +24 -0
  74. package/dist/models/revisioned-commands.d.ts.map +1 -0
  75. package/dist/models/revisioned-commands.js +35 -0
  76. package/dist/models/revisioned-commands.js.map +1 -0
  77. package/dist/models/revisioned.d.ts +19 -0
  78. package/dist/models/revisioned.d.ts.map +1 -0
  79. package/dist/models/revisioned.js +2 -0
  80. package/dist/models/revisioned.js.map +1 -0
  81. package/dist/models/settings.d.ts +5 -0
  82. package/dist/models/settings.d.ts.map +1 -0
  83. package/dist/models/settings.js +2 -0
  84. package/dist/models/settings.js.map +1 -0
  85. package/dist/models/sync.d.ts +50 -0
  86. package/dist/models/sync.d.ts.map +1 -0
  87. package/dist/models/sync.js +2 -0
  88. package/dist/models/sync.js.map +1 -0
  89. package/dist/models/wallet.d.ts +52 -0
  90. package/dist/models/wallet.d.ts.map +1 -0
  91. package/dist/models/wallet.js +2 -0
  92. package/dist/models/wallet.js.map +1 -0
  93. package/dist/queries/conversations.d.ts +12 -0
  94. package/dist/queries/conversations.d.ts.map +1 -0
  95. package/dist/queries/conversations.js +59 -0
  96. package/dist/queries/conversations.js.map +1 -0
  97. package/dist/queries/notifications.d.ts +5 -0
  98. package/dist/queries/notifications.d.ts.map +1 -0
  99. package/dist/queries/notifications.js +27 -0
  100. package/dist/queries/notifications.js.map +1 -0
  101. package/dist/queries/revisioned.d.ts +17 -0
  102. package/dist/queries/revisioned.d.ts.map +1 -0
  103. package/dist/queries/revisioned.js +58 -0
  104. package/dist/queries/revisioned.js.map +1 -0
  105. package/dist/queries/wallet.d.ts +11 -0
  106. package/dist/queries/wallet.d.ts.map +1 -0
  107. package/dist/queries/wallet.js +42 -0
  108. package/dist/queries/wallet.js.map +1 -0
  109. package/dist/services/conversation-service.d.ts +42 -0
  110. package/dist/services/conversation-service.d.ts.map +1 -0
  111. package/dist/services/conversation-service.js +95 -0
  112. package/dist/services/conversation-service.js.map +1 -0
  113. package/dist/services/conversation-sync.d.ts +7 -0
  114. package/dist/services/conversation-sync.d.ts.map +1 -0
  115. package/dist/services/conversation-sync.js +9 -0
  116. package/dist/services/conversation-sync.js.map +1 -0
  117. package/dist/services/gossip-service.d.ts +18 -0
  118. package/dist/services/gossip-service.d.ts.map +1 -0
  119. package/dist/services/gossip-service.js +53 -0
  120. package/dist/services/gossip-service.js.map +1 -0
  121. package/dist/services/lan-candidate-refresh-service.d.ts +11 -0
  122. package/dist/services/lan-candidate-refresh-service.d.ts.map +1 -0
  123. package/dist/services/lan-candidate-refresh-service.js +32 -0
  124. package/dist/services/lan-candidate-refresh-service.js.map +1 -0
  125. package/dist/services/outbox-service.d.ts +47 -0
  126. package/dist/services/outbox-service.d.ts.map +1 -0
  127. package/dist/services/outbox-service.js +151 -0
  128. package/dist/services/outbox-service.js.map +1 -0
  129. package/dist/services/owner-view-service.d.ts +10 -0
  130. package/dist/services/owner-view-service.d.ts.map +1 -0
  131. package/dist/services/owner-view-service.js +21 -0
  132. package/dist/services/owner-view-service.js.map +1 -0
  133. package/dist/services/peer-directory-service.d.ts +26 -0
  134. package/dist/services/peer-directory-service.d.ts.map +1 -0
  135. package/dist/services/peer-directory-service.js +79 -0
  136. package/dist/services/peer-directory-service.js.map +1 -0
  137. package/dist/services/revisioned-domain-service.d.ts +46 -0
  138. package/dist/services/revisioned-domain-service.d.ts.map +1 -0
  139. package/dist/services/revisioned-domain-service.js +205 -0
  140. package/dist/services/revisioned-domain-service.js.map +1 -0
  141. package/dist/services/session-service.d.ts +10 -0
  142. package/dist/services/session-service.d.ts.map +1 -0
  143. package/dist/services/session-service.js +20 -0
  144. package/dist/services/session-service.js.map +1 -0
  145. package/dist/services/sync/authoritative-mirror.d.ts +24 -0
  146. package/dist/services/sync/authoritative-mirror.d.ts.map +1 -0
  147. package/dist/services/sync/authoritative-mirror.js +71 -0
  148. package/dist/services/sync/authoritative-mirror.js.map +1 -0
  149. package/dist/services/sync/index.d.ts +8 -0
  150. package/dist/services/sync/index.d.ts.map +1 -0
  151. package/dist/services/sync/index.js +4 -0
  152. package/dist/services/sync/index.js.map +1 -0
  153. package/dist/services/sync/log-sync.d.ts +12 -0
  154. package/dist/services/sync/log-sync.d.ts.map +1 -0
  155. package/dist/services/sync/log-sync.js +20 -0
  156. package/dist/services/sync/log-sync.js.map +1 -0
  157. package/dist/services/sync/revision-merge.d.ts +20 -0
  158. package/dist/services/sync/revision-merge.d.ts.map +1 -0
  159. package/dist/services/sync/revision-merge.js +46 -0
  160. package/dist/services/sync/revision-merge.js.map +1 -0
  161. package/dist/services/sync/strategy.d.ts +2 -0
  162. package/dist/services/sync/strategy.d.ts.map +1 -0
  163. package/dist/services/sync/strategy.js +2 -0
  164. package/dist/services/sync/strategy.js.map +1 -0
  165. package/dist/services/transport-manager.d.ts +22 -0
  166. package/dist/services/transport-manager.d.ts.map +1 -0
  167. package/dist/services/transport-manager.js +133 -0
  168. package/dist/services/transport-manager.js.map +1 -0
  169. package/dist/services/wallet-mirror-service.d.ts +46 -0
  170. package/dist/services/wallet-mirror-service.d.ts.map +1 -0
  171. package/dist/services/wallet-mirror-service.js +334 -0
  172. package/dist/services/wallet-mirror-service.js.map +1 -0
  173. package/package.json +56 -0
@@ -0,0 +1,22 @@
1
+ import type { KernelEventType, QueryName } from "../events/index.js";
2
+ export interface LiveQueryDefinition<TParams, TRow> {
3
+ readonly invalidateOn: readonly KernelEventType[];
4
+ readonly name: QueryName;
5
+ /**
6
+ * Whether `run()` reads the durable, OPFS-backed local SQLite cache.
7
+ *
8
+ * Defaults to `true` (treated as storage-backed) when omitted, so a new query is
9
+ * gated behind local-storage readiness unless its author has deliberately established
10
+ * otherwise — the conservative direction, since serving a storage-backed query before
11
+ * the cache is ready would return silently-empty rows.
12
+ *
13
+ * Set to `false` ONLY when `run()` is provably independent of the local SQLite cache
14
+ * (in-memory state or a home-node HTTP round trip). Those queries stay available in
15
+ * the degraded mode a browser without OPFS forces — Safari Private Browsing being the
16
+ * motivating case (#1661) — instead of dead-ending the whole shell.
17
+ */
18
+ readonly requiresDurableStorage?: boolean;
19
+ key(row: TRow): string;
20
+ run(params: TParams): Promise<readonly TRow[]>;
21
+ }
22
+ //# sourceMappingURL=live-query-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-query-definition.d.ts","sourceRoot":"","sources":["../../src/models/live-query-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,WAAW,mBAAmB,CAAC,OAAO,EAAE,IAAI;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;CAChD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=live-query-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-query-definition.js","sourceRoot":"","sources":["../../src/models/live-query-definition.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { JsonValue } from "./json.js";
2
+ export type OutboxIntentState = "acknowledged" | "failed" | "pending" | "replaying";
3
+ export interface OutboxIntent {
4
+ readonly domain: string;
5
+ readonly id: string;
6
+ readonly idempotencyKey: string;
7
+ readonly payload: JsonValue;
8
+ readonly state: OutboxIntentState;
9
+ }
10
+ //# sourceMappingURL=outbox-intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-intent.d.ts","sourceRoot":"","sources":["../../src/models/outbox-intent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAEpF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=outbox-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-intent.js","sourceRoot":"","sources":["../../src/models/outbox-intent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import type { JsonValue } from "./json.js";
2
+ export declare const OUTBOX_STATES: readonly ["pending", "inflight", "acked", "failed", "conflict"];
3
+ export type OutboxState = (typeof OUTBOX_STATES)[number];
4
+ export type LegacyOutboxState = "acknowledged" | "replaying";
5
+ export type OutboxIntentState = OutboxState | LegacyOutboxState;
6
+ export type OutboxAuthority = "authoritative" | "eventual";
7
+ export interface OutboxLease {
8
+ readonly expiresAt: string;
9
+ readonly owner: string;
10
+ }
11
+ export interface OutboxIntent {
12
+ readonly authority?: OutboxAuthority;
13
+ readonly attemptCount?: number;
14
+ readonly conflictReason?: string;
15
+ readonly createdAt?: string;
16
+ readonly domain: string;
17
+ readonly id: string;
18
+ readonly idempotencyKey: string;
19
+ readonly lease?: OutboxLease;
20
+ readonly maxAttempts?: number;
21
+ readonly payload: JsonValue;
22
+ readonly state: OutboxIntentState;
23
+ readonly terminalReason?: string;
24
+ readonly updatedAt?: string;
25
+ }
26
+ export type OutboxIntentInput = Omit<OutboxIntent, "attemptCount" | "createdAt" | "maxAttempts" | "state" | "updatedAt"> & {
27
+ readonly attemptCount?: number;
28
+ readonly createdAt?: string;
29
+ readonly maxAttempts?: number;
30
+ readonly state?: OutboxIntentState;
31
+ readonly updatedAt?: string;
32
+ };
33
+ export interface OutboxEntry extends OutboxIntent {
34
+ readonly authority: OutboxAuthority;
35
+ readonly attemptCount: number;
36
+ readonly createdAt: string;
37
+ readonly maxAttempts: number;
38
+ readonly state: OutboxState;
39
+ readonly updatedAt: string;
40
+ }
41
+ export interface OutboxIntentOptions {
42
+ readonly maxAttempts?: number;
43
+ readonly now?: string;
44
+ }
45
+ export declare function createOutboxIntent(input: OutboxIntentInput, options?: OutboxIntentOptions): OutboxEntry;
46
+ export declare function validateOutboxIntent(value: unknown): OutboxEntry;
47
+ export declare function fromPublicOutboxState(state: unknown): OutboxState;
48
+ export declare function toPublicOutboxState(state: OutboxState): Exclude<OutboxIntentState, OutboxState> | OutboxState;
49
+ export declare function canonicalOutboxPayload(value: JsonValue): string;
50
+ //# sourceMappingURL=outbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/models/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,eAAO,MAAM,aAAa,iEAAkE,CAAC;AAC7F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,WAAW,CAAC;AAC7D,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,UAAU,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC,GAAG;IACzH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE,mBAAwB,GAChC,WAAW,CASb;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAmChE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAKjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG,WAAW,CAK7G;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAM/D"}
@@ -0,0 +1,133 @@
1
+ export const OUTBOX_STATES = ["pending", "inflight", "acked", "failed", "conflict"];
2
+ export function createOutboxIntent(input, options = {}) {
3
+ const now = options.now ?? input.updatedAt ?? input.createdAt ?? new Date().toISOString();
4
+ return validateOutboxIntent({
5
+ ...input,
6
+ createdAt: input.createdAt ?? now,
7
+ maxAttempts: input.maxAttempts ?? options.maxAttempts ?? 3,
8
+ state: input.state ?? "pending",
9
+ updatedAt: input.updatedAt ?? now,
10
+ });
11
+ }
12
+ export function validateOutboxIntent(value) {
13
+ if (!isRecord(value))
14
+ throw invalid("outbox intent must be an object");
15
+ const domain = requiredString(value.domain, "outbox domain");
16
+ const id = requiredString(value.id, "outbox id");
17
+ const idempotencyKey = requiredString(value.idempotencyKey, "outbox idempotency key");
18
+ if (!isJsonValue(value.payload))
19
+ throw invalid("outbox payload must be JSON");
20
+ const state = fromPublicOutboxState(value.state ?? "pending");
21
+ const createdAt = requiredTimestamp(value.createdAt ?? new Date(0).toISOString(), "outbox createdAt");
22
+ const updatedAt = requiredTimestamp(value.updatedAt ?? createdAt, "outbox updatedAt");
23
+ const authority = value.authority ?? "eventual";
24
+ if (authority !== "authoritative" && authority !== "eventual")
25
+ throw invalid("outbox authority");
26
+ const attemptCount = value.attemptCount ?? 0;
27
+ const maxAttempts = value.maxAttempts ?? 3;
28
+ if (!isNonNegativeInteger(attemptCount))
29
+ throw invalid("outbox attemptCount");
30
+ if (typeof maxAttempts !== "number" || !Number.isInteger(maxAttempts) || maxAttempts < 1) {
31
+ throw invalid("outbox maxAttempts");
32
+ }
33
+ const lease = value.lease === undefined ? undefined : validateLease(value.lease);
34
+ if (state !== "inflight" && lease !== undefined)
35
+ throw invalid("outbox lease requires inflight state");
36
+ return deepFreeze({
37
+ ...(value.conflictReason === undefined ? {} : { conflictReason: requiredString(value.conflictReason, "outbox conflictReason") }),
38
+ ...(value.terminalReason === undefined ? {} : { terminalReason: requiredString(value.terminalReason, "outbox terminalReason") }),
39
+ authority,
40
+ attemptCount,
41
+ createdAt,
42
+ domain,
43
+ id,
44
+ idempotencyKey,
45
+ ...(lease === undefined ? {} : { lease }),
46
+ maxAttempts,
47
+ payload: cloneJson(value.payload),
48
+ state,
49
+ updatedAt,
50
+ });
51
+ }
52
+ export function fromPublicOutboxState(state) {
53
+ if (state === "replaying")
54
+ return "inflight";
55
+ if (state === "acknowledged")
56
+ return "acked";
57
+ if (OUTBOX_STATES.includes(state))
58
+ return state;
59
+ throw invalid("outbox state");
60
+ }
61
+ export function toPublicOutboxState(state) {
62
+ if (state === "inflight")
63
+ return "replaying";
64
+ if (state === "acked")
65
+ return "acknowledged";
66
+ if (state === "conflict")
67
+ return "failed";
68
+ return state;
69
+ }
70
+ export function canonicalOutboxPayload(value) {
71
+ if (Array.isArray(value))
72
+ return `[${value.map(canonicalOutboxPayload).join(",")}]`;
73
+ if (value !== null && typeof value === "object") {
74
+ return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${canonicalOutboxPayload(value[key])}`).join(",")}}`;
75
+ }
76
+ return JSON.stringify(value);
77
+ }
78
+ function cloneJson(value) {
79
+ if (Array.isArray(value))
80
+ return value.map(cloneJson);
81
+ if (value !== null && typeof value === "object") {
82
+ return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, cloneJson(child)]));
83
+ }
84
+ return value;
85
+ }
86
+ function deepFreeze(value) {
87
+ if (value !== null && typeof value === "object" && !Object.isFrozen(value)) {
88
+ Object.freeze(value);
89
+ for (const child of Object.values(value))
90
+ deepFreeze(child);
91
+ }
92
+ return value;
93
+ }
94
+ function isJsonValue(value) {
95
+ if (value === null || typeof value === "boolean" || typeof value === "string")
96
+ return true;
97
+ if (typeof value === "number")
98
+ return Number.isFinite(value);
99
+ if (Array.isArray(value))
100
+ return value.every(isJsonValue);
101
+ if (typeof value !== "object")
102
+ return false;
103
+ return Object.values(value).every(isJsonValue);
104
+ }
105
+ function isNonNegativeInteger(value) {
106
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
107
+ }
108
+ function isRecord(value) {
109
+ return value !== null && typeof value === "object" && !Array.isArray(value);
110
+ }
111
+ function invalid(message) {
112
+ return new TypeError(message);
113
+ }
114
+ function requiredString(value, label) {
115
+ if (typeof value !== "string" || value.trim() === "")
116
+ throw invalid(`${label} must be a non-empty string`);
117
+ return value;
118
+ }
119
+ function requiredTimestamp(value, label) {
120
+ const timestamp = requiredString(value, label);
121
+ if (!Number.isFinite(Date.parse(timestamp)))
122
+ throw invalid(`${label} must be an ISO timestamp`);
123
+ return timestamp;
124
+ }
125
+ function validateLease(value) {
126
+ if (!isRecord(value))
127
+ throw invalid("outbox lease");
128
+ return deepFreeze({
129
+ expiresAt: requiredTimestamp(value.expiresAt, "outbox lease expiresAt"),
130
+ owner: requiredString(value.owner, "outbox lease owner"),
131
+ });
132
+ }
133
+ //# sourceMappingURL=outbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/models/outbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ export declare const OWNER_VIEW_SYNC_STRATEGIES: {
2
+ readonly feeds: "log";
3
+ readonly home: "authoritative";
4
+ readonly operations: "authoritative";
5
+ readonly peers: "log";
6
+ };
7
+ export type OwnerViewSyncStrategy = (typeof OWNER_VIEW_SYNC_STRATEGIES)[keyof typeof OWNER_VIEW_SYNC_STRATEGIES];
8
+ export type HomeStatus = "offline" | "online" | "unknown";
9
+ export interface HomeSummary {
10
+ readonly displayName: string;
11
+ readonly homeNodeId: string;
12
+ readonly lastSyncedAt?: string;
13
+ readonly status: HomeStatus;
14
+ }
15
+ export type PeerStatus = "offline" | "online" | "unknown";
16
+ export interface PeerDirectoryEntry {
17
+ readonly displayName: string;
18
+ readonly id: string;
19
+ readonly lastSeenAt?: string;
20
+ readonly status: PeerStatus;
21
+ }
22
+ export interface PeerDirectoryQuery {
23
+ readonly limit?: number;
24
+ readonly status?: PeerStatus;
25
+ }
26
+ export type FeedItemKind = "activity" | "message" | "system";
27
+ export interface FeedItem {
28
+ readonly body: string;
29
+ readonly createdAt: string;
30
+ readonly id: string;
31
+ readonly kind: FeedItemKind;
32
+ readonly read: boolean;
33
+ readonly title: string;
34
+ }
35
+ export interface FeedQuery {
36
+ readonly before?: string;
37
+ readonly limit?: number;
38
+ readonly unreadOnly?: boolean;
39
+ }
40
+ export type StorageStatus = "blocked" | "ready" | "recovering";
41
+ export type SyncStatus = "current" | "stale" | "syncing";
42
+ export type OperationalTransport = "iroh-relay" | "lan-direct" | "offline" | "wan-direct";
43
+ export interface OperationalSummary {
44
+ readonly outboxDepth: number;
45
+ readonly storage: StorageStatus;
46
+ readonly sync: SyncStatus;
47
+ readonly transport: OperationalTransport;
48
+ }
49
+ /**
50
+ * Owner-facing read views projected from the home node.
51
+ *
52
+ * Contract: implementations MUST NOT depend on the durable, OPFS-backed local SQLite
53
+ * cache. This port models "what the home node currently reports", not "what this device
54
+ * has persisted", so every method is expected to resolve from in-memory state or a home-
55
+ * node round trip. The kernel relies on this to keep the owner-view live queries
56
+ * (`home.summary.v1`, `peers.directory.v1`, `feeds.timeline.v1`, `operations.summary.v1`)
57
+ * serving in the degraded mode a browser without OPFS forces — see #1661 and
58
+ * `LiveQueryDefinition.requiresDurableStorage`. A storage-backed projection belongs
59
+ * behind its own repository port, not here.
60
+ */
61
+ export interface OwnerViewRepository {
62
+ listFeed(params: FeedQuery): Promise<readonly FeedItem[]>;
63
+ listPeers(params: PeerDirectoryQuery): Promise<readonly PeerDirectoryEntry[]>;
64
+ readHomeSummary(): Promise<HomeSummary | undefined>;
65
+ readOperationalSummary(): Promise<OperationalSummary | undefined>;
66
+ }
67
+ //# sourceMappingURL=owner-views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-views.d.ts","sourceRoot":"","sources":["../../src/models/owner-views.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEjH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;AAE1F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;CAC1C;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAC1D,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAC9E,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IACpD,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CACnE"}
@@ -0,0 +1,7 @@
1
+ export const OWNER_VIEW_SYNC_STRATEGIES = {
2
+ feeds: "log",
3
+ home: "authoritative",
4
+ operations: "authoritative",
5
+ peers: "log",
6
+ };
7
+ //# sourceMappingURL=owner-views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-views.js","sourceRoot":"","sources":["../../src/models/owner-views.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,eAAe;IAC3B,KAAK,EAAE,KAAK;CACJ,CAAC"}
@@ -0,0 +1,32 @@
1
+ export declare const PAYMENT_DIRECTIONS: readonly ["incoming", "outgoing"];
2
+ export type PaymentDirection = (typeof PAYMENT_DIRECTIONS)[number];
3
+ export declare const PAYMENT_STATUSES: readonly ["pending", "succeeded", "failed", "expired"];
4
+ export type PaymentStatus = (typeof PAYMENT_STATUSES)[number];
5
+ /** Safe payment metadata. Invoice requests, preimages, and macaroons are not mirrored here. */
6
+ export interface PaymentRecord {
7
+ readonly amountMsat: number;
8
+ readonly createdAt: string;
9
+ readonly direction: PaymentDirection;
10
+ readonly failureCode?: string;
11
+ readonly id: string;
12
+ readonly paymentHash?: string;
13
+ readonly status: PaymentStatus;
14
+ readonly updatedAt: string;
15
+ }
16
+ export interface InvoiceCreatedResult {
17
+ readonly amountMsat: number;
18
+ readonly invoiceId: string;
19
+ readonly kind: "invoice-created";
20
+ readonly paymentHash?: string;
21
+ readonly paymentRequest: string;
22
+ readonly status: "created";
23
+ }
24
+ export interface PaymentSubmittedResult {
25
+ readonly amountMsat: number;
26
+ readonly kind: "payment-submitted";
27
+ readonly paymentHash?: string;
28
+ readonly paymentId: string;
29
+ readonly status: Exclude<PaymentStatus, "expired">;
30
+ }
31
+ export type WalletCommandResult = InvoiceCreatedResult | PaymentSubmittedResult;
32
+ //# sourceMappingURL=payment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../src/models/payment.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,mCAAoC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,eAAO,MAAM,gBAAgB,wDAAyD,CAAC;AACvF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;CACpD;AAED,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const PAYMENT_DIRECTIONS = ["incoming", "outgoing"];
2
+ export const PAYMENT_STATUSES = ["pending", "succeeded", "failed", "expired"];
3
+ //# sourceMappingURL=payment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.js","sourceRoot":"","sources":["../../src/models/payment.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,UAAU,CAAU,CAAC;AAGpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface QueryDiff<TRow> {
2
+ readonly added: readonly TRow[];
3
+ readonly deleted: readonly TRow[];
4
+ readonly revision: number;
5
+ readonly updated: readonly TRow[];
6
+ }
7
+ //# sourceMappingURL=query-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-diff.d.ts","sourceRoot":"","sources":["../../src/models/query-diff.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS,CAAC,IAAI;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-diff.js","sourceRoot":"","sources":["../../src/models/query-diff.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { DomainEvent } from "../events/index.js";
2
+ export interface RepositoryWrite<TEvent extends DomainEvent> {
3
+ commit(): Promise<{
4
+ readonly events: readonly TEvent[];
5
+ }>;
6
+ }
7
+ //# sourceMappingURL=repository-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-write.d.ts","sourceRoot":"","sources":["../../src/models/repository-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,eAAe,CAAC,MAAM,SAAS,WAAW;IACzD,MAAM,IAAI,OAAO,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC3D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=repository-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-write.js","sourceRoot":"","sources":["../../src/models/repository-write.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import type { AgentValue } from "./agent.js";
2
+ import type { GraphValue } from "./graph.js";
3
+ import type { JsonValue } from "./json.js";
4
+ import type { RevisionCommand, RevisionResolution, RevisionedDomain } from "./revisioned.js";
5
+ export declare const REVISIONED_COMMAND_NAMES: readonly ["agents.update.v1", "graphs.update.v1", "settings.update.v1", "sync.revision-conflict.resolve.v1"];
6
+ export type RevisionedCommandName = (typeof REVISIONED_COMMAND_NAMES)[number];
7
+ export type RevisionUpdateCommandName = Exclude<RevisionedCommandName, "sync.revision-conflict.resolve.v1">;
8
+ export interface RevisionUpdateCommand<TValue extends JsonValue = JsonValue> {
9
+ readonly name: RevisionUpdateCommandName;
10
+ readonly payload: RevisionCommand<TValue>;
11
+ }
12
+ export interface ResolveRevisionConflictCommand {
13
+ readonly name: "sync.revision-conflict.resolve.v1";
14
+ readonly payload: {
15
+ readonly conflictId: string;
16
+ readonly idempotencyKey: string;
17
+ readonly resolution: RevisionResolution;
18
+ };
19
+ }
20
+ export declare function createRevisionedUpdateCommand<TValue extends JsonValue>(domain: RevisionedDomain, payload: RevisionCommand<TValue>): RevisionUpdateCommand<TValue>;
21
+ export declare function createAgentUpdateCommand(payload: RevisionCommand<AgentValue>): RevisionUpdateCommand<AgentValue>;
22
+ export declare function createGraphUpdateCommand(payload: RevisionCommand<GraphValue>): RevisionUpdateCommand<GraphValue>;
23
+ export declare function createResolveRevisionConflictCommand(payload: ResolveRevisionConflictCommand["payload"]): ResolveRevisionConflictCommand;
24
+ //# sourceMappingURL=revisioned-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revisioned-commands.d.ts","sourceRoot":"","sources":["../../src/models/revisioned-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,eAAO,MAAM,wBAAwB,8GAK3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,qBAAqB,EAAE,mCAAmC,CAAC,CAAC;AAE5G,MAAM,WAAW,qBAAqB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS;IACzE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;KACzC,CAAC;CACH;AAED,wBAAgB,6BAA6B,CAAC,MAAM,SAAS,SAAS,EACpE,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAC/B,qBAAqB,CAAC,MAAM,CAAC,CAK/B;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GACnC,qBAAqB,CAAC,UAAU,CAAC,CAEnC;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GACnC,qBAAqB,CAAC,UAAU,CAAC,CAEnC;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,GAAG,8BAA8B,CAQvI"}
@@ -0,0 +1,35 @@
1
+ export const REVISIONED_COMMAND_NAMES = [
2
+ "agents.update.v1",
3
+ "graphs.update.v1",
4
+ "settings.update.v1",
5
+ "sync.revision-conflict.resolve.v1",
6
+ ];
7
+ export function createRevisionedUpdateCommand(domain, payload) {
8
+ return {
9
+ name: updateCommandName(domain),
10
+ payload,
11
+ };
12
+ }
13
+ export function createAgentUpdateCommand(payload) {
14
+ return createRevisionedUpdateCommand("agent", payload);
15
+ }
16
+ export function createGraphUpdateCommand(payload) {
17
+ return createRevisionedUpdateCommand("graph", payload);
18
+ }
19
+ export function createResolveRevisionConflictCommand(payload) {
20
+ if (payload.conflictId.trim() === "" || payload.idempotencyKey.trim() === "") {
21
+ throw new TypeError("Revision conflict resolution requires identifiers");
22
+ }
23
+ if (payload.resolution !== "mine" && payload.resolution !== "theirs") {
24
+ throw new TypeError("Invalid revision conflict resolution");
25
+ }
26
+ return { name: "sync.revision-conflict.resolve.v1", payload };
27
+ }
28
+ function updateCommandName(domain) {
29
+ switch (domain) {
30
+ case "agent": return "agents.update.v1";
31
+ case "graph": return "graphs.update.v1";
32
+ case "settings": return "settings.update.v1";
33
+ }
34
+ }
35
+ //# sourceMappingURL=revisioned-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revisioned-commands.js","sourceRoot":"","sources":["../../src/models/revisioned-commands.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,kBAAkB;IAClB,kBAAkB;IAClB,oBAAoB;IACpB,mCAAmC;CAC3B,CAAC;AAmBX,MAAM,UAAU,6BAA6B,CAC3C,MAAwB,EACxB,OAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;QAC/B,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAoC;IAEpC,OAAO,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAoC;IAEpC,OAAO,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,OAAkD;IACrG,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7E,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,mCAAmC,EAAE,OAAO,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAwB;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,kBAAkB,CAAC;QACxC,KAAK,OAAO,CAAC,CAAC,OAAO,kBAAkB,CAAC;QACxC,KAAK,UAAU,CAAC,CAAC,OAAO,oBAAoB,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { JsonValue } from "./json.js";
2
+ import type { RevisionConflict, RevisionIntent } from "./sync.js";
3
+ export declare const REVISIONED_DOMAINS: readonly ["agent", "settings", "graph"];
4
+ export type RevisionedDomain = (typeof REVISIONED_DOMAINS)[number];
5
+ export interface RevisionCommand<TValue extends JsonValue> extends RevisionIntent<TValue> {
6
+ readonly idempotencyKey: string;
7
+ }
8
+ export interface RevisionConflictRecord<TValue extends JsonValue> extends RevisionConflict<TValue> {
9
+ readonly conflictId: string;
10
+ readonly createdAt: string;
11
+ readonly domain: RevisionedDomain;
12
+ readonly idempotencyKey: string;
13
+ }
14
+ export interface RevisionConflictPayload<TValue extends JsonValue> extends RevisionConflictRecord<TValue> {
15
+ readonly kind: "revision-conflict.v1";
16
+ }
17
+ export type RevisionResolution = "mine" | "theirs";
18
+ export type { RevisionCommandResult, RevisionConflict, RevisionEntity, RevisionIntent, } from "./sync.js";
19
+ //# sourceMappingURL=revisioned.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revisioned.d.ts","sourceRoot":"","sources":["../../src/models/revisioned.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAElE,eAAO,MAAM,kBAAkB,yCAA0C,CAAC;AAC1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,eAAe,CAAC,MAAM,SAAS,SAAS,CAAE,SAAQ,cAAc,CAAC,MAAM,CAAC;IACvF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB,CAAC,MAAM,SAAS,SAAS,CAAE,SAAQ,gBAAgB,CAAC,MAAM,CAAC;IAChG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB,CAAC,MAAM,SAAS,SAAS,CAAE,SAAQ,sBAAsB,CAAC,MAAM,CAAC;IACvG,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;CACvC;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const REVISIONED_DOMAINS = ["agent", "settings", "graph"];
2
+ //# sourceMappingURL=revisioned.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revisioned.js","sourceRoot":"","sources":["../../src/models/revisioned.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { JsonValue } from "./json.js";
2
+ import type { RevisionEntity } from "./sync.js";
3
+ export type SettingValue = JsonValue;
4
+ export type RevisionedSetting = RevisionEntity<SettingValue>;
5
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/models/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC;AACrC,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/models/settings.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ export type SyncStrategyKind = "authoritative-mirror" | "log" | "revision-merge";
2
+ export interface SyncDelta<TPayload> {
3
+ readonly cursor: string;
4
+ readonly id: string;
5
+ readonly payload: TPayload;
6
+ }
7
+ export interface SyncDeltaContext {
8
+ readonly domain: string;
9
+ readonly now: string;
10
+ }
11
+ export interface SyncApplyResult {
12
+ readonly applied: boolean;
13
+ }
14
+ export interface SyncStrategy<TPayload> {
15
+ readonly kind: SyncStrategyKind;
16
+ applyDelta(delta: SyncDelta<TPayload>, context: SyncDeltaContext): Promise<SyncApplyResult>;
17
+ }
18
+ export interface RevisionEntity<TValue> {
19
+ readonly id: string;
20
+ readonly rev: number;
21
+ readonly value: TValue;
22
+ }
23
+ export interface RevisionIntent<TValue> {
24
+ readonly baseRev: number;
25
+ readonly id: string;
26
+ readonly value: TValue;
27
+ }
28
+ export interface RevisionConflict<TValue> {
29
+ readonly baseRev: number;
30
+ readonly id: string;
31
+ readonly mine: TValue;
32
+ readonly theirs: RevisionEntity<TValue>;
33
+ }
34
+ export type RevisionCommandResult<TValue> = {
35
+ readonly entity: RevisionEntity<TValue>;
36
+ readonly status: "accepted";
37
+ } | {
38
+ readonly status: "conflict";
39
+ readonly theirs: RevisionEntity<TValue>;
40
+ };
41
+ export interface AuthoritativeSnapshot<TValue> {
42
+ readonly observedAt: string;
43
+ readonly staleAt: string;
44
+ readonly value: TValue;
45
+ }
46
+ export interface AuthoritativeCommand<TPayload> {
47
+ readonly idempotencyKey: string;
48
+ readonly payload: TPayload;
49
+ }
50
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/models/sync.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,KAAK,GAAG,gBAAgB,CAAC;AAEjF,MAAM,WAAW,SAAS,CAAC,QAAQ;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY,CAAC,QAAQ;IACpC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7F;AAED,MAAM,WAAW,cAAc,CAAC,MAAM;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc,CAAC,MAAM;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB,CAAC,MAAM;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,qBAAqB,CAAC,MAAM,IACpC;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,qBAAqB,CAAC,MAAM;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB,CAAC,QAAQ;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/models/sync.ts"],"names":[],"mappings":""}