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
|
@@ -250,12 +250,13 @@ function registerServiceCommand(governor, registry, emit) {
|
|
|
250
250
|
.action(async (opts) => {
|
|
251
251
|
await withGovernorRootAsync(emit, async (coordRoot) => {
|
|
252
252
|
let status = requestGovernorServiceStop(coordRoot);
|
|
253
|
+
const signal = { signal_sent: status.signal_sent, signal_verdict: status.signal_verdict };
|
|
253
254
|
const deadline = Date.now() + 5_000;
|
|
254
255
|
while (status.running && Date.now() < deadline) {
|
|
255
256
|
await delay(50);
|
|
256
257
|
status = readGovernorServiceStatus(coordRoot);
|
|
257
258
|
}
|
|
258
|
-
emitServiceStatus(status, opts.json, emit);
|
|
259
|
+
emitServiceStatus({ ...status, ...signal }, opts.json, emit);
|
|
259
260
|
});
|
|
260
261
|
});
|
|
261
262
|
service
|
|
@@ -372,19 +373,30 @@ function emitServiceStatus(status, json, emit) {
|
|
|
372
373
|
emit.data(status);
|
|
373
374
|
return;
|
|
374
375
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
376
|
+
const state = status.liveness === "unknown"
|
|
377
|
+
? "unknown"
|
|
378
|
+
: !status.config && !status.record
|
|
379
|
+
? "unconfigured"
|
|
380
|
+
: status.running
|
|
381
|
+
? (status.record?.state ?? "running")
|
|
382
|
+
: status.stale
|
|
383
|
+
? "stale"
|
|
384
|
+
: "stopped";
|
|
384
385
|
const lines = [
|
|
385
386
|
`governor service: ${state}`,
|
|
387
|
+
`generation: ${status.generation}`,
|
|
388
|
+
`liveness: ${status.liveness}`,
|
|
389
|
+
`running build: ${status.running_build ? `${status.running_build.version} (${status.running_build.revision})` : "unknown"}`,
|
|
390
|
+
`installed build: ${status.installed_build.version} (${status.installed_build.revision})`,
|
|
391
|
+
`build: ${status.build_status}`,
|
|
386
392
|
`goals: ${status.config?.goal_ids.join(", ") || "none"}`,
|
|
387
393
|
];
|
|
394
|
+
if (status.signal_sent !== undefined) {
|
|
395
|
+
lines.push(`signal sent: ${status.signal_sent ? "yes" : "no"} (${status.signal_verdict})`);
|
|
396
|
+
if (!status.signal_sent && status.record?.state !== "stopped") {
|
|
397
|
+
lines.push("The durable stop request remains for the service to read.");
|
|
398
|
+
}
|
|
399
|
+
}
|
|
388
400
|
if (status.record) {
|
|
389
401
|
lines.push(`pid: ${status.record.pid} on ${status.record.host}`);
|
|
390
402
|
lines.push(`heartbeat: ${status.record.heartbeat_at}`);
|
package/dist/commands/inbox.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { EmitContext } from "../commander.js";
|
|
3
3
|
import type { HarneryInboxService } from "../core/inbox/service.js";
|
|
4
|
-
export declare function registerInboxCommand(program: Command, emit: EmitContext, service?: HarneryInboxService): void;
|
|
4
|
+
export declare function registerInboxCommand(program: Command, emit: EmitContext, service?: HarneryInboxService, defaultRecipient?: () => string): void;
|
|
5
5
|
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,mBAAmB,EAC7B,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAC9B,IAAI,CA6EN"}
|
package/dist/commands/inbox.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { watchInbox } from "../core/inbox/watcher.js";
|
|
2
|
+
export function registerInboxCommand(program, emit, service, defaultRecipient) {
|
|
2
3
|
const inbox = program.command("inbox").description("Inspect private coordination inbox state");
|
|
3
4
|
inbox
|
|
4
|
-
.command("list
|
|
5
|
+
.command("list [recipient]")
|
|
5
6
|
.option("--json", "Emit stable JSON")
|
|
6
7
|
.action((recipient, options) => {
|
|
7
8
|
run(emit, () => {
|
|
9
|
+
recipient = requireRecipient(recipient, defaultRecipient);
|
|
8
10
|
const rows = requireInboxService(service)
|
|
9
11
|
.pending(recipient)
|
|
10
12
|
.map((record) => ({
|
|
@@ -14,6 +16,7 @@ export function registerInboxCommand(program, emit, service) {
|
|
|
14
16
|
created_at: record.created_at,
|
|
15
17
|
body_bytes: record.body_bytes,
|
|
16
18
|
body: record.body,
|
|
19
|
+
state: "pending",
|
|
17
20
|
}));
|
|
18
21
|
if (options.json) {
|
|
19
22
|
emit.config({ format: "json" });
|
|
@@ -37,6 +40,56 @@ export function registerInboxCommand(program, emit, service) {
|
|
|
37
40
|
emit.rows([status]);
|
|
38
41
|
});
|
|
39
42
|
});
|
|
43
|
+
inbox
|
|
44
|
+
.command("watch [recipient]")
|
|
45
|
+
.description("Surface pending messages for this instance; poll history until timeout")
|
|
46
|
+
.option("--timeout <seconds>", "Stop after this many seconds", "60")
|
|
47
|
+
.option("--json", "Emit one JSON record per surfaced message")
|
|
48
|
+
.action(async (recipient, options) => {
|
|
49
|
+
let controller;
|
|
50
|
+
let timer;
|
|
51
|
+
try {
|
|
52
|
+
const instanceId = requireRecipient(recipient, defaultRecipient);
|
|
53
|
+
const inboxService = requireInboxService(service);
|
|
54
|
+
const seconds = Number(options.timeout);
|
|
55
|
+
if (!Number.isFinite(seconds) || seconds <= 0 || seconds > 3600)
|
|
56
|
+
throw new Error("--timeout must be greater than 0 and at most 3600 seconds");
|
|
57
|
+
controller = new AbortController();
|
|
58
|
+
timer = setTimeout(() => controller.abort(), seconds * 1000);
|
|
59
|
+
if (options.json)
|
|
60
|
+
emit.config({ format: "json" });
|
|
61
|
+
for await (const message of watchInbox(inboxService, instanceId, {
|
|
62
|
+
signal: controller.signal,
|
|
63
|
+
})) {
|
|
64
|
+
const row = { ...message, state: "surfaced" };
|
|
65
|
+
if (options.json)
|
|
66
|
+
emit.data(row);
|
|
67
|
+
else
|
|
68
|
+
emit.rows([row]);
|
|
69
|
+
// An output error leaves this ID pending for prompt recovery.
|
|
70
|
+
await new Promise((resolve, reject) => process.stdout.write("", (error) => (error ? reject(error) : resolve())));
|
|
71
|
+
inboxService.acknowledgeSurface(instanceId, [message.message_id]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
emit.error({
|
|
76
|
+
code: "inbox_failed",
|
|
77
|
+
message: error instanceof Error ? error.message : String(error),
|
|
78
|
+
});
|
|
79
|
+
emit.setExitCode(1);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
if (timer)
|
|
83
|
+
clearTimeout(timer);
|
|
84
|
+
controller?.abort();
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function requireRecipient(recipient, fallback) {
|
|
89
|
+
const resolved = recipient ?? fallback?.();
|
|
90
|
+
if (!resolved)
|
|
91
|
+
throw new Error("recipient instance is required outside an agent session");
|
|
92
|
+
return resolved;
|
|
40
93
|
}
|
|
41
94
|
function requireInboxService(service) {
|
|
42
95
|
if (!service)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAW1E,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAsHN"}
|
package/dist/commands/rm.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
2
|
+
import { existsSync, lstatSync, readFileSync, realpathSync } from "node:fs";
|
|
3
|
+
import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
4
4
|
import { resolveCoordRoot } from "../core/agents/coord-client.js";
|
|
5
|
+
import { artifactsRoot, parseArtifactManifest } from "../core/artifacts/index.js";
|
|
5
6
|
import { readCoordinationViewV3, requireAuthoritySafeCoordinationViewV3, } from "../core/events/v3/coordination-view.js";
|
|
6
7
|
import { liveInstanceIdV3 } from "../core/events/v3/live-route-observer.js";
|
|
7
8
|
import { resolveOwner } from "../core/hooks/resolve/owner.js";
|
|
@@ -12,6 +13,8 @@ export function registerRmCommand(program, emit, context) {
|
|
|
12
13
|
.description("Preview guarded removal of untracked files; --yes applies permanent deletion")
|
|
13
14
|
.requiredOption("--root <directory>", "Allowed directory; each target must be strictly inside it")
|
|
14
15
|
.option("-r, --recursive", "Permit directory removal after inspecting its complete contents")
|
|
16
|
+
.option("--clean-clone", "Remove only clean standalone clones inside one owned artifact; refuse local-only commits and worktrees")
|
|
17
|
+
.option("--entry-limit <n>", "Maximum inspected entries, 1-100000 (default 10000); larger limits require one current caller-owned managed artifact as --root", (value) => Number(value))
|
|
15
18
|
.option("--allow-protected <path>", "Remove this one protected path (Git metadata, credentials, Harnery state, keys) inside a target; repeat per path", (value, previous = []) => [...previous, value])
|
|
16
19
|
.option("--yes", "Permanently remove validated targets")
|
|
17
20
|
.option("--dry-run", "Preview only, even with --yes")
|
|
@@ -43,7 +46,26 @@ export function registerRmCommand(program, emit, context) {
|
|
|
43
46
|
// The workspace this command coordinates, and the checkout it runs in:
|
|
44
47
|
// their own .git and .harnery can never be allowed.
|
|
45
48
|
const liveRoots = [coordRoot, gitTopLevel(process.cwd())].filter((dir) => Boolean(dir));
|
|
46
|
-
const
|
|
49
|
+
const assertOwnedArtifact = (root) => {
|
|
50
|
+
if (!coordRoot || dirname(root) !== realpathSync(artifactsRoot(coordRoot)))
|
|
51
|
+
throw new Error("Copied state requires --root to name one owned managed artifact");
|
|
52
|
+
const view = requireAuthoritySafeCoordinationViewV3(readCoordinationViewV3(coordRoot));
|
|
53
|
+
const owner = resolveOwner({ payload: null, coordRoot });
|
|
54
|
+
const ownId = owner ? liveInstanceIdV3(owner.instance_id) : undefined;
|
|
55
|
+
if (!ownId || !view.instances[ownId]?.authority_eligible)
|
|
56
|
+
throw new Error("Copied state requires an authenticated current artifact owner");
|
|
57
|
+
const record = resolve(root, ".harnery-artifact.json");
|
|
58
|
+
const stat = lstatSync(record);
|
|
59
|
+
if (!stat.isFile() || stat.isSymbolicLink())
|
|
60
|
+
throw new Error("An owned artifact requires a regular manifest file");
|
|
61
|
+
const parsed = parseArtifactManifest(JSON.parse(readFileSync(record, "utf8")));
|
|
62
|
+
if (!parsed.ok ||
|
|
63
|
+
parsed.manifest.released_at ||
|
|
64
|
+
!parsed.manifest.created_by?.instance_id ||
|
|
65
|
+
liveInstanceIdV3(parsed.manifest.created_by.instance_id) !== ownId)
|
|
66
|
+
throw new Error("Copied state requires a valid unreleased artifact owned by the caller");
|
|
67
|
+
};
|
|
68
|
+
const report = guardedRemove(paths, { ...options, liveRoots, assertOwnedArtifact }, checkClaims);
|
|
47
69
|
if (options.json) {
|
|
48
70
|
emit.config({ format: "json" });
|
|
49
71
|
emit.data(report);
|
|
@@ -54,7 +76,9 @@ export function registerRmCommand(program, emit, context) {
|
|
|
54
76
|
...report.targets,
|
|
55
77
|
];
|
|
56
78
|
if (report.protected.length)
|
|
57
|
-
lines.push(
|
|
79
|
+
lines.push(options.cleanClone
|
|
80
|
+
? "Verified clone metadata:"
|
|
81
|
+
: "Protected paths named with --allow-protected:", ...report.protected.map((path) => ` ${path}`));
|
|
58
82
|
if (report.links.length)
|
|
59
83
|
lines.push("Links removed as links (their targets are untouched):", ...report.links.map((link) => ` ${link.path} -> ${link.target}`));
|
|
60
84
|
if (!report.applied)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/commands/servers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,OAAO,EAWL,KAAK,aAAa,EAMnB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,
|
|
1
|
+
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/commands/servers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,OAAO,EAWL,KAAK,aAAa,EAMnB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAsZN;AA8BD,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmDvE"}
|
package/dist/commands/servers.js
CHANGED
|
@@ -81,6 +81,7 @@ export function registerServersCommand(program, emit, context) {
|
|
|
81
81
|
type: "unregistered",
|
|
82
82
|
label: stray.command,
|
|
83
83
|
pid: stray.pid,
|
|
84
|
+
...(stray.start_token ? { start_token: stray.start_token } : {}),
|
|
84
85
|
host: hostname(),
|
|
85
86
|
started_at: new Date().toISOString(),
|
|
86
87
|
registered_at: new Date().toISOString(),
|
|
@@ -141,7 +142,19 @@ export function registerServersCommand(program, emit, context) {
|
|
|
141
142
|
emit.data({ applied: Boolean(options.yes), pruned: report.pruned, decisions, results });
|
|
142
143
|
}
|
|
143
144
|
else {
|
|
144
|
-
const lines = decisions.map((
|
|
145
|
+
const lines = decisions.map((decision) => {
|
|
146
|
+
const result = results.find((item) => item.id === decision.id);
|
|
147
|
+
const action = decision.action === "keep"
|
|
148
|
+
? "keep"
|
|
149
|
+
: !options.yes
|
|
150
|
+
? "would stop"
|
|
151
|
+
: result?.stopped
|
|
152
|
+
? "stopped"
|
|
153
|
+
: result?.method === "not-running"
|
|
154
|
+
? "already stopped"
|
|
155
|
+
: "could not stop";
|
|
156
|
+
return `${action} ${decision.id} ${result?.detail ?? decision.reason}`;
|
|
157
|
+
});
|
|
145
158
|
if (report.pruned.length)
|
|
146
159
|
lines.push(`Removed records of exited servers: ${report.pruned.join(", ")}`);
|
|
147
160
|
if (!decisions.length)
|
|
@@ -150,6 +163,8 @@ export function registerServersCommand(program, emit, context) {
|
|
|
150
163
|
lines.push("Preview only. Re-run with --yes to stop.");
|
|
151
164
|
emit.text(lines.join("\n"));
|
|
152
165
|
}
|
|
166
|
+
if (results.some((result) => result.method === "refused"))
|
|
167
|
+
emit.setExitCode(1);
|
|
153
168
|
}
|
|
154
169
|
catch (error) {
|
|
155
170
|
fail(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/commands/supervisor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAe1E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/commands/supervisor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAe1E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CA6GN"}
|
|
@@ -53,11 +53,16 @@ export function registerSupervisorCommand(program, emit, context) {
|
|
|
53
53
|
.action(async (options) => {
|
|
54
54
|
try {
|
|
55
55
|
const root = resolve(options.root ?? coordRoot(context));
|
|
56
|
-
|
|
56
|
+
const requested = requestSupervisorStop(root);
|
|
57
|
+
let status = requested;
|
|
57
58
|
const deadline = Date.now() + 5_000;
|
|
58
59
|
while (status.running && Date.now() < deadline) {
|
|
59
60
|
await new Promise((done) => setTimeout(done, 50));
|
|
60
|
-
status =
|
|
61
|
+
status = {
|
|
62
|
+
...readSupervisorStatus(root),
|
|
63
|
+
signal_sent: requested.signal_sent,
|
|
64
|
+
signal_verdict: requested.signal_verdict,
|
|
65
|
+
};
|
|
61
66
|
}
|
|
62
67
|
emit.data(status);
|
|
63
68
|
}
|
package/dist/commands/toc.d.ts
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { EmitContext } from "../commander.js";
|
|
3
|
+
interface SectionOpts {
|
|
4
|
+
json?: boolean;
|
|
5
|
+
caseSensitive?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface SectionResult {
|
|
8
|
+
file: string;
|
|
9
|
+
matched_header: string;
|
|
10
|
+
matched_level: number;
|
|
11
|
+
line_start: number;
|
|
12
|
+
line_end: number;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
3
15
|
export declare function registerTocCommand(program: Command, emit: EmitContext): void;
|
|
4
16
|
export declare function registerSectionCommand(program: Command, emit: EmitContext): void;
|
|
17
|
+
export declare function runSection(file: string, query: string, opts: SectionOpts): Promise<SectionResult>;
|
|
18
|
+
export {};
|
|
5
19
|
//# sourceMappingURL=toc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toc.d.ts","sourceRoot":"","sources":["../../src/commands/toc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"toc.d.ts","sourceRoot":"","sources":["../../src/commands/toc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiBnD,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAeD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAqB5E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA0BhF;AA8ED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CA+CxB"}
|
package/dist/commands/toc.js
CHANGED
|
@@ -116,15 +116,18 @@ function renderToc(r) {
|
|
|
116
116
|
}
|
|
117
117
|
return lines.join("\n");
|
|
118
118
|
}
|
|
119
|
-
async function runSection(file, query, opts) {
|
|
119
|
+
export async function runSection(file, query, opts) {
|
|
120
120
|
if (!query.trim())
|
|
121
121
|
throw new Error("header query required");
|
|
122
122
|
const tocResult = await runToc(file, {});
|
|
123
123
|
const absPath = resolve(file);
|
|
124
124
|
const lines = readFileSync(absPath, "utf8").split("\n");
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
const same = (a, b) => opts.caseSensitive ? a === b : a.toLowerCase() === b.toLowerCase();
|
|
126
|
+
const contains = (a, b) => opts.caseSensitive ? a.includes(b) : a.toLowerCase().includes(b.toLowerCase());
|
|
127
|
+
// A header that equals the query wins over headers that merely contain it,
|
|
128
|
+
// so "Media" can still select "## Media" beside "## Media recipes".
|
|
129
|
+
const exact = tocResult.headers.filter((h) => same(h.text, query.trim()));
|
|
130
|
+
const matches = exact.length > 0 ? exact : tocResult.headers.filter((h) => contains(h.text, query));
|
|
128
131
|
if (matches.length === 0) {
|
|
129
132
|
throw new Error(`no header matching "${query}". Run \`${resolveBinName()} toc ${file}\` to list available headers.`);
|
|
130
133
|
}
|
|
@@ -1,10 +1,48 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type { EmitContext, HarneryProgramContext } from "../commander.js";
|
|
3
|
+
import { type DetectOptions, detectPublicAddresses } from "../lib/tunnel/current-address.js";
|
|
3
4
|
import { type TunnelProvider, type TunnelState } from "../lib/tunnel/state.js";
|
|
4
5
|
export declare function tunnelLogDestinations(name: string, provider: TunnelProvider, env?: NodeJS.ProcessEnv, root?: string): {
|
|
5
6
|
gate: string;
|
|
6
7
|
provider: string;
|
|
7
8
|
};
|
|
9
|
+
export interface GateLaunch {
|
|
10
|
+
command: string;
|
|
11
|
+
/** Arguments before the gate's own `--name` and `--port`. */
|
|
12
|
+
arguments: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface GateLaunchInputs {
|
|
15
|
+
/** Absolute path of `lib/tunnel/gate.ts` beside this file, whether or not it exists. */
|
|
16
|
+
gateScript: string;
|
|
17
|
+
gateScriptExists: boolean;
|
|
18
|
+
/** True when this process runs on Bun (so `execPath` is a Bun binary). */
|
|
19
|
+
underBun: boolean;
|
|
20
|
+
execPath: string;
|
|
21
|
+
/** The script this process was started with (`argv[1]`): the host CLI's entry or bundle. */
|
|
22
|
+
entryScript: string | undefined;
|
|
23
|
+
entryScriptExists: boolean;
|
|
24
|
+
bunOnPath: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* How to start the gate worker, which is a `Bun.serve` process (HTTP and
|
|
28
|
+
* WebSocket reverse proxy):
|
|
29
|
+
* 1. From a source or package checkout, `gate.ts` sits beside this module and
|
|
30
|
+
* runs directly.
|
|
31
|
+
* 2. Inside a single-file bundle there is no such file. The CLI then
|
|
32
|
+
* re-executes itself with the hidden `tunnel gate` task, which loads the
|
|
33
|
+
* gate in-process. This uses the running Bun binary, so Bun need not be
|
|
34
|
+
* on PATH.
|
|
35
|
+
* Null means neither works (a Node host with no Bun, or an unknown entry).
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveGateLaunch(i: GateLaunchInputs): GateLaunch | null;
|
|
38
|
+
/**
|
|
39
|
+
* How to start the log wrapper that rotates each process's output. Beside a
|
|
40
|
+
* source or package checkout the default (this package's own wrapper file)
|
|
41
|
+
* works; inside a single-file bundle the CLI re-executes itself with the hidden
|
|
42
|
+
* `tunnel log-worker` task instead.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveWorkerLaunch(i: GateLaunchInputs): GateLaunch | undefined;
|
|
45
|
+
export declare function downOne(name: string, killed: Set<number>): number;
|
|
8
46
|
/**
|
|
9
47
|
* Restart ONE instance's gate in place, deliberately leaving the provider
|
|
10
48
|
* process running.
|
|
@@ -20,5 +58,32 @@ export declare function reloadOne(state: TunnelState): Promise<{
|
|
|
20
58
|
ok: boolean;
|
|
21
59
|
message: string;
|
|
22
60
|
}>;
|
|
61
|
+
export interface RefreshCurrentOptions {
|
|
62
|
+
emit?: EmitContext;
|
|
63
|
+
/** Reload running Cloudflare gates after an allowlist change, keeping their URLs. */
|
|
64
|
+
reload: boolean;
|
|
65
|
+
/** Speak only when the allowlist changed or no address could be detected. */
|
|
66
|
+
quiet?: boolean;
|
|
67
|
+
/** Lookup timeout and retries; a sync that must not stall offline passes small ones. */
|
|
68
|
+
detectOptions?: DetectOptions;
|
|
69
|
+
/** Replaces the lookup (tests). */
|
|
70
|
+
detect?: typeof detectPublicAddresses;
|
|
71
|
+
}
|
|
72
|
+
export interface RefreshCurrentResult {
|
|
73
|
+
/** False only when a requested reload of a live gate failed. A failed lookup is a warning, not a failure. */
|
|
74
|
+
ok: boolean;
|
|
75
|
+
/** The allowlist gained or lost an entry. */
|
|
76
|
+
changed: boolean;
|
|
77
|
+
/** Entries newly allowed. */
|
|
78
|
+
added: string[];
|
|
79
|
+
removed: string[];
|
|
80
|
+
warnings: string[];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `tunnel allow add --current`: allow this machine's own public addresses, as
|
|
84
|
+
* Cloudflare sees them, and drop the ones allowed by the previous refresh.
|
|
85
|
+
* Exported so a host CLI can run it before `tunnel up` and from its own sync.
|
|
86
|
+
*/
|
|
87
|
+
export declare function refreshCurrentAddress(options: RefreshCurrentOptions): Promise<RefreshCurrentResult>;
|
|
23
88
|
export declare function registerTunnelCommand(program: Command, emitParam: EmitContext, contextParam?: HarneryProgramContext): void;
|
|
24
89
|
//# sourceMappingURL=tunnel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAiB1E,OAAO,EACL,KAAK,aAAa,EAClB,qBAAqB,EAEtB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EAYL,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAyDhC,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,SAAgB,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAcpC;AAmHD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,GAAG,UAAU,GAAG,IAAI,CAWxE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,GAAG,UAAU,GAAG,SAAS,CAM/E;AA2iBD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CA0BjE;AA2DD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwF7F;AAoQD,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,qFAAqF;IACrF,MAAM,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,6GAA6G;IAC7G,EAAE,EAAE,OAAO,CAAC;IACZ,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAuC/B;AAaD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,YAAY,CAAC,EAAE,qBAAqB,GACnC,IAAI,CA+GN"}
|