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.
- package/README.ja.md +492 -30
- package/README.md +522 -109
- package/dist/cli/dist/accept.d.ts +13 -0
- package/dist/cli/dist/accept.js +115 -0
- package/dist/cli/dist/accept.js.map +1 -0
- package/dist/cli/dist/approval-summary.d.ts +1 -1
- package/dist/cli/dist/board.d.ts +10 -9
- package/dist/cli/dist/board.js +62 -31
- package/dist/cli/dist/board.js.map +1 -1
- package/dist/cli/dist/command-identity.d.ts +6 -0
- package/dist/cli/dist/command-identity.js +13 -0
- package/dist/cli/dist/command-identity.js.map +1 -0
- package/dist/cli/dist/config.d.ts +3 -0
- package/dist/cli/dist/config.js +29 -0
- package/dist/cli/dist/config.js.map +1 -0
- package/dist/cli/dist/connections.d.ts +15 -0
- package/dist/cli/dist/connections.js +191 -0
- package/dist/cli/dist/connections.js.map +1 -0
- package/dist/cli/dist/contacts.d.ts +4 -3
- package/dist/cli/dist/contacts.js +39 -28
- package/dist/cli/dist/contacts.js.map +1 -1
- package/dist/cli/dist/doctor.d.ts +9 -0
- package/dist/cli/dist/doctor.js +46 -5
- package/dist/cli/dist/doctor.js.map +1 -1
- package/dist/cli/dist/error-messages.js +22 -0
- package/dist/cli/dist/error-messages.js.map +1 -1
- package/dist/cli/dist/index.js +44 -6
- package/dist/cli/dist/index.js.map +1 -1
- package/dist/cli/dist/invite-output.d.ts +14 -0
- package/dist/cli/dist/invite-output.js +66 -0
- package/dist/cli/dist/invite-output.js.map +1 -0
- package/dist/cli/dist/invite-share.d.ts +6 -3
- package/dist/cli/dist/invite-share.js +40 -15
- package/dist/cli/dist/invite-share.js.map +1 -1
- package/dist/cli/dist/invites-migrate.d.ts +3 -0
- package/dist/cli/dist/invites-migrate.js +33 -0
- package/dist/cli/dist/invites-migrate.js.map +1 -0
- package/dist/cli/dist/mcp.d.ts +7 -5
- package/dist/cli/dist/mcp.js +23 -18
- package/dist/cli/dist/mcp.js.map +1 -1
- package/dist/cli/dist/network.d.ts +11 -1
- package/dist/cli/dist/network.js +150 -87
- package/dist/cli/dist/network.js.map +1 -1
- package/dist/cli/dist/pending.d.ts +8 -0
- package/dist/cli/dist/pending.js +50 -0
- package/dist/cli/dist/pending.js.map +1 -0
- package/dist/cli/dist/public-settings.d.ts +5 -4
- package/dist/cli/dist/public-settings.js +13 -15
- package/dist/cli/dist/public-settings.js.map +1 -1
- package/dist/cli/dist/receipt.d.ts +1 -1
- package/dist/cli/dist/relay-auth.d.ts +3 -0
- package/dist/cli/dist/relay-auth.js +23 -0
- package/dist/cli/dist/relay-auth.js.map +1 -0
- package/dist/cli/dist/requests.d.ts +10 -0
- package/dist/cli/dist/requests.js +91 -0
- package/dist/cli/dist/requests.js.map +1 -0
- package/dist/cli/dist/sdk.d.ts +10 -0
- package/dist/cli/dist/sdk.js +7 -0
- package/dist/cli/dist/sdk.js.map +1 -0
- package/dist/cli/dist/setup-files.d.ts +24 -0
- package/dist/cli/dist/setup-files.js +190 -0
- package/dist/cli/dist/setup-files.js.map +1 -0
- package/dist/cli/dist/setup-hosts.d.ts +29 -0
- package/dist/cli/dist/setup-hosts.js +75 -0
- package/dist/cli/dist/setup-hosts.js.map +1 -0
- package/dist/cli/dist/setup.d.ts +61 -0
- package/dist/cli/dist/setup.js +243 -0
- package/dist/cli/dist/setup.js.map +1 -0
- package/dist/cli/dist/task-input.d.ts +1 -1
- package/dist/cli/dist/wake-hook.d.ts +1 -1
- package/dist/cli/dist/worker-json.d.ts +4 -0
- package/dist/cli/dist/worker-json.js +87 -0
- package/dist/cli/dist/worker-json.js.map +1 -0
- package/dist/examples/two-owner-demo/dist/run-demo.d.ts +13 -13
- package/dist/package.json +1 -1
- package/dist/packages/adapters/dist/command.d.ts +2 -2
- package/dist/packages/adapters/dist/credential-proxy.d.ts +2 -2
- package/dist/packages/adapters/dist/index.d.ts +1 -1
- package/dist/packages/adapters/dist/mcp.d.ts +2 -2
- package/dist/packages/adapters/dist/openai.d.ts +2 -2
- package/dist/packages/adapters/dist/sandbox.d.ts +2 -2
- package/dist/packages/core/dist/connection.d.ts +58 -0
- package/dist/packages/core/dist/connection.js +132 -0
- package/dist/packages/core/dist/connection.js.map +1 -0
- package/dist/packages/core/dist/delivery-status.d.ts +22 -0
- package/dist/packages/core/dist/delivery-status.js +53 -0
- package/dist/packages/core/dist/delivery-status.js.map +1 -0
- package/dist/packages/core/dist/discovery.d.ts +7 -6
- package/dist/packages/core/dist/discovery.js +19 -20
- package/dist/packages/core/dist/discovery.js.map +1 -1
- package/dist/packages/core/dist/edge.d.ts +1 -0
- package/dist/packages/core/dist/edge.js +1 -0
- package/dist/packages/core/dist/edge.js.map +1 -1
- package/dist/packages/core/dist/index.d.ts +3 -0
- package/dist/packages/core/dist/index.js +3 -0
- package/dist/packages/core/dist/index.js.map +1 -1
- package/dist/packages/core/dist/protocol.d.ts +24 -0
- package/dist/packages/core/dist/protocol.js +54 -0
- package/dist/packages/core/dist/protocol.js.map +1 -0
- package/dist/packages/core/dist/receipts.d.ts +1 -0
- package/dist/packages/core/dist/receipts.js +1 -1
- package/dist/packages/core/dist/receipts.js.map +1 -1
- package/dist/packages/core/dist/schema.d.ts +1 -0
- package/dist/packages/core/dist/schema.js +13 -2
- package/dist/packages/core/dist/schema.js.map +1 -1
- package/dist/packages/ledger/dist/index.d.ts +1 -1
- package/dist/packages/relay/dist/admission.d.ts +14 -0
- package/dist/packages/relay/dist/admission.js +70 -0
- package/dist/packages/relay/dist/admission.js.map +1 -0
- package/dist/packages/relay/dist/fetch.d.ts +8 -2
- package/dist/packages/relay/dist/fetch.js +41 -12
- package/dist/packages/relay/dist/fetch.js.map +1 -1
- package/dist/packages/relay/dist/index.d.ts +23 -12
- package/dist/packages/relay/dist/index.js +130 -78
- package/dist/packages/relay/dist/index.js.map +1 -1
- package/dist/packages/relay/dist/journal.d.ts +1 -1
- package/dist/packages/relay/dist/notifications.d.ts +1 -1
- package/dist/packages/relay/dist/retry.d.ts +23 -0
- package/dist/packages/relay/dist/retry.js +43 -1
- package/dist/packages/relay/dist/retry.js.map +1 -1
- package/dist/packages/relay/dist/ssrf.d.ts +3 -2
- package/dist/packages/relay/dist/ssrf.js.map +1 -1
- package/dist/packages/relay/dist/worker.js +1 -1
- package/dist/packages/relay/dist/worker.js.map +1 -1
- package/dist/packages/runtime/dist/a2a.d.ts +1 -1
- package/dist/packages/runtime/dist/a2a.js +1 -1
- package/dist/packages/runtime/dist/adapter.d.ts +2 -2
- package/dist/packages/runtime/dist/application-config.d.ts +20 -0
- package/dist/packages/runtime/dist/application-config.js +218 -0
- package/dist/packages/runtime/dist/application-config.js.map +1 -0
- package/dist/packages/runtime/dist/approval-providers.d.ts +24 -3
- package/dist/packages/runtime/dist/approval-providers.js +79 -3
- package/dist/packages/runtime/dist/approval-providers.js.map +1 -1
- package/dist/packages/runtime/dist/connection-admission-review.d.ts +39 -0
- package/dist/packages/runtime/dist/connection-admission-review.js +86 -0
- package/dist/packages/runtime/dist/connection-admission-review.js.map +1 -0
- package/dist/packages/runtime/dist/connection-persistence.d.ts +35 -0
- package/dist/packages/runtime/dist/connection-persistence.js +181 -0
- package/dist/packages/runtime/dist/connection-persistence.js.map +1 -0
- package/dist/packages/runtime/dist/connection-records.d.ts +167 -0
- package/dist/packages/runtime/dist/connection-records.js +132 -0
- package/dist/packages/runtime/dist/connection-records.js.map +1 -0
- package/dist/packages/runtime/dist/connection-router.d.ts +45 -0
- package/dist/packages/runtime/dist/connection-router.js +130 -0
- package/dist/packages/runtime/dist/connection-router.js.map +1 -0
- package/dist/packages/runtime/dist/connection-service.d.ts +159 -0
- package/dist/packages/runtime/dist/connection-service.js +239 -0
- package/dist/packages/runtime/dist/connection-service.js.map +1 -0
- package/dist/packages/runtime/dist/connection-transport.d.ts +14 -0
- package/dist/packages/runtime/dist/connection-transport.js +89 -0
- package/dist/packages/runtime/dist/connection-transport.js.map +1 -0
- package/dist/packages/runtime/dist/delivery-records.d.ts +180 -0
- package/dist/packages/runtime/dist/delivery-records.js +205 -0
- package/dist/packages/runtime/dist/delivery-records.js.map +1 -0
- package/dist/packages/runtime/dist/delivery-status-router.d.ts +27 -0
- package/dist/packages/runtime/dist/delivery-status-router.js +150 -0
- package/dist/packages/runtime/dist/delivery-status-router.js.map +1 -0
- package/dist/packages/runtime/dist/delivery-status.d.ts +43 -0
- package/dist/packages/runtime/dist/delivery-status.js +193 -0
- package/dist/packages/runtime/dist/delivery-status.js.map +1 -0
- package/dist/packages/runtime/dist/delivery-store.d.ts +125 -0
- package/dist/packages/runtime/dist/delivery-store.js +1047 -0
- package/dist/packages/runtime/dist/delivery-store.js.map +1 -0
- package/dist/packages/runtime/dist/gateway.d.ts +4 -3
- package/dist/packages/runtime/dist/gateway.js.map +1 -1
- package/dist/packages/runtime/dist/held-request-review.d.ts +49 -0
- package/dist/packages/runtime/dist/held-request-review.js +122 -0
- package/dist/packages/runtime/dist/held-request-review.js.map +1 -0
- package/dist/packages/runtime/dist/held-request-store.d.ts +112 -0
- package/dist/packages/runtime/dist/held-request-store.js +290 -0
- package/dist/packages/runtime/dist/held-request-store.js.map +1 -0
- package/dist/packages/runtime/dist/idempotency-store.d.ts +53 -0
- package/dist/packages/runtime/dist/idempotency-store.js +331 -0
- package/dist/packages/runtime/dist/idempotency-store.js.map +1 -0
- package/dist/packages/runtime/dist/inbox.d.ts +1 -1
- package/dist/packages/runtime/dist/index.d.ts +27 -1
- package/dist/packages/runtime/dist/index.js +26 -0
- package/dist/packages/runtime/dist/index.js.map +1 -1
- package/dist/packages/runtime/dist/invite-store.d.ts +76 -0
- package/dist/packages/runtime/dist/invite-store.js +337 -0
- package/dist/packages/runtime/dist/invite-store.js.map +1 -0
- package/dist/packages/runtime/dist/key-store.d.ts +77 -0
- package/dist/packages/runtime/dist/key-store.js +226 -0
- package/dist/packages/runtime/dist/key-store.js.map +1 -0
- package/dist/packages/runtime/dist/local-identity.d.ts +33 -0
- package/dist/packages/runtime/dist/local-identity.js +279 -0
- package/dist/packages/runtime/dist/local-identity.js.map +1 -0
- package/dist/packages/runtime/dist/mcp-rpc.d.ts +19 -0
- package/dist/packages/runtime/dist/mcp-rpc.js +175 -0
- package/dist/packages/runtime/dist/mcp-rpc.js.map +1 -0
- package/dist/packages/runtime/dist/mcp-server.d.ts +46 -19
- package/dist/packages/runtime/dist/mcp-server.js +427 -184
- package/dist/packages/runtime/dist/mcp-server.js.map +1 -1
- package/dist/packages/runtime/dist/mcp-tool-catalog.d.ts +1 -1
- package/dist/packages/runtime/dist/mcp-tool-catalog.js +172 -13
- package/dist/packages/runtime/dist/mcp-tool-catalog.js.map +1 -1
- package/dist/packages/runtime/dist/mcp.d.ts +2 -2
- package/dist/packages/runtime/dist/message-status.d.ts +32 -0
- package/dist/packages/runtime/dist/message-status.js +29 -0
- package/dist/packages/runtime/dist/message-status.js.map +1 -0
- package/dist/packages/runtime/dist/outbox.d.ts +91 -0
- package/dist/packages/runtime/dist/outbox.js +462 -0
- package/dist/packages/runtime/dist/outbox.js.map +1 -0
- package/dist/packages/runtime/dist/policy.d.ts +1 -1
- package/dist/packages/runtime/dist/protocol-peer-store.d.ts +40 -0
- package/dist/packages/runtime/dist/protocol-peer-store.js +176 -0
- package/dist/packages/runtime/dist/protocol-peer-store.js.map +1 -0
- package/dist/packages/runtime/dist/protocol-release.d.ts +26 -0
- package/dist/packages/runtime/dist/protocol-release.js +76 -0
- package/dist/packages/runtime/dist/protocol-release.js.map +1 -0
- package/dist/packages/runtime/dist/quota.d.ts +1 -1
- package/dist/packages/runtime/dist/relay-selection.d.ts +20 -0
- package/dist/packages/runtime/dist/relay-selection.js +34 -0
- package/dist/packages/runtime/dist/relay-selection.js.map +1 -0
- package/dist/packages/runtime/dist/requester-pending-store.d.ts +59 -0
- package/dist/packages/runtime/dist/requester-pending-store.js +266 -0
- package/dist/packages/runtime/dist/requester-pending-store.js.map +1 -0
- package/dist/packages/runtime/dist/secret-store.d.ts +19 -0
- package/dist/packages/runtime/dist/secret-store.js +51 -0
- package/dist/packages/runtime/dist/secret-store.js.map +1 -0
- package/dist/packages/runtime/dist/session-audit.d.ts +29 -7
- package/dist/packages/runtime/dist/session-audit.js +149 -29
- package/dist/packages/runtime/dist/session-audit.js.map +1 -1
- package/dist/packages/runtime/dist/session.d.ts +101 -9
- package/dist/packages/runtime/dist/session.js +696 -96
- package/dist/packages/runtime/dist/session.js.map +1 -1
- package/dist/packages/runtime/dist/task-journal.d.ts +18 -3
- package/dist/packages/runtime/dist/task-journal.js +271 -18
- package/dist/packages/runtime/dist/task-journal.js.map +1 -1
- package/dist/packages/runtime/dist/verifier.d.ts +3 -2
- package/dist/packages/runtime/dist/verifier.js +1 -0
- package/dist/packages/runtime/dist/verifier.js.map +1 -1
- package/dist/packages/runtime/dist/worker-trust-store.d.ts +111 -0
- package/dist/packages/runtime/dist/worker-trust-store.js +592 -0
- package/dist/packages/runtime/dist/worker-trust-store.js.map +1 -0
- package/dist/packages/sandbox/dist/container.d.ts +1 -1
- package/dist/packages/sandbox/dist/index.d.ts +1 -1
- package/dist/spec/README.ja.md +21 -1
- package/dist/spec/README.md +20 -1
- package/dist/spec/agent-card.schema.json +11 -1
- package/dist/spec/delivery-status.schema.json +106 -0
- package/dist/spec/examples/protocol-versions/sample-agent-card.json +35 -0
- package/dist/spec/examples/sample-delivery-status.json +21 -0
- package/dist/spec/examples/sample-task-manifest.0.1.0.json +173 -0
- package/dist/spec/examples/sample-task-manifest.0.2.0.json +173 -0
- package/dist/spec/task-manifest.0.1.0.schema.json +422 -0
- package/dist/spec/task-manifest.0.2.0.schema.json +422 -0
- package/dist/spec/task-manifest.schema.json +9 -418
- package/docs/sdk.ja.md +133 -0
- package/docs/sdk.md +138 -0
- 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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 (
|
|
15
|
-
|
|
16
|
-
flags.push('--
|
|
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:
|
|
27
|
-
jobs: card.payload.skills.flatMap(s => s.taskTypes ?? []),
|
|
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:
|
|
30
|
-
|
|
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":"AAaA,MAAM,UAAU,mBAAmB,CAAC,CAAiB;IACnD,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAC,WAAW,EAAC,gBAAgB,EAAC,iBAAiB;QAClG,cAAc,EAAC,gBAAgB,EAAC,2BAA2B,EAAC,eAAe,EAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACzG,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;QACvH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7H,MAAM,OAAO,GAAG,EAAE,cAAc,EAAE,
|
|
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 '
|
|
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":"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"}
|
|
@@ -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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"}
|