@yattalo/task-system 0.1.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 (94) hide show
  1. package/README.md +66 -0
  2. package/dist/commands/dashboard.d.ts +7 -0
  3. package/dist/commands/dashboard.d.ts.map +1 -0
  4. package/dist/commands/dashboard.js +30 -0
  5. package/dist/commands/dashboard.js.map +1 -0
  6. package/dist/commands/init.d.ts +8 -0
  7. package/dist/commands/init.d.ts.map +1 -0
  8. package/dist/commands/init.js +316 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/commands/kanban.d.ts +7 -0
  11. package/dist/commands/kanban.d.ts.map +1 -0
  12. package/dist/commands/kanban.js +68 -0
  13. package/dist/commands/kanban.js.map +1 -0
  14. package/dist/commands/report.d.ts +8 -0
  15. package/dist/commands/report.d.ts.map +1 -0
  16. package/dist/commands/report.js +60 -0
  17. package/dist/commands/report.js.map +1 -0
  18. package/dist/commands/seed.d.ts +6 -0
  19. package/dist/commands/seed.d.ts.map +1 -0
  20. package/dist/commands/seed.js +30 -0
  21. package/dist/commands/seed.js.map +1 -0
  22. package/dist/commands/status.d.ts +6 -0
  23. package/dist/commands/status.d.ts.map +1 -0
  24. package/dist/commands/status.js +62 -0
  25. package/dist/commands/status.js.map +1 -0
  26. package/dist/generators/agent-ops-scripts.d.ts +8 -0
  27. package/dist/generators/agent-ops-scripts.d.ts.map +1 -0
  28. package/dist/generators/agent-ops-scripts.js +843 -0
  29. package/dist/generators/agent-ops-scripts.js.map +1 -0
  30. package/dist/generators/agent-ops.d.ts +6 -0
  31. package/dist/generators/agent-ops.d.ts.map +1 -0
  32. package/dist/generators/agent-ops.js +290 -0
  33. package/dist/generators/agent-ops.js.map +1 -0
  34. package/dist/generators/claude-hooks.d.ts +6 -0
  35. package/dist/generators/claude-hooks.d.ts.map +1 -0
  36. package/dist/generators/claude-hooks.js +260 -0
  37. package/dist/generators/claude-hooks.js.map +1 -0
  38. package/dist/generators/cli-aliases.d.ts +6 -0
  39. package/dist/generators/cli-aliases.d.ts.map +1 -0
  40. package/dist/generators/cli-aliases.js +187 -0
  41. package/dist/generators/cli-aliases.js.map +1 -0
  42. package/dist/generators/dashboard.d.ts +6 -0
  43. package/dist/generators/dashboard.d.ts.map +1 -0
  44. package/dist/generators/dashboard.js +732 -0
  45. package/dist/generators/dashboard.js.map +1 -0
  46. package/dist/generators/git-hook.d.ts +6 -0
  47. package/dist/generators/git-hook.d.ts.map +1 -0
  48. package/dist/generators/git-hook.js +163 -0
  49. package/dist/generators/git-hook.js.map +1 -0
  50. package/dist/generators/http.d.ts +6 -0
  51. package/dist/generators/http.d.ts.map +1 -0
  52. package/dist/generators/http.js +175 -0
  53. package/dist/generators/http.js.map +1 -0
  54. package/dist/generators/orchestrator.d.ts +6 -0
  55. package/dist/generators/orchestrator.d.ts.map +1 -0
  56. package/dist/generators/orchestrator.js +391 -0
  57. package/dist/generators/orchestrator.js.map +1 -0
  58. package/dist/generators/schema.d.ts +8 -0
  59. package/dist/generators/schema.d.ts.map +1 -0
  60. package/dist/generators/schema.js +470 -0
  61. package/dist/generators/schema.js.map +1 -0
  62. package/dist/generators/skill.d.ts +6 -0
  63. package/dist/generators/skill.d.ts.map +1 -0
  64. package/dist/generators/skill.js +147 -0
  65. package/dist/generators/skill.js.map +1 -0
  66. package/dist/generators/slash-commands.d.ts +6 -0
  67. package/dist/generators/slash-commands.d.ts.map +1 -0
  68. package/dist/generators/slash-commands.js +268 -0
  69. package/dist/generators/slash-commands.js.map +1 -0
  70. package/dist/generators/tasks.d.ts +6 -0
  71. package/dist/generators/tasks.d.ts.map +1 -0
  72. package/dist/generators/tasks.js +451 -0
  73. package/dist/generators/tasks.js.map +1 -0
  74. package/dist/index.d.ts +3 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +54 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/presets/research.d.ts +3 -0
  79. package/dist/presets/research.d.ts.map +1 -0
  80. package/dist/presets/research.js +56 -0
  81. package/dist/presets/research.js.map +1 -0
  82. package/dist/presets/software.d.ts +3 -0
  83. package/dist/presets/software.d.ts.map +1 -0
  84. package/dist/presets/software.js +56 -0
  85. package/dist/presets/software.js.map +1 -0
  86. package/dist/utils/detect.d.ts +3 -0
  87. package/dist/utils/detect.d.ts.map +1 -0
  88. package/dist/utils/detect.js +76 -0
  89. package/dist/utils/detect.js.map +1 -0
  90. package/dist/utils/merge.d.ts +14 -0
  91. package/dist/utils/merge.d.ts.map +1 -0
  92. package/dist/utils/merge.js +43 -0
  93. package/dist/utils/merge.js.map +1 -0
  94. package/package.json +39 -0
