aicodeman 1.41.1 → 1.43.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 (276) hide show
  1. package/README.md +54 -24
  2. package/dist/claude-session-title.d.ts +6 -4
  3. package/dist/claude-session-title.d.ts.map +1 -1
  4. package/dist/claude-session-title.js +6 -4
  5. package/dist/claude-session-title.js.map +1 -1
  6. package/dist/cli-agent.js +1 -1
  7. package/dist/cli-agent.js.map +1 -1
  8. package/dist/config/cli-registry/patterns.d.ts +1 -1
  9. package/dist/config/cli-registry/patterns.d.ts.map +1 -1
  10. package/dist/config/cli-registry/patterns.js +3 -0
  11. package/dist/config/cli-registry/patterns.js.map +1 -1
  12. package/dist/config/cli-registry/schema.d.ts +3 -0
  13. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  14. package/dist/config/cli-registry/schema.js +19 -3
  15. package/dist/config/cli-registry/schema.js.map +1 -1
  16. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  17. package/dist/config/cli-registry/stock.js +302 -7
  18. package/dist/config/cli-registry/stock.js.map +1 -1
  19. package/dist/config/cli-registry/types.d.ts +37 -3
  20. package/dist/config/cli-registry/types.d.ts.map +1 -1
  21. package/dist/git-worktrees.d.ts +292 -0
  22. package/dist/git-worktrees.d.ts.map +1 -0
  23. package/dist/git-worktrees.js +791 -0
  24. package/dist/git-worktrees.js.map +1 -0
  25. package/dist/hooks-config.d.ts +9 -0
  26. package/dist/hooks-config.d.ts.map +1 -1
  27. package/dist/hooks-config.js +12 -0
  28. package/dist/hooks-config.js.map +1 -1
  29. package/dist/mcp-server.d.ts.map +1 -1
  30. package/dist/mcp-server.js +2 -1
  31. package/dist/mcp-server.js.map +1 -1
  32. package/dist/mcp-sync-targets.d.ts +6 -3
  33. package/dist/mcp-sync-targets.d.ts.map +1 -1
  34. package/dist/mcp-sync-targets.js +6 -3
  35. package/dist/mcp-sync-targets.js.map +1 -1
  36. package/dist/mux-interface.d.ts +7 -3
  37. package/dist/mux-interface.d.ts.map +1 -1
  38. package/dist/services/unified-session-service.d.ts +8 -0
  39. package/dist/services/unified-session-service.d.ts.map +1 -1
  40. package/dist/services/unified-session-service.js +21 -0
  41. package/dist/services/unified-session-service.js.map +1 -1
  42. package/dist/session-activity.d.ts +51 -0
  43. package/dist/session-activity.d.ts.map +1 -1
  44. package/dist/session-activity.js +62 -0
  45. package/dist/session-activity.js.map +1 -1
  46. package/dist/session-cli-registry-bridge.d.ts +2 -1
  47. package/dist/session-cli-registry-bridge.d.ts.map +1 -1
  48. package/dist/session-cli-registry-bridge.js.map +1 -1
  49. package/dist/session-submit-verifier.js +1 -1
  50. package/dist/session.d.ts +84 -9
  51. package/dist/session.d.ts.map +1 -1
  52. package/dist/session.js +232 -18
  53. package/dist/session.js.map +1 -1
  54. package/dist/tmux-manager.d.ts +62 -7
  55. package/dist/tmux-manager.d.ts.map +1 -1
  56. package/dist/tmux-manager.js +98 -20
  57. package/dist/tmux-manager.js.map +1 -1
  58. package/dist/types/session.d.ts +32 -4
  59. package/dist/types/session.d.ts.map +1 -1
  60. package/dist/types/session.js +2 -1
  61. package/dist/types/session.js.map +1 -1
  62. package/dist/utils/cli-installed-probes.d.ts +1 -1
  63. package/dist/utils/cli-installed-probes.d.ts.map +1 -1
  64. package/dist/utils/cli-installed-probes.js +4 -2
  65. package/dist/utils/cli-installed-probes.js.map +1 -1
  66. package/dist/utils/copilot-cli-resolver.d.ts +48 -0
  67. package/dist/utils/copilot-cli-resolver.d.ts.map +1 -0
  68. package/dist/utils/copilot-cli-resolver.js +112 -0
  69. package/dist/utils/copilot-cli-resolver.js.map +1 -0
  70. package/dist/utils/deepseek-cli-resolver.d.ts.map +1 -1
  71. package/dist/utils/deepseek-cli-resolver.js +1 -1
  72. package/dist/utils/deepseek-cli-resolver.js.map +1 -1
  73. package/dist/utils/index.d.ts +1 -0
  74. package/dist/utils/index.d.ts.map +1 -1
  75. package/dist/utils/index.js +1 -0
  76. package/dist/utils/index.js.map +1 -1
  77. package/dist/web/approval-inbox.d.ts +12 -2
  78. package/dist/web/approval-inbox.d.ts.map +1 -1
  79. package/dist/web/approval-inbox.js +7 -2
  80. package/dist/web/approval-inbox.js.map +1 -1
  81. package/dist/web/case-path.d.ts +4 -2
  82. package/dist/web/case-path.d.ts.map +1 -1
  83. package/dist/web/case-path.js +13 -4
  84. package/dist/web/case-path.js.map +1 -1
  85. package/dist/web/public/admin-ui.js.gz +0 -0
  86. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  87. package/dist/web/public/app.ae50029a.js +43 -0
  88. package/dist/web/public/app.ae50029a.js.br +0 -0
  89. package/dist/web/public/app.ae50029a.js.gz +0 -0
  90. package/dist/web/public/approvals-ui.js.gz +0 -0
  91. package/dist/web/public/{constants.17d77b65.js → constants.e5e588db.js} +156 -2
  92. package/dist/web/public/constants.e5e588db.js.br +0 -0
  93. package/dist/web/public/constants.e5e588db.js.gz +0 -0
  94. package/dist/web/public/cron-ui.js.gz +0 -0
  95. package/dist/web/public/entrance-animations.js.gz +0 -0
  96. package/dist/web/public/git-status-ui.js.gz +0 -0
  97. package/dist/web/public/home-sessions.js.gz +0 -0
  98. package/dist/web/public/host-wake-ui.js.gz +0 -0
  99. package/dist/web/public/i18n.8f291f06.js +2 -0
  100. package/dist/web/public/i18n.8f291f06.js.br +0 -0
  101. package/dist/web/public/i18n.8f291f06.js.gz +0 -0
  102. package/dist/web/public/{image-input.9ed1d0d2.js → image-input.941386e7.js} +41 -22
  103. package/dist/web/public/image-input.941386e7.js.br +0 -0
  104. package/dist/web/public/image-input.941386e7.js.gz +0 -0
  105. package/dist/web/public/index.html +88 -16
  106. package/dist/web/public/index.html.br +0 -0
  107. package/dist/web/public/index.html.gz +0 -0
  108. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  109. package/dist/web/public/{keyboard-accessory.c458eea8.js → keyboard-accessory.c283e827.js} +40 -29
  110. package/dist/web/public/keyboard-accessory.c283e827.js.br +0 -0
  111. package/dist/web/public/keyboard-accessory.c283e827.js.gz +0 -0
  112. package/dist/web/public/mobile-handlers.0ef9c311.js.gz +0 -0
  113. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  114. package/dist/web/public/mobile-overview.js +1 -0
  115. package/dist/web/public/mobile-overview.js.br +0 -0
  116. package/dist/web/public/mobile-overview.js.gz +0 -0
  117. package/dist/web/public/mobile.13514863.css +1 -0
  118. package/dist/web/public/mobile.13514863.css.br +0 -0
  119. package/dist/web/public/mobile.13514863.css.gz +0 -0
  120. package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
  121. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  122. package/dist/web/public/{panels-ui.73ec0137.js → panels-ui.b7bfb9da.js} +6 -6
  123. package/dist/web/public/panels-ui.b7bfb9da.js.br +0 -0
  124. package/dist/web/public/panels-ui.b7bfb9da.js.gz +0 -0
  125. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  126. package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
  127. package/dist/web/public/readmymind-ui.js.gz +0 -0
  128. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  129. package/dist/web/public/{respawn-ui.ff0dae4c.js → respawn-ui.d7adcf6a.js} +1 -1
  130. package/dist/web/public/respawn-ui.d7adcf6a.js.br +0 -0
  131. package/dist/web/public/respawn-ui.d7adcf6a.js.gz +0 -0
  132. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  133. package/dist/web/public/security-notices.json +21 -0
  134. package/dist/web/public/session-lineage.js.gz +0 -0
  135. package/dist/web/public/session-ui.be076c88.js +100 -0
  136. package/dist/web/public/session-ui.be076c88.js.br +0 -0
  137. package/dist/web/public/session-ui.be076c88.js.gz +0 -0
  138. package/dist/web/public/settings-ui.fc4cc50a.js +97 -0
  139. package/dist/web/public/settings-ui.fc4cc50a.js.br +0 -0
  140. package/dist/web/public/settings-ui.fc4cc50a.js.gz +0 -0
  141. package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
  142. package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
  143. package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
  144. package/dist/web/public/styles.dcfa907f.css +1 -0
  145. package/dist/web/public/styles.dcfa907f.css.br +0 -0
  146. package/dist/web/public/styles.dcfa907f.css.gz +0 -0
  147. package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
  148. package/dist/web/public/sw.js +2 -2
  149. package/dist/web/public/sw.js.br +0 -0
  150. package/dist/web/public/sw.js.gz +0 -0
  151. package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
  152. package/dist/web/public/tab-rail-resize.7157e0bd.js.gz +0 -0
  153. package/dist/web/public/terminal-keycode229-recovery.af09f99a.js.gz +0 -0
  154. package/dist/web/public/terminal-split.js.gz +0 -0
  155. package/dist/web/public/terminal-tile.js +1 -0
  156. package/dist/web/public/terminal-tile.js.br +0 -0
  157. package/dist/web/public/terminal-tile.js.gz +0 -0
  158. package/dist/web/public/terminal-ui.ae01a7d1.js +2 -0
  159. package/dist/web/public/terminal-ui.ae01a7d1.js.br +0 -0
  160. package/dist/web/public/terminal-ui.ae01a7d1.js.gz +0 -0
  161. package/dist/web/public/tile-grid.js +3 -6
  162. package/dist/web/public/tile-grid.js.br +0 -0
  163. package/dist/web/public/tile-grid.js.gz +0 -0
  164. package/dist/web/public/ultracode-panel.js.gz +0 -0
  165. package/dist/web/public/ultracode-windows.js.gz +0 -0
  166. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  167. package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
  168. package/dist/web/public/vendor/fflate.min.js.gz +0 -0
  169. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  170. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  171. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  172. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  173. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  174. package/dist/web/public/vendor/xterm-predictive-echo.ae5e3d5d.js.gz +0 -0
  175. package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.gz +0 -0
  176. package/dist/web/public/vendor/xterm.css.gz +0 -0
  177. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  178. package/dist/web/public/voice-input.2342c37b.js.gz +0 -0
  179. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  180. package/dist/web/public/webview-tabs.js.gz +0 -0
  181. package/dist/web/public/whats-new.json +13 -0
  182. package/dist/web/response-viewer-transcript.d.ts +6 -0
  183. package/dist/web/response-viewer-transcript.d.ts.map +1 -1
  184. package/dist/web/response-viewer-transcript.js +134 -1
  185. package/dist/web/response-viewer-transcript.js.map +1 -1
  186. package/dist/web/routes/approval-routes.d.ts.map +1 -1
  187. package/dist/web/routes/approval-routes.js +12 -8
  188. package/dist/web/routes/approval-routes.js.map +1 -1
  189. package/dist/web/routes/case-routes.d.ts.map +1 -1
  190. package/dist/web/routes/case-routes.js +9 -2
  191. package/dist/web/routes/case-routes.js.map +1 -1
  192. package/dist/web/routes/index.d.ts +1 -0
  193. package/dist/web/routes/index.d.ts.map +1 -1
  194. package/dist/web/routes/index.js +1 -0
  195. package/dist/web/routes/index.js.map +1 -1
  196. package/dist/web/routes/mcp-sync-routes.d.ts +4 -4
  197. package/dist/web/routes/mcp-sync-routes.js +4 -4
  198. package/dist/web/routes/ralph-routes.d.ts.map +1 -1
  199. package/dist/web/routes/ralph-routes.js +19 -14
  200. package/dist/web/routes/ralph-routes.js.map +1 -1
  201. package/dist/web/routes/session-routes.d.ts +19 -7
  202. package/dist/web/routes/session-routes.d.ts.map +1 -1
  203. package/dist/web/routes/session-routes.js +227 -66
  204. package/dist/web/routes/session-routes.js.map +1 -1
  205. package/dist/web/routes/status-telemetry-routes.d.ts.map +1 -1
  206. package/dist/web/routes/status-telemetry-routes.js +9 -5
  207. package/dist/web/routes/status-telemetry-routes.js.map +1 -1
  208. package/dist/web/routes/system-routes.d.ts +9 -0
  209. package/dist/web/routes/system-routes.d.ts.map +1 -1
  210. package/dist/web/routes/system-routes.js +102 -12
  211. package/dist/web/routes/system-routes.js.map +1 -1
  212. package/dist/web/routes/worktree-routes.d.ts +52 -0
  213. package/dist/web/routes/worktree-routes.d.ts.map +1 -0
  214. package/dist/web/routes/worktree-routes.js +220 -0
  215. package/dist/web/routes/worktree-routes.js.map +1 -0
  216. package/dist/web/schemas.d.ts +30 -1
  217. package/dist/web/schemas.d.ts.map +1 -1
  218. package/dist/web/schemas.js +74 -3
  219. package/dist/web/schemas.js.map +1 -1
  220. package/dist/web/screen-blocked.d.ts +80 -0
  221. package/dist/web/screen-blocked.d.ts.map +1 -0
  222. package/dist/web/screen-blocked.js +106 -0
  223. package/dist/web/screen-blocked.js.map +1 -0
  224. package/dist/web/server.d.ts.map +1 -1
  225. package/dist/web/server.js +23 -2
  226. package/dist/web/server.js.map +1 -1
  227. package/dist/web/session-listener-wiring.d.ts +1 -0
  228. package/dist/web/session-listener-wiring.d.ts.map +1 -1
  229. package/dist/web/session-listener-wiring.js +20 -0
  230. package/dist/web/session-listener-wiring.js.map +1 -1
  231. package/dist/web/session-wait-registry.d.ts +27 -9
  232. package/dist/web/session-wait-registry.d.ts.map +1 -1
  233. package/dist/web/session-wait-registry.js +36 -13
  234. package/dist/web/session-wait-registry.js.map +1 -1
  235. package/dist/web/sse-events.d.ts +7 -2
  236. package/dist/web/sse-events.d.ts.map +1 -1
  237. package/dist/web/sse-events.js +7 -2
  238. package/dist/web/sse-events.js.map +1 -1
  239. package/package.json +2 -2
  240. package/skills/codeman/SKILL.md +21 -17
  241. package/skills/codeman/preamble.sh +14 -11
  242. package/skills/codeman/reference/endpoints.md +8 -8
  243. package/skills/codeman/reference/messaging.md +5 -5
  244. package/skills/codeman/reference/recipes.md +13 -10
  245. package/skills/codeman/reference/verbs.md +7 -5
  246. package/dist/web/public/app.24689381.js +0 -43
  247. package/dist/web/public/app.24689381.js.br +0 -0
  248. package/dist/web/public/app.24689381.js.gz +0 -0
  249. package/dist/web/public/constants.17d77b65.js.br +0 -0
  250. package/dist/web/public/constants.17d77b65.js.gz +0 -0
  251. package/dist/web/public/i18n.9afd8e4d.js +0 -2
  252. package/dist/web/public/i18n.9afd8e4d.js.br +0 -0
  253. package/dist/web/public/i18n.9afd8e4d.js.gz +0 -0
  254. package/dist/web/public/image-input.9ed1d0d2.js.br +0 -0
  255. package/dist/web/public/image-input.9ed1d0d2.js.gz +0 -0
  256. package/dist/web/public/keyboard-accessory.c458eea8.js.br +0 -0
  257. package/dist/web/public/keyboard-accessory.c458eea8.js.gz +0 -0
  258. package/dist/web/public/mobile.2dff1580.css +0 -1
  259. package/dist/web/public/mobile.2dff1580.css.br +0 -0
  260. package/dist/web/public/mobile.2dff1580.css.gz +0 -0
  261. package/dist/web/public/panels-ui.73ec0137.js.br +0 -0
  262. package/dist/web/public/panels-ui.73ec0137.js.gz +0 -0
  263. package/dist/web/public/respawn-ui.ff0dae4c.js.br +0 -0
  264. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  265. package/dist/web/public/session-ui.dbc6819b.js +0 -100
  266. package/dist/web/public/session-ui.dbc6819b.js.br +0 -0
  267. package/dist/web/public/session-ui.dbc6819b.js.gz +0 -0
  268. package/dist/web/public/settings-ui.81ac264e.js +0 -97
  269. package/dist/web/public/settings-ui.81ac264e.js.br +0 -0
  270. package/dist/web/public/settings-ui.81ac264e.js.gz +0 -0
  271. package/dist/web/public/styles.900a28e4.css +0 -1
  272. package/dist/web/public/styles.900a28e4.css.br +0 -0
  273. package/dist/web/public/styles.900a28e4.css.gz +0 -0
  274. package/dist/web/public/terminal-ui.858f5da5.js +0 -2
  275. package/dist/web/public/terminal-ui.858f5da5.js.br +0 -0
  276. package/dist/web/public/terminal-ui.858f5da5.js.gz +0 -0
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  <h2 align="center">Mission control for AI coding agents</h2>
6
6
 
