@cluesmith/codev 2.0.2 → 2.0.6

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 (312) hide show
  1. package/dashboard/dist/assets/index-B-s8BA2l.js +135 -0
  2. package/dashboard/dist/assets/index-B-s8BA2l.js.map +1 -0
  3. package/dashboard/dist/assets/index-DB2AxRP7.css +32 -0
  4. package/dashboard/dist/index.html +2 -2
  5. package/dist/agent-farm/cli.d.ts.map +1 -1
  6. package/dist/agent-farm/cli.js +32 -14
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/architect.d.ts +1 -1
  9. package/dist/agent-farm/commands/architect.js +3 -3
  10. package/dist/agent-farm/commands/architect.js.map +1 -1
  11. package/dist/agent-farm/commands/attach.d.ts +19 -0
  12. package/dist/agent-farm/commands/attach.d.ts.map +1 -1
  13. package/dist/agent-farm/commands/attach.js +172 -12
  14. package/dist/agent-farm/commands/attach.js.map +1 -1
  15. package/dist/agent-farm/commands/cleanup.js +6 -6
  16. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  17. package/dist/agent-farm/commands/open.js +5 -5
  18. package/dist/agent-farm/commands/open.js.map +1 -1
  19. package/dist/agent-farm/commands/send.d.ts +22 -2
  20. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  21. package/dist/agent-farm/commands/send.js +100 -181
  22. package/dist/agent-farm/commands/send.js.map +1 -1
  23. package/dist/agent-farm/commands/shell.js +5 -5
  24. package/dist/agent-farm/commands/shell.js.map +1 -1
  25. package/dist/agent-farm/commands/spawn-roles.d.ts +3 -9
  26. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
  27. package/dist/agent-farm/commands/spawn-roles.js +14 -53
  28. package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
  29. package/dist/agent-farm/commands/spawn-worktree.d.ts +11 -17
  30. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  31. package/dist/agent-farm/commands/spawn-worktree.js +32 -13
  32. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  33. package/dist/agent-farm/commands/spawn.d.ts +8 -6
  34. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  35. package/dist/agent-farm/commands/spawn.js +183 -69
  36. package/dist/agent-farm/commands/spawn.js.map +1 -1
  37. package/dist/agent-farm/commands/start.d.ts +4 -4
  38. package/dist/agent-farm/commands/start.js +16 -16
  39. package/dist/agent-farm/commands/start.js.map +1 -1
  40. package/dist/agent-farm/commands/status.d.ts +1 -1
  41. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  42. package/dist/agent-farm/commands/status.js +15 -26
  43. package/dist/agent-farm/commands/status.js.map +1 -1
  44. package/dist/agent-farm/commands/stop.d.ts +4 -4
  45. package/dist/agent-farm/commands/stop.js +9 -9
  46. package/dist/agent-farm/commands/stop.js.map +1 -1
  47. package/dist/agent-farm/db/index.d.ts.map +1 -1
  48. package/dist/agent-farm/db/index.js +82 -7
  49. package/dist/agent-farm/db/index.js.map +1 -1
  50. package/dist/agent-farm/db/schema.d.ts +2 -2
  51. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  52. package/dist/agent-farm/db/schema.js +21 -4
  53. package/dist/agent-farm/db/schema.js.map +1 -1
  54. package/dist/agent-farm/lib/tower-client.d.ts +36 -26
  55. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  56. package/dist/agent-farm/lib/tower-client.js +50 -25
  57. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  58. package/dist/agent-farm/lib/tunnel-client.d.ts +12 -2
  59. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
  60. package/dist/agent-farm/lib/tunnel-client.js +59 -1
  61. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  62. package/dist/agent-farm/servers/overview.d.ts +111 -0
  63. package/dist/agent-farm/servers/overview.d.ts.map +1 -0
  64. package/dist/agent-farm/servers/overview.js +385 -0
  65. package/dist/agent-farm/servers/overview.js.map +1 -0
  66. package/dist/agent-farm/servers/tower-instances.d.ts +18 -20
  67. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  68. package/dist/agent-farm/servers/tower-instances.js +97 -100
  69. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  70. package/dist/agent-farm/servers/tower-messages.d.ts +87 -0
  71. package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -0
  72. package/dist/agent-farm/servers/tower-messages.js +202 -0
  73. package/dist/agent-farm/servers/tower-messages.js.map +1 -0
  74. package/dist/agent-farm/servers/tower-routes.d.ts +1 -1
  75. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  76. package/dist/agent-farm/servers/tower-routes.js +343 -174
  77. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  78. package/dist/agent-farm/servers/tower-server.js +50 -21
  79. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  80. package/dist/agent-farm/servers/tower-terminals.d.ts +35 -31
  81. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  82. package/dist/agent-farm/servers/tower-terminals.js +208 -184
  83. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  84. package/dist/agent-farm/servers/tower-tunnel.d.ts +2 -2
  85. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  86. package/dist/agent-farm/servers/tower-tunnel.js +12 -12
  87. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  88. package/dist/agent-farm/servers/tower-types.d.ts +8 -12
  89. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  90. package/dist/agent-farm/servers/tower-utils.d.ts +9 -9
  91. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  92. package/dist/agent-farm/servers/tower-utils.js +18 -18
  93. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  94. package/dist/agent-farm/servers/tower-websocket.d.ts +2 -2
  95. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  96. package/dist/agent-farm/servers/tower-websocket.js +39 -18
  97. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  98. package/dist/agent-farm/types.d.ts +5 -6
  99. package/dist/agent-farm/types.d.ts.map +1 -1
  100. package/dist/agent-farm/utils/agent-names.d.ts +85 -0
  101. package/dist/agent-farm/utils/agent-names.d.ts.map +1 -0
  102. package/dist/agent-farm/utils/agent-names.js +140 -0
  103. package/dist/agent-farm/utils/agent-names.js.map +1 -0
  104. package/dist/agent-farm/utils/config.d.ts +1 -1
  105. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  106. package/dist/agent-farm/utils/config.js +16 -16
  107. package/dist/agent-farm/utils/config.js.map +1 -1
  108. package/dist/agent-farm/utils/file-tabs.d.ts +3 -3
  109. package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -1
  110. package/dist/agent-farm/utils/file-tabs.js +9 -9
  111. package/dist/agent-farm/utils/file-tabs.js.map +1 -1
  112. package/dist/agent-farm/utils/index.d.ts +0 -1
  113. package/dist/agent-farm/utils/index.d.ts.map +1 -1
  114. package/dist/agent-farm/utils/index.js +0 -1
  115. package/dist/agent-farm/utils/index.js.map +1 -1
  116. package/dist/agent-farm/utils/message-format.d.ts +17 -0
  117. package/dist/agent-farm/utils/message-format.d.ts.map +1 -0
  118. package/dist/agent-farm/utils/message-format.js +41 -0
  119. package/dist/agent-farm/utils/message-format.js.map +1 -0
  120. package/dist/agent-farm/utils/notifications.d.ts +4 -4
  121. package/dist/agent-farm/utils/notifications.d.ts.map +1 -1
  122. package/dist/agent-farm/utils/notifications.js +18 -18
  123. package/dist/agent-farm/utils/notifications.js.map +1 -1
  124. package/dist/cli.d.ts.map +1 -1
  125. package/dist/cli.js +26 -1
  126. package/dist/cli.js.map +1 -1
  127. package/dist/commands/adopt.d.ts +2 -2
  128. package/dist/commands/adopt.d.ts.map +1 -1
  129. package/dist/commands/adopt.js +13 -15
  130. package/dist/commands/adopt.js.map +1 -1
  131. package/dist/commands/consult/index.d.ts +26 -2
  132. package/dist/commands/consult/index.d.ts.map +1 -1
  133. package/dist/commands/consult/index.js +296 -83
  134. package/dist/commands/consult/index.js.map +1 -1
  135. package/dist/commands/consult/metrics.d.ts +90 -0
  136. package/dist/commands/consult/metrics.d.ts.map +1 -0
  137. package/dist/commands/consult/metrics.js +203 -0
  138. package/dist/commands/consult/metrics.js.map +1 -0
  139. package/dist/commands/consult/stats.d.ts +18 -0
  140. package/dist/commands/consult/stats.d.ts.map +1 -0
  141. package/dist/commands/consult/stats.js +150 -0
  142. package/dist/commands/consult/stats.js.map +1 -0
  143. package/dist/commands/consult/usage-extractor.d.ts +38 -0
  144. package/dist/commands/consult/usage-extractor.d.ts.map +1 -0
  145. package/dist/commands/consult/usage-extractor.js +99 -0
  146. package/dist/commands/consult/usage-extractor.js.map +1 -0
  147. package/dist/commands/doctor.d.ts.map +1 -1
  148. package/dist/commands/doctor.js +11 -9
  149. package/dist/commands/doctor.js.map +1 -1
  150. package/dist/commands/import.js +4 -4
  151. package/dist/commands/import.js.map +1 -1
  152. package/dist/commands/init.d.ts +2 -2
  153. package/dist/commands/init.d.ts.map +1 -1
  154. package/dist/commands/init.js +13 -15
  155. package/dist/commands/init.js.map +1 -1
  156. package/dist/commands/porch/index.d.ts +6 -6
  157. package/dist/commands/porch/index.d.ts.map +1 -1
  158. package/dist/commands/porch/index.js +37 -37
  159. package/dist/commands/porch/index.js.map +1 -1
  160. package/dist/commands/porch/next.d.ts +1 -1
  161. package/dist/commands/porch/next.d.ts.map +1 -1
  162. package/dist/commands/porch/next.js +86 -92
  163. package/dist/commands/porch/next.js.map +1 -1
  164. package/dist/commands/porch/notify.d.ts +11 -0
  165. package/dist/commands/porch/notify.d.ts.map +1 -0
  166. package/dist/commands/porch/notify.js +30 -0
  167. package/dist/commands/porch/notify.js.map +1 -0
  168. package/dist/commands/porch/plan.d.ts +1 -1
  169. package/dist/commands/porch/plan.d.ts.map +1 -1
  170. package/dist/commands/porch/plan.js +3 -3
  171. package/dist/commands/porch/plan.js.map +1 -1
  172. package/dist/commands/porch/prompts.d.ts +10 -1
  173. package/dist/commands/porch/prompts.d.ts.map +1 -1
  174. package/dist/commands/porch/prompts.js +59 -35
  175. package/dist/commands/porch/prompts.js.map +1 -1
  176. package/dist/commands/porch/protocol.d.ts +1 -1
  177. package/dist/commands/porch/protocol.d.ts.map +1 -1
  178. package/dist/commands/porch/protocol.js +8 -8
  179. package/dist/commands/porch/protocol.js.map +1 -1
  180. package/dist/commands/porch/state.d.ts +6 -6
  181. package/dist/commands/porch/state.d.ts.map +1 -1
  182. package/dist/commands/porch/state.js +14 -12
  183. package/dist/commands/porch/state.js.map +1 -1
  184. package/dist/commands/update.d.ts.map +1 -1
  185. package/dist/commands/update.js +10 -11
  186. package/dist/commands/update.js.map +1 -1
  187. package/dist/lib/github.d.ts +81 -0
  188. package/dist/lib/github.d.ts.map +1 -0
  189. package/dist/lib/github.js +141 -0
  190. package/dist/lib/github.js.map +1 -0
  191. package/dist/lib/scaffold.d.ts +13 -21
  192. package/dist/lib/scaffold.d.ts.map +1 -1
  193. package/dist/lib/scaffold.js +34 -57
  194. package/dist/lib/scaffold.js.map +1 -1
  195. package/dist/lib/skeleton.d.ts +7 -7
  196. package/dist/lib/skeleton.d.ts.map +1 -1
  197. package/dist/lib/skeleton.js +10 -10
  198. package/dist/lib/skeleton.js.map +1 -1
  199. package/dist/terminal/index.d.ts +14 -0
  200. package/dist/terminal/index.d.ts.map +1 -1
  201. package/dist/terminal/index.js +12 -0
  202. package/dist/terminal/index.js.map +1 -1
  203. package/dist/terminal/pty-manager.d.ts +1 -1
  204. package/dist/terminal/pty-manager.d.ts.map +1 -1
  205. package/dist/terminal/pty-manager.js +10 -7
  206. package/dist/terminal/pty-manager.js.map +1 -1
  207. package/dist/terminal/pty-session.js +3 -3
  208. package/dist/terminal/pty-session.js.map +1 -1
  209. package/dist/terminal/session-manager.d.ts +64 -0
  210. package/dist/terminal/session-manager.d.ts.map +1 -1
  211. package/dist/terminal/session-manager.js +299 -10
  212. package/dist/terminal/session-manager.js.map +1 -1
  213. package/dist/terminal/shellper-client.d.ts +2 -1
  214. package/dist/terminal/shellper-client.d.ts.map +1 -1
  215. package/dist/terminal/shellper-client.js +4 -2
  216. package/dist/terminal/shellper-client.js.map +1 -1
  217. package/dist/terminal/shellper-main.js +33 -4
  218. package/dist/terminal/shellper-main.js.map +1 -1
  219. package/dist/terminal/shellper-process.d.ts +24 -7
  220. package/dist/terminal/shellper-process.d.ts.map +1 -1
  221. package/dist/terminal/shellper-process.js +139 -36
  222. package/dist/terminal/shellper-process.js.map +1 -1
  223. package/dist/terminal/shellper-protocol.d.ts +1 -0
  224. package/dist/terminal/shellper-protocol.d.ts.map +1 -1
  225. package/dist/terminal/shellper-protocol.js.map +1 -1
  226. package/package.json +4 -1
  227. package/skeleton/.claude/skills/af/SKILL.md +7 -7
  228. package/skeleton/.claude/skills/consult/SKILL.md +1 -1
  229. package/skeleton/builders.md +2 -2
  230. package/skeleton/maintain/.gitkeep +1 -1
  231. package/skeleton/porch/prompts/specify.md +1 -1
  232. package/skeleton/protocols/bugfix/prompts/pr.md +15 -4
  233. package/skeleton/protocols/experiment/protocol.md +17 -17
  234. package/skeleton/protocols/maintain/prompts/audit.md +2 -2
  235. package/skeleton/protocols/maintain/prompts/sync.md +1 -1
  236. package/skeleton/protocols/maintain/prompts/verify.md +1 -1
  237. package/skeleton/protocols/maintain/protocol.md +8 -9
  238. package/skeleton/protocols/maintain/templates/maintenance-run.md +2 -2
  239. package/skeleton/protocols/spir/protocol.json +5 -5
  240. package/skeleton/protocols/spir/protocol.md +8 -8
  241. package/skeleton/protocols/tick/protocol.md +31 -31
  242. package/skeleton/resources/commands/agent-farm.md +14 -14
  243. package/skeleton/resources/commands/codev.md +0 -1
  244. package/skeleton/resources/commands/consult.md +3 -3
  245. package/skeleton/resources/spikes.md +3 -3
  246. package/skeleton/resources/workflow-reference.md +14 -14
  247. package/skeleton/roles/architect.md +25 -25
  248. package/skeleton/roles/builder.md +1 -1
  249. package/skeleton/roles/consultant.md +6 -0
  250. package/skeleton/templates/AGENTS.md +5 -5
  251. package/skeleton/templates/CLAUDE.md +5 -5
  252. package/skeleton/templates/lifecycle.md +9 -9
  253. package/templates/open.html +19 -16
  254. package/templates/tower.html +54 -94
  255. package/templates/vendor/marked.min.js +6 -0
  256. package/templates/vendor/prism-bash.min.js +1 -0
  257. package/templates/vendor/prism-css.min.js +1 -0
  258. package/templates/vendor/prism-javascript.min.js +1 -0
  259. package/templates/vendor/prism-json.min.js +1 -0
  260. package/templates/vendor/prism-markdown.min.js +1 -0
  261. package/templates/vendor/prism-markup.min.js +1 -0
  262. package/templates/vendor/prism-python.min.js +1 -0
  263. package/templates/vendor/prism-tomorrow.min.css +1 -0
  264. package/templates/vendor/prism-typescript.min.js +1 -0
  265. package/templates/vendor/prism-yaml.min.js +1 -0
  266. package/templates/vendor/prism.min.js +1 -0
  267. package/templates/vendor/purify.min.js +3 -0
  268. package/dashboard/dist/assets/index-4n9zpWLY.css +0 -32
  269. package/dashboard/dist/assets/index-b38SaXk5.js +0 -136
  270. package/dashboard/dist/assets/index-b38SaXk5.js.map +0 -1
  271. package/dist/agent-farm/hq-connector.d.ts +0 -19
  272. package/dist/agent-farm/hq-connector.d.ts.map +0 -1
  273. package/dist/agent-farm/hq-connector.js +0 -351
  274. package/dist/agent-farm/hq-connector.js.map +0 -1
  275. package/dist/agent-farm/utils/deps.d.ts +0 -51
  276. package/dist/agent-farm/utils/deps.d.ts.map +0 -1
  277. package/dist/agent-farm/utils/deps.js +0 -162
  278. package/dist/agent-farm/utils/deps.js.map +0 -1
  279. package/dist/agent-farm/utils/gate-status.d.ts +0 -16
  280. package/dist/agent-farm/utils/gate-status.d.ts.map +0 -1
  281. package/dist/agent-farm/utils/gate-status.js +0 -79
  282. package/dist/agent-farm/utils/gate-status.js.map +0 -1
  283. package/dist/agent-farm/utils/gate-watcher.d.ts +0 -38
  284. package/dist/agent-farm/utils/gate-watcher.d.ts.map +0 -1
  285. package/dist/agent-farm/utils/gate-watcher.js +0 -122
  286. package/dist/agent-farm/utils/gate-watcher.js.map +0 -1
  287. package/dist/agent-farm/utils/session.d.ts +0 -32
  288. package/dist/agent-farm/utils/session.d.ts.map +0 -1
  289. package/dist/agent-farm/utils/session.js +0 -57
  290. package/dist/agent-farm/utils/session.js.map +0 -1
  291. package/dist/lib/projectlist-parser.d.ts +0 -70
  292. package/dist/lib/projectlist-parser.d.ts.map +0 -1
  293. package/dist/lib/projectlist-parser.js +0 -200
  294. package/dist/lib/projectlist-parser.js.map +0 -1
  295. package/skeleton/templates/projectlist-archive.md +0 -21
  296. package/skeleton/templates/projectlist.md +0 -147
  297. package/templates/dashboard/css/dialogs.css +0 -149
  298. package/templates/dashboard/css/files.css +0 -558
  299. package/templates/dashboard/css/layout.css +0 -133
  300. package/templates/dashboard/css/projects.css +0 -501
  301. package/templates/dashboard/css/statusbar.css +0 -23
  302. package/templates/dashboard/css/tabs.css +0 -314
  303. package/templates/dashboard/css/utilities.css +0 -50
  304. package/templates/dashboard/css/variables.css +0 -45
  305. package/templates/dashboard/index.html +0 -149
  306. package/templates/dashboard/js/dialogs.js +0 -368
  307. package/templates/dashboard/js/files.js +0 -448
  308. package/templates/dashboard/js/main.js +0 -476
  309. package/templates/dashboard/js/projects.js +0 -544
  310. package/templates/dashboard/js/state.js +0 -91
  311. package/templates/dashboard/js/tabs.js +0 -518
  312. package/templates/dashboard/js/utils.js +0 -191
