@privos_ai/app-server 0.6.2 → 0.7.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/dist/index.d.ts CHANGED
@@ -18,17 +18,23 @@ export { createDirectRouter } from './direct/express-router.js';
18
18
  export type { DirectRouterOptions } from './direct/express-router.js';
19
19
  export { createHttpIngressApp, startHttpIngress, resolveHttpIngressListen, } from './direct/http-ingress.js';
20
20
  export type { HttpIngressAppOptions, HttpIngressListenOptions, HttpIngressHandle, ReadinessCheckResult, ResolveHttpIngressListenOptions, } from './direct/http-ingress.js';
21
- export { pairOverWebSocket, pairFromDescriptor, connectRelay, } from './relay/relay-client.js';
21
+ export { pairOverWebSocket, pairAndAwaitApproval, pairFromDescriptor, connectRelay, } from './relay/relay-client.js';
22
22
  export type { PairAppMeta, PairingResult, PairOverWebSocketOptions, RelayClientOptions, RelayHandle, } from './relay/relay-client.js';
23
23
  export { rawDataToText, MessageTooLargeError } from './relay/message-adapter.js';
24
24
  export { DEFAULT_HUB_USER_TOKEN_JWKS_PATH, buildHubUserTokenAuthOptions, extractRelayUserTokenCredential, validateHubUserTokenOrigin, } from './relay/hub-user-token-actor.js';
25
25
  export type { HubUserTokenAuthOptions } from './relay/hub-user-token-actor.js';
26
26
  export { DEFAULT_STANDALONE_IDENTITY_FILE, StandaloneIdentityError, loadStandaloneIdentity, saveStandaloneIdentity, rotateStandaloneIdentity, standaloneIdentityFileExists, standaloneHubFingerprint, assertStandaloneIdentityShape, } from './relay/standalone-identity.js';
27
27
  export type { StandaloneIdentityV2, LoadedStandaloneIdentity, StandaloneIdentityErrorCode, } from './relay/standalone-identity.js';
28
- export { STANDALONE_SECRET_ROTATE_METHOD, STANDALONE_TRUST_ROTATE_METHOD, STANDALONE_CAPABILITIES_CHANGED_METHOD, StandaloneControlError, isStandaloneControlMethod, createStandaloneRelayIdentityController, loadStandaloneRelayIdentityController, } from './relay/standalone-control.js';
28
+ export { STANDALONE_SECRET_ROTATE_METHOD, STANDALONE_TRUST_ROTATE_METHOD, STANDALONE_CAPABILITIES_CHANGED_METHOD, STANDALONE_AGENT_BOT_CREDENTIAL_METHOD, StandaloneControlError, isStandaloneControlMethod, createStandaloneRelayIdentityController, loadStandaloneRelayIdentityController, } from './relay/standalone-control.js';
29
29
  export type { StandaloneEffectiveCapabilities, StandaloneRelayIdentityController, StandaloneRelayIdentityControllerOptions, } from './relay/standalone-control.js';
30
30
  export { checkManifestDigestDrift, createStandaloneReadinessCheck, } from './relay/standalone-readiness.js';
31
31
  export type { StandaloneReadinessCheckOptions, StandaloneReadinessReason, StandaloneReadinessResult, } from './relay/standalone-readiness.js';
32
+ export { AGENT_BOT_CREDENTIAL_ENV_KEY, AGENT_BOT_USER_ID_ENV_KEY, AGENT_BOT_CREDENTIAL_OPERATOR_INSTRUCTION, readAgentBotCredential, getAgentBotCredentialState, setAdoptedAgentBotCredential, markAgentBotCredentialLive, markAgentBotCredentialRejected, resetAgentBotCredentialOutcomeForTests, } from './relay/agent-bot-credential.js';
33
+ export type { AgentBotCredential, AgentBotCredentialState } from './relay/agent-bot-credential.js';
34
+ export { createAgentBotHubClient, createAgentBotHubClientFromWorkloadIdentity, createAgentBotHubClientFromHubOrigin, AgentBotCredentialAbsentError, AgentBotHubUnreachableError, } from './relay/hub-rest-as-bot-client.js';
35
+ export type { RoomBoundHubClient, RoomBoundHubFetchInit, AgentBotHubClientOptions, } from './relay/hub-rest-as-bot-client.js';
36
+ export { serveApp, DEFAULT_SERVE_APP_PORT } from './serve-app.js';
37
+ export type { ServeAppOptions, ServeAppHandle, ServeAppHandlerContext, ServeAppTransportOverride, ServeAppTestSeams, } from './serve-app.js';
32
38
  export { resolveRuntimeMode, RuntimeModeError } from './runtime-mode.js';
33
39
  export type { RuntimeMode, RuntimeModeResolution, RuntimeModeErrorCode, ResolveRuntimeModeOptions, } from './runtime-mode.js';
