sealbridge 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.ja.md +492 -30
  2. package/README.md +522 -109
  3. package/dist/cli/dist/accept.d.ts +13 -0
  4. package/dist/cli/dist/accept.js +115 -0
  5. package/dist/cli/dist/accept.js.map +1 -0
  6. package/dist/cli/dist/approval-summary.d.ts +1 -1
  7. package/dist/cli/dist/board.d.ts +10 -9
  8. package/dist/cli/dist/board.js +62 -31
  9. package/dist/cli/dist/board.js.map +1 -1
  10. package/dist/cli/dist/command-identity.d.ts +6 -0
  11. package/dist/cli/dist/command-identity.js +13 -0
  12. package/dist/cli/dist/command-identity.js.map +1 -0
  13. package/dist/cli/dist/config.d.ts +3 -0
  14. package/dist/cli/dist/config.js +29 -0
  15. package/dist/cli/dist/config.js.map +1 -0
  16. package/dist/cli/dist/connections.d.ts +15 -0
  17. package/dist/cli/dist/connections.js +191 -0
  18. package/dist/cli/dist/connections.js.map +1 -0
  19. package/dist/cli/dist/contacts.d.ts +4 -3
  20. package/dist/cli/dist/contacts.js +39 -28
  21. package/dist/cli/dist/contacts.js.map +1 -1
  22. package/dist/cli/dist/doctor.d.ts +9 -0
  23. package/dist/cli/dist/doctor.js +46 -5
  24. package/dist/cli/dist/doctor.js.map +1 -1
  25. package/dist/cli/dist/error-messages.js +22 -0
  26. package/dist/cli/dist/error-messages.js.map +1 -1
  27. package/dist/cli/dist/index.js +44 -6
  28. package/dist/cli/dist/index.js.map +1 -1
  29. package/dist/cli/dist/invite-output.d.ts +14 -0
  30. package/dist/cli/dist/invite-output.js +66 -0
  31. package/dist/cli/dist/invite-output.js.map +1 -0
  32. package/dist/cli/dist/invite-share.d.ts +6 -3
  33. package/dist/cli/dist/invite-share.js +40 -15
  34. package/dist/cli/dist/invite-share.js.map +1 -1
  35. package/dist/cli/dist/invites-migrate.d.ts +3 -0
  36. package/dist/cli/dist/invites-migrate.js +33 -0
  37. package/dist/cli/dist/invites-migrate.js.map +1 -0
  38. package/dist/cli/dist/mcp.d.ts +7 -5
  39. package/dist/cli/dist/mcp.js +23 -18
  40. package/dist/cli/dist/mcp.js.map +1 -1
  41. package/dist/cli/dist/network.d.ts +11 -1
  42. package/dist/cli/dist/network.js +150 -87
  43. package/dist/cli/dist/network.js.map +1 -1
  44. package/dist/cli/dist/pending.d.ts +8 -0
  45. package/dist/cli/dist/pending.js +50 -0
  46. package/dist/cli/dist/pending.js.map +1 -0
  47. package/dist/cli/dist/public-settings.d.ts +5 -4
  48. package/dist/cli/dist/public-settings.js +13 -15
  49. package/dist/cli/dist/public-settings.js.map +1 -1
  50. package/dist/cli/dist/receipt.d.ts +1 -1
  51. package/dist/cli/dist/relay-auth.d.ts +3 -0
  52. package/dist/cli/dist/relay-auth.js +23 -0
  53. package/dist/cli/dist/relay-auth.js.map +1 -0
  54. package/dist/cli/dist/requests.d.ts +10 -0
  55. package/dist/cli/dist/requests.js +91 -0
  56. package/dist/cli/dist/requests.js.map +1 -0
  57. package/dist/cli/dist/sdk.d.ts +10 -0
  58. package/dist/cli/dist/sdk.js +7 -0
  59. package/dist/cli/dist/sdk.js.map +1 -0
  60. package/dist/cli/dist/setup-files.d.ts +24 -0
  61. package/dist/cli/dist/setup-files.js +190 -0
  62. package/dist/cli/dist/setup-files.js.map +1 -0
  63. package/dist/cli/dist/setup-hosts.d.ts +29 -0
  64. package/dist/cli/dist/setup-hosts.js +75 -0
  65. package/dist/cli/dist/setup-hosts.js.map +1 -0
  66. package/dist/cli/dist/setup.d.ts +61 -0
  67. package/dist/cli/dist/setup.js +243 -0
  68. package/dist/cli/dist/setup.js.map +1 -0
  69. package/dist/cli/dist/task-input.d.ts +1 -1
  70. package/dist/cli/dist/wake-hook.d.ts +1 -1
  71. package/dist/cli/dist/worker-json.d.ts +4 -0
  72. package/dist/cli/dist/worker-json.js +87 -0
  73. package/dist/cli/dist/worker-json.js.map +1 -0
  74. package/dist/examples/two-owner-demo/dist/run-demo.d.ts +13 -13
  75. package/dist/package.json +1 -1
  76. package/dist/packages/adapters/dist/command.d.ts +2 -2
  77. package/dist/packages/adapters/dist/credential-proxy.d.ts +2 -2
  78. package/dist/packages/adapters/dist/index.d.ts +1 -1
  79. package/dist/packages/adapters/dist/mcp.d.ts +2 -2
  80. package/dist/packages/adapters/dist/openai.d.ts +2 -2
  81. package/dist/packages/adapters/dist/sandbox.d.ts +2 -2
  82. package/dist/packages/core/dist/connection.d.ts +58 -0
  83. package/dist/packages/core/dist/connection.js +132 -0
  84. package/dist/packages/core/dist/connection.js.map +1 -0
  85. package/dist/packages/core/dist/delivery-status.d.ts +22 -0
  86. package/dist/packages/core/dist/delivery-status.js +53 -0
  87. package/dist/packages/core/dist/delivery-status.js.map +1 -0
  88. package/dist/packages/core/dist/discovery.d.ts +7 -6
  89. package/dist/packages/core/dist/discovery.js +19 -20
  90. package/dist/packages/core/dist/discovery.js.map +1 -1
  91. package/dist/packages/core/dist/edge.d.ts +1 -0
  92. package/dist/packages/core/dist/edge.js +1 -0
  93. package/dist/packages/core/dist/edge.js.map +1 -1
  94. package/dist/packages/core/dist/index.d.ts +3 -0
  95. package/dist/packages/core/dist/index.js +3 -0
  96. package/dist/packages/core/dist/index.js.map +1 -1
  97. package/dist/packages/core/dist/protocol.d.ts +24 -0
  98. package/dist/packages/core/dist/protocol.js +54 -0
  99. package/dist/packages/core/dist/protocol.js.map +1 -0
  100. package/dist/packages/core/dist/receipts.d.ts +1 -0
  101. package/dist/packages/core/dist/receipts.js +1 -1
  102. package/dist/packages/core/dist/receipts.js.map +1 -1
  103. package/dist/packages/core/dist/schema.d.ts +1 -0
  104. package/dist/packages/core/dist/schema.js +13 -2
  105. package/dist/packages/core/dist/schema.js.map +1 -1
  106. package/dist/packages/ledger/dist/index.d.ts +1 -1
  107. package/dist/packages/relay/dist/admission.d.ts +14 -0
  108. package/dist/packages/relay/dist/admission.js +70 -0
  109. package/dist/packages/relay/dist/admission.js.map +1 -0
  110. package/dist/packages/relay/dist/fetch.d.ts +8 -2
  111. package/dist/packages/relay/dist/fetch.js +41 -12
  112. package/dist/packages/relay/dist/fetch.js.map +1 -1
  113. package/dist/packages/relay/dist/index.d.ts +23 -12
  114. package/dist/packages/relay/dist/index.js +130 -78
  115. package/dist/packages/relay/dist/index.js.map +1 -1
  116. package/dist/packages/relay/dist/journal.d.ts +1 -1
  117. package/dist/packages/relay/dist/notifications.d.ts +1 -1
  118. package/dist/packages/relay/dist/retry.d.ts +23 -0
  119. package/dist/packages/relay/dist/retry.js +43 -1
  120. package/dist/packages/relay/dist/retry.js.map +1 -1
  121. package/dist/packages/relay/dist/ssrf.d.ts +3 -2
  122. package/dist/packages/relay/dist/ssrf.js.map +1 -1
  123. package/dist/packages/relay/dist/worker.js +1 -1
  124. package/dist/packages/relay/dist/worker.js.map +1 -1
  125. package/dist/packages/runtime/dist/a2a.d.ts +1 -1
  126. package/dist/packages/runtime/dist/a2a.js +1 -1
  127. package/dist/packages/runtime/dist/adapter.d.ts +2 -2
  128. package/dist/packages/runtime/dist/application-config.d.ts +20 -0
  129. package/dist/packages/runtime/dist/application-config.js +218 -0
  130. package/dist/packages/runtime/dist/application-config.js.map +1 -0
  131. package/dist/packages/runtime/dist/approval-providers.d.ts +24 -3
  132. package/dist/packages/runtime/dist/approval-providers.js +79 -3
  133. package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
  134. package/dist/packages/runtime/dist/connection-admission-review.d.ts +39 -0
  135. package/dist/packages/runtime/dist/connection-admission-review.js +86 -0
  136. package/dist/packages/runtime/dist/connection-admission-review.js.map +1 -0
  137. package/dist/packages/runtime/dist/connection-persistence.d.ts +35 -0
  138. package/dist/packages/runtime/dist/connection-persistence.js +181 -0
  139. package/dist/packages/runtime/dist/connection-persistence.js.map +1 -0
  140. package/dist/packages/runtime/dist/connection-records.d.ts +167 -0
  141. package/dist/packages/runtime/dist/connection-records.js +132 -0
  142. package/dist/packages/runtime/dist/connection-records.js.map +1 -0
  143. package/dist/packages/runtime/dist/connection-router.d.ts +45 -0
  144. package/dist/packages/runtime/dist/connection-router.js +130 -0
  145. package/dist/packages/runtime/dist/connection-router.js.map +1 -0
  146. package/dist/packages/runtime/dist/connection-service.d.ts +159 -0
  147. package/dist/packages/runtime/dist/connection-service.js +239 -0
  148. package/dist/packages/runtime/dist/connection-service.js.map +1 -0
  149. package/dist/packages/runtime/dist/connection-transport.d.ts +14 -0
  150. package/dist/packages/runtime/dist/connection-transport.js +89 -0
  151. package/dist/packages/runtime/dist/connection-transport.js.map +1 -0
  152. package/dist/packages/runtime/dist/delivery-records.d.ts +180 -0
  153. package/dist/packages/runtime/dist/delivery-records.js +205 -0
  154. package/dist/packages/runtime/dist/delivery-records.js.map +1 -0
  155. package/dist/packages/runtime/dist/delivery-status-router.d.ts +27 -0
  156. package/dist/packages/runtime/dist/delivery-status-router.js +150 -0
  157. package/dist/packages/runtime/dist/delivery-status-router.js.map +1 -0
  158. package/dist/packages/runtime/dist/delivery-status.d.ts +43 -0
  159. package/dist/packages/runtime/dist/delivery-status.js +193 -0
  160. package/dist/packages/runtime/dist/delivery-status.js.map +1 -0
  161. package/dist/packages/runtime/dist/delivery-store.d.ts +125 -0
  162. package/dist/packages/runtime/dist/delivery-store.js +1047 -0
  163. package/dist/packages/runtime/dist/delivery-store.js.map +1 -0
  164. package/dist/packages/runtime/dist/gateway.d.ts +4 -3
  165. package/dist/packages/runtime/dist/gateway.js.map +1 -1
  166. package/dist/packages/runtime/dist/held-request-review.d.ts +49 -0
  167. package/dist/packages/runtime/dist/held-request-review.js +122 -0
  168. package/dist/packages/runtime/dist/held-request-review.js.map +1 -0
  169. package/dist/packages/runtime/dist/held-request-store.d.ts +112 -0
  170. package/dist/packages/runtime/dist/held-request-store.js +290 -0
  171. package/dist/packages/runtime/dist/held-request-store.js.map +1 -0
  172. package/dist/packages/runtime/dist/idempotency-store.d.ts +53 -0
  173. package/dist/packages/runtime/dist/idempotency-store.js +331 -0
  174. package/dist/packages/runtime/dist/idempotency-store.js.map +1 -0
  175. package/dist/packages/runtime/dist/inbox.d.ts +1 -1
  176. package/dist/packages/runtime/dist/index.d.ts +27 -1
  177. package/dist/packages/runtime/dist/index.js +26 -0
  178. package/dist/packages/runtime/dist/index.js.map +1 -1
  179. package/dist/packages/runtime/dist/invite-store.d.ts +76 -0
  180. package/dist/packages/runtime/dist/invite-store.js +337 -0
  181. package/dist/packages/runtime/dist/invite-store.js.map +1 -0
  182. package/dist/packages/runtime/dist/key-store.d.ts +77 -0
  183. package/dist/packages/runtime/dist/key-store.js +226 -0
  184. package/dist/packages/runtime/dist/key-store.js.map +1 -0
  185. package/dist/packages/runtime/dist/local-identity.d.ts +33 -0
  186. package/dist/packages/runtime/dist/local-identity.js +279 -0
  187. package/dist/packages/runtime/dist/local-identity.js.map +1 -0
  188. package/dist/packages/runtime/dist/mcp-rpc.d.ts +19 -0
  189. package/dist/packages/runtime/dist/mcp-rpc.js +175 -0
  190. package/dist/packages/runtime/dist/mcp-rpc.js.map +1 -0
  191. package/dist/packages/runtime/dist/mcp-server.d.ts +46 -19
  192. package/dist/packages/runtime/dist/mcp-server.js +427 -184
  193. package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
  194. package/dist/packages/runtime/dist/mcp-tool-catalog.d.ts +1 -1
  195. package/dist/packages/runtime/dist/mcp-tool-catalog.js +172 -13
  196. package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
  197. package/dist/packages/runtime/dist/mcp.d.ts +2 -2
  198. package/dist/packages/runtime/dist/message-status.d.ts +32 -0
  199. package/dist/packages/runtime/dist/message-status.js +29 -0
  200. package/dist/packages/runtime/dist/message-status.js.map +1 -0
  201. package/dist/packages/runtime/dist/outbox.d.ts +91 -0
  202. package/dist/packages/runtime/dist/outbox.js +462 -0
  203. package/dist/packages/runtime/dist/outbox.js.map +1 -0
  204. package/dist/packages/runtime/dist/policy.d.ts +1 -1
  205. package/dist/packages/runtime/dist/protocol-peer-store.d.ts +40 -0
  206. package/dist/packages/runtime/dist/protocol-peer-store.js +176 -0
  207. package/dist/packages/runtime/dist/protocol-peer-store.js.map +1 -0
  208. package/dist/packages/runtime/dist/protocol-release.d.ts +26 -0
  209. package/dist/packages/runtime/dist/protocol-release.js +76 -0
  210. package/dist/packages/runtime/dist/protocol-release.js.map +1 -0
  211. package/dist/packages/runtime/dist/quota.d.ts +1 -1
  212. package/dist/packages/runtime/dist/relay-selection.d.ts +20 -0
  213. package/dist/packages/runtime/dist/relay-selection.js +34 -0
  214. package/dist/packages/runtime/dist/relay-selection.js.map +1 -0
  215. package/dist/packages/runtime/dist/requester-pending-store.d.ts +59 -0
  216. package/dist/packages/runtime/dist/requester-pending-store.js +266 -0
  217. package/dist/packages/runtime/dist/requester-pending-store.js.map +1 -0
  218. package/dist/packages/runtime/dist/secret-store.d.ts +19 -0
  219. package/dist/packages/runtime/dist/secret-store.js +51 -0
  220. package/dist/packages/runtime/dist/secret-store.js.map +1 -0
  221. package/dist/packages/runtime/dist/session-audit.d.ts +29 -7
  222. package/dist/packages/runtime/dist/session-audit.js +149 -29
  223. package/dist/packages/runtime/dist/session-audit.js.map +1 -1
  224. package/dist/packages/runtime/dist/session.d.ts +101 -9
  225. package/dist/packages/runtime/dist/session.js +696 -96
  226. package/dist/packages/runtime/dist/session.js.map +1 -1
  227. package/dist/packages/runtime/dist/task-journal.d.ts +18 -3
  228. package/dist/packages/runtime/dist/task-journal.js +271 -18
  229. package/dist/packages/runtime/dist/task-journal.js.map +1 -1
  230. package/dist/packages/runtime/dist/verifier.d.ts +3 -2
  231. package/dist/packages/runtime/dist/verifier.js +1 -0
  232. package/dist/packages/runtime/dist/verifier.js.map +1 -1
  233. package/dist/packages/runtime/dist/worker-trust-store.d.ts +111 -0
  234. package/dist/packages/runtime/dist/worker-trust-store.js +592 -0
  235. package/dist/packages/runtime/dist/worker-trust-store.js.map +1 -0
  236. package/dist/packages/sandbox/dist/container.d.ts +1 -1
  237. package/dist/packages/sandbox/dist/index.d.ts +1 -1
  238. package/dist/spec/README.ja.md +21 -1
  239. package/dist/spec/README.md +20 -1
  240. package/dist/spec/agent-card.schema.json +11 -1
  241. package/dist/spec/delivery-status.schema.json +106 -0
  242. package/dist/spec/examples/protocol-versions/sample-agent-card.json +35 -0
  243. package/dist/spec/examples/sample-delivery-status.json +21 -0
  244. package/dist/spec/examples/sample-task-manifest.0.1.0.json +173 -0
  245. package/dist/spec/examples/sample-task-manifest.0.2.0.json +173 -0
  246. package/dist/spec/task-manifest.0.1.0.schema.json +422 -0
  247. package/dist/spec/task-manifest.0.2.0.schema.json +422 -0
  248. package/dist/spec/task-manifest.schema.json +9 -418
  249. package/docs/sdk.ja.md +133 -0
  250. package/docs/sdk.md +138 -0
  251. package/package.json +15 -3
