@devflow-tools/cli 0.12.4 → 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 +13 -13
  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
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { KnowledgeEntry, KnowledgeSourceStatus, SyncResult } from "@devflow-tools/sdk";
2
- export declare function searchKnowledge(query: string, scope?: string, skipServer?: boolean): Promise<KnowledgeEntry[]>;
3
- export declare function getDocsStatus(skipServer?: boolean): Promise<KnowledgeSourceStatus[]>;
4
- export declare function syncDocs(pluginName?: string, skipServer?: boolean): Promise<SyncResult[]>;
5
- //# sourceMappingURL=knowledge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/commands/knowledge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE5F,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,cAAc,EAAE,CAAC,CAY3B;AAED,wBAAsB,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAU1F;AAED,wBAAsB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAU/F"}
@@ -1,23 +0,0 @@
1
- import { withServer } from "../lib/with-server.js";
2
- import { KnowledgeEngine } from "@devflow-tools/knowledge-engine";
3
- export async function searchKnowledge(query, scope, skipServer) {
4
- return withServer(process.cwd(), (client) => client.searchKnowledge(query, scope), () => {
5
- const engine = new KnowledgeEngine({ projectRoot: process.cwd() });
6
- return engine.search(query, {
7
- sources: scope && scope !== "all" ? [scope] : undefined,
8
- });
9
- }, { skipServer });
10
- }
11
- export async function getDocsStatus(skipServer) {
12
- return withServer(process.cwd(), (client) => client.getKnowledgeSources(), () => {
13
- const engine = new KnowledgeEngine({ projectRoot: process.cwd() });
14
- return engine.getSources();
15
- }, { skipServer });
16
- }
17
- export async function syncDocs(pluginName, skipServer) {
18
- return withServer(process.cwd(), (client) => client.syncDocs(pluginName), () => {
19
- const engine = new KnowledgeEngine({ projectRoot: process.cwd() });
20
- return engine.syncDocs(pluginName);
21
- }, { skipServer });
22
- }
23
- //# sourceMappingURL=knowledge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/commands/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,KAAc,EACd,UAAoB;IAEpB,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAyC,EACxF,GAAG,EAAE;QACH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC1B,OAAO,EAAE,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC,CAAC;IACL,CAAC,EACD,EAAE,UAAU,EAAE,CACf,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAoB;IACtD,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAiD,EACvF,GAAG,EAAE;QACH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC,EACD,EAAE,UAAU,EAAE,CACf,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAAmB,EAAE,UAAoB;IACtE,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAqC,EAC3E,GAAG,EAAE;QACH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,EACD,EAAE,UAAU,EAAE,CACf,CAAC;AACJ,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare function showMemory(skipServer?: boolean): Promise<unknown>;
2
- export declare function setMemory(key: string, value: string, skipServer?: boolean): Promise<void>;
3
- export declare function reviewCandidates(skipServer?: boolean): Promise<unknown>;
4
- export declare function reviewMemories(): Promise<void>;
5
- //# sourceMappingURL=memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/F;AAED,wBAAsB,gBAAgB,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAU7E;AAYD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDpD"}
@@ -1,72 +0,0 @@
1
- import { withServer } from "../lib/with-server.js";
2
- import { createEngines } from "@devflow-tools/context-engine";
3
- import readline from "node:readline";
4
- export async function showMemory(skipServer) {
5
- return withServer(process.cwd(), (client) => client.getMemory(), async () => {
6
- const { memory } = await createEngines(process.cwd());
7
- return memory.getAll();
8
- }, { skipServer });
9
- }
10
- export async function setMemory(key, value, skipServer) {
11
- return withServer(process.cwd(), async (client) => { await client.setMemory("project", key, value); }, async () => {
12
- const { memory } = await createEngines(process.cwd());
13
- await memory.updateUserPreference(key, value);
14
- }, { skipServer });
15
- }
16
- export async function reviewCandidates(skipServer) {
17
- return withServer(process.cwd(), (client) => client.reviewCandidates(), async () => {
18
- const { memory } = await createEngines(process.cwd());
19
- return memory.getCandidates();
20
- }, { skipServer });
21
- }
22
- function promptUser(question) {
23
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
24
- return new Promise(resolve => {
25
- rl.question(question, (answer) => {
26
- rl.close();
27
- resolve(answer.trim().toLowerCase());
28
- });
29
- });
30
- }
31
- export async function reviewMemories() {
32
- const result = await withServer(process.cwd(), async (client) => {
33
- const data = await client.getMemory();
34
- return data.memories?.filter((m) => m.status === 'pending') ?? [];
35
- }, async () => {
36
- const { memory } = await createEngines(process.cwd());
37
- return memory.getPendingMemories();
38
- }, { skipServer: false });
39
- const pending = result;
40
- if (pending.length === 0) {
41
- console.log('No pending memories to review.');
42
- return;
43
- }
44
- const sorted = [...pending].sort((a, b) => {
45
- if (a.category === 'failure_lesson' && b.category !== 'failure_lesson')
46
- return -1;
47
- if (b.category === 'failure_lesson' && a.category !== 'failure_lesson')
48
- return 1;
49
- return 0;
50
- });
51
- let reviewed = 0;
52
- for (const mem of sorted) {
53
- console.log(`\n[${mem.category}] (confidence: ${(mem.confidence * 100).toFixed(0)}%)`);
54
- console.log(` ${mem.content}`);
55
- const answer = await promptUser(' Approve? [y]es / [n]o / [s]kip: ');
56
- if (answer === 'y') {
57
- await withServer(process.cwd(), async (client) => { await client.approveMemory(mem.id); }, async () => { }, { skipServer: false });
58
- console.log(' Approved');
59
- reviewed++;
60
- }
61
- else if (answer === 'n') {
62
- await withServer(process.cwd(), async (client) => { await client.rejectMemory(mem.id); }, async () => { }, { skipServer: false });
63
- console.log(' Rejected');
64
- reviewed++;
65
- }
66
- else {
67
- console.log(' -> Skipped');
68
- }
69
- }
70
- console.log(`\nReviewed ${reviewed}/${pending.length} pending memories.`);
71
- }
72
- //# sourceMappingURL=memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const pluginInstallCommand: Command;
3
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,oBAAoB,SAkB7B,CAAC"}
@@ -1,22 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { execSync } from 'child_process';
4
- export const pluginInstallCommand = new Command('install')
5
- .description('Install a plugin')
6
- .argument('<name>', 'Plugin name (with or without @devflow-tools/ prefix)')
7
- .action(async (name) => {
8
- const fullName = name.startsWith('@devflow-tools/')
9
- ? name
10
- : `@devflow-tools/${name}`;
11
- console.log(`Installing ${fullName}...`);
12
- try {
13
- execSync(`npm install -g ${fullName}`, { stdio: 'inherit' });
14
- console.log(`\n${chalk.green('✓')} ${fullName} installed successfully`);
15
- console.log(`\nRun "devflow plugin list --installed" to verify.`);
16
- }
17
- catch (error) {
18
- console.error(`\n${chalk.red('✗')} Installation failed: ${error.message}`);
19
- process.exit(1);
20
- }
21
- });
22
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/plugin/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACvD,WAAW,CAAC,kBAAkB,CAAC;KAC/B,QAAQ,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACjD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,KAAK,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,QAAQ,CAAC,kBAAkB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,yBAAyB,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const pluginListCommand: Command;
3
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,iBAAiB,SA8C1B,CAAC"}
@@ -1,47 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { loadPluginRegistry, getInstalledPlugins } from '../../lib/plugin-registry.js';
4
- export const pluginListCommand = new Command('list')
5
- .description('List available plugins')
6
- .option('-i, --installed', 'Show only installed plugins')
7
- .action(async (options) => {
8
- const registry = loadPluginRegistry();
9
- if (options.installed) {
10
- const installed = getInstalledPlugins();
11
- if (installed.length === 0) {
12
- console.log('No plugins installed.');
13
- console.log('\nRun "devflow plugin list" to see available plugins.');
14
- return;
15
- }
16
- console.log('Installed plugins:\n');
17
- installed.forEach(name => {
18
- const plugin = registry.plugins.find(p => p.name === name);
19
- if (plugin) {
20
- console.log(` ${chalk.green(plugin.name)}@${plugin.version}`);
21
- console.log(` ${plugin.description}`);
22
- }
23
- else {
24
- console.log(` ${chalk.green(name)}`);
25
- }
26
- });
27
- }
28
- else {
29
- if (registry.plugins.length === 0) {
30
- console.log('No plugins available.');
31
- return;
32
- }
33
- console.log(`Available plugins (${registry.plugins.length}):\n`);
34
- const maxNameLen = Math.max(...registry.plugins.map(p => p.name.length));
35
- registry.plugins.forEach(plugin => {
36
- const padding = ' '.repeat(maxNameLen - plugin.name.length + 2);
37
- console.log(` ${chalk.green(plugin.name)}${padding}v${plugin.version}`);
38
- console.log(` ${' '.repeat(maxNameLen)}${plugin.description.substring(0, 60)}`);
39
- if (plugin.tags.length > 0) {
40
- console.log(` ${' '.repeat(maxNameLen)}Tags: ${plugin.tags.join(', ')}`);
41
- }
42
- console.log('');
43
- });
44
- console.log(`\nInstall a plugin: devflow plugin install <name>`);
45
- }
46
- });
47
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/plugin/list.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const pluginSearchCommand: Command;
3
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,mBAAmB,SA8B5B,CAAC"}
@@ -1,29 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { loadPluginRegistry } from '../../lib/plugin-registry.js';
4
- export const pluginSearchCommand = new Command('search')
5
- .description('Search for plugins')
6
- .argument('<keyword>', 'Search keyword')
7
- .action(async (keyword) => {
8
- const registry = loadPluginRegistry();
9
- const keywordLower = keyword.toLowerCase();
10
- const matches = registry.plugins.filter(p => p.name.toLowerCase().includes(keywordLower) ||
11
- p.description.toLowerCase().includes(keywordLower) ||
12
- p.tags.some(t => t.toLowerCase().includes(keywordLower)));
13
- if (matches.length === 0) {
14
- console.log(`No plugins found matching "${keyword}"`);
15
- console.log('\nTry: devflow plugin list');
16
- return;
17
- }
18
- console.log(`Found ${matches.length} plugin(s) matching "${keyword}":\n`);
19
- matches.forEach(plugin => {
20
- console.log(` ${chalk.green(plugin.name)}@${plugin.version}`);
21
- console.log(` ${plugin.description}`);
22
- if (plugin.tags.length > 0) {
23
- console.log(` Tags: ${plugin.tags.join(', ')}`);
24
- }
25
- console.log(` Size: ${plugin.size}`);
26
- console.log('');
27
- });
28
- });
29
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/plugin/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACrD,WAAW,CAAC,oBAAoB,CAAC;KACjC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;KACvC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;IAChC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3C,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAClD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CACzD,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,wBAAwB,OAAO,MAAM,CAAC,CAAC;IAE1E,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const pluginUninstallCommand: Command;
3
- //# sourceMappingURL=uninstall.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,sBAAsB,SAiB/B,CAAC"}
@@ -1,21 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { execSync } from 'child_process';
4
- export const pluginUninstallCommand = new Command('uninstall')
5
- .description('Uninstall a plugin')
6
- .argument('<name>', 'Plugin name (with or without @devflow-tools/ prefix)')
7
- .action(async (name) => {
8
- const fullName = name.startsWith('@devflow-tools/')
9
- ? name
10
- : `@devflow-tools/${name}`;
11
- console.log(`Uninstalling ${fullName}...`);
12
- try {
13
- execSync(`npm uninstall -g ${fullName}`, { stdio: 'inherit' });
14
- console.log(`\n${chalk.green('✓')} ${fullName} uninstalled successfully`);
15
- }
16
- catch (error) {
17
- console.error(`\n${chalk.red('✗')} Uninstallation failed: ${error.message}`);
18
- process.exit(1);
19
- }
20
- });
21
- //# sourceMappingURL=uninstall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/plugin/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KAC3D,WAAW,CAAC,oBAAoB,CAAC;KACjC,QAAQ,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACjD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,KAAK,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,QAAQ,CAAC,oBAAoB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,2BAA2B,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Detect project tech stack by inspecting package.json dependencies.
3
- */
4
- export declare function detectTechStack(projectRoot: string): string[];
5
- /**
6
- * Resolve a user-supplied plugin name to a fully-qualified package name.
7
- */
8
- export declare function resolvePluginName(name: string): string;
9
- /**
10
- * Non-interactive plugin installation from a comma-separated list.
11
- */
12
- export declare function installPluginsFromList(names: string): Promise<void>;
13
- /**
14
- * Interactive plugin installation guide.
15
- * Detects project tech stack, recommends compatible plugins, and lets the user
16
- * select which ones to install via a checkbox prompt.
17
- */
18
- export declare function guidePluginInstallation(projectRoot: string): Promise<string[]>;
19
- //# sourceMappingURL=plugin-guide.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-guide.d.ts","sourceRoot":"","sources":["../../src/commands/plugin-guide.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAazE;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyEpF"}
@@ -1,131 +0,0 @@
1
- import { readFileSync } from "fs";
2
- import { join } from "path";
3
- import { execSync } from "child_process";
4
- import { checkbox } from "@inquirer/prompts";
5
- import { loadPluginRegistry } from "../lib/plugin-registry.js";
6
- /**
7
- * Detect project tech stack by inspecting package.json dependencies.
8
- */
9
- export function detectTechStack(projectRoot) {
10
- const detected = [];
11
- try {
12
- const pkg = JSON.parse(readFileSync(join(projectRoot, "package.json"), "utf-8"));
13
- const allDeps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
14
- if (allDeps.react)
15
- detected.push("react");
16
- if (allDeps.next)
17
- detected.push("nextjs");
18
- if (allDeps.vue)
19
- detected.push("vue");
20
- if (allDeps.tailwindcss)
21
- detected.push("tailwind");
22
- if (allDeps.nest || allDeps["@nestjs/core"])
23
- detected.push("nest");
24
- if (allDeps.express)
25
- detected.push("express");
26
- if (allDeps.typescript)
27
- detected.push("typescript");
28
- }
29
- catch {
30
- // ignore — package.json may not exist
31
- }
32
- return detected;
33
- }
34
- /**
35
- * Resolve a user-supplied plugin name to a fully-qualified package name.
36
- */
37
- export function resolvePluginName(name) {
38
- const trimmed = name.trim();
39
- return trimmed.startsWith("@devflow-tools/") ? trimmed : `@devflow-tools/${trimmed}`;
40
- }
41
- /**
42
- * Non-interactive plugin installation from a comma-separated list.
43
- */
44
- export async function installPluginsFromList(names) {
45
- const plugins = names.split(",").map(resolvePluginName).filter(Boolean);
46
- if (plugins.length === 0)
47
- return;
48
- for (const plugin of plugins) {
49
- console.log(`Installing ${plugin}...`);
50
- try {
51
- execSync(`npm install -g ${plugin}`, { stdio: "inherit" });
52
- console.log(`✓ ${plugin}`);
53
- }
54
- catch {
55
- console.error(`✗ Failed to install ${plugin}`);
56
- }
57
- }
58
- }
59
- /**
60
- * Interactive plugin installation guide.
61
- * Detects project tech stack, recommends compatible plugins, and lets the user
62
- * select which ones to install via a checkbox prompt.
63
- */
64
- export async function guidePluginInstallation(projectRoot) {
65
- const registry = loadPluginRegistry();
66
- if (registry.plugins.length === 0) {
67
- console.log("\nNo plugins available. You can install plugins later with:");
68
- console.log(" devflow plugin list");
69
- console.log(" devflow plugin install <name>\n");
70
- return [];
71
- }
72
- console.log("\n🔌 Plugin Installation Guide\n");
73
- const detectedStack = detectTechStack(projectRoot);
74
- if (detectedStack.length > 0) {
75
- console.log(`Detected tech stack: ${detectedStack.join(", ")}\n`);
76
- }
77
- const recommended = new Set(registry.plugins
78
- .filter((p) => p.compatibleStacks.some((s) => detectedStack.includes(s)))
79
- .map((p) => p.name));
80
- // Non-TTY: skip interactive prompt and return recommended defaults
81
- if (!process.stdout.isTTY) {
82
- console.log("Non-interactive terminal detected. Installing recommended plugins...\n");
83
- const defaults = [...recommended];
84
- for (const plugin of defaults) {
85
- try {
86
- execSync(`npm install -g ${plugin}`, { stdio: "inherit" });
87
- console.log(`✓ ${plugin}`);
88
- }
89
- catch {
90
- console.error(`✗ Failed to install ${plugin}`);
91
- }
92
- }
93
- return defaults;
94
- }
95
- const choices = registry.plugins.map((p) => ({
96
- name: `${p.name.replace("@devflow-tools/", "")} - ${p.description.substring(0, 50)}`,
97
- value: p.name,
98
- checked: recommended.has(p.name),
99
- }));
100
- let selected;
101
- try {
102
- selected = await checkbox({
103
- message: "Select plugins to install (space to select, enter to confirm):",
104
- choices,
105
- });
106
- }
107
- catch {
108
- // User cancelled (Ctrl+C)
109
- console.log("\nPlugin installation cancelled.\n");
110
- return [];
111
- }
112
- if (selected.length > 0) {
113
- console.log("\nInstalling selected plugins...\n");
114
- for (const plugin of selected) {
115
- try {
116
- execSync(`npm install -g ${plugin}`, { stdio: "inherit" });
117
- console.log(`✓ ${plugin}\n`);
118
- }
119
- catch {
120
- console.error(`✗ Failed to install ${plugin}\n`);
121
- }
122
- }
123
- }
124
- else {
125
- console.log("\nSkipping plugin installation. You can install plugins later with:");
126
- console.log(" devflow plugin list");
127
- console.log(" devflow plugin install <name>\n");
128
- }
129
- return selected;
130
- }
131
- //# sourceMappingURL=plugin-guide.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-guide.js","sourceRoot":"","sources":["../../src/commands/plugin-guide.ts"],"names":[],"mappings":"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"}