@mjasnikovs/pi-task 0.38.29 → 0.38.31

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 (373) hide show
  1. package/dist/config/config.d.ts +70 -70
  2. package/dist/config/config.js +26 -35
  3. package/dist/config/extension-list.d.ts +6 -5
  4. package/dist/config/extension-list.js +3 -2
  5. package/dist/config/reasoning-args.d.ts +9 -7
  6. package/dist/config/reasoning-args.js +12 -10
  7. package/dist/config/reasoning.d.ts +44 -105
  8. package/dist/config/reasoning.js +27 -704
  9. package/dist/config/register.d.ts +34 -48
  10. package/dist/config/register.js +41 -51
  11. package/dist/config/tool-list.d.ts +16 -16
  12. package/dist/config/tool-list.js +1 -1
  13. package/dist/index.js +2 -0
  14. package/dist/remote/bridge.d.ts +19 -10
  15. package/dist/remote/bridge.js +3 -2
  16. package/dist/remote/broadcast.js +3 -1
  17. package/dist/remote/events.js +12 -11
  18. package/dist/remote/history.d.ts +1 -1
  19. package/dist/remote/protocol.d.ts +6 -3
  20. package/dist/remote/protocol.js +2 -1
  21. package/dist/remote/push.d.ts +16 -16
  22. package/dist/remote/push.js +27 -27
  23. package/dist/remote/register.d.ts +3 -3
  24. package/dist/remote/register.js +17 -19
  25. package/dist/remote/server.d.ts +9 -8
  26. package/dist/remote/server.js +15 -14
  27. package/dist/remote/session-state.d.ts +5 -4
  28. package/dist/remote/session-state.js +8 -5
  29. package/dist/remote/sw.d.ts +7 -6
  30. package/dist/remote/sw.js +7 -6
  31. package/dist/remote/tailscale.d.ts +4 -2
  32. package/dist/remote/tailscale.js +4 -2
  33. package/dist/remote/ui-highlight.js +6 -5
  34. package/dist/remote/ui-render.js +4 -4
  35. package/dist/remote/ui-script.js +24 -24
  36. package/dist/remote/ui-styles.d.ts +1 -1
  37. package/dist/remote/ui-styles.js +10 -13
  38. package/dist/remote/ui-tools.js +9 -6
  39. package/dist/shared/child-extensions.d.ts +29 -17
  40. package/dist/shared/child-extensions.js +29 -17
  41. package/dist/shared/child-output.d.ts +30 -24
  42. package/dist/shared/child-output.js +25 -17
  43. package/dist/shared/child-process.d.ts +47 -40
  44. package/dist/shared/child-process.js +50 -59
  45. package/dist/shared/command-watchdog.d.ts +85 -16
  46. package/dist/shared/command-watchdog.js +115 -21
  47. package/dist/shared/fs-text.d.ts +16 -10
  48. package/dist/shared/fs-text.js +16 -10
  49. package/dist/shared/git-runner.d.ts +25 -25
  50. package/dist/shared/git-runner.js +25 -25
  51. package/dist/shared/leaked-tool-call.d.ts +17 -11
  52. package/dist/shared/leaked-tool-call.js +23 -15
  53. package/dist/shared/model-endpoint.d.ts +29 -16
  54. package/dist/shared/model-endpoint.js +33 -21
  55. package/dist/shared/pi-invocation.d.ts +7 -4
  56. package/dist/shared/pi-invocation.js +12 -7
  57. package/dist/shared/pkg-version.d.ts +13 -5
  58. package/dist/shared/pkg-version.js +13 -5
  59. package/dist/shared/reasoning-capability.d.ts +35 -24
  60. package/dist/shared/reasoning-capability.js +35 -24
  61. package/dist/shared/stream-watchdog.d.ts +60 -44
  62. package/dist/shared/stream-watchdog.js +62 -45
  63. package/dist/task/accept-debt.d.ts +41 -43
  64. package/dist/task/accept-debt.js +73 -65
  65. package/dist/task/api-synthesis.d.ts +24 -21
  66. package/dist/task/api-synthesis.js +32 -26
  67. package/dist/task/apis-contract.d.ts +32 -64
  68. package/dist/task/apis-contract.js +32 -64
  69. package/dist/task/artifact-closure.d.ts +27 -13
  70. package/dist/task/artifact-closure.js +95 -67
  71. package/dist/task/auto-commit.d.ts +46 -35
  72. package/dist/task/auto-commit.js +51 -38
  73. package/dist/task/auto-io.d.ts +45 -25
  74. package/dist/task/auto-io.js +57 -29
  75. package/dist/task/auto-orchestrator.d.ts +26 -24
  76. package/dist/task/auto-orchestrator.js +192 -165
  77. package/dist/task/auto-prompts.d.ts +36 -24
  78. package/dist/task/auto-prompts.js +40 -26
  79. package/dist/task/autofix-ledger.d.ts +27 -25
  80. package/dist/task/autofix-ledger.js +29 -26
  81. package/dist/task/batch-test-task.d.ts +20 -12
  82. package/dist/task/batch-test-task.js +67 -60
  83. package/dist/task/boot-probe.d.ts +60 -44
  84. package/dist/task/boot-probe.js +91 -72
  85. package/dist/task/cancel-input.d.ts +30 -16
  86. package/dist/task/cancel-input.js +20 -11
  87. package/dist/task/cancel-points.d.ts +27 -20
  88. package/dist/task/cancel-points.js +30 -22
  89. package/dist/task/child-runner.d.ts +124 -55
  90. package/dist/task/child-runner.js +298 -90
  91. package/dist/task/child-status.d.ts +23 -16
  92. package/dist/task/child-status.js +23 -16
  93. package/dist/task/clamp-output.js +12 -5
  94. package/dist/task/command-run.d.ts +31 -28
  95. package/dist/task/command-run.js +44 -35
  96. package/dist/task/command-shrink.d.ts +25 -18
  97. package/dist/task/command-shrink.js +37 -31
  98. package/dist/task/command-watchdog.d.ts +9 -6
  99. package/dist/task/command-watchdog.js +21 -15
  100. package/dist/task/context-attribution.d.ts +34 -26
  101. package/dist/task/context-attribution.js +34 -26
  102. package/dist/task/context-silence.d.ts +39 -29
  103. package/dist/task/context-silence.js +35 -25
  104. package/dist/task/context-usage.d.ts +16 -9
  105. package/dist/task/context-usage.js +16 -9
  106. package/dist/task/contracts.d.ts +8 -4
  107. package/dist/task/contracts.js +25 -17
  108. package/dist/task/coverage-loop.d.ts +22 -18
  109. package/dist/task/coverage-loop.js +35 -30
  110. package/dist/task/critique-probes.d.ts +13 -14
  111. package/dist/task/critique-probes.js +50 -39
  112. package/dist/task/debug-log.d.ts +13 -5
  113. package/dist/task/debug-log.js +32 -20
  114. package/dist/task/decompose-fidelity.d.ts +11 -9
  115. package/dist/task/decompose-fidelity.js +38 -33
  116. package/dist/task/decompose-granularity.d.ts +41 -38
  117. package/dist/task/decompose-granularity.js +41 -38
  118. package/dist/task/deep-render-check.d.ts +22 -14
  119. package/dist/task/deep-render-check.js +40 -31
  120. package/dist/task/dropped-input.d.ts +12 -7
  121. package/dist/task/dropped-input.js +5 -2
  122. package/dist/task/enforce-attribution.d.ts +38 -47
  123. package/dist/task/enforce-attribution.js +46 -52
  124. package/dist/task/enforce-guidelines.d.ts +31 -20
  125. package/dist/task/enforce-guidelines.js +32 -21
  126. package/dist/task/enrichment.d.ts +7 -2
  127. package/dist/task/enrichment.js +26 -14
  128. package/dist/task/env-notes.d.ts +16 -7
  129. package/dist/task/env-notes.js +48 -31
  130. package/dist/task/env-template-closure.d.ts +4 -4
  131. package/dist/task/env-template-closure.js +42 -34
  132. package/dist/task/external-context.d.ts +28 -21
  133. package/dist/task/external-context.js +17 -12
  134. package/dist/task/failure-classifier.d.ts +4 -5
  135. package/dist/task/failure-classifier.js +30 -8
  136. package/dist/task/file-inventory.d.ts +15 -11
  137. package/dist/task/file-inventory.js +25 -22
  138. package/dist/task/final-gate-fix.d.ts +74 -86
  139. package/dist/task/final-gate-fix.js +97 -116
  140. package/dist/task/final-gate-progress.d.ts +29 -46
  141. package/dist/task/final-gate-progress.js +40 -51
  142. package/dist/task/final-gate.d.ts +64 -97
  143. package/dist/task/final-gate.js +192 -199
  144. package/dist/task/fix-child.d.ts +21 -27
  145. package/dist/task/fix-child.js +21 -27
  146. package/dist/task/foreign-path.d.ts +6 -5
  147. package/dist/task/foreign-path.js +0 -0
  148. package/dist/task/frozen-conflict.d.ts +9 -10
  149. package/dist/task/frozen-conflict.js +61 -64
  150. package/dist/task/frozen-path-guard.d.ts +35 -14
  151. package/dist/task/frozen-path-guard.js +56 -39
  152. package/dist/task/gate-child.d.ts +27 -28
  153. package/dist/task/gate-child.js +36 -35
  154. package/dist/task/gate-deps.d.ts +34 -27
  155. package/dist/task/gate-deps.js +169 -159
  156. package/dist/task/gate-tally.d.ts +77 -80
  157. package/dist/task/gate-tally.js +65 -68
  158. package/dist/task/git-state-guard.d.ts +15 -11
  159. package/dist/task/git-state-guard.js +76 -66
  160. package/dist/task/impl-widget.d.ts +25 -16
  161. package/dist/task/impl-widget.js +27 -17
  162. package/dist/task/implementation-guards.d.ts +26 -0
  163. package/dist/task/implementation-guards.js +177 -0
  164. package/dist/task/implementation-thinking.d.ts +33 -31
  165. package/dist/task/implementation-thinking.js +5 -6
  166. package/dist/task/implementation-turn.d.ts +39 -31
  167. package/dist/task/implementation-turn.js +41 -28
  168. package/dist/task/inline-markdown.d.ts +20 -7
  169. package/dist/task/inline-markdown.js +15 -6
  170. package/dist/task/launch-config-gap.js +25 -39
  171. package/dist/task/launch-contract.d.ts +18 -21
  172. package/dist/task/launch-contract.js +28 -30
  173. package/dist/task/launch-manifest.d.ts +6 -2
  174. package/dist/task/launch-manifest.js +35 -34
  175. package/dist/task/ledger.js +16 -14
  176. package/dist/task/lint-fix.d.ts +6 -8
  177. package/dist/task/lint-fix.js +67 -69
  178. package/dist/task/loop-detector.d.ts +27 -8
  179. package/dist/task/loop-detector.js +38 -14
  180. package/dist/task/mid-run-input.d.ts +17 -15
  181. package/dist/task/mid-run-input.js +17 -15
  182. package/dist/task/orchestrator.d.ts +24 -28
  183. package/dist/task/orchestrator.js +89 -66
  184. package/dist/task/orientation.d.ts +18 -23
  185. package/dist/task/orientation.js +24 -31
  186. package/dist/task/owned-freeze-conflict.d.ts +21 -20
  187. package/dist/task/owned-freeze-conflict.js +52 -85
  188. package/dist/task/owned-freeze-reassign.d.ts +40 -60
  189. package/dist/task/owned-freeze-reassign.js +41 -61
  190. package/dist/task/parsers.d.ts +4 -2
  191. package/dist/task/parsers.js +4 -4
  192. package/dist/task/phases.d.ts +41 -48
  193. package/dist/task/phases.js +196 -252
  194. package/dist/task/plan-io.d.ts +6 -7
  195. package/dist/task/plan-io.js +6 -7
  196. package/dist/task/plan-orchestrator.d.ts +10 -8
  197. package/dist/task/plan-orchestrator.js +14 -10
  198. package/dist/task/plan-prompts.d.ts +6 -5
  199. package/dist/task/plan-prompts.js +6 -5
  200. package/dist/task/plan-readonly.d.ts +4 -5
  201. package/dist/task/plan-readonly.js +4 -5
  202. package/dist/task/plan-rounds.d.ts +17 -29
  203. package/dist/task/plan-rounds.js +21 -34
  204. package/dist/task/plan-session.d.ts +58 -72
  205. package/dist/task/plan-session.js +61 -83
  206. package/dist/task/probe-gaming.d.ts +28 -27
  207. package/dist/task/probe-gaming.js +0 -0
  208. package/dist/task/prohibition-probe.d.ts +14 -16
  209. package/dist/task/prompts.d.ts +3 -4
  210. package/dist/task/prompts.js +17 -26
  211. package/dist/task/qa-transcript.d.ts +15 -22
  212. package/dist/task/qa-transcript.js +15 -21
  213. package/dist/task/question-box.d.ts +17 -13
  214. package/dist/task/question-box.js +19 -15
  215. package/dist/task/question-dedup.d.ts +6 -7
  216. package/dist/task/question-dedup.js +13 -14
  217. package/dist/task/question-dialog.d.ts +22 -32
  218. package/dist/task/question-dialog.js +22 -32
  219. package/dist/task/question-source.d.ts +18 -44
  220. package/dist/task/question-source.js +22 -51
  221. package/dist/task/refuted-constraint.d.ts +11 -31
  222. package/dist/task/refuted-constraint.js +27 -51
  223. package/dist/task/regenerable-artifacts.d.ts +12 -31
  224. package/dist/task/regenerable-artifacts.js +12 -31
  225. package/dist/task/render-check.d.ts +11 -22
  226. package/dist/task/render-check.js +33 -46
  227. package/dist/task/repo-health-check.d.ts +10 -14
  228. package/dist/task/repo-health-check.js +17 -23
  229. package/dist/task/requirements.d.ts +38 -71
  230. package/dist/task/requirements.js +78 -126
  231. package/dist/task/research-fanout-budget.d.ts +51 -88
  232. package/dist/task/research-fanout-budget.js +51 -88
  233. package/dist/task/research-worker.d.ts +29 -39
  234. package/dist/task/research-worker.js +37 -61
  235. package/dist/task/resume-gap.d.ts +14 -15
  236. package/dist/task/root-cause-repair.d.ts +9 -9
  237. package/dist/task/root-cause-repair.js +28 -40
  238. package/dist/task/run-bracket.d.ts +10 -13
  239. package/dist/task/run-end.d.ts +12 -22
  240. package/dist/task/run-end.js +8 -16
  241. package/dist/task/run-final-gate.d.ts +19 -21
  242. package/dist/task/run-final-gate.js +62 -80
  243. package/dist/task/runner-globs.d.ts +12 -13
  244. package/dist/task/runner-globs.js +12 -13
  245. package/dist/task/runner-resolve.d.ts +9 -9
  246. package/dist/task/runner-resolve.js +22 -23
  247. package/dist/task/script-escape.d.ts +10 -12
  248. package/dist/task/script-escape.js +13 -14
  249. package/dist/task/serve-entry.d.ts +1 -1
  250. package/dist/task/serve-entry.js +22 -25
  251. package/dist/task/service-blocks.js +4 -2
  252. package/dist/task/shipped-source.d.ts +11 -29
  253. package/dist/task/shipped-source.js +11 -29
  254. package/dist/task/skip-escape.js +10 -14
  255. package/dist/task/spec-urls.d.ts +26 -65
  256. package/dist/task/spec-urls.js +26 -65
  257. package/dist/task/spec-validation.d.ts +17 -20
  258. package/dist/task/spec-validation.js +17 -20
  259. package/dist/task/stall-detector.d.ts +23 -30
  260. package/dist/task/stall-detector.js +23 -30
  261. package/dist/task/stream-watchdog.d.ts +14 -12
  262. package/dist/task/stream-watchdog.js +14 -12
  263. package/dist/task/substitution-probe.d.ts +17 -20
  264. package/dist/task/substitution-probe.js +17 -20
  265. package/dist/task/task-gates.d.ts +36 -41
  266. package/dist/task/task-gates.js +95 -106
  267. package/dist/task/task-io.d.ts +4 -4
  268. package/dist/task/task-io.js +4 -4
  269. package/dist/task/task-parsers.js +4 -3
  270. package/dist/task/task-provenance.d.ts +2 -2
  271. package/dist/task/task-provenance.js +11 -13
  272. package/dist/task/task-types.d.ts +4 -3
  273. package/dist/task/terminal-outcome.d.ts +14 -16
  274. package/dist/task/terminal-outcome.js +12 -14
  275. package/dist/task/test-assembly.d.ts +13 -20
  276. package/dist/task/test-assembly.js +13 -20
  277. package/dist/task/timings.d.ts +5 -3
  278. package/dist/task/timings.js +5 -3
  279. package/dist/task/title-label.d.ts +9 -4
  280. package/dist/task/title-label.js +9 -4
  281. package/dist/task/type-only-answer.d.ts +44 -52
  282. package/dist/task/type-only-answer.js +44 -52
  283. package/dist/task/unfailable-command.d.ts +18 -24
  284. package/dist/task/unfailable-command.js +21 -27
  285. package/dist/task/unknown-routing.d.ts +10 -4
  286. package/dist/task/unknown-routing.js +10 -4
  287. package/dist/task/user-directives.d.ts +5 -8
  288. package/dist/task/user-directives.js +5 -8
  289. package/dist/task/verify-quality.d.ts +18 -22
  290. package/dist/task/verify-quality.js +45 -46
  291. package/dist/task/verify-reconcile.d.ts +15 -10
  292. package/dist/task/verify-reconcile.js +45 -43
  293. package/dist/task/verify-resolution.d.ts +24 -20
  294. package/dist/task/verify-resolution.js +51 -50
  295. package/dist/task/verify-work.d.ts +59 -66
  296. package/dist/task/verify-work.js +101 -138
  297. package/dist/task/widget.d.ts +15 -14
  298. package/dist/task/widget.js +22 -17
  299. package/dist/task/wiring-claims.d.ts +25 -32
  300. package/dist/task/wiring-claims.js +30 -35
  301. package/dist/task/write-guard.d.ts +39 -39
  302. package/dist/task/write-guard.js +48 -51
  303. package/dist/task/yolo.d.ts +34 -30
  304. package/dist/task/yolo.js +42 -37
  305. package/dist/workers/abstention.d.ts +21 -41
  306. package/dist/workers/abstention.js +27 -48
  307. package/dist/workers/brave-search.d.ts +4 -3
  308. package/dist/workers/brave-search.js +5 -2
  309. package/dist/workers/brave-warning.d.ts +7 -4
  310. package/dist/workers/brave-warning.js +19 -7
  311. package/dist/workers/ddg-search.d.ts +6 -6
  312. package/dist/workers/ddg-search.js +18 -12
  313. package/dist/workers/docs-cache.js +5 -2
  314. package/dist/workers/docs-chunk.d.ts +30 -37
  315. package/dist/workers/docs-chunk.js +37 -41
  316. package/dist/workers/docs-core.d.ts +28 -44
  317. package/dist/workers/docs-core.js +25 -44
  318. package/dist/workers/docs-index.js +4 -3
  319. package/dist/workers/docs-lookup.d.ts +15 -22
  320. package/dist/workers/docs-lookup.js +12 -21
  321. package/dist/workers/docs-project.d.ts +15 -9
  322. package/dist/workers/docs-project.js +17 -10
  323. package/dist/workers/docs-resolve.d.ts +19 -20
  324. package/dist/workers/docs-resolve.js +35 -32
  325. package/dist/workers/docs-retrieve.d.ts +5 -6
  326. package/dist/workers/docs-retrieve.js +18 -15
  327. package/dist/workers/exa-search.d.ts +9 -6
  328. package/dist/workers/exa-search.js +23 -12
  329. package/dist/workers/fetch-core.d.ts +13 -16
  330. package/dist/workers/fetch-core.js +23 -23
  331. package/dist/workers/focused-extractor.d.ts +13 -12
  332. package/dist/workers/focused-extractor.js +27 -19
  333. package/dist/workers/html-clean.js +24 -14
  334. package/dist/workers/http-request.d.ts +28 -20
  335. package/dist/workers/http-request.js +22 -17
  336. package/dist/workers/npm-version.d.ts +28 -11
  337. package/dist/workers/npm-version.js +24 -15
  338. package/dist/workers/phantom-imports.d.ts +15 -12
  339. package/dist/workers/phantom-imports.js +30 -24
  340. package/dist/workers/pi-worker-core.d.ts +65 -96
  341. package/dist/workers/pi-worker-core.js +93 -181
  342. package/dist/workers/pi-worker-docs.d.ts +24 -19
  343. package/dist/workers/pi-worker-docs.js +67 -76
  344. package/dist/workers/pi-worker-fetch.d.ts +7 -3
  345. package/dist/workers/pi-worker-fetch.js +27 -19
  346. package/dist/workers/pi-worker-search.js +12 -8
  347. package/dist/workers/pi-worker.d.ts +9 -4
  348. package/dist/workers/pi-worker.js +21 -14
  349. package/dist/workers/reasoning-warning.d.ts +18 -17
  350. package/dist/workers/reasoning-warning.js +22 -20
  351. package/dist/workers/research-cache.js +50 -78
  352. package/dist/workers/search-core.js +7 -5
  353. package/dist/workers/search-types.d.ts +10 -9
  354. package/dist/workers/search-types.js +9 -8
  355. package/dist/workers/session-hint.d.ts +13 -14
  356. package/dist/workers/session-hint.js +8 -9
  357. package/dist/workers/shared.d.ts +21 -25
  358. package/dist/workers/shared.js +0 -0
  359. package/dist/workers/single-read-extension.d.ts +14 -7
  360. package/dist/workers/single-read-extension.js +14 -7
  361. package/dist/workers/single-read-guard.d.ts +27 -30
  362. package/dist/workers/single-read-guard.js +36 -36
  363. package/dist/workers/typeonly-log.d.ts +12 -9
  364. package/dist/workers/typeonly-log.js +29 -33
  365. package/dist/workers/worker-channels.d.ts +15 -23
  366. package/dist/workers/worker-channels.js +15 -23
  367. package/dist/workers/worker-failure.d.ts +38 -46
  368. package/dist/workers/worker-failure.js +31 -39
  369. package/dist/workers/worker-kill.d.ts +25 -26
  370. package/dist/workers/worker-kill.js +16 -19
  371. package/dist/workers/worker-profiles.d.ts +54 -56
  372. package/dist/workers/worker-profiles.js +63 -39
  373. package/package.json +10 -8
