meto-cli 0.11.3 → 0.12.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 (36) hide show
  1. package/README.md +19 -0
  2. package/dist/cli/ai-generator.d.ts +5 -2
  3. package/dist/cli/ai-generator.d.ts.map +1 -1
  4. package/dist/cli/ai-generator.js +20 -2
  5. package/dist/cli/ai-generator.js.map +1 -1
  6. package/dist/cli/index.js +57 -11
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/init/setup-claude-tooling.d.ts +16 -0
  9. package/dist/cli/init/setup-claude-tooling.d.ts.map +1 -0
  10. package/dist/cli/init/setup-claude-tooling.js +58 -0
  11. package/dist/cli/init/setup-claude-tooling.js.map +1 -0
  12. package/dist/daemon/board.d.ts +23 -0
  13. package/dist/daemon/board.d.ts.map +1 -0
  14. package/dist/daemon/board.js +141 -0
  15. package/dist/daemon/board.js.map +1 -0
  16. package/dist/daemon/dispatcher.d.ts +24 -0
  17. package/dist/daemon/dispatcher.d.ts.map +1 -0
  18. package/dist/daemon/dispatcher.js +90 -0
  19. package/dist/daemon/dispatcher.js.map +1 -0
  20. package/dist/daemon/index.d.ts +6 -0
  21. package/dist/daemon/index.d.ts.map +1 -0
  22. package/dist/daemon/index.js +10 -0
  23. package/dist/daemon/index.js.map +1 -0
  24. package/dist/daemon/server.d.ts +5 -0
  25. package/dist/daemon/server.d.ts.map +1 -0
  26. package/dist/daemon/server.js +109 -0
  27. package/dist/daemon/server.js.map +1 -0
  28. package/dist/daemon/types.d.ts +96 -0
  29. package/dist/daemon/types.d.ts.map +1 -0
  30. package/dist/daemon/types.js +2 -0
  31. package/dist/daemon/types.js.map +1 -0
  32. package/package.json +4 -2
  33. package/templates/.claude/agent-memory/meto-developer/MEMORY.md +8 -0
  34. package/templates/.claude/agent-memory/meto-pm/MEMORY.md +8 -0
  35. package/templates/.claude/agent-memory/meto-tester/MEMORY.md +7 -0
  36. package/templates/CLAUDE.md +10 -0
package/README.md CHANGED
@@ -34,6 +34,7 @@ Meto detects whether Claude Code is installed on your machine and offers two pat
34
34
  2. Choose your workflow mode -- **Sprint** (sequential) or **Swarm** (parallel epic agents)
35
35
  3. Claude Code generates your product vision, problem statement, epics, and a sliced backlog with acceptance criteria
36
36
  4. Meto renders everything into a structured project ready for your first sprint or swarm
37
+ 5. Context7, Sequential Thinking MCP, and ccstatusline are installed into your Claude Code environment automatically
37
38
 
38
39
  **Without Claude Code (static):**
39
40
  1. You answer 10 questions -- the 5 above plus problem statement, success criteria, value proposition, out of scope, and code conventions
@@ -46,6 +47,24 @@ Use `--no-ai` to force the static path even when Claude Code is available.
46
47
 
47
48
  ---
48
49
 
50
+ ## Claude Tooling Setup
51
+
52
+ `meto init` automatically configures your Claude Code environment so your agents are better equipped from day one. No manual setup required.
53
+
54
+ **What gets installed into `~/.claude/settings.json`:**
55
+
56
+ | Tool | What it does |
57
+ |---|---|
58
+ | **Context7 MCP** | Injects up-to-date library documentation into agent context — reduces hallucinated APIs and outdated patterns |
59
+ | **Sequential Thinking MCP** | Gives agents a structured reasoning chain for complex, multi-step problems |
60
+ | **ccstatusline** | Adds a status line to your Claude Code terminal showing session state at a glance |
61
+
62
+ Context7 and Sequential Thinking are registered as MCP servers and activate automatically in every Claude Code session. The ccstatusline setup is interactive — you'll configure it in your terminal during `meto init`.
63
+
64
+ All three are installed with a deep merge: your existing `~/.claude/settings.json` is never overwritten, only extended.
65
+
66
+ ---
67
+
49
68
  ## Audit — For Existing Projects
50
69
 
51
70
  Already built a project before Meto? Run `meto-cli audit` to scan it against the methodology blueprint and fix what's missing — interactively, one layer at a time.
