@relayflows/sdk 2.0.42 → 2.0.43
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/adapters/base.d.ts +12 -1
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/base.js +11 -1
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/claude.d.ts.map +1 -1
- package/dist/adapters/claude.js +8 -4
- package/dist/adapters/claude.js.map +1 -1
- package/dist/adapters/codex.d.ts.map +1 -1
- package/dist/adapters/codex.js +15 -6
- package/dist/adapters/codex.js.map +1 -1
- package/dist/agent-resume.d.ts +8 -0
- package/dist/agent-resume.d.ts.map +1 -0
- package/dist/agent-resume.js +37 -0
- package/dist/agent-resume.js.map +1 -0
- package/dist/agent-transcript.d.ts.map +1 -1
- package/dist/agent-transcript.js +5 -3
- package/dist/agent-transcript.js.map +1 -1
- package/dist/authored-flow-error.d.ts +10 -2
- package/dist/authored-flow-error.d.ts.map +1 -1
- package/dist/authored-flow-error.js.map +1 -1
- package/dist/authored-flow-executor.d.ts.map +1 -1
- package/dist/authored-flow-executor.js +16 -2
- package/dist/authored-flow-executor.js.map +1 -1
- package/dist/authored-flow-loader.d.ts +6 -0
- package/dist/authored-flow-loader.d.ts.map +1 -1
- package/dist/authored-flow-loader.js +18 -6
- package/dist/authored-flow-loader.js.map +1 -1
- package/dist/authored-helper-effect.js +3 -2
- package/dist/authored-helper-effect.js.map +1 -1
- package/dist/authored-human.d.ts +2 -0
- package/dist/authored-human.d.ts.map +1 -1
- package/dist/authored-human.js +4 -0
- package/dist/authored-human.js.map +1 -1
- package/dist/authored-memory.d.ts +47 -2
- package/dist/authored-memory.d.ts.map +1 -1
- package/dist/authored-memory.js +394 -15
- package/dist/authored-memory.js.map +1 -1
- package/dist/authored-node-entry.js +6 -1
- package/dist/authored-node-entry.js.map +1 -1
- package/dist/authored-node-runner.d.ts +1 -1
- package/dist/authored-node-runner.d.ts.map +1 -1
- package/dist/authored-node-runner.js +6 -3
- package/dist/authored-node-runner.js.map +1 -1
- package/dist/authored-root-readback.d.ts +21 -0
- package/dist/authored-root-readback.d.ts.map +1 -0
- package/dist/authored-root-readback.js +90 -0
- package/dist/authored-root-readback.js.map +1 -0
- package/dist/authored-root.d.ts.map +1 -1
- package/dist/authored-root.js +53 -74
- package/dist/authored-root.js.map +1 -1
- package/dist/authored-step-output.d.ts +2 -0
- package/dist/authored-step-output.d.ts.map +1 -1
- package/dist/authored-step-output.js +1 -0
- package/dist/authored-step-output.js.map +1 -1
- package/dist/authored-worker-step.d.ts.map +1 -1
- package/dist/authored-worker-step.js +26 -4
- package/dist/authored-worker-step.js.map +1 -1
- package/dist/cli/check-helper-body.d.ts +2 -2
- package/dist/cli/check-helper-body.d.ts.map +1 -1
- package/dist/cli/check-helper-body.js +7 -2
- package/dist/cli/check-helper-body.js.map +1 -1
- package/dist/cli/check-helper-surface.d.ts +8 -0
- package/dist/cli/check-helper-surface.d.ts.map +1 -0
- package/dist/cli/check-helper-surface.js +37 -0
- package/dist/cli/check-helper-surface.js.map +1 -0
- package/dist/cli/check-triggers.d.ts +4 -3
- package/dist/cli/check-triggers.d.ts.map +1 -1
- package/dist/cli/check-triggers.js +7 -3
- package/dist/cli/check-triggers.js.map +1 -1
- package/dist/cli/check.d.ts +7 -1
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +35 -8
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/cloud-answer.d.ts +9 -0
- package/dist/cli/cloud-answer.d.ts.map +1 -0
- package/dist/cli/cloud-answer.js +39 -0
- package/dist/cli/cloud-answer.js.map +1 -0
- package/dist/cli/cloud-connect-cli.d.ts +2 -1
- package/dist/cli/cloud-connect-cli.d.ts.map +1 -1
- package/dist/cli/cloud-connect-cli.js +10 -2
- package/dist/cli/cloud-connect-cli.js.map +1 -1
- package/dist/cli/cloud-human.d.ts +7 -0
- package/dist/cli/cloud-human.d.ts.map +1 -0
- package/dist/cli/cloud-human.js +22 -0
- package/dist/cli/cloud-human.js.map +1 -0
- package/dist/cli/cloud-live.d.ts +2 -2
- package/dist/cli/cloud-live.d.ts.map +1 -1
- package/dist/cli/cloud-live.js +9 -2
- package/dist/cli/cloud-live.js.map +1 -1
- package/dist/cli/cloud-mirror-session.d.ts.map +1 -1
- package/dist/cli/cloud-mirror-session.js +3 -2
- package/dist/cli/cloud-mirror-session.js.map +1 -1
- package/dist/cli/cloud-run.d.ts +1 -1
- package/dist/cli/cloud-run.d.ts.map +1 -1
- package/dist/cli/cloud-run.js +12 -0
- package/dist/cli/cloud-run.js.map +1 -1
- package/dist/cli/detached-record.d.ts +22 -0
- package/dist/cli/detached-record.d.ts.map +1 -0
- package/dist/cli/detached-record.js +57 -0
- package/dist/cli/detached-record.js.map +1 -0
- package/dist/cli/detached-run.d.ts +28 -0
- package/dist/cli/detached-run.d.ts.map +1 -0
- package/dist/cli/detached-run.js +122 -0
- package/dist/cli/detached-run.js.map +1 -0
- package/dist/cli/diagnostic-fold.d.ts +19 -0
- package/dist/cli/diagnostic-fold.d.ts.map +1 -0
- package/dist/cli/diagnostic-fold.js +19 -0
- package/dist/cli/diagnostic-fold.js.map +1 -0
- package/dist/cli/direct-run.d.ts.map +1 -1
- package/dist/cli/direct-run.js +16 -2
- package/dist/cli/direct-run.js.map +1 -1
- package/dist/cli/eval.d.ts +22 -0
- package/dist/cli/eval.d.ts.map +1 -0
- package/dist/cli/eval.js +131 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/journal-timeout.d.ts +12 -0
- package/dist/cli/journal-timeout.d.ts.map +1 -0
- package/dist/cli/journal-timeout.js +42 -0
- package/dist/cli/journal-timeout.js.map +1 -0
- package/dist/cli/local-agent-remedy.d.ts.map +1 -1
- package/dist/cli/local-agent-remedy.js +5 -4
- package/dist/cli/local-agent-remedy.js.map +1 -1
- package/dist/cli/observer-session.d.ts +1 -0
- package/dist/cli/observer-session.d.ts.map +1 -1
- package/dist/cli/observer-session.js +8 -1
- package/dist/cli/observer-session.js.map +1 -1
- package/dist/cli/reuse.d.ts +8 -0
- package/dist/cli/reuse.d.ts.map +1 -1
- package/dist/cli/reuse.js +24 -0
- package/dist/cli/reuse.js.map +1 -1
- package/dist/cli/run.d.ts +8 -2
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +72 -56
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/running-step.d.ts +9 -0
- package/dist/cli/running-step.d.ts.map +1 -0
- package/dist/cli/running-step.js +156 -0
- package/dist/cli/running-step.js.map +1 -0
- package/dist/cli-adapter.d.ts +3 -1
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +6 -2
- package/dist/cli-adapter.js.map +1 -1
- package/dist/cli-commands.d.ts +77 -11
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +41 -7
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-watch.d.ts +6 -2
- package/dist/cli-watch.d.ts.map +1 -1
- package/dist/cli-watch.js +7 -6
- package/dist/cli-watch.js.map +1 -1
- package/dist/cli.d.ts +22 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +154 -50
- package/dist/cli.js.map +1 -1
- package/dist/cloud-answer.d.ts +35 -0
- package/dist/cloud-answer.d.ts.map +1 -0
- package/dist/cloud-answer.js +194 -0
- package/dist/cloud-answer.js.map +1 -0
- package/dist/cloud-auth-store.d.ts +46 -0
- package/dist/cloud-auth-store.d.ts.map +1 -0
- package/dist/cloud-auth-store.js +171 -0
- package/dist/cloud-auth-store.js.map +1 -0
- package/dist/cloud-http.d.ts +7 -16
- package/dist/cloud-http.d.ts.map +1 -1
- package/dist/cloud-http.js +59 -40
- package/dist/cloud-http.js.map +1 -1
- package/dist/cloud-human-wait.d.ts +10 -0
- package/dist/cloud-human-wait.d.ts.map +1 -0
- package/dist/cloud-human-wait.js +17 -0
- package/dist/cloud-human-wait.js.map +1 -0
- package/dist/cloud-mirror-transport.d.ts.map +1 -1
- package/dist/cloud-mirror-transport.js +1 -0
- package/dist/cloud-mirror-transport.js.map +1 -1
- package/dist/cloud-run-record.d.ts +7 -2
- package/dist/cloud-run-record.d.ts.map +1 -1
- package/dist/cloud-run-record.js +13 -5
- package/dist/cloud-run-record.js.map +1 -1
- package/dist/cloud-run.d.ts +9 -0
- package/dist/cloud-run.d.ts.map +1 -1
- package/dist/cloud-run.js +36 -2
- package/dist/cloud-run.js.map +1 -1
- package/dist/communication/local.d.ts.map +1 -1
- package/dist/communication/local.js +6 -1
- package/dist/communication/local.js.map +1 -1
- package/dist/communication/worker.d.ts.map +1 -1
- package/dist/communication/worker.js +12 -2
- package/dist/communication/worker.js.map +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +5 -3
- package/dist/compile.js.map +1 -1
- package/dist/daemon-spec-validation.d.ts +31 -0
- package/dist/daemon-spec-validation.d.ts.map +1 -0
- package/dist/daemon-spec-validation.js +115 -0
- package/dist/daemon-spec-validation.js.map +1 -0
- package/dist/failure-kinds.d.ts +6 -4
- package/dist/failure-kinds.d.ts.map +1 -1
- package/dist/failure-kinds.js +17 -1
- package/dist/failure-kinds.js.map +1 -1
- package/dist/flow-eval-cloud.d.ts +25 -0
- package/dist/flow-eval-cloud.d.ts.map +1 -0
- package/dist/flow-eval-cloud.js +108 -0
- package/dist/flow-eval-cloud.js.map +1 -0
- package/dist/flow-eval-error.d.ts +7 -0
- package/dist/flow-eval-error.d.ts.map +1 -0
- package/dist/flow-eval-error.js +10 -0
- package/dist/flow-eval-error.js.map +1 -0
- package/dist/flow-eval-gate.d.ts +15 -0
- package/dist/flow-eval-gate.d.ts.map +1 -0
- package/dist/flow-eval-gate.js +102 -0
- package/dist/flow-eval-gate.js.map +1 -0
- package/dist/flow-eval-local.d.ts +54 -0
- package/dist/flow-eval-local.d.ts.map +1 -0
- package/dist/flow-eval-local.js +220 -0
- package/dist/flow-eval-local.js.map +1 -0
- package/dist/flow-eval-outcome.d.ts +22 -0
- package/dist/flow-eval-outcome.d.ts.map +1 -0
- package/dist/flow-eval-outcome.js +37 -0
- package/dist/flow-eval-outcome.js.map +1 -0
- package/dist/flow-eval-report.d.ts +106 -0
- package/dist/flow-eval-report.d.ts.map +1 -0
- package/dist/flow-eval-report.js +4 -0
- package/dist/flow-eval-report.js.map +1 -0
- package/dist/flow-eval-suite.d.ts +46 -0
- package/dist/flow-eval-suite.d.ts.map +1 -0
- package/dist/flow-eval-suite.js +144 -0
- package/dist/flow-eval-suite.js.map +1 -0
- package/dist/flow-eval-version.d.ts +59 -0
- package/dist/flow-eval-version.d.ts.map +1 -0
- package/dist/flow-eval-version.js +303 -0
- package/dist/flow-eval-version.js.map +1 -0
- package/dist/flow-eval.d.ts +41 -0
- package/dist/flow-eval.d.ts.map +1 -0
- package/dist/flow-eval.js +201 -0
- package/dist/flow-eval.js.map +1 -0
- package/dist/helper-operation-use.d.ts +18 -0
- package/dist/helper-operation-use.d.ts.map +1 -0
- package/dist/helper-operation-use.js +336 -0
- package/dist/helper-operation-use.js.map +1 -0
- package/dist/helper-preflight.d.ts.map +1 -1
- package/dist/helper-preflight.js +16 -2
- package/dist/helper-preflight.js.map +1 -1
- package/dist/helper-reference.d.ts +33 -0
- package/dist/helper-reference.d.ts.map +1 -1
- package/dist/helper-reference.js +5 -5
- package/dist/helper-reference.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/journal-budgeted-reads.d.ts +41 -0
- package/dist/journal-budgeted-reads.d.ts.map +1 -0
- package/dist/journal-budgeted-reads.js +142 -0
- package/dist/journal-budgeted-reads.js.map +1 -0
- package/dist/journal-client.d.ts +34 -29
- package/dist/journal-client.d.ts.map +1 -1
- package/dist/journal-client.js +45 -151
- package/dist/journal-client.js.map +1 -1
- package/dist/journal-connection.d.ts +42 -0
- package/dist/journal-connection.d.ts.map +1 -0
- package/dist/journal-connection.js +209 -0
- package/dist/journal-connection.js.map +1 -0
- package/dist/journal-read-policy.d.ts +38 -0
- package/dist/journal-read-policy.d.ts.map +1 -0
- package/dist/journal-read-policy.js +126 -0
- package/dist/journal-read-policy.js.map +1 -0
- package/dist/named-gate-lowering.d.ts.map +1 -1
- package/dist/named-gate-lowering.js +2 -6
- package/dist/named-gate-lowering.js.map +1 -1
- package/dist/re2js-embedded.d.ts +3 -0
- package/dist/re2js-embedded.d.ts.map +1 -0
- package/dist/re2js-embedded.js +4 -0
- package/dist/re2js-embedded.js.map +1 -0
- package/dist/spec.d.ts +10 -0
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/step-fields.d.ts +1 -1
- package/dist/step-fields.js +1 -1
- package/dist/step-fields.js.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +15 -0
- package/dist/validate.js.map +1 -1
- package/dist/worker-cli.d.ts +3 -1
- package/dist/worker-cli.d.ts.map +1 -1
- package/dist/worker-cli.js +15 -5
- package/dist/worker-cli.js.map +1 -1
- package/dist/worker-lease.d.ts.map +1 -1
- package/dist/worker-lease.js +11 -3
- package/dist/worker-lease.js.map +1 -1
- package/dist/worker.js +1 -1
- package/dist/worker.js.map +1 -1
- package/package.json +5 -3
- package/src/adapters/base.ts +16 -1
- package/src/adapters/claude.ts +8 -4
- package/src/adapters/codex.ts +15 -6
- package/src/agent-resume.ts +36 -0
- package/src/agent-transcript.ts +5 -3
- package/src/authored-flow-error.ts +9 -0
- package/src/authored-flow-executor.ts +18 -1
- package/src/authored-flow-loader.ts +27 -10
- package/src/authored-helper-effect.ts +3 -2
- package/src/authored-human.ts +5 -0
- package/src/authored-memory.ts +445 -15
- package/src/authored-node-entry.ts +6 -1
- package/src/authored-node-runner.ts +6 -3
- package/src/authored-root-readback.ts +100 -0
- package/src/authored-root.ts +58 -85
- package/src/authored-step-output.ts +3 -0
- package/src/authored-worker-step.ts +29 -4
- package/src/cli/check-helper-body.ts +9 -3
- package/src/cli/check-helper-surface.ts +43 -0
- package/src/cli/check-triggers.ts +9 -4
- package/src/cli/check.ts +37 -7
- package/src/cli/cloud-answer.ts +40 -0
- package/src/cli/cloud-connect-cli.ts +9 -2
- package/src/cli/cloud-human.ts +24 -0
- package/src/cli/cloud-live.ts +10 -5
- package/src/cli/cloud-mirror-session.ts +3 -2
- package/src/cli/cloud-run.ts +10 -1
- package/src/cli/detached-record.ts +71 -0
- package/src/cli/detached-run.ts +131 -0
- package/src/cli/diagnostic-fold.ts +28 -0
- package/src/cli/direct-run.ts +14 -1
- package/src/cli/eval.ts +141 -0
- package/src/cli/journal-timeout.ts +49 -0
- package/src/cli/local-agent-remedy.ts +6 -4
- package/src/cli/observer-session.ts +7 -1
- package/src/cli/reuse.ts +25 -0
- package/src/cli/run.ts +75 -67
- package/src/cli/running-step.ts +140 -0
- package/src/cli-adapter.ts +7 -1
- package/src/cli-commands.ts +43 -7
- package/src/cli-watch.ts +8 -5
- package/src/cli.ts +158 -51
- package/src/cloud-answer.ts +202 -0
- package/src/cloud-auth-store.ts +185 -0
- package/src/cloud-http.ts +61 -50
- package/src/cloud-human-wait.ts +23 -0
- package/src/cloud-mirror-transport.ts +1 -0
- package/src/cloud-run-record.ts +14 -5
- package/src/cloud-run.ts +46 -2
- package/src/communication/local.ts +6 -1
- package/src/communication/worker.ts +11 -3
- package/src/compile.ts +5 -3
- package/src/daemon-spec-validation.ts +126 -0
- package/src/failure-kinds.ts +17 -1
- package/src/flow-eval-cloud.ts +114 -0
- package/src/flow-eval-error.ts +10 -0
- package/src/flow-eval-gate.ts +114 -0
- package/src/flow-eval-local.ts +236 -0
- package/src/flow-eval-outcome.ts +43 -0
- package/src/flow-eval-report.ts +102 -0
- package/src/flow-eval-suite.ts +169 -0
- package/src/flow-eval-version.ts +316 -0
- package/src/flow-eval.ts +234 -0
- package/src/helper-operation-use.ts +285 -0
- package/src/helper-preflight.ts +17 -2
- package/src/helper-reference.ts +6 -6
- package/src/index.ts +15 -1
- package/src/journal-budgeted-reads.ts +134 -0
- package/src/journal-client.ts +59 -166
- package/src/journal-connection.ts +222 -0
- package/src/journal-read-policy.ts +123 -0
- package/src/named-gate-lowering.ts +2 -6
- package/src/re2js-embedded.ts +3 -0
- package/src/spec.ts +10 -0
- package/src/step-fields.ts +1 -1
- package/src/validate.ts +14 -0
- package/src/worker-cli.ts +14 -3
- package/src/worker-lease.ts +11 -3
- package/src/worker.ts +1 -1
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import fs from 'node:fs/promises';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { basename, dirname, join } from 'node:path';
|
|
6
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
7
|
+
// @agent-relay/cloud@12.4.1: types.js AUTH_FILE_PATH / DEFAULT_REFRESH_TIMEOUT_MS;
|
|
8
|
+
// auth.js writeStoredAuth, AUTH_LOCK_*, requestStoredAuthRefresh. Keep together
|
|
9
|
+
// for contract updates. flows additionally honours AGENT_RELAY_HOME on writes.
|
|
10
|
+
const AUTH_DIRECTORY = '.agentworkforce/relay';
|
|
11
|
+
const AUTH_FILE = 'cloud-auth.json';
|
|
12
|
+
const DIRECTORY_MODE = 0o700;
|
|
13
|
+
const FILE_MODE = 0o600;
|
|
14
|
+
const LOCK_RETRY_MS = 50;
|
|
15
|
+
// Interop constant: changing this can steal a live relay lock or delay recovery.
|
|
16
|
+
const LOCK_STALE_MS = 30_000;
|
|
17
|
+
const REFRESH_TIMEOUT_MS = 10_000;
|
|
18
|
+
const REFRESH_ROUTE = '/api/v1/auth/token/refresh';
|
|
19
|
+
// Deliberately shorter than relay's 30s acquire timeout for interactive reads.
|
|
20
|
+
const LOCK_ACQUIRE_MS = 5_000;
|
|
21
|
+
export function agentRelayCloudAuthPath(env = process.env) {
|
|
22
|
+
return join(env['AGENT_RELAY_HOME'] ?? join(homedir(), AUTH_DIRECTORY), AUTH_FILE);
|
|
23
|
+
}
|
|
24
|
+
function record(value) {
|
|
25
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
26
|
+
}
|
|
27
|
+
/** Explicit credentials bypass this store; expired fallback logins may be refreshed. */
|
|
28
|
+
export function readAgentRelayCloudLogin(env = process.env, read = path => readFileSync(path, 'utf8')) {
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(read(agentRelayCloudAuthPath(env)));
|
|
31
|
+
if (!record(parsed) || typeof parsed.apiUrl !== 'string' || typeof parsed.accessToken !== 'string'
|
|
32
|
+
|| !parsed.accessToken.trim())
|
|
33
|
+
return undefined;
|
|
34
|
+
const login = { ...parsed };
|
|
35
|
+
for (const key of ['accessTokenExpiresAt', 'refreshToken', 'refreshTokenExpiresAt']) {
|
|
36
|
+
if (typeof parsed[key] !== 'string')
|
|
37
|
+
delete login[key];
|
|
38
|
+
}
|
|
39
|
+
return login;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function expiredCloudLogin(login, now = Date.now()) {
|
|
46
|
+
const expiry = Date.parse(login.accessTokenExpiresAt ?? '');
|
|
47
|
+
return Number.isFinite(expiry) && expiry <= now;
|
|
48
|
+
}
|
|
49
|
+
export function canRefreshCloudLogin(login, now = Date.now()) {
|
|
50
|
+
return typeof login.refreshToken === 'string' && !!login.refreshToken.trim()
|
|
51
|
+
&& !(Date.parse(login.refreshTokenExpiresAt ?? '') <= now);
|
|
52
|
+
}
|
|
53
|
+
/** Shared transport policy; undefined lets the synchronous resolver keep its refusals. */
|
|
54
|
+
export function normalizeCloudBaseUrl(raw) {
|
|
55
|
+
try {
|
|
56
|
+
const url = new URL(raw);
|
|
57
|
+
if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash
|
|
58
|
+
|| !/^\/[A-Za-z0-9/_-]*$/u.test(url.pathname))
|
|
59
|
+
return undefined;
|
|
60
|
+
return `${url.origin}${url.pathname.replace(/\/+$/u, '')}`;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function writeLogin(path, login) {
|
|
67
|
+
await fs.mkdir(dirname(path), { recursive: true, mode: DIRECTORY_MODE });
|
|
68
|
+
const temporaryPath = join(dirname(path), `.${basename(path)}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`);
|
|
69
|
+
try {
|
|
70
|
+
await fs.writeFile(temporaryPath, `${JSON.stringify(login, null, 2)}\n`, { encoding: 'utf8', mode: FILE_MODE });
|
|
71
|
+
await fs.chmod(temporaryPath, FILE_MODE);
|
|
72
|
+
await fs.rename(temporaryPath, path);
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await fs.rm(temporaryPath, { force: true });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async function requestRefresh(login, baseUrl, options) {
|
|
79
|
+
const deadline = AbortSignal.timeout(Math.min(options.timeoutMs ?? REFRESH_TIMEOUT_MS, options.refreshTimeoutMs ?? REFRESH_TIMEOUT_MS));
|
|
80
|
+
try {
|
|
81
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${baseUrl}${REFRESH_ROUTE}`, {
|
|
82
|
+
method: 'POST', headers: { 'content-type': 'application/json' },
|
|
83
|
+
body: JSON.stringify({ refreshToken: login.refreshToken }), redirect: 'error',
|
|
84
|
+
signal: options.signal ? AbortSignal.any([options.signal, deadline]) : deadline,
|
|
85
|
+
});
|
|
86
|
+
if (!response.ok)
|
|
87
|
+
return { kind: 'refused', status: response.status };
|
|
88
|
+
const payload = await response.json();
|
|
89
|
+
if (!record(payload) || typeof payload.accessToken !== 'string' || !payload.accessToken.trim()
|
|
90
|
+
|| /[\r\n]/u.test(payload.accessToken) || /^(?:rk|ot)_live_/u.test(payload.accessToken.trim())
|
|
91
|
+
|| typeof payload.refreshToken !== 'string' || !payload.refreshToken.trim()
|
|
92
|
+
|| typeof payload.accessTokenExpiresAt !== 'string'
|
|
93
|
+
|| !(Date.parse(payload.accessTokenExpiresAt) > (options.now ?? Date.now)()))
|
|
94
|
+
return { kind: 'refused' };
|
|
95
|
+
const apiUrl = typeof payload.apiUrl === 'string' && payload.apiUrl.trim() ? payload.apiUrl.trim() : login.apiUrl;
|
|
96
|
+
const refreshTokenExpiresAt = typeof payload.refreshTokenExpiresAt === 'string' && payload.refreshTokenExpiresAt.trim()
|
|
97
|
+
? payload.refreshTokenExpiresAt.trim() : login.refreshTokenExpiresAt;
|
|
98
|
+
if (normalizeCloudBaseUrl(apiUrl) !== baseUrl
|
|
99
|
+
|| (refreshTokenExpiresAt !== undefined && !Number.isFinite(Date.parse(refreshTokenExpiresAt))))
|
|
100
|
+
return { kind: 'refused' };
|
|
101
|
+
return { kind: 'ready', login: { ...login, apiUrl, accessToken: payload.accessToken, refreshToken: payload.refreshToken,
|
|
102
|
+
accessTokenExpiresAt: payload.accessTokenExpiresAt, refreshTokenExpiresAt } };
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
options.signal?.throwIfAborted();
|
|
106
|
+
if (error instanceof SyntaxError && !deadline.aborted)
|
|
107
|
+
return { kind: 'refused' };
|
|
108
|
+
return { kind: 'transport', error: deadline.aborted ? deadline.reason : error };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** Serialize rotations with relay and re-source credentials after acquiring its lock. */
|
|
112
|
+
export async function refreshCloudLogin(login, baseUrl, options = {}) {
|
|
113
|
+
const path = agentRelayCloudAuthPath(options.env);
|
|
114
|
+
const lockPath = `${path}.lock`;
|
|
115
|
+
const now = options.now ?? Date.now;
|
|
116
|
+
const started = now();
|
|
117
|
+
const waitMs = Math.min(options.timeoutMs ?? LOCK_ACQUIRE_MS, options.lock?.acquireTimeoutMs ?? LOCK_ACQUIRE_MS);
|
|
118
|
+
let acquired = false;
|
|
119
|
+
try {
|
|
120
|
+
options.signal?.throwIfAborted();
|
|
121
|
+
await fs.mkdir(dirname(path), { recursive: true, mode: DIRECTORY_MODE });
|
|
122
|
+
while (!acquired) {
|
|
123
|
+
options.signal?.throwIfAborted();
|
|
124
|
+
try {
|
|
125
|
+
await fs.mkdir(lockPath, { mode: DIRECTORY_MODE });
|
|
126
|
+
acquired = true;
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (!record(error) || error.code !== 'EEXIST')
|
|
130
|
+
throw error;
|
|
131
|
+
try {
|
|
132
|
+
if (now() - (await fs.stat(lockPath)).mtimeMs > (options.lock?.staleMs ?? LOCK_STALE_MS)) {
|
|
133
|
+
await fs.rm(lockPath, { recursive: true, force: true });
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (!record(error) || error.code !== 'ENOENT')
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
const remaining = waitMs - (now() - started);
|
|
142
|
+
if (remaining <= 0)
|
|
143
|
+
return { kind: 'blocked' };
|
|
144
|
+
await delay(Math.min(options.lock?.retryMs ?? LOCK_RETRY_MS, remaining), undefined, { signal: options.signal });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const latest = readAgentRelayCloudLogin(options.env);
|
|
148
|
+
// A replaced/deleted login belongs to the other process; never overwrite it.
|
|
149
|
+
if (!latest || latest.apiUrl !== login.apiUrl || !expiredCloudLogin(latest, now()))
|
|
150
|
+
return { kind: 'current' };
|
|
151
|
+
if (!canRefreshCloudLogin(latest, now()))
|
|
152
|
+
return { kind: 'current' };
|
|
153
|
+
const result = await requestRefresh(latest, baseUrl, options);
|
|
154
|
+
if (result.kind !== 'ready')
|
|
155
|
+
return result;
|
|
156
|
+
await writeLogin(path, result.login);
|
|
157
|
+
return { kind: 'refreshed' };
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
options.signal?.throwIfAborted();
|
|
161
|
+
return { kind: 'unwritable', error, path };
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
// Never let cleanup replace the outcome: a rotation already persisted must
|
|
165
|
+
// be used, and a cancellation must propagate. A lock left behind ages past
|
|
166
|
+
// LOCK_STALE_MS and is reclaimed by the next caller, as relay does.
|
|
167
|
+
if (acquired)
|
|
168
|
+
await fs.rm(lockPath, { recursive: true, force: true }).catch(() => undefined);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=cloud-auth-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-auth-store.js","sourceRoot":"","sources":["../src/cloud-auth-store.ts"],"names":[],"mappings":"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"}
|
package/dist/cloud-http.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { agentRelayCloudAuthPath, readAgentRelayCloudLogin, type AgentRelayCloudLogin } from './cloud-auth-store.js';
|
|
1
2
|
export interface CloudConnectionOptions {
|
|
2
3
|
/** Cloud application base URL; defaults to https://agentrelay.com/cloud. */
|
|
3
4
|
apiUrl?: string;
|
|
@@ -30,7 +31,7 @@ export interface CloudRefusal {
|
|
|
30
31
|
* login` — cannot get that from prose without matching on it. Optional and
|
|
31
32
|
* additive: every existing `catch` on `code === 'configuration'` is unchanged.
|
|
32
33
|
*/
|
|
33
|
-
export type CloudConfigurationReason = 'auth_missing' | 'auth_expired' | 'url_invalid' | 'url_mismatch' | 'timeout_invalid';
|
|
34
|
+
export type CloudConfigurationReason = 'auth_missing' | 'auth_expired' | 'auth_store_unwritable' | 'auth_refresh_failed' | 'url_invalid' | 'url_mismatch' | 'timeout_invalid';
|
|
34
35
|
export declare class CloudFlowError extends Error {
|
|
35
36
|
readonly code: 'configuration' | 'unsupported_source' | 'invalid_input' | 'invalid_response' | 'http_error' | 'transport_error' | 'transient_error' | 'unsupported_storage_backend' | 'sync_too_large' | 'sync_unsupported' | 'patch_conflict' | 'integration_not_connected';
|
|
36
37
|
readonly status?: number | undefined;
|
|
@@ -39,25 +40,15 @@ export declare class CloudFlowError extends Error {
|
|
|
39
40
|
reason?: CloudConfigurationReason;
|
|
40
41
|
constructor(code: 'configuration' | 'unsupported_source' | 'invalid_input' | 'invalid_response' | 'http_error' | 'transport_error' | 'transient_error' | 'unsupported_storage_backend' | 'sync_too_large' | 'sync_unsupported' | 'patch_conflict' | 'integration_not_connected', message: string, status?: number | undefined, refusal?: CloudRefusal | undefined);
|
|
41
42
|
}
|
|
42
|
-
/**
|
|
43
|
-
* The `agent-relay cloud login` credential store. Read only when neither the
|
|
44
|
-
* `token` option nor `FLOWS_CLOUD_TOKEN` is set, so an explicit credential
|
|
45
|
-
* always wins and this file can change shape without breaking a configured
|
|
46
|
-
* caller. Its `apiUrl` becomes the default base URL for the same reason: a
|
|
47
|
-
* login against one deployment must not send its token to another.
|
|
48
|
-
*/
|
|
49
|
-
export declare function agentRelayCloudAuthPath(env?: NodeJS.ProcessEnv): string;
|
|
50
|
-
export interface AgentRelayCloudLogin {
|
|
51
|
-
apiUrl: string;
|
|
52
|
-
accessToken: string;
|
|
53
|
-
/** ISO-8601; the store carries it, so an expired login refuses with a real reason. */
|
|
54
|
-
accessTokenExpiresAt?: string;
|
|
55
|
-
}
|
|
56
|
-
export declare function readAgentRelayCloudLogin(env?: NodeJS.ProcessEnv, read?: (path: string) => string): AgentRelayCloudLogin | undefined;
|
|
57
43
|
export declare function cloudConnection(options: CloudConnectionOptions): {
|
|
58
44
|
baseUrl: string;
|
|
59
45
|
token: string;
|
|
60
46
|
};
|
|
47
|
+
/** Re-read after refresh; no cache that could hide a relay-side rotation. */
|
|
48
|
+
export declare function resolveCloudConnection(options: CloudConnectionOptions): Promise<{
|
|
49
|
+
baseUrl: string;
|
|
50
|
+
token: string;
|
|
51
|
+
}>;
|
|
61
52
|
export declare function cloudRequest(path: string, options: CloudConnectionOptions, body?: unknown): Promise<unknown>;
|
|
62
53
|
export interface CloudFetchInit {
|
|
63
54
|
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
package/dist/cloud-http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-http.d.ts","sourceRoot":"","sources":["../src/cloud-http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloud-http.d.ts","sourceRoot":"","sources":["../src/cloud-http.ts"],"names":[],"mappings":"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"}
|
package/dist/cloud-http.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { join } from 'node:path';
|
|
1
|
+
import { readAgentRelayCloudLogin, expiredCloudLogin, canRefreshCloudLogin, normalizeCloudBaseUrl, refreshCloudLogin } from './cloud-auth-store.js';
|
|
2
|
+
export { agentRelayCloudAuthPath, readAgentRelayCloudLogin } from './cloud-auth-store.js';
|
|
4
3
|
export class CloudFlowError extends Error {
|
|
5
4
|
code;
|
|
6
5
|
status;
|
|
@@ -21,40 +20,13 @@ function configurationError(reason, message) {
|
|
|
21
20
|
error.reason = reason;
|
|
22
21
|
return error;
|
|
23
22
|
}
|
|
24
|
-
/**
|
|
25
|
-
* The `agent-relay cloud login` credential store. Read only when neither the
|
|
26
|
-
* `token` option nor `FLOWS_CLOUD_TOKEN` is set, so an explicit credential
|
|
27
|
-
* always wins and this file can change shape without breaking a configured
|
|
28
|
-
* caller. Its `apiUrl` becomes the default base URL for the same reason: a
|
|
29
|
-
* login against one deployment must not send its token to another.
|
|
30
|
-
*/
|
|
31
|
-
export function agentRelayCloudAuthPath(env = process.env) {
|
|
32
|
-
return join(env['AGENT_RELAY_HOME'] ?? join(homedir(), '.agentworkforce/relay'), 'cloud-auth.json');
|
|
33
|
-
}
|
|
34
|
-
export function readAgentRelayCloudLogin(env = process.env, read = path => readFileSync(path, 'utf8')) {
|
|
35
|
-
let parsed;
|
|
36
|
-
try {
|
|
37
|
-
parsed = JSON.parse(read(agentRelayCloudAuthPath(env)));
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return undefined;
|
|
41
|
-
}
|
|
42
|
-
if (!isCloudRecord(parsed) || typeof parsed.apiUrl !== 'string' || typeof parsed.accessToken !== 'string'
|
|
43
|
-
|| !parsed.accessToken.trim())
|
|
44
|
-
return undefined;
|
|
45
|
-
return {
|
|
46
|
-
apiUrl: parsed.apiUrl, accessToken: parsed.accessToken,
|
|
47
|
-
...(typeof parsed.accessTokenExpiresAt === 'string' ? { accessTokenExpiresAt: parsed.accessTokenExpiresAt } : {}),
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
23
|
export function cloudConnection(options) {
|
|
51
|
-
let rawToken = options
|
|
24
|
+
let rawToken = explicitCloudToken(options);
|
|
52
25
|
let loginApiUrl;
|
|
53
26
|
if (rawToken === undefined) {
|
|
54
27
|
const login = readAgentRelayCloudLogin();
|
|
55
28
|
if (login !== undefined) {
|
|
56
|
-
|
|
57
|
-
if (Number.isFinite(expiresAt) && expiresAt <= Date.now()) {
|
|
29
|
+
if (expiredCloudLogin(login)) {
|
|
58
30
|
throw configurationError('auth_expired', 'The agent-relay cloud login has expired. Run `agent-relay cloud login` again, or set FLOWS_CLOUD_TOKEN.');
|
|
59
31
|
}
|
|
60
32
|
rawToken = login.accessToken;
|
|
@@ -73,11 +45,10 @@ export function cloudConnection(options) {
|
|
|
73
45
|
catch {
|
|
74
46
|
throw configurationError('url_invalid', 'FLOWS_CLOUD_URL must be an absolute Cloud application base URL.');
|
|
75
47
|
}
|
|
76
|
-
|
|
77
|
-
|
|
48
|
+
const baseUrl = normalizeCloudBaseUrl(url.href);
|
|
49
|
+
if (baseUrl === undefined) {
|
|
78
50
|
throw configurationError('url_invalid', 'Cloud URL must use HTTPS and a plain base path.');
|
|
79
51
|
}
|
|
80
|
-
const baseUrl = `${url.origin}${url.pathname.replace(/\/+$/u, '')}`;
|
|
81
52
|
// A login-store token is bound to the deployment that issued it. An explicit
|
|
82
53
|
// URL that names another deployment gets no token at all — set
|
|
83
54
|
// FLOWS_CLOUD_TOKEN for that deployment instead.
|
|
@@ -97,6 +68,57 @@ export function cloudConnection(options) {
|
|
|
97
68
|
}
|
|
98
69
|
return { baseUrl, token };
|
|
99
70
|
}
|
|
71
|
+
function explicitCloudToken(options) {
|
|
72
|
+
return options.token ?? process.env['FLOWS_CLOUD_TOKEN'];
|
|
73
|
+
}
|
|
74
|
+
function requestTimeout(options) {
|
|
75
|
+
const timeout = options.requestTimeoutMs ?? 30_000;
|
|
76
|
+
if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 2_147_483_647) {
|
|
77
|
+
throw configurationError('timeout_invalid', 'requestTimeoutMs must be a positive 32-bit integer.');
|
|
78
|
+
}
|
|
79
|
+
return timeout;
|
|
80
|
+
}
|
|
81
|
+
async function ensureFreshCloudLogin(options) {
|
|
82
|
+
if (explicitCloudToken(options) !== undefined)
|
|
83
|
+
return;
|
|
84
|
+
const login = readAgentRelayCloudLogin();
|
|
85
|
+
if (!login || !expiredCloudLogin(login) || !canRefreshCloudLogin(login))
|
|
86
|
+
return;
|
|
87
|
+
const baseUrl = normalizeCloudBaseUrl(options.apiUrl ?? process.env['FLOWS_CLOUD_URL'] ?? login.apiUrl);
|
|
88
|
+
if (baseUrl === undefined || baseUrl !== normalizeCloudBaseUrl(login.apiUrl))
|
|
89
|
+
return;
|
|
90
|
+
const result = await refreshCloudLogin(login, baseUrl, { signal: options.signal, timeoutMs: requestTimeout(options) });
|
|
91
|
+
switch (result.kind) {
|
|
92
|
+
case 'current':
|
|
93
|
+
case 'refreshed': return;
|
|
94
|
+
case 'blocked': throw new CloudFlowError('transient_error', 'Another process is refreshing the agent-relay cloud login; try again.');
|
|
95
|
+
case 'transport': throw transportError(result.error);
|
|
96
|
+
case 'unwritable': {
|
|
97
|
+
const errno = isCloudRecord(result.error) && typeof result.error.code === 'string' ? result.error.code : 'unknown error';
|
|
98
|
+
throw configurationError('auth_store_unwritable', `Cannot update the agent-relay cloud login at ${result.path} (${errno}). Check filesystem permissions and available space.`);
|
|
99
|
+
}
|
|
100
|
+
case 'refused':
|
|
101
|
+
if (result.status !== undefined && [400, 401, 403].includes(result.status)) {
|
|
102
|
+
throw configurationError('auth_expired', 'The agent-relay cloud login has expired. Run `agent-relay cloud login` again, or set FLOWS_CLOUD_TOKEN.');
|
|
103
|
+
}
|
|
104
|
+
// Only statuses a poll may retry keep http_error: read CLIs map any other
|
|
105
|
+
// http_error status (a 404 above all) to a fact about the run, not the login.
|
|
106
|
+
if (result.status !== undefined && [408, 429, 500, 502, 503, 504].includes(result.status)) {
|
|
107
|
+
throw new CloudFlowError('http_error', `Cloud login refresh failed with HTTP ${result.status}.`, result.status);
|
|
108
|
+
}
|
|
109
|
+
if (result.status !== undefined) {
|
|
110
|
+
throw configurationError('auth_refresh_failed', `Cloud login refresh failed with HTTP ${result.status}. `
|
|
111
|
+
+ 'Run `agent-relay cloud login` again, or set FLOWS_CLOUD_TOKEN.');
|
|
112
|
+
}
|
|
113
|
+
throw new CloudFlowError('invalid_response', 'Cloud returned an unusable login refresh response.');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Re-read after refresh; no cache that could hide a relay-side rotation. */
|
|
117
|
+
export async function resolveCloudConnection(options) {
|
|
118
|
+
requestTimeout(options);
|
|
119
|
+
await ensureFreshCloudLogin(options);
|
|
120
|
+
return cloudConnection(options);
|
|
121
|
+
}
|
|
100
122
|
export async function cloudRequest(path, options, body) {
|
|
101
123
|
return cloudFetch(path, options, body === undefined
|
|
102
124
|
? { method: 'GET' }
|
|
@@ -104,11 +126,8 @@ export async function cloudRequest(path, options, body) {
|
|
|
104
126
|
}
|
|
105
127
|
/** One authenticated Cloud request. Every transport error is typed; no retries. */
|
|
106
128
|
export async function cloudFetch(path, options, init) {
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 2_147_483_647) {
|
|
110
|
-
throw configurationError('timeout_invalid', 'requestTimeoutMs must be a positive 32-bit integer.');
|
|
111
|
-
}
|
|
129
|
+
const timeout = requestTimeout(options);
|
|
130
|
+
const { baseUrl, token } = await resolveCloudConnection(options);
|
|
112
131
|
const bearer = init.bearerToken ?? token;
|
|
113
132
|
if (/[\r\n]/u.test(bearer) || !bearer.trim()) {
|
|
114
133
|
throw new CloudFlowError('invalid_response', 'Cloud issued an unusable storage credential.');
|
package/dist/cloud-http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-http.js","sourceRoot":"","sources":["../src/cloud-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cloud-http.js","sourceRoot":"","sources":["../src/cloud-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type HumanRecipient } from './human-to.js';
|
|
2
|
+
export interface CloudHumanWait {
|
|
3
|
+
waitId: string;
|
|
4
|
+
question?: string;
|
|
5
|
+
to?: string;
|
|
6
|
+
recipient?: HumanRecipient;
|
|
7
|
+
}
|
|
8
|
+
/** Missing display fields do not invalidate an attested park. */
|
|
9
|
+
export declare function readCloudHumanWaitValue(value: unknown): CloudHumanWait | undefined;
|
|
10
|
+
//# sourceMappingURL=cloud-human-wait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-human-wait.d.ts","sourceRoot":"","sources":["../src/cloud-human-wait.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAUlF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HUMAN_WAIT_ID } from './authored-human.js';
|
|
2
|
+
import { isCloudRecord } from './cloud-http.js';
|
|
3
|
+
import { parseHumanTo } from './human-to.js';
|
|
4
|
+
/** Missing display fields do not invalidate an attested park. */
|
|
5
|
+
export function readCloudHumanWaitValue(value) {
|
|
6
|
+
if (!isCloudRecord(value) || typeof value.waitId !== 'string' || !HUMAN_WAIT_ID.test(value.waitId))
|
|
7
|
+
return undefined;
|
|
8
|
+
const to = typeof value.to === 'string' ? value.to : undefined;
|
|
9
|
+
const parsed = to === undefined ? undefined : parseHumanTo(to);
|
|
10
|
+
return {
|
|
11
|
+
waitId: value.waitId,
|
|
12
|
+
...(typeof value.question === 'string' ? { question: value.question } : {}),
|
|
13
|
+
...(to === undefined ? {} : { to }),
|
|
14
|
+
...(parsed?.ok ? { recipient: parsed.recipient } : {}),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=cloud-human-wait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-human-wait.js","sourceRoot":"","sources":["../src/cloud-human-wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC;AASlE,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACrH,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,MAAM,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QACnC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-mirror-transport.d.ts","sourceRoot":"","sources":["../src/cloud-mirror-transport.ts"],"names":[],"mappings":"AA+BA,OAAO,EAA0E,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACtI,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtE,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAID;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"cloud-mirror-transport.d.ts","sourceRoot":"","sources":["../src/cloud-mirror-transport.ts"],"names":[],"mappings":"AA+BA,OAAO,EAA0E,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACtI,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtE,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAID;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,mFAAmF;AACnF,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJ/B,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;gBAG5B,YAAY,EAAE,kBAAkB,EACjD,OAAO,GAAE,sBAA2B;IAKtC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;OAIG;YACW,IAAI;IAiBZ,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAYxE,eAAe,CACnB,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,EAAE,CAAA;KAAE,EACtH,MAAM,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACxD,OAAO,CAAC,OAAO,CAAC;IAQb,YAAY,CAChB,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,gBAAgB,EAAE,MAAM,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAQnB;;;;OAIG;IACG,SAAS,CACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAkBnB;;;;OAIG;IACG,cAAc,CAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,EAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;CAqBpB"}
|
|
@@ -60,6 +60,7 @@ export async function registerLocalRun(source, options = {}) {
|
|
|
60
60
|
|| typeof callbackToken !== 'string' || callbackToken.length === 0) {
|
|
61
61
|
throw new CloudFlowError('invalid_response', 'Cloud registered the run without a usable credential.');
|
|
62
62
|
}
|
|
63
|
+
// Registration above already refreshed the store through cloudFetch.
|
|
63
64
|
const { baseUrl } = cloudConnection(options);
|
|
64
65
|
const runUrl = typeof result['runUrl'] === 'string' && /^https:\/\//u.test(result['runUrl'])
|
|
65
66
|
? result['runUrl']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-mirror-transport.js","sourceRoot":"","sources":["../src/cloud-mirror-transport.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,mDAAmD;AACnD,EAAE;AACF,mFAAmF;AACnF,mEAAmE;AACnE,mFAAmF;AACnF,mEAAmE;AACnE,kFAAkF;AAClF,sEAAsE;AACtE,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,2DAA2D;AAC3D,EAAE;AACF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,2EAA2E;AAC3E,8CAA8C;AAE9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAA+B,MAAM,iBAAiB,CAAC;AAiDtI,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAuB,EACvB,UAAkC,EAAE;IAEpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE;QACtD,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,gBAAgB,EAAE,IAAI;YACtB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACjE,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;SAChG,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,8CAA8C,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;WACrD,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,uDAAuD,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1F,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClB,CAAC,CAAC,GAAG,OAAO,uBAAuB,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC;IACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClE,CAAC;AAED,mFAAmF;AACnF,MAAM,OAAO,YAAY;IAKJ;IAJnB,8EAA8E;IAC7D,KAAK,CAAyB;IAE/C,YACmB,YAAgC,EACjD,UAAkC,EAAE;QADnB,iBAAY,GAAZ,YAAY,CAAoB;QAGjD,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;IACtF,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,IAAI,CAChB,IAAY,EACZ,IAAY,EACZ,OAAqD,EAAE;QAEvD,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,IAAI,EAAE;gBACrB,GAAG,IAAI,CAAC,KAAK;gBACb,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7D,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;aAC9E,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAkB,EAAE,MAAoB;QACzD,OAAO,IAAI,CAAC,IAAI,CACd,0BAA0B,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,EAC1D,IAAI,CAAC,SAAS,CAAC;YACb,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;SAC7B,CAAC,EACF,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,QAAsH,EACtH,SAAuD,EAAE;QAEzD,OAAO,IAAI,CAAC,IAAI,CACd,0BAA0B,IAAI,CAAC,YAAY,CAAC,KAAK,iBAAiB,EAClE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAA2B,EAC3B,gBAAwB,EACxB,MAAoB,EACpB,SAAkB;QAElB,OAAO,IAAI,CAAC,IAAI,CACd,0BAA0B,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EACzD,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAChF,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CACnG,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CACb,GAAW,EACX,KAAiB,EACjB,MAAoB,EACpB,SAAkB;QAElB,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1F,IAAI,CAAC;YACH,MAAM,UAAU,CACd,0BAA0B,IAAI,CAAC,YAAY,CAAC,KAAK,YAAY,GAAG,EAAE,EAClE;gBACE,GAAG,IAAI,CAAC,KAAK;gBACb,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC3C,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;aACpE,EACD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAC1D,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAClB,MAA4C,EAC5C,MAA+B,EAC/B,KAAc,EACd,MAAoB,EACpB,SAAkB;QAElB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,4BAA4B,EAAE;gBAC7C,GAAG,IAAI,CAAC,KAAK;gBACb,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC3C,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;aACpE,EAAE;gBACD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;oBAC9B,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;oBAC9C,MAAM;oBACN,MAAM;oBACN,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;iBAC1C,CAAC;aACH,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"cloud-mirror-transport.js","sourceRoot":"","sources":["../src/cloud-mirror-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import { type CloudHumanWait } from './cloud-human-wait.js';
|
|
1
2
|
import type { RunCompletionReason } from './protocol.js';
|
|
2
3
|
export type CloudRunState = {
|
|
4
|
+
runId: string;
|
|
5
|
+
status: 'needs_human';
|
|
6
|
+
completionReason: 'needs_human';
|
|
7
|
+
humanWait?: CloudHumanWait;
|
|
8
|
+
} | {
|
|
3
9
|
runId: string;
|
|
4
10
|
status: 'pending' | 'launching' | 'running';
|
|
5
11
|
} | {
|
|
@@ -12,8 +18,7 @@ export type CloudRunState = {
|
|
|
12
18
|
*
|
|
13
19
|
* The one vocabulary for the question, so `run --cloud --wait`,
|
|
14
20
|
* `status --cloud --watch` and `logs --follow` cannot disagree about what
|
|
15
|
-
* `launching` means.
|
|
16
|
-
* not a run status and never reaches here.
|
|
21
|
+
* `launching` means. A normalized `needs_human` run is terminal for now.
|
|
17
22
|
*/
|
|
18
23
|
export declare function isCloudRunActive(status: string): boolean;
|
|
19
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-run-record.d.ts","sourceRoot":"","sources":["../src/cloud-run-record.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloud-run-record.d.ts","sourceRoot":"","sources":["../src/cloud-run-record.ts"],"names":[],"mappings":"AAeA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,MAAM,aAAa,GACrB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,gBAAgB,EAAE,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,cAAc,CAAA;CAAE,GACrG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;CAAE,GAC9D;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAAC,gBAAgB,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAK3G;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CA0BzE"}
|
package/dist/cloud-run-record.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// What a Cloud run record has to say before this client will act on it.
|
|
2
2
|
//
|
|
3
|
-
// One validator
|
|
3
|
+
// One validator for hosted observation and answer/resume. `waitForCloudFlowRun` (cloud-run.ts) blocks on
|
|
4
4
|
// it to decide when a hosted `flows run --wait` is over, and the live read
|
|
5
5
|
// verbs (cli/cloud-live.ts, through `getCloudRunDetailLive`) block on it to
|
|
6
6
|
// decide when `--watch` and `--follow` stop and with which exit code. Both
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// said. Attesting an outcome is a different job to rendering one: a
|
|
13
13
|
// `completed` header with no valid `completionReason` attests nothing, and
|
|
14
14
|
// must not become exit 0.
|
|
15
|
+
import { readCloudHumanWaitValue } from './cloud-human-wait.js';
|
|
15
16
|
import { RUN_COMPLETION_REASONS } from '@relayflows/surface';
|
|
16
17
|
import { CloudFlowError, isCloudRecord } from './cloud-http.js';
|
|
17
18
|
/** The statuses that mean the hosted run has not finished. */
|
|
@@ -21,8 +22,7 @@ const ACTIVE_RUN_STATUSES = ['pending', 'launching', 'running'];
|
|
|
21
22
|
*
|
|
22
23
|
* The one vocabulary for the question, so `run --cloud --wait`,
|
|
23
24
|
* `status --cloud --watch` and `logs --follow` cannot disagree about what
|
|
24
|
-
* `launching` means.
|
|
25
|
-
* not a run status and never reaches here.
|
|
25
|
+
* `launching` means. A normalized `needs_human` run is terminal for now.
|
|
26
26
|
*/
|
|
27
27
|
export function isCloudRunActive(status) {
|
|
28
28
|
return ACTIVE_RUN_STATUSES.includes(status);
|
|
@@ -40,11 +40,19 @@ export function cloudRunState(body, runId) {
|
|
|
40
40
|
|| !['pending', 'launching', 'running', 'completed', 'failed', 'cancelled'].includes(body.status)) {
|
|
41
41
|
throw new CloudFlowError('invalid_response', 'Cloud returned an invalid v2 run record.');
|
|
42
42
|
}
|
|
43
|
+
const report = body.result;
|
|
44
|
+
const reason = isCloudRecord(report) ? report.completionReason : undefined;
|
|
45
|
+
if (reason === 'needs_human') {
|
|
46
|
+
if (body.status !== 'failed') {
|
|
47
|
+
throw new CloudFlowError('invalid_response', `Cloud reports needs_human under status ${body.status}; expected failed.`);
|
|
48
|
+
}
|
|
49
|
+
const humanWait = readCloudHumanWaitValue(isCloudRecord(report) ? report.humanWait : undefined)
|
|
50
|
+
?? readCloudHumanWaitValue(body.humanWait);
|
|
51
|
+
return { runId, status: 'needs_human', completionReason: 'needs_human', ...(humanWait ? { humanWait } : {}) };
|
|
52
|
+
}
|
|
43
53
|
if (isCloudRunActive(body.status)) {
|
|
44
54
|
return { runId, status: body.status };
|
|
45
55
|
}
|
|
46
|
-
const report = body.result;
|
|
47
|
-
const reason = isCloudRecord(report) ? report.completionReason : undefined;
|
|
48
56
|
if (typeof reason !== 'string' || !RUN_COMPLETION_REASONS.includes(reason)
|
|
49
57
|
|| (body.status === 'completed' && (reason !== 'success' || !isCloudRecord(report) || report.ok !== true || report.status !== 'completed'))
|
|
50
58
|
|| (body.status === 'failed' && !['step_failed', 'budget_exceeded'].includes(reason))
|