sealbridge 0.2.2 → 0.3.1

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 (251) hide show
  1. package/README.ja.md +492 -30
  2. package/README.md +522 -109
  3. package/dist/cli/dist/accept.d.ts +13 -0
  4. package/dist/cli/dist/accept.js +115 -0
  5. package/dist/cli/dist/accept.js.map +1 -0
  6. package/dist/cli/dist/approval-summary.d.ts +1 -1
  7. package/dist/cli/dist/board.d.ts +10 -9
  8. package/dist/cli/dist/board.js +62 -31
  9. package/dist/cli/dist/board.js.map +1 -1
  10. package/dist/cli/dist/command-identity.d.ts +6 -0
  11. package/dist/cli/dist/command-identity.js +13 -0
  12. package/dist/cli/dist/command-identity.js.map +1 -0
  13. package/dist/cli/dist/config.d.ts +3 -0
  14. package/dist/cli/dist/config.js +29 -0
  15. package/dist/cli/dist/config.js.map +1 -0
  16. package/dist/cli/dist/connections.d.ts +15 -0
  17. package/dist/cli/dist/connections.js +191 -0
  18. package/dist/cli/dist/connections.js.map +1 -0
  19. package/dist/cli/dist/contacts.d.ts +4 -3
  20. package/dist/cli/dist/contacts.js +39 -28
  21. package/dist/cli/dist/contacts.js.map +1 -1
  22. package/dist/cli/dist/doctor.d.ts +9 -0
  23. package/dist/cli/dist/doctor.js +46 -5
  24. package/dist/cli/dist/doctor.js.map +1 -1
  25. package/dist/cli/dist/error-messages.js +22 -0
  26. package/dist/cli/dist/error-messages.js.map +1 -1
  27. package/dist/cli/dist/index.js +44 -6
  28. package/dist/cli/dist/index.js.map +1 -1
  29. package/dist/cli/dist/invite-output.d.ts +14 -0
  30. package/dist/cli/dist/invite-output.js +66 -0
  31. package/dist/cli/dist/invite-output.js.map +1 -0
  32. package/dist/cli/dist/invite-share.d.ts +6 -3
  33. package/dist/cli/dist/invite-share.js +40 -15
  34. package/dist/cli/dist/invite-share.js.map +1 -1
  35. package/dist/cli/dist/invites-migrate.d.ts +3 -0
  36. package/dist/cli/dist/invites-migrate.js +33 -0
  37. package/dist/cli/dist/invites-migrate.js.map +1 -0
  38. package/dist/cli/dist/mcp.d.ts +7 -5
  39. package/dist/cli/dist/mcp.js +23 -18
  40. package/dist/cli/dist/mcp.js.map +1 -1
  41. package/dist/cli/dist/network.d.ts +11 -1
  42. package/dist/cli/dist/network.js +150 -87
  43. package/dist/cli/dist/network.js.map +1 -1
  44. package/dist/cli/dist/pending.d.ts +8 -0
  45. package/dist/cli/dist/pending.js +50 -0
  46. package/dist/cli/dist/pending.js.map +1 -0
  47. package/dist/cli/dist/public-settings.d.ts +5 -4
  48. package/dist/cli/dist/public-settings.js +13 -15
  49. package/dist/cli/dist/public-settings.js.map +1 -1
  50. package/dist/cli/dist/receipt.d.ts +1 -1
  51. package/dist/cli/dist/relay-auth.d.ts +3 -0
  52. package/dist/cli/dist/relay-auth.js +23 -0
  53. package/dist/cli/dist/relay-auth.js.map +1 -0
  54. package/dist/cli/dist/requests.d.ts +10 -0
  55. package/dist/cli/dist/requests.js +91 -0
  56. package/dist/cli/dist/requests.js.map +1 -0
  57. package/dist/cli/dist/sdk.d.ts +10 -0
  58. package/dist/cli/dist/sdk.js +7 -0
  59. package/dist/cli/dist/sdk.js.map +1 -0
  60. package/dist/cli/dist/setup-files.d.ts +24 -0
  61. package/dist/cli/dist/setup-files.js +190 -0
  62. package/dist/cli/dist/setup-files.js.map +1 -0
  63. package/dist/cli/dist/setup-hosts.d.ts +29 -0
  64. package/dist/cli/dist/setup-hosts.js +75 -0
  65. package/dist/cli/dist/setup-hosts.js.map +1 -0
  66. package/dist/cli/dist/setup.d.ts +61 -0
  67. package/dist/cli/dist/setup.js +243 -0
  68. package/dist/cli/dist/setup.js.map +1 -0
  69. package/dist/cli/dist/task-input.d.ts +1 -1
  70. package/dist/cli/dist/wake-hook.d.ts +1 -1
  71. package/dist/cli/dist/worker-json.d.ts +4 -0
  72. package/dist/cli/dist/worker-json.js +87 -0
  73. package/dist/cli/dist/worker-json.js.map +1 -0
  74. package/dist/examples/two-owner-demo/dist/run-demo.d.ts +13 -13
  75. package/dist/package.json +1 -1
  76. package/dist/packages/adapters/dist/command.d.ts +2 -2
  77. package/dist/packages/adapters/dist/credential-proxy.d.ts +2 -2
  78. package/dist/packages/adapters/dist/index.d.ts +1 -1
  79. package/dist/packages/adapters/dist/mcp.d.ts +2 -2
  80. package/dist/packages/adapters/dist/openai.d.ts +2 -2
  81. package/dist/packages/adapters/dist/sandbox.d.ts +2 -2
  82. package/dist/packages/core/dist/connection.d.ts +58 -0
  83. package/dist/packages/core/dist/connection.js +132 -0
  84. package/dist/packages/core/dist/connection.js.map +1 -0
  85. package/dist/packages/core/dist/delivery-status.d.ts +22 -0
  86. package/dist/packages/core/dist/delivery-status.js +53 -0
  87. package/dist/packages/core/dist/delivery-status.js.map +1 -0
  88. package/dist/packages/core/dist/discovery.d.ts +7 -6
  89. package/dist/packages/core/dist/discovery.js +19 -20
  90. package/dist/packages/core/dist/discovery.js.map +1 -1
  91. package/dist/packages/core/dist/edge.d.ts +1 -0
  92. package/dist/packages/core/dist/edge.js +1 -0
  93. package/dist/packages/core/dist/edge.js.map +1 -1
  94. package/dist/packages/core/dist/index.d.ts +3 -0
  95. package/dist/packages/core/dist/index.js +3 -0
  96. package/dist/packages/core/dist/index.js.map +1 -1
  97. package/dist/packages/core/dist/protocol.d.ts +24 -0
  98. package/dist/packages/core/dist/protocol.js +54 -0
  99. package/dist/packages/core/dist/protocol.js.map +1 -0
  100. package/dist/packages/core/dist/receipts.d.ts +1 -0
  101. package/dist/packages/core/dist/receipts.js +1 -1
  102. package/dist/packages/core/dist/receipts.js.map +1 -1
  103. package/dist/packages/core/dist/schema.d.ts +1 -0
  104. package/dist/packages/core/dist/schema.js +13 -2
  105. package/dist/packages/core/dist/schema.js.map +1 -1
  106. package/dist/packages/ledger/dist/index.d.ts +1 -1
  107. package/dist/packages/relay/dist/admission.d.ts +14 -0
  108. package/dist/packages/relay/dist/admission.js +70 -0
  109. package/dist/packages/relay/dist/admission.js.map +1 -0
  110. package/dist/packages/relay/dist/fetch.d.ts +8 -2
  111. package/dist/packages/relay/dist/fetch.js +41 -12
  112. package/dist/packages/relay/dist/fetch.js.map +1 -1
  113. package/dist/packages/relay/dist/index.d.ts +23 -12
  114. package/dist/packages/relay/dist/index.js +130 -78
  115. package/dist/packages/relay/dist/index.js.map +1 -1
  116. package/dist/packages/relay/dist/journal.d.ts +1 -1
  117. package/dist/packages/relay/dist/notifications.d.ts +1 -1
  118. package/dist/packages/relay/dist/retry.d.ts +23 -0
  119. package/dist/packages/relay/dist/retry.js +43 -1
  120. package/dist/packages/relay/dist/retry.js.map +1 -1
  121. package/dist/packages/relay/dist/ssrf.d.ts +3 -2
  122. package/dist/packages/relay/dist/ssrf.js.map +1 -1
  123. package/dist/packages/relay/dist/worker.js +1 -1
  124. package/dist/packages/relay/dist/worker.js.map +1 -1
  125. package/dist/packages/runtime/dist/a2a.d.ts +1 -1
  126. package/dist/packages/runtime/dist/a2a.js +1 -1
  127. package/dist/packages/runtime/dist/adapter.d.ts +2 -2
  128. package/dist/packages/runtime/dist/application-config.d.ts +20 -0
  129. package/dist/packages/runtime/dist/application-config.js +218 -0
  130. package/dist/packages/runtime/dist/application-config.js.map +1 -0
  131. package/dist/packages/runtime/dist/approval-providers.d.ts +24 -3
  132. package/dist/packages/runtime/dist/approval-providers.js +79 -3
  133. package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
  134. package/dist/packages/runtime/dist/connection-admission-review.d.ts +39 -0
  135. package/dist/packages/runtime/dist/connection-admission-review.js +86 -0
  136. package/dist/packages/runtime/dist/connection-admission-review.js.map +1 -0
  137. package/dist/packages/runtime/dist/connection-persistence.d.ts +35 -0
  138. package/dist/packages/runtime/dist/connection-persistence.js +181 -0
  139. package/dist/packages/runtime/dist/connection-persistence.js.map +1 -0
  140. package/dist/packages/runtime/dist/connection-records.d.ts +167 -0
  141. package/dist/packages/runtime/dist/connection-records.js +132 -0
  142. package/dist/packages/runtime/dist/connection-records.js.map +1 -0
  143. package/dist/packages/runtime/dist/connection-router.d.ts +45 -0
  144. package/dist/packages/runtime/dist/connection-router.js +130 -0
  145. package/dist/packages/runtime/dist/connection-router.js.map +1 -0
  146. package/dist/packages/runtime/dist/connection-service.d.ts +159 -0
  147. package/dist/packages/runtime/dist/connection-service.js +239 -0
  148. package/dist/packages/runtime/dist/connection-service.js.map +1 -0
  149. package/dist/packages/runtime/dist/connection-transport.d.ts +14 -0
  150. package/dist/packages/runtime/dist/connection-transport.js +89 -0
  151. package/dist/packages/runtime/dist/connection-transport.js.map +1 -0
  152. package/dist/packages/runtime/dist/delivery-records.d.ts +180 -0
  153. package/dist/packages/runtime/dist/delivery-records.js +205 -0
  154. package/dist/packages/runtime/dist/delivery-records.js.map +1 -0
  155. package/dist/packages/runtime/dist/delivery-status-router.d.ts +27 -0
  156. package/dist/packages/runtime/dist/delivery-status-router.js +150 -0
  157. package/dist/packages/runtime/dist/delivery-status-router.js.map +1 -0
  158. package/dist/packages/runtime/dist/delivery-status.d.ts +43 -0
  159. package/dist/packages/runtime/dist/delivery-status.js +193 -0
  160. package/dist/packages/runtime/dist/delivery-status.js.map +1 -0
  161. package/dist/packages/runtime/dist/delivery-store.d.ts +125 -0
  162. package/dist/packages/runtime/dist/delivery-store.js +1047 -0
  163. package/dist/packages/runtime/dist/delivery-store.js.map +1 -0
  164. package/dist/packages/runtime/dist/gateway.d.ts +4 -3
  165. package/dist/packages/runtime/dist/gateway.js.map +1 -1
  166. package/dist/packages/runtime/dist/held-request-review.d.ts +49 -0
  167. package/dist/packages/runtime/dist/held-request-review.js +122 -0
  168. package/dist/packages/runtime/dist/held-request-review.js.map +1 -0
  169. package/dist/packages/runtime/dist/held-request-store.d.ts +112 -0
  170. package/dist/packages/runtime/dist/held-request-store.js +290 -0
  171. package/dist/packages/runtime/dist/held-request-store.js.map +1 -0
  172. package/dist/packages/runtime/dist/idempotency-store.d.ts +53 -0
  173. package/dist/packages/runtime/dist/idempotency-store.js +331 -0
  174. package/dist/packages/runtime/dist/idempotency-store.js.map +1 -0
  175. package/dist/packages/runtime/dist/inbox.d.ts +1 -1
  176. package/dist/packages/runtime/dist/index.d.ts +27 -1
  177. package/dist/packages/runtime/dist/index.js +26 -0
  178. package/dist/packages/runtime/dist/index.js.map +1 -1
  179. package/dist/packages/runtime/dist/invite-store.d.ts +76 -0
  180. package/dist/packages/runtime/dist/invite-store.js +337 -0
  181. package/dist/packages/runtime/dist/invite-store.js.map +1 -0
  182. package/dist/packages/runtime/dist/key-store.d.ts +77 -0
  183. package/dist/packages/runtime/dist/key-store.js +226 -0
  184. package/dist/packages/runtime/dist/key-store.js.map +1 -0
  185. package/dist/packages/runtime/dist/local-identity.d.ts +33 -0
  186. package/dist/packages/runtime/dist/local-identity.js +279 -0
  187. package/dist/packages/runtime/dist/local-identity.js.map +1 -0
  188. package/dist/packages/runtime/dist/mcp-rpc.d.ts +19 -0
  189. package/dist/packages/runtime/dist/mcp-rpc.js +175 -0
  190. package/dist/packages/runtime/dist/mcp-rpc.js.map +1 -0
  191. package/dist/packages/runtime/dist/mcp-server.d.ts +46 -19
  192. package/dist/packages/runtime/dist/mcp-server.js +427 -184
  193. package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
  194. package/dist/packages/runtime/dist/mcp-tool-catalog.d.ts +1 -1
  195. package/dist/packages/runtime/dist/mcp-tool-catalog.js +172 -13
  196. package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
  197. package/dist/packages/runtime/dist/mcp.d.ts +2 -2
  198. package/dist/packages/runtime/dist/message-status.d.ts +32 -0
  199. package/dist/packages/runtime/dist/message-status.js +29 -0
  200. package/dist/packages/runtime/dist/message-status.js.map +1 -0
  201. package/dist/packages/runtime/dist/outbox.d.ts +91 -0
  202. package/dist/packages/runtime/dist/outbox.js +462 -0
  203. package/dist/packages/runtime/dist/outbox.js.map +1 -0
  204. package/dist/packages/runtime/dist/policy.d.ts +1 -1
  205. package/dist/packages/runtime/dist/protocol-peer-store.d.ts +40 -0
  206. package/dist/packages/runtime/dist/protocol-peer-store.js +176 -0
  207. package/dist/packages/runtime/dist/protocol-peer-store.js.map +1 -0
  208. package/dist/packages/runtime/dist/protocol-release.d.ts +26 -0
  209. package/dist/packages/runtime/dist/protocol-release.js +76 -0
  210. package/dist/packages/runtime/dist/protocol-release.js.map +1 -0
  211. package/dist/packages/runtime/dist/quota.d.ts +1 -1
  212. package/dist/packages/runtime/dist/relay-selection.d.ts +20 -0
  213. package/dist/packages/runtime/dist/relay-selection.js +34 -0
  214. package/dist/packages/runtime/dist/relay-selection.js.map +1 -0
  215. package/dist/packages/runtime/dist/requester-pending-store.d.ts +59 -0
  216. package/dist/packages/runtime/dist/requester-pending-store.js +266 -0
  217. package/dist/packages/runtime/dist/requester-pending-store.js.map +1 -0
  218. package/dist/packages/runtime/dist/secret-store.d.ts +19 -0
  219. package/dist/packages/runtime/dist/secret-store.js +51 -0
  220. package/dist/packages/runtime/dist/secret-store.js.map +1 -0
  221. package/dist/packages/runtime/dist/session-audit.d.ts +29 -7
  222. package/dist/packages/runtime/dist/session-audit.js +149 -29
  223. package/dist/packages/runtime/dist/session-audit.js.map +1 -1
  224. package/dist/packages/runtime/dist/session.d.ts +101 -9
  225. package/dist/packages/runtime/dist/session.js +696 -96
  226. package/dist/packages/runtime/dist/session.js.map +1 -1
  227. package/dist/packages/runtime/dist/task-journal.d.ts +18 -3
  228. package/dist/packages/runtime/dist/task-journal.js +271 -18
  229. package/dist/packages/runtime/dist/task-journal.js.map +1 -1
  230. package/dist/packages/runtime/dist/verifier.d.ts +3 -2
  231. package/dist/packages/runtime/dist/verifier.js +1 -0
  232. package/dist/packages/runtime/dist/verifier.js.map +1 -1
  233. package/dist/packages/runtime/dist/worker-trust-store.d.ts +111 -0
  234. package/dist/packages/runtime/dist/worker-trust-store.js +592 -0
  235. package/dist/packages/runtime/dist/worker-trust-store.js.map +1 -0
  236. package/dist/packages/sandbox/dist/container.d.ts +1 -1
  237. package/dist/packages/sandbox/dist/index.d.ts +1 -1
  238. package/dist/spec/README.ja.md +21 -1
  239. package/dist/spec/README.md +20 -1
  240. package/dist/spec/agent-card.schema.json +11 -1
  241. package/dist/spec/delivery-status.schema.json +106 -0
  242. package/dist/spec/examples/protocol-versions/sample-agent-card.json +35 -0
  243. package/dist/spec/examples/sample-delivery-status.json +21 -0
  244. package/dist/spec/examples/sample-task-manifest.0.1.0.json +173 -0
  245. package/dist/spec/examples/sample-task-manifest.0.2.0.json +173 -0
  246. package/dist/spec/task-manifest.0.1.0.schema.json +422 -0
  247. package/dist/spec/task-manifest.0.2.0.schema.json +422 -0
  248. package/dist/spec/task-manifest.schema.json +9 -418
  249. package/docs/sdk.ja.md +133 -0
  250. package/docs/sdk.md +138 -0
  251. package/package.json +15 -3
