@pentoshi/clai 3.9.2 → 3.9.3

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 (331) hide show
  1. package/dist/agent/compaction-attempt.d.ts +22 -0
  2. package/dist/agent/compaction-attempt.js +69 -0
  3. package/dist/agent/compaction-attempt.js.map +1 -0
  4. package/dist/agent/compaction-summary.d.ts +27 -0
  5. package/dist/agent/compaction-summary.js +62 -0
  6. package/dist/agent/compaction-summary.js.map +1 -1
  7. package/dist/agent/context-breakdown.d.ts +2 -0
  8. package/dist/agent/context-breakdown.js +37 -0
  9. package/dist/agent/context-breakdown.js.map +1 -1
  10. package/dist/agent/context-manager.d.ts +7 -1
  11. package/dist/agent/context-manager.js +64 -15
  12. package/dist/agent/context-manager.js.map +1 -1
  13. package/dist/agent/continue-orient.d.ts +8 -0
  14. package/dist/agent/continue-orient.js +26 -3
  15. package/dist/agent/continue-orient.js.map +1 -1
  16. package/dist/agent/durable-envelope.d.ts +39 -0
  17. package/dist/agent/durable-envelope.js +195 -0
  18. package/dist/agent/durable-envelope.js.map +1 -0
  19. package/dist/agent/events.d.ts +21 -0
  20. package/dist/agent/loop-guard.d.ts +13 -5
  21. package/dist/agent/loop-guard.js +114 -1
  22. package/dist/agent/loop-guard.js.map +1 -1
  23. package/dist/agent/outcomes.d.ts +29 -0
  24. package/dist/agent/outcomes.js +118 -3
  25. package/dist/agent/outcomes.js.map +1 -1
  26. package/dist/agent/plan-decision.js +8 -3
  27. package/dist/agent/plan-decision.js.map +1 -1
  28. package/dist/agent/plan-tool.d.ts +5 -0
  29. package/dist/agent/plan-tool.js +166 -6
  30. package/dist/agent/plan-tool.js.map +1 -1
  31. package/dist/agent/reliability-policy.d.ts +11 -6
  32. package/dist/agent/reliability-policy.js +19 -13
  33. package/dist/agent/reliability-policy.js.map +1 -1
  34. package/dist/agent/request-budget.d.ts +24 -0
  35. package/dist/agent/request-budget.js +59 -0
  36. package/dist/agent/request-budget.js.map +1 -0
  37. package/dist/agent/responder-context.js +2 -2
  38. package/dist/agent/responder-context.js.map +1 -1
  39. package/dist/agent/responder-parent.d.ts +30 -0
  40. package/dist/agent/responder-parent.js +82 -0
  41. package/dist/agent/responder-parent.js.map +1 -0
  42. package/dist/agent/runner.d.ts +14 -1
  43. package/dist/agent/runner.js +759 -211
  44. package/dist/agent/runner.js.map +1 -1
  45. package/dist/agent/scope-context.d.ts +5 -0
  46. package/dist/agent/scope-context.js +7 -1
  47. package/dist/agent/scope-context.js.map +1 -1
  48. package/dist/agent/session-policy.js +1 -0
  49. package/dist/agent/session-policy.js.map +1 -1
  50. package/dist/agent/stop-summary.js +13 -7
  51. package/dist/agent/stop-summary.js.map +1 -1
  52. package/dist/agent/task-analyzer.js +7 -3
  53. package/dist/agent/task-analyzer.js.map +1 -1
  54. package/dist/agent/task-evidence.js +2 -0
  55. package/dist/agent/task-evidence.js.map +1 -1
  56. package/dist/agent/task-sync.d.ts +11 -0
  57. package/dist/agent/task-sync.js +31 -0
  58. package/dist/agent/task-sync.js.map +1 -1
  59. package/dist/agent/tool-call-parser.d.ts +6 -13
  60. package/dist/agent/tool-call-parser.js +186 -82
  61. package/dist/agent/tool-call-parser.js.map +1 -1
  62. package/dist/agent/tool-history.d.ts +8 -2
  63. package/dist/agent/tool-history.js +8 -1
  64. package/dist/agent/tool-history.js.map +1 -1
  65. package/dist/agent/turn-outcome.d.ts +4 -1
  66. package/dist/agent/turn-outcome.js +16 -2
  67. package/dist/agent/turn-outcome.js.map +1 -1
  68. package/dist/app/adapters/agent-event-adapter.js +27 -0
  69. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  70. package/dist/app/adapters/current-agent-adapter.js +1 -0
  71. package/dist/app/adapters/current-agent-adapter.js.map +1 -1
  72. package/dist/app/adapters/current-jobs-adapter.js +4 -3
  73. package/dist/app/adapters/current-jobs-adapter.js.map +1 -1
  74. package/dist/app/adapters/current-store-adapter.js +4 -3
  75. package/dist/app/adapters/current-store-adapter.js.map +1 -1
  76. package/dist/app/adapters/current-updates-adapter.d.ts +1 -1
  77. package/dist/app/adapters/current-updates-adapter.js +34 -5
  78. package/dist/app/adapters/current-updates-adapter.js.map +1 -1
  79. package/dist/app/adapters/quiet-meta-tools.js +2 -1
  80. package/dist/app/adapters/quiet-meta-tools.js.map +1 -1
  81. package/dist/app/controllers/job-controller.d.ts +4 -3
  82. package/dist/app/controllers/job-controller.js +9 -6
  83. package/dist/app/controllers/job-controller.js.map +1 -1
  84. package/dist/app/controllers/plan-controller.js +14 -0
  85. package/dist/app/controllers/plan-controller.js.map +1 -1
  86. package/dist/app/controllers/responder-settlement.js +2 -2
  87. package/dist/app/controllers/responder-settlement.js.map +1 -1
  88. package/dist/app/controllers/session-compact-helper.d.ts +23 -1
  89. package/dist/app/controllers/session-compact-helper.js +117 -7
  90. package/dist/app/controllers/session-compact-helper.js.map +1 -1
  91. package/dist/app/controllers/session-context-usage.d.ts +24 -0
  92. package/dist/app/controllers/session-context-usage.js +89 -0
  93. package/dist/app/controllers/session-context-usage.js.map +1 -0
  94. package/dist/app/controllers/session-controller.d.ts +17 -17
  95. package/dist/app/controllers/session-controller.js +122 -124
  96. package/dist/app/controllers/session-controller.js.map +1 -1
  97. package/dist/app/controllers/session-prompt-queue.d.ts +3 -0
  98. package/dist/app/controllers/session-prompt-queue.js +20 -1
  99. package/dist/app/controllers/session-prompt-queue.js.map +1 -1
  100. package/dist/app/controllers/session-responder.js +16 -6
  101. package/dist/app/controllers/session-responder.js.map +1 -1
  102. package/dist/app/controllers/session-turn-request.d.ts +18 -0
  103. package/dist/app/controllers/session-turn-request.js +31 -0
  104. package/dist/app/controllers/session-turn-request.js.map +1 -0
  105. package/dist/app/controllers/turn-continuation.d.ts +14 -0
  106. package/dist/app/controllers/turn-continuation.js +46 -0
  107. package/dist/app/controllers/turn-continuation.js.map +1 -0
  108. package/dist/app/events/app-event.d.ts +21 -0
  109. package/dist/app/events/app-event.js +1 -0
  110. package/dist/app/events/app-event.js.map +1 -1
  111. package/dist/app/ports/agent-port.d.ts +7 -0
  112. package/dist/app/ports/jobs-port.d.ts +4 -3
  113. package/dist/app/ports/persistence-port.d.ts +11 -0
  114. package/dist/app/ports/updates-port.d.ts +8 -0
  115. package/dist/attachments/service.js +13 -2
  116. package/dist/attachments/service.js.map +1 -1
  117. package/dist/commands/providers.js +13 -10
  118. package/dist/commands/providers.js.map +1 -1
  119. package/dist/commands/update.d.ts +4 -0
  120. package/dist/commands/update.js +14 -0
  121. package/dist/commands/update.js.map +1 -1
  122. package/dist/llm/adapters/anthropic-tools.d.ts +14 -1
  123. package/dist/llm/adapters/anthropic-tools.js +36 -5
  124. package/dist/llm/adapters/anthropic-tools.js.map +1 -1
  125. package/dist/llm/adapters/gemini-tools.d.ts +3 -1
  126. package/dist/llm/adapters/gemini-tools.js +5 -2
  127. package/dist/llm/adapters/gemini-tools.js.map +1 -1
  128. package/dist/llm/adapters/ollama-tools.js +8 -3
  129. package/dist/llm/adapters/ollama-tools.js.map +1 -1
  130. package/dist/llm/adapters/openai-tools.js +8 -1
  131. package/dist/llm/adapters/openai-tools.js.map +1 -1
  132. package/dist/llm/agentrouter.js +2 -0
  133. package/dist/llm/agentrouter.js.map +1 -1
  134. package/dist/llm/anthropic.d.ts +8 -0
  135. package/dist/llm/anthropic.js +68 -9
  136. package/dist/llm/anthropic.js.map +1 -1
  137. package/dist/llm/aws-mantle.js +60 -12
  138. package/dist/llm/aws-mantle.js.map +1 -1
  139. package/dist/llm/bynara.js +2 -0
  140. package/dist/llm/bynara.js.map +1 -1
  141. package/dist/llm/capabilities.d.ts +7 -0
  142. package/dist/llm/capabilities.js +22 -0
  143. package/dist/llm/capabilities.js.map +1 -1
  144. package/dist/llm/gemini.d.ts +3 -0
  145. package/dist/llm/gemini.js +71 -11
  146. package/dist/llm/gemini.js.map +1 -1
  147. package/dist/llm/groq.d.ts +20 -1
  148. package/dist/llm/groq.js +32 -4
  149. package/dist/llm/groq.js.map +1 -1
  150. package/dist/llm/http.d.ts +29 -0
  151. package/dist/llm/http.js +122 -29
  152. package/dist/llm/http.js.map +1 -1
  153. package/dist/llm/kimchi.js +2 -0
  154. package/dist/llm/kimchi.js.map +1 -1
  155. package/dist/llm/nvidia.js +2 -0
  156. package/dist/llm/nvidia.js.map +1 -1
  157. package/dist/llm/ollama.d.ts +5 -0
  158. package/dist/llm/ollama.js +53 -6
  159. package/dist/llm/ollama.js.map +1 -1
  160. package/dist/llm/openai.js +2 -0
  161. package/dist/llm/openai.js.map +1 -1
  162. package/dist/llm/openrouter.js +2 -0
  163. package/dist/llm/openrouter.js.map +1 -1
  164. package/dist/llm/qwen-cloud.js +2 -0
  165. package/dist/llm/qwen-cloud.js.map +1 -1
  166. package/dist/llm/router.d.ts +16 -0
  167. package/dist/llm/router.js +79 -23
  168. package/dist/llm/router.js.map +1 -1
  169. package/dist/llm/sampling.d.ts +32 -0
  170. package/dist/llm/sampling.js +48 -0
  171. package/dist/llm/sampling.js.map +1 -0
  172. package/dist/llm/stream-progress.d.ts +4 -0
  173. package/dist/llm/stream-progress.js +43 -0
  174. package/dist/llm/stream-progress.js.map +1 -0
  175. package/dist/llm/system-messages.d.ts +29 -0
  176. package/dist/llm/system-messages.js +51 -0
  177. package/dist/llm/system-messages.js.map +1 -0
  178. package/dist/llm/token-usage.d.ts +4 -1
  179. package/dist/llm/token-usage.js +56 -4
  180. package/dist/llm/token-usage.js.map +1 -1
  181. package/dist/llm/tool-protocol.js +30 -0
  182. package/dist/llm/tool-protocol.js.map +1 -1
  183. package/dist/os/process-tree.d.ts +15 -0
  184. package/dist/os/process-tree.js +77 -0
  185. package/dist/os/process-tree.js.map +1 -0
  186. package/dist/prompts/embedded.js +1 -1
  187. package/dist/prompts/embedded.js.map +1 -1
  188. package/dist/prompts/system.agent.md +13 -12
  189. package/dist/repl/prompt-line.d.ts +5 -0
  190. package/dist/repl/prompt-line.js +7 -1
  191. package/dist/repl/prompt-line.js.map +1 -1
  192. package/dist/repl.js +61 -41
  193. package/dist/repl.js.map +1 -1
  194. package/dist/safety/classifier.js +98 -44
  195. package/dist/safety/classifier.js.map +1 -1
  196. package/dist/safety/engagement-policy.d.ts +8 -0
  197. package/dist/safety/engagement-policy.js +52 -7
  198. package/dist/safety/engagement-policy.js.map +1 -1
  199. package/dist/safety/patterns.d.ts +44 -0
  200. package/dist/safety/patterns.js +168 -37
  201. package/dist/safety/patterns.js.map +1 -1
  202. package/dist/store/config.d.ts +9 -1
  203. package/dist/store/config.js +51 -1
  204. package/dist/store/config.js.map +1 -1
  205. package/dist/store/history-index.d.ts +12 -0
  206. package/dist/store/history-index.js +47 -18
  207. package/dist/store/history-index.js.map +1 -1
  208. package/dist/store/history.d.ts +5 -2
  209. package/dist/store/history.js +153 -62
  210. package/dist/store/history.js.map +1 -1
  211. package/dist/store/plan.d.ts +81 -5
  212. package/dist/store/plan.js +406 -46
  213. package/dist/store/plan.js.map +1 -1
  214. package/dist/store/redaction-cache.d.ts +12 -0
  215. package/dist/store/redaction-cache.js +51 -0
  216. package/dist/store/redaction-cache.js.map +1 -0
  217. package/dist/store/responder-settlement.d.ts +5 -1
  218. package/dist/store/responder-settlement.js +42 -30
  219. package/dist/store/responder-settlement.js.map +1 -1
  220. package/dist/store/scope.js +36 -27
  221. package/dist/store/scope.js.map +1 -1
  222. package/dist/store/task-transitions.d.ts +19 -0
  223. package/dist/store/task-transitions.js +46 -0
  224. package/dist/store/task-transitions.js.map +1 -0
  225. package/dist/tools/capabilities.js +33 -18
  226. package/dist/tools/capabilities.js.map +1 -1
  227. package/dist/tools/command-intent.d.ts +24 -0
  228. package/dist/tools/command-intent.js +158 -4
  229. package/dist/tools/command-intent.js.map +1 -1
  230. package/dist/tools/definitions.d.ts +5 -1
  231. package/dist/tools/definitions.js +162 -21
  232. package/dist/tools/definitions.js.map +1 -1
  233. package/dist/tools/fs.d.ts +16 -0
  234. package/dist/tools/fs.js +122 -46
  235. package/dist/tools/fs.js.map +1 -1
  236. package/dist/tools/image.js +1 -1
  237. package/dist/tools/image.js.map +1 -1
  238. package/dist/tools/jobs.d.ts +78 -4
  239. package/dist/tools/jobs.js +542 -115
  240. package/dist/tools/jobs.js.map +1 -1
  241. package/dist/tools/net-ping-sweep.d.ts +3 -1
  242. package/dist/tools/net-ping-sweep.js +64 -26
  243. package/dist/tools/net-ping-sweep.js.map +1 -1
  244. package/dist/tools/nmap-runner.js +5 -2
  245. package/dist/tools/nmap-runner.js.map +1 -1
  246. package/dist/tools/pdf.js +50 -7
  247. package/dist/tools/pdf.js.map +1 -1
  248. package/dist/tools/registry.js +154 -96
  249. package/dist/tools/registry.js.map +1 -1
  250. package/dist/tools/shell.d.ts +24 -2
  251. package/dist/tools/shell.js +113 -28
  252. package/dist/tools/shell.js.map +1 -1
  253. package/dist/tools/tool-types.d.ts +2 -0
  254. package/dist/tools/validate.d.ts +8 -5
  255. package/dist/tools/validate.js +177 -7
  256. package/dist/tools/validate.js.map +1 -1
  257. package/dist/tools/wordlists.js +69 -17
  258. package/dist/tools/wordlists.js.map +1 -1
  259. package/dist/tui/state.d.ts +4 -0
  260. package/dist/tui/state.js +88 -2
  261. package/dist/tui/state.js.map +1 -1
  262. package/dist/tui-v2/actions/keymap.js +3 -8
  263. package/dist/tui-v2/actions/keymap.js.map +1 -1
  264. package/dist/tui-v2/app/App.js +52 -4
  265. package/dist/tui-v2/app/App.js.map +1 -1
  266. package/dist/tui-v2/app/commands/config-commands.js +5 -2
  267. package/dist/tui-v2/app/commands/config-commands.js.map +1 -1
  268. package/dist/tui-v2/app/commands/picker-commands.js +3 -0
  269. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
  270. package/dist/tui-v2/app/plan-lifecycle.d.ts +1 -1
  271. package/dist/tui-v2/app/plan-lifecycle.js +2 -1
  272. package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
  273. package/dist/tui-v2/components/composer/composer-input-box.d.ts +1 -1
  274. package/dist/tui-v2/components/composer/composer-input-box.js +12 -3
  275. package/dist/tui-v2/components/composer/composer-input-box.js.map +1 -1
  276. package/dist/tui-v2/components/jobs/jobs-panel.js +19 -6
  277. package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -1
  278. package/dist/tui-v2/components/plan/plan-view.js +9 -6
  279. package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
  280. package/dist/tui-v2/components/status/status-line.d.ts +15 -0
  281. package/dist/tui-v2/components/status/status-line.js +33 -25
  282. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  283. package/dist/tui-v2/components/transcript/assistant-message.js +17 -9
  284. package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
  285. package/dist/tui-v2/components/transcript/compacted-row.js +49 -22
  286. package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
  287. package/dist/tui-v2/components/transcript/intro-card.js +3 -0
  288. package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
  289. package/dist/tui-v2/components/transcript/thinking-block.js +2 -1
  290. package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
  291. package/dist/tui-v2/components/transcript/transcript-view.js +27 -2
  292. package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
  293. package/dist/tui-v2/components/transcript/use-transcript-selection.js +57 -6
  294. package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
  295. package/dist/tui-v2/composer/composer-editor.js +12 -6
  296. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  297. package/dist/tui-v2/rendering/incremental-strip.d.ts +11 -0
  298. package/dist/tui-v2/rendering/incremental-strip.js +89 -0
  299. package/dist/tui-v2/rendering/incremental-strip.js.map +1 -0
  300. package/dist/tui-v2/rendering/plan-view.d.ts +12 -0
  301. package/dist/tui-v2/rendering/plan-view.js +71 -2
  302. package/dist/tui-v2/rendering/plan-view.js.map +1 -1
  303. package/dist/tui-v2/rendering/streaming-markdown.d.ts +25 -0
  304. package/dist/tui-v2/rendering/streaming-markdown.js +108 -0
  305. package/dist/tui-v2/rendering/streaming-markdown.js.map +1 -0
  306. package/dist/tui-v2/rendering/thinking-tail.d.ts +5 -0
  307. package/dist/tui-v2/rendering/thinking-tail.js +26 -0
  308. package/dist/tui-v2/rendering/thinking-tail.js.map +1 -0
  309. package/dist/tui-v2/state/transcript-hydrate.js +6 -2
  310. package/dist/tui-v2/state/transcript-hydrate.js.map +1 -1
  311. package/dist/tui-v2/state/transcript-reducer.js +146 -25
  312. package/dist/tui-v2/state/transcript-reducer.js.map +1 -1
  313. package/dist/tui-v2/state/transcript-types.d.ts +6 -0
  314. package/dist/tui-v2/state/transcript-types.js +17 -0
  315. package/dist/tui-v2/state/transcript-types.js.map +1 -1
  316. package/dist/types.d.ts +29 -0
  317. package/dist/types.js.map +1 -1
  318. package/dist/ui/intro-header.d.ts +1 -0
  319. package/dist/ui/intro-header.js +10 -13
  320. package/dist/ui/intro-header.js.map +1 -1
  321. package/dist/ui/markdown.js +9 -2
  322. package/dist/ui/markdown.js.map +1 -1
  323. package/dist/ui/mentions.d.ts +5 -0
  324. package/dist/ui/mentions.js +66 -7
  325. package/dist/ui/mentions.js.map +1 -1
  326. package/dist/ui/thinking.d.ts +5 -1
  327. package/dist/ui/thinking.js +3 -2
  328. package/dist/ui/thinking.js.map +1 -1
  329. package/dist/version.generated.d.ts +2 -2
  330. package/dist/version.generated.js +2 -2
  331. package/package.json +2 -1
