aicodeman 1.43.0 → 1.45.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 (353) hide show
  1. package/README.md +9 -4
  2. package/dist/case-rename.d.ts +65 -0
  3. package/dist/case-rename.d.ts.map +1 -0
  4. package/dist/case-rename.js +198 -0
  5. package/dist/case-rename.js.map +1 -0
  6. package/dist/cli-agent.d.ts +63 -4
  7. package/dist/cli-agent.d.ts.map +1 -1
  8. package/dist/cli-agent.js +233 -19
  9. package/dist/cli-agent.js.map +1 -1
  10. package/dist/config/auth-config.d.ts +16 -1
  11. package/dist/config/auth-config.d.ts.map +1 -1
  12. package/dist/config/auth-config.js +16 -1
  13. package/dist/config/auth-config.js.map +1 -1
  14. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  15. package/dist/config/cli-registry/stock.js +8 -3
  16. package/dist/config/cli-registry/stock.js.map +1 -1
  17. package/dist/config/cli-registry/types.d.ts +2 -2
  18. package/dist/config/map-limits.d.ts +13 -1
  19. package/dist/config/map-limits.d.ts.map +1 -1
  20. package/dist/config/map-limits.js +28 -1
  21. package/dist/config/map-limits.js.map +1 -1
  22. package/dist/config-backup.d.ts +279 -0
  23. package/dist/config-backup.d.ts.map +1 -0
  24. package/dist/config-backup.js +794 -0
  25. package/dist/config-backup.js.map +1 -0
  26. package/dist/cron/cron-service.d.ts +5 -5
  27. package/dist/cron/cron-service.js +6 -6
  28. package/dist/cron/cron-service.js.map +1 -1
  29. package/dist/custom-model-hosts.d.ts +16 -0
  30. package/dist/custom-model-hosts.d.ts.map +1 -1
  31. package/dist/custom-model-hosts.js.map +1 -1
  32. package/dist/hooks-config.d.ts +15 -0
  33. package/dist/hooks-config.d.ts.map +1 -1
  34. package/dist/hooks-config.js +35 -0
  35. package/dist/hooks-config.js.map +1 -1
  36. package/dist/host-sensors.d.ts +115 -0
  37. package/dist/host-sensors.d.ts.map +1 -0
  38. package/dist/host-sensors.js +457 -0
  39. package/dist/host-sensors.js.map +1 -0
  40. package/dist/intent-store.d.ts +2 -0
  41. package/dist/intent-store.d.ts.map +1 -1
  42. package/dist/intent-store.js +9 -0
  43. package/dist/intent-store.js.map +1 -1
  44. package/dist/mux-interface.d.ts +21 -4
  45. package/dist/mux-interface.d.ts.map +1 -1
  46. package/dist/prompt-cache-keepwarm.d.ts +193 -0
  47. package/dist/prompt-cache-keepwarm.d.ts.map +1 -0
  48. package/dist/prompt-cache-keepwarm.js +359 -0
  49. package/dist/prompt-cache-keepwarm.js.map +1 -0
  50. package/dist/remote-hosts.d.ts +7 -0
  51. package/dist/remote-hosts.d.ts.map +1 -1
  52. package/dist/remote-hosts.js +17 -3
  53. package/dist/remote-hosts.js.map +1 -1
  54. package/dist/remote-pane-history.d.ts.map +1 -1
  55. package/dist/remote-pane-history.js +2 -2
  56. package/dist/remote-pane-history.js.map +1 -1
  57. package/dist/respawn-controller.d.ts.map +1 -1
  58. package/dist/respawn-controller.js +6 -5
  59. package/dist/respawn-controller.js.map +1 -1
  60. package/dist/session-auto-ops.d.ts.map +1 -1
  61. package/dist/session-auto-ops.js +6 -1
  62. package/dist/session-auto-ops.js.map +1 -1
  63. package/dist/session-cli-registry-bridge.d.ts +13 -0
  64. package/dist/session-cli-registry-bridge.d.ts.map +1 -1
  65. package/dist/session-cli-registry-bridge.js +20 -3
  66. package/dist/session-cli-registry-bridge.js.map +1 -1
  67. package/dist/session-submit-verifier.d.ts +19 -0
  68. package/dist/session-submit-verifier.d.ts.map +1 -1
  69. package/dist/session-submit-verifier.js +88 -0
  70. package/dist/session-submit-verifier.js.map +1 -1
  71. package/dist/session.d.ts +61 -5
  72. package/dist/session.d.ts.map +1 -1
  73. package/dist/session.js +125 -7
  74. package/dist/session.js.map +1 -1
  75. package/dist/state-store.d.ts +10 -0
  76. package/dist/state-store.d.ts.map +1 -1
  77. package/dist/state-store.js +35 -0
  78. package/dist/state-store.js.map +1 -1
  79. package/dist/tab-layout-service.d.ts +33 -0
  80. package/dist/tab-layout-service.d.ts.map +1 -1
  81. package/dist/tab-layout-service.js +75 -3
  82. package/dist/tab-layout-service.js.map +1 -1
  83. package/dist/tmux-manager.d.ts +57 -11
  84. package/dist/tmux-manager.d.ts.map +1 -1
  85. package/dist/tmux-manager.js +190 -42
  86. package/dist/tmux-manager.js.map +1 -1
  87. package/dist/tmux-prefix-table.d.ts +86 -0
  88. package/dist/tmux-prefix-table.d.ts.map +1 -0
  89. package/dist/tmux-prefix-table.js +172 -0
  90. package/dist/tmux-prefix-table.js.map +1 -0
  91. package/dist/tui/tui-app.d.ts +17 -2
  92. package/dist/tui/tui-app.d.ts.map +1 -1
  93. package/dist/tui/tui-app.js +70 -20
  94. package/dist/tui/tui-app.js.map +1 -1
  95. package/dist/tui/tui-client.d.ts +93 -5
  96. package/dist/tui/tui-client.d.ts.map +1 -1
  97. package/dist/tui/tui-client.js +198 -28
  98. package/dist/tui/tui-client.js.map +1 -1
  99. package/dist/types/app-state.d.ts +6 -0
  100. package/dist/types/app-state.d.ts.map +1 -1
  101. package/dist/types/app-state.js.map +1 -1
  102. package/dist/types/session.d.ts +40 -1
  103. package/dist/types/session.d.ts.map +1 -1
  104. package/dist/types/session.js.map +1 -1
  105. package/dist/usage-telemetry.d.ts +15 -0
  106. package/dist/usage-telemetry.d.ts.map +1 -1
  107. package/dist/usage-telemetry.js +45 -2
  108. package/dist/usage-telemetry.js.map +1 -1
  109. package/dist/utils/copilot-plan-usage.d.ts +46 -0
  110. package/dist/utils/copilot-plan-usage.d.ts.map +1 -0
  111. package/dist/utils/copilot-plan-usage.js +95 -0
  112. package/dist/utils/copilot-plan-usage.js.map +1 -0
  113. package/dist/utils/index.d.ts +2 -0
  114. package/dist/utils/index.d.ts.map +1 -1
  115. package/dist/utils/index.js +2 -0
  116. package/dist/utils/index.js.map +1 -1
  117. package/dist/utils/single-line.d.ts +22 -0
  118. package/dist/utils/single-line.d.ts.map +1 -0
  119. package/dist/utils/single-line.js +30 -0
  120. package/dist/utils/single-line.js.map +1 -0
  121. package/dist/web/agent-inbox-persistence.d.ts +52 -0
  122. package/dist/web/agent-inbox-persistence.d.ts.map +1 -0
  123. package/dist/web/agent-inbox-persistence.js +139 -0
  124. package/dist/web/agent-inbox-persistence.js.map +1 -0
  125. package/dist/web/agent-inbox.d.ts +140 -0
  126. package/dist/web/agent-inbox.d.ts.map +1 -0
  127. package/dist/web/agent-inbox.js +258 -0
  128. package/dist/web/agent-inbox.js.map +1 -0
  129. package/dist/web/approval-inbox.d.ts +6 -0
  130. package/dist/web/approval-inbox.d.ts.map +1 -1
  131. package/dist/web/approval-inbox.js +2 -2
  132. package/dist/web/approval-inbox.js.map +1 -1
  133. package/dist/web/middleware/auth.d.ts +2 -0
  134. package/dist/web/middleware/auth.d.ts.map +1 -1
  135. package/dist/web/middleware/auth.js +145 -52
  136. package/dist/web/middleware/auth.js.map +1 -1
  137. package/dist/web/plan-usage-latest.d.ts +2 -1
  138. package/dist/web/plan-usage-latest.d.ts.map +1 -1
  139. package/dist/web/plan-usage-latest.js +12 -2
  140. package/dist/web/plan-usage-latest.js.map +1 -1
  141. package/dist/web/ports/index.d.ts +1 -0
  142. package/dist/web/ports/index.d.ts.map +1 -1
  143. package/dist/web/ports/keep-warm-port.d.ts +9 -0
  144. package/dist/web/ports/keep-warm-port.d.ts.map +1 -0
  145. package/dist/web/ports/keep-warm-port.js +6 -0
  146. package/dist/web/ports/keep-warm-port.js.map +1 -0
  147. package/dist/web/ports/session-port.d.ts +3 -1
  148. package/dist/web/ports/session-port.d.ts.map +1 -1
  149. package/dist/web/public/admin-ui.js.gz +0 -0
  150. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  151. package/dist/web/public/app.42d0abae.js +43 -0
  152. package/dist/web/public/app.42d0abae.js.br +0 -0
  153. package/dist/web/public/app.42d0abae.js.gz +0 -0
  154. package/dist/web/public/approvals-ui.js.gz +0 -0
  155. package/dist/web/public/{constants.e5e588db.js → constants.0b3cdde9.js} +60 -1
  156. package/dist/web/public/constants.0b3cdde9.js.br +0 -0
  157. package/dist/web/public/constants.0b3cdde9.js.gz +0 -0
  158. package/dist/web/public/cron-ui.js.gz +0 -0
  159. package/dist/web/public/entrance-animations.js.gz +0 -0
  160. package/dist/web/public/git-status-ui.js.gz +0 -0
  161. package/dist/web/public/header-divider.eb2d2463.js +1 -0
  162. package/dist/web/public/header-divider.eb2d2463.js.br +0 -0
  163. package/dist/web/public/header-divider.eb2d2463.js.gz +0 -0
  164. package/dist/web/public/home-sessions.js.gz +0 -0
  165. package/dist/web/public/host-wake-ui.js.gz +0 -0
  166. package/dist/web/public/i18n.1e68220d.js +2 -0
  167. package/dist/web/public/i18n.1e68220d.js.br +0 -0
  168. package/dist/web/public/i18n.1e68220d.js.gz +0 -0
  169. package/dist/web/public/image-input.941386e7.js.gz +0 -0
  170. package/dist/web/public/index.html +162 -14
  171. package/dist/web/public/index.html.br +0 -0
  172. package/dist/web/public/index.html.gz +0 -0
  173. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  174. package/dist/web/public/{keyboard-accessory.c283e827.js → keyboard-accessory.4e8b20ac.js} +23 -5
  175. package/dist/web/public/keyboard-accessory.4e8b20ac.js.br +0 -0
  176. package/dist/web/public/keyboard-accessory.4e8b20ac.js.gz +0 -0
  177. package/dist/web/public/{mobile-handlers.0ef9c311.js → mobile-handlers.1c0cbcd8.js} +50 -16
  178. package/dist/web/public/mobile-handlers.1c0cbcd8.js.br +0 -0
  179. package/dist/web/public/mobile-handlers.1c0cbcd8.js.gz +0 -0
  180. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  181. package/dist/web/public/mobile-overview.js.gz +0 -0
  182. package/dist/web/public/mobile.12fb18de.css +1 -0
  183. package/dist/web/public/mobile.12fb18de.css.br +0 -0
  184. package/dist/web/public/mobile.12fb18de.css.gz +0 -0
  185. package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
  186. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  187. package/dist/web/public/{panels-ui.b7bfb9da.js → panels-ui.78c3defb.js} +19 -13
  188. package/dist/web/public/panels-ui.78c3defb.js.br +0 -0
  189. package/dist/web/public/panels-ui.78c3defb.js.gz +0 -0
  190. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  191. package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
  192. package/dist/web/public/readmymind-ui.js.gz +0 -0
  193. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  194. package/dist/web/public/respawn-ui.d7adcf6a.js.gz +0 -0
  195. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  196. package/dist/web/public/session-lineage.js.gz +0 -0
  197. package/dist/web/public/{session-ui.be076c88.js → session-ui.ea6b1994.js} +33 -27
  198. package/dist/web/public/session-ui.ea6b1994.js.br +0 -0
  199. package/dist/web/public/session-ui.ea6b1994.js.gz +0 -0
  200. package/dist/web/public/settings-ui.085dd202.js +106 -0
  201. package/dist/web/public/settings-ui.085dd202.js.br +0 -0
  202. package/dist/web/public/settings-ui.085dd202.js.gz +0 -0
  203. package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
  204. package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
  205. package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
  206. package/dist/web/public/styles.3b59b41d.css +1 -0
  207. package/dist/web/public/styles.3b59b41d.css.br +0 -0
  208. package/dist/web/public/styles.3b59b41d.css.gz +0 -0
  209. package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
  210. package/dist/web/public/sw.js +2 -2
  211. package/dist/web/public/sw.js.br +0 -0
  212. package/dist/web/public/sw.js.gz +0 -0
  213. package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
  214. package/dist/web/public/tab-rail-resize.7157e0bd.js.gz +0 -0
  215. package/dist/web/public/terminal-keycode229-recovery.af09f99a.js.gz +0 -0
  216. package/dist/web/public/terminal-split.js.gz +0 -0
  217. package/dist/web/public/terminal-tile.js +49 -23
  218. package/dist/web/public/terminal-tile.js.br +0 -0
  219. package/dist/web/public/terminal-tile.js.gz +0 -0
  220. package/dist/web/public/terminal-ui.fb2a27f5.js +2 -0
  221. package/dist/web/public/terminal-ui.fb2a27f5.js.br +0 -0
  222. package/dist/web/public/terminal-ui.fb2a27f5.js.gz +0 -0
  223. package/dist/web/public/tile-grid.js.gz +0 -0
  224. package/dist/web/public/ultracode-panel.js.gz +0 -0
  225. package/dist/web/public/ultracode-windows.js.gz +0 -0
  226. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  227. package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
  228. package/dist/web/public/vendor/fflate.min.js.gz +0 -0
  229. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  230. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  231. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  232. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  233. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  234. package/dist/web/public/vendor/xterm-predictive-echo.ae5e3d5d.js.gz +0 -0
  235. package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.gz +0 -0
  236. package/dist/web/public/vendor/xterm.css.gz +0 -0
  237. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  238. package/dist/web/public/voice-input.2342c37b.js.gz +0 -0
  239. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  240. package/dist/web/public/webview-tabs.js.gz +0 -0
  241. package/dist/web/public/whats-new.json +9 -9
  242. package/dist/web/route-helpers.d.ts +57 -6
  243. package/dist/web/route-helpers.d.ts.map +1 -1
  244. package/dist/web/route-helpers.js +72 -4
  245. package/dist/web/route-helpers.js.map +1 -1
  246. package/dist/web/routes/admin-routes.d.ts +2 -1
  247. package/dist/web/routes/admin-routes.d.ts.map +1 -1
  248. package/dist/web/routes/admin-routes.js +3 -0
  249. package/dist/web/routes/admin-routes.js.map +1 -1
  250. package/dist/web/routes/case-routes.d.ts +2 -2
  251. package/dist/web/routes/case-routes.d.ts.map +1 -1
  252. package/dist/web/routes/case-routes.js +263 -4
  253. package/dist/web/routes/case-routes.js.map +1 -1
  254. package/dist/web/routes/config-backup-routes.d.ts +54 -0
  255. package/dist/web/routes/config-backup-routes.d.ts.map +1 -0
  256. package/dist/web/routes/config-backup-routes.js +268 -0
  257. package/dist/web/routes/config-backup-routes.js.map +1 -0
  258. package/dist/web/routes/custom-model-routes.d.ts +17 -1
  259. package/dist/web/routes/custom-model-routes.d.ts.map +1 -1
  260. package/dist/web/routes/custom-model-routes.js +118 -13
  261. package/dist/web/routes/custom-model-routes.js.map +1 -1
  262. package/dist/web/routes/hook-event-routes.d.ts.map +1 -1
  263. package/dist/web/routes/hook-event-routes.js +26 -5
  264. package/dist/web/routes/hook-event-routes.js.map +1 -1
  265. package/dist/web/routes/inbox-routes.d.ts +43 -0
  266. package/dist/web/routes/inbox-routes.d.ts.map +1 -0
  267. package/dist/web/routes/inbox-routes.js +148 -0
  268. package/dist/web/routes/inbox-routes.js.map +1 -0
  269. package/dist/web/routes/index.d.ts +2 -0
  270. package/dist/web/routes/index.d.ts.map +1 -1
  271. package/dist/web/routes/index.js +2 -0
  272. package/dist/web/routes/index.js.map +1 -1
  273. package/dist/web/routes/ralph-routes.js +2 -2
  274. package/dist/web/routes/ralph-routes.js.map +1 -1
  275. package/dist/web/routes/reboot-restore-routes.d.ts.map +1 -1
  276. package/dist/web/routes/reboot-restore-routes.js +2 -0
  277. package/dist/web/routes/reboot-restore-routes.js.map +1 -1
  278. package/dist/web/routes/session-routes.d.ts +2 -2
  279. package/dist/web/routes/session-routes.d.ts.map +1 -1
  280. package/dist/web/routes/session-routes.js +110 -61
  281. package/dist/web/routes/session-routes.js.map +1 -1
  282. package/dist/web/routes/status-telemetry-routes.d.ts +2 -2
  283. package/dist/web/routes/status-telemetry-routes.d.ts.map +1 -1
  284. package/dist/web/routes/status-telemetry-routes.js +8 -4
  285. package/dist/web/routes/status-telemetry-routes.js.map +1 -1
  286. package/dist/web/routes/system-routes.d.ts +2 -2
  287. package/dist/web/routes/system-routes.d.ts.map +1 -1
  288. package/dist/web/routes/system-routes.js +30 -2
  289. package/dist/web/routes/system-routes.js.map +1 -1
  290. package/dist/web/routes/webview-routes.d.ts.map +1 -1
  291. package/dist/web/routes/webview-routes.js +1 -0
  292. package/dist/web/routes/webview-routes.js.map +1 -1
  293. package/dist/web/schemas.d.ts +45 -0
  294. package/dist/web/schemas.d.ts.map +1 -1
  295. package/dist/web/schemas.js +79 -2
  296. package/dist/web/schemas.js.map +1 -1
  297. package/dist/web/sensitive-path.d.ts.map +1 -1
  298. package/dist/web/sensitive-path.js +2 -0
  299. package/dist/web/sensitive-path.js.map +1 -1
  300. package/dist/web/server.d.ts +14 -2
  301. package/dist/web/server.d.ts.map +1 -1
  302. package/dist/web/server.js +176 -7
  303. package/dist/web/server.js.map +1 -1
  304. package/dist/web/session-listener-wiring.d.ts +6 -0
  305. package/dist/web/session-listener-wiring.d.ts.map +1 -1
  306. package/dist/web/session-listener-wiring.js +10 -3
  307. package/dist/web/session-listener-wiring.js.map +1 -1
  308. package/dist/web/session-wait-registry.d.ts +48 -4
  309. package/dist/web/session-wait-registry.d.ts.map +1 -1
  310. package/dist/web/session-wait-registry.js +144 -6
  311. package/dist/web/session-wait-registry.js.map +1 -1
  312. package/dist/web/sse-events.d.ts +9 -3
  313. package/dist/web/sse-events.d.ts.map +1 -1
  314. package/dist/web/sse-events.js +9 -3
  315. package/dist/web/sse-events.js.map +1 -1
  316. package/dist/web/webview-proxy.d.ts +8 -3
  317. package/dist/web/webview-proxy.d.ts.map +1 -1
  318. package/dist/web/webview-proxy.js +23 -5
  319. package/dist/web/webview-proxy.js.map +1 -1
  320. package/package.json +1 -1
  321. package/skills/codeman/SKILL.md +27 -13
  322. package/skills/codeman/preamble.sh +15 -5
  323. package/skills/codeman/reference/endpoints.md +32 -10
  324. package/skills/codeman/reference/recipes.md +1 -1
  325. package/skills/codeman/reference/verbs.md +68 -13
  326. package/dist/web/public/app.ae50029a.js +0 -43
  327. package/dist/web/public/app.ae50029a.js.br +0 -0
  328. package/dist/web/public/app.ae50029a.js.gz +0 -0
  329. package/dist/web/public/constants.e5e588db.js.br +0 -0
  330. package/dist/web/public/constants.e5e588db.js.gz +0 -0
  331. package/dist/web/public/i18n.8f291f06.js +0 -2
  332. package/dist/web/public/i18n.8f291f06.js.br +0 -0
  333. package/dist/web/public/i18n.8f291f06.js.gz +0 -0
  334. package/dist/web/public/keyboard-accessory.c283e827.js.br +0 -0
  335. package/dist/web/public/keyboard-accessory.c283e827.js.gz +0 -0
  336. package/dist/web/public/mobile-handlers.0ef9c311.js.br +0 -0
  337. package/dist/web/public/mobile-handlers.0ef9c311.js.gz +0 -0
  338. package/dist/web/public/mobile.13514863.css +0 -1
  339. package/dist/web/public/mobile.13514863.css.br +0 -0
  340. package/dist/web/public/mobile.13514863.css.gz +0 -0
  341. package/dist/web/public/panels-ui.b7bfb9da.js.br +0 -0
  342. package/dist/web/public/panels-ui.b7bfb9da.js.gz +0 -0
  343. package/dist/web/public/session-ui.be076c88.js.br +0 -0
  344. package/dist/web/public/session-ui.be076c88.js.gz +0 -0
  345. package/dist/web/public/settings-ui.fc4cc50a.js +0 -97
  346. package/dist/web/public/settings-ui.fc4cc50a.js.br +0 -0
  347. package/dist/web/public/settings-ui.fc4cc50a.js.gz +0 -0
  348. package/dist/web/public/styles.dcfa907f.css +0 -1
  349. package/dist/web/public/styles.dcfa907f.css.br +0 -0
  350. package/dist/web/public/styles.dcfa907f.css.gz +0 -0
  351. package/dist/web/public/terminal-ui.ae01a7d1.js +0 -2
  352. package/dist/web/public/terminal-ui.ae01a7d1.js.br +0 -0
  353. package/dist/web/public/terminal-ui.ae01a7d1.js.gz +0 -0
