harnery 0.45.1 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commander.d.ts +13 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commands/admission.d.ts.map +1 -1
- package/dist/commands/admission.js +214 -27
- package/dist/commands/agents.d.ts +4 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +102 -25
- package/dist/commands/browse.d.ts +3 -0
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +172 -8
- package/dist/commands/fetch.js +1 -0
- package/dist/commands/ledger-v3.d.ts.map +1 -1
- package/dist/commands/ledger-v3.js +8 -2
- package/dist/commands/presence.d.ts.map +1 -1
- package/dist/commands/presence.js +40 -0
- package/dist/commands/qa-run.d.ts.map +1 -1
- package/dist/commands/qa-run.js +4 -3
- package/dist/commands/review-pack.d.ts.map +1 -1
- package/dist/commands/review-pack.js +33 -6
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +6 -45
- package/dist/core/agents/coord-client.d.ts.map +1 -1
- package/dist/core/agents/coord-client.js +0 -18
- package/dist/core/agents/index.d.ts +1 -0
- package/dist/core/agents/index.d.ts.map +1 -1
- package/dist/core/agents/index.js +1 -0
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
- package/dist/core/agents/live-authority-v3.js +11 -4
- package/dist/core/agents/render/session-context.d.ts +0 -6
- package/dist/core/agents/render/session-context.d.ts.map +1 -1
- package/dist/core/agents/render/session-context.js +1 -6
- package/dist/core/agents/session-events.d.ts.map +1 -1
- package/dist/core/agents/session-events.js +12 -4
- package/dist/core/agents/state/heartbeat-reader.d.ts +3 -0
- package/dist/core/agents/state/heartbeat-reader.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.d.ts +3 -1
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.js +6 -2
- package/dist/core/agents/state/parent-reference-contract.d.ts +16 -0
- package/dist/core/agents/state/parent-reference-contract.d.ts.map +1 -0
- package/dist/core/agents/state/parent-reference-contract.js +1 -0
- package/dist/core/agents/state/parent-reference.d.ts +18 -0
- package/dist/core/agents/state/parent-reference.d.ts.map +1 -0
- package/dist/core/agents/state/parent-reference.js +119 -0
- package/dist/core/agents/state/pidmap.js +2 -2
- package/dist/core/agents/state/proc-start.d.ts +20 -31
- package/dist/core/agents/state/proc-start.d.ts.map +1 -1
- package/dist/core/agents/state/proc-start.js +37 -70
- package/dist/core/agents/state/service-process.d.ts +61 -0
- package/dist/core/agents/state/service-process.d.ts.map +1 -0
- package/dist/core/agents/state/service-process.js +143 -0
- package/dist/core/config.d.ts +39 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +63 -0
- package/dist/core/context/index.d.ts +6 -4
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +194 -256
- package/dist/core/context/observation.d.ts +9 -9
- package/dist/core/context/observation.d.ts.map +1 -1
- package/dist/core/context/observation.js +37 -6
- package/dist/core/diagnostics/path-identity.d.ts +1 -1
- package/dist/core/diagnostics/path-identity.d.ts.map +1 -1
- package/dist/core/diagnostics/path-identity.js +51 -6
- package/dist/core/events/v3/canonical.js +43 -14
- package/dist/core/events/v3/index.d.ts +1 -1
- package/dist/core/events/v3/index.d.ts.map +1 -1
- package/dist/core/events/v3/index.js +1 -1
- package/dist/core/events/v3/producers/recorder.d.ts +34 -0
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +117 -13
- package/dist/core/events/v3/reader.d.ts.map +1 -1
- package/dist/core/events/v3/reader.js +53 -13
- package/dist/core/events/v3/runtime-build.d.ts +14 -0
- package/dist/core/events/v3/runtime-build.d.ts.map +1 -1
- package/dist/core/events/v3/runtime-build.js +44 -0
- package/dist/core/events/v3/validate.d.ts.map +1 -1
- package/dist/core/events/v3/validate.js +36 -1
- package/dist/core/governor/index.d.ts +2 -1
- package/dist/core/governor/index.d.ts.map +1 -1
- package/dist/core/governor/index.js +2 -1
- package/dist/core/governor/service-read.d.ts +3 -10
- package/dist/core/governor/service-read.d.ts.map +1 -1
- package/dist/core/governor/service-read.js +10 -94
- package/dist/core/governor/service.d.ts +3 -7
- package/dist/core/governor/service.d.ts.map +1 -1
- package/dist/core/governor/service.js +17 -182
- package/dist/core/hooks/adapter/native-parent.d.ts +23 -0
- package/dist/core/hooks/adapter/native-parent.d.ts.map +1 -0
- package/dist/core/hooks/adapter/native-parent.js +91 -0
- package/dist/core/hooks/cli.js +79 -4
- package/dist/core/hooks/resolve/owner.d.ts +0 -11
- package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
- package/dist/core/hooks/resolve/owner.js +2 -25
- package/dist/core/hooks/shell-admission.d.ts +84 -0
- package/dist/core/hooks/shell-admission.d.ts.map +1 -0
- package/dist/core/hooks/shell-admission.js +622 -0
- package/dist/core/hooks/shell-commit-tree.d.ts +2 -0
- package/dist/core/hooks/shell-commit-tree.d.ts.map +1 -0
- package/dist/core/hooks/shell-commit-tree.js +104 -0
- package/dist/core/inbox/contract.d.ts +12 -0
- package/dist/core/inbox/contract.d.ts.map +1 -1
- package/dist/core/inbox/contract.js +16 -0
- package/dist/core/inbox/peer-messages.d.ts +41 -16
- package/dist/core/inbox/peer-messages.d.ts.map +1 -1
- package/dist/core/inbox/peer-messages.js +372 -15
- package/dist/core/inbox/service.d.ts +8 -1
- package/dist/core/inbox/service.d.ts.map +1 -1
- package/dist/core/inbox/service.js +83 -3
- package/dist/core/inbox/targets.d.ts +17 -3
- package/dist/core/inbox/targets.d.ts.map +1 -1
- package/dist/core/inbox/targets.js +77 -2
- package/dist/core/presence/git.d.ts +18 -12
- package/dist/core/presence/git.d.ts.map +1 -1
- package/dist/core/presence/git.js +32 -38
- package/dist/core/presence/index.d.ts +2 -2
- package/dist/core/presence/index.d.ts.map +1 -1
- package/dist/core/presence/index.js +8 -6
- package/dist/core/presence/mail.d.ts +133 -0
- package/dist/core/presence/mail.d.ts.map +1 -0
- package/dist/core/presence/mail.js +464 -0
- package/dist/core/resources/sampler.js +2 -2
- package/dist/core/resources/service-status.d.ts +2 -14
- package/dist/core/resources/service-status.d.ts.map +1 -1
- package/dist/core/resources/service-status.js +3 -23
- package/dist/core/resources/service.d.ts +3 -7
- package/dist/core/resources/service.d.ts.map +1 -1
- package/dist/core/resources/service.js +12 -101
- package/dist/core/resources/status.d.ts.map +1 -1
- package/dist/core/resources/status.js +3 -2
- package/dist/core/semantic/contract.d.ts +5 -5
- package/dist/core/semantic/service.d.ts.map +1 -1
- package/dist/core/semantic/service.js +9 -2
- package/dist/core/servers/index.d.ts +0 -2
- package/dist/core/servers/index.d.ts.map +1 -1
- package/dist/core/servers/index.js +3 -18
- package/dist/core/storage/modes.d.ts +4 -0
- package/dist/core/storage/modes.d.ts.map +1 -1
- package/dist/core/storage/modes.js +4 -0
- package/dist/core/storage/segments.d.ts.map +1 -1
- package/dist/core/storage/segments.js +5 -4
- package/dist/core/supervisor/service.d.ts +4 -7
- package/dist/core/supervisor/service.d.ts.map +1 -1
- package/dist/core/supervisor/service.js +23 -122
- package/dist/core/supervisor/services.js +2 -2
- package/dist/core/supervisor/status.d.ts +3 -17
- package/dist/core/supervisor/status.d.ts.map +1 -1
- package/dist/core/supervisor/status.js +7 -70
- package/dist/core/workflow/engine.js +2 -1
- package/dist/core/workflow/index.d.ts +3 -4
- package/dist/core/workflow/index.d.ts.map +1 -1
- package/dist/core/workflow/index.js +2 -2
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +30 -74
- package/dist/core/workflow/resume-lock.d.ts +17 -0
- package/dist/core/workflow/resume-lock.d.ts.map +1 -0
- package/dist/core/workflow/resume-lock.js +158 -0
- package/dist/core/workflow/run-state.d.ts +0 -21
- package/dist/core/workflow/run-state.d.ts.map +1 -1
- package/dist/core/workflow/run-state.js +3 -174
- package/dist/core/workflow/workspaces/leases.d.ts +4 -0
- package/dist/core/workflow/workspaces/leases.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/leases.js +1 -1
- package/dist/core/workflow/workspaces/local-git.js +91 -210
- package/dist/core/workflow/workspaces/ownership.d.ts +0 -7
- package/dist/core/workflow/workspaces/ownership.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/ownership.js +3 -130
- package/dist/core/workflow/workspaces/reclaim.d.ts +4 -7
- package/dist/core/workflow/workspaces/reclaim.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/reclaim.js +0 -4
- package/dist/core/workflow/workspaces/recovery.d.ts +1 -1
- package/dist/core/workflow/workspaces/recovery.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/recovery.js +1 -1
- package/dist/core/workflow/workspaces/state.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/state.js +1 -4
- package/dist/lib/admission-history.d.ts +96 -0
- package/dist/lib/admission-history.d.ts.map +1 -0
- package/dist/lib/admission-history.js +196 -0
- package/dist/lib/admission.d.ts +56 -7
- package/dist/lib/admission.d.ts.map +1 -1
- package/dist/lib/admission.js +161 -19
- package/dist/lib/browser/client.d.ts +18 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +100 -12
- package/dist/lib/browser/content-checks.d.ts +3 -1
- package/dist/lib/browser/content-checks.d.ts.map +1 -1
- package/dist/lib/browser/content-checks.js +10 -2
- package/dist/lib/browser/critique.d.ts +32 -0
- package/dist/lib/browser/critique.d.ts.map +1 -1
- package/dist/lib/browser/critique.js +72 -3
- package/dist/lib/browser/geometry.d.ts +2 -0
- package/dist/lib/browser/geometry.d.ts.map +1 -1
- package/dist/lib/browser/geometry.js +61 -15
- package/dist/lib/browser/index.d.ts +1 -1
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +1 -1
- package/dist/lib/browser/page-review-contracts.d.ts +6 -1
- package/dist/lib/browser/page-review-contracts.d.ts.map +1 -1
- package/dist/lib/browser/page-review-contracts.js +6 -1
- package/dist/lib/browser/page-review-judge.d.ts +3 -1
- package/dist/lib/browser/page-review-judge.d.ts.map +1 -1
- package/dist/lib/browser/page-review-judge.js +41 -11
- package/dist/lib/browser/page-review-pack.d.ts +3 -0
- package/dist/lib/browser/page-review-pack.d.ts.map +1 -1
- package/dist/lib/browser/page-review-pack.js +5 -2
- package/dist/lib/browser/qa-run-contracts.d.ts +11 -0
- package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -1
- package/dist/lib/browser/qa-run-contracts.js +11 -4
- package/dist/lib/browser/qa-run.d.ts.map +1 -1
- package/dist/lib/browser/qa-run.js +73 -16
- package/dist/lib/browser/runts.d.ts +4 -2
- package/dist/lib/browser/runts.d.ts.map +1 -1
- package/dist/lib/browser/runts.js +84 -33
- package/dist/lib/browser/windows-chrome.d.ts +14 -0
- package/dist/lib/browser/windows-chrome.d.ts.map +1 -1
- package/dist/lib/browser/windows-chrome.js +42 -0
- package/dist/lib/browser/windows-login-sync.d.ts +110 -0
- package/dist/lib/browser/windows-login-sync.d.ts.map +1 -0
- package/dist/lib/browser/windows-login-sync.js +171 -0
- package/dist/lib/cookies/client.d.ts +30 -5
- package/dist/lib/cookies/client.d.ts.map +1 -1
- package/dist/lib/cookies/client.js +55 -10
- package/dist/lib/cookies/index.d.ts +1 -1
- package/dist/lib/cookies/index.d.ts.map +1 -1
- package/dist/lib/cookies/index.js +1 -1
- package/dist/lib/docs-metadata-sync.d.ts.map +1 -1
- package/dist/lib/docs-metadata-sync.js +41 -2
- package/dist/lib/durable-job.d.ts +8 -0
- package/dist/lib/durable-job.d.ts.map +1 -1
- package/dist/lib/durable-job.js +10 -0
- package/dist/lib/http/client.d.ts +9 -8
- package/dist/lib/http/client.d.ts.map +1 -1
- package/dist/lib/http/client.js +44 -2
- package/dist/lib/instructions/templates.js +4 -4
- package/package.json +2 -2
- package/src/commander.ts +13 -0
- package/src/commands/admission.ts +272 -29
- package/src/commands/agents.ts +132 -27
- package/src/commands/browse.ts +208 -6
- package/src/commands/fetch.ts +1 -0
- package/src/commands/ledger-v3.ts +8 -2
- package/src/commands/presence.ts +49 -0
- package/src/commands/qa-run.ts +4 -3
- package/src/commands/review-pack.ts +41 -5
- package/src/commands/workflow.ts +8 -58
- package/src/core/agents/coord-client.ts +0 -20
- package/src/core/agents/index.ts +6 -0
- package/src/core/agents/live-authority-v3.ts +11 -4
- package/src/core/agents/render/session-context.ts +1 -7
- package/src/core/agents/session-events.ts +18 -3
- package/src/core/agents/state/heartbeat-reader.ts +3 -0
- package/src/core/agents/state/live-coordination-view.ts +13 -6
- package/src/core/agents/state/parent-reference-contract.ts +14 -0
- package/src/core/agents/state/parent-reference.ts +179 -0
- package/src/core/agents/state/pidmap.ts +2 -2
- package/src/core/agents/state/proc-start.ts +41 -69
- package/src/core/agents/state/service-process.ts +217 -0
- package/src/core/config.ts +85 -0
- package/src/core/context/index.ts +207 -272
- package/src/core/context/observation.ts +40 -9
- package/src/core/diagnostics/path-identity.ts +52 -6
- package/src/core/events/v3/canonical.ts +46 -13
- package/src/core/events/v3/index.ts +3 -0
- package/src/core/events/v3/producers/recorder.ts +151 -13
- package/src/core/events/v3/reader.ts +55 -11
- package/src/core/events/v3/runtime-build.ts +62 -0
- package/src/core/events/v3/validate.ts +42 -1
- package/src/core/governor/index.ts +1 -2
- package/src/core/governor/service-read.ts +15 -114
- package/src/core/governor/service.ts +36 -220
- package/src/core/hooks/adapter/native-parent.ts +109 -0
- package/src/core/hooks/cli.ts +83 -4
- package/src/core/hooks/resolve/owner.ts +2 -25
- package/src/core/hooks/shell-admission.ts +634 -0
- package/src/core/hooks/shell-commit-tree.ts +102 -0
- package/src/core/inbox/contract.ts +18 -0
- package/src/core/inbox/peer-messages.ts +501 -15
- package/src/core/inbox/service.ts +108 -3
- package/src/core/inbox/targets.ts +94 -3
- package/src/core/presence/git.ts +45 -37
- package/src/core/presence/index.ts +16 -8
- package/src/core/presence/mail.ts +620 -0
- package/src/core/resources/sampler.ts +3 -2
- package/src/core/resources/service-status.ts +6 -35
- package/src/core/resources/service.ts +23 -133
- package/src/core/resources/status.ts +3 -2
- package/src/core/semantic/service.ts +8 -2
- package/src/core/servers/index.ts +3 -23
- package/src/core/storage/modes.ts +6 -0
- package/src/core/storage/segments.ts +5 -4
- package/src/core/supervisor/service.ts +33 -155
- package/src/core/supervisor/services.ts +2 -2
- package/src/core/supervisor/status.ts +10 -85
- package/src/core/workflow/engine.ts +1 -1
- package/src/core/workflow/index.ts +2 -13
- package/src/core/workflow/proof.ts +35 -83
- package/src/core/workflow/resume-lock.ts +179 -0
- package/src/core/workflow/run-state.ts +3 -207
- package/src/core/workflow/workspaces/leases.ts +1 -1
- package/src/core/workflow/workspaces/local-git.ts +120 -239
- package/src/core/workflow/workspaces/ownership.ts +3 -158
- package/src/core/workflow/workspaces/reclaim.ts +3 -9
- package/src/core/workflow/workspaces/recovery.ts +1 -1
- package/src/core/workflow/workspaces/state.ts +1 -5
- package/src/lib/admission-history.ts +267 -0
- package/src/lib/admission.ts +217 -19
- package/src/lib/browser/client.ts +147 -35
- package/src/lib/browser/content-checks.ts +14 -3
- package/src/lib/browser/critique.ts +113 -3
- package/src/lib/browser/geometry.ts +63 -14
- package/src/lib/browser/index.ts +5 -0
- package/src/lib/browser/page-review-contracts.ts +6 -1
- package/src/lib/browser/page-review-judge.ts +58 -13
- package/src/lib/browser/page-review-pack.ts +13 -2
- package/src/lib/browser/qa-run-contracts.ts +30 -4
- package/src/lib/browser/qa-run.ts +78 -17
- package/src/lib/browser/runts.ts +85 -37
- package/src/lib/browser/windows-chrome.ts +50 -0
- package/src/lib/browser/windows-login-sync.ts +275 -0
- package/src/lib/cookies/client.ts +62 -10
- package/src/lib/cookies/index.ts +3 -0
- package/src/lib/docs-metadata-sync.ts +44 -2
- package/src/lib/durable-job.ts +15 -0
- package/src/lib/http/client.ts +63 -1
- package/src/lib/instructions/templates.ts +4 -4
- package/dist/core/agents/state/process-handle.d.ts +0 -26
- package/dist/core/agents/state/process-handle.d.ts.map +0 -1
- package/dist/core/agents/state/process-handle.js +0 -121
- package/dist/core/workflow/recovery-audit.d.ts +0 -30
- package/dist/core/workflow/recovery-audit.d.ts.map +0 -1
- package/dist/core/workflow/recovery-audit.js +0 -116
- package/src/core/agents/state/process-handle.ts +0 -165
- package/src/core/workflow/recovery-audit.ts +0 -181
|
@@ -1,12 +1,57 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createHmac, randomBytes } from "node:crypto";
|
|
2
|
+
import { chmodSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { PERSONAL_DIR_MODE, PERSONAL_FILE_MODE } from "../storage/modes.js";
|
|
2
6
|
const HOME_PATH = /(?:[A-Za-z]:[\\/]Users[\\/](?:[^\\/\r\n\0:"<>|]+(?=[\\/])|[^\\/\s\0:]+)|\/home\/[^/\s\0:]+|\/Users\/[^/\s\0:]+)/g;
|
|
3
|
-
|
|
7
|
+
const KEY_PATTERN = /^[0-9a-f]{64}$/;
|
|
8
|
+
let cachedKey;
|
|
9
|
+
/**
|
|
10
|
+
* Per-install secret for home-path pseudonyms. An unkeyed digest would let
|
|
11
|
+
* anyone holding a bundle recover the user name by hashing guesses, so the
|
|
12
|
+
* key stays in local state and never enters a bundle. Sanitized values carry
|
|
13
|
+
* the pseudonym itself, so replay elsewhere needs no key.
|
|
14
|
+
*/
|
|
15
|
+
function identityKeyPath() {
|
|
16
|
+
const xdg = process.env.XDG_STATE_HOME;
|
|
17
|
+
const base = xdg?.trim() ? xdg : join(homedir(), ".local", "state");
|
|
18
|
+
return join(base, "harnery", "diagnostic-identity.key");
|
|
19
|
+
}
|
|
20
|
+
function readKey(path) {
|
|
21
|
+
try {
|
|
22
|
+
const text = readFileSync(path, "utf8").trim();
|
|
23
|
+
return KEY_PATTERN.test(text) ? Buffer.from(text, "hex") : undefined;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function identityKey() {
|
|
30
|
+
if (cachedKey)
|
|
31
|
+
return cachedKey;
|
|
32
|
+
const path = identityKeyPath();
|
|
33
|
+
let key = readKey(path);
|
|
34
|
+
if (!key) {
|
|
35
|
+
const fresh = randomBytes(32);
|
|
36
|
+
try {
|
|
37
|
+
mkdirSync(dirname(path), { recursive: true, mode: PERSONAL_DIR_MODE });
|
|
38
|
+
writeFileSync(path, `${fresh.toString("hex")}\n`, { flag: "wx", mode: PERSONAL_FILE_MODE });
|
|
39
|
+
chmodSync(path, PERSONAL_FILE_MODE);
|
|
40
|
+
key = fresh;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// A concurrent writer won the race, or state is unwritable. Prefer the
|
|
44
|
+
// stored key; otherwise stay private with a process-local key.
|
|
45
|
+
key = readKey(path) ?? fresh;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
cachedKey = key;
|
|
49
|
+
return key;
|
|
50
|
+
}
|
|
51
|
+
/** One stable, non-reversible representation for private home paths in values and identity inputs. */
|
|
4
52
|
export function canonicalizeDiagnosticIdentity(value) {
|
|
5
53
|
return value.replace(HOME_PATH, (home) => {
|
|
6
|
-
const digest =
|
|
7
|
-
.update("harnery-diagnostic-home-v1\0")
|
|
8
|
-
.update(home)
|
|
9
|
-
.digest("hex");
|
|
54
|
+
const digest = createHmac("sha256", identityKey()).update(home).digest("hex");
|
|
10
55
|
return `[REDACTED:home:${digest}]`;
|
|
11
56
|
});
|
|
12
57
|
}
|
|
@@ -47,13 +47,20 @@ export function normalizeNativeIdV3(context, namespace, nativeId) {
|
|
|
47
47
|
.digest("hex");
|
|
48
48
|
return `hid_${digest}`;
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* NFC leaves ASCII unchanged, so ASCII strings and key sets skip normalization
|
|
52
|
+
* and the collision map. Every reader re-serializes each ledger frame to prove
|
|
53
|
+
* it is canonical, which makes this the hottest function on a cold read.
|
|
54
|
+
*/
|
|
55
|
+
const NON_ASCII = /[\u0080-\uffff]/;
|
|
50
56
|
function serialize(value, ancestors) {
|
|
51
57
|
if (value === null)
|
|
52
58
|
return "null";
|
|
53
59
|
if (typeof value === "boolean")
|
|
54
60
|
return value ? "true" : "false";
|
|
55
|
-
if (typeof value === "string")
|
|
56
|
-
return JSON.stringify(value.normalize("NFC"));
|
|
61
|
+
if (typeof value === "string") {
|
|
62
|
+
return JSON.stringify(NON_ASCII.test(value) ? value.normalize("NFC") : value);
|
|
63
|
+
}
|
|
57
64
|
if (typeof value === "number") {
|
|
58
65
|
if (!Number.isFinite(value))
|
|
59
66
|
throw new Error("canonical JSON rejects non-finite numbers");
|
|
@@ -67,29 +74,51 @@ function serialize(value, ancestors) {
|
|
|
67
74
|
ancestors.add(value);
|
|
68
75
|
try {
|
|
69
76
|
if (Array.isArray(value)) {
|
|
70
|
-
|
|
77
|
+
let out = "[";
|
|
78
|
+
for (let index = 0; index < value.length; index++) {
|
|
79
|
+
if (index > 0)
|
|
80
|
+
out += ",";
|
|
81
|
+
out += serialize(value[index], ancestors);
|
|
82
|
+
}
|
|
83
|
+
return `${out}]`;
|
|
71
84
|
}
|
|
72
85
|
const prototype = Object.getPrototypeOf(value);
|
|
73
86
|
if (prototype !== Object.prototype && prototype !== null) {
|
|
74
87
|
throw new Error("canonical JSON accepts only plain objects");
|
|
75
88
|
}
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
throw new Error("canonical JSON key collision after Unicode normalization");
|
|
81
|
-
}
|
|
82
|
-
normalized.set(normalizedKey, item);
|
|
89
|
+
const object = value;
|
|
90
|
+
const keys = Object.keys(object);
|
|
91
|
+
if (keys.some((key) => NON_ASCII.test(key))) {
|
|
92
|
+
return serializeNormalizedObject(object, ancestors);
|
|
83
93
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
94
|
+
keys.sort(compareUtf16);
|
|
95
|
+
let out = "{";
|
|
96
|
+
for (let index = 0; index < keys.length; index++) {
|
|
97
|
+
const key = keys[index];
|
|
98
|
+
if (index > 0)
|
|
99
|
+
out += ",";
|
|
100
|
+
out += `${JSON.stringify(key)}:${serialize(object[key], ancestors)}`;
|
|
101
|
+
}
|
|
102
|
+
return `${out}}`;
|
|
88
103
|
}
|
|
89
104
|
finally {
|
|
90
105
|
ancestors.delete(value);
|
|
91
106
|
}
|
|
92
107
|
}
|
|
108
|
+
function serializeNormalizedObject(object, ancestors) {
|
|
109
|
+
const normalized = new Map();
|
|
110
|
+
for (const [key, item] of Object.entries(object)) {
|
|
111
|
+
const normalizedKey = key.normalize("NFC");
|
|
112
|
+
if (normalized.has(normalizedKey)) {
|
|
113
|
+
throw new Error("canonical JSON key collision after Unicode normalization");
|
|
114
|
+
}
|
|
115
|
+
normalized.set(normalizedKey, item);
|
|
116
|
+
}
|
|
117
|
+
const keys = [...normalized.keys()].sort(compareUtf16);
|
|
118
|
+
return `{${keys
|
|
119
|
+
.map((key) => `${JSON.stringify(key)}:${serialize(normalized.get(key), ancestors)}`)
|
|
120
|
+
.join(",")}}`;
|
|
121
|
+
}
|
|
93
122
|
function compareUtf16(left, right) {
|
|
94
123
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
95
124
|
}
|
|
@@ -26,7 +26,7 @@ export { type RecordCommandSignalV3Input, type RecordCommandSignalV3Result, reco
|
|
|
26
26
|
export { type ClaimChangedObservationV3, type CoordinationAuthoritySignalV3, type CoordinationObservationBySignalV3, type CoordinationProducerContextV3, type DecisionStateChangedObservationV3, type IdentityAttestedObservationV3, type LifecycleChangedObservationV3, type NormalizedCoordinationAuthorityV3, normalizeCoordinationAuthorityV3, type TaskChangedObservationV3, type WaitEndedObservationV3, type WaitStartedObservationV3, } from "./producers/coordination.js";
|
|
27
27
|
export { type RecordCoordinationAuthorityV3Input, type RecordCoordinationAuthorityV3Result, recordCoordinationAuthorityV3, } from "./producers/coordination-recorder.js";
|
|
28
28
|
export { type HookEventV3, type HookProducerContextV3, normalizeHookEventV3, upgradeHookEventV3, } from "./producers/hook.js";
|
|
29
|
-
export { type ApprovedSessionEndReasonV3, type DrainHookIntakeSpoolV3Result, drainHookIntakeSpoolV3, type HookProducerStateRecordV3, type HookProducerStateV3, listHookProducerStateRecordsV3, type RecordApprovedSessionEndV3Input, type RecordApprovedSessionEndV3Result, type RecordHookSignalV3Input, type RecordHookSignalV3Result, readHookProducerStateV3, recordApprovedSessionEndV3, recordHookSignalV3, } from "./producers/recorder.js";
|
|
29
|
+
export { type ApprovedSessionEndReasonV3, type DrainHookIntakeSpoolV3Result, drainHookIntakeSpoolV3, type HookProducerStateRecordV3, type HookProducerStateScanV3, type HookProducerStateV3, type InvalidHookProducerStateFileV3, listHookProducerStateRecordsV3, type RecordApprovedSessionEndV3Input, type RecordApprovedSessionEndV3Result, type RecordHookSignalV3Input, type RecordHookSignalV3Result, readHookProducerStateV3, recordApprovedSessionEndV3, recordHookSignalV3, scanHookProducerStateRecordsV3, } from "./producers/recorder.js";
|
|
30
30
|
export { type ClaimProjectionV3, type DelegationProjectionV3, EVENT_V3_SAFETY_REDUCER_BUILD, type GenerationSafetyStateV3, reduceSafetyProjectionV3, type SafetyProjectionDiagnosticCodeV3, type SafetyProjectionDiagnosticV3, type SafetyProjectionV3, type WaitProjectionV3, } from "./projection.js";
|
|
31
31
|
export { digestEventV3AuthorityDirectoryV3, eventV3ActiveWatchPath, inspectInvalidActiveAuthorityV3, type LedgerCursorV3, type LedgerDiagnosticCodeV3, type LedgerDiagnosticV3, type LedgerFrameV3, type PositionedEventV3, type ReadLedgerV3Options, type ReadLedgerV3Result, type ReadLedgerV3SinceResult, readLedgerFramesV3, readLedgerFramesV3Since, readLedgerV3, readLedgerV3Since, type SchemaAdvanceV3, } from "./reader.js";
|
|
32
32
|
export { type RecoverInvalidEventLedgerV3Input, type RecoverInvalidEventLedgerV3Result, recoverInvalidEventLedgerV3, } from "./recovery.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export { recordCommandSignalV3, } from "./producers/command-recorder.js";
|
|
|
25
25
|
export { normalizeCoordinationAuthorityV3, } from "./producers/coordination.js";
|
|
26
26
|
export { recordCoordinationAuthorityV3, } from "./producers/coordination-recorder.js";
|
|
27
27
|
export { normalizeHookEventV3, upgradeHookEventV3, } from "./producers/hook.js";
|
|
28
|
-
export { drainHookIntakeSpoolV3, listHookProducerStateRecordsV3, readHookProducerStateV3, recordApprovedSessionEndV3, recordHookSignalV3, } from "./producers/recorder.js";
|
|
28
|
+
export { drainHookIntakeSpoolV3, listHookProducerStateRecordsV3, readHookProducerStateV3, recordApprovedSessionEndV3, recordHookSignalV3, scanHookProducerStateRecordsV3, } from "./producers/recorder.js";
|
|
29
29
|
export { EVENT_V3_SAFETY_REDUCER_BUILD, reduceSafetyProjectionV3, } from "./projection.js";
|
|
30
30
|
export { digestEventV3AuthorityDirectoryV3, eventV3ActiveWatchPath, inspectInvalidActiveAuthorityV3, readLedgerFramesV3, readLedgerFramesV3Since, readLedgerV3, readLedgerV3Since, } from "./reader.js";
|
|
31
31
|
export { recoverInvalidEventLedgerV3, } from "./recovery.js";
|
|
@@ -331,6 +331,38 @@ export type SalvageOpenSpansV3Result = {
|
|
|
331
331
|
* the caller's eligibility gate and never touched here.
|
|
332
332
|
*/
|
|
333
333
|
export declare function salvageOpenSpansV3(input: SalvageOpenSpansV3Input): SalvageOpenSpansV3Result;
|
|
334
|
+
/** One producer-state file the validator refused during a listing scan. */
|
|
335
|
+
export interface InvalidHookProducerStateFileV3 {
|
|
336
|
+
path: string;
|
|
337
|
+
adapter: EventAdapterIdV3;
|
|
338
|
+
session_hash: `hid_${string}`;
|
|
339
|
+
reason: string;
|
|
340
|
+
/**
|
|
341
|
+
* The file's raw `instance_id` when it parses as JSON and carries a
|
|
342
|
+
* well-formed one. Readers that target one instance use it to keep failing
|
|
343
|
+
* closed on that instance's own invalid state.
|
|
344
|
+
*/
|
|
345
|
+
instance_id?: `inst_${string}`;
|
|
346
|
+
}
|
|
347
|
+
export interface HookProducerStateScanV3 {
|
|
348
|
+
records: HookProducerStateRecordV3[];
|
|
349
|
+
invalid: InvalidHookProducerStateFileV3[];
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Scan every producer-state file of the active epoch. A file the validator
|
|
353
|
+
* refuses is reported in `invalid` instead of failing the scan, so one
|
|
354
|
+
* session's bad state cannot take coordination away from every other session
|
|
355
|
+
* in the checkout. An unsafe adapter directory still throws.
|
|
356
|
+
*/
|
|
357
|
+
export declare function scanHookProducerStateRecordsV3(coordRoot: string, options?: {
|
|
358
|
+
includeTerminal?: boolean;
|
|
359
|
+
}): HookProducerStateScanV3;
|
|
360
|
+
/**
|
|
361
|
+
* List the valid producer states of the active epoch. An invalid file is
|
|
362
|
+
* skipped and recorded as a `producer_state_invalid_skipped` diagnostic that
|
|
363
|
+
* names its adapter and session hash; readers of that one session's state
|
|
364
|
+
* still fail closed through `readHookProducerStateV3`.
|
|
365
|
+
*/
|
|
334
366
|
export declare function listHookProducerStateRecordsV3(coordRoot: string, options?: {
|
|
335
367
|
includeTerminal?: boolean;
|
|
336
368
|
}): HookProducerStateRecordV3[];
|
|
@@ -400,5 +432,7 @@ export declare function readHookProducerStateByInstanceV3(coordRoot: string, ins
|
|
|
400
432
|
* instance match for the same adapter.
|
|
401
433
|
*/
|
|
402
434
|
export declare function readJoinableHookProducerStateV3(coordRoot: string, adapter: EventAdapterIdV3, nativeSessionId: string, instanceId: `inst_${string}`): HookProducerStateV3 | undefined;
|
|
435
|
+
/** Test seam: publish a producer state through the real write-side validator. */
|
|
436
|
+
export declare function publishHookProducerStateForTestV3(coordRoot: string, path: string, state: HookProducerStateV3): void;
|
|
403
437
|
export {};
|
|
404
438
|
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/recorder.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAEL,KAAK,uBAAuB,EAG7B,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAIL,KAAK,qBAAqB,EAE3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,eAAe,CAAC;AAW/E,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAEL,KAAK,eAAe,EAIrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,WAAW,EAA0B,MAAM,yBAAyB,CAAC;AASnF,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAExB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAW3D,QAAA,MAAM,YAAY,EAAG,0BAAmC,CAAC;AACzD,QAAA,MAAM,aAAa,EAAG,CAAU,CAAC;AAgBjC,UAAU,WAAY,SAAQ,eAAe;IAC3C,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,SAAS,EAAE,OAAO,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACjD,kBAAkB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,SAAS,EAAE,OAAO,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,OAAO,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,OAAO,MAAM,EAAE,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,UAAW,SAAQ,eAAe;IAC1C,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,OAAO,MAAM,EAAE,CAAC;IAClC,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;CAC1B;AAED,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,mBAAmB;IAC3B,iBAAiB,EAAE,OAAO,MAAM,EAAE,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,uBAAwB,SAAQ,mBAAmB;IAC3D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,2BAA2B;IACnC,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,UAAU,iBAAkB,SAAQ,eAAe;IACjD,SAAS,EAAE,OAAO,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,OAAO,MAAM,EAAE,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,YAAY,CAAC;IAC5B,cAAc,EAAE,OAAO,aAAa,CAAC;IACrC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,OAAO,MAAM,EAAE,CAAC;IAChC,kBAAkB,EAAE,OAAO,MAAM,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,gBAAgB,EAAE,OAAO,MAAM,EAAE,CAAC;IAClC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACnC,OAAO,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IAClC,2EAA2E;IAC3E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;+EAE2E;IAC3E,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IAC1C,aAAa,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACnC;kFAC8E;IAC9E,wBAAwB,CAAC,EAAE,2BAA2B,GAAG,gCAAgC,CAAC;IAC1F,YAAY,EAAE,eAAe,CAAC;IAC9B,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,eAAe,EAAE,OAAO,MAAM,EAAE,EAAE,CAAC;IACnC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,mBAAmB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,wBAAwB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrD,4EAA4E;IAC5E,4BAA4B,CAAC,EAAE,2BAA2B,CAAC;IAC3D,iFAAiF;IACjF,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;gFAC4E;IAC5E,oBAAoB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D;gFAC4E;IAC5E,mBAAmB,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD;iEAC6D;IAC7D,uBAAuB,CAAC,EAAE,8BAA8B,CAAC;IACzD;gDAC4C;IAC5C,+BAA+B,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACpE,gCAAgC,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACtE;uDACmD;IACnD,oBAAoB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,OAAO,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,wBAAwB,CAAC,EAAE,2BAA2B,GAAG,gCAAgC,CAAC;IAC1F,eAAe,CAAC,EAAE;QAChB,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;QAC/B,oBAAoB,EAAE,OAAO,MAAM,EAAE,CAAC;QACtC,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;QAC/B,kBAAkB,EAAE,OAAO,MAAM,EAAE,CAAC;KACrC,CAAC;IACF,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CACpC;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,uBAAuB,CAAA;CAAE,GAClC;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,qBAAqB,GAAG,cAAc,CAAA;CAAE;AAC9E,oGAAoG;GAClG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAC9C;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IACE,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AACH,mFAAmF;GACjF;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE;AACtB,iFAAiF;GAC/E;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F,MAAM,MAAM,0BAA0B,GAClC,uBAAuB,GACvB,2BAA2B,GAC3B,qBAAqB,GACrB,wBAAwB,GACxB,oBAAoB,GACpB,wBAAwB,GACxB,sBAAsB,GACtB,mBAAmB,GACnB,yBAAyB,CAAC;AAE9B,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,MAAM,EAAE,0BAA0B,CAAC;IACnC,OAAO,EACH,WAAW,GACX,QAAQ,GACR,WAAW,GACX,WAAW,GACX,QAAQ,GACR,aAAa,GACb,SAAS,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACrC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,gCAAgC,GACxC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,MAAM,EAAE,CAAA;CAAE,GACtD;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAU9F;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAmC3F;AA4KD,MAAM,WAAW,4BAA4B;IAC3C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,4BAA4B,CAyBtF;AA+gFD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,+BAA+B,GACrC,gCAAgC,CA6IlC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,gBAAgB,EAAE,SAAS,QAAQ,MAAM,EAAE,EAAE,CAAC;IAC9C,iBAAiB,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACpC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAiG3F;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,yBAAyB,EAAE,CA8B7B;AAED,MAAM,WAAW,oCAAoC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,oCAAoC,GAC1C,qCAAqC,CA4FvC;AA8DD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,MAAM,GACtB,mBAAmB,GAAG,SAAS,CAgBjC;AAED,MAAM,WAAW,qCAAqC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,OAAO,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,sCAAsC,GAC9C;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,GACxB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,GACxB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzB;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,qCAAqC,GAC3C,sCAAsC,CAiExC;AAED,0FAA0F;AAC1F,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,QAAQ,MAAM,EAAE,GAC3B,mBAAmB,GAAG,SAAS,CAQjC;AAED,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,QAAQ,MAAM,EAAE,GAC3B,mBAAmB,GAAG,SAAS,CAsBjC;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,QAAQ,MAAM,EAAE,GAC3B,mBAAmB,GAAG,SAAS,CAKjC"}
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -125,7 +125,15 @@ function sessionHashForSignal(input, context) {
|
|
|
125
125
|
// single live producer authority instead of hashing the instance into a
|
|
126
126
|
// second state path. Ambiguous or absent matches keep the fail-closed fallback.
|
|
127
127
|
if (adapterBehavior(input.adapter).sessionIdentityOnStartOnly) {
|
|
128
|
-
const
|
|
128
|
+
const scan = scanHookProducerStateRecordsV3(input.coordRoot);
|
|
129
|
+
// This instance's own state is unreadable: fail closed rather than hash
|
|
130
|
+
// the instance into a second state path beside it.
|
|
131
|
+
if (scan.invalid.some((file) => file.adapter === input.adapter && file.instance_id === input.instance_id)) {
|
|
132
|
+
throw new Error("V3 producer state is invalid");
|
|
133
|
+
}
|
|
134
|
+
for (const file of scan.invalid)
|
|
135
|
+
recordInvalidProducerStateDiagnostic(input.coordRoot, file);
|
|
136
|
+
const matches = scan.records.filter(({ state }) => state.adapter === input.adapter && state.instance_id === input.instance_id);
|
|
129
137
|
if (matches.length === 1) {
|
|
130
138
|
const name = basename(matches[0].path);
|
|
131
139
|
if (/^hid_[a-f0-9]{64}\.json$/.test(name)) {
|
|
@@ -2559,14 +2567,23 @@ export function salvageOpenSpansV3(input) {
|
|
|
2559
2567
|
lease.release();
|
|
2560
2568
|
}
|
|
2561
2569
|
}
|
|
2562
|
-
|
|
2570
|
+
/**
|
|
2571
|
+
* Scan every producer-state file of the active epoch. A file the validator
|
|
2572
|
+
* refuses is reported in `invalid` instead of failing the scan, so one
|
|
2573
|
+
* session's bad state cannot take coordination away from every other session
|
|
2574
|
+
* in the checkout. An unsafe adapter directory still throws.
|
|
2575
|
+
*/
|
|
2576
|
+
export function scanHookProducerStateRecordsV3(coordRoot, options = {}) {
|
|
2563
2577
|
const control = readEventV3ControlState(coordRoot);
|
|
2564
|
-
if (control.state !== "candidate" && control.state !== "active")
|
|
2565
|
-
return [];
|
|
2578
|
+
if (control.state !== "candidate" && control.state !== "active") {
|
|
2579
|
+
return { records: [], invalid: [] };
|
|
2580
|
+
}
|
|
2581
|
+
const genesisId = control.genesis.event.payload.genesis_id;
|
|
2566
2582
|
const producerRoot = join(resolve(coordRoot), EVENT_V3_LEDGER_RELATIVE_ROOT, "private-producers");
|
|
2567
2583
|
if (!existsSync(producerRoot))
|
|
2568
|
-
return [];
|
|
2584
|
+
return { records: [], invalid: [] };
|
|
2569
2585
|
const records = [];
|
|
2586
|
+
const invalid = [];
|
|
2570
2587
|
for (const adapter of EVENT_ADAPTER_IDS_V3) {
|
|
2571
2588
|
const directory = join(producerRoot, adapter);
|
|
2572
2589
|
if (!existsSync(directory))
|
|
@@ -2577,18 +2594,79 @@ export function listHookProducerStateRecordsV3(coordRoot, options = {}) {
|
|
|
2577
2594
|
}
|
|
2578
2595
|
for (const name of readdirSync(directory).filter((entry) => /^hid_[a-f0-9]{64}\.json$/.test(entry))) {
|
|
2579
2596
|
const path = join(directory, name);
|
|
2580
|
-
|
|
2597
|
+
let state;
|
|
2598
|
+
try {
|
|
2599
|
+
state = readProducerState(path);
|
|
2600
|
+
}
|
|
2601
|
+
catch (error) {
|
|
2602
|
+
const raw = rawProducerStateIdentity(path);
|
|
2603
|
+
// A refused file from a replaced epoch would have been skipped anyway.
|
|
2604
|
+
if (raw.epoch_genesis_id !== undefined && raw.epoch_genesis_id !== genesisId)
|
|
2605
|
+
continue;
|
|
2606
|
+
invalid.push({
|
|
2607
|
+
path,
|
|
2608
|
+
adapter,
|
|
2609
|
+
session_hash: name.slice(0, -".json".length),
|
|
2610
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
2611
|
+
...(raw.instance_id ? { instance_id: raw.instance_id } : {}),
|
|
2612
|
+
});
|
|
2613
|
+
continue;
|
|
2614
|
+
}
|
|
2581
2615
|
// Skip authorities left behind by a replaced epoch: their sequences and
|
|
2582
2616
|
// causal links belong to the archived ledger, not this one.
|
|
2583
|
-
if (state.epoch_genesis_id !==
|
|
2617
|
+
if (state.epoch_genesis_id !== genesisId)
|
|
2584
2618
|
continue;
|
|
2585
2619
|
if (!options.includeTerminal && state.terminal)
|
|
2586
2620
|
continue;
|
|
2587
2621
|
records.push({ path, modified_at_ms: lstatSync(path).mtimeMs, state });
|
|
2588
2622
|
}
|
|
2589
2623
|
}
|
|
2590
|
-
|
|
2624
|
+
records.sort((left, right) => left.state.generation_id.localeCompare(right.state.generation_id) ||
|
|
2591
2625
|
left.path.localeCompare(right.path));
|
|
2626
|
+
invalid.sort((left, right) => left.path.localeCompare(right.path));
|
|
2627
|
+
return { records, invalid };
|
|
2628
|
+
}
|
|
2629
|
+
/**
|
|
2630
|
+
* List the valid producer states of the active epoch. An invalid file is
|
|
2631
|
+
* skipped and recorded as a `producer_state_invalid_skipped` diagnostic that
|
|
2632
|
+
* names its adapter and session hash; readers of that one session's state
|
|
2633
|
+
* still fail closed through `readHookProducerStateV3`.
|
|
2634
|
+
*/
|
|
2635
|
+
export function listHookProducerStateRecordsV3(coordRoot, options = {}) {
|
|
2636
|
+
const scan = scanHookProducerStateRecordsV3(coordRoot, options);
|
|
2637
|
+
for (const file of scan.invalid)
|
|
2638
|
+
recordInvalidProducerStateDiagnostic(coordRoot, file);
|
|
2639
|
+
return scan.records;
|
|
2640
|
+
}
|
|
2641
|
+
function recordInvalidProducerStateDiagnostic(coordRoot, file) {
|
|
2642
|
+
writeProducerDiagnosticV3(coordRoot, "producer_state_invalid_skipped", {
|
|
2643
|
+
adapter: file.adapter,
|
|
2644
|
+
session_hash: file.session_hash,
|
|
2645
|
+
reason: file.reason,
|
|
2646
|
+
...(file.instance_id ? { instance_id: file.instance_id } : {}),
|
|
2647
|
+
});
|
|
2648
|
+
}
|
|
2649
|
+
function rawProducerStateIdentity(path) {
|
|
2650
|
+
try {
|
|
2651
|
+
const metadata = lstatSync(path);
|
|
2652
|
+
if (!metadata.isFile() || metadata.isSymbolicLink())
|
|
2653
|
+
return {};
|
|
2654
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
2655
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
2656
|
+
return {};
|
|
2657
|
+
return {
|
|
2658
|
+
...(typeof parsed.instance_id === "string" &&
|
|
2659
|
+
/^inst_[a-zA-Z0-9._-]{1,128}$/.test(parsed.instance_id)
|
|
2660
|
+
? { instance_id: parsed.instance_id }
|
|
2661
|
+
: {}),
|
|
2662
|
+
...(typeof parsed.epoch_genesis_id === "string"
|
|
2663
|
+
? { epoch_genesis_id: parsed.epoch_genesis_id }
|
|
2664
|
+
: {}),
|
|
2665
|
+
};
|
|
2666
|
+
}
|
|
2667
|
+
catch {
|
|
2668
|
+
return {};
|
|
2669
|
+
}
|
|
2592
2670
|
}
|
|
2593
2671
|
/**
|
|
2594
2672
|
* Re-anchor every live archived hook producer into a newly activated epoch.
|
|
@@ -3194,17 +3272,30 @@ function acquireStateLease(coordRoot, statePath) {
|
|
|
3194
3272
|
},
|
|
3195
3273
|
};
|
|
3196
3274
|
}
|
|
3275
|
+
/** Test seam: publish a producer state through the real write-side validator. */
|
|
3276
|
+
export function publishHookProducerStateForTestV3(coordRoot, path, state) {
|
|
3277
|
+
publishProducerState(coordRoot, path, state);
|
|
3278
|
+
}
|
|
3197
3279
|
function publishProducerState(coordRoot, path, state) {
|
|
3198
3280
|
const control = readEventV3ControlState(coordRoot);
|
|
3199
3281
|
if ((control.state === "candidate" || control.state === "active") &&
|
|
3200
3282
|
state.epoch_genesis_id !== control.genesis.event.payload.genesis_id) {
|
|
3201
3283
|
return;
|
|
3202
3284
|
}
|
|
3285
|
+
const serialized = JSON.stringify(state);
|
|
3286
|
+
// Validate the exact bytes about to land with the reader's own validator.
|
|
3287
|
+
// The previous file stays in place when this refuses.
|
|
3288
|
+
try {
|
|
3289
|
+
validateProducerStateDocument(JSON.parse(serialized));
|
|
3290
|
+
}
|
|
3291
|
+
catch {
|
|
3292
|
+
throw new Error("V3 producer state is invalid; refusing to publish");
|
|
3293
|
+
}
|
|
3203
3294
|
const temporary = `${path}.tmp-${process.pid}-${randomUUID()}`;
|
|
3204
3295
|
let fd;
|
|
3205
3296
|
try {
|
|
3206
3297
|
fd = openSync(temporary, "wx", stateFileMode());
|
|
3207
|
-
writeFileSync(fd, `${
|
|
3298
|
+
writeFileSync(fd, `${serialized}\n`, "utf8");
|
|
3208
3299
|
fsyncSync(fd);
|
|
3209
3300
|
closeSync(fd);
|
|
3210
3301
|
fd = undefined;
|
|
@@ -3233,6 +3324,15 @@ function readProducerState(path) {
|
|
|
3233
3324
|
catch {
|
|
3234
3325
|
throw new Error("V3 producer state is unreadable");
|
|
3235
3326
|
}
|
|
3327
|
+
return validateProducerStateDocument(parsed);
|
|
3328
|
+
}
|
|
3329
|
+
/**
|
|
3330
|
+
* The single producer-state validator. Readers run it on every file they
|
|
3331
|
+
* load, and `publishProducerState` runs it on the serialized document before
|
|
3332
|
+
* the rename, so a state no reader would accept fails in the producing hook
|
|
3333
|
+
* instead of in every later reader of the checkout.
|
|
3334
|
+
*/
|
|
3335
|
+
function validateProducerStateDocument(parsed) {
|
|
3236
3336
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
3237
3337
|
throw new Error("V3 producer state is invalid");
|
|
3238
3338
|
}
|
|
@@ -3476,8 +3576,10 @@ function validPendingRuntimeContext(value) {
|
|
|
3476
3576
|
Number.isFinite(Date.parse(pending.terminal_observed_at)) &&
|
|
3477
3577
|
typeof pending.turn_id === "string" &&
|
|
3478
3578
|
/^tid_[a-f0-9]{64}$/.test(pending.turn_id) &&
|
|
3479
|
-
|
|
3480
|
-
|
|
3579
|
+
// Same shapes the event contract accepts: workflow children carry
|
|
3580
|
+
// stableScopeId hashes (run_<64 hex>), not UUIDs.
|
|
3581
|
+
(pending.run_id === undefined || /^run_[a-zA-Z0-9._-]{1,128}$/.test(pending.run_id)) &&
|
|
3582
|
+
(pending.workflow_id === undefined || /^wf_[a-zA-Z0-9._-]{1,128}$/.test(pending.workflow_id)) &&
|
|
3481
3583
|
(pending.workflow_agent_id === undefined ||
|
|
3482
3584
|
/^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$/.test(pending.workflow_agent_id)) &&
|
|
3483
3585
|
typeof pending.native_session_id === "string" &&
|
|
@@ -3493,9 +3595,11 @@ function validPendingRuntimeContext(value) {
|
|
|
3493
3595
|
(pending.runtime_version === undefined ||
|
|
3494
3596
|
(typeof pending.runtime_version === "string" &&
|
|
3495
3597
|
/^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$/.test(pending.runtime_version))) &&
|
|
3598
|
+
// Externally driven reconciles (`deferRetryLimit`) keep counting past
|
|
3599
|
+
// RUNTIME_CONTEXT_RETRY_LIMIT until their own final attempt, and publish
|
|
3600
|
+
// those counts, so the reader must accept them.
|
|
3496
3601
|
Number.isSafeInteger(pending.attempts) &&
|
|
3497
|
-
pending.attempts >= 0
|
|
3498
|
-
pending.attempts < RUNTIME_CONTEXT_RETRY_LIMIT);
|
|
3602
|
+
pending.attempts >= 0);
|
|
3499
3603
|
}
|
|
3500
3604
|
function validActiveRuntimeContextProbe(value) {
|
|
3501
3605
|
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/reader.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { closeSync, existsSync, lstatSync, openSync, readdirSync, readFileSync,
|
|
|
4
4
|
import { join, relative, resolve } from "node:path";
|
|
5
5
|
import { canonicalJsonV3, sha256V3 } from "./canonical.js";
|
|
6
6
|
import { readEventV3Catalog, readEventV3SegmentManifest, } from "./catalog.js";
|
|
7
|
+
import { readAdvanceableControlWitnessV3 } from "./control-witness.js";
|
|
7
8
|
import { EVENT_V3_SCHEMA_DIGEST } from "./generated.js";
|
|
8
9
|
import { eventV3RecoveryRecordsRoot, listEventV3RecoveryReceipts, } from "./recovery-record.js";
|
|
9
10
|
import { validateEventV3 } from "./validate.js";
|
|
@@ -204,7 +205,8 @@ export function readLedgerV3(coordRoot, options = {}) {
|
|
|
204
205
|
return resumed.result;
|
|
205
206
|
}
|
|
206
207
|
const discovered = discoverLedgerFramesV3(coordRoot);
|
|
207
|
-
const validated =
|
|
208
|
+
const validated = validateWitnessedFramesV3(coordRoot, storage, discovered, options) ??
|
|
209
|
+
validateLedgerFramesV3(discovered.frames, options);
|
|
208
210
|
const recovery = discoverRecoveryReceiptsV3(coordRoot);
|
|
209
211
|
const diagnostics = [
|
|
210
212
|
...discovered.diagnostics,
|
|
@@ -263,7 +265,35 @@ function discoverRecoveryReceiptsV3(coordRoot) {
|
|
|
263
265
|
export function readLedgerFramesV3(frames, options = {}) {
|
|
264
266
|
return validateLedgerFramesV3(frames, options).result;
|
|
265
267
|
}
|
|
266
|
-
|
|
268
|
+
/**
|
|
269
|
+
* Cold-process fast path. Writers advance an authenticated validation
|
|
270
|
+
* checkpoint under the append lease after every drain, so when the witness
|
|
271
|
+
* names exactly the storage this read observed, each frame already passed the
|
|
272
|
+
* contract and canonical-byte checks that dominate a full read. Those two
|
|
273
|
+
* checks are skipped; every ledger-level rule still runs and rebuilds the
|
|
274
|
+
* validator state. The result is used only if that state reproduces the
|
|
275
|
+
* witnessed checkpoint byte for byte with no diagnostics and storage did not
|
|
276
|
+
* move during the read; anything else returns undefined and the caller runs
|
|
277
|
+
* the canonical full validation.
|
|
278
|
+
*/
|
|
279
|
+
function validateWitnessedFramesV3(coordRoot, storage, discovered, options) {
|
|
280
|
+
if (!discovered.active || discovered.diagnostics.length > 0)
|
|
281
|
+
return undefined;
|
|
282
|
+
const witness = readAdvanceableControlWitnessV3(coordRoot);
|
|
283
|
+
if (!witness || witness.payload.storage.fingerprint !== sha256V3(storage.fingerprint)) {
|
|
284
|
+
return undefined;
|
|
285
|
+
}
|
|
286
|
+
const trusted = validateLedgerFramesV3(discovered.frames, options, true);
|
|
287
|
+
if (trusted.state.diagnostics.length > 0)
|
|
288
|
+
return undefined;
|
|
289
|
+
const reproduced = checkpointFromValidationStateV3(trusted.state, discovered.active);
|
|
290
|
+
if (canonicalJsonV3(reproduced) !== canonicalJsonV3(witness.checkpoint))
|
|
291
|
+
return undefined;
|
|
292
|
+
if (ledgerStorageVersionV3(coordRoot).fingerprint !== storage.fingerprint)
|
|
293
|
+
return undefined;
|
|
294
|
+
return trusted;
|
|
295
|
+
}
|
|
296
|
+
function validateLedgerFramesV3(frames, options, witnessed = false) {
|
|
267
297
|
const state = {
|
|
268
298
|
diagnostics: [],
|
|
269
299
|
events: [],
|
|
@@ -276,10 +306,14 @@ function validateLedgerFramesV3(frames, options) {
|
|
|
276
306
|
clocks: new Map(),
|
|
277
307
|
event_count: 0,
|
|
278
308
|
};
|
|
279
|
-
validateLedgerFramesIntoStateV3(frames, state);
|
|
309
|
+
validateLedgerFramesIntoStateV3(frames, state, witnessed);
|
|
280
310
|
return { result: finishLedgerValidationV3(state, options, ledgerFramesBytesV3(frames)), state };
|
|
281
311
|
}
|
|
282
|
-
|
|
312
|
+
/**
|
|
313
|
+
* `witnessed` skips only the per-frame contract and canonical-byte checks, and
|
|
314
|
+
* only validateWitnessedFramesV3 may pass it, after authenticating the frames.
|
|
315
|
+
*/
|
|
316
|
+
function validateLedgerFramesIntoStateV3(frames, state, witnessed = false) {
|
|
283
317
|
state.first_position ??= frames[0]?.position;
|
|
284
318
|
const { diagnostics, events, advances, accepted, reader_build: readerBuild, seen_ids: seenIds, producer_sequences: producerSequences, attestations, clocks, } = state;
|
|
285
319
|
for (const frame of frames) {
|
|
@@ -308,17 +342,23 @@ function validateLedgerFramesIntoStateV3(frames, state) {
|
|
|
308
342
|
diagnostics.push(diagnostic("unsupported_major", frame));
|
|
309
343
|
continue;
|
|
310
344
|
}
|
|
311
|
-
|
|
312
|
-
if (
|
|
313
|
-
|
|
314
|
-
continue;
|
|
345
|
+
let event;
|
|
346
|
+
if (witnessed) {
|
|
347
|
+
event = parsed;
|
|
315
348
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
349
|
+
else {
|
|
350
|
+
const validation = validateEventV3(parsed);
|
|
351
|
+
if (!validation.ok || !validation.event) {
|
|
352
|
+
diagnostics.push(diagnostic("invalid_contract", frame));
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
355
|
+
event = validation.event;
|
|
356
|
+
if (canonicalJsonV3(event) !== frame.raw) {
|
|
357
|
+
diagnostics.push(diagnostic("noncanonical_frame", frame, event.event_id));
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
321
360
|
}
|
|
361
|
+
const shape = event;
|
|
322
362
|
const priorFrame = seenIds.get(shape.event_id);
|
|
323
363
|
if (priorFrame !== undefined) {
|
|
324
364
|
if (priorFrame !== frame.raw) {
|