@cluesmith/codev 2.0.3 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/dashboard/dist/assets/index-BblS3DWL.js +135 -0
  2. package/dashboard/dist/assets/index-BblS3DWL.js.map +1 -0
  3. package/dashboard/dist/assets/index-Cr9PyjqX.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 +54 -61
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/architect.d.ts +5 -5
  9. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  10. package/dist/agent-farm/commands/architect.js +37 -20
  11. package/dist/agent-farm/commands/architect.js.map +1 -1
  12. package/dist/agent-farm/commands/attach.d.ts +19 -0
  13. package/dist/agent-farm/commands/attach.d.ts.map +1 -1
  14. package/dist/agent-farm/commands/attach.js +169 -29
  15. package/dist/agent-farm/commands/attach.js.map +1 -1
  16. package/dist/agent-farm/commands/cleanup.d.ts +12 -0
  17. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  18. package/dist/agent-farm/commands/cleanup.js +108 -7
  19. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  20. package/dist/agent-farm/commands/send.d.ts +22 -2
  21. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  22. package/dist/agent-farm/commands/send.js +97 -178
  23. package/dist/agent-farm/commands/send.js.map +1 -1
  24. package/dist/agent-farm/commands/spawn-roles.d.ts +3 -9
  25. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
  26. package/dist/agent-farm/commands/spawn-roles.js +14 -53
  27. package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
  28. package/dist/agent-farm/commands/spawn-worktree.d.ts +11 -18
  29. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  30. package/dist/agent-farm/commands/spawn-worktree.js +35 -22
  31. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  32. package/dist/agent-farm/commands/spawn.d.ts +8 -6
  33. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  34. package/dist/agent-farm/commands/spawn.js +207 -89
  35. package/dist/agent-farm/commands/spawn.js.map +1 -1
  36. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  37. package/dist/agent-farm/commands/start.js +2 -6
  38. package/dist/agent-farm/commands/start.js.map +1 -1
  39. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  40. package/dist/agent-farm/commands/status.js +5 -35
  41. package/dist/agent-farm/commands/status.js.map +1 -1
  42. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  43. package/dist/agent-farm/commands/stop.js +2 -6
  44. package/dist/agent-farm/commands/stop.js.map +1 -1
  45. package/dist/agent-farm/commands/tower-cloud.d.ts +2 -9
  46. package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/tower-cloud.js +12 -47
  48. package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
  49. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  50. package/dist/agent-farm/commands/tower.js +6 -23
  51. package/dist/agent-farm/commands/tower.js.map +1 -1
  52. package/dist/agent-farm/db/index.d.ts.map +1 -1
  53. package/dist/agent-farm/db/index.js +52 -2
  54. package/dist/agent-farm/db/index.js.map +1 -1
  55. package/dist/agent-farm/db/schema.d.ts +1 -1
  56. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  57. package/dist/agent-farm/db/schema.js +1 -1
  58. package/dist/agent-farm/lib/cloud-config.d.ts +1 -0
  59. package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -1
  60. package/dist/agent-farm/lib/cloud-config.js +2 -2
  61. package/dist/agent-farm/lib/cloud-config.js.map +1 -1
  62. package/dist/agent-farm/lib/tower-client.d.ts +65 -6
  63. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  64. package/dist/agent-farm/lib/tower-client.js +57 -2
  65. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  66. package/dist/agent-farm/servers/overview.d.ts +157 -0
  67. package/dist/agent-farm/servers/overview.d.ts.map +1 -0
  68. package/dist/agent-farm/servers/overview.js +625 -0
  69. package/dist/agent-farm/servers/overview.js.map +1 -0
  70. package/dist/agent-farm/servers/tower-instances.d.ts +1 -3
  71. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  72. package/dist/agent-farm/servers/tower-instances.js +12 -14
  73. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  74. package/dist/agent-farm/servers/tower-messages.d.ts +87 -0
  75. package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -0
  76. package/dist/agent-farm/servers/tower-messages.js +202 -0
  77. package/dist/agent-farm/servers/tower-messages.js.map +1 -0
  78. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  79. package/dist/agent-farm/servers/tower-routes.js +182 -34
  80. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  81. package/dist/agent-farm/servers/tower-server.js +30 -6
  82. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  83. package/dist/agent-farm/servers/tower-terminals.d.ts +9 -3
  84. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  85. package/dist/agent-farm/servers/tower-terminals.js +129 -84
  86. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  87. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  88. package/dist/agent-farm/servers/tower-tunnel.js +3 -19
  89. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  90. package/dist/agent-farm/servers/tower-types.d.ts +0 -2
  91. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  92. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  93. package/dist/agent-farm/servers/tower-websocket.js +27 -5
  94. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  95. package/dist/agent-farm/types.d.ts +4 -5
  96. package/dist/agent-farm/types.d.ts.map +1 -1
  97. package/dist/agent-farm/utils/agent-names.d.ts +85 -0
  98. package/dist/agent-farm/utils/agent-names.d.ts.map +1 -0
  99. package/dist/agent-farm/utils/agent-names.js +140 -0
  100. package/dist/agent-farm/utils/agent-names.js.map +1 -0
  101. package/dist/agent-farm/utils/display.d.ts +8 -0
  102. package/dist/agent-farm/utils/display.d.ts.map +1 -0
  103. package/dist/agent-farm/utils/display.js +26 -0
  104. package/dist/agent-farm/utils/display.js.map +1 -0
  105. package/dist/agent-farm/utils/message-format.d.ts +17 -0
  106. package/dist/agent-farm/utils/message-format.d.ts.map +1 -0
  107. package/dist/agent-farm/utils/message-format.js +41 -0
  108. package/dist/agent-farm/utils/message-format.js.map +1 -0
  109. package/dist/agent-farm/utils/notifications.d.ts.map +1 -1
  110. package/dist/agent-farm/utils/notifications.js +7 -16
  111. package/dist/agent-farm/utils/notifications.js.map +1 -1
  112. package/dist/agent-farm/utils/server-utils.d.ts +4 -0
  113. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  114. package/dist/agent-farm/utils/server-utils.js +20 -0
  115. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  116. package/dist/agent-farm/utils/shell.d.ts +5 -0
  117. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  118. package/dist/agent-farm/utils/shell.js +15 -11
  119. package/dist/agent-farm/utils/shell.js.map +1 -1
  120. package/dist/cli.d.ts.map +1 -1
  121. package/dist/cli.js +46 -15
  122. package/dist/cli.js.map +1 -1
  123. package/dist/commands/adopt.d.ts.map +1 -1
  124. package/dist/commands/adopt.js +1 -13
  125. package/dist/commands/adopt.js.map +1 -1
  126. package/dist/commands/consult/index.d.ts +34 -9
  127. package/dist/commands/consult/index.d.ts.map +1 -1
  128. package/dist/commands/consult/index.js +617 -263
  129. package/dist/commands/consult/index.js.map +1 -1
  130. package/dist/commands/consult/metrics.d.ts +90 -0
  131. package/dist/commands/consult/metrics.d.ts.map +1 -0
  132. package/dist/commands/consult/metrics.js +203 -0
  133. package/dist/commands/consult/metrics.js.map +1 -0
  134. package/dist/commands/consult/stats.d.ts +18 -0
  135. package/dist/commands/consult/stats.d.ts.map +1 -0
  136. package/dist/commands/consult/stats.js +150 -0
  137. package/dist/commands/consult/stats.js.map +1 -0
  138. package/dist/commands/consult/usage-extractor.d.ts +41 -0
  139. package/dist/commands/consult/usage-extractor.d.ts.map +1 -0
  140. package/dist/commands/consult/usage-extractor.js +122 -0
  141. package/dist/commands/consult/usage-extractor.js.map +1 -0
  142. package/dist/commands/doctor.d.ts.map +1 -1
  143. package/dist/commands/doctor.js +5 -3
  144. package/dist/commands/doctor.js.map +1 -1
  145. package/dist/commands/init.d.ts.map +1 -1
  146. package/dist/commands/init.js +1 -13
  147. package/dist/commands/init.js.map +1 -1
  148. package/dist/commands/porch/index.d.ts.map +1 -1
  149. package/dist/commands/porch/index.js +13 -12
  150. package/dist/commands/porch/index.js.map +1 -1
  151. package/dist/commands/porch/next.d.ts.map +1 -1
  152. package/dist/commands/porch/next.js +57 -77
  153. package/dist/commands/porch/next.js.map +1 -1
  154. package/dist/commands/porch/plan.d.ts.map +1 -1
  155. package/dist/commands/porch/plan.js +17 -2
  156. package/dist/commands/porch/plan.js.map +1 -1
  157. package/dist/commands/porch/prompts.d.ts +10 -1
  158. package/dist/commands/porch/prompts.d.ts.map +1 -1
  159. package/dist/commands/porch/prompts.js +56 -29
  160. package/dist/commands/porch/prompts.js.map +1 -1
  161. package/dist/commands/porch/protocol.js +2 -2
  162. package/dist/commands/porch/state.d.ts +13 -0
  163. package/dist/commands/porch/state.d.ts.map +1 -1
  164. package/dist/commands/porch/state.js +49 -2
  165. package/dist/commands/porch/state.js.map +1 -1
  166. package/dist/commands/update.d.ts.map +1 -1
  167. package/dist/commands/update.js +0 -10
  168. package/dist/commands/update.js.map +1 -1
  169. package/dist/lib/github.d.ts +82 -0
  170. package/dist/lib/github.d.ts.map +1 -0
  171. package/dist/lib/github.js +181 -0
  172. package/dist/lib/github.js.map +1 -0
  173. package/dist/lib/scaffold.d.ts +0 -21
  174. package/dist/lib/scaffold.d.ts.map +1 -1
  175. package/dist/lib/scaffold.js +0 -57
  176. package/dist/lib/scaffold.js.map +1 -1
  177. package/dist/terminal/index.d.ts +16 -0
  178. package/dist/terminal/index.d.ts.map +1 -1
  179. package/dist/terminal/index.js +14 -0
  180. package/dist/terminal/index.js.map +1 -1
  181. package/dist/terminal/pty-manager.d.ts.map +1 -1
  182. package/dist/terminal/pty-manager.js +8 -5
  183. package/dist/terminal/pty-manager.js.map +1 -1
  184. package/dist/terminal/pty-session.js +4 -4
  185. package/dist/terminal/pty-session.js.map +1 -1
  186. package/dist/terminal/session-manager.d.ts +64 -0
  187. package/dist/terminal/session-manager.d.ts.map +1 -1
  188. package/dist/terminal/session-manager.js +299 -10
  189. package/dist/terminal/session-manager.js.map +1 -1
  190. package/dist/terminal/shellper-client.d.ts +2 -1
  191. package/dist/terminal/shellper-client.d.ts.map +1 -1
  192. package/dist/terminal/shellper-client.js +4 -2
  193. package/dist/terminal/shellper-client.js.map +1 -1
  194. package/dist/terminal/shellper-main.js +33 -4
  195. package/dist/terminal/shellper-main.js.map +1 -1
  196. package/dist/terminal/shellper-process.d.ts +24 -7
  197. package/dist/terminal/shellper-process.d.ts.map +1 -1
  198. package/dist/terminal/shellper-process.js +139 -36
  199. package/dist/terminal/shellper-process.js.map +1 -1
  200. package/dist/terminal/shellper-protocol.d.ts +1 -0
  201. package/dist/terminal/shellper-protocol.d.ts.map +1 -1
  202. package/dist/terminal/shellper-protocol.js.map +1 -1
  203. package/package.json +4 -1
  204. package/skeleton/.claude/skills/af/SKILL.md +10 -10
  205. package/skeleton/.claude/skills/consult/SKILL.md +55 -38
  206. package/skeleton/.claude/skills/porch/SKILL.md +53 -0
  207. package/skeleton/DEPENDENCIES.md +2 -2
  208. package/skeleton/builders.md +8 -19
  209. package/skeleton/maintain/.gitkeep +1 -1
  210. package/skeleton/porch/prompts/specify.md +1 -1
  211. package/skeleton/protocol-schema.json +1 -1
  212. package/skeleton/protocols/bugfix/prompts/pr.md +18 -7
  213. package/skeleton/protocols/bugfix/protocol.json +1 -1
  214. package/skeleton/protocols/experiment/protocol.md +17 -17
  215. package/skeleton/protocols/maintain/consult-types/impl-review.md +72 -0
  216. package/skeleton/protocols/maintain/consult-types/pr-review.md +72 -0
  217. package/skeleton/protocols/maintain/prompts/audit.md +2 -2
  218. package/skeleton/protocols/maintain/prompts/sync.md +1 -1
  219. package/skeleton/protocols/maintain/prompts/verify.md +1 -1
  220. package/skeleton/protocols/maintain/protocol.json +4 -4
  221. package/skeleton/protocols/maintain/protocol.md +11 -12
  222. package/skeleton/protocols/maintain/templates/maintenance-run.md +2 -2
  223. package/skeleton/protocols/protocol-schema.json +1 -1
  224. package/skeleton/protocols/spir/consult-types/impl-review.md +72 -0
  225. package/skeleton/protocols/spir/consult-types/phase-review.md +72 -0
  226. package/skeleton/protocols/spir/consult-types/pr-review.md +72 -0
  227. package/skeleton/protocols/spir/prompts/plan.md +4 -4
  228. package/skeleton/protocols/spir/prompts/review.md +8 -8
  229. package/skeleton/protocols/spir/prompts/specify.md +6 -6
  230. package/skeleton/protocols/spir/protocol.json +16 -16
  231. package/skeleton/protocols/spir/protocol.md +8 -8
  232. package/skeleton/protocols/spir/templates/review.md +2 -2
  233. package/skeleton/protocols/tick/consult-types/impl-review.md +72 -0
  234. package/skeleton/protocols/tick/consult-types/plan-review.md +59 -0
  235. package/skeleton/protocols/tick/consult-types/pr-review.md +72 -0
  236. package/skeleton/protocols/tick/consult-types/spec-review.md +55 -0
  237. package/skeleton/protocols/tick/protocol.json +2 -7
  238. package/skeleton/protocols/tick/protocol.md +31 -31
  239. package/skeleton/resources/commands/agent-farm.md +21 -19
  240. package/skeleton/resources/commands/codev.md +0 -36
  241. package/skeleton/resources/commands/consult.md +88 -234
  242. package/skeleton/resources/commands/overview.md +6 -7
  243. package/skeleton/resources/spikes.md +3 -3
  244. package/skeleton/resources/workflow-reference.md +28 -28
  245. package/skeleton/roles/architect.md +34 -38
  246. package/skeleton/roles/builder.md +14 -14
  247. package/skeleton/roles/consultant.md +6 -0
  248. package/skeleton/templates/AGENTS.md +6 -6
  249. package/skeleton/templates/CLAUDE.md +6 -6
  250. package/skeleton/templates/cheatsheet.md +22 -18
  251. package/skeleton/templates/lifecycle.md +9 -9
  252. package/skeleton/templates/pr-overview.md +5 -5
  253. package/templates/open.html +6 -3
  254. package/templates/tower.html +1 -41
  255. package/dashboard/dist/assets/index-4n9zpWLY.css +0 -32
  256. package/dashboard/dist/assets/index-UsH9ixz1.js +0 -136
  257. package/dashboard/dist/assets/index-UsH9ixz1.js.map +0 -1
  258. package/dist/agent-farm/commands/consult.d.ts +0 -15
  259. package/dist/agent-farm/commands/consult.d.ts.map +0 -1
  260. package/dist/agent-farm/commands/consult.js +0 -39
  261. package/dist/agent-farm/commands/consult.js.map +0 -1
  262. package/dist/agent-farm/utils/gate-status.d.ts +0 -16
  263. package/dist/agent-farm/utils/gate-status.d.ts.map +0 -1
  264. package/dist/agent-farm/utils/gate-status.js +0 -79
  265. package/dist/agent-farm/utils/gate-status.js.map +0 -1
  266. package/skeleton/templates/projectlist-archive.md +0 -21
  267. package/skeleton/templates/projectlist.md +0 -147
  268. /package/skeleton/{consult-types → protocols/bugfix/consult-types}/impl-review.md +0 -0
  269. /package/skeleton/{consult-types/pr-ready.md → protocols/bugfix/consult-types/pr-review.md} +0 -0
  270. /package/skeleton/{consult-types → protocols/spir/consult-types}/plan-review.md +0 -0
  271. /package/skeleton/{consult-types → protocols/spir/consult-types}/spec-review.md +0 -0
