sealbridge 0.2.2 → 0.3.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 (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 +222 -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 +278 -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
@@ -4,30 +4,28 @@ export function publicSettingsFlags(s) {
4
4
  typeof s.public !== 'boolean' || typeof s.alwaysAsk !== 'boolean' || !Array.isArray(s.taskTypes) || !s.taskTypes.length ||
5
5
  s.taskTypes.some(t => typeof t !== 'string' || !/^[a-zA-Z0-9_.-]+$/.test(t)))
6
6
  throw new Error('INVALID_PUBLIC_SETTINGS');
7
- const mapping = { maxInputTokens: 'open-max-input-tokens', maxOutputTokens: 'open-max-output-tokens',
8
- maxToolCalls: 'open-max-tool-calls', maxWallSeconds: 'open-max-wall-seconds',
9
- maxJobsPerPersonPerMinute: 'open-rate-limit-per-did', maxJobsPerDay: 'max-tasks-per-day' };
7
+ if (!s.alwaysAsk)
8
+ throw new Error('CONNECTION_OPENING_REQUIRED: Set alwaysAsk:true; connections require inspection and owner opening.');
9
+ const mapping = { maxInputTokens: 'max-input-tokens', maxOutputTokens: 'max-output-tokens',
10
+ maxToolCalls: 'max-tool-invocations', maxWallSeconds: 'max-wall-clock-seconds',
11
+ maxJobsPerPersonPerMinute: 'max-requests-per-minute', maxJobsPerDay: 'max-tasks-per-day' };
10
12
  for (const field of Object.keys(mapping))
11
13
  if (!Number.isSafeInteger(s[field]) || s[field] < 1)
12
14
  throw new Error('INVALID_PUBLIC_SETTINGS');
13
15
  const flags = ['--max-tasks-per-day', String(s.maxJobsPerDay)];
14
- if (!s.public)
15
- return flags;
16
- flags.push('--open', '--publish', '--open-allow-task-type', [...new Set(s.taskTypes)].join(','));
16
+ if (s.public)
17
+ flags.push('--publish');
18
+ flags.push('--allow-task-type', [...new Set(s.taskTypes)].join(','));
17
19
  for (const field of Object.keys(mapping))
18
20
  if (field !== 'maxJobsPerDay')
19
21
  flags.push('--' + mapping[field], String(s[field]));
20
- // Explicit false is the existing G3 opt-in; absence never implies auto-accept.
21
- if (!s.alwaysAsk)
22
- flags.push('--auto-accept', '--allow-any-requester');
23
22
  return flags;
24
23
  }
