aicodeman 1.33.3 → 1.35.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 (255) hide show
  1. package/README.md +3 -0
  2. package/dist/config/cli-registry/schema.d.ts +18 -0
  3. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  4. package/dist/config/cli-registry/schema.js +27 -0
  5. package/dist/config/cli-registry/schema.js.map +1 -1
  6. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  7. package/dist/config/cli-registry/stock.js +35 -0
  8. package/dist/config/cli-registry/stock.js.map +1 -1
  9. package/dist/config/cli-registry/types.d.ts +33 -0
  10. package/dist/config/cli-registry/types.d.ts.map +1 -1
  11. package/dist/config/dependency-registry.d.ts +7 -0
  12. package/dist/config/dependency-registry.d.ts.map +1 -1
  13. package/dist/config/dependency-registry.js +15 -0
  14. package/dist/config/dependency-registry.js.map +1 -1
  15. package/dist/config/path-probe.d.ts +37 -0
  16. package/dist/config/path-probe.d.ts.map +1 -0
  17. package/dist/config/path-probe.js +43 -0
  18. package/dist/config/path-probe.js.map +1 -0
  19. package/dist/git-workspace-status.d.ts +220 -0
  20. package/dist/git-workspace-status.d.ts.map +1 -0
  21. package/dist/git-workspace-status.js +606 -0
  22. package/dist/git-workspace-status.js.map +1 -0
  23. package/dist/hooks-config.d.ts.map +1 -1
  24. package/dist/hooks-config.js +88 -14
  25. package/dist/hooks-config.js.map +1 -1
  26. package/dist/mcp-sync.d.ts +105 -0
  27. package/dist/mcp-sync.d.ts.map +1 -0
  28. package/dist/mcp-sync.js +619 -0
  29. package/dist/mcp-sync.js.map +1 -0
  30. package/dist/mux-interface.d.ts +4 -0
  31. package/dist/mux-interface.d.ts.map +1 -1
  32. package/dist/session-cli-builder.d.ts +20 -1
  33. package/dist/session-cli-builder.d.ts.map +1 -1
  34. package/dist/session-cli-builder.js +33 -3
  35. package/dist/session-cli-builder.js.map +1 -1
  36. package/dist/session-cli-registry-bridge.d.ts +2 -0
  37. package/dist/session-cli-registry-bridge.d.ts.map +1 -1
  38. package/dist/session-cli-registry-bridge.js +15 -8
  39. package/dist/session-cli-registry-bridge.js.map +1 -1
  40. package/dist/session.d.ts +19 -0
  41. package/dist/session.d.ts.map +1 -1
  42. package/dist/session.js +29 -2
  43. package/dist/session.js.map +1 -1
  44. package/dist/tmux-manager.d.ts +2 -0
  45. package/dist/tmux-manager.d.ts.map +1 -1
  46. package/dist/tmux-manager.js +4 -2
  47. package/dist/tmux-manager.js.map +1 -1
  48. package/dist/types/api.d.ts +7 -0
  49. package/dist/types/api.d.ts.map +1 -1
  50. package/dist/types/api.js.map +1 -1
  51. package/dist/types/index.d.ts +3 -1
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/types/index.js +3 -1
  54. package/dist/types/index.js.map +1 -1
  55. package/dist/types/mcp-sync.d.ts +40 -0
  56. package/dist/types/mcp-sync.d.ts.map +1 -0
  57. package/dist/types/mcp-sync.js +8 -0
  58. package/dist/types/mcp-sync.js.map +1 -0
  59. package/dist/types/push.d.ts +37 -2
  60. package/dist/types/push.d.ts.map +1 -1
  61. package/dist/types/push.js +10 -3
  62. package/dist/types/push.js.map +1 -1
  63. package/dist/types/session.d.ts +34 -1
  64. package/dist/types/session.d.ts.map +1 -1
  65. package/dist/types/session.js +25 -1
  66. package/dist/types/session.js.map +1 -1
  67. package/dist/utils/bounded-path-probe.d.ts +99 -0
  68. package/dist/utils/bounded-path-probe.d.ts.map +1 -0
  69. package/dist/utils/bounded-path-probe.js +228 -0
  70. package/dist/utils/bounded-path-probe.js.map +1 -0
  71. package/dist/utils/cli-executable-resolver.d.ts +2 -0
  72. package/dist/utils/cli-executable-resolver.d.ts.map +1 -1
  73. package/dist/utils/cli-executable-resolver.js +2 -1
  74. package/dist/utils/cli-executable-resolver.js.map +1 -1
  75. package/dist/utils/dependency-checker.d.ts +2 -0
  76. package/dist/utils/dependency-checker.d.ts.map +1 -1
  77. package/dist/utils/dependency-checker.js +37 -9
  78. package/dist/utils/dependency-checker.js.map +1 -1
  79. package/dist/utils/index.d.ts +2 -0
  80. package/dist/utils/index.d.ts.map +1 -1
  81. package/dist/utils/index.js +1 -0
  82. package/dist/utils/index.js.map +1 -1
  83. package/dist/web/case-path.d.ts +58 -0
  84. package/dist/web/case-path.d.ts.map +1 -0
  85. package/dist/web/case-path.js +182 -0
  86. package/dist/web/case-path.js.map +1 -0
  87. package/dist/web/public/admin-ui.js.gz +0 -0
  88. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  89. package/dist/web/public/app.b9516c7b.js +43 -0
  90. package/dist/web/public/app.b9516c7b.js.br +0 -0
  91. package/dist/web/public/app.b9516c7b.js.gz +0 -0
  92. package/dist/web/public/approvals-ui.js.gz +0 -0
  93. package/dist/web/public/constants.d95fade9.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 +673 -0
  97. package/dist/web/public/git-status-ui.js.br +0 -0
  98. package/dist/web/public/git-status-ui.js.gz +0 -0
  99. package/dist/web/public/home-sessions.js.gz +0 -0
  100. package/dist/web/public/host-wake-ui.js.gz +0 -0
  101. package/dist/web/public/i18n.52f5b7cc.js +1 -0
  102. package/dist/web/public/i18n.52f5b7cc.js.br +0 -0
  103. package/dist/web/public/i18n.52f5b7cc.js.gz +0 -0
  104. package/dist/web/public/image-input.a216cf9e.js.gz +0 -0
  105. package/dist/web/public/index.html +190 -15
  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.c1e7c7b7.js.gz +0 -0
  110. package/dist/web/public/mobile-handlers.23a85db1.js.gz +0 -0
  111. package/dist/web/public/mobile-ime-preview.2dbaf262.js +1 -0
  112. package/dist/web/public/mobile-ime-preview.2dbaf262.js.br +0 -0
  113. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  114. package/dist/web/public/mobile-overview.js.gz +0 -0
  115. package/dist/web/public/mobile.1aa4952d.css.gz +0 -0
  116. package/dist/web/public/notification-manager.50bb87d8.js.gz +0 -0
  117. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  118. package/dist/web/public/panels-ui.6a5898d9.js.gz +0 -0
  119. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  120. package/dist/web/public/{ralph-wizard.13a1831e.js → ralph-wizard.b6c0dd19.js} +2 -0
  121. package/dist/web/public/ralph-wizard.b6c0dd19.js.br +0 -0
  122. package/dist/web/public/{ralph-wizard.13a1831e.js.gz → ralph-wizard.b6c0dd19.js.gz} +0 -0
  123. package/dist/web/public/readmymind-ui.js.gz +0 -0
  124. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  125. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  126. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  127. package/dist/web/public/session-lineage.js +27 -11
  128. package/dist/web/public/session-lineage.js.br +0 -0
  129. package/dist/web/public/session-lineage.js.gz +0 -0
  130. package/dist/web/public/session-ui.6bddf916.js +89 -0
  131. package/dist/web/public/session-ui.6bddf916.js.br +0 -0
  132. package/dist/web/public/session-ui.6bddf916.js.gz +0 -0
  133. package/dist/web/public/settings-ui.6e798b7b.js +97 -0
  134. package/dist/web/public/settings-ui.6e798b7b.js.br +0 -0
  135. package/dist/web/public/settings-ui.6e798b7b.js.gz +0 -0
  136. package/dist/web/public/styles.2d175c60.css +1 -0
  137. package/dist/web/public/styles.2d175c60.css.br +0 -0
  138. package/dist/web/public/styles.2d175c60.css.gz +0 -0
  139. package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
  140. package/dist/web/public/sw.js +2 -2
  141. package/dist/web/public/sw.js.br +0 -0
  142. package/dist/web/public/sw.js.gz +0 -0
  143. package/dist/web/public/tab-layout-browser.065fcba4.js +1 -0
  144. package/dist/web/public/tab-layout-browser.065fcba4.js.br +0 -0
  145. package/dist/web/public/tab-layout-browser.065fcba4.js.gz +0 -0
  146. package/dist/web/public/{tab-rail-resize.dcdc5772.js → tab-rail-resize.94cd59f0.js} +1 -1
  147. package/dist/web/public/tab-rail-resize.94cd59f0.js.br +0 -0
  148. package/dist/web/public/tab-rail-resize.94cd59f0.js.gz +0 -0
  149. package/dist/web/public/terminal-keycode229-recovery.fb91b25b.js.gz +0 -0
  150. package/dist/web/public/terminal-split.js +82 -34
  151. package/dist/web/public/terminal-split.js.br +0 -0
  152. package/dist/web/public/terminal-split.js.gz +0 -0
  153. package/dist/web/public/terminal-ui.a4535311.js +2 -0
  154. package/dist/web/public/terminal-ui.a4535311.js.br +0 -0
  155. package/dist/web/public/terminal-ui.a4535311.js.gz +0 -0
  156. package/dist/web/public/ultracode-panel.js.gz +0 -0
  157. package/dist/web/public/ultracode-windows.js.gz +0 -0
  158. package/dist/web/public/upload.html.gz +0 -0
  159. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  160. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  161. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  162. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  163. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  164. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  165. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js → xterm-predictive-echo.ae5e3d5d.js} +1 -1
  166. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js.br → xterm-predictive-echo.ae5e3d5d.js.br} +0 -0
  167. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js.gz → xterm-predictive-echo.ae5e3d5d.js.gz} +0 -0
  168. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js +4 -0
  169. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.br +0 -0
  170. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.gz +0 -0
  171. package/dist/web/public/vendor/xterm.css.gz +0 -0
  172. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  173. package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
  174. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  175. package/dist/web/public/webview-tabs.js +21 -10
  176. package/dist/web/public/webview-tabs.js.br +0 -0
  177. package/dist/web/public/webview-tabs.js.gz +0 -0
  178. package/dist/web/reboot-restore-registry.d.ts +2 -1
  179. package/dist/web/reboot-restore-registry.d.ts.map +1 -1
  180. package/dist/web/reboot-restore-registry.js +2 -1
  181. package/dist/web/reboot-restore-registry.js.map +1 -1
  182. package/dist/web/routes/case-routes.d.ts.map +1 -1
  183. package/dist/web/routes/case-routes.js +136 -18
  184. package/dist/web/routes/case-routes.js.map +1 -1
  185. package/dist/web/routes/doctor-routes.d.ts +23 -0
  186. package/dist/web/routes/doctor-routes.d.ts.map +1 -0
  187. package/dist/web/routes/doctor-routes.js +83 -0
  188. package/dist/web/routes/doctor-routes.js.map +1 -0
  189. package/dist/web/routes/git-status-routes.d.ts +16 -0
  190. package/dist/web/routes/git-status-routes.d.ts.map +1 -0
  191. package/dist/web/routes/git-status-routes.js +71 -0
  192. package/dist/web/routes/git-status-routes.js.map +1 -0
  193. package/dist/web/routes/index.d.ts +4 -0
  194. package/dist/web/routes/index.d.ts.map +1 -1
  195. package/dist/web/routes/index.js +4 -0
  196. package/dist/web/routes/index.js.map +1 -1
  197. package/dist/web/routes/mcp-sync-routes.d.ts +29 -0
  198. package/dist/web/routes/mcp-sync-routes.d.ts.map +1 -0
  199. package/dist/web/routes/mcp-sync-routes.js +83 -0
  200. package/dist/web/routes/mcp-sync-routes.js.map +1 -0
  201. package/dist/web/routes/ralph-routes.d.ts.map +1 -1
  202. package/dist/web/routes/ralph-routes.js +2 -1
  203. package/dist/web/routes/ralph-routes.js.map +1 -1
  204. package/dist/web/routes/reboot-restore-routes.d.ts.map +1 -1
  205. package/dist/web/routes/reboot-restore-routes.js +2 -0
  206. package/dist/web/routes/reboot-restore-routes.js.map +1 -1
  207. package/dist/web/routes/session-routes.d.ts.map +1 -1
  208. package/dist/web/routes/session-routes.js +60 -25
  209. package/dist/web/routes/session-routes.js.map +1 -1
  210. package/dist/web/routes/webhook-routes.d.ts +21 -0
  211. package/dist/web/routes/webhook-routes.d.ts.map +1 -0
  212. package/dist/web/routes/webhook-routes.js +87 -0
  213. package/dist/web/routes/webhook-routes.js.map +1 -0
  214. package/dist/web/schemas.d.ts +48 -2
  215. package/dist/web/schemas.d.ts.map +1 -1
  216. package/dist/web/schemas.js +71 -0
  217. package/dist/web/schemas.js.map +1 -1
  218. package/dist/web/server.d.ts +4 -0
  219. package/dist/web/server.d.ts.map +1 -1
  220. package/dist/web/server.js +57 -25
  221. package/dist/web/server.js.map +1 -1
  222. package/dist/webhook-notify.d.ts +71 -0
  223. package/dist/webhook-notify.d.ts.map +1 -0
  224. package/dist/webhook-notify.js +282 -0
  225. package/dist/webhook-notify.js.map +1 -0
  226. package/package.json +2 -1
  227. package/skills/codeman/SKILL.md +26 -8
  228. package/skills/codeman/preamble.sh +16 -4
  229. package/skills/codeman/reference/endpoints.md +11 -3
  230. package/skills/codeman/reference/recipes.md +1 -1
  231. package/skills/codeman/reference/verbs.md +3 -0
  232. package/dist/web/public/app.0879466b.js +0 -43
  233. package/dist/web/public/app.0879466b.js.br +0 -0
  234. package/dist/web/public/app.0879466b.js.gz +0 -0
  235. package/dist/web/public/i18n.7f8be985.js +0 -1
  236. package/dist/web/public/i18n.7f8be985.js.br +0 -0
  237. package/dist/web/public/i18n.7f8be985.js.gz +0 -0
  238. package/dist/web/public/ralph-wizard.13a1831e.js.br +0 -0
  239. package/dist/web/public/session-ui.7575a231.js +0 -89
  240. package/dist/web/public/session-ui.7575a231.js.br +0 -0
  241. package/dist/web/public/session-ui.7575a231.js.gz +0 -0
  242. package/dist/web/public/settings-ui.c68e7f59.js +0 -95
  243. package/dist/web/public/settings-ui.c68e7f59.js.br +0 -0
  244. package/dist/web/public/settings-ui.c68e7f59.js.gz +0 -0
  245. package/dist/web/public/styles.f2b78b86.css +0 -1
  246. package/dist/web/public/styles.f2b78b86.css.br +0 -0
  247. package/dist/web/public/styles.f2b78b86.css.gz +0 -0
  248. package/dist/web/public/tab-rail-resize.dcdc5772.js.br +0 -0
  249. package/dist/web/public/tab-rail-resize.dcdc5772.js.gz +0 -0
  250. package/dist/web/public/terminal-ui.d5223c0e.js +0 -2
  251. package/dist/web/public/terminal-ui.d5223c0e.js.br +0 -0
  252. package/dist/web/public/terminal-ui.d5223c0e.js.gz +0 -0
  253. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js +0 -4
  254. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.br +0 -0
  255. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