@@ -0,0 +1,61 @@
1
+ import type { IdentityRole } from '../../packages/runtime/dist/local-identity.js';
2
+ import type { IdentityStoreOptions } from '../../packages/runtime/dist/key-store.js';
3
+ import type { SetupHost, HostDestination } from './setup-hosts.js';
4
+ export declare const SETUP_USAGE = "Usage: sealbridge setup [--host NAME ... | --all-detected] [--project ABS] [--worker] [--relay URL] [--no-require-approval] [--update-existing] [--dry-run | --print]";
5
+ export interface SetupOptions extends IdentityStoreOptions {
6
+ hosts?: string[];
7
+ allDetected?: boolean;
8
+ project?: string;
9
+ worker?: boolean;
10
+ relay?: string;
11
+ dryRun?: boolean;
12
+ print?: boolean;
13
+ execPath?: string;
14
+ entryPath?: string;
15
+ requireApproval?: boolean;
16
+ updateExisting?: boolean;
17
+ chooseHost?: (hosts: readonly SetupHost[]) => Promise<SetupHost | undefined>;
18
+ }
19
+ export declare function parseSetupArgs(args: string[]): SetupOptions;
20
+ export declare function selectSetupHosts(options: SetupOptions): Promise<HostDestination[]>;
21
+ export declare function setupExitCode(code: string): number;
22
+ /** Local preflight and apply; never starts a host, MCP server, or relay connection. */
23
+ export declare function runSetup(options?: SetupOptions): Promise<{
24
+ mode: string;
25
+ identities: {
26
+ role: IdentityRole;
27
+ path: string;
28
+ source: "default" | "explicit" | "legacy" | undefined;
29
+ status: string;
30
+ did: string | undefined;
31
+ }[];
32
+ config: {
33
+ path: string;
34
+ previous: string;
35
+ status: string;
36
+ relay: string | import("../../packages/relay/dist/index.js").RelayTransport;
37
+ source: string;
38
+ };
39
+ destinations: {
40
+ previous: string;
41
+ status: string;
42
+ backup: string | undefined;
43
+ approvalMode: string;
44
+ approvalNote: string;
45
+ host: SetupHost;
46
+ path: string;
47
+ }[];
48
+ next: string;
49
+ error: string | undefined;
50
+ } | {
51
+ snippets: {
52
+ mcpServers: {
53
+ sealbridge: import("./setup-hosts.js").McpEntry;
54
+ };
55
+ approvalMode: string;
56
+ approvalNote: string;
57
+ host: SetupHost;
58
+ path: string;
59
+ }[];
60
+ }>;
61
+ export declare function setupCommand(args: string[]): Promise<void>;
@@ -0,0 +1,243 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import * as fs from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { createInterface } from 'node:readline/promises';
5
+ import { resolveDataRoot, ensurePrivateDirectory, checkPrivatePath } from '../../packages/runtime/dist/local-identity.js';
6
+ import { inspectStoredIdentity, resolveStoredIdentity } from '../../packages/runtime/dist/key-store.js';
7
+ import { readApplicationConfig, validateApplicationConfig, createApplicationConfig } from '../../packages/runtime/dist/application-config.js';
8
+ import { selectApplicationRelay } from '../../packages/runtime/dist/relay-selection.js';
9
+ import { detectedHosts, hostDestination, runtimeEntry } from './setup-hosts.js';
10
+ import { snapshot, strictObject, hostChange, assertUnchanged, publish } from './setup-files.js';
11
+ export const SETUP_USAGE = 'Usage: sealbridge setup [--host NAME ... | --all-detected] [--project ABS] [--worker] [--relay URL] [--no-require-approval] [--update-existing] [--dry-run | --print]';
12
+ const ENTRY_CONFLICT_HELP = 'An existing Sealbridge entry differs from the proposed entry. Review with --update-existing --dry-run or --update-existing --print, then use --update-existing to replace only that entry with a backup. Use --no-require-approval to select the previous plain mcp-server mode.';
13
+ export function parseSetupArgs(args) {
14
+ const result = {}, seen = new Set();
15
+ for (let i = 0; i < args.length; i++) {
16
+ const arg = args[i];
17
+ if (arg !== '--host' && seen.has(arg))
18
+ throw new Error('SETUP_INVALID_ARGUMENT');
19
+ seen.add(arg);
20
+ if (['--host', '--project', '--relay'].includes(arg)) {
21
+ const value = args[++i];
22
+ if (!value || value.startsWith('--'))
23
+ throw new Error('SETUP_INVALID_ARGUMENT');
24
+ if (arg === '--host')
25
+ (result.hosts ??= []).push(value);
26
+ else if (arg === '--project')
27
+ result.project = value;
28
+ else
29
+ result.relay = value;
30
+ }
31
+ else if (arg === '--all-detected')
32
+ result.allDetected = true;
33
+ else if (arg === '--worker')
34
+ result.worker = true;
35
+ else if (arg === '--dry-run')
36
+ result.dryRun = true;
37
+ else if (arg === '--print')
38
+ result.print = true;
39
+ else if (arg === '--no-require-approval')
40
+ result.requireApproval = false;
41
+ else if (arg === '--update-existing')
42
+ result.updateExisting = true;
43
+ else
44
+ throw new Error('SETUP_INVALID_ARGUMENT');
45
+ }
46
+ validateOptions(result);
47
+ return result;
48
+ }
49
+ function validateOptions(options) {
50
+ if ((options.hosts?.length && options.allDetected) || (options.dryRun && options.print) ||
51
+ (options.project !== undefined && !options.hosts?.includes('claude-code')) ||
52
+ options.hosts?.length === 0)
53
+ throw new Error('SETUP_INVALID_ARGUMENT');
54
+ }
55
+ export async function selectSetupHosts(options) {
56
+ validateOptions(options);
57
+ if (options.hosts)
58
+ return [...new Set(options.hosts)].map(host => hostDestination(host, options));
59
+ const detected = detectedHosts(options);
60
+ if (detected.length === 1 || (options.allDetected && detected.length))
61
+ return detected;
62
+ if (!options.allDetected && detected.length > 1 && options.chooseHost) {
63
+ const selected = await options.chooseHost(detected.map(host => host.host));
64
+ const host = detected.find(host => host.host === selected);
65
+ if (host)
66
+ return [host];
67
+ }
68
+ throw new Error('SETUP_HOST_REQUIRED');
69
+ }
70
+ export function setupExitCode(code) {
71
+ if (['SETUP_INVALID_ARGUMENT', 'SETUP_HOST_REQUIRED', 'SETUP_HOST_UNSUPPORTED'].includes(code))
72
+ return 2;
73
+ if (['SETUP_ENTRY_CONFLICT', 'SETUP_APPROVAL_MODE_CONFLICT', 'SETUP_CONFIG_CONFLICT', 'SETUP_CONFIG_INVALID', 'SETUP_RUNTIME_UNSTABLE'].includes(code))
74
+ return 3;
75
+ return 1;
76
+ }
77
+ function errorCode(error) {
78
+ const code = error instanceof Error ? error.message : '';
79
+ if (/^(SETUP_|IDENTITY_|DATA_DIR_|KEY_STORE_)[A-Z_]+$/.test(code))
80
+ return code;
81
+ if (code === 'APP_CONFIG_BUSY')
82
+ return 'SETUP_CONFIG_CHANGED';
83
+ if (/^APP_CONFIG_/.test(code))
84
+ return code === 'APP_CONFIG_UNWRITABLE' ? 'SETUP_WRITE_FAILED' : 'SETUP_CONFIG_INVALID';
85
+ return 'SETUP_WRITE_FAILED';
86
+ }
87
+ /** Local preflight and apply; never starts a host, MCP server, or relay connection. */
88
+ export async function runSetup(options = {}) {
89
+ const io = options.fs ?? fs, platform = options.platform ?? process.platform;
90
+ const hosts = await selectSetupHosts(options), root = resolveDataRoot(options);
91
+ const entry = runtimeEntry(root, options);
92
+ const alternateEntry = { ...entry, args: options.requireApproval === false
93
+ ? [...entry.args, '--require-approval'] : entry.args.slice(0, -1) };
94
+ const approval = options.requireApproval === false
95
+ ? { approvalMode: 'automatic', approvalNote: 'The host can send without per-request confirmation and accept final results automatically.' }
96
+ : { approvalMode: 'host-mediated', approvalNote: 'Host form elicitation is required before sending and for final verification. Hosts without form support return APPROVAL_CHANNEL_UNAVAILABLE before sending.' };
97
+ const roles = options.worker ? ['requester', 'worker'] : ['requester'];
98
+ const identities = await Promise.all(roles.map(async (role) => {
99
+ const selected = await inspectStoredIdentity(role, options);
100
+ return { role, path: selected.location, source: selected.source,
101
+ status: selected.key ? 'reused' : 'created on apply', did: selected.key?.did };
102
+ }));
103
+ const configOriginal = snapshot(join(root, 'config.json'), io, platform);
104
+ if (configOriginal.bytes)
105
+ strictObject(configOriginal.bytes);
106
+ let config;
107
+ try {
108
+ config = readApplicationConfig(options);
109
+ if (options.relay !== undefined) {
110
+ const proposed = validateApplicationConfig({ version: 1, relays: [options.relay] }, options);
111
+ if (configOriginal.bytes && proposed.relays[0] !== config.relays[0])
112
+ throw new Error('SETUP_CONFIG_CONFLICT');
113
+ if (!configOriginal.bytes)
114
+ config = proposed;
115
+ }
116
+ }
117
+ catch (error) {
118
+ throw new Error(errorCode(error) === 'SETUP_WRITE_FAILED' ? 'SETUP_CONFIG_INVALID' : errorCode(error));
119
+ }
120
+ const selected = selectApplicationRelay({ fallbackCandidates: config.relays });
121
+ const changes = hosts.map(host => ({ host, change: hostChange(snapshot(host.path, io, platform), entry, { updateExisting: options.updateExisting, alternateEntry }) }));
122
+ if (options.print)
123
+ return { snippets: hosts.map(({ host, path }) => ({ host, path, ...approval, mcpServers: { sealbridge: entry } })) };
124
+ const summary = {
125
+ mode: options.dryRun ? 'dry-run' : 'apply', identities,
126
+ config: { path: configOriginal.path, previous: configOriginal.bytes ? 'existing' : 'previously absent',
127
+ status: configOriginal.bytes ? 'reused' : 'created on apply',
128
+ relay: selected.relay, source: configOriginal.bytes ? 'local-default' : options.relay ? 'setup --relay' : 'built-in default' },
129
+ destinations: changes.map(({ host, change }) => ({ host: host.host, path: host.path,
130
+ ...approval,
131
+ previous: change.bytes ? 'existing' : 'previously absent',
132
+ status: change.bytes?.equals(change.next) ? 'unchanged' : 'planned', backup: undefined })),
133
+ next: 'Reload the selected host, then check its MCP tools. Setup does not check host readiness or grant task approval.',
134
+ error: undefined,
135
+ };
136
+ if (options.dryRun)
137
+ return summary;
138
+ let lock;
139
+ const lockPath = join(root, '.setup.lock');
140
+ try {
141
+ ensurePrivateDirectory(root, io, platform);
142
+ checkPrivatePath(lockPath, io, platform);
143
+ try {
144
+ lock = io.openSync(lockPath, 'wx', 0o600);
145
+ }
146
+ catch (error) {
147
+ throw new Error(error.code === 'EEXIST' ? 'SETUP_CONFIG_BUSY' : 'SETUP_WRITE_FAILED');
148
+ }
149
+ // One exclusive lock attempt is bounded. Revalidate every destination after acquiring it.
150
+ assertUnchanged(configOriginal, io, platform);
151
+ for (const { change } of changes)
152
+ assertUnchanged(change, io, platform);
153
+ for (const role of roles)
154
+ await inspectStoredIdentity(role, options);
155
+ for (const identity of identities) {
156
+ identity.did = (await resolveStoredIdentity(identity.role, options)).did;
157
+ identity.status = identity.status === 'reused' ? 'reused' : 'created';
158
+ }
159
+ if (!configOriginal.bytes) {
160
+ createApplicationConfig(config, options);
161
+ summary.config.status = 'created';
162
+ }
163
+ for (let i = 0; i < changes.length; i++) {
164
+ const { change } = changes[i], destination = summary.destinations[i];
165
+ try {
166
+ publish(change, root, io, platform);
167
+ destination.status = destination.status === 'unchanged' ? 'unchanged' : 'configured';
168
+ }
169
+ catch (error) {
170
+ destination.status = 'failed';
171
+ throw error;
172
+ }
173
+ finally {
174
+ destination.backup = change.backup;
175
+ }
176
+ }
177
+ }
178
+ catch (error) {
179
+ summary.error = errorCode(error);
180
+ }
181
+ finally {
182
+ if (lock !== undefined) {
183
+ try {
184
+ const owned = io.fstatSync(lock), current = io.lstatSync(lockPath);
185
+ if (current.dev === owned.dev && current.ino === owned.ino && !current.isSymbolicLink())
186
+ io.unlinkSync(lockPath);
187
+ else
188
+ summary.error = 'SETUP_CONFIG_CHANGED';
189
+ }
190
+ catch {
191
+ summary.error ??= 'SETUP_WRITE_FAILED';
192
+ }
193
+ finally {
194
+ try {
195
+ io.closeSync(lock);
196
+ }
197
+ catch {
198
+ summary.error ??= 'SETUP_WRITE_FAILED';
199
+ }
200
+ }
201
+ }
202
+ }
203
+ return summary;
204
+ }
205
+ export async function setupCommand(args) {
206
+ if (args.length === 1 && args[0] === '--help') {
207
+ console.log(SETUP_USAGE + '\nHosts: claude-desktop (macOS/Windows), cursor, claude-code (explicit --project only).\nLocal only. Close host settings before applying; reload the host afterward.\nDefault: mcp-server --require-approval requests host form elicitation before sending and for final verification.\nHosts without form support return APPROVAL_CHANNEL_UNAVAILABLE before sending; support cannot be detected offline.\n--no-require-approval selects automatic approval: the host can send without per-request confirmation and accept final results automatically.\n--update-existing replaces only a differing Sealbridge entry, retaining a backup of the original file.\n--dry-run reads and validates; --print outputs proposed entries. Neither writes files.\nUse a persistent installation or a built checkout; setup does not install dependencies.');
208
+ return;
209
+ }
210
+ try {
211
+ const options = parseSetupArgs(args);
212
+ if (process.stdin.isTTY && process.stderr.isTTY)
213
+ options.chooseHost = async (hosts) => {
214
+ const prompt = createInterface({ input: process.stdin, output: process.stderr });
215
+ try {
216
+ const answer = await prompt.question('Choose host (' + hosts.map((host, i) => `${i + 1}: ${host}`).join(', ') + '), or Enter to cancel: ');
217
+ return /^\d+$/.test(answer.trim()) ? hosts[Number(answer.trim()) - 1] : undefined;
218
+ }
219
+ catch {
220
+ return undefined;
221
+ }
222
+ finally {
223
+ prompt.close();
224
+ }
225
+ };
226
+ const result = await runSetup(options);
227
+ console.log(JSON.stringify(result, null, 2));
228
+ if ('error' in result && result.error) {
229
+ console.error(result.error);
230
+ process.exitCode = setupExitCode(result.error);
231
+ }
232
+ }
233
+ catch (error) {
234
+ const code = errorCode(error);
235
+ if (code === 'SETUP_APPROVAL_MODE_CONFLICT')
236
+ console.error('Existing Sealbridge entry uses a different approval mode.');
237
+ if (code === 'SETUP_APPROVAL_MODE_CONFLICT' || code === 'SETUP_ENTRY_CONFLICT')
238
+ console.error(ENTRY_CONFLICT_HELP);
239
+ console.error(code);
240
+ process.exitCode = setupExitCode(code);
241
+ }
242
+ }
243
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import type { Json } from '@acp/core';
1
+ import type { Json } from '../../packages/core/dist/index.js';
2
2
  export declare function readTaskInputFile(path: string): Json;
