@devflow-tools/cli 0.12.5 → 0.12.6

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/package.json +2 -2
  2. package/dist/commands/benchmark-cmd.d.ts +0 -5
  3. package/dist/commands/benchmark-cmd.d.ts.map +0 -1
  4. package/dist/commands/benchmark-cmd.js +0 -18
  5. package/dist/commands/benchmark-cmd.js.map +0 -1
  6. package/dist/commands/connect.d.ts +0 -8
  7. package/dist/commands/connect.d.ts.map +0 -1
  8. package/dist/commands/connect.js +0 -26
  9. package/dist/commands/connect.js.map +0 -1
  10. package/dist/commands/context.d.ts +0 -15
  11. package/dist/commands/context.d.ts.map +0 -1
  12. package/dist/commands/context.js +0 -24
  13. package/dist/commands/context.js.map +0 -1
  14. package/dist/commands/dashboard.d.ts +0 -3
  15. package/dist/commands/dashboard.d.ts.map +0 -1
  16. package/dist/commands/dashboard.js +0 -10
  17. package/dist/commands/dashboard.js.map +0 -1
  18. package/dist/commands/doctor.d.ts +0 -56
  19. package/dist/commands/doctor.d.ts.map +0 -1
  20. package/dist/commands/doctor.js +0 -156
  21. package/dist/commands/doctor.js.map +0 -1
  22. package/dist/commands/graph.d.ts +0 -11
  23. package/dist/commands/graph.d.ts.map +0 -1
  24. package/dist/commands/graph.js +0 -14
  25. package/dist/commands/graph.js.map +0 -1
  26. package/dist/commands/index-cmd.d.ts +0 -4
  27. package/dist/commands/index-cmd.d.ts.map +0 -1
  28. package/dist/commands/index-cmd.js +0 -15
  29. package/dist/commands/index-cmd.js.map +0 -1
  30. package/dist/commands/init.d.ts +0 -20
  31. package/dist/commands/init.d.ts.map +0 -1
  32. package/dist/commands/init.js +0 -145
  33. package/dist/commands/init.js.map +0 -1
  34. package/dist/commands/knowledge.d.ts +0 -5
  35. package/dist/commands/knowledge.d.ts.map +0 -1
  36. package/dist/commands/knowledge.js +0 -23
  37. package/dist/commands/knowledge.js.map +0 -1
  38. package/dist/commands/memory.d.ts +0 -5
  39. package/dist/commands/memory.d.ts.map +0 -1
  40. package/dist/commands/memory.js +0 -72
  41. package/dist/commands/memory.js.map +0 -1
  42. package/dist/commands/plugin/install.d.ts +0 -3
  43. package/dist/commands/plugin/install.d.ts.map +0 -1
  44. package/dist/commands/plugin/install.js +0 -22
  45. package/dist/commands/plugin/install.js.map +0 -1
  46. package/dist/commands/plugin/list.d.ts +0 -3
  47. package/dist/commands/plugin/list.d.ts.map +0 -1
  48. package/dist/commands/plugin/list.js +0 -47
  49. package/dist/commands/plugin/list.js.map +0 -1
  50. package/dist/commands/plugin/search.d.ts +0 -3
  51. package/dist/commands/plugin/search.d.ts.map +0 -1
  52. package/dist/commands/plugin/search.js +0 -29
  53. package/dist/commands/plugin/search.js.map +0 -1
  54. package/dist/commands/plugin/uninstall.d.ts +0 -3
  55. package/dist/commands/plugin/uninstall.d.ts.map +0 -1
  56. package/dist/commands/plugin/uninstall.js +0 -21
  57. package/dist/commands/plugin/uninstall.js.map +0 -1
  58. package/dist/commands/plugin-guide.d.ts +0 -19
  59. package/dist/commands/plugin-guide.d.ts.map +0 -1
  60. package/dist/commands/plugin-guide.js +0 -131
  61. package/dist/commands/plugin-guide.js.map +0 -1
  62. package/dist/commands/plugin-loader.d.ts +0 -2
  63. package/dist/commands/plugin-loader.d.ts.map +0 -1
  64. package/dist/commands/plugin-loader.js +0 -2
  65. package/dist/commands/plugin-loader.js.map +0 -1
  66. package/dist/commands/review.d.ts +0 -6
  67. package/dist/commands/review.d.ts.map +0 -1
  68. package/dist/commands/review.js +0 -75
  69. package/dist/commands/review.js.map +0 -1
  70. package/dist/commands/server.d.ts +0 -16
  71. package/dist/commands/server.d.ts.map +0 -1
  72. package/dist/commands/server.js +0 -88
  73. package/dist/commands/server.js.map +0 -1
  74. package/dist/commands/session.d.ts +0 -7
  75. package/dist/commands/session.d.ts.map +0 -1
  76. package/dist/commands/session.js +0 -20
  77. package/dist/commands/session.js.map +0 -1
  78. package/dist/commands/setup.d.ts +0 -6
  79. package/dist/commands/setup.d.ts.map +0 -1
  80. package/dist/commands/setup.js +0 -78
  81. package/dist/commands/setup.js.map +0 -1
  82. package/dist/commands/skill.d.ts +0 -18
  83. package/dist/commands/skill.d.ts.map +0 -1
  84. package/dist/commands/skill.js +0 -105
  85. package/dist/commands/skill.js.map +0 -1
  86. package/dist/commands/start.d.ts +0 -5
  87. package/dist/commands/start.d.ts.map +0 -1
  88. package/dist/commands/start.js +0 -58
  89. package/dist/commands/start.js.map +0 -1
  90. package/dist/commands/status.d.ts +0 -2
  91. package/dist/commands/status.d.ts.map +0 -1
  92. package/dist/commands/status.js +0 -33
  93. package/dist/commands/status.js.map +0 -1
  94. package/dist/commands/stop.d.ts +0 -2
  95. package/dist/commands/stop.d.ts.map +0 -1
  96. package/dist/commands/stop.js +0 -12
  97. package/dist/commands/stop.js.map +0 -1
  98. package/dist/commands/workflow.d.ts +0 -6
  99. package/dist/commands/workflow.d.ts.map +0 -1
  100. package/dist/commands/workflow.js +0 -24
  101. package/dist/commands/workflow.js.map +0 -1
  102. package/dist/index.d.ts +0 -3
  103. package/dist/index.d.ts.map +0 -1
  104. package/dist/index.js +0 -606
  105. package/dist/index.js.map +0 -1
  106. package/dist/lib/dashboard-cache.d.ts +0 -3
  107. package/dist/lib/dashboard-cache.d.ts.map +0 -1
  108. package/dist/lib/dashboard-cache.js +0 -97
  109. package/dist/lib/dashboard-cache.js.map +0 -1
  110. package/dist/lib/paths.d.ts +0 -1
  111. package/dist/lib/paths.d.ts.map +0 -1
  112. package/dist/lib/paths.js +0 -4
  113. package/dist/lib/paths.js.map +0 -1
  114. package/dist/lib/plugin-registry.d.ts +0 -18
  115. package/dist/lib/plugin-registry.d.ts.map +0 -1
  116. package/dist/lib/plugin-registry.js +0 -39
  117. package/dist/lib/plugin-registry.js.map +0 -1
  118. package/dist/lib/plugin-setup.d.ts +0 -23
  119. package/dist/lib/plugin-setup.d.ts.map +0 -1
  120. package/dist/lib/plugin-setup.js +0 -141
  121. package/dist/lib/plugin-setup.js.map +0 -1
  122. package/dist/lib/with-server.d.ts +0 -7
  123. package/dist/lib/with-server.d.ts.map +0 -1
  124. package/dist/lib/with-server.js +0 -28
  125. package/dist/lib/with-server.js.map +0 -1
  126. package/dist/mode.d.ts +0 -10
  127. package/dist/mode.d.ts.map +0 -1
  128. package/dist/mode.js +0 -40
  129. package/dist/mode.js.map +0 -1
  130. package/dist/plugin-files/.claude-plugin/plugin.json +0 -20
  131. package/dist/plugin-files/CLAUDE.md +0 -34
  132. package/dist/plugin-files/dist/command-registry.json +0 -235
  133. package/dist/plugin-files/dist/skills/devflow:context/SKILL.md +0 -49
  134. package/dist/plugin-files/dist/skills/devflow:docker/SKILL.md +0 -67
  135. package/dist/plugin-files/dist/skills/devflow:electron/SKILL.md +0 -67
  136. package/dist/plugin-files/dist/skills/devflow:graph/SKILL.md +0 -42
  137. package/dist/plugin-files/dist/skills/devflow:graphql/SKILL.md +0 -68
  138. package/dist/plugin-files/dist/skills/devflow:knowledge/SKILL.md +0 -42
  139. package/dist/plugin-files/dist/skills/devflow:memory/SKILL.md +0 -41
  140. package/dist/plugin-files/dist/skills/devflow:nest/SKILL.md +0 -68
  141. package/dist/plugin-files/dist/skills/devflow:nextjs/SKILL.md +0 -65
  142. package/dist/plugin-files/dist/skills/devflow:performance/SKILL.md +0 -67
  143. package/dist/plugin-files/dist/skills/devflow:react/SKILL.md +0 -85
  144. package/dist/plugin-files/dist/skills/devflow:tailwind/SKILL.md +0 -63
  145. package/dist/plugin-files/dist/skills/devflow:taro/SKILL.md +0 -66
  146. package/dist/plugin-files/dist/skills/devflow:vue/SKILL.md +0 -74
  147. package/dist/plugin-files/dist/skills/devflow:workflow/SKILL.md +0 -42
  148. package/dist/plugin-files/hooks/constitution.md +0 -20
  149. package/dist/plugin-files/hooks/post-tool-use +0 -16
  150. package/dist/plugin-files/hooks/pre-tool-use +0 -23
  151. package/dist/plugin-files/hooks/session-start +0 -165
  152. package/dist/plugin-files/hooks/stop +0 -32
  153. package/dist/plugin-files/hooks.json +0 -52
  154. package/dist/plugin-files/package.json +0 -31
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/cli",
3
- "version": "0.12.5",
3
+ "version": "0.12.6",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -49,5 +49,5 @@
49
49
  "dist",