@@ -6,13 +6,17 @@
6
6
  * Key exports:
7
7
  * - PushSubscriptionRecord — a registered push endpoint with per-event preferences
8
8
  * - VapidKeys — VAPID key pair (public + private) for Web Push authentication
9
+ * - WebhookConfig, WebhookStatus, WebhookResult (+ the kind/scope lists): the webhook channel
10
+ * (ntfy, Slack, Discord, generic JSON) that carries the same events as Web Push
9
11
  *
10
12
  * Persistence:
11
13
  * - VAPID keys: `~/.codeman/push-keys.json` (auto-generated on first use)
12
14
  * - Subscriptions: `~/.codeman/push-subscriptions.json` (expired auto-cleaned on 410/404)
15
+ * - Webhook: `~/.codeman/webhook.json` (mode 0600; the URL is a bearer secret)
13
16
  *
14
- * Managed by PushStore (`src/push-store.ts`). Served at `GET /api/push/vapid-key`,
15
- * `POST /api/push/subscribe`. No dependencies on other domain modules.
17
+ * Push is managed by PushStore (`src/push-store.ts`), served at `GET /api/push/vapid-key`,
18
+ * `POST /api/push/subscribe`. The webhook is managed by `src/webhook-notify.ts`, served at
19
+ * `GET`/`PUT /api/webhook` and `POST /api/webhook/test`. No dependencies on other domain modules.
16
20
  */