@@ -3,17 +3,17 @@
3
3
  *
4
4
  * WHY THIS EXISTS
5
5
  * ---------------
6
- * Every pi-task child inherits `defaultThinkingLevel` from the host's
7
- * `~/.pi/agent/settings.json`, because `CHILD_BASE_ARGS`
8
- * (shared/child-process.ts) passes no `--thinking`. That is one level for ~33
9
- * children whose jobs are nothing alike: a planner that must reason to produce a
10
- * plan at all, and a label-compressor that emits four words.
11
- *
12
- * The control that WAS here appending Qwen3's `/no_think` soft switch to eight
13
- * promptsis measured inert. Captured live against Qwen3.8-27B with server
14
- * thinking on and `/no_think` still in the prompt: median 17k-char trace anyway,
15
- * n=25. A harness cannot disable thinking by prompt text; the chat-template
16
- * kwarg beats it. `--thinking` sets that kwarg, so it is the lever that works.
6
+ * `CHILD_BASE_ARGS` (shared/child-process.ts) passes no `--thinking`, so every
7
+ * pi-task child inherits `defaultThinkingLevel` from the host's
8
+ * `~/.pi/agent/settings.json`. That is one level for children whose jobs are
9
+ * nothing alike: a planner that must reason to produce a plan at all, and a
10
+ * label-compressor that emits four words.
11
+ *
12
+ * `--thinking <level>` is pi's own flag. For a Qwen model it reaches the server
13
+ * as `enable_thinking` either a top-level parameter or inside
14
+ * `chat_template_kwargs`, depending on the model's declared thinking format
15
+ * (pi-ai `api/openai-completions.js`). Prompt text cannot reach that kwarg, so
16
+ * the flag is the only lever on it.
17
17
  *
