@pentoshi/clai 3.5.1 → 3.7.2

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 (369) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/compaction-summary.d.ts +17 -0
  3. package/dist/agent/compaction-summary.js +64 -0
  4. package/dist/agent/compaction-summary.js.map +1 -0
  5. package/dist/agent/confirm-port.d.ts +3 -1
  6. package/dist/agent/confirm-port.js +5 -1
  7. package/dist/agent/confirm-port.js.map +1 -1
  8. package/dist/agent/context-manager.js +53 -24
  9. package/dist/agent/context-manager.js.map +1 -1
  10. package/dist/agent/events.d.ts +6 -0
  11. package/dist/agent/evidence-governor.d.ts +37 -0
  12. package/dist/agent/evidence-governor.js +70 -0
  13. package/dist/agent/evidence-governor.js.map +1 -0
  14. package/dist/agent/loop-guard.d.ts +29 -9
  15. package/dist/agent/loop-guard.js +117 -26
  16. package/dist/agent/loop-guard.js.map +1 -1
  17. package/dist/agent/must-continue.d.ts +56 -0
  18. package/dist/agent/must-continue.js +240 -0
  19. package/dist/agent/must-continue.js.map +1 -0
  20. package/dist/agent/outcomes.d.ts +101 -0
  21. package/dist/agent/outcomes.js +359 -0
  22. package/dist/agent/outcomes.js.map +1 -0
  23. package/dist/agent/plan-decision.d.ts +33 -0
  24. package/dist/agent/plan-decision.js +104 -0
  25. package/dist/agent/plan-decision.js.map +1 -0
  26. package/dist/agent/plan-tool.d.ts +34 -0
  27. package/dist/agent/plan-tool.js +594 -76
  28. package/dist/agent/plan-tool.js.map +1 -1
  29. package/dist/agent/project-root.d.ts +33 -0
  30. package/dist/agent/project-root.js +161 -0
  31. package/dist/agent/project-root.js.map +1 -0
  32. package/dist/agent/prompt-composer.d.ts +21 -0
  33. package/dist/agent/prompt-composer.js +46 -0
  34. package/dist/agent/prompt-composer.js.map +1 -0
  35. package/dist/agent/runner.d.ts +11 -1
  36. package/dist/agent/runner.js +1915 -886
  37. package/dist/agent/runner.js.map +1 -1
  38. package/dist/agent/scope-context.d.ts +3 -0
  39. package/dist/agent/scope-context.js +24 -0
  40. package/dist/agent/scope-context.js.map +1 -0
  41. package/dist/agent/scratch-write.d.ts +4 -0
  42. package/dist/agent/scratch-write.js +54 -0
  43. package/dist/agent/scratch-write.js.map +1 -0
  44. package/dist/agent/session-policy.d.ts +7 -0
  45. package/dist/agent/session-policy.js +61 -0
  46. package/dist/agent/session-policy.js.map +1 -1
  47. package/dist/agent/session-state.d.ts +41 -0
  48. package/dist/agent/session-state.js +107 -0
  49. package/dist/agent/session-state.js.map +1 -0
  50. package/dist/agent/step-budget.d.ts +14 -0
  51. package/dist/agent/step-budget.js +26 -0
  52. package/dist/agent/step-budget.js.map +1 -0
  53. package/dist/agent/task-analyzer.d.ts +12 -3
  54. package/dist/agent/task-analyzer.js +263 -23
  55. package/dist/agent/task-analyzer.js.map +1 -1
  56. package/dist/agent/task-evidence.d.ts +173 -0
  57. package/dist/agent/task-evidence.js +802 -0
  58. package/dist/agent/task-evidence.js.map +1 -0
  59. package/dist/agent/task-plan.d.ts +57 -0
  60. package/dist/agent/task-plan.js +147 -1
  61. package/dist/agent/task-plan.js.map +1 -1
  62. package/dist/agent/tool-call-parser.d.ts +19 -11
  63. package/dist/agent/tool-call-parser.js +96 -71
  64. package/dist/agent/tool-call-parser.js.map +1 -1
  65. package/dist/agent/tool-history.d.ts +34 -0
  66. package/dist/agent/tool-history.js +200 -0
  67. package/dist/agent/tool-history.js.map +1 -0
  68. package/dist/agent/tool-output-formatting.d.ts +13 -1
  69. package/dist/agent/tool-output-formatting.js +75 -22
  70. package/dist/agent/tool-output-formatting.js.map +1 -1
  71. package/dist/agent/turn-outcome.d.ts +11 -0
  72. package/dist/agent/turn-outcome.js +17 -0
  73. package/dist/agent/turn-outcome.js.map +1 -0
  74. package/dist/agent/turn-state.d.ts +11 -0
  75. package/dist/agent/turn-state.js +28 -0
  76. package/dist/agent/turn-state.js.map +1 -0
  77. package/dist/agent/workspace-orient.d.ts +75 -0
  78. package/dist/agent/workspace-orient.js +509 -0
  79. package/dist/agent/workspace-orient.js.map +1 -0
  80. package/dist/app/adapters/agent-event-adapter.d.ts +2 -13
  81. package/dist/app/adapters/agent-event-adapter.js +63 -25
  82. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  83. package/dist/app/adapters/current-agent-adapter.d.ts +0 -5
  84. package/dist/app/adapters/current-agent-adapter.js +4 -7
  85. package/dist/app/adapters/current-agent-adapter.js.map +1 -1
  86. package/dist/app/adapters/current-jobs-adapter.js +1 -0
  87. package/dist/app/adapters/current-jobs-adapter.js.map +1 -1
  88. package/dist/app/adapters/current-terminal-adapter.d.ts +0 -7
  89. package/dist/app/adapters/current-terminal-adapter.js +0 -7
  90. package/dist/app/adapters/current-terminal-adapter.js.map +1 -1
  91. package/dist/app/adapters/current-updates-adapter.d.ts +0 -5
  92. package/dist/app/adapters/current-updates-adapter.js +0 -5
  93. package/dist/app/adapters/current-updates-adapter.js.map +1 -1
  94. package/dist/app/adapters/in-memory-clipboard-adapter.d.ts +0 -5
  95. package/dist/app/adapters/in-memory-clipboard-adapter.js +0 -5
  96. package/dist/app/adapters/in-memory-clipboard-adapter.js.map +1 -1
  97. package/dist/app/commands/command.d.ts +0 -5
  98. package/dist/app/commands/command.js.map +1 -1
  99. package/dist/app/commands/registry.d.ts +0 -14
  100. package/dist/app/commands/registry.js +0 -20
  101. package/dist/app/commands/registry.js.map +1 -1
  102. package/dist/app/controllers/disposable.d.ts +0 -5
  103. package/dist/app/controllers/disposable.js +0 -5
  104. package/dist/app/controllers/disposable.js.map +1 -1
  105. package/dist/app/controllers/job-controller.d.ts +1 -5
  106. package/dist/app/controllers/job-controller.js +0 -4
  107. package/dist/app/controllers/job-controller.js.map +1 -1
  108. package/dist/app/controllers/plan-controller.d.ts +5 -8
  109. package/dist/app/controllers/plan-controller.js +30 -12
  110. package/dist/app/controllers/plan-controller.js.map +1 -1
  111. package/dist/app/controllers/session-controller.d.ts +17 -32
  112. package/dist/app/controllers/session-controller.js +60 -35
  113. package/dist/app/controllers/session-controller.js.map +1 -1
  114. package/dist/app/controllers/turn-controller.d.ts +2 -6
  115. package/dist/app/controllers/turn-controller.js +8 -8
  116. package/dist/app/controllers/turn-controller.js.map +1 -1
  117. package/dist/app/events/app-event.d.ts +4 -7
  118. package/dist/app/events/app-event.js +0 -6
  119. package/dist/app/events/app-event.js.map +1 -1
  120. package/dist/app/events/event-buffer.d.ts +6 -17
  121. package/dist/app/events/event-buffer.js +27 -24
  122. package/dist/app/events/event-buffer.js.map +1 -1
  123. package/dist/app/events/sequencer.d.ts +0 -9
  124. package/dist/app/events/sequencer.js +0 -4
  125. package/dist/app/events/sequencer.js.map +1 -1
  126. package/dist/app/ports/agent-port.d.ts +13 -3
  127. package/dist/app/ports/clipboard-port.d.ts +0 -5
  128. package/dist/app/ports/confirm-port.d.ts +0 -7
  129. package/dist/app/ports/jobs-port.d.ts +2 -5
  130. package/dist/app/ports/persistence-port.d.ts +0 -4
  131. package/dist/app/ports/secret-port.d.ts +0 -5
  132. package/dist/app/ports/terminal-port.d.ts +0 -6
  133. package/dist/app/ports/updates-port.d.ts +0 -4
  134. package/dist/attachments/service.d.ts +29 -0
  135. package/dist/attachments/service.js +47 -0
  136. package/dist/attachments/service.js.map +1 -0
  137. package/dist/commands/doctor.js +3 -0
  138. package/dist/commands/doctor.js.map +1 -1
  139. package/dist/commands/providers.js +0 -3
  140. package/dist/commands/providers.js.map +1 -1
  141. package/dist/commands/search-providers.d.ts +0 -33
  142. package/dist/commands/search-providers.js +0 -33
  143. package/dist/commands/search-providers.js.map +1 -1
  144. package/dist/commands/update.js +1 -9
  145. package/dist/commands/update.js.map +1 -1
  146. package/dist/index.js +22 -42
  147. package/dist/index.js.map +1 -1
  148. package/dist/llm/adapters/anthropic-tools.d.ts +99 -0
  149. package/dist/llm/adapters/anthropic-tools.js +225 -0
  150. package/dist/llm/adapters/anthropic-tools.js.map +1 -0
  151. package/dist/llm/adapters/gemini-tools.d.ts +54 -0
  152. package/dist/llm/adapters/gemini-tools.js +139 -0
  153. package/dist/llm/adapters/gemini-tools.js.map +1 -0
  154. package/dist/llm/adapters/ollama-tools.d.ts +18 -0
  155. package/dist/llm/adapters/ollama-tools.js +58 -0
  156. package/dist/llm/adapters/ollama-tools.js.map +1 -0
  157. package/dist/llm/adapters/openai-tools.d.ts +39 -0
  158. package/dist/llm/adapters/openai-tools.js +71 -0
  159. package/dist/llm/adapters/openai-tools.js.map +1 -0
  160. package/dist/llm/agentrouter.js +23 -4
  161. package/dist/llm/agentrouter.js.map +1 -1
  162. package/dist/llm/anthropic.js +93 -92
  163. package/dist/llm/anthropic.js.map +1 -1
  164. package/dist/llm/aws-mantle.js +93 -56
  165. package/dist/llm/aws-mantle.js.map +1 -1
  166. package/dist/llm/bynara.js +23 -4
  167. package/dist/llm/bynara.js.map +1 -1
  168. package/dist/llm/capabilities.d.ts +13 -6
  169. package/dist/llm/capabilities.js +113 -13
  170. package/dist/llm/capabilities.js.map +1 -1
  171. package/dist/llm/gemini.js +63 -48
  172. package/dist/llm/gemini.js.map +1 -1
  173. package/dist/llm/groq.js +23 -10
  174. package/dist/llm/groq.js.map +1 -1
  175. package/dist/llm/http.d.ts +22 -34
  176. package/dist/llm/http.js +97 -69
  177. package/dist/llm/http.js.map +1 -1
  178. package/dist/llm/kimchi.js +23 -4
  179. package/dist/llm/kimchi.js.map +1 -1
  180. package/dist/llm/nvidia.js +23 -4
  181. package/dist/llm/nvidia.js.map +1 -1
  182. package/dist/llm/ollama.js +49 -31
  183. package/dist/llm/ollama.js.map +1 -1
  184. package/dist/llm/openai.js +23 -4
  185. package/dist/llm/openai.js.map +1 -1
  186. package/dist/llm/openrouter.js +23 -4
  187. package/dist/llm/openrouter.js.map +1 -1
  188. package/dist/llm/qwen-cloud.js +23 -4
  189. package/dist/llm/qwen-cloud.js.map +1 -1
  190. package/dist/llm/router.d.ts +0 -6
  191. package/dist/llm/router.js +48 -21
  192. package/dist/llm/router.js.map +1 -1
  193. package/dist/llm/tool-protocol.d.ts +67 -0
  194. package/dist/llm/tool-protocol.js +278 -0
  195. package/dist/llm/tool-protocol.js.map +1 -0
  196. package/dist/modes/agent.d.ts +2 -1
  197. package/dist/modes/agent.js +4 -2
  198. package/dist/modes/agent.js.map +1 -1
  199. package/dist/modes/ask.d.ts +0 -18
  200. package/dist/modes/ask.js +71 -66
  201. package/dist/modes/ask.js.map +1 -1
  202. package/dist/os/cwd.d.ts +0 -21
  203. package/dist/os/cwd.js +0 -24
  204. package/dist/os/cwd.js.map +1 -1
  205. package/dist/os/pkgmgr.js +0 -6
  206. package/dist/os/pkgmgr.js.map +1 -1
  207. package/dist/prompts/index.d.ts +17 -21
  208. package/dist/prompts/index.js +131 -259
  209. package/dist/prompts/index.js.map +1 -1
  210. package/dist/prompts/system.agent.md +242 -0
  211. package/dist/prompts/system.ask.md +56 -0
  212. package/dist/repl/prompt-line.js +0 -36
  213. package/dist/repl/prompt-line.js.map +1 -1
  214. package/dist/repl/slash-commands.d.ts +0 -9
  215. package/dist/repl/slash-commands.js +2 -23
  216. package/dist/repl/slash-commands.js.map +1 -1
  217. package/dist/repl.d.ts +5 -0
  218. package/dist/repl.js +176 -55
  219. package/dist/repl.js.map +1 -1
  220. package/dist/safety/classifier.js +17 -9
  221. package/dist/safety/classifier.js.map +1 -1
  222. package/dist/safety/engagement-policy.d.ts +46 -0
  223. package/dist/safety/engagement-policy.js +198 -0
  224. package/dist/safety/engagement-policy.js.map +1 -0
  225. package/dist/store/config.d.ts +7 -0
  226. package/dist/store/config.js +1 -0
  227. package/dist/store/config.js.map +1 -1
  228. package/dist/store/engagement.d.ts +115 -0
  229. package/dist/store/engagement.js +278 -0
  230. package/dist/store/engagement.js.map +1 -0
  231. package/dist/store/logs.d.ts +5 -0
  232. package/dist/store/logs.js +52 -2
  233. package/dist/store/logs.js.map +1 -1
  234. package/dist/store/plan.d.ts +59 -5
  235. package/dist/store/plan.js +182 -8
  236. package/dist/store/plan.js.map +1 -1
  237. package/dist/store/scope.d.ts +4 -1
  238. package/dist/store/scope.js +2 -2
  239. package/dist/store/scope.js.map +1 -1
  240. package/dist/tools/capabilities.d.ts +2 -0
  241. package/dist/tools/capabilities.js +101 -6
  242. package/dist/tools/capabilities.js.map +1 -1
  243. package/dist/tools/command-intent.d.ts +1 -0
  244. package/dist/tools/command-intent.js +31 -0
  245. package/dist/tools/command-intent.js.map +1 -1
  246. package/dist/tools/definitions.d.ts +20 -0
  247. package/dist/tools/definitions.js +578 -0
  248. package/dist/tools/definitions.js.map +1 -0
  249. package/dist/tools/elevated-shell.d.ts +60 -0
  250. package/dist/tools/elevated-shell.js +233 -0
  251. package/dist/tools/elevated-shell.js.map +1 -0
  252. package/dist/tools/file-diff.d.ts +125 -0
  253. package/dist/tools/file-diff.js +495 -0
  254. package/dist/tools/file-diff.js.map +1 -0
  255. package/dist/tools/fs.d.ts +11 -13
  256. package/dist/tools/fs.js +280 -80
  257. package/dist/tools/fs.js.map +1 -1
  258. package/dist/tools/http.d.ts +15 -0
  259. package/dist/tools/http.js +202 -61
  260. package/dist/tools/http.js.map +1 -1
  261. package/dist/tools/jobs.d.ts +71 -10
  262. package/dist/tools/jobs.js +403 -124
  263. package/dist/tools/jobs.js.map +1 -1
  264. package/dist/tools/net-ping-sweep.js +69 -16
  265. package/dist/tools/net-ping-sweep.js.map +1 -1
  266. package/dist/tools/nmap-runner.d.ts +19 -7
  267. package/dist/tools/nmap-runner.js +182 -80
  268. package/dist/tools/nmap-runner.js.map +1 -1
  269. package/dist/tools/pentest-workflows.d.ts +8 -0
  270. package/dist/tools/pentest-workflows.js +71 -0
  271. package/dist/tools/pentest-workflows.js.map +1 -0
  272. package/dist/tools/registry.d.ts +9 -0
  273. package/dist/tools/registry.js +272 -63
  274. package/dist/tools/registry.js.map +1 -1
  275. package/dist/tools/shell.d.ts +3 -0
  276. package/dist/tools/shell.js +35 -13
  277. package/dist/tools/shell.js.map +1 -1
  278. package/dist/tools/tool-types.d.ts +11 -0
  279. package/dist/tools/validate.d.ts +11 -0
  280. package/dist/tools/validate.js +53 -0
  281. package/dist/tools/validate.js.map +1 -1
  282. package/dist/tools/web/search.js +48 -4
  283. package/dist/tools/web/search.js.map +1 -1
  284. package/dist/tui-v2/app/App.js +25 -39
  285. package/dist/tui-v2/app/App.js.map +1 -1
  286. package/dist/tui-v2/app/command-handlers.js +20 -1
  287. package/dist/tui-v2/app/command-handlers.js.map +1 -1
  288. package/dist/tui-v2/app/commands/picker-commands.js +3 -0
  289. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
  290. package/dist/tui-v2/app/commands/session-commands.js +5 -0
  291. package/dist/tui-v2/app/commands/session-commands.js.map +1 -1
  292. package/dist/tui-v2/app/plan-lifecycle.d.ts +25 -3
  293. package/dist/tui-v2/app/plan-lifecycle.js +87 -24
  294. package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
  295. package/dist/tui-v2/bootstrap/patch-opentui-text.d.ts +6 -0
  296. package/dist/tui-v2/bootstrap/patch-opentui-text.js +53 -0
  297. package/dist/tui-v2/bootstrap/patch-opentui-text.js.map +1 -0
  298. package/dist/tui-v2/bootstrap/start-tui-v2.js +7 -0
  299. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  300. package/dist/tui-v2/components/jobs/jobs-panel.js +23 -14
  301. package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -1
  302. package/dist/tui-v2/components/modal/confirm-modal.d.ts +1 -1
  303. package/dist/tui-v2/components/modal/confirm-modal.js +18 -7
  304. package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -1
  305. package/dist/tui-v2/components/overlay/overlay-host.js +1 -1
  306. package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
  307. package/dist/tui-v2/components/pager/pager.d.ts +6 -0
  308. package/dist/tui-v2/components/pager/pager.js +313 -67
  309. package/dist/tui-v2/components/pager/pager.js.map +1 -1
  310. package/dist/tui-v2/components/status/status-line.d.ts +9 -0
  311. package/dist/tui-v2/components/status/status-line.js +17 -3
  312. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  313. package/dist/tui-v2/components/transcript/assistant-message.js +1 -1
  314. package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
  315. package/dist/tui-v2/components/transcript/compacted-row.js +1 -1
  316. package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
  317. package/dist/tui-v2/components/transcript/tool-card.d.ts +9 -1
  318. package/dist/tui-v2/components/transcript/tool-card.js +115 -10
  319. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  320. package/dist/tui-v2/components/transcript/transcript-row.js +2 -2
  321. package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
  322. package/dist/tui-v2/composer/composer-editor.js +16 -0
  323. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  324. package/dist/tui-v2/controllers/overlay-controller.d.ts +16 -2
  325. package/dist/tui-v2/controllers/overlay-controller.js +92 -12
  326. package/dist/tui-v2/controllers/overlay-controller.js.map +1 -1
  327. package/dist/tui-v2/rendering/artifact-pager-source.d.ts +19 -0
  328. package/dist/tui-v2/rendering/artifact-pager-source.js +103 -0
  329. package/dist/tui-v2/rendering/artifact-pager-source.js.map +1 -0
  330. package/dist/tui-v2/rendering/file-diff-view.d.ts +63 -0
  331. package/dist/tui-v2/rendering/file-diff-view.js +263 -0
  332. package/dist/tui-v2/rendering/file-diff-view.js.map +1 -0
  333. package/dist/tui-v2/rendering/open-tool-output.d.ts +9 -1
  334. package/dist/tui-v2/rendering/open-tool-output.js +65 -12
  335. package/dist/tui-v2/rendering/open-tool-output.js.map +1 -1
  336. package/dist/tui-v2/rendering/pager-chrome.d.ts +12 -0
  337. package/dist/tui-v2/rendering/pager-chrome.js +56 -0
  338. package/dist/tui-v2/rendering/pager-chrome.js.map +1 -0
  339. package/dist/tui-v2/rendering/plan-view.js +1 -1
  340. package/dist/tui-v2/rendering/plan-view.js.map +1 -1
  341. package/dist/tui-v2/rendering/syntax-highlight.d.ts +37 -0
  342. package/dist/tui-v2/rendering/syntax-highlight.js +1303 -0
  343. package/dist/tui-v2/rendering/syntax-highlight.js.map +1 -0
  344. package/dist/tui-v2/rendering/theme.d.ts +28 -0
  345. package/dist/tui-v2/rendering/theme.js +28 -0
  346. package/dist/tui-v2/rendering/theme.js.map +1 -1
  347. package/dist/tui-v2/rendering/tool-presenter.d.ts +11 -1
  348. package/dist/tui-v2/rendering/tool-presenter.js +101 -5
  349. package/dist/tui-v2/rendering/tool-presenter.js.map +1 -1
  350. package/dist/tui-v2/state/transcript-hydrate.js +5 -0
  351. package/dist/tui-v2/state/transcript-hydrate.js.map +1 -1
  352. package/dist/tui-v2/state/transcript-reducer.js +12 -2
  353. package/dist/tui-v2/state/transcript-reducer.js.map +1 -1
  354. package/dist/tui-v2/state/transcript-store.d.ts +7 -0
  355. package/dist/tui-v2/state/transcript-store.js +46 -0
  356. package/dist/tui-v2/state/transcript-store.js.map +1 -1
  357. package/dist/tui-v2/state/transcript-types.d.ts +12 -0
  358. package/dist/tui-v2/state/transcript-types.js +9 -0
  359. package/dist/tui-v2/state/transcript-types.js.map +1 -1
  360. package/dist/types.d.ts +75 -1
  361. package/dist/ui/ansi-box.d.ts +2 -0
  362. package/dist/ui/ansi-box.js +8 -1
  363. package/dist/ui/ansi-box.js.map +1 -1
  364. package/dist/ui/mentions.d.ts +6 -0
  365. package/dist/ui/mentions.js +50 -12
  366. package/dist/ui/mentions.js.map +1 -1
  367. package/dist/ui/plan-pane.js +1 -1
  368. package/dist/ui/plan-pane.js.map +1 -1
  369. package/package.json +16 -11