@@ -0,0 +1,385 @@
1
+ /**
2
+ * Overview endpoint for Tower dashboard Work view.
3
+ * Spec 0126: Project Management Rework — Phase 4
4
+ *
5
+ * Aggregates builder state, cached PR list, and cached issue backlog
6
+ * into a single JSON response for the dashboard. Supports degraded
7
+ * mode when the `gh` CLI is unavailable.
8
+ */
9
+ import fs from 'node:fs';
10
+ import path from 'node:path';
11
+ import { fetchPRList, fetchIssueList, parseLinkedIssue, parseLabelDefaults, } from '../../lib/github.js';
12
+ /**
13
+ * Parse a porch status.yaml file into structured data.
14
+ * Uses line-based parsing (same pattern as gate-status.ts).
15
+ */
16
+ export function parseStatusYaml(content) {
17
+ const result = {
18
+ id: '',
19
+ title: '',
20
+ protocol: '',
21
+ phase: '',
22
+ currentPlanPhase: '',
23
+ gates: {},
24
+ };
25
+ const lines = content.split('\n');
26
+ let inGates = false;
27
+ let currentGate = '';
28
+ for (const line of lines) {
29
+ // Top-level scalar fields
30
+ const idMatch = line.match(/^id:\s*'?(\S+?)'?\s*$/);
31
+ if (idMatch) {
32
+ result.id = idMatch[1];
33
+ continue;
34
+ }
35
+ const titleMatch = line.match(/^title:\s*(\S.*?)\s*$/);
36
+ if (titleMatch) {
37
+ result.title = titleMatch[1];
38
+ continue;
39
+ }
40
+ const protocolMatch = line.match(/^protocol:\s*(\S+)/);
41
+ if (protocolMatch) {
42
+ result.protocol = protocolMatch[1];
43
+ continue;
44
+ }
45
+ const phaseMatch = line.match(/^phase:\s*(\S+)/);
46
+ if (phaseMatch) {
47
+ result.phase = phaseMatch[1];
48
+ continue;
49
+ }
50
+ const planPhaseMatch = line.match(/^current_plan_phase:\s*(\S+)/);
51
+ if (planPhaseMatch) {
52
+ result.currentPlanPhase = planPhaseMatch[1];
53
+ continue;
54
+ }
55
+ // Gates section
56
+ if (/^gates:\s*$/.test(line)) {
57
+ inGates = true;
58
+ continue;
59
+ }
60
+ // Stop gates section at next top-level key
61
+ if (inGates && /^\S/.test(line) && line.trim() !== '') {
62
+ inGates = false;
63
+ }
64
+ if (inGates) {
65
+ const gateNameMatch = line.match(/^\s{2}(\S+):\s*$/);
66
+ if (gateNameMatch) {
67
+ currentGate = gateNameMatch[1];
68
+ continue;
69
+ }
70
+ const statusMatch = line.match(/^\s{4}status:\s*(\S+)/);
71
+ if (statusMatch && currentGate) {
72
+ result.gates[currentGate] = statusMatch[1];
73
+ }
74
+ }
75
+ }
76
+ return result;
77
+ }
78
+ // =============================================================================
79
+ // Builder discovery
80
+ // =============================================================================
81
+ /**
82
+ * Map a worktree directory name to its expected terminal role_id.
83
+ * Must match what buildAgentName() produces during spawn so we can
84
+ * cross-reference worktrees against active terminal sessions.
85
+ *
86
+ * All values are lowercased to match buildAgentName() convention.
87
+ *
88
+ * Examples:
89
+ * spir-126-slug → "builder-spir-126"
90
+ * tick-130-slug → "builder-tick-130"
91
+ * bugfix-296-slug → "builder-bugfix-296"
92
+ * task-NAvW → "builder-task-navw"
93
+ * worktree-foIg → "worktree-foig"
94
+ * 0110-legacy → "builder-spir-110"
95
+ * experiment-AbCd → "builder-experiment-abcd"
96
+ */
97
+ export function worktreeNameToRoleId(dirName) {
98
+ const lower = dirName.toLowerCase();
99
+ // SPIR: spir-126-slug → builder-spir-126
100
+ const spirMatch = lower.match(/^spir-(\d+)/);
101
+ if (spirMatch)
102
+ return `builder-spir-${Number(spirMatch[1])}`;
103
+ // TICK: tick-130-slug → builder-tick-130
104
+ const tickMatch = lower.match(/^tick-(\d+)/);
105
+ if (tickMatch)
106
+ return `builder-tick-${Number(tickMatch[1])}`;
107
+ // Bugfix: bugfix-296-slug → builder-bugfix-296
108
+ const bugfixMatch = lower.match(/^bugfix-(\d+)/);
109
+ if (bugfixMatch)
110
+ return `builder-bugfix-${Number(bugfixMatch[1])}`;
111
+ // Task: task-NAvW → builder-task-navw
112
+ const taskMatch = lower.match(/^task-([a-z0-9]+)/);
113
+ if (taskMatch)
114
+ return `builder-task-${taskMatch[1]}`;
115
+ // Worktree: worktree-foIg → worktree-foig (no builder- prefix)
116
+ const worktreeMatch = lower.match(/^worktree-([a-z0-9]+)/);
117
+ if (worktreeMatch)
118
+ return `worktree-${worktreeMatch[1]}`;
119
+ // Legacy numeric: 0110-slug → builder-spir-110 (assume spir)
120
+ const numericMatch = lower.match(/^(\d+)(?:-|$)/);
121
+ if (numericMatch)
122
+ return `builder-spir-${Number(numericMatch[1])}`;
123
+ // Generic protocol: experiment-AbCd → builder-experiment-abcd
124
+ const genericMatch = lower.match(/^([a-z]+)-([a-z0-9]+)/);
125
+ if (genericMatch)
126
+ return `builder-${genericMatch[1]}-${genericMatch[2]}`;
127
+ return null;
128
+ }
129
+ /**
130
+ * Extract project ID from a worktree directory name.
131
+ * Used to match worktrees to their correct codev/projects/{ID}-* directory.
132
+ *
133
+ * Returns the project dir prefix (to match `{ID}-*`) or null for soft-mode builders.
134
+ */
135
+ export function extractProjectIdFromWorktreeName(dirName) {
136
+ // SPIR: spir-126-slug → "0126" (zero-padded)
137
+ const spirMatch = dirName.match(/^spir-(\d+)/);
138
+ if (spirMatch)
139
+ return spirMatch[1].padStart(4, '0');
140
+ // TICK: tick-130-slug → "0130" (zero-padded)
141
+ const tickMatch = dirName.match(/^tick-(\d+)/);
142
+ if (tickMatch)
143
+ return tickMatch[1].padStart(4, '0');
144
+ // Bugfix: bugfix-296-slug → "builder-bugfix-296"
145
+ // Porch project dirs are created via buildAgentName('bugfix', N) → "builder-bugfix-N"
146
+ const bugfixMatch = dirName.match(/^bugfix-(\d+)/);
147
+ if (bugfixMatch)
148
+ return `builder-bugfix-${bugfixMatch[1]}`;
149
+ // Legacy numeric: 0110 or 0110-slug → "0110"
150
+ const numericMatch = dirName.match(/^(\d+)(?:-|$)/);
151
+ if (numericMatch)
152
+ return numericMatch[1].padStart(4, '0');
153
+ // task-NAvW, worktree-foIg → null (soft mode)
154
+ return null;
155
+ }
156
+ /**
157
+ * Discover builders by scanning .builders/ directory and reading status.yaml.
158
+ */
159
+ export function discoverBuilders(workspaceRoot) {
160
+ const buildersDir = path.join(workspaceRoot, '.builders');
161
+ if (!fs.existsSync(buildersDir))
162
+ return [];
163
+ const builders = [];
164
+ let entries;
165
+ try {
166
+ entries = fs.readdirSync(buildersDir, { withFileTypes: true });
167
+ }
168
+ catch {
169
+ return [];
170
+ }
171
+ for (const entry of entries) {
172
+ if (!entry.isDirectory())
173
+ continue;
174
+ const worktreePath = path.join(buildersDir, entry.name);
175
+ const projectId = extractProjectIdFromWorktreeName(entry.name);
176
+ if (!projectId) {
177
+ // No ID extracted (task-*, worktree-*) → soft mode
178
+ builders.push({
179
+ id: entry.name,
180
+ issueNumber: null,
181
+ issueTitle: null,
182
+ phase: '',
183
+ mode: 'soft',
184
+ gates: {},
185
+ worktreePath,
186
+ });
187
+ continue;
188
+ }
189
+ const projectsDir = path.join(worktreePath, 'codev', 'projects');
190
+ // Try to find matching status.yaml by project ID prefix
191
+ let found = false;
192
+ if (fs.existsSync(projectsDir)) {
193
+ try {
194
+ const projectEntries = fs.readdirSync(projectsDir, { withFileTypes: true });
195
+ for (const projEntry of projectEntries) {
196
+ if (!projEntry.isDirectory())
197
+ continue;
198
+ if (!projEntry.name.startsWith(`${projectId}-`))
199
+ continue;
200
+ const statusFile = path.join(projectsDir, projEntry.name, 'status.yaml');
201
+ if (!fs.existsSync(statusFile))
202
+ continue;
203
+ const content = fs.readFileSync(statusFile, 'utf-8');
204
+ const parsed = parseStatusYaml(content);
205
+ let issueNumber = parsed.id ? parseInt(parsed.id, 10) : null;
206
+ if (issueNumber !== null && Number.isNaN(issueNumber)) {
207
+ // Bugfix-style IDs like "builder-bugfix-315" — extract trailing number
208
+ const trailingNum = parsed.id.match(/(\d+)$/);
209
+ issueNumber = trailingNum ? parseInt(trailingNum[1], 10) : null;
210
+ }
211
+ builders.push({
212
+ id: parsed.id || entry.name,
213
+ issueNumber: Number.isNaN(issueNumber) ? null : issueNumber,
214
+ issueTitle: parsed.title || null,
215
+ phase: parsed.currentPlanPhase || parsed.phase,
216
+ mode: 'strict',
217
+ gates: parsed.gates,
218
+ worktreePath,
219
+ });
220
+ found = true;
221
+ break;
222
+ }
223
+ }
224
+ catch {
225
+ // Skip unreadable project dirs
226
+ }
227
+ }
228
+ if (!found) {
229
+ // No matching project dir → soft mode, but extract issue number from dir name
230
+ const numMatch = projectId.match(/(\d+)$/);
231
+ const issueNumber = numMatch ? parseInt(numMatch[1], 10) : null;
232
+ builders.push({
233
+ id: entry.name,
234
+ issueNumber: Number.isNaN(issueNumber) ? null : issueNumber,
235
+ issueTitle: null,
236
+ phase: '',
237
+ mode: 'soft',
238
+ gates: {},
239
+ worktreePath,
240
+ });
241
+ }
242
+ }
243
+ return builders;
244
+ }
245
+ // =============================================================================
246
+ // Backlog derivation
247
+ // =============================================================================
248
+ /**
249
+ * Derive backlog from open GitHub issues cross-referenced with specs and builders.
250
+ */
251
+ export function deriveBacklog(issues, workspaceRoot, activeBuilderIssues, prLinkedIssues) {
252
+ const specsDir = path.join(workspaceRoot, 'codev', 'specs');
253
+ const specNumbers = new Set();
254
+ if (fs.existsSync(specsDir)) {
255
+ try {
256
+ const files = fs.readdirSync(specsDir);
257
+ for (const file of files) {
258
+ if (!file.endsWith('.md'))
259
+ continue;
260
+ const numStr = file.split('-')[0];
261
+ const num = parseInt(numStr, 10);
262
+ if (!Number.isNaN(num))
263
+ specNumbers.add(num);
264
+ }
265
+ }
266
+ catch {
267
+ // Silently continue
268
+ }
269
+ }
270
+ return issues
271
+ .filter(issue => !prLinkedIssues.has(issue.number))
272
+ .map(issue => {
273
+ const { type, priority } = parseLabelDefaults(issue.labels);
274
+ return {
275
+ number: issue.number,
276
+ title: issue.title,
277
+ type,
278
+ priority,
279
+ hasSpec: specNumbers.has(issue.number),
280
+ hasBuilder: activeBuilderIssues.has(issue.number),
281
+ createdAt: issue.createdAt,
282
+ };
283
+ });
284
+ }
285
+ // =============================================================================
286
+ // OverviewCache
287
+ // =============================================================================
288
+ export class OverviewCache {
289
+ prCache = null;
290
+ issueCache = null;
291
+ lastWorkspaceRoot = null;
292
+ TTL = 60_000;
293
+ /**
294
+ * Build the overview response. Aggregates builder state, PRs, and backlog.
295
+ *
296
+ * @param activeBuilderRoleIds - Set of lowercased role_ids for builders with
297
+ * live terminal sessions. When provided, only worktrees matching an active
298
+ * session are included. When omitted, all discovered worktrees are returned
299
+ * (backward-compatible / unit-test friendly).
300
+ */
301
+ async getOverview(workspaceRoot, activeBuilderRoleIds) {
302
+ // Invalidate cache when workspace changes (prevents cross-workspace stale data)
303
+ if (this.lastWorkspaceRoot !== null && this.lastWorkspaceRoot !== workspaceRoot) {
304
+ this.invalidate();
305
+ }
306
+ this.lastWorkspaceRoot = workspaceRoot;
307
+ const errors = {};
308
+ // 1. Discover builders from .builders/ directory, then filter to live sessions
309
+ let builders = discoverBuilders(workspaceRoot);
310
+ if (activeBuilderRoleIds) {
311
+ builders = builders.filter(b => {
312
+ const roleId = worktreeNameToRoleId(path.basename(b.worktreePath));
313
+ return roleId !== null && activeBuilderRoleIds.has(roleId);
314
+ });
315
+ }
316
+ const activeBuilderIssues = new Set(builders
317
+ .map(b => b.issueNumber)
318
+ .filter((n) => n !== null));
319
+ // 2. Fetch PRs (cached, scoped to workspace)
320
+ let pendingPRs = [];
321
+ const prs = await this.fetchPRsCached(workspaceRoot);
322
+ if (prs === null) {
323
+ errors.prs = 'GitHub CLI unavailable — could not fetch PRs';
324
+ }
325
+ else {
326
+ pendingPRs = prs.map(pr => ({
327
+ number: pr.number,
328
+ title: pr.title,
329
+ reviewStatus: pr.reviewDecision || 'REVIEW_REQUIRED',
330
+ linkedIssue: parseLinkedIssue(pr.body || '', pr.title),
331
+ createdAt: pr.createdAt,
332
+ }));
333
+ }
334
+ const prLinkedIssues = new Set(pendingPRs
335
+ .map(pr => pr.linkedIssue)
336
+ .filter((n) => n !== null));
337
+ // 3. Fetch issues and derive backlog (cached, scoped to workspace)
338
+ let backlog = [];
339
+ const issues = await this.fetchIssuesCached(workspaceRoot);
340
+ if (issues === null) {
341
+ errors.issues = 'GitHub CLI unavailable — could not fetch issues';
342
+ }
343
+ else {
344
+ backlog = deriveBacklog(issues, workspaceRoot, activeBuilderIssues, prLinkedIssues);
345
+ }
346
+ const result = { builders, pendingPRs, backlog };
347
+ if (Object.keys(errors).length > 0) {
348
+ result.errors = errors;
349
+ }
350
+ return result;
351
+ }
352
+ /**
353
+ * Invalidate all cached data.
354
+ */
355
+ invalidate() {
356
+ this.prCache = null;
357
+ this.issueCache = null;
358
+ }
359
+ // ===========================================================================
360
+ // Private cache helpers
361
+ // ===========================================================================
362
+ async fetchPRsCached(cwd) {
363
+ const now = Date.now();
364
+ if (this.prCache && (now - this.prCache.fetchedAt) < this.TTL) {
365
+ return this.prCache.data;
366
+ }
367
+ const data = await fetchPRList(cwd);
368
+ if (data !== null) {
369
+ this.prCache = { data, fetchedAt: now };
370
+ }
371
+ return data;
372
+ }
373
+ async fetchIssuesCached(cwd) {
374
+ const now = Date.now();
375
+ if (this.issueCache && (now - this.issueCache.fetchedAt) < this.TTL) {
376
+ return this.issueCache.data;
377
+ }
378
+ const data = await fetchIssueList(cwd);
379
+ if (data !== null) {
380
+ this.issueCache = { data, fetchedAt: now };
381
+ }
382
+ return data;
383
+ }
384
+ }
385
+ //# sourceMappingURL=overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/overview.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,30 @@
1
1
  /**
2
- * Project instance lifecycle for tower server.
2
+ * Workspace instance lifecycle for tower server.
3
3
  * Spec 0105: Tower Server Decomposition — Phase 3
4
4
  *
5
5
  * Contains: instance discovery (getInstances), launch/stop lifecycle,
6
- * known project registration, and directory suggestion autocomplete.
6
+ * known workspace registration, and directory suggestion autocomplete.
7
7
  */