7
7
  <p align="center">
8
- <em>Claude Code &bull; OpenCode &bull; Codex &bull; Antigravity &bull; Gemini &bull; Pi &bull; Grok &bull; DeepSeek &bull; OMP &bull; Terminal - One Dashboard &bull; Any Device</em>
8
+ <em>Claude Code &bull; OpenCode &bull; Codex &bull; Antigravity &bull; Gemini &bull; Pi &bull; Grok &bull; DeepSeek &bull; OMP &bull; Copilot &bull; Terminal - One Dashboard &bull; Any Device</em>
9
9
  </p>
10
10
 
11
11
  <p align="center">
@@ -24,10 +24,10 @@
24
24
  </p>
25
25
 
26
26
  <p align="center">
27
- <img src="docs/images/tiles-crt-stats-20261010.gif" alt="Codeman tile grid: six live agents (DeepSeek Harness, Claude Code, Pi, Codex, OpenCode and a shell) powering on and off with the CRT animation, with the live header strip showing CPU, memory and Claude plan usage" width="800">
27
+ <img src="docs/images/tiles-crt-stats-1600-20261010.gif" alt="Codeman tile grid: six live agents (DeepSeek Harness, Claude Code, Pi, Codex, OpenCode and a shell) powering on and off with the CRT animation, with the live header strip showing CPU, memory and Claude plan usage" width="800">
28
28
  </p>