18
18
  * PURE MODULE — no imports with runtime side effects, so `config.ts` can import
19
19
  * the table and the sanitizers during its own module evaluation. `getConfig()`
@@ -28,21 +28,17 @@ import type { PiTaskConfig } from './config.js';
28
28
  *
29
29
  * Grouped by JOB, not by spawn mechanism — two children that both go through
30
30
  * `runWorker` (a research worker and a verify gate) want different amounts of
31
- * thinking, while two that reach the model by different code paths (`refine` via
32
- * runPhaseChild, `compress-label` via the same) want the same.
31
+ * thinking, while `refine` in phases.ts and `compress-label` in title-label.ts
32
+ * want the same amount and share the `phase` cell.
33
33
  *
34
- * - `research` the ad-hoc `pi-worker` subagent tool, and the FALLBACK the four
34
+ * - `research` the ad-hoc `pi-worker` subagent tool, and the fallback the four
35
35
  * research workers use when their own cell is unset
36
36
  * - `research:files` / `research:apis` / `research:context` / `research:tooling`
37
- * one cell per research worker. They are FOUR CELLS, not one,
38
- * because the four wander differently: over mx5-n 2026-08-27
39
- * every one of the 40.7 wasted research minutes was a restart
40
- * in `tooling` or `context`, and `files` and `apis` never
41
- * restarted once. A single `research` cell cannot be set to
42
- * pay for thinking where it is needed without also paying for
43
- * it where it measurably is not.
37
+ * one cell per research worker, so a level can be paid for in
38
+ * one worker without paying for it in the other three
44
39
  * - `phase` refine, verify-tooling, grill, compose, critique, compress-label
