@devflow-tools/cli 0.12.6 → 0.13.1

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 (154) hide show
  1. package/dist/commands/benchmark-cmd.d.ts +5 -0
  2. package/dist/commands/benchmark-cmd.d.ts.map +1 -0
  3. package/dist/commands/benchmark-cmd.js +18 -0
  4. package/dist/commands/benchmark-cmd.js.map +1 -0
  5. package/dist/commands/connect.d.ts +8 -0
  6. package/dist/commands/connect.d.ts.map +1 -0
  7. package/dist/commands/connect.js +26 -0
  8. package/dist/commands/connect.js.map +1 -0
  9. package/dist/commands/context.d.ts +15 -0
  10. package/dist/commands/context.d.ts.map +1 -0
  11. package/dist/commands/context.js +24 -0
  12. package/dist/commands/context.js.map +1 -0
  13. package/dist/commands/dashboard.d.ts +3 -0
  14. package/dist/commands/dashboard.d.ts.map +1 -0
  15. package/dist/commands/dashboard.js +10 -0
  16. package/dist/commands/dashboard.js.map +1 -0
  17. package/dist/commands/doctor.d.ts +56 -0
  18. package/dist/commands/doctor.d.ts.map +1 -0
  19. package/dist/commands/doctor.js +156 -0
  20. package/dist/commands/doctor.js.map +1 -0
  21. package/dist/commands/graph.d.ts +11 -0
  22. package/dist/commands/graph.d.ts.map +1 -0
  23. package/dist/commands/graph.js +14 -0
  24. package/dist/commands/graph.js.map +1 -0
  25. package/dist/commands/index-cmd.d.ts +4 -0
  26. package/dist/commands/index-cmd.d.ts.map +1 -0
  27. package/dist/commands/index-cmd.js +15 -0
  28. package/dist/commands/index-cmd.js.map +1 -0
  29. package/dist/commands/init.d.ts +20 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +145 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/commands/knowledge.d.ts +5 -0
  34. package/dist/commands/knowledge.d.ts.map +1 -0
  35. package/dist/commands/knowledge.js +23 -0
  36. package/dist/commands/knowledge.js.map +1 -0
  37. package/dist/commands/memory.d.ts +5 -0
  38. package/dist/commands/memory.d.ts.map +1 -0
  39. package/dist/commands/memory.js +72 -0
  40. package/dist/commands/memory.js.map +1 -0
  41. package/dist/commands/plugin/install.d.ts +3 -0
  42. package/dist/commands/plugin/install.d.ts.map +1 -0
  43. package/dist/commands/plugin/install.js +22 -0
  44. package/dist/commands/plugin/install.js.map +1 -0
  45. package/dist/commands/plugin/list.d.ts +3 -0
  46. package/dist/commands/plugin/list.d.ts.map +1 -0
  47. package/dist/commands/plugin/list.js +47 -0
  48. package/dist/commands/plugin/list.js.map +1 -0
  49. package/dist/commands/plugin/search.d.ts +3 -0
  50. package/dist/commands/plugin/search.d.ts.map +1 -0
  51. package/dist/commands/plugin/search.js +29 -0
  52. package/dist/commands/plugin/search.js.map +1 -0
  53. package/dist/commands/plugin/uninstall.d.ts +3 -0
  54. package/dist/commands/plugin/uninstall.d.ts.map +1 -0
  55. package/dist/commands/plugin/uninstall.js +21 -0
  56. package/dist/commands/plugin/uninstall.js.map +1 -0
  57. package/dist/commands/plugin-guide.d.ts +19 -0
  58. package/dist/commands/plugin-guide.d.ts.map +1 -0
  59. package/dist/commands/plugin-guide.js +131 -0
  60. package/dist/commands/plugin-guide.js.map +1 -0
  61. package/dist/commands/plugin-loader.d.ts +2 -0
  62. package/dist/commands/plugin-loader.d.ts.map +1 -0
  63. package/dist/commands/plugin-loader.js +2 -0
  64. package/dist/commands/plugin-loader.js.map +1 -0
  65. package/dist/commands/review.d.ts +6 -0
  66. package/dist/commands/review.d.ts.map +1 -0
  67. package/dist/commands/review.js +75 -0
  68. package/dist/commands/review.js.map +1 -0
  69. package/dist/commands/server.d.ts +16 -0
  70. package/dist/commands/server.d.ts.map +1 -0
  71. package/dist/commands/server.js +88 -0
  72. package/dist/commands/server.js.map +1 -0
  73. package/dist/commands/session.d.ts +7 -0
  74. package/dist/commands/session.d.ts.map +1 -0
  75. package/dist/commands/session.js +20 -0
  76. package/dist/commands/session.js.map +1 -0
  77. package/dist/commands/setup.d.ts +6 -0
  78. package/dist/commands/setup.d.ts.map +1 -0
  79. package/dist/commands/setup.js +78 -0
  80. package/dist/commands/setup.js.map +1 -0
  81. package/dist/commands/skill.d.ts +18 -0
  82. package/dist/commands/skill.d.ts.map +1 -0
  83. package/dist/commands/skill.js +105 -0
  84. package/dist/commands/skill.js.map +1 -0
  85. package/dist/commands/start.d.ts +5 -0
  86. package/dist/commands/start.d.ts.map +1 -0
  87. package/dist/commands/start.js +58 -0
  88. package/dist/commands/start.js.map +1 -0
  89. package/dist/commands/status.d.ts +2 -0
  90. package/dist/commands/status.d.ts.map +1 -0
  91. package/dist/commands/status.js +33 -0
  92. package/dist/commands/status.js.map +1 -0
  93. package/dist/commands/stop.d.ts +2 -0
  94. package/dist/commands/stop.d.ts.map +1 -0
  95. package/dist/commands/stop.js +12 -0
  96. package/dist/commands/stop.js.map +1 -0
  97. package/dist/commands/workflow.d.ts +6 -0
  98. package/dist/commands/workflow.d.ts.map +1 -0
  99. package/dist/commands/workflow.js +24 -0
  100. package/dist/commands/workflow.js.map +1 -0
  101. package/dist/index.d.ts +3 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +606 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/lib/paths.d.ts +1 -0
  106. package/dist/lib/paths.d.ts.map +1 -0
  107. package/dist/lib/paths.js +4 -0
  108. package/dist/lib/paths.js.map +1 -0
  109. package/dist/lib/plugin-registry.d.ts +18 -0
  110. package/dist/lib/plugin-registry.d.ts.map +1 -0
  111. package/dist/lib/plugin-registry.js +39 -0
  112. package/dist/lib/plugin-registry.js.map +1 -0
  113. package/dist/lib/plugin-setup.d.ts +23 -0
  114. package/dist/lib/plugin-setup.d.ts.map +1 -0
  115. package/dist/lib/plugin-setup.js +141 -0
  116. package/dist/lib/plugin-setup.js.map +1 -0
  117. package/dist/lib/with-server.d.ts +7 -0
  118. package/dist/lib/with-server.d.ts.map +1 -0
  119. package/dist/lib/with-server.js +28 -0
  120. package/dist/lib/with-server.js.map +1 -0
  121. package/dist/mode.d.ts +10 -0
  122. package/dist/mode.d.ts.map +1 -0
  123. package/dist/mode.js +40 -0
  124. package/dist/mode.js.map +1 -0
  125. package/dist/plugin-files/.claude-plugin/plugin.json +20 -0
  126. package/dist/plugin-files/CLAUDE.md +34 -0
  127. package/dist/plugin-files/dist/command-registry.json +299 -0
  128. package/dist/plugin-files/dist/skills/devflow:animation/SKILL.md +94 -0
  129. package/dist/plugin-files/dist/skills/devflow:context/SKILL.md +90 -0
  130. package/dist/plugin-files/dist/skills/devflow:css/SKILL.md +94 -0
  131. package/dist/plugin-files/dist/skills/devflow:docker/SKILL.md +97 -0
  132. package/dist/plugin-files/dist/skills/devflow:electron/SKILL.md +97 -0
  133. package/dist/plugin-files/dist/skills/devflow:git/SKILL.md +97 -0
  134. package/dist/plugin-files/dist/skills/devflow:graph/SKILL.md +80 -0
  135. package/dist/plugin-files/dist/skills/devflow:graphql/SKILL.md +99 -0
  136. package/dist/plugin-files/dist/skills/devflow:knowledge/SKILL.md +80 -0
  137. package/dist/plugin-files/dist/skills/devflow:memory/SKILL.md +79 -0
  138. package/dist/plugin-files/dist/skills/devflow:nest/SKILL.md +99 -0
  139. package/dist/plugin-files/dist/skills/devflow:nextjs/SKILL.md +97 -0
  140. package/dist/plugin-files/dist/skills/devflow:performance/SKILL.md +97 -0
  141. package/dist/plugin-files/dist/skills/devflow:react/SKILL.md +89 -0
  142. package/dist/plugin-files/dist/skills/devflow:tailwind/SKILL.md +94 -0
  143. package/dist/plugin-files/dist/skills/devflow:taro/SKILL.md +96 -0
  144. package/dist/plugin-files/dist/skills/devflow:ui-layout/SKILL.md +94 -0
  145. package/dist/plugin-files/dist/skills/devflow:vue/SKILL.md +105 -0
  146. package/dist/plugin-files/dist/skills/devflow:workflow/SKILL.md +80 -0
  147. package/dist/plugin-files/hooks/constitution.md +20 -0
  148. package/dist/plugin-files/hooks/post-tool-use +20 -0
  149. package/dist/plugin-files/hooks/pre-tool-use +23 -0
  150. package/dist/plugin-files/hooks/session-start +176 -0
  151. package/dist/plugin-files/hooks/stop +32 -0
  152. package/dist/plugin-files/hooks.json +52 -0
  153. package/dist/plugin-files/package.json +31 -0
  154. package/package.json +27 -27