@@ -37,11 +37,19 @@ export interface UsageWindow {
37
37
  usedPercentage: number;
38
38
  /** Epoch MILLISECONDS when the window resets (statusline reports seconds). */
39
39
  resetAt: number;
40
+ /**
41
+ * Absolute counts, for a window measured in requests rather than as a bare percent (Copilot's
42
+ * monthly premium-request quota). Absent for the Claude and Codex windows.
43
+ */
44
+ used?: number;
45
+ limit?: number;
40
46
  }
41
47
  /** Normalized telemetry Codeman broadcasts to the UI. */
42
48
  export interface StatusTelemetry {
43
49
  fiveHour?: UsageWindow;
44
50
  sevenDay?: UsageWindow;
51
+ /** A calendar-month quota (GitHub Copilot's premium requests); not a rolling 5h/7d window. */
52
+ monthly?: UsageWindow;
45
53
  /** Context-window percent used, 0–100 (bonus field from the same payload). */
46
54
  contextUsedPercentage?: number;
47
55
  /** Session cost in USD (bonus field). */
@@ -106,6 +114,13 @@ export declare function parseStatusTelemetry(data: RawStatuslinePayload | undefi
106
114
  export declare function parsePromptCache(data: RawStatuslinePayload | undefined): PromptCacheStatus | null;
107
115
  /** Normalize the main Codex app-server bucket into the chip's two known windows. */
108
116
  export declare function parseCodexRateLimitsResponse(value: unknown): StatusTelemetry | null;
117
+ /**
118
+ * Normalize GitHub Copilot's quota snapshot (`GET /copilot_internal/user`) into the chip's monthly
119
+ * window. Only `premium_interactions` is a metered quota: `chat` and `completions` report
120
+ * `unlimited: true` on every plan seen, and an unlimited premium quota has nothing to meter, so it
121
+ * yields null and the chip shows no Copilot row rather than a bar stuck at 0%.
122
+ */
123
+ export declare function parseCopilotQuotaResponse(value: unknown): StatusTelemetry | null;
109
124
  /**
110
125
  * Current-session status for the in-terminal statusline footer. This is the
111
126
  * "status of the current session" the user sees in Claude's footer — distinct
@@ -1 +1 @@
1
- {"version":3,"file":"usage-telemetry.d.ts","sourceRoot":"","sources":["../src/usage-telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-telemetry.d.ts","sourceRoot":"","sources":["../src/usage-telemetry.ts"],"names":[],"mappings":"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"}
@@ -134,6 +134,43 @@ export function parseCodexRateLimitsResponse(value) {
134
134
  }
135
135
  return telemetry.fiveHour || telemetry.sevenDay ? telemetry : null;
136
136
  }
137
+ /**
138
+ * Normalize GitHub Copilot's quota snapshot (`GET /copilot_internal/user`) into the chip's monthly
139
+ * window. Only `premium_interactions` is a metered quota: `chat` and `completions` report
140
+ * `unlimited: true` on every plan seen, and an unlimited premium quota has nothing to meter, so it
141
+ * yields null and the chip shows no Copilot row rather than a bar stuck at 0%.
142
+ */
143
+ export function parseCopilotQuotaResponse(value) {
144
+ if (!value || typeof value !== 'object')
145
+ return null;
146
+ const raw = value;
147
+ const snap = raw.quota_snapshots?.premium_interactions;
148
+ if (!snap || typeof snap !== 'object' || snap.unlimited === true)
149
+ return null;
150
+ // A zero (or negative) quota that is not 'unlimited' would show a stuck 0% or 100% row.
151
+ if (typeof snap.entitlement === 'number' && snap.entitlement <= 0)
152
+ return null;
153
+ const finite = (v) => typeof v === 'number' && Number.isFinite(v);
154
+ const limit = finite(snap.entitlement) && snap.entitlement > 0 ? snap.entitlement : undefined;
155
+ let usedPct = null;
156
+ if (finite(snap.percent_remaining))
157
+ usedPct = 100 - snap.percent_remaining;
158
+ else if (limit !== undefined && finite(snap.remaining))
159
+ usedPct = (1 - snap.remaining / limit) * 100;
160
+ if (usedPct === null)
161
+ return null;
162
+ const resetRaw = typeof raw.quota_reset_date_utc === 'string' ? raw.quota_reset_date_utc : raw.quota_reset_date;
163
+ const parsedReset = typeof resetRaw === 'string' ? Date.parse(resetRaw) : NaN;
164
+ const monthly = {
165
+ usedPercentage: clampPct(usedPct),
166
+ resetAt: Number.isFinite(parsedReset) && parsedReset > 0 ? parsedReset : 0,
167
+ };
168
+ if (limit !== undefined && finite(snap.remaining)) {
169
+ monthly.limit = limit;
170
+ monthly.used = Math.max(0, Math.round(limit - snap.remaining));
171
+ }
172
+ return { monthly };
173
+ }
137
174
  /** Group a non-negative integer with thousands separators: 562411 → "562,411". */
138
175
  function withCommas(n) {
139
176
  return Math.max(0, Math.round(n))
@@ -216,11 +253,17 @@ export function formatSessionStatusText(s, now = Date.now()) {
216
253
  * localStorage write + identical chip re-render each time.
217
254
  */
218
255
  export function telemetrySignature(t) {
219
- return JSON.stringify([
256
+ const parts = [
220
257
  t.fiveHour ? Math.round(t.fiveHour.usedPercentage) : null,
221
258
  t.fiveHour?.resetAt ?? null,
222
259
  t.sevenDay ? Math.round(t.sevenDay.usedPercentage) : null,
223
260
  t.sevenDay?.resetAt ?? null,
224
- ]);
261
+ ];
262
+ // Appended only when present, so the Claude and Codex signatures are byte-identical to before.
263
+ // The limit is part of it: a plan change mid-month (300 to 1500 with 100 used) keeps `used` and the reset.
264
+ if (t.monthly) {
265
+ parts.push(Math.round(t.monthly.usedPercentage), t.monthly.used ?? null, t.monthly.limit ?? null, t.monthly.resetAt);
266
+ }
267
+ return JSON.stringify(parts);
225
268
  }
226
269
  //# sourceMappingURL=usage-telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-telemetry.js","sourceRoot":"","sources":["../src/usage-telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-telemetry.js","sourceRoot":"","sources":["../src/usage-telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @fileoverview GitHub Copilot's monthly premium-request quota, for the header plan-usage chip.
3
+ *
4
+ * The Copilot CLI has no scriptable usage command (`copilot billing` exists only inside the TUI), but
5
+ * the same quota snapshot the editors show is `GET https://api.github.com/copilot_internal/user`,
6
+ * readable with the CLI's own sign-in token. The endpoint is not part of GitHub's documented REST API,
7
+ * so this is read-only, best-effort and silent: any failure (offline, 401, a changed shape) yields
8
+ * `null` and the chip simply has no Copilot row.
9
+ *
10
+ * ⚠️ The token is never logged, never put in an error and only ever sent to api.github.com over HTTPS
11
+ * (`redirect: 'error'`, so a redirect cannot carry it elsewhere).
12
+ *
13
+ * @module utils/copilot-plan-usage
14
+ */
15
+ import { type StatusTelemetry } from '../usage-telemetry.js';
16
+ export declare const COPILOT_QUOTA_URL = "https://api.github.com/copilot_internal/user";
17
+ /**
18
+ * The sign-in token Copilot would use: a token in the environment first, then the plain-text
19
+ * `authTokens` entry the CLI keeps in `<COPILOT_HOME or ~/.copilot>/config.json` when no OS keychain
20
+ * is available. Only github.com sign-ins are read from the file (the quota URL is github.com's).
21
+ */
22
+ export declare function resolveCopilotToken(env?: Record<string, string | undefined>, home?: string): Promise<string | null>;
23
+ export interface ReadCopilotPlanUsageOptions {
24
+ /** Defaults to `resolveCopilotToken()`. */
25
+ token?: string | null;
26
+ /** Injectable for tests. */
27
+ fetchFn?: typeof fetch;
28
+ }
29
+ /** The monthly premium-request window, or null when there is no token, no meter or any failure. */
30
+ export declare function readCopilotPlanUsage(opts?: ReadCopilotPlanUsageOptions): Promise<StatusTelemetry | null>;
31
+ export interface CopilotPlanUsageGates {
32
+ /** `showPlanUsageLimits` as the server reads it (`readPlanUsageTelemetryEnabled()`: absent = on). */
33
+ planUsageEnabled: () => Promise<boolean>;
34
+ /** `resolveCopilotToken()`: env vars and a file read, nothing spawned. */
35
+ resolveToken: () => Promise<string | null>;
36
+ /** `isCopilotAvailable()`: its resolver may run a synchronous login-shell probe. */
37
+ copilotInstalled: () => boolean;
38
+ read: (token: string) => Promise<StatusTelemetry | null>;
39
+ }
40
+ /**
41
+ * The server's poll: Copilot's quota, or null when Plan Usage Limits is off, there is no sign-in
42
+ * token or the CLI is not installed. Cheapest gate first, so a host with no Copilot sign-in never
43
+ * runs the CLI resolver on each tick, and nothing at all is read while Plan Usage Limits is off.
44
+ */
45
+ export declare function readCopilotPlanUsageIfEnabled(gates: CopilotPlanUsageGates): Promise<StatusTelemetry | null>;
46
+ //# sourceMappingURL=copilot-plan-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-plan-usage.d.ts","sourceRoot":"","sources":["../../src/utils/copilot-plan-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAgBhF;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,mGAAmG;AACnG,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,2BAAgC,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAmBlH;AAED,MAAM,WAAW,qBAAqB;IACpC,qGAAqG;IACrG,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3C,oFAAoF;IACpF,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAKjH"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @fileoverview GitHub Copilot's monthly premium-request quota, for the header plan-usage chip.
3
+ *
4
+ * The Copilot CLI has no scriptable usage command (`copilot billing` exists only inside the TUI), but
5
+ * the same quota snapshot the editors show is `GET https://api.github.com/copilot_internal/user`,
6
+ * readable with the CLI's own sign-in token. The endpoint is not part of GitHub's documented REST API,
7
+ * so this is read-only, best-effort and silent: any failure (offline, 401, a changed shape) yields
8
+ * `null` and the chip simply has no Copilot row.
9
+ *
10
+ * ⚠️ The token is never logged, never put in an error and only ever sent to api.github.com over HTTPS
11
+ * (`redirect: 'error'`, so a redirect cannot carry it elsewhere).
12
+ *
13
+ * @module utils/copilot-plan-usage
14
+ */
15
+ import { readFile } from 'node:fs/promises';
16
+ import { homedir } from 'node:os';
17
+ import { join } from 'node:path';
18
+ import { parseCopilotQuotaResponse } from '../usage-telemetry.js';
19
+ export const COPILOT_QUOTA_URL = 'https://api.github.com/copilot_internal/user';
20
+ const REQUEST_TIMEOUT_MS = 10_000;
21
+ /** Env names Copilot itself reads for a headless sign-in, in its own precedence order. */
22
+ const TOKEN_ENV_KEYS = ['COPILOT_GITHUB_TOKEN', 'GH_TOKEN', 'GITHUB_TOKEN'];
23
+ /** The CLI writes `// ...` header comments above the JSON in config.json. */
24
+ function parseCommentedJson(raw) {
25
+ return JSON.parse(raw
26
+ .split('\n')
27
+ .filter((line) => !line.trimStart().startsWith('//'))
28
+ .join('\n'));
29
+ }
30
+ /**
31
+ * The sign-in token Copilot would use: a token in the environment first, then the plain-text
32
+ * `authTokens` entry the CLI keeps in `<COPILOT_HOME or ~/.copilot>/config.json` when no OS keychain
33
+ * is available. Only github.com sign-ins are read from the file (the quota URL is github.com's).
34
+ */
35
+ export async function resolveCopilotToken(env = process.env, home = homedir()) {
36
+ for (const key of TOKEN_ENV_KEYS) {
37
+ const value = env[key]?.trim();
38
+ if (value)
39
+ return value;
40
+ }
41
+ const dir = env.COPILOT_HOME?.trim() || join(home, '.copilot');
42
+ try {
43
+ const config = parseCommentedJson(await readFile(join(dir, 'config.json'), 'utf8'));
44
+ const { host, login } = config.lastLoggedInUser ?? {};
45
+ if (host !== 'https://github.com' || !login || !config.authTokens)
46
+ return null;
47
+ for (const key of [`${host}:${login}`, `${host}:${login}:github`]) {
48
+ const token = config.authTokens[key]?.token;
49
+ if (typeof token === 'string' && token.trim())
50
+ return token.trim();
51
+ }
52
+ }
53
+ catch {
54
+ /* no config, unreadable, or not JSON: no token */
55
+ }
56
+ return null;
57
+ }
58
+ /** The monthly premium-request window, or null when there is no token, no meter or any failure. */
59
+ export async function readCopilotPlanUsage(opts = {}) {
60
+ const token = opts.token === undefined ? await resolveCopilotToken() : opts.token;
61
+ if (!token)
62
+ return null;
63
+ const doFetch = opts.fetchFn ?? fetch;
64
+ try {
65
+ const response = await doFetch(COPILOT_QUOTA_URL, {
66
+ headers: {
67
+ Authorization: `Bearer ${token}`,
68
+ Accept: 'application/json',
69
+ 'User-Agent': 'codeman',
70
+ },
71
+ redirect: 'error',
72
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
73
+ });
74
+ if (!response.ok)
75
+ return null;
76
+ return parseCopilotQuotaResponse(await response.json());
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ /**
83
+ * The server's poll: Copilot's quota, or null when Plan Usage Limits is off, there is no sign-in
84
+ * token or the CLI is not installed. Cheapest gate first, so a host with no Copilot sign-in never
85
+ * runs the CLI resolver on each tick, and nothing at all is read while Plan Usage Limits is off.
86
+ */
87
+ export async function readCopilotPlanUsageIfEnabled(gates) {
88
+ if (!(await gates.planUsageEnabled()))
89
+ return null;
90
+ const token = await gates.resolveToken();
91
+ if (!token || !gates.copilotInstalled())
92
+ return null;
93
+ return gates.read(token);
94
+ }
95
+ //# sourceMappingURL=copilot-plan-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-plan-usage.js","sourceRoot":"","sources":["../../src/utils/copilot-plan-usage.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export { MAX_SESSION_TOKENS } from './token-validation.js';
17
17
  export { isSafePushEndpoint } from './push-endpoint-validation.js';
18
18
  export { stringSimilarity, fuzzyPhraseMatch, todoContentHash } from './string-similarity.js';
19
19
  export { assertNever } from './type-safety.js';
20
+ export { toSingleLine } from './single-line.js';
20
21
  export { wrapWithNice } from './nice-wrapper.js';
21
22
  export { resolveLocalShell, loginShellArgs } from './shell-resolver.js';
22
23
  export { findClaudeDir, getAugmentedPath, getClaudeCliVersion, getClaudeBinaryPath, getClaudeNotFoundMessage, } from './claude-cli-resolver.js';
@@ -33,6 +34,7 @@ export { compileFileQuery, matchFileQuery } from './file-query.js';
33
34
  export type { FileQueryMatcher } from './file-query.js';
34
35
  export { resolveOmpDir, isOmpAvailable, getOmpNotFoundMessage, getOmpCliVersion } from './omp-cli-resolver.js';
35
36
  export { resolveCopilotDir, isCopilotAvailable, getCopilotNotFoundMessage, getCopilotCliVersion, } from './copilot-cli-resolver.js';
37
+ export { readCopilotPlanUsage, resolveCopilotToken } from './copilot-plan-usage.js';
36
38
  export { boundedPathExists, describeUnknownPath, probePath, probePathKind, isNearStalledPath, unknownPathReason, } from './bounded-path-probe.js';
37
39
  export type { PathProbeState, PathProbeKind, PathProbeOptions } from './bounded-path-probe.js';
38
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ export { MAX_SESSION_TOKENS } from './token-validation.js';
16
16
  export { isSafePushEndpoint } from './push-endpoint-validation.js';
17
17
  export { stringSimilarity, fuzzyPhraseMatch, todoContentHash } from './string-similarity.js';
18
18
  export { assertNever } from './type-safety.js';
19
+ export { toSingleLine } from './single-line.js';
19
20
  export { wrapWithNice } from './nice-wrapper.js';
20
21
  export { resolveLocalShell, loginShellArgs } from './shell-resolver.js';
21
22
  export { findClaudeDir, getAugmentedPath, getClaudeCliVersion, getClaudeBinaryPath, getClaudeNotFoundMessage, } from './claude-cli-resolver.js';
@@ -30,5 +31,6 @@ export { resolveDeepSeekDir, isDeepSeekAvailable, isDeepSeekRunnable, getDeepSee
30
31
  export { compileFileQuery, matchFileQuery } from './file-query.js';
31
32
  export { resolveOmpDir, isOmpAvailable, getOmpNotFoundMessage, getOmpCliVersion } from './omp-cli-resolver.js';
32
33
  export { resolveCopilotDir, isCopilotAvailable, getCopilotNotFoundMessage, getCopilotCliVersion, } from './copilot-cli-resolver.js';
34
+ export { readCopilotPlanUsage, resolveCopilotToken } from './copilot-plan-usage.js';
33
35
  export { boundedPathExists, describeUnknownPath, probePath, probePathKind, isNearStalledPath, unknownPathReason, } from './bounded-path-probe.js';
34
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @fileoverview Collapse a prompt onto the one line an unattended sender writes.
3
+ *
4
+ * @module utils/single-line
5
+ */
6
+ /**
7
+ * A prompt as one line: each line is trimmed, blank lines are dropped, and the rest
8
+ * are joined with a single space; a prompt without a line break is returned as is.
9
+ *
10
+ * For the senders that run unattended through `writeViaMux` (respawn's update and
11
+ * kickstart steps, auto-compact). The mux pastes a multi-line prompt as one block,
12
+ * and the check that re-presses a stranded Enter cannot reliably recognise a
13
+ * multi-line paste in the composer, so nobody would notice a prompt left unsubmitted.
14
+ * Cron rejects multi-line prompts for the same reason; these senders join them
15
+ * instead, so a saved multi-line setting is still sent rather than refused.
16
+ *
17
+ * Split and trim, which is linear, rather than one regex replace that folds the
18
+ * whitespace around each break: that regex backtracks quadratically over a long
19
+ * whitespace run (50,000 spaces took over a second).
20
+ */
21
+ export declare function toSingleLine(prompt: string): string;
22
+ //# sourceMappingURL=single-line.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-line.d.ts","sourceRoot":"","sources":["../../src/utils/single-line.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOnD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @fileoverview Collapse a prompt onto the one line an unattended sender writes.
3
+ *
4
+ * @module utils/single-line
5
+ */
6
+ /**
7
+ * A prompt as one line: each line is trimmed, blank lines are dropped, and the rest
8
+ * are joined with a single space; a prompt without a line break is returned as is.
9
+ *
10
+ * For the senders that run unattended through `writeViaMux` (respawn's update and
11
+ * kickstart steps, auto-compact). The mux pastes a multi-line prompt as one block,
12
+ * and the check that re-presses a stranded Enter cannot reliably recognise a
13
+ * multi-line paste in the composer, so nobody would notice a prompt left unsubmitted.
14
+ * Cron rejects multi-line prompts for the same reason; these senders join them
15
+ * instead, so a saved multi-line setting is still sent rather than refused.
16
+ *
17
+ * Split and trim, which is linear, rather than one regex replace that folds the
18
+ * whitespace around each break: that regex backtracks quadratically over a long
19
+ * whitespace run (50,000 spaces took over a second).
20
+ */
21
+ export function toSingleLine(prompt) {
22
+ if (!/[\r\n]/.test(prompt))
23
+ return prompt;
24
+ return prompt
25
+ .split(/[\r\n]+/)
26
+ .map((line) => line.trim())
27
+ .filter(Boolean)
28
+ .join(' ');
29
+ }
30
+ //# sourceMappingURL=single-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-line.js","sourceRoot":"","sources":["../../src/utils/single-line.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,MAAM;SACV,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @fileoverview Opt-in snapshot of the agent inbox, so pending mail between agents
3
+ * survives a server restart (the agents themselves keep running in tmux across it).
4
+ *
5
+ * Off by default: an install that never turns on `agentInboxPersistEnabled` writes
6
+ * nothing new to disk. The rules (discussion #558):
7
+ * - Off means no file. Switching it off deletes the snapshot; the in-memory inboxes
8
+ * stay as they are.
9
+ * - Its own file under `dataPath()`, written 0600 through tmp + rename like
10
+ * `intents.json`, since messages carry the same kind of text prompts do. It is never
11
+ * read by `/api/search` and `sensitive-path.ts` keeps the file viewer off it.
12
+ * - Writes are debounced (a burst of posts is one write) and flushed on shutdown.
13
+ * - Boot pruning is NOT done here: the server calls `agentInbox.pruneExcept()` only
14
+ * after the session restore succeeded, so a failed restore leaves the mail alone.
15
+ *
16
+ * @module web/agent-inbox-persistence
17
+ */
18
+ import { type AgentInbox } from './agent-inbox.js';
19
+ export declare class AgentInboxPersistence {
20
+ private readonly inbox;
21
+ /** Resolved per call: test HOMEs change between files. */
22
+ private readonly filePath;
23
+ private readonly debounceMs;
24
+ private enabled;
25
+ private timer;
26
+ constructor(inbox?: AgentInbox,
27
+ /** Resolved per call: test HOMEs change between files. */
28
+ filePath?: () => string, debounceMs?: number);
29
+ get isEnabled(): boolean;
30
+ /**
31
+ * Boot: apply the setting and, when it is on, load the snapshot into the store.
32
+ * Returns how many messages were restored. A missing or unreadable file is an
33
+ * empty inbox, never a failed boot.
34
+ */
35
+ load(enabled: boolean): number;
36
+ /**
37
+ * The setting changed. On: write the current inboxes now. Off: drop any pending
38
+ * write and delete the snapshot; memory is untouched.
39
+ */
40
+ setEnabled(enabled: boolean): void;
41
+ /** Shutdown: write a pending change now instead of losing it with the timer. */
42
+ flush(): void;
43
+ /** Test hook: drop a pending write and detach from the store. */
44
+ dispose(): void;
45
+ private schedule;
46
+ private cancel;
47
+ private writeNow;
48
+ private removeFile;
49
+ }
50
+ /** Process-wide instance wired to `agentInbox`; the server and the settings route use it. */
51
+ export declare const agentInboxPersistence: AgentInboxPersistence;
52
+ //# sourceMappingURL=agent-inbox-persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-inbox-persistence.d.ts","sourceRoot":"","sources":["../../src/web/agent-inbox-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK/D,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAP7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA+B;gBAGzB,KAAK,GAAE,UAAuB;IAC/C,0DAA0D;IACzC,QAAQ,GAAE,MAAM,MAA2C,EAC3D,UAAU,GAAE,MAA0B;IAKzD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAiB9B;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAWlC,gFAAgF;IAChF,KAAK,IAAI,IAAI;IAMb,iEAAiE;IACjE,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,UAAU;CASnB;AAED,6FAA6F;AAC7F,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * @fileoverview Opt-in snapshot of the agent inbox, so pending mail between agents
3
+ * survives a server restart (the agents themselves keep running in tmux across it).
4
+ *
5
+ * Off by default: an install that never turns on `agentInboxPersistEnabled` writes
6
+ * nothing new to disk. The rules (discussion #558):
7
+ * - Off means no file. Switching it off deletes the snapshot; the in-memory inboxes
8
+ * stay as they are.
9
+ * - Its own file under `dataPath()`, written 0600 through tmp + rename like
10
+ * `intents.json`, since messages carry the same kind of text prompts do. It is never
11
+ * read by `/api/search` and `sensitive-path.ts` keeps the file viewer off it.
12
+ * - Writes are debounced (a burst of posts is one write) and flushed on shutdown.
13
+ * - Boot pruning is NOT done here: the server calls `agentInbox.pruneExcept()` only
14
+ * after the session restore succeeded, so a failed restore leaves the mail alone.
15
+ *
16
+ * @module web/agent-inbox-persistence
17
+ */
18
+ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
19
+ import { dirname } from 'node:path';
20
+ import { dataPath } from '../config/instance.js';
21
+ import { agentInbox } from './agent-inbox.js';
22
+ /** A burst of posts (a coordinator fanning out to five workers) becomes one write. */
23
+ const WRITE_DEBOUNCE_MS = 250;
24
+ export class AgentInboxPersistence {
25
+ inbox;
26
+ filePath;
27
+ debounceMs;
28
+ enabled = false;
29
+ timer = null;
30
+ constructor(inbox = agentInbox,
31
+ /** Resolved per call: test HOMEs change between files. */
32
+ filePath = () => dataPath('agent-inbox.json'), debounceMs = WRITE_DEBOUNCE_MS) {
33
+ this.inbox = inbox;
34
+ this.filePath = filePath;
35
+ this.debounceMs = debounceMs;
36
+ this.inbox.onChange = () => this.schedule();
37
+ }
38
+ get isEnabled() {
39
+ return this.enabled;
40
+ }
41
+ /**
42
+ * Boot: apply the setting and, when it is on, load the snapshot into the store.
43
+ * Returns how many messages were restored. A missing or unreadable file is an
44
+ * empty inbox, never a failed boot.
45
+ */
46
+ load(enabled) {
47
+ this.enabled = enabled;
48
+ if (!enabled) {
49
+ // A file left from an earlier "on" is removed, so off really means no file.
50
+ this.removeFile();
51
+ return 0;
52
+ }
53
+ const path = this.filePath();
54
+ if (!existsSync(path))
55
+ return 0;
56
+ try {
57
+ return this.inbox.restore(JSON.parse(readFileSync(path, 'utf-8')));
58
+ }
59
+ catch (err) {
60
+ console.warn(`[AgentInbox] Failed to load ${path}, starting empty:`, err);
61
+ return 0;
62
+ }
63
+ }
64
+ /**
65
+ * The setting changed. On: write the current inboxes now. Off: drop any pending
66
+ * write and delete the snapshot; memory is untouched.
67
+ */
68
+ setEnabled(enabled) {
69
+ if (enabled === this.enabled)
70
+ return;
71
+ this.enabled = enabled;
72
+ if (enabled) {
73
+ this.writeNow();
74
+ }
75
+ else {
76
+ this.cancel();
77
+ this.removeFile();
78
+ }
79
+ }
80
+ /** Shutdown: write a pending change now instead of losing it with the timer. */
81
+ flush() {
82
+ if (!this.timer)
83
+ return;
84
+ this.cancel();
85
+ this.writeNow();
86
+ }
87
+ /** Test hook: drop a pending write and detach from the store. */
88
+ dispose() {
89
+ this.cancel();
90
+ if (this.inbox.onChange)
91
+ this.inbox.onChange = undefined;
92
+ }
93
+ schedule() {
94
+ if (!this.enabled || this.timer)
95
+ return;
96
+ this.timer = setTimeout(() => {
97
+ this.timer = null;
98
+ this.writeNow();
99
+ }, this.debounceMs);
100
+ // A pending write must not hold the process open; shutdown flushes it explicitly.
101
+ this.timer.unref();
102
+ }
103
+ cancel() {
104
+ if (this.timer)
105
+ clearTimeout(this.timer);
106
+ this.timer = null;
107
+ }
108
+ writeNow() {
109
+ if (!this.enabled)
110
+ return;
111
+ const path = this.filePath();
112
+ const tmpPath = `${path}.tmp`;
113
+ try {
114
+ mkdirSync(dirname(path), { recursive: true });
115
+ // 0600: agent messages can carry anything a prompt can, secrets included.
116
+ // `mode` applies only when the file is created, and the rename makes every
117
+ // write a fresh file, so the final file is always 0600.
118
+ rmSync(tmpPath, { force: true });
119
+ writeFileSync(tmpPath, JSON.stringify(this.inbox.snapshot()), { mode: 0o600 });
120
+ renameSync(tmpPath, path);
121
+ }
122
+ catch (err) {
123
+ console.warn(`[AgentInbox] Failed to persist ${path}:`, err);
124
+ }
125
+ }
126
+ removeFile() {
127
+ const path = this.filePath();
128
+ try {
129
+ rmSync(path, { force: true });
130
+ rmSync(`${path}.tmp`, { force: true });
131
+ }
132
+ catch (err) {
133
+ console.warn(`[AgentInbox] Failed to remove ${path}:`, err);
134
+ }
135
+ }
136
+ }
137
+ /** Process-wide instance wired to `agentInbox`; the server and the settings route use it. */
138
+ export const agentInboxPersistence = new AgentInboxPersistence();
139
+ //# sourceMappingURL=agent-inbox-persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-inbox-persistence.js","sourceRoot":"","sources":["../../src/web/agent-inbox-persistence.ts"],"names":[],"mappings":"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"}