@indigoai-us/hq-cli 5.345.9 → 5.345.11
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/CHANGELOG.md +6 -0
- package/assets/scaffold/core/scripts/hq-delegate-grant.sh +11 -4
- package/assets/scaffold/core/scripts/hq-delegate-send.sh +11 -4
- package/assets/scaffold/core/scripts/hq-job-probe.sh +11 -4
- package/assets/scaffold/core/scripts/jobs-validate.sh +11 -4
- package/assets/scaffold/core/scripts/session-journal.sh +3 -3
- package/dist/commands/core-delegate-w1b.js +4 -1
- package/dist/commands/core-hq-session-native.js +5 -1
- package/dist/commands/core-session-journal-native.js +2 -2
- package/dist/commands/core-session-project-native.js +2 -1
- package/dist/commands/lanes.js +52 -4
- package/dist/lib/bot/coding-tool-activity.d.ts +2 -8
- package/dist/lib/bot/coding-tool-activity.js +1 -5
- package/dist/lib/bot/setup-tool-offer.d.ts +0 -4
- package/dist/lib/bot/setup-tool-offer.js +2 -2
- package/dist/lib/checkpoint-ontology/merge-copies.d.ts +4 -3
- package/dist/lib/checkpoint-ontology/tree.d.ts +0 -1
- package/dist/lib/checkpoint-ontology/tree.js +1 -1
- package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +0 -2
- package/dist/lib/core-utils/qmd-reindex-after-sync.js +2 -2
- package/dist/lib/daemon/convergence.d.ts +0 -2
- package/dist/lib/daemon/convergence.js +2 -2
- package/dist/lib/daemon/flag-monitor.d.ts +0 -2
- package/dist/lib/daemon/flag-monitor.js +2 -2
- package/dist/lib/daemon/legacy-sync-env.d.ts +0 -1
- package/dist/lib/daemon/legacy-sync-env.js +1 -1
- package/dist/lib/daemon/ops/journal.d.ts +0 -1
- package/dist/lib/daemon/ops/journal.js +1 -1
- package/dist/lib/daemon/ops/mcp.d.ts +0 -1
- package/dist/lib/daemon/ops/mcp.js +1 -1
- package/dist/lib/daemon/ops/memory.d.ts +0 -2
- package/dist/lib/daemon/ops/memory.js +2 -2
- package/dist/lib/daemon/ops/policy.d.ts +0 -7
- package/dist/lib/daemon/ops/policy.js +1 -1
- package/dist/lib/daemon/supervisor.d.ts +0 -1
- package/dist/lib/daemon/supervisor.js +1 -1
- package/dist/lib/daemon/sync-runner-bundle.d.ts +2 -1
- package/dist/lib/daemon/sync-runner-bundle.js +1 -1
- package/dist/lib/daemon/sync-runner.d.ts +2 -1
- package/dist/lib/doctor/checks/runtime-probe.d.ts +2 -16
- package/dist/lib/doctor/checks/runtime-probe.js +2 -2
- package/dist/lib/doctor/checks/sync-health.d.ts +0 -2
- package/dist/lib/doctor/checks/sync-health.js +1 -1
- package/dist/lib/doctor/fix/json-output.d.ts +0 -1
- package/dist/lib/doctor/fix/json-output.js +1 -1
- package/dist/lib/doctor/platform.d.ts +5 -4
- package/dist/lib/lanes/admission.d.ts +0 -2
- package/dist/lib/lanes/admission.js +2 -2
- package/dist/lib/lanes/autopilot-metrics.d.ts +5 -4
- package/dist/lib/lanes/blocker-freshness.d.ts +0 -2
- package/dist/lib/lanes/blocker-freshness.js +2 -2
- package/dist/lib/lanes/compaction.d.ts +2 -1
- package/dist/lib/lanes/config.d.ts +1 -5
- package/dist/lib/lanes/config.js +4 -4
- package/dist/lib/lanes/delivery.d.ts +0 -2
- package/dist/lib/lanes/delivery.js +1 -1
- package/dist/lib/lanes/hooks-install.d.ts +0 -1
- package/dist/lib/lanes/hooks-install.js +1 -1
- package/dist/lib/lanes/keep-alive.d.ts +0 -4
- package/dist/lib/lanes/keep-alive.js +3 -3
- package/dist/lib/lanes/kr-freshness.d.ts +2 -4
- package/dist/lib/lanes/kr-freshness.js +4 -4
- package/dist/lib/lanes/merge-command.d.ts +2 -1
- package/dist/lib/lanes/orphans.d.ts +0 -1
- package/dist/lib/lanes/orphans.js +1 -1
- package/dist/lib/lanes/outpost-pruner-install.d.ts +0 -3
- package/dist/lib/lanes/outpost-pruner-install.js +3 -3
- package/dist/lib/lanes/outpost-worktree-pruner.d.ts +3 -2
- package/dist/lib/lanes/provider-rejection.d.ts +0 -1
- package/dist/lib/lanes/provider-rejection.js +1 -1
- package/dist/lib/lanes/reviews.d.ts +3 -4
- package/dist/lib/lanes/reviews.js +3 -3
- package/dist/lib/lanes/runaway-tool-guard.d.ts +1 -1
- package/dist/lib/lanes/spawn.d.ts +1 -7
- package/dist/lib/lanes/spawn.js +4 -4
- package/dist/lib/lanes/store.js +1 -1
- package/dist/lib/lanes/throttle.d.ts +0 -1
- package/dist/lib/lanes/throttle.js +1 -1
- package/dist/lib/lanes/types.d.ts +1 -1
- package/dist/lib/lanes/watcher.d.ts +0 -9
- package/dist/lib/lanes/watcher.js +2 -2
- package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +0 -3
- package/dist/lib/mesh/live/daemon/legacy-listen.js +3 -3
- package/dist/lib/mesh/live/paths.d.ts +0 -1
- package/dist/lib/mesh/live/paths.js +1 -1
- package/dist/lib/mesh/live/spool.d.ts +0 -8
- package/dist/lib/mesh/live/spool.js +3 -3
- package/dist/lib/mesh/story-status.d.ts +2 -7
- package/dist/lib/mesh/story-status.js +2 -2
- package/dist/lib/sync-invalid-entity-warning.d.ts +0 -1
- package/dist/lib/sync-invalid-entity-warning.js +1 -1
- package/dist/lib/work-context/atomic.d.ts +0 -4
- package/dist/lib/work-context/atomic.js +1 -1
- package/dist/lib/work-context/bind-best.d.ts +0 -19
- package/dist/lib/work-context/bind-best.js +3 -3
- package/dist/lib/work-context/contract.d.ts +2 -3
- package/dist/lib/work-context/contract.js +1 -1
- package/dist/lib/work-context/organize.d.ts +3 -11
- package/dist/lib/work-context/organize.js +3 -3
- package/dist/lib/work-context/preflight-contract.d.ts +2 -7
- package/dist/lib/work-context/preflight-contract.js +1 -1
- package/dist/lib/work-context/repo-remote.d.ts +2 -1
- package/dist/utils/manifest.d.ts +0 -2
- package/dist/utils/manifest.js +2 -2
- package/dist/utils/pack-contributions.d.ts +1 -3
- package/dist/utils/pack-contributions.js +0 -5
- package/dist/utils/package-use-lease.d.ts +0 -7
- package/dist/utils/package-use-lease.js +1 -1
- package/dist/utils/resident-package-preload.d.ts +0 -5
- package/dist/utils/resident-package-preload.js +1 -1
- package/dist/utils/resolve-executable.d.ts +0 -1
- package/dist/utils/resolve-executable.js +1 -1
- package/dist/utils/version-gate.d.ts +4 -4
- package/dist/utils/version-gate.js +2 -2
- package/package.json +1 -1
|
@@ -24,7 +24,7 @@ export type SyncRunnerProcessList = {
|
|
|
24
24
|
ok: false;
|
|
25
25
|
error: string;
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
interface ProcessListCommandResult {
|
|
28
28
|
status: number | null;
|
|
29
29
|
stdout: string;
|
|
30
30
|
stderr: string;
|
|
@@ -57,4 +57,5 @@ export declare function syncPassResult(event: Record<string, unknown>, completed
|
|
|
57
57
|
export declare function syncHeartbeatTimeoutMs(env: NodeJS.ProcessEnv): number;
|
|
58
58
|
/** Preserve an explicit NODE_OPTIONS heap setting; otherwise apply the desktop runner's default/override. */
|
|
59
59
|
export declare function syncRunnerNodeOptions(env: NodeJS.ProcessEnv): string | undefined;
|
|
60
|
+
export {};
|
|
60
61
|
//# sourceMappingURL=sync-runner.d.ts.map
|
|
@@ -48,7 +48,7 @@ export declare const RUNTIME_PROBE_PREFIX = "hooks.runtime";
|
|
|
48
48
|
*/
|
|
49
49
|
export declare const POLICY_TRIGGER_LEDGER_RELPATH = "workspace/orchestrator/policy-trigger-state";
|
|
50
50
|
/** Whether the ledger was found. Mirrors the script's `present`/`missing`. */
|
|
51
|
-
|
|
51
|
+
type LedgerState = "present" | "missing";
|
|
52
52
|
/** Options for {@link reproduceCheckHqHooks}. */
|
|
53
53
|
export interface ReproduceOptions {
|
|
54
54
|
/** Absolute HQ tree root to inspect. */
|
|
@@ -113,13 +113,6 @@ export declare function isAgentsV2Runtime(hqRoot: string, env?: NodeJS.ProcessEn
|
|
|
113
113
|
* `HQ_FLEET_CONFIG_FILE`.
|
|
114
114
|
*/
|
|
115
115
|
export declare const HQ_FLEET_CONFIG_ENV = "HQ_FLEET_CONFIG_FILE";
|
|
116
|
-
/**
|
|
117
|
-
* The agents-v2 runtime (hq-fleet) config whose `hooks:` block wires the on-box
|
|
118
|
-
* adapter into every lifecycle event — the env override, else `~/.hq-fleet/config.yaml`
|
|
119
|
-
* (where `provision/render-config.sh` renders it). Mirrors the shell's
|
|
120
|
-
* `HQ_FLEET_CONFIG_FILE="${HQ_FLEET_CONFIG_FILE:-$HOME/.hq-fleet/config.yaml}"`.
|
|
121
|
-
*/
|
|
122
|
-
export declare function resolveHqFleetConfigPath(env?: NodeJS.ProcessEnv): string;
|
|
123
116
|
/**
|
|
124
117
|
* Whether the agents-v2 runtime actually wires the on-box hook adapter.
|
|
125
118
|
*
|
|
@@ -138,14 +131,6 @@ export declare function resolveHqFleetConfigPath(env?: NodeJS.ProcessEnv): strin
|
|
|
138
131
|
* `hq_runtime_config_wires_v2_adapter` in `check-hq-hooks.sh`.
|
|
139
132
|
*/
|
|
140
133
|
export declare function runtimeConfigWiresV2Adapter(hqRoot: string, env?: NodeJS.ProcessEnv): boolean;
|
|
141
|
-
/**
|
|
142
|
-
* Whether a policy-trigger ledger evidencing a live agents-v2 turn is present:
|
|
143
|
-
* the exact session's ledger when a session id is given (session identity
|
|
144
|
-
* implies freshness), otherwise any ledger modified within the freshness window
|
|
145
|
-
* so a long-dead tree cannot self-attest off a stale file. Mirrors
|
|
146
|
-
* `hq_v2_ledger_present`.
|
|
147
|
-
*/
|
|
148
|
-
export declare function v2LedgerPresent(opts: AgentsV2AttestationOptions): boolean;
|
|
149
134
|
/**
|
|
150
135
|
* All three agents-v2 self-attestation conditions. Used only to GRANT PASS to a
|
|
151
136
|
* hq-fleet box that host detection leaves platform-unknown; never to withhold it.
|
|
@@ -158,4 +143,5 @@ export declare function agentsV2Attested(opts: AgentsV2AttestationOptions): bool
|
|
|
158
143
|
* the per-platform status rationale.
|
|
159
144
|
*/
|
|
160
145
|
export declare function checkRuntimeProbe(context: CheckContext): CheckResult[];
|
|
146
|
+
export {};
|
|
161
147
|
//# sourceMappingURL=runtime-probe.d.ts.map
|
|
@@ -172,7 +172,7 @@ export const HQ_FLEET_CONFIG_ENV = "HQ_FLEET_CONFIG_FILE";
|
|
|
172
172
|
* (where `provision/render-config.sh` renders it). Mirrors the shell's
|
|
173
173
|
* `HQ_FLEET_CONFIG_FILE="${HQ_FLEET_CONFIG_FILE:-$HOME/.hq-fleet/config.yaml}"`.
|
|
174
174
|
*/
|
|
175
|
-
|
|
175
|
+
function resolveHqFleetConfigPath(env = process.env) {
|
|
176
176
|
const override = env[HQ_FLEET_CONFIG_ENV]?.trim();
|
|
177
177
|
if (override)
|
|
178
178
|
return override;
|
|
@@ -215,7 +215,7 @@ export function runtimeConfigWiresV2Adapter(hqRoot, env = process.env) {
|
|
|
215
215
|
* so a long-dead tree cannot self-attest off a stale file. Mirrors
|
|
216
216
|
* `hq_v2_ledger_present`.
|
|
217
217
|
*/
|
|
218
|
-
|
|
218
|
+
function v2LedgerPresent(opts) {
|
|
219
219
|
const env = opts.env ?? process.env;
|
|
220
220
|
const dir = path.join(opts.hqRoot, ...POLICY_TRIGGER_LEDGER_RELPATH.split("/"));
|
|
221
221
|
if (!isDir(dir))
|
|
@@ -105,8 +105,6 @@ export interface SyncHealthDeps {
|
|
|
105
105
|
* outside `companies/`.
|
|
106
106
|
*/
|
|
107
107
|
export declare function isSafeCompanySlug(slug: string): boolean;
|
|
108
|
-
/** True when `hqRoot/companies/<slug>` exists as a directory. Never throws. */
|
|
109
|
-
export declare function defaultLocalCompanyExists(hqRoot: string, slug: string): boolean;
|
|
110
108
|
/** True when this journal slug names a company rather than the personal tree. */
|
|
111
109
|
export declare function isCompanyJournalSlug(slug: string): boolean;
|
|
112
110
|
/** Company slug from a `sync.journal.<slug>` check id, or null if not one. */
|
|
@@ -68,7 +68,7 @@ export function isSafeCompanySlug(slug) {
|
|
|
68
68
|
return /^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(slug);
|
|
69
69
|
}
|
|
70
70
|
/** True when `hqRoot/companies/<slug>` exists as a directory. Never throws. */
|
|
71
|
-
|
|
71
|
+
function defaultLocalCompanyExists(hqRoot, slug) {
|
|
72
72
|
if (!isSafeCompanySlug(slug))
|
|
73
73
|
return false;
|
|
74
74
|
try {
|
|
@@ -58,7 +58,7 @@ export type Platform = (typeof PLATFORMS)[number];
|
|
|
58
58
|
* The platforms a signal can positively point at. `unknown` is never the target
|
|
59
59
|
* of a signal — it is the verdict when no platform is positively established.
|
|
60
60
|
*/
|
|
61
|
-
|
|
61
|
+
type DetectablePlatform = Exclude<Platform, "unknown">;
|
|
62
62
|
/**
|
|
63
63
|
* How dispositive a signal is:
|
|
64
64
|
* - `strong`: on its own, identifies a specific platform (e.g.
|
|
@@ -66,7 +66,7 @@ export type DetectablePlatform = Exclude<Platform, "unknown">;
|
|
|
66
66
|
* - `weak`: corroborating but not variant-specific (e.g. `CLAUDECODE=1`, which
|
|
67
67
|
* is shared by the CLI, app, and SDK).
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
type SignalStrength = "strong" | "weak";
|
|
70
70
|
/** One observed signal and the platform it points at. */
|
|
71
71
|
export interface PlatformEvidence {
|
|
72
72
|
/** Stable machine key for the signal, e.g. `env.CLAUDE_CODE_ENTRYPOINT`. */
|
|
@@ -97,7 +97,7 @@ export interface AncestorProcess {
|
|
|
97
97
|
command: string;
|
|
98
98
|
}
|
|
99
99
|
/** Reads this process's ancestor chain, nearest parent first. Injectable. */
|
|
100
|
-
|
|
100
|
+
type AncestryReader = () => AncestorProcess[];
|
|
101
101
|
/** Options for {@link detectPlatform}. All are injectable so runs are testable. */
|
|
102
102
|
export interface DetectPlatformOptions {
|
|
103
103
|
/** Environment to read. Default: `process.env`. */
|
|
@@ -147,7 +147,7 @@ export declare function ancestryEvidence(ancestors: AncestorProcess[]): Platform
|
|
|
147
147
|
* spawned, so a test can both feed a synthetic table and assert that the only
|
|
148
148
|
* command ever requested is `ps` — never an agent binary.
|
|
149
149
|
*/
|
|
150
|
-
|
|
150
|
+
type ProcessSpawner = (command: string, args: readonly string[]) => string | null;
|
|
151
151
|
/** Options for {@link readProcessAncestry}. */
|
|
152
152
|
export interface ReadAncestryOptions {
|
|
153
153
|
/** Process to start from. Default: `process.pid`. */
|
|
@@ -215,4 +215,5 @@ export declare function unknownPlatformCheckStatus(): DoctorStatus;
|
|
|
215
215
|
* can drop in.
|
|
216
216
|
*/
|
|
217
217
|
export declare function formatPlatformLines(detection: PlatformDetection): string[];
|
|
218
|
+
export {};
|
|
218
219
|
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -6,8 +6,6 @@ export interface AdmissionHost {
|
|
|
6
6
|
}
|
|
7
7
|
export type AdmissionCapReason = "provider_cap" | "account_cap" | "profile_cap";
|
|
8
8
|
export declare const ADMISSION_LOCK_STALE_MS = 30000;
|
|
9
|
-
export declare const ADMISSION_LOCK_TIMEOUT_MS = 5000;
|
|
10
|
-
export declare const ADMISSION_RESERVATION_GRACE_MS = 30000;
|
|
11
9
|
export declare function withLaneAdmissionLock<T>(hqRoot: string, provider: LaneRecord["provider"], fn: () => Promise<T>, sleep?: (ms: number) => Promise<void>): Promise<T>;
|
|
12
10
|
export declare function withAllLaneAdmissionLocks<T>(hqRoot: string, fn: () => Promise<T>, sleep?: (ms: number) => Promise<void>): Promise<T>;
|
|
13
11
|
export declare function laneRunsOnHost(lane: LaneRecord, host: AdmissionHost): boolean;
|
|
@@ -5,8 +5,8 @@ import { LanesError } from "./errors.js";
|
|
|
5
5
|
import { quotaBlockFor } from "./quota.js";
|
|
6
6
|
import { isTerminalLaneState } from "./types.js";
|
|
7
7
|
export const ADMISSION_LOCK_STALE_MS = 30_000;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const ADMISSION_LOCK_TIMEOUT_MS = 5_000;
|
|
9
|
+
const ADMISSION_RESERVATION_GRACE_MS = 30_000;
|
|
10
10
|
function defaultAdmissionSleep(ms) {
|
|
11
11
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
12
12
|
}
|
|
@@ -3,7 +3,7 @@ export interface AutopilotMetricsLead {
|
|
|
3
3
|
lane_id: string;
|
|
4
4
|
project_id: string;
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
interface AutopilotMetricsLane {
|
|
7
7
|
lane_id: string;
|
|
8
8
|
project_id: string;
|
|
9
9
|
story_id: string;
|
|
@@ -67,7 +67,7 @@ export interface BuildAutopilotMetricsReportInput {
|
|
|
67
67
|
nudgeDefects: readonly AutopilotMetricsDefect[];
|
|
68
68
|
seniorResumes: readonly AutopilotMetricsResume[];
|
|
69
69
|
}
|
|
70
|
-
|
|
70
|
+
interface AutopilotMetricsDay {
|
|
71
71
|
team: string;
|
|
72
72
|
day: string;
|
|
73
73
|
operator_nudges: number;
|
|
@@ -76,7 +76,7 @@ export interface AutopilotMetricsDay {
|
|
|
76
76
|
review_latency_minutes_average: number | null;
|
|
77
77
|
idle_slot_minutes_ready_work: number;
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
interface AutopilotReviewLatency {
|
|
80
80
|
team: string;
|
|
81
81
|
lane_id: string;
|
|
82
82
|
story_id: string;
|
|
@@ -85,7 +85,7 @@ export interface AutopilotReviewLatency {
|
|
|
85
85
|
minutes: number;
|
|
86
86
|
end_event: "review_record" | "senior_resume" | "story_closed";
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
interface AutopilotNudgeDefect extends AutopilotMetricsDefect {
|
|
89
89
|
wake: null;
|
|
90
90
|
}
|
|
91
91
|
export interface AutopilotMetricsReport {
|
|
@@ -96,4 +96,5 @@ export interface AutopilotMetricsReport {
|
|
|
96
96
|
nudge_defects: AutopilotNudgeDefect[];
|
|
97
97
|
}
|
|
98
98
|
export declare function buildAutopilotMetricsReport(input: BuildAutopilotMetricsReportInput): AutopilotMetricsReport;
|
|
99
|
+
export {};
|
|
99
100
|
//# sourceMappingURL=autopilot-metrics.d.ts.map
|
|
@@ -2,8 +2,6 @@ import { type ManagerStatusTarget } from "./manager-status-gate.js";
|
|
|
2
2
|
import { readLanesRegistryFlag } from "./registry-flag.js";
|
|
3
3
|
import type { LaneRecord } from "./types.js";
|
|
4
4
|
export declare const BLOCKER_FRESHNESS_FLAG = "lanes.blocker-freshness";
|
|
5
|
-
export declare const BLOCKER_FRESHNESS_DEFAULT_HOURS = 4;
|
|
6
|
-
export declare const BLOCKER_FRESHNESS_FUTURE_GRACE_MS: number;
|
|
7
5
|
export interface StaleBlocker {
|
|
8
6
|
key: string;
|
|
9
7
|
label: string;
|
|
@@ -7,8 +7,8 @@ import { readLanesRegistryFlag } from "./registry-flag.js";
|
|
|
7
7
|
import { resolveLaneCompany } from "./lane-company.js";
|
|
8
8
|
import { assertNoSecretText } from "./text-scan.js";
|
|
9
9
|
export const BLOCKER_FRESHNESS_FLAG = "lanes.blocker-freshness";
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const BLOCKER_FRESHNESS_DEFAULT_HOURS = DEFAULT_BLOCKER_FRESHNESS_HOURS;
|
|
11
|
+
const BLOCKER_FRESHNESS_FUTURE_GRACE_MS = 5 * 60 * 1000;
|
|
12
12
|
const TERMINAL_BLOCKER_STATUSES = new Set([
|
|
13
13
|
"closed",
|
|
14
14
|
"resolved",
|
|
@@ -65,7 +65,7 @@ export declare function probeProviderCompactions(transcriptPath: string | null,
|
|
|
65
65
|
export declare function findSessionTranscript(home: string, sessionId: string): string | null;
|
|
66
66
|
/** Count compact boundaries in a transcript. Other lines are never parsed. */
|
|
67
67
|
export declare function probeCompactBoundaries(transcriptPath: string | null): CompactBoundaryProbe;
|
|
68
|
-
|
|
68
|
+
interface CompactionCommandResult {
|
|
69
69
|
status: number | null;
|
|
70
70
|
error?: string;
|
|
71
71
|
}
|
|
@@ -107,4 +107,5 @@ export declare function compactLaneSession(input: CompactLaneSessionInput): Lane
|
|
|
107
107
|
* compaction's `resume_at`.
|
|
108
108
|
*/
|
|
109
109
|
export declare function compactionAfterUsage(lane: LaneRecord): LaneRunUsage | null;
|
|
110
|
+
export {};
|
|
110
111
|
//# sourceMappingURL=compaction.d.ts.map
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* that resolve to the same home are refused (identity-keyed-cap rule).
|
|
8
8
|
*/
|
|
9
9
|
import * as fs from "node:fs";
|
|
10
|
-
import { type AccountConfig, type LaneProvider, type LanesConfig, type RunawaySearchGuardConfig, type LivenessWindows, type ProviderConfig
|
|
10
|
+
import { type AccountConfig, type LaneProvider, type LanesConfig, type RunawaySearchGuardConfig, type LivenessWindows, type ProviderConfig } from "./types.js";
|
|
11
11
|
export declare const LANES_CONFIG_REL: string;
|
|
12
12
|
export declare const DEFAULT_MAX_QUEUED = 3;
|
|
13
13
|
export declare const DEFAULT_CPU_BUSY_PAUSE = 0.85;
|
|
@@ -43,10 +43,6 @@ export declare const DEFAULT_SESSION_QUESTION_TIMEOUT_SECS: number;
|
|
|
43
43
|
export declare const DEFAULT_BLOCKER_FRESHNESS_HOURS = 4;
|
|
44
44
|
/** Manager key results must be re-measured within six hours by default. */
|
|
45
45
|
export declare const DEFAULT_KR_FRESHNESS_HOURS = 6;
|
|
46
|
-
export declare const DEFAULT_LOW_DISK_MIN_FREE_BYTES: number;
|
|
47
|
-
export declare const DEFAULT_CODEX_ROLLOUT_COMPRESS_AFTER_HOURS = 24;
|
|
48
|
-
export declare const DEFAULT_CODEX_ROLLOUT_DELETE_AFTER_DAYS = 7;
|
|
49
|
-
export declare const DEFAULT_TRACKER_CHECKS: TrackerChecksConfig;
|
|
50
46
|
export declare const DEFAULT_RUNAWAY_SEARCH_GUARD_CONFIG: RunawaySearchGuardConfig;
|
|
51
47
|
export declare const DEFAULT_LIVENESS_WINDOWS: LivenessWindows;
|
|
52
48
|
export declare const DEFAULT_PROVIDER_MAX_RUNNING: Record<LaneProvider, number>;
|
package/dist/lib/lanes/config.js
CHANGED
|
@@ -47,10 +47,10 @@ export const DEFAULT_SESSION_QUESTION_TIMEOUT_SECS = 10 * 60;
|
|
|
47
47
|
export const DEFAULT_BLOCKER_FRESHNESS_HOURS = 4;
|
|
48
48
|
/** Manager key results must be re-measured within six hours by default. */
|
|
49
49
|
export const DEFAULT_KR_FRESHNESS_HOURS = 6;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const DEFAULT_LOW_DISK_MIN_FREE_BYTES = 5 * 1024 ** 3;
|
|
51
|
+
const DEFAULT_CODEX_ROLLOUT_COMPRESS_AFTER_HOURS = 24;
|
|
52
|
+
const DEFAULT_CODEX_ROLLOUT_DELETE_AFTER_DAYS = 7;
|
|
53
|
+
const DEFAULT_TRACKER_CHECKS = {
|
|
54
54
|
owner_question_surface_ms: 10 * 60 * 1000,
|
|
55
55
|
open_question_age_ms: 2 * 60 * 60 * 1000,
|
|
56
56
|
status_stale_ms: 90 * 60 * 1000,
|
|
@@ -69,8 +69,6 @@ export type LaneDeliveryMechanism = (typeof LANE_DELIVERY_MECHANISMS)[number];
|
|
|
69
69
|
/** Additional presentation-only result used by `hq lanes show`. */
|
|
70
70
|
export type LaneShowDeliveryMechanism = LaneDeliveryMechanism | "questions";
|
|
71
71
|
export type DeliveryLane = Pick<LaneRecord, "state" | "provider" | "provider_session_id" | "terminal_reason" | "envelope_repair">;
|
|
72
|
-
/** Only the terminal result of a failed automatic envelope repair is recoverable. */
|
|
73
|
-
export declare function isFailedEnvelopeRepairLane(lane: DeliveryLane): boolean;
|
|
74
72
|
/**
|
|
75
73
|
* `dropbox`: a process is (or is about to be) alive to drain the inbox.
|
|
76
74
|
* `resume`: the process has exited, the provider can resume, the state allows
|
|
@@ -88,7 +88,7 @@ export function isResumeCommandState(state) {
|
|
|
88
88
|
}
|
|
89
89
|
export const LANE_DELIVERY_MECHANISMS = ["dropbox", "resume", "none"];
|
|
90
90
|
/** Only the terminal result of a failed automatic envelope repair is recoverable. */
|
|
91
|
-
|
|
91
|
+
function isFailedEnvelopeRepairLane(lane) {
|
|
92
92
|
return (lane.state === "failed" &&
|
|
93
93
|
lane.terminal_reason === ENVELOPE_INVALID_REASON &&
|
|
94
94
|
lane.envelope_repair?.attempted === true &&
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
import type { LaneProvider } from "./types.js";
|
|
21
21
|
export declare const DRAIN_HOOK_BASENAME = "hq-lanes-drain";
|
|
22
22
|
export declare const DRAIN_HOOK_TIMEOUT_SECONDS = 30;
|
|
23
|
-
export declare function drainHookEntryPath(): string;
|
|
24
23
|
export declare function lanesHookAssetsDir(): string;
|
|
25
24
|
export declare const DRAIN_HOOK_REGISTRATION_KINDS: readonly ["hooks_dir", "settings_json", "config_toml"];
|
|
26
25
|
export type DrainHookRegistrationKind = (typeof DRAIN_HOOK_REGISTRATION_KINDS)[number];
|
|
@@ -28,7 +28,7 @@ export const DRAIN_HOOK_TIMEOUT_SECONDS = 30;
|
|
|
28
28
|
function shellQuote(value) {
|
|
29
29
|
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
function drainHookEntryPath() {
|
|
32
32
|
return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../../dist/lanes-drain-hook.js");
|
|
33
33
|
}
|
|
34
34
|
export function lanesHookAssetsDir() {
|
|
@@ -16,7 +16,6 @@ export declare const LANE_SUPERSESSION_LINEAGE_AWARE_DEFAULT_ENABLED = false;
|
|
|
16
16
|
export declare const LANE_RUNNING_SUPERSEDED_MESSAGE_DELIVERY_FLAG = "lanes.running-superseded-message-delivery";
|
|
17
17
|
export declare const LEAD_LANE_KEEP_ALIVE_MAX_RESUMES = 24;
|
|
18
18
|
export declare const LEAD_LANE_KEEP_ALIVE_BASE_BACKOFF_MS: number;
|
|
19
|
-
export declare const LEAD_LANE_KEEP_ALIVE_MAX_BACKOFF_MS: number;
|
|
20
19
|
export type KeepAliveLane = Pick<LaneRecord, "lane_id" | "created_at" | "senior" | "company" | "project_id"> & Partial<Pick<LaneRecord, "mesh_company" | "worker_profile" | "hire_grant" | "provider_session_id" | "last_resume" | "state">>;
|
|
21
20
|
export interface LaneTerminalResumeResult {
|
|
22
21
|
lane: LaneRecord;
|
|
@@ -57,11 +56,8 @@ export declare function canResumeDoneKeepAliveLane(lane: Pick<LaneRecord, "keep_
|
|
|
57
56
|
export declare function hasPendingKeepAliveWork(hqRoot: string, lane: Pick<LaneRecord, "lane_id" | "company" | "pending_resume">, questionRecords?: readonly QuestionRecord[]): boolean;
|
|
58
57
|
/** Undelivered answers that belong to this lane and company. */
|
|
59
58
|
export declare function undeliveredAnsweredQuestions(lane: Pick<LaneRecord, "lane_id" | "company">, questions: readonly QuestionRecord[]): QuestionRecord[];
|
|
60
|
-
export declare function retiredLaneRegistryPath(hqRoot: string): string;
|
|
61
59
|
/** Missing registry means no retired lanes; every present invalid file fails closed. */
|
|
62
60
|
export declare function loadRetiredLaneIds(hqRoot: string): ReadonlySet<string>;
|
|
63
|
-
/** IDs may be stored bare or with an owner-host suffix after an underscore. */
|
|
64
|
-
export declare function isRetiredLaneId(laneId: string, retiredLaneIds: ReadonlySet<string>): boolean;
|
|
65
61
|
export declare function keepAliveSupersededBy<T extends KeepAliveLane>(lane: T, lanes: readonly T[], lineageAware?: boolean, companyForLane?: (lane: T) => T["company"]): T | undefined;
|
|
66
62
|
export declare function keepAliveExclusion<T extends KeepAliveLane>(lane: T, lanes: readonly T[], retiredLaneIds: ReadonlySet<string>, lineageAware?: boolean, companyForLane?: (lane: T) => T["company"]): "retired" | "superseded" | undefined;
|
|
67
63
|
export declare function leadLaneKeepAliveBackoffMs(attempt: number): number;
|
|
@@ -21,7 +21,7 @@ export const LANE_SUPERSESSION_LINEAGE_AWARE_DEFAULT_ENABLED = false;
|
|
|
21
21
|
export const LANE_RUNNING_SUPERSEDED_MESSAGE_DELIVERY_FLAG = "lanes.running-superseded-message-delivery";
|
|
22
22
|
export const LEAD_LANE_KEEP_ALIVE_MAX_RESUMES = 24;
|
|
23
23
|
export const LEAD_LANE_KEEP_ALIVE_BASE_BACKOFF_MS = 5 * 60 * 1000;
|
|
24
|
-
|
|
24
|
+
const LEAD_LANE_KEEP_ALIVE_MAX_BACKOFF_MS = 60 * 60 * 1000;
|
|
25
25
|
/** Shared resume transition for terminal gate follow-ups. */
|
|
26
26
|
export function queueLaneTerminalResume(current, at, resumeText, options = {}) {
|
|
27
27
|
if (options.mergeExisting && current.pending_resume !== undefined) {
|
|
@@ -182,7 +182,7 @@ function readKeepAliveQuestionRecords(hqRoot) {
|
|
|
182
182
|
}
|
|
183
183
|
return questions;
|
|
184
184
|
}
|
|
185
|
-
|
|
185
|
+
function retiredLaneRegistryPath(hqRoot) {
|
|
186
186
|
return path.join(hqRoot, "workspace", "lane-briefs", "juniors.json");
|
|
187
187
|
}
|
|
188
188
|
/** Missing registry means no retired lanes; every present invalid file fails closed. */
|
|
@@ -233,7 +233,7 @@ function invalidRetiredList(filePath, message) {
|
|
|
233
233
|
return new LanesError("keep_alive_retired_list_invalid", `Invalid retired lane list ${filePath}: ${message}`, { path: filePath });
|
|
234
234
|
}
|
|
235
235
|
/** IDs may be stored bare or with an owner-host suffix after an underscore. */
|
|
236
|
-
|
|
236
|
+
function isRetiredLaneId(laneId, retiredLaneIds) {
|
|
237
237
|
for (const retiredId of retiredLaneIds) {
|
|
238
238
|
if (retiredId === laneId ||
|
|
239
239
|
retiredId.startsWith(`${laneId}_`) ||
|
|
@@ -2,9 +2,7 @@ import { type ManagerStatusTarget } from "./manager-status-gate.js";
|
|
|
2
2
|
import { readLanesRegistryFlag } from "./registry-flag.js";
|
|
3
3
|
import type { LaneRecord } from "./types.js";
|
|
4
4
|
export declare const KR_FRESHNESS_FLAG = "lanes.kr-freshness";
|
|
5
|
-
|
|
6
|
-
export declare const KR_FRESHNESS_LEDGER_REL: string;
|
|
7
|
-
export declare const KR_FRESHNESS_LEDGER_SCHEMA = "kr-freshness-ledger.v1";
|
|
5
|
+
declare const KR_FRESHNESS_LEDGER_SCHEMA = "kr-freshness-ledger.v1";
|
|
8
6
|
export type KrFreshnessVerdict = "moving" | "flat" | "stalled";
|
|
9
7
|
export interface KrFreshnessKpi {
|
|
10
8
|
name: string;
|
|
@@ -52,7 +50,6 @@ export interface KrFreshnessStatusKpi {
|
|
|
52
50
|
entryMeasuredAt: string | null;
|
|
53
51
|
}
|
|
54
52
|
export declare function readKrFreshnessStatus(statusPath: string): KrFreshnessStatusKpi[];
|
|
55
|
-
export declare function krFreshnessLedgerPath(root: string, laneId: string): string;
|
|
56
53
|
export declare function readKrFreshnessLedger(root: string, laneId: string): KrFreshnessLedger | null;
|
|
57
54
|
export declare function writeKrFreshnessLedger(root: string, ledger: KrFreshnessLedger): void;
|
|
58
55
|
export declare function updateKrFreshnessLedger(laneId: string, prior: KrFreshnessLedger | null, statusKpis: readonly KrFreshnessStatusKpi[], now: number): KrFreshnessLedger;
|
|
@@ -72,4 +69,5 @@ export declare function readKrFreshnessReport(root: string, laneId: string, now:
|
|
|
72
69
|
kr_freshness_hours: number;
|
|
73
70
|
kpis: KrFreshnessView[];
|
|
74
71
|
};
|
|
72
|
+
export {};
|
|
75
73
|
//# sourceMappingURL=kr-freshness.d.ts.map
|
|
@@ -8,9 +8,9 @@ import { readLanesRegistryFlag } from "./registry-flag.js";
|
|
|
8
8
|
import { resolveLaneCompany } from "./lane-company.js";
|
|
9
9
|
import { assertNoSecretText } from "./text-scan.js";
|
|
10
10
|
export const KR_FRESHNESS_FLAG = "lanes.kr-freshness";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const KR_FRESHNESS_DEFAULT_HOURS = DEFAULT_KR_FRESHNESS_HOURS;
|
|
12
|
+
const KR_FRESHNESS_LEDGER_REL = path.join("workspace", "lanes", "kpi-ledger");
|
|
13
|
+
const KR_FRESHNESS_LEDGER_SCHEMA = "kr-freshness-ledger.v1";
|
|
14
14
|
const MAX_STATUS_BYTES = 1024 * 1024;
|
|
15
15
|
const MAX_LEDGER_BYTES = 1024 * 1024;
|
|
16
16
|
const MAX_KPIS = 1000;
|
|
@@ -190,7 +190,7 @@ export function readKrFreshnessStatus(statusPath) {
|
|
|
190
190
|
}
|
|
191
191
|
return [...found.values()];
|
|
192
192
|
}
|
|
193
|
-
|
|
193
|
+
function krFreshnessLedgerPath(root, laneId) {
|
|
194
194
|
return ledgerFilePath(root, laneId);
|
|
195
195
|
}
|
|
196
196
|
export function readKrFreshnessLedger(root, laneId) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
interface MergeCommandTarget {
|
|
2
2
|
kind: "pr" | "api" | "graphql" | "git";
|
|
3
3
|
repo: string | null;
|
|
4
4
|
pr: number | null;
|
|
@@ -12,4 +12,5 @@ export interface MergeCommandParseResult {
|
|
|
12
12
|
}
|
|
13
13
|
export declare function canonicalRepo(raw: string): string;
|
|
14
14
|
export declare function parseMergeCommands(command: string): MergeCommandParseResult;
|
|
15
|
+
export {};
|
|
15
16
|
//# sourceMappingURL=merge-command.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LanesError } from "./errors.js";
|
|
2
2
|
import { isTerminalLaneState } from "./types.js";
|
|
3
|
-
|
|
3
|
+
const DEFAULT_ORPHAN_MIN_AGE_MINUTES = 30;
|
|
4
4
|
export const DEFAULT_ORPHAN_USER_IDLE_HOURS = 72;
|
|
5
5
|
const LIVE_LANE_STATES = new Set(["running", "queued", "blocked", "awaiting_input"]);
|
|
6
6
|
export function parseOrphanMinAge(value) {
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
export declare const OUTPOST_PRUNER_PRESSURE_SERVICE = "hq-outpost-worktree-pruner-pressure.service";
|
|
2
1
|
export declare const OUTPOST_PRUNER_PRESSURE_TIMER = "hq-outpost-worktree-pruner-pressure.timer";
|
|
3
|
-
export declare const OUTPOST_PRUNER_DAILY_SERVICE = "hq-outpost-worktree-pruner-daily.service";
|
|
4
2
|
export declare const OUTPOST_PRUNER_DAILY_TIMER = "hq-outpost-worktree-pruner-daily.timer";
|
|
5
|
-
export declare const OUTPOST_PRUNER_MIN_AGE_DAYS = 14;
|
|
6
3
|
export interface OutpostPrunerInstallOptions {
|
|
7
4
|
systemdRoot: string;
|
|
8
5
|
hqRoot: string;
|
|
@@ -4,11 +4,11 @@ import * as path from "node:path";
|
|
|
4
4
|
import { resolveHqBinary, resolveNodeBinary } from "../mesh/live/daemon/install.js";
|
|
5
5
|
import { SYSTEMD_PATH_ENV } from "../service-manager/systemd.js";
|
|
6
6
|
import { resolveFlagRegistryEndpoint } from "../flag-registry-endpoint.js";
|
|
7
|
-
|
|
7
|
+
const OUTPOST_PRUNER_PRESSURE_SERVICE = "hq-outpost-worktree-pruner-pressure.service";
|
|
8
8
|
export const OUTPOST_PRUNER_PRESSURE_TIMER = "hq-outpost-worktree-pruner-pressure.timer";
|
|
9
|
-
|
|
9
|
+
const OUTPOST_PRUNER_DAILY_SERVICE = "hq-outpost-worktree-pruner-daily.service";
|
|
10
10
|
export const OUTPOST_PRUNER_DAILY_TIMER = "hq-outpost-worktree-pruner-daily.timer";
|
|
11
|
-
|
|
11
|
+
const OUTPOST_PRUNER_MIN_AGE_DAYS = 14;
|
|
12
12
|
function shellQuote(value) {
|
|
13
13
|
return /^[A-Za-z0-9_./:-]+$/.test(value) ? value : `'${value.replace(/'/g, `'\\''`)}'`;
|
|
14
14
|
}
|
|
@@ -18,14 +18,14 @@ export interface OutpostWorktreePrunerOptions {
|
|
|
18
18
|
/** Test seam for /proc reads; production uses the host filesystem. */
|
|
19
19
|
processPathReader?: ProcessPathReader;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
interface ProcessPathReader {
|
|
22
22
|
readdirSync(path: string): string[];
|
|
23
23
|
readlinkSync(path: string): string;
|
|
24
24
|
uid(path: string): number;
|
|
25
25
|
/** Test seam for read-only process identity checks used by the cwd exception. */
|
|
26
26
|
readFileSync?(path: string): string;
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
interface PackageStorePruneResult {
|
|
29
29
|
attempted: boolean;
|
|
30
30
|
reason?: string;
|
|
31
31
|
bytes_freed?: number;
|
|
@@ -58,4 +58,5 @@ export interface OutpostWorktreePrunerResult {
|
|
|
58
58
|
*/
|
|
59
59
|
export declare function runOutpostWorktreePruner(options: OutpostWorktreePrunerOptions): OutpostWorktreePrunerResult;
|
|
60
60
|
export declare const OUTPOST_WORKTREE_PRUNER_DEFAULT_MIN_AGE_DAYS = 14;
|
|
61
|
+
export {};
|
|
61
62
|
//# sourceMappingURL=outpost-worktree-pruner.d.ts.map
|
|
@@ -38,7 +38,6 @@ export interface ProviderRejection {
|
|
|
38
38
|
event: "codex.turn.failed" | "claude.result.is_error" | "claude.result.login_failure" | "grok.error";
|
|
39
39
|
}
|
|
40
40
|
export declare function isProviderLoginFailure(failure: ProviderRejection | null): boolean;
|
|
41
|
-
export declare function capMessage(message: string): string;
|
|
42
41
|
/**
|
|
43
42
|
* Whether a later run could succeed without the operator changing anything.
|
|
44
43
|
* A 400 model rejection cannot; a request timeout, a too-early, or a server
|
|
@@ -100,7 +100,7 @@ function statusOf(value) {
|
|
|
100
100
|
? value
|
|
101
101
|
: null;
|
|
102
102
|
}
|
|
103
|
-
|
|
103
|
+
function capMessage(message) {
|
|
104
104
|
return message.length > PROVIDER_REJECTION_MESSAGE_CAP
|
|
105
105
|
? `${message.slice(0, PROVIDER_REJECTION_MESSAGE_CAP)}…`
|
|
106
106
|
: message;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const LANE_REVIEW_HISTORY_CAP = 50;
|
|
4
|
-
export interface LaneReviewHistoryEntry {
|
|
1
|
+
declare const LANE_REVIEW_SCHEMA_VERSION = "hq-lanes-review.v1";
|
|
2
|
+
interface LaneReviewHistoryEntry {
|
|
5
3
|
repo: string;
|
|
6
4
|
pr: number;
|
|
7
5
|
head_sha: string;
|
|
@@ -34,4 +32,5 @@ export declare function parseLaneReviewPr(raw: string | number): number;
|
|
|
34
32
|
export declare function readLaneReview(hqRoot: string, repo: string, pr: number): LaneReview | null;
|
|
35
33
|
export declare function listLaneReviews(hqRoot: string, reviewerLane?: string): LaneReviewListing;
|
|
36
34
|
export declare function recordLaneReview(hqRoot: string, input: RecordLaneReviewInput): Promise<LaneReview>;
|
|
35
|
+
export {};
|
|
37
36
|
//# sourceMappingURL=reviews.d.ts.map
|
|
@@ -3,9 +3,9 @@ import * as fs from "node:fs";
|
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import { assertNoSecretText } from "./text-scan.js";
|
|
5
5
|
import { LanesError } from "./errors.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const LANE_REVIEWS_REL = path.join("workspace", "lanes", "reviews");
|
|
7
|
+
const LANE_REVIEW_SCHEMA_VERSION = "hq-lanes-review.v1";
|
|
8
|
+
const LANE_REVIEW_HISTORY_CAP = 50;
|
|
9
9
|
const REVIEW_LOCK_WAIT_MS = 5_000;
|
|
10
10
|
const REVIEW_LOCK_STALE_MS = 5 * 60_000;
|
|
11
11
|
function fail(error, message, details = {}) {
|
|
@@ -26,8 +26,6 @@ export declare function providerCommandOnPath(command: string, pathEnv: string |
|
|
|
26
26
|
/** Per-provider model flag. A missing entry means --model is refused. */
|
|
27
27
|
export declare const PROVIDER_MODEL_FLAG: Record<LaneProvider, string>;
|
|
28
28
|
export declare const CLAUDE_AUTO_COMPACT_ENV = "CLAUDE_CODE_AUTO_COMPACT_WINDOW";
|
|
29
|
-
/** Codex CLI overrides required for its ChatGPT fast service tier. */
|
|
30
|
-
export declare const CODEX_FAST_MODE_FLAGS: readonly ["-c", "service_tier=\"fast\"", "--enable", "fast_mode"];
|
|
31
29
|
export declare function parseCliModel(raw: string | undefined): string | undefined;
|
|
32
30
|
export declare function resolveLaneModel(input: {
|
|
33
31
|
cliModel?: string;
|
|
@@ -39,14 +37,12 @@ type AutomaticAccountChangeReason = Exclude<AccountHistoryEntry["reason"], "oper
|
|
|
39
37
|
/** Change account only after a provider/runtime account failure, then re-admit. */
|
|
40
38
|
export declare function retryLaneOnAlternateAccount(hqRoot: string, lane: LaneRecord, reason: Extract<AutomaticAccountChangeReason, "usage_limit" | "account_unavailable">, writer?: "watcher" | "reconcile", deps?: SpawnLaneDeps): Promise<LaneRecord>;
|
|
41
39
|
export declare function appendModelFlag(provider: LaneProvider, args: string[], model: string | undefined): string[];
|
|
42
|
-
/** Add Codex fast-mode flags before the prompt/positional separator. */
|
|
43
|
-
export declare function appendFastModeFlags(provider: LaneProvider, args: string[], enabled: boolean | undefined): string[];
|
|
44
40
|
export interface ProviderProfileLaunch {
|
|
45
41
|
systemPrompt: string;
|
|
46
42
|
settingsPath?: string;
|
|
47
43
|
ignoredFields?: readonly string[];
|
|
48
44
|
}
|
|
49
|
-
|
|
45
|
+
type DetachedStdio = ["ignore", number, number];
|
|
50
46
|
export interface DetachedSpawnOptions {
|
|
51
47
|
detached: true;
|
|
52
48
|
windowsHide: true;
|
|
@@ -120,7 +116,6 @@ export interface PidLivenessProbe {
|
|
|
120
116
|
}
|
|
121
117
|
export declare function missingPidProbe(): PidLivenessProbe;
|
|
122
118
|
export declare function defaultPidIsAlive(pid: number): boolean;
|
|
123
|
-
export declare const STOP_TERM_WAIT_MS = 500;
|
|
124
119
|
export declare function parseSpawnTerminalReason(value: string): SpawnTerminalReason;
|
|
125
120
|
export declare function laneRunDir(hqRoot: string, laneId: string): string;
|
|
126
121
|
export declare function watcherMainPath(): string;
|
|
@@ -130,7 +125,6 @@ export declare function readProcStarttimeDetailed(pid: number): {
|
|
|
130
125
|
error: string | null;
|
|
131
126
|
};
|
|
132
127
|
export declare function readProcStarttime(pid: number): number | null;
|
|
133
|
-
export declare function formatPidRecord(rec: PidRecord): string;
|
|
134
128
|
export declare function parsePidRecord(text: string): PidRecord | null;
|
|
135
129
|
export declare function readPidRecord(filePath: string): PidRecord | null;
|
|
136
130
|
export declare function writePidRecord(filePath: string, rec: PidRecord): void;
|