@made-by-moonlight/athene-cli 0.9.2

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 (315) hide show
  1. package/LICENSE +22 -0
  2. package/dist/assets/plugin-registry.json +67 -0
  3. package/dist/assets/scripts/athene-doctor.ps1 +352 -0
  4. package/dist/assets/scripts/athene-doctor.sh +552 -0
  5. package/dist/assets/scripts/athene-update.ps1 +224 -0
  6. package/dist/assets/scripts/athene-update.sh +252 -0
  7. package/dist/commands/completion.d.ts +3 -0
  8. package/dist/commands/completion.d.ts.map +1 -0
  9. package/dist/commands/completion.js +26 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/config.d.ts +11 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +89 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/dashboard.d.ts +3 -0
  16. package/dist/commands/dashboard.d.ts.map +1 -0
  17. package/dist/commands/dashboard.js +103 -0
  18. package/dist/commands/dashboard.js.map +1 -0
  19. package/dist/commands/doctor.d.ts +3 -0
  20. package/dist/commands/doctor.d.ts.map +1 -0
  21. package/dist/commands/doctor.js +329 -0
  22. package/dist/commands/doctor.js.map +1 -0
  23. package/dist/commands/events.d.ts +3 -0
  24. package/dist/commands/events.d.ts.map +1 -0
  25. package/dist/commands/events.js +172 -0
  26. package/dist/commands/events.js.map +1 -0
  27. package/dist/commands/migrate-storage.d.ts +3 -0
  28. package/dist/commands/migrate-storage.d.ts.map +1 -0
  29. package/dist/commands/migrate-storage.js +78 -0
  30. package/dist/commands/migrate-storage.js.map +1 -0
  31. package/dist/commands/notify.d.ts +3 -0
  32. package/dist/commands/notify.d.ts.map +1 -0
  33. package/dist/commands/notify.js +143 -0
  34. package/dist/commands/notify.js.map +1 -0
  35. package/dist/commands/open.d.ts +3 -0
  36. package/dist/commands/open.d.ts.map +1 -0
  37. package/dist/commands/open.js +167 -0
  38. package/dist/commands/open.js.map +1 -0
  39. package/dist/commands/plugin.d.ts +3 -0
  40. package/dist/commands/plugin.d.ts.map +1 -0
  41. package/dist/commands/plugin.js +462 -0
  42. package/dist/commands/plugin.js.map +1 -0
  43. package/dist/commands/project.d.ts +3 -0
  44. package/dist/commands/project.d.ts.map +1 -0
  45. package/dist/commands/project.js +143 -0
  46. package/dist/commands/project.js.map +1 -0
  47. package/dist/commands/report.d.ts +19 -0
  48. package/dist/commands/report.d.ts.map +1 -0
  49. package/dist/commands/report.js +114 -0
  50. package/dist/commands/report.js.map +1 -0
  51. package/dist/commands/review-check.d.ts +3 -0
  52. package/dist/commands/review-check.d.ts.map +1 -0
  53. package/dist/commands/review-check.js +122 -0
  54. package/dist/commands/review-check.js.map +1 -0
  55. package/dist/commands/review.d.ts +3 -0
  56. package/dist/commands/review.d.ts.map +1 -0
  57. package/dist/commands/review.js +215 -0
  58. package/dist/commands/review.js.map +1 -0
  59. package/dist/commands/send.d.ts +3 -0
  60. package/dist/commands/send.d.ts.map +1 -0
  61. package/dist/commands/send.js +187 -0
  62. package/dist/commands/send.js.map +1 -0
  63. package/dist/commands/session.d.ts +3 -0
  64. package/dist/commands/session.d.ts.map +1 -0
  65. package/dist/commands/session.js +439 -0
  66. package/dist/commands/session.js.map +1 -0
  67. package/dist/commands/setup.d.ts +5 -0
  68. package/dist/commands/setup.d.ts.map +1 -0
  69. package/dist/commands/setup.js +297 -0
  70. package/dist/commands/setup.js.map +1 -0
  71. package/dist/commands/spawn.d.ts +4 -0
  72. package/dist/commands/spawn.d.ts.map +1 -0
  73. package/dist/commands/spawn.js +436 -0
  74. package/dist/commands/spawn.js.map +1 -0
  75. package/dist/commands/start.d.ts +21 -0
  76. package/dist/commands/start.d.ts.map +1 -0
  77. package/dist/commands/start.js +1836 -0
  78. package/dist/commands/start.js.map +1 -0
  79. package/dist/commands/status.d.ts +3 -0
  80. package/dist/commands/status.d.ts.map +1 -0
  81. package/dist/commands/status.js +556 -0
  82. package/dist/commands/status.js.map +1 -0
  83. package/dist/commands/update.d.ts +15 -0
  84. package/dist/commands/update.d.ts.map +1 -0
  85. package/dist/commands/update.js +652 -0
  86. package/dist/commands/update.js.map +1 -0
  87. package/dist/commands/verify.d.ts +3 -0
  88. package/dist/commands/verify.d.ts.map +1 -0
  89. package/dist/commands/verify.js +131 -0
  90. package/dist/commands/verify.js.map +1 -0
  91. package/dist/index.d.ts +3 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +24 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/lib/bun-tmp-janitor.d.ts +18 -0
  96. package/dist/lib/bun-tmp-janitor.d.ts.map +1 -0
  97. package/dist/lib/bun-tmp-janitor.js +127 -0
  98. package/dist/lib/bun-tmp-janitor.js.map +1 -0
  99. package/dist/lib/caller-context.d.ts +13 -0
  100. package/dist/lib/caller-context.d.ts.map +1 -0
  101. package/dist/lib/caller-context.js +20 -0
  102. package/dist/lib/caller-context.js.map +1 -0
  103. package/dist/lib/cli-errors.d.ts +8 -0
  104. package/dist/lib/cli-errors.d.ts.map +1 -0
  105. package/dist/lib/cli-errors.js +20 -0
  106. package/dist/lib/cli-errors.js.map +1 -0
  107. package/dist/lib/completion.d.ts +13 -0
  108. package/dist/lib/completion.d.ts.map +1 -0
  109. package/dist/lib/completion.js +428 -0
  110. package/dist/lib/completion.js.map +1 -0
  111. package/dist/lib/composio-setup.d.ts +65 -0
  112. package/dist/lib/composio-setup.d.ts.map +1 -0
  113. package/dist/lib/composio-setup.js +3255 -0
  114. package/dist/lib/composio-setup.js.map +1 -0
  115. package/dist/lib/config-instruction.d.ts +2 -0
  116. package/dist/lib/config-instruction.d.ts.map +1 -0
  117. package/dist/lib/config-instruction.js +193 -0
  118. package/dist/lib/config-instruction.js.map +1 -0
  119. package/dist/lib/constants.d.ts +3 -0
  120. package/dist/lib/constants.d.ts.map +1 -0
  121. package/dist/lib/constants.js +3 -0
  122. package/dist/lib/constants.js.map +1 -0
  123. package/dist/lib/create-session-manager.d.ts +26 -0
  124. package/dist/lib/create-session-manager.d.ts.map +1 -0
  125. package/dist/lib/create-session-manager.js +55 -0
  126. package/dist/lib/create-session-manager.js.map +1 -0
  127. package/dist/lib/credential-resolver.d.ts +37 -0
  128. package/dist/lib/credential-resolver.d.ts.map +1 -0
  129. package/dist/lib/credential-resolver.js +105 -0
  130. package/dist/lib/credential-resolver.js.map +1 -0
  131. package/dist/lib/daemon.d.ts +69 -0
  132. package/dist/lib/daemon.d.ts.map +1 -0
  133. package/dist/lib/daemon.js +77 -0
  134. package/dist/lib/daemon.js.map +1 -0
  135. package/dist/lib/dashboard-rebuild.d.ts +53 -0
  136. package/dist/lib/dashboard-rebuild.d.ts.map +1 -0
  137. package/dist/lib/dashboard-rebuild.js +188 -0
  138. package/dist/lib/dashboard-rebuild.js.map +1 -0
  139. package/dist/lib/dashboard-setup.d.ts +14 -0
  140. package/dist/lib/dashboard-setup.d.ts.map +1 -0
  141. package/dist/lib/dashboard-setup.js +192 -0
  142. package/dist/lib/dashboard-setup.js.map +1 -0
  143. package/dist/lib/dashboard-url.d.ts +19 -0
  144. package/dist/lib/dashboard-url.d.ts.map +1 -0
  145. package/dist/lib/dashboard-url.js +25 -0
  146. package/dist/lib/dashboard-url.js.map +1 -0
  147. package/dist/lib/desktop-setup.d.ts +21 -0
  148. package/dist/lib/desktop-setup.d.ts.map +1 -0
  149. package/dist/lib/desktop-setup.js +556 -0
  150. package/dist/lib/desktop-setup.js.map +1 -0
  151. package/dist/lib/detect-agent.d.ts +24 -0
  152. package/dist/lib/detect-agent.d.ts.map +1 -0
  153. package/dist/lib/detect-agent.js +69 -0
  154. package/dist/lib/detect-agent.js.map +1 -0
  155. package/dist/lib/detect-env.d.ts +14 -0
  156. package/dist/lib/detect-env.d.ts.map +1 -0
  157. package/dist/lib/detect-env.js +46 -0
  158. package/dist/lib/detect-env.js.map +1 -0
  159. package/dist/lib/discord-setup.d.ts +20 -0
  160. package/dist/lib/discord-setup.d.ts.map +1 -0
  161. package/dist/lib/discord-setup.js +584 -0
  162. package/dist/lib/discord-setup.js.map +1 -0
  163. package/dist/lib/format.d.ts +11 -0
  164. package/dist/lib/format.d.ts.map +1 -0
  165. package/dist/lib/format.js +116 -0
  166. package/dist/lib/format.js.map +1 -0
  167. package/dist/lib/git-utils.d.ts +14 -0
  168. package/dist/lib/git-utils.d.ts.map +1 -0
  169. package/dist/lib/git-utils.js +45 -0
  170. package/dist/lib/git-utils.js.map +1 -0
  171. package/dist/lib/install-helpers.d.ts +24 -0
  172. package/dist/lib/install-helpers.d.ts.map +1 -0
  173. package/dist/lib/install-helpers.js +76 -0
  174. package/dist/lib/install-helpers.js.map +1 -0
  175. package/dist/lib/lifecycle-service.d.ts +11 -0
  176. package/dist/lib/lifecycle-service.d.ts.map +1 -0
  177. package/dist/lib/lifecycle-service.js +65 -0
  178. package/dist/lib/lifecycle-service.js.map +1 -0
  179. package/dist/lib/notifier-routing.d.ts +35 -0
  180. package/dist/lib/notifier-routing.d.ts.map +1 -0
  181. package/dist/lib/notifier-routing.js +133 -0
  182. package/dist/lib/notifier-routing.js.map +1 -0
  183. package/dist/lib/notify-test.d.ts +72 -0
  184. package/dist/lib/notify-test.d.ts.map +1 -0
  185. package/dist/lib/notify-test.js +674 -0
  186. package/dist/lib/notify-test.js.map +1 -0
  187. package/dist/lib/openclaw-probe.d.ts +38 -0
  188. package/dist/lib/openclaw-probe.d.ts.map +1 -0
  189. package/dist/lib/openclaw-probe.js +146 -0
  190. package/dist/lib/openclaw-probe.js.map +1 -0
  191. package/dist/lib/openclaw-setup.d.ts +19 -0
  192. package/dist/lib/openclaw-setup.d.ts.map +1 -0
  193. package/dist/lib/openclaw-setup.js +684 -0
  194. package/dist/lib/openclaw-setup.js.map +1 -0
  195. package/dist/lib/path-equality.d.ts +29 -0
  196. package/dist/lib/path-equality.d.ts.map +1 -0
  197. package/dist/lib/path-equality.js +52 -0
  198. package/dist/lib/path-equality.js.map +1 -0
  199. package/dist/lib/plugin-marketplace.d.ts +24 -0
  200. package/dist/lib/plugin-marketplace.d.ts.map +1 -0
  201. package/dist/lib/plugin-marketplace.js +175 -0
  202. package/dist/lib/plugin-marketplace.js.map +1 -0
  203. package/dist/lib/plugin-scaffold.d.ts +14 -0
  204. package/dist/lib/plugin-scaffold.d.ts.map +1 -0
  205. package/dist/lib/plugin-scaffold.js +174 -0
  206. package/dist/lib/plugin-scaffold.js.map +1 -0
  207. package/dist/lib/plugin-store.d.ts +9 -0
  208. package/dist/lib/plugin-store.d.ts.map +1 -0
  209. package/dist/lib/plugin-store.js +121 -0
  210. package/dist/lib/plugin-store.js.map +1 -0
  211. package/dist/lib/plugins.d.ts +17 -0
  212. package/dist/lib/plugins.d.ts.map +1 -0
  213. package/dist/lib/plugins.js +65 -0
  214. package/dist/lib/plugins.js.map +1 -0
  215. package/dist/lib/portfolio-display.d.ts +10 -0
  216. package/dist/lib/portfolio-display.d.ts.map +1 -0
  217. package/dist/lib/portfolio-display.js +17 -0
  218. package/dist/lib/portfolio-display.js.map +1 -0
  219. package/dist/lib/preflight.d.ts +27 -0
  220. package/dist/lib/preflight.d.ts.map +1 -0
  221. package/dist/lib/preflight.js +77 -0
  222. package/dist/lib/preflight.js.map +1 -0
  223. package/dist/lib/prevent-sleep.d.ts +34 -0
  224. package/dist/lib/prevent-sleep.d.ts.map +1 -0
  225. package/dist/lib/prevent-sleep.js +65 -0
  226. package/dist/lib/prevent-sleep.js.map +1 -0
  227. package/dist/lib/project-detection.d.ts +11 -0
  228. package/dist/lib/project-detection.d.ts.map +1 -0
  229. package/dist/lib/project-detection.js +206 -0
  230. package/dist/lib/project-detection.js.map +1 -0
  231. package/dist/lib/project-resolution.d.ts +10 -0
  232. package/dist/lib/project-resolution.d.ts.map +1 -0
  233. package/dist/lib/project-resolution.js +17 -0
  234. package/dist/lib/project-resolution.js.map +1 -0
  235. package/dist/lib/project-supervisor.d.ts +28 -0
  236. package/dist/lib/project-supervisor.d.ts.map +1 -0
  237. package/dist/lib/project-supervisor.js +167 -0
  238. package/dist/lib/project-supervisor.js.map +1 -0
  239. package/dist/lib/prompts.d.ts +7 -0
  240. package/dist/lib/prompts.d.ts.map +1 -0
  241. package/dist/lib/prompts.js +37 -0
  242. package/dist/lib/prompts.js.map +1 -0
  243. package/dist/lib/repo-utils.d.ts +16 -0
  244. package/dist/lib/repo-utils.d.ts.map +1 -0
  245. package/dist/lib/repo-utils.js +26 -0
  246. package/dist/lib/repo-utils.js.map +1 -0
  247. package/dist/lib/resolve-project.d.ts +113 -0
  248. package/dist/lib/resolve-project.d.ts.map +1 -0
  249. package/dist/lib/resolve-project.js +433 -0
  250. package/dist/lib/resolve-project.js.map +1 -0
  251. package/dist/lib/routes.d.ts +2 -0
  252. package/dist/lib/routes.d.ts.map +1 -0
  253. package/dist/lib/routes.js +5 -0
  254. package/dist/lib/routes.js.map +1 -0
  255. package/dist/lib/running-state.d.ts +76 -0
  256. package/dist/lib/running-state.d.ts.map +1 -0
  257. package/dist/lib/running-state.js +338 -0
  258. package/dist/lib/running-state.js.map +1 -0
  259. package/dist/lib/script-runner.d.ts +10 -0
  260. package/dist/lib/script-runner.d.ts.map +1 -0
  261. package/dist/lib/script-runner.js +189 -0
  262. package/dist/lib/script-runner.js.map +1 -0
  263. package/dist/lib/session-utils.d.ts +14 -0
  264. package/dist/lib/session-utils.d.ts.map +1 -0
  265. package/dist/lib/session-utils.js +58 -0
  266. package/dist/lib/session-utils.js.map +1 -0
  267. package/dist/lib/shell.d.ts +17 -0
  268. package/dist/lib/shell.d.ts.map +1 -0
  269. package/dist/lib/shell.js +90 -0
  270. package/dist/lib/shell.js.map +1 -0
  271. package/dist/lib/shutdown.d.ts +30 -0
  272. package/dist/lib/shutdown.d.ts.map +1 -0
  273. package/dist/lib/shutdown.js +177 -0
  274. package/dist/lib/shutdown.js.map +1 -0
  275. package/dist/lib/slack-setup.d.ts +17 -0
  276. package/dist/lib/slack-setup.d.ts.map +1 -0
  277. package/dist/lib/slack-setup.js +485 -0
  278. package/dist/lib/slack-setup.js.map +1 -0
  279. package/dist/lib/startup-preflight.d.ts +36 -0
  280. package/dist/lib/startup-preflight.d.ts.map +1 -0
  281. package/dist/lib/startup-preflight.js +273 -0
  282. package/dist/lib/startup-preflight.js.map +1 -0
  283. package/dist/lib/update-channel-onboarding.d.ts +52 -0
  284. package/dist/lib/update-channel-onboarding.d.ts.map +1 -0
  285. package/dist/lib/update-channel-onboarding.js +107 -0
  286. package/dist/lib/update-channel-onboarding.js.map +1 -0
  287. package/dist/lib/update-check.d.ts +161 -0
  288. package/dist/lib/update-check.d.ts.map +1 -0
  289. package/dist/lib/update-check.js +504 -0
  290. package/dist/lib/update-check.js.map +1 -0
  291. package/dist/lib/web-dir.d.ts +47 -0
  292. package/dist/lib/web-dir.d.ts.map +1 -0
  293. package/dist/lib/web-dir.js +179 -0
  294. package/dist/lib/web-dir.js.map +1 -0
  295. package/dist/lib/webhook-setup.d.ts +16 -0
  296. package/dist/lib/webhook-setup.d.ts.map +1 -0
  297. package/dist/lib/webhook-setup.js +383 -0
  298. package/dist/lib/webhook-setup.js.map +1 -0
  299. package/dist/options/version.d.ts +2 -0
  300. package/dist/options/version.d.ts.map +1 -0
  301. package/dist/options/version.js +7 -0
  302. package/dist/options/version.js.map +1 -0
  303. package/dist/program.d.ts +3 -0
  304. package/dist/program.d.ts.map +1 -0
  305. package/dist/program.js +63 -0
  306. package/dist/program.js.map +1 -0
  307. package/package.json +80 -0
  308. package/templates/rules/base.md +4 -0
  309. package/templates/rules/go.md +8 -0
  310. package/templates/rules/javascript.md +4 -0
  311. package/templates/rules/nextjs.md +7 -0
  312. package/templates/rules/pnpm-workspaces.md +4 -0
  313. package/templates/rules/python.md +8 -0
  314. package/templates/rules/react.md +8 -0
  315. package/templates/rules/typescript.md +6 -0
