@relayflows/sdk 2.0.31 → 2.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/authored-preflight.d.ts +4 -0
  2. package/dist/authored-preflight.d.ts.map +1 -0
  3. package/dist/authored-preflight.js +50 -0
  4. package/dist/authored-preflight.js.map +1 -0
  5. package/dist/authored-worker-step.d.ts.map +1 -1
  6. package/dist/authored-worker-step.js +3 -2
  7. package/dist/authored-worker-step.js.map +1 -1
  8. package/dist/cli/check.d.ts +10 -2
  9. package/dist/cli/check.d.ts.map +1 -1
  10. package/dist/cli/check.js +16 -137
  11. package/dist/cli/check.js.map +1 -1
  12. package/dist/cli/cli-probe.d.ts +20 -0
  13. package/dist/cli/cli-probe.d.ts.map +1 -0
  14. package/dist/cli/cli-probe.js +166 -0
  15. package/dist/cli/cli-probe.js.map +1 -0
  16. package/dist/cli/cloud-mirror-session.d.ts +97 -0
  17. package/dist/cli/cloud-mirror-session.d.ts.map +1 -0
  18. package/dist/cli/cloud-mirror-session.js +264 -0
  19. package/dist/cli/cloud-mirror-session.js.map +1 -0
  20. package/dist/cli-commands.d.ts +6 -0
  21. package/dist/cli-commands.d.ts.map +1 -1
  22. package/dist/cli-commands.js +1 -0
  23. package/dist/cli-commands.js.map +1 -1
  24. package/dist/cli.d.ts +7 -0
  25. package/dist/cli.d.ts.map +1 -1
  26. package/dist/cli.js +84 -18
  27. package/dist/cli.js.map +1 -1
  28. package/dist/cloud-deploy.d.ts +1 -1
  29. package/dist/cloud-deploy.d.ts.map +1 -1
  30. package/dist/cloud-deploy.js +24 -8
  31. package/dist/cloud-deploy.js.map +1 -1
  32. package/dist/cloud-mirror-ledger.d.ts +40 -0
  33. package/dist/cloud-mirror-ledger.d.ts.map +1 -0
  34. package/dist/cloud-mirror-ledger.js +142 -0
  35. package/dist/cloud-mirror-ledger.js.map +1 -0
  36. package/dist/cloud-mirror-step.d.ts +180 -0
  37. package/dist/cloud-mirror-step.d.ts.map +1 -0
  38. package/dist/cloud-mirror-step.js +523 -0
  39. package/dist/cloud-mirror-step.js.map +1 -0
  40. package/dist/cloud-mirror-transport.d.ts +94 -0
  41. package/dist/cloud-mirror-transport.d.ts.map +1 -0
  42. package/dist/cloud-mirror-transport.js +163 -0
  43. package/dist/cloud-mirror-transport.js.map +1 -0
  44. package/dist/cloud-mirror.d.ts +132 -0
  45. package/dist/cloud-mirror.d.ts.map +1 -0
  46. package/dist/cloud-mirror.js +556 -0
  47. package/dist/cloud-mirror.js.map +1 -0
  48. package/dist/cloud-transcript-codex.d.ts.map +1 -1
  49. package/dist/cloud-transcript-codex.js +90 -4
  50. package/dist/cloud-transcript-codex.js.map +1 -1
  51. package/dist/cloud-transcript-types.d.ts +19 -1
  52. package/dist/cloud-transcript-types.d.ts.map +1 -1
  53. package/dist/cloud-transcript-types.js.map +1 -1
  54. package/dist/cloud-transcript.d.ts +1 -1
  55. package/dist/cloud-transcript.d.ts.map +1 -1
  56. package/dist/cloud-transcript.js +10 -0
  57. package/dist/cloud-transcript.js.map +1 -1
  58. package/dist/helper-reference.d.ts.map +1 -1
  59. package/dist/helper-reference.js +134 -6
  60. package/dist/helper-reference.js.map +1 -1
  61. package/dist/hosted-extension-runtime.js +1 -1
  62. package/dist/hosted-extension-sandbox.js +1 -1
  63. package/dist/package-version.d.ts +10 -0
  64. package/dist/package-version.d.ts.map +1 -0
  65. package/dist/package-version.js +22 -0
  66. package/dist/package-version.js.map +1 -0
  67. package/dist/preflight.d.ts +14 -0
  68. package/dist/preflight.d.ts.map +1 -1
  69. package/dist/preflight.js +18 -3
  70. package/dist/preflight.js.map +1 -1
  71. package/dist/relay-cli.d.ts.map +1 -1
  72. package/dist/relay-cli.js +1 -21
  73. package/dist/relay-cli.js.map +1 -1
  74. package/package.json +2 -2
  75. package/src/authored-preflight.ts +46 -0
  76. package/src/authored-worker-step.ts +4 -3
  77. package/src/cli/check.ts +25 -163
  78. package/src/cli/cli-probe.ts +194 -0
  79. package/src/cli/cloud-mirror-session.ts +329 -0
  80. package/src/cli-commands.ts +1 -0
  81. package/src/cli.ts +94 -19
  82. package/src/cloud-deploy.ts +26 -8
  83. package/src/cloud-mirror-ledger.ts +161 -0
  84. package/src/cloud-mirror-step.ts +650 -0
  85. package/src/cloud-mirror-transport.ts +261 -0
  86. package/src/cloud-mirror.ts +633 -0
  87. package/src/cloud-transcript-codex.ts +96 -4
  88. package/src/cloud-transcript-types.ts +18 -1
  89. package/src/cloud-transcript.ts +9 -1
  90. package/src/helper-reference.ts +131 -6
  91. package/src/hosted-extension-runtime.ts +1 -1
  92. package/src/hosted-extension-sandbox.ts +1 -1
  93. package/src/package-version.ts +23 -0
  94. package/src/preflight.ts +31 -7
  95. package/src/relay-cli.ts +1 -24
