@cluesmith/codev 3.2.4 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/dashboard-dist/assets/index-BZRTEMtH.css +32 -0
  2. package/dashboard-dist/assets/{index-BZ1x7x1X.js → index-D3XaKpZW.js} +46 -44
  3. package/dashboard-dist/assets/index-D3XaKpZW.js.map +1 -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 +154 -0
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  9. package/dist/agent-farm/commands/cleanup.js +16 -0
  10. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  11. package/dist/agent-farm/commands/inbox.d.ts +42 -0
  12. package/dist/agent-farm/commands/inbox.d.ts.map +1 -0
  13. package/dist/agent-farm/commands/inbox.js +129 -0
  14. package/dist/agent-farm/commands/inbox.js.map +1 -0
  15. package/dist/agent-farm/commands/interrupt.d.ts +20 -0
  16. package/dist/agent-farm/commands/interrupt.d.ts.map +1 -0
  17. package/dist/agent-farm/commands/interrupt.js +65 -0
  18. package/dist/agent-farm/commands/interrupt.js.map +1 -0
  19. package/dist/agent-farm/commands/reset/constants.d.ts +52 -0
  20. package/dist/agent-farm/commands/reset/constants.d.ts.map +1 -0
  21. package/dist/agent-farm/commands/reset/constants.js +52 -0
  22. package/dist/agent-farm/commands/reset/constants.js.map +1 -0
  23. package/dist/agent-farm/commands/reset/context.d.ts +230 -0
  24. package/dist/agent-farm/commands/reset/context.d.ts.map +1 -0
  25. package/dist/agent-farm/commands/reset/context.js +428 -0
  26. package/dist/agent-farm/commands/reset/context.js.map +1 -0
  27. package/dist/agent-farm/commands/reset/index.d.ts +192 -0
  28. package/dist/agent-farm/commands/reset/index.d.ts.map +1 -0
  29. package/dist/agent-farm/commands/reset/index.js +488 -0
  30. package/dist/agent-farm/commands/reset/index.js.map +1 -0
  31. package/dist/agent-farm/commands/reset/receipt.d.ts +97 -0
  32. package/dist/agent-farm/commands/reset/receipt.d.ts.map +1 -0
  33. package/dist/agent-farm/commands/reset/receipt.js +149 -0
  34. package/dist/agent-farm/commands/reset/receipt.js.map +1 -0
  35. package/dist/agent-farm/commands/reset/reorient.d.ts +117 -0
  36. package/dist/agent-farm/commands/reset/reorient.d.ts.map +1 -0
  37. package/dist/agent-farm/commands/reset/reorient.js +313 -0
  38. package/dist/agent-farm/commands/reset/reorient.js.map +1 -0
  39. package/dist/agent-farm/commands/reset.d.ts +34 -0
  40. package/dist/agent-farm/commands/reset.d.ts.map +1 -0
  41. package/dist/agent-farm/commands/reset.js +309 -0
  42. package/dist/agent-farm/commands/reset.js.map +1 -0
  43. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  44. package/dist/agent-farm/commands/send.js +49 -8
  45. package/dist/agent-farm/commands/send.js.map +1 -1
  46. package/dist/agent-farm/commands/spawn-worktree.d.ts +105 -6
  47. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  48. package/dist/agent-farm/commands/spawn-worktree.js +289 -66
  49. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  50. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/spawn.js +13 -1
  52. package/dist/agent-farm/commands/spawn.js.map +1 -1
  53. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  54. package/dist/agent-farm/commands/status.js +80 -8
  55. package/dist/agent-farm/commands/status.js.map +1 -1
  56. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  57. package/dist/agent-farm/commands/tower.js +13 -0
  58. package/dist/agent-farm/commands/tower.js.map +1 -1
  59. package/dist/agent-farm/db/index.d.ts +1 -1
  60. package/dist/agent-farm/db/index.d.ts.map +1 -1
  61. package/dist/agent-farm/db/index.js +80 -1
  62. package/dist/agent-farm/db/index.js.map +1 -1
  63. package/dist/agent-farm/db/mailbox.d.ts +222 -0
  64. package/dist/agent-farm/db/mailbox.d.ts.map +1 -0
  65. package/dist/agent-farm/db/mailbox.js +304 -0
  66. package/dist/agent-farm/db/mailbox.js.map +1 -0
  67. package/dist/agent-farm/db/schema.d.ts +1 -1
  68. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  69. package/dist/agent-farm/db/schema.js +35 -0
  70. package/dist/agent-farm/db/schema.js.map +1 -1
  71. package/dist/agent-farm/db/types.d.ts +45 -0
  72. package/dist/agent-farm/db/types.d.ts.map +1 -1
  73. package/dist/agent-farm/db/types.js.map +1 -1
  74. package/dist/agent-farm/lib/builder-lookup.d.ts +1 -1
  75. package/dist/agent-farm/lib/builder-lookup.js +2 -2
  76. package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
  77. package/dist/agent-farm/lib/reconnect-backoff.d.ts +64 -0
  78. package/dist/agent-farm/lib/reconnect-backoff.d.ts.map +1 -0
  79. package/dist/agent-farm/lib/reconnect-backoff.js +57 -0
  80. package/dist/agent-farm/lib/reconnect-backoff.js.map +1 -0
  81. package/dist/agent-farm/lib/tower-client.d.ts +16 -6
  82. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  83. package/dist/agent-farm/lib/tower-client.js +37 -6
  84. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  85. package/dist/agent-farm/lib/tunnel-client.d.ts +69 -1
  86. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
  87. package/dist/agent-farm/lib/tunnel-client.js +225 -30
  88. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  89. package/dist/agent-farm/servers/canvas-relay.d.ts +60 -0
  90. package/dist/agent-farm/servers/canvas-relay.d.ts.map +1 -0
  91. package/dist/agent-farm/servers/canvas-relay.js +376 -0
  92. package/dist/agent-farm/servers/canvas-relay.js.map +1 -0
  93. package/dist/agent-farm/servers/cron-delivery.d.ts +72 -0
  94. package/dist/agent-farm/servers/cron-delivery.d.ts.map +1 -0
  95. package/dist/agent-farm/servers/cron-delivery.js +80 -0
  96. package/dist/agent-farm/servers/cron-delivery.js.map +1 -0
  97. package/dist/agent-farm/servers/delayed-send.d.ts +85 -0
  98. package/dist/agent-farm/servers/delayed-send.d.ts.map +1 -0
  99. package/dist/agent-farm/servers/delayed-send.js +165 -0
  100. package/dist/agent-farm/servers/delayed-send.js.map +1 -0
  101. package/dist/agent-farm/servers/gate-profiles.d.ts +67 -0
  102. package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -0
  103. package/dist/agent-farm/servers/gate-profiles.js +113 -0
  104. package/dist/agent-farm/servers/gate-profiles.js.map +1 -0
  105. package/dist/agent-farm/servers/mailbox-delivery.d.ts +370 -0
  106. package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -0
  107. package/dist/agent-farm/servers/mailbox-delivery.js +617 -0
  108. package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -0
  109. package/dist/agent-farm/servers/mailbox-wiring.d.ts +125 -0
  110. package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -0
  111. package/dist/agent-farm/servers/mailbox-wiring.js +425 -0
  112. package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -0
  113. package/dist/agent-farm/servers/message-write.d.ts +53 -1
  114. package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
  115. package/dist/agent-farm/servers/message-write.js +63 -0
  116. package/dist/agent-farm/servers/message-write.js.map +1 -1
  117. package/dist/agent-farm/servers/overview.d.ts +19 -0
  118. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  119. package/dist/agent-farm/servers/overview.js +100 -4
  120. package/dist/agent-farm/servers/overview.js.map +1 -1
  121. package/dist/agent-farm/servers/render-gate.d.ts +141 -0
  122. package/dist/agent-farm/servers/render-gate.d.ts.map +1 -0
  123. package/dist/agent-farm/servers/render-gate.js +251 -0
  124. package/dist/agent-farm/servers/render-gate.js.map +1 -0
  125. package/dist/agent-farm/servers/session-submit.d.ts +90 -0
  126. package/dist/agent-farm/servers/session-submit.d.ts.map +1 -0
  127. package/dist/agent-farm/servers/session-submit.js +127 -0
  128. package/dist/agent-farm/servers/session-submit.js.map +1 -0
  129. package/dist/agent-farm/servers/tower-cron.d.ts +10 -7
  130. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  131. package/dist/agent-farm/servers/tower-cron.js +58 -53
  132. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  133. package/dist/agent-farm/servers/tower-instances.d.ts +14 -2
  134. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  135. package/dist/agent-farm/servers/tower-instances.js +78 -16
  136. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  137. package/dist/agent-farm/servers/tower-messages.d.ts +38 -1
  138. package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -1
  139. package/dist/agent-farm/servers/tower-messages.js +106 -1
  140. package/dist/agent-farm/servers/tower-messages.js.map +1 -1
  141. package/dist/agent-farm/servers/tower-routes.d.ts +16 -4
  142. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  143. package/dist/agent-farm/servers/tower-routes.js +826 -145
  144. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  145. package/dist/agent-farm/servers/tower-server.js +188 -34
  146. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  147. package/dist/agent-farm/servers/tower-terminals.d.ts +23 -2
  148. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  149. package/dist/agent-farm/servers/tower-terminals.js +134 -127
  150. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  151. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  152. package/dist/agent-farm/servers/tower-tunnel.js +63 -4
  153. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  154. package/dist/agent-farm/servers/tower-types.d.ts +2 -1
  155. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  156. package/dist/agent-farm/servers/tower-utils.d.ts +64 -1
  157. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  158. package/dist/agent-farm/servers/tower-utils.js +168 -1
  159. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  160. package/dist/agent-farm/servers/tower-websocket.d.ts +6 -1
  161. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  162. package/dist/agent-farm/servers/tower-websocket.js +95 -57
  163. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  164. package/dist/agent-farm/servers/write-queue.d.ts +35 -0
  165. package/dist/agent-farm/servers/write-queue.d.ts.map +1 -0
  166. package/dist/agent-farm/servers/write-queue.js +56 -0
  167. package/dist/agent-farm/servers/write-queue.js.map +1 -0
  168. package/dist/agent-farm/types.d.ts +39 -0
  169. package/dist/agent-farm/types.d.ts.map +1 -1
  170. package/dist/agent-farm/utils/agent-names.d.ts +2 -2
  171. package/dist/agent-farm/utils/agent-names.d.ts.map +1 -1
  172. package/dist/agent-farm/utils/agent-names.js +3 -3
  173. package/dist/agent-farm/utils/agent-names.js.map +1 -1
  174. package/dist/agent-farm/utils/architect-name.d.ts +2 -2
  175. package/dist/agent-farm/utils/architect-name.d.ts.map +1 -1
  176. package/dist/agent-farm/utils/architect-name.js +3 -3
  177. package/dist/agent-farm/utils/architect-name.js.map +1 -1
  178. package/dist/agent-farm/utils/config.d.ts +13 -0
  179. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  180. package/dist/agent-farm/utils/config.js +33 -1
  181. package/dist/agent-farm/utils/config.js.map +1 -1
  182. package/dist/agent-farm/utils/harness.d.ts +103 -7
  183. package/dist/agent-farm/utils/harness.d.ts.map +1 -1
  184. package/dist/agent-farm/utils/harness.js +126 -19
  185. package/dist/agent-farm/utils/harness.js.map +1 -1
  186. package/dist/agent-farm/utils/message-format.d.ts +8 -0
  187. package/dist/agent-farm/utils/message-format.d.ts.map +1 -1
  188. package/dist/agent-farm/utils/message-format.js +20 -0
  189. package/dist/agent-farm/utils/message-format.js.map +1 -1
  190. package/dist/agent-farm/utils/server-utils.d.ts +80 -4
  191. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  192. package/dist/agent-farm/utils/server-utils.js +286 -5
  193. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  194. package/dist/cli.d.ts.map +1 -1
  195. package/dist/cli.js +6 -32
  196. package/dist/cli.js.map +1 -1
  197. package/dist/commands/consult/cli-options.d.ts +34 -0
  198. package/dist/commands/consult/cli-options.d.ts.map +1 -0
  199. package/dist/commands/consult/cli-options.js +67 -0
  200. package/dist/commands/consult/cli-options.js.map +1 -0
  201. package/dist/commands/consult/index.d.ts +56 -2
  202. package/dist/commands/consult/index.d.ts.map +1 -1
  203. package/dist/commands/consult/index.js +272 -28
  204. package/dist/commands/consult/index.js.map +1 -1
  205. package/dist/commands/consult/metrics.d.ts +42 -0
  206. package/dist/commands/consult/metrics.d.ts.map +1 -1
  207. package/dist/commands/consult/metrics.js +129 -9
  208. package/dist/commands/consult/metrics.js.map +1 -1
  209. package/dist/commands/doctor.d.ts.map +1 -1
  210. package/dist/commands/doctor.js +71 -19
  211. package/dist/commands/doctor.js.map +1 -1
  212. package/dist/commands/porch/checks.d.ts +23 -0
  213. package/dist/commands/porch/checks.d.ts.map +1 -1
  214. package/dist/commands/porch/checks.js +60 -0
  215. package/dist/commands/porch/checks.js.map +1 -1
  216. package/dist/commands/porch/config.d.ts +20 -0
  217. package/dist/commands/porch/config.d.ts.map +1 -1
  218. package/dist/commands/porch/config.js +20 -0
  219. package/dist/commands/porch/config.js.map +1 -1
  220. package/dist/commands/porch/index.js +21 -28
  221. package/dist/commands/porch/index.js.map +1 -1
  222. package/dist/commands/porch/next.d.ts.map +1 -1
  223. package/dist/commands/porch/next.js +2 -41
  224. package/dist/commands/porch/next.js.map +1 -1
  225. package/dist/lib/config.d.ts +69 -3
  226. package/dist/lib/config.d.ts.map +1 -1
  227. package/dist/lib/config.js +67 -3
  228. package/dist/lib/config.js.map +1 -1
  229. package/dist/lib/consult-lanes.d.ts +149 -0
  230. package/dist/lib/consult-lanes.d.ts.map +1 -0
  231. package/dist/lib/consult-lanes.js +360 -0
  232. package/dist/lib/consult-lanes.js.map +1 -0
  233. package/dist/lib/forge-contracts.d.ts +9 -0
  234. package/dist/lib/forge-contracts.d.ts.map +1 -1
  235. package/dist/lib/forge-contracts.js.map +1 -1
  236. package/dist/lib/github.d.ts +15 -1
  237. package/dist/lib/github.d.ts.map +1 -1
  238. package/dist/lib/github.js +18 -1
  239. package/dist/lib/github.js.map +1 -1
  240. package/dist/lib/prompt-behavior-metrics.d.ts +67 -0
  241. package/dist/lib/prompt-behavior-metrics.d.ts.map +1 -0
  242. package/dist/lib/prompt-behavior-metrics.js +290 -0
  243. package/dist/lib/prompt-behavior-metrics.js.map +1 -0
  244. package/dist/lib/skeleton.d.ts +22 -1
  245. package/dist/lib/skeleton.d.ts.map +1 -1
  246. package/dist/lib/skeleton.js +120 -0
  247. package/dist/lib/skeleton.js.map +1 -1
  248. package/dist/lib/test-env.d.ts +74 -0
  249. package/dist/lib/test-env.d.ts.map +1 -0
  250. package/dist/lib/test-env.js +92 -0
  251. package/dist/lib/test-env.js.map +1 -0
  252. package/dist/terminal/attach-replay.d.ts +39 -0
  253. package/dist/terminal/attach-replay.d.ts.map +1 -0
  254. package/dist/terminal/attach-replay.js +76 -0
  255. package/dist/terminal/attach-replay.js.map +1 -0
  256. package/dist/terminal/pty-manager.d.ts +2 -0
  257. package/dist/terminal/pty-manager.d.ts.map +1 -1
  258. package/dist/terminal/pty-manager.js +51 -23
  259. package/dist/terminal/pty-manager.js.map +1 -1
  260. package/dist/terminal/pty-session.d.ts +201 -1
  261. package/dist/terminal/pty-session.d.ts.map +1 -1
  262. package/dist/terminal/pty-session.js +327 -46
  263. package/dist/terminal/pty-session.js.map +1 -1
  264. package/dist/terminal/ring-buffer.d.ts +39 -6
  265. package/dist/terminal/ring-buffer.d.ts.map +1 -1
  266. package/dist/terminal/ring-buffer.js +74 -6
  267. package/dist/terminal/ring-buffer.js.map +1 -1
  268. package/dist/terminal/session-manager.d.ts +53 -0
  269. package/dist/terminal/session-manager.d.ts.map +1 -1
  270. package/dist/terminal/session-manager.js +94 -9
  271. package/dist/terminal/session-manager.js.map +1 -1
  272. package/dist/terminal/session-screen.d.ts +116 -0
  273. package/dist/terminal/session-screen.d.ts.map +1 -0
  274. package/dist/terminal/session-screen.js +180 -0
  275. package/dist/terminal/session-screen.js.map +1 -0
  276. package/dist/terminal/shellper-main.js +2 -1
  277. package/dist/terminal/shellper-main.js.map +1 -1
  278. package/dist/terminal/shellper-process.d.ts +1 -1
  279. package/dist/terminal/shellper-process.d.ts.map +1 -1
  280. package/dist/terminal/shellper-process.js +17 -8
  281. package/dist/terminal/shellper-process.js.map +1 -1
  282. package/dist/terminal/shellper-replay-buffer.d.ts +69 -7
  283. package/dist/terminal/shellper-replay-buffer.d.ts.map +1 -1
  284. package/dist/terminal/shellper-replay-buffer.js +167 -31
  285. package/dist/terminal/shellper-replay-buffer.js.map +1 -1
  286. package/package.json +13 -8
  287. package/scripts/forge/gitea/pr-view.sh +4 -1
  288. package/scripts/forge/github/pr-view.sh +1 -1
  289. package/scripts/forge/gitlab/pr-view.sh +4 -1
  290. package/skeleton/.claude/skills/afx/SKILL.md +68 -1
  291. package/skeleton/.claude/skills/arch-init/SKILL.md +22 -9
  292. package/skeleton/.claude/skills/arch-save/SKILL.md +183 -0
  293. package/skeleton/.claude/skills/codev/SKILL.md +31 -0
  294. package/skeleton/.claude/skills/runnable-worktrees/SKILL.md +119 -0
  295. package/skeleton/.codex/skills/afx/SKILL.md +68 -1
  296. package/skeleton/.codex/skills/arch-init/SKILL.md +22 -9
  297. package/skeleton/.codex/skills/arch-save/SKILL.md +183 -0
  298. package/skeleton/.codex/skills/codev/SKILL.md +31 -0
  299. package/skeleton/.codex/skills/runnable-worktrees/SKILL.md +119 -0
  300. package/skeleton/protocols/air/builder-prompt.md +28 -47
  301. package/skeleton/protocols/air/consult-types/impl-review.md +17 -34
  302. package/skeleton/protocols/air/consult-types/pr-review.md +14 -37
  303. package/skeleton/protocols/air/prompts/implement.md +20 -73
  304. package/skeleton/protocols/air/prompts/pr.md +22 -54
  305. package/skeleton/protocols/air/protocol.md +40 -71
  306. package/skeleton/protocols/aspir/builder-prompt.md +29 -66
  307. package/skeleton/protocols/aspir/consult-types/impl-review.md +17 -44
  308. package/skeleton/protocols/aspir/consult-types/phase-review.md +17 -44
  309. package/skeleton/protocols/aspir/consult-types/plan-review.md +14 -38
  310. package/skeleton/protocols/aspir/consult-types/pr-review.md +13 -39
  311. package/skeleton/protocols/aspir/consult-types/spec-review.md +13 -33
  312. package/skeleton/protocols/aspir/prompts/implement.md +27 -196
  313. package/skeleton/protocols/aspir/prompts/plan.md +21 -85
  314. package/skeleton/protocols/aspir/prompts/review.md +29 -228
  315. package/skeleton/protocols/aspir/prompts/specify.md +25 -111
  316. package/skeleton/protocols/aspir/protocol.json +10 -0
  317. package/skeleton/protocols/aspir/protocol.md +36 -82
  318. package/skeleton/protocols/bugfix/builder-prompt.md +23 -45
  319. package/skeleton/protocols/bugfix/consult-types/impl-review.md +21 -45
  320. package/skeleton/protocols/bugfix/consult-types/pr-review.md +18 -52
  321. package/skeleton/protocols/bugfix/prompts/fix.md +16 -61
  322. package/skeleton/protocols/bugfix/prompts/investigate.md +18 -62
  323. package/skeleton/protocols/bugfix/prompts/pr.md +22 -57
  324. package/skeleton/protocols/bugfix/protocol.md +44 -50
  325. package/skeleton/protocols/experiment/builder-prompt.md +25 -58
  326. package/skeleton/protocols/experiment/protocol.md +22 -188
  327. package/skeleton/protocols/experiment/templates/notes.md +11 -71
  328. package/skeleton/protocols/maintain/builder-prompt.md +24 -45
  329. package/skeleton/protocols/maintain/consult-types/impl-review.md +17 -44
  330. package/skeleton/protocols/maintain/consult-types/pr-review.md +13 -39
  331. package/skeleton/protocols/maintain/prompts/maintain.md +1 -1
  332. package/skeleton/protocols/maintain/protocol.md +32 -266
  333. package/skeleton/protocols/maintain/templates/maintenance-run.md +11 -0
  334. package/skeleton/protocols/pir/builder-prompt.md +31 -64
  335. package/skeleton/protocols/pir/consult-types/impl-review.md +17 -50
  336. package/skeleton/protocols/pir/consult-types/pr-review.md +11 -40
  337. package/skeleton/protocols/pir/prompts/implement.md +2 -3
  338. package/skeleton/protocols/pir/prompts/plan.md +1 -4
  339. package/skeleton/protocols/pir/prompts/review.md +2 -2
  340. package/skeleton/protocols/pir/protocol.md +54 -177
  341. package/skeleton/protocols/research/builder-prompt.md +27 -58
  342. package/skeleton/protocols/research/protocol.md +28 -153
  343. package/skeleton/protocols/spike/builder-prompt.md +30 -48
  344. package/skeleton/protocols/spike/protocol.md +24 -107
  345. package/skeleton/protocols/spike/templates/findings.md +9 -39
  346. package/skeleton/protocols/spir/builder-prompt.md +33 -62
  347. package/skeleton/protocols/spir/consult-types/impl-review.md +17 -44
  348. package/skeleton/protocols/spir/consult-types/phase-review.md +17 -44
  349. package/skeleton/protocols/spir/consult-types/plan-review.md +14 -38
  350. package/skeleton/protocols/spir/consult-types/pr-review.md +13 -39
  351. package/skeleton/protocols/spir/consult-types/spec-review.md +13 -33
  352. package/skeleton/protocols/spir/prompts/implement.md +26 -195
  353. package/skeleton/protocols/spir/prompts/plan.md +20 -84
  354. package/skeleton/protocols/spir/prompts/review.md +28 -227
  355. package/skeleton/protocols/spir/prompts/specify.md +24 -110
  356. package/skeleton/protocols/spir/protocol.json +10 -0
  357. package/skeleton/protocols/spir/protocol.md +84 -633
  358. package/skeleton/protocols/spir/templates/plan.md +28 -147
  359. package/skeleton/protocols/spir/templates/review.md +21 -80
  360. package/skeleton/protocols/spir/templates/spec.md +24 -118
  361. package/skeleton/resources/commands/agent-farm.md +262 -0
  362. package/skeleton/resources/commands/consult.md +236 -8
  363. package/skeleton/resources/commands/overview.md +1 -0
  364. package/skeleton/roles/architect.md +67 -317
  365. package/skeleton/roles/builder.md +76 -191
  366. package/skeleton/templates/AGENTS.md +2 -0
  367. package/skeleton/templates/CLAUDE.md +2 -0
  368. package/templates/3d-viewer.html +32 -4
  369. package/templates/open.html +58 -12
  370. package/templates/tower.html +65 -9
  371. package/templates/vendor/three-3MFLoader.js +1478 -0
  372. package/templates/vendor/three-STLLoader.js +410 -0
  373. package/templates/vendor/three-TrackballControls.js +828 -0
  374. package/templates/vendor/three-fflate.module.js +2474 -0
  375. package/templates/vendor/three.module.js +53044 -0
  376. package/dashboard-dist/assets/index-BZ1x7x1X.js.map +0 -1
  377. package/dashboard-dist/assets/index-DB1KBSNE.css +0 -32
  378. package/dist/agent-farm/servers/send-buffer.d.ts +0 -59
  379. package/dist/agent-farm/servers/send-buffer.d.ts.map +0 -1
  380. package/dist/agent-farm/servers/send-buffer.js +0 -116
  381. package/dist/agent-farm/servers/send-buffer.js.map +0 -1
  382. package/skeleton/porch/prompts/defend.md +0 -108
  383. package/skeleton/porch/prompts/diagnose.md +0 -70
  384. package/skeleton/porch/prompts/evaluate.md +0 -132
  385. package/skeleton/porch/prompts/fix.md +0 -59
  386. package/skeleton/porch/prompts/implement.md +0 -88
  387. package/skeleton/porch/prompts/plan.md +0 -74
  388. package/skeleton/porch/prompts/pr.md +0 -84
  389. package/skeleton/porch/prompts/review.md +0 -249
  390. package/skeleton/porch/prompts/specify.md +0 -53
  391. package/skeleton/porch/prompts/test.md +0 -63
  392. package/skeleton/protocols/aspir/templates/plan.md +0 -184
  393. package/skeleton/protocols/aspir/templates/review.md +0 -120
  394. package/skeleton/protocols/aspir/templates/spec.md +0 -154