@@ -9,9 +9,17 @@ import { WebSocket } from 'ws';
9
9
  import { encodeData, encodeControl, decodeFrame } from '../../terminal/ws-protocol.js';
10
10
  import { getTerminalManager } from './tower-terminals.js';
11
11
  import { normalizeWorkspacePath } from './tower-utils.js';
12
+ import { decodeWorkspacePath } from '../lib/tower-client.js';
13
+ import { addSubscriber, removeSubscriber } from './tower-messages.js';
12
14
  // ============================================================================
13
15
  // Frame bridging — WS ↔ PTY
14
16
  // ============================================================================
17
+ /**
18
+ * Maximum bytes to buffer in a WebSocket before dropping data frames.
19
+ * Terminal output is ephemeral — dropping frames under backpressure is
20
+ * preferable to unbounded memory growth or connection stalls.
21
+ */
22
+ const WS_HIGH_WATER_MARK = 1 * 1024 * 1024; // 1 MB
15
23
  /**
16
24
  * Handle WebSocket connection to a terminal session.
17
25
  * Uses hybrid binary protocol (Spec 0085):
@@ -20,12 +28,12 @@ import { normalizeWorkspacePath } from './tower-utils.js';
20
28
  */
21
29
  export function handleTerminalWebSocket(ws, session, req) {
22
30
  const resumeSeq = req.headers['x-session-resume'];
23
- // Create a client adapter for the PTY session
24
- // Uses binary protocol for data frames
31
+ // Create a client adapter for the PTY session.
32
+ // Checks bufferedAmount to prevent unbounded memory growth when
33
+ // the browser can't consume data fast enough (Bugfix #313).
25
34
  const client = {
26
35
  send: (data) => {
27
- if (ws.readyState === WebSocket.OPEN) {
28
- // Encode as binary data frame (0x01 prefix)
36
+ if (ws.readyState === WebSocket.OPEN && ws.bufferedAmount < WS_HIGH_WATER_MARK) {
29
37
  ws.send(encodeData(data));
30
38
  }
31
39
  },
@@ -115,6 +123,20 @@ export function setupUpgradeHandler(server, wss, port) {
115
123
  });
116
124
  return;
117
125
  }
126
+ // Spec 0110 Phase 3: Handle /ws/messages — message bus subscription
127
+ if (reqUrl.pathname === '/ws/messages') {
128
+ const projectFilter = reqUrl.searchParams.get('project') || undefined;
129
+ wss.handleUpgrade(req, socket, head, (ws) => {
130
+ addSubscriber(ws, projectFilter);
131
+ ws.on('close', () => {
132
+ removeSubscriber(ws);
133
+ });
134
+ ws.on('error', () => {
135
+ removeSubscriber(ws);
136
+ });
137
+ });
138
+ return;
139
+ }
118
140
  // Phase 4 (Spec 0090): Handle workspace WebSocket routes directly
119
141
  // Route: /workspace/:encodedPath/ws/terminal/:terminalId
120
142
  if (!reqUrl.pathname.startsWith('/workspace/')) {
@@ -134,7 +156,7 @@ export function setupUpgradeHandler(server, wss, port) {
134
156
  // Wrap in try/catch to handle malformed Base64 input gracefully
135
157
  let workspacePath;
136
158
  try {
137
- workspacePath = Buffer.from(encodedPath, 'base64url').toString('utf-8');
159
+ workspacePath = decodeWorkspacePath(encodedPath);
138
160
  // Support both POSIX (/) and Windows (C:\) paths
139
161
  if (!workspacePath || (!workspacePath.startsWith('/') && !/^[A-Za-z]:[\\/]/.test(workspacePath))) {
140
162
  throw new Error('Invalid workspace path');
@@ -1 +1 @@
1
- {"version":3,"file":"tower-websocket.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tower-websocket.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-websocket.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export type BuilderType = 'spec' | 'task' | 'protocol' | 'shell' | 'worktree' |
5
5
  export interface Builder {
6
6
  id: string;
7
7
  name: string;
8
- status: 'spawning' | 'implementing' | 'blocked' | 'pr-ready' | 'complete';
8
+ status: 'spawning' | 'implementing' | 'blocked' | 'pr' | 'complete';
9
9
  phase: string;
10
10
  worktree: string;
11
11
  branch: string;
@@ -54,16 +54,15 @@ export interface StartOptions {
54
54
  noBrowser?: boolean;
55
55
  }
56
56
  export interface SpawnOptions {
57
- project?: string;
58
- task?: string;
57
+ issueNumber?: number;
59
58
  protocol?: string;
59
+ task?: string;
60
60
  shell?: boolean;
61
61
  worktree?: boolean;
62
- issue?: number;
62
+ amends?: number;
63
63
  files?: string[];
64
64
  noComment?: boolean;
65
65
  force?: boolean;
66
- useProtocol?: string;
67
66
  soft?: boolean;
68
67
  strict?: boolean;
69
68
  resume?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-farm/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-farm/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Agent naming utilities for standardized builder identification.
3
+ * Spec 0110: Messaging Infrastructure — Phase 1
4
+ *
5
+ * Naming convention:
6
+ * Builder ID: builder-{protocol}-{id} (e.g., builder-spir-109)
7
+ * Worktree path: .builders/{protocol}-{id}[-{slug}]/
8
+ * Branch name: builder/{protocol}-{id}[-{slug}]
9
+ *
10
+ * All names are stored and compared in lowercase per spec.
11
+ */
12
+ import type { Builder, BuilderType } from '../types.js';
13
+ /**
14
+ * Strip leading zeros from a numeric ID string.
15
+ * Non-numeric IDs are returned unchanged.
16
+ *
17
+ * Examples:
18
+ * '0109' → '109'
19
+ * '0001' → '1'
20
+ * '0' → '0'
21
+ * 'AbCd' → 'AbCd'
22
+ */
23
+ export declare function stripLeadingZeros(id: string): string;
24
+ /**
25
+ * Build a canonical agent name from builder type and ID.
26
+ * Returns lowercase with leading zeros stripped from numeric IDs.
27
+ *
28
+ * Examples:
29
+ * buildAgentName('spec', '0109') → 'builder-spir-109'
30
+ * buildAgentName('bugfix', '42') → 'builder-bugfix-42'
31
+ * buildAgentName('task', 'AbCd') → 'builder-task-abcd'
32
+ * buildAgentName('protocol', 'AbCd') → 'builder-experiment-abcd'
33
+ *
34
+ * Note: For 'spec' type, the protocol segment defaults to 'spir'.
35
+ * Use buildAgentNameWithProtocol() when the actual protocol is known.
36
+ */
37
+ export declare function buildAgentName(type: BuilderType, id: string, protocol?: string): string;
38
+ /**
39
+ * Parse a canonical agent name into its components.
40
+ * Returns null if the name doesn't match the expected pattern.
41
+ *
42
+ * Examples:
43
+ * parseAgentName('builder-spir-109') → { protocol: 'spir', id: '109' }
44
+ * parseAgentName('builder-bugfix-42') → { protocol: 'bugfix', id: '42' }
45
+ * parseAgentName('architect') → null
46
+ * parseAgentName('0109') → null
47
+ */
48
+ export declare function parseAgentName(name: string): {
49
+ protocol: string;
50
+ id: string;
51
+ } | null;
52
+ /**
53
+ * Parse a target address into project and agent components.
54
+ * Normalizes the agent portion to lowercase.
55
+ *
56
+ * Examples:
57
+ * parseAddress('architect') → { agent: 'architect' }
58
+ * parseAddress('builder-spir-109') → { agent: 'builder-spir-109' }
59
+ * parseAddress('codev-public:architect') → { project: 'codev-public', agent: 'architect' }
60
+ * parseAddress('codev-public:builder-spir-109') → { project: 'codev-public', agent: 'builder-spir-109' }
61
+ */
62
+ export declare function parseAddress(target: string): {
63
+ project?: string;
64
+ agent: string;
65
+ };
66
+ /**
67
+ * Resolve an agent name against a list of builders using case-insensitive
68
+ * matching with tail-match fallback.
69
+ *
70
+ * Resolution order:
71
+ * 1. Exact match (case-insensitive): 'builder-spir-109' matches 'builder-spir-109'
72
+ * 2. Tail match: bare ID matches the trailing segment of builder-{protocol}-{id}.
73
+ * E.g., '109' matches 'builder-spir-109' because the name ends with '-109'.
74
+ * Leading zeros are stripped before comparison: '0109' → '109'.
75
+ * Also handles partial names: 'bugfix-42' matches 'builder-bugfix-42'.
76
+ * 3. Returns null if no match found or multiple ambiguous tail matches.
77
+ *
78
+ * @returns { builder, ambiguous? } — builder is the matched Builder or null.
79
+ * If ambiguous, candidates are provided for error messaging.
80
+ */
81
+ export declare function resolveAgentName(target: string, builders: Builder[]): {
82
+ builder: Builder | null;
83
+ ambiguous?: Builder[];
84
+ };
85
+ //# sourceMappingURL=agent-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-names.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/agent-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAShF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,EAAE,GAClB;IAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,CAwBpD"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Agent naming utilities for standardized builder identification.
3
+ * Spec 0110: Messaging Infrastructure — Phase 1
4
+ *
5
+ * Naming convention:
6
+ * Builder ID: builder-{protocol}-{id} (e.g., builder-spir-109)
7
+ * Worktree path: .builders/{protocol}-{id}[-{slug}]/
8
+ * Branch name: builder/{protocol}-{id}[-{slug}]
9
+ *
10
+ * All names are stored and compared in lowercase per spec.
11
+ */
12
+ /**
13
+ * Strip leading zeros from a numeric ID string.
14
+ * Non-numeric IDs are returned unchanged.
15
+ *
16
+ * Examples:
17
+ * '0109' → '109'
18
+ * '0001' → '1'
19
+ * '0' → '0'
20
+ * 'AbCd' → 'AbCd'
21
+ */
22
+ export function stripLeadingZeros(id) {
23
+ if (/^\d+$/.test(id)) {
24
+ return String(Number(id));
25
+ }
26
+ return id;
27
+ }
28
+ /**
29
+ * Build a canonical agent name from builder type and ID.
30
+ * Returns lowercase with leading zeros stripped from numeric IDs.
31
+ *
32
+ * Examples:
33
+ * buildAgentName('spec', '0109') → 'builder-spir-109'
34
+ * buildAgentName('bugfix', '42') → 'builder-bugfix-42'
35
+ * buildAgentName('task', 'AbCd') → 'builder-task-abcd'
36
+ * buildAgentName('protocol', 'AbCd') → 'builder-experiment-abcd'
37
+ *
38
+ * Note: For 'spec' type, the protocol segment defaults to 'spir'.
39
+ * Use buildAgentNameWithProtocol() when the actual protocol is known.
40
+ */
41
+ export function buildAgentName(type, id, protocol) {
42
+ const strippedId = stripLeadingZeros(id);
43
+ // Determine the protocol segment
44
+ let protocolSegment;
45
+ switch (type) {
46
+ case 'spec':
47
+ protocolSegment = protocol ?? 'spir';
48
+ break;
49
+ case 'bugfix':
50
+ protocolSegment = 'bugfix';
51
+ break;
52
+ case 'task':
53
+ protocolSegment = 'task';
54
+ break;
55
+ case 'protocol':
56
+ protocolSegment = protocol ?? 'protocol';
57
+ break;
58
+ default:
59
+ // shell and worktree don't get builder- prefix names
60
+ return `${type}-${strippedId}`.toLowerCase();
61
+ }
62
+ return `builder-${protocolSegment}-${strippedId}`.toLowerCase();
63
+ }
64
+ /**
65
+ * Parse a canonical agent name into its components.
66
+ * Returns null if the name doesn't match the expected pattern.
67
+ *
68
+ * Examples:
69
+ * parseAgentName('builder-spir-109') → { protocol: 'spir', id: '109' }
70
+ * parseAgentName('builder-bugfix-42') → { protocol: 'bugfix', id: '42' }
71
+ * parseAgentName('architect') → null
72
+ * parseAgentName('0109') → null
73
+ */
74
+ export function parseAgentName(name) {
75
+ const lower = name.toLowerCase();
76
+ const match = lower.match(/^builder-([a-z0-9]+)-(.+)$/);
77
+ if (!match)
78
+ return null;
79
+ return { protocol: match[1], id: match[2] };
80
+ }
81
+ /**
82
+ * Parse a target address into project and agent components.
83
+ * Normalizes the agent portion to lowercase.
84
+ *
85
+ * Examples:
86
+ * parseAddress('architect') → { agent: 'architect' }
87
+ * parseAddress('builder-spir-109') → { agent: 'builder-spir-109' }
88
+ * parseAddress('codev-public:architect') → { project: 'codev-public', agent: 'architect' }
89
+ * parseAddress('codev-public:builder-spir-109') → { project: 'codev-public', agent: 'builder-spir-109' }
90
+ */
91
+ export function parseAddress(target) {
92
+ const colonIndex = target.indexOf(':');
93
+ if (colonIndex > 0) {
94
+ return {
95
+ project: target.substring(0, colonIndex).toLowerCase(),
96
+ agent: target.substring(colonIndex + 1).toLowerCase(),
97
+ };
98
+ }
99
+ return { agent: target.toLowerCase() };
100
+ }
101
+ /**
102
+ * Resolve an agent name against a list of builders using case-insensitive
103
+ * matching with tail-match fallback.
104
+ *
105
+ * Resolution order:
106
+ * 1. Exact match (case-insensitive): 'builder-spir-109' matches 'builder-spir-109'
107
+ * 2. Tail match: bare ID matches the trailing segment of builder-{protocol}-{id}.
108
+ * E.g., '109' matches 'builder-spir-109' because the name ends with '-109'.
109
+ * Leading zeros are stripped before comparison: '0109' → '109'.
110
+ * Also handles partial names: 'bugfix-42' matches 'builder-bugfix-42'.
111
+ * 3. Returns null if no match found or multiple ambiguous tail matches.
112
+ *
113
+ * @returns { builder, ambiguous? } — builder is the matched Builder or null.
114
+ * If ambiguous, candidates are provided for error messaging.
115
+ */
116
+ export function resolveAgentName(target, builders) {
117
+ const originalTarget = target.toLowerCase();
118
+ const strippedTarget = stripLeadingZeros(target).toLowerCase();
119
+ // 1. Exact match (case-insensitive) — try original first, then stripped
120
+ const exact = builders.find(b => {
121
+ const id = b.id.toLowerCase();
122
+ return id === originalTarget || id === strippedTarget;
123
+ });
124
+ if (exact)
125
+ return { builder: exact };
126
+ // 2. Tail match: check if any builder ID ends with -{strippedTarget}
127
+ const tailMatches = builders.filter(b => {
128
+ const builderId = b.id.toLowerCase();
129
+ // Check if the builder ID ends with the target as a tail segment
130
+ // e.g., builder-spir-109 ends with -109, -spir-109
131
+ return builderId.endsWith(`-${strippedTarget}`);
132
+ });
133
+ if (tailMatches.length === 1)
134
+ return { builder: tailMatches[0] };
135
+ if (tailMatches.length > 1)
136
+ return { builder: null, ambiguous: tailMatches };
137
+ // 3. No match
138
+ return { builder: null };
139
+ }
140
+ //# sourceMappingURL=agent-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-names.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/agent-names.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared display utilities for CLI output formatting
3
+ */
4
+ /**
5
+ * Get chalk color function for a builder type
6
+ */
7
+ export declare function getTypeColor(type: string): (text: string) => string;
8
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/display.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAiBnE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared display utilities for CLI output formatting
3
+ */
4
+ import chalk from 'chalk';
5
+ /**
6
+ * Get chalk color function for a builder type
7
+ */
8
+ export function getTypeColor(type) {
9
+ switch (type) {
10
+ case 'spec':
11
+ return chalk.cyan;
12
+ case 'bugfix':
13
+ return chalk.red;
14
+ case 'task':
15
+ return chalk.magenta;
16
+ case 'protocol':
17
+ return chalk.yellow;
18
+ case 'worktree':
19
+ return chalk.blue;
20
+ case 'shell':
21
+ return chalk.gray;
22
+ default:
23
+ return chalk.white;
24
+ }
25
+ }
26
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/display.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB;YACE,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Message formatting utilities for structured architect/builder messages.
3
+ * Spec 0110: Messaging Infrastructure — Phase 2
4
+ *
5
+ * Shared between CLI (commands/send.ts) and Tower server (tower-routes.ts).
6
+ */
7
+ /**
8
+ * Format a message from the architect to a builder.
9
+ * Wraps in a structured header/footer unless raw mode is requested.
10
+ */
11
+ export declare function formatArchitectMessage(message: string, fileContent?: string, raw?: boolean): string;
12
+ /**
13
+ * Format a message from a builder to the architect.
14
+ * Wraps in a structured header/footer unless raw mode is requested.
15
+ */
16
+ export declare function formatBuilderMessage(builderId: string, message: string, fileContent?: string, raw?: boolean): string;
17
+ //# sourceMappingURL=message-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-format.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/message-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,OAAe,GAAG,MAAM,CAc1G;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,OAAe,GAAG,MAAM,CAc3H"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Message formatting utilities for structured architect/builder messages.
3
+ * Spec 0110: Messaging Infrastructure — Phase 2
4
+ *
5
+ * Shared between CLI (commands/send.ts) and Tower server (tower-routes.ts).
6
+ */
7
+ /**
8
+ * Format a message from the architect to a builder.
9
+ * Wraps in a structured header/footer unless raw mode is requested.
10
+ */
11
+ export function formatArchitectMessage(message, fileContent, raw = false) {
12
+ let content = message;
13
+ if (fileContent) {
14
+ content += '\n\nAttached content:\n```\n' + fileContent + '\n```';
15
+ }
16
+ if (raw) {
17
+ return content;
18
+ }
19
+ const timestamp = new Date().toISOString();
20
+ return `### [ARCHITECT INSTRUCTION | ${timestamp}] ###
21
+ ${content}
22
+ ###############################`;
23
+ }
24
+ /**
25
+ * Format a message from a builder to the architect.
26
+ * Wraps in a structured header/footer unless raw mode is requested.
27
+ */
28
+ export function formatBuilderMessage(builderId, message, fileContent, raw = false) {
29
+ let content = message;
30
+ if (fileContent) {
31
+ content += '\n\nAttached content:\n```\n' + fileContent + '\n```';
32
+ }
33
+ if (raw) {
34
+ return content;
35
+ }
36
+ const timestamp = new Date().toISOString();
37
+ return `### [BUILDER ${builderId} MESSAGE | ${timestamp}] ###
38
+ ${content}
39
+ ###############################`;
40
+ }
41
+ //# sourceMappingURL=message-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-format.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/message-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,WAAoB,EAAE,MAAe,KAAK;IAChG,IAAI,OAAO,GAAG,OAAO,CAAC;IACtB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,8BAA8B,GAAG,WAAW,GAAG,OAAO,CAAC;IACpE,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,gCAAgC,SAAS;EAChD,OAAO;gCACuB,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,OAAe,EAAE,WAAoB,EAAE,MAAe,KAAK;IACjH,IAAI,OAAO,GAAG,OAAO,CAAC;IACtB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,8BAA8B,GAAG,WAAW,GAAG,OAAO,CAAC;IACpE,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,gBAAgB,SAAS,cAAc,SAAS;EACvD,OAAO;gCACuB,CAAC;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/notifications.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAErE,UAAU,mBAAmB;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AA+BD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDtF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/notifications.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAErE,UAAU,mBAAmB;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AA4BD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CtF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAYf"}
@@ -3,8 +3,7 @@
3
3
  * Sends notifications to the tower dashboard for real-time updates.
4
4
  */
5
5
  import path from 'node:path';
6
- // Default tower port
7
- const TOWER_PORT = process.env.CODEV_TOWER_PORT || '4100';
6
+ import { getTowerClient } from '../lib/tower-client.js';
8
7
  // Track sent notifications to avoid duplicates within short window
9
8
  const recentNotifications = new Map();
10
9
  const DEDUPE_WINDOW_MS = 60000; // 1 minute
@@ -61,21 +60,13 @@ export async function sendPushNotification(payload) {
61
60
  break;
62
61
  }
63
62
  try {
64
- const response = await fetch(`http://localhost:${TOWER_PORT}/api/notify`, {
65
- method: 'POST',
66
- headers: {
67
- 'Content-Type': 'application/json',
68
- },
69
- body: JSON.stringify({
70
- type: payload.type,
71
- title,
72
- body,
73
- workspace: payload.workspacePath,
74
- }),
63
+ const client = getTowerClient();
64
+ await client.sendNotification({
65
+ type: payload.type,
66
+ title,
67
+ body,
68
+ workspace: payload.workspacePath,
75
69
  });
76
- if (!response.ok) {
77
- console.warn(`[notifications] Tower responded ${response.status} for ${payload.type} notification (project ${payload.projectId})`);
78
- }
79
70
  }
80
71
  catch {
81
72
  // Tower may not be running - silently ignore
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/notifications.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,10 @@ import type * as http from 'node:http';
8
8
  * HTML-escape a string to prevent XSS
9
9
  */
10
10
  export declare function escapeHtml(str: string): string;
11
+ /**
12
+ * Read raw request body as a string with size limit.
13
+ */
14
+ export declare function readBody(req: http.IncomingMessage, maxSize?: number): Promise<string>;
11
15
  /**
12
16
  * Parse JSON body from request with size limit
13
17
  * @param req - HTTP incoming message
@@ -1 +1 @@
1
- {"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/server-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AAEvC;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO9C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyBhH;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAEpE"}
1
+ {"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/server-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AAEvC;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO9C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB1F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyBhH;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAEpE"}
@@ -14,6 +14,26 @@ export function escapeHtml(str) {
14
14
  .replace(/"/g, '&quot;')
15
15
  .replace(/'/g, '&#39;');
16
16
  }
17
+ /**
18
+ * Read raw request body as a string with size limit.
19
+ */
20
+ export function readBody(req, maxSize = 1024 * 1024) {
21
+ return new Promise((resolve, reject) => {
22
+ const chunks = [];
23
+ let size = 0;
24
+ req.on('data', (chunk) => {
25
+ size += chunk.length;
26
+ if (size > maxSize) {
27
+ reject(new Error('Request body too large'));
28
+ req.destroy();
29
+ return;
30
+ }
31
+ chunks.push(chunk);
32
+ });
33
+ req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
34
+ req.on('error', reject);
35
+ });
36
+ }
17
37
  /**
18
38
  * Parse JSON body from request with size limit
19
39
  * @param req - HTTP incoming message
@@ -1 +1 @@
1
- {"version":3,"file":"server-utils.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/server-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAyB,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAC5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC5C,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"server-utils.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/server-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAyB,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IACvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC5C,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAyB,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAC5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC5C,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -27,6 +27,11 @@ export declare function spawnDetached(command: string, args: string[], options?:
27
27
  * Uses spawn to avoid shell injection
28
28
  */
29
29
  export declare function commandExists(command: string): Promise<boolean>;
30
+ /**
31
+ * Check if a single port is available (not in use).
32
+ * Uses native Node socket binding instead of lsof for cross-platform support.
33
+ */
34
+ export declare function isPortAvailable(port: number): Promise<boolean>;
30
35
  /**
31
36
  * Find an available port starting from the given port
32
37
  * Uses native Node socket binding instead of lsof for cross-platform support
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKpE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,GAAG,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GACxE,YAAY,CA+Cd;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYrE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB1E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5D;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAehE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKpE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,GAAG,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GACxE,YAAY,CA+Cd;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYrE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU1E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5D;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAehE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D"}