@luckydraw/cumulus 1.0.36 → 1.0.37

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.
@@ -8,6 +8,7 @@ import * as fs from 'fs';
8
8
  import * as os from 'os';
9
9
  import * as path from 'path';
10
10
  import { estimateTokens } from './context-budget.js';
11
+ import { projectTasksFile } from './tasks-file.js';
11
12
  // Mutable so tests can redirect both the global config and the threads dir to
12
13
  // a sandbox without polluting ~/.cumulus. The gateway sets these once on boot;
13
14
  // production callers never invoke the setters.
@@ -370,8 +371,16 @@ export async function readAlwaysIncludeFiles(config, cwd) {
370
371
  }
371
372
  else {
372
373
  const content = fs.readFileSync(resolvedPath, 'utf-8');
373
- fileInfo.content = content;
374
- fileInfo.tokens = estimateTokens(content);
374
+ // Task 176: a schema `Tasks.md` is projected down to the task in hand,
375
+ // the titles of what follows it, and the format instructions — finished
376
+ // work never reaches the prompt. Returns null for every other file, so
377
+ // an un-migrated Tasks.md in any other project is passed through
378
+ // byte-identically. One seam, so gateway/TUI/agentic cannot disagree.
379
+ const projected = projectTasksFile(content);
380
+ if (projected !== null)
381
+ fileInfo.projected = true;
382
+ fileInfo.content = projected ?? content;
383
+ fileInfo.tokens = estimateTokens(fileInfo.content);
375
384
  totalTokens += fileInfo.tokens;
376
385
  }
