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,469 @@
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, Option } from 'clipanion';
8
+ import chalk from 'chalk';
9
+ import ora from 'ora';
10
+ import { select, confirm } from '@inquirer/prompts';
11
+ import { Octokit } from 'octokit';
12
+ import { loadConfig } from '../../core/config.js';
13
+ import { discoverGitHubToken } from '../../core/github.js';
14
+ import { findProjectRoot } from '../../core/project.js';
15
+ import { findReadyScope, sendScope, sendAllScopes, getTargetRepos, checkDevRepoState, } from '../../core/send.js';
16
+ import { validateDependencies, checkSendability, } from '../../core/dependencies.js';
17
+ export class SendCommand extends Command {
18
+ static paths = [['send']];
19
+ static usage = Command.Usage({
20
+ description: 'Send approved scopes to dev repositories',
21
+ details: `
22
+ Push scopes from ready/ to target dev repositories via GitHub API.
23
+
24
+ This command:
25
+ - Validates all blocking dependencies are completed
26
+ - Routes scopes to correct repos based on target field
27
+ - Creates GitHub Issues for developer notification
28
+ - Tracks version history and sent status
29
+
30
+ Use --list to see all sendable scopes and their status.
31
+ Use --dry-run to preview changes without sending.
32
+ `,
33
+ examples: [
34
+ ['Send a specific scope', 'vibe send SCOPE-001'],
35
+ ['Preview without changes', 'vibe send SCOPE-001 --dry-run'],
36
+ ['List all sendable scopes', 'vibe send --list'],
37
+ ['Send all sendable scopes', 'vibe send --all'],
38
+ ['Force send (skip processed check)', 'vibe send SCOPE-001 --force'],
39
+ ['Skip GitHub Issue creation', 'vibe send SCOPE-001 --no-notify'],
40
+ ],
41
+ });
42
+ // Positional argument: scope ID
43
+ scopeId = Option.String({ required: false });
44
+ // Options
45
+ list = Option.Boolean('--list,-l', false, {
46
+ description: 'List all ready scopes with sendability status',
47
+ });
48
+ all = Option.Boolean('--all,-a', false, {
49
+ description: 'Send all sendable ready scopes',
50
+ });
51
+ dryRun = Option.Boolean('--dry-run,-n', false, {
52
+ description: 'Preview changes without sending',
53
+ });
54
+ force = Option.Boolean('--force,-f', false, {
55
+ description: 'Force send even if scope is already processed',
56
+ });
57
+ noNotify = Option.Boolean('--no-notify', false, {
58
+ description: 'Skip GitHub Issue creation',
59
+ });
60
+ async execute() {
61
+ this.context.stdout.write('\n');
62
+ this.context.stdout.write(chalk.bold.blue(' VIBE SEND\n'));
63
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n\n');
64
+ try {
65
+ // Find project root
66
+ const projectRoot = findProjectRoot(process.cwd());
67
+ if (!projectRoot) {
68
+ this.context.stderr.write(chalk.red(' Error: Not inside a vibe-fabric project.\n'));
69
+ this.context.stderr.write(chalk.gray(' Run `vibe init` to create a planning hub first.\n\n'));
70
+ return 1;
71
+ }
72
+ // Get GitHub token
73
+ const token = await this.getGitHubToken();
74
+ if (!token) {
75
+ return 1;
76
+ }
77
+ const octokit = new Octokit({ auth: token });
78
+ // Load config
79
+ const config = await loadConfig(projectRoot);
80
+ if (!config) {
81
+ this.context.stderr.write(chalk.red(' Error: Failed to load configuration.\n\n'));
82
+ return 1;
83
+ }
84
+ // Check if repos are configured
85
+ if (config.repos.length === 0) {
86
+ this.context.stderr.write(chalk.yellow(' No repositories configured.\n\n'));
87
+ this.context.stderr.write(chalk.gray(' Add a repository with: ') +
88
+ chalk.cyan('vibe repo add <url>\n\n'));
89
+ return 1;
90
+ }
91
+ // Handle --list mode
92
+ if (this.list) {
93
+ return this.listScopes(projectRoot, config);
94
+ }
95
+ // Handle --all mode
96
+ if (this.all) {
97
+ return this.sendAll(octokit, projectRoot, config);
98
+ }
99
+ // Single scope send
100
+ if (!this.scopeId) {
101
+ // Interactive mode - let user select scope
102
+ return this.interactiveSelect(octokit, projectRoot, config);
103
+ }
104
+ return this.sendSingle(octokit, projectRoot, config, this.scopeId);
105
+ }
106
+ catch (error) {
107
+ if (error instanceof Error && error.message === 'USER_CANCELLED') {
108
+ this.context.stdout.write(chalk.yellow('\n Cancelled.\n\n'));
109
+ return 1;
110
+ }
111
+ this.context.stderr.write(chalk.red(`\n Error: ${error instanceof Error ? error.message : 'Unknown error'}\n\n`));
112
+ return 1;
113
+ }
114
+ }
115
+ /**
116
+ * Get GitHub token from environment or gh CLI
117
+ */
118
+ async getGitHubToken() {
119
+ const spinner = ora('Checking GitHub authentication...').start();
120
+ const discovered = await discoverGitHubToken();
121
+ if (discovered) {
122
+ spinner.succeed(`Authenticated via ${discovered.source === 'env' ? 'environment variable' : 'GitHub CLI'}`);
123
+ return discovered.token;
124
+ }
125
+ spinner.fail('No GitHub token found');
126
+ this.context.stderr.write(chalk.gray('\n Set GITHUB_TOKEN environment variable or run `gh auth login`.\n'));
127
+ this.context.stderr.write(chalk.gray(' Create a token at: https://github.com/settings/tokens\n'));
128
+ this.context.stderr.write(chalk.gray(' Required scopes: repo\n\n'));
129
+ return null;
130
+ }
131
+ /**
132
+ * List all ready scopes with sendability status
133
+ */
134
+ async listScopes(projectRoot, _config) {
135
+ const spinner = ora('Checking ready scopes...').start();
136
+ const sendabilityResults = await checkSendability(projectRoot);
137
+ if (sendabilityResults.length === 0) {
138
+ spinner.info('No scopes in ready/');
139
+ this.context.stdout.write(chalk.gray('\n Create and approve scopes with ') +
140
+ chalk.cyan('vibe scope') +
141
+ chalk.gray(' first.\n\n'));
142
+ return 0;
143
+ }
144
+ spinner.succeed(`Found ${sendabilityResults.length} ready scope(s)`);
145
+ const sendable = sendabilityResults.filter((r) => r.canSend);
146
+ const blocked = sendabilityResults.filter((r) => !r.canSend);
147
+ this.context.stdout.write('\n');
148
+ // Sendable scopes
149
+ if (sendable.length > 0) {
150
+ this.context.stdout.write(chalk.green.bold(` Ready to Send (${sendable.length})\n`));
151
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
152
+ for (const { scope } of sendable) {
153
+ this.context.stdout.write(` ${chalk.cyan(scope.id)} ${scope.title}\n`);
154
+ this.context.stdout.write(chalk.gray(` Target: ${scope.metadata.target} | Priority: ${scope.metadata.priority} | Complexity: ${scope.metadata.complexity}\n`));
155
+ }
156
+ this.context.stdout.write('\n');
157
+ }
158
+ // Blocked scopes
159
+ if (blocked.length > 0) {
160
+ this.context.stdout.write(chalk.yellow.bold(` Blocked (${blocked.length})\n`));
161
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
162
+ for (const { scope, reasons } of blocked) {
163
+ this.context.stdout.write(` ${chalk.yellow(scope.id)} ${scope.title}\n`);
164
+ for (const reason of reasons) {
165
+ this.context.stdout.write(chalk.red(` - ${reason}\n`));
166
+ }
167
+ }
168
+ this.context.stdout.write('\n');
169
+ }
170
+ // Summary
171
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
172
+ this.context.stdout.write(` ${chalk.green(String(sendable.length))} sendable, ${chalk.yellow(String(blocked.length))} blocked\n\n`);
173
+ if (sendable.length > 1) {
174
+ this.context.stdout.write(chalk.gray(' Send all sendable scopes with: ') +
175
+ chalk.cyan('vibe send --all\n\n'));
176
+ }
177
+ return 0;
178
+ }
179
+ /**
180
+ * Interactive scope selection
181
+ */
182
+ async interactiveSelect(octokit, projectRoot, config) {
183
+ const sendabilityResults = await checkSendability(projectRoot);
184
+ const sendable = sendabilityResults.filter((r) => r.canSend);
185
+ if (sendable.length === 0) {
186
+ this.context.stdout.write(chalk.yellow(' No sendable scopes.\n\n'));
187
+ const blocked = sendabilityResults.filter((r) => !r.canSend);
188
+ if (blocked.length > 0) {
189
+ this.context.stdout.write(chalk.gray(` ${blocked.length} scope(s) blocked by dependencies.\n`));
190
+ this.context.stdout.write(chalk.gray(' Run ') +
191
+ chalk.cyan('vibe send --list') +
192
+ chalk.gray(' to see details.\n\n'));
193
+ }
194
+ else {
195
+ this.context.stdout.write(chalk.gray(' Create and approve scopes with ') +
196
+ chalk.cyan('vibe scope') +
197
+ chalk.gray(' first.\n\n'));
198
+ }
199
+ return 0;
200
+ }
201
+ const choices = sendable.map(({ scope }) => ({
202
+ name: `${scope.id}: ${scope.title} (${scope.metadata.target})`,
203
+ value: scope.id,
204
+ }));
205
+ const selectedId = await select({
206
+ message: 'Select scope to send:',
207
+ choices,
208
+ });
209
+ return this.sendSingle(octokit, projectRoot, config, selectedId);
210
+ }
211
+ /**
212
+ * Send a single scope
213
+ */
214
+ async sendSingle(octokit, projectRoot, config, scopeId) {
215
+ // Find the scope
216
+ const spinner = ora(`Looking for ${scopeId}...`).start();
217
+ const scope = await findReadyScope(projectRoot, scopeId);
218
+ if (!scope) {
219
+ spinner.fail(`${scopeId} not found in ready/`);
220
+ this.context.stderr.write(chalk.gray('\n Scopes must be in docs/scopes/ready/ to be sent.\n'));
221
+ this.context.stderr.write(chalk.gray(' Run ') +
222
+ chalk.cyan('vibe send --list') +
223
+ chalk.gray(' to see available scopes.\n\n'));
224
+ return 1;
225
+ }
226
+ spinner.succeed(`Found ${scopeId}`);
227
+ // Show scope details
228
+ this.context.stdout.write('\n');
229
+ this.context.stdout.write(chalk.bold(` ${scope.id}: ${scope.title}\n`));
230
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
231
+ this.context.stdout.write(chalk.gray(` Target: ${scope.metadata.target}\n`));
232
+ this.context.stdout.write(chalk.gray(` Priority: ${scope.metadata.priority}\n`));
233
+ this.context.stdout.write(chalk.gray(` Complexity: ${scope.metadata.complexity}\n`));
234
+ if (scope.summary) {
235
+ this.context.stdout.write(chalk.gray(` Summary: ${scope.summary}\n`));
236
+ }
237
+ this.context.stdout.write('\n');
238
+ // Validate dependencies
239
+ const depSpinner = ora('Validating dependencies...').start();
240
+ const depValidation = await validateDependencies(projectRoot, scope);
241
+ if (!depValidation.valid) {
242
+ depSpinner.fail('Blocking dependencies not completed');
243
+ this.context.stdout.write('\n');
244
+ for (const blocking of depValidation.blocking) {
245
+ this.context.stderr.write(chalk.red(` - ${blocking.scopeId}: ${blocking.status} (requires ${blocking.required_status})\n`));
246
+ this.context.stderr.write(chalk.gray(` Reason: ${blocking.reason}\n`));
247
+ }
248
+ this.context.stdout.write('\n');
249
+ if (!this.force) {
250
+ this.context.stderr.write(chalk.gray(' Use ') +
251
+ chalk.cyan('--force') +
252
+ chalk.gray(' to send anyway.\n\n'));
253
+ return 1;
254
+ }
255
+ this.context.stdout.write(chalk.yellow(' --force specified, continuing...\n\n'));
256
+ }
257
+ else {
258
+ depSpinner.succeed('Dependencies validated');
259
+ }
260
+ // Show non-blocking deps info
261
+ if (depValidation.nonBlocking.length > 0) {
262
+ this.context.stdout.write(chalk.gray(' Non-blocking dependencies:\n'));
263
+ for (const dep of depValidation.nonBlocking) {
264
+ this.context.stdout.write(chalk.gray(` - ${dep.scopeId}: ${dep.status}\n`));
265
+ }
266
+ this.context.stdout.write('\n');
267
+ }
268
+ // Get target repos
269
+ const targetRepos = getTargetRepos(scope, config);
270
+ if (targetRepos.length === 0) {
271
+ this.context.stderr.write(chalk.red(` Error: No repository with alias '${scope.metadata.target}'\n`));
272
+ this.context.stderr.write(chalk.gray(' Configured repos: ') +
273
+ config.repos.map((r) => r.alias).join(', ') +
274
+ '\n\n');
275
+ // Prompt to select a repo
276
+ const choices = config.repos.map((r) => ({
277
+ name: `${r.alias} (${r.name})`,
278
+ value: r.alias,
279
+ }));
280
+ const selectedAlias = await select({
281
+ message: 'Select target repository:',
282
+ choices,
283
+ });
284
+ // Update scope metadata (for this send only)
285
+ scope.metadata.target = selectedAlias;
286
+ }
287
+ // Check dev repo state
288
+ for (const repo of targetRepos) {
289
+ const devSpinner = ora(`Checking ${repo.alias}...`).start();
290
+ const devState = await checkDevRepoState(octokit, repo.owner, repo.name, repo.branch, scope.id);
291
+ if (devState.processed || devState.plan_status) {
292
+ devSpinner.warn(`${scope.id} already ${devState.location || 'exists'} in ${repo.alias}`);
293
+ if (devState.plan_status) {
294
+ this.context.stdout.write(chalk.yellow(` Implementation plan status: ${devState.plan_status}\n`));
295
+ }
296
+ if (!this.force) {
297
+ this.context.stderr.write(chalk.gray('\n Use ') +
298
+ chalk.cyan('--force') +
299
+ chalk.gray(' to update anyway.\n\n'));
300
+ return 1;
301
+ }
302
+ }
303
+ else if (devState.exists) {
304
+ devSpinner.info(`${scope.id} exists in ${repo.alias} incoming-scopes`);
305
+ this.context.stdout.write(chalk.gray(' Will update existing scope.\n'));
306
+ }
307
+ else {
308
+ devSpinner.succeed(`${repo.alias} ready for new scope`);
309
+ }
310
+ }
311
+ // Dry run mode
312
+ if (this.dryRun) {
313
+ this.context.stdout.write('\n');
314
+ this.context.stdout.write(chalk.cyan.bold(' DRY RUN - No changes made\n'));
315
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
316
+ this.context.stdout.write(chalk.gray(' Would send to:\n'));
317
+ for (const repo of targetRepos) {
318
+ this.context.stdout.write(chalk.gray(` - ${repo.alias} (${repo.owner}/${repo.name})\n`));
319
+ }
320
+ if (!this.noNotify) {
321
+ this.context.stdout.write(chalk.gray(' Would create GitHub Issue(s)\n'));
322
+ }
323
+ this.context.stdout.write(chalk.gray(' Would move scope to docs/scopes/sent/\n\n'));
324
+ return 0;
325
+ }
326
+ // Confirm send
327
+ const confirmed = await confirm({
328
+ message: `Send ${scope.id} to ${targetRepos.map((r) => r.alias).join(', ')}?`,
329
+ default: true,
330
+ });
331
+ if (!confirmed) {
332
+ this.context.stdout.write(chalk.gray('\n Cancelled.\n\n'));
333
+ return 0;
334
+ }
335
+ // Send scope
336
+ const sendSpinner = ora('Sending scope...').start();
337
+ const results = await sendScope(octokit, projectRoot, scope, config, {
338
+ dryRun: this.dryRun,
339
+ force: this.force,
340
+ noNotify: this.noNotify,
341
+ });
342
+ const successful = results.filter((r) => r.success && !r.skipped);
343
+ const failed = results.filter((r) => !r.success);
344
+ if (successful.length > 0) {
345
+ sendSpinner.succeed('Scope sent successfully');
346
+ }
347
+ else if (failed.length > 0) {
348
+ sendSpinner.fail('Send failed');
349
+ }
350
+ else {
351
+ sendSpinner.info('No changes made');
352
+ }
353
+ // Show results
354
+ this.context.stdout.write('\n');
355
+ this.showResults(results);
356
+ return failed.length > 0 ? 1 : 0;
357
+ }
358
+ /**
359
+ * Send all sendable scopes
360
+ */
361
+ async sendAll(octokit, projectRoot, config) {
362
+ const spinner = ora('Checking sendable scopes...').start();
363
+ const sendabilityResults = await checkSendability(projectRoot);
364
+ const sendable = sendabilityResults.filter((r) => r.canSend);
365
+ if (sendable.length === 0) {
366
+ spinner.info('No sendable scopes');
367
+ this.context.stdout.write(chalk.gray('\n All scopes are either blocked or already sent.\n'));
368
+ this.context.stdout.write(chalk.gray(' Run ') +
369
+ chalk.cyan('vibe send --list') +
370
+ chalk.gray(' to see status.\n\n'));
371
+ return 0;
372
+ }
373
+ spinner.succeed(`Found ${sendable.length} sendable scope(s)`);
374
+ // List scopes to send
375
+ this.context.stdout.write('\n');
376
+ this.context.stdout.write(chalk.bold(' Scopes to send:\n'));
377
+ for (const { scope } of sendable) {
378
+ this.context.stdout.write(` ${chalk.cyan(scope.id)}: ${scope.title} → ${scope.metadata.target}\n`);
379
+ }
380
+ this.context.stdout.write('\n');
381
+ if (this.dryRun) {
382
+ this.context.stdout.write(chalk.cyan.bold(' DRY RUN - No changes made\n\n'));
383
+ return 0;
384
+ }
385
+ // Confirm
386
+ const confirmed = await confirm({
387
+ message: `Send ${sendable.length} scope(s)?`,
388
+ default: true,
389
+ });
390
+ if (!confirmed) {
391
+ this.context.stdout.write(chalk.gray('\n Cancelled.\n\n'));
392
+ return 0;
393
+ }
394
+ // Send all
395
+ const sendSpinner = ora('Sending scopes...').start();
396
+ const results = await sendAllScopes(octokit, projectRoot, config, {
397
+ dryRun: this.dryRun,
398
+ force: this.force,
399
+ noNotify: this.noNotify,
400
+ });
401
+ sendSpinner.stop();
402
+ // Show summary
403
+ this.context.stdout.write('\n');
404
+ this.context.stdout.write(chalk.bold(' Batch Send Results\n'));
405
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
406
+ if (results.sent.length > 0) {
407
+ this.context.stdout.write(chalk.green(` Sent: ${results.sent.length}\n`));
408
+ for (const sent of results.sent) {
409
+ this.context.stdout.write(chalk.gray(` - ${sent.alias}: `) +
410
+ (sent.issue_url
411
+ ? chalk.blue(sent.issue_url)
412
+ : chalk.gray(sent.commit_sha?.substring(0, 7) || 'done')) +
413
+ '\n');
414
+ }
415
+ }
416
+ if (results.skipped.length > 0) {
417
+ this.context.stdout.write(chalk.yellow(` Skipped: ${results.skipped.length}\n`));
418
+ for (const skipped of results.skipped) {
419
+ this.context.stdout.write(chalk.gray(` - ${skipped.scopeId}: ${skipped.reason}\n`));
420
+ }
421
+ }
422
+ if (results.failed.length > 0) {
423
+ this.context.stdout.write(chalk.red(` Failed: ${results.failed.length}\n`));
424
+ for (const failed of results.failed) {
425
+ this.context.stdout.write(chalk.red(` - ${failed.scopeId}: ${failed.error}\n`));
426
+ }
427
+ }
428
+ this.context.stdout.write('\n');
429
+ return results.failed.length > 0 ? 1 : 0;
430
+ }
431
+ /**
432
+ * Show send results
433
+ */
434
+ showResults(results) {
435
+ this.context.stdout.write(chalk.bold(' Results\n'));
436
+ this.context.stdout.write(chalk.gray(' ─'.repeat(25)) + '\n');
437
+ for (const result of results) {
438
+ if (result.success && !result.skipped) {
439
+ this.context.stdout.write(chalk.green(` ${result.alias}: Sent\n`));
440
+ if (result.commit_sha) {
441
+ this.context.stdout.write(chalk.gray(` Commit: ${result.commit_sha.substring(0, 7)}\n`));
442
+ }
443
+ if (result.issue_url) {
444
+ this.context.stdout.write(chalk.gray(` Issue: `) + chalk.blue(result.issue_url) + '\n');
445
+ }
446
+ }
447
+ else if (result.skipped) {
448
+ this.context.stdout.write(chalk.yellow(` ${result.alias}: Skipped\n`));
449
+ this.context.stdout.write(chalk.gray(` Reason: ${result.skip_reason}\n`));
450
+ }
451
+ else {
452
+ this.context.stdout.write(chalk.red(` ${result.alias}: Failed\n`));
453
+ this.context.stdout.write(chalk.gray(` Error: ${result.error}\n`));
454
+ }
455
+ }
456
+ this.context.stdout.write('\n');
457
+ // Next steps
458
+ const successful = results.filter((r) => r.success && !r.skipped);
459
+ if (successful.length > 0) {
460
+ this.context.stdout.write(chalk.bold(' Next Steps\n'));
461
+ this.context.stdout.write(chalk.gray(' 1. Check the GitHub Issue(s) for details\n'));
462
+ this.context.stdout.write(chalk.gray(' 2. Create implementation plans in dev repos\n'));
463
+ this.context.stdout.write(chalk.gray(' 3. Run ') +
464
+ chalk.cyan('vibe sync') +
465
+ chalk.gray(' to track progress\n\n'));
466
+ }
467
+ }
468
+ }
469
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * vibe status - Quick project health overview
3
+ *
4
+ * Displays project status including repository sync status, PRD coverage,
5
+ * scope progress, and gaps summary using cached data for instant results.
6
+ */
7
+ import { Command } from 'clipanion';
8
+ export declare class StatusCommand extends Command {
9
+ static paths: string[][];
10
+ static usage: import("clipanion").Usage;
11
+ detailed: boolean;
12
+ json: boolean;
13
+ check: boolean;
14
+ execute(): Promise<number>;
15
+ /**
16
+ * Output JSON format
17
+ */
18
+ private outputJson;
19
+ /**
20
+ * Output check mode (minimal, with exit codes)
21
+ */
22
+ private outputCheck;
23
+ /**
24
+ * Output summary view
25
+ */
26
+ private outputSummary;
27
+ /**
28
+ * Output detailed view with tables
29
+ */
30
+ private outputDetailed;
31
+ }
32
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAyC5C,qBAAa,aAAc,SAAQ,OAAO;IACxC,OAAgB,KAAK,aAAgB;IAErC,OAAgB,KAAK,4BAmBlB;IAGH,QAAQ,UAEL;IAEH,IAAI,UAED;IAEH,KAAK,UAEF;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA2EhC;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgHrB;;OAEG;IACH,OAAO,CAAC,cAAc;CA4OvB"}