@@ -67,6 +67,51 @@ export interface DbAnnotation {
67
67
  parent_id: string | null;
68
68
  started_at: string;
69
69
  }
70
+ /**
71
+ * Mailbox lifecycle status (Spec 1313).
72
+ *
73
+ * A row is born `held` and moves to exactly one terminal state:
74
+ * - `delivered` — written to the recipient's PTY after a clean render-gate pass
75
+ * - `superseded` — replaced by a newer row sharing its supersede_key (cron only)
76
+ * - `dismissed` — cleared by an operator via `afx inbox dismiss`
77
+ * Terminal states are final; the repository enforces `held → *` only.
78
+ */
79
+ export type MailboxStatus = 'held' | 'delivered' | 'superseded' | 'dismissed';
80
+ /**
81
+ * Why a mailbox row is currently held (Spec 1313). Null once delivered.
82
+ * - `busy` — the target PTY's prompt is not a clean, empty prompt (draft/menu/etc.)
83
+ * - `no-profile` — the target app has no render-gate classifier profile (unknown app)
84
+ * - `no-live-pty` — the recipient agent has no live terminal right now
85
+ */
86
+ export type MailboxReason = 'busy' | 'no-profile' | 'no-live-pty';
87
+ /**
88
+ * Database row type for the mailbox table (Spec 1313).
89
+ *
90
+ * Rows address AGENTS (`to_agent` within `workspace_path`), not PTYs, so a
91
+ * respawned terminal drains its predecessor's mail. Timestamps are epoch-ms
92
+ * integers set by the repository at the call site (not SQLite `datetime`), so
93
+ * ordering and age math are trivial and test-injectable. `body` is the raw
94
+ * message (never logged); `formatted_message` is what gets written to the PTY.
95
+ */
96
+ export interface DbMailbox {
97
+ id: string;
98
+ workspace_path: string;
99
+ to_agent: string;
100
+ terminal_id: string | null;
101
+ from_agent: string | null;
102
+ from_workspace: string | null;
103
+ body: string;
104
+ formatted_message: string;
105
+ no_enter: number;
106
+ status: MailboxStatus;
107
+ reason: MailboxReason | null;
108
+ supersede_key: string | null;
109
+ escalated: number;
110
+ not_before: number | null;
111
+ created_at: number;
112
+ updated_at: number;
113
+ resolved_at: number | null;
114
+ }
70
115
  /**
71
116
  * Convert database architect row to application type
72
117
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/db/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAQ5E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAe1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAM9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,CAStE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/db/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent-farm/db/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsEH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAgB;IAC1D,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,EAAE;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;KACvC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAc;IAC/C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAA2B;QACvC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAmB;QAC7B,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;QACpC,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,IAAI,SAAS;KAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;KACzC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAiB;IACxD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,CAAC,WAA2C;YACrD,EAAE,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;SAC/B;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent-farm/db/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsHH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAgB;IAC1D,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,EAAE;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;KACvC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAc;IAC/C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAA2B;QACvC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAmB;QAC7B,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;QACpC,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB,IAAI,SAAS;KAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;KACzC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAiB;IACxD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,CAAC,WAA2C;YACrD,EAAE,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;SAC/B;KACF,CAAC;AACJ,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * Tower may know about builders that were never written to local state.db
8
8
  * (Bugfix #717).
9
9
  *
10
- * Matching delegates to `resolveAgentName` in @cluesmith/codev-core, so
10
+ * Matching delegates to `resolveAgentName` in @cluesmith/codev-sdk, so
11
11
  * VSCode, agent-farm, and any other consumer share identical semantics:
12
12
  * case-insensitive exact match (with leading zeros stripped), then
13
13
  * tail-match (e.g. "109" → "builder-spir-109").
@@ -7,7 +7,7 @@
7
7
  * Tower may know about builders that were never written to local state.db
8
8
  * (Bugfix #717).
9
9
  *
10
- * Matching delegates to `resolveAgentName` in @cluesmith/codev-core, so
10
+ * Matching delegates to `resolveAgentName` in @cluesmith/codev-sdk, so
11
11
  * VSCode, agent-farm, and any other consumer share identical semantics:
12
12
  * case-insensitive exact match (with leading zeros stripped), then
13
13
  * tail-match (e.g. "109" → "builder-spir-109").
@@ -17,7 +17,7 @@ import { getBuilder, getBuilders } from '../state.js';
17
17
  import { getConfig } from '../utils/config.js';
18
18
  import { normalizeWorkspacePath } from '../servers/tower-utils.js';
19
19
  import { getGlobalDb } from '../db/index.js';
20
- import { resolveAgentName } from '@cluesmith/codev-core/agent-names';
20
+ import { resolveAgentName } from '@cluesmith/codev-sdk/agent-names';
21
21
  /**
22
22
  * Find a builder by issue number. Local state first, then Tower fallback.
23
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"builder-lookup.js","sourceRoot":"","sources":["../../../src/agent-farm/lib/builder-lookup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder-lookup.js","sourceRoot":"","sources":["../../../src/agent-farm/lib/builder-lookup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Private reconnect-backoff copy for Tower internals (issue #1189).
3
+ *
4
+ * `@cluesmith/codev-sdk/reconnect-policy` is the canonical home of this
5
+ * logic, but Tower itself needs two pieces of it server-side: the backoff
6
+ * curve for the tunnel control channel (`tunnel-client.ts`, Tower acting as a
7
+ * WS client of the cloud relay) and the session-unknown close code that
8
+ * `tower-websocket.ts` emits. The server must not import the client sdk
9
+ * (the issue's isolation invariant), and putting algorithm code in
10
+ * `@cluesmith/codev-types` breaks its wire-contracts-only rule, so this
11
+ * deliberate ~50-line duplication is the recorded resolution. If you change
12
+ * the curve or the close code, change both copies.
13
+ */
14
+ export interface BackoffOptions {
15
+ /** Base delay in milliseconds (the attempt-0 delay before jitter). Default 1000. */
16
+ baseMs?: number;
17
+ /** Maximum delay in milliseconds (the curve is clamped to this). Default 30_000. */
18
+ capMs?: number;
19
+ /**
20
+ * Upper bound of random jitter (in ms) added to each delay before the cap.
21
+ * Default 0 (no jitter). The tunnel sets 1000 to avoid thundering-herd
22
+ * reconnects against the cloud relay.
23
+ */
24
+ jitterMs?: number;
25
+ /**
26
+ * Escalation floor: once `attempt >= afterAttempts`, the delay is clamped
27
+ * to `delayMs` (bypassing the exponential curve, jitter, and cap). The
28
+ * tunnel uses `{ afterAttempts: 10, delayMs: 300_000 }` — a 5-minute holding
29
+ * pattern after sustained failure instead of giving up.
30
+ */
31
+ floor?: {
32
+ afterAttempts: number;
33
+ delayMs: number;
34
+ };
35
+ /** Injectable RNG for deterministic jitter in tests. Default `Math.random`. */
36
+ random?: () => number;
37
+ }
38
+ /**
39
+ * Compute the backoff delay for a given attempt index:
40
+ * `min(base * 2^attempt + jitter, cap)`, with an optional floor short-circuit
41
+ * applied first. The `attempt` index is explicit so each call site owns its
42
+ * own counter and increment ordering.
43
+ */
44
+ export declare function backoffDelayMs(attempt: number, opts?: BackoffOptions): number;
45
+ /**
46
+ * Application-range WebSocket close code Tower uses to tell a browser client
47
+ * that the terminal session is unknown/gone. Browsers can't read a failed
48
+ * *upgrade*'s HTTP status (they only see close `1006`), so Tower accepts the
49
+ * upgrade for browser clients and immediately closes with this code, which the
50
+ * dashboard reads via `CloseEvent.code` (#971). In the WS-spec private range
51
+ * (`4000–4999`); the mnemonic `4404` echoes HTTP 404.
52
+ */
53
+ export declare const WS_CLOSE_SESSION_UNKNOWN = 4404;
54
+ /**
55
+ * Application-range WebSocket close code Tower uses to tell a browser client
56
+ * that the upgrade was rejected for failing request authentication (advisory
57
+ * GHSA-xvjp-7748-v88v). Same browser-can't-read-upgrade-status rationale as
58
+ * {@link WS_CLOSE_SESSION_UNKNOWN}: Tower accepts the upgrade for browser
59
+ * clients and immediately closes with this code so the client gets a clean,
60
+ * distinguishable signal instead of a silent `1006`. The mnemonic `4401`
61
+ * echoes HTTP 401.
62
+ */
63
+ export declare const WS_CLOSE_UNAUTHORIZED = 4401;
64
+ //# sourceMappingURL=reconnect-backoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconnect-backoff.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/lib/reconnect-backoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAKD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CAejF;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Private reconnect-backoff copy for Tower internals (issue #1189).
3
+ *
4
+ * `@cluesmith/codev-sdk/reconnect-policy` is the canonical home of this
5
+ * logic, but Tower itself needs two pieces of it server-side: the backoff
6
+ * curve for the tunnel control channel (`tunnel-client.ts`, Tower acting as a
7
+ * WS client of the cloud relay) and the session-unknown close code that
8
+ * `tower-websocket.ts` emits. The server must not import the client sdk
9
+ * (the issue's isolation invariant), and putting algorithm code in
10
+ * `@cluesmith/codev-types` breaks its wire-contracts-only rule, so this
11
+ * deliberate ~50-line duplication is the recorded resolution. If you change
12
+ * the curve or the close code, change both copies.
13
+ */
14
+ const DEFAULT_BASE_MS = 1000;
15
+ const DEFAULT_CAP_MS = 30_000;
16
+ /**
17
+ * Compute the backoff delay for a given attempt index:
18
+ * `min(base * 2^attempt + jitter, cap)`, with an optional floor short-circuit
19
+ * applied first. The `attempt` index is explicit so each call site owns its
20
+ * own counter and increment ordering.
21
+ */
22
+ export function backoffDelayMs(attempt, opts = {}) {
23
+ const { floor } = opts;
24
+ if (floor && attempt >= floor.afterAttempts) {
25
+ return floor.delayMs;
26
+ }
27
+ const base = opts.baseMs ?? DEFAULT_BASE_MS;
28
+ const cap = opts.capMs ?? DEFAULT_CAP_MS;
29
+ const jitterMs = opts.jitterMs ?? 0;
30
+ const random = opts.random ?? Math.random;
31
+ const safeAttempt = Math.max(0, attempt);
32
+ let jitter = 0;
33
+ if (jitterMs > 0) {
34
+ jitter = Math.floor(random() * jitterMs);
35
+ }
36
+ return Math.min(base * 2 ** safeAttempt + jitter, cap);
37
+ }
38
+ /**
39
+ * Application-range WebSocket close code Tower uses to tell a browser client
40
+ * that the terminal session is unknown/gone. Browsers can't read a failed
41
+ * *upgrade*'s HTTP status (they only see close `1006`), so Tower accepts the
42
+ * upgrade for browser clients and immediately closes with this code, which the
43
+ * dashboard reads via `CloseEvent.code` (#971). In the WS-spec private range
44
+ * (`4000–4999`); the mnemonic `4404` echoes HTTP 404.
45
+ */
46
+ export const WS_CLOSE_SESSION_UNKNOWN = 4404;
47
+ /**
48
+ * Application-range WebSocket close code Tower uses to tell a browser client
49
+ * that the upgrade was rejected for failing request authentication (advisory
50
+ * GHSA-xvjp-7748-v88v). Same browser-can't-read-upgrade-status rationale as
51
+ * {@link WS_CLOSE_SESSION_UNKNOWN}: Tower accepts the upgrade for browser
52
+ * clients and immediately closes with this code so the client gets a clean,
53
+ * distinguishable signal instead of a silent `1006`. The mnemonic `4401`
54
+ * echoes HTTP 401.
55
+ */
56
+ export const WS_CLOSE_UNAUTHORIZED = 4401;
57
+ //# sourceMappingURL=reconnect-backoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconnect-backoff.js","sourceRoot":"","sources":["../../../src/agent-farm/lib/reconnect-backoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAwBH,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,OAAuB,EAAE;IACvE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC"}
@@ -1,10 +1,20 @@
1
1
  /**
2
- * Tower API Client — re-exports from @cluesmith/codev-core
2
+ * Tower API Client — the CLI's composition of `@cluesmith/codev-sdk`.
3
3
  *
4
- * All implementation lives in packages/core/src/tower-client.ts.
5
- * This file preserves the import path for existing consumers.
4
+ * The sdk client is environment-agnostic and defaults to NO auth (issue
5
+ * #1189); this wrapper is where the CLI's Node entitlements are injected:
6
+ * the disk-backed local key (issuing it if missing, via codev-core) and the
7
+ * `BRIDGE_TOWER_HOST` environment override. Every CLI/Tower call site
8
+ * constructs through this module, so their behavior is identical to the
9
+ * pre-split client. Import path preserved for existing consumers.
6
10
  */
7
- export { TowerClient, getTowerClient, type TowerClientOptions, type TowerWorkspace, type TowerWorkspaceStatus, type TowerHealth, type TowerTunnelStatus, type TowerStatus, type TowerTerminal, type HuskCandidate, type HuskPreview, type HuskSweepResult, } from '@cluesmith/codev-core/tower-client';
8
- export { encodeWorkspacePath, decodeWorkspacePath } from '@cluesmith/codev-core/workspace';
9
- export { DEFAULT_TOWER_PORT, AGENT_FARM_DIR } from '@cluesmith/codev-core/constants';
11
+ import { TowerClient as SdkTowerClient, type TowerClientOptions } from '@cluesmith/codev-sdk/tower-client';
12
+ export declare class TowerClient extends SdkTowerClient {
13
+ constructor(portOrOptions?: number | TowerClientOptions);
14
+ }
15
+ export { type TowerClientOptions, type TowerWorkspace, type TowerWorkspaceStatus, type TowerHealth, type TowerTunnelStatus, type TowerStatus, type TowerTerminal, type TerminalType, type HuskCandidate, type HuskPreview, type HuskSweepResult, } from '@cluesmith/codev-sdk/tower-client';
16
+ export { encodeWorkspacePath, decodeWorkspacePath } from '@cluesmith/codev-sdk/workspace';
17
+ export { DEFAULT_TOWER_PORT } from '@cluesmith/codev-sdk/constants';
18
+ export { AGENT_FARM_DIR } from '@cluesmith/codev-core/constants';
19
+ export declare function getTowerClient(port?: number): TowerClient;
10
20
  //# sourceMappingURL=tower-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tower-client.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/lib/tower-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"tower-client.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/lib/tower-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,WAAW,IAAI,cAAc,EAC7B,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAI3C,qBAAa,WAAY,SAAQ,cAAc;gBACjC,aAAa,CAAC,EAAE,MAAM,GAAG,kBAAkB;CAaxD;AAED,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMjE,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAKzD"}
@@ -1,10 +1,41 @@
1
1
  /**
2
- * Tower API Client — re-exports from @cluesmith/codev-core
2
+ * Tower API Client — the CLI's composition of `@cluesmith/codev-sdk`.
3
3
  *
4
- * All implementation lives in packages/core/src/tower-client.ts.
5
- * This file preserves the import path for existing consumers.
4
+ * The sdk client is environment-agnostic and defaults to NO auth (issue
5
+ * #1189); this wrapper is where the CLI's Node entitlements are injected:
6
+ * the disk-backed local key (issuing it if missing, via codev-core) and the
7
+ * `BRIDGE_TOWER_HOST` environment override. Every CLI/Tower call site
8
+ * constructs through this module, so their behavior is identical to the
9
+ * pre-split client. Import path preserved for existing consumers.
6
10
  */
7
- export { TowerClient, getTowerClient, } from '@cluesmith/codev-core/tower-client';
8
- export { encodeWorkspacePath, decodeWorkspacePath } from '@cluesmith/codev-core/workspace';
9
- export { DEFAULT_TOWER_PORT, AGENT_FARM_DIR } from '@cluesmith/codev-core/constants';
11
+ import { TowerClient as SdkTowerClient, } from '@cluesmith/codev-sdk/tower-client';
12
+ import { DEFAULT_TOWER_PORT } from '@cluesmith/codev-sdk/constants';
13
+ import { ensureLocalKey } from '@cluesmith/codev-core/auth';
14
+ export class TowerClient extends SdkTowerClient {
15
+ constructor(portOrOptions) {
16
+ let options;
17
+ if (typeof portOrOptions === 'number') {
18
+ options = { port: portOrOptions };
19
+ }
20
+ else {
21
+ options = portOrOptions ?? {};
22
+ }
23
+ super({
24
+ getAuthKey: ensureLocalKey,
25
+ host: process.env.BRIDGE_TOWER_HOST,
26
+ ...options,
27
+ });
28
+ }
29
+ }
30
+ export { encodeWorkspacePath, decodeWorkspacePath } from '@cluesmith/codev-sdk/workspace';
31
+ export { DEFAULT_TOWER_PORT } from '@cluesmith/codev-sdk/constants';
32
+ export { AGENT_FARM_DIR } from '@cluesmith/codev-core/constants';
33
+ // ── Default client ─────────────────────────────────────────────
34
+ let defaultClient = null;
35
+ export function getTowerClient(port) {
36
+ if (!defaultClient || (port && port !== DEFAULT_TOWER_PORT)) {
37
+ defaultClient = new TowerClient({ port });
38
+ }
39
+ return defaultClient;
40
+ }
10
41
  //# sourceMappingURL=tower-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tower-client.js","sourceRoot":"","sources":["../../../src/agent-farm/lib/tower-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,cAAc,GAWf,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"tower-client.js","sourceRoot":"","sources":["../../../src/agent-farm/lib/tower-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,WAAW,IAAI,cAAc,GAE9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,OAAO,WAAY,SAAQ,cAAc;IAC7C,YAAY,aAA2C;QACrD,IAAI,OAA2B,CAAC;QAChC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,aAAa,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,KAAK,CAAC;YACJ,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;YACnC,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;CACF;AAgBD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,kEAAkE;AAElE,IAAI,aAAa,GAAuB,IAAI,CAAC;AAE7C,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,kBAAkB,CAAC,EAAE,CAAC;QAC5D,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -30,11 +30,50 @@ export interface TowerMetadata {
30
30
  workspacePath: string;
31
31
  }>;
