sealbridge 0.2.1 → 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 (266) hide show
  1. package/README.ja.md +499 -31
  2. package/README.md +529 -110
  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 +24 -0
  26. package/dist/cli/dist/error-messages.js.map +1 -1
  27. package/dist/cli/dist/index.js +54 -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/codex-config.d.ts +15 -0
  77. package/dist/packages/adapters/dist/codex-config.js +171 -0
  78. package/dist/packages/adapters/dist/codex-config.js.map +1 -0
  79. package/dist/packages/adapters/dist/command.d.ts +7 -3
  80. package/dist/packages/adapters/dist/command.js +74 -24
  81. package/dist/packages/adapters/dist/command.js.map +1 -1
  82. package/dist/packages/adapters/dist/credential-proxy.d.ts +4 -2
  83. package/dist/packages/adapters/dist/credential-proxy.js +5 -0
  84. package/dist/packages/adapters/dist/credential-proxy.js.map +1 -1
  85. package/dist/packages/adapters/dist/index.d.ts +1 -1
  86. package/dist/packages/adapters/dist/mcp.d.ts +2 -2
  87. package/dist/packages/adapters/dist/openai.d.ts +2 -2
  88. package/dist/packages/adapters/dist/sandbox.d.ts +2 -2
  89. package/dist/packages/adapters/dist/windows-command.d.ts +6 -0
  90. package/dist/packages/adapters/dist/windows-command.js +37 -0
  91. package/dist/packages/adapters/dist/windows-command.js.map +1 -0
  92. package/dist/packages/core/dist/connection.d.ts +58 -0
  93. package/dist/packages/core/dist/connection.js +132 -0
  94. package/dist/packages/core/dist/connection.js.map +1 -0
  95. package/dist/packages/core/dist/delivery-status.d.ts +22 -0
  96. package/dist/packages/core/dist/delivery-status.js +53 -0
  97. package/dist/packages/core/dist/delivery-status.js.map +1 -0
  98. package/dist/packages/core/dist/discovery.d.ts +7 -6
  99. package/dist/packages/core/dist/discovery.js +19 -20
  100. package/dist/packages/core/dist/discovery.js.map +1 -1
  101. package/dist/packages/core/dist/edge.d.ts +1 -0
  102. package/dist/packages/core/dist/edge.js +1 -0
  103. package/dist/packages/core/dist/edge.js.map +1 -1
  104. package/dist/packages/core/dist/index.d.ts +3 -0
  105. package/dist/packages/core/dist/index.js +3 -0
  106. package/dist/packages/core/dist/index.js.map +1 -1
  107. package/dist/packages/core/dist/protocol.d.ts +24 -0
  108. package/dist/packages/core/dist/protocol.js +54 -0
  109. package/dist/packages/core/dist/protocol.js.map +1 -0
  110. package/dist/packages/core/dist/receipts.d.ts +1 -0
  111. package/dist/packages/core/dist/receipts.js +1 -1
  112. package/dist/packages/core/dist/receipts.js.map +1 -1
  113. package/dist/packages/core/dist/schema.d.ts +1 -0
  114. package/dist/packages/core/dist/schema.js +13 -2
  115. package/dist/packages/core/dist/schema.js.map +1 -1
  116. package/dist/packages/ledger/dist/index.d.ts +1 -1
  117. package/dist/packages/relay/dist/admission.d.ts +14 -0
  118. package/dist/packages/relay/dist/admission.js +70 -0
  119. package/dist/packages/relay/dist/admission.js.map +1 -0
  120. package/dist/packages/relay/dist/fetch.d.ts +8 -2
  121. package/dist/packages/relay/dist/fetch.js +41 -12
  122. package/dist/packages/relay/dist/fetch.js.map +1 -1
  123. package/dist/packages/relay/dist/index.d.ts +23 -12
  124. package/dist/packages/relay/dist/index.js +130 -78
  125. package/dist/packages/relay/dist/index.js.map +1 -1
  126. package/dist/packages/relay/dist/journal.d.ts +1 -1
  127. package/dist/packages/relay/dist/notifications.d.ts +1 -1
  128. package/dist/packages/relay/dist/retry.d.ts +23 -0
  129. package/dist/packages/relay/dist/retry.js +43 -1
  130. package/dist/packages/relay/dist/retry.js.map +1 -1
  131. package/dist/packages/relay/dist/ssrf.d.ts +3 -2
  132. package/dist/packages/relay/dist/ssrf.js.map +1 -1
  133. package/dist/packages/relay/dist/worker.js +1 -1
  134. package/dist/packages/relay/dist/worker.js.map +1 -1
  135. package/dist/packages/runtime/dist/a2a.d.ts +1 -1
  136. package/dist/packages/runtime/dist/a2a.js +1 -1
  137. package/dist/packages/runtime/dist/adapter.d.ts +2 -2
  138. package/dist/packages/runtime/dist/application-config.d.ts +20 -0
  139. package/dist/packages/runtime/dist/application-config.js +222 -0
  140. package/dist/packages/runtime/dist/application-config.js.map +1 -0
  141. package/dist/packages/runtime/dist/approval-providers.d.ts +24 -3
  142. package/dist/packages/runtime/dist/approval-providers.js +79 -3
  143. package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
  144. package/dist/packages/runtime/dist/connection-admission-review.d.ts +39 -0
  145. package/dist/packages/runtime/dist/connection-admission-review.js +86 -0
  146. package/dist/packages/runtime/dist/connection-admission-review.js.map +1 -0
  147. package/dist/packages/runtime/dist/connection-persistence.d.ts +35 -0
  148. package/dist/packages/runtime/dist/connection-persistence.js +181 -0
  149. package/dist/packages/runtime/dist/connection-persistence.js.map +1 -0
  150. package/dist/packages/runtime/dist/connection-records.d.ts +167 -0
  151. package/dist/packages/runtime/dist/connection-records.js +132 -0
  152. package/dist/packages/runtime/dist/connection-records.js.map +1 -0
  153. package/dist/packages/runtime/dist/connection-router.d.ts +45 -0
  154. package/dist/packages/runtime/dist/connection-router.js +130 -0
  155. package/dist/packages/runtime/dist/connection-router.js.map +1 -0
  156. package/dist/packages/runtime/dist/connection-service.d.ts +159 -0
  157. package/dist/packages/runtime/dist/connection-service.js +239 -0
  158. package/dist/packages/runtime/dist/connection-service.js.map +1 -0
  159. package/dist/packages/runtime/dist/connection-transport.d.ts +14 -0
  160. package/dist/packages/runtime/dist/connection-transport.js +89 -0
  161. package/dist/packages/runtime/dist/connection-transport.js.map +1 -0
  162. package/dist/packages/runtime/dist/delivery-records.d.ts +180 -0
  163. package/dist/packages/runtime/dist/delivery-records.js +205 -0
  164. package/dist/packages/runtime/dist/delivery-records.js.map +1 -0
  165. package/dist/packages/runtime/dist/delivery-status-router.d.ts +27 -0
  166. package/dist/packages/runtime/dist/delivery-status-router.js +150 -0
  167. package/dist/packages/runtime/dist/delivery-status-router.js.map +1 -0
  168. package/dist/packages/runtime/dist/delivery-status.d.ts +43 -0
  169. package/dist/packages/runtime/dist/delivery-status.js +193 -0
  170. package/dist/packages/runtime/dist/delivery-status.js.map +1 -0
  171. package/dist/packages/runtime/dist/delivery-store.d.ts +125 -0
  172. package/dist/packages/runtime/dist/delivery-store.js +1047 -0
  173. package/dist/packages/runtime/dist/delivery-store.js.map +1 -0
  174. package/dist/packages/runtime/dist/gateway.d.ts +4 -3
  175. package/dist/packages/runtime/dist/gateway.js.map +1 -1
  176. package/dist/packages/runtime/dist/held-request-review.d.ts +49 -0
  177. package/dist/packages/runtime/dist/held-request-review.js +122 -0
  178. package/dist/packages/runtime/dist/held-request-review.js.map +1 -0
  179. package/dist/packages/runtime/dist/held-request-store.d.ts +112 -0
  180. package/dist/packages/runtime/dist/held-request-store.js +290 -0
  181. package/dist/packages/runtime/dist/held-request-store.js.map +1 -0
  182. package/dist/packages/runtime/dist/idempotency-store.d.ts +53 -0
  183. package/dist/packages/runtime/dist/idempotency-store.js +331 -0
  184. package/dist/packages/runtime/dist/idempotency-store.js.map +1 -0
  185. package/dist/packages/runtime/dist/inbox.d.ts +1 -1
  186. package/dist/packages/runtime/dist/index.d.ts +27 -1
  187. package/dist/packages/runtime/dist/index.js +26 -0
  188. package/dist/packages/runtime/dist/index.js.map +1 -1
  189. package/dist/packages/runtime/dist/invite-store.d.ts +76 -0
  190. package/dist/packages/runtime/dist/invite-store.js +337 -0
  191. package/dist/packages/runtime/dist/invite-store.js.map +1 -0
  192. package/dist/packages/runtime/dist/key-store.d.ts +77 -0
  193. package/dist/packages/runtime/dist/key-store.js +226 -0
  194. package/dist/packages/runtime/dist/key-store.js.map +1 -0
  195. package/dist/packages/runtime/dist/local-identity.d.ts +33 -0
  196. package/dist/packages/runtime/dist/local-identity.js +278 -0
  197. package/dist/packages/runtime/dist/local-identity.js.map +1 -0
  198. package/dist/packages/runtime/dist/mcp-rpc.d.ts +19 -0
  199. package/dist/packages/runtime/dist/mcp-rpc.js +175 -0
  200. package/dist/packages/runtime/dist/mcp-rpc.js.map +1 -0
  201. package/dist/packages/runtime/dist/mcp-server.d.ts +46 -19
  202. package/dist/packages/runtime/dist/mcp-server.js +427 -184
  203. package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
  204. package/dist/packages/runtime/dist/mcp-tool-catalog.d.ts +1 -1
  205. package/dist/packages/runtime/dist/mcp-tool-catalog.js +172 -13
  206. package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
  207. package/dist/packages/runtime/dist/mcp.d.ts +2 -2
  208. package/dist/packages/runtime/dist/message-status.d.ts +32 -0
  209. package/dist/packages/runtime/dist/message-status.js +29 -0
  210. package/dist/packages/runtime/dist/message-status.js.map +1 -0
  211. package/dist/packages/runtime/dist/outbox.d.ts +91 -0
  212. package/dist/packages/runtime/dist/outbox.js +462 -0
  213. package/dist/packages/runtime/dist/outbox.js.map +1 -0
  214. package/dist/packages/runtime/dist/policy.d.ts +1 -1
  215. package/dist/packages/runtime/dist/protocol-peer-store.d.ts +40 -0
  216. package/dist/packages/runtime/dist/protocol-peer-store.js +176 -0
  217. package/dist/packages/runtime/dist/protocol-peer-store.js.map +1 -0
  218. package/dist/packages/runtime/dist/protocol-release.d.ts +26 -0
  219. package/dist/packages/runtime/dist/protocol-release.js +76 -0
  220. package/dist/packages/runtime/dist/protocol-release.js.map +1 -0
  221. package/dist/packages/runtime/dist/quota.d.ts +1 -1
  222. package/dist/packages/runtime/dist/relay-selection.d.ts +20 -0
  223. package/dist/packages/runtime/dist/relay-selection.js +34 -0
  224. package/dist/packages/runtime/dist/relay-selection.js.map +1 -0
  225. package/dist/packages/runtime/dist/requester-pending-store.d.ts +59 -0
  226. package/dist/packages/runtime/dist/requester-pending-store.js +266 -0
  227. package/dist/packages/runtime/dist/requester-pending-store.js.map +1 -0
  228. package/dist/packages/runtime/dist/secret-store.d.ts +19 -0
  229. package/dist/packages/runtime/dist/secret-store.js +51 -0
  230. package/dist/packages/runtime/dist/secret-store.js.map +1 -0
  231. package/dist/packages/runtime/dist/session-audit.d.ts +29 -7
  232. package/dist/packages/runtime/dist/session-audit.js +149 -29
  233. package/dist/packages/runtime/dist/session-audit.js.map +1 -1
  234. package/dist/packages/runtime/dist/session.d.ts +101 -9
  235. package/dist/packages/runtime/dist/session.js +696 -96
  236. package/dist/packages/runtime/dist/session.js.map +1 -1
  237. package/dist/packages/runtime/dist/task-journal.d.ts +18 -3
  238. package/dist/packages/runtime/dist/task-journal.js +271 -18
  239. package/dist/packages/runtime/dist/task-journal.js.map +1 -1
  240. package/dist/packages/runtime/dist/verifier.d.ts +3 -2
  241. package/dist/packages/runtime/dist/verifier.js +1 -0
  242. package/dist/packages/runtime/dist/verifier.js.map +1 -1
  243. package/dist/packages/runtime/dist/worker-trust-store.d.ts +111 -0
  244. package/dist/packages/runtime/dist/worker-trust-store.js +592 -0
  245. package/dist/packages/runtime/dist/worker-trust-store.js.map +1 -0
  246. package/dist/packages/sandbox/dist/command-environment.d.ts +2 -0
  247. package/dist/packages/sandbox/dist/command-environment.js +29 -0
  248. package/dist/packages/sandbox/dist/command-environment.js.map +1 -0
  249. package/dist/packages/sandbox/dist/container.d.ts +1 -1
  250. package/dist/packages/sandbox/dist/index.d.ts +2 -1
  251. package/dist/packages/sandbox/dist/index.js +1 -0
  252. package/dist/packages/sandbox/dist/index.js.map +1 -1
  253. package/dist/spec/README.ja.md +21 -1
  254. package/dist/spec/README.md +20 -1
  255. package/dist/spec/agent-card.schema.json +11 -1
  256. package/dist/spec/delivery-status.schema.json +106 -0
  257. package/dist/spec/examples/protocol-versions/sample-agent-card.json +35 -0
  258. package/dist/spec/examples/sample-delivery-status.json +21 -0
  259. package/dist/spec/examples/sample-task-manifest.0.1.0.json +173 -0
  260. package/dist/spec/examples/sample-task-manifest.0.2.0.json +173 -0
  261. package/dist/spec/task-manifest.0.1.0.schema.json +422 -0
  262. package/dist/spec/task-manifest.0.2.0.schema.json +422 -0
  263. package/dist/spec/task-manifest.schema.json +9 -418
  264. package/docs/sdk.ja.md +133 -0
  265. package/docs/sdk.md +138 -0
  266. package/package.json +15 -3