@@ -37,8 +37,11 @@ export declare class AIGenerationTimeoutError extends Error {
37
37
  /**
38
38
  * Extracts plain text from Claude Code stream-json (JSONL) output.
39
39
  *
40
- * Each line is a JSON object. Text content arrives as content_block_delta
41
- * events with text_delta payloads. We concatenate all text_delta values.
40
+ * Current format: a `result` event at the end of the stream contains the
41
+ * full aggregated text in its `result` field.
42
+ *
43
+ * Fallback: older format where text arrived as content_block_delta events
44
+ * with text_delta payloads (kept for backwards compatibility).
42
45
  */
43
46
  export declare function extractTextFromStream(jsonlStream: string): string;
44
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generator.d.ts","sourceRoot":"","sources":["../../src/cli/ai-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAErB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAOpD;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAM9B;AASD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAuBjE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAuFlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA0D7B"}
1
+ {"version":3,"file":"ai-generator.d.ts","sourceRoot":"","sources":["../../src/cli/ai-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAErB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAOpD;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAM9B;AASD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAwCjE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAuFlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA0D7B"}
@@ -38,11 +38,29 @@ const DEFAULT_TIMEOUT_MS = 60_000;
38
38
  /**
39
39
  * Extracts plain text from Claude Code stream-json (JSONL) output.
40
40
  *
41
- * Each line is a JSON object. Text content arrives as content_block_delta
42
- * events with text_delta payloads. We concatenate all text_delta values.
41
+ * Current format: a `result` event at the end of the stream contains the
42
+ * full aggregated text in its `result` field.
43
+ *
44
+ * Fallback: older format where text arrived as content_block_delta events
45
+ * with text_delta payloads (kept for backwards compatibility).
43
46
  */
44
47
  export function extractTextFromStream(jsonlStream) {
45
48
  const lines = jsonlStream.split("\n").filter((line) => line.trim());
49
+ // Current format: look for the result event which has the full text
50
+ for (const line of lines) {
51
+ try {
52
+ const event = JSON.parse(line);
53
+ if (event.type === "result" &&
54
+ event.subtype === "success" &&
55
+ typeof event.result === "string") {
56
+ return event.result;
57
+ }
58
+ }
59
+ catch {
60
+ // Skip malformed lines
61
+ }
62
+ }
63
+ // Fallback: old stream_event + content_block_delta format
46
64
  let fullText = "";
47
65
  for (const line of lines) {
48
66
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generator.js","sourceRoot":"","sources":["../../src/cli/ai-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-generator.js","sourceRoot":"","sources":["../../src/cli/ai-generator.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { join, resolve } from "node:path";
4
4
  import * as p from "@clack/prompts";
5
- import { collectDeepContent, collectProjectBrief } from "./prompts.js";
5
+ import { collectProjectBrief } from "./prompts.js";
6
6
  import { InterruptionHandler } from "./interruption.js";
7
7
  import { buildTokenMap, renderTemplates, resolveTemplatesDir, } from "./renderer.js";
8
8
  import { initGitRepo } from "./git.js";
@@ -12,9 +12,11 @@ import { formatFileTree } from "./tree.js";
12
12
  import { runDoctor } from "./doctor.js";
13
13
  import { runStatus } from "./status.js";
14
14
  import { runAudit } from "./audit/index.js";
15
+ import { runDaemon } from "../daemon/index.js";
15
16
  import { generateWithAI, AIGenerationTimeoutError } from "./ai-generator.js";
16
17
  import { parseAIOutput, validateAIContent } from "./ai-parser.js";
17
18
  import { generateEpicAgents, readEpicAgentTemplate, generateSwarmSettings, parseEpics, } from "./swarm.js";
19
+ import { setupClaudeTooling, runCcstatusline } from "./init/setup-claude-tooling.js";
18
20
  /**
19
21
  * Resolves the absolute path to the package root directory.
20
22
  * At runtime: dist/cli/index.js -> package root is ../../
@@ -52,6 +54,7 @@ function printHelp() {
52
54
  " init --dry-run Preview files without writing to disk",
53
55
  " init --no-ai Skip AI generation, use standard prompts",
54
56
  " audit Check project prerequisites and methodology compliance",
57
+ " daemon start Start the local agent dispatcher (WebSocket server)",
55
58
  " doctor Check methodology health of the current project",
56
59
  " status Show swarm progress dashboard (reads SWARM_AWARENESS.md)",
57
60
  "",
@@ -188,20 +191,14 @@ async function main() {
188
191
  catch (aiError) {
189
192
  clearInterval(progressTimer);
190
193
  if (aiError instanceof AIGenerationTimeoutError) {
191
- aiSpinner.stop("AI generation failed -- falling back to standard prompts");
192
- p.log.warning(`No output received for ${Math.round(aiError.timeoutMs / 1000)} seconds. Falling back to standard prompts.`);
194
+ aiSpinner.stop("AI generation failed -- scaffolding with defaults");
195
+ p.log.warning(`No output received for ${Math.round(aiError.timeoutMs / 1000)} seconds. Project content will use placeholder defaults — run @meto-pm to fill them in.`);
193
196
  }
194
197
  else {
195
198
  const reason = aiError instanceof Error ? aiError.message : "Unknown error";
196
- aiSpinner.stop("AI generation failed -- falling back to standard prompts");
197
- p.log.warning(`AI generation failed: ${reason}. Falling back to standard prompts.`);
199
+ aiSpinner.stop("AI generation failed -- scaffolding with defaults");
200
+ p.log.warning(`AI generation failed: ${reason}. Project content will use placeholder defaults — run @meto-pm to fill them in.`);
198
201
  }
199
- const deep = await collectDeepContent();
200
- brief.problemStatement = deep.problemStatement;
201
- brief.successCriteria = deep.successCriteria;
202
- brief.valueProposition = deep.valueProposition;
203
- brief.outOfScope = deep.outOfScope;
204
- brief.codeConventions = deep.codeConventions;
205
202
  }
206
203
  }
207
204
  const s = p.spinner();
@@ -260,6 +257,18 @@ async function main() {
260
257
  gitSpinner.stop("Git initialization failed -- skipping.");
261
258
  }
262
259
  }
260
+ // Claude tooling setup
261
+ const toolingResult = await setupClaudeTooling();
262
+ if (toolingResult.success) {
263
+ p.log.success("Claude tooling installed (Context7, Sequential Thinking)");
264
+ if (process.stdout.isTTY) {
265
+ p.log.info("Setting up Claude Code status line...");
266
+ runCcstatusline();
267
+ }
268
+ }
269
+ else {
270
+ p.log.warn(`Claude tooling setup skipped: ${toolingResult.warning}`);
271
+ }
263
272
  let nextSteps;
264
273
  if (isCwd) {
265
274
  nextSteps = [
@@ -312,6 +321,43 @@ async function main() {
312
321
  interruption.uninstall();
313
322
  return;
314
323
  }
324
+ if (arg === "daemon") {
325
+ const subcommand = process.argv[3];
326
+ if (subcommand === "start") {
327
+ const portFlagIndex = process.argv.indexOf("--port");
328
+ let port = 7890;
329
+ if (portFlagIndex !== -1) {
330
+ const portValue = Number(process.argv[portFlagIndex + 1]);
331
+ if (Number.isNaN(portValue) || portValue < 1 || portValue > 65535) {
332
+ p.log.error("Invalid port number. Must be between 1 and 65535.");
333
+ process.exit(1);
334
+ }
335
+ port = portValue;
336
+ }
337
+ runDaemon(port);
338
+ return;
339
+ }
340
+ // No subcommand or unknown subcommand -- show daemon help
341
+ p.intro("meto-cli daemon -- local agent dispatcher");
342
+ p.note([
343
+ "Usage: meto-cli daemon <command> [options]",
344
+ "",
345
+ "Commands:",
346
+ " start Start the daemon WebSocket server",
347
+ "",
348
+ "Options:",
349
+ " --port <number> Port number (default: 7890)",
350
+ "",
351
+ "The daemon runs a WebSocket server on localhost that the",
352
+ "Meto cockpit connects to for:",
353
+ " - Reading project boards from local files",
354
+ " - Creating and moving tasks locally",
355
+ " - Dispatching Claude Code agent sessions",
356
+ " - Streaming agent output in real-time",
357
+ ].join("\n"), "Help");
358
+ p.outro("Run 'meto-cli daemon start' to launch the daemon.");
359
+ return;
360
+ }
315
361
  if (arg === "audit") {
316
362
  await runAudit();
317
363
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface ClaudeSettings {
2
+ enabledPlugins?: Record<string, boolean>;
3
+ mcpServers?: Record<string, {
4
+ command: string;
5
+ args: string[];
6
+ }>;
7
+ [key: string]: unknown;
8
+ }
9
+ export interface SetupResult {
10
+ success: boolean;
11
+ warning?: string;
12
+ }
13
+ export declare function mergeTooling(existing: ClaudeSettings): ClaudeSettings;
14
+ export declare function runCcstatusline(): void;
15
+ export declare function setupClaudeTooling(): Promise<SetupResult>;
16
+ //# sourceMappingURL=setup-claude-tooling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-claude-tooling.d.ts","sourceRoot":"","sources":["../../../src/cli/init/setup-claude-tooling.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACjE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4BD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAgBrE;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAW/D"}
@@ -0,0 +1,58 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { join, dirname } from "node:path";
4
+ import { spawnSync } from "node:child_process";
5
+ function claudeSettingsPath() {
6
+ return join(homedir(), ".claude", "settings.json");
7
+ }
8
+ async function readSettings(path) {
9
+ try {
10
+ const raw = await readFile(path, "utf-8");
11
+ return JSON.parse(raw);
12
+ }
13
+ catch (error) {
14
+ if (typeof error === "object" &&
15
+ error !== null &&
16
+ "code" in error &&
17
+ error.code === "ENOENT") {
18
+ return {};
19
+ }
20
+ throw error;
21
+ }
22
+ }
23
+ async function writeSettings(path, settings) {
24
+ await mkdir(dirname(path), { recursive: true });
25
+ await writeFile(path, JSON.stringify(settings, null, 4), "utf-8");
26
+ }
27
+ export function mergeTooling(existing) {
28
+ const result = { ...existing };
29
+ result.mcpServers = {
30
+ ...existing.mcpServers,
31
+ "context7": {
32
+ command: "npx",
33
+ args: ["-y", "@upstash/context7-mcp@latest"],
34
+ },
35
+ "sequential-thinking": {
36
+ command: "npx",
37
+ args: ["-y", "@modelcontextprotocol/server-sequential-thinking"],
38
+ },
39
+ };
40
+ return result;
41
+ }
42
+ export function runCcstatusline() {
43
+ spawnSync("npx", ["ccstatusline@latest"], { stdio: "inherit" });
44
+ }
45
+ export async function setupClaudeTooling() {
46
+ const path = claudeSettingsPath();
47
+ try {
48
+ const existing = await readSettings(path);
49
+ const merged = mergeTooling(existing);
50
+ await writeSettings(path, merged);
51
+ return { success: true };
52
+ }
53
+ catch (error) {
54
+ const msg = error instanceof Error ? error.message : String(error);
55
+ return { success: false, warning: `Could not update ~/.claude/settings.json: ${msg}` };
56
+ }
57
+ }
58
+ //# sourceMappingURL=setup-claude-tooling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-claude-tooling.js","sourceRoot":"","sources":["../../../src/cli/init/setup-claude-tooling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAa/C,SAAS,kBAAkB;IACzB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,MAAM,IAAI,KAAK;YACd,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAClD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,QAAwB;IACjE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAwB;IACnD,MAAM,MAAM,GAAmB,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/C,MAAM,CAAC,UAAU,GAAG;QAClB,GAAG,QAAQ,CAAC,UAAU;QACtB,UAAU,EAAE;YACV,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;SAC7C;QACD,qBAAqB,EAAE;YACrB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,kDAAkD,CAAC;SACjE;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,SAAS,CAAC,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,6CAA6C,GAAG,EAAE,EAAE,CAAC;IACzF,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { TaskItem, BoardSummary } from "./types.js";
2
+ /**
3
+ * Reads the full board from a project's local filesystem.
4
+ */
5
+ export declare function readBoard(projectPath: string): Promise<{
6
+ tasks: TaskItem[];
7
+ summary: BoardSummary;
8
+ }>;
9
+ /**
10
+ * Creates a new task by appending to tasks-todo.md.
11
+ */
12
+ export declare function createTask(projectPath: string, taskId: string, title: string, body: string): Promise<{
13
+ success: boolean;
14
+ error?: string;
15
+ }>;
16
+ /**
17
+ * Moves a task between board columns by editing local files.
18
+ */
19
+ export declare function moveTask(projectPath: string, taskId: string, fromColumn: string, toColumn: string): Promise<{
20
+ success: boolean;
21
+ error?: string;
22
+ }>;
23
+ //# sourceMappingURL=board.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/daemon/board.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsDzD;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAc1G;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/C;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B/C"}
@@ -0,0 +1,141 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ const COLUMNS = ["backlog", "todo", "in-progress", "in-testing", "done"];
4
+ const COLUMN_FILES = {
5
+ backlog: "ai/tasks/tasks-backlog.md",
6
+ todo: "ai/tasks/tasks-todo.md",
7
+ "in-progress": "ai/tasks/tasks-in-progress.md",
8
+ "in-testing": "ai/tasks/tasks-in-testing.md",
9
+ done: "ai/tasks/tasks-done.md",
10
+ };
11
+ /**
12
+ * Reads a file, returning empty string if it doesn't exist.
13
+ */
14
+ async function safeRead(path) {
15
+ try {
16
+ return await readFile(path, "utf-8");
17
+ }
18
+ catch {
19
+ return "";
20
+ }
21
+ }
22
+ /**
23
+ * Parses tasks from meto markdown format.
24
+ */
25
+ function parseTasks(content, column) {
26
+ const tasks = [];
27
+ const lines = content.split("\n");
28
+ let current = null;
29
+ for (const line of lines) {
30
+ const sliceMatch = line.match(/^## \[?(slice-\d+)\]?\s*[:\-—]?\s*(.*)/i);
31
+ if (sliceMatch) {
32
+ if (current) {
33
+ tasks.push({ id: current.id, title: current.title, body: current.bodyLines.join("\n").trim(), column });
34
+ }
35
+ current = { id: sliceMatch[1] ?? "unknown", title: sliceMatch[2]?.trim() ?? "", bodyLines: [] };
36
+ }
37
+ else if (line.startsWith("## ") && current) {
38
+ tasks.push({ id: current.id, title: current.title, body: current.bodyLines.join("\n").trim(), column });
39
+ const altTitle = line.replace(/^## /, "").trim();
40
+ current = { id: altTitle.toLowerCase().replace(/\s+/g, "-"), title: altTitle, bodyLines: [] };
41
+ }
42
+ else if (current) {
43
+ current.bodyLines.push(line);
44
+ }
45
+ }
46
+ if (current) {
47
+ tasks.push({ id: current.id, title: current.title, body: current.bodyLines.join("\n").trim(), column });
48
+ }
49
+ return tasks;
50
+ }
51
+ /**
52
+ * Reads the full board from a project's local filesystem.
53
+ */
54
+ export async function readBoard(projectPath) {
55
+ const allTasks = [];
56
+ const summary = { backlog: 0, todo: 0, "in-progress": 0, "in-testing": 0, done: 0 };
57
+ for (const column of COLUMNS) {
58
+ const file = COLUMN_FILES[column];
59
+ const filePath = join(projectPath, file);
60
+ const content = await safeRead(filePath);
61
+ const tasks = parseTasks(content, column);
62
+ allTasks.push(...tasks);
63
+ summary[column] = tasks.length;
64
+ }
65
+ return { tasks: allTasks, summary };
66
+ }
67
+ /**
68
+ * Creates a new task by appending to tasks-todo.md.
69
+ */
70
+ export async function createTask(projectPath, taskId, title, body) {
71
+ const filePath = join(projectPath, COLUMN_FILES["todo"]);
72
+ const existing = await safeRead(filePath);
73
+ const taskBlock = `\n## [${taskId}] ${title}\n\n${body}\n`;
74
+ const newContent = existing.trimEnd() + "\n" + taskBlock;
75
+ try {
76
+ await writeFile(filePath, newContent, "utf-8");
77
+ return { success: true };
78
+ }
79
+ catch (err) {
80
+ const msg = err instanceof Error ? err.message : "Unknown error";
81
+ return { success: false, error: msg };
82
+ }
83
+ }
84
+ /**
85
+ * Moves a task between board columns by editing local files.
86
+ */
87
+ export async function moveTask(projectPath, taskId, fromColumn, toColumn) {
88
+ const sourceFile = COLUMN_FILES[fromColumn];
89
+ const destFile = COLUMN_FILES[toColumn];
90
+ if (!sourceFile || !destFile) {
91
+ return { success: false, error: "Invalid column" };
92
+ }
93
+ const sourcePath = join(projectPath, sourceFile);
94
+ const destPath = join(projectPath, destFile);
95
+ const sourceContent = await safeRead(sourcePath);
96
+ const { remaining, extracted } = extractTaskBlock(sourceContent, taskId);
97
+ if (!extracted) {
98
+ return { success: false, error: `Task ${taskId} not found in ${fromColumn}` };
99
+ }
100
+ try {
101
+ await writeFile(sourcePath, remaining, "utf-8");
102
+ const destContent = await safeRead(destPath);
103
+ const newDest = destContent.trimEnd() + "\n\n" + extracted.trim() + "\n";
104
+ await writeFile(destPath, newDest, "utf-8");
105
+ return { success: true };
106
+ }
107
+ catch (err) {
108
+ const msg = err instanceof Error ? err.message : "Unknown error";
109
+ return { success: false, error: msg };
110
+ }
111
+ }
112
+ function extractTaskBlock(content, taskId) {
113
+ const lines = content.split("\n");
114
+ let inTask = false;
115
+ let taskStart = -1;
116
+ let taskEnd = lines.length;
117
+ for (let i = 0; i < lines.length; i++) {
118
+ const line = lines[i] ?? "";
119
+ if (line.startsWith("## ")) {
120
+ if (inTask) {
121
+ taskEnd = i;
122
+ break;
123
+ }
124
+ const idMatch = line.match(/\[?(slice-\d+)\]?/i);
125
+ if (idMatch && idMatch[1]?.toLowerCase() === taskId.toLowerCase()) {
126
+ inTask = true;
127
+ taskStart = i;
128
+ }
129
+ }
130
+ }
131
+ if (taskStart === -1) {
132
+ return { remaining: content, extracted: null };
133
+ }
134
+ const extracted = lines.slice(taskStart, taskEnd).join("\n");
135
+ const remaining = [...lines.slice(0, taskStart), ...lines.slice(taskEnd)]
136
+ .join("\n")
137
+ .replace(/\n{3,}/g, "\n\n")
138
+ .trim() + "\n";
139
+ return { remaining, extracted };
140
+ }
141
+ //# sourceMappingURL=board.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/daemon/board.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { SessionInfo } from "./types.js";
2
+ type EventCallback = (sessionId: string, event: string) => void;
3
+ type CompleteCallback = (sessionId: string, exitCode: number) => void;
4
+ type ErrorCallback = (sessionId: string, error: string) => void;
5
+ /**
6
+ * Dispatches a Claude Code session in the given project directory.
7
+ * Spawns `claude -p "prompt" --output-format stream-json` and streams output.
8
+ */
9
+ export declare function dispatch(projectPath: string, agent: string, prompt: string, onEvent: EventCallback, onComplete: CompleteCallback, onError: ErrorCallback): {
10
+ sessionId: string;
11
+ pid: number;
12
+ } | {
13
+ error: string;
14
+ };
15
+ /**
16
+ * Cancels an active session by killing the process.
17
+ */
18
+ export declare function cancelSession(sessionId: string): boolean;
19
+ /**
20
+ * Returns info about all active sessions.
21
+ */
22
+ export declare function getActiveSessions(): SessionInfo[];
23
+ export {};
24
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/daemon/dispatcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAW9C,KAAK,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAChE,KAAK,gBAAgB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AACtE,KAAK,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAIhE;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,aAAa,GACrB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAqExD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,EAAE,CAQjD"}
@@ -0,0 +1,90 @@
1
+ import { spawn } from "node:child_process";
2
+ import { randomUUID } from "node:crypto";
3
+ const activeSessions = new Map();
4
+ /**
5
+ * Dispatches a Claude Code session in the given project directory.
6
+ * Spawns `claude -p "prompt" --output-format stream-json` and streams output.
7
+ */
8
+ export function dispatch(projectPath, agent, prompt, onEvent, onComplete, onError) {
9
+ // Check if this project already has an active session
10
+ for (const session of activeSessions.values()) {
11
+ if (session.projectPath === projectPath) {
12
+ return { error: `Project already has an active session (${session.id})` };
13
+ }
14
+ }
15
+ const sessionId = randomUUID();
16
+ const args = ["-p", prompt, "--verbose", "--output-format", "stream-json"];
17
+ const child = spawn("claude", args, {
18
+ cwd: projectPath,
19
+ env: { ...process.env },
20
+ stdio: ["ignore", "pipe", "pipe"],
21
+ });
22
+ if (!child.pid) {
23
+ return { error: "Failed to spawn claude process. Is Claude Code installed?" };
24
+ }
25
+ const session = {
26
+ id: sessionId,
27
+ projectPath,
28
+ agent,
29
+ process: child,
30
+ pid: child.pid,
31
+ startedAt: new Date().toISOString(),
32
+ };
33
+ activeSessions.set(sessionId, session);
34
+ // Stream stdout line by line
35
+ let buffer = "";
36
+ child.stdout?.on("data", (chunk) => {
37
+ buffer += chunk.toString();
38
+ const lines = buffer.split("\n");
39
+ buffer = lines.pop() ?? "";
40
+ for (const line of lines) {
41
+ if (line.trim()) {
42
+ onEvent(sessionId, line);
43
+ }
44
+ }
45
+ });
46
+ // Capture stderr and forward to cockpit
47
+ child.stderr?.on("data", (chunk) => {
48
+ const text = chunk.toString().trim();
49
+ if (text) {
50
+ onEvent(sessionId, `[stderr] ${text}`);
51
+ }
52
+ });
53
+ child.on("close", (code) => {
54
+ // Flush remaining buffer
55
+ if (buffer.trim()) {
56
+ onEvent(sessionId, buffer.trim());
57
+ }
58
+ activeSessions.delete(sessionId);
59
+ onComplete(sessionId, code ?? 1);
60
+ });
61
+ child.on("error", (err) => {
62
+ activeSessions.delete(sessionId);
63
+ onError(sessionId, err.message);
64
+ });
65
+ return { sessionId, pid: child.pid };
66
+ }
67
+ /**
68
+ * Cancels an active session by killing the process.
69
+ */
70
+ export function cancelSession(sessionId) {
71
+ const session = activeSessions.get(sessionId);
72
+ if (!session)
73
+ return false;
74
+ session.process.kill("SIGTERM");
75
+ activeSessions.delete(sessionId);
76
+ return true;
77
+ }
78
+ /**
79
+ * Returns info about all active sessions.
80
+ */
81
+ export function getActiveSessions() {
82
+ return Array.from(activeSessions.values()).map((s) => ({
83
+ session_id: s.id,
84
+ project_path: s.projectPath,
85
+ agent: s.agent,
86
+ pid: s.pid,
87
+ started_at: s.startedAt,
88
+ }));
89
+ }
90
+ //# sourceMappingURL=dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/daemon/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Runs the meto daemon WebSocket server.
3
+ * The daemon stays running until terminated via SIGINT or SIGTERM.
4
+ */
5
+ export declare function runDaemon(port?: number): void;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAqB,GAAG,IAAI,CAE3D"}
@@ -0,0 +1,10 @@
1
+ import { startServer } from "./server.js";
2
+ const DEFAULT_PORT = 7890;
3
+ /**
4
+ * Runs the meto daemon WebSocket server.
5
+ * The daemon stays running until terminated via SIGINT or SIGTERM.
6
+ */
7
+ export function runDaemon(port = DEFAULT_PORT) {
8
+ startServer(port);
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,YAAY;IACnD,WAAW,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Starts the daemon WebSocket server.
3
+ */
4
+ export declare function startServer(port: number): void;
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAyFA;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAyC9C"}
@@ -0,0 +1,109 @@
1
+ import { WebSocketServer } from "ws";
2
+ import { readBoard, createTask, moveTask } from "./board.js";
3
+ import { dispatch, cancelSession, getActiveSessions } from "./dispatcher.js";
4
+ function send(ws, msg) {
5
+ if (ws.readyState === ws.OPEN) {
6
+ ws.send(JSON.stringify(msg));
7
+ }
8
+ }
9
+ /**
10
+ * Handles a single message from the cockpit/dashboard.
11
+ */
12
+ async function handleMessage(ws, raw) {
13
+ let msg;
14
+ try {
15
+ msg = JSON.parse(raw);
16
+ }
17
+ catch {
18
+ send(ws, { type: "error", message: "Invalid JSON" });
19
+ return;
20
+ }
21
+ switch (msg.type) {
22
+ case "ping": {
23
+ send(ws, { type: "pong" });
24
+ break;
25
+ }
26
+ case "status": {
27
+ send(ws, { type: "status_response", active_sessions: getActiveSessions() });
28
+ break;
29
+ }
30
+ case "read_board": {
31
+ const { tasks, summary } = await readBoard(msg.project_path);
32
+ send(ws, { type: "board_result", id: msg.id, tasks, summary });
33
+ break;
34
+ }
35
+ case "create_task": {
36
+ const result = await createTask(msg.project_path, msg.task_id, msg.title, msg.body);
37
+ send(ws, { type: "task_created", id: msg.id, success: result.success, error: result.error });
38
+ break;
39
+ }
40
+ case "move_task": {
41
+ const result = await moveTask(msg.project_path, msg.task_id, msg.from, msg.to);
42
+ send(ws, { type: "task_moved", id: msg.id, success: result.success, error: result.error });
43
+ break;
44
+ }
45
+ case "dispatch": {
46
+ const result = dispatch(msg.project_path, msg.agent, msg.prompt, (sessionId, data) => send(ws, { type: "stream_event", session_id: sessionId, data }), (sessionId, exitCode) => send(ws, { type: "session_completed", session_id: sessionId, exit_code: exitCode }), (sessionId, error) => send(ws, { type: "session_error", session_id: sessionId, error }));
47
+ if ("error" in result) {
48
+ send(ws, { type: "error", message: result.error });
49
+ }
50
+ else {
51
+ send(ws, {
52
+ type: "session_started",
53
+ session_id: result.sessionId,
54
+ project_path: msg.project_path,
55
+ pid: result.pid,
56
+ });
57
+ }
58
+ break;
59
+ }
60
+ case "cancel": {
61
+ const cancelled = cancelSession(msg.session_id);
62
+ if (!cancelled) {
63
+ send(ws, { type: "error", message: `Session ${msg.session_id} not found` });
64
+ }
65
+ break;
66
+ }
67
+ default: {
68
+ send(ws, { type: "error", message: "Unknown message type" });
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Starts the daemon WebSocket server.
74
+ */
75
+ export function startServer(port) {
76
+ const wss = new WebSocketServer({ host: "127.0.0.1", port });
77
+ process.stdout.write(`\n meto daemon running on ws://127.0.0.1:${port}\n\n`);
78
+ process.stdout.write(` waiting for cockpit connection...\n\n`);
79
+ wss.on("connection", (ws) => {
80
+ process.stdout.write(` cockpit connected\n`);
81
+ ws.on("message", (data) => {
82
+ void handleMessage(ws, data.toString());
83
+ });
84
+ ws.on("close", () => {
85
+ process.stdout.write(` cockpit disconnected\n`);
86
+ });
87
+ ws.on("error", (err) => {
88
+ process.stderr.write(` websocket error: ${err.message}\n`);
89
+ });
90
+ });
91
+ wss.on("error", (err) => {
92
+ if (err.code === "EADDRINUSE") {
93
+ process.stderr.write(`\n error: port ${port} already in use. is another daemon running?\n\n`);
94
+ process.exit(1);
95
+ }
96
+ process.stderr.write(` server error: ${err.message}\n`);
97
+ });
98
+ // Graceful shutdown
99
+ process.on("SIGINT", () => {
100
+ process.stdout.write(`\n shutting down daemon...\n`);
101
+ wss.close();
102
+ process.exit(0);
103
+ });
104
+ process.on("SIGTERM", () => {
105
+ wss.close();
106
+ process.exit(0);
107
+ });
108
+ }
109
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /** Messages FROM the cockpit/dashboard TO the daemon */
2
+ export type CockpitMessage = {
3
+ type: "dispatch";
4
+ id: string;
5
+ project_path: string;
6
+ agent: string;
7
+ prompt: string;
8
+ } | {
9
+ type: "cancel";
10
+ session_id: string;
11
+ } | {
12
+ type: "read_board";
13
+ id: string;
14
+ project_path: string;
15
+ } | {
16
+ type: "create_task";
17
+ id: string;
18
+ project_path: string;
19
+ task_id: string;
20
+ title: string;
21
+ body: string;
22
+ } | {
23
+ type: "move_task";
24
+ id: string;
25
+ project_path: string;
26
+ task_id: string;
27
+ from: string;
28
+ to: string;
29
+ } | {
30
+ type: "ping";
31
+ } | {
32
+ type: "status";
33
+ };
34
+ /** Messages FROM the daemon TO the cockpit/dashboard */
35
+ export type DaemonMessage = {
36
+ type: "session_started";
37
+ session_id: string;
38
+ project_path: string;
39
+ pid: number;
40
+ } | {
41
+ type: "stream_event";
42
+ session_id: string;
43
+ data: string;
44
+ } | {
45
+ type: "session_completed";
46
+ session_id: string;
47
+ exit_code: number;
48
+ } | {
49
+ type: "session_error";
50
+ session_id: string;
51
+ error: string;
52
+ } | {
53
+ type: "board_result";
54
+ id: string;
55
+ tasks: TaskItem[];
56
+ summary: BoardSummary;
57
+ } | {
58
+ type: "task_created";
59
+ id: string;
60
+ success: boolean;
61
+ error?: string;
62
+ } | {
63
+ type: "task_moved";
64
+ id: string;
65
+ success: boolean;
66
+ error?: string;
67
+ } | {
68
+ type: "pong";
69
+ } | {
70
+ type: "status_response";
71
+ active_sessions: SessionInfo[];
72
+ } | {
73
+ type: "error";
74
+ message: string;
75
+ };
76
+ export interface SessionInfo {
77
+ session_id: string;
78
+ project_path: string;
79
+ agent: string;
80
+ pid: number;
81
+ started_at: string;
82
+ }
83
+ export interface TaskItem {
84
+ id: string;
85
+ title: string;
86
+ body: string;
87
+ column: string;
88
+ }
89
+ export interface BoardSummary {
90
+ backlog: number;
91
+ todo: number;
92
+ "in-progress": number;
93
+ "in-testing": number;
94
+ done: number;
95
+ }
96
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/daemon/types.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,wDAAwD;AACxD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,eAAe,EAAE,WAAW,EAAE,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/daemon/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meto-cli",
3
- "version": "0.11.3",
3
+ "version": "0.12.0",
4
4
  "description": "Scaffold structured software projects with built-in methodology",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,10 +37,12 @@
37
37
  "node": ">=18.0.0"
38
38
  },
39
39
  "dependencies": {
40
- "@clack/prompts": "^0.9.1"
40
+ "@clack/prompts": "^0.9.1",
41
+ "ws": "^8.19.0"
41
42
  },
42
43
  "devDependencies": {
43
44
  "@types/node": "^22.13.0",
45
+ "@types/ws": "^8.18.1",
44
46
  "typescript": "^5.7.0",
45
47
  "vitest": "^4.0.18"
46
48
  }
@@ -4,6 +4,14 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## Red Flags — Stop Before Acting
8
+
9
+ - Writing implementation code before a failing test exists → write the test first
10
+ - Third fix attempt on the same bug hasn't worked → stop, re-read the spec, re-plan
11
+ - About to claim a task is done without running the verification command this session → run it first
12
+ - Touching files outside the task's stated scope → flag it, don't silently expand
13
+ - Hardcoding content that should come from a template or config → read from source
14
+
7
15
  ## Active Decisions
8
16
  <!-- Architecture or implementation decisions in progress -->
9
17
 
@@ -4,6 +4,14 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## Red Flags — Stop Before Acting
8
+
9
+ - Slicing without clarifying ambiguous requirements → run clarification process first (`ai/workflows/pm-clarification-process.md`)
10
+ - Creating slices larger than M → break them down
11
+ - Writing acceptance criteria with vague language ("works well", "looks good") → make them testable
12
+ - Re-debating a settled decision from `decisions.md` → flag the conflict instead
13
+ - Touching Layer 2 (`/templates/`) logic from a Layer 1 task → split into separate slices
14
+
7
15
  ## Active Decisions
8
16
  <!-- Decisions in progress — move to decisions.md once finalized -->
9
17
 
@@ -4,6 +4,13 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## Review Conduct
8
+
9
+ - **No performative acceptance** — never say "you're absolutely right" and immediately implement without evaluating.
10
+ - **Push back with reasoning** — flag technical disagreements with an argument, not just compliance.
11
+ - **Clarify before acting** — unclear requirement? Ask one specific question rather than testing the wrong thing.
12
+ - **Evidence over assertion** — show the command output when marking pass/fail. Never claim tests pass without running them this session.
13
+
7
14
  ## Active Decisions
8
15
  <!-- Testing approach decisions in progress -->
9
16
 
@@ -89,6 +89,16 @@ Teammates do NOT inherit the lead's conversation history. Each teammate reads CL
89
89
 
90
90
  ---
91
91
 
92
+ ## Workflow Rules
93
+
94
+ - **Plan first:** For any task with 3+ steps or architectural decisions, enter plan mode before writing code. If something goes sideways, STOP and re-plan.
95
+ - **Test first, always:** Write the failing test before implementation. Watch it fail, then make it pass. Code written before a test = delete and restart.
96
+ - **Systematic debugging:** Root-cause first — read the error, trace the call, form a hypothesis. If 3 distinct fixes fail, stop and re-plan rather than trying a fourth.
97
+ - **Verify before done:** Never mark a task complete without running the verification command in the current session. No verbal claims — show the output.
98
+ - **Minimal impact:** Changes touch only what's necessary. No temporary fixes — find root causes.
99
+
100
+ ---
101
+
92
102
  ## Commit Format
93
103
 
94
104
  ```