@@ -0,0 +1,166 @@
1
+ import { accessSync, constants } from 'node:fs';
2
+ import { isAbsolute, resolve } from 'node:path';
3
+ import { execFile, spawnSync } from 'node:child_process';
4
+ import { agentEnvironment, brokerEnvironment } from '../communication/environment.js';
5
+ import { adapterIdentification, authenticationProbe, cliAdapterKind, displayInvocation, modelReadinessProbe } from '../cli-adapter.js';
6
+ import { MODEL_ENV } from '../worker-cli.js';
7
+ import { CliProbeError } from '../preflight.js';
8
+ /** One decision sequence; checking uses synchronous I/O, live flows yield the loop. */
9
+ export function probeCli(...args) {
10
+ return driveSync(probeSequence(...args));
11
+ }
12
+ export async function probeCliAsync(...args) {
13
+ const sequence = probeSequence(...args);
14
+ let next = sequence.next();
15
+ while (!next.done)
16
+ next = sequence.next(await runProbeAsync(next.value));
17
+ return next.value;
18
+ }
19
+ export function resolveExecutable(command, directory) {
20
+ return driveSync(executableSequence(command, directory));
21
+ }
22
+ function driveSync(sequence) {
23
+ let next = sequence.next();
24
+ while (!next.done) {
25
+ const request = next.value;
26
+ const result = spawnSync(request.executable, request.invocation.args, {
27
+ ...probeOptions(request),
28
+ // Preserve the old synchronous probe contract: provider CLIs must not
29
+ // inherit a readable stdin that can block auth/identify probes.
30
+ stdio: ['ignore', 'pipe', 'pipe'],
31
+ });
32
+ const failure = classifySpawnFailure(result.error, result.signal, request.invocation.timeoutMs);
33
+ if (failure !== undefined)
34
+ throw failure;
35
+ next = sequence.next({ status: result.status, stdout: result.stdout ?? '', stderr: result.stderr ?? '' });
36
+ }
37
+ return next.value;
38
+ }
39
+ function probeOptions({ directory, invocation, environment }) {
40
+ const env = { ...environment };
41
+ delete env[MODEL_ENV];
42
+ if (invocation.modelEnv !== undefined)
43
+ env[MODEL_ENV] = invocation.modelEnv;
44
+ return { cwd: directory, encoding: 'utf8', timeout: invocation.timeoutMs,
45
+ maxBuffer: 1024 * 1024, env };
46
+ }
47
+ function runProbeAsync(request) {
48
+ return new Promise((resolve, reject) => {
49
+ const child = execFile(request.executable, request.invocation.args, probeOptions(request), (error, stdout, stderr) => {
50
+ // Numeric exit codes are probe results; launch, timeout, signal and buffer
51
+ // errors are failures to collect a fact, just as in the synchronous driver.
52
+ if (error?.killed && typeof error.code !== 'string')
53
+ return reject(new CliProbeError(`timeout:${request.invocation.timeoutMs}ms`));
54
+ const failure = classifySpawnFailure(error !== null && typeof error.code !== 'number' && error.signal == null ? error : undefined, error?.signal ?? null, request.invocation.timeoutMs);
55
+ if (failure !== undefined)
56
+ return reject(failure);
57
+ resolve({ status: error === null ? 0 : typeof error.code === 'number' ? error.code : null,
58
+ stdout, stderr });
59
+ });
60
+ child.stdin?.end();
61
+ });
62
+ }
63
+ function* probeSequence(cli, directory, model, execution) {
64
+ const executable = yield* executableSequence(cli, directory);
65
+ if (executable === undefined)
66
+ return { exists: false, authenticated: false };
67
+ const kind = cliAdapterKind(executable);
68
+ // Relay owns interactive CLI launch/injection. Its generic PTY path is not
69
+ // the headless wrapper protocol; do not demand that protocol from Gemini,
70
+ // Cursor, OpenCode, or other interactive tools. Never invent an auth pass.
71
+ if (execution === 'managed' && kind === 'relayflows-wrapper-v1') {
72
+ return { exists: true, supported: true, authenticated: 'unverified' };
73
+ }
74
+ const environment = execution === 'managed'
75
+ ? { ...brokerEnvironment(process.env), ...agentEnvironment(executable) } : process.env;
76
+ const probe = (invocation) => ({ executable, directory, invocation, environment });
77
+ const identification = adapterIdentification(kind);
78
+ const identified = yield probe(identification.invocation);
79
+ if (identified.status !== 0
80
+ || (identification.expectedStdout !== undefined
81
+ && identified.stdout.trim() !== identification.expectedStdout)) {
82
+ return { exists: true, supported: false, authenticated: false };
83
+ }
84
+ const auth = authenticationProbe(kind);
85
+ const authCommand = displayInvocation(cli, auth);
86
+ if (model === undefined) {
87
+ return {
88
+ exists: true,
89
+ supported: true,
90
+ authenticated: (yield probe(auth)).status === 0,
91
+ authCommand,
92
+ };
93
+ }
94
+ const scoped = modelReadinessProbe(kind, model);
95
+ const modelCommand = displayInvocation(cli, scoped);
96
+ // A successful real provider round trip (or identified wrapper probe)
97
+ // proves both auth and exact-model access. On failure, run the adapter's
98
+ // actual auth command solely to classify auth vs model access truthfully.
99
+ if ((yield probe(scoped)).status === 0) {
100
+ return {
101
+ exists: true,
102
+ supported: true,
103
+ authenticated: true,
104
+ modelAvailable: true,
105
+ authCommand,
106
+ modelCommand,
107
+ };
108
+ }
109
+ const authProbe = yield probe(auth);
110
+ const authenticated = authProbe.status === 0;
111
+ return {
112
+ exists: true,
113
+ supported: true,
114
+ authenticated,
115
+ modelAvailable: false,
116
+ authCommand,
117
+ modelCommand,
118
+ // Only on failure: on success there is nothing to explain, and the output
119
+ // is the most identity-bearing thing this function touches.
120
+ ...(authenticated
121
+ ? {}
122
+ : {
123
+ authExitCode: authProbe.status,
124
+ authFailureDetail: redactProbeOutput(`${authProbe.stderr}${authProbe.stdout}`).trim().slice(0, 500),
125
+ }),
126
+ };
127
+ }
128
+ /**
129
+ * Redact anything that looks like a credential or an account identifier.
130
+ *
131
+ * `auth status` output is diagnostic, but it is also the one place an account
132
+ * email, org id or token fragment can appear. The point of surfacing it is to
133
+ * say WHY a probe failed, which survives redaction; leaking an identity into a
134
+ * refusal message that gets pasted into issues does not.
135
+ */
136
+ function redactProbeOutput(text) {
137
+ return text
138
+ .replace(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g, '<redacted-email>')
139
+ .replace(/\b(sk|pk|oat|rt)[-_][A-Za-z0-9._-]{8,}/gi, '<redacted-token>')
140
+ .replace(/\b[A-Fa-f0-9]{32,}\b/g, '<redacted-hex>');
141
+ }
142
+ function* executableSequence(command, directory) {
143
+ if (command.includes('/') || isAbsolute(command)) {
144
+ const path = isAbsolute(command) ? command : resolve(directory, command);
145
+ try {
146
+ accessSync(path, constants.X_OK);
147
+ return path;
148
+ }
149
+ catch {
150
+ return undefined;
151
+ }
152
+ }
153
+ const result = yield { executable: 'which', directory: process.cwd(),
154
+ invocation: { args: [command], timeoutMs: 5_000 }, environment: process.env };
155
+ return result.status === 0 ? result.stdout.trim() : undefined;
156
+ }
157
+ function classifySpawnFailure(error, signal, timeoutMs) {
158
+ if (error !== undefined) {
159
+ const detail = error.code === 'ETIMEDOUT'
160
+ ? `timeout:${timeoutMs}ms`
161
+ : 'spawn_failed';
162
+ return new CliProbeError(detail);
163
+ }
164
+ return signal === null ? undefined : new CliProbeError(`signal:${signal}`);
165
+ }
166
+ //# sourceMappingURL=cli-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-probe.js","sourceRoot":"","sources":["../../src/cli/cli-probe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import type { CliIo } from '../cli.js';
2
+ import { createRunMirror } from '../cloud-mirror.js';
3
+ import { registerLocalRun, type MirrorRunSource } from '../cloud-mirror-transport.js';
4
+ import type { ProgressEvent } from '../progress.js';
5
+ import type { RunReport } from './run.js';
6
+ /** `FLOWS_CLOUD_MIRROR=1|true|on` turns the mirror on for a whole shell. */
7
+ export declare const MIRROR_ENV = "FLOWS_CLOUD_MIRROR";
8
+ /** What the mirror knows about this run on Cloud, once it is registered. */
9
+ export interface CloudMirrorReceipt {
10
+ /** Cloud's run id — the argument `flows status --cloud` and `flows logs` take. */
11
+ cloudRunId: string;
12
+ dashboardUrl: string;
13
+ }
14
+ export interface CloudMirrorSession {
15
+ /** The root run is admitted: the mirror can start reading its journal. */
16
+ onRunStarted(run: {
17
+ runId: string;
18
+ }): void;
19
+ /**
20
+ * The registration, once it lands. Resolves to nothing when the mirror is
21
+ * off, was refused, or the run never started.
22
+ *
23
+ * Awaiting it is what lets `--json` carry the same handle the terminal line
24
+ * carries: registration is one request made when the run is admitted, so by
25
+ * the time a run has a report it has long since settled — and a consumer of
26
+ * a machine-readable report can wait for a request that has already
27
+ * happened.
28
+ */
29
+ receipt(): Promise<CloudMirrorReceipt | undefined>;
30
+ /** A journaled entry; the first one names the run for a declarative flow. */
31
+ onJournalEntry(entry: {
32
+ run_id: string;
33
+ }): void;
34
+ /** Step transitions, pushed as lifecycle events the run page's stream shows. */
35
+ onProgress(event: ProgressEvent): void;
36
+ /** Publish the final report and the terminal status. Never rejects. */
37
+ finish(report: RunReport): Promise<void>;
38
+ }
39
+ export interface CloudMirrorDeps {
40
+ register?: typeof registerLocalRun;
41
+ createMirror?: typeof createRunMirror;
42
+ }
43
+ export interface CloudMirrorRequest {
44
+ /**
45
+ * The flow's source and input, exactly as `flows run --cloud` would send
46
+ * them. Resolved lazily, once the run id exists: a `resume` has no flow
47
+ * path at all and has to read what ran out of the journal.
48
+ */
49
+ source: (runId: string) => Promise<MirrorRunSource>;
50
+ dataDir: string;
51
+ /** Lines the CLI has printed for this run, uploaded as the run's `runner.log`. */
52
+ log: () => readonly string[];
53
+ /** How the dashboard was asked for, so a refusal can name the right switch. */
54
+ requested: 'flag' | 'env';
55
+ }
56
+ /**
57
+ * Whether this shell asked for the dashboard.
58
+ *
59
+ * Only an affirmative turns it on. Anything else — unset, empty, `0`, or a
60
+ * value nobody meant as a switch — leaves the run local, because the cost of
61
+ * reading a stray value as consent is someone's runs being uploaded.
62
+ */
63
+ export declare function cloudMirrorRequested(env: NodeJS.ProcessEnv): boolean;
64
+ /**
65
+ * Open the session. Registration is deferred until the run id exists, so a
66
+ * refused flow never reaches Cloud at all: `flows run` on a spec that does not
67
+ * compile creates no dashboard row, the same as today.
68
+ */
69
+ export declare function createCloudMirrorSession(request: CloudMirrorRequest, io: CliIo, env?: NodeJS.ProcessEnv, deps?: CloudMirrorDeps): CloudMirrorSession;
70
+ /**
71
+ * What `flows run` mirrors: the flow file's exact bytes, and — for an authored
72
+ * flow — the input it was invoked with.
73
+ *
74
+ * The same source `flows run --cloud` would submit, so a run mirrored from a
75
+ * terminal and the same run launched hosted are recorded identically. It is
76
+ * read here rather than taken from the compiled spec because the compiled
77
+ * form is not what the author wrote, and the run page shows source.
78
+ */
79
+ export declare function mirrorSourceFromPath(path: string, inputArgument: string | undefined, dataDir: string): (runId: string) => Promise<MirrorRunSource>;
80
+ /**
81
+ * What `flows resume` mirrors: the kernel spec the journal recorded at
82
+ * `run.spawned`, canonicalized.
83
+ *
84
+ * A resume names a run id, not a file — the flow it continues may have been
85
+ * edited or deleted since. The journal is the record of what actually ran, so
86
+ * that is what the mirror publishes, as canonical JSON (a YAML subset, the
87
+ * same representation `runInCloud` sends for a declarative flow).
88
+ *
89
+ * Each resume registers its own Cloud run, and that is deliberate rather than
90
+ * a shortcut: a mirrored run goes terminal on Cloud when the CLI exits, and
91
+ * Cloud refuses to move a terminal run back to `running`. Cloud's own v2
92
+ * resume is likewise a new attempt row, so one dashboard row per invocation is
93
+ * the shape the control plane already has — and it costs no credential stored
94
+ * on disk between invocations.
95
+ */
96
+ export declare function mirrorSourceFromJournal(dataDir: string): (runId: string) => Promise<MirrorRunSource>;
97
+ //# sourceMappingURL=cloud-mirror-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-mirror-session.d.ts","sourceRoot":"","sources":["../../src/cli/cloud-mirror-session.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAIvC,OAAO,EAAE,eAAe,EAAqC,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAgB,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,4EAA4E;AAC5E,eAAO,MAAM,UAAU,uBAAuB,CAAC;AAE/C,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,YAAY,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C;;;;;;;;;OASG;IACH,OAAO,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IACnD,6EAA6E;IAC7E,cAAc,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,gFAAgF;IAChF,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,uEAAuE;IACvE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,eAAe,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,GAAG,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAC7B,+EAA+E;IAC/E,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAGpE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,EAAE,EAAE,KAAK,EACT,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,eAAoB,GACzB,kBAAkB,CAwEpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,EAAE,MAAM,GACd,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAa7C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAwBpG"}
@@ -0,0 +1,264 @@
1
+ // The Cloud half of `flows run` / `flows resume`: also put this local run on
2
+ // the Cloud dashboard.
3
+ //
4
+ // Opt-in, and deliberately the only opt-in thing on this path.
5
+ //
6
+ // A local run is already watchable by default: `observer-session.ts` beside
7
+ // this one projects the run into its own channel and prints a read-only link,
8
+ // off a workspace key, for free. That is the right default — it is a step
9
+ // projection, it costs nothing, and a run that never joins a workspace is not
10
+ // a defect (RFC-0001 settled decision 7).
11
+ //
12
+ // The dashboard is the richer, hosted view of the same run: the flow source,
13
+ // every step's transcript, the run graph, the logs, and the run sitting in the
14
+ // same history as the hosted ones. It is also the one that *stores* all of
15
+ // that. So it is asked for — `--cloud-mirror`, or `FLOWS_CLOUD_MIRROR=1` for a
16
+ // shell — and never turned on by a login happening to be present. Mirroring
17
+ // someone's local runs because they once signed in is not a default anyone
18
+ // consented to.
19
+ //
20
+ // Best-effort once it is on, like the observer: a registration failure is one
21
+ // labeled stderr line, and nothing here can change a run's exit code or its
22
+ // journal. But it is a *louder* line than it used to be, because the run asked
23
+ // for this and did not get it.
24
+ import { readFile } from 'node:fs/promises';
25
+ import { canonicalize } from '../canonical.js';
26
+ import { cloudConnection, CloudFlowError } from '../cloud-http.js';
27
+ import { recordMirroredRun, readMirroredRun } from '../cloud-mirror-ledger.js';
28
+ import { createRunMirror, readJournalEvents } from '../cloud-mirror.js';
29
+ import { MirrorClient, registerLocalRun } from '../cloud-mirror-transport.js';
30
+ import { parseDigestReference } from '../bundle-transport.js';
31
+ import { isAuthoredFlowPath, parseDirectInput } from '../direct-input.js';
32
+ /** `FLOWS_CLOUD_MIRROR=1|true|on` turns the mirror on for a whole shell. */
33
+ export const MIRROR_ENV = 'FLOWS_CLOUD_MIRROR';
34
+ /**
35
+ * Whether this shell asked for the dashboard.
36
+ *
37
+ * Only an affirmative turns it on. Anything else — unset, empty, `0`, or a
38
+ * value nobody meant as a switch — leaves the run local, because the cost of
39
+ * reading a stray value as consent is someone's runs being uploaded.
40
+ */
41
+ export function cloudMirrorRequested(env) {
42
+ const value = env[MIRROR_ENV]?.trim().toLowerCase();
43
+ return value === '1' || value === 'true' || value === 'on' || value === 'yes';
44
+ }
45
+ /**
46
+ * Open the session. Registration is deferred until the run id exists, so a
47
+ * refused flow never reaches Cloud at all: `flows run` on a spec that does not
48
+ * compile creates no dashboard row, the same as today.
49
+ */
50
+ export function createCloudMirrorSession(request, io, env = process.env, deps = {}) {
51
+ const register = deps.register ?? registerLocalRun;
52
+ const createMirror = deps.createMirror ?? createRunMirror;
53
+ let opening;
54
+ let receipt;
55
+ const open = (runId) => opening ??= request.source(runId)
56
+ .then(register)
57
+ .then(registration => {
58
+ const mirror = createMirror({
59
+ client: new MirrorClient(registration),
60
+ dataDir: request.dataDir,
61
+ env,
62
+ diagnostic: message => io.stderr(`[cloud] ${message}`),
63
+ });
64
+ receipt = { cloudRunId: registration.runId, dashboardUrl: registration.runUrl };
65
+ // So a later `flows resume` of this same journal can name this attempt
66
+ // as its predecessor. The credential is deliberately not written; a
67
+ // resume mints its own.
68
+ void recordMirroredRun(request.dataDir, runId, {
69
+ cloudRunId: registration.runId, apiUrl: registration.apiUrl,
70
+ });
71
+ // The page, and the command that follows the same run from a terminal.
72
+ // The id is Cloud's, not the journal's, and nothing else in this
73
+ // invocation prints it — without it a reader has to pick it out of the
74
+ // URL to use any of the hosted read verbs.
75
+ io.stderr(`Dashboard: ${mirror.runUrl} · flows status --cloud --watch ${registration.runId}`);
76
+ mirror.start(runId);
77
+ return mirror;
78
+ })
79
+ .catch((error) => {
80
+ io.stderr(`[cloud] ${mirrorRefusal(error, request.requested)}`);
81
+ return undefined;
82
+ });
83
+ return {
84
+ onRunStarted(run) {
85
+ void open(run.runId);
86
+ },
87
+ onJournalEntry(entry) {
88
+ void open(entry.run_id);
89
+ },
90
+ async receipt() {
91
+ if (opening === undefined)
92
+ return undefined;
93
+ await opening;
94
+ return receipt;
95
+ },
96
+ onProgress(event) {
97
+ // Fire-and-forget, and only for transitions: a `step.running` tick
98
+ // arrives every second and would say nothing the snapshot does not.
99
+ if (opening === undefined)
100
+ return;
101
+ if (event.type !== 'step.started' && event.type !== 'step.completed')
102
+ return;
103
+ void opening.then(mirror => mirror?.event({
104
+ eventType: `relayflow.${event.type}`,
105
+ stepName: event.stepId,
106
+ payload: { stepType: event.stepType },
107
+ }));
108
+ },
109
+ async finish(report) {
110
+ const mirror = opening === undefined ? undefined : await opening;
111
+ if (mirror === undefined)
112
+ return;
113
+ await mirror.finish({
114
+ status: report.completionReason === 'canceled'
115
+ ? 'cancelled'
116
+ : report.ok ? 'completed' : 'failed',
117
+ result: completionReport(report),
118
+ ...(report.completionReason === undefined ? {} : { completionReason: report.completionReason }),
119
+ ...(terminalError(report) === undefined ? {} : { error: terminalError(report) }),
120
+ log: request.log(),
121
+ });
122
+ },
123
+ };
124
+ }
125
+ /**
126
+ * What `flows run` mirrors: the flow file's exact bytes, and — for an authored
127
+ * flow — the input it was invoked with.
128
+ *
129
+ * The same source `flows run --cloud` would submit, so a run mirrored from a
130
+ * terminal and the same run launched hosted are recorded identically. It is
131
+ * read here rather than taken from the compiled spec because the compiled
132
+ * form is not what the author wrote, and the run page shows source.
133
+ */
134
+ export function mirrorSourceFromPath(path, inputArgument, dataDir) {
135
+ const fromJournal = mirrorSourceFromJournal(dataDir);
136
+ return async (runId) => {
137
+ // `flows run <flow>@sha256:<digest>` names a bundle, not a file on this
138
+ // disk: the runner fetches it before executing. Reading the argument as a
139
+ // path there refused the registration and left a perfectly good run off
140
+ // the dashboard, so fall back to what the journal recorded — the same
141
+ // source a resume mirrors.
142
+ if (parseDigestReference(path))
143
+ return fromJournal(runId);
144
+ const workflow = await readFile(path, 'utf8');
145
+ if (!isAuthoredFlowPath(path))
146
+ return { workflow, fileType: 'yaml' };
147
+ return { workflow, fileType: 'ts', inputs: parseDirectInput(inputArgument) };
148
+ };
149
+ }
150
+ /**
151
+ * What `flows resume` mirrors: the kernel spec the journal recorded at
152
+ * `run.spawned`, canonicalized.
153
+ *
154
+ * A resume names a run id, not a file — the flow it continues may have been
155
+ * edited or deleted since. The journal is the record of what actually ran, so
156
+ * that is what the mirror publishes, as canonical JSON (a YAML subset, the
157
+ * same representation `runInCloud` sends for a declarative flow).
158
+ *
159
+ * Each resume registers its own Cloud run, and that is deliberate rather than
160
+ * a shortcut: a mirrored run goes terminal on Cloud when the CLI exits, and
161
+ * Cloud refuses to move a terminal run back to `running`. Cloud's own v2
162
+ * resume is likewise a new attempt row, so one dashboard row per invocation is
163
+ * the shape the control plane already has — and it costs no credential stored
164
+ * on disk between invocations.
165
+ */
166
+ export function mirrorSourceFromJournal(dataDir) {
167
+ return async (runId) => {
168
+ // The predecessor, if this journal has been mirrored before. Read against
169
+ // the deployment this invocation will actually register with, so a run
170
+ // mirrored to staging never claims to continue an id that means something
171
+ // else in production.
172
+ const resumedFromRunId = await readMirroredRun(dataDir, runId, cloudConnection({}).baseUrl)
173
+ .catch(() => undefined);
174
+ // Through the retrying reader: a resume reads this journal while the
175
+ // daemon is writing to it, and a single `journal_busy` used to abandon
176
+ // the registration and leave the resumed run off the dashboard entirely.
177
+ for (const event of await readJournalEvents(runId, dataDir)) {
178
+ if (event.entry_type !== 'run.spawned')
179
+ continue;
180
+ const payload = event.payload;
181
+ if (payload?.spec === undefined)
182
+ break;
183
+ return {
184
+ workflow: canonicalize(payload.spec),
185
+ fileType: 'yaml',
186
+ ...(resumedFromRunId === undefined ? {} : { resumedFromRunId }),
187
+ };
188
+ }
189
+ throw new CloudFlowError('invalid_input', `Run "${runId}" journals no spec to mirror; the run is unaffected.`);
190
+ };
191
+ }
192
+ /** Diagnostics one completion report carries; the rest are counted. */
193
+ const MAX_REPORT_DIAGNOSTICS = 20;
194
+ /** One diagnostic message, in code points. */
195
+ const MAX_DIAGNOSTIC_CHARS = 2_000;
196
+ /**
197
+ * The run's completion report, as the terminal callback stores it.
198
+ *
199
+ * Cloud reconciles a v2 run's reported status against this document: a
200
+ * `completed` callback whose report does not carry `ok`, `status`,
201
+ * `completionReason` and `runId` together is recorded as `failed`. That guard
202
+ * exists so a sandbox whose bootstrap exits cleanly cannot report a run that
203
+ * died at step 1 as green — and it cuts the other way too, so a mirror that
204
+ * omits the report turns a finished local run red. Those four fields are the
205
+ * contract; everything else here is what a reader of the run page gets for
206
+ * free, since the run list extracts `completionReason` from the same document.
207
+ *
208
+ * Diagnostics are bounded and their messages clipped. They are the one part of
209
+ * a report that is unbounded free text, and this document is stored whole.
210
+ */
211
+ function completionReport(report) {
212
+ const diagnostics = report.diagnostics.slice(0, MAX_REPORT_DIAGNOSTICS).map(entry => ({
213
+ severity: 'severity' in entry ? entry.severity : 'refusal',
214
+ kind: entry.kind,
215
+ message: [...entry.message].slice(0, MAX_DIAGNOSTIC_CHARS).join(''),
216
+ }));
217
+ return {
218
+ ok: report.ok,
219
+ command: report.command,
220
+ ...(report.runId === undefined ? {} : { runId: report.runId }),
221
+ ...(report.rootRunId === undefined ? {} : { rootRunId: report.rootRunId }),
222
+ ...(report.status === undefined ? {} : { status: report.status }),
223
+ ...(report.completionReason === undefined ? {} : { completionReason: report.completionReason }),
224
+ ...(report.completionDetail === undefined ? {} : { completionDetail: report.completionDetail }),
225
+ ...(report.completedSteps === undefined ? {} : { completedSteps: report.completedSteps }),
226
+ ...(report.parkedStep === undefined ? {} : { parkedStep: report.parkedStep }),
227
+ ...(report.parkCause === undefined ? {} : { parkCause: report.parkCause }),
228
+ ...(report.next === undefined ? {} : { next: report.next }),
229
+ ...(diagnostics.length === 0 ? {} : { diagnostics }),
230
+ ...(report.diagnostics.length > diagnostics.length
231
+ ? { diagnosticsOmitted: report.diagnostics.length - diagnostics.length }
232
+ : {}),
233
+ };
234
+ }
235
+ /**
236
+ * Why the dashboard is not getting this run, in one line a reader can act on.
237
+ *
238
+ * Every one of these is a request that was not honoured — the run asked for
239
+ * the dashboard and is not on it — so none of them read as an aside. The
240
+ * missing-login case is the common one and names the two commands that fix
241
+ * it: sign in, or stop asking.
242
+ */
243
+ function mirrorRefusal(error, requested) {
244
+ const asked = requested === 'flag' ? '--cloud-mirror' : `${MIRROR_ENV}=1`;
245
+ if (error instanceof CloudFlowError && error.code === 'configuration') {
246
+ return error.reason === 'auth_missing'
247
+ ? `${asked} asked for the Cloud dashboard, but there is no Cloud login, so this run stays local. `
248
+ + `Sign in with \`agent-relay cloud login\`, or drop ${asked}.`
249
+ : `${asked} asked for the Cloud dashboard, but this run stays local: ${error.message}`;
250
+ }
251
+ if (error instanceof CloudFlowError && error.status === 404) {
252
+ return `${asked} asked for the Cloud dashboard, but this deployment does not accept local runs; `
253
+ + 'the run itself is unaffected.';
254
+ }
255
+ return `${asked} asked for the Cloud dashboard, but this run could not be registered (${error instanceof Error ? error.message : String(error)}); the run itself is unaffected.`;
256
+ }
257
+ /** The run's own failure text, bounded by the mirror's transport, or nothing. */
258
+ function terminalError(report) {
259
+ if (report.ok)
260
+ return undefined;
261
+ const diagnostic = report.diagnostics.find(entry => 'severity' in entry && (entry.severity === 'failure' || entry.severity === 'refusal'));
262
+ return diagnostic?.message;
263
+ }
264
+ //# sourceMappingURL=cloud-mirror-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-mirror-session.js","sourceRoot":"","sources":["../../src/cli/cloud-mirror-session.ts"],"names":[],"mappings":"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"}
@@ -281,6 +281,9 @@ export declare const CLI_VERBS: readonly [{
281
281
  }, {
282
282
  readonly flags: "--no-observer-link";
283
283
  readonly description: "Do not mint an observer link for this run";
284
+ }, {
285
+ readonly flags: "--cloud-mirror";
286
+ readonly description: "Also put this run on the Cloud dashboard (also FLOWS_CLOUD_MIRROR=1)";
284
287
  }, {
285
288
  readonly flags: "--allow-human-influenced";
286
289
  readonly description: "Proceed even though the run carries human-influenced state";
@@ -307,6 +310,9 @@ export declare const CLI_VERBS: readonly [{
307
310
  }, {
308
311
  readonly flags: "--no-observer-link";
309
312
  readonly description: "Do not mint an observer link for this run";
313
+ }, {
314
+ readonly flags: "--cloud-mirror";
315
+ readonly description: "Also put this run on the Cloud dashboard (also FLOWS_CLOUD_MIRROR=1)";
310
316
  }, {
311
317
  readonly flags: "--allow-human-influenced";
312
318
  readonly description: "Proceed even though the run carries human-influenced state";
@@ -1 +1 @@
1
- {"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC1C;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACzC;AAED,uEAAuE;AACvE,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD;;;;;;OAMG;IACH,QAAQ,EAAE,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;CAC5C;AAyCD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkRqB,CAAC;AAE5C;;;;GAIG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEvG;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAA+C,CAAC"}
1
+ {"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC1C;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACzC;AAED,uEAAuE;AACvE,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD;;;;;;OAMG;IACH,QAAQ,EAAE,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;CAC5C;AA0CD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkRqB,CAAC;AAE5C;;;;GAIG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEvG;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAA+C,CAAC"}
@@ -31,6 +31,7 @@ const LOCAL_EXECUTION_OPTIONS = [
31
31
  },
32
32
  { flags: '--no-spawn', description: 'Require a running relayflowd rather than starting one' },
33
33
  { flags: '--no-observer-link', description: 'Do not mint an observer link for this run' },
34
+ { flags: '--cloud-mirror', description: 'Also put this run on the Cloud dashboard (also FLOWS_CLOUD_MIRROR=1)' },
34
35
  {
35
36
  flags: '--allow-human-influenced',
36
37
  description: 'Proceed even though the run carries human-influenced state',
@@ -1 +1 @@
1
- {"version":3,"file":"cli-commands.js","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-commands.js","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"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"}