45
- * - `planning` /task-auto's clarify / decompose / extract children
40
+ * - `planning` /task-auto's planning children — clarify, decompose, and the
41
+ * extract/coverage passes around them
46
42
  * - `plan` /task-plan's question and answer children
47
43
  * - `gate` enforce, verify, lint-fix, final-fix, recommend
48
44
  * - `extraction` the --no-tools focused docs/fetch extractors
@@ -52,7 +48,7 @@ export type ReasoningGroup = 'research' | 'research:files' | 'research:apis' | '
52
48
  export declare const REASONING_GROUPS: readonly ReasoningGroup[];
53
49
  /**
54
50
  * The four profiles offered by /task-config.
55
- * - `default` the measured per-group table below
51
+ * - `default` the per-group table below
56
52
  * - `on` one level everywhere ({@link REASONING_ON_LEVEL})
57
53
  * - `off` no thinking anywhere
58
54
  * - `custom` the user's own per-group table
@@ -63,87 +59,35 @@ export declare const REASONING_MODES: readonly ReasoningMode[];
63
59
  * What one group is set to.
64
60
  *
65
61
  * `inherit` is NOT a pi thinking level — it means EMIT NO FLAG, so the child
66
- * falls back to `settings.json` exactly as it does today. It is what lets this
67
- * whole feature ship as a zero-behaviour-change commit: with every cell at
68
- * `inherit`, every child's argv is byte-identical to the version before it.
62
+ * falls back to `settings.json`. With every cell at `inherit` this whole table
63
+ * is a no-op and every child's argv is byte-identical to a build without it.
69
64
  */
