harnery 0.42.0 → 0.44.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/README.md +3 -3
- package/dist/commander.d.ts +16 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +18 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +95 -52
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +38 -11
- package/dist/commands/diagnostics.d.ts.map +1 -1
- package/dist/commands/diagnostics.js +10 -0
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +22 -7
- package/dist/commands/governor.js +22 -10
- package/dist/commands/inbox.d.ts +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +55 -2
- package/dist/commands/rm.d.ts.map +1 -1
- package/dist/commands/rm.js +28 -4
- package/dist/commands/servers.d.ts.map +1 -1
- package/dist/commands/servers.js +16 -1
- package/dist/commands/supervisor.d.ts.map +1 -1
- package/dist/commands/supervisor.js +7 -2
- package/dist/commands/toc.d.ts +14 -0
- package/dist/commands/toc.d.ts.map +1 -1
- package/dist/commands/toc.js +7 -4
- package/dist/commands/tunnel.d.ts +65 -0
- package/dist/commands/tunnel.d.ts.map +1 -1
- package/dist/commands/tunnel.js +290 -101
- package/dist/commands/web-fetch.d.ts +3 -2
- package/dist/commands/web-fetch.d.ts.map +1 -1
- package/dist/commands/web-fetch.js +25 -19
- package/dist/commands/web.d.ts +7 -1
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +9 -3
- package/dist/commands/workflow.js +24 -30
- package/dist/core/agents/live-authority-v3.d.ts +1 -0
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
- package/dist/core/agents/live-authority-v3.js +11 -0
- package/dist/core/agents/live-lifecycle-v3.d.ts +4 -2
- package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -1
- package/dist/core/agents/live-lifecycle-v3.js +28 -7
- package/dist/core/agents/mailbox.d.ts +9 -8
- package/dist/core/agents/mailbox.d.ts.map +1 -1
- package/dist/core/agents/mailbox.js +24 -17
- package/dist/core/agents/render/prompt-context.d.ts +2 -0
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +19 -17
- package/dist/core/agents/render/session-context.d.ts +2 -8
- package/dist/core/agents/render/session-context.d.ts.map +1 -1
- package/dist/core/agents/render/session-context.js +64 -43
- package/dist/core/agents/rules/stop-hook.js +3 -3
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +25 -14
- package/dist/core/agents/state/live-coordination-writer.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-writer.js +5 -0
- package/dist/core/agents/state/names.d.ts +43 -3
- package/dist/core/agents/state/names.d.ts.map +1 -1
- package/dist/core/agents/state/names.js +87 -3
- package/dist/core/agents/state/pidmap.d.ts.map +1 -1
- package/dist/core/agents/state/pidmap.js +5 -0
- package/dist/core/agents/state/proc-start.d.ts +19 -0
- package/dist/core/agents/state/proc-start.d.ts.map +1 -1
- package/dist/core/agents/state/proc-start.js +41 -0
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +180 -70
- package/dist/core/agents/state/unchanged-file.d.ts +44 -0
- package/dist/core/agents/state/unchanged-file.d.ts.map +1 -0
- package/dist/core/agents/state/unchanged-file.js +390 -0
- package/dist/core/context/index.d.ts +22 -10
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +381 -119
- package/dist/core/context/observation.d.ts +26 -0
- package/dist/core/context/observation.d.ts.map +1 -0
- package/dist/core/context/observation.js +11 -0
- package/dist/core/diagnostics/bundle.d.ts.map +1 -1
- package/dist/core/diagnostics/bundle.js +25 -14
- package/dist/core/diagnostics/path-identity.d.ts +3 -0
- package/dist/core/diagnostics/path-identity.d.ts.map +1 -0
- package/dist/core/diagnostics/path-identity.js +12 -0
- package/dist/core/diagnostics/sanitize.d.ts.map +1 -1
- package/dist/core/diagnostics/sanitize.js +4 -3
- package/dist/core/events/v3/authority-outbox.d.ts.map +1 -1
- package/dist/core/events/v3/authority-outbox.js +29 -0
- package/dist/core/events/v3/generation-custody.d.ts +5 -0
- package/dist/core/events/v3/generation-custody.d.ts.map +1 -0
- package/dist/core/events/v3/generation-custody.js +50 -0
- package/dist/core/events/v3/producers/coordination-recorder.d.ts +1 -0
- package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/coordination-recorder.js +7 -0
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +77 -64
- package/dist/core/events/v3/support-storage/pack-reader.d.ts.map +1 -1
- package/dist/core/events/v3/support-storage/pack-reader.js +42 -16
- package/dist/core/governor/planning.d.ts.map +1 -1
- package/dist/core/governor/planning.js +14 -1
- package/dist/core/governor/service-read.d.ts +10 -2
- package/dist/core/governor/service-read.d.ts.map +1 -1
- package/dist/core/governor/service-read.js +105 -22
- package/dist/core/governor/service.d.ts +20 -2
- package/dist/core/governor/service.d.ts.map +1 -1
- package/dist/core/governor/service.js +72 -47
- package/dist/core/hooks/cli.js +120 -23
- package/dist/core/hooks/fork-lineage.d.ts +40 -0
- package/dist/core/hooks/fork-lineage.d.ts.map +1 -0
- package/dist/core/hooks/fork-lineage.js +62 -0
- package/dist/core/hooks/resolve/transcript.d.ts +16 -0
- package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
- package/dist/core/hooks/resolve/transcript.js +84 -0
- package/dist/core/hooks/shell-rm.d.ts +2 -0
- package/dist/core/hooks/shell-rm.d.ts.map +1 -0
- package/dist/core/hooks/shell-rm.js +105 -0
- package/dist/core/hooks/shell-tokens.d.ts +12 -0
- package/dist/core/hooks/shell-tokens.d.ts.map +1 -0
- package/dist/core/hooks/shell-tokens.js +97 -0
- package/dist/core/hooks/shell-waiter.d.ts.map +1 -1
- package/dist/core/hooks/shell-waiter.js +3 -93
- package/dist/core/inbox/contract.d.ts +2 -1
- package/dist/core/inbox/contract.d.ts.map +1 -1
- package/dist/core/inbox/index.d.ts +2 -0
- package/dist/core/inbox/index.d.ts.map +1 -1
- package/dist/core/inbox/index.js +2 -0
- package/dist/core/inbox/peer-messages.d.ts +37 -0
- package/dist/core/inbox/peer-messages.d.ts.map +1 -0
- package/dist/core/inbox/peer-messages.js +72 -0
- 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 +67 -21
- package/dist/core/inbox/targets.d.ts +22 -0
- package/dist/core/inbox/targets.d.ts.map +1 -0
- package/dist/core/inbox/targets.js +108 -0
- package/dist/core/inbox/watcher.js +7 -3
- package/dist/core/journal/index.d.ts.map +1 -1
- package/dist/core/journal/index.js +17 -2
- package/dist/core/resources/contract.d.ts +3 -0
- package/dist/core/resources/contract.d.ts.map +1 -1
- package/dist/core/resources/service-status.d.ts +14 -1
- package/dist/core/resources/service-status.d.ts.map +1 -1
- package/dist/core/resources/service-status.js +23 -13
- package/dist/core/resources/service.d.ts +9 -1
- package/dist/core/resources/service.d.ts.map +1 -1
- package/dist/core/resources/service.js +47 -27
- package/dist/core/resources/status.d.ts +2 -5
- package/dist/core/resources/status.d.ts.map +1 -1
- package/dist/core/resources/status.js +36 -7
- package/dist/core/semantic/contract.d.ts +5 -5
- package/dist/core/servers/index.d.ts +24 -13
- package/dist/core/servers/index.d.ts.map +1 -1
- package/dist/core/servers/index.js +132 -92
- package/dist/core/servers/tunnels.d.ts +3 -5
- package/dist/core/servers/tunnels.d.ts.map +1 -1
- package/dist/core/servers/tunnels.js +3 -9
- package/dist/core/storage/process-log.d.ts +12 -0
- package/dist/core/storage/process-log.d.ts.map +1 -1
- package/dist/core/storage/process-log.js +10 -2
- package/dist/core/supervisor/contract.d.ts +12 -0
- package/dist/core/supervisor/contract.d.ts.map +1 -1
- package/dist/core/supervisor/explanations.d.ts.map +1 -1
- package/dist/core/supervisor/explanations.js +2 -1
- package/dist/core/supervisor/findings.d.ts.map +1 -1
- package/dist/core/supervisor/findings.js +54 -9
- package/dist/core/supervisor/service.d.ts +9 -1
- package/dist/core/supervisor/service.d.ts.map +1 -1
- package/dist/core/supervisor/service.js +59 -29
- package/dist/core/supervisor/services.d.ts.map +1 -1
- package/dist/core/supervisor/services.js +22 -1
- package/dist/core/supervisor/status.d.ts +17 -2
- package/dist/core/supervisor/status.d.ts.map +1 -1
- package/dist/core/supervisor/status.js +70 -12
- package/dist/core/supervisor/timeline.d.ts.map +1 -1
- package/dist/core/supervisor/timeline.js +2 -1
- package/dist/core/work/state.js +7 -7
- package/dist/core/workflow/engine.d.ts.map +1 -1
- package/dist/core/workflow/engine.js +105 -32
- package/dist/core/workflow/failure-evidence.d.ts +16 -0
- package/dist/core/workflow/failure-evidence.d.ts.map +1 -0
- package/dist/core/workflow/failure-evidence.js +114 -0
- package/dist/core/workflow/index.d.ts +1 -1
- package/dist/core/workflow/index.d.ts.map +1 -1
- package/dist/core/workflow/index.js +1 -1
- package/dist/core/workflow/live-session-v3.d.ts +6 -0
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
- package/dist/core/workflow/live-session-v3.js +126 -5
- package/dist/core/workflow/proof.d.ts +5 -5
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +115 -20
- package/dist/core/workflow/run-state.d.ts +3 -1
- package/dist/core/workflow/run-state.d.ts.map +1 -1
- package/dist/core/workflow/run-state.js +31 -27
- package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
- package/dist/core/workflow/spawn-claude.js +19 -0
- package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
- package/dist/core/workflow/spawn-codex.js +13 -0
- package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
- package/dist/core/workflow/spawn-cursor.js +19 -0
- package/dist/core/workflow/spawn-opencode.d.ts.map +1 -1
- package/dist/core/workflow/spawn-opencode.js +14 -0
- package/dist/core/workflow/types.d.ts +64 -17
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/index.d.ts +0 -1
- package/dist/core/workflow/workspaces/index.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/index.js +0 -1
- package/dist/core/workflow/workspaces/leases.d.ts +3 -1
- package/dist/core/workflow/workspaces/leases.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/leases.js +30 -16
- package/dist/core/workflow/workspaces/local-git.d.ts +6 -2
- package/dist/core/workflow/workspaces/local-git.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/local-git.js +270 -6
- package/dist/core/workflow/workspaces/ownership.d.ts +11 -0
- package/dist/core/workflow/workspaces/ownership.d.ts.map +1 -0
- package/dist/core/workflow/workspaces/ownership.js +194 -0
- package/dist/core/workflow/workspaces/reclaim.d.ts +35 -0
- package/dist/core/workflow/workspaces/reclaim.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/reclaim.js +14 -0
- package/dist/core/workflow/workspaces/recovery.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/recovery.js +21 -13
- package/dist/core/workflow/workspaces/state.d.ts +1 -0
- package/dist/core/workflow/workspaces/state.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/state.js +21 -1
- package/dist/lib/browser/windows-chrome.d.ts +100 -12
- package/dist/lib/browser/windows-chrome.d.ts.map +1 -1
- package/dist/lib/browser/windows-chrome.js +262 -73
- package/dist/lib/docs-links.d.ts.map +1 -1
- package/dist/lib/docs-links.js +45 -2
- package/dist/lib/guarded-remove.d.ts +7 -0
- package/dist/lib/guarded-remove.d.ts.map +1 -1
- package/dist/lib/guarded-remove.js +106 -12
- package/dist/lib/identities/assume.d.ts.map +1 -1
- package/dist/lib/identities/assume.js +4 -0
- package/dist/lib/tunnel/allowlist.d.ts +44 -0
- package/dist/lib/tunnel/allowlist.d.ts.map +1 -0
- package/dist/lib/tunnel/allowlist.js +204 -0
- package/dist/lib/tunnel/current-address.d.ts +41 -0
- package/dist/lib/tunnel/current-address.d.ts.map +1 -0
- package/dist/lib/tunnel/current-address.js +123 -0
- package/dist/lib/tunnel/gate.js +13 -6
- package/dist/lib/tunnel/processes.d.ts +39 -0
- package/dist/lib/tunnel/processes.d.ts.map +1 -0
- package/dist/lib/tunnel/processes.js +121 -0
- package/dist/lib/tunnel/state.d.ts +28 -3
- package/dist/lib/tunnel/state.d.ts.map +1 -1
- package/dist/lib/tunnel/state.js +98 -27
- package/dist/lib/zip/index.d.ts +41 -0
- package/dist/lib/zip/index.d.ts.map +1 -0
- package/dist/lib/zip/index.js +398 -0
- package/package.json +8 -1
- package/src/commander.ts +32 -0
- package/src/commands/agents.ts +151 -74
- package/src/commands/browse.ts +50 -14
- package/src/commands/diagnostics.ts +10 -0
- package/src/commands/doctor.ts +26 -7
- package/src/commands/governor.ts +23 -10
- package/src/commands/inbox.ts +52 -2
- package/src/commands/rm.ts +43 -4
- package/src/commands/servers.ts +16 -4
- package/src/commands/supervisor.ts +7 -2
- package/src/commands/toc.ts +14 -6
- package/src/commands/tunnel.ts +394 -116
- package/src/commands/web-fetch.ts +30 -19
- package/src/commands/web.ts +9 -3
- package/src/commands/workflow.ts +30 -30
- package/src/core/agents/live-authority-v3.ts +17 -0
- package/src/core/agents/live-lifecycle-v3.ts +52 -14
- package/src/core/agents/mailbox.ts +26 -17
- package/src/core/agents/render/prompt-context.ts +35 -20
- package/src/core/agents/render/session-context.ts +92 -48
- package/src/core/agents/rules/stop-hook.ts +3 -3
- package/src/core/agents/state/heartbeat-writer.ts +29 -12
- package/src/core/agents/state/live-coordination-writer.ts +29 -0
- package/src/core/agents/state/names.ts +117 -6
- package/src/core/agents/state/pidmap.ts +13 -0
- package/src/core/agents/state/proc-start.ts +57 -0
- package/src/core/agents/state/stale-sweep.ts +247 -82
- package/src/core/agents/state/unchanged-file.ts +456 -0
- package/src/core/context/index.ts +446 -136
- package/src/core/context/observation.ts +29 -0
- package/src/core/diagnostics/bundle.ts +23 -18
- package/src/core/diagnostics/path-identity.ts +15 -0
- package/src/core/diagnostics/sanitize.ts +4 -3
- package/src/core/events/v3/authority-outbox.ts +56 -0
- package/src/core/events/v3/generation-custody.ts +59 -0
- package/src/core/events/v3/producers/coordination-recorder.ts +15 -0
- package/src/core/events/v3/producers/recorder.ts +94 -68
- package/src/core/events/v3/support-storage/pack-reader.ts +45 -19
- package/src/core/governor/planning.ts +20 -8
- package/src/core/governor/service-read.ts +128 -20
- package/src/core/governor/service.ts +119 -42
- package/src/core/hooks/cli.ts +139 -22
- package/src/core/hooks/fork-lineage.ts +82 -0
- package/src/core/hooks/resolve/transcript.ts +88 -0
- package/src/core/hooks/shell-rm.ts +103 -0
- package/src/core/hooks/shell-tokens.ts +96 -0
- package/src/core/hooks/shell-waiter.ts +4 -91
- package/src/core/inbox/contract.ts +2 -1
- package/src/core/inbox/index.ts +2 -0
- package/src/core/inbox/peer-messages.ts +94 -0
- package/src/core/inbox/service.ts +88 -22
- package/src/core/inbox/targets.ts +148 -0
- package/src/core/inbox/watcher.ts +8 -9
- package/src/core/journal/index.ts +19 -2
- package/src/core/resources/contract.ts +4 -0
- package/src/core/resources/service-status.ts +35 -12
- package/src/core/resources/service.ts +71 -24
- package/src/core/resources/status.ts +57 -8
- package/src/core/servers/index.ts +177 -91
- package/src/core/servers/tunnels.ts +3 -11
- package/src/core/storage/process-log.ts +17 -2
- package/src/core/supervisor/contract.ts +13 -0
- package/src/core/supervisor/explanations.ts +4 -1
- package/src/core/supervisor/findings.ts +68 -10
- package/src/core/supervisor/service.ts +88 -26
- package/src/core/supervisor/services.ts +26 -8
- package/src/core/supervisor/status.ts +89 -12
- package/src/core/supervisor/timeline.ts +2 -1
- package/src/core/work/state.ts +7 -7
- package/src/core/workflow/engine.ts +131 -49
- package/src/core/workflow/failure-evidence.ts +141 -0
- package/src/core/workflow/index.ts +0 -1
- package/src/core/workflow/live-session-v3.ts +146 -5
- package/src/core/workflow/proof.ts +134 -26
- package/src/core/workflow/run-state.ts +31 -29
- package/src/core/workflow/spawn-claude.ts +18 -0
- package/src/core/workflow/spawn-codex.ts +13 -0
- package/src/core/workflow/spawn-cursor.ts +18 -0
- package/src/core/workflow/spawn-opencode.ts +14 -0
- package/src/core/workflow/types.ts +51 -17
- package/src/core/workflow/workspaces/index.ts +0 -1
- package/src/core/workflow/workspaces/leases.ts +48 -17
- package/src/core/workflow/workspaces/local-git.ts +315 -5
- package/src/core/workflow/workspaces/ownership.ts +232 -0
- package/src/core/workflow/workspaces/reclaim.ts +58 -0
- package/src/core/workflow/workspaces/recovery.ts +25 -13
- package/src/core/workflow/workspaces/state.ts +20 -0
- package/src/lib/browser/windows-chrome.ts +346 -86
- package/src/lib/docs-links.ts +49 -2
- package/src/lib/guarded-remove.ts +132 -14
- package/src/lib/identities/assume.ts +4 -0
- package/src/lib/tunnel/allowlist.ts +208 -0
- package/src/lib/tunnel/current-address.ts +158 -0
- package/src/lib/tunnel/gate.ts +16 -8
- package/src/lib/tunnel/processes.ts +149 -0
- package/src/lib/tunnel/state.ts +123 -27
- package/src/lib/zip/index.ts +483 -0
|
@@ -3,16 +3,6 @@ import { join, resolve } from "node:path";
|
|
|
3
3
|
import { readWorkflowProof } from "../proof.js";
|
|
4
4
|
export function readWorkflowLiveness(coordRoot, runId) {
|
|
5
5
|
const root = resolve(coordRoot);
|
|
6
|
-
const proofPath = join(root, ".harnery", "workflows", runId, "proof.json");
|
|
7
|
-
if (existsSync(proofPath)) {
|
|
8
|
-
try {
|
|
9
|
-
const proof = readWorkflowProof(root, runId);
|
|
10
|
-
return ["succeeded", "failed"].includes(proof.run.status) ? "inactive" : "unknown";
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
return "unknown";
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
6
|
const transcriptPath = join(root, ".harnery", "workflows", runId, "transcript.jsonl");
|
|
17
7
|
if (!existsSync(transcriptPath))
|
|
18
8
|
return "unknown";
|
|
@@ -26,12 +16,16 @@ export function readWorkflowLiveness(coordRoot, runId) {
|
|
|
26
16
|
catch {
|
|
27
17
|
return "unknown";
|
|
28
18
|
}
|
|
29
|
-
if (events.some((item) => item
|
|
19
|
+
if (events.some((item) => !item ||
|
|
20
|
+
typeof item !== "object" ||
|
|
21
|
+
Array.isArray(item) ||
|
|
22
|
+
item.run_id !== runId ||
|
|
23
|
+
typeof item.event !== "string")) {
|
|
30
24
|
return "unknown";
|
|
31
25
|
}
|
|
32
26
|
let liveness;
|
|
33
27
|
for (const item of events) {
|
|
34
|
-
if (item.event === "run.start" || item.event === "run.resume")
|
|
28
|
+
if (item.event === "run.start" || item.event === "run.resume" || item.event === "agent.start")
|
|
35
29
|
liveness = "active";
|
|
36
30
|
if (item.event === "run.parked")
|
|
37
31
|
liveness = "inactive";
|
|
@@ -46,5 +40,19 @@ export function readWorkflowLiveness(coordRoot, runId) {
|
|
|
46
40
|
liveness = "inactive";
|
|
47
41
|
}
|
|
48
42
|
}
|
|
49
|
-
|
|
43
|
+
// A terminal proof can predate a resumed run. Only the current transcript
|
|
44
|
+
// can establish that no later activity invalidated that terminal observation.
|
|
45
|
+
if (liveness !== "inactive")
|
|
46
|
+
return liveness ?? "unknown";
|
|
47
|
+
const proofPath = join(root, ".harnery", "workflows", runId, "proof.json");
|
|
48
|
+
if (existsSync(proofPath)) {
|
|
49
|
+
try {
|
|
50
|
+
const proof = readWorkflowProof(root, runId);
|
|
51
|
+
return ["succeeded", "failed"].includes(proof.run.status) ? "inactive" : "unknown";
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return "unknown";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return "inactive";
|
|
50
58
|
}
|
|
@@ -44,6 +44,7 @@ export declare function workspaceLockPath(coordRoot: string, providerId: string,
|
|
|
44
44
|
export declare function writeWorkspaceRequest(coordRoot: string, request: WorkspaceAllocationRequest): string;
|
|
45
45
|
export declare function readWorkspaceRequest(coordRoot: string, runId: string): WorkspaceAllocationRequest | undefined;
|
|
46
46
|
export declare function writeWorkspaceClaim(coordRoot: string, claim: WorkspaceClaim): boolean;
|
|
47
|
+
export declare function readWorkspaceClaims(coordRoot: string, providerId: string): WorkspaceClaim[];
|
|
47
48
|
export declare function readWorkspaceClaim(coordRoot: string, providerId: string, bindingId: string): WorkspaceClaim | undefined;
|
|
48
49
|
export declare function writeWorkspaceBinding(coordRoot: string, binding: WorkspaceBinding): boolean;
|
|
49
50
|
export declare function readWorkspaceBinding(coordRoot: string, providerId: string, bindingId: string): WorkspaceBinding | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/workspaces/state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/workspaces/state.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,CAAC,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,0BAA0B,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,UAAU,EAAE;QACV,WAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACjD,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,CAAC,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAIR;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAIR;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,0BAA0B,GAAG,SAAS,CAKxC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAErF;AAgBD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAY3F;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,cAAc,GAAG,SAAS,CAG5B;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAK3F;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,gBAAgB,GAAG,SAAS,CAG9B;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,sBAAsB,CAwCxB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,sBAAsB,EAAE,CA0C1B;AAOD,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,uBAAuB,GACvB,eAAe,GACf,wBAAwB,GACxB,uBAAuB,GACvB,sBAAsB,GACtB,4BAA4B,GAC5B,sBAAsB,GACtB,uBAAuB,CAAC;AAE5B,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,GAAG,iBAAiB,GAAG,eAAe,CAAC,GAChF,uBAAuB,CA4BzB;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,GAAG,iBAAiB,GAAG,eAAe,CAAC,GAChF,uBAAuB,CAiBzB;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,uBAAuB,EAAE,CAK3B;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAK/F;AA8DD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,kBAAkB,GACxB,MAAM,CAUR;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,CAAC,GAAG,SAAS,CAGf;AAMD,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { chmodSync, closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync, statSync, writeFileSync, } from "node:fs";
|
|
1
|
+
import { chmodSync, closeSync, existsSync, fsyncSync, mkdirSync, openSync, readdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
import { stateDirMode, stateFileMode } from "../../storage/modes.js";
|
|
4
4
|
import { canonicalJson, fsyncParentDirectory, readJsonRecord, stableDigest, writeImmutableJson, } from "../durable-record.js";
|
|
5
|
+
import { assertClaimAuthority, publishWorkspaceClaim } from "./ownership.js";
|
|
5
6
|
export { appendWorkflowTranscriptEvent } from "../transcript.js";
|
|
6
7
|
const JSON_LIMIT = 512 * 1024;
|
|
7
8
|
const WORKSPACE_EVENT_BYTES = 32 * 1024;
|
|
@@ -39,6 +40,9 @@ export function readWorkspaceRequest(coordRoot, runId) {
|
|
|
39
40
|
: undefined;
|
|
40
41
|
}
|
|
41
42
|
export function writeWorkspaceClaim(coordRoot, claim) {
|
|
43
|
+
return publishWorkspaceClaim(coordRoot, claim, () => writeClaim(coordRoot, claim));
|
|
44
|
+
}
|
|
45
|
+
function writeClaim(coordRoot, claim) {
|
|
42
46
|
const path = workspaceClaimPath(coordRoot, claim.provider_id, claim.binding_id);
|
|
43
47
|
try {
|
|
44
48
|
return writeImmutableJson(path, claim);
|
|
@@ -52,6 +56,22 @@ export function writeWorkspaceClaim(coordRoot, claim) {
|
|
|
52
56
|
throw error;
|
|
53
57
|
}
|
|
54
58
|
}
|
|
59
|
+
export function readWorkspaceClaims(coordRoot, providerId) {
|
|
60
|
+
const root = join(resolve(coordRoot), ".harnery", "workspaces", providerId);
|
|
61
|
+
if (!existsSync(root))
|
|
62
|
+
return [];
|
|
63
|
+
return readdirSync(root, { withFileTypes: true })
|
|
64
|
+
.filter((entry) => entry.name !== ".leases")
|
|
65
|
+
.map((entry) => {
|
|
66
|
+
if (!entry.isDirectory())
|
|
67
|
+
throw new Error("retained workspace inventory is unproven");
|
|
68
|
+
const claim = readWorkspaceClaim(coordRoot, providerId, entry.name);
|
|
69
|
+
if (!claim)
|
|
70
|
+
throw new Error("retained workspace ownership claim is missing");
|
|
71
|
+
assertClaimAuthority(claim, providerId, entry.name);
|
|
72
|
+
return claim;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
55
75
|
export function readWorkspaceClaim(coordRoot, providerId, bindingId) {
|
|
56
76
|
const path = workspaceClaimPath(coordRoot, providerId, bindingId);
|
|
57
77
|
return existsSync(path) ? readJsonRecord(path, "workspace claim") : undefined;
|
|
@@ -28,31 +28,119 @@ interface CdpCookie {
|
|
|
28
28
|
}
|
|
29
29
|
/** Keep the sign-in site's cookies and normalize them to the store's shape. */
|
|
30
30
|
export declare function cookiesForDomain(cdpCookies: CdpCookie[], domain: string): Cookie[];
|
|
31
|
+
/**
|
|
32
|
+
* Regular expression, valid in both JavaScript and .NET, that matches a Chrome
|
|
33
|
+
* command line running on `profileWindows`. It matches the `--user-data-dir`
|
|
34
|
+
* argument exactly, with or without quotes around the path, so `...\profile`
|
|
35
|
+
* never matches `...\profile-2`. Quotes are written as `\x22` so the pattern
|
|
36
|
+
* survives being passed to PowerShell as an argument. Case-insensitive use is
|
|
37
|
+
* intended, as Windows paths are.
|
|
38
|
+
*/
|
|
39
|
+
export declare function profileCommandLinePattern(profileWindows: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* PowerShell that sets the profile's startup preference to "continue where
|
|
42
|
+
* you left off". Chrome deletes browser-session cookies (cookies with no
|
|
43
|
+
* expiry) when it exits normally unless that preference is set, and many
|
|
44
|
+
* sign-ins keep the signed-in state only in such cookies. With it set, the
|
|
45
|
+
* person can simply close the window and the sign-in survives for the
|
|
46
|
+
* harvest, and the next sign-in window reopens where they left off.
|
|
47
|
+
*
|
|
48
|
+
* The preference is protected against edits to the profile's files, so the
|
|
49
|
+
* script sets it the way the settings page does: it opens the profile
|
|
50
|
+
* headless, loads the settings page, and calls the settings API there. When
|
|
51
|
+
* the profile's preference files already show the value, Chrome is not
|
|
52
|
+
* started. The script prints `{"changed":bool,"value":n}`.
|
|
53
|
+
*/
|
|
54
|
+
export declare function keepSessionScript(): string;
|
|
31
55
|
/**
|
|
32
56
|
* PowerShell that does the whole read on the Windows side: start Chrome
|
|
33
|
-
* headless on the profile
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* it may not be able to
|
|
57
|
+
* headless on the profile with its last session restored, read every cookie
|
|
58
|
+
* with `Storage.getCookies`, list the open pages with `Target.getTargets`,
|
|
59
|
+
* write both raw responses to stdout as one JSON object, and close the
|
|
60
|
+
* browser. WSL never touches the profile folder, which it may not be able to
|
|
61
|
+
* list. Every wait carries a deadline.
|
|
62
|
+
*
|
|
63
|
+
* Restoring the session keeps browser-session cookies that a forced stop left
|
|
64
|
+
* on disk, and it reopens the tabs the person had open, so the harvest can
|
|
65
|
+
* report the last page they reached on the sign-in site. That page's URL may
|
|
66
|
+
* carry a per-session token that cookies alone do not replace. The page list
|
|
67
|
+
* is polled for up to `$PageSeconds` until a page on `$Domain` appears.
|
|
37
68
|
*/
|
|
38
69
|
export declare function harvestScript(): string;
|
|
70
|
+
/** Shape `Target.getTargets` returns; extra fields are ignored. */
|
|
71
|
+
interface CdpTargetInfo {
|
|
72
|
+
type: string;
|
|
73
|
+
url: string;
|
|
74
|
+
}
|
|
39
75
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
76
|
+
* URLs of the open pages on the sign-in site, in the order Chrome lists them,
|
|
77
|
+
* without duplicates.
|
|
78
|
+
*/
|
|
79
|
+
export declare function sitePages(targets: CdpTargetInfo[], domain: string): string[];
|
|
80
|
+
export interface WindowsChromeHarvest {
|
|
81
|
+
/** The sign-in site's cookies, browser-session cookies included. */
|
|
82
|
+
cookies: Cookie[];
|
|
83
|
+
/** Open pages on the sign-in site; the first is the one to resume from. */
|
|
84
|
+
pages: string[];
|
|
85
|
+
}
|
|
86
|
+
/** Parse the harvest script's stdout. */
|
|
87
|
+
export declare function parseHarvestOutput(stdout: string, domain: string): WindowsChromeHarvest;
|
|
88
|
+
/**
|
|
89
|
+
* Reopen the Windows profile headless with its last session restored, read
|
|
90
|
+
* its cookies for `domain` and its open pages on that site, and close it.
|
|
91
|
+
* The profile must already be closed; see `stopWindowsChromeProfile`.
|
|
42
92
|
*/
|
|
43
93
|
export declare function harvestWindowsChromeCookies(input: {
|
|
44
94
|
chromeWindows: string;
|
|
45
95
|
profileWindows: string;
|
|
46
96
|
domain: string;
|
|
47
97
|
startupTimeoutSeconds?: number;
|
|
48
|
-
|
|
98
|
+
pageTimeoutSeconds?: number;
|
|
99
|
+
}): WindowsChromeHarvest;
|
|
100
|
+
export interface WindowsChromeKeepSession {
|
|
101
|
+
/** True when the preference was already set or is now set. */
|
|
102
|
+
kept: boolean;
|
|
103
|
+
/** True when this call changed the preference. */
|
|
104
|
+
changed: boolean;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Set the profile to keep browser-session cookies across a normal exit; see
|
|
108
|
+
* `keepSessionScript`. Throws when Chrome is already open on the profile,
|
|
109
|
+
* since a second sign-in window would hand off to it. Any other failure
|
|
110
|
+
* returns `kept: false` so the caller can warn and continue.
|
|
111
|
+
*/
|
|
112
|
+
export declare function keepWindowsChromeSession(input: {
|
|
113
|
+
chromeWindows: string;
|
|
114
|
+
profileWindows: string;
|
|
115
|
+
startupTimeoutSeconds?: number;
|
|
116
|
+
}): WindowsChromeKeepSession;
|
|
117
|
+
/**
|
|
118
|
+
* PowerShell that closes every Chrome whose command line matches `$Pattern`. It asks each window to
|
|
119
|
+
* close, repeating so a profile with several windows closes them all, which
|
|
120
|
+
* lets Chrome write its cookies and session to disk. Whatever is still
|
|
121
|
+
* running after `$CloseSeconds` is stopped by force. The script prints
|
|
122
|
+
* `{found, forced, remaining}` as JSON; `remaining` lists process ids that
|
|
123
|
+
* survived even the forced stop.
|
|
124
|
+
*/
|
|
125
|
+
export declare function stopScript(): string;
|
|
126
|
+
export interface WindowsChromeStop {
|
|
127
|
+
/** Chrome processes running on the profile when the stop began. */
|
|
128
|
+
found: number;
|
|
129
|
+
/** Processes that ignored the close request and were stopped by force. */
|
|
130
|
+
forced: number;
|
|
131
|
+
}
|
|
132
|
+
/** Parse the stop script's stdout; throws when a process survived. */
|
|
133
|
+
export declare function parseStopOutput(stdout: string, profileWindows: string): WindowsChromeStop;
|
|
49
134
|
/**
|
|
50
|
-
* Close
|
|
51
|
-
* the sign-in from the terminal while the window is open. The profile
|
|
52
|
-
* closed before its cookies can be read. Closing the
|
|
53
|
-
* write recent cookies to disk; a forced stop is the fallback after
|
|
135
|
+
* Close every Chrome still running on `profileWindows`, for when the person
|
|
136
|
+
* ends the sign-in from the terminal while the window is open. The profile
|
|
137
|
+
* must be closed before its cookies can be read. Closing the windows lets
|
|
138
|
+
* Chrome write recent cookies to disk; a forced stop is the fallback after
|
|
139
|
+
* `closeSeconds`, and it can lose cookies Chrome had not yet written. Throws
|
|
140
|
+
* when the stop cannot be confirmed, so the harvest never runs against a
|
|
141
|
+
* profile that is still open.
|
|
54
142
|
*/
|
|
55
|
-
export declare function stopWindowsChromeProfile(profileWindows: string):
|
|
143
|
+
export declare function stopWindowsChromeProfile(profileWindows: string, closeSeconds?: number): WindowsChromeStop;
|
|
56
144
|
/** Windows form of a `/mnt/<drive>/...` path. */
|
|
57
145
|
export declare function wslPathToWindows(linuxPath: string): string;
|
|
58
146
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windows-chrome.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/windows-chrome.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"windows-chrome.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/windows-chrome.ts"],"names":[],"mappings":"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"}
|