34
40
  export { DEFAULT_WORKLOAD_SOCKET, WorkloadIdentityClient, WorkloadIdentityError, WorkloadPermissionDeniedError, RoomBoundWorkloadClient, getWorkloadIdentityClient, } from './workload/workload-identity.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,12 +9,15 @@ export { parseJsonRpcMessage, parseJsonText, isMcpNotificationMethod, } from './
9
9
  export { AppServerRuntime, DEFAULT_MAX_MESSAGE_BYTES, DEFAULT_MAX_BUFFERED_BYTES, encodeInFlightId, extractDirectCallerCredential, relayCallerAuthSurface, resolveCallerCredential, ephemeralSessionScope, } from './runtime.js';
10
10
  export { createDirectRouter } from './direct/express-router.js';
11
11
  export { createHttpIngressApp, startHttpIngress, resolveHttpIngressListen, } from './direct/http-ingress.js';
12
- export { pairOverWebSocket, pairFromDescriptor, connectRelay, } from './relay/relay-client.js';
12
+ export { pairOverWebSocket, pairAndAwaitApproval, pairFromDescriptor, connectRelay, } from './relay/relay-client.js';
13
13
  export { rawDataToText, MessageTooLargeError } from './relay/message-adapter.js';
14
14
  export { DEFAULT_HUB_USER_TOKEN_JWKS_PATH, buildHubUserTokenAuthOptions, extractRelayUserTokenCredential, validateHubUserTokenOrigin, } from './relay/hub-user-token-actor.js';
15
15
  export { DEFAULT_STANDALONE_IDENTITY_FILE, StandaloneIdentityError, loadStandaloneIdentity, saveStandaloneIdentity, rotateStandaloneIdentity, standaloneIdentityFileExists, standaloneHubFingerprint, assertStandaloneIdentityShape, } from './relay/standalone-identity.js';
16
- export { STANDALONE_SECRET_ROTATE_METHOD, STANDALONE_TRUST_ROTATE_METHOD, STANDALONE_CAPABILITIES_CHANGED_METHOD, StandaloneControlError, isStandaloneControlMethod, createStandaloneRelayIdentityController, loadStandaloneRelayIdentityController, } from './relay/standalone-control.js';
16
+ export { STANDALONE_SECRET_ROTATE_METHOD, STANDALONE_TRUST_ROTATE_METHOD, STANDALONE_CAPABILITIES_CHANGED_METHOD, STANDALONE_AGENT_BOT_CREDENTIAL_METHOD, StandaloneControlError, isStandaloneControlMethod, createStandaloneRelayIdentityController, loadStandaloneRelayIdentityController, } from './relay/standalone-control.js';
17
17
  export { checkManifestDigestDrift, createStandaloneReadinessCheck, } from './relay/standalone-readiness.js';
18
+ export { AGENT_BOT_CREDENTIAL_ENV_KEY, AGENT_BOT_USER_ID_ENV_KEY, AGENT_BOT_CREDENTIAL_OPERATOR_INSTRUCTION, readAgentBotCredential, getAgentBotCredentialState, setAdoptedAgentBotCredential, markAgentBotCredentialLive, markAgentBotCredentialRejected, resetAgentBotCredentialOutcomeForTests, } from './relay/agent-bot-credential.js';
19
+ export { createAgentBotHubClient, createAgentBotHubClientFromWorkloadIdentity, createAgentBotHubClientFromHubOrigin, AgentBotCredentialAbsentError, AgentBotHubUnreachableError, } from './relay/hub-rest-as-bot-client.js';
20
+ export { serveApp, DEFAULT_SERVE_APP_PORT } from './serve-app.js';
18
21
  export { resolveRuntimeMode, RuntimeModeError } from './runtime-mode.js';
19
22
  export { DEFAULT_WORKLOAD_SOCKET, WorkloadIdentityClient, WorkloadIdentityError, WorkloadPermissionDeniedError, RoomBoundWorkloadClient, getWorkloadIdentityClient, } from './workload/workload-identity.js';
20
23
  export { BoundedRuntimeDispatchReplayConsumerV3, assertRuntimeDispatchRelayAffinityV3, assertRuntimeDispatchTrustConfigurationV3, extractRuntimeDispatchRelayEnvelopeV3, isExactRuntimeReadinessRpcV3, isUnsignedRuntimeReadinessRpcV3, parseRuntimeDispatchTrustV3Json, sha256RuntimeDispatchBodyV3, verifyClusterDispatchAssertionV3, verifyDispatchAssertion, verifyRuntimeDispatchAssertionV3, } from './workload/dispatch-assertion.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQxE,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,GAC7B,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,GAC1B,MAAM,kCAAkC,CAAC;AAO1C,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,cAAc,GACd,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EACN,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,oBAAoB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,mBAAmB,EACnB,aAAa,EACb,uBAAuB,GACvB,MAAM,wBAAwB,CAAC;AAahC,OAAO,EACN,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,GACxB,MAAM,0BAA0B,CAAC;AASlC,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,GACZ,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EACN,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,0BAA0B,GAC1B,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACN,gCAAgC,EAChC,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,6BAA6B,GAC7B,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EACN,+BAA+B,EAC/B,8BAA8B,EAC9B,sCAAsC,EACtC,sBAAsB,EACtB,yBAAyB,EACzB,uCAAuC,EACvC,qCAAqC,GACrC,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EACN,wBAAwB,EACxB,8BAA8B,GAC9B,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQzE,OAAO,EACN,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,iCAAiC,CAAC;AAWzC,OAAO,EACN,sCAAsC,EACtC,oCAAoC,EACpC,yCAAyC,EACzC,qCAAqC,EACrC,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,EAC3B,gCAAgC,EAChC,uBAAuB,EACvB,gCAAgC,GAChC,MAAM,kCAAkC,CAAC;AAkB1C,OAAO,EACN,gCAAgC,EAChC,+CAA+C,EAC/C,6CAA6C,GAC7C,MAAM,uCAAuC,CAAC;AAc/C,OAAO,EACN,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,kCAAkC,GAClC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * An app's own installation-bot credential, read from its own environment or
