linersh 1.1.2 → 1.2.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 (62) hide show
  1. package/README.md +12 -58
  2. package/bin/liner.js +62 -14
  3. package/package.json +10 -17
  4. package/cli-update-docs/README.md +0 -129
  5. package/cli-update-docs/SKILL.md +0 -294
  6. package/cli-update-docs/curator-notes.md +0 -85
  7. package/cli-update-docs/quality-check-tests.md +0 -435
  8. package/cli-update-docs/source-finding-tactics.md +0 -224
  9. package/cli-update-docs/source-quality-hierarchy.md +0 -209
  10. package/cli-update-docs/synthesis-guidance.md +0 -151
  11. package/dist/agents/artifact-validation.js +0 -567
  12. package/dist/agents/artifact-validation.js.map +0 -1
  13. package/dist/agents/candidate-longlist.js +0 -116
  14. package/dist/agents/candidate-longlist.js.map +0 -1
  15. package/dist/agents/detect.js +0 -169
  16. package/dist/agents/detect.js.map +0 -1
  17. package/dist/agents/evaluation-assembly.js +0 -270
  18. package/dist/agents/evaluation-assembly.js.map +0 -1
  19. package/dist/agents/events.js +0 -8
  20. package/dist/agents/events.js.map +0 -1
  21. package/dist/agents/headless-runner.js +0 -432
  22. package/dist/agents/headless-runner.js.map +0 -1
  23. package/dist/agents/jtbd-clarify.js +0 -169
  24. package/dist/agents/jtbd-clarify.js.map +0 -1
  25. package/dist/agents/models.js +0 -98
  26. package/dist/agents/models.js.map +0 -1
  27. package/dist/agents/parsers.js +0 -316
  28. package/dist/agents/parsers.js.map +0 -1
  29. package/dist/agents/prompts.js +0 -522
  30. package/dist/agents/prompts.js.map +0 -1
  31. package/dist/agents/run-log.js +0 -71
  32. package/dist/agents/run-log.js.map +0 -1
  33. package/dist/agents/runner.js +0 -906
  34. package/dist/agents/runner.js.map +0 -1
  35. package/dist/agents/types.js +0 -2
  36. package/dist/agents/types.js.map +0 -1
  37. package/dist/bin-resolver.js +0 -92
  38. package/dist/bin-resolver.js.map +0 -1
  39. package/dist/config.js +0 -282
  40. package/dist/config.js.map +0 -1
  41. package/dist/editor.js +0 -40
  42. package/dist/editor.js.map +0 -1
  43. package/dist/gates.js +0 -121
  44. package/dist/gates.js.map +0 -1
  45. package/dist/ipc.js +0 -145
  46. package/dist/ipc.js.map +0 -1
  47. package/dist/open-folder.js +0 -28
  48. package/dist/open-folder.js.map +0 -1
  49. package/dist/phases.js +0 -346
  50. package/dist/phases.js.map +0 -1
  51. package/dist/progress.js +0 -184
  52. package/dist/progress.js.map +0 -1
  53. package/dist/source-inbox.js +0 -297
  54. package/dist/source-inbox.js.map +0 -1
  55. package/dist/types.js +0 -3
  56. package/dist/types.js.map +0 -1
  57. package/dist/version.js +0 -18
  58. package/dist/version.js.map +0 -1
  59. package/dist/yaml-io.js +0 -376
  60. package/dist/yaml-io.js.map +0 -1
  61. package/maintenance-skill/SKILL.md +0 -18
  62. package/maintenance-skill/agents/openai.yaml +0 -4