@@ -0,0 +1,331 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { randomUUID } from 'node:crypto';
3
+ import { digest, isInviteTarget } from '../../core/dist/index.js';
4
+ import { DeliveryStore } from './delivery-store.js';
5
+ import { DELIVERY_RETENTION_MS, deliveryError } from './delivery-records.js';
6
+ export function validateIdempotencyKey(value) {
7
+ if (typeof value !== 'string' || Buffer.byteLength(value, 'utf8') < 1 || Buffer.byteLength(value, 'utf8') > 200 ||
8
+ /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(value))
9
+ throw deliveryError('INVALID_IDEMPOTENCY_KEY');
10
+ }
11
+ export function idempotencyKeyHash(owner, tool, key) {
12
+ validateIdempotencyKey(key);
13
+ // digest uses RFC 8785 canonicalization, including the exact key bytes.
14
+ return digest([1, owner, tool, key]).slice(7);
15
+ }
16
+ export function idempotencyFailure(error) {
17
+ const e = error;
18
+ const code = typeof e?.code === 'string' ? e.code : typeof e?.message === 'string' ? e.message : 'DELEGATION_FAILED';
19
+ return { isError: true, value: { error: code, ...(code === 'PENDING_OWNER_APPROVAL' ? { retryable: false } : {}),
20
+ ...(e?.pendingId ? { pendingId: e.pendingId } : {}), ...(e?.originalTaskId ? { originalTaskId: e.originalTaskId } : {}),
21
+ ...(e?.nextStep ? { nextStep: e.nextStep } : {}), ...(e?.pendingStoreError ? { pendingStoreError: e.pendingStoreError } : {}) } };
22
+ }
23
+ export function unwrapIdempotency(response) {
24
+ if (!response.isError)
25
+ return response.value;
26
+ const value = response.value;
27
+ throw Object.assign(new Error(String(value.error)), value, { code: value.error });
28
+ }
29
+ /** Remove process-local hooks and paths; retain every execution option in the fingerprint. */
30
+ export function runtimeIdempotencyAction(options, defaults = {}) {
31
+ const copy = { ...defaults, ...options };
32
+ for (const key of ['idempotencyKey', 'idempotencyOperation', 'idempotencyChildIndex', 'signal', 'onProgress',
33
+ 'beforePropose', 'beforeTransmit', 'auditPath', 'outputPath'])
34
+ delete copy[key];
35
+ if (copy.relay && typeof copy.relay !== 'string') {
36
+ const relay = copy.relay;
37
+ copy.relay = typeof relay.url === 'string' ? relay.url : 'injected transport';
38
+ }
39
+ if (typeof copy.to === 'string' && isInviteTarget(copy.to))
40
+ copy.to = digest(copy.to);
41
+ if (Array.isArray(copy.workers))
42
+ copy.workers = copy.workers.map(w => {
43
+ const worker = { ...w };
44
+ if (worker.inviteToken !== undefined)
45
+ worker.inviteToken = digest(worker.inviteToken);
46
+ return worker;
47
+ });
48
+ // Validate the JSON representation before any task IDs or approval are produced.
49
+ const action = JSON.parse(JSON.stringify(copy));
50
+ digest(action);
51
+ return action;
52
+ }
53
+ /** One operation owns preparation, authorization and all fan-out children. */
54
+ export class IdempotencyOperation {
55
+ store;
56
+ operationId;
57
+ holderId;
58
+ children;
59
+ keyHash;
60
+ ready = new Set();
61
+ waiters = [];
62
+ preparationFailure;
63
+ prepared = false;
64
+ constructor(store, operationId, holderId, children, keyHash) {
65
+ this.store = store;
66
+ this.operationId = operationId;
67
+ this.holderId = holderId;
68
+ this.children = children;
69
+ this.keyHash = keyHash;
70
+ }
71
+ change(change) {
72
+ return this.store.mutate(records => {
73
+ const r = records.read('operations', this.operationId);
74
+ if (!r || r.phase === 'finished' || r.lease?.holderId !== this.holderId)
75
+ throw deliveryError('IDEMPOTENCY_RESULT_UNAVAILABLE');
76
+ change(r, records);
77
+ records.write('operations', r.operationId, r);
78
+ });
79
+ }
80
+ async prepare(action) {
81
+ await this.change(r => {
82
+ if (r.preparedActions.some(a => a.childIndex === action.childIndex))
83
+ throw deliveryError('IDEMPOTENCY_STORE_INVALID');
84
+ r.preparedActions.push(structuredClone(action));
85
+ r.preparedActions.sort((a, b) => a.childIndex - b.childIndex);
86
+ r.taskIds = r.preparedActions.map(a => a.manifest.taskId);
87
+ });
88
+ await new Promise((resolve, reject) => {
89
+ this.waiters.push({ resolve, reject });
90
+ void this.childReady(action.childIndex);
91
+ });
92
+ }
93
+ async childReady(index, error) {
94
+ if (this.prepared)
95
+ return;
96
+ if (error)
97
+ this.preparationFailure ??= error;
98
+ this.ready.add(index);
99
+ if (this.ready.size < this.children)
100
+ return;
101
+ this.prepared = true;
102
+ try {
103
+ if (this.preparationFailure)
104
+ throw this.preparationFailure;
105
+ await this.change((r, records) => {
106
+ r.phase = 'awaiting_approval';
107
+ r.retainUntil = Math.max(r.createdAt, ...r.preparedActions.map(a => Date.parse(a.manifest.deadline))) + DELIVERY_RETENTION_MS;
108
+ const binding = records.read('idempotency', this.keyHash);
109
+ if (!binding)
110
+ throw deliveryError('IDEMPOTENCY_STORE_INVALID');
111
+ records.write('idempotency', binding.keyHash, { ...binding, retainUntil: r.retainUntil });
112
+ });
113
+ for (const waiter of this.waiters.splice(0))
114
+ waiter.resolve();
115
+ }
116
+ catch (error) {
117
+ for (const waiter of this.waiters.splice(0))
118
+ waiter.reject(error);
119
+ }
120
+ }
121
+ async authorize(childIndex, evidence) {
122
+ if (!evidence)
123
+ throw deliveryError('IDEMPOTENCY_AUTHORIZATION_REQUIRED');
124
+ await this.change(r => {
125
+ const a = r.preparedActions.find(a => a.childIndex === childIndex);
126
+ if (!a || a.approvalTargetDigest !== evidence.targetDigest)
127
+ throw deliveryError('IDEMPOTENCY_STORE_INVALID');
128
+ r.approvals ??= [];
129
+ r.approvals.push({ ...evidence, childIndex });
130
+ r.phase = 'approved';
131
+ });
132
+ }
133
+ sending() { return this.change(r => { r.phase = 'sending'; }); }
134
+ renew() { return this.change(r => { r.lease.until = this.store.records.now() + this.store.leaseMs; }); }
135
+ }
136
+ /** Owner-signed operation cache sharing C1's atomic store and short signer lock. */
137
+ export class IdempotencyStore {
138
+ records;
139
+ leaseMs;
140
+ live = new Map();
141
+ constructor(owner, options = {}) {
142
+ this.records = new DeliveryStore(owner, options);
143
+ this.leaseMs = options.leaseMs ?? 120_000;
144
+ if (!Number.isSafeInteger(this.leaseMs) || this.leaseMs < 1)
145
+ throw deliveryError('IDEMPOTENCY_STORE_INVALID');
146
+ }
147
+ /** Plan under the signer lock, write outside it, then compare before publishing. */
148
+ async mutate(change) {
149
+ try {
150
+ for (;;) {
151
+ try {
152
+ const reads = new Map();
153
+ const writes = new Map();
154
+ let capacityNow;
155
+ const read = (kind, id) => {
156
+ const key = kind + ':' + id;
157
+ const pending = writes.get(key);
158
+ if (pending)
159
+ return structuredClone(pending.record);
160
+ const record = this.records.read(kind, id);
161
+ reads.set(key, { kind, id, value: JSON.stringify(record) });
162
+ return record;
163
+ };
164
+ const result = this.records.transaction(() => change({ read,
165
+ write: (kind, id, record) => {
166
+ const key = kind + ':' + id;
167
+ if (!reads.has(key))
168
+ read(kind, id);
169
+ writes.set(key, { kind, id, record: structuredClone(record) });
170
+ },
171
+ reserveIdempotencyCapacity: now => {
172
+ this.records.reserveIdempotencyCapacity(now);
173
+ capacityNow = now;
174
+ },
175
+ }));
176
+ if (!writes.size)
177
+ return result;
178
+ const prepared = await this.records.prepareWrites([...writes.values()]);
179
+ try {
180
+ if (capacityNow !== undefined)
181
+ await this.records.prepareIdempotency();
182
+ const published = this.records.transaction(() => {
183
+ if ([...reads.values()].some(r => JSON.stringify(this.records.read(r.kind, r.id)) !== r.value))
184
+ return false;
185
+ if (capacityNow !== undefined)
186
+ this.records.reserveIdempotencyCapacity(capacityNow);
187
+ for (const write of prepared)
188
+ this.records.publishWrite(write);
189
+ return true;
190
+ });
191
+ if (published)
192
+ return result;
193
+ }
194
+ finally {
195
+ this.records.discardWrites(prepared);
196
+ }
197
+ }
198
+ catch (error) {
199
+ // Another store may have changed capacity inventories while our write yielded.
200
+ if (!(error instanceof Error) || error.message !== 'IDEMPOTENCY_STORE_BUSY')
201
+ throw error;
202
+ await this.records.prepareIdempotency();
203
+ }
204
+ }
205
+ }
206
+ catch (error) {
207
+ throw this.storeError(error);
208
+ }
209
+ }
210
+ storeError(error) {
211
+ const code = error instanceof Error ? error.message : '';
212
+ if (code.startsWith('IDEMPOTENCY_'))
213
+ return error;
214
+ return deliveryError(code === 'OUTBOX_FULL' ? 'IDEMPOTENCY_STORE_FULL' :
215
+ code === 'OUTBOX_STORE_BUSY' ? 'IDEMPOTENCY_STORE_BUSY' :
216
+ code === 'OUTBOX_STORE_INVALID' ? 'IDEMPOTENCY_STORE_INVALID' : 'IDEMPOTENCY_STORE_UNWRITABLE');
217
+ }
218
+ async run(tool, key, action, run, options = {}) {
219
+ const keyHash = idempotencyKeyHash(this.records.owner.did, tool, key);
220
+ const requestDigest = digest({ version: 1, tool, action });
221
+ const active = this.live.get(keyHash);
222
+ if (active) {
223
+ if (active.requestDigest !== requestDigest)
224
+ throw deliveryError('IDEMPOTENCY_CONFLICT');
225
+ return structuredClone(await active.promise);
226
+ }
227
+ // Join calls even while recovery is yielding, before any reservation or owner prompt.
228
+ const promise = this.execute(tool, keyHash, requestDigest, run, options);
229
+ this.live.set(keyHash, { requestDigest, promise });
230
+ try {
231
+ return structuredClone(await promise);
232
+ }
233
+ finally {
234
+ this.live.delete(keyHash);
235
+ }
236
+ }
237
+ async execute(tool, keyHash, requestDigest, run, options) {
238
+ try {
239
+ const binding = this.records.read('idempotency', keyHash);
240
+ if (!binding || binding.retainUntil <= this.records.now())
241
+ await this.records.prepareIdempotency();
242
+ }
243
+ catch (error) {
244
+ throw this.storeError(error);
245
+ }
246
+ const now = this.records.now(), holderId = randomUUID();
247
+ const reservation = await this.mutate(records => {
248
+ let binding = records.read('idempotency', keyHash);
249
+ const retained = binding && records.read('operations', binding.operationId);
250
+ if (binding && (!retained || retained.tool !== binding.tool || retained.requestDigest !== binding.requestDigest))
251
+ throw deliveryError('IDEMPOTENCY_STORE_INVALID');
252
+ if (binding && retained && binding.retainUntil !== retained.retainUntil) {
253
+ // Complete an interrupted two-record horizon publication using original prepared deadlines.
254
+ const retainUntil = retained.preparedActions.length ? Math.max(retained.createdAt, ...retained.preparedActions.map(a => Date.parse(a.manifest.deadline))) + DELIVERY_RETENTION_MS : retained.retainUntil;
255
+ retained.retainUntil = retainUntil;
256
+ records.write('operations', retained.operationId, retained);
257
+ binding = { ...binding, retainUntil };
258
+ records.write('idempotency', keyHash, binding);
259
+ }
260
+ if (binding && binding.retainUntil > now) {
261
+ if (binding.requestDigest !== requestDigest)
262
+ throw deliveryError('IDEMPOTENCY_CONFLICT');
263
+ const r = records.read('operations', binding.operationId);
264
+ if (!r || r.requestDigest !== requestDigest || r.tool !== tool || binding.tool !== tool || r.retainUntil !== binding.retainUntil)
265
+ throw deliveryError('IDEMPOTENCY_STORE_INVALID');
266
+ if (r.response)
267
+ return { response: r.response };
268
+ if (r.lease && r.lease.until > now)
269
+ return { response: { isError: true, value: {
270
+ error: 'IDEMPOTENCY_IN_PROGRESS', operationId: r.operationId, taskIds: r.taskIds, messageIds: r.messageIds,
271
+ } } };
272
+ // Only C1's committed immutable envelopes may continue; never reconstruct a task session.
273
+ const error = ['reserved', 'awaiting_approval'].includes(r.phase) && !r.approvals?.length
274
+ ? 'APPROVAL_INTERRUPTED' : 'IDEMPOTENCY_RESULT_UNAVAILABLE';
275
+ r.response = { isError: true, value: { error, operationId: r.operationId, taskIds: r.taskIds, messageIds: r.messageIds } };
276
+ r.phase = 'finished';
277
+ delete r.lease;
278
+ records.write('operations', r.operationId, r);
279
+ return { response: r.response };
280
+ }
281
+ // Expiry and orphan cleanup are mutations, never side effects of a read.
282
+ records.reserveIdempotencyCapacity(now);
283
+ const r = { version: 1, operationId: randomUUID(), localOwnerDid: this.records.owner.did,
284
+ tool, requestDigest, createdAt: now, retainUntil: Math.max(now, options.deadline ?? now + 600_000) + DELIVERY_RETENTION_MS,
285
+ phase: 'reserved', messageIds: [], taskIds: [], preparedActions: [], lease: { holderId, until: now + this.leaseMs } };
286
+ records.write('operations', r.operationId, r);
287
+ records.write('idempotency', keyHash, { version: 1, localOwnerDid: r.localOwnerDid, tool, keyHash,
288
+ requestDigest, operationId: r.operationId, createdAt: now, retainUntil: r.retainUntil });
289
+ return { operation: r };
290
+ });
291
+ if (reservation.response)
292
+ return structuredClone(reservation.response);
293
+ const operation = new IdempotencyOperation(this, reservation.operation.operationId, holderId, options.children ?? 1, keyHash);
294
+ return Promise.resolve().then(async () => {
295
+ let renewalError;
296
+ let renewal = Promise.resolve();
297
+ const timer = setInterval(() => {
298
+ renewal = renewal.then(() => operation.renew()).catch(error => { renewalError = error; });
299
+ }, Math.max(1, Math.floor(this.leaseMs / 3)));
300
+ timer.unref();
301
+ try {
302
+ let response;
303
+ try {
304
+ response = await run(operation);
305
+ }
306
+ catch (error) {
307
+ response = idempotencyFailure(error);
308
+ }
309
+ clearInterval(timer);
310
+ await renewal;
311
+ if (renewalError)
312
+ throw renewalError;
313
+ response = JSON.parse(JSON.stringify(response));
314
+ await this.mutate(records => {
315
+ const r = records.read('operations', operation.operationId);
316
+ if (!r || r.phase === 'finished' || r.lease?.holderId !== holderId)
317
+ throw deliveryError('IDEMPOTENCY_RESULT_UNAVAILABLE');
318
+ r.phase = 'finished';
319
+ r.response = response;
320
+ delete r.lease;
321
+ records.write('operations', r.operationId, r);
322
+ });
323
+ return response;
324
+ }
325
+ finally {
326
+ clearInterval(timer);
327
+ }
328
+ });
329
+ }
330
+ }
331
+ //# sourceMappingURL=idempotency-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency-store.js","sourceRoot":"","sources":["../src/idempotency-store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { SignedEnvelope } from '@acp/core';
1
+ import type { SignedEnvelope } from '../../core/dist/index.js';
2
2
  /** Gateway-owned replay defense, independent of any relay behavior. */
