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,204 @@
1
+ /**
2
+ * vibe/ folder README templates
3
+ */
4
+ export const vibeReadmes = [
5
+ // incoming-scopes/README.md
6
+ {
7
+ path: 'vibe/incoming-scopes/README.md',
8
+ content: `# Incoming Scopes
9
+
10
+ This folder receives scope briefs from the planning hub.
11
+
12
+ ## Workflow
13
+
14
+ 1. Planning hub sends scope via \`vibe send\`
15
+ 2. Scope lands here as \`SCOPE-XXX.md\`
16
+ 3. Create implementation plan: \`/plan-from-scope SCOPE-XXX\`
17
+ 4. Move scope to \`processed/\` once plan is created
18
+
19
+ ## Folder Structure
20
+
21
+ \`\`\`
22
+ incoming-scopes/
23
+ ├── SCOPE-XXX.md # New scopes land here
24
+ └── processed/ # Scopes with plans created
25
+ └── SCOPE-YYY.md
26
+ \`\`\`
27
+
28
+ ## Scope Format
29
+
30
+ Each scope contains:
31
+ - Summary of what to implement
32
+ - Requirements and acceptance criteria
33
+ - Technical constraints
34
+ - Implementation notes
35
+ `,
36
+ },
37
+ // implementation-plans/README.md
38
+ {
39
+ path: 'vibe/implementation-plans/README.md',
40
+ content: `# Implementation Plans
41
+
42
+ Plans for implementing scopes from the planning hub.
43
+
44
+ ## Workflow
45
+
46
+ 1. Read scope from \`../incoming-scopes/\`
47
+ 2. Create plan using template: \`/plan-from-scope SCOPE-XXX\`
48
+ 3. Work on plan (track progress in log)
49
+ 4. Move to \`completed/\` when done
50
+
51
+ ## Folder Structure
52
+
53
+ \`\`\`
54
+ implementation-plans/
55
+ ├── active/ # Plans in progress
56
+ ├── completed/ # Finished plans
57
+ ├── archived/ # Cancelled plans
58
+ └── templates/
59
+ └── PLAN_TEMPLATE.md
60
+ \`\`\`
61
+
62
+ ## Plan Requirements
63
+
64
+ Every plan MUST include:
65
+ - \`Source Scope: SCOPE-XXX\` in metadata (links to planning hub)
66
+ - Progress log section
67
+ - Acceptance criteria checklist
68
+ `,
69
+ },
70
+ // implementation-plans/templates/PLAN_TEMPLATE.md
71
+ {
72
+ path: 'vibe/implementation-plans/templates/PLAN_TEMPLATE.md',
73
+ content: `# Implementation Plan: [Title]
74
+
75
+ ## Metadata
76
+
77
+ | Field | Value |
78
+ |-------|-------|
79
+ | **Plan ID** | \`PLAN-XXX\` |
80
+ | **Source Scope** | \`SCOPE-XXX\` |
81
+ | **Status** | \`active\` |
82
+ | **Created** | YYYY-MM-DD |
83
+ | **Part** | 1 of 1 |
84
+
85
+ ## Objective
86
+
87
+ [Brief description of what this plan implements]
88
+
89
+ ## Acceptance Criteria
90
+
91
+ From scope:
92
+ - [ ] Criteria 1
93
+ - [ ] Criteria 2
94
+ - [ ] Criteria 3
95
+
96
+ ## Implementation Steps
97
+
98
+ 1. Step 1
99
+ 2. Step 2
100
+ 3. Step 3
101
+
102
+ ## Progress Log
103
+
104
+ ### YYYY-MM-DD
105
+ - Started implementation
106
+ - [Notes]
107
+
108
+ ## Notes
109
+
110
+ [Additional context]
111
+ `,
112
+ },
113
+ // knowledge-base/_index.md
114
+ {
115
+ path: 'vibe/knowledge-base/_index.md',
116
+ content: `# Knowledge Base
117
+
118
+ Documentation and learnings from this repository.
119
+
120
+ ## Structure
121
+
122
+ Add entries by category:
123
+
124
+ \`\`\`markdown
125
+ ## Category Name
126
+ - [Entry Title](path/to/entry.md)
127
+ \`\`\`
128
+
129
+ ## Categories
130
+
131
+ <!-- Add categories and entries as you learn -->
132
+ `,
133
+ },
134
+ // knowledge-base/_TEMPLATE.md
135
+ {
136
+ path: 'vibe/knowledge-base/_TEMPLATE.md',
137
+ content: `# [Title]
138
+
139
+ ## Context
140
+
141
+ [What situation led to this knowledge?]
142
+
143
+ ## Learning
144
+
145
+ [What did you learn?]
146
+
147
+ ## Example
148
+
149
+ \`\`\`
150
+ [Code or configuration example]
151
+ \`\`\`
152
+
153
+ ## Related
154
+
155
+ - [Related entry](./related.md)
156
+ `,
157
+ },
158
+ // knowledge-base/README.md
159
+ {
160
+ path: 'vibe/knowledge-base/README.md',
161
+ content: `# Knowledge Base
162
+
163
+ Store learnings, decisions, and documentation discovered during implementation.
164
+
165
+ ## When to Add Entries
166
+
167
+ - Discovered gotcha or edge case
168
+ - Made architectural decision
169
+ - Found useful pattern
170
+ - Debugged tricky issue
171
+ - Learned something about the codebase
172
+
173
+ ## How to Add
174
+
175
+ Use the \`/kb-add\` command or create a file manually:
176
+
177
+ \`\`\`bash
178
+ /kb-add "Authentication uses JWT with refresh tokens"
179
+ \`\`\`
180
+
181
+ ## Entry Format
182
+
183
+ Use the template in \`_TEMPLATE.md\`:
184
+
185
+ \`\`\`markdown
186
+ # Title
187
+
188
+ ## Context
189
+ What situation led to this knowledge?
190
+
191
+ ## Learning
192
+ What did you learn?
193
+
194
+ ## Example
195
+ Code or configuration example.
196
+ \`\`\`
197
+
198
+ ## Syncing
199
+
200
+ The planning hub syncs KB entries via \`vibe sync\`. Keep \`_index.md\` updated with links to all entries.
201
+ `,
202
+ },
203
+ ];
204
+ //# sourceMappingURL=vibe-readme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe-readme.js","sourceRoot":"","sources":["../../../../src/core/repo/templates/vibe-readme.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,4BAA4B;IAC5B;QACE,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BZ;KACE;IAED,iCAAiC;IACjC;QACE,IAAI,EAAE,qCAAqC;QAC3C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BZ;KACE;IAED,kDAAkD;IAClD;QACE,IAAI,EAAE,sDAAsD;QAC5D,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCZ;KACE;IAED,2BAA2B;IAC3B;QACE,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBZ;KACE;IAED,8BAA8B;IAC9B;QACE,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;CAmBZ;KACE;IAED,2BAA2B;IAC3B;QACE,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCZ;KACE;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * vibe/scripts/ templates
3
+ */
4
+ import type { TemplateFile } from './index.js';
5
+ export declare const vibeScripts: TemplateFile[];
6
+ //# sourceMappingURL=vibe-scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe-scripts.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/vibe-scripts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,WAAW,EAAE,YAAY,EAiTrC,CAAC"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * vibe/scripts/ templates
3
+ */
4
+ export const vibeScripts = [
5
+ // sync-self.ts - Map generation script
6
+ {
7
+ path: 'vibe/scripts/sync-self.ts',
8
+ content: `#!/usr/bin/env npx tsx
9
+ /**
10
+ * Codebase map generation script
11
+ *
12
+ * Generates a JSON map of the codebase structure including:
13
+ * - File tree
14
+ * - Export analysis
15
+ * - Dependency graph
16
+ *
17
+ * Usage: npx tsx vibe/scripts/sync-self.ts [--output maps/codebase-map.json]
18
+ */
19
+
20
+ import fs from 'fs';
21
+ import path from 'path';
22
+
23
+ interface FileNode {
24
+ name: string;
25
+ path: string;
26
+ type: 'file' | 'directory';
27
+ children?: FileNode[];
28
+ exports?: string[];
29
+ }
30
+
31
+ const IGNORE_PATTERNS = [
32
+ 'node_modules',
33
+ '.git',
34
+ 'dist',
35
+ 'build',
36
+ '.next',
37
+ 'coverage',
38
+ '.cache',
39
+ 'vibe',
40
+ ];
41
+
42
+ function shouldIgnore(name: string): boolean {
43
+ return IGNORE_PATTERNS.some((pattern) => name === pattern || name.startsWith('.'));
44
+ }
45
+
46
+ function scanDirectory(dirPath: string, relativePath = ''): FileNode[] {
47
+ const entries = fs.readdirSync(dirPath, { withFileTypes: true });
48
+ const nodes: FileNode[] = [];
49
+
50
+ for (const entry of entries) {
51
+ if (shouldIgnore(entry.name)) continue;
52
+
53
+ const fullPath = path.join(dirPath, entry.name);
54
+ const relPath = path.join(relativePath, entry.name);
55
+
56
+ if (entry.isDirectory()) {
57
+ nodes.push({
58
+ name: entry.name,
59
+ path: relPath,
60
+ type: 'directory',
61
+ children: scanDirectory(fullPath, relPath),
62
+ });
63
+ } else if (entry.isFile()) {
64
+ nodes.push({
65
+ name: entry.name,
66
+ path: relPath,
67
+ type: 'file',
68
+ });
69
+ }
70
+ }
71
+
72
+ return nodes;
73
+ }
74
+
75
+ function main() {
76
+ const args = process.argv.slice(2);
77
+ const outputIndex = args.indexOf('--output');
78
+ const outputPath = outputIndex >= 0 ? args[outputIndex + 1] : 'vibe/maps/codebase-map.json';
79
+
80
+ console.log('Scanning codebase...');
81
+ const tree = scanDirectory(process.cwd());
82
+
83
+ const map = {
84
+ generated: new Date().toISOString(),
85
+ root: process.cwd(),
86
+ tree,
87
+ };
88
+
89
+ // Ensure output directory exists
90
+ const outputDir = path.dirname(outputPath);
91
+ if (!fs.existsSync(outputDir)) {
92
+ fs.mkdirSync(outputDir, { recursive: true });
93
+ }
94
+
95
+ fs.writeFileSync(outputPath, JSON.stringify(map, null, 2));
96
+ console.log(\`Map written to \${outputPath}\`);
97
+ }
98
+
99
+ main();
100
+ `,
101
+ },
102
+ // dependency-graph.ts - Dependency analysis script
103
+ {
104
+ path: 'vibe/scripts/dependency-graph.ts',
105
+ content: `#!/usr/bin/env npx tsx
106
+ /**
107
+ * Dependency graph generation script
108
+ *
109
+ * Analyzes import statements to build a dependency graph.
110
+ *
111
+ * Usage: npx tsx vibe/scripts/dependency-graph.ts [--output graphs/deps.json]
112
+ */
113
+
114
+ import fs from 'fs';
115
+ import path from 'path';
116
+
117
+ interface DependencyNode {
118
+ file: string;
119
+ imports: string[];
120
+ importedBy: string[];
121
+ }
122
+
123
+ interface DependencyGraph {
124
+ generated: string;
125
+ nodes: Record<string, DependencyNode>;
126
+ }
127
+
128
+ const SOURCE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.mjs'];
129
+ const IGNORE_DIRS = ['node_modules', 'dist', 'build', '.git', 'vibe'];
130
+
131
+ function findSourceFiles(dir: string, files: string[] = []): string[] {
132
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
133
+
134
+ for (const entry of entries) {
135
+ const fullPath = path.join(dir, entry.name);
136
+
137
+ if (entry.isDirectory() && !IGNORE_DIRS.includes(entry.name)) {
138
+ findSourceFiles(fullPath, files);
139
+ } else if (entry.isFile() && SOURCE_EXTENSIONS.includes(path.extname(entry.name))) {
140
+ files.push(fullPath);
141
+ }
142
+ }
143
+
144
+ return files;
145
+ }
146
+
147
+ function extractImports(filePath: string): string[] {
148
+ const content = fs.readFileSync(filePath, 'utf-8');
149
+ const imports: string[] = [];
150
+
151
+ // Match import statements
152
+ const importRegex = /import\\s+(?:[^'"]*from\\s+)?['"]([^'"]+)['"]/g;
153
+ let match;
154
+
155
+ while ((match = importRegex.exec(content)) !== null) {
156
+ const importPath = match[1];
157
+ // Only include relative imports
158
+ if (importPath.startsWith('.')) {
159
+ imports.push(importPath);
160
+ }
161
+ }
162
+
163
+ return imports;
164
+ }
165
+
166
+ function main() {
167
+ const args = process.argv.slice(2);
168
+ const outputIndex = args.indexOf('--output');
169
+ const outputPath = outputIndex >= 0 ? args[outputIndex + 1] : 'vibe/graphs/deps.json';
170
+
171
+ console.log('Analyzing dependencies...');
172
+
173
+ const sourceFiles = findSourceFiles(process.cwd());
174
+ const graph: DependencyGraph = {
175
+ generated: new Date().toISOString(),
176
+ nodes: {},
177
+ };
178
+
179
+ // Build initial nodes
180
+ for (const file of sourceFiles) {
181
+ const relativePath = path.relative(process.cwd(), file);
182
+ graph.nodes[relativePath] = {
183
+ file: relativePath,
184
+ imports: extractImports(file),
185
+ importedBy: [],
186
+ };
187
+ }
188
+
189
+ // Build importedBy relationships
190
+ for (const [file, node] of Object.entries(graph.nodes)) {
191
+ for (const imp of node.imports) {
192
+ const resolved = path.normalize(path.join(path.dirname(file), imp));
193
+ // Try to find matching file
194
+ for (const ext of ['', ...SOURCE_EXTENSIONS]) {
195
+ const target = resolved + ext;
196
+ if (graph.nodes[target]) {
197
+ graph.nodes[target].importedBy.push(file);
198
+ break;
199
+ }
200
+ }
201
+ }
202
+ }
203
+
204
+ // Ensure output directory exists
205
+ const outputDir = path.dirname(outputPath);
206
+ if (!fs.existsSync(outputDir)) {
207
+ fs.mkdirSync(outputDir, { recursive: true });
208
+ }
209
+
210
+ fs.writeFileSync(outputPath, JSON.stringify(graph, null, 2));
211
+ console.log(\`Graph written to \${outputPath}\`);
212
+ console.log(\`Analyzed \${sourceFiles.length} files\`);
213
+ }
214
+
215
+ main();
216
+ `,
217
+ },
218
+ // slack-notify.py - Notification script
219
+ {
220
+ path: 'vibe/scripts/slack-notify.py',
221
+ content: `#!/usr/bin/env -S uv run --quiet --script
222
+ # /// script
223
+ # requires-python = ">=3.11"
224
+ # dependencies = ["requests", "python-dotenv"]
225
+ # ///
226
+ """
227
+ Slack notification script for Ralph completions and other events.
228
+
229
+ Usage:
230
+ uv run slack-notify.py --plan-id ILS-2026-001 --status success
231
+ uv run slack-notify.py --message "Custom message" --title "Title"
232
+ """
233
+
234
+ import argparse
235
+ import os
236
+ import sys
237
+ try:
238
+ import requests
239
+ from dotenv import load_dotenv
240
+ except ImportError:
241
+ print("Dependencies not available. Run with: uv run slack-notify.py")
242
+ sys.exit(1)
243
+
244
+
245
+ def send_notification(webhook_url: str, title: str, message: str, status: str = "info") -> bool:
246
+ """Send a Slack notification."""
247
+ color = {
248
+ "success": "#36a64f",
249
+ "error": "#ff0000",
250
+ "info": "#0066cc"
251
+ }.get(status, "#0066cc")
252
+
253
+ payload = {
254
+ "attachments": [{
255
+ "color": color,
256
+ "title": title,
257
+ "text": message,
258
+ "footer": "Vibe-Fabric"
259
+ }]
260
+ }
261
+
262
+ try:
263
+ response = requests.post(webhook_url, json=payload, timeout=10)
264
+ return response.status_code == 200
265
+ except Exception as e:
266
+ print(f"Failed to send notification: {e}")
267
+ return False
268
+
269
+
270
+ def main():
271
+ load_dotenv(".env.local")
272
+ load_dotenv(".env")
273
+
274
+ webhook_url = os.getenv("SLACK_WEBHOOK_URL")
275
+
276
+ if not webhook_url:
277
+ print("SLACK_WEBHOOK_URL not configured. Skipping notification.")
278
+ return
279
+
280
+ parser = argparse.ArgumentParser(description="Send Slack notifications")
281
+ parser.add_argument("--plan-id", help="Plan ID for completion notification")
282
+ parser.add_argument("--status", choices=["success", "error", "info"], default="info")
283
+ parser.add_argument("--message", help="Custom message")
284
+ parser.add_argument("--title", help="Custom title")
285
+ parser.add_argument("--summary", help="Additional summary text")
286
+ args = parser.parse_args()
287
+
288
+ if args.plan_id:
289
+ emoji = {"success": "✅", "error": "❌", "info": "ℹ️"}.get(args.status, "ℹ️")
290
+ title = f"{emoji} Ralph Complete: {args.plan_id}"
291
+ message = args.summary or f"Plan {args.plan_id} has completed."
292
+ else:
293
+ title = args.title or "Vibe-Fabric Notification"
294
+ message = args.message or "No message provided."
295
+
296
+ if send_notification(webhook_url, title, message, args.status):
297
+ print(f"Notification sent: {title}")
298
+ else:
299
+ print("Failed to send notification")
300
+ sys.exit(1)
301
+
302
+
303
+ if __name__ == "__main__":
304
+ main()
305
+ `,
306
+ },
307
+ ];
308
+ //# sourceMappingURL=vibe-scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe-scripts.js","sourceRoot":"","sources":["../../../../src/core/repo/templates/vibe-scripts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,uCAAuC;IACvC;QACE,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FZ;KACE;IAED,mDAAmD;IACnD;QACE,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GZ;KACE;IAED,wCAAwC;IACxC;QACE,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFZ;KACE;CACF,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { Octokit } from 'octokit';
2
+ /**
3
+ * Parsed GitHub URL information
4
+ */
5
+ export interface ParsedGitHubUrl {
6
+ owner: string;
7
+ repo: string;
8
+ fullUrl: string;
9
+ }
10
+ /**
11
+ * Repository access validation result
12
+ */
13
+ export interface RepoAccessResult {
14
+ valid: boolean;
15
+ canRead: boolean;
16
+ canWrite: boolean;
17
+ isPrivate: boolean;
18
+ defaultBranch: string;
19
+ error?: string;
20
+ }
21
+ /**
22
+ * Parse a GitHub URL and extract owner/repo
23
+ * Supports formats:
24
+ * - github.com/owner/repo
25
+ * - https://github.com/owner/repo
26
+ * - https://github.com/owner/repo.git
27
+ * - git@github.com:owner/repo.git
28
+ */
29
+ export declare function parseGitHubUrl(url: string): ParsedGitHubUrl | null;
30
+ /**
31
+ * Validate repository access with a GitHub token
32
+ */
33
+ export declare function validateRepoAccess(octokit: Octokit, owner: string, repo: string): Promise<RepoAccessResult>;
34
+ /**
35
+ * Validate alias format
36
+ */
37
+ export declare function isValidAlias(alias: string): boolean;
38
+ /**
39
+ * Get validation error for alias
40
+ */
41
+ export declare function getAliasError(alias: string): string | null;
42
+ /**
43
+ * Generate a default alias from repository name
44
+ */
45
+ export declare function generateDefaultAlias(repoName: string): string;
46
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/core/repo/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAqClE;AAYD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CA2E3B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAInD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG7D"}