@luckydraw/cumulus 1.0.7 → 1.0.9

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/gateway/adapters/webchat.d.ts.map +1 -1
  3. package/dist/gateway/adapters/webchat.js +173 -2
  4. package/dist/gateway/adapters/webchat.js.map +1 -1
  5. package/dist/gateway/gateway-agents-mcp.js +81 -0
  6. package/dist/gateway/gateway-agents-mcp.js.map +1 -1
  7. package/dist/gateway/server.d.ts +65 -0
  8. package/dist/gateway/server.d.ts.map +1 -1
  9. package/dist/gateway/server.js +335 -15
  10. package/dist/gateway/server.js.map +1 -1
  11. package/dist/gateway/static/widget.js +581 -66
  12. package/dist/lib/config.d.ts +48 -0
  13. package/dist/lib/config.d.ts.map +1 -1
  14. package/dist/lib/config.js +43 -0
  15. package/dist/lib/config.js.map +1 -1
  16. package/dist/lib/content-store.d.ts +64 -1
  17. package/dist/lib/content-store.d.ts.map +1 -1
  18. package/dist/lib/content-store.js +161 -48
  19. package/dist/lib/content-store.js.map +1 -1
  20. package/dist/lib/embeddings.d.ts +11 -1
  21. package/dist/lib/embeddings.d.ts.map +1 -1
  22. package/dist/lib/embeddings.js +301 -40
  23. package/dist/lib/embeddings.js.map +1 -1
  24. package/dist/lib/gateway.d.ts +67 -1
  25. package/dist/lib/gateway.d.ts.map +1 -1
  26. package/dist/lib/gateway.js +133 -12
  27. package/dist/lib/gateway.js.map +1 -1
  28. package/dist/lib/retriever.d.ts +34 -2
  29. package/dist/lib/retriever.d.ts.map +1 -1
  30. package/dist/lib/retriever.js +9 -2
  31. package/dist/lib/retriever.js.map +1 -1
  32. package/dist/lib/tool-inventory.d.ts.map +1 -1
  33. package/dist/lib/tool-inventory.js +3 -0
  34. package/dist/lib/tool-inventory.js.map +1 -1
  35. package/dist/lib/worktree.d.ts +164 -0
  36. package/dist/lib/worktree.d.ts.map +1 -0
  37. package/dist/lib/worktree.js +348 -0
  38. package/dist/lib/worktree.js.map +1 -0
  39. package/dist/mcp/index.js +7 -1
  40. package/dist/mcp/index.js.map +1 -1
  41. package/dist/mcp/server.d.ts +4 -1
  42. package/dist/mcp/server.d.ts.map +1 -1
  43. package/dist/mcp/server.js +4 -2
  44. package/dist/mcp/server.js.map +1 -1
  45. package/dist/mcp/tool-handler.d.ts.map +1 -1
  46. package/dist/mcp/tool-handler.js +11 -0
  47. package/dist/mcp/tool-handler.js.map +1 -1
  48. package/package.json +1 -1
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAeH,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE9D;AAuDD,qDAAqD;AACrD,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjE;AAOD,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAChE,gEAAgE;IAChE,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,kBAAkB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA4C7B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAK7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBhD;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,eAAe,EAAE,CAa9E;AAED,kFAAkF;AAClF,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,cAAc,CAAC,CAyBzB;AAqBD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,WAAW,CAAC,CAuDtB"}
@@ -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/dist/mcp/index.js CHANGED
@@ -7,12 +7,18 @@ const sessionsPath = process.env['CUMULUS_SESSIONS_PATH'];
7
7
  const sessionId = process.env['CUMULUS_SESSION_ID'];
8
8
  // Task 136 — read_file root confinement, path.delimiter-separated. Absent = unrestricted.
9
9
  const readFileRoots = process.env['CUMULUS_READ_FILE_ROOTS']?.split(path.delimiter).filter(Boolean);
10
+ // Task 143 — co-thread attribution: who is writing, and is the store shared.
11
+ const threadName = process.env['CUMULUS_THREAD_NAME'];
12
+ const contentShared = process.env['CUMULUS_CONTENT_SHARED'] === '1';
10
13
  if (!threadPath) {
11
14
  console.error('Error: CUMULUS_THREAD_PATH environment variable is required');
12
15
  console.error('Usage: CUMULUS_THREAD_PATH=/path/to/thread.jsonl node dist/mcp/index.js');
13
16
  process.exit(1);
14
17
  }
