@tacuchi/agent-workflow-cli 20.21.0 → 20.23.0

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 (124) hide show
  1. package/README.md +17 -6
  2. package/dist/adapters/git-cli.js +42 -0
  3. package/dist/adapters/git-cli.js.map +1 -1
  4. package/dist/application/artifacts-service.js +5 -5
  5. package/dist/application/artifacts-service.js.map +1 -1
  6. package/dist/application/checkpoint-service.js +60 -55
  7. package/dist/application/checkpoint-service.js.map +1 -1
  8. package/dist/application/checkpoint-write-service.js +61 -66
  9. package/dist/application/checkpoint-write-service.js.map +1 -1
  10. package/dist/application/decisiones-service.js +5 -5
  11. package/dist/application/decisiones-service.js.map +1 -1
  12. package/dist/application/export-service.js +250 -0
  13. package/dist/application/export-service.js.map +1 -0
  14. package/dist/application/fix-git-service.js +244 -0
  15. package/dist/application/fix-git-service.js.map +1 -0
  16. package/dist/application/history-update-service.js +35 -24
  17. package/dist/application/history-update-service.js.map +1 -1
  18. package/dist/application/lifecycle-target.js +39 -0
  19. package/dist/application/lifecycle-target.js.map +1 -0
  20. package/dist/application/markdown.js +61 -16
  21. package/dist/application/markdown.js.map +1 -1
  22. package/dist/application/parsers/phases.js +38 -45
  23. package/dist/application/parsers/phases.js.map +1 -1
  24. package/dist/application/parsers/plan-status.js +75 -0
  25. package/dist/application/parsers/plan-status.js.map +1 -0
  26. package/dist/application/parsers/spec-relation.js +80 -0
  27. package/dist/application/parsers/spec-relation.js.map +1 -0
  28. package/dist/application/paths-service.js +8 -0
  29. package/dist/application/paths-service.js.map +1 -1
  30. package/dist/application/persist-service.js +285 -0
  31. package/dist/application/persist-service.js.map +1 -0
  32. package/dist/application/release-data/artifacts.js +17 -21
  33. package/dist/application/release-data/artifacts.js.map +1 -1
  34. package/dist/application/resume-service.js +184 -0
  35. package/dist/application/resume-service.js.map +1 -0
  36. package/dist/application/semantic-operation/protocol.js +247 -0
  37. package/dist/application/semantic-operation/protocol.js.map +1 -0
  38. package/dist/application/semantic-operation/publish.js +80 -0
  39. package/dist/application/semantic-operation/publish.js.map +1 -0
  40. package/dist/application/session-binding-service.js +125 -0
  41. package/dist/application/session-binding-service.js.map +1 -0
  42. package/dist/application/session-close-service.js +60 -39
  43. package/dist/application/session-close-service.js.map +1 -1
  44. package/dist/application/session-create-service.js +45 -19
  45. package/dist/application/session-create-service.js.map +1 -1
  46. package/dist/application/session-resolver.js +180 -44
  47. package/dist/application/session-resolver.js.map +1 -1
  48. package/dist/application/session-resume-service.js +39 -9
  49. package/dist/application/session-resume-service.js.map +1 -1
  50. package/dist/application/sessions-service.js +0 -2
  51. package/dist/application/sessions-service.js.map +1 -1
  52. package/dist/application/status-service.js +24 -352
  53. package/dist/application/status-service.js.map +1 -1
  54. package/dist/application/tasks-service.js +5 -5
  55. package/dist/application/tasks-service.js.map +1 -1
  56. package/dist/application/workline-index-service.js +510 -0
  57. package/dist/application/workline-index-service.js.map +1 -0
  58. package/dist/cli/commands/checkpoint-read.js +10 -6
  59. package/dist/cli/commands/checkpoint-read.js.map +1 -1
  60. package/dist/cli/commands/checkpoint-write.js +38 -11
  61. package/dist/cli/commands/checkpoint-write.js.map +1 -1
  62. package/dist/cli/commands/export.js +117 -0
  63. package/dist/cli/commands/export.js.map +1 -0
  64. package/dist/cli/commands/fix-git.js +109 -0
  65. package/dist/cli/commands/fix-git.js.map +1 -0
  66. package/dist/cli/commands/generate-launch.js +35 -3
  67. package/dist/cli/commands/generate-launch.js.map +1 -1
  68. package/dist/cli/commands/history-update.js +1 -1
  69. package/dist/cli/commands/history-update.js.map +1 -1
  70. package/dist/cli/commands/index.js +11 -0
  71. package/dist/cli/commands/index.js.map +1 -1
  72. package/dist/cli/commands/persist.js +67 -0
  73. package/dist/cli/commands/persist.js.map +1 -0
  74. package/dist/cli/commands/resume-summary.js +14 -3
  75. package/dist/cli/commands/resume-summary.js.map +1 -1
  76. package/dist/cli/commands/resume.js +73 -0
  77. package/dist/cli/commands/resume.js.map +1 -0
  78. package/dist/cli/commands/session-artifacts.js +12 -11
  79. package/dist/cli/commands/session-artifacts.js.map +1 -1
  80. package/dist/cli/commands/session-close.js +8 -7
  81. package/dist/cli/commands/session-close.js.map +1 -1
  82. package/dist/cli/commands/session-create.js +5 -1
  83. package/dist/cli/commands/session-create.js.map +1 -1
  84. package/dist/cli/commands/session-resume.js +16 -10
  85. package/dist/cli/commands/session-resume.js.map +1 -1
  86. package/dist/cli/commands/status.js +66 -2
  87. package/dist/cli/commands/status.js.map +1 -1
  88. package/dist/cli/commands/workspace-init.js +21 -2
  89. package/dist/cli/commands/workspace-init.js.map +1 -1
  90. package/dist/cli/context-id.js +133 -0
  91. package/dist/cli/context-id.js.map +1 -0
  92. package/dist/cli/help-groups.js +16 -1
  93. package/dist/cli/help-groups.js.map +1 -1
  94. package/dist/cli/main.js +44 -16
  95. package/dist/cli/main.js.map +1 -1
  96. package/dist/cli/output-mode.js +41 -0
  97. package/dist/cli/output-mode.js.map +1 -0
  98. package/dist/cli/parser.js +6 -0
  99. package/dist/cli/parser.js.map +1 -1
  100. package/dist/cli/registry.js.map +1 -1
  101. package/dist/cli/render.js +53 -0
  102. package/dist/cli/render.js.map +1 -1
  103. package/package.json +1 -1
  104. package/skills/w/SKILL.md +3 -1
  105. package/skills/w/commands/export-diagrams.md +19 -10
  106. package/skills/w/commands/export-manuals.md +20 -10
  107. package/skills/w/commands/export-reports.md +20 -11
  108. package/skills/w/commands/export-scripts.md +20 -10
  109. package/skills/w/commands/fix-git.md +31 -12
  110. package/skills/w/commands/generate-launch.md +1 -1
  111. package/skills/w/commands/persist.md +33 -68
  112. package/skills/w/commands/plan-new.md +1 -1
  113. package/skills/w/commands/resume.md +25 -41
  114. package/skills/w/commands/spec-refine.md +12 -0
  115. package/skills/w/commands/status.md +12 -40
  116. package/skills/w/commands/workspace-init.md +3 -3
  117. package/skills/w/hooks/README.md +21 -2
  118. package/skills/w/hooks/hooks.template.json +2 -2
  119. package/skills/w/loops/README.md +5 -3
  120. package/skills/w/loops/plan-exec-loop/LOOP.md +10 -5
  121. package/skills/w/loops/plan-new-loop/LOOP.md +17 -8
  122. package/skills/w/loops/plan-refine-loop/LOOP.md +3 -1
  123. package/skills/w/loops/spec-refine-loop/LOOP.md +20 -7
  124. package/skills/w/roles/git/ROLE.md +7 -8