package/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # @yattalo/task-system
2
+
3
+ Portable multi-agent task orchestration scaffold for Convex projects. Generates a complete task management system with a single command.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npx @yattalo/task-system init
9
+ ```
10
+
11
+ Or install globally:
12
+
13
+ ```bash
14
+ npm install -g @yattalo/task-system
15
+ ```
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ # Scaffold with software preset (Claude + Gemini + Codex agents)
21
+ npx @yattalo/task-system init --preset software
22
+
23
+ # Scaffold with research preset (4 agents, confidence tracking)
24
+ npx @yattalo/task-system init --preset research
25
+
26
+ # Dry run (preview without writing files)
27
+ npx @yattalo/task-system init --preset software --dry-run
28
+ ```
29
+
30
+ ## What Gets Generated
31
+
32
+ | Layer | Files | Description |
33
+ |-------|-------|-------------|
34
+ | Schema | `convex/taskSystem/schema.ts` | Convex table definitions |
35
+ | CRUD | `convex/taskSystem/tasks.ts` | Queries and mutations |
36
+ | Orchestrator | `convex/taskSystem/orchestrator.ts` | Task lifecycle, auto-blocking |
37
+ | HTTP API | `convex/taskSystem/http.ts` | REST endpoints |
38
+ | Dashboard | `dashboard.html` | Standalone Kanban board |
39
+ | Agent-Ops | `convex/taskSystem/agentOps.ts` + scripts | Job scheduling (optional) |
40
+ | Git Hook | `scripts/auto-task-tracker.js` | Auto-update tasks on commit |
41
+ | Skill | `.claude/skills/task-orchestrator/SKILL.md` | Claude Code integration |
42
+
43
+ ## Commands
44
+
45
+ | Command | Description |
46
+ |---------|-------------|
47
+ | `init` | Scaffold task system into a project |
48
+ | `seed` | Import task definitions into Convex |
49
+ | `status` | Show task stats in terminal |
50
+ | `kanban` | Show Kanban board in terminal |
51
+ | `dashboard` | Serve HTML dashboard in browser |
52
+ | `report` | Generate markdown report |
53
+
54
+ ## Presets
55
+
56
+ ### Software
57
+
58
+ 3 agents (Claude, Gemini, Codex), 7 categories, 5 phases. Extensions: commit tracking, scope creep detection, code review findings, agent-ops.
59
+
60
+ ### Research
61
+
62
+ 4 agents (Claude, Codex, Gemini, Antigravity), 6 categories, 5 phases. Extensions: confidence tracking, evidence tracker, handoff log, checkpoint log.
63
+
64
+ ## License
65
+
66
+ MIT
@@ -0,0 +1,7 @@
1
+ interface DashboardOptions {
2
+ dir?: string;
3
+ port?: string;
4
+ }
5
+ export declare function dashboardCommand(options: DashboardOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAUA,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B/E"}
@@ -0,0 +1,30 @@
1
+ // ============================================================
2
+ // Command: dashboard — Serve HTML dashboard in browser
3
+ // ============================================================
4
+ import { createServer } from "node:http";
5
+ import { existsSync, readFileSync } from "node:fs";
6
+ import { join, resolve } from "node:path";
7
+ import chalk from "chalk";
8
+ import open from "open";
9
+ export async function dashboardCommand(options) {
10
+ const targetDir = resolve(options.dir ?? process.cwd());
11
+ const port = parseInt(options.port ?? "3456", 10);
12
+ const dashboardPath = join(targetDir, "dashboard.html");
13
+ if (!existsSync(dashboardPath)) {
14
+ console.error(chalk.red(`\nNo dashboard.html found at ${dashboardPath}\nRun 'npx @yattalo/task-system init' first.\n`));
15
+ process.exit(1);
16
+ }
17
+ const html = readFileSync(dashboardPath, "utf-8");
18
+ const server = createServer((_req, res) => {
19
+ res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
20
+ res.end(html);
21
+ });
22
+ server.listen(port, () => {
23
+ const url = `http://localhost:${port}`;
24
+ console.log(chalk.bold(`\n@yattalo/task-system — Dashboard\n`));
25
+ console.log(chalk.cyan(` Serving at ${url}\n`));
26
+ console.log(chalk.dim(" Press Ctrl+C to stop.\n"));
27
+ open(url);
28
+ });
29
+ }
30
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uDAAuD;AACvD,+DAA+D;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAOxB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAyB;IAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,gCAAgC,aAAa,gDAAgD,CAC9F,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACxC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface InitOptions {
2
+ preset?: string;
3
+ dir?: string;
4
+ dryRun?: boolean;
5
+ }
6
+ export declare function initCommand(options: InitOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAgCA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6LrE"}
@@ -0,0 +1,316 @@
1
+ // ============================================================
2
+ // Command: init — Scaffold task system into a project
3
+ // ============================================================
4
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
5
+ import { join, resolve } from "node:path";
6
+ import chalk from "chalk";
7
+ import ora from "ora";
8
+ import prompts from "prompts";
9
+ import { defineConfig, validateConfig, } from "@yattalo/task-system-core";
10
+ import { softwarePreset } from "../presets/software.js";
11
+ import { researchPreset } from "../presets/research.js";
12
+ import { detectProject } from "../utils/detect.js";
13
+ import { getSchemaMergeInstructions, isSchemaAlreadyMerged } from "../utils/merge.js";
14
+ import { generateSchema } from "../generators/schema.js";
15
+ import { generateTasks } from "../generators/tasks.js";
16
+ import { generateOrchestrator } from "../generators/orchestrator.js";
17
+ import { generateHttp } from "../generators/http.js";
18
+ import { generateDashboard } from "../generators/dashboard.js";
19
+ import { generateGitHook } from "../generators/git-hook.js";
20
+ import { generateSkill } from "../generators/skill.js";
21
+ import { generateSlashCommands } from "../generators/slash-commands.js";
22
+ import { generateClaudeHooks } from "../generators/claude-hooks.js";
23
+ import { generateCliAliases } from "../generators/cli-aliases.js";
24
+ import { generateAgentOps } from "../generators/agent-ops.js";
25
+ import { generateAgentOpsScripts } from "../generators/agent-ops-scripts.js";
26
+ export async function initCommand(options) {
27
+ const targetDir = resolve(options.dir ?? process.cwd());
28
+ console.log(chalk.bold("\n@yattalo/task-system — Init\n"));
29
+ // Detect project
30
+ const spinner = ora("Detecting project setup...").start();
31
+ const detection = detectProject(targetDir);
32
+ spinner.succeed("Project detected");
33
+ console.log(chalk.dim(` Convex: ${detection.hasConvex ? "yes" : "no"} | Git: ${detection.hasGit ? "yes" : "no"} | Framework: ${detection.framework ?? "n/a"} | PM: ${detection.packageManager ?? "n/a"}`));
34
+ if (!detection.hasConvex) {
35
+ console.log(chalk.yellow("\n Warning: No convex/ directory found. Generated Convex files will need a Convex setup.\n"));
36
+ }
37
+ // Get config
38
+ let config;
39
+ if (options.preset === "software") {
40
+ config = defineConfig({ ...softwarePreset, projectName: getProjectName(targetDir) });
41
+ console.log(chalk.cyan(" Using preset: software\n"));
42
+ }
43
+ else if (options.preset === "research") {
44
+ config = defineConfig({ ...researchPreset, projectName: getProjectName(targetDir) });
45
+ console.log(chalk.cyan(" Using preset: research\n"));
46
+ }
47
+ else {
48
+ config = await interactiveWizard(targetDir);
49
+ }
50
+ // Validate
51
+ try {
52
+ validateConfig(config);
53
+ }
54
+ catch (err) {
55
+ console.error(chalk.red("\nConfig validation failed:"));
56
+ console.error(err);
57
+ process.exit(1);
58
+ }
59
+ const ctx = {
60
+ config,
61
+ targetDir,
62
+ detection,
63
+ preset: options.preset,
64
+ dryRun: options.dryRun,
65
+ };
66
+ if (options.dryRun) {
67
+ console.log(chalk.yellow("\n DRY RUN — No files will be written\n"));
68
+ }
69
+ // Generate files
70
+ const subDir = "taskSystem";
71
+ const convexOut = join(targetDir, "convex", subDir);
72
+ const scriptsOut = join(targetDir, "scripts");
73
+ const claudeOut = join(targetDir, ".claude", "skills", "task-orchestrator");
74
+ if (!options.dryRun) {
75
+ mkdirSync(convexOut, { recursive: true });
76
+ mkdirSync(scriptsOut, { recursive: true });
77
+ mkdirSync(claudeOut, { recursive: true });
78
+ mkdirSync(join(targetDir, ".claude", "commands"), { recursive: true });
79
+ mkdirSync(join(targetDir, ".claude", "hooks"), { recursive: true });
80
+ if (config.extensions.agentOps) {
81
+ mkdirSync(join(scriptsOut, "agent-ops"), { recursive: true });
82
+ }
83
+ }
84
+ const results = [];
85
+ // Layer 0: Schema
86
+ const schemaSpinner = ora("Generating schema...").start();
87
+ const schemaResult = generateSchema(ctx);
88
+ results.push(schemaResult);
89
+ schemaSpinner.succeed(`Schema: ${schemaResult.file} (${schemaResult.lines} lines)`);
90
+ // Layer 1: CRUD tasks
91
+ const tasksSpinner = ora("Generating tasks CRUD...").start();
92
+ const tasksResult = generateTasks(ctx);
93
+ results.push(tasksResult);
94
+ tasksSpinner.succeed(`Tasks: ${tasksResult.file} (${tasksResult.lines} lines)`);
95
+ // Layer 2: Orchestrator
96
+ const orchSpinner = ora("Generating orchestrator...").start();
97
+ const orchResult = generateOrchestrator(ctx);
98
+ results.push(orchResult);
99
+ orchSpinner.succeed(`Orchestrator: ${orchResult.file} (${orchResult.lines} lines)`);
100
+ // Layer 3: HTTP API + Dashboard
101
+ const httpSpinner = ora("Generating HTTP API...").start();
102
+ const httpResult = generateHttp(ctx);
103
+ results.push(httpResult);
104
+ httpSpinner.succeed(`HTTP API: ${httpResult.file} (${httpResult.lines} lines)`);
105
+ const dashSpinner = ora("Generating dashboard...").start();
106
+ const dashResult = generateDashboard(ctx);
107
+ results.push(dashResult);
108
+ dashSpinner.succeed(`Dashboard: ${dashResult.file} (${dashResult.lines} lines)`);
109
+ // Layer 4: Agent-Ops (if enabled)
110
+ if (config.extensions.agentOps) {
111
+ const aopsSpinner = ora("Generating Agent-Ops backend...").start();
112
+ const aopsResult = generateAgentOps(ctx);
113
+ results.push(aopsResult);
114
+ aopsSpinner.succeed(`Agent-Ops: ${aopsResult.file} (${aopsResult.lines} lines)`);
115
+ const aopsScriptsSpinner = ora("Generating Agent-Ops scripts...").start();
116
+ const aopsScriptsResults = generateAgentOpsScripts(ctx);
117
+ results.push(...aopsScriptsResults);
118
+ aopsScriptsSpinner.succeed(`Agent-Ops scripts: ${aopsScriptsResults.length} files (${aopsScriptsResults.reduce((a, r) => a + r.lines, 0)} lines)`);
119
+ }
120
+ // Layer 5: Git hook + Claude skill
121
+ const hookSpinner = ora("Generating git hook...").start();
122
+ const hookResult = generateGitHook(ctx);
123
+ results.push(hookResult);
124
+ hookSpinner.succeed(`Git hook: ${hookResult.file} (${hookResult.lines} lines)`);
125
+ const skillSpinner = ora("Generating Claude skill...").start();
126
+ const skillResult = generateSkill(ctx);
127
+ results.push(skillResult);
128
+ skillSpinner.succeed(`Claude skill: ${skillResult.file} (${skillResult.lines} lines)`);
129
+ // Layer 5b: Claude Code slash commands
130
+ const slashSpinner = ora("Generating Claude slash commands...").start();
131
+ const slashResults = generateSlashCommands(ctx);
132
+ results.push(...slashResults);
133
+ slashSpinner.succeed(`Slash commands: ${slashResults.length} files (${slashResults.reduce((a, r) => a + r.lines, 0)} lines)`);
134
+ // Layer 5c: Claude Code hooks
135
+ const hooksSpinner = ora("Generating Claude hooks...").start();
136
+ const hooksResults = generateClaudeHooks(ctx);
137
+ results.push(...hooksResults);
138
+ hooksSpinner.succeed(`Claude hooks: ${hooksResults.length} files (${hooksResults.reduce((a, r) => a + r.lines, 0)} lines)`);
139
+ // Layer 5d: CLI aliases
140
+ const aliasesSpinner = ora("Generating CLI aliases...").start();
141
+ const aliasesResult = generateCliAliases(ctx);
142
+ results.push(aliasesResult);
143
+ aliasesSpinner.succeed(`CLI aliases: ${aliasesResult.file} (${aliasesResult.lines} lines)`);
144
+ // Generate config file + task definitions template
145
+ const configSpinner = ora("Generating config files...").start();
146
+ generateConfigFile(ctx);
147
+ generateTaskDefinitionsFile(ctx);
148
+ configSpinner.succeed("Config + task definitions template generated");
149
+ // Summary
150
+ const totalLines = results.reduce((a, r) => a + r.lines, 0);
151
+ console.log(chalk.bold.green(`\nDone! Generated ${results.length} files (${totalLines} total lines)\n`));
152
+ // Schema merge instructions
153
+ if (detection.hasConvex && !isSchemaAlreadyMerged(join(targetDir, "convex"))) {
154
+ console.log(chalk.yellow("Next step — merge schema:"));
155
+ console.log(chalk.dim(getSchemaMergeInstructions(subDir)));
156
+ console.log();
157
+ }
158
+ console.log(chalk.dim("Files generated:"));
159
+ for (const r of results) {
160
+ console.log(chalk.dim(` ${r.file} (${r.lines} lines)`));
161
+ }
162
+ console.log(chalk.bold(`\nRun ${chalk.cyan("npx @yattalo/task-system seed")} to import your task definitions.\n`));
163
+ }
164
+ function getProjectName(dir) {
165
+ try {
166
+ const pkg = JSON.parse(require("node:fs").readFileSync(join(dir, "package.json"), "utf-8"));
167
+ return pkg.name?.replace(/^@[^/]+\//, "") ?? dir.split("/").pop() ?? "project";
168
+ }
169
+ catch {
170
+ return dir.split("/").pop() ?? "project";
171
+ }
172
+ }
173
+ async function interactiveWizard(targetDir) {
174
+ const responses = await prompts([
175
+ {
176
+ type: "text",
177
+ name: "projectName",
178
+ message: "Project name:",
179
+ initial: getProjectName(targetDir),
180
+ },
181
+ {
182
+ type: "select",
183
+ name: "presetBase",
184
+ message: "Start from a preset?",
185
+ choices: [
186
+ { title: "Software Development", value: "software" },
187
+ { title: "Market Research", value: "research" },
188
+ { title: "Blank (custom)", value: "blank" },
189
+ ],
190
+ },
191
+ {
192
+ type: "text",
193
+ name: "tableName",
194
+ message: "Convex table name:",
195
+ initial: "agentTasks",
196
+ },
197
+ {
198
+ type: "multiselect",
199
+ name: "extensions",
200
+ message: "Enable extensions:",
201
+ choices: [
202
+ { title: "Commit Tracking", value: "commitTracking", selected: true },
203
+ { title: "Scope Creep Detection", value: "scopeCreepDetection", selected: true },
204
+ { title: "Review Findings", value: "reviewFindings", selected: true },
205
+ { title: "Confidence Tracking", value: "confidenceTracking" },
206
+ { title: "Evidence Tracker", value: "evidenceTracker" },
207
+ { title: "Handoff Log", value: "handoffLog" },
208
+ { title: "Checkpoint Log", value: "checkpointLog" },
209
+ { title: "Agent-Ops (autonomous agents)", value: "agentOps", selected: true },
210
+ ],
211
+ },
212
+ ]);
213
+ if (!responses.projectName) {
214
+ console.log(chalk.red("Cancelled."));
215
+ process.exit(0);
216
+ }
217
+ // Use preset as base, then override
218
+ const base = responses.presetBase === "software"
219
+ ? softwarePreset
220
+ : responses.presetBase === "research"
221
+ ? researchPreset
222
+ : softwarePreset;
223
+ const extMap = {};
224
+ for (const ext of responses.extensions ?? []) {
225
+ extMap[ext] = true;
226
+ }
227
+ return defineConfig({
228
+ ...base,
229
+ projectName: responses.projectName,
230
+ tableName: responses.tableName || "agentTasks",
231
+ extensions: {
232
+ commitTracking: extMap["commitTracking"] ?? false,
233
+ scopeCreepDetection: extMap["scopeCreepDetection"] ?? false,
234
+ reviewFindings: extMap["reviewFindings"] ?? false,
235
+ confidenceTracking: extMap["confidenceTracking"] ?? false,
236
+ evidenceTracker: extMap["evidenceTracker"] ?? false,
237
+ handoffLog: extMap["handoffLog"] ?? false,
238
+ checkpointLog: extMap["checkpointLog"] ?? false,
239
+ agentOps: extMap["agentOps"] ?? false,
240
+ },
241
+ });
242
+ }
243
+ function generateConfigFile(ctx) {
244
+ if (ctx.dryRun)
245
+ return;
246
+ const path = join(ctx.targetDir, "task-system.config.ts");
247
+ if (existsSync(path))
248
+ return; // Don't overwrite existing config
249
+ const c = ctx.config;
250
+ const agentsStr = Object.entries(c.agents)
251
+ .map(([k, v]) => ` ${k}: { label: "${v.label}", icon: "${v.icon}", color: "${v.color}" }`)
252
+ .join(",\n");
253
+ const phasesStr = c.phases
254
+ .map((p) => ` { id: "${p.id}", label: "${p.label}", wave: ${p.wave} }`)
255
+ .join(",\n");
256
+ const content = `import { defineConfig } from "@yattalo/task-system-core";
257
+
258
+ export default defineConfig({
259
+ projectName: "${c.projectName}",
260
+ tableName: "${c.tableName ?? "agentTasks"}",
261
+
262
+ agents: {
263
+ ${agentsStr},
264
+ },
265
+
266
+ categories: ${JSON.stringify(c.categories, null, 4).replace(/\n/g, "\n ")},
267
+
268
+ phases: [
269
+ ${phasesStr},
270
+ ],
271
+
272
+ taskIdPattern: "${c.taskIdPattern}",
273
+
274
+ extensions: ${JSON.stringify(c.extensions, null, 4).replace(/\n/g, "\n ")},
275
+
276
+ dashboard: ${JSON.stringify(c.dashboard, null, 4).replace(/\n/g, "\n ")},
277
+
278
+ agentOps: ${JSON.stringify(c.agentOps, null, 4).replace(/\n/g, "\n ")},
279
+ });
280
+ `;
281
+ writeFileSync(path, content, "utf-8");
282
+ }
283
+ function generateTaskDefinitionsFile(ctx) {
284
+ if (ctx.dryRun)
285
+ return;
286
+ const path = join(ctx.targetDir, "task-definitions.ts");
287
+ if (existsSync(path))
288
+ return;
289
+ const content = `import type { TaskDefinition } from "@yattalo/task-system-core";
290
+
291
+ /**
292
+ * Define your project tasks here.
293
+ * Run \`npx @yattalo/task-system seed\` to import them into Convex.
294
+ */
295
+ export const TASK_DEFINITIONS: TaskDefinition[] = [
296
+ // Example:
297
+ // {
298
+ // taskId: "C1",
299
+ // agent: "claude",
300
+ // title: "Setup project foundation",
301
+ // description: "Initialize the project with base configuration",
302
+ // status: "todo",
303
+ // priority: "high",
304
+ // category: "backend",
305
+ // phaseId: "foundation",
306
+ // wave: 1,
307
+ // estimatedHours: 2,
308
+ // dependencies: [],
309
+ // tags: ["setup"],
310
+ // acceptanceCriteria: ["Project builds successfully", "Tests pass"],
311
+ // },
312
+ ];
313
+ `;
314
+ writeFileSync(path, content, "utf-8");
315
+ }
316
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,sDAAsD;AACtD,+DAA+D;AAE/D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,cAAc,GAEf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAS7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAExD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAE3D,iBAAiB;IACjB,MAAM,OAAO,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,aAAa,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,iBAAiB,SAAS,CAAC,SAAS,IAAI,KAAK,UAAU,SAAS,CAAC,cAAc,IAAI,KAAK,EAAE,CACpL,CACF,CAAC;IAEF,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,6FAA6F,CAC9F,CACF,CAAC;IACJ,CAAC;IAED,aAAa;IACb,IAAI,MAAwB,CAAC;IAE7B,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;IACX,IAAI,CAAC;QACH,cAAc,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAqB;QAC5B,MAAM;QACN,SAAS;QACT,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,MAA6C;QAC7D,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,iBAAiB;IACjB,MAAM,MAAM,GAAG,YAAY,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAE5E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAsC,EAAE,CAAC;IAEtD,kBAAkB;IAClB,MAAM,aAAa,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,aAAa,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC;IAEpF,sBAAsB;IACtB,MAAM,YAAY,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7D,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,YAAY,CAAC,OAAO,CAAC,UAAU,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC;IAEhF,wBAAwB;IACxB,MAAM,WAAW,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,WAAW,CAAC,OAAO,CACjB,iBAAiB,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,SAAS,CAC/D,CAAC;IAEF,gCAAgC;IAChC,MAAM,WAAW,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,WAAW,CAAC,OAAO,CAAC,aAAa,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC;IAEhF,MAAM,WAAW,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,WAAW,CAAC,OAAO,CACjB,cAAc,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,SAAS,CAC5D,CAAC;IAEF,kCAAkC;IAClC,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,WAAW,CAAC,OAAO,CACjB,cAAc,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,SAAS,CAC5D,CAAC;QAEF,MAAM,kBAAkB,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1E,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;QACpC,kBAAkB,CAAC,OAAO,CACxB,sBAAsB,kBAAkB,CAAC,MAAM,WAAW,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CACvH,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,MAAM,WAAW,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,WAAW,CAAC,OAAO,CAAC,aAAa,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC;IAEhF,MAAM,YAAY,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/D,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,YAAY,CAAC,OAAO,CAClB,iBAAiB,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,SAAS,CACjE,CAAC;IAEF,uCAAuC;IACvC,MAAM,YAAY,GAAG,GAAG,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAC9B,YAAY,CAAC,OAAO,CAClB,mBAAmB,YAAY,CAAC,MAAM,WAAW,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CACxG,CAAC;IAEF,8BAA8B;IAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/D,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAC9B,YAAY,CAAC,OAAO,CAClB,iBAAiB,YAAY,CAAC,MAAM,WAAW,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CACtG,CAAC;IAEF,wBAAwB;IACxB,MAAM,cAAc,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,cAAc,CAAC,OAAO,CAAC,gBAAgB,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,SAAS,CAAC,CAAC;IAE5F,mDAAmD;IACnD,MAAM,aAAa,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACjC,aAAa,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;IAEtE,UAAU;IACV,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,MAAM,WAAW,UAAU,iBAAiB,CAAC,CAAC,CAAC;IAEzG,4BAA4B;IAC5B,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,SAAS,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,qCAAqC,CAC1F,CACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACpE,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IAChD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;QAC9B;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC;SACnC;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,UAAU,EAAE;gBACpD,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE;gBAC/C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;aAC5C;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,YAAY;SACtB;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACrE,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChF,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACrE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB,EAAE;gBAC7D,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBACvD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC7C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE;gBACnD,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC9E;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,oCAAoC;IACpC,MAAM,IAAI,GACR,SAAS,CAAC,UAAU,KAAK,UAAU;QACjC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,UAAU;YACnC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,cAAc,CAAC;IAEvB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,OAAO,YAAY,CAAC;QAClB,GAAG,IAAI;QACP,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,YAAY;QAC9C,UAAU,EAAE;YACV,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,KAAK;YACjD,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC,IAAI,KAAK;YAC3D,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,KAAK;YACjD,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC,IAAI,KAAK;YACzD,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC,IAAI,KAAK;YACnD,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK;YACzC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI,KAAK;YAC/C,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK;SACtC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAqB;IAC/C,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,kCAAkC;IAEhE,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACrB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;SACvC,GAAG,CACF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CACT,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK,KAAK,CAC9E;SACA,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC;SACzE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,MAAM,OAAO,GAAG;;;kBAGA,CAAC,CAAC,WAAW;gBACf,CAAC,CAAC,SAAS,IAAI,YAAY;;;EAGzC,SAAS;;;gBAGK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;;EAG1E,SAAS;;;oBAGS,CAAC,CAAC,aAAa;;gBAEnB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;eAE7D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;cAE5D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;CAEvE,CAAC;IAEA,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,2BAA2B,CAAC,GAAqB;IACxD,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAE7B,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBjB,CAAC;IAEA,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface KanbanOptions {
2
+ dir?: string;
3
+ agent?: string;
4
+ }
5
+ export declare function kanbanCommand(options: KanbanOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=kanban.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/commands/kanban.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EzE"}
@@ -0,0 +1,68 @@
1
+ // ============================================================
2
+ // Command: kanban — Terminal Kanban board
3
+ // ============================================================
4
+ import { execSync } from "node:child_process";
5
+ import { resolve } from "node:path";
6
+ import chalk from "chalk";
7
+ export async function kanbanCommand(options) {
8
+ const targetDir = resolve(options.dir ?? process.cwd());
9
+ console.log(chalk.bold("\n@yattalo/task-system — Kanban\n"));
10
+ try {
11
+ const raw = execSync("npx convex run taskSystem/orchestrator:getKanban", {
12
+ cwd: targetDir,
13
+ encoding: "utf-8",
14
+ stdio: ["pipe", "pipe", "pipe"],
15
+ });
16
+ const kanban = JSON.parse(raw.trim());
17
+ const columns = ["todo", "in_progress", "blocked", "review", "done"];
18
+ const colWidth = 22;
19
+ const columnHeaders = {
20
+ todo: "📋 TODO",
21
+ in_progress: "🔄 IN PROGRESS",
22
+ blocked: "🚫 BLOCKED",
23
+ review: "👀 REVIEW",
24
+ done: "✅ DONE",
25
+ };
26
+ // Header row
27
+ console.log(columns
28
+ .map((col) => chalk.bold(columnHeaders[col]?.padEnd(colWidth) ?? col.padEnd(colWidth)))
29
+ .join("│"));
30
+ console.log(chalk.dim("─".repeat(colWidth * columns.length + columns.length - 1)));
31
+ // Find max rows
32
+ const maxRows = Math.max(...columns.map((col) => {
33
+ const tasks = kanban[col] ?? [];
34
+ const filtered = options.agent
35
+ ? tasks.filter((t) => t.agent === options.agent)
36
+ : tasks;
37
+ return filtered.length;
38
+ }), 0);
39
+ // Render rows
40
+ for (let i = 0; i < maxRows; i++) {
41
+ const row = columns.map((col) => {
42
+ const tasks = kanban[col] ?? [];
43
+ const filtered = options.agent
44
+ ? tasks.filter((t) => t.agent === options.agent)
45
+ : tasks;
46
+ const task = filtered[i];
47
+ if (!task)
48
+ return " ".repeat(colWidth);
49
+ const id = chalk.cyan(task.taskId);
50
+ const title = task.title.length > colWidth - 6
51
+ ? task.title.slice(0, colWidth - 9) + "..."
52
+ : task.title;
53
+ return `${id} ${title}`.padEnd(colWidth);
54
+ });
55
+ console.log(row.join("│"));
56
+ }
57
+ if (maxRows === 0) {
58
+ console.log(chalk.dim(" No tasks found."));
59
+ }
60
+ console.log();
61
+ }
62
+ catch (err) {
63
+ const message = err instanceof Error ? err.message : String(err);
64
+ console.error(chalk.red("Failed to fetch kanban: " + message));
65
+ process.exit(1);
66
+ }
67
+ }
68
+ //# sourceMappingURL=kanban.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/commands/kanban.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface ReportOptions {
2
+ dir?: string;
3
+ scope?: string;
4
+ output?: string;
5
+ }
6
+ export declare function reportCommand(options: ReportOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DzE"}
@@ -0,0 +1,60 @@
1
+ // ============================================================
2
+ // Command: report — Generate markdown report
3
+ // ============================================================
4
+ import { execSync } from "node:child_process";
5
+ import { writeFileSync } from "node:fs";
6
+ import { resolve } from "node:path";
7
+ import chalk from "chalk";
8
+ export async function reportCommand(options) {
9
+ const targetDir = resolve(options.dir ?? process.cwd());
10
+ console.log(chalk.bold("\n@yattalo/task-system — Report\n"));
11
+ try {
12
+ const args = options.scope ? `'{"scope":"${options.scope}"}'` : "'{}'";
13
+ const raw = execSync(`npx convex run taskSystem/orchestrator:generateReport ${args}`, {
14
+ cwd: targetDir,
15
+ encoding: "utf-8",
16
+ stdio: ["pipe", "pipe", "pipe"],
17
+ });
18
+ const data = JSON.parse(raw.trim());
19
+ // Build markdown
20
+ const lines = [];
21
+ lines.push(`# Task Report${options.scope ? ` — ${options.scope}` : ""}`);
22
+ lines.push(`Generated: ${new Date().toISOString()}\n`);
23
+ // Stats
24
+ if (data.stats) {
25
+ lines.push("## Overview\n");
26
+ lines.push(`| Metric | Value |`);
27
+ lines.push(`|--------|-------|`);
28
+ for (const [k, v] of Object.entries(data.stats)) {
29
+ lines.push(`| ${k} | ${v} |`);
30
+ }
31
+ lines.push("");
32
+ }
33
+ // Tasks by status
34
+ if (data.byStatus) {
35
+ for (const [status, tasks] of Object.entries(data.byStatus)) {
36
+ if (!Array.isArray(tasks) || tasks.length === 0)
37
+ continue;
38
+ lines.push(`## ${status.toUpperCase()} (${tasks.length})\n`);
39
+ for (const t of tasks) {
40
+ lines.push(`- **${t.taskId}** [${t.agent}] ${t.title}${t.priority ? ` (${t.priority})` : ""}`);
41
+ }
42
+ lines.push("");
43
+ }
44
+ }
45
+ const markdown = lines.join("\n");
46
+ if (options.output) {
47
+ writeFileSync(options.output, markdown, "utf-8");
48
+ console.log(chalk.green(`Report written to ${options.output}`));
49
+ }
50
+ else {
51
+ console.log(markdown);
52
+ }
53
+ }
54
+ catch (err) {
55
+ const message = err instanceof Error ? err.message : String(err);
56
+ console.error(chalk.red("Failed to generate report: " + message));
57
+ process.exit(1);
58
+ }
59
+ }
60
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface SeedOptions {
2
+ dir?: string;
3
+ }
4
+ export declare function seedCommand(options: SeedOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrE"}