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,12 @@
1
+ /**
2
+ * PRD Coverage component
3
+ * Shows requirements coverage percentage and gaps
4
+ */
5
+ import React from 'react';
6
+ import type { CoverageInfo } from '../../../core/dashboard/data.js';
7
+ interface PrdCoverageProps {
8
+ coverage: CoverageInfo;
9
+ }
10
+ export declare const PrdCoverage: React.FC<PrdCoverageProps>;
11
+ export {};
12
+ //# sourceMappingURL=PrdCoverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrdCoverage.d.ts","sourceRoot":"","sources":["../../../../src/cli/ui/components/PrdCoverage.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAiBpE,UAAU,gBAAgB;IACxB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqClD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ /**
4
+ * Progress bar component
5
+ */
6
+ const ProgressBar = ({ value, width }) => {
7
+ const filled = Math.round((value / 100) * width);
8
+ const empty = width - filled;
9
+ return (_jsxs(Text, { children: [_jsx(Text, { color: "green", children: '█'.repeat(filled) }), _jsx(Text, { color: "gray", children: '░'.repeat(empty) })] }));
10
+ };
11
+ export const PrdCoverage = ({ coverage }) => {
12
+ const { percentage, done, total, gaps } = coverage;
13
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, width: 35, children: [_jsx(Text, { bold: true, children: " PRD Coverage " }), total === 0 ? (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsx(Text, { color: "gray", children: "No requirements yet." }), _jsx(Text, { color: "gray", children: " " }), _jsxs(Text, { children: ["Press ", _jsx(Text, { color: "cyan", children: "[P]" }), " to create PRD."] })] })) : (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsx(ProgressBar, { value: percentage, width: 20 }), _jsxs(Text, { children: [" ", percentage, "%"] })] }), _jsxs(Text, { color: "gray", children: [done, "/", total, " requirements done"] }), gaps > 0 && (_jsxs(Text, { color: "yellow", children: ["Gaps: ", gaps] }))] }))] }));
14
+ };
15
+ //# sourceMappingURL=PrdCoverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrdCoverage.js","sourceRoot":"","sources":["../../../../src/cli/ui/components/PrdCoverage.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC;;GAEG;AACH,MAAM,WAAW,GAA+C,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAQ,EAC/C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,IACxC,CACR,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IAEnD,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,EAAE,aAET,KAAC,IAAI,IAAC,IAAI,qCAAsB,EAE/B,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CACb,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qCAA4B,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,EAC3B,MAAC,IAAI,yBACG,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,uBAC9B,IACH,CACP,CAAC,CAAC,CAAC,CACF,8BACE,MAAC,GAAG,eACF,KAAC,WAAW,IAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAI,EAC7C,MAAC,IAAI,oBAAG,UAAU,SAAS,IACvB,EACN,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aACf,IAAI,OAAG,KAAK,0BACR,EACN,IAAI,GAAG,CAAC,IAAI,CACX,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAQ,IAAI,IAAQ,CACzC,IACA,CACJ,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Recent activity component
3
+ * Shows recent project activity
4
+ */
5
+ import React from 'react';
6
+ import type { ActivityItem } from '../../../core/dashboard/data.js';
7
+ interface RecentActivityProps {
8
+ items: ActivityItem[];
9
+ }
10
+ export declare const RecentActivity: React.FC<RecentActivityProps>;
11
+ export {};
12
+ //# sourceMappingURL=RecentActivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecentActivity.d.ts","sourceRoot":"","sources":["../../../../src/cli/ui/components/RecentActivity.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAuCpE,UAAU,mBAAmB;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAyBxD,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ /**
4
+ * Format timestamp for display
5
+ */
6
+ function formatTimestamp(date) {
7
+ const now = Date.now();
8
+ const diff = now - date.getTime();
9
+ const minutes = Math.floor(diff / 60000);
10
+ if (minutes < 60)
11
+ return `${minutes}m ago`;
12
+ const hours = Math.floor(diff / 3600000);
13
+ if (hours < 24)
14
+ return `${hours}h ago`;
15
+ const days = Math.floor(diff / 86400000);
16
+ if (days === 1)
17
+ return 'yesterday';
18
+ return `${days}d ago`;
19
+ }
20
+ /**
21
+ * Get activity type symbol
22
+ */
23
+ function getTypeSymbol(type) {
24
+ switch (type) {
25
+ case 'scope':
26
+ return '●';
27
+ case 'prd':
28
+ return '◆';
29
+ case 'sync':
30
+ return '↻';
31
+ case 'repo':
32
+ return '⬢';
33
+ default:
34
+ return '•';
35
+ }
36
+ }
37
+ export const RecentActivity = ({ items }) => {
38
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, children: [_jsx(Text, { bold: true, children: " Recent Activity " }), items.length === 0 ? (_jsx(Text, { color: "gray", children: "No recent activity." })) : (items.map((item, index) => (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: getTypeSymbol(item.type) }), _jsxs(Text, { children: [" ", item.message] })] }), _jsx(Text, { color: "gray", children: formatTimestamp(item.timestamp) })] }, index))))] }));
39
+ };
40
+ //# sourceMappingURL=RecentActivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecentActivity.js","sourceRoot":"","sources":["../../../../src/cli/ui/components/RecentActivity.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC;;GAEG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAElC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,OAAO,CAAC;IAE3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,OAAO,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAEnC,OAAO,GAAG,IAAI,OAAO,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAA0B;IAC/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,KAAK;YACR,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAMD,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACzE,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,IAAI,wCAAyB,EAElC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oCAA2B,CAC9C,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACzB,MAAC,GAAG,IAAa,cAAc,EAAC,eAAe,aAC7C,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAQ,EACpD,MAAC,IAAI,oBAAG,IAAI,CAAC,OAAO,IAAQ,IACvB,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAQ,KALnD,KAAK,CAMT,CACP,CAAC,CACH,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Repository list component
3
+ * Shows configured repositories with sync status
4
+ */
5
+ import React from 'react';
6
+ import type { RepoInfo } from '../../../core/dashboard/data.js';
7
+ interface RepoListProps {
8
+ repos: RepoInfo[];
9
+ }
10
+ export declare const RepoList: React.FC<RepoListProps>;
11
+ export {};
12
+ //# sourceMappingURL=RepoList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepoList.d.ts","sourceRoot":"","sources":["../../../../src/cli/ui/components/RepoList.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAqBhE,UAAU,aAAa;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkC5C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ /**
4
+ * Format sync age for display
5
+ */
6
+ function formatAge(date) {
7
+ if (!date)
8
+ return 'not synced';
9
+ const ageMs = Date.now() - date.getTime();
10
+ const minutes = Math.floor(ageMs / 60000);
11
+ if (minutes < 5)
12
+ return 'just now';
13
+ if (minutes < 60)
14
+ return `${minutes}m ago`;
15
+ const hours = Math.floor(minutes / 60);
16
+ if (hours < 24)
17
+ return `${hours}h ago`;
18
+ const days = Math.floor(hours / 24);
19
+ return `${days}d ago`;
20
+ }
21
+ export const RepoList = ({ repos }) => {
22
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, width: 35, children: [_jsx(Text, { bold: true, children: " Repositories " }), repos.length === 0 ? (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsx(Text, { color: "gray", children: "No repositories configured." }), _jsx(Text, { color: "gray", children: " " }), _jsxs(Text, { children: ["Press ", _jsx(Text, { color: "cyan", children: "[R]" }), " to add a repository."] })] })) : (repos.map((repo) => (_jsxs(Box, { children: [_jsx(Text, { color: repo.synced ? 'green' : 'yellow', children: repo.synced ? '●' : '○' }), _jsxs(Text, { children: [" ", repo.alias.padEnd(12)] }), _jsx(Text, { color: "gray", children: repo.synced ? `synced ${formatAge(repo.lastSync)}` : 'not synced' })] }, repo.alias))))] }));
23
+ };
24
+ //# sourceMappingURL=RepoList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepoList.js","sourceRoot":"","sources":["../../../../src/cli/ui/components/RepoList.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC;;GAEG;AACH,SAAS,SAAS,CAAC,IAAW;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAC;IAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IAE1C,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACnC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,OAAO,CAAC;IAE3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,OAAO,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACpC,OAAO,GAAG,IAAI,OAAO,CAAC;AACxB,CAAC;AAMD,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7D,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,EAAE,aAET,KAAC,IAAI,IAAC,IAAI,qCAAsB,EAE/B,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,4CAAmC,EACrD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,EAC3B,MAAC,IAAI,yBACG,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oBAAW,6BAC9B,IACH,CACP,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,YAC1C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GACnB,EACP,MAAC,IAAI,oBAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAQ,EACrC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,GAC7D,KAPC,IAAI,CAAC,KAAK,CAQd,CACP,CAAC,CACH,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Keyboard shortcuts component
3
+ * Shows available keyboard shortcuts at bottom of dashboard
4
+ */
5
+ import React from 'react';
6
+ export declare const Shortcuts: React.FC;
7
+ //# sourceMappingURL=Shortcuts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shortcuts.d.ts","sourceRoot":"","sources":["../../../../src/cli/ui/components/Shortcuts.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAiB7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ const Shortcut = ({ letter, label }) => (_jsxs(Text, { children: ["[", _jsx(Text, { color: "cyan", children: letter }), "] ", label, ' '] }));
4
+ export const Shortcuts = () => {
5
+ return (_jsxs(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, justifyContent: "center", children: [_jsx(Shortcut, { letter: "P", label: "PRD" }), _jsx(Shortcut, { letter: "S", label: "Scope" }), _jsx(Shortcut, { letter: "R", label: "Repos" }), _jsx(Shortcut, { letter: "Y", label: "Sync" }), _jsx(Shortcut, { letter: "G", label: "Gaps" }), _jsx(Shortcut, { letter: "D", label: "Doctor" }), _jsx(Shortcut, { letter: "Q", label: "Quit" })] }));
6
+ };
7
+ //# sourceMappingURL=Shortcuts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shortcuts.js","sourceRoot":"","sources":["../../../../src/cli/ui/components/Shortcuts.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAOhC,MAAM,QAAQ,GAA4B,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAC/D,MAAC,IAAI,oBACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,MAAM,GAAQ,QAAG,KAAK,EAAE,IAAI,IAC5C,CACR,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAa,GAAG,EAAE;IACtC,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,QAAQ,aAEvB,KAAC,QAAQ,IAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,KAAK,GAAG,EACnC,KAAC,QAAQ,IAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,OAAO,GAAG,EACrC,KAAC,QAAQ,IAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,OAAO,GAAG,EACrC,KAAC,QAAQ,IAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,GAAG,EACpC,KAAC,QAAQ,IAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,GAAG,EACpC,KAAC,QAAQ,IAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,QAAQ,GAAG,EACtC,KAAC,QAAQ,IAAC,MAAM,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,GAAG,IAChC,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Dashboard UI components
3
+ * Export all components for easy importing
4
+ */
5
+ export { Header } from './Header.js';
6
+ export { RepoList } from './RepoList.js';
7
+ export { PrdCoverage } from './PrdCoverage.js';
8
+ export { ActiveScopes } from './ActiveScopes.js';
9
+ export { RecentActivity } from './RecentActivity.js';
10
+ export { Shortcuts } from './Shortcuts.js';
11
+ export { EmptyState, LoadingState, NoProjectState } from './EmptyState.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/ui/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Dashboard UI components
3
+ * Export all components for easy importing
4
+ */
5
+ export { Header } from './Header.js';
6
+ export { RepoList } from './RepoList.js';
7
+ export { PrdCoverage } from './PrdCoverage.js';
8
+ export { ActiveScopes } from './ActiveScopes.js';
9
+ export { RecentActivity } from './RecentActivity.js';
10
+ export { Shortcuts } from './Shortcuts.js';
11
+ export { EmptyState, LoadingState, NoProjectState } from './EmptyState.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/ui/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * TUI Dashboard
3
+ * Main dashboard component that runs when `vibe` is called without arguments
4
+ */
5
+ /**
6
+ * Run the dashboard
7
+ */
8
+ export declare function runDashboard(): Promise<void>;
9
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/dashboard.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAwJH;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD"}
@@ -0,0 +1,102 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * TUI Dashboard
4
+ * Main dashboard component that runs when `vibe` is called without arguments
5
+ */
6
+ import { useState, useEffect } from 'react';
7
+ import { render, Box, Text, useInput, useApp } from 'ink';
8
+ import { spawn } from 'child_process';
9
+ import { Header, RepoList, PrdCoverage, ActiveScopes, RecentActivity, Shortcuts, LoadingState, NoProjectState, } from './components/index.js';
10
+ import { loadDashboardData } from '../../core/dashboard/data.js';
11
+ /**
12
+ * Spawn a vibe command and exit dashboard
13
+ */
14
+ function spawnCommand(command, exitFn) {
15
+ // Exit dashboard first
16
+ exitFn();
17
+ // Small delay to let the terminal reset
18
+ setTimeout(() => {
19
+ const proc = spawn('node', [process.argv[1] ?? '', ...command], {
20
+ stdio: 'inherit',
21
+ cwd: process.cwd(),
22
+ });
23
+ proc.on('close', (code) => {
24
+ process.exit(code ?? 0);
25
+ });
26
+ }, 100);
27
+ }
28
+ /**
29
+ * Main Dashboard component
30
+ */
31
+ const Dashboard = () => {
32
+ const { exit } = useApp();
33
+ const [data, setData] = useState(null);
34
+ const [loading, setLoading] = useState(true);
35
+ const [error, setError] = useState(null);
36
+ // Load dashboard data on mount
37
+ useEffect(() => {
38
+ loadDashboardData()
39
+ .then((d) => {
40
+ setData(d);
41
+ setLoading(false);
42
+ })
43
+ .catch((err) => {
44
+ setError(err instanceof Error ? err.message : 'Failed to load data');
45
+ setLoading(false);
46
+ });
47
+ }, []);
48
+ // Handle keyboard input
49
+ useInput((input) => {
50
+ const key = input.toLowerCase();
51
+ switch (key) {
52
+ case 'q':
53
+ exit();
54
+ break;
55
+ case 'p':
56
+ spawnCommand(['prd'], exit);
57
+ break;
58
+ case 's':
59
+ spawnCommand(['scope'], exit);
60
+ break;
61
+ case 'r':
62
+ spawnCommand(['repo', 'list'], exit);
63
+ break;
64
+ case 'y':
65
+ spawnCommand(['sync'], exit);
66
+ break;
67
+ case 'g':
68
+ spawnCommand(['gaps'], exit);
69
+ break;
70
+ case 'd':
71
+ spawnCommand(['doctor'], exit);
72
+ break;
73
+ case 'i':
74
+ if (!data?.hasProject) {
75
+ spawnCommand(['init'], exit);
76
+ }
77
+ break;
78
+ }
79
+ });
80
+ // Loading state
81
+ if (loading) {
82
+ return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(LoadingState, { message: "Loading dashboard..." }) }));
83
+ }
84
+ // Error state
85
+ if (error) {
86
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { color: "red", children: ["Error: ", error] }), _jsx(Text, { color: "gray", children: "Press Q to quit." })] }));
87
+ }
88
+ // No project state
89
+ if (!data?.hasProject) {
90
+ return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(NoProjectState, {}) }));
91
+ }
92
+ // Main dashboard
93
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Header, { projectName: data.header.projectName, version: data.header.version, lastSync: data.header.lastSync }), _jsxs(Box, { marginTop: 1, children: [_jsx(RepoList, { repos: data.repos }), _jsx(Box, { marginLeft: 1, children: _jsx(PrdCoverage, { coverage: data.coverage }) })] }), _jsx(Box, { marginTop: 1, children: _jsx(ActiveScopes, { scopes: data.scopes, summary: data.scopeSummary }) }), _jsx(Box, { marginTop: 1, children: _jsx(RecentActivity, { items: data.activity }) }), _jsx(Box, { marginTop: 1, children: _jsx(Shortcuts, {}) })] }));
94
+ };
95
+ /**
96
+ * Run the dashboard
97
+ */
98
+ export async function runDashboard() {
99
+ const { waitUntilExit } = render(_jsx(Dashboard, {}));
100
+ await waitUntilExit();
101
+ }
102
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/cli/ui/dashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Command file generation and management
3
+ *
4
+ * Handles creation and management of .claude/commands/ files for both
5
+ * the planning hub and dev repositories.
6
+ */
7
+ import type { ParsedCommand, CommandListResult } from '../types/runner.js';
8
+ /**
9
+ * Generate planning hub commands in .claude/commands/
10
+ */
11
+ export declare function generatePlanningHubCommands(projectPath: string): Promise<string[]>;
12
+ /**
13
+ * Generate dev repo commands (for injection via vibe repo add)
14
+ */
15
+ export declare function generateDevRepoCommands(repoPath: string): Promise<string[]>;
16
+ /**
17
+ * List all commands in a project
18
+ */
19
+ export declare function listCommands(projectPath: string): Promise<CommandListResult>;
20
+ /**
21
+ * Check if planning hub commands exist
22
+ */
23
+ export declare function hasCommands(projectPath: string): Promise<boolean>;
24
+ /**
25
+ * Get specific command content
26
+ */
27
+ export declare function getCommand(projectPath: string, name: string): Promise<ParsedCommand | null>;
28
+ /**
29
+ * Create custom command directory
30
+ */
31
+ export declare function ensureCustomCommandsDir(projectPath: string): Promise<void>;
32
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAmP3E;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAaxF;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAajF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0DlF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAYjG;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAShF"}