377
386
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Task 176 — `Tasks.md` as a machine format.
3
+ *
4
+ * The file is managed by the gateway and by agents writing through the schema
5
+ * prescribed inside the file itself; humans read it, they do not hand-edit it.
6
+ *
7
+ * Structure (in order):
8
+ *
9
+ * # <title>
10
+ * <!-- cumulus:tasks v1 -->
11
+ *
12
+ * ## Format ← verbatim instructions. NOT parsed. ALWAYS sent to the model.
13
+ * ## Queue ← the build order, top to bottom
14
+ * ## Done ← finished work. Parsed, never sent to the model.
15
+ *
16
+ * A row is `- [status] <id> · <title>`, indented two spaces per depth level.
17
+ * A row indented under another is BLOCKED BY the nearest row above it one
18
+ * level shallower, so a blocker is always above what it blocks and the first
19
+ * row of the queue can never be blocked.
20
+ *
21
+ * Fields are indented `key value` lines under their row. Exactly five keys
22
+ * parse; anything else in a parsed section is a hard error rather than a
23
+ * silent skip, because a silent skip is how a drag-reorder loses data.
24
+ */
25
+ import { TASKS_FORMAT_SECTION } from './tasks-format.js';
26
+ export { TASKS_FORMAT_SECTION };
27
+ /** Presence of this line is what makes a `Tasks.md` a schema file. */
28
+ export declare const TASKS_FILE_MARKER = "<!-- cumulus:tasks v1 -->";
29
+ /** Field keys the parser accepts. Nothing else parses. */
30
+ export declare const TASK_FIELD_KEYS: readonly ["doc", "phase", "note", "dep", "done"];
31
+ export type TaskFieldKey = (typeof TASK_FIELD_KEYS)[number];
32
+ export interface TaskRow {
33
+ /** Digits, unique across the whole file. */
34
+ id: string;
35
+ /** Raw contents of the status box: ' ', '◔', '◑', '◕', '✅', '❌'. */
36
+ status: string;
37
+ title: string;
38
+ /** 0 = not blocked. n = blocked by the nearest preceding row of depth n-1. */
39
+ depth: number;
40
+ doc?: string;
41
+ phase?: string;
42
+ notes: string[];
43
+ /** Completion date. Only meaningful in `## Done`. */
44
+ done?: string;
45
+ /** True when this row's blocked-by edge was proposed, not confirmed. */
46
+ depProposed: boolean;
47
+ }
48
+ export interface TasksParseError {
49
+ /** 1-indexed line number in the source file. */
50
+ line: number;
51
+ text: string;
52
+ reason: string;
53
+ }
54
+ export interface TasksFile {
55
+ /** Lines before the first `##` heading, including the `#` title and the marker. */
56
+ preamble: string[];
57
+ /** The `## Format` section, verbatim and including its heading. Never parsed. */
58
+ format: string[];
59
+ queue: TaskRow[];
60
+ done: TaskRow[];
61
+ errors: TasksParseError[];
62
+ }
63
+ /** Thrown by the mutation helpers when a requested change would break the schema. */
64
+ export declare class TasksFileError extends Error {
65
+ }
66
+ /**
67
+ * A new project's `Tasks.md`. Scaffolding emits the schema rather than a bare
68
+ * title, so a freshly created thread's drawer works on its first open — a
69
+ * scaffold that produced the old free-form shape would leave two formats alive.
70
+ */
71
+ export declare function emptyTasksFile(projectName: string): string;
72
+ export declare function hasTasksMarker(content: string): boolean;
73
+ /**
74
+ * Parse a schema `Tasks.md`. Always returns a file — errors are collected, not
75
+ * thrown, so the drawer can show a broken line instead of an empty panel. Writes
76
+ * are refused while `errors` is non-empty (see {@link assertWritable}).
77
+ */
78
+ export declare function parseTasksFile(content: string): TasksFile;
79
+ /** Round-trips a parsed file. Rewrites field order and spacing to canonical form. */
80
+ export declare function serializeTasksFile(file: TasksFile): string;
81
+ /** Last index of the subtree rooted at `i` (every following row deeper than it). */
82
+ export declare function subtreeEnd(rows: TaskRow[], i: number): number;
83
+ /** Index of the row that blocks `i`, or -1 when `i` is not blocked. */
84
+ export declare function parentIndexOf(rows: TaskRow[], i: number): number;
85
+ /** Index of the depth-0 row whose cluster contains `i`. */
86
+ export declare function rootIndexOf(rows: TaskRow[], i: number): number;
87
+ /**
88
+ * Move `dragId` relative to `targetId`. Three cases, one rule — the cluster is
89
+ * the unit of movement, and a drag can never separate a task from its blocker:
90
+ *
91
+ * - same parent → sibling reorder, dragged row's subtree travels
92
+ * - different cluster → the dragged row's WHOLE cluster moves, blocker first
93
+ * - same cluster, other parent → illegal, nothing is written
94
+ */
95
+ export declare function moveTask(rows: TaskRow[], dragId: string, targetId: string, position: 'before' | 'after'): TaskRow[];
96
+ /**
97
+ * Accept or reject a proposed dependency edge. Accepting keeps the nesting and
98
+ * drops the marker; rejecting outdents the row and its subtree to depth 0 and
99
+ * lands them after the cluster they just left.
100
+ */
101
+ export declare function resolveProposedDep(rows: TaskRow[], id: string, accept: boolean): TaskRow[];
102
+ /** Structural invariants every write must preserve. */
103
+ export declare function assertValidQueue(rows: TaskRow[]): void;
104
+ /** Refuses writes to a file the parser did not fully understand. */
105
+ export declare function assertWritable(file: TasksFile): void;
106
+ /**
107
+ * What the model sees. The `## Format` section is verbatim (it is the
108
+ * instructions for writing the file back), the task in hand is in full, the
109
+ * rest of the queue is title lines, and `## Done` is one summary line.
110
+ *
111
+ * Returns null when `content` is not a schema tasks file, so an un-migrated
112
+ * `Tasks.md` in any other project is passed through untouched.
113
+ */
114
+ export declare function projectTasksFile(content: string): string | null;
115
+ //# sourceMappingURL=tasks-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-file.d.ts","sourceRoot":"","sources":["../../src/lib/tasks-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAE7D,0DAA0D;AAC1D,eAAO,MAAM,eAAe,kDAAmD,CAAC;AAChF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAS5D,MAAM,WAAW,OAAO;IACtB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iFAAiF;IACjF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,qFAAqF;AACrF,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAE5C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAa1D;AAMD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AA8FD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAoDzD;AAsDD,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAkB1D;AAYD,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9D;AAUD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAC3B,OAAO,EAAE,CAuCX;AAOD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,CA6B1F;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAUtD;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAQpD;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuC/D"}
@@ -0,0 +1,433 @@
1
+ /**
2
+ * Task 176 — `Tasks.md` as a machine format.
3
+ *
4
+ * The file is managed by the gateway and by agents writing through the schema
5
+ * prescribed inside the file itself; humans read it, they do not hand-edit it.
6
+ *
7
+ * Structure (in order):
8
+ *
9
+ * # <title>
10
+ * <!-- cumulus:tasks v1 -->
11
+ *
12
+ * ## Format ← verbatim instructions. NOT parsed. ALWAYS sent to the model.
13
+ * ## Queue ← the build order, top to bottom
14
+ * ## Done ← finished work. Parsed, never sent to the model.
15
+ *
16
+ * A row is `- [status] <id> · <title>`, indented two spaces per depth level.
17
+ * A row indented under another is BLOCKED BY the nearest row above it one
18
+ * level shallower, so a blocker is always above what it blocks and the first
19
+ * row of the queue can never be blocked.
20
+ *
21
+ * Fields are indented `key value` lines under their row. Exactly five keys
22
+ * parse; anything else in a parsed section is a hard error rather than a
23
+ * silent skip, because a silent skip is how a drag-reorder loses data.
24
+ */
25
+ import { TASKS_FORMAT_SECTION } from './tasks-format.js';
26
+ export { TASKS_FORMAT_SECTION };
27
+ /** Presence of this line is what makes a `Tasks.md` a schema file. */
28
+ export const TASKS_FILE_MARKER = '<!-- cumulus:tasks v1 -->';
29
+ /** Field keys the parser accepts. Nothing else parses. */
30
+ export const TASK_FIELD_KEYS = ['doc', 'phase', 'note', 'dep', 'done'];
31
+ /** Two spaces of indent per level of dependency nesting. */
32
+ const INDENT_UNIT = 2;
33
+ /** Fields sit one further indent unit past their row, for legibility only. */
34
+ const FIELD_INDENT = 4;
35
+ /** The only legal `dep` value — an edge the migration proposed, not one Karl confirmed. */
36
+ const DEP_PROPOSED = 'proposed';
37
+ /** Thrown by the mutation helpers when a requested change would break the schema. */
38
+ export class TasksFileError extends Error {
39
+ }
40
+ /**
41
+ * A new project's `Tasks.md`. Scaffolding emits the schema rather than a bare
42
+ * title, so a freshly created thread's drawer works on its first open — a
43
+ * scaffold that produced the old free-form shape would leave two formats alive.
44
+ */
45
+ export function emptyTasksFile(projectName) {
46
+ return [
47
+ `# ${projectName} Tasks`,
48
+ '',
49
+ TASKS_FILE_MARKER,
50
+ '',
51
+ TASKS_FORMAT_SECTION,
52
+ '',
53
+ '## Queue',
54
+ '',
55
+ '## Done',
56
+ '',
57
+ ].join('\n');
58
+ }
59
+ const ROW_RE = /^( *)- \[([^\]]*)\] (\d+) · (.+)$/;
60
+ const FIELD_RE = /^( +)([a-z]+) +(.+)$/;
61
+ const HEADING_RE = /^## +(.+?) *$/;
62
+ export function hasTasksMarker(content) {
63
+ return content.includes(TASKS_FILE_MARKER);
64
+ }
65
+ function applyHeading(file, state, raw, headingName, lineNo, fail) {
66
+ state.current = null;
67
+ const name = headingName.toLowerCase();
68
+ if (name === 'format') {
69
+ state.section = 'format';
70
+ state.rows = null;
71
+ file.format.push(raw);
72
+ }
73
+ else if (name === 'queue') {
74
+ state.section = 'queue';
75
+ state.rows = file.queue;
76
+ }
77
+ else if (name === 'done') {
78
+ state.section = 'done';
79
+ state.rows = file.done;
80
+ }
81
+ else {
82
+ state.section = 'unknown';
83
+ state.rows = null;
84
+ fail(lineNo, raw, `Unknown section "${headingName}" — only Format, Queue and Done exist`);
85
+ }
86
+ }
87
+ function applyRow(state, match, raw, lineNo, fail) {
88
+ const rows = state.rows;
89
+ if (!rows)
90
+ return;
91
+ const indent = match[1] ?? '';
92
+ if (indent.length % INDENT_UNIT !== 0) {
93
+ fail(lineNo, raw, `Indent of ${indent.length} is not a multiple of ${INDENT_UNIT}`);
94
+ return;
95
+ }
96
+ const depth = indent.length / INDENT_UNIT;
97
+ const last = rows[rows.length - 1];
98
+ if (depth > (last ? last.depth : -1) + 1) {
99
+ fail(lineNo, raw, `Depth ${depth} has no row at depth ${depth - 1} above it`);
100
+ return;
101
+ }
102
+ const row = {
103
+ id: match[3] ?? '',
104
+ status: match[2] ?? '',
105
+ title: (match[4] ?? '').trim(),
106
+ depth,
107
+ notes: [],
108
+ depProposed: false,
109
+ };
110
+ rows.push(row);
111
+ state.current = row;
112
+ state.currentIndent = indent.length;
113
+ }
114
+ function applyFieldLine(state, match, raw, lineNo, fail) {
115
+ const indent = match[1] ?? '';
116
+ const key = match[2] ?? '';
117
+ const value = match[3] ?? '';
118
+ if (!state.current) {
119
+ fail(lineNo, raw, `Field "${key}" has no task row above it`);
120
+ }
121
+ else if (indent.length <= state.currentIndent) {
122
+ fail(lineNo, raw, `Field "${key}" must be indented past its row`);
123
+ }
124
+ else if (!TASK_FIELD_KEYS.includes(key)) {
125
+ fail(lineNo, raw, `Unknown field "${key}" — expected one of ${TASK_FIELD_KEYS.join(', ')}`);
126
+ }
127
+ else {
128
+ applyField(state.current, key, value.trim(), lineNo, raw, fail);
129
+ }
130
+ }
131
+ /**
132
+ * Parse a schema `Tasks.md`. Always returns a file — errors are collected, not
133
+ * thrown, so the drawer can show a broken line instead of an empty panel. Writes
134
+ * are refused while `errors` is non-empty (see {@link assertWritable}).
135
+ */
136
+ export function parseTasksFile(content) {
137
+ const file = { preamble: [], format: [], queue: [], done: [], errors: [] };
138
+ const state = { section: 'preamble', rows: null, current: null, currentIndent: 0 };
139
+ const fail = (line, text, reason) => file.errors.push({ line, text, reason });
140
+ const lines = content.split('\n');
141
+ for (let i = 0; i < lines.length; i++) {
142
+ const raw = lines[i] ?? '';
143
+ const lineNo = i + 1;
144
+ const heading = HEADING_RE.exec(raw);
145
+ if (heading) {
146
+ applyHeading(file, state, raw, heading[1] ?? '', lineNo, fail);
147
+ continue;
148
+ }
149
+ if (state.section === 'preamble') {
150
+ file.preamble.push(raw);
151
+ continue;
152
+ }
153
+ if (state.section === 'format') {
154
+ // Verbatim. The Format section documents the row syntax, so its example
155
+ // lines LOOK like rows — parsing it would be parsing the manual.
156
+ file.format.push(raw);
157
+ continue;
158
+ }
159
+ if (state.section === 'unknown' || raw.trim() === '')
160
+ continue;
161
+ const rowMatch = ROW_RE.exec(raw);
162
+ if (rowMatch && state.rows) {
163
+ applyRow(state, rowMatch, raw, lineNo, fail);
164
+ continue;
165
+ }
166
+ const fieldMatch = FIELD_RE.exec(raw);
167
+ if (fieldMatch) {
168
+ applyFieldLine(state, fieldMatch, raw, lineNo, fail);
169
+ continue;
170
+ }
171
+ fail(lineNo, raw, 'Not a task row, a field, a heading or blank');
172
+ }
173
+ const seen = new Set();
174
+ for (const row of [...file.queue, ...file.done]) {
175
+ if (seen.has(row.id)) {
176
+ file.errors.push({ line: 0, text: row.id, reason: `Duplicate task id ${row.id}` });
177
+ }
178
+ seen.add(row.id);
179
+ }
180
+ return file;
181
+ }
182
+ function applyField(row, key, value, lineNo, raw, fail) {
183
+ switch (key) {
184
+ case 'doc':
185
+ row.doc = value;
186
+ break;
187
+ case 'phase':
188
+ row.phase = value;
189
+ break;
190
+ case 'note':
191
+ row.notes.push(value);
192
+ break;
193
+ case 'done':
194
+ row.done = value;
195
+ break;
196
+ case 'dep':
197
+ if (value !== DEP_PROPOSED) {
198
+ fail(lineNo, raw, `dep must be "${DEP_PROPOSED}" — got "${value}"`);
199
+ return;
200
+ }
201
+ if (row.depth === 0) {
202
+ fail(lineNo, raw, 'dep proposed on a row that is not indented under a blocker');
203
+ return;
204
+ }
205
+ row.depProposed = true;
206
+ break;
207
+ }
208
+ }
209
+ // ── Serialization ────────────────────────────────────────────────────────────
210
+ function serializeRow(row) {
211
+ const indent = ' '.repeat(row.depth * INDENT_UNIT);
212
+ const fieldIndent = ' '.repeat(row.depth * INDENT_UNIT + FIELD_INDENT);
213
+ const out = [`${indent}- [${row.status}] ${row.id} · ${row.title}`];
214
+ const field = (key, value) => out.push(`${fieldIndent}${key.padEnd(5)} ${value}`);
215
+ // Short identifying fields first, prose last — `note` is the only repeatable
216
+ // key and the only one that can run long.
217
+ if (row.doc)
218
+ field('doc', row.doc);
219
+ if (row.phase)
220
+ field('phase', row.phase);
221
+ if (row.depProposed)
222
+ field('dep', DEP_PROPOSED);
223
+ if (row.done)
224
+ field('done', row.done);
225
+ for (const note of row.notes)
226
+ field('note', note);
227
+ return out;
228
+ }
229
+ /** Round-trips a parsed file. Rewrites field order and spacing to canonical form. */
230
+ export function serializeTasksFile(file) {
231
+ const out = [...file.preamble];
232
+ if (file.format.length > 0)
233
+ out.push(...file.format);
234
+ out.push('', '## Queue', '');
235
+ for (const row of file.queue)
236
+ out.push(...serializeRow(row));
237
+ out.push('', '## Done', '');
238
+ for (const row of file.done)
239
+ out.push(...serializeRow(row));
240
+ out.push('');
241
+ // Collapse any run of blank lines the sections introduced at their seams.
242
+ const collapsed = [];
243
+ for (const line of out) {
244
+ if (line === '' && collapsed[collapsed.length - 1] === '')
245
+ continue;
246
+ collapsed.push(line);
247
+ }
248
+ return collapsed.join('\n');
249
+ }
250
+ // ── Tree helpers ─────────────────────────────────────────────────────────────
251
+ /** Row at a known-valid index. Loud rather than undefined — every caller below
252
+ * has already established the index exists, so a miss is a bug, not a case. */
253
+ function at(rows, i) {
254
+ const row = rows[i];
255
+ if (!row)
256
+ throw new TasksFileError(`No task row at index ${i}`);
257
+ return row;
258
+ }
259
+ /** Last index of the subtree rooted at `i` (every following row deeper than it). */
260
+ export function subtreeEnd(rows, i) {
261
+ const depth = at(rows, i).depth;
262
+ let end = i;
263
+ for (let j = i + 1; j < rows.length && at(rows, j).depth > depth; j++)
264
+ end = j;
265
+ return end;
266
+ }
267
+ /** Index of the row that blocks `i`, or -1 when `i` is not blocked. */
268
+ export function parentIndexOf(rows, i) {
269
+ const depth = at(rows, i).depth;
270
+ if (depth === 0)
271
+ return -1;
272
+ for (let j = i - 1; j >= 0; j--) {
273
+ if (at(rows, j).depth === depth - 1)
274
+ return j;
275
+ }
276
+ return -1;
277
+ }
278
+ /** Index of the depth-0 row whose cluster contains `i`. */
279
+ export function rootIndexOf(rows, i) {
280
+ for (let j = i; j >= 0; j--) {
281
+ if (at(rows, j).depth === 0)
282
+ return j;
283
+ }
284
+ return 0;
285
+ }
286
+ function indexOfId(rows, id) {
287
+ const i = rows.findIndex(r => r.id === id);
288
+ if (i === -1)
289
+ throw new TasksFileError(`No task ${id} in the queue`);
290
+ return i;
291
+ }
292
+ // ── Mutations ────────────────────────────────────────────────────────────────
293
+ /**
294
+ * Move `dragId` relative to `targetId`. Three cases, one rule — the cluster is
295
+ * the unit of movement, and a drag can never separate a task from its blocker:
296
+ *
297
+ * - same parent → sibling reorder, dragged row's subtree travels
298
+ * - different cluster → the dragged row's WHOLE cluster moves, blocker first
299
+ * - same cluster, other parent → illegal, nothing is written
300
+ */
301
+ export function moveTask(rows, dragId, targetId, position) {
302
+ if (dragId === targetId)
303
+ return rows.slice();
304
+ const di = indexOfId(rows, dragId);
305
+ const ti = indexOfId(rows, targetId);
306
+ const sameParent = parentIndexOf(rows, di) === parentIndexOf(rows, ti);
307
+ const sameCluster = rootIndexOf(rows, di) === rootIndexOf(rows, ti);
308
+ if (sameCluster && !sameParent) {
309
+ throw new TasksFileError(`${dragId} and ${targetId} are in the same dependency cluster but have different blockers — ` +
310
+ `reorder siblings, or change the dependency in the row's menu`);
311
+ }
312
+ // Which block travels: the row itself when reordering siblings, the whole
313
+ // cluster when leaving. The second case is what makes a blocker follow the
314
+ // task it blocks and land ahead of it.
315
+ const [from, to] = sameParent ? [di, subtreeEnd(rows, di)] : movingCluster(rows, di);
316
+ if (ti >= from && ti <= to) {
317
+ throw new TasksFileError(`Cannot drop ${dragId} inside its own dependency cluster`);
318
+ }
319
+ const [anchorStart, anchorEnd] = sameParent
320
+ ? [ti, subtreeEnd(rows, ti)]
321
+ : movingCluster(rows, ti);
322
+ const block = rows.slice(from, to + 1);
323
+ const rest = [...rows.slice(0, from), ...rows.slice(to + 1)];
324
+ // Recompute the anchor's position in the array the block was lifted out of.
325
+ const shift = (n) => (n > to ? n - block.length : n);
326
+ const insertAt = position === 'before' ? shift(anchorStart) : shift(anchorEnd) + 1;
327
+ const next = [...rest.slice(0, insertAt), ...block, ...rest.slice(insertAt)];
328
+ assertValidQueue(next);
329
+ return next;
330
+ }
331
+ function movingCluster(rows, i) {
332
+ const root = rootIndexOf(rows, i);
333
+ return [root, subtreeEnd(rows, root)];
334
+ }
335
+ /**
336
+ * Accept or reject a proposed dependency edge. Accepting keeps the nesting and
337
+ * drops the marker; rejecting outdents the row and its subtree to depth 0 and
338
+ * lands them after the cluster they just left.
339
+ */
340
+ export function resolveProposedDep(rows, id, accept) {
341
+ const i = indexOfId(rows, id);
342
+ const row = at(rows, i);
343
+ if (!row.depProposed) {
344
+ throw new TasksFileError(`Task ${id} has no proposed dependency to resolve`);
345
+ }
346
+ if (accept) {
347
+ const next = rows.map(r => (r.id === id ? { ...r, depProposed: false } : r));
348
+ assertValidQueue(next);
349
+ return next;
350
+ }
351
+ const end = subtreeEnd(rows, i);
352
+ const shed = row.depth;
353
+ const block = rows
354
+ .slice(i, end + 1)
355
+ .map(r => ({ ...r, depth: r.depth - shed, depProposed: r.id === id ? false : r.depProposed }));
356
+ const rest = [...rows.slice(0, i), ...rows.slice(end + 1)];
357
+ // Land after whatever remains of the cluster it was pulled out of. The root
358
+ // is always strictly above `i` (an indented row has a blocker above it), so
359
+ // its index is unchanged by lifting the block out.
360
+ const rootAt = rootIndexOf(rows, i);
361
+ const insertAt = subtreeEnd(rest, rootAt) + 1;
362
+ const next = [...rest.slice(0, insertAt), ...block, ...rest.slice(insertAt)];
363
+ assertValidQueue(next);
364
+ return next;
365
+ }
366
+ /** Structural invariants every write must preserve. */
367
+ export function assertValidQueue(rows) {
368
+ if (rows.length === 0)
369
+ return;
370
+ if (at(rows, 0).depth !== 0) {
371
+ throw new TasksFileError('The first task in the queue cannot be blocked');
372
+ }
373
+ for (let i = 1; i < rows.length; i++) {
374
+ if (at(rows, i).depth > at(rows, i - 1).depth + 1) {
375
+ throw new TasksFileError(`Task ${at(rows, i).id} is nested under nothing`);
376
+ }
377
+ }
378
+ }
379
+ /** Refuses writes to a file the parser did not fully understand. */
380
+ export function assertWritable(file) {
381
+ if (file.errors.length > 0) {
382
+ const first = file.errors[0] ?? { line: 0, reason: 'unknown' };
383
+ throw new TasksFileError(`Tasks.md has ${file.errors.length} unparsed line(s) — refusing to write. ` +
384
+ `First: line ${first.line}: ${first.reason}`);
385
+ }
386
+ }
387
+ // ── Prompt projection ────────────────────────────────────────────────────────
388
+ /**
389
+ * What the model sees. The `## Format` section is verbatim (it is the
390
+ * instructions for writing the file back), the task in hand is in full, the
391
+ * rest of the queue is title lines, and `## Done` is one summary line.
392
+ *
393
+ * Returns null when `content` is not a schema tasks file, so an un-migrated
394
+ * `Tasks.md` in any other project is passed through untouched.
395
+ */
396
+ export function projectTasksFile(content) {
397
+ if (!hasTasksMarker(content))
398
+ return null;
399
+ const file = parseTasksFile(content);
400
+ const out = [];
401
+ for (const line of file.preamble) {
402
+ if (line.includes(TASKS_FILE_MARKER))
403
+ continue;
404
+ out.push(line);
405
+ }
406
+ if (file.format.length > 0)
407
+ out.push(...file.format);
408
+ out.push('', '## Queue', '');
409
+ if (file.queue.length === 0) {
410
+ out.push('(empty)');
411
+ }
412
+ else {
413
+ // The task in hand — the top row, per Karl's "top of queue = what I'm on".
414
+ out.push(...serializeRow(at(file.queue, 0)));
415
+ for (const row of file.queue.slice(1)) {
416
+ const indent = ' '.repeat(row.depth * INDENT_UNIT);
417
+ out.push(`${indent}- [${row.status}] ${row.id} · ${row.title}`);
418
+ }
419
+ }
420
+ out.push('', `## Done (${file.done.length} finished tasks, deliberately not included here)`, '');
421
+ if (file.errors.length > 0) {
422
+ out.push(`NOTE: ${file.errors.length} line(s) of Tasks.md do not match the format above ` +
423
+ `(first: line ${file.errors[0]?.line ?? 0}). Fix them before writing to the file.`, '');
424
+ }
425
+ const collapsed = [];
426
+ for (const line of out) {
427
+ if (line === '' && collapsed[collapsed.length - 1] === '')
428
+ continue;
429
+ collapsed.push(line);
430
+ }
431
+ return collapsed.join('\n');
432
+ }
433
+ //# sourceMappingURL=tasks-file.js.map