70
65
  export type GroupSetting = 'inherit' | 'off' | 'minimal' | 'low' | 'medium' | 'high';
71
66
  /**
72
- * The settings offered in /task-config: `inherit` plus pi's OWN cycle
73
- * (`THINKING_LEVELS` in pi-coding-agent's agent-session).
67
+ * The settings offered in /task-config: `inherit` plus the standard part of pi's
68
+ * own thinking cycle.
74
69
  *
75
- * `xhigh` and `max` are DELIBERATELY ABSENT. pi treats an absent
76
- * `thinkingLevelMap` entry as "supported" for the standard levels but requires a
77
- * declared entry for the extended two (pi-ai `getSupportedThinkingLevels`), so a
78
- * model with no map would receive the raw string and Qwen3.8's chat template
79
- * answers an unknown effort with HTTP 500, not a clamp. Offering a level that pi's
80
- * own UI does not is how you ship a `--thinking` that hard-fails on some models.
81
- * This machine already reaches xhigh through `"high": "xhigh"` in its map.
70
+ * `xhigh` and `max` are DELIBERATELY ABSENT. pi-ai's `getSupportedThinkingLevels`
71
+ * accepts the standard levels for any reasoning model, but offers `xhigh` and
72
+ * `max` only when the model declares them in its `thinkingLevelMap`. Offering
73
+ * them here would put a level in this UI that pi's own UI may not have.
82
74
  */
