@cluesmith/codev 3.2.3 → 3.3.0

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 (445) hide show
  1. package/dashboard-dist/assets/index-BZRTEMtH.css +32 -0
  2. package/dashboard-dist/assets/{index-BZ1x7x1X.js → index-JCbkpAcV.js} +33 -33
  3. package/dashboard-dist/assets/index-JCbkpAcV.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 +173 -0
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/attach.js +2 -2
  9. package/dist/agent-farm/commands/attach.js.map +1 -1
  10. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  11. package/dist/agent-farm/commands/cleanup.js +16 -0
  12. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  13. package/dist/agent-farm/commands/inbox.d.ts +42 -0
  14. package/dist/agent-farm/commands/inbox.d.ts.map +1 -0
  15. package/dist/agent-farm/commands/inbox.js +129 -0
  16. package/dist/agent-farm/commands/inbox.js.map +1 -0
  17. package/dist/agent-farm/commands/interrupt.d.ts +20 -0
  18. package/dist/agent-farm/commands/interrupt.d.ts.map +1 -0
  19. package/dist/agent-farm/commands/interrupt.js +65 -0
  20. package/dist/agent-farm/commands/interrupt.js.map +1 -0
  21. package/dist/agent-farm/commands/reset/constants.d.ts +52 -0
  22. package/dist/agent-farm/commands/reset/constants.d.ts.map +1 -0
  23. package/dist/agent-farm/commands/reset/constants.js +52 -0
  24. package/dist/agent-farm/commands/reset/constants.js.map +1 -0
  25. package/dist/agent-farm/commands/reset/context.d.ts +230 -0
  26. package/dist/agent-farm/commands/reset/context.d.ts.map +1 -0
  27. package/dist/agent-farm/commands/reset/context.js +428 -0
  28. package/dist/agent-farm/commands/reset/context.js.map +1 -0
  29. package/dist/agent-farm/commands/reset/index.d.ts +192 -0
  30. package/dist/agent-farm/commands/reset/index.d.ts.map +1 -0
  31. package/dist/agent-farm/commands/reset/index.js +488 -0
  32. package/dist/agent-farm/commands/reset/index.js.map +1 -0
  33. package/dist/agent-farm/commands/reset/receipt.d.ts +97 -0
  34. package/dist/agent-farm/commands/reset/receipt.d.ts.map +1 -0
  35. package/dist/agent-farm/commands/reset/receipt.js +149 -0
  36. package/dist/agent-farm/commands/reset/receipt.js.map +1 -0
  37. package/dist/agent-farm/commands/reset/reorient.d.ts +117 -0
  38. package/dist/agent-farm/commands/reset/reorient.d.ts.map +1 -0
  39. package/dist/agent-farm/commands/reset/reorient.js +313 -0
  40. package/dist/agent-farm/commands/reset/reorient.js.map +1 -0
  41. package/dist/agent-farm/commands/reset.d.ts +19 -0
  42. package/dist/agent-farm/commands/reset.d.ts.map +1 -0
  43. package/dist/agent-farm/commands/reset.js +292 -0
  44. package/dist/agent-farm/commands/reset.js.map +1 -0
  45. package/dist/agent-farm/commands/send.d.ts +2 -2
  46. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/send.js +52 -11
  48. package/dist/agent-farm/commands/send.js.map +1 -1
  49. package/dist/agent-farm/commands/setup.d.ts +4 -1
  50. package/dist/agent-farm/commands/setup.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/setup.js +8 -4
  52. package/dist/agent-farm/commands/setup.js.map +1 -1
  53. package/dist/agent-farm/commands/spawn-worktree.d.ts +116 -6
  54. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  55. package/dist/agent-farm/commands/spawn-worktree.js +345 -74
  56. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  57. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  58. package/dist/agent-farm/commands/spawn.js +13 -1
  59. package/dist/agent-farm/commands/spawn.js.map +1 -1
  60. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  61. package/dist/agent-farm/commands/status.js +105 -9
  62. package/dist/agent-farm/commands/status.js.map +1 -1
  63. package/dist/agent-farm/commands/tower-sweep-husks.d.ts +6 -0
  64. package/dist/agent-farm/commands/tower-sweep-husks.d.ts.map +1 -0
  65. package/dist/agent-farm/commands/tower-sweep-husks.js +77 -0
  66. package/dist/agent-farm/commands/tower-sweep-husks.js.map +1 -0
  67. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  68. package/dist/agent-farm/commands/tower.js +34 -0
  69. package/dist/agent-farm/commands/tower.js.map +1 -1
  70. package/dist/agent-farm/commands/whoami.d.ts +65 -0
  71. package/dist/agent-farm/commands/whoami.d.ts.map +1 -0
  72. package/dist/agent-farm/commands/whoami.js +196 -0
  73. package/dist/agent-farm/commands/whoami.js.map +1 -0
  74. package/dist/agent-farm/db/index.d.ts +1 -1
  75. package/dist/agent-farm/db/index.d.ts.map +1 -1
  76. package/dist/agent-farm/db/index.js +80 -1
  77. package/dist/agent-farm/db/index.js.map +1 -1
  78. package/dist/agent-farm/db/mailbox.d.ts +222 -0
  79. package/dist/agent-farm/db/mailbox.d.ts.map +1 -0
  80. package/dist/agent-farm/db/mailbox.js +304 -0
  81. package/dist/agent-farm/db/mailbox.js.map +1 -0
  82. package/dist/agent-farm/db/schema.d.ts +1 -1
  83. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  84. package/dist/agent-farm/db/schema.js +35 -0
  85. package/dist/agent-farm/db/schema.js.map +1 -1
  86. package/dist/agent-farm/db/types.d.ts +45 -0
  87. package/dist/agent-farm/db/types.d.ts.map +1 -1
  88. package/dist/agent-farm/db/types.js.map +1 -1
  89. package/dist/agent-farm/lib/builder-lookup.d.ts +1 -1
  90. package/dist/agent-farm/lib/builder-lookup.js +2 -2
  91. package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
  92. package/dist/agent-farm/lib/reconnect-backoff.d.ts +54 -0
  93. package/dist/agent-farm/lib/reconnect-backoff.d.ts.map +1 -0
  94. package/dist/agent-farm/lib/reconnect-backoff.js +47 -0
  95. package/dist/agent-farm/lib/reconnect-backoff.js.map +1 -0
  96. package/dist/agent-farm/lib/tower-client.d.ts +16 -6
  97. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  98. package/dist/agent-farm/lib/tower-client.js +37 -6
  99. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  100. package/dist/agent-farm/lib/tunnel-client.d.ts +69 -1
  101. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
  102. package/dist/agent-farm/lib/tunnel-client.js +218 -27
  103. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  104. package/dist/agent-farm/servers/architect-session-holder.d.ts +133 -0
  105. package/dist/agent-farm/servers/architect-session-holder.d.ts.map +1 -0
  106. package/dist/agent-farm/servers/architect-session-holder.js +268 -0
  107. package/dist/agent-farm/servers/architect-session-holder.js.map +1 -0
  108. package/dist/agent-farm/servers/cron-delivery.d.ts +72 -0
  109. package/dist/agent-farm/servers/cron-delivery.d.ts.map +1 -0
  110. package/dist/agent-farm/servers/cron-delivery.js +80 -0
  111. package/dist/agent-farm/servers/cron-delivery.js.map +1 -0
  112. package/dist/agent-farm/servers/delayed-send.d.ts +85 -0
  113. package/dist/agent-farm/servers/delayed-send.d.ts.map +1 -0
  114. package/dist/agent-farm/servers/delayed-send.js +165 -0
  115. package/dist/agent-farm/servers/delayed-send.js.map +1 -0
  116. package/dist/agent-farm/servers/gate-profiles.d.ts +67 -0
  117. package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -0
  118. package/dist/agent-farm/servers/gate-profiles.js +113 -0
  119. package/dist/agent-farm/servers/gate-profiles.js.map +1 -0
  120. package/dist/agent-farm/servers/mailbox-delivery.d.ts +370 -0
  121. package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -0
  122. package/dist/agent-farm/servers/mailbox-delivery.js +617 -0
  123. package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -0
  124. package/dist/agent-farm/servers/mailbox-wiring.d.ts +125 -0
  125. package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -0
  126. package/dist/agent-farm/servers/mailbox-wiring.js +425 -0
  127. package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -0
  128. package/dist/agent-farm/servers/message-write.d.ts +53 -1
  129. package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
  130. package/dist/agent-farm/servers/message-write.js +63 -0
  131. package/dist/agent-farm/servers/message-write.js.map +1 -1
  132. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  133. package/dist/agent-farm/servers/overview.js +23 -4
  134. package/dist/agent-farm/servers/overview.js.map +1 -1
  135. package/dist/agent-farm/servers/process-census.d.ts +41 -0
  136. package/dist/agent-farm/servers/process-census.d.ts.map +1 -0
  137. package/dist/agent-farm/servers/process-census.js +62 -0
  138. package/dist/agent-farm/servers/process-census.js.map +1 -0
  139. package/dist/agent-farm/servers/render-gate.d.ts +141 -0
  140. package/dist/agent-farm/servers/render-gate.d.ts.map +1 -0
  141. package/dist/agent-farm/servers/render-gate.js +251 -0
  142. package/dist/agent-farm/servers/render-gate.js.map +1 -0
  143. package/dist/agent-farm/servers/session-log-sweep.d.ts +93 -0
  144. package/dist/agent-farm/servers/session-log-sweep.d.ts.map +1 -0
  145. package/dist/agent-farm/servers/session-log-sweep.js +165 -0
  146. package/dist/agent-farm/servers/session-log-sweep.js.map +1 -0
  147. package/dist/agent-farm/servers/session-submit.d.ts +90 -0
  148. package/dist/agent-farm/servers/session-submit.d.ts.map +1 -0
  149. package/dist/agent-farm/servers/session-submit.js +127 -0
  150. package/dist/agent-farm/servers/session-submit.js.map +1 -0
  151. package/dist/agent-farm/servers/shellper-husk-sweep.d.ts +87 -0
  152. package/dist/agent-farm/servers/shellper-husk-sweep.d.ts.map +1 -0
  153. package/dist/agent-farm/servers/shellper-husk-sweep.js +129 -0
  154. package/dist/agent-farm/servers/shellper-husk-sweep.js.map +1 -0
  155. package/dist/agent-farm/servers/tower-cron.d.ts +10 -7
  156. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  157. package/dist/agent-farm/servers/tower-cron.js +58 -53
  158. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  159. package/dist/agent-farm/servers/tower-instances.d.ts +14 -2
  160. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  161. package/dist/agent-farm/servers/tower-instances.js +128 -19
  162. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  163. package/dist/agent-farm/servers/tower-messages.d.ts +38 -1
  164. package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -1
  165. package/dist/agent-farm/servers/tower-messages.js +106 -1
  166. package/dist/agent-farm/servers/tower-messages.js.map +1 -1
  167. package/dist/agent-farm/servers/tower-routes.d.ts +16 -4
  168. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  169. package/dist/agent-farm/servers/tower-routes.js +807 -99
  170. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  171. package/dist/agent-farm/servers/tower-server.js +241 -15
  172. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  173. package/dist/agent-farm/servers/tower-terminals.d.ts +17 -2
  174. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  175. package/dist/agent-farm/servers/tower-terminals.js +139 -124
  176. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  177. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  178. package/dist/agent-farm/servers/tower-tunnel.js +63 -4
  179. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  180. package/dist/agent-farm/servers/tower-types.d.ts +2 -1
  181. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  182. package/dist/agent-farm/servers/tower-utils.d.ts +99 -1
  183. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  184. package/dist/agent-farm/servers/tower-utils.js +242 -6
  185. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  186. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  187. package/dist/agent-farm/servers/tower-websocket.js +6 -21
  188. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  189. package/dist/agent-farm/servers/write-queue.d.ts +35 -0
  190. package/dist/agent-farm/servers/write-queue.d.ts.map +1 -0
  191. package/dist/agent-farm/servers/write-queue.js +56 -0
  192. package/dist/agent-farm/servers/write-queue.js.map +1 -0
  193. package/dist/agent-farm/state.d.ts +6 -1
  194. package/dist/agent-farm/state.d.ts.map +1 -1
  195. package/dist/agent-farm/state.js +5 -2
  196. package/dist/agent-farm/state.js.map +1 -1
  197. package/dist/agent-farm/types.d.ts +39 -0
  198. package/dist/agent-farm/types.d.ts.map +1 -1
  199. package/dist/agent-farm/utils/agent-names.d.ts +2 -2
  200. package/dist/agent-farm/utils/agent-names.d.ts.map +1 -1
  201. package/dist/agent-farm/utils/agent-names.js +3 -3
  202. package/dist/agent-farm/utils/agent-names.js.map +1 -1
  203. package/dist/agent-farm/utils/architect-name.d.ts +2 -2
  204. package/dist/agent-farm/utils/architect-name.d.ts.map +1 -1
  205. package/dist/agent-farm/utils/architect-name.js +3 -3
  206. package/dist/agent-farm/utils/architect-name.js.map +1 -1
  207. package/dist/agent-farm/utils/config.d.ts +13 -0
  208. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  209. package/dist/agent-farm/utils/config.js +33 -1
  210. package/dist/agent-farm/utils/config.js.map +1 -1
  211. package/dist/agent-farm/utils/harness.d.ts +103 -7
  212. package/dist/agent-farm/utils/harness.d.ts.map +1 -1
  213. package/dist/agent-farm/utils/harness.js +126 -19
  214. package/dist/agent-farm/utils/harness.js.map +1 -1
  215. package/dist/cli.d.ts.map +1 -1
  216. package/dist/cli.js +6 -32
  217. package/dist/cli.js.map +1 -1
  218. package/dist/commands/adopt.d.ts +3 -2
  219. package/dist/commands/adopt.d.ts.map +1 -1
  220. package/dist/commands/adopt.js +7 -6
  221. package/dist/commands/adopt.js.map +1 -1
  222. package/dist/commands/consult/agy-auth-cache.d.ts +97 -0
  223. package/dist/commands/consult/agy-auth-cache.d.ts.map +1 -0
  224. package/dist/commands/consult/agy-auth-cache.js +320 -0
  225. package/dist/commands/consult/agy-auth-cache.js.map +1 -0
  226. package/dist/commands/consult/cli-options.d.ts +34 -0
  227. package/dist/commands/consult/cli-options.d.ts.map +1 -0
  228. package/dist/commands/consult/cli-options.js +67 -0
  229. package/dist/commands/consult/cli-options.js.map +1 -0
  230. package/dist/commands/consult/index.d.ts +56 -2
  231. package/dist/commands/consult/index.d.ts.map +1 -1
  232. package/dist/commands/consult/index.js +330 -27
  233. package/dist/commands/consult/index.js.map +1 -1
  234. package/dist/commands/consult/metrics.d.ts +42 -0
  235. package/dist/commands/consult/metrics.d.ts.map +1 -1
  236. package/dist/commands/consult/metrics.js +129 -9
  237. package/dist/commands/consult/metrics.js.map +1 -1
  238. package/dist/commands/doctor.d.ts +28 -0
  239. package/dist/commands/doctor.d.ts.map +1 -1
  240. package/dist/commands/doctor.js +258 -22
  241. package/dist/commands/doctor.js.map +1 -1
  242. package/dist/commands/init.d.ts +3 -2
  243. package/dist/commands/init.d.ts.map +1 -1
  244. package/dist/commands/init.js +7 -6
  245. package/dist/commands/init.js.map +1 -1
  246. package/dist/commands/porch/checks.d.ts +23 -0
  247. package/dist/commands/porch/checks.d.ts.map +1 -1
  248. package/dist/commands/porch/checks.js +60 -0
  249. package/dist/commands/porch/checks.js.map +1 -1
  250. package/dist/commands/porch/config.d.ts +20 -0
  251. package/dist/commands/porch/config.d.ts.map +1 -1
  252. package/dist/commands/porch/config.js +20 -0
  253. package/dist/commands/porch/config.js.map +1 -1
  254. package/dist/commands/porch/index.d.ts.map +1 -1
  255. package/dist/commands/porch/index.js +32 -36
  256. package/dist/commands/porch/index.js.map +1 -1
  257. package/dist/commands/porch/next.d.ts.map +1 -1
  258. package/dist/commands/porch/next.js +2 -41
  259. package/dist/commands/porch/next.js.map +1 -1
  260. package/dist/commands/update.d.ts +4 -4
  261. package/dist/commands/update.d.ts.map +1 -1
  262. package/dist/commands/update.js +9 -11
  263. package/dist/commands/update.js.map +1 -1
  264. package/dist/lib/config.d.ts +70 -3
  265. package/dist/lib/config.d.ts.map +1 -1
  266. package/dist/lib/config.js +67 -3
  267. package/dist/lib/config.js.map +1 -1
  268. package/dist/lib/consult-lanes.d.ts +149 -0
  269. package/dist/lib/consult-lanes.d.ts.map +1 -0
  270. package/dist/lib/consult-lanes.js +360 -0
  271. package/dist/lib/consult-lanes.js.map +1 -0
  272. package/dist/lib/default-branch.d.ts +1 -1
  273. package/dist/lib/default-branch.js +1 -1
  274. package/dist/lib/github.js +1 -1
  275. package/dist/lib/github.js.map +1 -1
  276. package/dist/lib/gitignore.d.ts +25 -2
  277. package/dist/lib/gitignore.d.ts.map +1 -1
  278. package/dist/lib/gitignore.js +70 -0
  279. package/dist/lib/gitignore.js.map +1 -1
  280. package/dist/lib/migration-backup-audit.d.ts +64 -0
  281. package/dist/lib/migration-backup-audit.d.ts.map +1 -0
  282. package/dist/lib/migration-backup-audit.js +145 -0
  283. package/dist/lib/migration-backup-audit.js.map +1 -0
  284. package/dist/lib/prompt-behavior-metrics.d.ts +67 -0
  285. package/dist/lib/prompt-behavior-metrics.d.ts.map +1 -0
  286. package/dist/lib/prompt-behavior-metrics.js +290 -0
  287. package/dist/lib/prompt-behavior-metrics.js.map +1 -0
  288. package/dist/lib/protocol-drift-audit.d.ts +118 -0
  289. package/dist/lib/protocol-drift-audit.d.ts.map +1 -0
  290. package/dist/lib/protocol-drift-audit.js +217 -0
  291. package/dist/lib/protocol-drift-audit.js.map +1 -0
  292. package/dist/lib/scaffold.d.ts +10 -3
  293. package/dist/lib/scaffold.d.ts.map +1 -1
  294. package/dist/lib/scaffold.js +29 -26
  295. package/dist/lib/scaffold.js.map +1 -1
  296. package/dist/lib/skeleton.d.ts +22 -1
  297. package/dist/lib/skeleton.d.ts.map +1 -1
  298. package/dist/lib/skeleton.js +120 -0
  299. package/dist/lib/skeleton.js.map +1 -1
  300. package/dist/lib/test-env.d.ts +74 -0
  301. package/dist/lib/test-env.d.ts.map +1 -0
  302. package/dist/lib/test-env.js +92 -0
  303. package/dist/lib/test-env.js.map +1 -0
  304. package/dist/terminal/pty-manager.d.ts +9 -0
  305. package/dist/terminal/pty-manager.d.ts.map +1 -1
  306. package/dist/terminal/pty-manager.js +32 -6
  307. package/dist/terminal/pty-manager.js.map +1 -1
  308. package/dist/terminal/pty-session.d.ts +156 -4
  309. package/dist/terminal/pty-session.d.ts.map +1 -1
  310. package/dist/terminal/pty-session.js +307 -42
  311. package/dist/terminal/pty-session.js.map +1 -1
  312. package/dist/terminal/ring-buffer.d.ts +39 -6
  313. package/dist/terminal/ring-buffer.d.ts.map +1 -1
  314. package/dist/terminal/ring-buffer.js +74 -6
  315. package/dist/terminal/ring-buffer.js.map +1 -1
  316. package/dist/terminal/session-manager.d.ts +129 -0
  317. package/dist/terminal/session-manager.d.ts.map +1 -1
  318. package/dist/terminal/session-manager.js +337 -44
  319. package/dist/terminal/session-manager.js.map +1 -1
  320. package/dist/terminal/session-screen.d.ts +91 -0
  321. package/dist/terminal/session-screen.d.ts.map +1 -0
  322. package/dist/terminal/session-screen.js +135 -0
  323. package/dist/terminal/session-screen.js.map +1 -0
  324. package/dist/terminal/shellper-client.d.ts +19 -4
  325. package/dist/terminal/shellper-client.d.ts.map +1 -1
  326. package/dist/terminal/shellper-client.js +70 -8
  327. package/dist/terminal/shellper-client.js.map +1 -1
  328. package/dist/terminal/shellper-main.js +2 -1
  329. package/dist/terminal/shellper-main.js.map +1 -1
  330. package/dist/terminal/shellper-process.d.ts +1 -1
  331. package/dist/terminal/shellper-process.d.ts.map +1 -1
  332. package/dist/terminal/shellper-process.js +33 -9
  333. package/dist/terminal/shellper-process.js.map +1 -1
  334. package/dist/terminal/shellper-protocol.d.ts +40 -2
  335. package/dist/terminal/shellper-protocol.d.ts.map +1 -1
  336. package/dist/terminal/shellper-protocol.js +72 -5
  337. package/dist/terminal/shellper-protocol.js.map +1 -1
  338. package/dist/terminal/shellper-replay-buffer.d.ts +69 -7
  339. package/dist/terminal/shellper-replay-buffer.d.ts.map +1 -1
  340. package/dist/terminal/shellper-replay-buffer.js +167 -31
  341. package/dist/terminal/shellper-replay-buffer.js.map +1 -1
  342. package/package.json +11 -9
  343. package/skeleton/.claude/skills/afx/SKILL.md +27 -1
  344. package/skeleton/.claude/skills/arch-init/SKILL.md +135 -0
  345. package/skeleton/.claude/skills/arch-save/SKILL.md +183 -0
  346. package/skeleton/.claude/skills/codev/SKILL.md +33 -2
  347. package/skeleton/.claude/skills/runnable-worktrees/SKILL.md +119 -0
  348. package/skeleton/.codex/skills/afx/SKILL.md +170 -0
  349. package/skeleton/.codex/skills/arch-init/SKILL.md +135 -0
  350. package/skeleton/.codex/skills/arch-save/SKILL.md +183 -0
  351. package/skeleton/.codex/skills/codev/SKILL.md +90 -0
  352. package/skeleton/.codex/skills/consult/SKILL.md +96 -0
  353. package/skeleton/.codex/skills/generate-image/SKILL.md +45 -0
  354. package/skeleton/.codex/skills/porch/SKILL.md +60 -0
  355. package/skeleton/.codex/skills/runnable-worktrees/SKILL.md +119 -0
  356. package/skeleton/.codex/skills/update-arch-docs/SKILL.md +132 -0
  357. package/skeleton/protocols/air/builder-prompt.md +28 -47
  358. package/skeleton/protocols/air/consult-types/impl-review.md +17 -34
  359. package/skeleton/protocols/air/consult-types/pr-review.md +14 -37
  360. package/skeleton/protocols/air/prompts/implement.md +20 -73
  361. package/skeleton/protocols/air/prompts/pr.md +22 -54
  362. package/skeleton/protocols/air/protocol.md +40 -71
  363. package/skeleton/protocols/aspir/builder-prompt.md +29 -66
  364. package/skeleton/protocols/aspir/consult-types/impl-review.md +17 -44
  365. package/skeleton/protocols/aspir/consult-types/phase-review.md +17 -44
  366. package/skeleton/protocols/aspir/consult-types/plan-review.md +14 -38
  367. package/skeleton/protocols/aspir/consult-types/pr-review.md +13 -39
  368. package/skeleton/protocols/aspir/consult-types/spec-review.md +13 -33
  369. package/skeleton/protocols/aspir/prompts/implement.md +27 -196
  370. package/skeleton/protocols/aspir/prompts/plan.md +21 -85
  371. package/skeleton/protocols/aspir/prompts/review.md +29 -228
  372. package/skeleton/protocols/aspir/prompts/specify.md +25 -111
  373. package/skeleton/protocols/aspir/protocol.json +10 -0
  374. package/skeleton/protocols/aspir/protocol.md +36 -82
  375. package/skeleton/protocols/bugfix/builder-prompt.md +23 -45
  376. package/skeleton/protocols/bugfix/consult-types/impl-review.md +21 -45
  377. package/skeleton/protocols/bugfix/consult-types/pr-review.md +18 -52
  378. package/skeleton/protocols/bugfix/prompts/fix.md +16 -61
  379. package/skeleton/protocols/bugfix/prompts/investigate.md +18 -62
  380. package/skeleton/protocols/bugfix/prompts/pr.md +22 -57
  381. package/skeleton/protocols/bugfix/protocol.md +44 -50
  382. package/skeleton/protocols/experiment/builder-prompt.md +25 -58
  383. package/skeleton/protocols/experiment/protocol.md +22 -188
  384. package/skeleton/protocols/experiment/templates/notes.md +11 -71
  385. package/skeleton/protocols/maintain/builder-prompt.md +24 -45
  386. package/skeleton/protocols/maintain/consult-types/impl-review.md +17 -44
  387. package/skeleton/protocols/maintain/consult-types/pr-review.md +13 -39
  388. package/skeleton/protocols/maintain/prompts/maintain.md +1 -1
  389. package/skeleton/protocols/maintain/protocol.md +32 -266
  390. package/skeleton/protocols/maintain/templates/maintenance-run.md +11 -0
  391. package/skeleton/protocols/pir/builder-prompt.md +30 -64
  392. package/skeleton/protocols/pir/consult-types/impl-review.md +17 -50
  393. package/skeleton/protocols/pir/consult-types/pr-review.md +11 -40
  394. package/skeleton/protocols/pir/prompts/implement.md +1 -2
  395. package/skeleton/protocols/pir/prompts/plan.md +0 -3
  396. package/skeleton/protocols/pir/prompts/review.md +1 -1
  397. package/skeleton/protocols/pir/protocol.md +54 -177
  398. package/skeleton/protocols/research/builder-prompt.md +27 -58
  399. package/skeleton/protocols/research/protocol.md +28 -153
  400. package/skeleton/protocols/spike/builder-prompt.md +30 -48
  401. package/skeleton/protocols/spike/protocol.md +24 -107
  402. package/skeleton/protocols/spike/templates/findings.md +9 -39
  403. package/skeleton/protocols/spir/builder-prompt.md +33 -62
  404. package/skeleton/protocols/spir/consult-types/impl-review.md +17 -44
  405. package/skeleton/protocols/spir/consult-types/phase-review.md +17 -44
  406. package/skeleton/protocols/spir/consult-types/plan-review.md +14 -38
  407. package/skeleton/protocols/spir/consult-types/pr-review.md +13 -39
  408. package/skeleton/protocols/spir/consult-types/spec-review.md +13 -33
  409. package/skeleton/protocols/spir/prompts/implement.md +26 -195
  410. package/skeleton/protocols/spir/prompts/plan.md +20 -84
  411. package/skeleton/protocols/spir/prompts/review.md +28 -227
  412. package/skeleton/protocols/spir/prompts/specify.md +24 -110
  413. package/skeleton/protocols/spir/protocol.json +10 -0
  414. package/skeleton/protocols/spir/protocol.md +84 -633
  415. package/skeleton/protocols/spir/templates/plan.md +28 -147
  416. package/skeleton/protocols/spir/templates/review.md +21 -80
  417. package/skeleton/protocols/spir/templates/spec.md +24 -118
  418. package/skeleton/resources/commands/agent-farm.md +348 -0
  419. package/skeleton/resources/commands/codev.md +5 -0
  420. package/skeleton/resources/commands/consult.md +262 -8
  421. package/skeleton/resources/commands/overview.md +1 -0
  422. package/skeleton/roles/architect.md +67 -306
  423. package/skeleton/roles/builder.md +77 -191
  424. package/skeleton/templates/AGENTS.md +2 -0
  425. package/skeleton/templates/CLAUDE.md +2 -0
  426. package/templates/tower.html +39 -2
  427. package/dashboard-dist/assets/index-BZ1x7x1X.js.map +0 -1
  428. package/dashboard-dist/assets/index-DB1KBSNE.css +0 -32
  429. package/dist/agent-farm/servers/send-buffer.d.ts +0 -59
  430. package/dist/agent-farm/servers/send-buffer.d.ts.map +0 -1
  431. package/dist/agent-farm/servers/send-buffer.js +0 -103
  432. package/dist/agent-farm/servers/send-buffer.js.map +0 -1
  433. package/skeleton/porch/prompts/defend.md +0 -108
  434. package/skeleton/porch/prompts/diagnose.md +0 -70
  435. package/skeleton/porch/prompts/evaluate.md +0 -132
  436. package/skeleton/porch/prompts/fix.md +0 -59
  437. package/skeleton/porch/prompts/implement.md +0 -88
  438. package/skeleton/porch/prompts/plan.md +0 -74
  439. package/skeleton/porch/prompts/pr.md +0 -84
  440. package/skeleton/porch/prompts/review.md +0 -249
  441. package/skeleton/porch/prompts/specify.md +0 -53
  442. package/skeleton/porch/prompts/test.md +0 -63
  443. package/skeleton/protocols/aspir/templates/plan.md +0 -184
  444. package/skeleton/protocols/aspir/templates/review.md +0 -120
  445. package/skeleton/protocols/aspir/templates/spec.md +0 -154
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Whoami command — report this terminal's agent identity (Spec 1134).
3
+ *
4
+ * Answers "who am I, from Tower/global.db's perspective?" for any terminal:
5
+ * builders resolve from their worktree cwd against global.db, architects from
6
+ * the Tower-injected CODEV_ARCHITECT_NAME env var. Identity precedence is
7
+ * fixed by the spec: builder-worktree cwd match → CODEV_ARCHITECT_NAME →
8
+ * unknown (exit non-zero). There is deliberately NO implicit fallback to
9
+ * 'main' — an unverified identity misroutes downstream consumers (issue
10
+ * #1094), so unknown must fail loud.
11
+ *
12
+ * Read-only invariant: this command never opens global.db read-write. Builder
13
+ * resolution reuses detectCurrentBuilderId() (its own read-only connection);
14
+ * all whoami-specific queries share one read-only connection opened here.
15
+ *
16
+ * The identity helpers are imported from ./send.js rather than relocated:
17
+ * they are already exported and tested there, and whoami is only their second
18
+ * consumer (extraction deferred until a third appears).
19
+ */
20
+ export interface WhoamiOptions {
21
+ json?: boolean;
22
+ }
23
+ /**
24
+ * Resolved identity. `architect` (builder) is omitted when the row's
25
+ * `spawned_by_architect` is NULL (legacy) or missing. `rowMissing`
26
+ * (architect) marks a best-effort diagnostic: the env var named an architect
27
+ * but no matching `architect` table row exists — surfaced as a stderr
28
+ * warning, never a failure (rows are legitimately absent after crashes).
29
+ */
30
+ export type WhoamiIdentity = {
31
+ type: 'builder';
32
+ workspace: string;
33
+ name: string;
34
+ architect?: string;
35
+ } | {
36
+ type: 'architect';
37
+ workspace: string;
38
+ name: string;
39
+ rowMissing?: boolean;
40
+ };
41
+ /** Thrown when no identity signal resolves. Message is the user-facing text. */
42
+ export declare class WhoamiError extends Error {
43
+ constructor(message: string);
44
+ }
45
+ /**
46
+ * Resolve the current terminal's identity per the spec precedence.
47
+ *
48
+ * Throws `BuilderIdResolutionError` when cwd IS a builder worktree whose
49
+ * identity cannot be verified (no fallthrough to the env check — #1094), and
50
+ * `WhoamiError` when no identity signal resolves at all.
51
+ */
52
+ export declare function resolveIdentity(env?: NodeJS.ProcessEnv): WhoamiIdentity;
53
+ /** Format an identity as the human-readable `key: value` lines. */
54
+ export declare function formatIdentity(identity: WhoamiIdentity): string;
55
+ /** Format an identity as the JSON payload (`architect` omitted when unknown). */
56
+ export declare function identityToJson(identity: WhoamiIdentity): Record<string, string>;
57
+ /**
58
+ * `afx whoami` — print this terminal's identity.
59
+ *
60
+ * Success: identity to stdout (text or --json), exit 0.
61
+ * Unknown identity: explanation to stderr (always), `{ "error": ... }` to
62
+ * stdout under --json, exit 1 via process.exitCode (streams flush).
63
+ */
64
+ export declare function whoami(options?: WhoamiOptions): Promise<void>;
65
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjF,gFAAgF;AAChF,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAsCD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CA+DpF;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAM/D;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/E;AAED;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BvE"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Whoami command — report this terminal's agent identity (Spec 1134).
3
+ *
4
+ * Answers "who am I, from Tower/global.db's perspective?" for any terminal:
5
+ * builders resolve from their worktree cwd against global.db, architects from
6
+ * the Tower-injected CODEV_ARCHITECT_NAME env var. Identity precedence is
7
+ * fixed by the spec: builder-worktree cwd match → CODEV_ARCHITECT_NAME →
8
+ * unknown (exit non-zero). There is deliberately NO implicit fallback to
9
+ * 'main' — an unverified identity misroutes downstream consumers (issue
10
+ * #1094), so unknown must fail loud.
11
+ *
12
+ * Read-only invariant: this command never opens global.db read-write. Builder
13
+ * resolution reuses detectCurrentBuilderId() (its own read-only connection);
14
+ * all whoami-specific queries share one read-only connection opened here.
15
+ *
16
+ * The identity helpers are imported from ./send.js rather than relocated:
17
+ * they are already exported and tested there, and whoami is only their second
18
+ * consumer (extraction deferred until a third appears).
19
+ */
20
+ import { basename } from 'node:path';
21
+ import Database from 'better-sqlite3';
22
+ import { detectCurrentBuilderId, detectWorkspaceRoot, BuilderIdResolutionError } from './send.js';
23
+ import { lookupBuilderSpawningArchitect } from '../state.js';
24
+ import { getGlobalDbPath } from '../db/index.js';
25
+ import { normalizeWorkspacePath } from '../utils/workspace-path.js';
26
+ /** Thrown when no identity signal resolves. Message is the user-facing text. */
27
+ export class WhoamiError extends Error {
28
+ constructor(message) {
29
+ super(message);
30
+ this.name = 'WhoamiError';
31
+ }
32
+ }
33
+ /**
34
+ * Open global.db read-only, or return null when it is missing/unopenable.
35
+ * Null degrades gracefully: the informational lookups (workspace display
36
+ * name, spawning architect, architect-row cross-check) are skipped. Identity
37
+ * itself never depends on this handle — the builder path already verified
38
+ * against the db inside detectCurrentBuilderId(), and the architect path is
39
+ * env-based.
40
+ */
41
+ function openReadonlyGlobalDb() {
42
+ try {
43
+ return new Database(getGlobalDbPath(), { readonly: true });
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ /**
50
+ * Display name for the workspace: the `known_workspaces` registry entry when
51
+ * present, else the directory basename. Informational context only — the
52
+ * spec's fail-loud rule applies to type/name, not this field.
53
+ */
54
+ function workspaceDisplayName(workspaceRoot, db) {
55
+ const root = workspaceRoot ?? process.cwd();
56
+ if (db) {
57
+ try {
58
+ const row = db
59
+ .prepare('SELECT name FROM known_workspaces WHERE workspace_path = ?')
60
+ .get(normalizeWorkspacePath(root));
61
+ if (row?.name)
62
+ return row.name;
63
+ }
64
+ catch {
65
+ // Table missing or query failure — informational field, fall through.
66
+ }
67
+ }
68
+ return basename(root);
69
+ }
70
+ /**
71
+ * Resolve the current terminal's identity per the spec precedence.
72
+ *
73
+ * Throws `BuilderIdResolutionError` when cwd IS a builder worktree whose
74
+ * identity cannot be verified (no fallthrough to the env check — #1094), and
75
+ * `WhoamiError` when no identity signal resolves at all.
76
+ */
77
+ export function resolveIdentity(env = process.env) {
78
+ // 1. Builder-worktree cwd match. A BuilderIdResolutionError propagates
79
+ // verbatim: inside a confirmed worktree, an unverifiable identity is an
80
+ // error, never a reason to consult the env var.
81
+ const builderId = detectCurrentBuilderId();
82
+ const workspaceRoot = detectWorkspaceRoot();
83
+ const db = openReadonlyGlobalDb();
84
+ try {
85
+ if (builderId) {
86
+ const identity = {
87
+ type: 'builder',
88
+ workspace: workspaceDisplayName(workspaceRoot, db),
89
+ name: builderId,
90
+ };
91
+ if (db) {
92
+ try {
93
+ const spawnedBy = lookupBuilderSpawningArchitect(builderId, workspaceRoot ?? undefined, db);
94
+ if (spawnedBy)
95
+ identity.architect = spawnedBy;
96
+ }
97
+ catch {
98
+ // Enrichment only — the identity is already verified; a lookup
99
+ // failure means "not recorded", not "unknown identity".
100
+ }
101
+ }
102
+ return identity;
103
+ }
104
+ // 2. Tower-injected architect env var. Read directly, NOT via
105
+ // currentArchitectName() — its default of 'main' is exactly the
106
+ // implicit fallback whoami must not have.
107
+ const architectName = env.CODEV_ARCHITECT_NAME?.trim();
108
+ if (architectName) {
109
+ const identity = {
110
+ type: 'architect',
111
+ workspace: workspaceDisplayName(workspaceRoot, db),
112
+ name: architectName,
113
+ };
114
+ // Best-effort cross-check against the architect table (diagnostics
115
+ // only): a missing row is a warning, never a failure — rows are
116
+ // legitimately absent in the crash-recovery scenarios whoami serves.
117
+ if (db && workspaceRoot) {
118
+ try {
119
+ const row = db
120
+ .prepare('SELECT 1 AS present FROM architect WHERE workspace_path = ? AND id = ?')
121
+ .get(normalizeWorkspacePath(workspaceRoot), architectName);
122
+ if (!row)
123
+ identity.rowMissing = true;
124
+ }
125
+ catch {
126
+ // Swallowed by design — this check never affects output or exit code.
127
+ }
128
+ }
129
+ return identity;
130
+ }
131
+ }
132
+ finally {
133
+ db?.close();
134
+ }
135
+ // 3. Fail loud. No implicit 'main'.
136
+ throw new WhoamiError('Cannot determine agent identity: the current directory is not inside a ' +
137
+ '.builders/<id>/ worktree and CODEV_ARCHITECT_NAME is not set. ' +
138
+ 'Likely causes: a plain shell, a terminal not started by Tower, or a ' +
139
+ 'pre-#786 architect terminal. Refusing to guess (issue #1094) — ' +
140
+ 'identity must come from a verified signal, never a default.');
141
+ }
142
+ /** Format an identity as the human-readable `key: value` lines. */
143
+ export function formatIdentity(identity) {
144
+ const lines = [`workspace: ${identity.workspace}`, `type: ${identity.type}`, `name: ${identity.name}`];
145
+ if (identity.type === 'builder' && identity.architect) {
146
+ lines.push(`architect: ${identity.architect}`);
147
+ }
148
+ return lines.join('\n');
149
+ }
150
+ /** Format an identity as the JSON payload (`architect` omitted when unknown). */
151
+ export function identityToJson(identity) {
152
+ const payload = {
153
+ workspace: identity.workspace,
154
+ type: identity.type,
155
+ name: identity.name,
156
+ };
157
+ if (identity.type === 'builder' && identity.architect) {
158
+ payload.architect = identity.architect;
159
+ }
160
+ return payload;
161
+ }
162
+ /**
163
+ * `afx whoami` — print this terminal's identity.
164
+ *
165
+ * Success: identity to stdout (text or --json), exit 0.
166
+ * Unknown identity: explanation to stderr (always), `{ "error": ... }` to
167
+ * stdout under --json, exit 1 via process.exitCode (streams flush).
168
+ */
169
+ export async function whoami(options = {}) {
170
+ let identity;
171
+ try {
172
+ identity = resolveIdentity();
173
+ }
174
+ catch (err) {
175
+ if (!(err instanceof WhoamiError) && !(err instanceof BuilderIdResolutionError))
176
+ throw err;
177
+ process.stderr.write(`${err.message}\n`);
178
+ if (options.json) {
179
+ process.stdout.write(`${JSON.stringify({ error: err.message })}\n`);
180
+ }
181
+ process.exitCode = 1;
182
+ return;
183
+ }
184
+ if (identity.type === 'architect' && identity.rowMissing) {
185
+ process.stderr.write(`warning: CODEV_ARCHITECT_NAME='${identity.name}' but no matching architect row ` +
186
+ `in global.db for this workspace (Tower may not have registered this terminal, ` +
187
+ `or it predates a crash). Identity is reported from the env signal.\n`);
188
+ }
189
+ if (options.json) {
190
+ process.stdout.write(`${JSON.stringify(identityToJson(identity))}\n`);
191
+ }
192
+ else {
193
+ process.stdout.write(`${formatIdentity(identity)}\n`);
194
+ }
195
+ }
196
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/whoami.ts"],"names":[],"mappings":"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"}
@@ -50,5 +50,5 @@ export declare function getDbPath(): string;
50
50
  export declare function getGlobalDbPath(): string;
51
51
  export { LOCAL_SCHEMA, GLOBAL_SCHEMA } from './schema.js';
52
52
  export { withRetry } from './errors.js';
53
- export type { DbArchitect, DbBuilder, DbUtil, DbAnnotation, } from './types.js';
53
+ export type { DbArchitect, DbBuilder, DbUtil, DbAnnotation, DbMailbox, MailboxStatus, MailboxReason, } from './types.js';
54
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA+CtC;;;;;;;;;GASG;AACH,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAEzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AA8ZD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,WAAW,EACX,SAAS,EACT,MAAM,EACN,YAAY,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA+CtC;;;;;;;;;GASG;AACH,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAEzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAgfD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,WAAW,EACX,SAAS,EACT,MAAM,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
@@ -124,7 +124,7 @@ function ensureGlobalDatabase() {
124
124
  const db = new Database(dbPath);
125
125
  configurePragmas(db);
126
126
  // Current migration version — bump when adding new migrations
127
- const GLOBAL_CURRENT_VERSION = 14;
127
+ const GLOBAL_CURRENT_VERSION = 17;
128
128
  // Detect fresh vs existing database by checking if content tables exist.
129
129
  // On existing databases, GLOBAL_SCHEMA must NOT run because it references column names
130
130
  // (workspace_path) that don't exist until migration v9 renames them from project_path.
@@ -502,6 +502,85 @@ function ensureGlobalDatabase() {
502
502
  db.prepare('INSERT INTO _migrations (version) VALUES (14)').run();
503
503
  console.log('[info] Absorbed state.db tables into global.db (Issue #1118)');
504
504
  }
505
+ // Migration v15: Add mailbox table (Spec 1313 — mailbox-first delivery).
506
+ // Additive new table: every `afx send` is persisted here before the send
507
+ // response returns, so nothing is lost to a Tower crash/restart/shutdown.
508
+ // Rows address AGENTS (to_agent), not PTYs, so a respawned terminal drains its
509
+ // predecessor's mail. No rows to migrate — the retired SendBuffer was in-memory.
510
+ // Idempotent via CREATE TABLE / CREATE INDEX IF NOT EXISTS (fresh installs
511
+ // already created it from GLOBAL_SCHEMA and reach the marker as a no-op).
512
+ const v15 = db.prepare('SELECT version FROM _migrations WHERE version = 15').get();
513
+ if (!v15) {
514
+ db.exec(`
515
+ CREATE TABLE IF NOT EXISTS mailbox (
516
+ id TEXT PRIMARY KEY,
517
+ workspace_path TEXT NOT NULL,
518
+ to_agent TEXT NOT NULL,
519
+ terminal_id TEXT,
520
+ from_agent TEXT,
521
+ from_workspace TEXT,
522
+ body TEXT NOT NULL,
523
+ formatted_message TEXT NOT NULL,
524
+ no_enter INTEGER NOT NULL DEFAULT 0,
525
+ status TEXT NOT NULL DEFAULT 'held'
526
+ CHECK(status IN ('held', 'delivered', 'superseded', 'dismissed')),
527
+ reason TEXT CHECK(reason IN ('busy', 'no-profile', 'no-live-pty')),
528
+ supersede_key TEXT,
529
+ escalated INTEGER NOT NULL DEFAULT 0,
530
+ created_at INTEGER NOT NULL,
531
+ updated_at INTEGER NOT NULL,
532
+ resolved_at INTEGER
533
+ );
534
+ CREATE INDEX IF NOT EXISTS idx_mailbox_workspace_status ON mailbox(workspace_path, status);
535
+ CREATE INDEX IF NOT EXISTS idx_mailbox_agent_drain ON mailbox(workspace_path, to_agent, status);
536
+ CREATE INDEX IF NOT EXISTS idx_mailbox_supersede ON mailbox(supersede_key);
537
+ `);
538
+ db.prepare('INSERT INTO _migrations (version) VALUES (15)').run();
539
+ console.log('[info] Created mailbox table (Spec 1313)');
540
+ }
541
+ // Migration v16: Add command column to terminal_sessions (Spec 1313).
542
+ // The render-gate resolves an agent's classifier profile from its launch
543
+ // command (PtySession.command). Shellper-backed sessions were created with
544
+ // command: '' and the profile fell back to reading `.builder-start.sh` —
545
+ // which only builder worktrees have. Architects run in the workspace root
546
+ // (no launch script), so they never resolved and every `afx send architect`
547
+ // held `no-profile`. Persisting the command lets the reconcile/reconnect
548
+ // paths restore identity after a Tower restart, so architects resolve
549
+ // directly and survive restart (builders keep the launch-script backstop).
550
+ // Mirrors the label (v11) / cwd (v12) column adds.
551
+ const v16 = db.prepare('SELECT version FROM _migrations WHERE version = 16').get();
552
+ if (!v16) {
553
+ // Only skip the ALTER when the column genuinely exists already (fresh install
554
+ // ran GLOBAL_SCHEMA). A blanket try/catch would let a REAL alter failure be
555
+ // recorded as "migrated" — and since saveTerminalSession's INSERT now names
556
+ // `command`, every future write would then fail against a table missing it.
557
+ const hasCommand = db.prepare(`PRAGMA table_info(terminal_sessions)`).all()
558
+ .some((c) => c.name === 'command');
559
+ if (!hasCommand) {
560
+ db.exec(`ALTER TABLE terminal_sessions ADD COLUMN command TEXT`);
561
+ }
562
+ db.prepare('INSERT INTO _migrations (version) VALUES (16)').run();
563
+ console.log('[info] Added command column to terminal_sessions (Spec 1313 restart-safe render-gate identity)');
564
+ }
565
+ // Migration v17: Add not_before column to mailbox (Spec 1313 round 3 — durable `--delay`).
566
+ // `afx send --delay` now persists its row at REQUEST time with not_before = now + delay*1000
567
+ // and defers delivery through the render gate, so a delayed send survives a Tower restart
568
+ // (the conscious reversal of Spec 1307's drop-on-restart semantics). A row is deliverable
569
+ // only when `not_before IS NULL OR not_before <= now`; null means deliver-ASAP (every
570
+ // pre-round-3 row). PRAGMA-gated ADD COLUMN mirroring v16 — a blanket try/catch would let a
571
+ // real ALTER failure be recorded as "migrated" and every subsequent mailbox insert (which
572
+ // now names not_before) would then fail against a table missing it. Do NOT edit v15 in place:
573
+ // dev machines on this branch already applied it, so the column must arrive as its own step.
574
+ const v17 = db.prepare('SELECT version FROM _migrations WHERE version = 17').get();
575
+ if (!v17) {
576
+ const hasNotBefore = db.prepare(`PRAGMA table_info(mailbox)`).all()
577
+ .some((c) => c.name === 'not_before');
578
+ if (!hasNotBefore) {
579
+ db.exec(`ALTER TABLE mailbox ADD COLUMN not_before INTEGER`);
580
+ }
581
+ db.prepare('INSERT INTO _migrations (version) VALUES (17)').run();
582
+ console.log('[info] Added not_before column to mailbox (Spec 1313 durable --delay)');
583
+ }
505
584
  return db;
506
585
  }
507
586
  // Re-export types and utilities
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,8EAA8E;AAC9E,2EAA2E;AAC3E,sDAAsD;AACtD,IAAI,SAAS,GAA6B,IAAI,CAAC;AAE/C;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,EAAqB;IAC7C,uEAAuE;IACvE,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACvF,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,oEAAoE;IACpE,gDAAgD;IAChD,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEhC,0CAA0C;IAC1C,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,iCAAiC;IACjC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO;IACrB,aAAa,EAAE,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,MAAM,GAAG,WAAW,CAAC;IACzB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC,0BAA0B;IAC1B,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,uBAAuB;IACvB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAErB,8DAA8D;IAC9D,MAAM,sBAAsB,GAAG,EAAE,CAAC;IAElC,yEAAyE;IACzE,uFAAuF;IACvF,uFAAuF;IACvF,4FAA4F;IAC5F,uFAAuF;IACvF,8EAA8E;IAC9E,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,gFAAgF,CACjF,CAAC,GAAG,EAAE,CAAC;IACR,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC;IAE5B,IAAI,OAAO,EAAE,CAAC;QACZ,yDAAyD;QACzD,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvB,oEAAoE;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,EAAE,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,6FAA6F;IAC7F,+CAA+C;IAC/C,EAAE,CAAC,IAAI,CAAC;;;IAGN,CAAC,CAAC;IAEJ,+FAA+F;IAC/F,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;IACnE,CAAC;IAED,iEAAiE;IACjE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,qDAAqD;QACrD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;KAYP,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;IAED,wDAAwD;IACxD,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,CAAC,IAAI,CAAC;;;;;;;;KAQP,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,yEAAyE;IACzE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,CAAC,IAAI,CAAC;;;;;;KAMP,CAAC,CAAC;QACH,8EAA8E;QAC9E,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,sEAAsE;IACtE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,6BAA6B,CAAC,CAAC;QAC7F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CAAC,4CAA4C,GAAG,EAAE,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;YAC7D,CAAC;QACH,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAChF,CAAC;IAED,oFAAoF;IACpF,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,+DAA+D;QAC/D,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;OAmBP,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACvF,CAAC;IAED,oEAAoE;IACpE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;OAqBP,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;QACD,uCAAuC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;wBACvD,IAAI,CAAC;4BACH,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;wBACxD,CAAC;wBAAC,MAAM,CAAC;4BACP,gEAAgE;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC9F,CAAC;IAED,+EAA+E;IAC/E,6FAA6F;IAC7F,iFAAiF;IACjF,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,4DAA4D;YAC5D,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;OAmBP,CAAC,CAAC;YAEH,oDAAoD;YACpD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;OAaP,CAAC,CAAC;YAEH,iFAAiF;YACjF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;OASP,CAAC,CAAC;YAEH,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;IAED,iDAAiD;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,EAAE,CAAC;IACnF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;KAWP,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,kEAAkE;IAClE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,EAAE,CAAC;IACnF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IAC3E,CAAC;IAED,mEAAmE;IACnE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,EAAE,CAAC;IACnF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC5E,CAAC;IAED,yFAAyF;IACzF,mFAAmF;IACnF,oFAAoF;IACpF,+EAA+E;IAC/E,kFAAkF;IAClF,0CAA0C;IAC1C,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,EAAE,CAAC;IACnF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,EAAE,CAAC,OAAO,CAAC;;;;KAIV,CAAC,CAAC,GAAG,EAAE,CAAC;QACT,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IAED,mEAAmE;IACnE,2EAA2E;IAC3E,6EAA6E;IAC7E,wEAAwE;IACxE,8DAA8D;IAC9D,sEAAsE;IACtE,oEAAoE;IACpE,0EAA0E;IAC1E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,EAAE,CAAC;IACnF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgEP,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Mailbox repository (Spec 1313 — mailbox-first delivery).
3
+ *
4
+ * Pure, unit-testable data operations over the `mailbox` table. Every `afx send`
5
+ * is persisted here *before* the send response returns, so nothing is lost to a
6
+ * Tower crash, restart, or shutdown. This module is deliberately decoupled from
7
+ * delivery: it never writes to a PTY and never runs the render-gate. The delivery
8
+ * orchestration (Phase 4) wires against these proven operations.
9
+ *
10
+ * Design notes:
11
+ * - Functions take an explicit `db` handle first (matching `db/consolidate.ts`),
12
+ * which keeps them trivially testable against any better-sqlite3 database.
13
+ * - Timestamps are epoch-ms integers supplied by the caller (defaulting to
14
+ * `Date.now()`), so ordering and age math are deterministic and test-injectable.
15
+ * - `workspace_path` is treated as an opaque addressing key: callers pass a
16
+ * canonical path (the send boundary canonicalizes in Phase 4), mirroring how
17
+ * `cron_tasks` scopes by workspace. This module does not canonicalize.
18
+ * - The lifecycle state machine (`held → delivered | superseded | dismissed`) is
19
+ * enforced here: every transition targets only `held` rows, so a terminal row
20
+ * can never revert (no `delivered → held`) and `supersede` only replaces a row
21
+ * that is still `held`.
22
+ */
23
+ import type Database from 'better-sqlite3';
24
+ import type { DbMailbox, MailboxReason } from './types.js';
25
+ /**
26
+ * Fields a caller supplies to persist a new held row. The repository fills in the
27
+ * id, `held` status, `escalated=0`, and the timestamps.
28
+ */
29
+ export interface EnqueueInput {
30
+ workspacePath: string;
31
+ toAgent: string;
32
+ /** Raw message body (never logged). */
33
+ body: string;
34
+ /** Exact bytes written to the PTY on delivery. */
35
+ formattedMessage: string;
36
+ /** Last-known PTY hint; the recipient is the agent, not this terminal. */
37
+ terminalId?: string | null;
38
+ fromAgent?: string | null;
39
+ fromWorkspace?: string | null;
40
+ /** Stage the text without submitting (no trailing Enter). */
41
+ noEnter?: boolean;
42
+ /** Initial why-held reason; null if it will be delivered immediately. */
43
+ reason?: MailboxReason | null;
44
+ /** Cron-only coalescing key; null for direct sends. */
45
+ supersedeKey?: string | null;
46
+ /**
47
+ * Delayed-send due time in epoch-ms (Spec 1313 round 3 — `--delay`). null means
48
+ * deliver-ASAP (every non-delayed send). A row is deliverable only once
49
+ * `not_before IS NULL OR not_before <= now`; a delayed send persists this at REQUEST
50
+ * time so the delay is durable across a Tower restart.
51
+ */
52
+ notBefore?: number | null;
53
+ }
54
+ /**
55
+ * Persist a new `held` row and return it. This is the persist-first step: the row
56
+ * exists (and survives a crash) before any delivery is attempted.
57
+ */
58
+ export declare function enqueue(db: Database.Database, input: EnqueueInput, now?: number): DbMailbox;
59
+ /** Fetch a single row by id, or null if it does not exist. */
60
+ export declare function getById(db: Database.Database, id: string): DbMailbox | null;
61
+ /**
62
+ * List all currently-held rows, oldest first. Scoped to `workspacePath` when
63
+ * provided, else workspace-wide (for `afx inbox`). `id` breaks created_at ties
64
+ * for deterministic ordering.
65
+ */
66
+ export declare function listHeld(db: Database.Database, workspacePath?: string): DbMailbox[];
67
+ /**
68
+ * ELIGIBLE held rows addressed to a specific agent, in enqueue order (`created_at ASC`).
69
+ * This is the per-agent drain order a delivery pass walks.
70
+ *
71
+ * Spec 1313 round 3 (`--delay`): a row is deliverable only when
72
+ * `not_before IS NULL OR not_before <= now` — a pre-due delayed send is EXCLUDED here, so it
73
+ * neither delivers early nor blocks a later normal message (the drainer picks `held[0]`, the
74
+ * oldest ELIGIBLE row). It becomes eligible on the first pass at/after its due time. `now`
75
+ * defaults to `Date.now()` and is injectable for deterministic tests.
76
+ */
77
+ export declare function findHeldForAgent(db: Database.Database, workspacePath: string, toAgent: string, now?: number): DbMailbox[];
78
+ /**
79
+ * Held rows whose escalation age ({@link ESCALATION_START_SQL} → now) has crossed `maxAgeMs`
80
+ * and that have NOT yet been escalated. Tower-global (every workspace) — the drainer's
81
+ * escalation pass walks these once per tick to flip `escalated` and emit the visibility
82
+ * broadcast. Bounded by the (small) held set, so a full scan is fine. Oldest effective-start
83
+ * escalates first.
84
+ *
85
+ * Spec 1313 round 3: a PRE-DUE delayed row never escalates — its effective start is its
86
+ * future `not_before`, which cannot be `< cutoff` (cutoff = now − maxAgeMs ≤ now), so the
87
+ * age filter excludes it by construction. A delayed row escalates only after it has been
88
+ * deliverable-but-stuck (past its due time) for the window.
89
+ */
90
+ export declare function findEscalatable(db: Database.Database, maxAgeMs: number, now?: number): DbMailbox[];
91
+ /** Per-agent held tally within a workspace (drives the overview's live indicator). */
92
+ export interface HeldAgentCount {
93
+ toAgent: string;
94
+ count: number;
95
+ /** True if any of this agent's held rows has crossed the escalation age. */
96
+ escalated: boolean;
97
+ }
98
+ /** Workspace-level held summary: total, whether any row is escalated, and the per-agent split. */
99
+ export interface WorkspaceHeldSummary {
100
+ total: number;
101
+ escalated: boolean;
102
+ byAgent: HeldAgentCount[];
103
+ }
104
+ /**
105
+ * Count currently-held rows for a workspace, grouped by recipient agent, with an
106
+ * escalation flag. Counts only — **no message bodies** are read or returned, so this is
107
+ * safe to fold into the overview payload that the dashboard/VSCode indicator renders
108
+ * (spec: the indicator is count-only; bodies live only in `afx inbox`). Aggregated in
109
+ * SQL so cost is bounded by the (small) held set, not the row bodies.
110
+ *
111
+ * ELIGIBLE rows only (Spec 1313 round 3): a PRE-DUE delayed send (`not_before` in the
112
+ * future) is "scheduled, not stuck" and must NOT inflate the attention count/indicator —
113
+ * this is the same `not_before IS NULL OR not_before <= now` eligibility every other
114
+ * count/alarm surface uses (`findHeldForAgent`, `findEscalatable`, `findStarvingAgents`),
115
+ * so `afx status` / the dashboard badge report deliverable-but-stuck mail, not scheduled
116
+ * sends. (Pre-due rows are still visible in `afx inbox`, which lists ALL held rows and
117
+ * labels these "scheduled" — only the count/alarm surfaces exclude them.) The `escalated`
118
+ * flag was already pre-due-safe (a pre-due row never escalates); this aligns the raw count.
119
+ */
120
+ export declare function heldSummaryForWorkspace(db: Database.Database, workspacePath: string, now?: number): WorkspaceHeldSummary;
121
+ /**
122
+ * Transition a held row to `delivered` (clearing its why-held reason and stamping
123
+ * `resolved_at`). Returns true if it transitioned; false if the row was already
124
+ * terminal or does not exist — so a re-delivery attempt (backstop racing a submit
125
+ * trigger) is a safe no-op and can never revert or double-deliver a row.
126
+ */
127
+ export declare function markDelivered(db: Database.Database, id: string, now?: number): boolean;
128
+ /**
129
+ * Refresh the why-held `reason` on a still-held row (informational — the value
130
+ * `afx inbox` shows and the send response reports). Only touches `held` rows, so
131
+ * it can never relabel or resurrect a terminal row. Returns true if a held row was
132
+ * updated. The delivery pass calls this so a held row's reason tracks the current
133
+ * gate verdict (e.g. `busy` → `no-live-pty` when the terminal dies).
134
+ */
135
+ export declare function setHeldReason(db: Database.Database, id: string, reason: MailboxReason | null, now?: number): boolean;
136
+ /**
137
+ * Flag a still-held row as escalated — **visibility only, NEVER affects delivery**. The
138
+ * drainer's escalation pass calls this when a row crosses the escalation age, then emits
139
+ * the escalation broadcast; the row still delivers only on a later clean gate pass.
140
+ * Held-only and idempotent (the `escalated = 0` guard), so a terminal or already-escalated
141
+ * row is untouched. Returns true if it flipped.
142
+ */
143
+ export declare function markEscalated(db: Database.Database, id: string, now?: number): boolean;
144
+ /**
145
+ * Supersede-key prefix for architect starvation notices (Spec 1313 round 3, change 3). A
146
+ * notice row carries `${NOTICE_SUPERSEDE_PREFIX}<starving-agent>` so (a) one pending notice
147
+ * per starving agent coalesces via {@link supersede}, and (b) notice rows are recognizable by
148
+ * prefix and EXCLUDED from {@link findStarvingAgents} — a notice can never itself trigger a
149
+ * notice ("no notice about a notice"). Cron uses bare task names as keys, which never collide
150
+ * with this prefix.
151
+ */
152
+ export declare const NOTICE_SUPERSEDE_PREFIX = "mailbox-notice:";
153
+ /** Per-agent aggregate over an agent's ELIGIBLE, non-notice held rows (Spec 1313 round 3). */
154
+ export interface StarvingAgent {
155
+ workspacePath: string;
156
+ toAgent: string;
157
+ /**
158
+ * Escalation-start ({@link ESCALATION_START_SQL}) of the OLDEST eligible held row — the
159
+ * moment this agent's oldest deliverable mail became stuck. Its age is `now - stuckSince`.
160
+ */
161
+ stuckSince: number;
162
+ /** How many eligible non-notice rows are held for this agent. */
163
+ count: number;
164
+ /** Representative why-held reason (held rows for one agent share the gate's verdict). */
165
+ reason: MailboxReason | null;
166
+ }
167
+ /**
168
+ * Per-agent view of currently-STARVING mail (Spec 1313 round 3, change 3): agents with at
169
+ * least one ELIGIBLE (`not_before IS NULL OR not_before <= now`) held row that is NOT itself a
170
+ * notice ({@link NOTICE_SUPERSEDE_PREFIX}). Tower-global (every workspace), aggregated in SQL
171
+ * so cost is bounded by the (small) held set. The drainer's notice pass compares each agent's
172
+ * `stuckSince` against the owner-notice threshold to decide whether to alarm, and uses the
173
+ * membership of the returned set to decide when a prior notice can be cleared (agent no longer
174
+ * has any eligible non-notice held row → drained). PRE-DUE delayed rows are excluded (not
175
+ * stuck), so a scheduled send never trips the alarm nor keeps one alive.
176
+ */
177
+ export declare function findStarvingAgents(db: Database.Database, now?: number): StarvingAgent[];
178
+ /**
179
+ * Dismiss every still-`held` row matching `(workspacePath, supersedeKey)` (Spec 1313 round 3).
180
+ * Used to clear a pending architect notice once its starving agent recovers (the notice is
181
+ * moot). Audit-preserving (soft transition), and a no-op on an already-delivered notice.
182
+ * Returns the number of rows dismissed.
183
+ */
184
+ export declare function dismissHeldWithKey(db: Database.Database, workspacePath: string, supersedeKey: string, now?: number): number;
185
+ /**
186
+ * Dismiss every still-`held` row addressed to an agent (Spec 1313 round 3, take-now B). Called
187
+ * when an agent is cleaned up (`afx cleanup`) so its orphaned held rows stop pinning
188
+ * `heldCount`/escalated forever — the terminal-row prune only removes delivered/superseded/
189
+ * dismissed rows, never held ones. Audit-preserving. Returns the number of rows dismissed.
190
+ */
191
+ export declare function dismissHeldForAgent(db: Database.Database, workspacePath: string, toAgent: string, now?: number): number;
192
+ /**
193
+ * Transition a held row to `dismissed` (operator-cleared via `afx inbox dismiss`).
194
+ * The why-held reason is preserved for audit. Returns true if it transitioned;
195
+ * a dismissed row is never delivered.
196
+ */
197
+ export declare function dismiss(db: Database.Database, id: string, now?: number): boolean;
198
+ /**
199
+ * Count currently-`held` rows sharing `(workspacePath, supersedeKey)`. Cron reads
200
+ * this immediately before {@link supersede} — with no `await` between the two calls,
201
+ * so on better-sqlite3's synchronous, single-threaded handle the pair cannot
202
+ * interleave with another run — to log an honest outcome: a newer run that finds a
203
+ * prior held row of the same task reports `superseded`, otherwise `held`. The
204
+ * `(supersede_key)` index keeps this cheap.
205
+ */
206
+ export declare function countHeldWithKey(db: Database.Database, workspacePath: string, supersedeKey: string): number;
207
+ /**
208
+ * Replace the held row sharing `(workspacePath, supersedeKey)` — if any — with a
209
+ * fresh held row carrying the same key, atomically. Only `held` rows are
210
+ * superseded (a delivered/dismissed row is untouched), so a newer cron run
211
+ * collapses a stale backlog without disturbing history. When no held row matches,
212
+ * this is just an enqueue. Returns the newly-enqueued replacement row.
213
+ */
214
+ export declare function supersede(db: Database.Database, workspacePath: string, supersedeKey: string, input: EnqueueInput, now?: number): DbMailbox;
215
+ /**
216
+ * Delete terminal rows (delivered/superseded/dismissed) whose `resolved_at` is
217
+ * older than `retentionDays`. Held rows are never removed — the `status != 'held'`
218
+ * and `resolved_at IS NOT NULL` guards make that impossible even if a held row
219
+ * somehow carried a stale timestamp. Returns the number of rows deleted.
220
+ */
221
+ export declare function pruneTerminal(db: Database.Database, retentionDays: number, now?: number): number;
222
+ //# sourceMappingURL=mailbox.d.ts.map