@@ -0,0 +1,173 @@
1
+ import type { ToolCall } from "../types.js";
2
+ import type { TaskEvidence } from "../store/plan.js";
3
+ /** Successful non-meta work under the open plan task (typed evidence for done). */
4
+ export type TaskClass = "explore" | "scaffold" | "install" | "implement" | "verify" | "recon" | "exploit" | "report" | "generic";
5
+ export interface TaskWorkLedger extends TaskEvidence {
6
+ taskId: string;
7
+ }
8
+ /** Rehydrate the live task ledger from durable plan evidence after a resume. */
9
+ export declare function ledgerFromTaskEvidence(taskId: string, evidence?: TaskEvidence | undefined): TaskWorkLedger;
10
+ /** Store only serializable evidence on the plan; the task id is already its key. */
11
+ export declare function taskEvidenceFromLedger(ledger: TaskWorkLedger): TaskEvidence;
12
+ /** Optional signals recorded from a successful tool call. */
13
+ export interface TaskWorkSignals {
14
+ sourceWrite?: boolean;
15
+ featureWrite?: boolean;
16
+ installOk?: boolean;
17
+ scaffoldOk?: boolean;
18
+ devServerStart?: boolean;
19
+ localHttpProbeOk?: boolean;
20
+ serverReady?: boolean;
21
+ portListening?: boolean;
22
+ remoteReconOk?: boolean;
23
+ remoteActiveTestOk?: boolean;
24
+ }
25
+ export declare function isMetaPlanTool(name: string): boolean;
26
+ /** Tools that count as real work/verify evidence for the open task. */
27
+ export declare function isEvidenceWorkTool(name: string): boolean;
28
+ export declare function isPentestPlanKind(kind: string | undefined): boolean;
29
+ export declare function classifyTaskTitle(title: string, opts?: {
30
+ planKind?: string | undefined;
31
+ }): TaskClass;
32
+ /** Successful work observed this turn without a credited open task. */
33
+ export interface LooseWorkReceipt {
34
+ readonly toolName: string;
35
+ readonly signals?: TaskWorkSignals | undefined;
36
+ }
37
+ /**
38
+ * Whether a successful tool can satisfy a task of the given class.
39
+ * Used to retroactively credit preflight work (tool.check before in_progress).
40
+ */
41
+ export declare function toolFitsTaskClass(toolName: string, taskTitle: string, opts?: {
42
+ planKind?: string | undefined;
43
+ signals?: TaskWorkSignals | undefined;
44
+ }): boolean;
45
+ /**
46
+ * Fold turn-level loose successes into a task ledger so preflight work
47
+ * (tool.check / fs.list before in_progress) can satisfy explore/check tasks.
48
+ */
49
+ export declare function absorbLooseWorkIntoLedger(ledger: TaskWorkLedger | null, taskId: string, taskTitle: string, loose: readonly LooseWorkReceipt[], opts?: {
50
+ planKind?: string | undefined;
51
+ }): TaskWorkLedger | null;
52
+ export declare function recordTaskWorkSuccess(ledger: TaskWorkLedger | null, taskId: string | undefined, toolName: string, signals?: TaskWorkSignals): TaskWorkLedger | null;
53
+ export declare function openTaskLedger(taskId: string): TaskWorkLedger;
54
+ export interface CanMarkTaskDoneOpts {
55
+ taskTitle?: string | undefined;
56
+ /** User asked for a product feature app (todo/blog/…). */
57
+ featureAppRequired?: boolean | undefined;
58
+ /** Session-level flag: feature write observed any time this turn. */
59
+ sessionFeatureSeen?: boolean | undefined;
60
+ /** A real project root was discovered, so a scaffold checkpoint is already satisfied. */
61
+ existingProject?: boolean | undefined;
62
+ /** An earlier plan task already proved the local server is ready and running. */
63
+ runtimeVerified?: boolean | undefined;
64
+ /** Plan kind: coding | pentest | general — selects domain gates. */
65
+ planKind?: string | undefined;
66
+ /** Any plan task already has successful remote recon/active test evidence. */
67
+ remoteWorkVerified?: boolean | undefined;
68
+ }
69
+ /** Local app runtime is proven by any strong independent signal. */
70
+ export declare function hasLocalRuntimeProof(evidence?: Pick<TaskEvidence, "sawDevServerStart" | "sawLocalHttpProbeOk" | "sawServerReady" | "sawPortListening"> | null): boolean;
71
+ export declare function hasRemoteWorkProof(evidence?: Pick<TaskEvidence, "sawRemoteReconOk" | "sawRemoteActiveTestOk"> | null): boolean;
72
+ /** Dev-server job log shows ready + local URL. */
73
+ export declare function isServerReadyOutput(output: string): boolean;
74
+ /** lsof/ss (or similar) shows a process LISTENing on a local port. */
75
+ export declare function isPortListeningOutput(command: string, output: string): boolean;
76
+ /**
77
+ * Leave/keep-running observational tasks may inherit already-proven runtime.
78
+ * "for user to test" must NOT block inheritance (prior brittle exclusion of "test").
79
+ */
80
+ export declare function isRuntimeObservationTask(title: string): boolean;
81
+ /** Report / residual documentation that can inherit prior remote evidence. */
82
+ export declare function isRemoteObservationTask(title: string): boolean;
83
+ /**
84
+ * Typed evidence gate: base rule is ≥1 successful work tool; implement/install/verify
85
+ * (and pentest recon) require stronger signals when classified. Existing project and
86
+ * already-proven runtime/remote facts satisfy corresponding observational tasks.
87
+ */
88
+ export declare function canMarkTaskDone(ledger: TaskWorkLedger | null, taskId: string, opts?: CanMarkTaskDoneOpts): {
89
+ ok: true;
90
+ } | {
91
+ ok: false;
92
+ reason: string;
93
+ };
94
+ /** True when a tool call is remote recon (not local app tooling). */
95
+ export declare function isRemoteReconToolCall(call: ToolCall): boolean;
96
+ /** Active/offensive test (not passive recon). */
97
+ export declare function isRemoteActiveTestCall(call: ToolCall): boolean;
98
+ /** One-shot scaffolders — must NEVER be treated as "start the dev server". Stack-agnostic. */
99
+ export declare function isScaffoldCreateCommand(cmd: string): boolean;
100
+ /**
101
+ * True only for actually running a long-lived dev server — not create-vite /
102
+ * npm create which merely contain the word "vite".
103
+ */
104
+ export declare function isDevServerCall(call: ToolCall): boolean;
105
+ /** Inspect tools allowed without opening a plan task. */
106
+ export declare function isPlanPreflightTool(name: string): boolean;
107
+ /** Read-only recon tools that may run without an in_progress task on pentest plans. */
108
+ export declare function isReadOnlyReconTool(name: string): boolean;
109
+ /**
110
+ * Tools whose failure must NOT cancel later siblings in the same model turn.
111
+ * Plan bookkeeping failures (task.update done-gate, etc.) and independent
112
+ * recon lookups should never wipe a whole batch of http.fetch / dns calls.
113
+ */
114
+ export declare function isBatchSoftFailTool(name: string): boolean;
115
+ /** Tools allowed on a coding build turn before plan.create exists. */
116
+ export declare function isBuildPrePlanAllowedTool(name: string): boolean;
117
+ /**
118
+ * Commands that legitimately sit quiet for minutes (npm install, create-next-app).
119
+ * Must not be killed by the short "no output" stall watchdog.
120
+ */
121
+ export declare function isLongQuietInstallOrScaffoldCommand(cmd: string): boolean;
122
+ /** Stall watchdog budget: scaffold/install can be silent for a long time. */
123
+ export declare function toolStallBudgetMs(call: {
124
+ name: string;
125
+ args: Record<string, unknown>;
126
+ }): number;
127
+ /** Harmless version/which probes models use instead of tool.check before planning. */
128
+ export declare function isReadOnlyVersionProbeCommand(cmd: string): boolean;
129
+ /**
130
+ * Multi-step coding builds must plan before mutate (scaffold/write/install).
131
+ * Trivial one-liners and non-build prompts skip this.
132
+ */
133
+ export declare function codingBuildRequiresPlan(prompt: string, opts?: {
134
+ informational?: boolean;
135
+ idle?: boolean;
136
+ pentest?: boolean;
137
+ }): boolean;
138
+ export declare function looksLikeInstallTaskTitle(title: string): boolean;
139
+ export declare function looksLikeScaffoldTaskTitle(title: string): boolean;
140
+ export declare function isPackageInstallCommand(cmd: string): boolean;
141
+ /**
142
+ * Choose which pending plan task should own this tool call (auto-start).
143
+ * Prevents npm install from being attributed to "localStorage" / style tasks.
144
+ */
145
+ export declare function pickPendingTaskForToolCall<T extends {
146
+ id: string;
147
+ title: string;
148
+ }>(pending: T[], call: ToolCall, _allTitles?: string[]): T | undefined;
149
+ /**
150
+ * User asked for a product feature app (todo, blog, …), not "just scaffold framework X".
151
+ * Stack-agnostic: detects intent, not a particular framework.
152
+ */
153
+ export declare function userAskedForFeatureApp(prompt: string): boolean;
154
+ /** Paths that look like application source (not lockfiles / build output). */
155
+ export declare function isAppSourcePath(path: string): boolean;
156
+ export declare function extractWritePathsFromCall(call: ToolCall): string[];
157
+ /** Default framework starter / marketing copy — not the product feature. */
158
+ export declare function looksLikeStarterBoilerplate(content: string): boolean;
159
+ /** Content that looks like real product UI/logic for common feature apps. */
160
+ export declare function looksLikeFeatureProductCode(content: string): boolean;
161
+ /**
162
+ * True when a successful tool call implements product feature code (not only scaffold).
163
+ * Starter boilerplate alone does not count.
164
+ */
165
+ export declare function isFeatureImplementationCall(call: ToolCall): boolean;
166
+ /**
167
+ * User said work belongs on the Desktop (or similar). Returns absolute path.
168
+ */
169
+ export declare function resolveUserDestinationHint(prompt: string, home?: string): string | undefined;
170
+ /**
171
+ * Default shell cwd when the model omitted it but a project root / Desktop hint exists.
172
+ */
173
+ export declare function applyDestinationCwd(call: ToolCall, destinationHint: string | undefined): ToolCall;