83
75
  export declare const REASONING_SETTINGS: readonly GroupSetting[];
84
- /**
85
- * The level mode `on` uses, and the treatment arm of the A/B that fills in
86
- * {@link DEFAULT_REASONING_TABLE}. ONE constant so the shipped config and the
87
- * measurement behind it can never drift apart.
88
- */
76
+ /** The level mode `on` uses. */
89
77
  export declare const REASONING_ON_LEVEL: GroupSetting;
90
78
  /**
91
79
  * The per-group table used by mode `default`.
92
80
  *
93
- * A cell is `inherit` until it has been MEASURED, and then it names a level.
94
- * Every non-`inherit` cell here must be a live A/B result
95
- * (scripts/live-reasoning-group-ab.ts, n>=20 per arm, arms `off` vs
96
- * {@link REASONING_ON_LEVEL}) carrying its date, model, counts and RUNG in the
97
- * comment beside it. A cell filled in from intuition is WORSE than `inherit`:
98
- * `inherit` is honest about knowing nothing, while a wrong cell is a
99
- * measurement nobody took, wearing the authority of a default.
100
- *
101
- * THE RUNG IS PART OF THE RESULT, so read it before trusting a cell. The
102
- * harness returns a two-way verdict — `off` or {@link REASONING_ON_LEVEL},
103
- * never a tie — down a three-rung ladder: rung 1 a significant quality
104
- * difference, rung 2 quality level and a significant speed difference, rung 3
105
- * nothing separated the arms and the cheaper level carries it by a stated
106
- * prior. A rung-3 cell is a DECISION, not a finding: it says "no reason found
107
- * to pay for thinking", not "thinking was shown not to help". At n=20/arm the
108
- * run is only powered for large effects, so rung 3 is the common outcome and
109
- * an absent effect and an undetected one look identical from here.
110
- *
111
- * NOTHING IS ALREADY ON THE RECORD, and the belief that something was is worth
112
- * writing down. This docstring used to say magicknumbers.md had measured the
113
- * decompose child "with one knob, `enable_thinking` — off answered 1/10, on
114
- * answered 8/8", and treated that as the split the A/B had to reproduce.
115
- *
116
- * VERIFIED 2026-08-27: the string "8/8" does not appear in magicknumbers.md, and
117
- * never has (`git log -S`; the phrase was introduced by THIS file's own commit,
118
- * `0b91f71`). What that page records is
119
- *
120
- * "Measured, captured decompose request, REASONING OFF, n=10 per cell:
121
- * 1/10 → 7/10 (stall detector) → 8/9 (all three)."
122
- *
123
- * — a ladder over THREE GUARDS at CONSTANT reasoning off, from `fea7bbb`. Both
124
- * endpoints are the same arm. `enable_thinking` is not its knob and never was,
125
- * and the "8/8" is a misread of the ladder's last cell, `8/9`.
126
- *
127
- * So no reasoning effect on `planning` had ever been measured, and the 10/10 vs
128
- * 10/10 read on the current tree was not a contradiction of a prior result — it
129
- * was the only reading there had ever been. The controls that page DOES record
130
- * (Qwen3.6-27B 10/10, Gemma4-12B 10/10) are likewise reasoning off, so they say
131
- * nothing about a cell flipping by model either.
132
- *
133
- * The `planning` cell below is the FIRST measured reading of that knob, taken
134
- * 2026-08-27 on a citation-fidelity axis built for it. It is also the first cell
135
- * that is not `off`.
81
+ * `inherit` says nothing was decided for that group and the child keeps the
82
+ * host's level. Any other value is a decision this project made for that
83
+ * group's job, and `/task-config` mode `custom` overrides all of it.
136
84
  */
