sealbridge 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +499 -31
- package/README.md +529 -110
- 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 +24 -0
- package/dist/cli/dist/error-messages.js.map +1 -1
- package/dist/cli/dist/index.js +54 -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/codex-config.d.ts +15 -0
- package/dist/packages/adapters/dist/codex-config.js +171 -0
- package/dist/packages/adapters/dist/codex-config.js.map +1 -0
- package/dist/packages/adapters/dist/command.d.ts +7 -3
- package/dist/packages/adapters/dist/command.js +74 -24
- package/dist/packages/adapters/dist/command.js.map +1 -1
- package/dist/packages/adapters/dist/credential-proxy.d.ts +4 -2
- package/dist/packages/adapters/dist/credential-proxy.js +5 -0
- package/dist/packages/adapters/dist/credential-proxy.js.map +1 -1
- 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/adapters/dist/windows-command.d.ts +6 -0
- package/dist/packages/adapters/dist/windows-command.js +37 -0
- package/dist/packages/adapters/dist/windows-command.js.map +1 -0
- 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 +222 -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 +278 -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/command-environment.d.ts +2 -0
- package/dist/packages/sandbox/dist/command-environment.js +29 -0
- package/dist/packages/sandbox/dist/command-environment.js.map +1 -0
- package/dist/packages/sandbox/dist/container.d.ts +1 -1
- package/dist/packages/sandbox/dist/index.d.ts +2 -1
- package/dist/packages/sandbox/dist/index.js +1 -0
- package/dist/packages/sandbox/dist/index.js.map +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
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
import { createServer } from 'node:http';
|
|
3
|
+
import { decodeAdmissionError } from './admission.js';
|
|
4
|
+
export { RelayAdmissionError, RelayDuplicateEnvelopeError, decodeAdmissionError } from './admission.js';
|
|
3
5
|
import { WebSocketServer, WebSocket } from 'ws';
|
|
4
6
|
import { verifyEnvelope, verifySigned, resolveDid, createRelayAuthToken, normalizeRelayOrigin, validateRelayEndpointUrl, } from '../../core/dist/index.js';
|
|
5
|
-
import {
|
|
7
|
+
import { InMemoryRelay, createRelayFetchHandler, mapRelayError, normalizeReceiveFilter, relayHttpHeaders, relayErrorBody, } from './fetch.js';
|
|
6
8
|
import { createPinnedRelayFetch, resolveAndValidateRelayEndpoint } from './ssrf.js';
|
|
7
9
|
export * from './fetch.js';
|
|
8
10
|
export * from './retry.js';
|
|
9
|
-
import { isTransientRelayError, relayRetryDelay, waitForRelayRetry, relayDeadline, relayDiagnostic } from './retry.js';
|
|
11
|
+
import { isTransientRelayError, relayRetryDelay, waitForRelayRetry, relayDeadline, relayDiagnostic, RelayHttpError, RelayAuthRecoveryExhaustedError, validateRelayAuthRecoveryOptions } from './retry.js';
|
|
10
12
|
export { createPinnedRelayFetch, resolveAndValidateRelayEndpoint } from './ssrf.js';
|
|
11
13
|
export { createSignedAgentCard, verifySignedAgentCard, findDiscoveredAgentCard, toA2AAgentCard, createInviteToken, parseAndVerifyInviteToken, } from '../../core/dist/index.js';
|
|
12
14
|
export async function startLocalRelay(options = {}) {
|
|
@@ -29,7 +31,7 @@ export async function startLocalRelay(options = {}) {
|
|
|
29
31
|
let size = 0;
|
|
30
32
|
for await (const chunk of request) {
|
|
31
33
|
size += chunk.length;
|
|
32
|
-
if (size >
|
|
34
|
+
if (size > relay.maxEnvelopeBytes)
|
|
33
35
|
throw new Error('BODY_TOO_LARGE');
|
|
34
36
|
chunks.push(chunk);
|
|
35
37
|
}
|
|
@@ -161,7 +163,7 @@ export async function startLocalRelay(options = {}) {
|
|
|
161
163
|
throw new Error('INVALID_REQUEST');
|
|
162
164
|
}
|
|
163
165
|
catch (e) {
|
|
164
|
-
socket.send(JSON.stringify({ ok: false,
|
|
166
|
+
socket.send(JSON.stringify({ ok: false, ...relayErrorBody(e) }));
|
|
165
167
|
}
|
|
166
168
|
});
|
|
167
169
|
});
|
|
@@ -211,6 +213,10 @@ class RelayCredentials {
|
|
|
211
213
|
this.recipientKeys.set(key.did, key);
|
|
212
214
|
return this;
|
|
213
215
|
}
|
|
216
|
+
requireAuth(did) {
|
|
217
|
+
if (!this.recipientKeys.has(did) && typeof this.authSource !== 'function' && this.authSource?.did !== did)
|
|
218
|
+
throw new Error('RELAY_AUTH_REQUIRED');
|
|
219
|
+
}
|
|
214
220
|
async authToken(did, action) {
|
|
215
221
|
const origin = normalizeRelayOrigin(this.relayUrl);
|
|
216
222
|
const key = this.recipientKeys.get(did);
|
|
@@ -252,7 +258,19 @@ function splitRelayArgs(second, third, fourth) {
|
|
|
252
258
|
}
|
|
253
259
|
export class HttpRelayClient extends RelayCredentials {
|
|
254
260
|
url;
|
|
261
|
+
managesRequestDeadlines = true;
|
|
262
|
+
connectionStatus = 'stopped';
|
|
263
|
+
// Concurrent failures of the same protected operation/identity share a bound,
|
|
264
|
+
// never a response. Unrelated successful requests cannot clear an active episode.
|
|
265
|
+
authRecoveries = new Map();
|
|
255
266
|
statusPins = new Map();
|
|
267
|
+
getDeliveryStatusPin(envelopeId) { return this.statusPins.get(envelopeId); }
|
|
268
|
+
restoreDeliveryStatusPin(envelopeId, relayDid) {
|
|
269
|
+
resolveDid(relayDid);
|
|
270
|
+
if (this.statusPins.size >= 16384)
|
|
271
|
+
this.statusPins.delete(this.statusPins.keys().next().value);
|
|
272
|
+
this.statusPins.set(envelopeId, relayDid);
|
|
273
|
+
}
|
|
256
274
|
buffered = new Map();
|
|
257
275
|
delivered = new Map();
|
|
258
276
|
baseFetcher;
|
|
@@ -265,6 +283,7 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
265
283
|
this.url = url;
|
|
266
284
|
this.baseFetcher = parsed.fetcher;
|
|
267
285
|
this.security = parsed.security;
|
|
286
|
+
validateRelayAuthRecoveryOptions(this.security);
|
|
268
287
|
this.fetcher = ((input, init) => this.dispatch(input, init));
|
|
269
288
|
}
|
|
270
289
|
async dispatch(input, init) {
|
|
@@ -291,6 +310,80 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
291
310
|
return this.baseFetcher;
|
|
292
311
|
return createPinnedRelayFetch(resolved, this.security);
|
|
293
312
|
}
|
|
313
|
+
async authenticatedRequest(did, action, operation, input, init, consume, signal, acceptedStatuses = []) {
|
|
314
|
+
const maxAttempts = this.security.maxAuthRecoveryAttempts ?? 3;
|
|
315
|
+
const windowMs = this.security.authRecoveryTimeoutMs ?? 120_000;
|
|
316
|
+
const key = did + '\0' + operation;
|
|
317
|
+
let episode;
|
|
318
|
+
const exhausted = () => new RelayAuthRecoveryExhaustedError(operation, episode.attempts, Math.round(performance.now() - episode.started));
|
|
319
|
+
try {
|
|
320
|
+
for (;;) {
|
|
321
|
+
signal?.throwIfAborted();
|
|
322
|
+
if (episode) {
|
|
323
|
+
const remaining = windowMs - (performance.now() - episode.started);
|
|
324
|
+
if (episode.attempts >= maxAttempts || remaining <= 0)
|
|
325
|
+
throw exhausted();
|
|
326
|
+
this.connectionStatus = 'reconnecting';
|
|
327
|
+
console.warn('Relay authentication retry ' + (episode.attempts + 1) + '/' + maxAttempts);
|
|
328
|
+
await waitForRelayRetry(Math.min(relayRetryDelay(episode.attempts), remaining), signal);
|
|
329
|
+
signal?.throwIfAborted();
|
|
330
|
+
if (episode.attempts >= maxAttempts || performance.now() - episode.started >= windowMs)
|
|
331
|
+
throw exhausted();
|
|
332
|
+
episode.attempts++;
|
|
333
|
+
}
|
|
334
|
+
const timeout = Math.min(this.security.requestTimeoutMs ?? 45_000, episode ? windowMs - (performance.now() - episode.started) : Infinity);
|
|
335
|
+
const controller = new AbortController();
|
|
336
|
+
const requestSignal = signal ? AbortSignal.any([signal, controller.signal]) : controller.signal;
|
|
337
|
+
try {
|
|
338
|
+
const value = await relayDeadline((async () => {
|
|
339
|
+
this.requireAuth(did);
|
|
340
|
+
const transport = await this.prepare();
|
|
341
|
+
requestSignal.throwIfAborted();
|
|
342
|
+
// Sign after preparation and backoff, immediately before dispatch.
|
|
343
|
+
const token = await this.authToken(did, action);
|
|
344
|
+
requestSignal.throwIfAborted();
|
|
345
|
+
const headers = new Headers(init.headers);
|
|
346
|
+
headers.set('authorization', 'Bearer ' + token);
|
|
347
|
+
const response = await transport(input, { ...init, headers, signal: requestSignal });
|
|
348
|
+
if (requestSignal.aborted || (!response.ok && !acceptedStatuses.includes(response.status))) {
|
|
349
|
+
void response.body?.cancel().catch(() => { });
|
|
350
|
+
requestSignal.throwIfAborted();
|
|
351
|
+
throw new RelayHttpError(response.status, operation);
|
|
352
|
+
}
|
|
353
|
+
return consume(response);
|
|
354
|
+
})(), timeout, requestSignal);
|
|
355
|
+
this.connectionStatus = 'connected';
|
|
356
|
+
return value;
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
controller.abort(error);
|
|
360
|
+
signal?.throwIfAborted();
|
|
361
|
+
if (error instanceof RelayHttpError && error.status === 401) {
|
|
362
|
+
if (maxAttempts === 0)
|
|
363
|
+
throw error;
|
|
364
|
+
if (!episode) {
|
|
365
|
+
episode = this.authRecoveries.get(key) ?? { started: performance.now(), attempts: 0, users: 0 };
|
|
366
|
+
episode.users++;
|
|
367
|
+
this.authRecoveries.set(key, episode);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else if (!episode || !isTransientRelayError(error))
|
|
371
|
+
throw error;
|
|
372
|
+
// Transient failures during recovery consume the same attempt/window
|
|
373
|
+
// budget; the outer poll/SSE supervisor must not start another episode.
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
catch (error) {
|
|
378
|
+
if (error instanceof RelayAuthRecoveryExhaustedError || error instanceof RelayHttpError)
|
|
379
|
+
this.connectionStatus = 'unavailable';
|
|
380
|
+
throw error;
|
|
381
|
+
}
|
|
382
|
+
finally {
|
|
383
|
+
if (episode && --episode.users === 0)
|
|
384
|
+
this.authRecoveries.delete(key);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
294
387
|
async send(envelope) {
|
|
295
388
|
const result = await this.fetcher(this.url + '/envelopes', {
|
|
296
389
|
method: 'POST',
|
|
@@ -298,8 +391,7 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
298
391
|
headers: { 'content-type': 'application/json' },
|
|
299
392
|
});
|
|
300
393
|
if (!result.ok) {
|
|
301
|
-
await result
|
|
302
|
-
throw new Error('RELAY_REJECTED: ' + result.status);
|
|
394
|
+
throw await decodeAdmissionError(result);
|
|
303
395
|
}
|
|
304
396
|
const relayDid = result.headers.get('x-acp-relay-did');
|
|
305
397
|
if (relayDid) {
|
|
@@ -309,29 +401,23 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
309
401
|
}
|
|
310
402
|
}
|
|
311
403
|
/** Register an operator-configured channel; null unregisters it. Startup still drains the normal inbox. */
|
|
312
|
-
async registerWake(recipientDid, channel) {
|
|
404
|
+
async registerWake(recipientDid, channel, signal) {
|
|
313
405
|
for (let attempt = 0;; attempt++) {
|
|
314
|
-
const timeout = this.security.requestTimeoutMs ?? 45_000;
|
|
315
406
|
try {
|
|
316
|
-
return await
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
});
|
|
321
|
-
if (!r.ok) {
|
|
322
|
-
await r.body?.cancel();
|
|
323
|
-
throw new Error('RELAY_REGISTRATION_REJECTED: ' + r.status);
|
|
324
|
-
}
|
|
407
|
+
return await this.authenticatedRequest(recipientDid, 'receive', 'wake', this.url + '/wake?recipient=' + encodeURIComponent(recipientDid), {
|
|
408
|
+
method: 'POST', body: JSON.stringify({ channel }),
|
|
409
|
+
headers: { 'content-type': 'application/json' },
|
|
410
|
+
}, async (r) => {
|
|
325
411
|
const value = await r.json();
|
|
326
412
|
resolveDid(value.relayDid);
|
|
327
413
|
return value.relayDid;
|
|
328
|
-
}
|
|
414
|
+
}, signal);
|
|
329
415
|
}
|
|
330
416
|
catch (error) {
|
|
331
417
|
if (attempt >= 4 || !isTransientRelayError(error))
|
|
332
418
|
throw error;
|
|
333
419
|
console.warn('Relay wake registration retry ' + (attempt + 1));
|
|
334
|
-
await waitForRelayRetry(relayRetryDelay(attempt));
|
|
420
|
+
await waitForRelayRetry(relayRetryDelay(attempt), signal);
|
|
335
421
|
}
|
|
336
422
|
}
|
|
337
423
|
}
|
|
@@ -341,17 +427,8 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
341
427
|
// Old relays do not advertise signed delivery status support.
|
|
342
428
|
if (!relayDid)
|
|
343
429
|
return;
|
|
344
|
-
const timeout = this.security.requestTimeoutMs ?? 45_000;
|
|
345
430
|
const params = new URLSearchParams({ recipient: p.recipientDid, sender: p.senderDid, envelopeId: p.envelopeId });
|
|
346
|
-
return
|
|
347
|
-
const r = await this.fetcher(this.url + '/delivery-status?' + params, {
|
|
348
|
-
signal: AbortSignal.any([AbortSignal.timeout(timeout), ...(signal ? [signal] : [])]),
|
|
349
|
-
headers: { authorization: 'Bearer ' + await this.authToken(p.senderDid, 'receive') },
|
|
350
|
-
});
|
|
351
|
-
if (!r.ok) {
|
|
352
|
-
await r.body?.cancel();
|
|
353
|
-
throw new Error('RELAY_REJECTED: ' + r.status);
|
|
354
|
-
}
|
|
431
|
+
return this.authenticatedRequest(p.senderDid, 'receive', 'delivery-status', this.url + '/delivery-status?' + params, {}, async (r) => {
|
|
355
432
|
const notice = await r.json();
|
|
356
433
|
const value = notice.payload;
|
|
357
434
|
if (!verifySigned(notice, relayDid) || value.type !== 'RelayDeliveryStatus' ||
|
|
@@ -365,7 +442,7 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
365
442
|
if (value.state !== 'pending')
|
|
366
443
|
this.statusPins.delete(p.envelopeId);
|
|
367
444
|
return notice;
|
|
368
|
-
}
|
|
445
|
+
}, signal);
|
|
369
446
|
}
|
|
370
447
|
async register(card) {
|
|
371
448
|
for (let attempt = 0;; attempt++) {
|
|
@@ -429,33 +506,25 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
429
506
|
params.set('peek', 'true');
|
|
430
507
|
else if (normalized.lease)
|
|
431
508
|
params.set('lease', 'true');
|
|
432
|
-
const
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
}
|
|
442
|
-
const body = (await r.json());
|
|
443
|
-
let values = 'envelopes' in body ? body.envelopes : [body];
|
|
444
|
-
if (!Array.isArray(values) || values.some((e) => !verifyEnvelope(e, recipientDid)))
|
|
445
|
-
throw new Error('RELAY_TAMPERING_DETECTED');
|
|
509
|
+
const values = await this.authenticatedRequest(recipientDid, 'receive', normalized.peek ? 'peek' : 'receive', this.url + '/envelopes?' + params.toString(), {}, async (r) => {
|
|
510
|
+
if (r.status === 204)
|
|
511
|
+
return [];
|
|
512
|
+
const body = (await r.json());
|
|
513
|
+
const envelopes = 'envelopes' in body ? body.envelopes : [body];
|
|
514
|
+
if (!Array.isArray(envelopes) || envelopes.some(e => !verifyEnvelope(e, recipientDid)))
|
|
515
|
+
throw new Error('RELAY_TAMPERING_DETECTED');
|
|
516
|
+
return envelopes;
|
|
517
|
+
}, signal);
|
|
446
518
|
if (normalized.peek)
|
|
447
519
|
return values[0];
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
}
|
|
455
|
-
this.buffered.set(bufferKey, values);
|
|
456
|
-
return values.shift();
|
|
520
|
+
const fresh = [];
|
|
521
|
+
for (const envelope of values)
|
|
522
|
+
if (!normalized.lease || await this.rememberDelivery(recipientDid, envelope, signal))
|
|
523
|
+
fresh.push(envelope);
|
|
524
|
+
this.buffered.set(bufferKey, fresh);
|
|
525
|
+
return fresh.shift();
|
|
457
526
|
}
|
|
458
|
-
async rememberDelivery(recipientDid, envelope) {
|
|
527
|
+
async rememberDelivery(recipientDid, envelope, signal) {
|
|
459
528
|
const now = Date.now();
|
|
460
529
|
for (const [id, entry] of this.delivered)
|
|
461
530
|
if (entry.expires <= now)
|
|
@@ -465,7 +534,7 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
465
534
|
if (prior) {
|
|
466
535
|
if (prior.acknowledged) {
|
|
467
536
|
try {
|
|
468
|
-
await this.acknowledgeDelivery(recipientDid, envelope.payload.envelopeId);
|
|
537
|
+
await this.acknowledgeDelivery(recipientDid, envelope.payload.envelopeId, signal);
|
|
469
538
|
}
|
|
470
539
|
catch (error) {
|
|
471
540
|
if (!isTransientRelayError(error))
|
|
@@ -479,20 +548,14 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
479
548
|
this.delivered.set(id, { expires: now + 10 * 60_000, acknowledged: false });
|
|
480
549
|
return true;
|
|
481
550
|
}
|
|
482
|
-
async acknowledgeDelivery(recipientDid, envelopeId) {
|
|
551
|
+
async acknowledgeDelivery(recipientDid, envelopeId, signal) {
|
|
483
552
|
const entry = this.delivered.get(recipientDid + ':' + envelopeId);
|
|
484
553
|
if (!entry)
|
|
485
554
|
return;
|
|
486
555
|
// Processing has completed even if the DELETE response is lost. Redelivery retries the ack.
|
|
487
556
|
entry.acknowledged = true;
|
|
488
|
-
|
|
489
|
-
'?recipient=' + encodeURIComponent(recipientDid), {
|
|
490
|
-
method: 'DELETE',
|
|
491
|
-
headers: { authorization: 'Bearer ' + await this.authToken(recipientDid, 'receive') },
|
|
492
|
-
});
|
|
493
|
-
await r.arrayBuffer();
|
|
494
|
-
if (!r.ok && r.status !== 404)
|
|
495
|
-
throw new Error('RELAY_REJECTED: ' + r.status);
|
|
557
|
+
await this.authenticatedRequest(recipientDid, 'receive', 'acknowledge', this.url + '/envelopes/' + encodeURIComponent(envelopeId) +
|
|
558
|
+
'?recipient=' + encodeURIComponent(recipientDid), { method: 'DELETE' }, async (r) => { await r.arrayBuffer(); }, signal, [404]);
|
|
496
559
|
}
|
|
497
560
|
async peek(recipientDid, filter) {
|
|
498
561
|
return this.receive(recipientDid, undefined, undefined, { ...filter, peek: true });
|
|
@@ -503,7 +566,6 @@ export class HttpRelayClient extends RelayCredentials {
|
|
|
503
566
|
}
|
|
504
567
|
/** Persistent SSE transport. Leased frames remain on the relay until explicitly acknowledged. */
|
|
505
568
|
export class SseRelayClient extends HttpRelayClient {
|
|
506
|
-
connectionStatus = 'stopped';
|
|
507
569
|
maxBufferBytes = 2 * 1024 * 1024;
|
|
508
570
|
streams = new Map();
|
|
509
571
|
async receive(recipientDid, waitMs = 30000, signal, filter) {
|
|
@@ -612,20 +674,10 @@ export class SseRelayClient extends HttpRelayClient {
|
|
|
612
674
|
signal?.addEventListener('abort', stopped, { once: true });
|
|
613
675
|
if (signal?.aborted)
|
|
614
676
|
stopped();
|
|
615
|
-
|
|
616
|
-
let timer = setTimeout(() => controller.abort(new Error('RELAY_IDLE_TIMEOUT')), connectTimeout);
|
|
677
|
+
let timer;
|
|
617
678
|
let reader;
|
|
618
679
|
try {
|
|
619
|
-
|
|
620
|
-
const r = await relayDeadline(this.fetcher(this.url + '/stream?' + params, {
|
|
621
|
-
signal: controller.signal,
|
|
622
|
-
headers: { authorization: 'Bearer ' + (await this.authToken(recipientDid, 'stream')) },
|
|
623
|
-
}), connectTimeout, controller.signal);
|
|
624
|
-
clearTimeout(timer);
|
|
625
|
-
if (!r.ok) {
|
|
626
|
-
await r.body?.cancel();
|
|
627
|
-
throw new Error('RELAY_REJECTED: ' + r.status);
|
|
628
|
-
}
|
|
680
|
+
const r = await this.authenticatedRequest(recipientDid, 'stream', 'stream', this.url + '/stream?' + params, {}, async (response) => response, controller.signal);
|
|
629
681
|
if (!r.body)
|
|
630
682
|
throw new Error('SSE_CLOSED');
|
|
631
683
|
this.connectionStatus = 'connected';
|
|
@@ -652,7 +704,7 @@ export class SseRelayClient extends HttpRelayClient {
|
|
|
652
704
|
const e = JSON.parse(data);
|
|
653
705
|
if (!verifyEnvelope(e, recipientDid))
|
|
654
706
|
throw new Error('RELAY_TAMPERING_DETECTED');
|
|
655
|
-
if (!await this.rememberDelivery(recipientDid, e))
|
|
707
|
+
if (!await this.rememberDelivery(recipientDid, e, controller.signal))
|
|
656
708
|
continue;
|
|
657
709
|
yield e;
|
|
658
710
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,29 @@ export declare class RelayTimeoutError extends Error {
|
|
|
2
2
|
readonly code = "ETIMEDOUT";
|
|
3
3
|
constructor();
|
|
4
4
|
}
|
|
5
|
+
export interface RelayAuthRecoveryOptions {
|
|
6
|
+
/** Additional authenticated attempts after a 401. Zero restores fail-fast behavior. */
|
|
7
|
+
maxAuthRecoveryAttempts?: number;
|
|
8
|
+
/** Monotonic elapsed time allowed after the first 401. */
|
|
9
|
+
authRecoveryTimeoutMs?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function validateRelayAuthRecoveryOptions(options: RelayAuthRecoveryOptions): void;
|
|
12
|
+
export type RelayAuthOperation = 'receive' | 'stream' | 'peek' | 'delivery-status' | 'wake' | 'acknowledge';
|
|
13
|
+
/** Status-only diagnostics: never retain the response body or credentials. */
|
|
14
|
+
export declare class RelayHttpError extends Error {
|
|
15
|
+
readonly status: number;
|
|
16
|
+
readonly operation: RelayAuthOperation;
|
|
17
|
+
readonly code = "RELAY_REJECTED";
|
|
18
|
+
constructor(status: number, operation: RelayAuthOperation);
|
|
19
|
+
}
|
|
20
|
+
export declare class RelayAuthRecoveryExhaustedError extends Error {
|
|
21
|
+
readonly operation: RelayAuthOperation;
|
|
22
|
+
readonly attempts: number;
|
|
23
|
+
readonly elapsedMs: number;
|
|
24
|
+
readonly code = "RELAY_AUTH_RECOVERY_EXHAUSTED";
|
|
25
|
+
readonly status = 401;
|
|
26
|
+
constructor(operation: RelayAuthOperation, attempts: number, elapsedMs: number);
|
|
27
|
+
}
|
|
5
28
|
export declare function isTransientRelayError(error: unknown): boolean;
|
|
6
29
|
export type RelayConnectionStatus = 'connected' | 'reconnecting' | 'unavailable' | 'stopped';
|
|
7
30
|
/** Never include an HTTP response body or arbitrary transport text in diagnostics. */
|
|
@@ -3,11 +3,43 @@ export class RelayTimeoutError extends Error {
|
|
|
3
3
|
code = 'ETIMEDOUT';
|
|
4
4
|
constructor() { super('RELAY_REQUEST_TIMEOUT'); this.name = 'RelayTimeoutError'; }
|
|
5
5
|
}
|
|
6
|
+
export function validateRelayAuthRecoveryOptions(options) {
|
|
7
|
+
const attempts = options.maxAuthRecoveryAttempts ?? 3;
|
|
8
|
+
const timeout = options.authRecoveryTimeoutMs ?? 120_000;
|
|
9
|
+
if (!Number.isSafeInteger(attempts) || attempts < 0 || attempts > 2_147_483_647)
|
|
10
|
+
throw new Error('INVALID_RELAY_AUTH_RETRIES');
|
|
11
|
+
if (!Number.isSafeInteger(timeout) || timeout <= 0 || timeout > 2_147_483_647)
|
|
12
|
+
throw new Error('INVALID_RELAY_AUTH_RECOVERY_TIMEOUT_MS');
|
|
13
|
+
}
|
|
14
|
+
/** Status-only diagnostics: never retain the response body or credentials. */
|
|
15
|
+
export class RelayHttpError extends Error {
|
|
16
|
+
status;
|
|
17
|
+
operation;
|
|
18
|
+
code = 'RELAY_REJECTED';
|
|
19
|
+
constructor(status, operation) {
|
|
20
|
+
super('RELAY_REJECTED: ' + status);
|
|
21
|
+
this.status = status;
|
|
22
|
+
this.operation = operation;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class RelayAuthRecoveryExhaustedError extends Error {
|
|
26
|
+
operation;
|
|
27
|
+
attempts;
|
|
28
|
+
elapsedMs;
|
|
29
|
+
code = 'RELAY_AUTH_RECOVERY_EXHAUSTED';
|
|
30
|
+
status = 401;
|
|
31
|
+
constructor(operation, attempts, elapsedMs) {
|
|
32
|
+
super('RELAY_AUTH_RECOVERY_EXHAUSTED: Check that the system clock is synchronized and the key matches the registered DID.');
|
|
33
|
+
this.operation = operation;
|
|
34
|
+
this.attempts = attempts;
|
|
35
|
+
this.elapsedMs = elapsedMs;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
6
38
|
export function isTransientRelayError(error) {
|
|
7
39
|
const causes = [];
|
|
8
40
|
for (let current = error; current instanceof Error && !causes.includes(current) && causes.length < 16; current = current.cause)
|
|
9
41
|
causes.push(current);
|
|
10
|
-
if (causes.some(e => /^(?:RELAY_(?:REGISTRATION_)?REJECTED:\s*(?:401|403)\b|RELAY_TAMPERING_DETECTED)/.test(e.message)))
|
|
42
|
+
if (causes.some(e => /^(?:RELAY_(?:REGISTRATION_)?REJECTED:\s*(?:401|403)\b|RELAY_AUTH_RECOVERY_EXHAUSTED\b|RELAY_TAMPERING_DETECTED)/.test(e.message)))
|
|
11
43
|
return false;
|
|
12
44
|
return causes.some(e => e.name === 'TimeoutError' ||
|
|
13
45
|
['ETIMEDOUT', 'ECONNRESET', 'EAI_AGAIN', 'ECONNREFUSED', 'EPIPE', 'ENETUNREACH', 'EHOSTUNREACH']
|
|
@@ -19,6 +51,16 @@ export function isTransientRelayError(error) {
|
|
|
19
51
|
}
|
|
20
52
|
/** Never include an HTTP response body or arbitrary transport text in diagnostics. */
|
|
21
53
|
export function relayDiagnostic(error) {
|
|
54
|
+
const seen = new Set();
|
|
55
|
+
for (let current = error; current instanceof Error && !seen.has(current) && seen.size < 16; current = current.cause) {
|
|
56
|
+
seen.add(current);
|
|
57
|
+
if ('code' in current && current.code === 'RELAY_AUTH_RECOVERY_EXHAUSTED') {
|
|
58
|
+
const detail = current;
|
|
59
|
+
const operation = ['receive', 'stream', 'peek', 'delivery-status', 'wake', 'acknowledge'].includes(detail.operation)
|
|
60
|
+
? detail.operation : 'receive';
|
|
61
|
+
return new RelayAuthRecoveryExhaustedError(operation, Number.isSafeInteger(detail.attempts) && detail.attempts >= 0 ? detail.attempts : 0, Number.isSafeInteger(detail.elapsedMs) && detail.elapsedMs >= 0 ? detail.elapsedMs : 0);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
22
64
|
const message = error instanceof Error ? error.message : '';
|
|
23
65
|
const status = /^RELAY_(?:REGISTRATION_)?REJECTED:\s*(\d{3})\b/.exec(message)?.[1];
|
|
24
66
|
const code = /^(?:RELAY_[A-Z_]+|SSE_[A-Z_]+|SSRF_BLOCKED_RELAY_URL)$/.test(message)
|