vibe-fabric 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/dist/cli/commands/claude.d.ts +19 -0
  4. package/dist/cli/commands/claude.d.ts.map +1 -0
  5. package/dist/cli/commands/claude.js +107 -0
  6. package/dist/cli/commands/claude.js.map +1 -0
  7. package/dist/cli/commands/coverage.d.ts +37 -0
  8. package/dist/cli/commands/coverage.d.ts.map +1 -0
  9. package/dist/cli/commands/coverage.js +374 -0
  10. package/dist/cli/commands/coverage.js.map +1 -0
  11. package/dist/cli/commands/doctor.d.ts +30 -0
  12. package/dist/cli/commands/doctor.d.ts.map +1 -0
  13. package/dist/cli/commands/doctor.js +187 -0
  14. package/dist/cli/commands/doctor.js.map +1 -0
  15. package/dist/cli/commands/gaps.d.ts +52 -0
  16. package/dist/cli/commands/gaps.d.ts.map +1 -0
  17. package/dist/cli/commands/gaps.js +487 -0
  18. package/dist/cli/commands/gaps.js.map +1 -0
  19. package/dist/cli/commands/help.d.ts +7 -0
  20. package/dist/cli/commands/help.d.ts.map +1 -0
  21. package/dist/cli/commands/help.js +51 -0
  22. package/dist/cli/commands/help.js.map +1 -0
  23. package/dist/cli/commands/init.d.ts +39 -0
  24. package/dist/cli/commands/init.d.ts.map +1 -0
  25. package/dist/cli/commands/init.js +246 -0
  26. package/dist/cli/commands/init.js.map +1 -0
  27. package/dist/cli/commands/prd.d.ts +30 -0
  28. package/dist/cli/commands/prd.d.ts.map +1 -0
  29. package/dist/cli/commands/prd.js +179 -0
  30. package/dist/cli/commands/prd.js.map +1 -0
  31. package/dist/cli/commands/repo/add.d.ts +36 -0
  32. package/dist/cli/commands/repo/add.d.ts.map +1 -0
  33. package/dist/cli/commands/repo/add.js +303 -0
  34. package/dist/cli/commands/repo/add.js.map +1 -0
  35. package/dist/cli/commands/scope.d.ts +36 -0
  36. package/dist/cli/commands/scope.d.ts.map +1 -0
  37. package/dist/cli/commands/scope.js +312 -0
  38. package/dist/cli/commands/scope.js.map +1 -0
  39. package/dist/cli/commands/send.d.ts +43 -0
  40. package/dist/cli/commands/send.d.ts.map +1 -0
  41. package/dist/cli/commands/send.js +469 -0
  42. package/dist/cli/commands/send.js.map +1 -0
  43. package/dist/cli/commands/status.d.ts +32 -0
  44. package/dist/cli/commands/status.d.ts.map +1 -0
  45. package/dist/cli/commands/status.js +422 -0
  46. package/dist/cli/commands/status.js.map +1 -0
  47. package/dist/cli/commands/sync.d.ts +37 -0
  48. package/dist/cli/commands/sync.d.ts.map +1 -0
  49. package/dist/cli/commands/sync.js +299 -0
  50. package/dist/cli/commands/sync.js.map +1 -0
  51. package/dist/cli/commands/version.d.ts +7 -0
  52. package/dist/cli/commands/version.d.ts.map +1 -0
  53. package/dist/cli/commands/version.js +45 -0
  54. package/dist/cli/commands/version.js.map +1 -0
  55. package/dist/cli/index.d.ts +3 -0
  56. package/dist/cli/index.d.ts.map +1 -0
  57. package/dist/cli/index.js +65 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/ui/components/ActiveScopes.d.ts +13 -0
  60. package/dist/cli/ui/components/ActiveScopes.d.ts.map +1 -0
  61. package/dist/cli/ui/components/ActiveScopes.js +25 -0
  62. package/dist/cli/ui/components/ActiveScopes.js.map +1 -0
  63. package/dist/cli/ui/components/EmptyState.d.ts +24 -0
  64. package/dist/cli/ui/components/EmptyState.d.ts.map +1 -0
  65. package/dist/cli/ui/components/EmptyState.js +13 -0
  66. package/dist/cli/ui/components/EmptyState.js.map +1 -0
  67. package/dist/cli/ui/components/Header.d.ts +11 -0
  68. package/dist/cli/ui/components/Header.d.ts.map +1 -0
  69. package/dist/cli/ui/components/Header.js +32 -0
  70. package/dist/cli/ui/components/Header.js.map +1 -0
  71. package/dist/cli/ui/components/PrdCoverage.d.ts +12 -0
  72. package/dist/cli/ui/components/PrdCoverage.d.ts.map +1 -0
  73. package/dist/cli/ui/components/PrdCoverage.js +15 -0
  74. package/dist/cli/ui/components/PrdCoverage.js.map +1 -0
  75. package/dist/cli/ui/components/RecentActivity.d.ts +12 -0
  76. package/dist/cli/ui/components/RecentActivity.d.ts.map +1 -0
  77. package/dist/cli/ui/components/RecentActivity.js +40 -0
  78. package/dist/cli/ui/components/RecentActivity.js.map +1 -0
  79. package/dist/cli/ui/components/RepoList.d.ts +12 -0
  80. package/dist/cli/ui/components/RepoList.d.ts.map +1 -0
  81. package/dist/cli/ui/components/RepoList.js +24 -0
  82. package/dist/cli/ui/components/RepoList.js.map +1 -0
  83. package/dist/cli/ui/components/Shortcuts.d.ts +7 -0
  84. package/dist/cli/ui/components/Shortcuts.d.ts.map +1 -0
  85. package/dist/cli/ui/components/Shortcuts.js +7 -0
  86. package/dist/cli/ui/components/Shortcuts.js.map +1 -0
  87. package/dist/cli/ui/components/index.d.ts +12 -0
  88. package/dist/cli/ui/components/index.d.ts.map +1 -0
  89. package/dist/cli/ui/components/index.js +12 -0
  90. package/dist/cli/ui/components/index.js.map +1 -0
  91. package/dist/cli/ui/dashboard.d.ts +9 -0
  92. package/dist/cli/ui/dashboard.d.ts.map +1 -0
  93. package/dist/cli/ui/dashboard.js +102 -0
  94. package/dist/cli/ui/dashboard.js.map +1 -0
  95. package/dist/core/commands.d.ts +32 -0
  96. package/dist/core/commands.d.ts.map +1 -0
  97. package/dist/core/commands.js +361 -0
  98. package/dist/core/commands.js.map +1 -0
  99. package/dist/core/config.d.ts +18 -0
  100. package/dist/core/config.d.ts.map +1 -0
  101. package/dist/core/config.js +78 -0
  102. package/dist/core/config.js.map +1 -0
  103. package/dist/core/coverage.d.ts +32 -0
  104. package/dist/core/coverage.d.ts.map +1 -0
  105. package/dist/core/coverage.js +286 -0
  106. package/dist/core/coverage.js.map +1 -0
  107. package/dist/core/dashboard/data.d.ts +73 -0
  108. package/dist/core/dashboard/data.d.ts.map +1 -0
  109. package/dist/core/dashboard/data.js +250 -0
  110. package/dist/core/dashboard/data.js.map +1 -0
  111. package/dist/core/dependencies.d.ts +39 -0
  112. package/dist/core/dependencies.d.ts.map +1 -0
  113. package/dist/core/dependencies.js +160 -0
  114. package/dist/core/dependencies.js.map +1 -0
  115. package/dist/core/doctor/auth.d.ts +22 -0
  116. package/dist/core/doctor/auth.d.ts.map +1 -0
  117. package/dist/core/doctor/auth.js +147 -0
  118. package/dist/core/doctor/auth.js.map +1 -0
  119. package/dist/core/doctor/config.d.ts +26 -0
  120. package/dist/core/doctor/config.d.ts.map +1 -0
  121. package/dist/core/doctor/config.js +172 -0
  122. package/dist/core/doctor/config.js.map +1 -0
  123. package/dist/core/doctor/environment.d.ts +26 -0
  124. package/dist/core/doctor/environment.d.ts.map +1 -0
  125. package/dist/core/doctor/environment.js +145 -0
  126. package/dist/core/doctor/environment.js.map +1 -0
  127. package/dist/core/doctor/index.d.ts +44 -0
  128. package/dist/core/doctor/index.d.ts.map +1 -0
  129. package/dist/core/doctor/index.js +134 -0
  130. package/dist/core/doctor/index.js.map +1 -0
  131. package/dist/core/doctor/repos.d.ts +22 -0
  132. package/dist/core/doctor/repos.d.ts.map +1 -0
  133. package/dist/core/doctor/repos.js +262 -0
  134. package/dist/core/doctor/repos.js.map +1 -0
  135. package/dist/core/doctor/sync.d.ts +18 -0
  136. package/dist/core/doctor/sync.d.ts.map +1 -0
  137. package/dist/core/doctor/sync.js +146 -0
  138. package/dist/core/doctor/sync.js.map +1 -0
  139. package/dist/core/gaps.d.ts +70 -0
  140. package/dist/core/gaps.d.ts.map +1 -0
  141. package/dist/core/gaps.js +448 -0
  142. package/dist/core/gaps.js.map +1 -0
  143. package/dist/core/github.d.ts +38 -0
  144. package/dist/core/github.d.ts.map +1 -0
  145. package/dist/core/github.js +102 -0
  146. package/dist/core/github.js.map +1 -0
  147. package/dist/core/prd/analyzer.d.ts +44 -0
  148. package/dist/core/prd/analyzer.d.ts.map +1 -0
  149. package/dist/core/prd/analyzer.js +259 -0
  150. package/dist/core/prd/analyzer.js.map +1 -0
  151. package/dist/core/prd/check.d.ts +17 -0
  152. package/dist/core/prd/check.d.ts.map +1 -0
  153. package/dist/core/prd/check.js +154 -0
  154. package/dist/core/prd/check.js.map +1 -0
  155. package/dist/core/prd/index.d.ts +6 -0
  156. package/dist/core/prd/index.d.ts.map +1 -0
  157. package/dist/core/prd/index.js +6 -0
  158. package/dist/core/prd/index.js.map +1 -0
  159. package/dist/core/project.d.ts +13 -0
  160. package/dist/core/project.d.ts.map +1 -0
  161. package/dist/core/project.js +810 -0
  162. package/dist/core/project.js.map +1 -0
  163. package/dist/core/prompts.d.ts +52 -0
  164. package/dist/core/prompts.d.ts.map +1 -0
  165. package/dist/core/prompts.js +266 -0
  166. package/dist/core/prompts.js.map +1 -0
  167. package/dist/core/repo/framework.d.ts +38 -0
  168. package/dist/core/repo/framework.d.ts.map +1 -0
  169. package/dist/core/repo/framework.js +142 -0
  170. package/dist/core/repo/framework.js.map +1 -0
  171. package/dist/core/repo/index.d.ts +6 -0
  172. package/dist/core/repo/index.d.ts.map +1 -0
  173. package/dist/core/repo/index.js +6 -0
  174. package/dist/core/repo/index.js.map +1 -0
  175. package/dist/core/repo/templates/claude-agents.d.ts +6 -0
  176. package/dist/core/repo/templates/claude-agents.d.ts.map +1 -0
  177. package/dist/core/repo/templates/claude-agents.js +173 -0
  178. package/dist/core/repo/templates/claude-agents.js.map +1 -0
  179. package/dist/core/repo/templates/claude-commands.d.ts +6 -0
  180. package/dist/core/repo/templates/claude-commands.d.ts.map +1 -0
  181. package/dist/core/repo/templates/claude-commands.js +278 -0
  182. package/dist/core/repo/templates/claude-commands.js.map +1 -0
  183. package/dist/core/repo/templates/claude-prompts.d.ts +6 -0
  184. package/dist/core/repo/templates/claude-prompts.d.ts.map +1 -0
  185. package/dist/core/repo/templates/claude-prompts.js +258 -0
  186. package/dist/core/repo/templates/claude-prompts.js.map +1 -0
  187. package/dist/core/repo/templates/claude-scripts.d.ts +6 -0
  188. package/dist/core/repo/templates/claude-scripts.d.ts.map +1 -0
  189. package/dist/core/repo/templates/claude-scripts.js +212 -0
  190. package/dist/core/repo/templates/claude-scripts.js.map +1 -0
  191. package/dist/core/repo/templates/index.d.ts +22 -0
  192. package/dist/core/repo/templates/index.d.ts.map +1 -0
  193. package/dist/core/repo/templates/index.js +121 -0
  194. package/dist/core/repo/templates/index.js.map +1 -0
  195. package/dist/core/repo/templates/vibe-readme.d.ts +6 -0
  196. package/dist/core/repo/templates/vibe-readme.d.ts.map +1 -0
  197. package/dist/core/repo/templates/vibe-readme.js +204 -0
  198. package/dist/core/repo/templates/vibe-readme.js.map +1 -0
  199. package/dist/core/repo/templates/vibe-scripts.d.ts +6 -0
  200. package/dist/core/repo/templates/vibe-scripts.d.ts.map +1 -0
  201. package/dist/core/repo/templates/vibe-scripts.js +308 -0
  202. package/dist/core/repo/templates/vibe-scripts.js.map +1 -0
  203. package/dist/core/repo/validation.d.ts +46 -0
  204. package/dist/core/repo/validation.d.ts.map +1 -0
  205. package/dist/core/repo/validation.js +154 -0
  206. package/dist/core/repo/validation.js.map +1 -0
  207. package/dist/core/runner.d.ts +38 -0
  208. package/dist/core/runner.d.ts.map +1 -0
  209. package/dist/core/runner.js +124 -0
  210. package/dist/core/runner.js.map +1 -0
  211. package/dist/core/send.d.ts +83 -0
  212. package/dist/core/send.d.ts.map +1 -0
  213. package/dist/core/send.js +565 -0
  214. package/dist/core/send.js.map +1 -0
  215. package/dist/core/status.d.ts +76 -0
  216. package/dist/core/status.d.ts.map +1 -0
  217. package/dist/core/status.js +430 -0
  218. package/dist/core/status.js.map +1 -0
  219. package/dist/core/sync/aggregator.d.ts +22 -0
  220. package/dist/core/sync/aggregator.d.ts.map +1 -0
  221. package/dist/core/sync/aggregator.js +278 -0
  222. package/dist/core/sync/aggregator.js.map +1 -0
  223. package/dist/core/sync/completion.d.ts +37 -0
  224. package/dist/core/sync/completion.d.ts.map +1 -0
  225. package/dist/core/sync/completion.js +264 -0
  226. package/dist/core/sync/completion.js.map +1 -0
  227. package/dist/core/sync/index.d.ts +51 -0
  228. package/dist/core/sync/index.d.ts.map +1 -0
  229. package/dist/core/sync/index.js +200 -0
  230. package/dist/core/sync/index.js.map +1 -0
  231. package/dist/core/sync/scanner.d.ts +39 -0
  232. package/dist/core/sync/scanner.d.ts.map +1 -0
  233. package/dist/core/sync/scanner.js +364 -0
  234. package/dist/core/sync/scanner.js.map +1 -0
  235. package/dist/types/config.d.ts +157 -0
  236. package/dist/types/config.d.ts.map +1 -0
  237. package/dist/types/config.js +58 -0
  238. package/dist/types/config.js.map +1 -0
  239. package/dist/types/coverage.d.ts +100 -0
  240. package/dist/types/coverage.d.ts.map +1 -0
  241. package/dist/types/coverage.js +8 -0
  242. package/dist/types/coverage.js.map +1 -0
  243. package/dist/types/doctor.d.ts +68 -0
  244. package/dist/types/doctor.d.ts.map +1 -0
  245. package/dist/types/doctor.js +5 -0
  246. package/dist/types/doctor.js.map +1 -0
  247. package/dist/types/gaps.d.ts +129 -0
  248. package/dist/types/gaps.d.ts.map +1 -0
  249. package/dist/types/gaps.js +8 -0
  250. package/dist/types/gaps.js.map +1 -0
  251. package/dist/types/prompts.d.ts +99 -0
  252. package/dist/types/prompts.d.ts.map +1 -0
  253. package/dist/types/prompts.js +5 -0
  254. package/dist/types/prompts.js.map +1 -0
  255. package/dist/types/runner.d.ts +156 -0
  256. package/dist/types/runner.d.ts.map +1 -0
  257. package/dist/types/runner.js +41 -0
  258. package/dist/types/runner.js.map +1 -0
  259. package/dist/types/send.d.ts +157 -0
  260. package/dist/types/send.d.ts.map +1 -0
  261. package/dist/types/send.js +18 -0
  262. package/dist/types/send.js.map +1 -0
  263. package/dist/types/status.d.ts +150 -0
  264. package/dist/types/status.d.ts.map +1 -0
  265. package/dist/types/status.js +15 -0
  266. package/dist/types/status.js.map +1 -0
  267. package/dist/types/sync.d.ts +259 -0
  268. package/dist/types/sync.d.ts.map +1 -0
  269. package/dist/types/sync.js +38 -0
  270. package/dist/types/sync.js.map +1 -0
  271. package/package.json +72 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * vibe gaps - Gap analysis between PRD and implementation