137
85
  export declare const DEFAULT_REASONING_TABLE: Readonly<Record<ReasoningGroup, GroupSetting>>;
138
- /**
139
- * A hand-edited or stale mode must not reach {@link resolveReasoning}'s switch as
140
- * an unknown string — the `default:` arm would silently absorb it and the user
141
- * would see "custom" in the file and the default table in behaviour.
142
- */
86
+ /** A stored mode, or `default` when the value is not one. */
143
87
  export declare function sanitizeReasoningMode(value: unknown): ReasoningMode;
144
88
  /**
145
- * Child NAME → reasoning group, for every child that goes through
146
- * `runPhaseChild` / `runPlanningChild`.
89
+ * Child NAME → reasoning group, for every child spawned under a name:
90
+ * `runPhaseChild`, `runPlanningChild`, and the research workers' `spec.label`.
147
91
  *
148
92
  * WHY KEYED ON THE NAME
149
93
  * ---------------------
@@ -155,15 +99,14 @@ export declare function sanitizeReasoningMode(value: unknown): ReasoningMode;
155
99
  * express something the call site already says out loud.
156
100
  *
157
101
  * AN UNMAPPED NAME IS A BUILD FAILURE, not a silent `inherit`.
158
- * `reasoning-groups.test.ts` scans every literal child name in src/ and fails if
159
- * it is missing here. A defaulting lookup would let a phase added next year opt
160
- * itself out of a measured setting without anyone deciding to — which is exactly
161
- * how `/no_think` ended up applied to eight prompts and read by none of them.
102
+ * `reasoning-groups.test.ts` scans every literal child name under `src/task`
103
+ * and fails if it is missing here. A defaulting lookup would let a phase added
104
+ * later opt itself out of the table without anyone deciding to.
162
105
  *
163
106
  * The gate and extraction groups are NOT here: those children reach the model
164
- * through `runWorker` / `focusedChildArgs` at a site with no name in scope, so
165
- * the group is passed directly. The four RESEARCH workers do have a name — their
166
- * `spec.label` — and so they are here.
107
+ * through `groupThinkingArgs('gate' | 'extraction')` at call sites with no name
108
+ * in scope (gate-deps.ts, fetch-core.ts, docs-core.ts, pi-worker-docs.ts). The
109
+ * four research workers do have a name — their `spec.label` — so they are here.
167
110
  */