32
32
  }
33
- type StateChangeCallback = (state: TunnelState, previousState: TunnelState) => void;
33
+ type StateChangeCallback = (state: TunnelState, previousState: TunnelState, reason?: string) => void;
34
+ /**
35
+ * Header stamped on every request this client proxies in from the cloud (#1370).
36
+ *
37
+ * Requests reaching Tower through the tunnel arrive over localhost, so the
38
+ * socket address alone cannot tell them apart from a genuinely local caller.
39
+ * This marker makes the distinction explicit — Tower uses it both for source
40
+ * attribution in the log and to refuse cloud-originated management calls.
41
+ *
42
+ * Any inbound copy is stripped before stamping, so a cloud-side actor cannot
43
+ * forge or suppress it.
44
+ */
45
+ export declare const TUNNEL_PROXY_HEADER = "x-codev-tunnel-proxy";
34
46
  /** Heartbeat ping interval — send a WebSocket ping every 30 seconds */
35
47
  export declare const PING_INTERVAL_MS = 30000;
36
48
  /** Pong timeout — if no pong received within 10 seconds, declare connection dead */
37
49
  export declare const PONG_TIMEOUT_MS = 10000;
50
+ /**
51
+ * Connect watchdog (#1372) — maximum time the client may sit in `connecting`.
52
+ *
53
+ * Neither the WebSocket handshake nor the auth-response wait has a deadline of
54
+ * its own: `ws` only enforces one when `handshakeTimeout` is passed, and Node
55
+ * applies no socket timeout by default. After an uplink flap a half-open path
56
+ * (stale NAT/conntrack entry) accepts the TCP connection and then goes silent,
57
+ * so no `error` or `close` event ever fires. The heartbeat can't help — it is
58
+ * armed only after `connected`. Without this watchdog the client parks in
59
+ * `connecting` forever and only a brand-new TunnelClient recovers it.
60
+ */
61
+ export declare const CONNECT_TIMEOUT_MS = 20000;
62
+ /**
63
+ * Auth circuit-breaker half-open interval (#1372).
64
+ *
65
+ * `invalid_api_key` used to be terminal, which turns any misclassified auth
66
+ * error during a network blip into a permanent cloud outage. Retrying at a long
67
+ * interval costs one cheap round-trip every 15 minutes; a genuinely revoked key
68
+ * just fails again and re-parks.
69
+ */
70
+ export declare const AUTH_RETRY_INTERVAL_MS: number;
71
+ /**
72
+ * Marks an `auth_failed` transition as a *repeat* park after a half-open retry
73
+ * (#1372). `tower-tunnel.ts` keys its "log the alarm once" rule off this, so it
74
+ * is a shared contract, not a free-form string — do not inline the literal.
75
+ */
76
+ export declare const AUTH_RETRY_FAILED_MARKER = "half-open retry failed";
38
77
  /**
39
78
  * Calculate reconnection backoff with exponential increase and jitter.
40
79
  * Exported for unit testing.
@@ -60,6 +99,14 @@ export declare function isBlockedPath(path: string): boolean;
60
99
  * Exported for unit testing.
61
100
  */
