@relayflows/sdk 2.0.41 → 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 +10 -7
- 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 +10 -7
- 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
package/dist/journal-client.js
CHANGED
|
@@ -7,38 +7,28 @@
|
|
|
7
7
|
// AGENTS.md rule 4). The kernel binary (`kernel/relayflowd serve`) speaks
|
|
8
8
|
// this transport, including out-of-band leases, watches, events, and durable
|
|
9
9
|
// stream plumbing. The client's framing and failure behavior is covered by a
|
|
10
|
-
// loopback double in tests.
|
|
11
|
-
|
|
10
|
+
// loopback double in tests. Framing and the socket lifecycle live in
|
|
11
|
+
// journal-connection.ts; budgeted reads in journal-budgeted-reads.ts.
|
|
12
|
+
import { READ_ONLY_VERBS } from './journal-read-policy.js';
|
|
13
|
+
import { JournalConnection, JournalProtocolError } from './journal-connection.js';
|
|
14
|
+
export { JournalFrameError, JournalProtocolError } from './journal-connection.js';
|
|
15
|
+
import { BudgetedReads } from './journal-budgeted-reads.js';
|
|
16
|
+
export { JournalReadInterruptedError, JournalRequestTimeoutError } from './journal-read-policy.js';
|
|
12
17
|
export { walkJournal, JournalReadError } from './journal-reader.js';
|
|
13
|
-
import { randomUUID } from 'node:crypto';
|
|
14
|
-
import { createConnection } from 'node:net';
|
|
15
18
|
import { PROTOCOL_VERSION, } from './protocol.js';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
verb;
|
|
20
|
-
constructor(code, message) {
|
|
21
|
-
super(`${code}: ${message}`);
|
|
22
|
-
this.name = 'JournalProtocolError';
|
|
23
|
-
this.code = code;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export class JournalClient extends EventEmitter {
|
|
27
|
-
socketPath;
|
|
19
|
+
export class JournalClient extends JournalConnection {
|
|
20
|
+
budgeted;
|
|
21
|
+
budgetHandshake;
|
|
28
22
|
/** Additive request capabilities the daemon advertised at `hello`; none until then. */
|
|
29
23
|
features = new Set();
|
|
30
|
-
socket = null;
|
|
31
|
-
/** Why the connection ended, so a later "not connected" names its cause rather than hiding it. */
|
|
32
|
-
disconnectCause;
|
|
33
|
-
buffer = '';
|
|
34
|
-
pending = new Map();
|
|
35
|
-
requestTimeoutMs;
|
|
36
|
-
connectTimeoutMs;
|
|
37
24
|
constructor(socketPath, options = {}) {
|
|
38
|
-
super();
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
41
|
-
|
|
25
|
+
super(socketPath, options.requestTimeoutMs ?? 30_000, options.connectTimeoutMs ?? 2_000);
|
|
26
|
+
this.budgetHandshake = options.budgetHandshake === true;
|
|
27
|
+
this.budgeted = options.readBudgetMs === undefined ? undefined
|
|
28
|
+
: new BudgetedReads(this, options.readBudgetMs, options.readSignal);
|
|
29
|
+
}
|
|
30
|
+
connectionClosed(cause, unexpected) {
|
|
31
|
+
this.budgeted?.close(cause, unexpected);
|
|
42
32
|
}
|
|
43
33
|
/** Independent session for an SDK helper worker; preserves the caller's registration. */
|
|
44
34
|
createPeer() {
|
|
@@ -46,134 +36,36 @@ export class JournalClient extends EventEmitter {
|
|
|
46
36
|
requestTimeoutMs: this.requestTimeoutMs, connectTimeoutMs: this.connectTimeoutMs,
|
|
47
37
|
});
|
|
48
38
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
socket.removeAllListeners();
|
|
57
|
-
socket.destroy();
|
|
58
|
-
this.failAll(new Error(`journal client: connect timed out after ${this.connectTimeoutMs}ms`));
|
|
59
|
-
reject(new Error(`journal client: connect timed out after ${this.connectTimeoutMs}ms`));
|
|
60
|
-
}, this.connectTimeoutMs);
|
|
61
|
-
const onError = (err) => {
|
|
62
|
-
clearTimeout(timer);
|
|
63
|
-
socket.removeAllListeners();
|
|
64
|
-
this.failAll(err);
|
|
65
|
-
reject(new Error(`journal client: connect failed: ${err.message}`));
|
|
66
|
-
};
|
|
67
|
-
socket.once('error', onError);
|
|
68
|
-
socket.once('connect', () => {
|
|
69
|
-
clearTimeout(timer);
|
|
70
|
-
socket.removeListener('error', onError);
|
|
71
|
-
socket.on('error', (err) => { this.disconnectCause ??= err; this.failAll(err); });
|
|
72
|
-
socket.on('data', (chunk) => this.onData(chunk));
|
|
73
|
-
socket.on('close', () => {
|
|
74
|
-
const closed = new Error('journal client: connection closed');
|
|
75
|
-
this.disconnectCause ??= closed;
|
|
76
|
-
this.failAll(closed);
|
|
77
|
-
});
|
|
78
|
-
this.disconnectCause = undefined;
|
|
79
|
-
this.socket = socket;
|
|
80
|
-
resolve();
|
|
81
|
-
});
|
|
82
|
-
});
|
|
39
|
+
request(verb, params, timeoutMs = this.requestTimeoutMs, signal) {
|
|
40
|
+
// Every allowlisted read takes the policy, even after the primary dropped: its
|
|
41
|
+
// closed state then answers with the typed interruption recorded at the drop.
|
|
42
|
+
if (this.budgeted !== undefined && timeoutMs !== null && READ_ONLY_VERBS.has(verb)) {
|
|
43
|
+
return this.budgeted.read(verb, params, timeoutMs, signal);
|
|
44
|
+
}
|
|
45
|
+
return this.requestOnce(verb, params, timeoutMs, signal);
|
|
83
46
|
}
|
|
84
47
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* later "not connected" rejection.
|
|
48
|
+
* Cancel budgeted reads also when `signal` aborts — a root attempt's lease —
|
|
49
|
+
* until the returned release is called. A no-op without a read budget.
|
|
88
50
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
? new Error('journal client: closed by caller')
|
|
92
|
-
: new Error(`journal client: closed after ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
93
|
-
this.disconnectCause ??= closed;
|
|
94
|
-
this.failAll(closed);
|
|
95
|
-
this.socket?.destroy();
|
|
96
|
-
this.socket = null;
|
|
97
|
-
this.buffer = '';
|
|
98
|
-
}
|
|
99
|
-
onData(chunk) {
|
|
100
|
-
this.buffer += chunk.toString('utf8');
|
|
101
|
-
let nl;
|
|
102
|
-
while ((nl = this.buffer.indexOf('\n')) !== -1) {
|
|
103
|
-
const line = this.buffer.slice(0, nl);
|
|
104
|
-
this.buffer = this.buffer.slice(nl + 1);
|
|
105
|
-
if (line.length > 0)
|
|
106
|
-
this.onLine(line);
|
|
107
|
-
}
|
|
51
|
+
scopeReads(signal) {
|
|
52
|
+
return this.budgeted?.scope(signal) ?? (() => { });
|
|
108
53
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
this.failAll(new Error('journal client: malformed frame from server'));
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (typeof msg.id === 'string' && 'ok' in msg) {
|
|
120
|
-
const res = msg;
|
|
121
|
-
const pending = this.pending.get(res.id);
|
|
122
|
-
if (!pending)
|
|
123
|
-
return; // reply for an already-timed-out request
|
|
124
|
-
this.pending.delete(res.id);
|
|
125
|
-
if (pending.timer !== undefined)
|
|
126
|
-
clearTimeout(pending.timer);
|
|
127
|
-
if (res.ok)
|
|
128
|
-
pending.resolve(res.result);
|
|
129
|
-
else
|
|
130
|
-
pending.reject(new JournalProtocolError(res.error.code, res.error.message));
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
const ev = msg;
|
|
134
|
-
this.emit(ev.event, ev.data);
|
|
135
|
-
this.emit('event', ev);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
failAll(err) {
|
|
139
|
-
for (const [, p] of this.pending) {
|
|
140
|
-
if (p.timer !== undefined)
|
|
141
|
-
clearTimeout(p.timer);
|
|
142
|
-
p.reject(err);
|
|
143
|
-
}
|
|
144
|
-
this.pending.clear();
|
|
145
|
-
}
|
|
146
|
-
request(verb, params, timeoutMs = this.requestTimeoutMs) {
|
|
147
|
-
return new Promise((resolve, reject) => {
|
|
148
|
-
if (!this.socket || this.socket.destroyed) {
|
|
149
|
-
const cause = this.disconnectCause;
|
|
150
|
-
reject(new Error(`journal client: not connected (${verb})${cause === undefined ? '' : `: ${cause.message}`}`, cause === undefined ? undefined : { cause }));
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
const id = randomUUID();
|
|
154
|
-
const frame = { id, verb: verb, params };
|
|
155
|
-
const timer = timeoutMs === null ? undefined : setTimeout(() => {
|
|
156
|
-
this.pending.delete(id);
|
|
157
|
-
reject(new Error(`journal client: ${verb} timed out after ${timeoutMs}ms`));
|
|
158
|
-
}, timeoutMs);
|
|
159
|
-
this.pending.set(id, { resolve: resolve, reject, timer });
|
|
160
|
-
this.socket.write(JSON.stringify(frame) + '\n', (err) => {
|
|
161
|
-
if (err) {
|
|
162
|
-
const p = this.pending.get(id);
|
|
163
|
-
if (p) {
|
|
164
|
-
if (p.timer !== undefined)
|
|
165
|
-
clearTimeout(p.timer);
|
|
166
|
-
this.pending.delete(id);
|
|
167
|
-
p.reject(new Error(`journal client: ${verb} write failed: ${err.message}`));
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
});
|
|
54
|
+
/**
|
|
55
|
+
* End every budgeted read now and refuse later ones; the session itself stays
|
|
56
|
+
* open. The reads end as read interruptions, so a worker hands its attempt
|
|
57
|
+
* back to the kernel rather than completing it as a failure.
|
|
58
|
+
*/
|
|
59
|
+
cancelReads() {
|
|
60
|
+
this.budgeted?.close(new Error('journal client: reads canceled'), true);
|
|
172
61
|
}
|
|
173
62
|
// --- Typed verb methods (gate 1 minimal set, kernel DESIGN.md §5) --------
|
|
174
63
|
/** Handshake; version mismatch is a hard error. Records the daemon's additive features. */
|
|
175
64
|
async hello(client) {
|
|
176
|
-
const
|
|
65
|
+
const params = { protocol: PROTOCOL_VERSION, client };
|
|
66
|
+
// A flow client's handshake meets the same CPU load as its reads.
|
|
67
|
+
const result = this.budgeted === undefined || !this.budgetHandshake ? await this.request('hello', params)
|
|
68
|
+
: await this.budgeted.handshake(params, this.requestTimeoutMs);
|
|
177
69
|
this.features = new Set(Array.isArray(result.features) ? result.features.filter(f => typeof f === 'string') : []);
|
|
178
70
|
return result;
|
|
179
71
|
}
|
|
@@ -200,12 +92,14 @@ export class JournalClient extends EventEmitter {
|
|
|
200
92
|
return this.request('run.cancel', { run_id: runId }, null);
|
|
201
93
|
}
|
|
202
94
|
/** Snapshot for legibility. */
|
|
203
|
-
runGet(runId) {
|
|
204
|
-
return this.request('run.get', { run_id: runId });
|
|
95
|
+
runGet(runId, options = {}) {
|
|
96
|
+
return this.request('run.get', { run_id: runId }, this.requestTimeoutMs, options.signal);
|
|
205
97
|
}
|
|
206
98
|
/**
|
|
207
|
-
* Open a push stream of every appended entry.
|
|
208
|
-
* entries
|
|
99
|
+
* Open a push stream of every appended entry. The daemon writes the run's
|
|
100
|
+
* existing entries before this resolves (server.rs `watch_with_replay`), so
|
|
101
|
+
* the replay is fully delivered first; later entries arrive as they are
|
|
102
|
+
* appended. Entries arrive as `'entry'` events: `client.on('entry', (entry) => …)`.
|
|
209
103
|
*/
|
|
210
104
|
runWatch(runId) {
|
|
211
105
|
return this.request('run.watch', { run_id: runId });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal-client.js","sourceRoot":"","sources":["../src/journal-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"journal-client.js","sourceRoot":"","sources":["../src/journal-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { type Socket } from 'node:net';
|
|
3
|
+
import type { VerbContract } from './protocol.js';
|
|
4
|
+
/** A structured rejection returned by relayflowd over the journal protocol. */
|
|
5
|
+
export declare class JournalProtocolError extends Error {
|
|
6
|
+
readonly code: string;
|
|
7
|
+
verb?: string;
|
|
8
|
+
constructor(code: string, message: string);
|
|
9
|
+
}
|
|
10
|
+
/** The daemon sent a frame this client cannot parse: a protocol violation, never retried. */
|
|
11
|
+
export declare class JournalFrameError extends Error {
|
|
12
|
+
constructor(message?: string);
|
|
13
|
+
}
|
|
14
|
+
/** Framing, socket lifecycle and request correlation; the typed verbs live on JournalClient. */
|
|
15
|
+
export declare class JournalConnection extends EventEmitter {
|
|
16
|
+
readonly socketPath: string;
|
|
17
|
+
protected readonly requestTimeoutMs: number;
|
|
18
|
+
protected readonly connectTimeoutMs: number;
|
|
19
|
+
protected socket: Socket | null;
|
|
20
|
+
private connectingSocket;
|
|
21
|
+
/** Why the connection ended, so a later "not connected" names its cause rather than hiding it. */
|
|
22
|
+
protected disconnectCause: Error | undefined;
|
|
23
|
+
private buffer;
|
|
24
|
+
private readonly pending;
|
|
25
|
+
constructor(socketPath: string, requestTimeoutMs: number, connectTimeoutMs: number);
|
|
26
|
+
/** Hook for sessions layered on this one: `unexpected` is a drop the caller did not ask for. */
|
|
27
|
+
protected connectionClosed(_cause: unknown, _unexpected: boolean): void;
|
|
28
|
+
/** Open the unix socket connection. Rejects on connect failure (fail-closed). */
|
|
29
|
+
connect(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Close the connection and reject any pending requests. A `cause` (for
|
|
32
|
+
* example the worker failure that forced the close) is carried into every
|
|
33
|
+
* later "not connected" rejection.
|
|
34
|
+
*/
|
|
35
|
+
close(cause?: unknown): void;
|
|
36
|
+
private onData;
|
|
37
|
+
private onLine;
|
|
38
|
+
private failAll;
|
|
39
|
+
/** @internal One unretried request on this session; flow reads go through `request`. */
|
|
40
|
+
requestOnce<V extends keyof VerbContract>(verb: V, params: VerbContract[V]['params'], timeoutMs?: number | null, signal?: AbortSignal): Promise<VerbContract[V]['result']>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=journal-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal-connection.d.ts","sourceRoot":"","sources":["../src/journal-connection.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAoB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAEzD,OAAO,KAAK,EAAkC,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlF,+EAA+E;AAC/E,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,6FAA6F;AAC7F,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,SAAgD;CAIpE;AAED,gGAAgG;AAChG,qBAAa,iBAAkB,SAAQ,YAAY;IAS/C,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAC3C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAV7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,kGAAkG;IAClG,SAAS,CAAC,eAAe,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;gBAG3C,UAAU,EAAE,MAAM,EACR,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM;IAK7C,gGAAgG;IAChG,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAEvE,iFAAiF;IACjF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCxB;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAa5B,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,MAAM;IA4Bd,OAAO,CAAC,OAAO;IAQf,wFAAwF;IACxF,WAAW,CAAC,CAAC,SAAS,MAAM,YAAY,EACtC,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACjC,SAAS,GAAE,MAAM,GAAG,IAA4B,EAChD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CA+CtC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// Journal-protocol v0 client (kernel DESIGN.md §5).
|
|
2
|
+
//
|
|
3
|
+
// A real client implementation of the wire protocol — newline-delimited JSON
|
|
4
|
+
// over a unix socket. It correlates requests by `id`, demultiplexes
|
|
5
|
+
// server-pushed events, and is fail-closed: a connection drop or write error
|
|
6
|
+
// rejects every pending request (a journal write that fails fails the step;
|
|
7
|
+
// AGENTS.md rule 4). The kernel binary (`kernel/relayflowd serve`) speaks
|
|
8
|
+
// this transport, including out-of-band leases, watches, events, and durable
|
|
9
|
+
// stream plumbing. The client's framing and failure behavior is covered by a
|
|
10
|
+
// loopback double in tests.
|
|
11
|
+
import { EventEmitter } from 'node:events';
|
|
12
|
+
import { randomUUID } from 'node:crypto';
|
|
13
|
+
import { createConnection } from 'node:net';
|
|
14
|
+
import { JournalRequestTimeoutError } from './journal-read-policy.js';
|
|
15
|
+
/** A structured rejection returned by relayflowd over the journal protocol. */
|
|
16
|
+
export class JournalProtocolError extends Error {
|
|
17
|
+
code;
|
|
18
|
+
verb;
|
|
19
|
+
constructor(code, message) {
|
|
20
|
+
super(`${code}: ${message}`);
|
|
21
|
+
this.name = 'JournalProtocolError';
|
|
22
|
+
this.code = code;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** The daemon sent a frame this client cannot parse: a protocol violation, never retried. */
|
|
26
|
+
export class JournalFrameError extends Error {
|
|
27
|
+
constructor(message = 'journal client: malformed frame from server') {
|
|
28
|
+
super(message);
|
|
29
|
+
this.name = 'JournalFrameError';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Framing, socket lifecycle and request correlation; the typed verbs live on JournalClient. */
|
|
33
|
+
export class JournalConnection extends EventEmitter {
|
|
34
|
+
socketPath;
|
|
35
|
+
requestTimeoutMs;
|
|
36
|
+
connectTimeoutMs;
|
|
37
|
+
socket = null;
|
|
38
|
+
connectingSocket;
|
|
39
|
+
/** Why the connection ended, so a later "not connected" names its cause rather than hiding it. */
|
|
40
|
+
disconnectCause;
|
|
41
|
+
buffer = '';
|
|
42
|
+
pending = new Map();
|
|
43
|
+
constructor(socketPath, requestTimeoutMs, connectTimeoutMs) {
|
|
44
|
+
super();
|
|
45
|
+
this.socketPath = socketPath;
|
|
46
|
+
this.requestTimeoutMs = requestTimeoutMs;
|
|
47
|
+
this.connectTimeoutMs = connectTimeoutMs;
|
|
48
|
+
}
|
|
49
|
+
/** Hook for sessions layered on this one: `unexpected` is a drop the caller did not ask for. */
|
|
50
|
+
connectionClosed(_cause, _unexpected) { }
|
|
51
|
+
/** Open the unix socket connection. Rejects on connect failure (fail-closed). */
|
|
52
|
+
connect() {
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
if (this.socket)
|
|
55
|
+
return resolve();
|
|
56
|
+
const socket = createConnection({ path: this.socketPath });
|
|
57
|
+
this.connectingSocket = socket;
|
|
58
|
+
const timer = setTimeout(() => {
|
|
59
|
+
socket.removeAllListeners();
|
|
60
|
+
socket.destroy();
|
|
61
|
+
this.failAll(new Error(`journal client: connect timed out after ${this.connectTimeoutMs}ms`));
|
|
62
|
+
reject(new Error(`journal client: connect timed out after ${this.connectTimeoutMs}ms`));
|
|
63
|
+
}, this.connectTimeoutMs);
|
|
64
|
+
const onError = (err) => {
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
socket.removeAllListeners();
|
|
67
|
+
this.failAll(err);
|
|
68
|
+
reject(new Error(`journal client: connect failed: ${err.message}`));
|
|
69
|
+
};
|
|
70
|
+
socket.once('error', onError);
|
|
71
|
+
socket.once('connect', () => {
|
|
72
|
+
clearTimeout(timer);
|
|
73
|
+
socket.removeListener('error', onError);
|
|
74
|
+
socket.on('error', (err) => { this.disconnectCause ??= err; this.failAll(err); });
|
|
75
|
+
socket.on('data', (chunk) => this.onData(chunk));
|
|
76
|
+
socket.on('close', () => {
|
|
77
|
+
const closed = new Error('journal client: connection closed');
|
|
78
|
+
this.connectionClosed(closed, this.socket === socket);
|
|
79
|
+
this.disconnectCause ??= closed;
|
|
80
|
+
this.failAll(closed);
|
|
81
|
+
// Only a drop the caller did not ask for; close() clears this.socket first.
|
|
82
|
+
// Sessions with nothing pending (a registered watch) must hear it too.
|
|
83
|
+
if (this.socket === socket)
|
|
84
|
+
this.emit('disconnected', closed);
|
|
85
|
+
});
|
|
86
|
+
this.disconnectCause = undefined;
|
|
87
|
+
this.connectingSocket = undefined;
|
|
88
|
+
this.socket = socket;
|
|
89
|
+
resolve();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Close the connection and reject any pending requests. A `cause` (for
|
|
95
|
+
* example the worker failure that forced the close) is carried into every
|
|
96
|
+
* later "not connected" rejection.
|
|
97
|
+
*/
|
|
98
|
+
close(cause) {
|
|
99
|
+
const closed = cause === undefined
|
|
100
|
+
? new Error('journal client: closed by caller')
|
|
101
|
+
: new Error(`journal client: closed after ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
102
|
+
this.connectionClosed(cause, false);
|
|
103
|
+
this.connectingSocket?.destroy(closed);
|
|
104
|
+
this.disconnectCause ??= closed;
|
|
105
|
+
this.failAll(closed);
|
|
106
|
+
this.socket?.destroy();
|
|
107
|
+
this.socket = null;
|
|
108
|
+
this.buffer = '';
|
|
109
|
+
}
|
|
110
|
+
onData(chunk) {
|
|
111
|
+
this.buffer += chunk.toString('utf8');
|
|
112
|
+
let nl;
|
|
113
|
+
while ((nl = this.buffer.indexOf('\n')) !== -1) {
|
|
114
|
+
const line = this.buffer.slice(0, nl);
|
|
115
|
+
this.buffer = this.buffer.slice(nl + 1);
|
|
116
|
+
if (line.length > 0)
|
|
117
|
+
this.onLine(line);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
onLine(line) {
|
|
121
|
+
let msg;
|
|
122
|
+
try {
|
|
123
|
+
msg = JSON.parse(line);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// A malformed frame is a protocol violation; fail closed.
|
|
127
|
+
const error = new JournalFrameError();
|
|
128
|
+
this.failAll(error);
|
|
129
|
+
// Sessions with nothing pending (a registered watch) must hear it too.
|
|
130
|
+
this.emit('protocol_error', error);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (typeof msg.id === 'string' && 'ok' in msg) {
|
|
134
|
+
const res = msg;
|
|
135
|
+
const pending = this.pending.get(res.id);
|
|
136
|
+
if (!pending)
|
|
137
|
+
return; // reply for an already-timed-out request
|
|
138
|
+
this.pending.delete(res.id);
|
|
139
|
+
if (pending.timer !== undefined)
|
|
140
|
+
clearTimeout(pending.timer);
|
|
141
|
+
if (res.ok)
|
|
142
|
+
pending.resolve(res.result);
|
|
143
|
+
else
|
|
144
|
+
pending.reject(new JournalProtocolError(res.error.code, res.error.message));
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const ev = msg;
|
|
148
|
+
this.emit(ev.event, ev.data);
|
|
149
|
+
this.emit('event', ev);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
failAll(err) {
|
|
153
|
+
for (const [, p] of this.pending) {
|
|
154
|
+
if (p.timer !== undefined)
|
|
155
|
+
clearTimeout(p.timer);
|
|
156
|
+
p.reject(err);
|
|
157
|
+
}
|
|
158
|
+
this.pending.clear();
|
|
159
|
+
}
|
|
160
|
+
/** @internal One unretried request on this session; flow reads go through `request`. */
|
|
161
|
+
requestOnce(verb, params, timeoutMs = this.requestTimeoutMs, signal) {
|
|
162
|
+
return new Promise((resolve, reject) => {
|
|
163
|
+
if (signal?.aborted) {
|
|
164
|
+
reject(signal.reason);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (!this.socket || this.socket.destroyed) {
|
|
168
|
+
const cause = this.disconnectCause;
|
|
169
|
+
reject(new Error(`journal client: not connected (${verb})${cause === undefined ? '' : `: ${cause.message}`}`, cause === undefined ? undefined : { cause }));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const id = randomUUID();
|
|
173
|
+
const started = performance.now();
|
|
174
|
+
const frame = { id, verb: verb, params };
|
|
175
|
+
// Cancellation forgets the request; a late reply is ignored like a timed-out one.
|
|
176
|
+
const onAbort = () => {
|
|
177
|
+
const p = this.pending.get(id);
|
|
178
|
+
if (p === undefined)
|
|
179
|
+
return;
|
|
180
|
+
if (p.timer !== undefined)
|
|
181
|
+
clearTimeout(p.timer);
|
|
182
|
+
this.pending.delete(id);
|
|
183
|
+
p.reject(signal.reason);
|
|
184
|
+
};
|
|
185
|
+
const settle = (fn) => (arg) => {
|
|
186
|
+
signal?.removeEventListener('abort', onAbort);
|
|
187
|
+
fn(arg);
|
|
188
|
+
};
|
|
189
|
+
const timer = timeoutMs === null ? undefined : setTimeout(() => {
|
|
190
|
+
this.pending.delete(id);
|
|
191
|
+
settle(reject)(new JournalRequestTimeoutError(verb, timeoutMs, 1, performance.now() - started));
|
|
192
|
+
}, timeoutMs);
|
|
193
|
+
this.pending.set(id, { resolve: settle(resolve), reject: settle(reject), timer });
|
|
194
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
195
|
+
this.socket.write(JSON.stringify(frame) + '\n', (err) => {
|
|
196
|
+
if (err) {
|
|
197
|
+
const p = this.pending.get(id);
|
|
198
|
+
if (p) {
|
|
199
|
+
if (p.timer !== undefined)
|
|
200
|
+
clearTimeout(p.timer);
|
|
201
|
+
this.pending.delete(id);
|
|
202
|
+
p.reject(new Error(`journal client: ${verb} write failed: ${err.message}`));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=journal-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal-connection.js","sourceRoot":"","sources":["../src/journal-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const READ_ONLY_VERBS: Set<string>;
|
|
2
|
+
export declare const FLOW_READ_BUDGET_MS = 300000;
|
|
3
|
+
export declare class JournalRequestTimeoutError extends Error {
|
|
4
|
+
readonly verb: string;
|
|
5
|
+
readonly timeoutMs: number;
|
|
6
|
+
readonly attempts: number;
|
|
7
|
+
readonly elapsedMs: number;
|
|
8
|
+
readonly readBudgetMs?: number | undefined;
|
|
9
|
+
constructor(verb: string, timeoutMs: number, attempts?: number, elapsedMs?: number, readBudgetMs?: number | undefined);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The dedicated read session lost its transport (closed, reset, not connected)
|
|
13
|
+
* while the primary session may still be healthy. Like a timeout, this says
|
|
14
|
+
* nothing about the run itself: retry within the budget, then leave the run
|
|
15
|
+
* resumable. Protocol refusals and write failures are never this error.
|
|
16
|
+
*/
|
|
17
|
+
export declare class JournalReadInterruptedError extends Error {
|
|
18
|
+
readonly verb: string;
|
|
19
|
+
readonly attempts: number;
|
|
20
|
+
readonly elapsedMs: number;
|
|
21
|
+
readonly readBudgetMs?: number | undefined;
|
|
22
|
+
constructor(verb: string, attempts?: number, elapsedMs?: number, readBudgetMs?: number | undefined, options?: ErrorOptions & {
|
|
23
|
+
retryable?: boolean;
|
|
24
|
+
});
|
|
25
|
+
/** False when the session it ran on is gone, so retrying it cannot help. */
|
|
26
|
+
readonly retryable: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** A read that could not be answered — by timeout or lost read transport — not a run failure. */
|
|
29
|
+
export declare function isReadInterruptionError(error: unknown): error is JournalRequestTimeoutError | JournalReadInterruptedError;
|
|
30
|
+
/** Serial admission bounds read amplification, including retries, per body client. */
|
|
31
|
+
export declare class JournalReadPolicy {
|
|
32
|
+
private tail;
|
|
33
|
+
private readonly closed;
|
|
34
|
+
constructor();
|
|
35
|
+
close(reason?: unknown): void;
|
|
36
|
+
read<T>(verb: string, timeoutMs: number, budgetMs: number, request: (timeoutMs: number, signal: AbortSignal) => Promise<T>, caller?: AbortSignal): Promise<T>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=journal-read-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal-read-policy.d.ts","sourceRoot":"","sources":["../src/journal-read-policy.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,aAA8E,CAAC;AAC3G,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAE3C,qBAAa,0BAA2B,SAAQ,KAAK;IAEjD,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,QAAQ;IACjB,QAAQ,CAAC,SAAS;IAClB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM;gBAJrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAI,EACZ,SAAS,SAAY,EACrB,YAAY,CAAC,EAAE,MAAM,YAAA;CAOjC;AAED;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IAElD,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,QAAQ;IACjB,QAAQ,CAAC,SAAS;IAClB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM;gBAHrB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAI,EACZ,SAAS,SAAI,EACb,YAAY,CAAC,EAAE,MAAM,YAAA,EAC9B,OAAO,CAAC,EAAE,YAAY,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAWlD,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,0BAA0B,GAAG,2BAA2B,CAIzH;AAED,sFAAsF;AACtF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;;IAOhD,KAAK,CAAC,MAAM,GAAE,OAAuD,GAAG,IAAI;IAEtE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAC7D,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAsDrG"}
|