8
- import type { GateStatus } from '../utils/gate-status.js';
9
8
  import type { TerminalManager } from '../../terminal/pty-manager.js';
10
9
  import type { SessionManager } from '../../terminal/session-manager.js';
11
- import type { ProjectTerminals, TerminalEntry, InstanceStatus } from './tower-types.js';
10
+ import type { WorkspaceTerminals, TerminalEntry, InstanceStatus } from './tower-types.js';
12
11
  /** Dependencies injected by the orchestrator (tower-server.ts) */
13
12
  export interface InstanceDeps {
14
13
  log: (level: 'INFO' | 'ERROR' | 'WARN', msg: string) => void;
15
- projectTerminals: Map<string, ProjectTerminals>;
14
+ workspaceTerminals: Map<string, WorkspaceTerminals>;
16
15
  getTerminalManager: () => TerminalManager;
17
16
  shellperManager: SessionManager | null;
18
- /** Get or create a project's terminal registry entry */
19
- getProjectTerminalsEntry: (projectPath: string) => ProjectTerminals;
17
+ /** Get or create a workspace's terminal registry entry */
18
+ getWorkspaceTerminalsEntry: (workspacePath: string) => WorkspaceTerminals;
20
19
  /** Persist a terminal session row to SQLite */
21
- saveTerminalSession: (id: string, projectPath: string, type: 'architect' | 'builder' | 'shell', roleId: string | null, pid: number | null, shellperSocket?: string | null, shellperPid?: number | null, shellperStartTime?: number | null) => void;
20
+ saveTerminalSession: (id: string, workspacePath: string, type: 'architect' | 'builder' | 'shell', roleId: string | null, pid: number | null, shellperSocket?: string | null, shellperPid?: number | null, shellperStartTime?: number | null) => void;
22
21
  /** Delete a terminal session row from SQLite */
23
22
  deleteTerminalSession: (id: string) => void;
24
- /** Delete all terminal session rows for a project */
25
- deleteProjectTerminalSessions: (projectPath: string) => void;
26
- /** Get terminal list + gate status for a project (stays in tower-server.ts until Phase 4) */
27
- getTerminalsForProject: (projectPath: string, proxyUrl: string) => Promise<{
23
+ /** Delete all terminal session rows for a workspace */
24
+ deleteWorkspaceTerminalSessions: (workspacePath: string) => void;
25
+ /** Get terminal list for a workspace */
26
+ getTerminalsForWorkspace: (workspacePath: string, proxyUrl: string) => Promise<{
28
27
  terminals: TerminalEntry[];
29
- gateStatus: GateStatus;
30
28
  }>;
31
29
  }
32
30
  /** Initialize the instances module with dependencies. */
@@ -34,14 +32,14 @@ export declare function initInstances(deps: InstanceDeps): void;
34
32
  /** Tear down the instances module. */
35
33
  export declare function shutdownInstances(): void;
36
34
  /**
37
- * Register a project in the known_projects table so it persists across restarts
35
+ * Register a workspace in the known_workspaces table so it persists across restarts
38
36
  * even when all terminal sessions are gone.
39
37
  */
40
- export declare function registerKnownProject(projectPath: string): void;
38
+ export declare function registerKnownWorkspace(workspacePath: string): void;
41
39
  /**
42
- * Get all known project paths from known_projects, terminal_sessions, and in-memory cache.
40
+ * Get all known workspace paths from known_workspaces, terminal_sessions, and in-memory cache.
43
41
  */
44
- export declare function getKnownProjectPaths(): string[];
42
+ export declare function getKnownWorkspacePaths(): string[];
45
43
  /**
46
44
  * Get all instances with their status.
47
45
  */
@@ -51,14 +49,14 @@ export declare function getInstances(): Promise<InstanceStatus[]>;
51
49
  */
52
50
  export declare function getDirectorySuggestions(inputPath: string): Promise<{
53
51
  path: string;
54
- isProject: boolean;
52
+ isWorkspace: boolean;
55
53
  }[]>;
56
54
  /**
57
55
  * Launch a new agent-farm instance.
58
56
  * Phase 4 (Spec 0090): Tower manages terminals directly, no dashboard-server.
59
57
  * Auto-adopts non-codev directories and creates architect terminal.
60
58
  */
61
- export declare function launchInstance(projectPath: string): Promise<{
59
+ export declare function launchInstance(workspacePath: string): Promise<{
62
60
  success: boolean;
63
61
  error?: string;
64
62
  adopted?: boolean;
@@ -74,7 +72,7 @@ export declare function killTerminalWithShellper(manager: TerminalManager, termi
74
72
  * Stop an agent-farm instance by killing all its terminals.
75
73
  * Phase 4 (Spec 0090): Tower manages terminals directly.
76
74
  */
77
- export declare function stopInstance(projectPath: string): Promise<{
75
+ export declare function stopInstance(workspacePath: string): Promise<{
78
76
  success: boolean;
79
77
  error?: string;
80
78
  stopped: number[];
@@ -1 +1 @@
1
- {"version":3,"file":"tower-instances.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-instances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tower-instances.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-instances.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAY1F,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACpD,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,0DAA0D;IAC1D,0BAA0B,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC1E,+CAA+C;IAC/C,mBAAmB,EAAE,CACnB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,EAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EACzC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,KAC3F,IAAI,CAAC;IACV,gDAAgD;IAChD,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,uDAAuD;IACvD,+BAA+B,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,wCAAwC;IACxC,wBAAwB,EAAE,CACxB,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KACpC,OAAO,CAAC;QAAE,SAAS,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,CAAC;CAC9C;AAYD,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAEtD;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAWlE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAiCjD;AAMD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAiE9D;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAqElH;AAMD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmK5H;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY7G;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+D1H"}