package/dist/gates.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"gates.js","sourceRoot":"","sources":["../src/gates.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAkB7B,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,IAAI,OAAO,GAA2B,IAAI,CAAC;IAE3C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,0BAA0B;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,yEAAyE;YACzE,yCAAyC;YACzC,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACnE,OAAO,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,oDAAoD;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,2EAA2E;IAC3E,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAkBD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,GAAG,GAAI,MAAkC,CAAC,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;QACnD,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,QAAQ,CAAY,CAAC,CAAC,CAAC,IAAI;YACxE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACnC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,MAAM,GAAa,EAAE,CAAC;IAE1B,SAAS,KAAK;QACZ,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,gDAAgD;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,EAAE,CAAC;YACR,WAAW,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QACD,IAAI,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC;AAOD,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,MAAM,IAAI,GAA0B,EAAE,CAAC;IACvC,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1C,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,+DAA+D;IAC/D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO;QACL,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;QACtC,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;QAC5C,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;KAC7C,CAAC;AACJ,CAAC"}
package/dist/ipc.js DELETED
@@ -1,145 +0,0 @@
1
- // Subprocess spawning + NDJSON event stream parsing.
2
- import { spawn } from "node:child_process";
3
- import { createInterface } from "node:readline";
4
- import { resolveBinary } from "./bin-resolver.js";
5
- /** Spawn `liner compile --emit-events` and call `onEvent` for each NDJSON line. */
6
- export function streamCompile(opts, onEvent) {
7
- const bin = resolveBinary();
8
- const args = [...bin.args, "compile", opts.folder, "--emit-events"];
9
- if (opts.cookies)
10
- args.push("--cookies", opts.cookies);
11
- if (opts.noCache)
12
- args.push("--no-cache");
13
- if (opts.skipOptional)
14
- args.push("--skip-optional");
15
- if (opts.maxTranscriptLength != null) {
16
- args.push("--max-transcript-length", String(opts.maxTranscriptLength));
17
- }
18
- if (opts.includeSections && opts.includeSections.length > 0) {
19
- args.push("--include-sections", opts.includeSections.join(","));
20
- }
21
- if (opts.excludeSections && opts.excludeSections.length > 0) {
22
- args.push("--exclude-sections", opts.excludeSections.join(","));
23
- }
24
- const child = spawn(bin.command, args, {
25
- stdio: ["ignore", "pipe", "pipe"],
26
- env: { ...process.env, PYTHONUNBUFFERED: "1" },
27
- });
28
- if (child.stdout) {
29
- const rl = createInterface({ input: child.stdout });
30
- rl.on("line", (line) => {
31
- const trimmed = line.trim();
32
- if (!trimmed)
33
- return;
34
- try {
35
- const event = JSON.parse(trimmed);
36
- onEvent(event);
37
- }
38
- catch {
39
- // ignore non-JSON noise; surface via stderr collector
40
- }
41
- });
42
- }
43
- let stderr = "";
44
- if (child.stderr) {
45
- child.stderr.on("data", (chunk) => {
46
- stderr += chunk.toString("utf8");
47
- });
48
- }
49
- const done = new Promise((resolve) => {
50
- child.on("close", (code) => resolve({ code, stderr }));
51
- });
52
- return {
53
- child,
54
- cancel: () => {
55
- if (!child.killed)
56
- child.kill("SIGTERM");
57
- },
58
- done,
59
- };
60
- }
61
- /** Run `liner list --json --dir <dir>` and return project folder records. */
62
- export async function listProjects(dir, recursive = false) {
63
- const bin = resolveBinary();
64
- const args = [...bin.args, "list", "--json", "--dir", dir];
65
- if (recursive)
66
- args.push("--recursive");
67
- const result = await runCapture(bin.command, args);
68
- if (result.code !== 0) {
69
- throw new Error(`liner list failed (${result.code}): ${result.stderr}`);
70
- }
71
- if (!result.stdout.trim())
72
- return [];
73
- return JSON.parse(result.stdout);
74
- }
75
- /** Run `liner init <folder>` to scaffold a project folder. */
76
- export async function runInit(folder, opts = {}) {
77
- const bin = resolveBinary();
78
- const args = [...bin.args, "init", folder];
79
- if (opts.force)
80
- args.push("--force");
81
- const result = await runCapture(bin.command, args);
82
- if (result.code !== 0) {
83
- throw new Error(result.stderr.trim() || `liner init failed with code ${result.code}`);
84
- }
85
- }
86
- /** Run `liner share <folder>` and return the archive path. */
87
- export async function runShare(folder, opts = {}) {
88
- const bin = resolveBinary();
89
- const args = [...bin.args, "share", folder];
90
- if (opts.noWorkingNotes)
91
- args.push("--no-working-notes");
92
- if (opts.noSourceContent)
93
- args.push("--no-source-content");
94
- if (opts.noPersonal)
95
- args.push("--no-personal");
96
- if (opts.minimal)
97
- args.push("--minimal");
98
- if (opts.out)
99
- args.push("--out", opts.out);
100
- const result = await runCapture(bin.command, args);
101
- if (result.code !== 0) {
102
- throw new Error(result.stderr.trim() || `liner share failed with code ${result.code}`);
103
- }
104
- // CLI prints "Wrote <path> (N entries)" to stderr (Rich console -> stderr).
105
- const match = (result.stderr + result.stdout).match(/Wrote\s+(\S+)/);
106
- if (match && match[1])
107
- return match[1];
108
- if (opts.out)
109
- return opts.out;
110
- // Fallback: derive default location.
111
- return folder.replace(/\/+$/, "") + ".mixtape";
112
- }
113
- /** Run `liner setup-js --yes` to install/download Playwright Chromium support. */
114
- export async function runSetupJs() {
115
- const bin = resolveBinary();
116
- const result = await runCapture(bin.command, [...bin.args, "setup-js", "--yes"]);
117
- if (result.code !== 0) {
118
- throw new Error((result.stderr + result.stdout).trim() ||
119
- `liner setup-js failed with code ${result.code}`);
120
- }
121
- }
122
- /** Run `liner import <archive> <dest>`. */
123
- export async function runImport(archive, destination, opts = {}) {
124
- const bin = resolveBinary();
125
- const args = [...bin.args, "import", archive, destination];
126
- if (opts.noRefetch)
127
- args.push("--no-refetch");
128
- if (opts.cookies)
129
- args.push("--cookies", opts.cookies);
130
- const result = await runCapture(bin.command, args);
131
- if (result.code !== 0) {
132
- throw new Error(result.stderr.trim() || `liner import failed with code ${result.code}`);
133
- }
134
- }
135
- function runCapture(command, args) {
136
- return new Promise((resolve) => {
137
- const child = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"] });
138
- let stdout = "";
139
- let stderr = "";
140
- child.stdout?.on("data", (c) => (stdout += c.toString("utf8")));
141
- child.stderr?.on("data", (c) => (stderr += c.toString("utf8")));
142
- child.on("close", (code) => resolve({ code, stdout, stderr }));
143
- });
144
- }
145
- //# sourceMappingURL=ipc.js.map
package/dist/ipc.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ipc.js","sourceRoot":"","sources":["../src/ipc.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- /**
3
- * Open a folder in the OS file manager. Cross-platform, best-effort, never
4
- * throws — opening the folder is a convenience, not load-bearing.
5
- *
6
- * macOS → `open <path>`
7
- * Windows → `explorer <path>`
8
- * Linux → `xdg-open <path>`
9
- *
10
- * Spawned detached + unref'd so it doesn't tie the file manager's lifetime to
11
- * the TUI, and stdio is ignored so the opener can't corrupt the terminal.
12
- */
13
- export function openFolder(path) {
14
- const cmd = process.platform === "darwin"
15
- ? "open"
16
- : process.platform === "win32"
17
- ? "explorer"
18
- : "xdg-open";
19
- try {
20
- const child = spawn(cmd, [path], { detached: true, stdio: "ignore" });
21
- child.unref();
22
- return true;
23
- }
24
- catch {
25
- return false;
26
- }
27
- }
28
- //# sourceMappingURL=open-folder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-folder.js","sourceRoot":"","sources":["../src/open-folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,GAAG,GACP,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/dist/phases.js DELETED
@@ -1,346 +0,0 @@
1
- // Phase model for the curating-mixtapes methodology.
2
- //
3
- // Status is driven by a single progress cursor (see progress.ts), not by
4
- // per-artifact filesystem checks. Detail strings still pull from the
5
- // filesystem for context (source counts, character counts, etc.) but they
6
- // no longer drive the ✓ / ◐ / ○ badge — the cursor does. This eliminates
7
- // the swiss-cheese view where a later phase showed complete while earlier
8
- // ones were empty just because some artifact happened to be on disk.
9
- import { existsSync, readFileSync, writeFileSync } from "node:fs";
10
- import { join } from "node:path";
11
- import { PHASE_ORDER, TOTAL_STEPS } from "./progress.js";
12
- const GATE_FILE = ".liner-gates.json";
13
- export function readGateState(folder) {
14
- const path = join(folder.path, GATE_FILE);
15
- if (!existsSync(path)) {
16
- return { gate0Accepted: false, gate1Accepted: false, gate2Accepted: false };
17
- }
18
- try {
19
- const parsed = JSON.parse(readFileSync(path, "utf8"));
20
- return {
21
- gate0Accepted: Boolean(parsed.gate0Accepted),
22
- gate1Accepted: Boolean(parsed.gate1Accepted),
23
- gate2Accepted: Boolean(parsed.gate2Accepted),
24
- };
25
- }
26
- catch {
27
- return { gate0Accepted: false, gate1Accepted: false, gate2Accepted: false };
28
- }
29
- }
30
- export function writeGateState(folder, state) {
31
- const path = join(folder.path, GATE_FILE);
32
- writeFileSync(path, JSON.stringify(state, null, 2), "utf8");
33
- }
34
- // ---------------------------------------------------------------------------
35
- // Phase list construction
36
- // ---------------------------------------------------------------------------
37
- // Phase `number` is the user-visible step indicator in the TUI. We renumber
38
- // the methodology's 1-8 (with Phase 3 = Fetching) into sequential 1-7 for
39
- // the curator — fetching happens implicitly at compile time, so the user
40
- // shouldn't see a "Phase 4 — Evaluation" come right after "Phase 2 — Candidate
41
- // discovery" and wonder where Phase 3 went. The methodology numbering is
42
- // still preserved in the artifact filenames (working/01-, 02-, 03-, 04-, 05-)
43
- // — those follow the spec's canonical naming.
44
- const PHASE_TEMPLATES = {
45
- framing: {
46
- id: "framing",
47
- number: "1",
48
- label: "Framing",
49
- summary: "Define the capability brief and sketch a knowledge map.",
50
- artifact: "working/01-jtbd-and-knowledge-map.md",
51
- },
52
- gate0: {
53
- id: "gate0",
54
- number: "↳",
55
- label: "Confirm framing",
56
- summary: "Review the knowledge map before any candidate search.",
57
- artifact: null,
58
- },
59
- candidates: {
60
- id: "candidates",
61
- number: "2",
62
- label: "Candidate discovery",
63
- summary: "Long-list of candidate sources (URLs only — no fetching).",
64
- artifact: "working/02-candidate-longlist.md",
65
- },
66
- gate1: {
67
- id: "gate1",
68
- number: "↳",
69
- label: "Confirm candidates",
70
- summary: "Review the long-list before any fetching.",
71
- artifact: null,
72
- },
73
- evaluation: {
74
- id: "evaluation",
75
- number: "3",
76
- label: "Evaluation",
77
- summary: "Keep / trim / drop with curator notes.",
78
- artifact: "working/03-evaluation.yaml",
79
- },
80
- quality: {
81
- id: "quality",
82
- number: "4",
83
- label: "Quality checks",
84
- summary: "Redundancy, coverage, disagreement, framing-gap tests.",
85
- artifact: "working/04-quality-checks.md",
86
- },
87
- gate2: {
88
- id: "gate2",
89
- number: "↳",
90
- label: "Confirm evaluation",
91
- summary: "Review keep-list and findings before synthesis.",
92
- artifact: null,
93
- },
94
- synthesis: {
95
- id: "synthesis",
96
- number: "5",
97
- label: "Synthesis",
98
- summary: "Curator's distilled understanding (800–2000 words).",
99
- artifact: "synthesis.md",
100
- },
101
- assembly: {
102
- id: "assembly",
103
- number: "6",
104
- label: "Assembly",
105
- summary: "Write tape.yaml — sources with curator notes, sections, order.",
106
- artifact: "tape.yaml",
107
- },
108
- improvement: {
109
- id: "improvement",
110
- number: "↻",
111
- label: "Improve Corpus",
112
- summary: "Stage a focused Source delta against the accepted corpus.",
113
- artifact: ".liner-runs/improvement/delta.yaml",
114
- },
115
- compile: {
116
- id: "compile",
117
- number: "→",
118
- label: "Compile",
119
- summary: "Final mix is assembled. Compile fetches sources and writes MIXTAPE.md.",
120
- artifact: null,
121
- },
122
- };
123
- /**
124
- * Compute the phase list for display. Status comes from `progress.step`;
125
- * detail strings are informational and pull from the filesystem for context.
126
- */
127
- export function computePhases(folder, tape, progress) {
128
- return PHASE_ORDER.map((phaseId, index) => {
129
- const template = PHASE_TEMPLATES[phaseId];
130
- const status = statusForIndex(index, progress.step);
131
- const detail = detailFor(phaseId, status, folder, tape);
132
- const subSteps = subStepsFor(phaseId, status, folder, tape);
133
- return subSteps
134
- ? { ...template, status, detail, subSteps }
135
- : { ...template, status, detail };
136
- });
137
- }
138
- /**
139
- * Build the optional sub-step checklist for a phase. Returns undefined for
140
- * phases that have one unit of work (most of them). Currently only Framing
141
- * uses this — the wizard supplies the capability goal up front, but the
142
- * capability brief and knowledge map are the agent's job, so we want both shown
143
- * even though the phase isn't done yet.
144
- */
145
- function subStepsFor(phaseId, status, folder, tape) {
146
- if (phaseId !== "framing")
147
- return undefined;
148
- const jtbdSet = Boolean(tape.jtbd?.trim());
149
- const clarsCount = tape.jtbd_clarifications?.length ?? 0;
150
- const chars = readChars(join(folder.path, "working/01-jtbd-and-knowledge-map.md"));
151
- // Knowledge map is "drafted" once the placeholder sentinel is gone AND
152
- // the file has substantial content. We approximate via the
153
- // artifact-has-real-content rule the progress migration uses.
154
- const mapDrafted = status === "complete";
155
- const steps = [];
156
- steps.push({
157
- done: jtbdSet,
158
- text: "Goal set",
159
- hint: jtbdSet ? undefined : "wizard or hand-edit working/01",
160
- });
161
- if (clarsCount > 0) {
162
- steps.push({
163
- done: true,
164
- text: "Clarifications captured",
165
- hint: `${clarsCount} answered`,
166
- });
167
- }
168
- steps.push({
169
- done: mapDrafted,
170
- text: "Capability brief drafted",
171
- hint: mapDrafted
172
- ? `${chars.toLocaleString()} chars`
173
- : status === "in_progress"
174
- ? "press enter to draft"
175
- : undefined,
176
- });
177
- return steps;
178
- }
179
- function statusForIndex(index, step) {
180
- if (index < step)
181
- return "complete";
182
- if (index === step)
183
- return "in_progress";
184
- return "not_started";
185
- }
186
- function detailFor(phaseId, status, folder, tape) {
187
- switch (phaseId) {
188
- case "framing": {
189
- const jtbdSet = Boolean(tape.jtbd?.trim());
190
- const chars = readChars(join(folder.path, "working/01-jtbd-and-knowledge-map.md"));
191
- if (status === "complete") {
192
- return `goal set · capability brief drafted (${chars.toLocaleString()} chars)`;
193
- }
194
- if (status === "in_progress") {
195
- return jtbdSet
196
- ? `goal set — press enter to draft the capability brief`
197
- : `no AI-agent goal yet — press enter to set one`;
198
- }
199
- return "not yet";
200
- }
201
- case "gate0": {
202
- if (status === "complete")
203
- return "accepted";
204
- if (status === "in_progress")
205
- return tape.mode === "methodology"
206
- ? "press enter to review the knowledge map"
207
- : "auto-accept on advance (quick mode)";
208
- return "not yet";
209
- }
210
- case "candidates": {
211
- const chars = readChars(join(folder.path, "working/02-candidate-longlist.md"));
212
- if (status === "complete")
213
- return `${chars.toLocaleString()} chars in long-list`;
214
- if (status === "in_progress")
215
- return "press enter to start researching candidate sources";
216
- return "not yet";
217
- }
218
- case "gate1": {
219
- if (status === "complete")
220
- return "accepted";
221
- if (status === "in_progress")
222
- return tape.mode === "methodology"
223
- ? "press enter to review and accept"
224
- : "auto-accept on advance (quick mode)";
225
- return "not yet";
226
- }
227
- case "evaluation": {
228
- const chars = readChars(join(folder.path, "working/03-evaluation.yaml"));
229
- if (status === "complete")
230
- return `${chars.toLocaleString()} chars · keep/trim/drop set`;
231
- if (status === "in_progress")
232
- return "press enter to run evaluation";
233
- return "not yet";
234
- }
235
- case "quality": {
236
- const chars = readChars(join(folder.path, "working/04-quality-checks.md"));
237
- if (status === "complete")
238
- return `${chars.toLocaleString()} chars in findings`;
239
- if (status === "in_progress")
240
- return "press enter to run the four quality tests";
241
- return "not yet";
242
- }
243
- case "gate2": {
244
- if (status === "complete")
245
- return "accepted";
246
- if (status === "in_progress")
247
- return tape.mode === "methodology"
248
- ? "press enter to review and accept"
249
- : "auto-accept on advance (quick mode)";
250
- return "not yet";
251
- }
252
- case "synthesis": {
253
- const chars = readChars(folder.synthesisPath);
254
- if (status === "complete")
255
- return `synthesis written (${chars.toLocaleString()} chars)`;
256
- if (status === "in_progress")
257
- return "press enter to draft the synthesis";
258
- return "not yet";
259
- }
260
- case "assembly": {
261
- const n = tape.sources.length;
262
- if (status === "complete")
263
- return `${n} source${n === 1 ? "" : "s"} on tape`;
264
- if (status === "in_progress")
265
- return "press enter — agent proposes a draft to review";
266
- return "not yet";
267
- }
268
- case "improvement": {
269
- const chars = readChars(join(folder.path, ".liner-runs/improvement/delta.yaml"));
270
- if (chars > 0)
271
- return `${chars.toLocaleString()} chars in staged delta`;
272
- return "not staged";
273
- }
274
- case "compile": {
275
- if (status === "complete")
276
- return "MIXTAPE.md on disk";
277
- if (status === "in_progress")
278
- return "press enter — write MIXTAPE.md and sources/";
279
- return "not yet";
280
- }
281
- }
282
- }
283
- function readChars(path) {
284
- if (!existsSync(path))
285
- return 0;
286
- try {
287
- return readFileSync(path, "utf8").trim().length;
288
- }
289
- catch {
290
- return 0;
291
- }
292
- }
293
- // ---------------------------------------------------------------------------
294
- // Status display helpers (used by all hub UI bits)
295
- // ---------------------------------------------------------------------------
296
- export function statusGlyph(status) {
297
- switch (status) {
298
- case "complete":
299
- return "✓";
300
- case "in_progress":
301
- return "▶";
302
- case "needs_review":
303
- return "⚠";
304
- case "blocked":
305
- return "·";
306
- case "not_started":
307
- return "○";
308
- }
309
- }
310
- export function statusColor(status) {
311
- switch (status) {
312
- case "complete":
313
- return "green";
314
- case "in_progress":
315
- return "cyan";
316
- case "needs_review":
317
- return "magenta";
318
- case "blocked":
319
- return undefined;
320
- case "not_started":
321
- return undefined;
322
- }
323
- }
324
- export function statusLabel(status) {
325
- switch (status) {
326
- case "complete":
327
- return "complete";
328
- case "in_progress":
329
- return "current";
330
- case "needs_review":
331
- return "needs review";
332
- case "blocked":
333
- return "blocked";
334
- case "not_started":
335
- return "not started";
336
- }
337
- }
338
- /**
339
- * True when every corpus-build phase is complete. Compile is the last Ink
340
- * fallback phase, so this means MIXTAPE.md is ready; the Go TUI owns the
341
- * Operating Layer and Project Complete flow.
342
- */
343
- export function everythingComplete(progress) {
344
- return progress.step >= TOTAL_STEPS;
345
- }
346
- //# sourceMappingURL=phases.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"phases.js","sourceRoot":"","sources":["../src/phases.ts"],"names":[],"mappings":"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"}