@codyswann/lisa 3.28.2 → 3.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/doctor-worktree-work-at-risk.d.ts +90 -0
- package/dist/cli/doctor-worktree-work-at-risk.d.ts.map +1 -0
- package/dist/cli/doctor-worktree-work-at-risk.js +258 -0
- package/dist/cli/doctor-worktree-work-at-risk.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +6 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +4 -1
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/typescript/copy-overwrite/.lintstagedrc.json +4 -5
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { DoctorCheck } from "./doctor.js";
|
|
2
|
+
/** What one worktree holds that exists nowhere else. */
|
|
3
|
+
export interface WorktreeExposure {
|
|
4
|
+
/** Absolute worktree path. */
|
|
5
|
+
readonly path: string;
|
|
6
|
+
/** Checked-out branch, or undefined when detached. */
|
|
7
|
+
readonly branch?: string;
|
|
8
|
+
/** Commits present locally and on no remote. */
|
|
9
|
+
readonly unpushedCommits: number;
|
|
10
|
+
/** Whether the branch has no upstream at all. */
|
|
11
|
+
readonly noUpstream: boolean;
|
|
12
|
+
/** TRACKED files modified, staged, added, deleted, or renamed. */
|
|
13
|
+
readonly dirtyFiles: number;
|
|
14
|
+
/** Untracked files, reported as context rather than as the signal. */
|
|
15
|
+
readonly untrackedFiles: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Whether a worktree holds anything that would be lost if it disappeared.
|
|
19
|
+
*
|
|
20
|
+
* Uncommitted files are the severe half and are deliberately weighted first in
|
|
21
|
+
* the report: a commit survives in the reflog long after a branch is deleted,
|
|
22
|
+
* while a dirty tree is in no object database at all. Nothing recovers it.
|
|
23
|
+
* @param exposure - Facts gathered about one worktree
|
|
24
|
+
* @returns True when the worktree holds unique work
|
|
25
|
+
*/
|
|
26
|
+
export declare function holdsWorkAtRisk(exposure: WorktreeExposure): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Whether a status line describes a modification to a TRACKED file.
|
|
29
|
+
*
|
|
30
|
+
* Untracked entries are deliberately excluded from the signal. Measured against
|
|
31
|
+
* a real fleet checkout: one worktree reported 1,442 "uncommitted" files, all
|
|
32
|
+
* untracked, overwhelmingly `.watchman-cookie-*` droppings and apply artifacts.
|
|
33
|
+
* Counting those makes every worktree look catastrophic, and a check that cries
|
|
34
|
+
* wolf on ephemera is one nobody reads — which is the failure this check exists
|
|
35
|
+
* to prevent, reproduced inside the check itself.
|
|
36
|
+
*
|
|
37
|
+
* Untracked files are still counted and reported, just not as the trigger. The
|
|
38
|
+
* genuinely at-risk worktree in the incident carried five tracked modifications
|
|
39
|
+
* alongside its one new test file, so keying on tracked changes still catches it.
|
|
40
|
+
* @param line - One `git status --porcelain` line
|
|
41
|
+
* @returns True when the line is a tracked-file change
|
|
42
|
+
*/
|
|
43
|
+
export declare function isTrackedChange(line: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Order exposures worst-first for an operator reading a truncated list.
|
|
46
|
+
*
|
|
47
|
+
* Dirty trees sort ahead of unpushed commits regardless of size, because the
|
|
48
|
+
* recovery story differs in kind rather than degree.
|
|
49
|
+
* @param left - First exposure
|
|
50
|
+
* @param right - Second exposure
|
|
51
|
+
* @returns Comparator result
|
|
52
|
+
*/
|
|
53
|
+
export declare function compareExposureSeverity(left: WorktreeExposure, right: WorktreeExposure): number;
|
|
54
|
+
/**
|
|
55
|
+
* Render one exposure as a line an operator can act on.
|
|
56
|
+
* @param exposure - Facts gathered about one worktree
|
|
57
|
+
* @returns Single-line description
|
|
58
|
+
*/
|
|
59
|
+
export declare function describeExposure(exposure: WorktreeExposure): string;
|
|
60
|
+
/**
|
|
61
|
+
* Report worktrees holding commits or edits that exist nowhere else.
|
|
62
|
+
*
|
|
63
|
+
* Distinct from `checkWorktreeHygiene`, which counts worktrees because each one
|
|
64
|
+
* is a full checkout that every file crawler walks past. That check deliberately
|
|
65
|
+
* stops at the count, on the grounds that "the operator is the only one who
|
|
66
|
+
* knows whether an idle-looking checkout still holds work". This check answers
|
|
67
|
+
* exactly that question, so an idle-looking checkout no longer has to be taken
|
|
68
|
+
* on faith.
|
|
69
|
+
*
|
|
70
|
+
* Measured motivation: on 2026-08-17 seven agent sessions in one fleet reached
|
|
71
|
+
* the same ticket in turn, each finding no remote branch and concluding the
|
|
72
|
+
* previous session had abandoned it. Five worktrees held real work at the time,
|
|
73
|
+
* one of them 1,031 uncommitted lines under `/private/tmp`. Every session ran
|
|
74
|
+
* `git ls-remote`, and every session got a true negative that meant the opposite
|
|
75
|
+
* of what it looked like: unpushed work and abandoned work are byte-identical
|
|
76
|
+
* from outside.
|
|
77
|
+
*
|
|
78
|
+
* Enumeration is `git worktree list`, NOT a scan of the worktree roots, and that
|
|
79
|
+
* is load-bearing. The exposed worktrees in that incident lived under
|
|
80
|
+
* `/private/tmp`, which no root scan reaches. A check that only sees the tidy
|
|
81
|
+
* locations would have reported clean while the work at risk sat elsewhere.
|
|
82
|
+
*
|
|
83
|
+
* Read-only and warn-only. It names what is exposed and the one-line repair; it
|
|
84
|
+
* never pushes, commits, or removes anything, because publishing a branch is
|
|
85
|
+
* outward-facing and belongs to the operator.
|
|
86
|
+
* @param targetPath - Project path to inspect
|
|
87
|
+
* @returns Doctor check result
|
|
88
|
+
*/
|
|
89
|
+
export declare function checkWorktreeWorkAtRisk(targetPath: string): Promise<DoctorCheck>;
|
|
90
|
+
//# sourceMappingURL=doctor-worktree-work-at-risk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-worktree-work-at-risk.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-worktree-work-at-risk.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuB/C,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAEnE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAWR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAanE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CA4CtB"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report agent worktrees holding work that exists nowhere else.
|
|
3
|
+
* @module cli/doctor-worktree-work-at-risk
|
|
4
|
+
*/
|
|
5
|
+
import { execFile } from "node:child_process";
|
|
6
|
+
import { promisify } from "node:util";
|
|
7
|
+
const CHECK_NAME = "Worktree work at risk?";
|
|
8
|
+
const GIT_TIMEOUT_MS = 10_000;
|
|
9
|
+
const GIT_MAX_BUFFER_BYTES = 1024 * 1024;
|
|
10
|
+
const WORKTREE_INSPECTION_BATCH_SIZE = 8;
|
|
11
|
+
const run = promisify(execFile);
|
|
12
|
+
/**
|
|
13
|
+
* Run one bounded git command for the doctor check.
|
|
14
|
+
* @param args - Git arguments
|
|
15
|
+
* @param cwd - Directory to run git in
|
|
16
|
+
* @returns Child process stdout and stderr
|
|
17
|
+
*/
|
|
18
|
+
function runGit(args, cwd) {
|
|
19
|
+
return run("git", [...args], {
|
|
20
|
+
cwd,
|
|
21
|
+
maxBuffer: GIT_MAX_BUFFER_BYTES,
|
|
22
|
+
timeout: GIT_TIMEOUT_MS,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Whether a worktree holds anything that would be lost if it disappeared.
|
|
27
|
+
*
|
|
28
|
+
* Uncommitted files are the severe half and are deliberately weighted first in
|
|
29
|
+
* the report: a commit survives in the reflog long after a branch is deleted,
|
|
30
|
+
* while a dirty tree is in no object database at all. Nothing recovers it.
|
|
31
|
+
* @param exposure - Facts gathered about one worktree
|
|
32
|
+
* @returns True when the worktree holds unique work
|
|
33
|
+
*/
|
|
34
|
+
export function holdsWorkAtRisk(exposure) {
|
|
35
|
+
return exposure.dirtyFiles > 0 || exposure.unpushedCommits > 0;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Whether a status line describes a modification to a TRACKED file.
|
|
39
|
+
*
|
|
40
|
+
* Untracked entries are deliberately excluded from the signal. Measured against
|
|
41
|
+
* a real fleet checkout: one worktree reported 1,442 "uncommitted" files, all
|
|
42
|
+
* untracked, overwhelmingly `.watchman-cookie-*` droppings and apply artifacts.
|
|
43
|
+
* Counting those makes every worktree look catastrophic, and a check that cries
|
|
44
|
+
* wolf on ephemera is one nobody reads — which is the failure this check exists
|
|
45
|
+
* to prevent, reproduced inside the check itself.
|
|
46
|
+
*
|
|
47
|
+
* Untracked files are still counted and reported, just not as the trigger. The
|
|
48
|
+
* genuinely at-risk worktree in the incident carried five tracked modifications
|
|
49
|
+
* alongside its one new test file, so keying on tracked changes still catches it.
|
|
50
|
+
* @param line - One `git status --porcelain` line
|
|
51
|
+
* @returns True when the line is a tracked-file change
|
|
52
|
+
*/
|
|
53
|
+
export function isTrackedChange(line) {
|
|
54
|
+
return line !== "" && !line.startsWith("??");
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Order exposures worst-first for an operator reading a truncated list.
|
|
58
|
+
*
|
|
59
|
+
* Dirty trees sort ahead of unpushed commits regardless of size, because the
|
|
60
|
+
* recovery story differs in kind rather than degree.
|
|
61
|
+
* @param left - First exposure
|
|
62
|
+
* @param right - Second exposure
|
|
63
|
+
* @returns Comparator result
|
|
64
|
+
*/
|
|
65
|
+
export function compareExposureSeverity(left, right) {
|
|
66
|
+
if (left.dirtyFiles > 0 !== right.dirtyFiles > 0) {
|
|
67
|
+
return left.dirtyFiles > 0 ? -1 : 1;
|
|
68
|
+
}
|
|
69
|
+
if (left.dirtyFiles !== right.dirtyFiles) {
|
|
70
|
+
return right.dirtyFiles - left.dirtyFiles;
|
|
71
|
+
}
|
|
72
|
+
if (left.unpushedCommits !== right.unpushedCommits) {
|
|
73
|
+
return right.unpushedCommits - left.unpushedCommits;
|
|
74
|
+
}
|
|
75
|
+
return left.path.localeCompare(right.path);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Render one exposure as a line an operator can act on.
|
|
79
|
+
* @param exposure - Facts gathered about one worktree
|
|
80
|
+
* @returns Single-line description
|
|
81
|
+
*/
|
|
82
|
+
export function describeExposure(exposure) {
|
|
83
|
+
const parts = [
|
|
84
|
+
exposure.dirtyFiles > 0 ? `${exposure.dirtyFiles} uncommitted` : "",
|
|
85
|
+
exposure.untrackedFiles > 0 ? `${exposure.untrackedFiles} untracked` : "",
|
|
86
|
+
exposure.unpushedCommits > 0
|
|
87
|
+
? `${exposure.unpushedCommits} unpushed commit${exposure.unpushedCommits === 1 ? "" : "s"}`
|
|
88
|
+
: "",
|
|
89
|
+
exposure.noUpstream ? "no remote branch" : "",
|
|
90
|
+
].filter(part => part !== "");
|
|
91
|
+
const where = exposure.branch ?? "(detached)";
|
|
92
|
+
return `${exposure.path} [${where}] — ${parts.join(", ")}`;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Report worktrees holding commits or edits that exist nowhere else.
|
|
96
|
+
*
|
|
97
|
+
* Distinct from `checkWorktreeHygiene`, which counts worktrees because each one
|
|
98
|
+
* is a full checkout that every file crawler walks past. That check deliberately
|
|
99
|
+
* stops at the count, on the grounds that "the operator is the only one who
|
|
100
|
+
* knows whether an idle-looking checkout still holds work". This check answers
|
|
101
|
+
* exactly that question, so an idle-looking checkout no longer has to be taken
|
|
102
|
+
* on faith.
|
|
103
|
+
*
|
|
104
|
+
* Measured motivation: on 2026-08-17 seven agent sessions in one fleet reached
|
|
105
|
+
* the same ticket in turn, each finding no remote branch and concluding the
|
|
106
|
+
* previous session had abandoned it. Five worktrees held real work at the time,
|
|
107
|
+
* one of them 1,031 uncommitted lines under `/private/tmp`. Every session ran
|
|
108
|
+
* `git ls-remote`, and every session got a true negative that meant the opposite
|
|
109
|
+
* of what it looked like: unpushed work and abandoned work are byte-identical
|
|
110
|
+
* from outside.
|
|
111
|
+
*
|
|
112
|
+
* Enumeration is `git worktree list`, NOT a scan of the worktree roots, and that
|
|
113
|
+
* is load-bearing. The exposed worktrees in that incident lived under
|
|
114
|
+
* `/private/tmp`, which no root scan reaches. A check that only sees the tidy
|
|
115
|
+
* locations would have reported clean while the work at risk sat elsewhere.
|
|
116
|
+
*
|
|
117
|
+
* Read-only and warn-only. It names what is exposed and the one-line repair; it
|
|
118
|
+
* never pushes, commits, or removes anything, because publishing a branch is
|
|
119
|
+
* outward-facing and belongs to the operator.
|
|
120
|
+
* @param targetPath - Project path to inspect
|
|
121
|
+
* @returns Doctor check result
|
|
122
|
+
*/
|
|
123
|
+
export async function checkWorktreeWorkAtRisk(targetPath) {
|
|
124
|
+
const worktrees = await listWorktreePaths(targetPath).catch(() => undefined);
|
|
125
|
+
if (worktrees === undefined) {
|
|
126
|
+
return {
|
|
127
|
+
name: CHECK_NAME,
|
|
128
|
+
status: "warn",
|
|
129
|
+
detail: "Could not enumerate worktrees (`git worktree list` failed), so work " +
|
|
130
|
+
"at risk was NOT assessed. This is unassessed, not clean",
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const gathered = await gatherExposuresInBatches(worktrees);
|
|
134
|
+
const unsorted = gathered
|
|
135
|
+
.flatMap(exposure => (exposure === undefined ? [] : [exposure]))
|
|
136
|
+
.filter(holdsWorkAtRisk);
|
|
137
|
+
const exposed = [...unsorted].sort(compareExposureSeverity);
|
|
138
|
+
if (exposed.length === 0) {
|
|
139
|
+
return {
|
|
140
|
+
name: CHECK_NAME,
|
|
141
|
+
status: "ok",
|
|
142
|
+
detail: `No worktree holds unpushed commits or uncommitted changes (${worktrees.length} inspected)`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const shown = exposed.slice(0, 5).map(describeExposure);
|
|
146
|
+
const remainder = exposed.length > shown.length
|
|
147
|
+
? ` …and ${exposed.length - shown.length} more.`
|
|
148
|
+
: "";
|
|
149
|
+
return {
|
|
150
|
+
name: CHECK_NAME,
|
|
151
|
+
status: "warn",
|
|
152
|
+
detail: `${exposed.length} worktree${exposed.length === 1 ? "" : "s"} hold work ` +
|
|
153
|
+
`that exists nowhere else: ${shown.join("; ")}.${remainder} ` +
|
|
154
|
+
"Uncommitted files are the severe case — a commit survives in the reflog, " +
|
|
155
|
+
"a dirty tree is in no object database at all. Commit with `git add -A` " +
|
|
156
|
+
"(untracked files are not stashed without `-u`), then push the branch. " +
|
|
157
|
+
"Until it is pushed, another agent inspecting this ticket sees no remote " +
|
|
158
|
+
"branch and cannot distinguish this work from abandoned work",
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Gather worktree exposures without spawning git for every worktree at once.
|
|
163
|
+
* @param worktrees - Worktree paths to inspect
|
|
164
|
+
* @param start - Batch start index
|
|
165
|
+
* @returns Gathered exposures in original worktree order
|
|
166
|
+
*/
|
|
167
|
+
async function gatherExposuresInBatches(worktrees, start = 0) {
|
|
168
|
+
if (start >= worktrees.length) {
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
const batch = worktrees.slice(start, start + WORKTREE_INSPECTION_BATCH_SIZE);
|
|
172
|
+
return [
|
|
173
|
+
...(await Promise.all(batch.map(worktree => gatherExposure(worktree)))),
|
|
174
|
+
...(await gatherExposuresInBatches(worktrees, start + WORKTREE_INSPECTION_BATCH_SIZE)),
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* List every worktree path registered for a checkout.
|
|
179
|
+
* @param targetPath - Project path to inspect
|
|
180
|
+
* @returns Absolute worktree paths
|
|
181
|
+
*/
|
|
182
|
+
async function listWorktreePaths(targetPath) {
|
|
183
|
+
const { stdout } = await runGit(["worktree", "list", "--porcelain"], targetPath);
|
|
184
|
+
return stdout
|
|
185
|
+
.split("\n")
|
|
186
|
+
.filter(line => line.startsWith("worktree "))
|
|
187
|
+
.map(line => line.slice("worktree ".length).trim())
|
|
188
|
+
.filter(line => line !== "");
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Gather what one worktree holds, or undefined when it cannot be read.
|
|
192
|
+
*
|
|
193
|
+
* An unreadable worktree returns undefined rather than a zeroed exposure. A
|
|
194
|
+
* zero would read as "holds nothing", which is the false all-clear this whole
|
|
195
|
+
* check exists to prevent.
|
|
196
|
+
* @param worktree - Absolute worktree path
|
|
197
|
+
* @returns Exposure facts, or undefined when unreadable
|
|
198
|
+
*/
|
|
199
|
+
async function gatherExposure(worktree) {
|
|
200
|
+
try {
|
|
201
|
+
const [status, branch] = await Promise.all([
|
|
202
|
+
runGit(["status", "--porcelain"], worktree),
|
|
203
|
+
runGit(["rev-parse", "--abbrev-ref", "HEAD"], worktree),
|
|
204
|
+
]);
|
|
205
|
+
const head = branch.stdout.trim();
|
|
206
|
+
const detached = head === "HEAD";
|
|
207
|
+
const { unpushedCommits, noUpstream } = await countUnpushed(worktree, detached);
|
|
208
|
+
const lines = status.stdout.split("\n").filter(line => line !== "");
|
|
209
|
+
const dirtyFiles = lines.filter(isTrackedChange).length;
|
|
210
|
+
const untrackedFiles = lines.length - dirtyFiles;
|
|
211
|
+
return detached
|
|
212
|
+
? {
|
|
213
|
+
path: worktree,
|
|
214
|
+
unpushedCommits,
|
|
215
|
+
noUpstream,
|
|
216
|
+
dirtyFiles,
|
|
217
|
+
untrackedFiles,
|
|
218
|
+
}
|
|
219
|
+
: {
|
|
220
|
+
path: worktree,
|
|
221
|
+
branch: head,
|
|
222
|
+
unpushedCommits,
|
|
223
|
+
noUpstream,
|
|
224
|
+
dirtyFiles,
|
|
225
|
+
untrackedFiles,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Count commits present locally and on no remote.
|
|
234
|
+
*
|
|
235
|
+
* A branch with no upstream is not assumed to be fully unpushed: it is compared
|
|
236
|
+
* against every remote ref, because a branch can be pushed and then have its
|
|
237
|
+
* upstream cleared. Falling back to "everything since the merge-base with the
|
|
238
|
+
* default branch" would overstate the exposure and train readers to ignore it.
|
|
239
|
+
* @param worktree - Absolute worktree path
|
|
240
|
+
* @param detached - Whether HEAD is detached
|
|
241
|
+
* @returns Unpushed commit count and whether an upstream exists
|
|
242
|
+
*/
|
|
243
|
+
async function countUnpushed(worktree, detached) {
|
|
244
|
+
try {
|
|
245
|
+
const { stdout } = await runGit(["rev-list", "--count", "HEAD", "--not", "--remotes"], worktree);
|
|
246
|
+
const upstream = detached
|
|
247
|
+
? false
|
|
248
|
+
: await runGit(["rev-parse", "--abbrev-ref", "@{u}"], worktree).then(() => true, () => false);
|
|
249
|
+
return {
|
|
250
|
+
unpushedCommits: Number.parseInt(stdout.trim(), 10) || 0,
|
|
251
|
+
noUpstream: detached ? false : !upstream,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
return { unpushedCommits: 0, noUpstream: false };
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=doctor-worktree-work-at-risk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-worktree-work-at-risk.js","sourceRoot":"","sources":["../../src/cli/doctor-worktree-work-at-risk.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAmBnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACjD;AAaD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAyBtB;AA4MD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CAmEvB"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -19,6 +19,7 @@ import { checkRepositoryReadiness } from "./doctor-readiness.js";
|
|
|
19
19
|
import { checkReusableWorkflowRefs } from "./doctor-reusable-workflow-refs.js";
|
|
20
20
|
import { checkWorkerEpoch } from "./doctor-worker-epoch.js";
|
|
21
21
|
import { checkWorktreeHygiene } from "./doctor-worktree-hygiene.js";
|
|
22
|
+
import { checkWorktreeWorkAtRisk } from "./doctor-worktree-work-at-risk.js";
|
|
22
23
|
import { STARTERS } from "./starters.js";
|
|
23
24
|
import { runUpdateCheck } from "./update-check.js";
|
|
24
25
|
const VERSION_CHECK_NAME = "Lisa version current?";
|
|
@@ -285,6 +286,11 @@ export async function runDoctor(targetPath, options, dependencies = {}) {
|
|
|
285
286
|
// load, so an operator debugging a red suite needs the count in front of
|
|
286
287
|
// them (CodySwannGT/lisa#2490).
|
|
287
288
|
await checkWorktreeHygiene(resolvedTarget),
|
|
289
|
+
// Immediately after the count check, and deliberately separate from it.
|
|
290
|
+
// Hygiene answers "how many checkouts is every crawler walking past"; this
|
|
291
|
+
// answers "which of them hold work that exists nowhere else". Retiring a
|
|
292
|
+
// worktree on the first answer without the second is how work is lost.
|
|
293
|
+
await checkWorktreeWorkAtRisk(resolvedTarget),
|
|
288
294
|
await checkStarterHealth(deps, options.offline === true),
|
|
289
295
|
checkWiki(resolvedTarget),
|
|
290
296
|
...(options.readiness === true
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAw0EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAw0EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAsqOjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|
|
@@ -1133,7 +1133,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
1133
1133
|
"typescript/copy-overwrite/.claude/hooks/worktree-create.sh": "8dbddc0297ca574d150b3e669550320bd2df6e592c083317626f53a91f36d349",
|
|
1134
1134
|
"typescript/copy-overwrite/.github/GITHUB_ACTIONS.md": "c6ea804e74b62ee11ec881909fb0d6fe7088e44e9af3d832fad91a7aa5df0d8b",
|
|
1135
1135
|
"typescript/copy-overwrite/.github/dependabot.yml": "73330408894b35567b068dd12dcb2edd0b01235fd63547938c62ca0dbc0485e2",
|
|
1136
|
-
"typescript/copy-overwrite/.lintstagedrc.json": "
|
|
1136
|
+
"typescript/copy-overwrite/.lintstagedrc.json": "60bf2d5e86bf9d72f04b8b14368591f104674ff80046fe8bd82e4174ca1523fd",
|
|
1137
1137
|
"typescript/copy-overwrite/.nvmrc": "0775c6feb7638122e8b68d611cd709bf270f7b5adb5d0d2baa9afab8a6c0fc42",
|
|
1138
1138
|
"typescript/copy-overwrite/.prettierignore": "eb7778d31dc0ee67cdcb7d843c8cce4cc46d96a7faab14f8d1e313b7a62048a3",
|
|
1139
1139
|
"typescript/copy-overwrite/.prettierrc.json": "a20621f79a064486fba53cc0ea3000a2ece3f312ff38495c6a6606a27d2a727c",
|
|
@@ -7067,6 +7067,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7067
7067
|
"src/cli/doctor-worker-epoch.ts": true,
|
|
7068
7068
|
"src/cli/doctor-worker-journey.ts": true,
|
|
7069
7069
|
"src/cli/doctor-worktree-hygiene.ts": true,
|
|
7070
|
+
"src/cli/doctor-worktree-work-at-risk.ts": true,
|
|
7070
7071
|
"src/cli/doctor.ts": true,
|
|
7071
7072
|
"src/cli/environment-cmd.ts": true,
|
|
7072
7073
|
"src/cli/file-upstream-cmd.ts": true,
|
|
@@ -7537,6 +7538,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7537
7538
|
"tests/unit/cli/doctor-worker-epoch.test.ts": true,
|
|
7538
7539
|
"tests/unit/cli/doctor-worker-journey.test.ts": true,
|
|
7539
7540
|
"tests/unit/cli/doctor-worktree-hygiene.test.ts": true,
|
|
7541
|
+
"tests/unit/cli/doctor-worktree-work-at-risk.test.ts": true,
|
|
7540
7542
|
"tests/unit/cli/doctor.test.ts": true,
|
|
7541
7543
|
"tests/unit/cli/file-upstream-contract.test.ts": true,
|
|
7542
7544
|
"tests/unit/cli/gate-commands.test.ts": true,
|
|
@@ -7650,6 +7652,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
|
|
|
7650
7652
|
"tests/unit/config/vitest-typescript.test.ts": true,
|
|
7651
7653
|
"tests/unit/config/work-item-traceability-scope-gate.test.ts": true,
|
|
7652
7654
|
"tests/unit/config/worktree-exclusion-anchoring.test.ts": true,
|
|
7655
|
+
"tests/unit/configs/lintstaged-matcher-ordering.test.ts": true,
|
|
7653
7656
|
"tests/unit/core/bootstrap-environment.test.ts": true,
|
|
7654
7657
|
"tests/unit/core/fs-extra-namespace-callsites.test.ts": true,
|
|
7655
7658
|
"tests/unit/core/fs-extra-namespace-members.test.ts": true,
|