50
50
  "bin"
51
51
  ],
52
- "gitHead": "e8440cff84139ca0cc1786ee39be3b453974e000"
52
+ "gitHead": "d544427472016eb332c6c2107f0fc98d8ae59c14"
53
53
  }
@@ -1,5 +0,0 @@
1
- export declare function runBenchmark(_target: string, _opts: {
2
- iterations?: number;
3
- output?: string;
4
- }): Promise<string>;
5
- //# sourceMappingURL=benchmark-cmd.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/benchmark-cmd.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
@@ -1,18 +0,0 @@
1
- import { BenchmarkEngine } from "@devflow-tools/benchmark";
2
- import chalk from "chalk";
3
- export async function runBenchmark(_target, _opts) {
4
- const engine = new BenchmarkEngine();
5
- const tasks = engine.getTasks();
6
- const lines = [
7
- chalk.blue("◉ DevFlow Benchmark"),
8
- "───────────────────────────────",
9
- `Available tasks: ${tasks.length}`,
10
- "",
11
- "Benchmark requires a real runner implementation.",
12
- "No fake data or estimated scores are shown.",
13
- "",
14
- "Setup: devflow benchmark --runner <path-to-runner>",
15
- ];
16
- return lines.join("\n");
17
- }
18
- //# sourceMappingURL=benchmark-cmd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark-cmd.js","sourceRoot":"","sources":["../../src/commands/benchmark-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,KAA+C;IAE/C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACjC,iCAAiC;QACjC,oBAAoB,KAAK,CAAC,MAAM,EAAE;QAClC,EAAE;QACF,kDAAkD;QAClD,6CAA6C;QAC7C,EAAE;QACF,oDAAoD;KACrD,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,8 +0,0 @@
1
- export interface ConnectOptions {
2
- agent?: string;
3
- command?: string;
4
- sseUrl?: string;
5
- }
6
- export declare function connectAgent(options: ConnectOptions): Promise<string[]>;
7
- export declare function getAvailableAgents(): string[];
8
- //# sourceMappingURL=connect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB7E;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C"}
@@ -1,26 +0,0 @@
1
- import { connect, listAdapters } from "@devflow-tools/adapters";
2
- export async function connectAgent(options) {
3
- const results = [];
4
- let connectionConfig;
5
- if (options.sseUrl) {
6
- connectionConfig = { url: options.sseUrl };
7
- }
8
- else {
9
- connectionConfig = {
10
- command: options.command ?? "devflow-mcp",
11
- args: ["--mode", "stdio"],
12
- };
13
- }
14
- const targets = options.agent
15
- ? [options.agent]
16
- : await import("@devflow-tools/adapters").then((m) => m.detectAll());
17
- for (const agent of targets) {
18
- const result = await connect(agent, connectionConfig);
19
- results.push(`${agent}: ${result.configPath} (${result.written ? "written" : "skipped"})`);
20
- }
21
- return results;
22
- }
23
- export function getAvailableAgents() {
24
- return listAdapters();
25
- }
26
- //# sourceMappingURL=connect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAShE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAuB;IACxD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,gBAAkC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,gBAAgB,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,aAAa;YACzC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK;QAC3B,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC"}
@@ -1,15 +0,0 @@
1
- import type { TaskContextResult } from "@devflow-tools/sdk";
2
- export interface ContextOptions {
3
- query: string;
4
- mode?: "fast" | "deep";
5
- maxTokens?: number;
6
- skipServer?: boolean;
7
- }
8
- export interface ContextResult {
9
- files: unknown[];
10
- confidence: number;
11
- tokenCount: number;
12
- }
13
- export declare function getContext(options: ContextOptions): Promise<ContextResult>;
14
- export declare function getTaskContext(options: ContextOptions): Promise<TaskContextResult>;
15
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAchF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAexF"}
@@ -1,24 +0,0 @@
1
- import { withServer } from "../lib/with-server.js";
2
- import { createEngines } from "@devflow-tools/context-engine";
3
- export async function getContext(options) {
4
- return withServer(process.cwd(), (client) => client.buildContext(options.query, options.mode ?? "fast", options.maxTokens), async () => {
5
- const { context } = await createEngines(process.cwd());
6
- return context.build({
7
- query: options.query,
8
- mode: options.mode ?? "fast",
9
- maxTokens: options.maxTokens ?? 8000,
10
- });
11
- }, { skipServer: options.skipServer });
12
- }
13
- export async function getTaskContext(options) {
14
- const rootPath = process.cwd();
15
- const taskOptions = {
16
- mode: options.mode ?? "fast",
17
- maxTokens: options.maxTokens ?? 8000,
18
- };
19
- return withServer(rootPath, (client) => client.buildTaskContext(options.query, rootPath, taskOptions), async () => {
20
- const { context } = await createEngines(rootPath);
21
- return context.buildTaskContext(options.query, taskOptions);
22
- }, { skipServer: options.skipServer });
23
- }
24
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAgB9D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAuB;IACtD,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EACzF,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;SACrC,CAAC,CAAC;IACL,CAAC,EACD,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;KACrC,CAAC;IACF,OAAO,UAAU,CACf,QAAQ,EACR,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,EACzE,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC,EACD,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CACnC,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const dashboardCommand: Command;
3
- //# sourceMappingURL=dashboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,gBAAgB,SAMzB,CAAC"}
@@ -1,10 +0,0 @@
1
- import { Command } from "commander";
2
- import chalk from "chalk";
3
- export const dashboardCommand = new Command("dashboard")
4
- .description("Open DevFlow Dashboard")
5
- .action(async () => {
6
- console.log(chalk.blue("The Dashboard is served by the DevFlow server."));
7
- console.log(chalk.dim("Run: devflow start"));
8
- console.log(chalk.dim(`Then open: http://localhost:13337`));
9
- });
10
- //# sourceMappingURL=dashboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC"}
@@ -1,56 +0,0 @@
1
- export interface DoctorReport {
2
- index: {
3
- totalFiles: number;
4
- totalSymbols: number;
5
- indexing: boolean;
6
- };
7
- graph: {
8
- nodes: number;
9
- edges: number;
10
- };
11
- memory: {
12
- projectReady: boolean;
13
- userPrefs: number;
14
- };
15
- knowledge: {
16
- sources: number;
17
- };
18
- plugins: {
19
- installed: number;
20
- names: string[];
21
- };
22
- workflows: {
23
- registered: number;
24
- };
25
- server: {
26
- running: boolean;
27
- };
28
- toolCalls: {
29
- total: number;
30
- byTool: Record<string, number>;
31
- };
32
- readyScore: number;
33
- }
34
- export declare function runDoctor(): Promise<DoctorReport>;
35
- export declare function runDoctorAudit(): Promise<{
36
- valid: boolean;
37
- brokenAt: number | null;
38
- entryCount: number;
39
- }>;
40
- export declare function runDoctorAuditFix(): Promise<{
41
- rebuilt: boolean;
42
- }>;
43
- export declare function runDoctorViolations(last?: string): Promise<{
44
- violations: Array<{
45
- tool: string;
46
- decision: string;
47
- ruleId: string | null;
48
- ts: number;
49
- sessionId: string;
50
- }>;
51
- }>;
52
- export declare function runDoctorReceipts(): {
53
- sessionId: string;
54
- data: unknown;
55
- };
56
- //# sourceMappingURL=doctor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CAmFvD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB/G;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAgBvE;AAED,wBAAsB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqBjL;AAED,wBAAgB,iBAAiB,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAUxE"}
@@ -1,156 +0,0 @@
1
- import { createHmac, createHash } from "node:crypto";
2
- import { readFileSync } from "node:fs";
3
- import { createEngines } from "@devflow-tools/context-engine";
4
- import { serverStatus } from "./server.js";
5
- export async function runDoctor() {
6
- const { codegraph, graph, memory, knowledge, workflow, data } = await createEngines(process.cwd());
7
- const stats = codegraph.getStats();
8
- const graphOutput = graph.export();
9
- let workflowCount = 0;
10
- try {
11
- const wfList = await workflow.list();
12
- workflowCount = wfList.length;
13
- }
14
- catch {
15
- // workflow engine not initialized
16
- }
17
- let memoryReady = false;
18
- let userPrefs = 0;
19
- try {
20
- const mem = await memory.getAll();
21
- memoryReady = !!mem?.project;
22
- const prefs = mem?.user ?? {};
23
- userPrefs = Object.keys(prefs).length;
24
- }
25
- catch {
26
- // memory engine not initialized
27
- }
28
- let knowledgeSources = 0;
29
- try {
30
- const sources = await knowledge.getSources();
31
- knowledgeSources = sources.length;
32
- }
33
- catch {
34
- // knowledge engine not initialized
35
- }
36
- // Layer 4: Fetch local tool call telemetry
37
- let toolCallStats = { total: 0, byTool: {} };
38
- try {
39
- toolCallStats = await data.getToolCallStats();
40
- }
41
- catch {
42
- // data provider not available or table not yet created
43
- }
44
- const server = await serverStatus();
45
- let readyScore = 0;
46
- if (stats.fileCount > 0)
47
- readyScore += 25;
48
- if (stats.nodeCount > 0)
49
- readyScore += 15;
50
- if (graphOutput.nodes.length > 0)
51
- readyScore += 20;
52
- if (memoryReady)
53
- readyScore += 15;
54
- if (knowledgeSources > 0)
55
- readyScore += 10;
56
- if (workflowCount > 0)
57
- readyScore += 5;
58
- if (server.running)
59
- readyScore += 10;
60
- if (toolCallStats.total > 0)
61
- readyScore += 5;
62
- return {
63
- index: {
64
- totalFiles: stats.fileCount,
65
- totalSymbols: stats.nodeCount,
66
- indexing: codegraph.isIndexing(),
67
- },
68
- graph: {
69
- nodes: graphOutput.nodes.length,
70
- edges: graphOutput.edges.length,
71
- },
72
- memory: {
73
- projectReady: memoryReady,
74
- userPrefs,
75
- },
76
- knowledge: {
77
- sources: knowledgeSources,
78
- },
79
- plugins: {
80
- installed: 0,
81
- names: [],
82
- },
83
- workflows: {
84
- registered: workflowCount,
85
- },
86
- server: {
87
- running: server.running,
88
- },
89
- toolCalls: toolCallStats,
90
- readyScore,
91
- };
92
- }
93
- export async function runDoctorAudit() {
94
- const { data } = await createEngines(process.cwd());
95
- const secret = await data.auditGetSecret();
96
- const entries = await data.auditGetAll();
97
- let prevHash = createHash("sha256").update("genesis").digest("hex");
98
- for (const entry of entries) {
99
- if (entry.prevHash !== prevHash) {
100
- return { valid: false, brokenAt: entry.seq, entryCount: entries.length };
101
- }
102
- const payload = `${entry.seq}|${entry.ts}|${entry.tool}|${entry.argsHash}|${entry.decision}|${entry.ruleId ?? ""}|${entry.sessionId}|${prevHash}`;
103
- const expectedSig = createHmac("sha256", secret).update(payload).digest("hex");
104
- if (entry.signature !== expectedSig) {
105
- return { valid: false, brokenAt: entry.seq, entryCount: entries.length };
106
- }
107
- prevHash = entry.signature;
108
- }
109
- return { valid: true, brokenAt: null, entryCount: entries.length };
110
- }
111
- export async function runDoctorAuditFix() {
112
- const { data } = await createEngines(process.cwd());
113
- const secret = await data.auditGetSecret();
114
- const entries = await data.auditGetAll();
115
- let prevHash = createHash("sha256").update("genesis").digest("hex");
116
- for (const entry of entries) {
117
- const payload = `${entry.seq}|${entry.ts}|${entry.tool}|${entry.argsHash}|${entry.decision}|${entry.ruleId ?? ""}|${entry.sessionId}|${prevHash}`;
118
- const signature = createHmac("sha256", secret).update(payload).digest("hex");
119
- await data.sqlExecute("UPDATE devflow_audit_chain SET prev_hash = ?, signature = ? WHERE seq = ?", [prevHash, signature, entry.seq]);
120
- prevHash = signature;
121
- }
122
- return { rebuilt: true };
123
- }
124
- export async function runDoctorViolations(last) {
125
- const { data } = await createEngines(process.cwd());
126
- const entries = await data.auditGetAll();
127
- let violations = entries.filter((e) => e.decision !== "allow");
128
- if (last) {
129
- const match = last.match(/^(\d+)([dh])$/);
130
- if (match) {
131
- const num = parseInt(match[1], 10);
132
- const unit = match[2];
133
- const cutoffMs = unit === "d" ? num * 86400000 : num * 3600000;
134
- const cutoff = Date.now() - cutoffMs;
135
- violations = violations.filter((v) => v.ts > cutoff);
136
- }
137
- }
138
- return {
139
- violations: violations.map((v) => ({
140
- tool: v.tool, decision: v.decision, ruleId: v.ruleId, ts: v.ts, sessionId: v.sessionId,
141
- })),
142
- };
143
- }
144
- export function runDoctorReceipts() {
145
- const receiptDir = `${process.env.TMPDIR ?? "/tmp"}/.devflow-receipts`;
146
- const sessionId = createHash("sha256").update(process.cwd()).digest("hex").slice(0, 16);
147
- const receiptFile = `${receiptDir}/${sessionId}.json`;
148
- try {
149
- const raw = readFileSync(receiptFile, "utf-8");
150
- return { sessionId, data: JSON.parse(raw) };
151
- }
152
- catch {
153
- return { sessionId, data: null };
154
- }
155
- }
156
- //# sourceMappingURL=doctor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export interface GraphOptions {
2
- target?: string;
3
- depth?: number;
4
- skipServer?: boolean;
5
- }
6
- export interface GraphOutput {
7
- nodes: unknown[];
8
- edges: unknown[];
9
- }
10
- export declare function getGraph(options?: GraphOptions): Promise<GraphOutput>;
11
- //# sourceMappingURL=graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAe/E"}
@@ -1,14 +0,0 @@
1
- import { withServer } from "../lib/with-server.js";
2
- import { createEngines } from "@devflow-tools/context-engine";
3
- export async function getGraph(options = {}) {
4
- const target = options.target ?? "all";
5
- const depth = options.depth ?? 2;
6
- return withServer(process.cwd(), (client) => client.getGraph(target, depth), async () => {
7
- const { graph } = await createEngines(process.cwd());
8
- if (target === "all")
9
- return graph.export();
10
- const sub = graph.getSubGraph(target, depth);
11
- return { nodes: sub.nodes, edges: sub.edges };
12
- }, { skipServer: options.skipServer });
13
- }
14
- //# sourceMappingURL=graph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAa9D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAAwB,EAAE;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAEjC,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1C,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC,EACD,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CACnC,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { IndexStatus } from "@devflow-tools/sdk";
2
- export { IndexStatus };
3
- export declare function getIndexStatus(skipServer?: boolean): Promise<IndexStatus>;
4
- //# sourceMappingURL=index-cmd.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,wBAAsB,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAgB/E"}
@@ -1,15 +0,0 @@
1
- import { withServer } from "../lib/with-server.js";
2
- import { createEngines } from "@devflow-tools/context-engine";
3
- export async function getIndexStatus(skipServer) {
4
- return withServer(process.cwd(), (client) => client.getIndexStatus(), async () => {
5
- const { codegraph } = await createEngines(process.cwd());
6
- const stats = codegraph.getStats();
7
- return {
8
- totalFiles: stats.fileCount,
9
- totalSymbols: stats.nodeCount,
10
- lastIndexTime: stats.lastUpdated,
11
- indexing: codegraph.isIndexing(),
12
- };
13
- }, { skipServer });
14
- }
15
- //# sourceMappingURL=index-cmd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-cmd.js","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAK9D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAoB;IACvD,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EACnC,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,YAAY,EAAE,KAAK,CAAC,SAAS;YAC7B,aAAa,EAAE,KAAK,CAAC,WAAW;YAChC,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAE;SACjC,CAAC;IACJ,CAAC,EACD,EAAE,UAAU,EAAE,CACf,CAAC;AACJ,CAAC"}
@@ -1,20 +0,0 @@
1
- import type { OnboardingPack } from "@devflow-tools/context-engine";
2
- export interface InitOptions {
3
- force?: boolean;
4
- scan?: boolean;
5
- }
6
- export interface InitResult {
7
- created: string[];
8
- indexed?: {
9
- files: number;
10
- symbols: number;
11
- graphNodes: number;
12
- };
13
- pluginDeployed: boolean;
14
- pluginEnabled: boolean;
15
- mcpConfigured: boolean;
16
- onboardingPack?: OnboardingPack;
17
- }
18
- export declare function initProject(projectRoot: string, options?: InitOptions): Promise<InitResult>;
19
- export declare function renderInitReport(pack: OnboardingPack): string;
20
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAMpE,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4HrG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CA+B7D"}
@@ -1,145 +0,0 @@
1
- import { mkdirSync, writeFileSync, existsSync, readFileSync } from "fs";
2
- import { join } from "path";
3
- import { homedir } from "os";
4
- import { createRequire } from "module";
5
- import CGModule from "@colbymchenry/codegraph";
6
- import { createEngines, buildOnboardingPack } from "@devflow-tools/context-engine";
7
- import { getPluginFilesDir, deployPlugin, ensurePluginEnabled, writeMcpConfig } from "../lib/plugin-setup.js";
8
- const CodeGraph = CGModule.default ?? CGModule;
9
- const require = createRequire(import.meta.url);
10
- export async function initProject(projectRoot, options = {}) {
11
- const devflowDir = join(projectRoot, ".devflow");
12
- const created = [];
13
- // ── Step 1: Project initialization (existing) ──
14
- if (!existsSync(devflowDir)) {
15
- mkdirSync(devflowDir, { recursive: true });
16
- created.push(".devflow/");
17
- }
18
- const configPath = join(devflowDir, "config.json");
19
- if (!existsSync(configPath) || options.force) {
20
- writeFileSync(configPath, JSON.stringify({
21
- version: "0.1.0",
22
- initialized: new Date().toISOString(),
23
- }, null, 2), "utf-8");
24
- created.push(".devflow/config.json");
25
- }
26
- const result = {
27
- created,
28
- pluginDeployed: false,
29
- pluginEnabled: false,
30
- mcpConfigured: false,
31
- };
32
- // Initialize CodeGraph if not already done
33
- if (!CodeGraph.isInitialized(projectRoot)) {
34
- await CodeGraph.init(projectRoot, { index: options.scan !== false });
35
- }
36
- if (options.scan !== false) {
37
- try {
38
- const { indexer, graph } = await createEngines(projectRoot);
39
- const { files, symbols, imports } = await indexer.indexAll(projectRoot);
40
- const graphResult = await graph.build(symbols, imports);
41
- result.indexed = {
42
- files: files.length,
43
- symbols: symbols.length,
44
- graphNodes: graphResult.nodes.length,
45
- };
46
- }
47
- catch (err) {
48
- // Indexing is best-effort during init; errors are non-fatal
49
- result.indexed = { files: 0, symbols: 0, graphNodes: 0 };
50
- }
51
- }
52
- // ── Step 1.5: Onboarding pack generation ──
53
- if (options.scan !== false) {
54
- try {
55
- const { indexer, graph } = await createEngines(projectRoot);
56
- const cg = CodeGraph.openSync(projectRoot);
57
- const pack = await buildOnboardingPack(projectRoot, cg, indexer, graph);
58
- const onboardingPath = join(devflowDir, "onboarding-pack.json");
59
- writeFileSync(onboardingPath, JSON.stringify(pack, null, 2), "utf-8");
60
- created.push(".devflow/onboarding-pack.json");
61
- const reportPath = join(devflowDir, "init-report.md");
62
- writeFileSync(reportPath, renderInitReport(pack), "utf-8");
63
- created.push(".devflow/init-report.md");
64
- result.onboardingPack = pack;
65
- }
66
- catch (err) {
67
- console.warn(`Warning: Onboarding pack generation skipped — ${err.message}`);
68
- }
69
- }
70
- // ── Step 2: Plugin deployment ──
71
- try {
72
- const pluginFilesDir = getPluginFilesDir();
73
- const home = homedir();
74
- const cacheBaseDir = join(home, ".claude", "plugins", "cache");
75
- const globalSkillsDir = join(home, ".claude", "skills");
76
- const pluginPkgPath = join(pluginFilesDir, "package.json");
77
- const version = existsSync(pluginPkgPath)
78
- ? JSON.parse(readFileSync(pluginPkgPath, "utf-8")).version
79
- : "0.0.0";
80
- deployPlugin(pluginFilesDir, cacheBaseDir, version, globalSkillsDir);
81
- result.pluginDeployed = true;
82
- }
83
- catch (err) {
84
- console.warn(`Warning: Plugin deployment skipped — ${err.message}`);
85
- }
86
- // ── Step 3: Plugin enablement ──
87
- try {
88
- const home = homedir();
89
- const settingsPath = join(home, ".claude", "settings.json");
90
- ensurePluginEnabled(settingsPath);
91
- result.pluginEnabled = true;
92
- }
93
- catch (err) {
94
- console.warn(`Warning: Plugin enablement skipped — ${err.message}`);
95
- }
96
- // ── Step 4: MCP configuration ──
97
- try {
98
- let mcpCommand;
99
- try {
100
- mcpCommand = require.resolve("@devflow-tools/mcp-server/bin/devflow-mcp.cjs");
101
- }
102
- catch {
103
- mcpCommand = "devflow-mcp";
104
- }
105
- writeMcpConfig(projectRoot, mcpCommand);
106
- result.mcpConfigured = true;
107
- }
108
- catch (err) {
109
- console.warn(`Warning: MCP config skipped — ${err.message}`);
110
- }
111
- return result;
112
- }
113
- export function renderInitReport(pack) {
114
- const lines = [
115
- `# ${pack.projectName} — DevFlow Onboarding Report`,
116
- `Generated: ${pack.createdAt}`,
117
- ``,
118
- `## Project Stats`,
119
- `- Files: ${pack.stats.files}`,
120
- `- Symbols: ${pack.stats.symbols}`,
121
- `- Graph Nodes: ${pack.stats.graphNodes}`,
122
- ``,
123
- `## Tech Stack`,
124
- `- Languages: ${pack.stack.languages.join(", ") || "unknown"}`,
125
- `- Frameworks: ${pack.stack.frameworks.join(", ") || "none detected"}`,
126
- `- Build Tools: ${pack.stack.buildTools.join(", ") || "none detected"}`,
127
- `- Test Tools: ${pack.stack.testTools.join(", ") || "none detected"}`,
128
- ``,
129
- `## Architecture Layers`,
130
- ...pack.architectureLayers.map((l) => `- **${l.name}**: ${l.files} files`),
131
- ``,
132
- `## Key Modules`,
133
- ...pack.keyModules.slice(0, 10).map((m) => `- \`${m.name}\` — ${m.reason}`),
134
- ``,
135
- `## Key Symbols`,
136
- ...pack.keySymbols.slice(0, 20).map((s) => `- \`${s.name}\` (${s.kind}) in \`${s.file}\``),
137
- ``,
138
- `## Recommended Next Steps`,
139
- ...pack.recommendedPlugins.map((p) => `- Install plugin: \`${p}\``),
140
- ...pack.recommendedWorkflows.map((w) => `- Run workflow: \`devflow workflow ${w}\``),
141
- `- Try: \`devflow context "${pack.recommendedQueries[0] ?? '项目架构'}"\``,
142
- ];
143
- return lines.join("\n");
144
- }
145
- //# sourceMappingURL=init.js.map