@@ -1,367 +1,39 @@
1
- import { basename, join, relative } from "node:path";
2
- import { localDateIso } from "./dates.js";
3
- import { humanizeRelativeEs } from "./humanize-es.js";
4
- import { firstNonEmptyLine, parseMdSection } from "./markdown.js";
5
- import { parsePhases } from "./parsers/phases.js";
6
- import { parseProjectBlock } from "./parsers/project-block.js";
7
- import { parseTasks } from "./parsers/tasks.js";
8
- import { findArtifact } from "./session-artifacts.js";
9
- import { SessionsService } from "./sessions-service.js";
10
- const SPEC_STATUSES = ["draft", "refining", "ready-for-plan"];
1
+ import { buildWorklineIndex, } from "./workline-index-service.js";
11
2
  /**
12
3
  * Read-only whole-workspace status aggregator. Never throws on a reachable cwd:
13
4
  * an uninitialized workspace returns `initialized:false` with empty collections;
14
5
  * a single unreadable file is skipped rather than tanking the command.
15
6
  */
16
7
  export async function runStatusCommand(fs, env, paths, input = {}) {
17
- const now = input.now ?? new Date();
18
- const cwd = paths.workspaceDir();
19
- const workspace = await readWorkspace(fs, paths, cwd);
20
- const specs = await readSpecs(fs, cwd, now);
21
- const plans = await readPlans(fs, cwd, now);
22
- const { active, closed, folders } = await readSessions(fs, env, paths, now);
23
- const discarded = await readDiscarded(fs, folders, cwd, now);
8
+ const index = await buildWorklineIndex(fs, env, paths, input);
9
+ const active = [];
10
+ const closed = [];
11
+ for (const session of index.sessions) {
12
+ (session.state === "closed" ? closed : active).push({
13
+ code: session.code,
14
+ folder: session.folder,
15
+ type: session.type,
16
+ summary: session.summary,
17
+ date: session.date,
18
+ relative: session.relative,
19
+ });
20
+ }
24
21
  return {
25
- workspace,
26
- specs,
27
- plans,
22
+ workspace: index.workspace,
23
+ specs: index.specs,
24
+ plans: index.plans,
28
25
  sessions: { active, closed },
29
- discarded,
26
+ discarded: index.discarded,
27
+ pipeline: index.pipeline,
30
28
  counts: {
31
- specs: specs.length,
32
- specs_refined: specs.filter((s) => s.refined).length,
33
- plans: plans.length,
29
+ specs: index.specs.length,
30
+ specs_refined: index.specs.filter((s) => s.refined).length,
31
+ plans: index.plans.length,
34
32
  sessions_active: active.length,
35
33
  sessions_closed: closed.length,
36
- discarded: discarded.length,
34
+ discarded: index.discarded.length,
35
+ pending: index.pipeline.length,
37
36
  },
38
37
  };
39
38
  }