@@ -0,0 +1,48 @@
1
+ export const DEFAULT_SAMPLING = { temperature: 0.2 };
2
+ /** First match wins; order from most specific to least. */
3
+ const SAMPLING_RULES = [
4
+ // Kimchi exposes this as `minimax-m3`; NVIDIA uses `minimaxai/minimax-m3`.
5
+ // Both require near-full sampling or the model degenerates.
6
+ {
7
+ pattern: /minimax-m3/i,
8
+ defaults: { temperature: 1.0, topP: 0.95 },
9
+ },
10
+ // OpenAI's gpt-oss weights are trained for temperature 1.0.
11
+ { pattern: /gpt-oss/i, defaults: { temperature: 1.0 } },
12
+ // Thinking-mode recommendations from the model cards.
13
+ {
14
+ pattern: /qwen-?3|qwen3/i,
15
+ reasoningOnly: true,
16
+ defaults: { temperature: 0.6, topP: 0.95 },
17
+ },
18
+ {
19
+ pattern: /deepseek-r1|deepseek-v3/i,
20
+ reasoningOnly: true,
21
+ defaults: { temperature: 0.6, topP: 0.95 },
22
+ },
23
+ ];
24
+ export function samplingDefaults(input) {
25
+ for (const rule of SAMPLING_RULES) {
26
+ if (rule.reasoningOnly && !input.reasoningEnabled)
27
+ continue;
28
+ if (rule.providers &&
29
+ (!input.provider || !rule.providers.includes(input.provider))) {
30
+ continue;
31
+ }
32
+ if (rule.pattern.test(input.model))
33
+ return rule.defaults;
34
+ }
35
+ return DEFAULT_SAMPLING;
36
+ }
37
+ /**
38
+ * Effective sampling for a request: an explicit caller/user temperature always
39
+ * wins; `top_p` is only sent when the policy asks for it.
40
+ */
41
+ export function resolveSampling(input) {
42
+ const policy = samplingDefaults(input);
43
+ return {
44
+ temperature: input.requestedTemperature ?? policy.temperature,
45
+ ...(policy.topP !== undefined ? { topP: policy.topP } : {}),
46
+ };
47
+ }
48
+ //# sourceMappingURL=sampling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampling.js","sourceRoot":"","sources":["../../src/llm/sampling.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,gBAAgB,GAAqB,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;AAEvE,2DAA2D;AAC3D,MAAM,cAAc,GAAmB;IACrC,2EAA2E;IAC3E,4DAA4D;IAC5D;QACE,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;KAC3C;IACD,4DAA4D;IAC5D,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE;IACvD,sDAAsD;IACtD;QACE,OAAO,EAAE,gBAAgB;QACzB,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;KAC3C;IACD;QACE,OAAO,EAAE,0BAA0B;QACnC,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;KAC3C;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAIhC;IACC,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAAE,SAAS;QAC5D,IACE,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAC7D,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IAC3D,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAK/B;IACC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,oBAAoB,IAAI,MAAM,CAAC,WAAW;QAC7D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function markStreamEmittedBytes<E>(error: E, bytes: number): E;
2
+ export declare function streamEmittedBytes(error: unknown): number;
3
+ /** True when the failed attempt already delivered bytes to the caller. */
4
+ export declare function streamAlreadyEmitted(error: unknown): boolean;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Stream progress tagging.
3
+ *
4
+ * A retry is only transparent if nothing has been emitted yet. Once tokens have
5
+ * reached the caller's `onToken` sink (which the agent runner feeds into a
6
+ * single delta parser and a single assistant message), re-running the request
7
+ * appends a second copy of the answer — duplicated prose and, worse, duplicated
8
+ * or spliced tool-call JSON.
9
+ *
10
+ * Errors thrown after emission are tagged with the byte count so every retry
11
+ * decision (key rotation, provider fallback, the runner's recovery ladder) can
12
+ * refuse to retry transparently.
13
+ */
14
+ const EMITTED_BYTES = Symbol.for("clai.stream.emittedBytes");
15
+ export function markStreamEmittedBytes(error, bytes) {
16
+ if (bytes > 0 && typeof error === "object" && error !== null) {
17
+ try {
18
+ Object.defineProperty(error, EMITTED_BYTES, {
19
+ value: bytes,
20
+ enumerable: false,
21
+ configurable: true,
22
+ writable: true,
23
+ });
24
+ }
25
+ catch {
26
+ // Frozen error objects cannot be tagged; treat as no progress.
27
+ }
28
+ }
29
+ return error;
30
+ }
31
+ export function streamEmittedBytes(error) {
32
+ if (typeof error !== "object" || error === null)
33
+ return 0;
34
+ const value = error[EMITTED_BYTES];
35
+ return typeof value === "number" && Number.isFinite(value) && value > 0
36
+ ? value
37
+ : 0;
38
+ }
39
+ /** True when the failed attempt already delivered bytes to the caller. */
40
+ export function streamAlreadyEmitted(error) {
41
+ return streamEmittedBytes(error) > 0;
42
+ }
43
+ //# sourceMappingURL=stream-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-progress.js","sourceRoot":"","sources":["../../src/llm/stream-progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAE7D,MAAM,UAAU,sBAAsB,CAAI,KAAQ,EAAE,KAAa;IAC/D,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE;gBAC1C,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,KAAK;gBACjB,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAI,KAAiC,CAAC,aAAa,CAAC,CAAC;IAChE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QACrE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { ChatMessage } from "../types.js";
2
+ /**
3
+ * Marker prefix used when a mid-conversation `system` message has to be
4
+ * delivered as a user turn because the provider dialect only has a single
5
+ * top-level system field (Anthropic `system`, Gemini `systemInstruction`).
6
+ */
7
+ export declare const SYSTEM_TURN_MARKER = "[SYSTEM]";
8
+ /**
9
+ * One shared ordered normalization contract for dialects with a
10
+ * single system slot.
11
+ *
12
+ * The first system message becomes the dialect's system field. Every later
13
+ * system message (compaction memory, live plan, engagement scope, Responder
14
+ * ledger, loop-guard/progress steering) is preserved *in place* as a user turn
15
+ * tagged with {@link SYSTEM_TURN_MARKER}, so ordering relative to tool groups
16
+ * is untouched and nothing is silently dropped.
17
+ *
18
+ * The marker is applied exactly once: content that already carries it is
19
+ * passed through unchanged.
20
+ */
21
+ export declare function normalizeSystemMessages(messages: ChatMessage[]): {
22
+ /** Content of the first system message, if any. */
23
+ systemPrompt: string | undefined;
24
+ /** History with later system messages converted to marked user turns. */
25
+ rest: ChatMessage[];
26
+ };
27
+ export declare function markSystemTurn(content: string): string;
28
+ /** Content of the first system message, matching the dialect system field. */
29
+ export declare function firstSystemPrompt(messages: ChatMessage[]): string | undefined;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Marker prefix used when a mid-conversation `system` message has to be
3
+ * delivered as a user turn because the provider dialect only has a single
4
+ * top-level system field (Anthropic `system`, Gemini `systemInstruction`).
5
+ */
6
+ export const SYSTEM_TURN_MARKER = "[SYSTEM]";
7
+ /**
8
+ * One shared ordered normalization contract for dialects with a
9
+ * single system slot.
10
+ *
11
+ * The first system message becomes the dialect's system field. Every later
12
+ * system message (compaction memory, live plan, engagement scope, Responder
13
+ * ledger, loop-guard/progress steering) is preserved *in place* as a user turn
14
+ * tagged with {@link SYSTEM_TURN_MARKER}, so ordering relative to tool groups
15
+ * is untouched and nothing is silently dropped.
16
+ *
17
+ * The marker is applied exactly once: content that already carries it is
18
+ * passed through unchanged.
19
+ */
20
+ export function normalizeSystemMessages(messages) {
21
+ let systemPrompt;
22
+ let seenFirstSystem = false;
23
+ const rest = [];
24
+ for (const message of messages) {
25
+ if (message.role !== "system") {
26
+ rest.push(message);
27
+ continue;
28
+ }
29
+ if (!seenFirstSystem) {
30
+ seenFirstSystem = true;
31
+ systemPrompt = message.content;
32
+ continue;
33
+ }
34
+ rest.push({
35
+ ...message,
36
+ role: "user",
37
+ content: markSystemTurn(message.content),
38
+ });
39
+ }
40
+ return { systemPrompt, rest };
41
+ }
42
+ export function markSystemTurn(content) {
43
+ return content.startsWith(SYSTEM_TURN_MARKER)
44
+ ? content
45
+ : `${SYSTEM_TURN_MARKER}\n${content}`;
46
+ }
47
+ /** Content of the first system message, matching the dialect system field. */
48
+ export function firstSystemPrompt(messages) {
49
+ return messages.find((message) => message.role === "system")?.content;
50
+ }
51
+ //# sourceMappingURL=system-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-messages.js","sourceRoot":"","sources":["../../src/llm/system-messages.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAuB;IAM7D,IAAI,YAAgC,CAAC;IACrC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAe,GAAG,IAAI,CAAC;YACvB,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC;YACR,GAAG,OAAO;YACV,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAC3C,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,kBAAkB,KAAK,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAC/B,QAAuB;IAEvB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,OAAO,CAAC;AACxE,CAAC"}
@@ -38,6 +38,9 @@ export declare function normalizeTokenUsage(input: {
38
38
  completionTokens?: number | undefined;
39
39
  totalTokens?: number | undefined;
40
40
  exact?: boolean | undefined;
41
+ cachedPromptTokens?: number | undefined;
42
+ cacheCreationTokens?: number | undefined;
43
+ reasoningTokens?: number | undefined;
41
44
  }): TokenUsage | undefined;
42
45
  /**
43
46
  * Parse OpenAI-compatible `usage` object (stream final chunk or complete body).
@@ -55,7 +58,7 @@ export declare function parseOllamaUsage(raw: {
55
58
  }): TokenUsage | undefined;
56
59
  /** Estimated usage from message list (not billing-accurate). */
57
60
  export declare function estimateUsageFromMessages(messages: readonly ChatMessage[]): TokenUsage;
58
- export declare function modelContextWindow(model: string | undefined, _provider?: ProviderId | undefined): number;
61
+ export declare function modelContextWindow(model: string | undefined, provider?: ProviderId | undefined): number;
59
62
  /** Compact integer: 128450 → "128,450"; large → "128.5k" when compact. */
60
63
  export declare function formatTokenCount(n: number, compact?: boolean): string;
61
64
  /**
@@ -18,11 +18,17 @@ export function normalizeTokenUsage(input) {
18
18
  const c = completion ?? 0;
19
19
  if (total === undefined)
20
20
  total = p + c;
21
+ const cached = nonNegInt(input.cachedPromptTokens);
22
+ const cacheCreation = nonNegInt(input.cacheCreationTokens);
23
+ const reasoning = nonNegInt(input.reasoningTokens);
21
24
  return {
22
25
  promptTokens: p,
23
26
  completionTokens: c,
24
27
  totalTokens: total,
25
28
  exact: input.exact !== false,
29
+ ...(cached !== undefined ? { cachedPromptTokens: cached } : {}),
30
+ ...(cacheCreation !== undefined ? { cacheCreationTokens: cacheCreation } : {}),
31
+ ...(reasoning !== undefined ? { reasoningTokens: reasoning } : {}),
26
32
  };
27
33
  }
28
34
  function nonNegInt(value) {
@@ -50,6 +56,12 @@ export function parseOpenAiUsage(raw) {
50
56
  u.outputTokens,
51
57
  totalTokens: u.total_tokens ??
52
58
  u.totalTokens,
59
+ // OpenAI, Groq, OpenRouter and DeepSeek-style gateways report cache and
60
+ // reasoning detail here; it used to be dropped entirely.
61
+ cachedPromptTokens: nonNegInt(u.prompt_tokens_details
62
+ ?.cached_tokens),
63
+ reasoningTokens: nonNegInt(u.completion_tokens_details
64
+ ?.reasoning_tokens),
53
65
  exact: true,
54
66
  });
55
67
  }
@@ -66,6 +78,8 @@ export function parseAnthropicUsage(raw) {
66
78
  return normalizeTokenUsage({
67
79
  promptTokens: prompt > 0 ? prompt : undefined,
68
80
  completionTokens: u.output_tokens,
81
+ ...(cacheRead > 0 ? { cachedPromptTokens: cacheRead } : {}),
82
+ ...(cacheCreate > 0 ? { cacheCreationTokens: cacheCreate } : {}),
69
83
  exact: true,
70
84
  });
71
85
  }
@@ -118,11 +132,17 @@ const CONTEXT_WINDOW_RULES = [
118
132
  { pattern: /gpt-4\.1/i, tokens: 1_047_576 },
119
133
  { pattern: /gpt-4o/i, tokens: 128_000 },
120
134
  { pattern: /gpt-4-turbo/i, tokens: 128_000 },
135
+ // Plain gpt-4 is 8k (32k for the -32k variant); the generic 128k rule below
136
+ // used to over-size it, so no warning arrived before a hard context error.
137
+ { pattern: /gpt-4-32k/i, tokens: 32_768 },
138
+ { pattern: /^gpt-4(?:-\d{4})?$/i, tokens: 8_192 },
121
139
  { pattern: /gpt-4/i, tokens: 128_000 },
122
140
  { pattern: /o3/i, tokens: 200_000 },
123
141
  { pattern: /o4/i, tokens: 200_000 },
124
142
  { pattern: /o1/i, tokens: 200_000 },
125
- // Google
143
+ // Google — keep explicit rules ahead of the generic /gemini/i fallback, which
144
+ // used to catch the shipped gemini-3.x default at an order of magnitude low.
145
+ { pattern: /gemini-3/i, tokens: 1_048_576 },
126
146
  { pattern: /gemini-2\.5/i, tokens: 1_048_576 },
127
147
  { pattern: /gemini-2\.0/i, tokens: 1_048_576 },
128
148
  { pattern: /gemini-1\.5/i, tokens: 1_048_576 },
@@ -137,8 +157,10 @@ const CONTEXT_WINDOW_RULES = [
137
157
  { pattern: /qwen3/i, tokens: 128_000 },
138
158
  { pattern: /qwen2\.5/i, tokens: 128_000 },
139
159
  { pattern: /qwen/i, tokens: 128_000 },
160
+ { pattern: /kimi-k2/i, tokens: 256_000 },
140
161
  { pattern: /kimi/i, tokens: 128_000 },
141
- { pattern: /glm-?5/i, tokens: 128_000 },
162
+ { pattern: /glm-?5/i, tokens: 200_000 },
163
+ { pattern: /glm-?4\.[56]/i, tokens: 200_000 },
142
164
  { pattern: /glm-?4/i, tokens: 128_000 },
143
165
  { pattern: /minimax/i, tokens: 128_000 },
144
166
  { pattern: /mimo/i, tokens: 128_000 },
@@ -146,9 +168,29 @@ const CONTEXT_WINDOW_RULES = [
146
168
  { pattern: /nemotron/i, tokens: 128_000 },
147
169
  ];
148
170
  const DEFAULT_CONTEXT_WINDOW = 128_000;
149
- export function modelContextWindow(model, _provider) {
171
+ /**
172
+ * Provider-specific served windows that are smaller than the model's nominal
173
+ * one. The `provider` argument used to be accepted and discarded, so `%` of
174
+ * context was wrong wherever a gateway serves a truncated window.
175
+ */
176
+ const PROVIDER_CONTEXT_OVERRIDES = {
177
+ // Groq serves these two on a low TPM tier; the usable prompt is far below the
178
+ // model's nominal window (mirrors `groqInputTokenBudget`).
179
+ groq: [
180
+ { pattern: /qwen\/qwen3-32b/i, tokens: 5_500 },
181
+ { pattern: /openai\/gpt-oss-20b/i, tokens: 7_500 },
182
+ ],
183
+ };
184
+ export function modelContextWindow(model, provider) {
150
185
  if (!model)
151
186
  return DEFAULT_CONTEXT_WINDOW;
187
+ const overrides = provider ? PROVIDER_CONTEXT_OVERRIDES[provider] : undefined;
188
+ if (overrides) {
189
+ for (const rule of overrides) {
190
+ if (rule.pattern.test(model))
191
+ return rule.tokens;
192
+ }
193
+ }
152
194
  for (const rule of CONTEXT_WINDOW_RULES) {
153
195
  if (rule.pattern.test(model))
154
196
  return rule.tokens;
@@ -177,7 +219,17 @@ export function formatTokenCount(n, compact = false) {
177
219
  export function formatContextChip(snapshot, opts) {
178
220
  const compact = opts?.compact ?? false;
179
221
  const used = formatTokenCount(snapshot.contextTokens, compact);
180
- return snapshot.exact ? `ctx:${used}` : `ctx:~${used}`;
222
+ const approx = snapshot.exact ? "" : "~";
223
+ const limit = snapshot.contextLimit;
224
+ // The denominator is the auto-compaction trigger, so the percentage tells the
225
+ // user how close the next request is to being compacted.
226
+ if (!limit || limit <= 0)
227
+ return `ctx:${approx}${used}`;
228
+ const percent = Math.min(999, Math.round((snapshot.contextTokens / limit) * 100));
229
+ const budget = formatTokenCount(limit, true);
230
+ return compact
231
+ ? `ctx:${approx}${used}/${budget} ${percent}%`
232
+ : `ctx ${approx}${used}/${budget} ${percent}%`;
181
233
  }
182
234
  /** Merge a new usage into session totals; prefer latest prompt as context fill. */
183
235
  export function applyUsageToSnapshot(prev, usage, contextLimit) {
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../src/llm/token-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../src/llm/token-usage.ts"],"names":[],"mappings":"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"}
@@ -126,6 +126,30 @@ export function syntheticToolCallId(index) {
126
126
  syntheticToolCallSequence += 1;
127
127
  return `call_${index}_${Date.now().toString(36)}_${syntheticToolCallSequence.toString(36)}`;
128
128
  }
129
+ const TOOLS_PARAMETER_NAMES = new Set([
130
+ "tools",
131
+ "tool",
132
+ "tool_choice",
133
+ "toolchoice",
134
+ "functions",
135
+ "function_call",
136
+ "functioncall",
137
+ ]);
138
+ /** Parameter name a gateway blamed, when it says so explicitly. */
139
+ function offendingParameterName(hay) {
140
+ const patterns = [
141
+ /unrecognized (?:request )?(?:argument|parameter|field)(?:s)? supplied:?\s*['"`]?([a-z0-9_.]+)/,
142
+ /unknown (?:request )?(?:argument|parameter|field):?\s*['"`]?([a-z0-9_.]+)/,
143
+ /unexpected keyword argument ['"`]?([a-z0-9_.]+)/,
144
+ /extra inputs are not permitted[^a-z0-9_]*['"`]?([a-z0-9_.]+)/,
145
+ ];
146
+ for (const pattern of patterns) {
147
+ const match = pattern.exec(hay);
148
+ if (match?.[1])
149
+ return match[1];
150
+ }
151
+ return undefined;
152
+ }
129
153
  export function isToolsUnsupportedError(error) {
130
154
  const status = error && typeof error === "object" && "status" in error
131
155
  ? Number(error.status)
@@ -135,6 +159,12 @@ export function isToolsUnsupportedError(error) {
135
159
  : "";
136
160
  const message = error instanceof Error ? error.message : String(error);
137
161
  const hay = `${message}\n${body}`.toLowerCase();
162
+ // When the gateway names the offending parameter, only a tools parameter may
163
+ // downgrade the protocol. Rejecting e.g. `parallel_tool_calls` or `reasoning`
164
+ // says nothing about native tool support.
165
+ const offending = offendingParameterName(hay);
166
+ if (offending && !TOOLS_PARAMETER_NAMES.has(offending))
167
+ return false;
138
168
  // Explicit capability rejections (any HTTP status).
139
169
  if (/tools?\s+(is|are)\s+not\s+supported|does not support tools|function calling is not enabled|tool[_ ]?use is not supported|tools? not supported|tool calling is not supported|does not support function|function[_ ]?call(ing)? (is )?(not supported|disabled|unavailable)|unknown (request )?parameter ['"]?tools?|['"]tools?['"] is not (a )?valid|tool_choice.*(not supported|unknown|disabled)/i.test(hay)) {
140
170
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-protocol.js","sourceRoot":"","sources":["../../src/llm/tool-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-protocol.js","sourceRoot":"","sources":["../../src/llm/tool-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type TreeSignalOutcome = "sent" | "gone" | "failed";
2
+ /** POSIX detaches into its own group; Windows needs an explicit tree kill. */
3
+ export declare function supportsProcessGroups(): boolean;
4
+ export declare function processAlive(pid: number | undefined): boolean;
5
+ /**
6
+ * Terminate a process and its descendants. POSIX signals the process group when
7
+ * one is known; Windows uses `taskkill /T` because signalling the shell pid
8
+ * leaves the real workload (servers, scanners) holding ports and CPU.
9
+ */
10
+ export declare function terminateProcessTree(pid: number, options: {
11
+ signal: NodeJS.Signals;
12
+ processGroupId?: number | undefined;
13
+ }): TreeSignalOutcome;
14
+ /** Best-effort synchronous-looking descendant check used by tests/diagnostics. */
15
+ export declare function hasLiveDescendants(pid: number): Promise<boolean>;
@@ -0,0 +1,77 @@
1
+ import { execFile, spawn } from "node:child_process";
2
+ /** POSIX detaches into its own group; Windows needs an explicit tree kill. */
3
+ export function supportsProcessGroups() {
4
+ return process.platform !== "win32";
5
+ }
6
+ export function processAlive(pid) {
7
+ if (!pid)
8
+ return false;
9
+ try {
10
+ process.kill(pid, 0);
11
+ return true;
12
+ }
13
+ catch (error) {
14
+ // EPERM proves the process exists but is not signalable by this user.
15
+ return error.code === "EPERM";
16
+ }
17
+ }
18
+ function windowsTaskkill(pid, force) {
19
+ try {
20
+ const args = ["/PID", String(pid), "/T"];
21
+ if (force)
22
+ args.push("/F");
23
+ const child = spawn("taskkill", args, {
24
+ stdio: "ignore",
25
+ windowsHide: true,
26
+ detached: false,
27
+ });
28
+ child.on("error", () => undefined);
29
+ child.unref();
30
+ return "sent";
31
+ }
32
+ catch {
33
+ return processAlive(pid) ? "failed" : "gone";
34
+ }
35
+ }
36
+ /**
37
+ * Terminate a process and its descendants. POSIX signals the process group when
38
+ * one is known; Windows uses `taskkill /T` because signalling the shell pid
39
+ * leaves the real workload (servers, scanners) holding ports and CPU.
40
+ */
41
+ export function terminateProcessTree(pid, options) {
42
+ if (!processAlive(pid) && !options.processGroupId)
43
+ return "gone";
44
+ if (process.platform === "win32") {
45
+ return windowsTaskkill(pid, options.signal === "SIGKILL");
46
+ }
47
+ try {
48
+ if (options.processGroupId)
49
+ process.kill(-options.processGroupId, options.signal);
50
+ else
51
+ process.kill(pid, options.signal);
52
+ return "sent";
53
+ }
54
+ catch {
55
+ return processAlive(pid) ? "failed" : "gone";
56
+ }
57
+ }
58
+ /** Best-effort synchronous-looking descendant check used by tests/diagnostics. */
59
+ export async function hasLiveDescendants(pid) {
60
+ if (process.platform === "win32") {
61
+ return await new Promise((resolve) => {
62
+ execFile("wmic", ["process", "where", `ParentProcessId=${pid}`, "get", "ProcessId"], { windowsHide: true, timeout: 4_000 }, (error, stdout) => {
63
+ if (error)
64
+ return resolve(false);
65
+ resolve(/\d/.test(stdout.replace(/ProcessId/g, "")));
66
+ });
67
+ });
68
+ }
69
+ return await new Promise((resolve) => {
70
+ execFile("ps", ["-o", "pid=", "--ppid", String(pid)], { timeout: 4_000 }, (error, stdout) => {
71
+ if (error)
72
+ return resolve(false);
73
+ resolve(stdout.trim().length > 0);
74
+ });
75
+ });
76
+ }
77
+ //# sourceMappingURL=process-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../src/os/process-tree.ts"],"names":[],"mappings":"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"}