3
+ *
4
+ * Identifies missing implementations, partial implementations,
5
+ * and orphaned implementations. Provides actionable suggestions
6
+ * for remediation.
7
+ */
8
+ import { Command } from 'clipanion';
9
+ export declare class GapsCommand extends Command {
10
+ static paths: string[][];
11
+ static usage: import("clipanion").Usage;
12
+ priority: string | undefined;
13
+ type: string | undefined;
14
+ module: string | undefined;
15
+ suggest: boolean;
16
+ json: boolean;
17
+ check: boolean;
18
+ execute(): Promise<number>;
19
+ /**
20
+ * Output JSON format
21
+ */
22
+ private outputJson;
23
+ /**
24
+ * Output CI check mode
25
+ */
26
+ private outputCheck;
27
+ /**
28
+ * Output standard format
29
+ */
30
+ private outputStandard;
31
+ /**
32
+ * Output summary section
33
+ */
34
+ private outputSummary;
35
+ /**
36
+ * Output missing implementation gaps
37
+ */
38
+ private outputMissingGaps;
39
+ /**
40
+ * Output partial implementation gaps
41
+ */
42
+ private outputPartialGaps;
43
+ /**
44
+ * Output orphaned implementation gaps
45
+ */
46
+ private outputOrphanedGaps;
47
+ /**
48
+ * Output scope suggestions
49
+ */
50
+ private outputSuggestions;
51
+ }
52
+ //# sourceMappingURL=gaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/gaps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAmD5C,qBAAa,WAAY,SAAQ,OAAO;IACtC,OAAgB,KAAK,aAAc;IAEnC,OAAgB,KAAK,4BAsBlB;IAGH,QAAQ,qBAEL;IAEH,IAAI,qBAED;IAEH,MAAM,qBAEH;IAEH,OAAO,UAEJ;IAEH,IAAI,UAED;IAEH,KAAK,UAEF;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAsJhC;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,WAAW;IA8DnB;;OAEG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwCrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuDzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqDzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgD1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA+C1B"}
@@ -0,0 +1,487 @@
1
+ /**
2
+ * vibe gaps - Gap analysis between PRD and implementation
3
+ *
4
+ * Identifies missing implementations, partial implementations,
5
+ * and orphaned implementations. Provides actionable suggestions
6
+ * for remediation.
7
+ */
8
+ import { Command, Option } from 'clipanion';
9
+ import chalk from 'chalk';
10
+ import Table from 'cli-table3';
11
+ import { loadConfig } from '../../core/config.js';
12
+ import { findProjectRoot } from '../../core/project.js';
13
+ import { analyzeGaps, getModuleNames, toGapsJsonOutput, hasP1Gaps, } from '../../core/gaps.js';
14
+ /**
15
+ * Get color for priority
16
+ */
17
+ function priorityColor(priority) {
18
+ switch (priority) {
19
+ case 'P1':
20
+ return chalk.red;
21
+ case 'P2':
22
+ return chalk.yellow;
23
+ case 'P3':
24
+ return chalk.blue;
25
+ case 'P4':
26
+ return chalk.gray;
27
+ }
28
+ }
29
+ /**
30
+ * Get icon for gap type
31
+ */
32
+ function typeIcon(type) {
33
+ switch (type) {
34
+ case 'missing':
35
+ return '\u25CB'; // empty circle
36
+ case 'partial':
37
+ return '\u25D4'; // half circle
38
+ case 'orphaned':
39
+ return '\u2753'; // question mark
40
+ }
41
+ }
42
+ export class GapsCommand extends Command {
43
+ static paths = [['gaps']];
44
+ static usage = Command.Usage({
45
+ description: 'Analyze gaps between PRD requirements and implementation',
46
+ details: `
47
+ Display gap analysis showing discrepancies between PRD requirements
48
+ and actual implementation status.
49
+
50
+ Gap types:
51
+ - Missing: Requirements without any linked scopes
52
+ - Partial: Scopes in progress with incomplete implementation
53
+ - Orphaned: Code/plans not linked to PRD requirements
54
+
55
+ Uses cached data only for instant results. Run 'vibe sync' first to update.
56
+ `,
57
+ examples: [
58
+ ['Show all gaps', 'vibe gaps'],
59
+ ['Filter by priority', 'vibe gaps --priority P1'],
60
+ ['Filter by type', 'vibe gaps --type missing'],
61
+ ['Filter by module', 'vibe gaps --module auth'],
62
+ ['Show scope suggestions', 'vibe gaps --suggest'],
63
+ ['JSON output', 'vibe gaps --json'],
64
+ ['CI mode (exit 1 if P1 gaps)', 'vibe gaps --check'],
65
+ ],
66
+ });
67
+ // Options
68
+ priority = Option.String('--priority,-p', {
69
+ description: 'Filter by priority (P1, P2, P3, P4)',
70
+ });
71
+ type = Option.String('--type,-t', {
72
+ description: 'Filter by gap type (missing, partial, orphaned)',
73
+ });
74
+ module = Option.String('--module,-m', {
75
+ description: 'Filter by PRD module name',
76
+ });
77
+ suggest = Option.Boolean('--suggest,-s', false, {
78
+ description: 'Include scope creation suggestions',
79
+ });
80
+ json = Option.Boolean('--json', false, {
81
+ description: 'Output as JSON for machine parsing',
82
+ });
83
+ check = Option.Boolean('--check,-c', false, {
84
+ description: 'CI mode: exit code 1 if P1 gaps exist',
85
+ });
86
+ async execute() {
87
+ try {
88
+ // Find project root
89
+ const projectRoot = findProjectRoot(process.cwd());
90
+ if (!projectRoot) {
91
+ if (this.json) {
92
+ this.context.stdout.write(JSON.stringify({ error: 'Not inside a vibe-fabric project' }, null, 2) + '\n');
93
+ }
94
+ else {
95
+ this.context.stderr.write(chalk.red(' Error: Not inside a vibe-fabric project.\n'));
96
+ this.context.stderr.write(chalk.gray(' Run `vibe init` to create a planning hub first.\n\n'));
97
+ }
98
+ return 1;
99
+ }
100
+ // Load config
101
+ const config = await loadConfig(projectRoot);
102
+ if (!config) {
103
+ if (this.json) {
104
+ this.context.stdout.write(JSON.stringify({ error: 'Failed to load configuration' }, null, 2) + '\n');
105
+ }
106
+ else {
107
+ this.context.stderr.write(chalk.red(' Error: Failed to load configuration.\n\n'));
108
+ }
109
+ return 1;
110
+ }
111
+ // Validate priority option
112
+ if (this.priority && !['P1', 'P2', 'P3', 'P4'].includes(this.priority)) {
113
+ if (this.json) {
114
+ this.context.stdout.write(JSON.stringify({ error: `Invalid priority: ${this.priority}. Use P1, P2, P3, or P4.` }, null, 2) + '\n');
115
+ }
116
+ else {
117
+ this.context.stderr.write(chalk.red(` Error: Invalid priority "${this.priority}". Use P1, P2, P3, or P4.\n\n`));
118
+ }
119
+ return 1;
120
+ }
121
+ // Validate type option
122
+ if (this.type && !['missing', 'partial', 'orphaned'].includes(this.type)) {
123
+ if (this.json) {
124
+ this.context.stdout.write(JSON.stringify({ error: `Invalid type: ${this.type}. Use missing, partial, or orphaned.` }, null, 2) + '\n');
125
+ }
126
+ else {
127
+ this.context.stderr.write(chalk.red(` Error: Invalid type "${this.type}". Use missing, partial, or orphaned.\n\n`));
128
+ }
129
+ return 1;
130
+ }
131
+ // Validate module option
132
+ if (this.module) {
133
+ const modules = await getModuleNames(projectRoot);
134
+ const moduleMatch = modules.find((m) => m.toLowerCase() === this.module.toLowerCase());
135
+ if (!moduleMatch) {
136
+ if (this.json) {
137
+ this.context.stdout.write(JSON.stringify({
138
+ error: `Module "${this.module}" not found`,
139
+ availableModules: modules,
140
+ }, null, 2) + '\n');
141
+ }
142
+ else {
143
+ this.context.stderr.write(chalk.red(` Error: Module "${this.module}" not found.\n\n`));
144
+ if (modules.length > 0) {
145
+ this.context.stderr.write(chalk.gray(' Available modules:\n'));
146
+ for (const mod of modules) {
147
+ this.context.stderr.write(chalk.gray(` - ${mod}\n`));
148
+ }
149
+ this.context.stderr.write('\n');
150
+ }
151
+ }
152
+ return 1;
153
+ }
154
+ }
155
+ // Perform gap analysis
156
+ const data = await analyzeGaps(projectRoot, {
157
+ priority: this.priority,
158
+ type: this.type,
159
+ module: this.module,
160
+ });
161
+ // Check for no PRD modules
162
+ const modules = await getModuleNames(projectRoot);
163
+ if (modules.length === 0) {
164
+ if (this.json) {
165
+ this.context.stdout.write(JSON.stringify({ error: 'No PRD modules found' }, null, 2) + '\n');
166
+ }
167
+ else {
168
+ this.context.stderr.write(chalk.yellow(' No PRD modules found.\n'));
169
+ this.context.stderr.write(chalk.gray(' Create PRD modules in docs/prd/modules/ first.\n\n'));
170
+ }
171
+ return 0;
172
+ }
173
+ // JSON output mode
174
+ if (this.json) {
175
+ return this.outputJson(data);
176
+ }
177
+ // CI check mode
178
+ if (this.check) {
179
+ return this.outputCheck(data);
180
+ }
181
+ // Standard output
182
+ return this.outputStandard(data);
183
+ }
184
+ catch (error) {
185
+ if (this.json) {
186
+ this.context.stdout.write(JSON.stringify({ error: error instanceof Error ? error.message : 'Unknown error' }, null, 2) + '\n');
187
+ }
188
+ else {
189
+ this.context.stderr.write(chalk.red(`\n Error: ${error instanceof Error ? error.message : 'Unknown error'}\n\n`));
190
+ }
191
+ return 1;
192
+ }
193
+ }
194
+ /**
195
+ * Output JSON format
196
+ */
197
+ outputJson(data) {
198
+ const output = toGapsJsonOutput(data);
199
+ this.context.stdout.write(JSON.stringify(output, null, 2) + '\n');
200
+ return hasP1Gaps(data) ? 1 : 0;
201
+ }
202
+ /**
203
+ * Output CI check mode
204
+ */
205
+ outputCheck(data) {
206
+ const hasP1 = hasP1Gaps(data);
207
+ this.context.stdout.write('\n');
208
+ if (hasP1) {
209
+ this.context.stdout.write(chalk.red(` \u2717 FAILED: ${data.summary.byPriority.P1} P1 gap(s) found\n\n`));
210
+ // List P1 gaps briefly
211
+ const p1Gaps = [
212
+ ...data.gaps.missing.filter((g) => g.priority === 'P1'),
213
+ ...data.gaps.partial.filter((g) => g.priority === 'P1'),
214
+ ...data.gaps.orphaned.filter((g) => g.priority === 'P1'),
215
+ ];
216
+ for (const gap of p1Gaps.slice(0, 5)) {
217
+ if (gap.type === 'missing') {
218
+ this.context.stdout.write(chalk.gray(` - ${gap.requirementId}: ${gap.title}\n`));
219
+ }
220
+ else if (gap.type === 'partial') {
221
+ this.context.stdout.write(chalk.gray(` - ${gap.scopeId}: ${gap.title} (${gap.progress}%)\n`));
222
+ }
223
+ else {
224
+ this.context.stdout.write(chalk.gray(` - ${gap.identifier} (${gap.repository})\n`));
225
+ }
226
+ }
227
+ if (p1Gaps.length > 5) {
228
+ this.context.stdout.write(chalk.gray(` ... and ${p1Gaps.length - 5} more\n`));
229
+ }
230
+ this.context.stdout.write('\n');
231
+ return 1;
232
+ }
233
+ this.context.stdout.write(chalk.green(` \u2713 PASSED: No P1 gaps found\n\n`));
234
+ // Show summary of other gaps
235
+ const { byPriority } = data.summary;
236
+ if (byPriority.P2 > 0 || byPriority.P3 > 0 || byPriority.P4 > 0) {
237
+ const parts = [];
238
+ if (byPriority.P2 > 0)
239
+ parts.push(`${byPriority.P2} P2`);
240
+ if (byPriority.P3 > 0)
241
+ parts.push(`${byPriority.P3} P3`);
242
+ if (byPriority.P4 > 0)
243
+ parts.push(`${byPriority.P4} P4`);
244
+ this.context.stdout.write(chalk.gray(` Note: ${parts.join(', ')} gap(s) remaining\n\n`));
245
+ }
246
+ return 0;
247
+ }
248
+ /**
249
+ * Output standard format
250
+ */
251
+ outputStandard(data) {
252
+ const { summary, gaps } = data;
253
+ this.context.stdout.write('\n');
254
+ // Check for no gaps
255
+ if (summary.byType.total === 0) {
256
+ this.context.stdout.write(chalk.green(' \u2713 No gaps found! PRD fully aligned.\n\n'));
257
+ return 0;
258
+ }
259
+ // Header
260
+ this.context.stdout.write(chalk.bold.blue(' Gap Analysis Report\n'));
261
+ this.context.stdout.write(chalk.gray(' ' + '\u2550'.repeat(60)) + '\n\n');
262
+ // Summary section
263
+ this.outputSummary(summary);
264
+ // Missing implementations
265
+ if (gaps.missing.length > 0) {
266
+ this.outputMissingGaps(gaps.missing);
267
+ }
268
+ // Partial implementations
269
+ if (gaps.partial.length > 0) {
270
+ this.outputPartialGaps(gaps.partial);
271
+ }
272
+ // Orphaned implementations
273
+ if (gaps.orphaned.length > 0) {
274
+ this.outputOrphanedGaps(gaps.orphaned);
275
+ }
276
+ // Suggestions (if flag enabled)
277
+ if (this.suggest && data.suggestions.length > 0) {
278
+ this.outputSuggestions(data.suggestions);
279
+ }
280
+ return 0;
281
+ }
282
+ /**
283
+ * Output summary section
284
+ */
285
+ outputSummary(summary) {
286
+ // By Priority
287
+ this.context.stdout.write(chalk.bold(' Summary by Priority:\n'));
288
+ const priorityParts = [];
289
+ if (summary.byPriority.P1 > 0) {
290
+ priorityParts.push(chalk.red(`P1: ${summary.byPriority.P1}`));
291
+ }
292
+ if (summary.byPriority.P2 > 0) {
293
+ priorityParts.push(chalk.yellow(`P2: ${summary.byPriority.P2}`));
294
+ }
295
+ if (summary.byPriority.P3 > 0) {
296
+ priorityParts.push(chalk.blue(`P3: ${summary.byPriority.P3}`));
297
+ }
298
+ if (summary.byPriority.P4 > 0) {
299
+ priorityParts.push(chalk.gray(`P4: ${summary.byPriority.P4}`));
300
+ }
301
+ this.context.stdout.write(` ${priorityParts.join(' | ')}\n`);
302
+ this.context.stdout.write(chalk.gray(` Total: ${summary.byPriority.total} gap(s)\n\n`));
303
+ // By Type
304
+ this.context.stdout.write(chalk.bold(' Summary by Type:\n'));
305
+ const typeParts = [];
306
+ if (summary.byType.missing > 0) {
307
+ typeParts.push(`${typeIcon('missing')} Missing: ${summary.byType.missing}`);
308
+ }
309
+ if (summary.byType.partial > 0) {
310
+ typeParts.push(`${typeIcon('partial')} Partial: ${summary.byType.partial}`);
311
+ }
312
+ if (summary.byType.orphaned > 0) {
313
+ typeParts.push(`${typeIcon('orphaned')} Orphaned: ${summary.byType.orphaned}`);
314
+ }
315
+ this.context.stdout.write(` ${typeParts.join(' | ')}\n\n`);
316
+ }
317
+ /**
318
+ * Output missing implementation gaps
319
+ */
320
+ outputMissingGaps(gaps) {
321
+ this.context.stdout.write(chalk.bold(` ${typeIcon('missing')} MISSING IMPLEMENTATIONS (${gaps.length})\n`));
322
+ this.context.stdout.write(chalk.gray(' ' + '\u2500'.repeat(55)) + '\n');
323
+ const table = new Table({
324
+ head: ['ID', 'Title', 'Module', 'Priority'].map((h) => chalk.gray(h)),
325
+ style: { head: [], border: [] },
326
+ colWidths: [18, 30, 12, 8],
327
+ wordWrap: true,
328
+ chars: {
329
+ top: '',
330
+ 'top-mid': '',
331
+ 'top-left': '',
332
+ 'top-right': '',
333
+ bottom: '',
334
+ 'bottom-mid': '',
335
+ 'bottom-left': '',
336
+ 'bottom-right': '',
337
+ left: ' ',
338
+ 'left-mid': '',
339
+ mid: '',
340
+ 'mid-mid': '',
341
+ right: '',
342
+ 'right-mid': '',
343
+ middle: ' ',
344
+ },
345
+ });
346
+ // Sort by priority
347
+ const sorted = [...gaps].sort((a, b) => {
348
+ const order = { P1: 0, P2: 1, P3: 2, P4: 3 };
349
+ return order[a.priority] - order[b.priority];
350
+ });
351
+ for (const gap of sorted.slice(0, 15)) {
352
+ table.push([
353
+ gap.requirementId,
354
+ gap.title.slice(0, 28),
355
+ gap.module,
356
+ priorityColor(gap.priority)(gap.priority),
357
+ ]);
358
+ }
359
+ this.context.stdout.write(table.toString() + '\n');
360
+ if (gaps.length > 15) {
361
+ this.context.stdout.write(chalk.gray(` ... and ${gaps.length - 15} more\n`));
362
+ }
363
+ this.context.stdout.write('\n');
364
+ }
365
+ /**
366
+ * Output partial implementation gaps
367
+ */
368
+ outputPartialGaps(gaps) {
369
+ this.context.stdout.write(chalk.bold(` ${typeIcon('partial')} PARTIAL IMPLEMENTATIONS (${gaps.length})\n`));
370
+ this.context.stdout.write(chalk.gray(' ' + '\u2500'.repeat(55)) + '\n');
371
+ const table = new Table({
372
+ head: ['Scope', 'Title', 'Progress', 'Status'].map((h) => chalk.gray(h)),
373
+ style: { head: [], border: [] },
374
+ colWidths: [14, 28, 10, 16],
375
+ wordWrap: true,
376
+ chars: {
377
+ top: '',
378
+ 'top-mid': '',
379
+ 'top-left': '',
380
+ 'top-right': '',
381
+ bottom: '',
382
+ 'bottom-mid': '',
383
+ 'bottom-left': '',
384
+ 'bottom-right': '',
385
+ left: ' ',
386
+ 'left-mid': '',
387
+ mid: '',
388
+ 'mid-mid': '',
389
+ right: '',
390
+ 'right-mid': '',
391
+ middle: ' ',
392
+ },
393
+ });
394
+ for (const gap of gaps.slice(0, 10)) {
395
+ const statusText = gap.blocked
396
+ ? chalk.red(`Blocked`)
397
+ : chalk.yellow(gap.status);
398
+ table.push([
399
+ gap.scopeId,
400
+ gap.title.slice(0, 26),
401
+ `${gap.progress}%`,
402
+ statusText,
403
+ ]);
404
+ }
405
+ this.context.stdout.write(table.toString() + '\n');
406
+ if (gaps.length > 10) {
407
+ this.context.stdout.write(chalk.gray(` ... and ${gaps.length - 10} more\n`));
408
+ }
409
+ this.context.stdout.write('\n');
410
+ }
411
+ /**
412
+ * Output orphaned implementation gaps
413
+ */
414
+ outputOrphanedGaps(gaps) {
415
+ this.context.stdout.write(chalk.bold(` ${typeIcon('orphaned')} ORPHANED IMPLEMENTATIONS (${gaps.length})\n`));
416
+ this.context.stdout.write(chalk.gray(' ' + '\u2500'.repeat(55)) + '\n');
417
+ const table = new Table({
418
+ head: ['Identifier', 'Repository', 'Action'].map((h) => chalk.gray(h)),
419
+ style: { head: [], border: [] },
420
+ colWidths: [25, 15, 28],
421
+ wordWrap: true,
422
+ chars: {
423
+ top: '',
424
+ 'top-mid': '',
425
+ 'top-left': '',
426
+ 'top-right': '',
427
+ bottom: '',
428
+ 'bottom-mid': '',
429
+ 'bottom-left': '',
430
+ 'bottom-right': '',
431
+ left: ' ',
432
+ 'left-mid': '',
433
+ mid: '',
434
+ 'mid-mid': '',
435
+ right: '',
436
+ 'right-mid': '',
437
+ middle: ' ',
438
+ },
439
+ });
440
+ for (const gap of gaps.slice(0, 10)) {
441
+ table.push([
442
+ gap.identifier.slice(0, 23),
443
+ gap.repository,
444
+ gap.suggestedAction.slice(0, 26),
445
+ ]);
446
+ }
447
+ this.context.stdout.write(table.toString() + '\n');
448
+ if (gaps.length > 10) {
449
+ this.context.stdout.write(chalk.gray(` ... and ${gaps.length - 10} more\n`));
450
+ }
451
+ this.context.stdout.write('\n');
452
+ }
453
+ /**
454
+ * Output scope suggestions
455
+ */
456
+ outputSuggestions(suggestions) {
457
+ this.context.stdout.write(chalk.bold.cyan(' SUGGESTED SCOPES\n'));
458
+ this.context.stdout.write(chalk.gray(' ' + '\u2500'.repeat(55)) + '\n');
459
+ // Group by priority
460
+ const byPriority = new Map();
461
+ for (const s of suggestions) {
462
+ const existing = byPriority.get(s.priority) ?? [];
463
+ existing.push(s);
464
+ byPriority.set(s.priority, existing);
465
+ }
466
+ for (const priority of ['P1', 'P2', 'P3', 'P4']) {
467
+ const prioritySuggestions = byPriority.get(priority);
468
+ if (!prioritySuggestions || prioritySuggestions.length === 0)
469
+ continue;
470
+ this.context.stdout.write(`\n ${priorityColor(priority)(priority)} Priority:\n`);
471
+ for (const s of prioritySuggestions.slice(0, 5)) {
472
+ this.context.stdout.write(chalk.gray(' \u251C\u2500\u2500 ') +
473
+ `${s.title.slice(0, 45)}\n`);
474
+ this.context.stdout.write(chalk.gray(` \u2502 Requirements: ${s.requirements.join(', ')}\n`));
475
+ this.context.stdout.write(chalk.gray(` \u2502 Effort: ${s.estimatedEffort} | Module: ${s.module}\n`));
476
+ }
477
+ if (prioritySuggestions.length > 5) {
478
+ this.context.stdout.write(chalk.gray(` ... and ${prioritySuggestions.length - 5} more ${priority} suggestions\n`));
479
+ }
480
+ }
481
+ this.context.stdout.write('\n');
482
+ this.context.stdout.write(chalk.gray(' Run ') +
483
+ chalk.cyan('vibe scope') +
484
+ chalk.gray(' to create these scopes.\n\n'));
485
+ }
486
+ }
487
+ //# sourceMappingURL=gaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaps.js","sourceRoot":"","sources":["../../../src/cli/commands/gaps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Command } from 'clipanion';
2
+ export declare class HelpCommand extends Command {
3
+ static paths: string[][];
4
+ static usage: import("clipanion").Usage;
5
+ execute(): Promise<number>;
6
+ }
7
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qBAAa,WAAY,SAAQ,OAAO;IACtC,OAAgB,KAAK,aAAkC;IAEvD,OAAgB,KAAK,4BAElB;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAkDjC"}
@@ -0,0 +1,51 @@
1
+ import { Command } from 'clipanion';
2
+ import chalk from 'chalk';
3
+ export class HelpCommand extends Command {
4
+ static paths = [['help'], ['--help'], ['-h']];
5
+ static usage = Command.Usage({
6
+ description: 'Show help information',
7
+ });
8
+ async execute() {
9
+ this.context.stdout.write('\n');
10
+ this.context.stdout.write(chalk.bold.blue(' VIBE-FABRIC') + chalk.gray(' - AI-Collaborative Development Coordination\n'));
11
+ this.context.stdout.write(chalk.gray(' ─'.repeat(30)) + '\n\n');
12
+ this.context.stdout.write(chalk.bold(' USAGE\n\n'));
13
+ this.context.stdout.write(' vibe <command> [options]\n\n');
14
+ this.context.stdout.write(chalk.bold(' CORE COMMANDS\n\n'));
15
+ this.context.stdout.write(' init [name] Initialize a planning hub\n');
16
+ this.context.stdout.write(' repo add <url> Add repository to hub\n');
17
+ this.context.stdout.write(' prd AI-powered PRD management\n');
18
+ this.context.stdout.write(' scope AI-powered scope management\n');
19
+ this.context.stdout.write(' send [scope-id] Send scopes to repositories\n');
20
+ this.context.stdout.write(' sync Sync progress from repositories\n');
21
+ this.context.stdout.write(' status Show project status overview\n');
22
+ this.context.stdout.write(' coverage PRD coverage analysis\n');
23
+ this.context.stdout.write(' gaps Gap analysis (PRD vs implementation)\n');
24
+ this.context.stdout.write(' doctor Health check and diagnostics\n');
25
+ this.context.stdout.write(' claude commands Manage Claude Code slash commands\n');
26
+ this.context.stdout.write(' version Show version\n');
27
+ this.context.stdout.write(' help Show this help\n');
28
+ this.context.stdout.write('\n');
29
+ this.context.stdout.write(chalk.bold(' EXAMPLES\n\n'));
30
+ this.context.stdout.write(' vibe init my-project Create new planning hub\n');
31
+ this.context.stdout.write(' vibe repo add <url> Add a GitHub repository\n');
32
+ this.context.stdout.write(' vibe prd Create/manage PRD\n');
33
+ this.context.stdout.write(' vibe scope Create/manage scopes\n');
34
+ this.context.stdout.write(' vibe send SCOPE-001 Send scope to dev repo\n');
35
+ this.context.stdout.write(' vibe sync Sync progress from repos\n');
36
+ this.context.stdout.write(' vibe status Show project overview\n');
37
+ this.context.stdout.write(' vibe coverage Show PRD coverage report\n');
38
+ this.context.stdout.write(' vibe gaps Analyze implementation gaps\n');
39
+ this.context.stdout.write(' vibe claude commands --list List Claude slash commands\n');
40
+ this.context.stdout.write('\n');
41
+ this.context.stdout.write(chalk.bold(' PREREQUISITES\n\n'));
42
+ this.context.stdout.write(' Claude Code Required for AI commands\n');
43
+ this.context.stdout.write(' GitHub Token Required for repo operations\n');
44
+ this.context.stdout.write(' UV (Python) Recommended for scripts\n');
45
+ this.context.stdout.write('\n');
46
+ this.context.stdout.write(chalk.gray(' Documentation: https://github.com/jneaimi/vibe-fabric#documentation\n'));
47
+ this.context.stdout.write(chalk.gray(' Report issues: https://github.com/jneaimi/vibe-fabric/issues\n\n'));
48
+ return 0;
49
+ }
50
+ }
51
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"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"}