package/dist/index.js ADDED
@@ -0,0 +1,606 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import chalk from "chalk";
4
+ import fs from "fs";
5
+ import path from "path";
6
+ import { detectMode } from "./mode.js";
7
+ import { initProject } from "./commands/init.js";
8
+ import { guidePluginInstallation, installPluginsFromList } from "./commands/plugin-guide.js";
9
+ import { connectAgent, getAvailableAgents } from "./commands/connect.js";
10
+ import { getIndexStatus } from "./commands/index-cmd.js";
11
+ import { getGraph } from "./commands/graph.js";
12
+ import { getContext, getTaskContext } from "./commands/context.js";
13
+ import { listWorkflows, runWorkflow, getWorkflowStatus, getWorkflowRuns, } from "./commands/workflow.js";
14
+ import { showMemory, setMemory, reviewCandidates } from "./commands/memory.js";
15
+ import { searchKnowledge } from "./commands/knowledge.js";
16
+ import { listSkills, searchSkills, installSkill, uninstallSkill } from "./commands/skill.js";
17
+ import { runDoctor, runDoctorAudit, runDoctorAuditFix, runDoctorViolations, runDoctorReceipts } from "./commands/doctor.js";
18
+ import { generateToken } from "./commands/session.js";
19
+ import { runBenchmark } from "./commands/benchmark-cmd.js";
20
+ import { runReview } from "./commands/review.js";
21
+ import { startServer, stopServer, serverStatus } from "./commands/server.js";
22
+ import { startAll } from "./commands/start.js";
23
+ import { stopAll } from "./commands/stop.js";
24
+ import { showStatus } from "./commands/status.js";
25
+ import { setupCommand } from "./commands/setup.js";
26
+ import { pluginListCommand } from "./commands/plugin/list.js";
27
+ import { pluginSearchCommand } from "./commands/plugin/search.js";
28
+ import { pluginInstallCommand } from "./commands/plugin/install.js";
29
+ import { pluginUninstallCommand } from "./commands/plugin/uninstall.js";
30
+ import { dashboardCommand } from "./commands/dashboard.js";
31
+ import { KnowledgeEngine } from "@devflow-tools/knowledge-engine";
32
+ import { createRequire } from "module";
33
+ const require = createRequire(import.meta.url);
34
+ // Read version from package.json at runtime
35
+ // Installed: dist/cli.js → ../package.json = packages/devflow/package.json
36
+ // Dev: dist/index.js → ../package.json = apps/cli/package.json
37
+ let pkgVersion = "0.0.0";
38
+ try {
39
+ pkgVersion = require("../package.json").version;
40
+ }
41
+ catch {
42
+ try {
43
+ pkgVersion = require("../../package.json").version;
44
+ }
45
+ catch {
46
+ // Should not happen
47
+ }
48
+ }
49
+ const program = new Command();
50
+ program
51
+ .name("devflow")
52
+ .description("Developer Intelligence Platform for AI Coding Agents")
53
+ .version(pkgVersion)
54
+ .option("--local", "Force local engine, skip server");
55
+ // --- init ---
56
+ program
57
+ .command("init")
58
+ .description("Initialize .devflow/ in the current project")
59
+ .option("--force", "Overwrite existing config")
60
+ .option("--abort", "Force delete .codegraph and .devflow directories before reinitializing")
61
+ .option("--report", "Output onboarding markdown report to stdout")
62
+ .option("--json", "Output onboarding pack as JSON to stdout")
63
+ .option("--plugins <names>", "Comma-separated list of plugins to install (non-interactive)")
64
+ .option("--no-plugins", "Skip plugin installation guide")
65
+ .action(async (opts) => {
66
+ const root = process.cwd();
67
+ if (opts.abort) {
68
+ console.log(chalk.yellow("🗑️ --abort flag detected, removing existing directories..."));
69
+ const dirsToRemove = [".codegraph", ".devflow"];
70
+ for (const dir of dirsToRemove) {
71
+ const dirPath = path.join(root, dir);
72
+ if (fs.existsSync(dirPath)) {
73
+ console.log(chalk.dim(` Removing ${dir}/...`));
74
+ fs.rmSync(dirPath, { recursive: true, force: true });
75
+ }
76
+ }
77
+ console.log(chalk.green("✅ Existing directories removed\n"));
78
+ }
79
+ const mode = detectMode(root);
80
+ console.error(chalk.blue(`DevFlow init — mode: ${mode}`));
81
+ const result = await initProject(root, { force: opts.force });
82
+ if (opts.json && result.onboardingPack) {
83
+ console.log(JSON.stringify(result.onboardingPack, null, 2));
84
+ }
85
+ else if (opts.report && result.onboardingPack) {
86
+ const { renderInitReport } = await import("./commands/init.js");
87
+ console.log(renderInitReport(result.onboardingPack));
88
+ }
89
+ else {
90
+ if (result.created.length > 0) {
91
+ console.log(chalk.green("Created:"));
92
+ for (const path of result.created) {
93
+ console.log(` ${chalk.dim("+")} ${path}`);
94
+ }
95
+ }
96
+ else {
97
+ console.log(chalk.dim("Already initialized. Use --force to overwrite config."));
98
+ }
99
+ if (result.indexed) {
100
+ console.log(chalk.green(`✅ CodeGraph initialized (${result.indexed.files} files, ${result.indexed.symbols} symbols)`));
101
+ }
102
+ if (result.onboardingPack) {
103
+ const pack = result.onboardingPack;
104
+ console.log(chalk.green(`✅ Onboarding pack generated`));
105
+ console.log(chalk.dim(` ${pack.stats.files} files, ${pack.stack.frameworks.join(", ") || "no framework"}`));
106
+ }
107
+ if (result.pluginDeployed) {
108
+ console.log(chalk.green("✅ Plugin deployed to ~/.claude/plugins/cache/"));
109
+ }
110
+ if (result.pluginEnabled) {
111
+ console.log(chalk.green("✅ Plugin enabled in ~/.claude/settings.json"));
112
+ }
113
+ if (result.mcpConfigured) {
114
+ console.log(chalk.green("✅ MCP config written to .claude/mcp.json"));
115
+ }
116
+ if (result.pluginDeployed && result.pluginEnabled && result.mcpConfigured) {
117
+ console.log(chalk.green("\nDevFlow is ready! Run `claude` to start."));
118
+ }
119
+ // ── Plugin installation guide ──
120
+ if (typeof opts.plugins === "string") {
121
+ // Non-interactive: --plugins <names>
122
+ await installPluginsFromList(opts.plugins);
123
+ }
124
+ else if (opts.plugins !== false) {
125
+ // Interactive: no --plugins flag and not --no-plugins
126
+ await guidePluginInstallation(root);
127
+ }
128
+ }
129
+ });
130
+ // --- connect ---
131
+ program
132
+ .command("connect [agent]")
133
+ .description("Configure MCP connection for AI coding agents")
134
+ .option("--command <cmd>", "MCP server command", "devflow-mcp")
135
+ .option("--sse <url>", "SSE server URL (instead of stdio)")
136
+ .action(async (agent, opts) => {
137
+ const root = process.cwd();
138
+ const mode = detectMode(root);
139
+ console.log(chalk.blue(`DevFlow connect — mode: ${mode}`));
140
+ if (agent) {
141
+ const available = getAvailableAgents();
142
+ if (!available.includes(agent)) {
143
+ console.log(chalk.red(`Unknown agent: ${agent}`));
144
+ console.log(`Available: ${available.join(", ")}`);
145
+ process.exit(1);
146
+ }
147
+ }
148
+ try {
149
+ const results = await connectAgent({
150
+ agent: agent,
151
+ command: opts.command,
152
+ sseUrl: opts.sse,
153
+ });
154
+ for (const r of results) {
155
+ console.log(chalk.green(`✓ ${r}`));
156
+ }
157
+ }
158
+ catch (err) {
159
+ console.error(chalk.red(`Error: ${err.message}`));
160
+ process.exit(1);
161
+ }
162
+ });
163
+ // --- index ---
164
+ program
165
+ .command("index")
166
+ .description("Show index status")
167
+ .option("--watch", "Start file watcher for hot updates (stub)")
168
+ .action(async (opts) => {
169
+ const status = await getIndexStatus(program.opts().local);
170
+ console.log(chalk.blue("Index Status"));
171
+ console.log(` Files: ${status.totalFiles}`);
172
+ console.log(` Symbols: ${status.totalSymbols}`);
173
+ console.log(` Indexing: ${status.indexing ? "active" : "idle"}`);
174
+ if (opts.watch) {
175
+ console.log(chalk.dim(" (watch mode not yet implemented)"));
176
+ }
177
+ });
178
+ // --- graph ---
179
+ program
180
+ .command("graph [target]")
181
+ .description("Show dependency graph")
182
+ .option("--depth <n>", "Expansion depth", "2")
183
+ .action(async (target, opts) => {
184
+ const graph = await getGraph({ target, depth: parseInt(opts.depth, 10), skipServer: program.opts().local });
185
+ console.log(chalk.blue("Dependency Graph"));
186
+ console.log(` Nodes: ${graph.nodes.length}`);
187
+ console.log(` Edges: ${graph.edges.length}`);
188
+ });
189
+ // --- context ---
190
+ program
191
+ .command("context <query>")
192
+ .description("Retrieve project context for a query")
193
+ .option("--mode <mode>", "fast | deep", "fast")
194
+ .option("--max-tokens <n>", "Max token budget", "4000")
195
+ .option("--task", "Use task-oriented mode with risk hints and next actions")
196
+ .option("--why", "Show reasoning for file selection")
197
+ .action(async (query, opts) => {
198
+ if (opts.task) {
199
+ const result = await getTaskContext({
200
+ query,
201
+ mode: opts.mode,
202
+ maxTokens: parseInt(opts.maxTokens, 10),
203
+ skipServer: program.opts().local,
204
+ });
205
+ console.log(JSON.stringify({
206
+ requiredFiles: result.requiredFiles,
207
+ optionalFiles: result.optionalFiles,
208
+ riskHints: result.riskHints,
209
+ nextActions: result.nextActions,
210
+ reasoning: opts.why ? result.reasoning : undefined,
211
+ }, null, 2));
212
+ }
213
+ else {
214
+ const result = await getContext({
215
+ query,
216
+ mode: opts.mode,
217
+ maxTokens: parseInt(opts.maxTokens, 10),
218
+ skipServer: program.opts().local,
219
+ });
220
+ console.log(chalk.blue(`Context: "${query}"`));
221
+ console.log(` Files: ${result.files.length}`);
222
+ console.log(` Confidence: ${(result.confidence * 100).toFixed(0)}%`);
223
+ console.log(` Tokens: ${result.tokenCount}`);
224
+ }
225
+ });
226
+ // --- workflow ---
227
+ const workflowCmd = program
228
+ .command("workflow")
229
+ .description("Workflow management");
230
+ workflowCmd
231
+ .command("list")
232
+ .description("List available workflows")
233
+ .action(async () => {
234
+ const workflows = await listWorkflows(program.opts().local);
235
+ if (workflows.length === 0) {
236
+ console.log(chalk.dim("No workflows registered."));
237
+ return;
238
+ }
239
+ for (const w of workflows) {
240
+ console.log(`${chalk.green(w.name)} — ${w.description} (${w.stepCount} steps)`);
241
+ }
242
+ });
243
+ workflowCmd
244
+ .command("run <type> [input]")
245
+ .description("Run a workflow")
246
+ .action(async (type, input) => {
247
+ const result = await runWorkflow(type, { input: input ?? "" }, program.opts().local);
248
+ console.log(`Run: ${result.runId}`);
249
+ console.log(`Status: ${result.status}`);
250
+ console.log(`Duration: ${result.duration}ms`);
251
+ });
252
+ workflowCmd
253
+ .command("status")
254
+ .description("Show running workflows")
255
+ .action(async () => {
256
+ const runs = await getWorkflowStatus(program.opts().local);
257
+ console.log(`${runs.length} run(s)`);
258
+ for (const r of runs) {
259
+ console.log(` ${r.runId} — ${r.status}`);
260
+ }
261
+ });
262
+ workflowCmd
263
+ .command("runs")
264
+ .description("Show workflow history")
265
+ .action(async () => {
266
+ const runs = await getWorkflowRuns(program.opts().local);
267
+ if (runs.length === 0) {
268
+ console.log(chalk.dim("No runs yet."));
269
+ return;
270
+ }
271
+ for (const r of runs) {
272
+ const duration = r.finishedAt ? `${r.finishedAt - r.startedAt}ms` : "running";
273
+ console.log(` ${r.runId} ${chalk.yellow(r.status)} ${duration}`);
274
+ }
275
+ });
276
+ // --- memory ---
277
+ const memoryCmd = program
278
+ .command("memory")
279
+ .description("Memory management");
280
+ memoryCmd
281
+ .command("show")
282
+ .description("Show current project memory")
283
+ .action(async () => {
284
+ const mem = await showMemory(program.opts().local);
285
+ console.log(JSON.stringify(mem, null, 2));
286
+ });
287
+ memoryCmd
288
+ .command("set <key> <value>")
289
+ .description("Set a memory key")
290
+ .action(async (key, value) => {
291
+ await setMemory(key, value, program.opts().local);
292
+ console.log(chalk.green(`Memory set: ${key} = ${value}`));
293
+ });
294
+ memoryCmd
295
+ .command("review")
296
+ .description("Review memory candidates")
297
+ .action(async () => {
298
+ const candidates = await reviewCandidates(program.opts().local);
299
+ console.log(JSON.stringify(candidates, null, 2));
300
+ });
301
+ // --- knowledge ---
302
+ const knowledgeCmd = program
303
+ .command("knowledge <query>")
304
+ .description("Search knowledge base")
305
+ .action(async (query) => {
306
+ const results = await searchKnowledge(query, undefined, program.opts().local);
307
+ console.log(chalk.blue(`Knowledge: "${query}"`));
308
+ console.log(` Results: ${results.length}`);
309
+ for (const r of results.slice(0, 5)) {
310
+ console.log(` — ${r.title}`);
311
+ }
312
+ });
313
+ // docs sync
314
+ program
315
+ .command("docs sync [plugin-name]")
316
+ .description("Sync documentation for plugins")
317
+ .action(async (pluginName) => {
318
+ console.log(chalk.blue(`◉ Syncing docs${pluginName ? ` for ${pluginName} plugin` : ""}`));
319
+ const engine = new KnowledgeEngine({ projectRoot: process.cwd() });
320
+ if (pluginName) {
321
+ const results = await engine.syncDocs(pluginName);
322
+ for (const r of results) {
323
+ if (r.added > 0) {
324
+ console.log(` ${chalk.green("✓")} ${r.source} → ${r.added} chunks`);
325
+ }
326
+ else {
327
+ console.log(` ${chalk.red("✗")} ${r.source} — ${r.errors.join(", ") || "no content"}`);
328
+ }
329
+ }
330
+ console.log(chalk.green(`\n ${pluginName} docs synced to .devflow/knowledge/${pluginName}/`));
331
+ }
332
+ else {
333
+ const sources = await engine.getSources();
334
+ for (const s of sources) {
335
+ const results = await engine.syncDocs(s.source.name);
336
+ for (const r of results) {
337
+ if (r.added > 0) {
338
+ console.log(` ${chalk.green("✓")} ${r.source} → ${r.added} chunks`);
339
+ }
340
+ else {
341
+ console.log(` ${chalk.red("✗")} ${r.source} — ${r.errors.join(", ") || "no content"}`);
342
+ }
343
+ }
344
+ }
345
+ console.log(chalk.green("\n All docs synced."));
346
+ }
347
+ });
348
+ // --- skill ---
349
+ const skillCmd = program
350
+ .command("skill")
351
+ .description("Plugin/Skill management");
352
+ skillCmd
353
+ .command("list")
354
+ .description("List installed skills")
355
+ .action(async () => {
356
+ const skills = await listSkills(program.opts().local);
357
+ if (skills.length === 0) {
358
+ console.log(chalk.dim("No skills installed. Use 'devflow skill search' to find plugins."));
359
+ return;
360
+ }
361
+ for (const s of skills) {
362
+ console.log(` ${chalk.green(s.name)} @ ${s.version} — ${s.description}`);
363
+ }
364
+ });
365
+ skillCmd
366
+ .command("search <query>")
367
+ .description("Search available plugins")
368
+ .action(async (query) => {
369
+ const results = await searchSkills(query, program.opts().local);
370
+ console.log(chalk.blue(`Search: "${query}"`));
371
+ if (results.length === 0) {
372
+ console.log(chalk.dim(" No matching plugins found."));
373
+ return;
374
+ }
375
+ for (const s of results) {
376
+ console.log(` ${chalk.green(s.name)} @ ${s.version} — ${s.description}`);
377
+ }
378
+ });
379
+ skillCmd
380
+ .command("install <name>")
381
+ .description("Install a plugin/skill")
382
+ .action(async (name) => {
383
+ try {
384
+ const result = await installSkill(name, process.cwd(), program.opts().local);
385
+ console.log(chalk.green(`✓ Installed @devflow-tools/plugin-${result.name}@${result.version}`));
386
+ if (result.templates.length > 0) {
387
+ console.log(` Templates: ${result.templates.join(", ")}`);
388
+ }
389
+ }
390
+ catch (err) {
391
+ console.log(chalk.red(`Error: ${err.message}`));
392
+ process.exit(1);
393
+ }
394
+ });
395
+ skillCmd
396
+ .command("uninstall <name>")
397
+ .description("Uninstall a plugin/skill")
398
+ .action(async (name) => {
399
+ try {
400
+ await uninstallSkill(name, process.cwd(), program.opts().local);
401
+ console.log(chalk.green(`✓ Uninstalled ${name}`));
402
+ }
403
+ catch (err) {
404
+ console.log(chalk.red(`Error: ${err.message}`));
405
+ process.exit(1);
406
+ }
407
+ });
408
+ // --- doctor ---
409
+ program
410
+ .command("doctor")
411
+ .description("Run project health check")
412
+ .option("--json", "Output as JSON")
413
+ .option("--audit", "Verify audit chain integrity")
414
+ .option("--audit-fix", "Rebuild audit chain signatures")
415
+ .option("--violations", "Show violation records")
416
+ .option("--last <period>", "Filter violations by time (e.g. 7d, 24h)")
417
+ .option("--receipts", "Show current session receipt status")
418
+ .action(async (opts) => {
419
+ if (opts.audit) {
420
+ const report = await runDoctorAudit();
421
+ console.log(opts.json ? JSON.stringify(report) : `Audit chain: ${report.valid ? "VALID" : `BROKEN at seq ${report.brokenAt}`} (${report.entryCount} entries)`);
422
+ return;
423
+ }
424
+ if (opts.auditFix) {
425
+ const report = await runDoctorAuditFix();
426
+ console.log(opts.json ? JSON.stringify(report) : "Audit chain rebuilt.");
427
+ return;
428
+ }
429
+ if (opts.violations) {
430
+ const report = await runDoctorViolations(opts.last);
431
+ console.log(opts.json ? JSON.stringify(report) : JSON.stringify(report, null, 2));
432
+ return;
433
+ }
434
+ if (opts.receipts) {
435
+ const result = runDoctorReceipts();
436
+ if (opts.json) {
437
+ console.log(JSON.stringify(result));
438
+ }
439
+ else if (result.data) {
440
+ console.log(JSON.stringify(result.data, null, 2));
441
+ }
442
+ else {
443
+ console.log(`No active receipt found for session ${result.sessionId}.`);
444
+ }
445
+ return;
446
+ }
447
+ // Default: full health report
448
+ const report = await runDoctor();
449
+ if (opts.json) {
450
+ console.log(JSON.stringify(report));
451
+ return;
452
+ }
453
+ console.log(chalk.blue(`DevFlow Doctor v${pkgVersion}\n`));
454
+ console.log(chalk.bold("◉ Index Status"));
455
+ console.log(` Files ${report.index.totalFiles.toLocaleString()}`);
456
+ console.log(` Symbols ${report.index.totalSymbols.toLocaleString()}`);
457
+ console.log(` Graph (${report.graph.edges.toLocaleString()} edges)`);
458
+ console.log(` Status ${report.index.indexing ? "indexing" : "idle"}`);
459
+ console.log();
460
+ console.log(chalk.bold("◉ Memory"));
461
+ console.log(` Project ${report.memory.projectReady ? "ready" : "not set"}`);
462
+ console.log(` Preferences ${report.memory.userPrefs} set`);
463
+ console.log();
464
+ console.log(chalk.bold("◉ Knowledge"));
465
+ console.log(` Sources ${report.knowledge.sources}`);
466
+ console.log();
467
+ console.log(chalk.bold("◉ Server"));
468
+ if (report.server.running) {
469
+ console.log(` ${chalk.green("✔")} Running on http://localhost:13337`);
470
+ }
471
+ else {
472
+ console.log(` ${chalk.yellow("○")} Not running — run \`devflow server start\` for telemetry`);
473
+ }
474
+ console.log();
475
+ console.log(chalk.bold("◉ Plugins"));
476
+ if (report.plugins.installed === 0) {
477
+ console.log(` ${chalk.dim("No plugins installed")}`);
478
+ }
479
+ else {
480
+ for (const name of report.plugins.names) {
481
+ console.log(` ${name}`);
482
+ }
483
+ }
484
+ console.log();
485
+ console.log(chalk.bold("◉ Workflows"));
486
+ console.log(` Registered ${report.workflows.registered}`);
487
+ console.log();
488
+ const scoreColor = report.readyScore >= 70 ? chalk.green : report.readyScore >= 40 ? chalk.yellow : chalk.red;
489
+ console.log(`AI Ready: ${scoreColor(report.readyScore + "%")}`);
490
+ });
491
+ // --- session ---
492
+ program
493
+ .command("session token")
494
+ .description("Generate a session token for MCP Gateway authentication")
495
+ .option("--expires <seconds>", "Token TTL in seconds", "3600")
496
+ .action(async (opts) => {
497
+ const result = await generateToken(process.cwd(), parseInt(opts.expires, 10));
498
+ console.log(JSON.stringify(result, null, 2));
499
+ });
500
+ // --- benchmark ---
501
+ program
502
+ .command("benchmark [target]")
503
+ .description("Run benchmark on engines")
504
+ .option("--iterations <n>", "Number of iterations", "5")
505
+ .option("--output <format>", "json | text", "text")
506
+ .action(async (target, opts) => {
507
+ const output = await runBenchmark(target ?? "all", {
508
+ iterations: parseInt(opts.iterations, 10),
509
+ output: opts.output,
510
+ });
511
+ console.log(output);
512
+ });
513
+ // --- review ---
514
+ program
515
+ .command("review [pr-url]")
516
+ .description("Review a PR or current branch diff")
517
+ .option("--agent <agent>", "AI agent to use", "claude")
518
+ .action(async (prUrl, opts) => {
519
+ const output = await runReview({ prUrl, agent: opts.agent });
520
+ console.log(output);
521
+ });
522
+ // --- server ---
523
+ const serverCmd = program
524
+ .command("server")
525
+ .description("Manage DevFlow server");
526
+ serverCmd
527
+ .command("start")
528
+ .description("Start the DevFlow REST server")
529
+ .option("--port <n>", "Port number", "13337")
530
+ .action(async (opts) => {
531
+ console.log(chalk.blue("Starting DevFlow server..."));
532
+ const result = await startServer({ port: parseInt(opts.port, 10) });
533
+ console.log(chalk.green(`Server started (pid: ${result.pid}) on port ${opts.port}`));
534
+ });
535
+ serverCmd
536
+ .command("stop")
537
+ .description("Stop the DevFlow REST server")
538
+ .action(async () => {
539
+ const ok = await stopServer();
540
+ if (ok)
541
+ console.log(chalk.green("Server stopped"));
542
+ else
543
+ console.log(chalk.dim("No server running"));
544
+ });
545
+ serverCmd
546
+ .command("status")
547
+ .description("Show server status")
548
+ .action(async () => {
549
+ const status = await serverStatus();
550
+ if (status.running)
551
+ console.log(chalk.green(`Running (pid: ${status.pid})`));
552
+ else
553
+ console.log(chalk.yellow("Not running"));
554
+ });
555
+ // --- dashboard ---
556
+ program.addCommand(dashboardCommand);
557
+ // --- start ---
558
+ program
559
+ .command("start")
560
+ .description("Start DevFlow server (API + Dashboard)")
561
+ .option("--port <n>", "Server port", "13337")
562
+ .option("-d, --background", "Run in background (detached)")
563
+ .action(async (opts) => {
564
+ await startAll({
565
+ port: parseInt(opts.port, 10),
566
+ background: !!opts.background,
567
+ });
568
+ });
569
+ // --- stop ---
570
+ program
571
+ .command("stop")
572
+ .description("Stop DevFlow server")
573
+ .action(async () => {
574
+ await stopAll();
575
+ });
576
+ // --- status ---
577
+ program
578
+ .command("status")
579
+ .description("Show DevFlow services status")
580
+ .action(async () => {
581
+ await showStatus();
582
+ });
583
+ // --- setup ---
584
+ program
585
+ .command("setup")
586
+ .description("Configure Claude Code integration (MCP + plugin)")
587
+ .option("--agent <agent>", "Target agent (claude/cursor/cline)")
588
+ .option("--skip-mcp", "Skip MCP configuration")
589
+ .option("--skip-plugin", "Skip plugin registration")
590
+ .action(async (opts) => {
591
+ await setupCommand({
592
+ agent: opts.agent,
593
+ skipMcp: !!opts.skipMcp,
594
+ skipPlugin: !!opts.skipPlugin,
595
+ });
596
+ });
597
+ // --- plugin ---
598
+ const pluginCmd = program
599
+ .command("plugin")
600
+ .description("Manage DevFlow plugins");
601
+ pluginCmd.addCommand(pluginListCommand);
602
+ pluginCmd.addCommand(pluginSearchCommand);
603
+ pluginCmd.addCommand(pluginInstallCommand);
604
+ pluginCmd.addCommand(pluginUninstallCommand);
605
+ program.parse();
606
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Path helpers for DevFlow CLI state files.
3
+ // Dashboard PID management removed — dashboard is now served as static files by the REST server.
4
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,iGAAiG"}