@luckydraw/cumulus 1.0.8 → 1.0.10
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 +16 -0
- package/dist/gateway/gateway-agents-mcp.js +32 -1
- package/dist/gateway/gateway-agents-mcp.js.map +1 -1
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +119 -7
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/static/blex.min.js +0 -1
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/gateway.d.ts +50 -1
- package/dist/lib/gateway.d.ts.map +1 -1
- package/dist/lib/gateway.js +97 -8
- package/dist/lib/gateway.js.map +1 -1
- package/dist/lib/tool-inventory.d.ts.map +1 -1
- package/dist/lib/tool-inventory.js +1 -0
- package/dist/lib/tool-inventory.js.map +1 -1
- package/dist/lib/worktree.d.ts +164 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +348 -0
- package/dist/lib/worktree.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-inventory.js","sourceRoot":"","sources":["../../src/lib/tool-inventory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-inventory.js","sourceRoot":"","sources":["../../src/lib/tool-inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Private git worktrees for co-threads (task 143, phase 4).
|
|
3
|
+
*
|
|
4
|
+
* A co-thread inherits its master's `projectDir` through task 098 prefix
|
|
5
|
+
* fallback, which means every co-thread of a master lands in the SAME checkout.
|
|
6
|
+
* Two turn loops editing one working tree lose each other's writes silently —
|
|
7
|
+
* the hazard task 120 wrote a system-prompt rule about, reproduced by the very
|
|
8
|
+
* feature meant to parallelise work.
|
|
9
|
+
*
|
|
10
|
+
* The fix is one private worktree per co-thread, on its own branch, derived
|
|
11
|
+
* rather than configured.
|
|
12
|
+
*
|
|
13
|
+
* WHY DERIVED AND NOT WRITTEN TO CONFIG
|
|
14
|
+
* A co-thread has no config file of its own, and that absence IS the feature:
|
|
15
|
+
* it is what makes the master's model, effort, contextLimit, persona and
|
|
16
|
+
* projectDir apply for free. Writing `projectDir` for the co-thread would
|
|
17
|
+
* create an exact config and, in the same stroke, cut it off from every other
|
|
18
|
+
* inherited field. Phase 2 hit this same wall with `sharedContentStore` and
|
|
19
|
+
* took the same answer — derive, don't write. Nothing new is persisted about a
|
|
20
|
+
* co-thread anywhere; the master's `coThreads` list remains the single record.
|
|
21
|
+
*
|
|
22
|
+
* This module is a LEAF: it imports only `resolveCoThreadMaster`, so both cwd
|
|
23
|
+
* sites (a thread's own turns, and `run_job`) can call one resolver. Task 113
|
|
24
|
+
* is the recorded case of a field reaching one spawn path of several, and here
|
|
25
|
+
* a miss fails OPEN — nothing errors, the co-thread just shares the checkout
|
|
26
|
+
* and overwrites its siblings silently.
|
|
27
|
+
*/
|
|
28
|
+
/** Override the worktree root (tests; mirrors `setConfigThreadsDir`). */
|
|
29
|
+
export declare function setWorktreeRoot(dir: string): void;
|
|
30
|
+
/** The worktree root currently in effect. */
|
|
31
|
+
export declare function getWorktreeRoot(): string;
|
|
32
|
+
/**
|
|
33
|
+
* Where a co-thread's private checkout lives.
|
|
34
|
+
*
|
|
35
|
+
* Deliberately OUTSIDE the master's checkout. A worktree nested inside it would
|
|
36
|
+
* appear in the master's own `git status`, be walked by its builds, test globs
|
|
37
|
+
* and linters, and be a permanent source of "why is this directory here".
|
|
38
|
+
* `git worktree list` from the master still shows them, which is the visibility
|
|
39
|
+
* that is actually wanted.
|
|
40
|
+
*/
|
|
41
|
+
export declare function worktreePathFor(coThreadName: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* The branch a co-thread works on.
|
|
44
|
+
*
|
|
45
|
+
* Git refuses to check out one branch in two worktrees, so "one branch per
|
|
46
|
+
* co-thread" is enforced by git itself rather than by our bookkeeping.
|
|
47
|
+
*/
|
|
48
|
+
export declare function coThreadBranchFor(coThreadName: string): string;
|
|
49
|
+
/** Is `dir` the working tree of a git repository? */
|
|
50
|
+
export declare function isGitWorkTree(dir: string): Promise<boolean>;
|
|
51
|
+
export type WorktreeSkipReason = 'not-a-co-thread' | 'no-project-dir' | 'not-a-git-repo' | 'no-commits' | 'git-failed';
|
|
52
|
+
export interface WorktreeResolution {
|
|
53
|
+
/** The directory the co-thread should actually work in. */
|
|
54
|
+
cwd: string;
|
|
55
|
+
/** Set when `cwd` is a private worktree rather than the shared checkout. */
|
|
56
|
+
worktree?: {
|
|
57
|
+
master: string;
|
|
58
|
+
branch: string;
|
|
59
|
+
created: boolean;
|
|
60
|
+
};
|
|
61
|
+
/** Set when the private worktree could NOT be used, and why. */
|
|
62
|
+
fellBackTo?: {
|
|
63
|
+
reason: WorktreeSkipReason;
|
|
64
|
+
detail?: string;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Ensure the private worktree for a co-thread exists, returning the directory
|
|
69
|
+
* it should work in.
|
|
70
|
+
*
|
|
71
|
+
* Idempotent, and called at USE as well as at creation. One path rather than
|
|
72
|
+
* two, which buys three things: co-threads created before this shipped get
|
|
73
|
+
* worktrees with no migration step, a worktree deleted by hand repairs itself,
|
|
74
|
+
* and a creation-time failure is not permanent.
|
|
75
|
+
*
|
|
76
|
+
* Degradation is honest rather than fatal: a project that is not a git repo
|
|
77
|
+
* (or a git that fails) falls back to the shared checkout — today's behaviour —
|
|
78
|
+
* and reports why, instead of refusing to run the turn.
|
|
79
|
+
*/
|
|
80
|
+
export declare function ensureCoThreadWorktree(coThreadName: string, masterDir: string | undefined): Promise<WorktreeResolution>;
|
|
81
|
+
/**
|
|
82
|
+
* Resolve the working directory for any thread.
|
|
83
|
+
*
|
|
84
|
+
* Called at BOTH cwd sites. For a non-co-thread this is the identity on
|
|
85
|
+
* `configuredDir`, so every existing thread on the box is unaffected.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resolveThreadCwd(threadName: string, configuredDir: string | undefined): Promise<WorktreeResolution>;
|
|
88
|
+
/**
|
|
89
|
+
* Remove a co-thread's worktree and its branch.
|
|
90
|
+
*
|
|
91
|
+
* `--force` because the worktree is private scratch space that we created: a
|
|
92
|
+
* co-thread being deleted has no other owner whose uncommitted work could be at
|
|
93
|
+
* stake. The branch is only deleted if it merges cleanly into nothing — `-D` is
|
|
94
|
+
* used because an unmerged co-thread branch is exactly the case where the
|
|
95
|
+
* thread is being discarded on purpose.
|
|
96
|
+
*/
|
|
97
|
+
export declare function removeCoThreadWorktree(coThreadName: string, masterDir: string | undefined): Promise<{
|
|
98
|
+
removed: boolean;
|
|
99
|
+
detail?: string;
|
|
100
|
+
}>;
|
|
101
|
+
export interface CoThreadStatus {
|
|
102
|
+
thread: string;
|
|
103
|
+
branch: string;
|
|
104
|
+
worktree: string;
|
|
105
|
+
exists: boolean;
|
|
106
|
+
/** Uncommitted paths in the co-thread's own tree. */
|
|
107
|
+
dirtyFiles: string[];
|
|
108
|
+
/** Commits on the co-thread branch not yet in the master's current branch. */
|
|
109
|
+
aheadBy: number;
|
|
110
|
+
/**
|
|
111
|
+
* Every path this co-thread will bring to the merge: uncommitted edits PLUS
|
|
112
|
+
* paths changed by commits the master does not have yet.
|
|
113
|
+
*
|
|
114
|
+
* `dirtyFiles` alone is the wrong conflict signal — a co-thread that has
|
|
115
|
+
* committed its work has no dirty files and will still collide. This is the
|
|
116
|
+
* input `coThreadOverlaps` intersects.
|
|
117
|
+
*/
|
|
118
|
+
pendingFiles: string[];
|
|
119
|
+
}
|
|
120
|
+
/** One path that more than one co-thread is bringing to the merge. */
|
|
121
|
+
export interface CoThreadOverlap {
|
|
122
|
+
path: string;
|
|
123
|
+
threads: string[];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Paths claimed by two or more co-threads (task 143 phase 5).
|
|
127
|
+
*
|
|
128
|
+
* Phase 4 removed the silent lost write by giving each co-thread its own tree;
|
|
129
|
+
* it did not remove the CONFLICT, it deferred it to merge time. This surfaces
|
|
130
|
+
* the collision while both threads are still working, when redirecting one of
|
|
131
|
+
* them is cheap. Pure over data the listing already computes.
|
|
132
|
+
*/
|
|
133
|
+
export declare function coThreadOverlaps(statuses: CoThreadStatus[]): CoThreadOverlap[];
|
|
134
|
+
/** What a co-thread has done in its worktree, from the master's point of view. */
|
|
135
|
+
export declare function coThreadStatus(coThreadName: string, masterDir: string | undefined): Promise<CoThreadStatus>;
|
|
136
|
+
export interface MergeResult {
|
|
137
|
+
merged: boolean;
|
|
138
|
+
/** Nothing on the branch that the master does not already have. */
|
|
139
|
+
upToDate?: boolean;
|
|
140
|
+
/** Paths git could not merge. The master's tree is restored when this is set. */
|
|
141
|
+
conflicts?: string[];
|
|
142
|
+
/** Uncommitted work found in the worktree and committed before merging. */
|
|
143
|
+
committed?: string[];
|
|
144
|
+
error?: string;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Merge a co-thread's branch into the master's current branch.
|
|
148
|
+
*
|
|
149
|
+
* Three rules, each of which exists because its absence loses work:
|
|
150
|
+
*
|
|
151
|
+
* 1. **Uncommitted work in the worktree is committed first.** Merging the
|
|
152
|
+
* branch while the co-thread's actual edits sit uncommitted beside it is
|
|
153
|
+
* precisely the silent loss this phase exists to prevent.
|
|
154
|
+
* 2. **A dirty master refuses.** Asymmetric with (1) on purpose: the worktree is
|
|
155
|
+
* private scratch space we created, while the master's checkout may hold
|
|
156
|
+
* Karl's own uncommitted work, and no automation should sweep that into a
|
|
157
|
+
* commit it did not ask for.
|
|
158
|
+
* 3. **Conflicts abort and report.** `git merge --abort` restores the master's
|
|
159
|
+
* tree and the conflicted paths come back to the MASTER THREAD as work to
|
|
160
|
+
* direct. Leaving a half-merged tree behind would hand Karl exactly the git
|
|
161
|
+
* chore this phase promised to keep away from him.
|
|
162
|
+
*/
|
|
163
|
+
export declare function mergeCoThread(coThreadName: string, masterDir: string | undefined): Promise<MergeResult>;
|
|
164
|
+
//# sourceMappingURL=worktree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/lib/worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Private git worktrees for co-threads (task 143, phase 4).
|
|
3
|
+
*
|
|
4
|
+
* A co-thread inherits its master's `projectDir` through task 098 prefix
|
|
5
|
+
* fallback, which means every co-thread of a master lands in the SAME checkout.
|
|
6
|
+
* Two turn loops editing one working tree lose each other's writes silently —
|
|
7
|
+
* the hazard task 120 wrote a system-prompt rule about, reproduced by the very
|
|
8
|
+
* feature meant to parallelise work.
|
|
9
|
+
*
|
|
10
|
+
* The fix is one private worktree per co-thread, on its own branch, derived
|
|
11
|
+
* rather than configured.
|
|
12
|
+
*
|
|
13
|
+
* WHY DERIVED AND NOT WRITTEN TO CONFIG
|
|
14
|
+
* A co-thread has no config file of its own, and that absence IS the feature:
|
|
15
|
+
* it is what makes the master's model, effort, contextLimit, persona and
|
|
16
|
+
* projectDir apply for free. Writing `projectDir` for the co-thread would
|
|
17
|
+
* create an exact config and, in the same stroke, cut it off from every other
|
|
18
|
+
* inherited field. Phase 2 hit this same wall with `sharedContentStore` and
|
|
19
|
+
* took the same answer — derive, don't write. Nothing new is persisted about a
|
|
20
|
+
* co-thread anywhere; the master's `coThreads` list remains the single record.
|
|
21
|
+
*
|
|
22
|
+
* This module is a LEAF: it imports only `resolveCoThreadMaster`, so both cwd
|
|
23
|
+
* sites (a thread's own turns, and `run_job`) can call one resolver. Task 113
|
|
24
|
+
* is the recorded case of a field reaching one spawn path of several, and here
|
|
25
|
+
* a miss fails OPEN — nothing errors, the co-thread just shares the checkout
|
|
26
|
+
* and overwrites its siblings silently.
|
|
27
|
+
*/
|
|
28
|
+
import { execFile } from 'child_process';
|
|
29
|
+
import * as fs from 'fs';
|
|
30
|
+
import * as os from 'os';
|
|
31
|
+
import * as path from 'path';
|
|
32
|
+
import { promisify } from 'util';
|
|
33
|
+
import { resolveCoThreadMaster } from './config.js';
|
|
34
|
+
const execFileAsync = promisify(execFile);
|
|
35
|
+
const CUMULUS_DIR = process.env.CUMULUS_DIR || path.join(os.homedir(), '.cumulus');
|
|
36
|
+
let WORKTREE_ROOT = path.join(CUMULUS_DIR, 'worktrees');
|
|
37
|
+
/** Override the worktree root (tests; mirrors `setConfigThreadsDir`). */
|
|
38
|
+
export function setWorktreeRoot(dir) {
|
|
39
|
+
WORKTREE_ROOT = dir;
|
|
40
|
+
}
|
|
41
|
+
/** The worktree root currently in effect. */
|
|
42
|
+
export function getWorktreeRoot() {
|
|
43
|
+
return WORKTREE_ROOT;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Where a co-thread's private checkout lives.
|
|
47
|
+
*
|
|
48
|
+
* Deliberately OUTSIDE the master's checkout. A worktree nested inside it would
|
|
49
|
+
* appear in the master's own `git status`, be walked by its builds, test globs
|
|
50
|
+
* and linters, and be a permanent source of "why is this directory here".
|
|
51
|
+
* `git worktree list` from the master still shows them, which is the visibility
|
|
52
|
+
* that is actually wanted.
|
|
53
|
+
*/
|
|
54
|
+
export function worktreePathFor(coThreadName) {
|
|
55
|
+
return path.join(WORKTREE_ROOT, coThreadName);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The branch a co-thread works on.
|
|
59
|
+
*
|
|
60
|
+
* Git refuses to check out one branch in two worktrees, so "one branch per
|
|
61
|
+
* co-thread" is enforced by git itself rather than by our bookkeeping.
|
|
62
|
+
*/
|
|
63
|
+
export function coThreadBranchFor(coThreadName) {
|
|
64
|
+
return `cothread/${coThreadName}`;
|
|
65
|
+
}
|
|
66
|
+
/** Run a git command. Returns null on failure — callers decide what that means. */
|
|
67
|
+
async function git(args, cwd) {
|
|
68
|
+
try {
|
|
69
|
+
const { stdout } = await execFileAsync('git', args, { cwd, timeout: 60_000 });
|
|
70
|
+
return stdout.trim();
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* `git status --porcelain` with the output NOT trimmed.
|
|
78
|
+
*
|
|
79
|
+
* Porcelain v1 is a fixed two-column status followed by a space, and a
|
|
80
|
+
* tracked-but-unstaged file's first column is a SPACE (` M README.md`). Trimming
|
|
81
|
+
* eats it, and every subsequent offset is off by one — which reported
|
|
82
|
+
* `EADME.md` to the master thread. Found by driving a real merge; the unit test
|
|
83
|
+
* missed it because an untracked file (`?? wip.txt`) starts with a non-space.
|
|
84
|
+
*/
|
|
85
|
+
async function porcelainPaths(cwd) {
|
|
86
|
+
try {
|
|
87
|
+
const { stdout } = await execFileAsync('git', ['status', '--porcelain'], {
|
|
88
|
+
cwd,
|
|
89
|
+
timeout: 60_000,
|
|
90
|
+
});
|
|
91
|
+
return stdout
|
|
92
|
+
.split('\n')
|
|
93
|
+
.filter(line => line.length > 3)
|
|
94
|
+
.map(line => line.slice(3).trim())
|
|
95
|
+
.filter(Boolean);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** Run a git command, keeping the failure detail. */
|
|
102
|
+
async function gitResult(args, cwd) {
|
|
103
|
+
try {
|
|
104
|
+
const { stdout, stderr } = await execFileAsync('git', args, { cwd, timeout: 120_000 });
|
|
105
|
+
return { ok: true, stdout: stdout.trim(), stderr: stderr.trim() };
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
const e = err;
|
|
109
|
+
return {
|
|
110
|
+
ok: false,
|
|
111
|
+
stdout: (e.stdout ?? '').trim(),
|
|
112
|
+
stderr: (e.stderr ?? e.message ?? '').trim(),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Is `dir` the working tree of a git repository? */
|
|
117
|
+
export async function isGitWorkTree(dir) {
|
|
118
|
+
if (!dir || !fs.existsSync(dir))
|
|
119
|
+
return false;
|
|
120
|
+
return (await git(['rev-parse', '--is-inside-work-tree'], dir)) === 'true';
|
|
121
|
+
}
|
|
122
|
+
/** Does this repo have at least one commit? A worktree cannot branch from nothing. */
|
|
123
|
+
async function hasCommits(dir) {
|
|
124
|
+
return (await git(['rev-parse', '--verify', 'HEAD'], dir)) !== null;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Ensure the private worktree for a co-thread exists, returning the directory
|
|
128
|
+
* it should work in.
|
|
129
|
+
*
|
|
130
|
+
* Idempotent, and called at USE as well as at creation. One path rather than
|
|
131
|
+
* two, which buys three things: co-threads created before this shipped get
|
|
132
|
+
* worktrees with no migration step, a worktree deleted by hand repairs itself,
|
|
133
|
+
* and a creation-time failure is not permanent.
|
|
134
|
+
*
|
|
135
|
+
* Degradation is honest rather than fatal: a project that is not a git repo
|
|
136
|
+
* (or a git that fails) falls back to the shared checkout — today's behaviour —
|
|
137
|
+
* and reports why, instead of refusing to run the turn.
|
|
138
|
+
*/
|
|
139
|
+
export async function ensureCoThreadWorktree(coThreadName, masterDir) {
|
|
140
|
+
const master = resolveCoThreadMaster(coThreadName);
|
|
141
|
+
if (!master) {
|
|
142
|
+
return { cwd: masterDir ?? '', fellBackTo: { reason: 'not-a-co-thread' } };
|
|
143
|
+
}
|
|
144
|
+
const shared = masterDir ?? '';
|
|
145
|
+
if (!masterDir) {
|
|
146
|
+
return { cwd: shared, fellBackTo: { reason: 'no-project-dir' } };
|
|
147
|
+
}
|
|
148
|
+
if (!(await isGitWorkTree(masterDir))) {
|
|
149
|
+
return { cwd: shared, fellBackTo: { reason: 'not-a-git-repo' } };
|
|
150
|
+
}
|
|
151
|
+
if (!(await hasCommits(masterDir))) {
|
|
152
|
+
return { cwd: shared, fellBackTo: { reason: 'no-commits' } };
|
|
153
|
+
}
|
|
154
|
+
const target = worktreePathFor(coThreadName);
|
|
155
|
+
const branch = coThreadBranchFor(coThreadName);
|
|
156
|
+
// Already there and healthy: the common case, one cheap check.
|
|
157
|
+
if (fs.existsSync(path.join(target, '.git'))) {
|
|
158
|
+
return { cwd: target, worktree: { master, branch, created: false } };
|
|
159
|
+
}
|
|
160
|
+
fs.mkdirSync(WORKTREE_ROOT, { recursive: true });
|
|
161
|
+
// A registration left behind by a hand-deleted directory would make `add`
|
|
162
|
+
// fail with "already registered"; pruning first makes the repair path work.
|
|
163
|
+
await git(['worktree', 'prune'], masterDir);
|
|
164
|
+
const branchExists = (await git(['rev-parse', '--verify', `refs/heads/${branch}`], masterDir)) !== null;
|
|
165
|
+
const args = branchExists
|
|
166
|
+
? ['worktree', 'add', target, branch]
|
|
167
|
+
: ['worktree', 'add', '-b', branch, target];
|
|
168
|
+
const result = await gitResult(args, masterDir);
|
|
169
|
+
if (!result.ok) {
|
|
170
|
+
return {
|
|
171
|
+
cwd: shared,
|
|
172
|
+
fellBackTo: { reason: 'git-failed', detail: result.stderr || result.stdout },
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
return { cwd: target, worktree: { master, branch, created: true } };
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Resolve the working directory for any thread.
|
|
179
|
+
*
|
|
180
|
+
* Called at BOTH cwd sites. For a non-co-thread this is the identity on
|
|
181
|
+
* `configuredDir`, so every existing thread on the box is unaffected.
|
|
182
|
+
*/
|
|
183
|
+
export async function resolveThreadCwd(threadName, configuredDir) {
|
|
184
|
+
if (!resolveCoThreadMaster(threadName)) {
|
|
185
|
+
return { cwd: configuredDir ?? '' };
|
|
186
|
+
}
|
|
187
|
+
return ensureCoThreadWorktree(threadName, configuredDir);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Remove a co-thread's worktree and its branch.
|
|
191
|
+
*
|
|
192
|
+
* `--force` because the worktree is private scratch space that we created: a
|
|
193
|
+
* co-thread being deleted has no other owner whose uncommitted work could be at
|
|
194
|
+
* stake. The branch is only deleted if it merges cleanly into nothing — `-D` is
|
|
195
|
+
* used because an unmerged co-thread branch is exactly the case where the
|
|
196
|
+
* thread is being discarded on purpose.
|
|
197
|
+
*/
|
|
198
|
+
export async function removeCoThreadWorktree(coThreadName, masterDir) {
|
|
199
|
+
const target = worktreePathFor(coThreadName);
|
|
200
|
+
if (!fs.existsSync(target))
|
|
201
|
+
return { removed: false, detail: 'no worktree' };
|
|
202
|
+
if (!masterDir || !(await isGitWorkTree(masterDir))) {
|
|
203
|
+
// No repo to deregister from; drop the directory so it does not linger.
|
|
204
|
+
fs.rmSync(target, { recursive: true, force: true });
|
|
205
|
+
return { removed: true, detail: 'directory removed without git' };
|
|
206
|
+
}
|
|
207
|
+
const branch = coThreadBranchFor(coThreadName);
|
|
208
|
+
const result = await gitResult(['worktree', 'remove', '--force', target], masterDir);
|
|
209
|
+
if (!result.ok) {
|
|
210
|
+
fs.rmSync(target, { recursive: true, force: true });
|
|
211
|
+
await git(['worktree', 'prune'], masterDir);
|
|
212
|
+
}
|
|
213
|
+
await git(['branch', '-D', branch], masterDir);
|
|
214
|
+
return { removed: true };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Paths claimed by two or more co-threads (task 143 phase 5).
|
|
218
|
+
*
|
|
219
|
+
* Phase 4 removed the silent lost write by giving each co-thread its own tree;
|
|
220
|
+
* it did not remove the CONFLICT, it deferred it to merge time. This surfaces
|
|
221
|
+
* the collision while both threads are still working, when redirecting one of
|
|
222
|
+
* them is cheap. Pure over data the listing already computes.
|
|
223
|
+
*/
|
|
224
|
+
export function coThreadOverlaps(statuses) {
|
|
225
|
+
const byPath = new Map();
|
|
226
|
+
for (const status of statuses) {
|
|
227
|
+
for (const file of status.pendingFiles) {
|
|
228
|
+
const owners = byPath.get(file) ?? [];
|
|
229
|
+
if (!owners.includes(status.thread))
|
|
230
|
+
owners.push(status.thread);
|
|
231
|
+
byPath.set(file, owners);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return [...byPath.entries()]
|
|
235
|
+
.filter(([, threads]) => threads.length > 1)
|
|
236
|
+
.map(([path, threads]) => ({ path, threads }))
|
|
237
|
+
.sort((a, b) => a.path.localeCompare(b.path));
|
|
238
|
+
}
|
|
239
|
+
/** What a co-thread has done in its worktree, from the master's point of view. */
|
|
240
|
+
export async function coThreadStatus(coThreadName, masterDir) {
|
|
241
|
+
const branch = coThreadBranchFor(coThreadName);
|
|
242
|
+
const worktree = worktreePathFor(coThreadName);
|
|
243
|
+
const base = {
|
|
244
|
+
thread: coThreadName,
|
|
245
|
+
branch,
|
|
246
|
+
worktree,
|
|
247
|
+
exists: fs.existsSync(path.join(worktree, '.git')),
|
|
248
|
+
dirtyFiles: [],
|
|
249
|
+
aheadBy: 0,
|
|
250
|
+
pendingFiles: [],
|
|
251
|
+
};
|
|
252
|
+
if (!base.exists || !masterDir)
|
|
253
|
+
return base;
|
|
254
|
+
base.dirtyFiles = await porcelainPaths(worktree);
|
|
255
|
+
const count = await git(['rev-list', '--count', `HEAD..${branch}`], masterDir);
|
|
256
|
+
base.aheadBy = count ? Number(count) || 0 : 0;
|
|
257
|
+
// Three-dot: what the branch changed since it diverged, which is what a merge
|
|
258
|
+
// would actually apply. Two-dot would also list the master's own moves.
|
|
259
|
+
const committed = await git(['diff', '--name-only', `HEAD...${branch}`], masterDir);
|
|
260
|
+
const committedFiles = committed ? committed.split('\n').filter(Boolean) : [];
|
|
261
|
+
base.pendingFiles = [...new Set([...base.dirtyFiles, ...committedFiles])].sort();
|
|
262
|
+
return base;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Commit whatever is uncommitted in a worktree.
|
|
266
|
+
*
|
|
267
|
+
* Supplies an identity ONLY when the repo has none, so a configured
|
|
268
|
+
* `user.name`/`user.email` is never overridden.
|
|
269
|
+
*/
|
|
270
|
+
async function commitAll(worktree, message) {
|
|
271
|
+
const add = await gitResult(['add', '-A'], worktree);
|
|
272
|
+
if (!add.ok)
|
|
273
|
+
return false;
|
|
274
|
+
const haveName = (await git(['config', 'user.name'], worktree)) !== null;
|
|
275
|
+
const haveEmail = (await git(['config', 'user.email'], worktree)) !== null;
|
|
276
|
+
const identity = [
|
|
277
|
+
...(haveName ? [] : ['-c', 'user.name=cumulus']),
|
|
278
|
+
...(haveEmail ? [] : ['-c', 'user.email=cumulus@localhost']),
|
|
279
|
+
];
|
|
280
|
+
const commit = await gitResult([...identity, 'commit', '-m', message], worktree);
|
|
281
|
+
return commit.ok;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Merge a co-thread's branch into the master's current branch.
|
|
285
|
+
*
|
|
286
|
+
* Three rules, each of which exists because its absence loses work:
|
|
287
|
+
*
|
|
288
|
+
* 1. **Uncommitted work in the worktree is committed first.** Merging the
|
|
289
|
+
* branch while the co-thread's actual edits sit uncommitted beside it is
|
|
290
|
+
* precisely the silent loss this phase exists to prevent.
|
|
291
|
+
* 2. **A dirty master refuses.** Asymmetric with (1) on purpose: the worktree is
|
|
292
|
+
* private scratch space we created, while the master's checkout may hold
|
|
293
|
+
* Karl's own uncommitted work, and no automation should sweep that into a
|
|
294
|
+
* commit it did not ask for.
|
|
295
|
+
* 3. **Conflicts abort and report.** `git merge --abort` restores the master's
|
|
296
|
+
* tree and the conflicted paths come back to the MASTER THREAD as work to
|
|
297
|
+
* direct. Leaving a half-merged tree behind would hand Karl exactly the git
|
|
298
|
+
* chore this phase promised to keep away from him.
|
|
299
|
+
*/
|
|
300
|
+
export async function mergeCoThread(coThreadName, masterDir) {
|
|
301
|
+
if (!masterDir || !(await isGitWorkTree(masterDir))) {
|
|
302
|
+
return { merged: false, error: 'The master thread has no git repository to merge into.' };
|
|
303
|
+
}
|
|
304
|
+
const branch = coThreadBranchFor(coThreadName);
|
|
305
|
+
const worktree = worktreePathFor(coThreadName);
|
|
306
|
+
if ((await git(['rev-parse', '--verify', `refs/heads/${branch}`], masterDir)) === null) {
|
|
307
|
+
return { merged: false, error: `No branch "${branch}" — this co-thread has no private tree.` };
|
|
308
|
+
}
|
|
309
|
+
// Rule 2 — check before touching anything.
|
|
310
|
+
const masterDirty = await git(['status', '--porcelain'], masterDir);
|
|
311
|
+
if (masterDirty) {
|
|
312
|
+
return {
|
|
313
|
+
merged: false,
|
|
314
|
+
error: 'The master working tree has uncommitted changes. Commit or stash them first — merging ' +
|
|
315
|
+
"would mix them into the co-thread's work.",
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
// Rule 1 — the co-thread's uncommitted edits are part of what is being merged.
|
|
319
|
+
let committed;
|
|
320
|
+
if (fs.existsSync(path.join(worktree, '.git'))) {
|
|
321
|
+
const status = await coThreadStatus(coThreadName, masterDir);
|
|
322
|
+
if (status.dirtyFiles.length > 0) {
|
|
323
|
+
const ok = await commitAll(worktree, `wip(${coThreadName}): work in progress before merge`);
|
|
324
|
+
if (!ok) {
|
|
325
|
+
return {
|
|
326
|
+
merged: false,
|
|
327
|
+
error: `Could not commit uncommitted work in ${worktree} — refusing to merge a partial branch.`,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
committed = status.dirtyFiles;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
const ahead = await git(['rev-list', '--count', `HEAD..${branch}`], masterDir);
|
|
334
|
+
if (ahead === '0')
|
|
335
|
+
return { merged: false, upToDate: true, committed };
|
|
336
|
+
const merge = await gitResult(['merge', '--no-ff', '-m', `merge(${coThreadName}): fold co-thread work into master`, branch], masterDir);
|
|
337
|
+
if (merge.ok)
|
|
338
|
+
return { merged: true, committed };
|
|
339
|
+
// Rule 3 — collect the conflicts, then put the tree back the way we found it.
|
|
340
|
+
const conflicted = await git(['diff', '--name-only', '--diff-filter=U'], masterDir);
|
|
341
|
+
const conflicts = (conflicted ?? '').split('\n').filter(Boolean);
|
|
342
|
+
await git(['merge', '--abort'], masterDir);
|
|
343
|
+
if (conflicts.length === 0) {
|
|
344
|
+
return { merged: false, committed, error: merge.stderr || merge.stdout || 'merge failed' };
|
|
345
|
+
}
|
|
346
|
+
return { merged: false, committed, conflicts };
|
|
347
|
+
}
|
|
348
|
+
//# sourceMappingURL=worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/lib/worktree.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luckydraw/cumulus",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "RLM-based CLI chat wrapper for Claude with external history context management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"dependencies": {
|
|
98
98
|
"@anthropic-ai/sdk": "^0.82.0",
|
|
99
99
|
"@huggingface/transformers": "^3.8.1",
|
|
100
|
-
"@luckydraw/blex": "^0.1.
|
|
100
|
+
"@luckydraw/blex": "^0.1.17",
|
|
101
101
|
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
102
102
|
"@slack/bolt": "^4.6.0",
|
|
103
103
|
"commander": "^14.0.2",
|