3
3
  export declare class EnvelopeInbox {
4
4
  #private;
@@ -1,13 +1,39 @@
1
1
  export * from './policy.js';
2
2
  export * from './quota.js';
3
+ export * from './protocol-peer-store.js';
3
4
  export * from './mcp.js';
4
5
  export * from './mcp-server.js';
5
6
  export * from './verifier.js';
6
7
  export * from './gateway.js';
7
8
  export * from './a2a.js';
8
9
  export * from './inbox.js';
10
+ export * from './connection-service.js';
11
+ export * from './connection-admission-review.js';
12
+ export * from './connection-transport.js';
9
13
  export * from './adapter.js';
10
14
  export * from './approval-providers.js';
11
- export { createSignedAgentCard, verifySignedAgentCard, toA2AAgentCard, createInviteToken, parseAndVerifyInviteToken, } from '@acp/core';
15
+ export { createSignedAgentCard, verifySignedAgentCard, toA2AAgentCard, createInviteToken, parseAndVerifyInviteToken, } from '../../core/dist/index.js';
12
16
  export * from './session.js';
17
+ export * from './delivery-records.js';
18
+ export * from './delivery-store.js';
19
+ export * from './message-status.js';
20
+ export * from './outbox.js';
13
21
  export { PeerRejectedError } from './session-audit.js';
22
+ export * from './local-identity.js';
23
+ export * from './key-store.js';
24
+ export * from './secret-store.js';
25
+ export * from './relay-selection.js';
26
+ export * from './invite-store.js';
27
+ export * from './worker-trust-store.js';
28
+ export * from './connection-records.js';
29
+ export * from './application-config.js';
30
+ export * from './requester-pending-store.js';
31
+ export * from './held-request-store.js';
32
+ export * from './held-request-review.js';
33
+ export * from './protocol-release.js';
34
+ export * from './connection-router.js';
35
+ export * from './connection-persistence.js';
36
+ export * from './connection-service.js';
37
+ export * from './idempotency-store.js';
38
+ export * from './delivery-status.js';
39
+ export * from './delivery-status-router.js';
@@ -1,14 +1,40 @@
1
1
  export * from './policy.js';
2
2
  export * from './quota.js';
3
+ export * from './protocol-peer-store.js';
3
4
  export * from './mcp.js';
4
5
  export * from './mcp-server.js';
5
6
  export * from './verifier.js';
6
7
  export * from './gateway.js';
7
8
  export * from './a2a.js';
8
9
  export * from './inbox.js';
10
+ export * from './connection-service.js';
11
+ export * from './connection-admission-review.js';
12
+ export * from './connection-transport.js';
9
13
  export * from './adapter.js';
10
14
  export * from './approval-providers.js';
11
15
  export { createSignedAgentCard, verifySignedAgentCard, toA2AAgentCard, createInviteToken, parseAndVerifyInviteToken, } from '../../core/dist/index.js';
12
16
  export * from './session.js';
17
+ export * from './delivery-records.js';
18
+ export * from './delivery-store.js';
19
+ export * from './message-status.js';
20
+ export * from './outbox.js';
13
21
  export { PeerRejectedError } from './session-audit.js';
22
+ export * from './local-identity.js';
23
+ export * from './key-store.js';
24
+ export * from './secret-store.js';
25
+ export * from './relay-selection.js';
26
+ export * from './invite-store.js';
27
+ export * from './worker-trust-store.js';
28
+ export * from './connection-records.js';
29
+ export * from './application-config.js';
30
+ export * from './requester-pending-store.js';
31
+ export * from './held-request-store.js';
32
+ export * from './held-request-review.js';
33
+ export * from './protocol-release.js';
34
+ export * from './connection-router.js';
35
+ export * from './connection-persistence.js';
36
+ export * from './connection-service.js';
37
+ export * from './idempotency-store.js';
38
+ export * from './delivery-status.js';
39
+ export * from './delivery-status-router.js';
14
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AACnB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AACnB,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAExC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,76 @@
1
+ import type { Invite, KeyPair } from '../../core/dist/index.js';
2
+ import type { IdentityStoreOptions } from './key-store.js';
3
+ import type { SecretStore } from './secret-store.js';
4
+ import type { RelaySelectionOptions } from './relay-selection.js';
5
+ export interface SavedInvite {
6
+ workerRef: string;
7
+ alias: string;
8
+ displayName: string;
9
+ ownerDid: string;
10
+ agentDid: string;
11
+ relayUrl: string;
12
+ importedAt: string;
13
+ importState?: 'unconfirmed';
14
+ effectiveExpiresAt: string;
15
+ status: 'current' | 'expired';
16
+ }
17
+ export interface InviteImportOptions {
18
+ /** Only newly imported entries become eligible for explicit age-based cleanup. */
19
+ pendingConfirmation?: boolean;
20
+ }
21
+ export interface InviteStoreOptions extends IdentityStoreOptions {
22
+ /** External token storage; omitted file selection retains inline signed entries. */
23
+ secretStore?: SecretStore;
24
+ now?: () => number;
25
+ relayPolicy?: RelaySelectionOptions;
26
+ }
27
+ /** Owner-scoped bearer invitations. Public results deliberately omit the token. */
28
+ export declare class InviteStore {
29
+ private readonly owner;
30
+ private readonly options;
31
+ readonly path: string;
32
+ private readonly root;
33
+ private readonly directory;
34
+ private readonly io;
35
+ private readonly now;
36
+ private secretStore?;
37
+ /** Loads the optional backend; the constructor and synchronous methods remain available. */
38
+ static open(owner: KeyPair, options?: InviteStoreOptions): Promise<InviteStore>;
39
+ private selection;
40
+ constructor(owner: KeyPair, options?: InviteStoreOptions);
41
+ private verify;
42
+ private entry;
43
+ private readMetadata;
44
+ private validateToken;
45
+ private token;
46
+ private read;
47
+ private externalize;
48
+ private publicEntry;
49
+ list(): SavedInvite[];
50
+ /** Strict validation occurs on every resolution; an expired invite never becomes a DID target. */
51
+ resolve(workerRef: string): {
52
+ inviteToken: string;
53
+ invite: Invite;
54
+ };
55
+ private find;
56
+ private mutate;
57
+ import(link: string, alias?: string, options?: InviteImportOptions): SavedInvite;
58
+ /** Explicit migration publishes only after all external strings have been read back. */
59
+ migrateToKeychain(dryRun?: boolean): {
60
+ count: number;
61
+ dryRun: boolean;
62
+ };
63
+ /** Keeps an import permanently outside unconfirmed cleanup; grants no connection or task consent. */
64
+ retain(workerRef: string): SavedInvite;
65
+ /** Token-free metadata remains available even after interrupted secret deletion. */
66
+ listUnconfirmed(): SavedInvite[];
67
+ /** Deletes only explicitly pending imports strictly older than the supplied timestamp. */
68
+ removeUnconfirmed(options: {
69
+ olderThan: string;
70
+ }): {
71
+ removed: number;
72
+ };
73
+ private deleteSecret;
74
+ /** Secret deletion precedes metadata publication, so either step can be retried with the same reference. */
75
+ remove(workerRef: string): boolean;
76
+ }