3
+ * adopted live over the standalone control channel.
4
+ *
5
+ * There is no issuance code path here. A workspace admin issues (or re-issues)
6
+ * the credential from Hub's admin app settings page; Hub mints it, then
7
+ * delivers it to the running app one of two ways:
8
+ * - managed / marketplace: written into the app's encrypted env config, so it
9
+ * arrives as an environment variable at container (re)start;
10
+ * - standalone-production: pushed as a signed control assertion over the Relay
11
+ * WebSocket (see `standalone-control.ts`), which persists it into the
12
+ * identity file and adopts it in-process HOT — no restart required.
13
+ *
14
+ * This module therefore does exactly these things, and nothing else:
15
+ * - read the two reserved env vars, fresh, every time (env is the operator
16
+ * override and always wins);
17
+ * - fall back to a live-adopted / identity-file-persisted value when the env
18
+ * vars are absent (the standalone hot-adoption path);
19
+ * - derive a coarse state from the last outcome of actually using them;
20
+ * - let the transport that uses them report what happened, without ever
21
+ * handing the token itself to anything but the transport's own headers.
22
+ *
23
+ * No function here returns, logs, or throws the credential value beyond the
24
+ * opaque pair `readAgentBotCredential` returns for the transport to place
25
+ * directly into request headers.
26
+ */
27
+ /** The reserved manifest env keys Hub uses to deliver this credential. */
28
+ export declare const AGENT_BOT_CREDENTIAL_ENV_KEY = "PRIVOS_AGENT_BOT_CREDENTIAL";
29
+ export declare const AGENT_BOT_USER_ID_ENV_KEY = "PRIVOS_AGENT_BOT_USER_ID";
30
+ /**
31
+ * Derived credential state — never owned, always recomputed:
32
+ * - `absent`: neither the env pair nor an adopted value is available. Normal
33
+ * for a fresh install; the credential arrives later and out-of-band.
34
+ * - `live`: a credential is available and the most recent call using it (if
35
+ * any) did not come back 401. Optimistic default before any call.
36
+ * - `rejected`: the most recent call using this exact credential came back
37
+ * 401. Every re-issue rotates the previous token dead, and revocation has
38
+ * more causes than loss (grant change, suspension, upgrade cutover,
39
+ * uninstall) — this app cannot distinguish them and cannot fix any of them.
40
+ * Only a newly delivered credential (env restart, or a fresh control-channel
41
+ * push) can return to `live`.
42
+ */
43
+ export type AgentBotCredentialState = 'absent' | 'live' | 'rejected';
44
+ /** Opaque header pair. Never stringify, log, or embed this outside a request header. */
45
+ export interface AgentBotCredential {
46
+ readonly botUserId: string;
47
+ readonly token: string;
48
+ }
49
+ /** Operator-facing instruction shown while the app cannot use its own credential. */
50
+ export declare const AGENT_BOT_CREDENTIAL_OPERATOR_INSTRUCTION: string;
51
+ /**
52
+ * Adopt a credential delivered out-of-band (standalone control channel, or a
53
+ * boot-time seed from the persisted identity file). Env always overrides this,
54
+ * so adopting never masks an operator-set env value. A fresh adoption clears the
55
+ * last outcome so a previously-rejected token does not keep the state `rejected`.
56
+ */
57
+ export declare function setAdoptedAgentBotCredential(credential: AgentBotCredential): void;
58
+ /**
59
+ * Read the credential: the env pair first (operator override), then any
60
+ * adopted / persisted value. `null` when neither is available.
61
+ */
62
+ export declare function readAgentBotCredential(): AgentBotCredential | null;
63
+ /** Current derived state. Safe to expose to a UI: never carries the token. */
64
+ export declare function getAgentBotCredentialState(): AgentBotCredentialState;
65
+ /** Record that the credential was just used successfully. */
66
+ export declare function markAgentBotCredentialLive(): void;
67
+ /** Record that Hub just rejected this exact credential with 401. */
68
+ export declare function markAgentBotCredentialRejected(): void;
69
+ /** Test-only: reset all in-process state so cases do not leak into each other. */
70
+ export declare function resetAgentBotCredentialOutcomeForTests(): void;
71
+ //# sourceMappingURL=agent-bot-credential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-bot-credential.d.ts","sourceRoot":"","sources":["../../src/relay/agent-bot-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAC1E,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AAEpE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAErE,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,qFAAqF;AACrF,eAAO,MAAM,yCAAyC,QAE2C,CAAC;AAiBlG;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAKjF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,GAAG,IAAI,CAQlE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,IAAI,uBAAuB,CAGpE;AAED,6DAA6D;AAC7D,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,oEAAoE;AACpE,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED,kFAAkF;AAClF,wBAAgB,sCAAsC,IAAI,IAAI,CAG7D"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * An app's own installation-bot credential, read from its own environment or
3
+ * adopted live over the standalone control channel.
4
+ *
5
+ * There is no issuance code path here. A workspace admin issues (or re-issues)
6
+ * the credential from Hub's admin app settings page; Hub mints it, then
7
+ * delivers it to the running app one of two ways:
8
+ * - managed / marketplace: written into the app's encrypted env config, so it
9
+ * arrives as an environment variable at container (re)start;
10
+ * - standalone-production: pushed as a signed control assertion over the Relay
11
+ * WebSocket (see `standalone-control.ts`), which persists it into the
12
+ * identity file and adopts it in-process HOT — no restart required.
13
+ *
14
+ * This module therefore does exactly these things, and nothing else:
15
+ * - read the two reserved env vars, fresh, every time (env is the operator
16
+ * override and always wins);
17
+ * - fall back to a live-adopted / identity-file-persisted value when the env
18
+ * vars are absent (the standalone hot-adoption path);
19
+ * - derive a coarse state from the last outcome of actually using them;
20
+ * - let the transport that uses them report what happened, without ever
21
+ * handing the token itself to anything but the transport's own headers.
22
+ *
23
+ * No function here returns, logs, or throws the credential value beyond the
24
+ * opaque pair `readAgentBotCredential` returns for the transport to place
25
+ * directly into request headers.
26
+ */
27
+ /** The reserved manifest env keys Hub uses to deliver this credential. */
28
+ export const AGENT_BOT_CREDENTIAL_ENV_KEY = 'PRIVOS_AGENT_BOT_CREDENTIAL';
29
+ export const AGENT_BOT_USER_ID_ENV_KEY = 'PRIVOS_AGENT_BOT_USER_ID';
30
+ /** Operator-facing instruction shown while the app cannot use its own credential. */
31
+ export const AGENT_BOT_CREDENTIAL_OPERATOR_INSTRUCTION = 'A workspace admin must issue or re-issue this app’s credential from Hub → Admin → Apps '
32
+ + '→ this app → Settings, then press Apply. This app cannot issue or repair its own credential.';
33
+ // Last observed outcome of actually using the credential. `null` means no
34
+ // call has been made yet in this process, which reads as `live` (optimistic)
35
+ // per the state machine above.
36
+ let lastOutcome = null;
37
+ // A credential adopted at boot (seeded from the persisted identity file) or
38
+ // hot over the standalone control channel. Env always wins over this; it is the
39
+ // fallback that makes standalone delivery without a restart observable at all.
40
+ let adopted = null;
41
+ function normalize(botUserId, token) {
42
+ if (!token.trim() || !botUserId.trim())
43
+ return null;
44
+ return Object.freeze({ botUserId: botUserId.trim(), token });
45
+ }
46
+ /**
47
+ * Adopt a credential delivered out-of-band (standalone control channel, or a
48
+ * boot-time seed from the persisted identity file). Env always overrides this,
49
+ * so adopting never masks an operator-set env value. A fresh adoption clears the
50
+ * last outcome so a previously-rejected token does not keep the state `rejected`.
51
+ */
52
+ export function setAdoptedAgentBotCredential(credential) {
53
+ const next = normalize(credential.botUserId, credential.token);
54
+ if (!next)
55
+ return;
56
+ adopted = next;
57
+ lastOutcome = null;
58
+ }
59
+ /**
60
+ * Read the credential: the env pair first (operator override), then any
61
+ * adopted / persisted value. `null` when neither is available.
62
+ */
63
+ export function readAgentBotCredential() {
64
+ const token = process.env[AGENT_BOT_CREDENTIAL_ENV_KEY];
65
+ const botUserId = process.env[AGENT_BOT_USER_ID_ENV_KEY];
66
+ if (token && botUserId) {
67
+ const fromEnv = normalize(botUserId, token);
68
+ if (fromEnv)
69
+ return fromEnv;
70
+ }
71
+ return adopted;
72
+ }
73
+ /** Current derived state. Safe to expose to a UI: never carries the token. */
74
+ export function getAgentBotCredentialState() {
75
+ if (!readAgentBotCredential())
76
+ return 'absent';
77
+ return lastOutcome === 'rejected' ? 'rejected' : 'live';
78
+ }
79
+ /** Record that the credential was just used successfully. */
80
+ export function markAgentBotCredentialLive() {
81
+ lastOutcome = 'live';
82
+ }
83
+ /** Record that Hub just rejected this exact credential with 401. */
84
+ export function markAgentBotCredentialRejected() {
85
+ lastOutcome = 'rejected';
86
+ }
87
+ /** Test-only: reset all in-process state so cases do not leak into each other. */
88
+ export function resetAgentBotCredentialOutcomeForTests() {
89
+ lastOutcome = null;
90
+ adopted = null;
91
+ }
92
+ //# sourceMappingURL=agent-bot-credential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-bot-credential.js","sourceRoot":"","sources":["../../src/relay/agent-bot-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AAuBpE,qFAAqF;AACrF,MAAM,CAAC,MAAM,yCAAyC,GACrD,yFAAyF;MACvF,8FAA8F,CAAC;AAElG,0EAA0E;AAC1E,6EAA6E;AAC7E,+BAA+B;AAC/B,IAAI,WAAW,GAA+B,IAAI,CAAC;AAEnD,4EAA4E;AAC5E,gFAAgF;AAChF,+EAA+E;AAC/E,IAAI,OAAO,GAA8B,IAAI,CAAC;AAE9C,SAAS,SAAS,CAAC,SAAiB,EAAE,KAAa;IAClD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAA8B;IAC1E,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,OAAO,GAAG,IAAI,CAAC;IACf,WAAW,GAAG,IAAI,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzD,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,0BAA0B;IACzC,IAAI,CAAC,sBAAsB,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC/C,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,0BAA0B;IACzC,WAAW,GAAG,MAAM,CAAC;AACtB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,8BAA8B;IAC7C,WAAW,GAAG,UAAU,CAAC;AAC1B,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,sCAAsC;IACrD,WAAW,GAAG,IAAI,CAAC;IACnB,OAAO,GAAG,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Hub REST transport that authenticates as this app's own installation bot.
3
+ *
4
+ * Hub authenticates a REST call from the header PAIR `x-user-id` +
5
+ * `x-auth-token` (privos-hub `apps/meteor/app/api/server/api.ts` auth path).
6
+ * This transport reads that pair from `agent-bot-credential.ts` on every
7
+ * call — never once at construction — and never carries any Sandbox
8
+ * selector, verified-room binding, or human-actor identity: the bot is a
9
+ * standing, room-independent identity, so this transport needs no
10
+ * `ToolCallContext` at all and works exactly the same inside a live tool
11
+ * call as it does in the background.
12
+ *
13
+ * This is the canonical home of `RoomBoundHubClient` / `RoomBoundHubFetchInit`.
14
+ * Both this bot-credential transport and the per-call room-bound workload
15
+ * client (`workloadIdentityClient.forRoom(context)`) satisfy the same
16
+ * `RoomBoundHubClient` shape, so callers can accept either without a second
17
+ * interface.
18
+ */
19
+ import type { WorkloadIdentityClient } from '../workload/workload-identity.js';
20
+ /** The room-bound surface a Hub REST caller is allowed to use. */
21
+ export interface RoomBoundHubClient {
22
+ authorizedFetch(input: string, init: RoomBoundHubFetchInit): Promise<Response>;
23
+ }
24
+ export interface RoomBoundHubFetchInit extends RequestInit {
25
+ /** One exact granted permission this call exercises. Documentation only here: this transport carries exactly one identity, not a per-scope token. */
26
+ requiredScope: string;
27
+ retryMode?: 'safe-methods' | 'idempotent' | 'never';
28
+ replayable?: true;
29
+ }
30
+ /** The credential is absent: there is nothing to send. Distinct from a Hub rejection. */
31
+ export declare class AgentBotCredentialAbsentError extends Error {
32
+ constructor();
33
+ }
34
+ /**
35
+ * Hub could not be reached, or its origin could not be resolved. Distinct
36
+ * from a 401: nothing here says the credential itself is wrong. Deliberately
37
+ * carries no cause detail — a caught network error's message is never safe to
38
+ * surface, since nothing guarantees it cannot embed request state.
39
+ */
40
+ export declare class AgentBotHubUnreachableError extends Error {
41
+ constructor();
42
+ }
43
+ export interface AgentBotHubClientOptions {
44
+ /** Resolve the current Hub origin. `undefined` means Hub is unreachable right now. */
45
+ resolveHubOrigin: () => Promise<string | undefined>;
46
+ fetchImplementation?: typeof fetch;
47
+ }
48
+ /**
49
+ * Build the bot-credential transport.
50
+ *
51
+ * Every call re-reads the credential and re-resolves the Hub origin, so a
52
+ * long-lived instance never holds a stale value across a container restart
53
+ * boundary (irrelevant in practice, since a restart is a new process) or
54
+ * across a hot credential re-issue within the same process (relevant: the
55
+ * standalone control channel adopts a re-issued value in-process, and reading
56
+ * fresh here is what makes that observable without a restart).
57
+ */
58
+ export declare function createAgentBotHubClient(options: AgentBotHubClientOptions): RoomBoundHubClient;
59
+ /**
60
+ * Managed-mode production factory: resolve the Hub origin from the same
61
+ * broker connection the workload identity client already maintains,
62
+ * independent of any verified `ToolCallContext` — `brokerContext()` is
63
+ * available whenever this process is paired, exactly the background-safe
64
+ * property this transport needs. Managed mode only: standalone-production
65
+ * (Relay) never mounts a workload broker, so this factory is not usable
66
+ * there — see `createAgentBotHubClientFromHubOrigin`.
67
+ */
68
+ export declare function createAgentBotHubClientFromWorkloadIdentity(workloadIdentityClient: WorkloadIdentityClient): RoomBoundHubClient;
69
+ /**
70
+ * Standalone-production factory: there is no workload broker to resolve a
71
+ * Hub origin from in this mode, so the caller supplies the one already
72
+ * pinned in the paired standalone identity file (`loadStandaloneIdentity()`
73
+ * → `relay.privosUrl` — the same origin the Relay OAuth token and WebSocket
74
+ * are reached at).
75
+ */
76
+ export declare function createAgentBotHubClientFromHubOrigin(hubOrigin: string): RoomBoundHubClient;
77
+ //# sourceMappingURL=hub-rest-as-bot-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-rest-as-bot-client.d.ts","sourceRoot":"","sources":["../../src/relay/hub-rest-as-bot-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAQ/E,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IAClC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACzD,qJAAqJ;IACrJ,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,CAAC;IACpD,UAAU,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,yFAAyF;AACzF,qBAAa,6BAA8B,SAAQ,KAAK;;CAKvD;AAED;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;;CAKrD;AAaD,MAAM,WAAW,wBAAwB;IACxC,sFAAsF;IACtF,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD,mBAAmB,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,kBAAkB,CA4D7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,2CAA2C,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,kBAAkB,CAU9H;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAE1F"}
@@ -0,0 +1,136 @@
1
+ import { markAgentBotCredentialLive, markAgentBotCredentialRejected, readAgentBotCredential, } from './agent-bot-credential.js';
2
+ /** The credential is absent: there is nothing to send. Distinct from a Hub rejection. */
3
+ export class AgentBotCredentialAbsentError extends Error {
4
+ constructor() {
5
+ super('agent_bot_credential_absent');
6
+ this.name = 'AgentBotCredentialAbsentError';
7
+ }
8
+ }
9
+ /**
10
+ * Hub could not be reached, or its origin could not be resolved. Distinct
11
+ * from a 401: nothing here says the credential itself is wrong. Deliberately
12
+ * carries no cause detail — a caught network error's message is never safe to
13
+ * surface, since nothing guarantees it cannot embed request state.
14
+ */
15
+ export class AgentBotHubUnreachableError extends Error {
16
+ constructor() {
17
+ super('agent_bot_hub_unreachable');
18
+ this.name = 'AgentBotHubUnreachableError';
19
+ }
20
+ }
21
+ const RETRY_ATTEMPTS = 3;
22
+ const RETRY_BASE_DELAY_MS = 200;
23
+ const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
24
+ const isRetryableMethod = (method, retryMode) => {
25
+ if (retryMode === 'safe-methods')
26
+ return method === 'GET' || method === 'HEAD';
27
+ if (retryMode === 'idempotent')
28
+ return method === 'GET' || method === 'HEAD' || method === 'PUT' || method === 'DELETE';
29
+ return false;
30
+ };
31
+ /**
32
+ * Build the bot-credential transport.
33
+ *
34
+ * Every call re-reads the credential and re-resolves the Hub origin, so a
35
+ * long-lived instance never holds a stale value across a container restart
36
+ * boundary (irrelevant in practice, since a restart is a new process) or
37
+ * across a hot credential re-issue within the same process (relevant: the
38
+ * standalone control channel adopts a re-issued value in-process, and reading
39
+ * fresh here is what makes that observable without a restart).
40
+ */
41
+ export function createAgentBotHubClient(options) {
42
+ const doFetch = options.fetchImplementation ?? fetch;
43
+ async function attempt(url, init, credential) {
44
+ const { requiredScope: _requiredScope, retryMode: _retryMode, replayable: _replayable, headers, ...rest } = init;
45
+ const response = await doFetch(url, {
46
+ ...rest,
47
+ headers: {
48
+ ...headers,
49
+ 'x-user-id': credential.botUserId,
50
+ 'x-auth-token': credential.token,
51
+ },
52
+ });
53
+ if (response.status === 401)
54
+ markAgentBotCredentialRejected();
55
+ else if (response.ok)
56
+ markAgentBotCredentialLive();
57
+ return response;
58
+ }
59
+ return {
60
+ async authorizedFetch(input, init) {
61
+ const credential = readAgentBotCredential();
62
+ if (!credential)
63
+ throw new AgentBotCredentialAbsentError();
64
+ let hubOrigin;
65
+ try {
66
+ hubOrigin = await options.resolveHubOrigin();
67
+ }
68
+ catch {
69
+ hubOrigin = undefined;
70
+ }
71
+ if (!hubOrigin)
72
+ throw new AgentBotHubUnreachableError();
73
+ const url = `${hubOrigin}${input}`;
74
+ const method = (init.method || 'GET').toUpperCase();
75
+ const retryable = isRetryableMethod(method, init.retryMode);
76
+ const maxAttempts = retryable ? RETRY_ATTEMPTS : 1;
77
+ for (let index = 0; index < maxAttempts; index += 1) {
78
+ try {
79
+ const response = await attempt(url, init, credential);
80
+ // A 401 is a definitive rejection: retrying with the SAME stale
81
+ // credential cannot succeed, so it is never retried.
82
+ if (response.status === 401)
83
+ return response;
84
+ if (response.status >= 500 && retryable && index < maxAttempts - 1) {
85
+ await delay(RETRY_BASE_DELAY_MS * 2 ** index);
86
+ continue;
87
+ }
88
+ return response;
89
+ }
90
+ catch {
91
+ // Network/DNS/timeout failure. The caught error is discarded
92
+ // entirely and never inspected: nothing guarantees its message
93
+ // cannot embed request state, and none of it is safe to surface.
94
+ if (!retryable || index >= maxAttempts - 1)
95
+ throw new AgentBotHubUnreachableError();
96
+ await delay(RETRY_BASE_DELAY_MS * 2 ** index);
97
+ }
98
+ }
99
+ // Unreachable in practice (the loop above always returns or throws),
100
+ // kept only so this function has an exhaustive static return type.
101
+ throw new AgentBotHubUnreachableError();
102
+ },
103
+ };
104
+ }
105
+ /**
106
+ * Managed-mode production factory: resolve the Hub origin from the same
107
+ * broker connection the workload identity client already maintains,
108
+ * independent of any verified `ToolCallContext` — `brokerContext()` is
109
+ * available whenever this process is paired, exactly the background-safe
110
+ * property this transport needs. Managed mode only: standalone-production
111
+ * (Relay) never mounts a workload broker, so this factory is not usable
112
+ * there — see `createAgentBotHubClientFromHubOrigin`.
113
+ */
114
+ export function createAgentBotHubClientFromWorkloadIdentity(workloadIdentityClient) {
115
+ return createAgentBotHubClient({
116
+ resolveHubOrigin: async () => {
117
+ try {
118
+ return (await workloadIdentityClient.brokerContext()).hubOrigin;
119
+ }
120
+ catch {
121
+ return undefined;
122
+ }
123
+ },
124
+ });
125
+ }
126
+ /**
127
+ * Standalone-production factory: there is no workload broker to resolve a
128
+ * Hub origin from in this mode, so the caller supplies the one already
129
+ * pinned in the paired standalone identity file (`loadStandaloneIdentity()`
130
+ * → `relay.privosUrl` — the same origin the Relay OAuth token and WebSocket
131
+ * are reached at).
132
+ */
133
+ export function createAgentBotHubClientFromHubOrigin(hubOrigin) {
134
+ return createAgentBotHubClient({ resolveHubOrigin: async () => hubOrigin });
135
+ }
136
+ //# sourceMappingURL=hub-rest-as-bot-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-rest-as-bot-client.js","sourceRoot":"","sources":["../../src/relay/hub-rest-as-bot-client.ts"],"names":[],"mappings":"AAoBA,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,sBAAsB,GACtB,MAAM,2BAA2B,CAAC;AAcnC,yFAAyF;AACzF,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACvD;QACC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC7C,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACrD;QACC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC3C,CAAC;CACD;AAED,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE/F,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,SAA6C,EAAW,EAAE;IACpG,IAAI,SAAS,KAAK,cAAc;QAAE,OAAO,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC;IAC/E,IAAI,SAAS,KAAK,YAAY;QAAE,OAAO,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC;IACxH,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAQF;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAiC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAmB,IAAI,KAAK,CAAC;IAErD,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAA2B,EAAE,UAAgD;QAChH,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACjH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YACnC,GAAG,IAAI;YACP,OAAO,EAAE;gBACR,GAAI,OAA8C;gBAClD,WAAW,EAAE,UAAU,CAAC,SAAS;gBACjC,cAAc,EAAE,UAAU,CAAC,KAAK;aAChC;SACD,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,8BAA8B,EAAE,CAAC;aACzD,IAAI,QAAQ,CAAC,EAAE;YAAE,0BAA0B,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,OAAO;QACN,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI;YAChC,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,6BAA6B,EAAE,CAAC;YAE3D,IAAI,SAA6B,CAAC;YAClC,IAAI,CAAC;gBACJ,SAAS,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,2BAA2B,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC;YAEnC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC;oBACJ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBACtD,gEAAgE;oBAChE,qDAAqD;oBACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;wBAAE,OAAO,QAAQ,CAAC;oBAC7C,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;wBACpE,MAAM,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;wBAC9C,SAAS;oBACV,CAAC;oBACD,OAAO,QAAQ,CAAC;gBACjB,CAAC;gBAAC,MAAM,CAAC;oBACR,6DAA6D;oBAC7D,+DAA+D;oBAC/D,iEAAiE;oBACjE,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,WAAW,GAAG,CAAC;wBAAE,MAAM,IAAI,2BAA2B,EAAE,CAAC;oBACpF,MAAM,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;YACD,qEAAqE;YACrE,mEAAmE;YACnE,MAAM,IAAI,2BAA2B,EAAE,CAAC;QACzC,CAAC;KACD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2CAA2C,CAAC,sBAA8C;IACzG,OAAO,uBAAuB,CAAC;QAC9B,gBAAgB,EAAE,KAAK,IAAI,EAAE;YAC5B,IAAI,CAAC;gBACJ,OAAO,CAAC,MAAM,sBAAsB,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,SAAS,CAAC;YAClB,CAAC;QACF,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oCAAoC,CAAC,SAAiB;IACrE,OAAO,uBAAuB,CAAC,EAAE,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7E,CAAC"}
@@ -51,6 +51,14 @@ export interface PairOverWebSocketOptions {
51
51
  identityFilePath?: string;
52
52
  /** Receives the fingerprint line for out-of-band operator verification; defaults to `console.log`. */
53
53
  onFingerprint?: (fingerprint: string) => void;
54
+ /** `fetch` used by `pairAndAwaitApproval` to poll for approval. Defaults to the global. */
55
+ fetchImpl?: typeof fetch;
56
+ /** How long `pairAndAwaitApproval` waits for an admin to approve. Default 30 min. */
57
+ approvalTimeoutMs?: number;
58
+ /** Initial poll interval; backs off 1.5x up to 10s. Default 2s. */
59
+ pollIntervalMs?: number;
60
+ /** Called on each poll while still awaiting approval (e.g. to print a heartbeat). */
61
+ onAwaitingApproval?: () => void;
54
62
  }