17
21
  /** A registered push subscription */
18
22
  export interface PushSubscriptionRecord {
@@ -33,4 +37,35 @@ export interface VapidKeys {
33
37
  privateKey: string;
34
38
  generatedAt: number;
35
39
  }
40
+ /** Services the webhook channel can format a message for. */
41
+ export declare const WEBHOOK_KINDS: readonly ["ntfy", "slack", "discord", "generic"];
42
+ export type WebhookKind = (typeof WEBHOOK_KINDS)[number];
43
+ /** `attention`: only events that need a human (critical / warning). `all`: also "response complete". */
44
+ export declare const WEBHOOK_SCOPES: readonly ["attention", "all"];
45
+ export type WebhookScope = (typeof WEBHOOK_SCOPES)[number];
46
+ export type WebhookUrgency = 'critical' | 'warning' | 'info';
47
+ /** The stored webhook config (`~/.codeman/webhook.json`). `url` is a secret and is never returned. */
48
+ export interface WebhookConfig {
49
+ enabled: boolean;
50
+ kind: WebhookKind;
51
+ url: string;
52
+ scope: WebhookScope;
53
+ }
54
+ /** One delivery attempt. `error` never contains the URL. */
55
+ export interface WebhookResult {
56
+ ok: boolean;
57
+ status?: number;
58
+ error?: string;
59
+ at: number;
60
+ }
61
+ /** `GET /api/webhook`: the config without its URL, plus the last delivery result. */
62
+ export interface WebhookStatus {
63
+ enabled: boolean;
64
+ kind: WebhookKind;
65
+ scope: WebhookScope;
66
+ hasUrl: boolean;
67
+ /** Scheme + host only; the path and query are the secret. */
68
+ urlMasked: string;
69
+ lastResult: WebhookResult | null;
70
+ }
36
71
  //# sourceMappingURL=push.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/types/push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,qCAAqC;AACrC,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,kCAAkC;AAClC,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/types/push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qCAAqC;AACrC,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,kCAAkC;AAClC,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,eAAO,MAAM,aAAa,kDAAmD,CAAC;AAC9E,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,wGAAwG;AACxG,eAAO,MAAM,cAAc,+BAAgC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7D,sGAAsG;AACtG,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,aAAa,GAAG,IAAI,CAAC;CAClC"}
@@ -6,13 +6,20 @@
6
6
  * Key exports:
7
7
  * - PushSubscriptionRecord — a registered push endpoint with per-event preferences
8
8
  * - VapidKeys — VAPID key pair (public + private) for Web Push authentication
9
+ * - WebhookConfig, WebhookStatus, WebhookResult (+ the kind/scope lists): the webhook channel
10
+ * (ntfy, Slack, Discord, generic JSON) that carries the same events as Web Push
9
11
  *
10
12
  * Persistence:
11
13
  * - VAPID keys: `~/.codeman/push-keys.json` (auto-generated on first use)
12
14
  * - Subscriptions: `~/.codeman/push-subscriptions.json` (expired auto-cleaned on 410/404)
15
+ * - Webhook: `~/.codeman/webhook.json` (mode 0600; the URL is a bearer secret)
13
16
  *
14
- * Managed by PushStore (`src/push-store.ts`). Served at `GET /api/push/vapid-key`,
15
- * `POST /api/push/subscribe`. No dependencies on other domain modules.
17
+ * Push is managed by PushStore (`src/push-store.ts`), served at `GET /api/push/vapid-key`,
18
+ * `POST /api/push/subscribe`. The webhook is managed by `src/webhook-notify.ts`, served at
19
+ * `GET`/`PUT /api/webhook` and `POST /api/webhook/test`. No dependencies on other domain modules.
16
20
  */
17
- export {};
21
+ /** Services the webhook channel can format a message for. */
22
+ export const WEBHOOK_KINDS = ['ntfy', 'slack', 'discord', 'generic'];
23
+ /** `attention`: only events that need a human (critical / warning). `all`: also "response complete". */
24
+ export const WEBHOOK_SCOPES = ['attention', 'all'];
18
25
  //# sourceMappingURL=push.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/types/push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/types/push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAoBH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAG9E,wGAAwG;AACxG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,KAAK,CAAU,CAAC"}
@@ -12,7 +12,7 @@
12
12
  * - ClaudeMode — CLI permission mode ('dangerously-skip-permissions' | 'auto' | 'normal' | 'allowedTools')
13
13
  * - SessionColor — visual differentiation color
14
14
  * - OpenCodeConfig — OpenCode-specific settings (model, autoAllowTools, continueSession)
15
- * - CodexConfig — Codex (OpenAI CLI)-specific settings (model, resumeSessionId)
15
+ * - CodexConfig — Codex (OpenAI CLI)-specific settings (model, reasoningEffort, resumeSessionId, bypass, animations, renderMode)
16
16
  * - GeminiConfig — Gemini CLI-specific settings (model, approvalMode, resumeSession)
17
17
  * - AntigravityConfig — Antigravity CLI (agy) settings (model, dangerouslySkipPermissions, resumeConversationId)
18
18
  * - PiConfig — Pi CLI (pi.dev) settings (model, provider, thinking, resume/continue, project trust)
@@ -327,6 +327,26 @@ export declare const EFFORT_LEVELS: readonly ["low", "medium", "high", "xhigh",
327
327
  export type EffortLevel = (typeof EFFORT_LEVELS)[number];
328
328
  /** Type guard: is the string a valid EffortLevel? */
329
329
  export declare function isEffortLevel(value: string | undefined): value is EffortLevel;
330
+ /**
331
+ * Reasoning effort levels codex accepts as `model_reasoning_effort` (codex-cli 0.154.0).
332
+ * Which of them a given model honours is codex's business; Codeman only keeps the value
333
+ * to a known word, since it lands in the launch argv.
334
+ */
335
+ export declare const CODEX_REASONING_EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max", "ultra"];
336
+ /** Codex reasoning effort for a session, passed as `--config model_reasoning_effort=<level>` */
337
+ export type CodexReasoningEffort = (typeof CODEX_REASONING_EFFORTS)[number];
338
+ /**
339
+ * Model aliases Claude Code accepts for its advisor tool (a stronger model the session's
340
+ * main model consults at decision points; code.claude.com/docs/en/advisor). Haiku is left
341
+ * out on purpose: it can call an advisor but never act as one.
342
+ */
343
+ export declare const ADVISOR_MODEL_ALIASES: readonly ["fable", "opus", "sonnet"];
344
+ /**
345
+ * Type guard: is the value an advisor model Codeman will pass to claude? An alias from
346
+ * ADVISOR_MODEL_ALIASES or a full fable/opus/sonnet model id. ⚠️ This allowlist is also the
347
+ * injection guard: the value is rendered inside the single-quoted `--settings` JSON argument.
348
+ */
349
+ export declare function isAdvisorModel(value: unknown): value is string;
330
350
  /** OpenCode session configuration */
331
351
  export interface OpenCodeConfig {
332
352
  /** Model identifier (e.g., "anthropic/claude-sonnet-4-5", "openai/gpt-5.2", "ollama/codellama") */
@@ -346,6 +366,8 @@ export type CodexRenderMode = 'hybrid';
346
366
  export interface CodexConfig {
347
367
  /** Model identifier (e.g., "gpt-5", "o4-mini"). Passed via --model. */
348
368
  model?: string;
369
+ /** Reasoning effort for this session. Passed via --config model_reasoning_effort=<level>. */
370
+ reasoningEffort?: CodexReasoningEffort;
349
371
  /** Resume a previous codex conversation by session id (passed via --resume) */
350
372
  resumeSessionId?: string;
351
373
  /** Bypass approval prompts (passes --dangerously-bypass-approvals-and-sandbox) */
@@ -731,6 +753,17 @@ export interface SessionState {
731
753
  resumeSessionId?: string;
732
754
  /** Claude CLI effort level (soft default via --settings, switchable in-session via /effort) */
733
755
  effort?: EffortLevel;
756
+ /** Claude advisor model (`advisorModel` in the launch `--settings`, switchable in-session via /advisor) */
757
+ advisorModel?: string;
758
+ /**
759
+ * The model the session was LAUNCHED with (`--model`): the caller's per-session `model`, or
760
+ * the app-wide default when there was none. Persisted so a recovered session relaunches on
761
+ * the same model rather than whatever the default is by then. Not `cliModel`, which is what
762
+ * the CLI's banner reports. Claude sessions only (`cliTakesSessionModel()`): every other CLI
763
+ * keeps its model in its own config object (`codexConfig.model` and so on), and this is
764
+ * absent for them.
765
+ */
766
+ model?: string;
734
767
  /**
735
768
  * Custom Model Endpoint Profiles (docs/custom-model-endpoints-plan.md): the custom
736
769
  * OpenAI-compatible endpoint (local or cloud) this session's CLI is currently pointed
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,iCAAiC;AACjC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,8BAA8B,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE7F,qDAAqD;AACrD,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,OAAO,GACP,UAAU,GACV,OAAO,GACP,QAAQ,GACR,aAAa,GACb,IAAI,GACJ,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElE,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,WAAW,EACX,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAC1G,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,WAAW,EACX,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAC1G,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE7D,+FAA+F;AAC/F,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sFAAsF;AACtF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gGAAgG;IAChG,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,gHAAgH;IAChH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4GAA4G;IAC5G,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6FAA6F;IAC7F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kGAAkG;IAClG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,kEAAkE;AAClE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC;IAC/B,qFAAqF;IACrF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,iEAAkE,CAAC;AAE7F,iGAAiG;AACjG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,WAAW,CAE7E;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,4FAA4F;AAC5F,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEvC,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,2FAA2F;IAC3F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2HAA2H;IAC3H,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,oCAAoC;AACpC,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,uHAAuH;IACvH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC3E,qGAAqG;IACrG,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,qGAAqG;IACrG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4GAA4G;IAC5G,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IACxE,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1G,MAAM,MAAM,8BAA8B,GAAG,UAAU,GAAG,UAAU,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,cAAc,EAAE,sBAAsB,CAAC;IACvC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,MAAM,EAAE,8BAA8B,CAAC;IACvC,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAClE,sFAAsF;IACtF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+GAA+G;IAC/G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,6BAA6B;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gHAAgH;IAChH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0GAA0G;IAC1G,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,mBAAmB;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iCAAiC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mCAAmC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,aAAa,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,mCAAmC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iEAAiE;IACjE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oEAAoE;IACpE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACnD;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  * - ClaudeMode — CLI permission mode ('dangerously-skip-permissions' | 'auto' | 'normal' | 'allowedTools')
13
13
  * - SessionColor — visual differentiation color
14
14
  * - OpenCodeConfig — OpenCode-specific settings (model, autoAllowTools, continueSession)
15
- * - CodexConfig — Codex (OpenAI CLI)-specific settings (model, resumeSessionId)
15
+ * - CodexConfig — Codex (OpenAI CLI)-specific settings (model, reasoningEffort, resumeSessionId, bypass, animations, renderMode)
16
16
  * - GeminiConfig — Gemini CLI-specific settings (model, approvalMode, resumeSession)
17
17
  * - AntigravityConfig — Antigravity CLI (agy) settings (model, dangerouslySkipPermissions, resumeConversationId)
18
18
  * - PiConfig — Pi CLI (pi.dev) settings (model, provider, thinking, resume/continue, project trust)
@@ -39,6 +39,30 @@ export const EFFORT_LEVELS = ['low', 'medium', 'high', 'xhigh', 'max', 'ultracod
39
39
  export function isEffortLevel(value) {
40
40
  return value !== undefined && EFFORT_LEVELS.includes(value);
41
41
  }
42
+ /**
43
+ * Reasoning effort levels codex accepts as `model_reasoning_effort` (codex-cli 0.154.0).
44
+ * Which of them a given model honours is codex's business; Codeman only keeps the value
45
+ * to a known word, since it lands in the launch argv.
46
+ */
47
+ export const CODEX_REASONING_EFFORTS = ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'];
48
+ /**
49
+ * Model aliases Claude Code accepts for its advisor tool (a stronger model the session's
50
+ * main model consults at decision points; code.claude.com/docs/en/advisor). Haiku is left
51
+ * out on purpose: it can call an advisor but never act as one.
52
+ */
53
+ export const ADVISOR_MODEL_ALIASES = ['fable', 'opus', 'sonnet'];
54
+ /** A full model id in one of the advisor-capable families, e.g. `claude-opus-5-5`. */
55
+ const ADVISOR_MODEL_ID_PATTERN = /^claude-(?:fable|opus|sonnet)-[a-z0-9]+(?:-[a-z0-9]+)*$/;
56
+ /**
57
+ * Type guard: is the value an advisor model Codeman will pass to claude? An alias from
58
+ * ADVISOR_MODEL_ALIASES or a full fable/opus/sonnet model id. ⚠️ This allowlist is also the
59
+ * injection guard: the value is rendered inside the single-quoted `--settings` JSON argument.
60
+ */
61
+ export function isAdvisorModel(value) {
62
+ if (typeof value !== 'string' || value.length > 64)
63
+ return false;
64
+ return ADVISOR_MODEL_ALIASES.includes(value) || ADVISOR_MODEL_ID_PATTERN.test(value);
65
+ }
42
66
  /**
43
67
  * Output captured from a session
44
68
  */
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA8UH;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAK7F,qDAAqD;AACrD,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAO,KAAK,KAAK,SAAS,IAAK,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrF,CAAC;AAudD;;GAEG"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA8UH;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAK7F,qDAAqD;AACrD,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAO,KAAK,KAAK,SAAS,IAAK,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAU,CAAC;AAKtH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAE1E,sFAAsF;AACtF,MAAM,wBAAwB,GAAG,yDAAyD,CAAC;AAE3F;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IACjE,OAAQ,qBAA2C,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9G,CAAC;AAoeD;;GAEG"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @fileoverview Bounded existence probe for user-chosen paths.
3
+ *
4
+ * A linked case can live on a network mount (NFS, SMB, sshfs). When that mount
5
+ * goes unreachable, a hard mount makes `stat()` wait forever. A synchronous
6
+ * probe (`existsSync`) on such a path blocks the event loop and freezes the
7
+ * whole web server; even an async `stat()` never settles and permanently holds
8
+ * one of libuv's few threadpool workers, which every other `fs`, `dns.lookup`
9
+ * and `crypto` call in the process shares.
10
+ *
11
+ * The probe therefore answers one of THREE things, never two:
12
+ * - `'present'` / `'absent'`: the filesystem answered (ENOENT and ENOTDIR are
13
+ * the only errors that mean absent);
14
+ * - `'unknown'`: it did not answer in `PATH_PROBE_TIMEOUT_MS`, it answered with
15
+ * some other error (EIO from a soft mount that gave up, EACCES), or the probe
16
+ * was refused (below). "Unknown" is NOT "absent": a caller that would create,
17
+ * scaffold or 404 on absence must not do so on unknown.
18
+ *
19
+ * And it keeps a dead mount from draining the threadpool:
20
+ * - one in-flight probe per path, shared by concurrent callers;
21
+ * - a path whose probe timed out is "stalled" until that stat finally settles.
22
+ * Paths NEAR a stalled one are answered "unknown" without a new stat, so one
23
+ * dead mount costs one worker, not one per case and file on it. "Near" means on
24
+ * the same mount when that mount is a network or FUSE filesystem (NFS, SMB,
25
+ * sshfs and the like): under the deepest mount point holding the stalled path,
26
+ * with its type, read from `/proc/self/mounts` (procfs, which never waits on the
27
+ * dead filesystem). Otherwise it narrows to the stalled path and everything under
28
+ * it: when the deepest mount is local (a path typed under a local `/home` can
29
+ * reach a NAS through a symlink, and must not take the rest of `/home` with it),
30
+ * is `/`, or the table is unavailable (not Linux). Unrelated paths are probed
31
+ * normally;
32
+ * - once `MAX_STALLED_PATH_PROBES` stalled stats are pending, new probes are
33
+ * refused process-wide (answered "unknown"), since each would risk another
34
+ * worker. Probes merely in flight do not count, so concurrent healthy probes
35
+ * never get refused. A caller acting on ONE path at a user's explicit request
36
+ * (opening a case, starting a session in it) may pass `{ pastCap: true }`: its
37
+ * probe is still bounded and still recorded as stalled if it hangs (so a dead
38
+ * path costs at most one worker however often it is retried), but it is not
39
+ * refused just because unrelated mounts are dead. Bulk scans (the case list)
40
+ * keep the cap; the per-spawn hook and statusLine helpers retry one refused
41
+ * probe past it and then skip a path that still answers "unknown", rather than
42
+ * touch it with an unbounded call. `pastCap` still stops at
43
+ * `PATH_PROBE_STALL_CEILING` (the threadpool size minus one), so explicit
44
+ * requests against several dead paths can never take the last worker.
45
+ *
46
+ * Both events are logged once (`console.warn`): a path's first stall, and the
47
+ * cap engaging, so "my case vanished" and "hooks stopped firing" leave a trace.
48
+ *
49
+ * Writers should not use this at all: a writer that must tell "missing" apart
50
+ * from "unreachable" wants an ENOENT-aware async `lstat` (see
51
+ * `pathExistsForWrite` in hooks-config.ts).
52
+ *
53
+ * @module utils/bounded-path-probe
54
+ */
55
+ /** What a probe could establish about a path. */
56
+ export type PathProbeState = 'present' | 'absent' | 'unknown';
57
+ /** Like {@link PathProbeState}, with "present" split by whether it is a directory. */
58
+ export type PathProbeKind = 'directory' | 'file' | 'absent' | 'unknown';
59
+ /**
60
+ * Whether `path` is near a path whose probe is still stalled (see the module
61
+ * comment), i.e. whether the probe would answer "unknown" for it without a stat.
62
+ * Lets a caller tell "this workspace sits on the dead mount" apart from "the
63
+ * probe was refused for capacity".
64
+ */
65
+ export declare function isNearStalledPath(path: string): boolean;
66
+ /** Options for {@link probePathKind} / {@link probePath}. */
67
+ export interface PathProbeOptions {
68
+ /** Probe even while the stall cap is engaged (see the module comment). */
69
+ pastCap?: boolean;
70
+ }
71
+ /**
72
+ * Probe `path` without letting an unresponsive filesystem block the caller for
73
+ * longer than `PATH_PROBE_TIMEOUT_MS`. Follows symlinks, like `stat()`.
74
+ */
75
+ export declare function probePathKind(path: string, options?: PathProbeOptions): Promise<PathProbeKind>;
76
+ /**
77
+ * Why a probe of `path` answers "unknown" right now: its mount is not answering
78
+ * (`'stalled'`, it is near a stalled probe), new probes are refused because enough
79
+ * UNRELATED paths are stalled (`'refused'`; `pastCap` picks which limit applies), or
80
+ * neither, so the filesystem answered with an error such as EACCES or EIO
81
+ * (`'unreadable'`). For messages only: it reads the state now, not at probe time.
82
+ */
83
+ export declare function unknownPathReason(path: string, options?: PathProbeOptions): 'stalled' | 'refused' | 'unreadable';
84
+ /**
85
+ * User-facing sentence for an "unknown" probe of `path` (`label` names it, e.g.
86
+ * "workingDir"). A refused probe says so, rather than blaming a folder that was never
87
+ * checked: at the ceiling every new folder reads "unknown" until a dead mount answers.
88
+ */
89
+ export declare function describeUnknownPath(label: string, path: string, options?: PathProbeOptions): string;
90
+ /** Tri-state probe of `path`; see the module comment for what "unknown" means. */
91
+ export declare function probePath(path: string, options?: PathProbeOptions): Promise<PathProbeState>;
92
+ /**
93
+ * `true` only when `path` is known to exist. For DISPLAY decisions only (does a
94
+ * case have a CLAUDE.md): it folds "unknown" into `false`, so never use it to
95
+ * decide that something is absent and may be created, scaffolded or reported
96
+ * missing; use {@link probePath} for that.
97
+ */
98
+ export declare function boundedPathExists(path: string): Promise<boolean>;
99
+ //# sourceMappingURL=bounded-path-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-path-probe.d.ts","sourceRoot":"","sources":["../../src/utils/bounded-path-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAOH,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9D,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAsExE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMvD;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAgDxG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAIpH;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAKvG;AAED,kFAAkF;AAClF,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAGrG;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * @fileoverview Bounded existence probe for user-chosen paths.
3
+ *
4
+ * A linked case can live on a network mount (NFS, SMB, sshfs). When that mount
5
+ * goes unreachable, a hard mount makes `stat()` wait forever. A synchronous
6
+ * probe (`existsSync`) on such a path blocks the event loop and freezes the
7
+ * whole web server; even an async `stat()` never settles and permanently holds
8
+ * one of libuv's few threadpool workers, which every other `fs`, `dns.lookup`
9
+ * and `crypto` call in the process shares.
10
+ *
11
+ * The probe therefore answers one of THREE things, never two:
12
+ * - `'present'` / `'absent'`: the filesystem answered (ENOENT and ENOTDIR are
13
+ * the only errors that mean absent);
14
+ * - `'unknown'`: it did not answer in `PATH_PROBE_TIMEOUT_MS`, it answered with
15
+ * some other error (EIO from a soft mount that gave up, EACCES), or the probe
16
+ * was refused (below). "Unknown" is NOT "absent": a caller that would create,
17
+ * scaffold or 404 on absence must not do so on unknown.
18
+ *
19
+ * And it keeps a dead mount from draining the threadpool:
20
+ * - one in-flight probe per path, shared by concurrent callers;
21
+ * - a path whose probe timed out is "stalled" until that stat finally settles.
22
+ * Paths NEAR a stalled one are answered "unknown" without a new stat, so one
23
+ * dead mount costs one worker, not one per case and file on it. "Near" means on
24
+ * the same mount when that mount is a network or FUSE filesystem (NFS, SMB,
25
+ * sshfs and the like): under the deepest mount point holding the stalled path,
26
+ * with its type, read from `/proc/self/mounts` (procfs, which never waits on the
27
+ * dead filesystem). Otherwise it narrows to the stalled path and everything under
28
+ * it: when the deepest mount is local (a path typed under a local `/home` can
29
+ * reach a NAS through a symlink, and must not take the rest of `/home` with it),
30
+ * is `/`, or the table is unavailable (not Linux). Unrelated paths are probed
31
+ * normally;
32
+ * - once `MAX_STALLED_PATH_PROBES` stalled stats are pending, new probes are
33
+ * refused process-wide (answered "unknown"), since each would risk another
34
+ * worker. Probes merely in flight do not count, so concurrent healthy probes
35
+ * never get refused. A caller acting on ONE path at a user's explicit request
36
+ * (opening a case, starting a session in it) may pass `{ pastCap: true }`: its
37
+ * probe is still bounded and still recorded as stalled if it hangs (so a dead
38
+ * path costs at most one worker however often it is retried), but it is not
39
+ * refused just because unrelated mounts are dead. Bulk scans (the case list)
40
+ * keep the cap; the per-spawn hook and statusLine helpers retry one refused
41
+ * probe past it and then skip a path that still answers "unknown", rather than
42
+ * touch it with an unbounded call. `pastCap` still stops at
43
+ * `PATH_PROBE_STALL_CEILING` (the threadpool size minus one), so explicit
44
+ * requests against several dead paths can never take the last worker.
45
+ *
46
+ * Both events are logged once (`console.warn`): a path's first stall, and the
47
+ * cap engaging, so "my case vanished" and "hooks stopped firing" leave a trace.
48
+ *
49
+ * Writers should not use this at all: a writer that must tell "missing" apart
50
+ * from "unreachable" wants an ENOENT-aware async `lstat` (see
51
+ * `pathExistsForWrite` in hooks-config.ts).
52
+ *
53
+ * @module utils/bounded-path-probe
54
+ */
55
+ import { readFileSync } from 'node:fs';
56
+ import fs from 'node:fs/promises';
57
+ import { resolve, sep } from 'node:path';
58
+ import { MAX_STALLED_PATH_PROBES, PATH_PROBE_STALL_CEILING, PATH_PROBE_TIMEOUT_MS } from '../config/path-probe.js';
59
+ const inFlight = new Map();
60
+ /** Stalled path -> the directory whose subtree is answered "unknown" while it stays stalled. */
61
+ const stalled = new Map();
62
+ let capWarned = false;
63
+ async function statKind(path) {
64
+ try {
65
+ return (await fs.stat(path)).isDirectory() ? 'directory' : 'file';
66
+ }
67
+ catch (err) {
68
+ const code = err?.code;
69
+ return code === 'ENOENT' || code === 'ENOTDIR' ? 'absent' : 'unknown';
70
+ }
71
+ }
72
+ function isWithin(path, root) {
73
+ if (path === root)
74
+ return true;
75
+ return path.startsWith(root.endsWith(sep) ? root : root + sep);
76
+ }
77
+ /** Filesystem types whose stall means the whole mount is gone (network and FUSE). */
78
+ const REMOTE_FS_TYPES = new Set([
79
+ 'nfs',
80
+ 'nfs4',
81
+ 'cifs',
82
+ 'smb3',
83
+ 'smbfs',
84
+ '9p',
85
+ 'ceph',
86
+ 'glusterfs',
87
+ 'afs',
88
+ 'lustre',
89
+ 'davfs',
90
+ ]);
91
+ function isRemoteFsType(fsType) {
92
+ return REMOTE_FS_TYPES.has(fsType) || fsType.startsWith('fuse.');
93
+ }
94
+ /** Deepest mount holding `abs`, from the kernel's mount table; undefined when unreadable. */
95
+ function mountOf(abs) {
96
+ let table;
97
+ try {
98
+ table = readFileSync('/proc/self/mounts', 'utf-8');
99
+ }
100
+ catch {
101
+ return undefined;
102
+ }
103
+ let best;
104
+ for (const line of table.split('\n')) {
105
+ const [, field, fsType] = line.split(' ');
106
+ if (!field || !fsType)
107
+ continue;
108
+ // The table octal-escapes space, tab, newline and backslash in mount points.
109
+ const mountPoint = field.replace(/\\([0-7]{3})/g, (_m, oct) => String.fromCharCode(parseInt(oct, 8)));
110
+ if (isWithin(abs, mountPoint) && (!best || mountPoint.length > best.mountPoint.length)) {
111
+ best = { mountPoint, fsType };
112
+ }
113
+ }
114
+ return best;
115
+ }
116
+ /**
117
+ * The subtree a stalled path takes down with it (see the module comment): its
118
+ * mount when that is a network or FUSE filesystem, else just the path itself.
119
+ */
120
+ function stallScope(abs) {
121
+ const mount = mountOf(abs);
122
+ return mount && mount.mountPoint !== '/' && isRemoteFsType(mount.fsType) ? mount.mountPoint : abs;
123
+ }
124
+ /**
125
+ * Whether `path` is near a path whose probe is still stalled (see the module
126
+ * comment), i.e. whether the probe would answer "unknown" for it without a stat.
127
+ * Lets a caller tell "this workspace sits on the dead mount" apart from "the
128
+ * probe was refused for capacity".
129
+ */
130
+ export function isNearStalledPath(path) {
131
+ const abs = resolve(path);
132
+ for (const scope of stalled.values()) {
133
+ if (isWithin(abs, scope))
134
+ return true;
135
+ }
136
+ return false;
137
+ }
138
+ /**
139
+ * Probe `path` without letting an unresponsive filesystem block the caller for
140
+ * longer than `PATH_PROBE_TIMEOUT_MS`. Follows symlinks, like `stat()`.
141
+ */
142
+ export async function probePathKind(path, options = {}) {
143
+ const abs = resolve(path);
144
+ if (isNearStalledPath(abs))
145
+ return 'unknown';
146
+ let probe = inFlight.get(abs);
147
+ if (!probe) {
148
+ // pastCap lifts the bulk cap, never the ceiling that keeps one worker free.
149
+ if (stalled.size >= (options.pastCap ? PATH_PROBE_STALL_CEILING : MAX_STALLED_PATH_PROBES)) {
150
+ if (!capWarned) {
151
+ capWarned = true;
152
+ console.warn(`[path-probe] ${stalled.size} path probes are stalled on unresponsive filesystems; ` +
153
+ 'not starting new ones until one answers (paths read as unknown meanwhile)');
154
+ }
155
+ return 'unknown';
156
+ }
157
+ probe = statKind(abs);
158
+ const started = probe;
159
+ inFlight.set(abs, started);
160
+ void started.finally(() => {
161
+ inFlight.delete(abs);
162
+ stalled.delete(abs);
163
+ if (stalled.size < MAX_STALLED_PATH_PROBES)
164
+ capWarned = false;
165
+ });
166
+ }
167
+ let timer;
168
+ try {
169
+ return await Promise.race([
170
+ probe,
171
+ new Promise((resolveTimeout) => {
172
+ timer = setTimeout(() => {
173
+ if (inFlight.get(abs) === probe && !stalled.has(abs)) {
174
+ stalled.set(abs, stallScope(abs));
175
+ console.warn(`[path-probe] ${abs} did not answer within ${PATH_PROBE_TIMEOUT_MS} ms ` +
176
+ '(unreachable mount?); treating it and its neighbours as unknown until it does');
177
+ }
178
+ resolveTimeout('unknown');
179
+ }, PATH_PROBE_TIMEOUT_MS);
180
+ timer.unref?.();
181
+ }),
182
+ ]);
183
+ }
184
+ finally {
185
+ if (timer)
186
+ clearTimeout(timer);
187
+ }
188
+ }
189
+ /**
190
+ * Why a probe of `path` answers "unknown" right now: its mount is not answering
191
+ * (`'stalled'`, it is near a stalled probe), new probes are refused because enough
192
+ * UNRELATED paths are stalled (`'refused'`; `pastCap` picks which limit applies), or
193
+ * neither, so the filesystem answered with an error such as EACCES or EIO
194
+ * (`'unreadable'`). For messages only: it reads the state now, not at probe time.
195
+ */
196
+ export function unknownPathReason(path, options = {}) {
197
+ if (isNearStalledPath(path))
198
+ return 'stalled';
199
+ if (stalled.size >= (options.pastCap ? PATH_PROBE_STALL_CEILING : MAX_STALLED_PATH_PROBES))
200
+ return 'refused';
201
+ return 'unreadable';
202
+ }
203
+ /**
204
+ * User-facing sentence for an "unknown" probe of `path` (`label` names it, e.g.
205
+ * "workingDir"). A refused probe says so, rather than blaming a folder that was never
206
+ * checked: at the ceiling every new folder reads "unknown" until a dead mount answers.
207
+ */
208
+ export function describeUnknownPath(label, path, options = {}) {
209
+ return unknownPathReason(path, options) === 'refused'
210
+ ? `${label} was not checked: folders on other unreachable mounts are still not answering, ` +
211
+ `so Codeman is not checking new folders until one does (see the server log): ${path}`
212
+ : `${label} is not responding or not readable: ${path}`;
213
+ }
214
+ /** Tri-state probe of `path`; see the module comment for what "unknown" means. */
215
+ export async function probePath(path, options = {}) {
216
+ const kind = await probePathKind(path, options);
217
+ return kind === 'directory' || kind === 'file' ? 'present' : kind;
218
+ }
219
+ /**
220
+ * `true` only when `path` is known to exist. For DISPLAY decisions only (does a
221
+ * case have a CLAUDE.md): it folds "unknown" into `false`, so never use it to
222
+ * decide that something is absent and may be created, scaffolded or reported
223
+ * missing; use {@link probePath} for that.
224
+ */
225
+ export async function boundedPathExists(path) {
226
+ return (await probePath(path)) === 'present';
227
+ }
228
+ //# sourceMappingURL=bounded-path-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-path-probe.js","sourceRoot":"","sources":["../../src/utils/bounded-path-probe.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,8 @@ export interface ProductionCliResolverHostOptions {
86
86
  */
87
87
  allowRealIoUnderVitest?: boolean;
88
88
  }
89
+ /** An executable regular file. Exported for `codeman doctor`, which must judge a candidate the same way. */
90
+ export declare function isExecutableRegularFile(path: string): boolean;
89
91
  export declare function createProductionCliResolverHost(options?: ProductionCliResolverHostOptions): CliResolverHost;
90
92
  /**
91
93
  * Forget every cached result — success and negative-cache backoff alike — for these
@@ -1 +1 @@
1
- {"version":3,"file":"cli-executable-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/cli-executable-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-executable-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/cli-executable-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAwBH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAEtF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,CAAC;CACd;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,SAAS;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,SAAS;IAClD,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnC,WAAW,IAAI,wBAAwB,CAAC;CACzC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,UAAU,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,yBAAyB,KAAK,MAAM,CAAC;AAEpH,MAAM,WAAW,gCAAgC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,4GAA4G;AAC5G,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAuBD,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,gCAAqC,GAAG,eAAe,CAiD/G;AAaD;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAElF;AAED,wBAAgB,2BAA2B,CAAC,CAAC,GAAG,SAAS,EACvD,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC7D,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,EACD,IAAI,GAAE,eAAmD,GACxD,qBAAqB,CAAC,CAAC,CAAC,CAwE1B;AAgBD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,GAAG,MAAM,CAQpG"}
@@ -58,7 +58,8 @@ export function cliResolveRetryDelayMs(failures) {
58
58
  return 0;
59
59
  return Math.min(RESOLVE_RETRY_BASE_MS * 2 ** (failures - 1), RESOLVE_RETRY_MAX_MS);
60
60
  }
61
- function isExecutableRegularFile(path) {
61
+ /** An executable regular file. Exported for `codeman doctor`, which must judge a candidate the same way. */
62
+ export function isExecutableRegularFile(path) {
62
63
  try {
63
64
  if (!statSync(path).isFile())
64
65
  return false;