@fiftth/fiftth-cli 1.0.1 → 1.1.1

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 (116) hide show
  1. package/.fiftthnexus/.github/workflows/copilot-orchestrator.yml +78 -0
  2. package/.fiftthnexus/actions/Dockerfile +34 -0
  3. package/.fiftthnexus/actions/copilot-agent.mjs +269 -0
  4. package/.fiftthnexus/actions/package.json +8 -0
  5. package/.fiftthnexus/orchestrator.ts +2304 -0
  6. package/.fiftthnexus/skills/env-implement-prompt.md +65 -0
  7. package/.fiftthnexus/skills/env-plan-prompt.md +33 -0
  8. package/.fiftthnexus/skills/env-review-prompt.md +61 -0
  9. package/.fiftthnexus/skills/grill-me.md +9 -0
  10. package/.fiftthnexus/skills/prd-to-issues.md +150 -0
  11. package/.fiftthnexus/skills/write-prd.md +70 -0
  12. package/README.md +216 -25
  13. package/dist/api/client.d.ts +6 -0
  14. package/dist/api/client.d.ts.map +1 -1
  15. package/dist/api/client.js +13 -2
  16. package/dist/api/client.js.map +1 -1
  17. package/dist/commands/checkout.d.ts +6 -1
  18. package/dist/commands/checkout.d.ts.map +1 -1
  19. package/dist/commands/checkout.js +415 -44
  20. package/dist/commands/checkout.js.map +1 -1
  21. package/dist/commands/login.d.ts +0 -2
  22. package/dist/commands/login.d.ts.map +1 -1
  23. package/dist/commands/login.js +83 -32
  24. package/dist/commands/login.js.map +1 -1
  25. package/dist/commands/model.d.ts +2 -0
  26. package/dist/commands/model.d.ts.map +1 -0
  27. package/dist/commands/model.js +32 -0
  28. package/dist/commands/model.js.map +1 -0
  29. package/dist/commands/planningContext.d.ts +6 -0
  30. package/dist/commands/planningContext.d.ts.map +1 -0
  31. package/dist/commands/planningContext.js +91 -0
  32. package/dist/commands/planningContext.js.map +1 -0
  33. package/dist/commands/repo.d.ts.map +1 -1
  34. package/dist/commands/repo.js +38 -15
  35. package/dist/commands/repo.js.map +1 -1
  36. package/dist/commands/skills.d.ts +2 -0
  37. package/dist/commands/skills.d.ts.map +1 -0
  38. package/dist/commands/skills.js +123 -0
  39. package/dist/commands/skills.js.map +1 -0
  40. package/dist/commands/use.d.ts +1 -5
  41. package/dist/commands/use.d.ts.map +1 -1
  42. package/dist/commands/use.js +63 -48
  43. package/dist/commands/use.js.map +1 -1
  44. package/dist/index.js +86 -27
  45. package/dist/index.js.map +1 -1
  46. package/dist/services/nexusService.d.ts +30 -0
  47. package/dist/services/nexusService.d.ts.map +1 -0
  48. package/dist/services/nexusService.js +188 -0
  49. package/dist/services/nexusService.js.map +1 -0
  50. package/dist/services/prdService.d.ts +12 -0
  51. package/dist/services/prdService.d.ts.map +1 -0
  52. package/dist/services/prdService.js +103 -0
  53. package/dist/services/prdService.js.map +1 -0
  54. package/dist/services/taskSelection.d.ts +10 -0
  55. package/dist/services/taskSelection.d.ts.map +1 -0
  56. package/dist/services/taskSelection.js +112 -0
  57. package/dist/services/taskSelection.js.map +1 -0
  58. package/dist/services/taskService.d.ts +23 -1
  59. package/dist/services/taskService.d.ts.map +1 -1
  60. package/dist/services/taskService.js +118 -12
  61. package/dist/services/taskService.js.map +1 -1
  62. package/dist/utils/config.d.ts +2 -0
  63. package/dist/utils/config.d.ts.map +1 -1
  64. package/dist/utils/config.js +20 -3
  65. package/dist/utils/config.js.map +1 -1
  66. package/dist/utils/dashboard.d.ts +65 -0
  67. package/dist/utils/dashboard.d.ts.map +1 -0
  68. package/dist/utils/dashboard.js +205 -0
  69. package/dist/utils/dashboard.js.map +1 -0
  70. package/dist/utils/models.d.ts +14 -0
  71. package/dist/utils/models.d.ts.map +1 -0
  72. package/dist/utils/models.js +89 -0
  73. package/dist/utils/models.js.map +1 -0
  74. package/dist/utils/ui.d.ts +6 -0
  75. package/dist/utils/ui.d.ts.map +1 -1
  76. package/dist/utils/ui.js +22 -1
  77. package/dist/utils/ui.js.map +1 -1
  78. package/dist/utils/version.d.ts +4 -0
  79. package/dist/utils/version.d.ts.map +1 -0
  80. package/dist/utils/version.js +26 -0
  81. package/dist/utils/version.js.map +1 -0
  82. package/package.json +9 -4
  83. package/.github/workflows/publish-npm.yml +0 -62
  84. package/dist/commands/tasks.d.ts +0 -2
  85. package/dist/commands/tasks.d.ts.map +0 -1
  86. package/dist/commands/tasks.js +0 -69
  87. package/dist/commands/tasks.js.map +0 -1
  88. package/dist/context/runtimeContext.d.ts +0 -14
  89. package/dist/context/runtimeContext.d.ts.map +0 -1
  90. package/dist/context/runtimeContext.js +0 -21
  91. package/dist/context/runtimeContext.js.map +0 -1
  92. package/dist/services/taskContext.d.ts +0 -14
  93. package/dist/services/taskContext.d.ts.map +0 -1
  94. package/dist/services/taskContext.js +0 -15
  95. package/dist/services/taskContext.js.map +0 -1
  96. package/dist/utils/api.d.ts +0 -10
  97. package/dist/utils/api.d.ts.map +0 -1
  98. package/dist/utils/api.js +0 -25
  99. package/dist/utils/api.js.map +0 -1
  100. package/src/api/client.ts +0 -31
  101. package/src/commands/checkout.ts +0 -101
  102. package/src/commands/login.ts +0 -145
  103. package/src/commands/repo.ts +0 -113
  104. package/src/commands/tasks.ts +0 -86
  105. package/src/commands/use.ts +0 -149
  106. package/src/config/configService.ts +0 -56
  107. package/src/context/runtimeContext.ts +0 -42
  108. package/src/git/gitService.ts +0 -29
  109. package/src/index.ts +0 -133
  110. package/src/services/taskContext.ts +0 -32
  111. package/src/services/taskService.ts +0 -53
  112. package/src/utils/api.ts +0 -41
  113. package/src/utils/config.ts +0 -48
  114. package/src/utils/ui.ts +0 -46
  115. package/tsconfig.json +0 -18
  116. package/vitest.config.ts +0 -8
