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 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Prompt utilities - loading, parsing, and validating prompt templates
3
+ */
4
+ import type { PromptOperation, PromptVariable, PromptMetadata, PromptVariables, SubstitutionResult, PromptValidation, OutputValidation } from '../types/prompts.js';
5
+ /**
6
+ * Get the path to a prompt file
7
+ */
8
+ export declare function getPromptPath(projectPath: string, operation: PromptOperation, promptName: string): string;
9
+ /**
10
+ * Check if a prompt file exists
11
+ */
12
+ export declare function promptExists(projectPath: string, operation: PromptOperation, promptName: string): Promise<boolean>;
13
+ /**
14
+ * Load a prompt template from file
15
+ */
16
+ export declare function loadPrompt(projectPath: string, operation: PromptOperation, promptName: string): Promise<string>;
17
+ /**
18
+ * Parse the Variables table from a prompt template
19
+ */
20
+ export declare function parseVariables(content: string): PromptVariable[];
21
+ /**
22
+ * Extract all variable references from a prompt template
23
+ */
24
+ export declare function extractVariables(content: string): string[];
25
+ /**
26
+ * Substitute variables in a prompt template
27
+ */
28
+ export declare function substituteVariables(template: string, variables: PromptVariables): SubstitutionResult;
29
+ /**
30
+ * Validate that all required variables are provided
31
+ */
32
+ export declare function validateVariables(template: string, variables: PromptVariables): PromptValidation;
33
+ /**
34
+ * Parse prompt metadata from template content
35
+ */
36
+ export declare function parsePromptMetadata(content: string, filePath: string): PromptMetadata;
37
+ /**
38
+ * List all available prompts for an operation
39
+ */
40
+ export declare function listPrompts(projectPath: string, operation: PromptOperation): Promise<string[]>;
41
+ /**
42
+ * Validate assessment output format
43
+ */
44
+ export declare function validateAssessmentOutput(output: unknown): OutputValidation;
45
+ /**
46
+ * Load and prepare a prompt for execution
47
+ */
48
+ export declare function preparePrompt(projectPath: string, operation: PromptOperation, promptName: string, variables: PromptVariables): Promise<{
49
+ content: string;
50
+ validation: PromptValidation;
51
+ }>;
52
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/core/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAU7B;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAqChE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAU1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,eAAe,GACzB,kBAAkB,CAyBpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,eAAe,GACzB,gBAAgB,CA4BlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,cAAc,CA0BhB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAiD1E;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAqB5D"}
@@ -0,0 +1,266 @@
1
+ /**
2
+ * Prompt utilities - loading, parsing, and validating prompt templates
3
+ */
4
+ import { readFile, access, readdir } from 'fs/promises';
5
+ import { constants } from 'fs';
6
+ import path from 'path';
7
+ const PROMPTS_DIR = '.claude/prompts';
8
+ /**
9
+ * Variable pattern: matches {VARIABLE_NAME}
10
+ * Only uppercase letters and underscores
11
+ */
12
+ const VARIABLE_PATTERN = /\{([A-Z][A-Z0-9_]*)\}/g;
13
+ /**
14
+ * Get the path to a prompt file
15
+ */
16
+ export function getPromptPath(projectPath, operation, promptName) {
17
+ return path.join(projectPath, PROMPTS_DIR, operation, `${promptName}.md`);
18
+ }
19
+ /**
20
+ * Check if a prompt file exists
21
+ */
22
+ export async function promptExists(projectPath, operation, promptName) {
23
+ const promptPath = getPromptPath(projectPath, operation, promptName);
24
+ try {
25
+ await access(promptPath, constants.R_OK);
26
+ return true;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ /**
33
+ * Load a prompt template from file
34
+ */
35
+ export async function loadPrompt(projectPath, operation, promptName) {
36
+ const promptPath = getPromptPath(projectPath, operation, promptName);
37
+ try {
38
+ return await readFile(promptPath, 'utf-8');
39
+ }
40
+ catch (error) {
41
+ throw new Error(`Prompt not found: ${promptPath}`);
42
+ }
43
+ }
44
+ /**
45
+ * Parse the Variables table from a prompt template
46
+ */
47
+ export function parseVariables(content) {
48
+ const variables = [];
49
+ // Find the Variables section
50
+ const variablesMatch = content.match(/## Variables\s*\n\n\|[^\n]+\|\s*\n\|[-|\s]+\|\s*\n((?:\|[^\n]+\|\s*\n?)+)/);
51
+ if (!variablesMatch) {
52
+ return variables;
53
+ }
54
+ const tableContent = variablesMatch[1];
55
+ if (!tableContent) {
56
+ return variables;
57
+ }
58
+ const tableRows = tableContent.trim().split('\n');
59
+ for (const row of tableRows) {
60
+ // Parse table row: | {VAR} | Description | Required |
61
+ const cells = row.split('|').map(c => c.trim()).filter(c => c);
62
+ if (cells.length >= 2) {
63
+ const firstCell = cells[0];
64
+ const secondCell = cells[1];
65
+ if (!firstCell || !secondCell)
66
+ continue;
67
+ const varMatch = firstCell.match(/\{([A-Z][A-Z0-9_]*)\}/);
68
+ if (varMatch && varMatch[1]) {
69
+ const thirdCell = cells[2];
70
+ variables.push({
71
+ name: varMatch[1],
72
+ description: secondCell,
73
+ required: thirdCell ? thirdCell.toLowerCase() === 'yes' : true,
74
+ });
75
+ }
76
+ }
77
+ }
78
+ return variables;
79
+ }
80
+ /**
81
+ * Extract all variable references from a prompt template
82
+ */
83
+ export function extractVariables(content) {
84
+ const matches = content.matchAll(VARIABLE_PATTERN);
85
+ const variables = new Set();
86
+ for (const match of matches) {
87
+ const varName = match[1];
88
+ if (varName) {
89
+ variables.add(varName);
90
+ }
91
+ }
92
+ return Array.from(variables);
93
+ }
94
+ /**
95
+ * Substitute variables in a prompt template
96
+ */
97
+ export function substituteVariables(template, variables) {
98
+ let content = template;
99
+ let substitutedCount = 0;
100
+ const missingVariables = [];
101
+ // Substitute each variable
102
+ for (const [key, value] of Object.entries(variables)) {
103
+ const pattern = new RegExp(`\\{${key}\\}`, 'g');
104
+ const stringValue = typeof value === 'object' ? JSON.stringify(value) : String(value);
105
+ const matches = content.match(pattern);
106
+ if (matches) {
107
+ content = content.replace(pattern, stringValue);
108
+ substitutedCount += matches.length;
109
+ }
110
+ }
111
+ // Check for missing variables
112
+ const remainingVars = extractVariables(content);
113
+ missingVariables.push(...remainingVars);
114
+ return {
115
+ content,
116
+ substitutedCount,
117
+ missingVariables,
118
+ };
119
+ }
120
+ /**
121
+ * Validate that all required variables are provided
122
+ */
123
+ export function validateVariables(template, variables) {
124
+ const errors = [];
125
+ const warnings = [];
126
+ // Parse declared variables from template
127
+ const declaredVars = parseVariables(template);
128
+ const providedKeys = new Set(Object.keys(variables));
129
+ // Check required variables
130
+ for (const declared of declaredVars) {
131
+ if (declared.required && !providedKeys.has(declared.name)) {
132
+ errors.push(`Missing required variable: {${declared.name}}`);
133
+ }
134
+ }
135
+ // Check for extra variables (not an error, just a warning)
136
+ const declaredNames = new Set(declaredVars.map(v => v.name));
137
+ for (const provided of providedKeys) {
138
+ if (!declaredNames.has(provided)) {
139
+ warnings.push(`Variable {${provided}} not declared in template`);
140
+ }
141
+ }
142
+ return {
143
+ valid: errors.length === 0,
144
+ errors,
145
+ warnings,
146
+ };
147
+ }
148
+ /**
149
+ * Parse prompt metadata from template content
150
+ */
151
+ export function parsePromptMetadata(content, filePath) {
152
+ // Extract title from first heading
153
+ const titleMatch = content.match(/^#\s+(.+)$/m);
154
+ const title = titleMatch && titleMatch[1] ? titleMatch[1] : 'Unknown';
155
+ // Determine operation and phase from file path
156
+ const pathParts = filePath.split(path.sep);
157
+ const promptsIndex = pathParts.indexOf('prompts');
158
+ const operationFromPath = promptsIndex >= 0 ? pathParts[promptsIndex + 1] : undefined;
159
+ const operation = operationFromPath || 'prd';
160
+ const fileName = path.basename(filePath, '.md');
161
+ let phase = 'execute';
162
+ if (fileName === 'assess') {
163
+ phase = 'assess';
164
+ }
165
+ else if (fileName === 'synthesize') {
166
+ phase = 'synthesize';
167
+ }
168
+ return {
169
+ title,
170
+ operation,
171
+ phase,
172
+ variables: parseVariables(content),
173
+ filePath,
174
+ };
175
+ }
176
+ /**
177
+ * List all available prompts for an operation
178
+ */
179
+ export async function listPrompts(projectPath, operation) {
180
+ const operationDir = path.join(projectPath, PROMPTS_DIR, operation);
181
+ try {
182
+ const files = await readdir(operationDir);
183
+ return files
184
+ .filter(f => f.endsWith('.md'))
185
+ .map(f => f.replace('.md', ''));
186
+ }
187
+ catch {
188
+ return [];
189
+ }
190
+ }
191
+ /**
192
+ * Validate assessment output format
193
+ */
194
+ export function validateAssessmentOutput(output) {
195
+ const missingFields = [];
196
+ const invalidFields = [];
197
+ if (!output || typeof output !== 'object') {
198
+ return {
199
+ valid: false,
200
+ missingFields: ['root object'],
201
+ invalidFields: [],
202
+ };
203
+ }
204
+ const data = output;
205
+ // Check required fields
206
+ if (!('complexity' in data)) {
207
+ missingFields.push('complexity');
208
+ }
209
+ else if (!['S', 'M', 'L', 'XL'].includes(data.complexity)) {
210
+ invalidFields.push('complexity (must be S, M, L, or XL)');
211
+ }
212
+ if (!('assessment' in data)) {
213
+ missingFields.push('assessment');
214
+ }
215
+ else if (typeof data.assessment !== 'object') {
216
+ invalidFields.push('assessment (must be object)');
217
+ }
218
+ if (!('tasks' in data)) {
219
+ missingFields.push('tasks');
220
+ }
221
+ else if (!Array.isArray(data.tasks)) {
222
+ invalidFields.push('tasks (must be array)');
223
+ }
224
+ else {
225
+ // Validate each task
226
+ for (let i = 0; i < data.tasks.length; i++) {
227
+ const task = data.tasks[i];
228
+ const taskPrefix = `tasks[${i}]`;
229
+ if (!('id' in task))
230
+ missingFields.push(`${taskPrefix}.id`);
231
+ if (!('name' in task))
232
+ missingFields.push(`${taskPrefix}.name`);
233
+ if (!('description' in task))
234
+ missingFields.push(`${taskPrefix}.description`);
235
+ if (!('prompt' in task))
236
+ missingFields.push(`${taskPrefix}.prompt`);
237
+ }
238
+ }
239
+ return {
240
+ valid: missingFields.length === 0 && invalidFields.length === 0,
241
+ missingFields,
242
+ invalidFields,
243
+ };
244
+ }
245
+ /**
246
+ * Load and prepare a prompt for execution
247
+ */
248
+ export async function preparePrompt(projectPath, operation, promptName, variables) {
249
+ // Load template
250
+ const template = await loadPrompt(projectPath, operation, promptName);
251
+ // Validate variables
252
+ const validation = validateVariables(template, variables);
253
+ // Substitute variables (even if validation fails, for better error reporting)
254
+ const { content, missingVariables } = substituteVariables(template, variables);
255
+ // Add missing variable errors
256
+ if (missingVariables.length > 0) {
257
+ validation.valid = false;
258
+ for (const v of missingVariables) {
259
+ if (!validation.errors.some(e => e.includes(v))) {
260
+ validation.errors.push(`Unsubstituted variable in template: {${v}}`);
261
+ }
262
+ }
263
+ }
264
+ return { content, validation };
265
+ }
266
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/core/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Framework detection and injection for dev repositories
3
+ */
4
+ import { Octokit } from 'octokit';
5
+ /**
6
+ * Framework detection result
7
+ */
8
+ export interface FrameworkDetectionResult {
9
+ status: 'none' | 'partial' | 'complete';
10
+ existingFiles: string[];
11
+ missingFiles: string[];
12
+ }
13
+ /**
14
+ * Framework injection result
15
+ */
16
+ export interface FrameworkInjectionResult {
17
+ success: boolean;
18
+ filesCreated: string[];
19
+ commitSha?: string;
20
+ error?: string;
21
+ }
22
+ /**
23
+ * Detect existing framework structure in a repository
24
+ */
25
+ export declare function detectFrameworkStructure(octokit: Octokit, owner: string, repo: string, branch?: string): Promise<FrameworkDetectionResult>;
26
+ /**
27
+ * Inject framework structure into a repository via single commit
28
+ */
29
+ export declare function injectFrameworkStructure(octokit: Octokit, owner: string, repo: string, branch: string, missingFiles: string[]): Promise<FrameworkInjectionResult>;
30
+ /**
31
+ * Get a summary of what will be injected
32
+ */
33
+ export declare function getInjectionSummary(missingFiles: string[]): {
34
+ vibeFiles: string[];
35
+ claudeFiles: string[];
36
+ totalFiles: number;
37
+ };
38
+ //# sourceMappingURL=framework.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../../src/core/repo/framework.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACxC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAe,GACtB,OAAO,CAAC,wBAAwB,CAAC,CA8BnC;AAyBD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,wBAAwB,CAAC,CA+EnC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG;IAC3D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CASA"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Framework detection and injection for dev repositories
3
+ */
4
+ import { getFrameworkFiles, getFrameworkFilePaths } from './templates/index.js';
5
+ /**
6
+ * Detect existing framework structure in a repository
7
+ */
8
+ export async function detectFrameworkStructure(octokit, owner, repo, branch = 'main') {
9
+ const allPaths = getFrameworkFilePaths();
10
+ const existingFiles = [];
11
+ const missingFiles = [];
12
+ // Check for each framework file
13
+ for (const filePath of allPaths) {
14
+ const exists = await fileExistsInRepo(octokit, owner, repo, filePath, branch);
15
+ if (exists) {
16
+ existingFiles.push(filePath);
17
+ }
18
+ else {
19
+ missingFiles.push(filePath);
20
+ }
21
+ }
22
+ // Determine status
23
+ let status;
24
+ if (existingFiles.length === 0) {
25
+ status = 'none';
26
+ }
27
+ else if (missingFiles.length === 0) {
28
+ status = 'complete';
29
+ }
30
+ else {
31
+ status = 'partial';
32
+ }
33
+ return {
34
+ status,
35
+ existingFiles,
36
+ missingFiles,
37
+ };
38
+ }
39
+ /**
40
+ * Check if a file exists in a repository
41
+ */
42
+ async function fileExistsInRepo(octokit, owner, repo, path, branch) {
43
+ try {
44
+ await octokit.rest.repos.getContent({
45
+ owner,
46
+ repo,
47
+ path,
48
+ ref: branch,
49
+ });
50
+ return true;
51
+ }
52
+ catch (error) {
53
+ return false;
54
+ }
55
+ }
56
+ /**
57
+ * Inject framework structure into a repository via single commit
58
+ */
59
+ export async function injectFrameworkStructure(octokit, owner, repo, branch, missingFiles) {
60
+ try {
61
+ // Get all framework files
62
+ const allFiles = getFrameworkFiles();
63
+ // Filter to only missing files
64
+ const filesToCreate = allFiles.filter((f) => missingFiles.includes(f.path));
65
+ if (filesToCreate.length === 0) {
66
+ return {
67
+ success: true,
68
+ filesCreated: [],
69
+ };
70
+ }
71
+ // Get the current commit SHA for the branch
72
+ const { data: ref } = await octokit.rest.git.getRef({
73
+ owner,
74
+ repo,
75
+ ref: `heads/${branch}`,
76
+ });
77
+ const baseSha = ref.object.sha;
78
+ // Create blobs for each file
79
+ const blobs = await Promise.all(filesToCreate.map(async (file) => {
80
+ const { data: blob } = await octokit.rest.git.createBlob({
81
+ owner,
82
+ repo,
83
+ content: Buffer.from(file.content).toString('base64'),
84
+ encoding: 'base64',
85
+ });
86
+ return {
87
+ path: file.path,
88
+ mode: '100644',
89
+ type: 'blob',
90
+ sha: blob.sha,
91
+ };
92
+ }));
93
+ // Create a new tree with all the files
94
+ const { data: newTree } = await octokit.rest.git.createTree({
95
+ owner,
96
+ repo,
97
+ base_tree: baseSha,
98
+ tree: blobs,
99
+ });
100
+ // Create a commit
101
+ const { data: commit } = await octokit.rest.git.createCommit({
102
+ owner,
103
+ repo,
104
+ message: '[vibe-fabric] Initialize framework structure',
105
+ tree: newTree.sha,
106
+ parents: [baseSha],
107
+ });
108
+ // Update the branch reference to point to the new commit
109
+ await octokit.rest.git.updateRef({
110
+ owner,
111
+ repo,
112
+ ref: `heads/${branch}`,
113
+ sha: commit.sha,
114
+ });
115
+ return {
116
+ success: true,
117
+ filesCreated: filesToCreate.map((f) => f.path),
118
+ commitSha: commit.sha,
119
+ };
120
+ }
121
+ catch (error) {
122
+ const message = error instanceof Error ? error.message : 'Unknown error';
123
+ return {
124
+ success: false,
125
+ filesCreated: [],
126
+ error: message,
127
+ };
128
+ }
129
+ }
130
+ /**
131
+ * Get a summary of what will be injected
132
+ */
133
+ export function getInjectionSummary(missingFiles) {
134
+ const vibeFiles = missingFiles.filter((f) => f.startsWith('vibe/'));
135
+ const claudeFiles = missingFiles.filter((f) => f.startsWith('.claude/'));
136
+ return {
137
+ vibeFiles,
138
+ claudeFiles,
139
+ totalFiles: missingFiles.length,
140
+ };
141
+ }
142
+ //# sourceMappingURL=framework.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework.js","sourceRoot":"","sources":["../../../src/core/repo/framework.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Repository management module
3
+ */
4
+ export * from './validation.js';
5
+ export * from './framework.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/repo/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Repository management module
3
+ */
4
+ export * from './validation.js';
5
+ export * from './framework.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/repo/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * .claude/agents/ templates
3
+ */
4
+ import type { TemplateFile } from './index.js';
5
+ export declare const claudeAgents: TemplateFile[];
6
+ //# sourceMappingURL=claude-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-agents.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,YAAY,EAAE,YAAY,EA4KtC,CAAC"}