168
111
  export declare const REASONING_GROUP_BY_CHILD: Readonly<Record<string, ReasoningGroup>>;
169
112
  /**
@@ -198,14 +141,10 @@ export declare function resolveReasoning(group: ReasoningGroup, cfg: PiTaskConfi
198
141
  /**
199
142
  * The WHOLE table, as this config will actually run it.
200
143
  *
201
- * This is the question every caller has — the settings menu when it repaints,
202
- * the mismatch warning when it scans, the custom-mode seeder when it freezes the
203
- * table and each of them used to write the same loop over `resolveReasoning`.
204
- * A per-key accessor with no whole-table companion is also how a THIRD shape got
205
- * invented (`Array<{group, setting}>`) and leaked into `reasoningMismatches`.
206
- *
207
- * `resolveReasoning` stays: one group is still a fair question, and it is the
208
- * only place the four modes are interpreted.
144
+ * The question the mismatch scan and the custom-mode seeder both ask. One
145
+ * accessor, so they cannot each invent their own shape for it. The settings menu
146
+ * asks the single-group question instead, through `resolveReasoning` which is
147
+ * the only place the four modes are interpreted.
209
148
  */
210
149
  export declare function effectiveReasoning(cfg: PiTaskConfig): Record<ReasoningGroup, GroupSetting>;
211
150
  /**