@@ -1,82 +1,453 @@
1
- import chalk from 'chalk';
2
- import { getRepoPath } from '../config/configService.js';
3
- import { getRuntimeSelectedTask } from '../context/runtimeContext.js';
4
- import { checkGitRepo, checkRepoExists, checkUncommittedChanges, checkoutBranch, fetch, } from '../git/gitService.js';
5
- import { moveTaskToHumanReview } from '../services/taskService.js';
6
- import { cmd, fail, info, kv, muted, ok, section } from '../utils/ui.js';
7
- export async function checkoutCommand(taskId) {
8
- const selectedTask = getRuntimeSelectedTask();
9
- if (!selectedTask) {
10
- console.log(`\n${fail('No task selected.')}\n`);
11
- console.log(`${muted(`Run ${cmd('fiftth tasks')} to select one.`)}\n`);
12
- process.exit(1);
1
+ import chalk from "chalk";
2
+ import { getRepoPath } from "../config/configService.js";
3
+ import { checkGitRepo, checkRepoExists, checkUncommittedChanges, fetch, } from "../git/gitService.js";
4
+ import { cleanupNexusWorktrees, runNexusOrchestrator, } from "../services/nexusService.js";
5
+ import { resolveRepositoryPrd } from "../services/prdService.js";
6
+ import { resolveSelectedTask } from "../services/taskSelection.js";
7
+ import { completeRepositoryExecutionStage, failRepositoryExecutionStage, fetchTaskTargetBranches, moveTaskToInProgress, startRepositoryExecutionStage, } from "../services/taskService.js";
8
+ import { loadConfig } from "../utils/config.js";
9
+ import { LiveDashboard, buildGlobalMetrics, ensureDockerRuntime, getDockerRuntimeStatus, } from "../utils/dashboard.js";
10
+ import { findModelOption, resolveConfiguredModel } from "../utils/models.js";
11
+ import { getCliVersionLabel } from "../utils/version.js";
12
+ import { muted } from "../utils/ui.js";
13
+ const CLI_VERSION = getCliVersionLabel();
14
+ const REPOSITORY_SPINNER_FRAMES = [".", "..", "...", "...."];
15
+ const QUIET_NEXUS_ICONS = new Set([
16
+ "[gh]",
17
+ "[docker]",
18
+ "[list]",
19
+ "[filter]",
20
+ "[worktree]",
21
+ "[reuse]",
22
+ "[save]",
23
+ "[label]",
24
+ "[iter]",
25
+ "[gitignore]",
26
+ "[checkout]",
27
+ "[commit]",
28
+ "[diff]",
29
+ "[hint]",
30
+ "[push]",
31
+ "[pr]",
32
+ ]);
33
+ function sleep(ms) {
34
+ return new Promise((resolve) => {
35
+ setTimeout(resolve, ms);
36
+ });
37
+ }
38
+ function compactRepositoryLabel(label) {
39
+ const [repository, issue] = label.split("#");
40
+ const repoName = repository?.split("/").pop() ?? label;
41
+ return issue ? `${repoName} #${issue}` : repoName;
42
+ }
43
+ function compactStateLabel(state) {
44
+ switch (state) {
45
+ case "planning":
46
+ return "agent planning";
47
+ case "implementing":
48
+ return "agent implementing";
49
+ case "reviewing":
50
+ return "agent reviewing";
51
+ case "queued":
52
+ return "queued";
53
+ default:
54
+ return state.replace(/-/g, " ");
13
55
  }
14
- if (selectedTask.taskId !== taskId) {
15
- console.log(`\n${fail('Task ID does not match the selected task.')}\n`);
16
- console.log(kv('Selected task ID', selectedTask.taskId));
17
- console.log(`${muted(`Run ${cmd('fiftth tasks')} and select task ${cmd(taskId)} first.`)}\n`);
18
- console.log();
19
- process.exit(1);
56
+ }
57
+ function findRepositoryNameForEvent(message, states) {
58
+ const issueMatch = message.match(/#(\d+)/);
59
+ if (!issueMatch) {
60
+ return undefined;
61
+ }
62
+ const issueNumber = Number(issueMatch[1]);
63
+ const matchedState = [...states.values()].find((entry) => entry.issueNumber === issueNumber);
64
+ return matchedState?.repoFullName?.split("/").pop();
65
+ }
66
+ function buildRepositoryActivityLines(activities, frameIndex = 0) {
67
+ const entries = [...activities.values()].sort((left, right) => left.repoName.localeCompare(right.repoName));
68
+ if (entries.length === 0) {
69
+ return [muted("Waiting for nexus activity...")];
70
+ }
71
+ const spinnerFrame = REPOSITORY_SPINNER_FRAMES[frameIndex % REPOSITORY_SPINNER_FRAMES.length] ?? REPOSITORY_SPINNER_FRAMES[0];
72
+ const lines = [];
73
+ for (const entry of entries) {
74
+ const spinner = muted((entry.active ? spinnerFrame : "").padEnd(4, " "));
75
+ lines.push(`${spinner} ${chalk.bold(entry.repoName)} ${muted(entry.workingOn ?? "idle")}`);
76
+ lines.push(muted(entry.log ?? entry.status ?? "waiting for updates"));
77
+ lines.push("");
78
+ }
79
+ return lines.slice(0, -1);
80
+ }
81
+ function getRepositoryName(fullName) {
82
+ return fullName.split("/").pop();
83
+ }
84
+ function resolveTargetBranch(repositoryFullName, targetBranches) {
85
+ const repoName = getRepositoryName(repositoryFullName);
86
+ return targetBranches.find((targetBranch) => {
87
+ if (targetBranch.fullName === repositoryFullName) {
88
+ return true;
89
+ }
90
+ return targetBranch.repoName === repoName;
91
+ });
92
+ }
93
+ async function waitForTargetBranches(taskId, repositoryNames, onProgress) {
94
+ while (true) {
95
+ const targetBranches = await fetchTaskTargetBranches(taskId);
96
+ const readyCount = repositoryNames.filter((repositoryName) => resolveTargetBranch(repositoryName, targetBranches)).length;
97
+ onProgress?.(readyCount, repositoryNames.length);
98
+ if (readyCount === repositoryNames.length) {
99
+ return targetBranches;
100
+ }
101
+ await sleep(5000);
20
102
  }
103
+ }
104
+ async function executionStagesForAgents(taskId, repositories, action, stage, errorMessage) {
105
+ for (const repository of repositories) {
106
+ if (!repository.id) {
107
+ throw new Error(`Repository ID not available for ${repository.fullName}.`);
108
+ }
109
+ if (action === "fail") {
110
+ await failRepositoryExecutionStage({
111
+ taskId,
112
+ repositoryId: repository.id,
113
+ stage,
114
+ error: errorMessage ?? "Execution stage failed.",
115
+ metadata: {},
116
+ });
117
+ continue;
118
+ }
119
+ const sendStageEvent = action === "start"
120
+ ? startRepositoryExecutionStage
121
+ : completeRepositoryExecutionStage;
122
+ await sendStageEvent({
123
+ taskId,
124
+ repositoryId: repository.id,
125
+ stage,
126
+ metadata: {},
127
+ });
128
+ }
129
+ }
130
+ export async function checkoutCommand(taskId, options = {}) {
131
+ const config = loadConfig();
132
+ const resolvedModel = resolveConfiguredModel(config);
133
+ const modelLabel = findModelOption(resolvedModel)?.label ?? resolvedModel;
134
+ const selectedTask = await resolveSelectedTask(taskId);
135
+ const dashboard = new LiveDashboard("fiftth checkout", undefined, 5, { animate: true });
136
+ const nexusStates = new Map();
137
+ const failedNexusRepositories = new Set();
138
+ const repositoryActivities = new Map();
139
+ const refreshRepositoryActivities = () => {
140
+ dashboard.setEventRenderer((frameIndex) => buildRepositoryActivityLines(repositoryActivities, frameIndex));
141
+ };
142
+ const refreshDashboard = (dockerStatus = getDockerRuntimeStatus()) => {
143
+ dashboard.setMetrics(buildGlobalMetrics({
144
+ workspace: config.workspace,
145
+ loggedIn: Boolean(config.token),
146
+ model: modelLabel,
147
+ cliVersion: CLI_VERSION,
148
+ dockerStatus,
149
+ }));
150
+ };
151
+ refreshDashboard();
152
+ dashboard.setPanels([]);
153
+ dashboard.setLoading("Validating runtime prerequisites");
154
+ dashboard.addEvent(`Task ${selectedTask.id} selected for checkout`, "brand");
155
+ dashboard.addEvent(`Mode ${options.worktree ? "worktree" : "literal checkout"}`, "muted");
156
+ if (options.verbose) {
157
+ dashboard.addEvent("Log mode verbose", "muted");
158
+ }
159
+ dashboard.addEvent(`Model ${modelLabel}`, "muted");
160
+ dashboard.start();
21
161
  if (selectedTask.repositories.length === 0) {
22
- console.log(`\n${info('This task has no linked repositories.')}\n`);
162
+ dashboard.setLoading("No linked repositories found");
163
+ dashboard.addEvent("This task has no linked repositories.", "warn");
164
+ dashboard.stop();
165
+ console.log(dashboard.snapshot());
23
166
  return;
24
167
  }
25
- console.log(`\n${section(`Checking out task ${selectedTask.taskId} in linked repositories`)}\n`);
26
- const successfulRepositories = [];
168
+ const dockerStatus = ensureDockerRuntime();
169
+ refreshDashboard(dockerStatus);
170
+ dashboard.addEvent(dockerStatus.runningCount > 0
171
+ ? `Docker runtime ready with ${dockerStatus.runningCount} container(s) already running`
172
+ : "Docker runtime ready with no parallel containers", dockerStatus.runningCount > 0 ? "warn" : "ok");
173
+ if (options.worktree) {
174
+ const cleanupCandidates = selectedTask.repositories
175
+ .map((repository) => {
176
+ const repoPath = getRepoPath(repository.fullName);
177
+ return repoPath
178
+ ? {
179
+ repoPath,
180
+ repoFullName: repository.fullName,
181
+ taskId: selectedTask.id,
182
+ }
183
+ : undefined;
184
+ })
185
+ .filter((candidate) => Boolean(candidate));
186
+ if (cleanupCandidates.length > 0) {
187
+ dashboard.setLoading("Resetting previous worktrees");
188
+ await cleanupNexusWorktrees(cleanupCandidates);
189
+ dashboard.addEvent("Previous worktrees reset", "ok");
190
+ }
191
+ }
192
+ dashboard.setLoading(`Checking ${selectedTask.repositories.length} linked repositories`);
193
+ const readyRepositories = [];
27
194
  const failedRepositories = [];
195
+ const totalRepositories = selectedTask.repositories.length;
28
196
  for (const taskRepository of selectedTask.repositories) {
29
197
  const repoName = taskRepository.fullName;
30
198
  const repoPath = getRepoPath(repoName);
31
- console.log(kv('Repository', repoName));
32
199
  if (!repoPath) {
33
- console.log(` ${fail('Skipped: repository not configured locally.')}`);
34
200
  failedRepositories.push(repoName);
201
+ dashboard.addEvent(`${repoName} skipped: repository not configured locally`, "error");
35
202
  continue;
36
203
  }
37
204
  if (!checkRepoExists(repoPath)) {
38
- console.log(` ${fail('Skipped: repository path not found.')}`);
39
205
  failedRepositories.push(repoName);
206
+ dashboard.addEvent(`${repoName} skipped: repository path not found`, "error");
40
207
  continue;
41
208
  }
42
209
  if (!checkGitRepo(repoPath)) {
43
- console.log(` ${fail('Skipped: configured path is not a git repository.')}`);
44
210
  failedRepositories.push(repoName);
211
+ dashboard.addEvent(`${repoName} skipped: configured path is not a git repository`, "error");
45
212
  continue;
46
213
  }
47
214
  const hasUncommittedChanges = await checkUncommittedChanges(repoPath);
48
215
  if (hasUncommittedChanges) {
49
- console.log(` ${fail('Skipped: uncommitted changes detected.')}`);
50
216
  failedRepositories.push(repoName);
217
+ dashboard.addEvent(`${repoName} skipped: uncommitted changes detected`, "error");
51
218
  continue;
52
219
  }
53
- try {
54
- await fetch(repoPath);
55
- await checkoutBranch(repoPath, taskRepository.branch);
56
- console.log(` ${ok(`Checked out branch ${chalk.bold(taskRepository.branch)}`)}`);
57
- successfulRepositories.push(repoName);
58
- }
59
- catch {
60
- console.log(` ${fail('Failed: could not fetch/checkout branch.')}`);
61
- failedRepositories.push(repoName);
62
- }
220
+ readyRepositories.push({
221
+ id: taskRepository.id,
222
+ fullName: taskRepository.fullName,
223
+ repoPath,
224
+ });
225
+ dashboard.addEvent(`${repoName} ready for checkout`, "ok");
63
226
  }
64
- console.log();
65
- console.log(ok(`Repositories checked out: ${successfulRepositories.length}`));
227
+ dashboard.addEvent(`Repositories ready for checkout: ${readyRepositories.length}/${totalRepositories}`, failedRepositories.length > 0 ? "warn" : "ok");
66
228
  if (failedRepositories.length > 0) {
67
- console.log(fail(`Repositories failed/skipped: ${failedRepositories.length}`));
68
229
  for (const repository of failedRepositories) {
69
- console.log(` ${muted('•')} ${repository}`);
230
+ dashboard.addEvent(`Failed or skipped repository: ${repository}`, "error");
70
231
  }
71
232
  }
72
- if (successfulRepositories.length > 0 && failedRepositories.length === 0) {
233
+ if (failedRepositories.length > 0) {
234
+ dashboard.setLoading("Checkout failed during repository validation");
235
+ dashboard.addEvent("Checkout aborted before SaaS transition and nexus start", "error");
236
+ dashboard.stop();
237
+ console.log(dashboard.snapshot());
238
+ process.exit(1);
239
+ }
240
+ dashboard.setLoading("Validating PRDs for each linked repository");
241
+ dashboard.addEvent("Validating PRDs for each linked repository", "brand");
242
+ const prdMissingRepositories = [];
243
+ const prdAmbiguousRepositories = [];
244
+ for (const repository of readyRepositories) {
245
+ const prdResolution = await resolveRepositoryPrd(repository.fullName, selectedTask.id);
246
+ if (prdResolution.status === "missing") {
247
+ prdMissingRepositories.push(repository.fullName);
248
+ dashboard.addEvent(`${repository.fullName} is missing a PRD`, "error");
249
+ continue;
250
+ }
251
+ if (prdResolution.status === "ambiguous") {
252
+ prdAmbiguousRepositories.push({
253
+ repo: repository.fullName,
254
+ numbers: prdResolution.matches.map((match) => match.number),
255
+ });
256
+ dashboard.addEvent(`${repository.fullName} has ambiguous PRDs`, "error");
257
+ continue;
258
+ }
259
+ repository.prdNumber = prdResolution.matches[0]?.number;
260
+ dashboard.addEvent(`${repository.fullName} resolved to PRD #${repository.prdNumber}`, "ok");
261
+ }
262
+ if (prdMissingRepositories.length > 0 || prdAmbiguousRepositories.length > 0) {
263
+ for (const repository of prdMissingRepositories) {
264
+ dashboard.addEvent(`PRD missing: ${repository}`, "error");
265
+ }
266
+ for (const repository of prdAmbiguousRepositories) {
267
+ dashboard.addEvent(`PRD ambiguous: ${repository.repo} (${repository.numbers.map((number) => `#${number}`).join(", ")})`, "error");
268
+ }
269
+ dashboard.addEvent("Open the repository and run the planning flow with grill-me, write-prd, and prd-to-issues.", "warn");
270
+ dashboard.setLoading("Checkout blocked by missing or ambiguous PRDs");
271
+ dashboard.addEvent("Checkout blocked by missing or ambiguous PRDs", "error");
272
+ dashboard.stop();
273
+ console.log(dashboard.snapshot());
274
+ process.exit(1);
275
+ }
276
+ if (selectedTask.column !== "IN_PROGRESS") {
277
+ await moveTaskToInProgress(selectedTask.id);
278
+ dashboard.addEvent("Task moved to In Progress", "ok");
279
+ }
280
+ else {
281
+ dashboard.addEvent("Task is already in In Progress. Continuing with branch recovery.", "warn");
282
+ }
283
+ const repositoryNames = readyRepositories.map((r) => r.fullName);
284
+ dashboard.setLoading("Waiting for target branches from execution stages");
285
+ const targetBranches = await waitForTargetBranches(selectedTask.id, repositoryNames, (readyCount, total) => {
286
+ dashboard.setLoading(`Waiting for target branches from execution stages (${readyCount}/${total} ready)`);
287
+ });
288
+ dashboard.addEvent("Target branches recovered from execution stages", "ok");
289
+ dashboard.setLoading(options.worktree ? "Preparing worktree targets" : "Preparing checkout targets");
290
+ const checkedOutRepos = [];
291
+ for (const repository of readyRepositories) {
292
+ const targetBranch = resolveTargetBranch(repository.fullName, targetBranches);
293
+ if (!targetBranch) {
294
+ failedRepositories.push(repository.fullName);
295
+ dashboard.addEvent(`${repository.fullName} skipped: target branch not available`, "error");
296
+ continue;
297
+ }
73
298
  try {
74
- await moveTaskToHumanReview(selectedTask.taskId);
299
+ await fetch(repository.repoPath);
300
+ checkedOutRepos.push({
301
+ ...repository,
302
+ prdNumber: repository.prdNumber,
303
+ targetBranch: targetBranch.targetBranch,
304
+ });
305
+ dashboard.addEvent(`${repository.fullName} prepared for ${targetBranch.targetBranch}`, "ok");
75
306
  }
76
307
  catch {
77
- console.log(`\n${info('Could not move task to Human Review. Please update it manually.')}\n`);
308
+ failedRepositories.push(repository.fullName);
309
+ dashboard.addEvent(`${repository.fullName} failed while fetching refs for ${targetBranch.targetBranch}`, "error");
310
+ }
311
+ }
312
+ if (failedRepositories.length > 0) {
313
+ dashboard.setLoading("Checkout failed before nexus start");
314
+ dashboard.addEvent("Checkout aborted before execution stages and nexus start", "error");
315
+ dashboard.stop();
316
+ console.log(dashboard.snapshot());
317
+ process.exit(1);
318
+ }
319
+ for (const repositoryName of repositoryNames) {
320
+ const targetBranch = resolveTargetBranch(repositoryName, targetBranches);
321
+ if (!targetBranch) {
322
+ continue;
323
+ }
324
+ dashboard.addEvent(`${repositoryName} recovered ${targetBranch.baseBranch ?? "(unknown)"} -> ${targetBranch.targetBranch}`, "muted");
325
+ }
326
+ await executionStagesForAgents(selectedTask.id, checkedOutRepos, "start", "REPO_READY");
327
+ dashboard.addEvent("Agents start reported to execution stages", "ok");
328
+ const nexusCandidates = checkedOutRepos.map((r) => ({
329
+ repoPath: r.repoPath,
330
+ repoFullName: r.fullName,
331
+ prdNumber: r.prdNumber,
332
+ taskId: selectedTask.id,
333
+ targetBranch: r.targetBranch,
334
+ }));
335
+ dashboard.setLoading("");
336
+ refreshRepositoryActivities();
337
+ if (options.verbose) {
338
+ dashboard.setLoading("Streaming verbose Nexus logs");
339
+ dashboard.stop();
340
+ console.log(dashboard.snapshot());
341
+ }
342
+ await runNexusOrchestrator(nexusCandidates, { worktree: options.worktree, verbose: options.verbose }, {
343
+ onEvent: (event) => {
344
+ if (options.verbose) {
345
+ console.log(`${event.icon} ${event.message}`);
346
+ }
347
+ if (!options.verbose && QUIET_NEXUS_ICONS.has(event.icon)) {
348
+ return;
349
+ }
350
+ if (event.icon === "[nexus-repo]" && event.message.includes("::")) {
351
+ const [repoName, logLine] = event.message.split("::", 2);
352
+ const current = repositoryActivities.get(repoName) ?? { repoName };
353
+ repositoryActivities.set(repoName, {
354
+ ...current,
355
+ log: logLine.trim(),
356
+ });
357
+ refreshRepositoryActivities();
358
+ return;
359
+ }
360
+ const repoName = findRepositoryNameForEvent(event.message, nexusStates);
361
+ if (repoName) {
362
+ const current = repositoryActivities.get(repoName) ?? { repoName };
363
+ repositoryActivities.set(repoName, {
364
+ ...current,
365
+ log: muted(event.message),
366
+ });
367
+ refreshRepositoryActivities();
368
+ }
369
+ },
370
+ onState: (state) => {
371
+ nexusStates.set(state.key, state);
372
+ if (state.repoFullName) {
373
+ if (state.state === "failed" || state.state === "timed-out") {
374
+ failedNexusRepositories.add(state.repoFullName);
375
+ }
376
+ else if (state.state === "done") {
377
+ failedNexusRepositories.delete(state.repoFullName);
378
+ }
379
+ }
380
+ const repoName = state.repoFullName?.split("/").pop() ?? compactRepositoryLabel(state.label);
381
+ for (const [name, activity] of repositoryActivities.entries()) {
382
+ if (name === repoName) {
383
+ continue;
384
+ }
385
+ repositoryActivities.set(name, {
386
+ ...activity,
387
+ active: activity.status !== "done" && activity.status !== "failed" ? activity.active : false,
388
+ });
389
+ }
390
+ const current = repositoryActivities.get(repoName) ?? { repoName };
391
+ repositoryActivities.set(repoName, {
392
+ ...current,
393
+ workingOn: state.worktreeKey && state.issueNumber
394
+ ? `${state.worktreeKey} -> #${state.issueNumber}`
395
+ : current.workingOn,
396
+ status: compactStateLabel(state.state),
397
+ log: muted(compactStateLabel(state.state)),
398
+ active: state.state === "planning" || state.state === "implementing" || state.state === "reviewing",
399
+ });
400
+ refreshRepositoryActivities();
401
+ },
402
+ })
403
+ .catch(async (error) => {
404
+ const errorMessage = error instanceof Error
405
+ ? error.message
406
+ : String(error);
407
+ if (checkedOutRepos.length > 0) {
408
+ await executionStagesForAgents(selectedTask.id, checkedOutRepos, "fail", "REPO_READY", errorMessage);
409
+ for (const repository of checkedOutRepos) {
410
+ const repoName = repository.fullName.split("/").pop() ?? repository.fullName;
411
+ const current = repositoryActivities.get(repoName) ?? { repoName };
412
+ repositoryActivities.set(repoName, {
413
+ ...current,
414
+ log: muted("failed during nexus execution"),
415
+ active: false,
416
+ });
417
+ }
418
+ refreshRepositoryActivities();
78
419
  }
420
+ dashboard.setLoading("Nexus failed");
421
+ dashboard.stop();
422
+ throw error;
423
+ });
424
+ dashboard.setLoading("Nexus completed");
425
+ const failedRepositoriesAfterRun = checkedOutRepos.filter((repository) => failedNexusRepositories.has(repository.fullName));
426
+ const successfulRepositoriesAfterRun = checkedOutRepos.filter((repository) => !failedNexusRepositories.has(repository.fullName));
427
+ if (failedRepositoriesAfterRun.length > 0) {
428
+ await executionStagesForAgents(selectedTask.id, failedRepositoriesAfterRun, "fail", "REPO_READY", "Nexus agent aborted or failed during execution.");
429
+ }
430
+ if (successfulRepositoriesAfterRun.length > 0) {
431
+ await executionStagesForAgents(selectedTask.id, successfulRepositoriesAfterRun, "complete", "REPO_READY");
432
+ await executionStagesForAgents(selectedTask.id, successfulRepositoriesAfterRun, "start", "REPO_COMPLETED");
433
+ await executionStagesForAgents(selectedTask.id, successfulRepositoriesAfterRun, "complete", "REPO_COMPLETED");
434
+ }
435
+ for (const repository of checkedOutRepos) {
436
+ const repoName = repository.fullName.split("/").pop() ?? repository.fullName;
437
+ const current = repositoryActivities.get(repoName) ?? { repoName };
438
+ repositoryActivities.set(repoName, {
439
+ ...current,
440
+ log: muted(failedNexusRepositories.has(repository.fullName)
441
+ ? "execution failed"
442
+ : "execution complete"),
443
+ active: false,
444
+ });
445
+ }
446
+ refreshRepositoryActivities();
447
+ dashboard.stop();
448
+ console.log(dashboard.snapshot());
449
+ if (failedRepositoriesAfterRun.length > 0) {
450
+ throw new Error(`Nexus reported failures for ${failedRepositoriesAfterRun.map((repository) => repository.fullName).join(", ")}.`);
79
451
  }
80
- console.log(`\n${ok('Checkout complete')}\n`);
81
452
  }
82
453
  //# sourceMappingURL=checkout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { input } from '@inquirer/prompts';
2
1
  interface LoginOptions {
3
2
  token?: string;
4
3
  host?: string;
@@ -7,6 +6,5 @@ declare function normalizeToken(rawToken: string): string;
7
6
  export declare function loginCommand(options: LoginOptions): Promise<void>;
8
7
  export declare function logoutCommand(): Promise<void>;
9
8
  export declare function loginStatusCommand(): Promise<void>;
10
- export { input };
11
9
  export { normalizeToken };
12
10
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAqB,MAAM,mBAAmB,CAAA;AAK5D,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,iBAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhD;AAyBD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDvE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBnD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBxD;AAED,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AASA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAwBD,iBAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhD;AAyBD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEvE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBnD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsCxD;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}