29
29
 
30
- **Codeman** is a self-hosted mission control for AI coding agents. It spawns Claude Code, OpenCode, Codex, Antigravity, Gemini, Pi, Grok, DeepSeek Harness, or OMP inside persistent tmux sessions, streams the real terminal to any browser, and keeps agents productive after you walk away: it re-prompts on idle, resumes when a usage limit resets, runs scheduled jobs, and shows every background agent working in real time.
30
+ **Codeman** is a self-hosted mission control for AI coding agents. It spawns Claude Code, OpenCode, Codex, Antigravity, Gemini, Pi, Grok, DeepSeek Harness, OMP, or GitHub Copilot CLI inside persistent tmux sessions, streams the real terminal to any browser, and keeps agents productive after you walk away: it re-prompts on idle, resumes when a usage limit resets, runs scheduled jobs, and shows every background agent working in real time.
31
31
 
32
32
  Get started in one line (macOS & Linux, Windows via WSL):
33
33
 
@@ -42,10 +42,11 @@ codeman web
42
42
 
43
43
  The installer asks before every system change, and re-running the same line updates in place. Full details: [Quick Start - Installation](#quick-start---installation).
44
44
 
45
- - **One dashboard, nine CLIs** - run [Claude Code, OpenCode, Codex, Antigravity, Gemini, Pi, Grok, DeepSeek, or OMP](#more-features) per session (plus plain shell), locally, [in Docker](#isolated-docker-sessions), or [over SSH](#remote-ssh-sessions), with your own dashboards open as [web tabs](#more-features) beside them
45
+ - **One dashboard, ten CLIs** - run [Claude Code, OpenCode, Codex, Antigravity, Gemini, Pi, Grok, DeepSeek, OMP, or GitHub Copilot](#more-features) per session (plus plain shell), locally, [in Docker](#isolated-docker-sessions), or [over SSH](#remote-ssh-sessions), with your own dashboards open as [web tabs](#more-features) beside them
46
46
  - **Truly phone-friendly** - a [touch-optimized terminal](#mobile-optimized-web-ui) with instant local echo, QR login, swipe navigation, and push notifications
47
47
  - **Runs while you sleep** - [idle detection + respawn cycling](#respawn-controller) and auto-resume when a subscription limit resets, for 24+ hour unattended runs
48
48
  - **See your agents think** - [live floating windows](#live-agent-visualization) for every subagent and teammate, with real-time transcripts
49
+ - **Agents can drive it too** - the [codeman skill](#the-agent-skill-start-here) (for every agent CLI), [`codeman agent`](#codeman-agent--session-to-session-verbs-in-every-cli-mode) and an [MCP server](#mcp-server-codeman-mcp-drive-codeman-from-any-mcp-client) let one agent start workers in any CLI, prompt them, wait for them and collect their answers
49
50
  - **Nothing gets lost** - tmux persistence across restarts and network drops, exactly-once input delivery, full-scrollback replay
50
51
  - **Self-hosted and private** - loopback-only by default, MIT licensed, no telemetry, runs entirely on your machine
51
52
 
@@ -69,7 +70,7 @@ This installs Node.js, tmux and a build toolchain if missing (node-pty ships no
69
70
  - **Re-run to update.** The same one-liner updates a finished install in place: local changes in `~/.codeman/app` are stashed (never discarded), and a running service is restarted and verified. If a first install was interrupted, re-running resumes the full setup instead. `install.sh status` prints the URLs and the QR code again; `install.sh update`, `install.sh tailscale` and `install.sh uninstall` also exist.
70
71
  - **Flags for the impatient.** `curl -fsSL https://getcodeman.com/install | bash -s -- --tailscale --service` answers the questions from the command line (`--lan`, `--local`, `--run`, `--no-start`, `--name <n>`, `--port <n>`, `--yes` too). **CI / headless:** without a terminal attached, steps that would change your system abort with instructions instead of running silently; set `CODEMAN_NONINTERACTIVE=1` to approve them for automation.
71
72
 
72
- You'll need at least one AI coding CLI installed — [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [OpenCode](https://opencode.ai), [Codex](https://developers.openai.com/codex/cli), [Antigravity](https://antigravity.google), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Pi](https://pi.dev), [Grok Build](https://github.com/xai-org/grok-build), [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness), or [OMP](https://github.com/can1357/oh-my-pi) (any combination works; Gemini CLI is enterprise-only since Google's consumer cutover, and Antigravity is its successor). The installer detects whichever of the nine is present; if none is found, it offers to install any of them from a menu (DeepSeek excepted, since its npm package installs only a launcher with no runnable profile), or you can skip and install one yourself later. After install:
73
+ You'll need at least one AI coding CLI installed — [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [OpenCode](https://opencode.ai), [Codex](https://developers.openai.com/codex/cli), [Antigravity](https://antigravity.google), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Pi](https://pi.dev), [Grok Build](https://github.com/xai-org/grok-build), [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness), [OMP](https://github.com/can1357/oh-my-pi), or [GitHub Copilot CLI](https://github.com/github/copilot-cli) (any combination works; Gemini CLI is enterprise-only since Google's consumer cutover, and Antigravity is its successor). The installer detects whichever of the ten is present; if none is found, it offers to install any of them from a menu (DeepSeek excepted, since its npm package installs only a launcher with no runnable profile), or you can skip and install one yourself later. After install:
73
74
 
74
75
  ```bash
75
76
  codeman web
@@ -212,6 +213,8 @@ The most responsive AI coding agent experience on any phone. Full xterm.js termi
212
213
 
213
214
  - **Keyboard accessory bar** — `/init`, `/clear`, `/compact` quick-action buttons above the virtual keyboard; destructive commands require a double-press to confirm, so you never fire one by accident; on Codex sessions the bar also shows `⇧←` / `⇧→` (Shift+Left / Shift+Right: edit the last queued message / return through the prompt stack)
214
215
  - **Dedicated Enter button** — replays the keypress through the terminal, so text buffered by local echo is flushed first rather than stranded
216
+ - **Attach button**: the picture icon beside the mic opens the system photo and file sheet without raising the keyboard. Photos and camera-roll videos (mp4, mov, webm, up to 1 GB) upload into the session's folder and their path lands on your prompt, unsent
217
+ - **Paste in a shell**: a multi-line paste goes in as one block and waits for your Enter, instead of running line by line as it arrives
215
218
  - **Swipe navigation & smart keyboard handling** — swipe left/right to switch sessions; toolbar and terminal shift up when the keyboard opens (`visualViewport` API)
216
219
  - **Built for phones** — safe-area insets for notch and home indicator, 44px touch targets, bottom-sheet case picker, native momentum scrolling; on a folding phone (iPhone Duo) dialogs stay clear of the hinge, and opening or closing the device is never mistaken for the keyboard
217
220
 
@@ -256,7 +259,7 @@ Click **+ New Session** (or **Quick Start**). A session is one AI CLI running in
256
259
  | Field | What it does |
257
260
  | ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
258
261
  | **Working directory / case** | The folder the agent operates in. A "case" is just a named working dir Codeman remembers. **Add Case** creates one from scratch, links an existing folder, or clones a GitHub repo straight into one (**Clone Repo**). |
259
- | **CLI / run mode** | `Claude` (default), `OpenCode`, `Codex`, `Antigravity`, `Gemini`, `Pi`, `Grok`, `DeepSeek`, `OMP`, or `Terminal` (plain shell). |
262
+ | **CLI / run mode** | `Claude` (default), `OpenCode`, `Codex`, `Antigravity`, `Gemini`, `Pi`, `Grok`, `DeepSeek`, `OMP`, `Copilot`, or `Terminal` (plain shell). |
260
263
  | **Model** | Per-session model (App Settings → Models → New Claude sessions). A soft default — `/model` still works in-session. |
261
264
  | **Effort / Ultracode** | Reasoning effort (`low`–`max`) or `ultracode` for dynamic multi-agent workflows. Switchable anytime with `/effort`. |
262
265
 
@@ -264,18 +267,18 @@ Hit start — Codeman spawns the CLI via a real PTY and streams it to your brows
264
267
 
265
268
  ### 3. Read the dashboard
266
269
 
267
- - **Tabs (top)** — one per session. `Alt+1`-`9` to jump, `Ctrl+Tab` for next, drag to reorder (tab order syncs across your devices). Prefer a list? **App Settings → Appearance → Tabs** moves it into a left sidebar with a filter box (`Alt+B` collapses it) or a vertical rail whose rows sort by activity: blocked on you first, then longest running, then most recently quiet.
270
+ - **Tabs (top)** — one per session. `Alt+1`-`9` to jump, `Ctrl+Tab` for next, drag to reorder (tab order syncs across your devices). Prefer a list? **App Settings → Appearance → Tabs** moves it into a left sidebar with a filter box (`Alt+B` collapses it) or a vertical rail whose rows sort by activity: blocked on you first, then longest running, then most recently quiet. The rail also has a **Search sessions** box, named **tab groups** (a group's menu starts a **New session** straight into it), and a **Focus** section of shortcuts to the tabs you keep coming back to.
268
271
  - **Terminal (center)** — a real `xterm.js` terminal; full TUIs render correctly. Type directly and press **Enter** to send. `Shift+Enter` inserts a newline.
269
272
  - **Side panels** — Respawn, Orchestrator, Cron, Subagents, Settings (toggled from the toolbar).
270
273
 
271
274
  ### 4. Talk to the agent
272
275
 
273
276
  - **Type prompts** straight into the terminal — input is delivered exactly-once even across reconnects (a dropped link never loses or double-sends a prompt).
274
- - **Paste or drag-and-drop images** directly into the session.
277
+ - **Paste, drop or attach images, videos and documents** (PDF, Office files, zip and plain text) directly into the session. They are saved in a hidden `.codeman-uploads/` folder in the workspace (it ignores itself in git and is swept after 7 days), and the file's path lands on your prompt, unsent.
275
278
  - **Voice input** — `Ctrl+Shift+V` (Deepgram Nova-3, or this machine's Claude Code login with no API key; auto-silence stop).
276
- - **Attachments** — register external files/docs and preview Office/PDF inline; any file path an agent prints is clickable, in the terminal and in the chat view.
277
- - **When it needs you** — the tab turns yellow (waiting for input) or red (a question is blocking). The **Approvals Inbox** _(opt-in)_ queues every pending prompt across sessions, answerable from the header bell or the phone home screen, and 🧠 **Read My Mind** _(opt-in)_ drafts your next prompt from the case's goals and recent work.
278
- - **Copy what you see** — `Shift+drag` selects text even while the CLI owns the mouse, right-click copies it, and Auto Copy _(opt-in)_ copies a selection the moment you release it.
279
+ - **Attachments** — register external files/docs and preview Office/PDF inline; any file path an agent prints is clickable, in the terminal and in the chat view, including `~/` and relative paths and paths broken across lines. An `.html` report opens as a real page, Markdown opens rendered, and a folder opens as a grid of its files.
280
+ - **When it needs you** — the tab turns yellow (waiting for input) or red (a question is blocking). The **Approvals Inbox** _(opt-in)_ queues the prompts waiting on you from Claude Code, Codex and DeepSeek Harness sessions in one list. Claude prompts are answerable from the header bell, Claude dialogs also from the phone home screen, and a Claude permission prompt also from a push notification's Approve/Deny buttons; Codex and DeepSeek items are alerts that tell you to answer in the terminal, and prompts from the other CLIs do not enter it. 🧠 **Read My Mind** _(opt-in)_ drafts your next prompt from the case's goals and recent work.
281
+ - **Copy what you see** — `Shift+drag` selects text even while the CLI owns the mouse, right-click copies it, and Auto Copy _(opt-in)_ copies a selection the moment you release it. A program that copies with OSC 52 (Claude Code's `/copy`, a tmux yank, vim) puts the text on your browser's clipboard too.
279
282
 
280
283
  ### 5. Make it autonomous
281
284
 
@@ -294,7 +297,7 @@ Hit start — Codeman spawns the CLI via a real PTY and streams it to your brows
294
297
 
295
298
  ### 7. Operate & maintain
296
299
 
297
- - **App Settings** — model, effort, permission startup mode, theme/skin, terminal font family and weight, entrance animations, notifications, display toggles, per-CLI options, a synced custom display name, and per-device English/Simplified Chinese UI language.
300
+ - **App Settings** — model, effort, permission startup mode, theme/skin, terminal font family and weight, entrance and tile animations (their own **Animations** section), notifications (with adjustable toast and browser-notification display times), display toggles, per-CLI options, a synced custom display name, and per-device English/Simplified Chinese UI language. **Apply** saves without closing Settings.
298
301
  - **Run it in the background** — `codeman web -d` detaches from your shell (`--status`, `--stop`); `codeman service install` makes it a systemd user unit / macOS LaunchAgent that survives reboots. Both verify the server actually answers before reporting success, and both refuse to start a second server on one data dir. See [Keep it running in the background](#quick-start---installation).
299
302
  - **Self-update** — git-clone installs update in place from **App Settings → System → Updates**.
300
303
  - **Deploy your own changes** — see [Development](#development).
@@ -387,7 +390,14 @@ Run **20 parallel sessions** with full visibility — real-time xterm.js termina
387
390
  <img src="docs/images/tile-grid-20261009.gif" alt="Tile grid: the Tiles button opens six live sessions side by side (DeepSeek Harness, Claude Code, Codex, a shell, OpenCode and Pi), and a second click returns to a single session" width="800">
388
391
  </p>
389
392
 
390
- Watch and drive up to **six sessions side by side** in one window. Click **Tiles** in the header (or press `Ctrl+Shift+G`) and your sessions open as a grid of live terminals: every tile takes your keystrokes and shows its agent's logo, model and state in its header. Right-click **Tiles** to choose 2, 4 or 6 tiles, and drag a tile by its header to move it. Click **Tiles** again to return to a single session; the grid is remembered for next time. Desktop only (a window about 1180px wide or more). Full guide: [Tile Grid](docs/wiki/Tile-Grid.md).
393
+ Watch and drive up to **six sessions side by side** in one window. Click **Tiles** in the header (or press `Ctrl+Shift+G`) and your sessions open as a grid of live terminals: every tile takes your keystrokes and shows its agent's logo, model and state in its header. Right-click **Tiles** to choose 2, 4 or 6 tiles, and drag a tile by its header to move it. Click **Tiles** again to return to a single session. Desktop only (a window about 1180px wide or more). Full guide: [Tile Grid](docs/wiki/Tile-Grid.md).
394
+
395
+ - **Opens what matters**: with no grid arranged yet, it fills the tiles with the sessions that are working first, then the ones waiting on you, then the most recently used, and always includes the one you are on.
396
+ - **Keeps your layout**: once you arrange a grid (which session sits where, empty cells, tile count, divider sizes, the focused and zoomed tile), the Tiles button brings it back exactly, and so does a page reload while it was open.
397
+ - **Tile animations** _(opt-in)_: **App Settings → Animations → Tile Animations** makes the grid open with a show: **CRT** (each tile switches on as a hot line, as in the GIF at the top), **Fly from tab**, **Deal**, **Beam down**, **Cascade**, **Pop** or **Soft**. Nothing moves under reduced motion.
398
+ - **Scrolls like the main terminal**: the mouse wheel scrolls a fullscreen Claude conversation inside its tile, a Codex tile pages its transcript, and `Shift+wheel` scrolls the tile's local history.
399
+ - **Detach Tiles** _(beta, opt-in)_: with **App Settings → Appearance → Detach Tiles** on, drag a tile's header out of the browser and it pops out into its own window; drop it on another Codeman window's tiles and it moves there.
400
+ - **Hands-free**: with the [gesture overlay](#more-features) on, pinch a tile and carry it onto another tile to swap them, onto an empty cell to move it, or carry a tab onto the grid to add it.
391
401
 
392
402
  ### Persistent Sessions
393
403
 
@@ -453,7 +463,7 @@ PTY Output → 16ms Server Batch → DEC 2026 Wrap → SSE → Client rAF → xt
453
463
  - **Git status in the bottom bar** — off by default (**App Settings → Header & Panels → Bottom bar → Git status**, per device). A small indicator at the right of the bottom bar shows the active session's repository at a glance: `● 3` uncommitted files, `↑ 2` commits not pushed, `⚠` merge conflicts, `✓` all committed and pushed. Click it for a draggable window listing the staged, not-staged, untracked and conflicted files (grouped under collapsed folders, or as a flat list if you turn that setting off) and the unpushed commits; **click a file to see its diff** (new files as all additions, deleted files as all removals), with **Open file** to jump to the viewer. A folder that holds several projects gets one collapsible section per repository found up to two levels down, all collapsed until you open them. Read-only and offline (Codeman never fetches or changes the repo); not shown for Docker or remote sessions.
454
464
  - **Clone a GitHub repo as a case** — paste a repository URL into **Add Case → Clone Repo** and Codeman clones it into `~/codeman-cases/<name>` and registers it as a normal case, ready to run an agent in. It preflights the URL while you type (tells you whether it can be cloned anonymously and offers the repo's real branches and tags for the optional branch/tag field), fills the case name in from the URL, and lets you pick which CLI the Run button should use. Public repositories over `https://`; Codeman never collects or stores credentials
455
465
  - **Create a case in a custom folder** — tick **Create in a custom folder** in **Add Case → Create New**, pick a parent folder (Browse included) and a name, and Codeman scaffolds the new case there instead of `~/codeman-cases`. The target must be a new or empty folder; system directories, your home folder itself, credential trees such as `~/.ssh`, and Codeman's own data folder are refused. Admin only in multi-user mode.
456
- - **Multi-CLI** — run **Claude Code**, **OpenCode**, **Codex**, **Antigravity**, **Gemini**, **Pi**, **Grok**, **DeepSeek Harness**, or **OMP** per session; env-var prefixes auto-gate (`CLAUDE_CODE_*` vs `OPENCODE_*` vs `CODEX_*` vs `ANTIGRAVITY_*` vs `GEMINI_*`/`GOOGLE_*` vs `PI_*` vs `GROK_*`/`XAI_*` vs `DSH_*`/`DEEPSEEK_*` vs `OMP_*`). See [`docs/opencode-integration.md`](docs/opencode-integration.md), [`docs/pi-integration.md`](docs/pi-integration.md), [`docs/grok-integration.md`](docs/grok-integration.md), [`docs/deepseek-integration.md`](docs/deepseek-integration.md) and [`docs/omp-integration.md`](docs/omp-integration.md)
466
+ - **Multi-CLI** — run **Claude Code**, **OpenCode**, **Codex**, **Antigravity**, **Gemini**, **Pi**, **Grok**, **DeepSeek Harness**, **OMP**, or **GitHub Copilot CLI** per session; env-var prefixes auto-gate (`CLAUDE_CODE_*` vs `OPENCODE_*` vs `CODEX_*` vs `ANTIGRAVITY_*` vs `GEMINI_*`/`GOOGLE_*` vs `PI_*` vs `GROK_*`/`XAI_*` vs `DSH_*`/`DEEPSEEK_*` vs `OMP_*` vs `COPILOT_*`). See [`docs/opencode-integration.md`](docs/opencode-integration.md), [`docs/pi-integration.md`](docs/pi-integration.md), [`docs/grok-integration.md`](docs/grok-integration.md), [`docs/deepseek-integration.md`](docs/deepseek-integration.md) [`docs/omp-integration.md`](docs/omp-integration.md) and [`docs/copilot-integration.md`](docs/copilot-integration.md)
457
467
  - **Custom model endpoints** _(new in 1.29.0, HTTP API for now)_ — point a session's CLI at any OpenAI-compatible endpoint instead of its native backend: a local llama.cpp, llama-swap, Ollama or vLLM box, or a cloud gateway such as Azure AI Foundry or OpenRouter. Save an endpoint once (`POST /api/model-endpoints`; its models are discovered from `/v1/models`), apply it to a session (`POST /api/sessions/:id/custom-model`), and the CLI restarts in place on that endpoint. Verified live for Claude, OpenCode, Pi, Grok and OMP; Codex, Gemini and DeepSeek have documented gaps, Antigravity has no mechanism. A toolbar picker is the follow-up. See [`docs/custom-model-endpoints.md`](docs/custom-model-endpoints.md)
458
468
  - **Web tabs** — open Grafana, Uptime Kuma, a Vite dev server or any dashboard URL as a tab beside your sessions (Run dropdown → **Web / URL** → **Add URL**). Dashboards are proxied through Codeman's own origin, so an `http://` target works from a phone over HTTPS and through the tunnel, single-page apps route on their own paths, and a frame that reloads recovers itself. A `localhost` link an agent prints opens as a web tab automatically. See [`docs/web-tabs.md`](docs/web-tabs.md)
459
469
  - **Docker sessions** — run a case inside an isolated, hardened container. One checkbox on **Create New** spins up a container with sensible defaults and starts the agent inside it; multiple sessions share one per-case container, or attach a case to a container you already run; export a container + its workspace to a portable `.tar.gz` to move it to another machine. See [`docs/docker-cases.md`](docs/docker-cases.md)
@@ -464,10 +474,15 @@ PTY Output → 16ms Server Batch → DEC 2026 Wrap → SSE → Client rAF → xt
464
474
  - **Gesture control** _(opt-in)_ — a MediaPipe hand-tracking overlay to grab/drag session windows and pinch buttons, hands-free. Enable with `CODEMAN_GESTURE=1` + App Settings → Terminal & Input
465
475
  - **Multi-monitor span** _(macOS)_ — one click opens a browser window maximized across all displays, so floating agent/gesture panels can cross the physical seam
466
476
  - **File Viewer button** _(opt-in)_ — a header button that toggles the built-in file browser panel with one tap; enable under App Settings → Header & Panels → Header buttons
477
+ - **HTML reports open as pages**: click an `.html` path an agent printed (a test report, a coverage page, a dashboard) and the File Viewer shows it as a real page, with the scripts, styles, images and data files from its folder; the **Page** pill switches to the source and its Edit button. The page runs sandboxed with an opaque origin, so it cannot read Codeman's cookies, call Codeman's API or read files outside its own folder. Network access stays open, so a dashboard that loads Chart.js or fonts from a CDN works as it would from disk. Broad folders (`/`, your home, `/tmp`) are refused, so give a report a folder of its own. A `.md` path clicked in the terminal opens rendered too
478
+ - **Clickable paths and the folder grid**: paths written as `~/…`, relative to the session folder, or broken across terminal lines are clickable in the terminal and the Response Viewer, and so are folders: a folder opens a grid of its files (renders, screenshots, reports) that you page through with the arrow keys
479
+ - **OSC 52 clipboard**: a program in a session that sets the clipboard with OSC 52 (Claude Code's `/copy`, a tmux yank, vim) puts the text on your browser's clipboard, in the main terminal and in every tile. Clipboard read requests are refused, and replaying a buffer never copies
480
+ - **MCP server sync** _(opt-in)_: copies the user-level MCP servers each installed CLI has (Claude, Codex, Gemini, OpenCode, Antigravity, and GitHub Copilot CLI) into the others' own config files. Additive only, a server you switched off is never copied, **Preview** shows the changes first, and the previous file is kept as `.codeman-bak`. App Settings → Agents & CLIs; admin only in multi-user mode
467
481
  - **CJK / IME input** — full composition support for Chinese / Japanese / Korean, with Ctrl- and Alt-modified navigation keys passed through to the CLI
468
482
  - **Plan usage in the header** — live Claude subscription usage (the 5-hour and weekly windows) from a statusline exporter Codeman hands to `claude` at spawn and never writes into your settings files, plus Codex limits from its own app-server; per device, on for desktops and off for phones
469
- - **Session list, your way** — the header strip, a left sidebar with a filter box, or a vertical rail whose detailed rows carry created and state stamps and sort by activity; the phone home screen and the desktop home rail use the same order
470
- - **Terminal looks** — seven skins, four of them light, per-device font family and weight (the bundled JetBrains Mono covers weights 100 to 800), and opt-in entrance animations for tabs, agent windows, the terminal pane and connection lines
483
+ - **Prompt-cache readout**: each Claude session shows whether its prompt cache is warm (`cache:until HH:MM`) or cold, in the footer (when you have no statusline of your own) and in Session Options → Respawn, with the cost of a re-cache and a note after a compaction. Display only; it survives a restart
484
+ - **Session list, your way** — the header strip, a left sidebar with a filter box, or a vertical rail whose detailed rows carry created and state stamps and sort by activity; the phone home screen and the desktop home rail use the same order. On the rail, **Search sessions** narrows the list to the tabs that match, across every group, and a tab with an alert stays visible even when its name does not. Named **tab groups** collapse, reorder and take drags; a group's menu has **New session**, and a worker an agent spawns lands right after its parent (**Spawned tabs follow their parent**, off by default, keeps it moving with the parent). **Add to Focus** pins a shortcut to any tab in a section at the top of the rail, and **CLI Logos on Tabs** can be switched off per device
485
+ - **Terminal looks** — seven skins, four of them light, per-device font family and weight (the bundled JetBrains Mono covers weights 100 to 800), and opt-in animations for tabs, agent windows, the terminal pane, connection lines and [tile-grid tiles](#tile-grid), all in App Settings → Animations (with a lab to try them)
471
486
  - **OS notifications & hostname-aware titles** — desktop alerts and tab titles are prefixed `codeman:<host>` so multi-host setups stay unambiguous
472
487
 
473
488
  ---
@@ -499,6 +514,7 @@ Point a case at another machine and run the agent **there**, over SSH, with the
499
514
  - **Shared sessions**: several clients can attach the same remote session at different window sizes without clamping each other; discovery shows a "shared" badge with the client count.
500
515
  - **Injection-safe**: every ssh command line flows through a single shell-escaping builder, and host/path/identity fields are schema-guarded.
501
516
  - **Files too**: previews, downloads and text reads in a remote case go over the same ssh connection (one `realpath` + `stat` probe, then a streamed `cat`, `Range` seeking included), so a clicked path opens the file on the machine the agent is on. Nothing is copied to the Codeman host; editing and Office previews answer a clear 400 instead of a misleading 404.
517
+ - **Full scrollback**: loading a remote session's history reads it from the remote tmux in one bounded ssh round trip, so a session keeps its whole scrollback after a reattach or a tab switch, with no rows lost where the history meets the live screen.
502
518
 
503
519
  Set it up under **New Case → Remote** (host, user, identity file, optional jump host). Full design: [`docs/remote-sessions.md`](docs/remote-sessions.md).
504
520
 
@@ -668,8 +684,8 @@ These run for **every** request — before auth, even on the default no-password
668
684
 
669
685
  ### Input, files & headers
670
686
 
671
- - **Schema-validated inputs** — every API body is checked with Zod v4 schemas; a `CLAUDE_CODE_*` / `OPENCODE_*` / `CODEX_*` / `ANTIGRAVITY_*` / `GEMINI_*` / `GOOGLE_*` / `PI_*` / `GROK_*` / `XAI_*` / `DSH_*` / `DEEPSEEK_*` / `OMP_*` env-prefix allowlist gates which settings each CLI can receive, and the keys that could redirect a CLI's traffic (base URLs, config homes) are clamped for non-admin users
672
- - **Path containment** — file routes `realpath` before boundary checks (no TOCTOU); `..`, absolute paths, and symlinks resolving outside the working dir are rejected. Caps: 10 MB text preview / 2 GB raw & download (`CODEMAN_MAX_DOWNLOAD_BYTES`; bodies stream and answer `Range` requests, so the cap is a sanity bound rather than memory protection); `/api/download` blocklists sensitive paths (`.env`, `*credentials*`, `~/.ssh/`, `.aws/credentials`). SVG/HTML is served `octet-stream` + `nosniff` + attachment so it downloads rather than executes
687
+ - **Schema-validated inputs** — every API body is checked with Zod v4 schemas; a `CLAUDE_CODE_*` / `OPENCODE_*` / `CODEX_*` / `ANTIGRAVITY_*` / `GEMINI_*` / `GOOGLE_*` / `PI_*` / `GROK_*` / `XAI_*` / `DSH_*` / `DEEPSEEK_*` / `OMP_*` / `COPILOT_*` env-prefix allowlist gates which settings each CLI can receive, and the keys that could redirect a CLI's traffic (base URLs, config homes) are clamped for non-admin users
688
+ - **Path containment** — file routes `realpath` before boundary checks (no TOCTOU); `..`, absolute paths, and symlinks resolving outside the working dir are rejected. Caps: 10 MB text preview / 2 GB raw & download (`CODEMAN_MAX_DOWNLOAD_BYTES`; bodies stream and answer `Range` requests, so the cap is a sanity bound rather than memory protection); `/api/download` blocklists sensitive paths (`.env`, `*credentials*`, `~/.ssh/`, `.aws/credentials`). SVG/HTML is served `octet-stream` + `nosniff` + attachment so it downloads rather than executes. The one place HTML renders is the File Viewer's page view: a separate `/html-view/<capability>/` address scoped to the file's own folder, served under `Content-Security-Policy: sandbox` without `allow-same-origin`, so the page has an opaque origin and can never read Codeman's cookies or drive its API; hidden folders and broad roots (`/`, home, `/tmp`) are refused, and the capabilities are revoked on logout
673
689
  - **Security headers** — `Content-Security-Policy` (`default-src 'self'`, every exception enumerated), `X-Content-Type-Options: nosniff`, `X-Frame-Options: SAMEORIGIN`, HSTS over HTTPS, and CORS reflected **only** for `localhost` / `127.0.0.1` / `::1`
674
690
 
675
691
  ### Supply chain & isolation
@@ -703,7 +719,7 @@ The web UI remains the primary surface; see **[docs/tui.md](docs/tui.md)** for t
703
719
 
704
720
  | Shortcut | Action |
705
721
  | ------------------------------- | ------------------------------------------------------------- |
706
- | `Ctrl/Cmd+W` | Kill active session |
722
+ | `Ctrl+W` | Not a Codeman shortcut: it reaches the terminal (delete the previous word). **Close Session** has no default key and can be bound in App Settings → Shortcuts |
707
723
  | `Ctrl/Cmd/Option+K` | Find open session or start a new one |
708
724
  | `Ctrl/Cmd+Tab` | Next session |
709
725
  | `Alt/Option+[` / `Alt/Option+]` | Previous / next session |
@@ -716,6 +732,10 @@ The web UI remains the primary surface; see **[docs/tui.md](docs/tui.md)** for t
716
732
  | `Ctrl/Cmd+L` | Clear terminal |
717
733
  | `Ctrl+Shift+R` | Restore terminal size |
718
734
  | `Ctrl+Shift+V` | Toggle voice input |
735
+ | `Ctrl+Shift+G` | Open or close the tile grid |
736
+ | `Alt+Shift+Arrows` | Focus the tile to the left, right, above or below |
737
+ | `Ctrl+Shift+Arrows` | Move the focused tile one place (into an empty cell, or swap) |
738
+ | `Alt+Shift+Enter` | Zoom the focused tile, or restore the grid |
719
739
  | `Ctrl/Cmd +` / `-` | Font size |
720
740
  | `Ctrl/Cmd+?` | Keyboard help |
721
741
  | `Shift+Enter` | Insert newline (sent to terminal) |
@@ -733,7 +753,7 @@ For AI agents and automation that control Codeman without a browser: an agent th
733
753
 
734
754
  ### The agent skill (start here)
735
755
 
736
- Everything in this section also ships as an **agent skill**, [`skills/codeman`](skills/codeman/SKILL.md), in the `SKILL.md` format Claude Code, Codex, Gemini CLI, OpenCode, Grok, OMP and most other agent CLIs read. Install it once and you never paste API docs into a prompt again. You ask for what you want in plain English, and the agent already sitting inside a Codeman session loads the recipes and drives the API itself.
756
+ Everything in this section also ships as an **agent skill**, [`skills/codeman`](skills/codeman/SKILL.md), in the `SKILL.md` format Claude Code, Codex, Gemini CLI, OpenCode, Grok, OMP and most other agent CLIs read. Install it once and you never paste API docs into a prompt again. You ask for what you want in plain English, and the agent already sitting inside a Codeman session loads the recipes and drives the API itself. Full guide, with every install route, the recordings and what it will and will not do on its own: [The Codeman Skill](https://github.com/Ark0N/Codeman/wiki/Codeman-Skill).
737
757
 
738
758
  <p align="center">
739
759
  <a href="docs/images/codeman-skill-crt-20261010.png"><img src="docs/images/codeman-skill-crt-20261010.gif" alt="A real codeman skill run: one short prompt typed into Claude Code, the tile grid powering on, then a DeepSeek Harness worker on a local qwen model and a Claude Code worker powering on as new tiles, with lineage lines from the lead to both" width="900"></a>
@@ -763,9 +783,19 @@ That is the entire interface. No curl, no endpoint names, no session ids. These
763
783
  | _"Have a claude worker on `refactor-auth` summarize `src/session.ts`, then close it."_ | Spawns, runs the readiness ladder (first-run trust dialog included), send-and-wait, reads the clean transcript answer, deletes. |
764
784
  | _"Watch session w4 and tell me if it gets stuck on a permission prompt."_ | Blocks on the `blocked` signal and surfaces the question to **you**. It never answers another session's prompt itself. |
765
785
 
786
+ One short line is enough. Here a Claude Code lead gets `use codeman to start 5 claude workers, one per TODO item`, and five real Claude Code workers power on, shown side by side in the tile grid:
787
+
788
+ <p align="center">
789
+ <img src="docs/images/codeman-skill-grid-20261015.gif" alt="A real codeman skill run in the tile grid: the lead Claude Code session powers on as the only tile, the prompt use codeman to start 5 claude workers, one per TODO item is typed, then five Claude Code worker sessions power on as new tiles one after another with the CRT animation, and all six agents work at once" width="900">
790
+ </p>
791
+
766
792
  #### Step 3: nothing
767
793
 
768
- The agent deletes every session it started. Watch the tabs appear and disappear in the dashboard while it works.
794
+ The agent deletes every session it started. Watch the tabs appear and disappear in the dashboard while it works. With eight workers, each one gets its own tab, and a lineage line runs back to the lead that spawned it:
795
+
796
+ <p align="center">
797
+ <img src="docs/images/codeman-skill-tabs-20261015.gif" alt="A real codeman skill run in the normal view: the prompt use codeman to start 8 claude workers, one per TODO item is typed, eight worker tabs power on left to right while lineage lines draw from the lead to each one, then clicking a worker tab shows a live Claude Code worker receiving its task" width="900">
798
+ </p>
769
799
 
770
800
  #### A real run, start to finish
771
801
 
@@ -827,7 +857,7 @@ When a CLI runs in a Codeman-managed session, these environment variables are se
827
857
  4. **Response envelope.** Most endpoints return `{ "success": true, "data": … }` (errors: `{ "success": false, "error", "errorCode" }`). A few legacy GETs return bare bodies — **handle both** (`body.data ?? body`).
828
858
  5. **`/api/v1/*`** is a stable alias of `/api/*`.
829
859
  6. **Wait instead of polling, and don't treat a timeout as an error.** The wait endpoints answer with HTTP `200` and `wait.timedOut: true` when nothing happened in time, so loop over short waits (60s is the default) rather than issuing one long call, because tunnels cut idle connections. `wait.timeoutMs` tells you the timeout the server actually applied after clamping (600s ceiling).
830
- 7. **Only `claude` and `deepseek` sessions emit `stop` and `blocked`.** Those two come from hooks (Claude Code's own, and the DeepSeek Harness status bridge); `shell` and the other external CLIs (opencode/codex/gemini/antigravity/pi/grok/omp) accept only `idle`, `working` and `exit`. Asking for `stop` explicitly on those is a `400`; omitting `until` is always safe. ⚠️ On a `shell` session `idle` fires **once**, at startup, and never again, so send-and-wait there can only time out; synchronize hook-less sessions with a `wait-output` marker.
860
+ 7. **Only `claude` and `deepseek` sessions emit `stop`; `codex` emits `blocked` too.** Those come from hooks (Claude Code's own, and the DeepSeek Harness status bridge), except codex's `blocked`, which Codeman reads off its screen while an approval, question or trust dialog is up (answer it in the terminal). `shell` and the other external CLIs (opencode/gemini/antigravity/pi/grok/omp) accept only `idle`, `working` and `exit`, and codex adds `blocked`. Asking for `stop` explicitly on those is a `400`; omitting `until` is always safe. ⚠️ On a `shell` session `idle` fires **once**, at startup, and never again, so send-and-wait there can only time out; synchronize hook-less sessions with a `wait-output` marker.
831
861
  8. **Nothing reports "ready", so wait for it explicitly.** A new session answers `{"signal":"exit","immediate":true}` (that means *not started*, not *crashed*) until its PID exists, and a `claude` worker in a fresh case then sits on the CLI's trust dialog. Prompt it there and the wait resolves on `idle` in ~2s looking exactly like a finished turn, while the text sits stuck in the dialog. Recipe 2b below is the sequence that avoids it.
832
862
 
833
863
  ### Recipes
@@ -905,7 +935,7 @@ for _ in $(seq 1 10); do
905
935
  done
906
936
  printf '%s\n' "$TXT"
907
937
 
908
- # 5b. Other modes (shell/opencode/gemini/antigravity/pi/grok/omp) have no transcript:
938
+ # 5b. Other modes (shell/opencode/gemini/antigravity/pi/grok/omp/copilot) have no transcript:
909
939
  # read the terminal. ⚠️ Use terminal?tail=, NOT /output: the latter's textOutput
910
940
  # is empty for every tmux-backed (i.e. every interactive) session. tail counts
911
941
  # BYTES, and what comes back is terminal data, ANSI included.
@@ -1125,7 +1155,7 @@ flowchart TB
1125
1155
  end
1126
1156
 
1127
1157
  subgraph External["External"]
1128
- CLI["AI CLI<br/><small>Claude Code / OpenCode / Codex / Antigravity / Gemini / Pi / Grok / DeepSeek / OMP</small>"]
1158
+ CLI["AI CLI<br/><small>Claude Code / OpenCode / Codex / Antigravity / Gemini / Pi / Grok / DeepSeek / OMP / GitHub Copilot</small>"]
1129
1159
  BG["Background Agents<br/><small>(Task tool)</small>"]
1130
1160
  end
1131
1161
  end
@@ -7,10 +7,12 @@
7
7
  * used to change only the tab, so `/resume` kept listing the old name.
8
8
  *
9
9
  * Appending the row is enough for a pane that was spawned WITHOUT `--name`
10
- * (every placeholder- or auto-named tab, see `Session.cliPinnedName`): that
11
- * process holds no title of its own and never writes one back. A process that
12
- * WAS spawned with `--name` re-appends its in-memory title after each turn, so
13
- * there the new title holds from the next spawn, which pins the new name.
10
+ * (every placeholder- or auto-named tab, unless the opt-in `pinCliSessionName`
11
+ * setting is on, see `Session.cliPinnedName`): that process holds no title of
12
+ * its own and never writes one back. A process that WAS spawned with `--name`
13
+ * (every tab with `pinCliSessionName` on) re-appends its in-memory title after
14
+ * each turn, so there the new title holds only until the next turn, then from
15
+ * the next spawn, which pins the new name.
14
16
  *
15
17
  * @module claude-session-title
16
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"claude-session-title.d.ts","sourceRoot":"","sources":["../src/claude-session-title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAelB"}
1
+ {"version":3,"file":"claude-session-title.d.ts","sourceRoot":"","sources":["../src/claude-session-title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAelB"}
@@ -7,10 +7,12 @@
7
7
  * used to change only the tab, so `/resume` kept listing the old name.
8
8
  *
9
9
  * Appending the row is enough for a pane that was spawned WITHOUT `--name`
10
- * (every placeholder- or auto-named tab, see `Session.cliPinnedName`): that
11
- * process holds no title of its own and never writes one back. A process that
12
- * WAS spawned with `--name` re-appends its in-memory title after each turn, so
13
- * there the new title holds from the next spawn, which pins the new name.
10
+ * (every placeholder- or auto-named tab, unless the opt-in `pinCliSessionName`
11
+ * setting is on, see `Session.cliPinnedName`): that process holds no title of
12
+ * its own and never writes one back. A process that WAS spawned with `--name`
13
+ * (every tab with `pinCliSessionName` on) re-appends its in-memory title after
14
+ * each turn, so there the new title holds only until the next turn, then from
15
+ * the next spawn, which pins the new name.
14
16
  *
15
17
  * @module claude-session-title
16
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"claude-session-title.js","sourceRoot":"","sources":["../src/claude-session-title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,cAAsB,EACtB,cAAsB,EACtB,KAAa;IAEb,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"claude-session-title.js","sourceRoot":"","sources":["../src/claude-session-title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,cAAsB,EACtB,cAAsB,EACtB,KAAa;IAEb,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/cli-agent.js CHANGED
@@ -729,7 +729,7 @@ export function registerAgentCommands(program) {
729
729
  agent
730
730
  .command('wait <id>')
731
731
  .description('Block until a signal (--until) or an output marker (--match) — timeout exits 2, a dead worker exits 3')
732
- .option('-u, --until <signals>', 'Comma list: stop,idle,exit,working,blocked (stop/blocked need hook signals for the session; where there are none the server answers 400, passed through)')
732
+ .option('-u, --until <signals>', 'Comma list: stop,idle,exit,working,blocked (stop needs hook signals for the session, blocked hooks or a dialog Codeman reads off the screen, as for codex; where there are none the server answers 400, passed through)')
733
733
  .option('-m, --match <marker>', 'Literal substring to wait for in the output (ANSI-stripped, no regex). The echo of your own prompt is output too, so never put the marker verbatim in the prompt: ask for it in halves ("print WORKDONE followed by _4711") and wait on the joined form (WORKDONE_4711)')
734
734
  .option('--from <where>', 'buffer (scan existing output first, the default) or now', 'buffer')
735
735
  .option('--nocase', 'Case-insensitive --match')
@@ -1 +1 @@
1
- {"version":3,"file":"cli-agent.js","sourceRoot":"","sources":["../src/cli-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-agent.js","sourceRoot":"","sources":["../src/cli-agent.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  * @module config/cli-registry/patterns
17
17
  */
18
18
  /** Names a value pattern. Config may only reference these. */
19
- export type TokenPattern = 'model' | 'model-claude' | 'model-pi' | 'id' | 'id-dotted' | 'uuid' | 'slug' | 'path-segment' | 'tool-list' | 'config-kv';
19
+ export type TokenPattern = 'model' | 'model-claude' | 'model-plain' | 'model-pi' | 'id' | 'id-dotted' | 'uuid' | 'slug' | 'path-segment' | 'tool-list' | 'config-kv';
20
20
  /** Does `value` satisfy the named pattern? */
21
21
  export declare function matchesPattern(pattern: TokenPattern, value: string): boolean;
22
22
  /** Every pattern name, for schema validation and error messages. */
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/config/cli-registry/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,cAAc,GACd,UAAU,GACV,IAAI,GACJ,WAAW,GACX,MAAM,GACN,MAAM,GACN,cAAc,GACd,WAAW,GACX,WAAW,CAAC;AA2ChB,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED,oEAAoE;AACpE,eAAO,MAAM,cAAc,EAA4B,YAAY,EAAE,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAA4B,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAYtC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUjE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD"}
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/config/cli-registry/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,cAAc,GACd,aAAa,GACb,UAAU,GACV,IAAI,GACJ,WAAW,GACX,MAAM,GACN,MAAM,GACN,cAAc,GACd,WAAW,GACX,WAAW,CAAC;AA8ChB,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED,oEAAoE;AACpE,eAAO,MAAM,cAAc,EAA4B,YAAY,EAAE,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAA4B,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAYtC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUjE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD"}
@@ -29,6 +29,9 @@ const PATTERNS = {
29
29
  model: /^[a-zA-Z0-9._\-/]+$/,
30
30
  // buildSpawnCommand's claude branch — `[` and `]` for bracketed model aliases
31
31
  'model-claude': /^[a-zA-Z0-9._\-[\]]+$/,
32
+ // copilot --model. Same characters as `model`, but a leading alphanumeric: the value follows a
33
+ // flag, so `--yolo` must not pass as a model id and become its own flag (the allowAll clamp bypass).
34
+ 'model-plain': /^[a-zA-Z0-9][a-zA-Z0-9._\-/]*$/,
32
35
  // buildPiCommand — `:` for a thinking suffix (`sonnet:high`), `/` for `provider/id`
33
36
  'model-pi': /^[a-zA-Z0-9._\-/:]+$/,
34
37
  // opencode --session, codex resume
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/config/cli-registry/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAeH;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAiC;IAC7C,0FAA0F;IAC1F,KAAK,EAAE,qBAAqB;IAC5B,8EAA8E;IAC9E,cAAc,EAAE,uBAAuB;IACvC,oFAAoF;IACpF,UAAU,EAAE,sBAAsB;IAClC,mCAAmC;IACnC,EAAE,EAAE,kBAAkB;IACtB,4DAA4D;IAC5D,WAAW,EAAE,mBAAmB;IAChC,iCAAiC;IACjC,IAAI,EAAE,cAAc;IACpB,gBAAgB;IAChB,IAAI,EAAE,cAAc;IACpB,gFAAgF;IAChF,sFAAsF;IACtF,wFAAwF;IACxF,yDAAyD;IACzD,cAAc,EAAE,8BAA8B;IAC9C,sCAAsC;IACtC,WAAW,EAAE,mCAAmC;IAChD,iFAAiF;IACjF,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAErD,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,OAAqB,EAAE,KAAa;IACjE,IAAI,OAAO,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAmB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,0DAA0D;AAC1D,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,MAAM,CAAC,MAAM,GAAG,wBAAwB;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,CAAC;QACH,qFAAqF;QACrF,0DAA0D;QAC1D,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,CAAC;QACH,OAAQ,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/config/cli-registry/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAiC;IAC7C,0FAA0F;IAC1F,KAAK,EAAE,qBAAqB;IAC5B,8EAA8E;IAC9E,cAAc,EAAE,uBAAuB;IACvC,+FAA+F;IAC/F,qGAAqG;IACrG,aAAa,EAAE,gCAAgC;IAC/C,oFAAoF;IACpF,UAAU,EAAE,sBAAsB;IAClC,mCAAmC;IACnC,EAAE,EAAE,kBAAkB;IACtB,4DAA4D;IAC5D,WAAW,EAAE,mBAAmB;IAChC,iCAAiC;IACjC,IAAI,EAAE,cAAc;IACpB,gBAAgB;IAChB,IAAI,EAAE,cAAc;IACpB,gFAAgF;IAChF,sFAAsF;IACtF,wFAAwF;IACxF,yDAAyD;IACzD,cAAc,EAAE,8BAA8B;IAC9C,sCAAsC;IACtC,WAAW,EAAE,mCAAmC;IAChD,iFAAiF;IACjF,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAErD,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,OAAqB,EAAE,KAAa;IACjE,IAAI,OAAO,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAmB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,0DAA0D;AAC1D,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,MAAM,CAAC,MAAM,GAAG,wBAAwB;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,CAAC;QACH,qFAAqF;QACrF,0DAA0D;QAC1D,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,CAAC;QACH,OAAQ,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -202,6 +202,7 @@ export declare const CliEntrySchema: z.ZodObject<{
202
202
  }, z.core.$strict>;
203
203
  wheelForward: z.ZodObject<{
204
204
  mode: z.ZodEnum<{
205
+ always: "always";
205
206
  never: "never";
206
207
  "version-gated": "version-gated";
207
208
  }>;
@@ -235,6 +236,8 @@ export declare const CliEntrySchema: z.ZodObject<{
235
236
  watchingLine: z.ZodOptional<z.ZodString>;
236
237
  watchingLines: z.ZodOptional<z.ZodNumber>;
237
238
  awaitingLine: z.ZodOptional<z.ZodString>;
239
+ blockedLine: z.ZodOptional<z.ZodString>;
240
+ blockedLines: z.ZodOptional<z.ZodNumber>;
238
241
  }, z.core.$strict>>;
239
242
  model: z.ZodObject<{
240
243
  source: z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/cli-registry/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB,+CAAmF,CAAC;AA2iBjH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiHvB,CAAC;AAEL,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/cli-registry/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB,+CAAmF,CAAC;AAikBjH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiHvB,CAAC;AAEL,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -270,7 +270,7 @@ const capabilitiesSchema = z
270
270
  altScreen: z.enum(['strip-full', 'strip-mux-only', 'strip-mux-and-mouse', 'preserve']),
271
271
  echo: echoSchema,
272
272
  wheelForward: z
273
- .object({ mode: z.enum(['never', 'version-gated']), minVersion: z.string().max(20).optional() })
273
+ .object({ mode: z.enum(['never', 'version-gated', 'always']), minVersion: z.string().max(20).optional() })
274
274
  .strict(),
275
275
  // Whether a hollow pane's wheel/touch scroll may be turned into PageUp/PageDown for
276
276
  // the CLI to page its own transcript. Distinct from wheelForward (SGR reports).
@@ -334,6 +334,19 @@ const capabilitiesSchema = z
334
334
  .min(1)
335
335
  .refine((src) => compileVersionRegex(src) !== null, 'awaitingLine must be a regex compileVersionRegex() accepts: at most 200 characters, no nested quantifiers')
336
336
  .optional(),
337
+ // Same guard again: run over the foot of a pane capture every time a session
338
+ // settles and on a timer while a dialog is up, and ~/.codeman/clis.json can set it.
339
+ blockedLine: z
340
+ .string()
341
+ .min(1)
342
+ .refine((src) => compileVersionRegex(src) !== null, 'blockedLine must be a regex compileVersionRegex() accepts: at most 200 characters, no nested quantifiers')
343
+ .optional(),
344
+ // Wider than `watchingLines` because a dialog's options wrap at narrow widths (codex
345
+ // needs 20 at 36 columns). That is safe only for a pattern that ends on the dialog's
346
+ // own footer: the rows above it, which the agent may write, can then supply a
347
+ // marker but never the footer. Still bounded, since it is also how much text the
348
+ // pattern runs over.
349
+ blockedLines: z.number().int().min(1).max(24).optional(),
337
350
  })
338
351
  .strict()
339
352
  // A window with nothing to search is a typo, not a configuration. Refused at LOAD
@@ -341,6 +354,7 @@ const capabilitiesSchema = z
341
354
  // the entry declares: the failure is otherwise silent and looks like a feature that
342
355
  // simply never fires.
343
356
  .refine((v) => v.watchingLines === undefined || v.watchingLine !== undefined, 'watchingLines has nothing to bound without a watchingLine')
357
+ .refine((v) => v.blockedLines === undefined || v.blockedLine !== undefined, 'blockedLines has nothing to bound without a blockedLine')
344
358
  .optional(),
345
359
  model: z
346
360
  .object({ source: z.enum(['flag', 'claude-settings-file', 'none']), param: z.string().optional() })
@@ -390,8 +404,10 @@ const capabilitiesSchema = z
390
404
  .strict())
391
405
  .max(8),
392
406
  // Exact env var NAMES, not prefixes: this list is a targeted deny, and a prefix here
393
- // would let one entry silently strip a whole namespace off every owner's overrides.
394
- privilegedEnvKeys: z.array(envName).max(8),
407
+ // would let one entry silently strip a whole namespace off every owner's overrides. The
408
+ // bound is generous because a longer list only takes more away from non-granted owners:
409
+ // copilot's COPILOT_ prefix covers dozens of variables that run code or redirect its token.
410
+ privilegedEnvKeys: z.array(envName).max(48),
395
411
  gates: z.record(z.string(), z.object({ minVersion: z.string().max(20), failClosed: z.boolean() }).strict()),
396
412
  maxFrameBytes: z.number().int().positive().optional(),
397
413
  newline: z.enum(['line-feed', 'esc-enter']).optional(),