15
- runServer(threadPath, contentPath, sessionsPath, sessionId, readFileRoots).catch(error => {
18
+ runServer(threadPath, contentPath, sessionsPath, sessionId, readFileRoots, {
19
+ threadName,
20
+ shared: contentShared,
21
+ }).catch(error => {
16
22
  console.error('MCP server error:', error);
17
23
  process.exit(1);
18
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACpD,0FAA0F;AAC1F,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEpG,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;IACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACvF,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACpD,0FAA0F;AAC1F,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpG,6EAA6E;AAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACtD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC;AAEpE,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;IACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE;IACzE,UAAU;IACV,MAAM,EAAE,aAAa;CACtB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -2,5 +2,8 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { ContentStore } from '../lib/content-store.js';
3
3
  import { HistoryStore } from '../lib/history.js';
4
4
  export declare function createMcpServer(historyStore: HistoryStore, contentStore?: ContentStore, sessionsPath?: string, currentSessionId?: string, readFileRoots?: string[]): Server;
5
- export declare function runServer(threadPath: string, contentPath?: string, sessionsPath?: string, sessionId?: string, readFileRoots?: string[]): Promise<void>;
5
+ export declare function runServer(threadPath: string, contentPath?: string, sessionsPath?: string, sessionId?: string, readFileRoots?: string[], contentStoreOptions?: {
6
+ threadName?: string;
7
+ shared?: boolean;
8
+ }): Promise<void>;
6
9
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,YAAY,CAAC,EAAE,YAAY,EAC3B,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,EACzB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,CAwBR;AAED,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAef"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,YAAY,CAAC,EAAE,YAAY,EAC3B,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,EACzB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,CAwBR;AAED,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,mBAAmB,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -22,9 +22,11 @@ export function createMcpServer(historyStore, contentStore, sessionsPath, curren
22
22
  });
23
23
  return server;
24
24
  }
25
- export async function runServer(threadPath, contentPath, sessionsPath, sessionId, readFileRoots) {
25
+ export async function runServer(threadPath, contentPath, sessionsPath, sessionId, readFileRoots, contentStoreOptions) {
26
26
  const historyStore = new HistoryStore(threadPath);
27
- const contentStore = contentPath ? new ContentStore(contentPath) : undefined;
27
+ // Task 143: a co-thread's tools write into the SHARED store and must stamp
28
+ // their own thread name, or the store cannot say who put anything there.
29
+ const contentStore = contentPath ? new ContentStore(contentPath, contentStoreOptions) : undefined;
28
30
  const server = createMcpServer(historyStore, contentStore, sessionsPath, sessionId, readFileRoots);
29
31
  const transport = new StdioServerTransport();
30
32
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAEpF,MAAM,UAAU,eAAe,CAC7B,YAA0B,EAC1B,YAA2B,EAC3B,YAAqB,EACrB,gBAAyB,EACzB,aAAwB;IAExB,MAAM,GAAG,GAAgB;QACvB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,aAAa;KACd,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC7C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,kBAAkB,EAAE;KAC5B,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QAC9D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,OAAO,cAAc,CAAC,IAAI,EAAE,IAA2C,EAAE,GAAG,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAAkB,EAClB,WAAoB,EACpB,YAAqB,EACrB,SAAkB,EAClB,aAAwB;IAExB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,MAAM,GAAG,eAAe,CAC5B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,aAAa,CACd,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QAChC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAEpF,MAAM,UAAU,eAAe,CAC7B,YAA0B,EAC1B,YAA2B,EAC3B,YAAqB,EACrB,gBAAyB,EACzB,aAAwB;IAExB,MAAM,GAAG,GAAgB;QACvB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,aAAa;KACd,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC7C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,kBAAkB,EAAE;KAC5B,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QAC9D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,OAAO,cAAc,CAAC,IAAI,EAAE,IAA2C,EAAE,GAAG,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAAkB,EAClB,WAAoB,EACpB,YAAqB,EACrB,SAAkB,EAClB,aAAwB,EACxB,mBAA+D;IAE/D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAClD,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,MAAM,MAAM,GAAG,eAAe,CAC5B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,aAAa,CACd,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QAChC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}