62
101
  export declare function filterHopByHopHeaders(headers: Record<string, string | string[] | undefined>): Record<string, string | string[]>;
102
+ /**
103
+ * Make any relay-supplied text safe to log: strip control characters (a
104
+ * newline would otherwise forge a tower log entry) and cap the length (an
105
+ * oversized payload would otherwise inflate the log). Every externally derived
106
+ * string that reaches a state-change reason must pass through here.
107
+ * Exported for testing.
108
+ */
109
+ export declare function sanitizeRemoteDetail(text: string): string;
63
110
  export declare class TunnelClient {
64
111
  private options;
65
112
  private state;
@@ -70,6 +117,7 @@ export declare class TunnelClient {
70
117
  private h2Server;
71
118
  private h2Session;
72
119
  private reconnectTimer;
120
+ private connectTimeout;
73
121
  private consecutiveFailures;
74
122
  private rateLimitCount;
75
123
  private destroyed;
@@ -77,6 +125,8 @@ export declare class TunnelClient {
77
125
  private pongTimeout;
78
126
  private pongReceived;
79
127
  private heartbeatWs;
128
+ /** Suppresses repeat auth-failure alarms while the breaker half-opens (#1372) */
129
+ private authFailureLogged;
80
130
  constructor(options: TunnelClientOptions);
81
131
  getState(): TunnelState;
82
132
  getUptime(): number | null;
@@ -114,13 +164,31 @@ export declare class TunnelClient {
114
164
  */
115
165
  private pushMetadataViaHttp;
116
166
  private clearReconnectTimer;
167
+ /**
168
+ * Schedule the next connect attempt.
169
+ *
170
+ * Callers increment `consecutiveFailures` *before* calling this (#1372).
171
+ * Previously the pong-timeout and close paths incremented first while the
172
+ * error and auth paths incremented after, so the same failure drew a
173
+ * different delay depending on which event happened to surface it — and for
174
+ * a WebSocket an `error` is always followed by a `close`, making that
175
+ * arbitrary. Unified on increment-first (what the majority of paths already
176
+ * did); the error path's first retry moves ~1.5s → ~2.5s.
177
+ */
117
178
  private scheduleReconnect;
179
+ private clearConnectTimeout;
118
180
  private cleanup;
119
181
  private startHeartbeat;
120
182
  private stopHeartbeat;
121
183
  private doConnect;
122
184
  private onWsOpen;
123
185
  private handleAuthError;
186
+ /**
187
+ * Half-open the auth circuit breaker (#1372): after AUTH_RETRY_INTERVAL_MS,
188
+ * leave `auth_failed` and try once more. A genuinely revoked key fails again
189
+ * and re-parks here, so the cost is one round-trip per interval.
190
+ */
191
+ private scheduleAuthRetry;
124
192
  private handleConnectionError;
125
193
  private startH2Server;
126
194
  private handleH2Stream;
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-client.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/lib/tunnel-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tunnel-client.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/lib/tunnel-client.ts"],"names":[],"mappings":"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"}