25
- export function publicProfileSummary(card, rate, daily, automatic = false) {
26
- return { name: card.payload.name, access: card.payload.accessMode === 'open' ? 'Strangers may request jobs' : 'Invite only',
27
- jobs: card.payload.skills.flatMap(s => s.taskTypes ?? []), perJob: card.payload.openPolicy ?? {},
24
+ export function publicProfileSummary(card, rate, daily, automatic = false, budgets = {}) {
25
+ return { name: card.payload.name, access: 'Connection-based intake; unconnected requests held',
26
+ jobs: card.payload.skills.flatMap(s => s.taskTypes ?? []),
28
27
  hostLimits: { perPersonPerMinute: rate ?? null, perDay: daily ?? null, dayReset: '00:00 UTC' },
29
- approval: automatic ? 'Automatic acceptance explicitly enabled' : 'Owner approval required',
30
- notice: 'Host rate and daily limits are not advertised in the signed openPolicy. Available capacity is checked at admission.',
31
- signedCard: card };
28
+ approval: 'Inspection and owner opening required for limited peers', inspection: 'unavailable',
29
+ perJob: budgets, automaticPolicy: automatic, signedCard: card };
32
30
  }
33
31
  //# sourceMappingURL=public-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-settings.js","sourceRoot":"","sources":["../src/public-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-settings.js","sourceRoot":"","sources":["../src/public-settings.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AuditVerificationOptions } from '@acp/ledger';
1
+ import type { AuditVerificationOptions } from '../../packages/ledger/dist/index.js';
2
2
  export declare function createReceipt(raw: string, anchor?: AuditVerificationOptions): {
3
3
  version: number;
4
4
  status: string;
@@ -0,0 +1,3 @@
1
+ import type { RelayAuthRecoveryOptions } from '../../packages/relay/dist/index.js';
2
+ export declare const RELAY_AUTH_HELP = "Relay authentication recovery:\n --relay-auth-retries <n> Additional attempts after HTTP 401 (default: 3; 0: fail immediately).\n --relay-auth-recovery-timeout-ms <ms> Overall recovery window in milliseconds (default: 120000).\nHTTP 403 and other permanent rejections remain terminal.";
3
+ export declare function relayAuthOptions(flags: Map<string, string | true>): RelayAuthRecoveryOptions;
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { validateRelayAuthRecoveryOptions } from '../../packages/relay/dist/index.js';
3
+ export const RELAY_AUTH_HELP = `Relay authentication recovery:
4
+ --relay-auth-retries <n> Additional attempts after HTTP 401 (default: 3; 0: fail immediately).
5
+ --relay-auth-recovery-timeout-ms <ms> Overall recovery window in milliseconds (default: 120000).
6
+ HTTP 403 and other permanent rejections remain terminal.`;
7
+ export function relayAuthOptions(flags) {
8
+ const count = (flag) => {
9
+ if (!flags.has(flag))
10
+ return undefined;
11
+ const raw = flags.get(flag);
12
+ if (typeof raw !== 'string' || !/^\d+$/.test(raw))
13
+ throw new Error('INVALID_' + flag.slice(2).toUpperCase().replaceAll('-', '_'));
14
+ return Number(raw);
15
+ };
16
+ const options = {
17
+ maxAuthRecoveryAttempts: count('--relay-auth-retries'),
18
+ authRecoveryTimeoutMs: count('--relay-auth-recovery-timeout-ms'),
19
+ };
20
+ validateRelayAuthRecoveryOptions(options);
21
+ return options;
22
+ }
23
+ //# sourceMappingURL=relay-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-auth.js","sourceRoot":"","sources":["../src/relay-auth.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAG9D,MAAM,CAAC,MAAM,eAAe,GAAG;;;yDAG0B,CAAC;AAE1D,MAAM,UAAU,gBAAgB,CAAC,KAAiC;IAChE,MAAM,KAAK,GAAG,CAAC,IAAY,EAAsB,EAAE;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACjF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,OAAO,GAAG;QACd,uBAAuB,EAAE,KAAK,CAAC,sBAAsB,CAAC;QACtD,qBAAqB,EAAE,KAAK,CAAC,kCAAkC,CAAC;KACjE,CAAC;IACF,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { IdentityStoreOptions } from '../../packages/runtime/dist/key-store.js';
2
+ import type { HeldContentReviewProvider } from '../../packages/runtime/dist/index.js';
3
+ import type { ConnectionsCommandOptions } from './connections.js';
4
+ export declare function requestsCommand(args: string[], options?: {
5
+ identityOptions?: IdentityStoreOptions;
6
+ review?: (summary: string) => Promise<boolean>;
7
+ output?: (value: string) => void;
8
+ inspectionProvider?: HeldContentReviewProvider;
9
+ transportFactory?: ConnectionsCommandOptions['transportFactory'];
10
+ }): Promise<void>;
@@ -0,0 +1,91 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { attachHeldDeliveryStatus } from '../../packages/runtime/dist/index.js';
3
+ import { openEnvelope } from '../../packages/core/dist/index.js';
4
+ import { inspectStoredIdentity } from '../../packages/runtime/dist/key-store.js';
5
+ import { WorkerTrustStore, workerIntakePath, HeldRequestReview } from '../../packages/runtime/dist/index.js';
6
+ import { confirmOwner, connectionsCommand } from './connections.js';
7
+ export async function requestsCommand(args, options = {}) {
8
+ const usage = 'Usage: sealbridge requests list | show ID | approve ID [--trust trusted (legacy finite grant)] | discard ID | deny ID [--key FILE] [--role worker|requester]. Default approve offers limited connection consent; inspection and human confirmation required. / 既定の承認は limited の接続同意です。検査と所有者の確認が必要です。';
9
+ const output = options.output ?? console.log;
10
+ if (args.length === 1 && args[0] === '--help') {
11
+ output(usage);
12
+ return;
13
+ }
14
+ const [action, ...rest] = args, flags = new Map(), ids = [];
15
+ for (let i = 0; i < rest.length; i++) {
16
+ const flag = rest[i];
17
+ if (!flag.startsWith('--')) {
18
+ ids.push(flag);
19
+ continue;
20
+ }
21
+ if (!['--key', '--trust', '--role'].includes(flag) || flags.has(flag) || !rest[i + 1] || rest[i + 1].startsWith('--'))
22
+ throw new Error('INVALID_REQUEST_OPTION');
23
+ flags.set(flag, rest[++i]);
24
+ }
25
+ const trust = flags.get('--trust') ?? 'limited', role = flags.get('--role') ?? 'worker';
26
+ if (!['list', 'show', 'approve', 'discard', 'deny'].includes(action) || ids.length !== (action === 'list' ? 0 : 1) ||
27
+ !['limited', 'trusted'].includes(trust) || (flags.has('--trust') && action !== 'approve') || !['worker', 'requester'].includes(role))
28
+ throw new Error(usage);
29
+ const identityOptions = { ...options.identityOptions, explicitKeyPath: flags.get('--key') };
30
+ const key = (await inspectStoredIdentity(role, identityOptions)).key;
31
+ if (!key) {
32
+ if (action === 'list') {
33
+ output(JSON.stringify({ requests: [] }));
34
+ return;
35
+ }
36
+ throw new Error('REQUEST_REVIEW_UNAVAILABLE');
37
+ }
38
+ const store = new WorkerTrustStore(key, { path: workerIntakePath(key.did, identityOptions), fs: identityOptions.fs, platform: identityOptions.platform });
39
+ const review = new HeldRequestReview(key, { ...identityOptions, provider: options.inspectionProvider });
40
+ attachHeldDeliveryStatus(key, review, identityOptions, store);
41
+ if (action === 'list') {
42
+ // Legacy text previews are historical metadata, never reviewed content.
43
+ output(JSON.stringify({ requests: store.list().map(({ title: _title, description: _description, ...r }) => ({ ...r,
44
+ inspectionStatus: review.list().find(h => h.taskId === r.taskId)?.inspectionStatus ?? 'unavailable' })) }));
45
+ return;
46
+ }
47
+ const request = store.list().find(r => r.id === ids[0]);
48
+ if (!request)
49
+ throw new Error('REQUEST_NOT_FOUND');
50
+ const held = review.list().find(h => h.taskId === request.taskId);
51
+ if (action === 'show' || action === 'approve' && trust === 'limited') {
52
+ if (!held)
53
+ throw new Error('INSPECTION_INCOMPLETE');
54
+ const inspected = await review.inspect(held.id);
55
+ if (inspected.inspectionStatus !== 'complete')
56
+ throw new Error('INSPECTION_INCOMPLETE: ' + inspected.inspectionStatus);
57
+ if (action === 'show') {
58
+ output(JSON.stringify(review.showReviewedContent(held.id)));
59
+ return;
60
+ }
61
+ }
62
+ if (action === 'approve' && trust === 'limited') {
63
+ // A task without separate signed sender consent initiates an offer; it cannot infer reciprocal consent.
64
+ const connection = store.listConnections().find(c => c.peerOwnerDid === request.requesterOwnerDid);
65
+ if (!connection || !('relayUrl' in connection) || !connection.relayUrl)
66
+ throw new Error('CONNECTION_NOT_FOUND');
67
+ const body = openEnvelope(review.store.read(held.id).envelope, key);
68
+ const attached = body.connectionRequest;
69
+ await connectionsCommand([...(attached ? ['approve', attached.payload.taskId.slice(5)] : ['request', '--to', request.requesterOwnerDid]), '--relay', connection.relayUrl, '--role', role,
70
+ ...(flags.has('--key') ? ['--key', flags.get('--key')] : [])], options);
71
+ store.finishRequestReview(request.id);
72
+ if (held)
73
+ review.discard(held.id);
74
+ return;
75
+ }
76
+ const summary = JSON.stringify({ id: request.id, localOwnerDid: key.did, peerOwnerDid: request.requesterOwnerDid, action,
77
+ effect: action === 'deny' ? 'Block future admission; accepted tasks continue.' : action === 'discard' ? 'Discard held content only.' :
78
+ 'Legacy explicit trusted grant for 24 hours; automatic policy may execute tasks. This is separate from connections.' });
79
+ if (!await confirmOwner(summary, options.review))
80
+ throw new Error('APPROVAL_REJECTED');
81
+ if (action === 'discard')
82
+ store.finishRequestReview(request.id, true);
83
+ else
84
+ store.decide(request.id, action, 'trusted');
85
+ if (held)
86
+ review.discard(held.id);
87
+ if (action === 'deny')
88
+ review.discardPeer(request.requesterOwnerDid);
89
+ output(JSON.stringify({ id: request.id, decision: action, ...(action === 'approve' ? { trust: 'trusted', legacy: true } : {}) }));
90
+ }
91
+ //# sourceMappingURL=requests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.js","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc,EAAE,UAIlD,EAAE;IACJ,MAAM,KAAK,GAAG,uSAAuS,CAAC;IACtT,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACzE,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAkB,EAAE,GAAG,GAAa,EAAE,CAAC;IACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACzD,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACjK,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IACxF,IAAI,CAAC,CAAC,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,SAAS,EAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/J,MAAM,eAAe,GAAG,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,CAAC,MAAM,qBAAqB,CAAC,IAA8B,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/F,IAAI,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAAC,CAAC;IACzI,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1J,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE,EAAE,GAAG,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxG,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,wEAAwE;QACxE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;gBAChH,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,IAAI,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO;IACxH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACrE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,SAAS,CAAC,gBAAgB,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACvH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAChD,wGAAwG;QACxG,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAChH,MAAM,IAAI,GAAG,YAAY,CAAyC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE,CAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxC,MAAM,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI;YACtL,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3E,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,IAAI;YAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,OAAO;IACnF,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM;QACtH,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;YACpI,oHAAoH,EAAE,CAAC,CAAC;IAC5H,IAAI,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvF,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;;QACjE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,MAA4B,EAAE,SAAS,CAAC,CAAC;IACvE,IAAI,IAAI;QAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,MAAM;QAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpI,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Supported embedding surface for sealbridge/sdk. Keep exports explicit. */
2
+ export { InviteStore, KeychainSecretStore, openKeychainSecretStore, FileKeyStore, KeychainKeyStore, inspectStoredIdentity, resolveStoredIdentity, selectKeyStore, keyStoreSelection, keychainService, resolveDataRoot, readApplicationConfig, setApplicationKeyStore, WorkerTrustStore, workerIntakePath, ConnectionService, ConnectionRouter, syncConnections, StoredConnectionExchange, ConnectionAdmissionReview, HeldRequestReview, unavailableHeldContentReviewProvider, AcpMcpServer, } from '../../packages/runtime/dist/index.js';
3
+ export type { SavedInvite, InviteStoreOptions, SecretStore, DataRootOptions, LocalIdentityOptions, IdentityRole, IdentityStoreOptions, StoredIdentity, KeyStore, KeyStoreDescription, KeyStoreSelection, KeyringEntry, KeyringModule, ApplicationConfig, ApplicationConfigOptions, RelaySelectionOptions, ConnectionState, ConnectionStatus, ConnectionTrust, ConnectionPeer, ConnectionRecord, ConnectionSummary, PriorApprovedPeer, ConnectionServiceOptions, ConnectionServiceResult, ConnectionHumanReviewProvider, ConnectionInspectionPort, ConnectionPersistencePort, ConnectionOffer, ConnectionConsent, ConnectionOutboxEntry, ConnectionAcceptanceCommit, ConnectionRedemptionCommit, ConnectionTransport, ConnectionFrame, ConnectionRouterOptions, ConnectedEvent, ConnectionAdmissionReviewOptions, InboundConnectionSummary, HeldRequestReviewOptions, HeldContentReviewProvider, HeldInspectionContext, InspectionCompletion, AcpMcpServerOptions, ApprovalProvider, } from '../../packages/runtime/dist/index.js';
4
+ export { generateKeyPair, createSignedAgentCard, verifySignedAgentCard, createInviteToken, inviteTokenFromUri, isInviteTarget, parseAndVerifyInviteToken, discoverAgentCards, findDiscoveredAgentCard, } from '../../packages/core/dist/index.js';
5
+ export type { KeyPair, Json, Signed, SignedEnvelope, Invite, AgentSkill, DiscoveryAgentCard, CreateAgentCardOptions, SignedAgentCard, RelayEndpointPolicy, ConnectionRequest, ConnectionAccepted, ConnectionAck, ConnectionControl, } from '../../packages/core/dist/index.js';
6
+ export type { RelayTransport } from '../../packages/relay/dist/index.js';
7
+ export { connectionsCommand, connectionHumanReview } from './connections.js';
8
+ export type { ConnectionsCommandOptions } from './connections.js';
9
+ export { mcpServerCommand, parseMcpServerArgs, mcpServerOptionsFromArgs } from './mcp.js';
10
+ export type { ParsedMcpServerArgs } from './mcp.js';
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /** Supported embedding surface for sealbridge/sdk. Keep exports explicit. */
3
+ export { InviteStore, KeychainSecretStore, openKeychainSecretStore, FileKeyStore, KeychainKeyStore, inspectStoredIdentity, resolveStoredIdentity, selectKeyStore, keyStoreSelection, keychainService, resolveDataRoot, readApplicationConfig, setApplicationKeyStore, WorkerTrustStore, workerIntakePath, ConnectionService, ConnectionRouter, syncConnections, StoredConnectionExchange, ConnectionAdmissionReview, HeldRequestReview, unavailableHeldContentReviewProvider, AcpMcpServer, } from '../../packages/runtime/dist/index.js';
4
+ export { generateKeyPair, createSignedAgentCard, verifySignedAgentCard, createInviteToken, inviteTokenFromUri, isInviteTarget, parseAndVerifyInviteToken, discoverAgentCards, findDiscoveredAgentCard, } from '../../packages/core/dist/index.js';
5
+ export { connectionsCommand, connectionHumanReview } from './connections.js';
6
+ export { mcpServerCommand, parseMcpServerArgs, mcpServerOptionsFromArgs } from './mcp.js';
7
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6EAA6E;AAC7E,OAAO,EACL,WAAW,EAAE,mBAAmB,EAAE,uBAAuB,EACzD,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,EAC5E,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EACnE,qBAAqB,EAAE,sBAAsB,EAC7C,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,wBAAwB,EAAE,yBAAyB,EACzG,iBAAiB,EAAE,oCAAoC,EACvD,YAAY,GACb,MAAM,cAAc,CAAC;AAetB,OAAO,EACL,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAC7D,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,yBAAyB,EAChF,kBAAkB,EAAE,uBAAuB,GAC5C,MAAM,WAAW,CAAC;AAOnB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,24 @@
1
+ import * as fs from 'node:fs';
2
+ import type { Node as JsonNode } from 'jsonc-parser';
3
+ export interface Snapshot {
4
+ path: string;
5
+ bytes?: Buffer;
6
+ stat?: fs.Stats;
7
+ }
8
+ export interface FileChange extends Snapshot {
9
+ next: Buffer;
10
+ backup?: string;
11
+ }
12
+ /** Host directories are checked for links, without changing their permissions. */
13
+ export declare function snapshot(path: string, io?: typeof fs, platform?: NodeJS.Platform): Snapshot;
14
+ export declare function strictObject(bytes: Buffer): {
15
+ text: string;
16
+ tree: JsonNode;
17
+ };
18
+ export declare function hostChange(original: Snapshot, entry: unknown, options?: {
19
+ updateExisting?: boolean;
20
+ alternateEntry?: unknown;
21
+ }): FileChange;
22
+ export declare function assertUnchanged(original: Snapshot, io?: typeof fs, platform?: NodeJS.Platform): void;
23
+ /** A backup remains available after a later write failure; never restore over owner edits. */
24
+ export declare function publish(change: FileChange, root: string, io?: typeof fs, platform?: NodeJS.Platform): void;
@@ -0,0 +1,190 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import * as fs from 'node:fs';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { dirname, join } from 'node:path';
5
+ import { isDeepStrictEqual } from 'node:util';
6
+ import { parseTree } from 'jsonc-parser';
7
+ import { checkPrivatePath, ensurePrivateDirectory } from '../../packages/runtime/dist/local-identity.js';
8
+ function fail(code) { throw new Error(code); }
9
+ const errno = (error) => error.code;
10
+ /** Host directories are checked for links, without changing their permissions. */
11
+ export function snapshot(path, io = fs, platform = process.platform) {
12
+ let fd;
13
+ try {
14
+ checkPrivatePath(path, io, platform);
15
+ let before;
16
+ try {
17
+ before = io.lstatSync(path);
18
+ }
19
+ catch (error) {
20
+ if (errno(error) === 'ENOENT')
21
+ return { path };
22
+ throw error;
23
+ }
24
+ if (!before.isFile() || before.size > 1024 * 1024)
25
+ fail('SETUP_CONFIG_INVALID');
26
+ fd = io.openSync(path, fs.constants.O_RDONLY | (fs.constants.O_NOFOLLOW ?? 0) |
27
+ (fs.constants.O_NONBLOCK ?? 0));
28
+ const stat = io.fstatSync(fd);
29
+ if (!stat.isFile() || stat.dev !== before.dev || stat.ino !== before.ino)
30
+ fail('SETUP_CONFIG_CHANGED');
31
+ const buffer = Buffer.alloc(1024 * 1024 + 1);
32
+ let length = 0, count;
33
+ while (length < buffer.length && (count = io.readSync(fd, buffer, length, buffer.length - length, null)))
34
+ length += count;
35
+ if (length > 1024 * 1024)
36
+ fail('SETUP_CONFIG_INVALID');
37
+ return { path, bytes: buffer.subarray(0, length), stat };
38
+ }
39
+ catch (error) {
40
+ if (error instanceof Error && error.message.startsWith('SETUP_'))
41
+ throw error;
42
+ if (error instanceof Error && error.message === 'IDENTITY_INVALID')
43
+ fail('SETUP_CONFIG_INVALID');
44
+ return fail('SETUP_WRITE_FAILED');
45
+ }
46
+ finally {
47
+ if (fd !== undefined)
48
+ io.closeSync(fd);
49
+ }
50
+ }
51
+ export function strictObject(bytes) {
52
+ const raw = bytes.toString('utf8');
53
+ if (!Buffer.from(raw).equals(bytes))
54
+ fail('SETUP_CONFIG_INVALID');
55
+ const text = raw.replace(/^\uFEFF/, '');
56
+ const errors = [];
57
+ const tree = parseTree(text, errors, { disallowComments: true, allowTrailingComma: false });
58
+ if (!tree || tree.type !== 'object' || errors.length)
59
+ fail('SETUP_CONFIG_INVALID');
60
+ function duplicates(node) {
61
+ if (node.type === 'object') {
62
+ const names = new Set();
63
+ for (const property of node.children ?? []) {
64
+ const name = property.children[0].value;
65
+ if (names.has(name))
66
+ fail('SETUP_CONFIG_INVALID');
67
+ names.add(name);
68
+ }
69
+ }
70
+ for (const child of node.children ?? [])
71
+ duplicates(child);
72
+ }
73
+ duplicates(tree);
74
+ return { text, tree };
75
+ }
76
+ export function hostChange(original, entry, options = {}) {
77
+ const { text, tree } = strictObject(original.bytes ?? Buffer.from('{}\n'));
78
+ const value = JSON.parse(text);
79
+ const servers = tree.children?.find(p => p.children[0].value === 'mcpServers')?.children[1];
80
+ if (servers && servers.type !== 'object')
81
+ fail('SETUP_CONFIG_INVALID');
82
+ if (servers && Object.hasOwn(value.mcpServers, 'sealbridge')) {
83
+ const existing = value.mcpServers.sealbridge;
84
+ if (isDeepStrictEqual(existing, entry))
85
+ return { ...original, next: original.bytes };
86
+ if (!options.updateExisting)
87
+ fail(options.alternateEntry !== undefined && isDeepStrictEqual(existing, options.alternateEntry)
88
+ ? 'SETUP_APPROVAL_MODE_CONFLICT' : 'SETUP_ENTRY_CONFLICT');
89
+ const node = servers.children.find(p => p.children[0].value === 'sealbridge').children[1];
90
+ const bom = original.bytes?.subarray(0, 3).equals(Buffer.from([0xef, 0xbb, 0xbf])) ? '\uFEFF' : '';
91
+ const next = Buffer.from(bom + text.slice(0, node.offset) + JSON.stringify(entry) + text.slice(node.offset + node.length));
92
+ strictObject(next);
93
+ return { ...original, next };
94
+ }
95
+ // Insert only the property bytes. Existing keys, spacing, BOM and line endings stay intact.
96
+ const object = servers ?? tree;
97
+ const eol = text.includes('\r\n') ? '\r\n' : '\n';
98
+ const unit = /(?:^|\n)([ \t]+)"/.exec(text)?.[1] ?? ' ';
99
+ const base = servers ? unit : '';
100
+ const property = JSON.stringify(servers ? { sealbridge: entry } : { mcpServers: { sealbridge: entry } }, null, unit)
101
+ .slice(2, -2).split('\n').map(line => base + line).join(eol);
102
+ const children = object.children ?? [];
103
+ const last = children.at(-1);
104
+ const offset = last ? last.offset + last.length : object.offset + 1;
105
+ const tail = text.slice(offset, object.offset + object.length - 1);
106
+ const suffix = tail.includes('\n') ? '' : eol + base;
107
+ const next = text.slice(0, offset) + (last ? ',' : '') + eol + property + suffix + text.slice(offset);
108
+ const bom = original.bytes?.subarray(0, 3).equals(Buffer.from([0xef, 0xbb, 0xbf])) ? '\uFEFF' : '';
109
+ const bytes = Buffer.from(bom + next);
110
+ strictObject(bytes);
111
+ return { ...original, next: bytes };
112
+ }
113
+ export function assertUnchanged(original, io = fs, platform = process.platform) {
114
+ const current = snapshot(original.path, io, platform);
115
+ if (original.bytes === undefined ? current.bytes !== undefined :
116
+ !current.bytes?.equals(original.bytes) || current.stat.dev !== original.stat.dev ||
117
+ current.stat.ino !== original.stat.ino || current.stat.mode !== original.stat.mode ||
118
+ current.stat.uid !== original.stat.uid || current.stat.gid !== original.stat.gid)
119
+ fail('SETUP_CONFIG_CHANGED');
120
+ }
121
+ function flushed(path, bytes, mode, io, owner, created) {
122
+ const fd = io.openSync(path, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL |
123
+ (fs.constants.O_NOFOLLOW ?? 0), mode);
124
+ try {
125
+ created?.();
126
+ if (process.platform !== 'win32' && owner) {
127
+ const stat = io.fstatSync(fd);
128
+ if (stat.uid !== owner.uid || stat.gid !== owner.gid)
129
+ io.fchownSync(fd, owner.uid, owner.gid);
130
+ io.fchmodSync(fd, mode);
131
+ }
132
+ let offset = 0;
133
+ while (offset < bytes.length) {
134
+ const count = io.writeSync(fd, bytes, offset, bytes.length - offset);
135
+ if (!count)
136
+ fail('SETUP_WRITE_FAILED');
137
+ offset += count;
138
+ }
139
+ io.fsyncSync(fd);
140
+ }
141
+ finally {
142
+ io.closeSync(fd);
143
+ }
144
+ }
145
+ /** A backup remains available after a later write failure; never restore over owner edits. */
146
+ export function publish(change, root, io = fs, platform = process.platform) {
147
+ assertUnchanged(change, io, platform);
148
+ if (change.bytes?.equals(change.next))
149
+ return;
150
+ const temporary = join(dirname(change.path), '.sealbridge.' + randomUUID() + '.tmp');
151
+ let madeTemporary = false;
152
+ try {
153
+ if (change.bytes) {
154
+ const backups = join(root, 'setup', 'backups');
155
+ ensurePrivateDirectory(join(root, 'setup'), io, platform);
156
+ ensurePrivateDirectory(backups, io, platform);
157
+ change.backup = join(backups, randomUUID());
158
+ flushed(change.backup, change.bytes, 0o600, io);
159
+ }
160
+ checkPrivatePath(change.path, io, platform);
161
+ io.mkdirSync(dirname(change.path), { recursive: true });
162
+ checkPrivatePath(change.path, io, platform);
163
+ flushed(temporary, change.next, change.stat ? change.stat.mode & 0o777 : 0o600, io, change.stat, () => { madeTemporary = true; });
164
+ assertUnchanged(change, io, platform);
165
+ if (change.bytes)
166
+ io.renameSync(temporary, change.path);
167
+ else
168
+ io.linkSync(temporary, change.path);
169
+ const current = snapshot(change.path, io, platform);
170
+ if (!current.bytes?.equals(change.next))
171
+ fail('SETUP_CONFIG_CHANGED');
172
+ }
173
+ catch (error) {
174
+ if (error instanceof Error && error.message.startsWith('SETUP_'))
175
+ throw error;
176
+ fail(errno(error) === 'EEXIST' ? 'SETUP_CONFIG_CHANGED' : 'SETUP_WRITE_FAILED');
177
+ }
178
+ finally {
179
+ if (madeTemporary) {
180
+ try {
181
+ io.unlinkSync(temporary);
182
+ }
183
+ catch (error) {
184
+ if (errno(error) !== 'ENOENT')
185
+ throw new Error('SETUP_WRITE_FAILED');
186
+ }
187
+ }
188
+ }
189
+ }
190
+ //# sourceMappingURL=setup-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-files.js","sourceRoot":"","sources":["../src/setup-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import * as fs from 'node:fs';
2
+ import type { DataRootOptions } from '../../packages/runtime/dist/local-identity.js';
3
+ export type SetupHost = 'claude-desktop' | 'cursor' | 'claude-code';
4
+ export interface HostDestination {
5
+ host: SetupHost;
6
+ path: string;
7
+ evidence: string;
8
+ }
9
+ export interface HostOptions extends DataRootOptions {
10
+ fs?: typeof fs;
11
+ project?: string;
12
+ }
13
+ export declare function hostDestination(host: string, options: HostOptions): HostDestination;
14
+ export declare function detectedHosts(options: HostOptions): HostDestination[];
15
+ export interface McpEntry {
16
+ command: string;
17
+ args: string[];
18
+ env: {
19
+ SEALBRIDGE_DATA_DIR: string;
20
+ };
21
+ }
22
+ /** Resolve module-relative installed JavaScript, never a PATH shim or cwd-relative script. */
23
+ export declare function runtimeEntry(root: string, options?: {
24
+ fs?: typeof fs;
25
+ platform?: NodeJS.Platform;
26
+ execPath?: string;
27
+ entryPath?: string;
28
+ requireApproval?: boolean;
29
+ }): McpEntry;
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import * as fs from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { posix, win32 } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ export function hostDestination(host, options) {
7
+ const platform = options.platform ?? process.platform, paths = platform === 'win32' ? win32 : posix;
8
+ const home = options.home ?? homedir(), env = options.env ?? process.env;
9
+ if (!paths.isAbsolute(home))
10
+ throw new Error('SETUP_INVALID_ARGUMENT');
11
+ let path;
12
+ if (host === 'cursor')
13
+ path = paths.join(home, '.cursor', 'mcp.json');
14
+ else if (host === 'claude-desktop' && platform === 'darwin')
15
+ path = paths.join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
16
+ else if (host === 'claude-desktop' && platform === 'win32' && env.APPDATA && paths.isAbsolute(env.APPDATA))
17
+ path = paths.join(env.APPDATA, 'Claude', 'claude_desktop_config.json');
18
+ else if (host === 'claude-code') {
19
+ if (!options.project || !paths.isAbsolute(options.project))
20
+ throw new Error('SETUP_INVALID_ARGUMENT');
21
+ path = paths.join(options.project, '.mcp.json');
22
+ }
23
+ else
24
+ throw new Error('SETUP_HOST_UNSUPPORTED');
25
+ return { host: host, path, evidence: paths.dirname(path) };
26
+ }
27
+ export function detectedHosts(options) {
28
+ const result = [], io = options.fs ?? fs;
29
+ for (const name of ['claude-desktop', 'cursor']) {
30
+ let host;
31
+ try {
32
+ host = hostDestination(name, options);
33
+ }
34
+ catch (error) {
35
+ if (error.message === 'SETUP_HOST_UNSUPPORTED')
36
+ continue;
37
+ throw error;
38
+ }
39
+ try {
40
+ if (io.lstatSync(host.evidence).isDirectory())
41
+ result.push(host);
42
+ }
43
+ catch (error) {
44
+ if (error.code !== 'ENOENT')
45
+ throw new Error('SETUP_WRITE_FAILED');
46
+ }
47
+ }
48
+ return result;
49
+ }
50
+ /** Resolve module-relative installed JavaScript, never a PATH shim or cwd-relative script. */
51
+ export function runtimeEntry(root, options = {}) {
52
+ const io = options.fs ?? fs, platform = options.platform ?? process.platform;
53
+ const paths = platform === 'win32' ? win32 : posix;
54
+ const resolve = (path) => {
55
+ if (!paths.isAbsolute(path))
56
+ throw new Error('SETUP_RUNTIME_UNSTABLE');
57
+ const result = io.realpathSync(path);
58
+ if (/(^|[\\/])(_npx|npx|dlx|_tmp|\.tmp)([\\/]|$)|[\\/]\.pnpm[\\/]tmp[\\/]/i.test(path + '/' + result) ||
59
+ !io.statSync(result).isFile())
60
+ throw new Error('SETUP_RUNTIME_UNSTABLE');
61
+ return result;
62
+ };
63
+ try {
64
+ const command = resolve(options.execPath ?? process.execPath);
65
+ const entry = resolve(options.entryPath ?? fileURLToPath(new URL('./index.js', import.meta.url)));
66
+ if (!entry.endsWith('.js') || (platform === 'win32' && !/\.exe$/i.test(command)))
67
+ throw new Error();
68
+ return { command, args: [entry, 'mcp-server', ...(options.requireApproval === false ? [] : ['--require-approval'])],
69
+ env: { SEALBRIDGE_DATA_DIR: root } };
70
+ }
71
+ catch {
72
+ throw new Error('SETUP_RUNTIME_UNSTABLE');
73
+ }
74
+ }
75
+ //# sourceMappingURL=setup-hosts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-hosts.js","sourceRoot":"","sources":["../src/setup-hosts.ts"],"names":[],"mappings":"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"}