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,312 @@
1
+ /**
2
+ * vibe scope - Scope Management Command
3
+ *
4
+ * AI-powered single entry point for all scope operations.
5
+ * Uses the three-phase pattern: Discovery → Execute → Approve
6
+ */
7
+ import { Command, Option } from 'clipanion';
8
+ import chalk from 'chalk';
9
+ import { confirm, select } from '@inquirer/prompts';
10
+ import { access, readdir } from 'fs/promises';
11
+ import { constants } from 'fs';
12
+ import path from 'path';
13
+ import { runVibeRunner, checkOperationInProgress, cancelOperation, RunnerError, } from '../../core/runner.js';
14
+ import { isVibeProject } from '../../core/config.js';
15
+ export class ScopeCommand extends Command {
16
+ static paths = [['scope']];
17
+ static usage = Command.Usage({
18
+ description: 'Manage scopes - create, review, approve work packages from PRD',
19
+ details: `
20
+ AI-powered scope management using Claude.
21
+
22
+ The command follows a three-phase pattern:
23
+ 1. Discovery - Analyze PRD and recommend scopes
24
+ 2. Execute - Create/review scopes through Q&A
25
+ 3. Approve - Review and approve scope documents
26
+
27
+ Use --check for a quick status report without making changes.
28
+ `,
29
+ examples: [
30
+ ['Interactive scope management', 'vibe scope'],
31
+ ['Report-only mode (no changes)', 'vibe scope --check'],
32
+ ['Resume interrupted operation', 'vibe scope --resume'],
33
+ ],
34
+ });
35
+ check = Option.Boolean('--check,-c', false, {
36
+ description: 'Report-only mode (no changes)',
37
+ });
38
+ resume = Option.Boolean('--resume,-r', false, {
39
+ description: 'Resume interrupted operation',
40
+ });
41
+ cancel = Option.Boolean('--cancel', false, {
42
+ description: 'Cancel current operation',
43
+ });
44
+ async execute() {
45
+ // Handle cancel flag
46
+ if (this.cancel) {
47
+ return this.handleCancel();
48
+ }
49
+ // Check if this is a vibe project
50
+ if (!(await isVibeProject(process.cwd()))) {
51
+ this.context.stderr.write(chalk.red('Error: Not a vibe-fabric project.\n'));
52
+ this.context.stderr.write(chalk.gray('Run ') + chalk.cyan('vibe init') + chalk.gray(' first.\n'));
53
+ return 1;
54
+ }
55
+ // Check prerequisites
56
+ const prereqResult = await this.checkPrerequisites();
57
+ if (prereqResult !== 0) {
58
+ return prereqResult;
59
+ }
60
+ // Handle check mode (report-only)
61
+ if (this.check) {
62
+ return this.runCheck();
63
+ }
64
+ // Interactive mode
65
+ return this.runInteractive();
66
+ }
67
+ /**
68
+ * Check prerequisites for scope command
69
+ */
70
+ async checkPrerequisites() {
71
+ const cwd = process.cwd();
72
+ // Check if PRD exists
73
+ const prdPath = path.join(cwd, 'docs', 'prd');
74
+ try {
75
+ await access(prdPath, constants.R_OK);
76
+ }
77
+ catch {
78
+ this.context.stderr.write(chalk.red('Error: PRD not found.\n\n'));
79
+ this.context.stderr.write('Run ' +
80
+ chalk.cyan('vibe prd') +
81
+ ' first to create your PRD.\n');
82
+ return 1;
83
+ }
84
+ // Check if PRD has content (not just structure)
85
+ const prdModulesPath = path.join(prdPath, 'modules');
86
+ try {
87
+ await access(prdModulesPath, constants.R_OK);
88
+ const modules = await readdir(prdModulesPath);
89
+ // Filter out _index.md and hidden files
90
+ const actualModules = modules.filter((m) => !m.startsWith('_') && !m.startsWith('.'));
91
+ if (actualModules.length === 0) {
92
+ this.context.stderr.write(chalk.yellow('Warning: PRD has no requirements.\n\n'));
93
+ this.context.stderr.write('Add requirements with ' +
94
+ chalk.cyan('vibe prd') +
95
+ ' before creating scopes.\n');
96
+ return 1;
97
+ }
98
+ }
99
+ catch {
100
+ this.context.stderr.write(chalk.yellow('Warning: No requirements to scope.\n\n'));
101
+ this.context.stderr.write('Add requirements with ' +
102
+ chalk.cyan('vibe prd') +
103
+ ' before creating scopes.\n');
104
+ return 1;
105
+ }
106
+ return 0;
107
+ }
108
+ /**
109
+ * Handle --cancel flag
110
+ */
111
+ async handleCancel() {
112
+ const existing = await checkOperationInProgress();
113
+ if (!existing) {
114
+ this.context.stdout.write(chalk.yellow('No operation in progress.\n'));
115
+ return 0;
116
+ }
117
+ if (existing.operation !== 'scope') {
118
+ this.context.stdout.write(chalk.yellow(`A different operation is in progress: ${existing.operation}\n`));
119
+ this.context.stdout.write(chalk.gray(`Use 'vibe ${existing.operation} --cancel' to cancel it.\n`));
120
+ return 1;
121
+ }
122
+ const confirmed = await confirm({
123
+ message: 'Cancel scope operation?',
124
+ default: false,
125
+ });
126
+ if (!confirmed) {
127
+ this.context.stdout.write(chalk.gray('Cancelled.\n'));
128
+ return 0;
129
+ }
130
+ try {
131
+ await cancelOperation();
132
+ this.context.stdout.write(chalk.green('Operation cancelled.\n'));
133
+ return 0;
134
+ }
135
+ catch (error) {
136
+ this.context.stderr.write(chalk.red(`Failed to cancel: ${error instanceof Error ? error.message : error}\n`));
137
+ return 1;
138
+ }
139
+ }
140
+ /**
141
+ * Run check mode (report-only)
142
+ */
143
+ async runCheck() {
144
+ this.context.stdout.write('\n');
145
+ this.context.stdout.write(chalk.bold.blue(' SCOPE STATUS') + '\n');
146
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n\n');
147
+ const cwd = process.cwd();
148
+ // Count scopes in each directory
149
+ const scopeDirs = ['drafts', 'ready', 'sent', 'completed'];
150
+ const counts = {};
151
+ for (const dir of scopeDirs) {
152
+ const dirPath = path.join(cwd, 'docs', 'scopes', dir);
153
+ try {
154
+ const files = await readdir(dirPath);
155
+ counts[dir] = files.filter((f) => f.startsWith('SCOPE-') && f.endsWith('.md')).length;
156
+ }
157
+ catch {
158
+ counts[dir] = 0;
159
+ }
160
+ }
161
+ const total = Object.values(counts).reduce((a, b) => a + b, 0);
162
+ // Display summary
163
+ this.context.stdout.write(chalk.gray(' Scopes by Status:\n'));
164
+ this.context.stdout.write(` Drafts: ${chalk.yellow(String(counts['drafts']))}\n`);
165
+ this.context.stdout.write(` Ready: ${chalk.cyan(String(counts['ready']))}\n`);
166
+ this.context.stdout.write(` Sent: ${chalk.blue(String(counts['sent']))}\n`);
167
+ this.context.stdout.write(` Completed: ${chalk.green(String(counts['completed']))}\n`);
168
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
169
+ this.context.stdout.write(` Total: ${chalk.bold(String(total))}\n\n`);
170
+ // List drafts if any
171
+ if ((counts['drafts'] ?? 0) > 0) {
172
+ const draftsPath = path.join(cwd, 'docs', 'scopes', 'drafts');
173
+ const drafts = await readdir(draftsPath);
174
+ const scopeFiles = drafts.filter((f) => f.startsWith('SCOPE-') && f.endsWith('.md'));
175
+ this.context.stdout.write(chalk.gray(' Draft Scopes:\n'));
176
+ for (const file of scopeFiles.slice(0, 5)) {
177
+ const name = file.replace('.md', '');
178
+ this.context.stdout.write(` • ${chalk.yellow(name)}\n`);
179
+ }
180
+ if (scopeFiles.length > 5) {
181
+ this.context.stdout.write(chalk.gray(` ... and ${scopeFiles.length - 5} more\n`));
182
+ }
183
+ this.context.stdout.write('\n');
184
+ }
185
+ this.context.stdout.write(chalk.gray(' Run ') +
186
+ chalk.cyan('vibe scope') +
187
+ chalk.gray(' to create or manage scopes.\n\n'));
188
+ return 0;
189
+ }
190
+ /**
191
+ * Run interactive scope management
192
+ */
193
+ async runInteractive() {
194
+ // Check for existing operation
195
+ const existing = await checkOperationInProgress();
196
+ if (existing && !this.resume) {
197
+ // Check if it's a scope operation
198
+ if (existing.operation !== 'scope') {
199
+ this.context.stdout.write('\n');
200
+ this.context.stdout.write(chalk.yellow(`A different operation is in progress: ${existing.operation}\n`));
201
+ this.context.stdout.write(chalk.gray(`Phase: ${existing.phase}, Task: ${existing.current_task}/${existing.total_tasks}\n`));
202
+ this.context.stdout.write('\n');
203
+ const action = await select({
204
+ message: 'What would you like to do?',
205
+ choices: [
206
+ { name: `Continue ${existing.operation} operation`, value: 'resume' },
207
+ { name: 'Cancel and start scope operation', value: 'cancel' },
208
+ { name: 'Exit', value: 'exit' },
209
+ ],
210
+ });
211
+ if (action === 'exit') {
212
+ return 0;
213
+ }
214
+ if (action === 'cancel') {
215
+ await cancelOperation();
216
+ this.context.stdout.write(chalk.green('Previous operation cancelled.\n\n'));
217
+ }
218
+ if (action === 'resume') {
219
+ this.context.stdout.write(chalk.gray(`Run 'vibe ${existing.operation} --resume' to continue.\n`));
220
+ return 0;
221
+ }
222
+ }
223
+ else {
224
+ // It's a scope operation
225
+ this.context.stdout.write('\n');
226
+ this.context.stdout.write(chalk.yellow('A scope operation is already in progress.\n'));
227
+ this.context.stdout.write(chalk.gray(`Phase: ${existing.phase}, Task: ${existing.current_task}/${existing.total_tasks}\n`));
228
+ this.context.stdout.write('\n');
229
+ const action = await select({
230
+ message: 'What would you like to do?',
231
+ choices: [
232
+ { name: 'Resume the existing operation', value: 'resume' },
233
+ { name: 'Cancel and start fresh', value: 'cancel' },
234
+ { name: 'Exit', value: 'exit' },
235
+ ],
236
+ });
237
+ if (action === 'exit') {
238
+ return 0;
239
+ }
240
+ if (action === 'cancel') {
241
+ await cancelOperation();
242
+ this.context.stdout.write(chalk.green('Previous operation cancelled.\n\n'));
243
+ }
244
+ if (action === 'resume') {
245
+ return this.startRunner(true);
246
+ }
247
+ }
248
+ }
249
+ if (this.resume && !existing) {
250
+ this.context.stderr.write(chalk.red('No operation to resume.\n'));
251
+ this.context.stderr.write(chalk.gray('Start a new operation with: vibe scope\n'));
252
+ return 1;
253
+ }
254
+ return this.startRunner(this.resume);
255
+ }
256
+ /**
257
+ * Start the Python runner
258
+ */
259
+ async startRunner(resume) {
260
+ this.context.stdout.write('\n');
261
+ this.context.stdout.write(chalk.bold.blue(' VIBE SCOPE') + '\n');
262
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n\n');
263
+ if (!resume) {
264
+ this.context.stdout.write(chalk.gray(' Starting scope management with Claude...\n\n'));
265
+ }
266
+ else {
267
+ this.context.stdout.write(chalk.gray(' Resuming scope operation...\n\n'));
268
+ }
269
+ try {
270
+ await runVibeRunner('scope', process.cwd(), {
271
+ resume,
272
+ loop: true,
273
+ });
274
+ return 0;
275
+ }
276
+ catch (error) {
277
+ if (error instanceof RunnerError) {
278
+ this.context.stderr.write('\n');
279
+ switch (error.code) {
280
+ case 'UV_NOT_INSTALLED':
281
+ this.context.stderr.write(chalk.red('UV is not installed.\n\n'));
282
+ this.context.stderr.write('Install UV with:\n');
283
+ this.context.stderr.write(chalk.cyan(' curl -LsSf https://astral.sh/uv/install.sh | sh\n\n'));
284
+ this.context.stderr.write(chalk.gray('UV is required to run Python scripts for AI operations.\n'));
285
+ break;
286
+ case 'RUNNER_NOT_FOUND':
287
+ this.context.stderr.write(chalk.red('Runner script not found.\n\n'));
288
+ this.context.stderr.write('The runner script should be at:\n' +
289
+ chalk.cyan(' .claude/scripts/vibe-runner.py\n\n'));
290
+ this.context.stderr.write(chalk.gray('Run ') +
291
+ chalk.cyan('vibe doctor') +
292
+ chalk.gray(' to diagnose.\n'));
293
+ break;
294
+ case 'RUNNER_FAILED':
295
+ this.context.stderr.write(chalk.red('Runner failed.\n\n'));
296
+ this.context.stderr.write(chalk.gray(`${error.message}\n\n`));
297
+ this.context.stderr.write('Your progress has been saved. Run ' +
298
+ chalk.cyan('vibe scope --resume') +
299
+ ' to continue.\n');
300
+ break;
301
+ default:
302
+ this.context.stderr.write(chalk.red(`Error: ${error.message}\n`));
303
+ }
304
+ return 1;
305
+ }
306
+ // Unexpected error
307
+ this.context.stderr.write(chalk.red(`Unexpected error: ${error instanceof Error ? error.message : error}\n`));
308
+ return 1;
309
+ }
310
+ }
311
+ }
312
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/cli/commands/scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * vibe send - Send approved scopes to dev repositories
3
+ *
4
+ * Pushes scopes from ready/ to target dev repos via GitHub API,
5
+ * validates dependencies, creates GitHub Issues, and updates tracking.
6
+ */
7
+ import { Command } from 'clipanion';
8
+ export declare class SendCommand extends Command {
9
+ static paths: string[][];
10
+ static usage: import("clipanion").Usage;
11
+ scopeId: string | undefined;
12
+ list: boolean;
13
+ all: boolean;
14
+ dryRun: boolean;
15
+ force: boolean;
16
+ noNotify: boolean;
17
+ execute(): Promise<number>;
18
+ /**
19
+ * Get GitHub token from environment or gh CLI
20
+ */
21
+ private getGitHubToken;
22
+ /**
23
+ * List all ready scopes with sendability status
24
+ */
25
+ private listScopes;
26
+ /**
27
+ * Interactive scope selection
28
+ */
29
+ private interactiveSelect;
30
+ /**
31
+ * Send a single scope
32
+ */
33
+ private sendSingle;
34
+ /**
35
+ * Send all sendable scopes
36
+ */
37
+ private sendAll;
38
+ /**
39
+ * Show send results
40
+ */
41
+ private showResults;
42
+ }
43
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAqB5C,qBAAa,WAAY,SAAQ,OAAO;IACtC,OAAgB,KAAK,aAAc;IAEnC,OAAgB,KAAK,4BAsBlB;IAGH,OAAO,qBAAsC;IAG7C,IAAI,UAED;IAEH,GAAG,UAEA;IAEH,MAAM,UAEH;IAEH,KAAK,UAEF;IAEH,QAAQ,UAEL;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA8EhC;;OAEG;YACW,cAAc;IAuB5B;;OAEG;YACW,UAAU;IA+ExB;;OAEG;YACW,iBAAiB;IA4C/B;;OAEG;YACW,UAAU;IA0NxB;;OAEG;YACW,OAAO;IA6GrB;;OAEG;IACH,OAAO,CAAC,WAAW;CAuDpB"}