40
- // ── workspace ──────────────────────────────────────────────────────────────
41
- async function readWorkspace(fs, paths, cwd) {
42
- let name = basename(cwd);
43
- for (const file of [join(cwd, "CLAUDE.md"), join(cwd, "AGENTS.md")]) {
44
- try {
45
- if (!(await fs.exists(file)))
46
- continue;
47
- const block = parseProjectBlock(await fs.readText(file), paths.blockMarkers());
48
- if (block?.proyecto) {
49
- name = block.proyecto;
50
- break;
51
- }
52
- }
53
- catch {
54
- // ignore; fall back to basename
55
- }
56
- }
57
- const initialized = await safeExists(fs, paths.cwdRoot());
58
- return { name, path: cwd, initialized };
59
- }
60
- // ── specs ──────────────────────────────────────────────────────────────────
61
- const SPEC_RE = /^(\d{3})-spec(?:-(.+))?\.md$/i;
62
- async function readSpecs(fs, cwd, now) {
63
- const dir = join(cwd, "docs", "specs");
64
- const files = await listMarkdown(fs, dir, SPEC_RE);
65
- const deduped = dedupeRefined(files);
66
- const out = [];
67
- for (const f of deduped) {
68
- try {
69
- const text = await fs.readText(f.path);
70
- const status = resolveSpecStatus(text);
71
- const ts = await resolveTimestamp(fs, f.path, undefined, now);
72
- out.push({
73
- file: relFromCwd(f.path, cwd),
74
- number: f.number,
75
- slug: f.slug,
76
- status,
77
- refined: status === "ready-for-plan",
78
- open_questions: countOpenQuestions(text),
79
- date: ts.date,
80
- relative: ts.relative,
81
- });
82
- }
83
- catch {
84
- // skip unreadable spec
85
- }
86
- }
87
- return sortByNumber(out);
88
- }
89
- /**
90
- * The only two trace sections that marked a spec as worked-through before the
91
- * frontmatter `status` existed. `## Decisions` is NOT one of them: it belongs
92
- * to the current spec schema and proves nothing about the refine gate.
93
- *
94
- * Exported so the doctrine guard can check this list against the marks the
95
- * bundle documents — the two drifted apart once, and a spec nobody refined
96
- * reached PLAN because of it.
97
- */
98
- export const LEGACY_READY_MARKS = ["Refinement decisions", "Q&A traceability"];
99
- /**
100
- * Spec maturity. A declared frontmatter governs alone: an empty, unknown or
101
- * unterminated declaration reads `draft` — never a legacy inference, which
102
- * would send work to PLAN on a gate `spec-refine` never ran. Legacy
103
- * compatibility runs only on a spec that carries no frontmatter at all.
104
- */
105
- function resolveSpecStatus(text) {
106
- const frontmatter = parseSpecFrontmatter(text);
107
- if (frontmatter.kind === "malformed")
108
- return "draft";
109
- if (frontmatter.kind === "present") {
110
- const declared = (frontmatter.status ?? "").toLowerCase();
111
- return isSpecStatus(declared) ? declared : "draft";
112
- }
113
- return hasLegacyReadyMark(text) ? "ready-for-plan" : "draft";
114
- }
115
- function hasLegacyReadyMark(text) {
116
- return LEGACY_READY_MARKS.some((h) => parseMdSectionLoose(text, h) !== undefined);
117
- }
118
- function isSpecStatus(value) {
119
- return SPEC_STATUSES.includes(value);
120
- }
121
- const FRONTMATTER_FENCE = "---";
122
- const FRONTMATTER_ENTRY = /^([A-Za-z0-9_-]+):\s*(.*)$/;
123
- /**
124
- * Classify the `---` block at the top of the file and read its `status` scalar.
125
- * Specs only carry flat scalars there, so this stays a few lines instead of
126
- * pulling a YAML dependency into the CLI.
127
- */
128
- function parseSpecFrontmatter(text) {
129
- const lines = text.split(/\r?\n/);
130
- if ((lines[0] ?? "").trim() !== FRONTMATTER_FENCE)
131
- return { kind: "absent" };
132
- const end = lines.findIndex((l, i) => i > 0 && l.trim() === FRONTMATTER_FENCE);
133
- if (end === -1)
134
- return { kind: "malformed" };
135
- return { kind: "present", status: readScalar(lines.slice(1, end), "status") };
136
- }
137
- function readScalar(lines, key) {
138
- for (const line of lines) {
139
- const m = FRONTMATTER_ENTRY.exec(line);
140
- if (m?.[1] !== key)
141
- continue;
142
- const value = (m[2] ?? "").trim().replace(/^["']|["']$/g, "");
143
- return value.length > 0 ? value : undefined;
144
- }
145
- return undefined;
146
- }
147
- // ── plans ────────────────────────────────────────────────────────────────────
148
- const PLAN_RE = /^(\d{3})-plan(?:-(.+))?\.md$/i;
149
- async function readPlans(fs, cwd, now) {
150
- const dir = join(cwd, "docs", "plans");
151
- const files = await listMarkdown(fs, dir, PLAN_RE);
152
- const out = [];
153
- for (const f of files) {
154
- try {
155
- const text = await fs.readText(f.path);
156
- const t = parseTasks(text);
157
- const p = parsePhases(text);
158
- const ts = await resolveTimestamp(fs, f.path, undefined, now);
159
- out.push({
160
- file: relFromCwd(f.path, cwd),
161
- number: f.number,
162
- slug: f.slug,
163
- tasks_total: t.total,
164
- tasks_done: t.closed,
165
- progress_pct: t.progress_pct,
166
- phases_total: p.total,
167
- phases_validated: p.validated,
168
- date: ts.date,
169
- relative: ts.relative,
170
- });
171
- }
172
- catch {
173
- // skip unreadable plan
174
- }
175
- }
176
- return sortByNumber(out);
177
- }
178
- async function readSessions(fs, env, paths, now) {
179
- const active = [];
180
- const closed = [];
181
- const folders = [];
182
- let list;
183
- try {
184
- list = await new SessionsService(fs, env, paths).list({ state: "all", verbose: true });
185
- }
186
- catch {
187
- return { active, closed, folders };
188
- }
189
- for (const s of list.sessions) {
190
- folders.push({ code: s.code, folder: s.folder, path: s.path });
191
- const primary = (await findArtifact(s.path, "session", fs)) ?? s.path;
192
- const ts = await resolveTimestamp(fs, primary, s.date, now);
193
- const entry = {
194
- code: s.code,
195
- folder: s.folder,
196
- type: s.type ?? null,
197
- summary: s.summary ?? s.folder,
198
- date: ts.date,
199
- relative: ts.relative,
200
- };
201
- (s.state === "closed" ? closed : active).push(entry);
202
- }
203
- return { active, closed, folders };
204
- }
205
- // ── discarded ──────────────────────────────────────────────────────────────────
206
- async function readDiscarded(fs, folders, cwd, now) {
207
- const out = [];
208
- for (const f of folders) {
209
- await collectDiscarded(fs, f, "backlog", "Deferred", "deferred", cwd, now, out);
210
- await collectDiscarded(fs, f, "checkpoint", "Excluded", "excluded", cwd, now, out);
211
- }
212
- return out;
213
- }
214
- async function collectDiscarded(fs, ref, artifact, heading, kind, cwd, now, out) {
215
- try {
216
- const path = await findArtifact(ref.path, artifact, fs);
217
- if (!path)
218
- return;
219
- const items = listItems(parseMdSectionLoose(await fs.readText(path), heading));
220
- if (items.length === 0)
221
- return;
222
- const ts = await resolveTimestamp(fs, path, undefined, now);
223
- for (const text of items) {
224
- out.push({
225
- source: ref.code ?? ref.folder,
226
- source_path: relFromCwd(ref.path, cwd),
227
- kind,
228
- text,
229
- date: ts.date,
230
- relative: ts.relative,
231
- });
232
- }
233
- }
234
- catch {
235
- // skip unreadable artifact
236
- }
237
- }
238
- async function listMarkdown(fs, dir, re) {
239
- if (!(await safeExists(fs, dir)))
240
- return [];
241
- let entries;
242
- try {
243
- entries = await fs.list(dir);
244
- }
245
- catch {
246
- return [];
247
- }
248
- const out = [];
249
- for (const e of entries) {
250
- if (e.type !== "file")
251
- continue;
252
- const m = re.exec(e.name);
253
- if (!m?.[1])
254
- continue;
255
- out.push({ path: e.path, number: m[1], slug: m[2] ?? "" });
256
- }
257
- return out;
258
- }
259
- /** Drop legacy `NNN-spec-refined.md` when another file shares its number. */
260
- function dedupeRefined(files) {
261
- const byNumber = new Map();
262
- for (const f of files) {
263
- const group = byNumber.get(f.number) ?? [];
264
- group.push(f);
265
- byNumber.set(f.number, group);
266
- }
267
- const out = [];
268
- for (const group of byNumber.values()) {
269
- const isRefined = (f) => /(^|-)refined$/i.test(f.slug);
270
- const nonRefined = group.filter((f) => !isRefined(f));
271
- const chosen = nonRefined.length > 0 ? nonRefined : group;
272
- chosen.sort((a, b) => a.path.localeCompare(b.path));
273
- const first = chosen[0];
274
- if (first)
275
- out.push(first);
276
- }
277
- return out;
278
- }
279
- function sortByNumber(items) {
280
- return items.sort((a, b) => a.number.localeCompare(b.number) || a.file.localeCompare(b.file));
281
- }
282
- /**
283
- * Best-available timestamp for `relative`/`date`: full-precision fs mtime if the
284
- * path stats, else a date-only fallback projected to local noon, else `now`.
285
- */
286
- async function resolveTimestamp(fs, path, fallbackDateOnly, now) {
287
- let mtime = null;
288
- try {
289
- mtime = (await fs.stat(path)).mtime;
290
- }
291
- catch {
292
- mtime = null;
293
- }
294
- const when = mtime ?? dateOnlyToNoon(fallbackDateOnly) ?? now;
295
- return {
296
- date: localDateIso(when),
297
- relative: humanizeRelativeEs(when, now),
298
- };
299
- }
300
- function dateOnlyToNoon(dateStr) {
301
- if (!dateStr)
302
- return null;
303
- const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(dateStr);
304
- if (!m)
305
- return null;
306
- return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]), 12, 0, 0);
307
- }
308
- async function safeExists(fs, path) {
309
- try {
310
- return await fs.exists(path);
311
- }
312
- catch {
313
- return false;
314
- }
315
- }
316
- function relFromCwd(path, cwd) {
317
- // path.relative handles the win32 case a raw string-prefix strip missed: join()
318
- // yields backslash paths while the old prefix appended a forward slash, so the
319
- // strip never matched and status showed absolute paths. Normalize to forward
320
- // slashes so the displayed path reads the same on every OS.
321
- return relative(cwd, path).split("\\").join("/");
322
- }
323
- /**
324
- * Like `parseMdSection` but tolerant of the template heading annotations
325
- * (`## Excluded (list):`, `## Deferred (text):`) — ignores a trailing
326
- * `(...)` / `:`; needed for legacy artifacts that still carry the suffix.
327
- */
328
- const parseMdSectionLoose = (text, heading) => parseMdSection(text, heading, normalizeHeading);
329
- function normalizeHeading(raw) {
330
- return raw
331
- .trim()
332
- .toLowerCase()
333
- .replace(/\s*\([^)]*\)\s*:?\s*$/, "")
334
- .replace(/:\s*$/, "")
335
- .trim();
336
- }
337
- /** List-item lines of a section, dropping the `List of …` template placeholder. */
338
- function listItems(section) {
339
- if (!section)
340
- return [];
341
- const out = [];
342
- for (const raw of section.split("\n")) {
343
- const m = /^\s*[-*]\s+(.+?)\s*$/.exec(raw);
344
- if (!m?.[1])
345
- continue;
346
- const text = m[1].trim();
347
- if (text.length === 0)
348
- continue;
349
- if (/^list of\b/i.test(text))
350
- continue; // template placeholder
351
- out.push(text);
352
- }
353
- return out;
354
- }
355
- function countOpenQuestions(text) {
356
- const sec = parseMdSectionLoose(text, "Open questions");
357
- if (!sec)
358
- return 0;
359
- const first = (firstNonEmptyLine(sec) ?? "").toLowerCase();
360
- if (first.length === 0)
361
- return 0;
362
- if (/^[-*]?\s*(none|ninguna|ninguno|n\/a|—|-)\.?$/.test(first))
363
- return 0;
364
- const bullets = sec.split("\n").filter((l) => /^\s*[-*]\s+\S/.test(l)).length;
365
- return bullets > 0 ? bullets : 1;
366
- }
367
39
  //# sourceMappingURL=status-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status-service.js","sourceRoot":"","sources":["../../src/application/status-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-service.js","sourceRoot":"","sources":["../../src/application/status-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAgDrC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,QAAqB,EAAE;IAEvB,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAClD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE;YACN,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;YAC1D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YACjC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;SAC/B;KACF,CAAC;AACJ,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { join } from "node:path";