55
63
  export interface RelayClientOptions {
56
64
  privosUrl: string;
@@ -128,6 +136,17 @@ export interface RelayHandle {
128
136
  * `persistIdentityFile: false` to opt out and handle persistence yourself.
129
137
  */
130
138
  export declare function pairOverWebSocket(pairUrl: string, appMeta: PairAppMeta, WebSocketImpl?: typeof WebSocket, options?: PairOverWebSocketOptions): Promise<PairingResult>;
139
+ /**
140
+ * One-command pairing (device-authorization flow). Registers exactly like
141
+ * {@link pairOverWebSocket}; if the Hub answers `awaitingApproval`, this then
142
+ * POLLS the Hub with the SAME pairing token until an admin approves the
143
+ * permission ceiling, receives the pairing-v2 trust payload, and writes the
144
+ * standalone identity file — no second pairing URL. A Hub that returns trust
145
+ * immediately (already-approved linked pairing, or a v1 Hub) is passed straight
146
+ * through. Security is unchanged: nothing usable is returned before approval,
147
+ * and the out-of-band fingerprint check still fires on first identity write.
148
+ */
149
+ export declare function pairAndAwaitApproval(pairUrl: string, appMeta: PairAppMeta, WebSocketImpl?: typeof WebSocket, options?: PairOverWebSocketOptions): Promise<PairingResult>;
131
150
  export declare function pairFromDescriptor(pairUrl: string, descriptor: AppDescriptor, WebSocketImpl?: typeof WebSocket, options?: PairOverWebSocketOptions): Promise<PairingResult>;
132
151
  /**
133
152
  * Connect to PrivOS relay WebSocket with exponential backoff, token refresh,
@@ -1 +1 @@
1
- {"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/relay/relay-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAA2B,MAAM,IAAI,CAAC;AAE7C,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWzD,OAAO,EACN,gBAAgB,EAIhB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEN,KAAK,iCAAiC,EACtC,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAIN,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAE3B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,cAAc,CAAC,EAAE,CAAC,CAAC;IACnB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sGAAsG;IACtG,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAOD,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,aAAa,GAAG,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,OAAO,EAAE,aAAa,CAAC;IACvB,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC3C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,iCAAiC,CAAC;IACvD;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC3B,qDAAqD;IACrD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,yFAAyF;IACzF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,sFAAsF;IACtF,WAAW,IAAI,OAAO,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,aAAa,GAAE,OAAO,SAAqB,EAC3C,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,aAAa,CAAC,CAuLxB;AAED,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,aAAa,CAAC,EAAE,OAAO,SAAS,EAChC,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CA0dlE"}
1
+ {"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/relay/relay-client.ts"],"names":[],"mappings":"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"}