@@ -1,3 +1,3 @@
1
- import type { SignedRelayWake } from '@acp/relay';
1
+ import type { SignedRelayWake } from '../../packages/relay/dist/index.js';
2
2
  /** Operator-owned command; signed routing metadata is passed only on stdin. */
3
3
  export declare function createWakeHook(command: string): (wake: SignedRelayWake, signal: AbortSignal) => Promise<void>;
@@ -0,0 +1,4 @@
1
+ /** Project machine events onto documented fields; free-form diagnostics are omitted. */
2
+ export declare function workerJson(value: unknown): string;
3
+ export declare function emitWorkerJson(value: unknown): void;
4
+ export declare function inviteDigest(token: string): string;
@@ -0,0 +1,87 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { createHash } from 'node:crypto';
3
+ import { relayDiagnostic } from '../../packages/relay/dist/index.js';
4
+ import { japaneseErrorReason } from './error-messages.js';
5
+ const REDACTED = '[redacted]';
6
+ const hints = new Set([
7
+ 'Use a budget within the advertised policy.',
8
+ 'Select an advertised skill and task type, or omit both for direct delegation.',
9
+ 'Reduce the execution budget or raise the worker execution timeout before accepting.',
10
+ 'Reduce the execution budget or raise the worker overall task timeout before accepting.',
11
+ 'Raise the requester idle timeout or shorten the worker heartbeat interval before accepting.',
12
+ ]);
13
+ function record(value) {
14
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
15
+ }
16
+ function identifier(value) {
17
+ return typeof value === 'string' && /^[A-Za-z0-9_.-]{1,160}$/.test(value) ? value : REDACTED;
18
+ }
19
+ function reason(value) {
20
+ if (typeof value !== 'string')
21
+ return REDACTED;
22
+ const did = 'did:key:z[1-9A-HJ-NP-Za-km-z]{1,100}';
23
+ const field = '(?:maxInputTokens|maxOutputTokens|maxToolInvocations|maxWallClockSeconds|timeoutSeconds)';
24
+ const number = '-?\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?';
25
+ if (value === 'The worker owner must review this requester. No task was accepted. Do not retry automatically.' ||
26
+ /^(?:manifest|budget) is missing$/.test(value) ||
27
+ new RegExp('^' + field + ' is missing or not a finite number$').test(value) ||
28
+ new RegExp('^' + field + ' ' + number + ' exceeds worker limit ' + number + '$').test(value) ||
29
+ /^maxConcurrentTasks \d+ reached$/.test(value) ||
30
+ new RegExp('^per-requester rate limit exceeded for ' + did + ' \\(\\d+ requests / \\d+ms\\)$').test(value) ||
31
+ new RegExp('^requester (?:' + did + '|unknown) is not allowed$').test(value) ||
32
+ new RegExp('^requester ' + did + ' does not match envelope from ' + did + '$').test(value))
33
+ return value;
34
+ return REDACTED;
35
+ }
36
+ /** Project machine events onto documented fields; free-form diagnostics are omitted. */
37
+ export function workerJson(value) {
38
+ const source = record(value), out = {};
39
+ if (source.event !== undefined)
40
+ out.event = identifier(source.event);
41
+ if (source.taskId !== undefined)
42
+ out.taskId = identifier(source.taskId);
43
+ if (source.status !== undefined)
44
+ out.status = ['connected', 'reconnecting', 'unavailable', 'stopped'].includes(String(source.status)) ? source.status : REDACTED;
45
+ if (source.error !== undefined) {
46
+ const message = relayDiagnostic(source.error).message;
47
+ out.error = message;
48
+ out.reasonJa = japaneseErrorReason(message);
49
+ }
50
+ if (source.code !== undefined) {
51
+ out.code = typeof source.code === 'string' && /^[A-Z][A-Z0-9_]{0,100}$/.test(source.code) ? source.code : 'EXECUTION_FAILED';
52
+ out.reasonJa = japaneseErrorReason(String(out.code));
53
+ }
54
+ if (source.reason !== undefined)
55
+ out.reason = reason(source.reason);
56
+ if (source.detail !== undefined) {
57
+ const detail = record(source.detail);
58
+ const hash = (v) => typeof v === 'string' && /^sha256:[a-f0-9]{64}$/.test(v) ? v : REDACTED;
59
+ out.detail = {
60
+ field: typeof detail.field === 'string' && /^(?:task\.scope|peerIdleTimeoutMs|budget\.(?:maxInputTokens|maxOutputTokens|maxToolInvocations|maxWallClockSeconds))$/.test(detail.field) ? detail.field : REDACTED,
61
+ expected: hash(detail.expected), actual: hash(detail.actual),
62
+ hint: typeof detail.hint === 'string' && hints.has(detail.hint) ? detail.hint : REDACTED,
63
+ };
64
+ }
65
+ if (source.event === 'invite_ready') {
66
+ if (typeof source.inviteDigest === 'string' && /^sha256:[a-f0-9]{64}$/.test(source.inviteDigest))
67
+ out.inviteDigest = source.inviteDigest;
68
+ if (typeof source.expiresAt === 'string' && /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z$/.test(source.expiresAt))
69
+ out.expiresAt = source.expiresAt;
70
+ if (typeof source.workerDid === 'string' && /^did:key:z[1-9A-HJ-NP-Za-km-z]{1,100}$/.test(source.workerDid))
71
+ out.workerDid = source.workerDid;
72
+ if (typeof source.relay === 'string') {
73
+ const url = new URL(source.relay);
74
+ url.username = '';
75
+ url.password = '';
76
+ url.search = '';
77
+ url.hash = '';
78
+ out.relay = /acp-invite:|acp:|bearer/i.test(url.pathname) ? url.origin : url.toString().replace(/\/$/, '');
79
+ }
80
+ }
81
+ return JSON.stringify(out);
82
+ }
83
+ export function emitWorkerJson(value) { console.error(workerJson(value)); }
84
+ export function inviteDigest(token) {
85
+ return 'sha256:' + createHash('sha256').update(token).digest('hex');
86
+ }
87
+ //# sourceMappingURL=worker-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-json.js","sourceRoot":"","sources":["../src/worker-json.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
- import type { Json, TaskManifest, SignedEnvelope, CapabilityToken } from '@acp/core';
2
- import { BilateralLedger } from '@acp/ledger';
3
- import type { AuditStore, AuditEntry, AuditBundle } from '@acp/ledger';
4
- import { OwnerGateway, MCPProxy, VerificationEngine } from '@acp/runtime';
5
- import { InMemoryRelay } from '@acp/relay';
1
+ import type { Json, TaskManifest, SignedEnvelope, CapabilityToken } from '../../../packages/core/dist/index.js';
2
+ import { BilateralLedger } from '../../../packages/ledger/dist/index.js';
3
+ import type { AuditStore, AuditEntry, AuditBundle } from '../../../packages/ledger/dist/index.js';
4
+ import { OwnerGateway, MCPProxy, VerificationEngine } from '../../../packages/runtime/dist/index.js';
5
+ import { InMemoryRelay } from '../../../packages/relay/dist/index.js';
6
6
  export declare function createSession(auditDirectory?: string): Promise<{
7
- alice: import("@acp/core").KeyPair;
8
- bob: import("@acp/core").KeyPair;
7
+ alice: import("../../../packages/core/dist/index.js").KeyPair;
8
+ bob: import("../../../packages/core/dist/index.js").KeyPair;
9
9
  manifest: TaskManifest;
10
- proposal: import("@acp/core").Signed<TaskManifest>;
11
- contract: import("@acp/core").TaskContract;
10
+ proposal: import("../../../packages/core/dist/index.js").Signed<TaskManifest>;
11
+ contract: import("../../../packages/core/dist/index.js").TaskContract;
12
12
  requester: OwnerGateway;
13
13
  worker: OwnerGateway;
14
14
  root: CapabilityToken;
@@ -19,8 +19,8 @@ export declare function createSession(auditDirectory?: string): Promise<{
19
19
  ledger: BilateralLedger;
20
20
  stores: AuditStore[];
21
21
  record: (event: string, payload: Json) => AuditEntry;
22
- deliver: (data: Json, usage?: import("@acp/core").UsageReceipt) => {
23
- delivery: import("@acp/runtime").Delivery;
22
+ deliver: (data: Json, usage?: import("../../../packages/core/dist/index.js").UsageReceipt) => {
23
+ delivery: import("../../../packages/runtime/dist/index.js").Delivery;
24
24
  envelope: SignedEnvelope;
25
25
  };
26
26
  sendTransition: (event: string, transition: unknown, from: OwnerGateway, to: OwnerGateway, seq: number) => void;
@@ -29,7 +29,7 @@ export declare function createSession(auditDirectory?: string): Promise<{
29
29
  }>;
30
30
  export declare function happyPath(auditDirectory?: string): Promise<{
31
31
  scenario: string;
32
- state: import("@acp/core").State;
32
+ state: import("../../../packages/core/dist/index.js").State;
33
33
  stages: string[];
34
34
  audit: "VALID";
35
35
  bundle: AuditBundle;
@@ -65,7 +65,7 @@ export declare function runDemo(auditDirectory?: string): Promise<({
65
65
  audit: string;
66
66
  } | {
67
67
  scenario: string;
68
- state: import("@acp/core").State;
68
+ state: import("../../../packages/core/dist/index.js").State;
69
69
  stages: string[];
70
70
  audit: "VALID";
71
71
  })[]>;
package/dist/package.json CHANGED
@@ -1 +1 @@
1
- {"type":"module","version":"0.2.2"}
1
+ {"type":"module","version":"0.3.1"}
@@ -1,6 +1,6 @@
1
1
  import { type CredentialProxyHandle } from './credential-proxy.js';
2
- import type { Json, AgentSkill } from '@acp/core';
3
- import type { AgentAdapter, AgentTaskContext } from '@acp/runtime';
2
+ import type { Json, AgentSkill } from '../../core/dist/index.js';
3
+ import type { AgentAdapter, AgentTaskContext } from '../../runtime/dist/index.js';
4
4
  export interface CommandRequest {
5
5
  command: string;
6
6
  args: string[];
@@ -1,5 +1,5 @@
1
- import type { BudgetSpec } from '@acp/core';
2
- import type { QuotaMeter } from '@acp/runtime';
1
+ import type { BudgetSpec } from '../../core/dist/index.js';
2
+ import type { QuotaMeter } from '../../runtime/dist/index.js';
3
3
  export interface ProxyUsageMetrics {
4
4
  inputTokens?: number;
5
5
  outputTokens?: number;
@@ -1,4 +1,4 @@
1
- export type { AgentAdapter, AgentTaskContext, UsageMetrics } from '@acp/runtime';
1
+ export type { AgentAdapter, AgentTaskContext, UsageMetrics } from '../../runtime/dist/index.js';
2
2
  export * from './credential-proxy.js';
3
3
  export * from './command.js';
4
4
  export * from './openai.js';
@@ -1,7 +1,7 @@
1
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
2
  import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
3
- import type { AgentAdapter, AgentTaskContext, MCPProxy, ToolDefinition, ToolBackend } from '@acp/runtime';
4
- import type { Json } from '@acp/core';
3
+ import type { AgentAdapter, AgentTaskContext, MCPProxy, ToolDefinition, ToolBackend } from '../../runtime/dist/index.js';
4
+ import type { Json } from '../../core/dist/index.js';
5
5
  export interface McpAdapterOptions {
6
6
  client?: Client;
7
7
  transport?: Transport;
@@ -1,5 +1,5 @@
1
- import type { Json } from '@acp/core';
2
- import type { AgentAdapter, AgentTaskContext } from '@acp/runtime';
1
+ import type { Json } from '../../core/dist/index.js';
2
+ import type { AgentAdapter, AgentTaskContext } from '../../runtime/dist/index.js';
3
3
  export interface OpenAICompatibleOptions {
4
4
  baseUrl?: string;
5
5
  endpoint?: string;
@@ -1,5 +1,5 @@
1
- import type { AgentAdapter, AgentTaskContext } from '@acp/runtime';
2
- import type { Json } from '@acp/core';
1
+ import type { AgentAdapter, AgentTaskContext } from '../../runtime/dist/index.js';
2
+ import type { Json } from '../../core/dist/index.js';
3
3
  /**
4
4
  * Runs task JavaScript and reports the isolation the host runner actually used.
5
5
  *
@@ -0,0 +1,58 @@
1
+ import type { SignedAgentCard } from './discovery.js';
2
+ import type { KeyPair, Signed } from './types.js';
3
+ export declare const CONNECTION_OFFER_LIFETIME_MS: number;
4
+ export declare const CONNECTION_CONTROL_MAX_BYTES: number;
5
+ export declare const CONNECTION_EVENTS: readonly ["CONNECTION_REQUEST", "CONNECTION_ACCEPTED", "CONNECTION_ACK"];
6
+ export type ConnectionEventName = typeof CONNECTION_EVENTS[number];
7
+ export interface ConnectionRequest {
8
+ type: 'ConnectionRequest';
9
+ v: 1;
10
+ protocolVersion: '0.2.0';
11
+ requestId: string;
12
+ fromOwnerDid: string;
13
+ toOwnerDid: string;
14
+ agentCard: SignedAgentCard;
15
+ message: string;
16
+ createdAt: string;
17
+ expiresAt: string;
18
+ inviteDigest?: string;
19
+ originProposalDigest?: string;
20
+ }
21
+ export interface ConnectionAccepted {
22
+ type: 'ConnectionAccepted';
23
+ v: 1;
24
+ protocolVersion: '0.2.0';
25
+ eventId: string;
26
+ connectionId: string;
27
+ requestId: string;
28
+ requestDigest: string;
29
+ fromOwnerDid: string;
30
+ toOwnerDid: string;
31
+ acceptedAt: string;
32
+ trust: 'limited';
33
+ inviteDigest?: string;
34
+ }
35
+ export interface ConnectionAck {
36
+ type: 'ConnectionAck';
37
+ v: 1;
38
+ eventId: string;
39
+ acceptedDigest: string;
40
+ fromOwnerDid: string;
41
+ toOwnerDid: string;
42
+ receivedAt: string;
43
+ }
44
+ export type ConnectionControl = ConnectionRequest | ConnectionAccepted | ConnectionAck;
45
+ export declare function isConnectionEvent(value: string): value is ConnectionEventName;
46
+ export declare function connectionEventName(value: ConnectionControl): ConnectionEventName;
47
+ export declare function connectionRoutingId(requestId: string): string;
48
+ /** Structural validation is timeless; live expiry checks are separate. */
49
+ export declare function validateConnectionRequest(value: unknown): value is ConnectionRequest;
50
+ export declare function validateConnectionAccepted(value: unknown): value is ConnectionAccepted;
51
+ export declare function validateConnectionAck(value: unknown): value is ConnectionAck;
52
+ export declare function verifyConnectionRequest(value: Signed<ConnectionRequest>): boolean;
53
+ export declare function verifyConnectionAccepted(value: Signed<ConnectionAccepted>): boolean;
54
+ export declare function verifyConnectionAck(value: Signed<ConnectionAck>): boolean;
55
+ export declare function assertConnectionRequestCurrent(value: ConnectionRequest, now: number): void;
56
+ export declare function signConnectionRequest(value: ConnectionRequest, owner: KeyPair): Signed<ConnectionRequest>;
57
+ export declare function signConnectionAccepted(value: ConnectionAccepted, owner: KeyPair): Signed<ConnectionAccepted>;
58
+ export declare function signConnectionAck(value: ConnectionAck, owner: KeyPair): Signed<ConnectionAck>;