2
2
  import { parseTasks } from "./parsers/tasks.js";
3
3
  import { relpath } from "./paths.js";
4
- import { resolveSession } from "./session-resolver.js";
4
+ import { resolveSessionTarget, sessionReadRequest, } from "./session-resolver.js";
5
5
  export async function runTasksCommand(fs, env, paths, input) {
6
- const session = await resolveSession(fs, env, paths, input.code, true);
7
- if (!session) {
8
- return { error: "session_not_found", code: input.code ?? null };
9
- }
6
+ const resolution = await resolveSessionTarget(fs, paths, sessionReadRequest(input));
7
+ if (resolution.outcome !== "resolved")
8
+ return { sessionError: resolution };
9
+ const session = resolution.session;
10
10
  const tasksPath = join(session.path, "TASKS.md");
11
11
  const cwd = env.cwd();
12
12
  const verbose = input.verbose === true;
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-service.js","sourceRoot":"","sources":["../../src/application/tasks-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAmC,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA2BvD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,KAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE9D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,CAAC;YACf,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAgB,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tasks-service.js","sourceRoot":"","sources":["../../src/application/tasks-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAmC,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAEL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAwB/B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,KAAwB;IAExB,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,IAAI,UAAU,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE9D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,CAAC;YACf,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAgB,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC"}