@@ -0,0 +1,191 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { attachHeldDeliveryStatus } from '../../packages/runtime/dist/index.js';
3
+ import { createInterface } from 'node:readline/promises';
4
+ import { createSignedAgentCard } from '../../packages/core/dist/index.js';
5
+ import { HttpRelayClient } from '../../packages/relay/dist/index.js';
6
+ import { ConnectionAdmissionReview, ConnectionRouter, HeldRequestReview, InviteStore, LiveProtocol, WorkerTrustStore, workerIntakePath, inspectStoredIdentity, resolveStoredIdentity, syncConnections } from '../../packages/runtime/dist/index.js';
7
+ export async function confirmOwner(summary, review) {
8
+ if (review)
9
+ return review(summary);
10
+ if (!process.stdin.isTTY || !process.stderr.isTTY)
11
+ throw new Error('APPROVAL_CHANNEL_UNAVAILABLE');
12
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
13
+ try {
14
+ return (await rl.question(summary + '\nConfirm owner decision [y/N]? ')).trim().toLowerCase() === 'y';
15
+ }
16
+ finally {
17
+ rl.close();
18
+ }
19
+ }
20
+ /** This prompt is independent of task approval, including when task auto-approval is enabled. */
21
+ export function connectionHumanReview(review, role = 'requester') {
22
+ if (!review && (!process.stdin.isTTY || !process.stderr.isTTY))
23
+ return undefined;
24
+ return { kind: 'human', review: context => confirmOwner(JSON.stringify({ reason: context.reason,
25
+ localRole: role, localOwnerDid: context.localOwnerDid, peerOwnerDid: context.peerOwnerDid, requestDigest: context.requestDigest,
26
+ effect: 'Connect these identities with limited consent and no expiry. Each task requires inspection and owner opening.' }), review) };
27
+ }
28
+ const USAGE = 'Usage: sealbridge connections list | status workerRef-or-DID | review list|approve ID|reject ID | request --to DID --relay URL [--message TEXT] | approve ID | reject ID | withdraw ID | disconnect DID | block DID | unblock DID | confirm-invite workerRef | prior-approved | connect-prior DID --relay URL | sync [--once] [--role worker|requester] [--key FILE]. Human confirmation is required for decisions. Review uses built-in connection metadata inspection; other inspection is unavailable by default. / 判断には所有者の確認が必要です。review は組み込みの接続情報検査を使い、他の検査は既定で利用不可です。';
29
+ export async function connectionsCommand(args, options = {}) {
30
+ const output = options.output ?? console.log;
31
+ if (args.includes('--help')) {
32
+ output(USAGE);
33
+ return;
34
+ }
35
+ const reviewAction = args[0] === 'review';
36
+ const [action, ...rest] = reviewAction ? ['review-' + args[1], ...args.slice(2)] : args;
37
+ if (!reviewAction && action?.startsWith('review-'))
38
+ throw new Error(USAGE);
39
+ const ids = [], flags = new Map();
40
+ for (let i = 0; i < rest.length; i++) {
41
+ const flag = rest[i];
42
+ if (!flag.startsWith('--')) {
43
+ ids.push(flag);
44
+ continue;
45
+ }
46
+ if (flag === '--once' || flag === '--allow-private-relay') {
47
+ flags.set(flag, 'true');
48
+ continue;
49
+ }
50
+ if (!['--role', '--key', '--relay', '--to', '--message'].includes(flag) || flags.has(flag) || !rest[i + 1] || rest[i + 1].startsWith('--'))
51
+ throw new Error('INVALID_CONNECTION_OPTION');
52
+ flags.set(flag, rest[++i]);
53
+ }
54
+ const readOnly = ['list', 'prior-approved', 'status', 'review-list'].includes(action);
55
+ if (!['list', 'prior-approved', 'status', 'review-list', 'review-approve', 'review-reject', 'request', 'approve', 'reject', 'withdraw', 'disconnect', 'block', 'unblock', 'confirm-invite', 'connect-prior', 'sync'].includes(action) ||
56
+ ids.length !== (['list', 'prior-approved', 'review-list', 'request', 'sync'].includes(action) ? 0 : 1))
57
+ throw new Error(USAGE);
58
+ const role = flags.get('--role') ?? (['confirm-invite', 'status'].includes(action) ? 'requester' : 'worker');
59
+ if (role !== 'worker' && role !== 'requester')
60
+ throw new Error('INVALID_IDENTITY_ROLE');
61
+ const identityOptions = { ...options.identityOptions, explicitKeyPath: flags.get('--key') };
62
+ const key = readOnly ? (await inspectStoredIdentity(role, identityOptions)).key : await resolveStoredIdentity(role, identityOptions);
63
+ if (!key) {
64
+ output(JSON.stringify(action === 'status' ? { role, status: 'none', state: 'none' } : reviewAction ? { requests: [] } : { connections: [], priorApprovedPeers: [] }));
65
+ return;
66
+ }
67
+ const store = new WorkerTrustStore(key, { path: workerIntakePath(key.did, identityOptions),
68
+ fs: identityOptions.fs, platform: identityOptions.platform, now: options.now });
69
+ if (action === 'status') {
70
+ const saved = ids[0].startsWith('did:') ? undefined :
71
+ (await InviteStore.open(key, { ...identityOptions, now: options.now })).list()
72
+ .find(i => i.workerRef === ids[0] || i.alias === ids[0]);
73
+ if (!ids[0].startsWith('did:') && !saved)
74
+ throw new Error('INVITE_NOT_FOUND');
75
+ output(JSON.stringify({ localOwnerDid: key.did, role,
76
+ ...(saved ? { workerRef: saved.workerRef, alias: saved.alias } : {}),
77
+ ...store.connectionStatus(saved?.ownerDid ?? ids[0]) }));
78
+ return;
79
+ }
80
+ const review = new HeldRequestReview(key, { ...identityOptions, provider: options.inspectionProvider, now: options.now });
81
+ const delivery = attachHeldDeliveryStatus(key, review, identityOptions, store, options.now);
82
+ if (action === 'list') {
83
+ output(JSON.stringify({ localOwnerDid: key.did, role, connections: store.listConnections() }));
84
+ return;
85
+ }
86
+ if (action === 'prior-approved') {
87
+ output(JSON.stringify({ localOwnerDid: key.did, role, priorApprovedPeers: store.listPriorApprovedPeers() }));
88
+ return;
89
+ }
90
+ if (reviewAction) {
91
+ // Listing and rejection use no transport. Approval selects the retained offer's relay.
92
+ const controls = store.controlSnapshot().filter(c => c.direction === 'incoming' && c.active);
93
+ const requestId = review.list().find(r => r.kind === 'connection' && r.id === ids[0])?.requestId ?? ids[0];
94
+ const relayUrl = flags.get('--relay') ?? controls.find(c => c.offer.requestId === requestId)?.offer.relayUrl;
95
+ const urls = action === 'review-list' ? [...new Set(controls.map(c => c.offer.relayUrl))] : [relayUrl];
96
+ const queues = urls.filter((url) => url !== undefined).map(url => new ConnectionAdmissionReview({
97
+ owner: key, store, heldOptions: { ...identityOptions, transitionSink: delivery.recipientStatus?.transition }, now: options.now, relayUrl: url,
98
+ agentCard: createSignedAgentCard({ name: 'Sealbridge ' + role, agentDid: key.did, relayEndpoint: url,
99
+ skills: [], protocolVersions: new LiveProtocol({ now: options.now }).receiveVersions(), now: options.now?.() }, key),
100
+ relay: { send: async (envelope) => {
101
+ const relay = options.transportFactory?.(url, key) ?? new HttpRelayClient(url, key, { allowPrivateRelay: flags.has('--allow-private-relay') });
102
+ relay.setRecipientKey?.(key);
103
+ await (relay.withRecipient?.(key) ?? relay).send(envelope);
104
+ }, receive: async () => undefined }, allowPrivateRelay: flags.has('--allow-private-relay'),
105
+ }));
106
+ const requests = queues.flatMap(queue => queue.list());
107
+ if (action === 'review-list') {
108
+ output(JSON.stringify({ localOwnerDid: key.did, role, requests }));
109
+ return;
110
+ }
111
+ const selected = requests.find(r => r.id === ids[0] || r.requestId === ids[0]);
112
+ if (!selected)
113
+ throw new Error('CONNECTION_NOT_PENDING');
114
+ if (!await confirmOwner(JSON.stringify({ action, role, ...selected, effect: action === 'review-approve'
115
+ ? 'Connect with limited consent. Each task requires inspection and owner opening.'
116
+ : 'Reject the connection request and apply the existing peer cooldown.' }), options.review))
117
+ throw new Error('APPROVAL_REJECTED');
118
+ if (action === 'review-approve')
119
+ output(JSON.stringify(await queues[0].approve(selected.id)));
120
+ else {
121
+ queues[0].reject(selected.id);
122
+ output(JSON.stringify({ peerOwnerDid: selected.peerOwnerDid, state: store.connectionState(selected.peerOwnerDid) }));
123
+ }
124
+ return;
125
+ }
126
+ const connection = store.listConnections().find(c => 'incoming' in c && c.incoming?.requestId === ids[0] || 'outgoing' in c && c.outgoing?.requestId === ids[0]);
127
+ const peer = connection?.peerOwnerDid ?? ids[0];
128
+ if (['reject', 'withdraw', 'disconnect', 'block', 'unblock'].includes(action)) {
129
+ if (!await confirmOwner(JSON.stringify({ action, role, localOwnerDid: key.did, peerOwnerDid: peer,
130
+ effect: 'Changes future admission; accepted tasks continue.' }), options.review))
131
+ throw new Error('APPROVAL_REJECTED');
132
+ if (action === 'reject')
133
+ store.rejectConnection(peer);
134
+ else if (action === 'withdraw')
135
+ store.withdrawConnection(peer, ids[0]);
136
+ else
137
+ store[action](peer);
138
+ if (action === 'block' || action === 'reject')
139
+ review.discardPeer(peer);
140
+ output(JSON.stringify({ peerOwnerDid: peer, state: store.connectionState(peer) }));
141
+ return;
142
+ }
143
+ let token, to = flags.get('--to') ?? peer, relayUrl = flags.get('--relay') ?? (connection && 'relayUrl' in connection ? connection.relayUrl : undefined);
144
+ if (action === 'confirm-invite') {
145
+ const invites = await InviteStore.open(key, { ...identityOptions, now: options.now,
146
+ relayPolicy: { allowPrivateRelay: flags.has('--allow-private-relay') } });
147
+ invites.retain(ids[0]);
148
+ const saved = invites.resolve(ids[0]);
149
+ token = saved.inviteToken;
150
+ to = saved.invite.ownerDid;
151
+ relayUrl = saved.invite.relayUrl;
152
+ const existing = store.listConnections().find(c => c.peerOwnerDid === to);
153
+ if (existing?.state === 'connected' || existing && 'outgoing' in existing && existing.outgoing) {
154
+ output(JSON.stringify({ peerOwnerDid: to, state: existing.state }));
155
+ return;
156
+ }
157
+ }
158
+ if (action === 'connect-prior' && !store.listPriorApprovedPeers().some(p => p.peerOwnerDid === to))
159
+ throw new Error('CONNECTION_NOT_FOUND');
160
+ if (!relayUrl || !to && action !== 'sync')
161
+ throw new Error('RELAY_REQUIRED');
162
+ const relay = options.transportFactory?.(relayUrl, key) ?? new HttpRelayClient(relayUrl, key, { allowPrivateRelay: flags.has('--allow-private-relay') });
163
+ relay.setRecipientKey?.(key);
164
+ const router = new ConnectionRouter({ owner: key, relay: relay.withRecipient?.(key) ?? relay, relayUrl, store, review,
165
+ agentCard: createSignedAgentCard({ name: 'Sealbridge ' + role, agentDid: key.did,
166
+ relayEndpoint: relayUrl, skills: [], protocolVersions: new LiveProtocol({ now: options.now }).receiveVersions() }, key),
167
+ humanReview: connectionHumanReview(options.review, role), now: options.now, allowPrivateRelay: flags.has('--allow-private-relay'),
168
+ onConnectionEvent: event => output(JSON.stringify(event)) });
169
+ if (action === 'sync') {
170
+ const controller = new AbortController(), stop = () => controller.abort();
171
+ process.once('SIGINT', stop);
172
+ process.once('SIGTERM', stop);
173
+ try {
174
+ await syncConnections(router, { once: flags.has('--once'), signal: controller.signal });
175
+ }
176
+ finally {
177
+ process.removeListener('SIGINT', stop);
178
+ process.removeListener('SIGTERM', stop);
179
+ }
180
+ return;
181
+ }
182
+ if (action === 'approve') {
183
+ const held = review.list().find(r => r.kind === 'connection' && (r.requestId === ids[0] || r.id === ids[0]));
184
+ if (!held)
185
+ throw new Error('INSPECTION_INCOMPLETE');
186
+ output(JSON.stringify(await router.approve(review.store.read(held.id).envelope)));
187
+ return;
188
+ }
189
+ output(JSON.stringify(await router.service.request({ toOwnerDid: to, message: flags.get('--message'), inviteToken: token })));
190
+ }
191
+ //# sourceMappingURL=connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connections.js","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import type { KeyPair } from '@acp/core';
2
- import type { ApprovalProvider, WorkerAcceptancePolicy } from '@acp/runtime';
1
+ import type { KeyPair } from '../../packages/core/dist/index.js';
2
+ import type { ApprovalProvider, WorkerAcceptancePolicy } from '../../packages/runtime/dist/index.js';
3
+ import type { IdentityStoreOptions } from '../../packages/runtime/dist/key-store.js';
3
4
  export interface Contact {
4
5
  displayName: string;
5
6
  ownerDid: string;
@@ -15,4 +16,4 @@ export declare function loadContacts(path: string, ownerDid: string): Contact[];
15
16
  export declare function updateContacts(path: string, key: KeyPair, change: (contacts: Contact[]) => void): Contact[];
16
17
  export declare function addContact(path: string, key: KeyPair, token: string, name?: string, allowPrivateRelay?: boolean): Contact[];
17
18
  export declare function contactsApproval(path: string, key: KeyPair, automatic: boolean, base: WorkerAcceptancePolicy, interactive: ApprovalProvider): ApprovalProvider;
18
- export declare function contactsCommand(args: string[]): void;
19
+ export declare function contactsCommand(args: string[], identityOptions?: IdentityStoreOptions): void | Promise<void>;
@@ -5,6 +5,7 @@ import { dirname, join } from 'node:path';
5
5
  import { randomUUID } from 'node:crypto';
6
6
  import { parseAndVerifyInviteToken, signPayload, verifySigned } from '../../packages/core/dist/index.js';
7
7
  import { PolicyAutoApprovalProvider } from '../../packages/runtime/dist/index.js';
8
+ import { commandIdentity, readCommandKey } from './command-identity.js';
8
9
  export function contactsPath() {
9
10
  const base = process.env.ACP_DATA_DIR ?? (process.platform === 'win32'
10
11
  ? join(process.env.LOCALAPPDATA ?? homedir(), 'AgentCollaborationPlatform')
@@ -101,7 +102,7 @@ export function contactsApproval(path, key, automatic, base, interactive) {
101
102
  return (automatic ? new PolicyAutoApprovalProvider(key, undefined, { acceptance }) : interactive).approve(request);
102
103
  } };
103
104
  }
104
- export function contactsCommand(args) {
105
+ export function contactsCommand(args, identityOptions = {}) {
105
106
  const [action, ...rest] = args;
106
107
  const options = new Map();
107
108
  const positional = [];
@@ -122,33 +123,43 @@ export function contactsCommand(args) {
122
123
  throw new Error('MISSING_CONTACT_OPTION');
123
124
  options.set(flag, value);
124
125
  }
125
- if (!['list', 'add', 'allow', 'revoke', 'remove'].includes(action) || positional.length !== (action === 'list' ? 0 : 1) || !options.has('--key'))
126
+ if (!['list', 'add', 'allow', 'revoke', 'remove'].includes(action) || positional.length !== (action === 'list' ? 0 : 1))
126
127
  throw new Error('Usage: sealbridge contacts list|add <invite>|allow <ownerDid>|revoke <ownerDid>|remove <ownerDid> --key <key> [--file <contacts.json>] [--name <name>]');
127
- const key = JSON.parse(readFileSync(options.get('--key'), 'utf8'));
128
- const path = options.get('--file') ?? contactsPath();
129
- let contacts;
130
- if (action === 'list')
131
- contacts = loadContacts(path, key.did);
132
- else if (action === 'add')
133
- contacts = addContact(path, key, positional[0], options.get('--name'), options.has('--allow-private-relay'));
134
- else
135
- contacts = updateContacts(path, key, (items) => {
136
- const index = items.findIndex(c => c.ownerDid === positional[0]);
137
- if (index < 0)
138
- throw new Error('CONTACT_NOT_FOUND');
139
- if (action === 'remove') {
140
- items[index].saved = false;
141
- items[index].displayName = '';
142
- items[index].allow = false;
143
- items[index].revoked = true;
144
- }
145
- else {
146
- if (action === 'allow' && !items[index].saved)
147
- throw new Error('CONTACT_NOT_SAVED');
148
- items[index].allow = action === 'allow';
149
- items[index].revoked = action === 'revoke';
150
- }
151
- });
152
- console.log(JSON.stringify({ version: 1, contacts: contacts.filter(c => c.saved) }));
128
+ const run = (key) => {
129
+ if (!key) {
130
+ console.log(JSON.stringify({ version: 1, contacts: [] }));
131
+ return;
132
+ }
133
+ const path = options.get('--file') ?? contactsPath();
134
+ let contacts;
135
+ if (action === 'list')
136
+ contacts = loadContacts(path, key.did);
137
+ else if (action === 'add')
138
+ contacts = addContact(path, key, positional[0], options.get('--name'), options.has('--allow-private-relay'));
139
+ else
140
+ contacts = updateContacts(path, key, (items) => {
141
+ const index = items.findIndex(c => c.ownerDid === positional[0]);
142
+ if (index < 0)
143
+ throw new Error('CONTACT_NOT_FOUND');
144
+ if (action === 'remove') {
145
+ items[index].saved = false;
146
+ items[index].displayName = '';
147
+ items[index].allow = false;
148
+ items[index].revoked = true;
149
+ }
150
+ else {
151
+ if (action === 'allow' && !items[index].saved)
152
+ throw new Error('CONTACT_NOT_SAVED');
153
+ items[index].allow = action === 'allow';
154
+ items[index].revoked = action === 'revoke';
155
+ }
156
+ });
157
+ console.log(JSON.stringify({ version: 1, contacts: contacts.filter(c => c.saved) }));
158
+ };
159
+ // Explicit-file callers retain synchronous completion and errors.
160
+ const keyFile = options.get('--key');
161
+ if (keyFile !== undefined)
162
+ return run(readCommandKey(keyFile));
163
+ return commandIdentity('requester', undefined, identityOptions, action !== 'list').then(run);
153
164
  }
154
165
  //# sourceMappingURL=contacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../src/contacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../src/contacts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { IdentityStoreOptions } from '../../packages/runtime/dist/key-store.js';
1
2
  export interface DoctorOptions {
2
3
  version?: string;
3
4
  execPath?: string;
@@ -5,12 +6,20 @@ export interface DoctorOptions {
5
6
  home?: string;
6
7
  exists?: (path: string) => boolean;
7
8
  fetch?: typeof fetch;
9
+ offline?: boolean;
10
+ keyFile?: string;
11
+ identityOptions?: IdentityStoreOptions;
8
12
  }
9
13
  export interface DoctorCheck {
10
14
  name: string;
11
15
  ok: boolean;
12
16
  message: string;
13
17
  remediation?: string;
18
+ selection?: {
19
+ backend: string;
20
+ source: 'option' | 'env' | 'config' | 'default';
21
+ };
14
22
  }
15
23
  export declare function diagnose(options?: DoctorOptions): Promise<DoctorCheck[]>;
16
24
  export declare function doctorCommand(options?: DoctorOptions): Promise<void>;
25
+ export declare function parseDoctorArgs(args: string[]): DoctorOptions;
@@ -1,11 +1,31 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { delimiter, join } from 'node:path';
3
- import { homedir } from 'node:os';
3
+ import { inspectStoredIdentity, keyStoreSelection } from '../../packages/runtime/dist/key-store.js';
4
+ import { DEFAULT_PUBLIC_RELAY } from '../../packages/runtime/dist/relay-selection.js';
4
5
  export async function diagnose(options = {}) {
5
6
  const exists = options.exists ?? existsSync;
6
7
  const version = options.version ?? process.versions.node;
7
8
  const paths = (options.path ?? process.env.PATH ?? '').split(delimiter);
8
- const key = join(options.home ?? homedir(), '.acp', 'worker.private.json');
9
+ let keys;
10
+ let selection;
11
+ try {
12
+ selection = keyStoreSelection({ ...options.identityOptions,
13
+ ...(options.home !== undefined ? { home: options.home } : {}), explicitKeyPath: options.keyFile });
14
+ const identities = await Promise.all((options.keyFile ? ['requester'] : ['requester', 'worker']).map(async (role) => {
15
+ const selected = await inspectStoredIdentity(role, { ...options.identityOptions,
16
+ ...(options.home !== undefined ? { home: options.home } : {}),
17
+ explicitKeyPath: options.keyFile });
18
+ return `${role}: ${selected.location} (${selected.present ? selected.source ?? 'present' : 'created on first use'}) [${selected.backend}]`;
19
+ }));
20
+ keys = { name: 'Keys', ok: true, message: identities.join('; ') + `; selection: ${typeof selection.keyStore === 'object' ? 'custom' : selection.keyStore} (${selection.source})` };
21
+ }
22
+ catch (error) {
23
+ const setting = selection?.keyStore;
24
+ const backend = setting === 'keychain' ? 'keychain' : typeof setting === 'object' ? 'custom' : 'file';
25
+ keys = { name: 'Keys', ok: false, message: error.message + (backend === 'file' ? '' : ` [${backend}]`),
26
+ ...(selection && { selection: { backend, source: selection.source } }),
27
+ remediation: 'Check the configured backend and its availability. Install @napi-rs/keyring for keychain use; select SEALBRIDGE_KEY_STORE=file|keychain or --key for an existing file.' };
28
+ }
9
29
  const nodeOk = Number(version.split('.')[0]) >= 22;
10
30
  const pathOk = paths.some(p => exists(join(p, process.platform === 'win32' ? 'sealbridge.cmd' : 'sealbridge')));
11
31
  const checks = [
@@ -13,10 +33,14 @@ export async function diagnose(options = {}) {
13
33
  ...(!nodeOk && { remediation: 'Node 22 or newer is required; rerun the installer to update.' }) },
14
34
  { name: 'PATH', ok: pathOk, message: pathOk ? 'sealbridge found' : 'sealbridge not found',
15
35
  ...(!pathOk && { remediation: 'Reopen your terminal or add the installer bin directory to PATH.' }) },
16
- { name: 'Keys', ok: true, message: exists(key) ? 'Worker key present' : 'No worker key (optional)' },
36
+ keys,
17
37
  ];
38
+ if (options.offline) {
39
+ checks.push({ name: 'Relay', ok: true, message: 'Skipped (offline)' });
40
+ return checks;
41
+ }
18
42
  try {
19
- const response = await (options.fetch ?? fetch)('https://relay.sealbridge.dev/health', { signal: AbortSignal.timeout(8000), redirect: 'error' });
43
+ const response = await (options.fetch ?? fetch)(DEFAULT_PUBLIC_RELAY + '/health', { signal: AbortSignal.timeout(8000), redirect: 'error' });
20
44
  checks.push({ name: 'Relay', ok: response.ok, message: response.ok ? 'Reachable' : `HTTP ${response.status}`,
21
45
  ...(!response.ok && { remediation: 'Check your connection and try again.' }) });
22
46
  }
@@ -28,8 +52,25 @@ export async function diagnose(options = {}) {
28
52
  export async function doctorCommand(options = {}) {
29
53
  const checks = await diagnose(options);
30
54
  for (const check of checks)
31
- console.log(`${check.name}: ${check.message} (${check.ok ? 'OK' : 'WARN'})${!check.ok && check.remediation ? ` ${check.remediation}` : ''}`);
55
+ console.log(`${check.name}: ${check.message}${check.selection ? `; selection: ${check.selection.backend} (${check.selection.source})` : ''} (${check.ok ? 'OK' : 'WARN'})${!check.ok && check.remediation ? ` ${check.remediation}` : ''}`);
32
56
  if (checks.some(check => !check.ok))
33
57
  process.exitCode = 1;
34
58
  }
59
+ export function parseDoctorArgs(args) {
60
+ const result = {};
61
+ const seen = new Set();
62
+ for (let i = 0; i < args.length; i++) {
63
+ const arg = args[i];
64
+ if (seen.has(arg))
65
+ throw new Error('Duplicate option: ' + arg);
66
+ seen.add(arg);
67
+ if (arg === '--offline')
68
+ result.offline = true;
69
+ else if (arg === '--key' && args[i + 1] && !args[i + 1].startsWith('--'))
70
+ result.keyFile = args[++i];
71
+ else
72
+ throw new Error('Usage: sealbridge doctor [--offline] [--key <file>]');
73
+ }
74
+ return result;
75
+ }
35
76
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  const reasons = [
3
+ [/ACCESS_MODE_REMOVED/, '旧モードの指定は廃止しました。connections と一般の --max-*、--allow-task-type を使ってください。'],
4
+ [/INSPECTION_INCOMPLETE|INSPECTION_UNAVAILABLE/, '検査が完了していません。内容は保留し、検査プロバイダーの状態を確認してください。'],
5
+ [/CONNECTION_REQUIRED/, 'この操作には選択した所有者 DID の接続が必要です。connections を確認してください。'],
6
+ [/CONNECTION_OPENING_REQUIRED/, 'limited の依頼には検査と所有者が開く操作が必要です。alwaysAsk:true にしてください。'],
7
+ [/PROTOCOL_VERSION_UNSUPPORTED|PROTOCOL_DOWNGRADE_REFUSED/, '相手の署名済み対応版とリリース方針を確認してください。別の版へ自動で再送しません。'],
8
+ [/PROTOCOL_RELEASE_UNSET/, '公開リリース前に保守者がリリース時刻を設定してください。'],
9
+ [/SETUP_HOST_REQUIRED|SETUP_HOST_UNSUPPORTED|SETUP_INVALID_ARGUMENT/, 'setup --help を確認し、対応ホストを --host で指定してください。'],
10
+ [/SETUP_RUNTIME_UNSTABLE/, '永続的な場所にインストールするか、ビルド済みチェックアウトから実行してください。'],
11
+ [/SETUP_APPROVAL_MODE_CONFLICT/, '既存の Sealbridge 登録は承認モードが異なります。--update-existing --dry-run で確認し、--update-existing でバックアップ付きで置換してください。従来の自動承認は --no-require-approval で選択できます。'],
12
+ [/SETUP_ENTRY_CONFLICT/, '既存の Sealbridge 登録が異なります。--update-existing --dry-run で確認し、--update-existing でその登録だけをバックアップ付きで置換してください。'],
13
+ [/SETUP_/, 'ホストの設定画面を閉じ、設定とバックアップを確認してから再実行してください。'],
14
+ [/PENDING_OWNER_APPROVAL/, 'ワーカー所有者による依頼者の審査待ちです。タスクは受諾されていません。自動再試行せず、審査後に所有者が新しい依頼を開始してください。'],
15
+ [/RELAY_AUTH_RECOVERY_EXHAUSTED/, 'システム時計が同期されていることと、鍵が登録された DID と一致することを確認してください。'],
16
+ [/ADAPTER_PROXY_NOT_USED/, 'Codex からタスク用プロキシへの認証済みリクエストを確認できないため、成果物を返せません。プロバイダー設定とワーカーログを確認してください。'],
17
+ [/CODEX_PROXY_/, 'Codex のプロキシ設定を確認できません。@openai/codex の 0.163.0 以降をインストールし、プロバイダー設定を変更する追加オプションを外して再実行してください。'],
3
18
  [/AGENT_AUTH_REQUIRED|AUTH|CREDENTIAL|UNAUTHORIZED|FORBIDDEN/, '認証を利用できません。ホスト側の API キー設定とログイン状態を確認して再実行してください。'],
4
19
  [/INVITE_LINK_TOKEN_REQUIRED/, '招待リンクにトークンがありません。# 以降を含む完全なリンクを相手に依頼してください。'],
5
20
  [/INVITE_EXPIRED|TOKEN_REVOKED/, '招待の期限が切れたか失効しています。相手に新しい招待を依頼してください。'],
21
+ [/INVITE_STDIN_REQUIRES_PIPE/, '--stdin はパイプまたはファイルから入力してください。端末では --paste を使ってください。'],
22
+ [/INVITE_INPUT_TOO_LARGE/, '標準入力は 68 KiB 以内にして、招待リンクを 1 件だけ渡してください。'],
23
+ [/INVITE_INPUT_EMPTY|INVITE_INPUT_MULTIPLE_LINES/, '標準入力に完全な招待リンクを 1 行だけ渡してください。'],
24
+ [/INVITE_INPUT_TIMEOUT/, '標準入力を 10 秒以内に完了し、パイプを閉じて EOF を送ってください。'],
6
25
  [/TIMEOUT|TIMED_OUT|DEADLINE/, '待機または実行の制限時間を超えました。相手の稼働状況と時間制限の設定を確認してください。'],
7
26
  [/ABORT|CANCEL/, '処理が中断されました。相手の稼働状況と中断理由を確認してから再実行してください。'],
8
27
  [/APPROVAL|HITL|VERIFICATION_REJECTED/, '所有者の承認が得られませんでした。依頼内容と承認画面を確認し、所有者が操作してください。'],
@@ -17,6 +36,11 @@ export function japaneseErrorReason(message) {
17
36
  return reasons.find(([pattern]) => pattern.test(message))?.[1];
18
37
  }
19
38
  export function formatCliError(error) {
39
+ const pending = error;
40
+ if (pending?.code === 'PENDING_OWNER_APPROVAL')
41
+ return JSON.stringify({ error: pending.code, retryable: false,
42
+ pendingId: pending.pendingId, originalTaskId: pending.originalTaskId, pendingStoreError: pending.pendingStoreError,
43
+ nextStep: pending.nextStep ?? 'After worker owner review, explicitly submit a fresh task. Do not retry automatically.' });
20
44
  const message = String(error);
21
45
  const reason = japaneseErrorReason(error instanceof Error ? error.message : message);
22
46
  return message + (reason ? '\n' + reason : '');
@@ -1 +1 @@
1
- {"version":3,"file":"error-messages.js","sourceRoot":"","sources":["../src/error-messages.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,OAAO,GAAuB;IAClC,CAAC,4DAA4D,EAAE,iDAAiD,CAAC;IACjH,CAAC,4BAA4B,EAAE,6CAA6C,CAAC;IAC7E,CAAC,8BAA8B,EAAE,sCAAsC,CAAC;IACxE,CAAC,4BAA4B,EAAE,8CAA8C,CAAC;IAC9E,CAAC,cAAc,EAAE,0CAA0C,CAAC;IAC5D,CAAC,qCAAqC,EAAE,8CAA8C,CAAC;IACvF,CAAC,oBAAoB,EAAE,iDAAiD,CAAC;IACzE,CAAC,qDAAqD,EAAE,gDAAgD,CAAC;IACzG,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;IACnE,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;IACrE,CAAC,4EAA4E,EAAE,kDAAkD,CAAC;IAClI,CAAC,oCAAoC,EAAE,0CAA0C,CAAC;CACnF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrF,OAAO,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"error-messages.js","sourceRoot":"","sources":["../src/error-messages.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,OAAO,GAAuB;IAClC,CAAC,qBAAqB,EAAE,qEAAqE,CAAC;IAC9F,CAAC,8CAA8C,EAAE,0CAA0C,CAAC;IAC5F,CAAC,qBAAqB,EAAE,mDAAmD,CAAC;IAC5E,CAAC,6BAA6B,EAAE,uDAAuD,CAAC;IACxF,CAAC,yDAAyD,EAAE,2CAA2C,CAAC;IACxG,CAAC,wBAAwB,EAAE,8BAA8B,CAAC;IAC1D,CAAC,mEAAmE,EAAE,4CAA4C,CAAC;IACnH,CAAC,wBAAwB,EAAE,0CAA0C,CAAC;IACtE,CAAC,8BAA8B,EAAE,6IAA6I,CAAC;IAC/K,CAAC,sBAAsB,EAAE,uGAAuG,CAAC;IACjI,CAAC,QAAQ,EAAE,wCAAwC,CAAC;IACpD,CAAC,wBAAwB,EAAE,oEAAoE,CAAC;IAChG,CAAC,+BAA+B,EAAE,iDAAiD,CAAC;IACpF,CAAC,wBAAwB,EAAE,0EAA0E,CAAC;IACtG,CAAC,cAAc,EAAE,6FAA6F,CAAC;IAC/G,CAAC,4DAA4D,EAAE,iDAAiD,CAAC;IACjH,CAAC,4BAA4B,EAAE,6CAA6C,CAAC;IAC7E,CAAC,8BAA8B,EAAE,sCAAsC,CAAC;IACxE,CAAC,4BAA4B,EAAE,sDAAsD,CAAC;IACtF,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;IACrE,CAAC,gDAAgD,EAAE,8BAA8B,CAAC;IAClF,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;IAClE,CAAC,4BAA4B,EAAE,8CAA8C,CAAC;IAC9E,CAAC,cAAc,EAAE,0CAA0C,CAAC;IAC5D,CAAC,qCAAqC,EAAE,8CAA8C,CAAC;IACvF,CAAC,oBAAoB,EAAE,iDAAiD,CAAC;IACzE,CAAC,qDAAqD,EAAE,gDAAgD,CAAC;IACzG,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;IACnE,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;IACrE,CAAC,4EAA4E,EAAE,kDAAkD,CAAC;IAClI,CAAC,oCAAoC,EAAE,0CAA0C,CAAC;CACnF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,OAAO,GAAG,KAA6H,CAAC;IAC9I,IAAI,OAAO,EAAE,IAAI,KAAK,wBAAwB;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK;YAC3G,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAClH,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,wFAAwF,EAAE,CAAC,CAAC;IAC5H,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrF,OAAO,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC"}