@@ -0,0 +1,556 @@
1
+ import chalk from "chalk";
2
+ import { createInitialCanonicalLifecycle, createActivitySignal, isOrchestratorSession, isTerminalSession, isWindows, loadConfig, getProjectSessionsDir, readAgentReportAuditTrailAsync, createCodeReviewStore, } from "@made-by-moonlight/athene-core";
3
+ import { git, getTmuxSessions, getTmuxActivity } from "../lib/shell.js";
4
+ import { banner, header, formatAge, activityIcon, ciStatusIcon, reviewDecisionIcon, padCol, } from "../lib/format.js";
5
+ import { getAgentByName, getAgentByNameFromRegistry, getSCMFromRegistry } from "../lib/plugins.js";
6
+ import { getPluginRegistry, getSessionManager } from "../lib/create-session-manager.js";
7
+ const REVIEW_ATTENTION_STATUSES = new Set([
8
+ "queued",
9
+ "preparing",
10
+ "running",
11
+ "needs_triage",
12
+ "sent_to_agent",
13
+ "waiting_update",
14
+ "failed",
15
+ ]);
16
+ /** Parse --reports value: "full" → Infinity, positive integer → N, undefined → 0 (off). */
17
+ function parseReportsLimit(value) {
18
+ if (value === undefined)
19
+ return 0;
20
+ if (value === "full")
21
+ return Infinity;
22
+ const n = Number.parseInt(value, 10);
23
+ if (Number.isNaN(n) || n <= 0) {
24
+ throw new Error('--reports must be "full" or a positive integer.');
25
+ }
26
+ return n;
27
+ }
28
+ const DEFAULT_WATCH_INTERVAL_SECONDS = 5;
29
+ function parseWatchIntervalSeconds(value) {
30
+ if (!value)
31
+ return DEFAULT_WATCH_INTERVAL_SECONDS;
32
+ const parsed = Number.parseInt(value, 10);
33
+ if (Number.isNaN(parsed) || parsed <= 0) {
34
+ throw new Error("--interval must be a positive integer number of seconds.");
35
+ }
36
+ return parsed;
37
+ }
38
+ function maybeClearScreen() {
39
+ if (process.stdout.isTTY) {
40
+ process.stdout.write("\x1Bc");
41
+ }
42
+ }
43
+ function gatherProjectReviewStatus(projectId) {
44
+ const runs = createCodeReviewStore(projectId).listRunSummaries();
45
+ const activeRunCount = runs.filter((run) => REVIEW_ATTENTION_STATUSES.has(run.status) || run.openFindingCount > 0).length;
46
+ const openFindingCount = runs.reduce((sum, run) => sum + run.openFindingCount, 0);
47
+ return {
48
+ projectId,
49
+ runs,
50
+ runCount: runs.length,
51
+ activeRunCount,
52
+ openFindingCount,
53
+ };
54
+ }
55
+ async function gatherSessionInfo(session, registry, scm, projectConfig, reportsLimit = 0) {
56
+ const sessionPrefix = projectConfig.projects[session.projectId]?.sessionPrefix ?? session.projectId;
57
+ const allSessionPrefixes = Object.entries(projectConfig.projects).map(([id, p]) => p.sessionPrefix ?? id);
58
+ const suppressPROwnership = isOrchestratorSession(session, sessionPrefix, allSessionPrefixes);
59
+ let branch = session.branch;
60
+ const status = session.status;
61
+ const summary = session.metadata["summary"] ?? null;
62
+ const prUrl = suppressPROwnership ? null : (session.metadata["pr"] ?? null);
63
+ const issue = session.issueId;
64
+ // Get live branch from worktree if available
65
+ if (session.workspacePath) {
66
+ const liveBranch = await git(["branch", "--show-current"], session.workspacePath);
67
+ if (liveBranch)
68
+ branch = liveBranch;
69
+ }
70
+ // Get last activity time — use enriched session data on Windows (no tmux),
71
+ // fall back to tmux display-message on Unix for backward compat.
72
+ let lastActivity;
73
+ if (isWindows()) {
74
+ lastActivity = session.lastActivityAt ? formatAge(session.lastActivityAt.getTime()) : "-";
75
+ }
76
+ else {
77
+ const tmuxTarget = session.runtimeHandle?.id ?? session.id;
78
+ const activityTs = await getTmuxActivity(tmuxTarget);
79
+ lastActivity = activityTs ? formatAge(activityTs) : "-";
80
+ }
81
+ // Get agent's auto-generated summary via introspection. The SessionManager
82
+ // normalizes session.metadata.agent on read, so never infer the session agent
83
+ // from current project/default config here.
84
+ let claudeSummary = null;
85
+ try {
86
+ const agentName = session.metadata["agent"];
87
+ if (agentName) {
88
+ const agent = getAgentByNameFromRegistry(registry, agentName);
89
+ const introspection = await agent.getSessionInfo(session);
90
+ claudeSummary = introspection?.summary ?? null;
91
+ }
92
+ }
93
+ catch {
94
+ // Summary extraction failed — not critical
95
+ }
96
+ // Use activity from session (already enriched by sessionManager.list())
97
+ const activity = session.activity;
98
+ // Fetch PR, CI, and review data from SCM
99
+ let prNumber = null;
100
+ let ciStatus = null;
101
+ let reviewDecision = null;
102
+ let pendingThreads = null;
103
+ // Extract PR number from metadata URL as fallback
104
+ if (prUrl) {
105
+ const prMatch = /\/pull\/(\d+)/.exec(prUrl);
106
+ if (prMatch) {
107
+ prNumber = parseInt(prMatch[1], 10);
108
+ }
109
+ }
110
+ if (branch && !suppressPROwnership) {
111
+ try {
112
+ const project = projectConfig.projects[session.projectId];
113
+ if (project) {
114
+ const prInfo = await scm.detectPR(session, project);
115
+ if (prInfo) {
116
+ prNumber = prInfo.number;
117
+ const [ci, review, threads] = await Promise.all([
118
+ scm.getCISummary(prInfo).catch(() => null),
119
+ scm.getReviewDecision(prInfo).catch(() => null),
120
+ scm.getPendingComments(prInfo).catch(() => null),
121
+ ]);
122
+ ciStatus = ci;
123
+ reviewDecision = review;
124
+ pendingThreads = threads !== null ? threads.length : null;
125
+ }
126
+ }
127
+ }
128
+ catch {
129
+ // SCM lookup failed — not critical
130
+ }
131
+ }
132
+ // Fetch agent report audit trail when --reports is active
133
+ let reports = [];
134
+ if (reportsLimit > 0) {
135
+ try {
136
+ const project = projectConfig.projects[session.projectId];
137
+ if (project) {
138
+ const sessionsDir = getProjectSessionsDir(session.projectId);
139
+ const trail = await readAgentReportAuditTrailAsync(sessionsDir, session.id);
140
+ // trail is already reverse-chronological (newest first)
141
+ reports = reportsLimit === Infinity ? trail : trail.slice(0, reportsLimit);
142
+ }
143
+ }
144
+ catch {
145
+ // Audit trail read failed — not critical
146
+ }
147
+ }
148
+ return {
149
+ name: session.id,
150
+ role: isOrchestratorSession(session, sessionPrefix, allSessionPrefixes) ? "orchestrator" : "worker",
151
+ branch,
152
+ status,
153
+ summary,
154
+ claudeSummary,
155
+ pr: prUrl,
156
+ prNumber,
157
+ issue,
158
+ lastActivity,
159
+ project: session.projectId,
160
+ ciStatus,
161
+ reviewDecision,
162
+ pendingThreads,
163
+ activity,
164
+ reports,
165
+ };
166
+ }
167
+ function formatReportTime(iso) {
168
+ const d = new Date(iso);
169
+ if (Number.isNaN(d.getTime()))
170
+ return "??:??";
171
+ return d.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", hour12: false });
172
+ }
173
+ function printReportRows(reports, indent) {
174
+ if (reports.length === 0)
175
+ return;
176
+ // reports are newest-first from the audit trail; display oldest-first (chronological)
177
+ const chronological = [...reports].reverse();
178
+ console.log(`${indent}${chalk.dim("Reports:")}`);
179
+ for (const entry of chronological) {
180
+ const time = chalk.dim(formatReportTime(entry.timestamp));
181
+ const src = chalk.dim(entry.source === "acknowledge" ? "ack" : "rpt");
182
+ const state = entry.accepted ? chalk.cyan(entry.reportState) : chalk.red(entry.reportState);
183
+ const transition = entry.before.sessionState === entry.after.sessionState
184
+ ? chalk.dim(`(${entry.after.sessionState})`)
185
+ : chalk.dim(`(${entry.before.sessionState} → ${entry.after.sessionState})`);
186
+ const rejected = entry.accepted ? "" : chalk.red(" REJECTED");
187
+ const note = entry.note ? chalk.dim(` "${entry.note}"`) : "";
188
+ const pr = entry.prNumber ? chalk.blue(` #${entry.prNumber}`) : "";
189
+ console.log(`${indent} ${time} ${src} ${state} ${transition}${rejected}${pr}${note}`);
190
+ }
191
+ }
192
+ // Column widths for the table
193
+ const COL = {
194
+ session: 14,
195
+ branch: 24,
196
+ pr: 6,
197
+ ci: 6,
198
+ review: 6,
199
+ threads: 4,
200
+ activity: 9,
201
+ age: 8,
202
+ };
203
+ function printTableHeader() {
204
+ const hdr = padCol("Session", COL.session) +
205
+ padCol("Branch", COL.branch) +
206
+ padCol("PR", COL.pr) +
207
+ padCol("CI", COL.ci) +
208
+ padCol("Rev", COL.review) +
209
+ padCol("Thr", COL.threads) +
210
+ padCol("Activity", COL.activity) +
211
+ "Age";
212
+ console.log(chalk.dim(` ${hdr}`));
213
+ const totalWidth = COL.session + COL.branch + COL.pr + COL.ci + COL.review + COL.threads + COL.activity + 3;
214
+ console.log(chalk.dim(` ${"─".repeat(totalWidth)}`));
215
+ }
216
+ function printSessionRow(info) {
217
+ const prStr = info.prNumber ? `#${info.prNumber}` : "-";
218
+ const row = padCol(chalk.green(info.name), COL.session) +
219
+ padCol(info.branch ? chalk.cyan(info.branch) : chalk.dim("-"), COL.branch) +
220
+ padCol(info.prNumber ? chalk.blue(prStr) : chalk.dim(prStr), COL.pr) +
221
+ padCol(ciStatusIcon(info.ciStatus), COL.ci) +
222
+ padCol(reviewDecisionIcon(info.reviewDecision), COL.review) +
223
+ padCol(info.pendingThreads !== null && info.pendingThreads > 0
224
+ ? chalk.yellow(String(info.pendingThreads))
225
+ : chalk.dim(info.pendingThreads !== null ? "0" : "-"), COL.threads) +
226
+ padCol(activityIcon(info.activity), COL.activity) +
227
+ chalk.dim(info.lastActivity);
228
+ console.log(` ${row}`);
229
+ // Show summary on a second line if available
230
+ const displaySummary = info.claudeSummary || info.summary;
231
+ if (displaySummary) {
232
+ console.log(` ${" ".repeat(COL.session)}${chalk.dim(displaySummary.slice(0, 60))}`);
233
+ }
234
+ printReportRows(info.reports, ` ${" ".repeat(COL.session)}`);
235
+ }
236
+ function printOrchestratorRow(info) {
237
+ const lastActivity = info.lastActivity === "-" ? chalk.dim("unknown") : chalk.dim(info.lastActivity);
238
+ console.log(` ${chalk.magenta("Orchestrator:")} ${chalk.green(info.name)} ${chalk.dim("(")}${lastActivity}${chalk.dim(")")}`);
239
+ const displaySummary = info.claudeSummary || info.summary;
240
+ if (displaySummary) {
241
+ console.log(` ${chalk.dim(displaySummary.slice(0, 60))}`);
242
+ }
243
+ printReportRows(info.reports, " ");
244
+ }
245
+ function printReviewStatus(summary) {
246
+ if (summary.runCount === 0)
247
+ return;
248
+ const findings = summary.openFindingCount === 1
249
+ ? "1 open finding"
250
+ : `${summary.openFindingCount} open findings`;
251
+ const active = summary.activeRunCount === 1 ? "1 active" : `${summary.activeRunCount} active`;
252
+ console.log(` ${chalk.magenta("Reviews:")} ${summary.runCount} run${summary.runCount !== 1 ? "s" : ""} · ${active} · ${findings}`);
253
+ const visibleRuns = summary.runs
254
+ .filter((run) => REVIEW_ATTENTION_STATUSES.has(run.status) || run.openFindingCount > 0)
255
+ .slice(0, 5);
256
+ for (const run of visibleRuns) {
257
+ const findingText = run.openFindingCount === 1
258
+ ? "1 open finding"
259
+ : `${run.openFindingCount} open findings`;
260
+ console.log(` ${chalk.green(run.reviewerSessionId)} ${chalk.dim(run.status)} → ${chalk.cyan(run.linkedSessionId)} ${chalk.dim(findingText)}`);
261
+ }
262
+ const hiddenCount = summary.runs.length - visibleRuns.length;
263
+ if (hiddenCount > 0) {
264
+ console.log(chalk.dim(` ${hiddenCount} more review run${hiddenCount !== 1 ? "s" : ""}. Use \`athene review list ${summary.projectId}\`.`));
265
+ }
266
+ }
267
+ export function registerStatus(program) {
268
+ program
269
+ .command("status")
270
+ .description("Show all sessions with branch, activity, PR, and CI status")
271
+ .option("-p, --project <id>", "Filter by project ID")
272
+ .option("--json", "Output as JSON")
273
+ .option("-w, --watch", "Refresh the status view continuously")
274
+ .option("--interval <seconds>", "Refresh interval in seconds (default: 5)")
275
+ .option("--include-terminated", "Include terminated sessions (killed/done/merged/terminated/errored/cleanup)")
276
+ .option("--reports <value>", 'Show agent report history per session. "full" for all entries, or a number for last N entries.')
277
+ .action(async (opts) => {
278
+ if (opts.watch && opts.json) {
279
+ console.error(chalk.red("--watch cannot be used with --json."));
280
+ process.exit(1);
281
+ }
282
+ let watchIntervalSeconds = DEFAULT_WATCH_INTERVAL_SECONDS;
283
+ if (opts.watch) {
284
+ try {
285
+ watchIntervalSeconds = parseWatchIntervalSeconds(opts.interval);
286
+ }
287
+ catch (err) {
288
+ console.error(chalk.red(err instanceof Error ? err.message : String(err)));
289
+ process.exit(1);
290
+ }
291
+ }
292
+ let reportsLimit = 0;
293
+ try {
294
+ reportsLimit = parseReportsLimit(opts.reports);
295
+ }
296
+ catch (err) {
297
+ console.error(chalk.red(err instanceof Error ? err.message : String(err)));
298
+ process.exit(1);
299
+ }
300
+ const renderStatus = async (refreshing = false) => {
301
+ if (refreshing) {
302
+ maybeClearScreen();
303
+ }
304
+ let config;
305
+ try {
306
+ config = loadConfig();
307
+ }
308
+ catch {
309
+ console.log(chalk.yellow("No config found. Run `athene start` first."));
310
+ console.log(chalk.dim("Falling back to session discovery...\n"));
311
+ await showFallbackStatus();
312
+ return;
313
+ }
314
+ if (opts.project && !config.projects[opts.project]) {
315
+ console.error(chalk.red(`Unknown project: ${opts.project}`));
316
+ process.exit(1);
317
+ }
318
+ // Use session manager to list sessions (metadata-based, not tmux-based)
319
+ const sm = await getSessionManager(config);
320
+ const registry = await getPluginRegistry(config);
321
+ const allSessions = await sm.list(opts.project);
322
+ // Count terminal sessions that would be hidden by default, then drop
323
+ // them unless --include-terminated is passed. Recomputed each render
324
+ // so --watch reflects transitions to terminal state live.
325
+ const hiddenTerminatedCount = opts.includeTerminated
326
+ ? 0
327
+ : allSessions.filter(isTerminalSession).length;
328
+ const sessions = opts.includeTerminated
329
+ ? allSessions
330
+ : allSessions.filter((s) => !isTerminalSession(s));
331
+ if (!opts.json) {
332
+ console.log(banner("ATHENE STATUS"));
333
+ if (opts.watch) {
334
+ console.log(chalk.dim(`Refreshing every ${watchIntervalSeconds}s. Press Ctrl+C to exit.`));
335
+ console.log();
336
+ }
337
+ else {
338
+ console.log();
339
+ }
340
+ }
341
+ // Group sessions by project
342
+ const byProject = new Map();
343
+ for (const s of sessions) {
344
+ const list = byProject.get(s.projectId) ?? [];
345
+ list.push(s);
346
+ byProject.set(s.projectId, list);
347
+ }
348
+ // Show projects that have no sessions too (if not filtered)
349
+ const projectIds = opts.project ? [opts.project] : Object.keys(config.projects);
350
+ const jsonOutput = [];
351
+ const reviewOutput = [];
352
+ let totalWorkers = 0;
353
+ let totalOrchestrators = 0;
354
+ let totalReviewRuns = 0;
355
+ let totalActiveReviewRuns = 0;
356
+ let totalOpenReviewFindings = 0;
357
+ for (const projectId of projectIds) {
358
+ const projectConfig = config.projects[projectId];
359
+ if (!projectConfig)
360
+ continue;
361
+ const projectSessions = (byProject.get(projectId) ?? []).sort((a, b) => a.id.localeCompare(b.id));
362
+ const reviewStatus = gatherProjectReviewStatus(projectId);
363
+ reviewOutput.push(...reviewStatus.runs);
364
+ totalReviewRuns += reviewStatus.runCount;
365
+ totalActiveReviewRuns += reviewStatus.activeRunCount;
366
+ totalOpenReviewFindings += reviewStatus.openFindingCount;
367
+ // Resolve SCM for this project via the shared registry. Agents are
368
+ // resolved per session because historical metadata may record a
369
+ // different agent than the current project default.
370
+ const scm = getSCMFromRegistry(registry, config, projectId);
371
+ if (!opts.json) {
372
+ console.log(header(projectConfig.name || projectId));
373
+ }
374
+ if (projectSessions.length === 0) {
375
+ if (!opts.json) {
376
+ console.log(chalk.dim(" (no active sessions)"));
377
+ printReviewStatus(reviewStatus);
378
+ console.log();
379
+ }
380
+ continue;
381
+ }
382
+ // Gather all session info in parallel
383
+ const infoPromises = projectSessions.map((s) => gatherSessionInfo(s, registry, scm, config, reportsLimit));
384
+ const sessionInfos = await Promise.all(infoPromises);
385
+ const orchestrators = sessionInfos.filter((info) => info.role === "orchestrator");
386
+ const workers = sessionInfos.filter((info) => info.role === "worker");
387
+ totalWorkers += workers.length;
388
+ totalOrchestrators += orchestrators.length;
389
+ for (const info of sessionInfos) {
390
+ if (opts.json) {
391
+ jsonOutput.push(info);
392
+ }
393
+ }
394
+ if (opts.json) {
395
+ continue;
396
+ }
397
+ if (orchestrators.length > 0) {
398
+ for (const info of orchestrators) {
399
+ printOrchestratorRow(info);
400
+ }
401
+ }
402
+ if (workers.length === 0) {
403
+ console.log(chalk.dim(" (no active sessions)"));
404
+ printReviewStatus(reviewStatus);
405
+ console.log();
406
+ continue;
407
+ }
408
+ printTableHeader();
409
+ for (const info of workers) {
410
+ printSessionRow(info);
411
+ }
412
+ printReviewStatus(reviewStatus);
413
+ console.log();
414
+ }
415
+ if (opts.json) {
416
+ console.log(JSON.stringify({
417
+ data: jsonOutput,
418
+ reviews: reviewOutput,
419
+ meta: {
420
+ hiddenTerminatedCount,
421
+ reviewRunCount: totalReviewRuns,
422
+ activeReviewRunCount: totalActiveReviewRuns,
423
+ openReviewFindingCount: totalOpenReviewFindings,
424
+ },
425
+ }, null, 2));
426
+ }
427
+ else {
428
+ console.log(chalk.dim(` ${totalWorkers} active session${totalWorkers !== 1 ? "s" : ""} across ${projectIds.length} project${projectIds.length !== 1 ? "s" : ""}` +
429
+ (totalOrchestrators > 0
430
+ ? ` · ${totalOrchestrators} orchestrator${totalOrchestrators !== 1 ? "s" : ""}`
431
+ : "") +
432
+ (totalReviewRuns > 0
433
+ ? ` · ${totalReviewRuns} review run${totalReviewRuns !== 1 ? "s" : ""}` +
434
+ (totalOpenReviewFindings > 0
435
+ ? ` · ${totalOpenReviewFindings} open finding${totalOpenReviewFindings !== 1 ? "s" : ""}`
436
+ : "")
437
+ : "")));
438
+ if (hiddenTerminatedCount > 0) {
439
+ console.log(chalk.dim(` ${hiddenTerminatedCount} terminated session${hiddenTerminatedCount !== 1 ? "s" : ""} hidden. Use --include-terminated to show.`));
440
+ }
441
+ // Check for issues awaiting verification across all projects
442
+ try {
443
+ let unverifiedTotal = 0;
444
+ for (const projectId of projectIds) {
445
+ const project = config.projects[projectId];
446
+ if (!project?.tracker?.plugin)
447
+ continue;
448
+ const tracker = registry.get("tracker", project.tracker.plugin);
449
+ if (!tracker?.listIssues)
450
+ continue;
451
+ try {
452
+ const issues = await tracker.listIssues({ state: "open", labels: ["merged-unverified"], limit: 20 }, project);
453
+ unverifiedTotal += issues.length;
454
+ }
455
+ catch {
456
+ // Tracker query failed — not critical
457
+ }
458
+ }
459
+ if (unverifiedTotal > 0) {
460
+ console.log(chalk.yellow(` ⚠ ${unverifiedTotal} issue${unverifiedTotal !== 1 ? "s" : ""} awaiting verification (use \`athene verify --list\` to see them)`));
461
+ }
462
+ }
463
+ catch {
464
+ // Plugin registry or tracker unavailable — skip silently
465
+ }
466
+ console.log();
467
+ }
468
+ };
469
+ await renderStatus();
470
+ if (!opts.watch) {
471
+ return;
472
+ }
473
+ let rendering = false;
474
+ const watchTimer = setInterval(() => {
475
+ if (rendering)
476
+ return;
477
+ rendering = true;
478
+ void renderStatus(true)
479
+ .catch((err) => {
480
+ console.error(chalk.red(`Watch refresh failed: ${err instanceof Error ? err.message : String(err)}`));
481
+ })
482
+ .finally(() => {
483
+ rendering = false;
484
+ });
485
+ }, watchIntervalSeconds * 1000);
486
+ const shutdown = () => {
487
+ clearInterval(watchTimer);
488
+ process.exit(0);
489
+ };
490
+ process.once("SIGINT", shutdown);
491
+ process.once("SIGTERM", shutdown);
492
+ });
493
+ }
494
+ async function showFallbackStatus() {
495
+ if (isWindows()) {
496
+ console.log(chalk.dim("No agent-orchestrator config found. Run `athene start` first."));
497
+ return;
498
+ }
499
+ const allTmux = await getTmuxSessions();
500
+ if (allTmux.length === 0) {
501
+ console.log(chalk.dim("No tmux sessions found."));
502
+ return;
503
+ }
504
+ console.log(banner("ATHENE STATUS"));
505
+ console.log();
506
+ console.log(chalk.dim(` ${allTmux.length} tmux session${allTmux.length !== 1 ? "s" : ""} found\n`));
507
+ // Use claude-code as default agent for fallback introspection
508
+ const agent = getAgentByName("claude-code");
509
+ const sortedSessions = allTmux.sort();
510
+ // Pre-fetch activity and introspection in parallel
511
+ const details = await Promise.all(sortedSessions.map(async (session) => {
512
+ const activityTsPromise = getTmuxActivity(session).catch(() => null);
513
+ const lifecycle = createInitialCanonicalLifecycle("worker", new Date());
514
+ lifecycle.session.state = "working";
515
+ lifecycle.session.reason = "task_in_progress";
516
+ lifecycle.session.startedAt = lifecycle.session.lastTransitionAt;
517
+ lifecycle.runtime.state = "alive";
518
+ lifecycle.runtime.reason = "process_running";
519
+ lifecycle.runtime.handle = { id: session, runtimeName: "tmux", data: {} };
520
+ const sessionObj = {
521
+ id: session,
522
+ projectId: "",
523
+ status: "working",
524
+ activity: null,
525
+ activitySignal: createActivitySignal("unavailable"),
526
+ lifecycle,
527
+ branch: null,
528
+ issueId: null,
529
+ pr: null,
530
+ prs: [],
531
+ workspacePath: null,
532
+ runtimeHandle: lifecycle.runtime.handle,
533
+ agentInfo: null,
534
+ createdAt: new Date(),
535
+ lastActivityAt: new Date(),
536
+ metadata: {},
537
+ };
538
+ const introspectionPromise = agent.getSessionInfo(sessionObj).catch(() => null);
539
+ const [activityTs, introspection] = await Promise.all([
540
+ activityTsPromise,
541
+ introspectionPromise,
542
+ ]);
543
+ return { activityTs, introspection };
544
+ }));
545
+ for (let i = 0; i < sortedSessions.length; i++) {
546
+ const session = sortedSessions[i];
547
+ const { activityTs, introspection } = details[i];
548
+ const lastActivity = activityTs ? formatAge(activityTs) : "-";
549
+ console.log(` ${chalk.green(session)} ${chalk.dim(`(${lastActivity})`)}`);
550
+ if (introspection?.summary) {
551
+ console.log(` ${chalk.dim("Claude:")} ${introspection.summary.slice(0, 65)}`);
552
+ }
553
+ }
554
+ console.log();
555
+ }
556
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Command } from "commander";
2
+ /**
3
+ * The dashboard's POST /api/update spawns `athene update` with `stdio: "ignore"`,
4
+ * which makes `isTTY()` return false. That used to be fatal: handleNpmUpdate
5
+ * fell into the "non-interactive — print and return" branch and never invoked
6
+ * the install. The route would respond 202 "started" and absolutely nothing
7
+ * would happen.
8
+ *
9
+ * /api/update sets `AO_NON_INTERACTIVE_INSTALL=1` on the spawn env so we can
10
+ * distinguish "API kicked this off, please install without prompting" from
11
+ * "user piped output and we shouldn't surprise-install."
12
+ */
13
+ export declare const NON_INTERACTIVE_INSTALL_ENV = "AO_NON_INTERACTIVE_INSTALL";
14
+ export declare function registerUpdate(program: Command): void;
15
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AAmBxE,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgErD"}