@caupulican/pi-adaptative 0.80.85 → 0.80.88

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 (340) hide show
  1. package/CHANGELOG.md +160 -1
  2. package/dist/core/agent-session.d.ts +394 -1
  3. package/dist/core/agent-session.d.ts.map +1 -1
  4. package/dist/core/agent-session.js +1862 -46
  5. package/dist/core/agent-session.js.map +1 -1
  6. package/dist/core/autonomy/approval-gate.d.ts +4 -0
  7. package/dist/core/autonomy/approval-gate.d.ts.map +1 -0
  8. package/dist/core/autonomy/approval-gate.js +27 -0
  9. package/dist/core/autonomy/approval-gate.js.map +1 -0
  10. package/dist/core/autonomy/bounded-completion.d.ts +27 -0
  11. package/dist/core/autonomy/bounded-completion.d.ts.map +1 -0
  12. package/dist/core/autonomy/bounded-completion.js +44 -0
  13. package/dist/core/autonomy/bounded-completion.js.map +1 -0
  14. package/dist/core/autonomy/contracts.d.ts +129 -0
  15. package/dist/core/autonomy/contracts.d.ts.map +1 -0
  16. package/dist/core/autonomy/contracts.js +2 -0
  17. package/dist/core/autonomy/contracts.js.map +1 -0
  18. package/dist/core/autonomy/gates.d.ts +15 -0
  19. package/dist/core/autonomy/gates.d.ts.map +1 -0
  20. package/dist/core/autonomy/gates.js +205 -0
  21. package/dist/core/autonomy/gates.js.map +1 -0
  22. package/dist/core/autonomy/lane-tracker.d.ts +48 -0
  23. package/dist/core/autonomy/lane-tracker.d.ts.map +1 -0
  24. package/dist/core/autonomy/lane-tracker.js +125 -0
  25. package/dist/core/autonomy/lane-tracker.js.map +1 -0
  26. package/dist/core/autonomy/path-scope.d.ts +9 -0
  27. package/dist/core/autonomy/path-scope.d.ts.map +1 -0
  28. package/dist/core/autonomy/path-scope.js +122 -0
  29. package/dist/core/autonomy/path-scope.js.map +1 -0
  30. package/dist/core/autonomy/risk-assessment.d.ts +3 -0
  31. package/dist/core/autonomy/risk-assessment.d.ts.map +1 -0
  32. package/dist/core/autonomy/risk-assessment.js +122 -0
  33. package/dist/core/autonomy/risk-assessment.js.map +1 -0
  34. package/dist/core/autonomy/session-lane-record.d.ts +10 -0
  35. package/dist/core/autonomy/session-lane-record.d.ts.map +1 -0
  36. package/dist/core/autonomy/session-lane-record.js +36 -0
  37. package/dist/core/autonomy/session-lane-record.js.map +1 -0
  38. package/dist/core/autonomy/status.d.ts +40 -0
  39. package/dist/core/autonomy/status.d.ts.map +1 -0
  40. package/dist/core/autonomy/status.js +107 -0
  41. package/dist/core/autonomy/status.js.map +1 -0
  42. package/dist/core/autonomy/subagent-prompt.d.ts +21 -0
  43. package/dist/core/autonomy/subagent-prompt.d.ts.map +1 -0
  44. package/dist/core/autonomy/subagent-prompt.js +28 -0
  45. package/dist/core/autonomy/subagent-prompt.js.map +1 -0
  46. package/dist/core/autonomy/telemetry-events.d.ts +18 -0
  47. package/dist/core/autonomy/telemetry-events.d.ts.map +1 -0
  48. package/dist/core/autonomy/telemetry-events.js +60 -0
  49. package/dist/core/autonomy/telemetry-events.js.map +1 -0
  50. package/dist/core/context/artifact-retrieval.d.ts +49 -0
  51. package/dist/core/context/artifact-retrieval.d.ts.map +1 -0
  52. package/dist/core/context/artifact-retrieval.js +49 -0
  53. package/dist/core/context/artifact-retrieval.js.map +1 -0
  54. package/dist/core/context/context-artifacts.d.ts +94 -0
  55. package/dist/core/context/context-artifacts.d.ts.map +1 -0
  56. package/dist/core/context/context-artifacts.js +307 -0
  57. package/dist/core/context/context-artifacts.js.map +1 -0
  58. package/dist/core/context/context-audit.d.ts +66 -0
  59. package/dist/core/context/context-audit.d.ts.map +1 -0
  60. package/dist/core/context/context-audit.js +173 -0
  61. package/dist/core/context/context-audit.js.map +1 -0
  62. package/dist/core/context/context-item.d.ts +117 -0
  63. package/dist/core/context/context-item.d.ts.map +1 -0
  64. package/dist/core/context/context-item.js +36 -0
  65. package/dist/core/context/context-item.js.map +1 -0
  66. package/dist/core/context/context-prompt-enforcement.d.ts +73 -0
  67. package/dist/core/context/context-prompt-enforcement.d.ts.map +1 -0
  68. package/dist/core/context/context-prompt-enforcement.js +153 -0
  69. package/dist/core/context/context-prompt-enforcement.js.map +1 -0
  70. package/dist/core/context/context-prompt-policy.d.ts +90 -0
  71. package/dist/core/context/context-prompt-policy.d.ts.map +1 -0
  72. package/dist/core/context/context-prompt-policy.js +73 -0
  73. package/dist/core/context/context-prompt-policy.js.map +1 -0
  74. package/dist/core/context/context-retention.d.ts +36 -0
  75. package/dist/core/context/context-retention.d.ts.map +1 -0
  76. package/dist/core/context/context-retention.js +108 -0
  77. package/dist/core/context/context-retention.js.map +1 -0
  78. package/dist/core/context/context-store.d.ts +37 -0
  79. package/dist/core/context/context-store.d.ts.map +1 -0
  80. package/dist/core/context/context-store.js +45 -0
  81. package/dist/core/context/context-store.js.map +1 -0
  82. package/dist/core/context/memory-diagnostics.d.ts +50 -0
  83. package/dist/core/context/memory-diagnostics.d.ts.map +1 -0
  84. package/dist/core/context/memory-diagnostics.js +43 -0
  85. package/dist/core/context/memory-diagnostics.js.map +1 -0
  86. package/dist/core/context/memory-index-store.d.ts +28 -0
  87. package/dist/core/context/memory-index-store.d.ts.map +1 -0
  88. package/dist/core/context/memory-index-store.js +38 -0
  89. package/dist/core/context/memory-index-store.js.map +1 -0
  90. package/dist/core/context/memory-prompt-block.d.ts +34 -0
  91. package/dist/core/context/memory-prompt-block.d.ts.map +1 -0
  92. package/dist/core/context/memory-prompt-block.js +58 -0
  93. package/dist/core/context/memory-prompt-block.js.map +1 -0
  94. package/dist/core/context/memory-provider-contract.d.ts +114 -0
  95. package/dist/core/context/memory-provider-contract.d.ts.map +1 -0
  96. package/dist/core/context/memory-provider-contract.js +121 -0
  97. package/dist/core/context/memory-provider-contract.js.map +1 -0
  98. package/dist/core/context/memory-retrieval.d.ts +27 -0
  99. package/dist/core/context/memory-retrieval.d.ts.map +1 -0
  100. package/dist/core/context/memory-retrieval.js +91 -0
  101. package/dist/core/context/memory-retrieval.js.map +1 -0
  102. package/dist/core/context/okf-memory-provider.d.ts +26 -0
  103. package/dist/core/context/okf-memory-provider.d.ts.map +1 -0
  104. package/dist/core/context/okf-memory-provider.js +154 -0
  105. package/dist/core/context/okf-memory-provider.js.map +1 -0
  106. package/dist/core/context/okf-memory.d.ts +42 -0
  107. package/dist/core/context/okf-memory.d.ts.map +1 -0
  108. package/dist/core/context/okf-memory.js +175 -0
  109. package/dist/core/context/okf-memory.js.map +1 -0
  110. package/dist/core/context/policy-engine.d.ts +66 -0
  111. package/dist/core/context/policy-engine.d.ts.map +1 -0
  112. package/dist/core/context/policy-engine.js +171 -0
  113. package/dist/core/context/policy-engine.js.map +1 -0
  114. package/dist/core/context/policy-types.d.ts +102 -0
  115. package/dist/core/context/policy-types.d.ts.map +1 -0
  116. package/dist/core/context/policy-types.js +7 -0
  117. package/dist/core/context/policy-types.js.map +1 -0
  118. package/dist/core/context/sqlite-runtime-index.d.ts +19 -0
  119. package/dist/core/context/sqlite-runtime-index.d.ts.map +1 -0
  120. package/dist/core/context/sqlite-runtime-index.js +344 -0
  121. package/dist/core/context/sqlite-runtime-index.js.map +1 -0
  122. package/dist/core/context/storage-authority.d.ts +20 -0
  123. package/dist/core/context/storage-authority.d.ts.map +1 -0
  124. package/dist/core/context/storage-authority.js +51 -0
  125. package/dist/core/context/storage-authority.js.map +1 -0
  126. package/dist/core/context/tool-output-packer.d.ts +75 -0
  127. package/dist/core/context/tool-output-packer.d.ts.map +1 -0
  128. package/dist/core/context/tool-output-packer.js +77 -0
  129. package/dist/core/context/tool-output-packer.js.map +1 -0
  130. package/dist/core/cost/session-usage.d.ts +20 -0
  131. package/dist/core/cost/session-usage.d.ts.map +1 -0
  132. package/dist/core/cost/session-usage.js +164 -0
  133. package/dist/core/cost/session-usage.js.map +1 -0
  134. package/dist/core/delegation/session-worker-result.d.ts +10 -0
  135. package/dist/core/delegation/session-worker-result.d.ts.map +1 -0
  136. package/dist/core/delegation/session-worker-result.js +36 -0
  137. package/dist/core/delegation/session-worker-result.js.map +1 -0
  138. package/dist/core/delegation/worker-result.d.ts +9 -0
  139. package/dist/core/delegation/worker-result.d.ts.map +1 -0
  140. package/dist/core/delegation/worker-result.js +152 -0
  141. package/dist/core/delegation/worker-result.js.map +1 -0
  142. package/dist/core/delegation/worker-runner.d.ts +58 -0
  143. package/dist/core/delegation/worker-runner.d.ts.map +1 -0
  144. package/dist/core/delegation/worker-runner.js +188 -0
  145. package/dist/core/delegation/worker-runner.js.map +1 -0
  146. package/dist/core/extensions/builtin.d.ts +5 -1
  147. package/dist/core/extensions/builtin.d.ts.map +1 -1
  148. package/dist/core/extensions/builtin.js +23 -1
  149. package/dist/core/extensions/builtin.js.map +1 -1
  150. package/dist/core/footer-data-provider.d.ts +5 -1
  151. package/dist/core/footer-data-provider.d.ts.map +1 -1
  152. package/dist/core/footer-data-provider.js +13 -0
  153. package/dist/core/footer-data-provider.js.map +1 -1
  154. package/dist/core/goals/goal-continuation-controller.d.ts +22 -0
  155. package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -0
  156. package/dist/core/goals/goal-continuation-controller.js +88 -0
  157. package/dist/core/goals/goal-continuation-controller.js.map +1 -0
  158. package/dist/core/goals/goal-continuation-defaults.d.ts +10 -0
  159. package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -0
  160. package/dist/core/goals/goal-continuation-defaults.js +10 -0
  161. package/dist/core/goals/goal-continuation-defaults.js.map +1 -0
  162. package/dist/core/goals/goal-continuation-prompt.d.ts +18 -0
  163. package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -0
  164. package/dist/core/goals/goal-continuation-prompt.js +141 -0
  165. package/dist/core/goals/goal-continuation-prompt.js.map +1 -0
  166. package/dist/core/goals/goal-runtime-snapshot.d.ts +19 -0
  167. package/dist/core/goals/goal-runtime-snapshot.d.ts.map +1 -0
  168. package/dist/core/goals/goal-runtime-snapshot.js +23 -0
  169. package/dist/core/goals/goal-runtime-snapshot.js.map +1 -0
  170. package/dist/core/goals/goal-state.d.ts +87 -0
  171. package/dist/core/goals/goal-state.d.ts.map +1 -0
  172. package/dist/core/goals/goal-state.js +259 -0
  173. package/dist/core/goals/goal-state.js.map +1 -0
  174. package/dist/core/goals/goal-tool-core.d.ts +66 -0
  175. package/dist/core/goals/goal-tool-core.d.ts.map +1 -0
  176. package/dist/core/goals/goal-tool-core.js +146 -0
  177. package/dist/core/goals/goal-tool-core.js.map +1 -0
  178. package/dist/core/goals/session-goal-state.d.ts +10 -0
  179. package/dist/core/goals/session-goal-state.d.ts.map +1 -0
  180. package/dist/core/goals/session-goal-state.js +35 -0
  181. package/dist/core/goals/session-goal-state.js.map +1 -0
  182. package/dist/core/learning/learning-audit.d.ts +45 -0
  183. package/dist/core/learning/learning-audit.d.ts.map +1 -0
  184. package/dist/core/learning/learning-audit.js +139 -0
  185. package/dist/core/learning/learning-audit.js.map +1 -0
  186. package/dist/core/learning/learning-gate.d.ts +29 -0
  187. package/dist/core/learning/learning-gate.d.ts.map +1 -0
  188. package/dist/core/learning/learning-gate.js +150 -0
  189. package/dist/core/learning/learning-gate.js.map +1 -0
  190. package/dist/core/learning/session-learning-decision.d.ts +10 -0
  191. package/dist/core/learning/session-learning-decision.d.ts.map +1 -0
  192. package/dist/core/learning/session-learning-decision.js +36 -0
  193. package/dist/core/learning/session-learning-decision.js.map +1 -0
  194. package/dist/core/model-capability.d.ts +41 -0
  195. package/dist/core/model-capability.d.ts.map +1 -0
  196. package/dist/core/model-capability.js +101 -0
  197. package/dist/core/model-capability.js.map +1 -0
  198. package/dist/core/model-router/config-diagnostics.d.ts.map +1 -1
  199. package/dist/core/model-router/config-diagnostics.js +1 -0
  200. package/dist/core/model-router/config-diagnostics.js.map +1 -1
  201. package/dist/core/model-router/intent-classifier.d.ts +2 -0
  202. package/dist/core/model-router/intent-classifier.d.ts.map +1 -1
  203. package/dist/core/model-router/intent-classifier.js +154 -9
  204. package/dist/core/model-router/intent-classifier.js.map +1 -1
  205. package/dist/core/model-router/route-judge.d.ts +54 -0
  206. package/dist/core/model-router/route-judge.d.ts.map +1 -0
  207. package/dist/core/model-router/route-judge.js +128 -0
  208. package/dist/core/model-router/route-judge.js.map +1 -0
  209. package/dist/core/model-router/status.d.ts +4 -1
  210. package/dist/core/model-router/status.d.ts.map +1 -1
  211. package/dist/core/model-router/status.js +30 -6
  212. package/dist/core/model-router/status.js.map +1 -1
  213. package/dist/core/model-router/tool-escalation.d.ts +4 -6
  214. package/dist/core/model-router/tool-escalation.d.ts.map +1 -1
  215. package/dist/core/model-router/tool-escalation.js +1 -1
  216. package/dist/core/model-router/tool-escalation.js.map +1 -1
  217. package/dist/core/models/fitness-store.d.ts +40 -0
  218. package/dist/core/models/fitness-store.d.ts.map +1 -0
  219. package/dist/core/models/fitness-store.js +61 -0
  220. package/dist/core/models/fitness-store.js.map +1 -0
  221. package/dist/core/profile-registry.d.ts.map +1 -1
  222. package/dist/core/profile-registry.js +1 -1
  223. package/dist/core/profile-registry.js.map +1 -1
  224. package/dist/core/prompt-templates.d.ts +2 -0
  225. package/dist/core/prompt-templates.d.ts.map +1 -1
  226. package/dist/core/prompt-templates.js +12 -4
  227. package/dist/core/prompt-templates.js.map +1 -1
  228. package/dist/core/research/automata-provider.d.ts +5 -0
  229. package/dist/core/research/automata-provider.d.ts.map +1 -0
  230. package/dist/core/research/automata-provider.js +15 -0
  231. package/dist/core/research/automata-provider.js.map +1 -0
  232. package/dist/core/research/evidence-bundle.d.ts +10 -0
  233. package/dist/core/research/evidence-bundle.d.ts.map +1 -0
  234. package/dist/core/research/evidence-bundle.js +116 -0
  235. package/dist/core/research/evidence-bundle.js.map +1 -0
  236. package/dist/core/research/model-fitness.d.ts +79 -0
  237. package/dist/core/research/model-fitness.d.ts.map +1 -0
  238. package/dist/core/research/model-fitness.js +257 -0
  239. package/dist/core/research/model-fitness.js.map +1 -0
  240. package/dist/core/research/research-gate.d.ts +11 -0
  241. package/dist/core/research/research-gate.d.ts.map +1 -0
  242. package/dist/core/research/research-gate.js +82 -0
  243. package/dist/core/research/research-gate.js.map +1 -0
  244. package/dist/core/research/research-runner.d.ts +59 -0
  245. package/dist/core/research/research-runner.d.ts.map +1 -0
  246. package/dist/core/research/research-runner.js +155 -0
  247. package/dist/core/research/research-runner.js.map +1 -0
  248. package/dist/core/research/session-evidence-bundle.d.ts +11 -0
  249. package/dist/core/research/session-evidence-bundle.d.ts.map +1 -0
  250. package/dist/core/research/session-evidence-bundle.js +55 -0
  251. package/dist/core/research/session-evidence-bundle.js.map +1 -0
  252. package/dist/core/resource-loader.d.ts.map +1 -1
  253. package/dist/core/resource-loader.js +7 -1
  254. package/dist/core/resource-loader.js.map +1 -1
  255. package/dist/core/settings-manager.d.ts +147 -4
  256. package/dist/core/settings-manager.d.ts.map +1 -1
  257. package/dist/core/settings-manager.js +285 -9
  258. package/dist/core/settings-manager.js.map +1 -1
  259. package/dist/core/skills.d.ts +4 -0
  260. package/dist/core/skills.d.ts.map +1 -1
  261. package/dist/core/skills.js +18 -6
  262. package/dist/core/skills.js.map +1 -1
  263. package/dist/core/slash-commands.d.ts.map +1 -1
  264. package/dist/core/slash-commands.js +4 -0
  265. package/dist/core/slash-commands.js.map +1 -1
  266. package/dist/core/toolkit/script-registry.d.ts +34 -0
  267. package/dist/core/toolkit/script-registry.d.ts.map +1 -0
  268. package/dist/core/toolkit/script-registry.js +71 -0
  269. package/dist/core/toolkit/script-registry.js.map +1 -0
  270. package/dist/core/toolkit/script-runner.d.ts +28 -0
  271. package/dist/core/toolkit/script-runner.d.ts.map +1 -0
  272. package/dist/core/toolkit/script-runner.js +48 -0
  273. package/dist/core/toolkit/script-runner.js.map +1 -0
  274. package/dist/core/tools/artifact-retrieve.d.ts +23 -0
  275. package/dist/core/tools/artifact-retrieve.d.ts.map +1 -0
  276. package/dist/core/tools/artifact-retrieve.js +110 -0
  277. package/dist/core/tools/artifact-retrieve.js.map +1 -0
  278. package/dist/core/tools/delegate.d.ts +32 -0
  279. package/dist/core/tools/delegate.d.ts.map +1 -0
  280. package/dist/core/tools/delegate.js +60 -0
  281. package/dist/core/tools/delegate.js.map +1 -0
  282. package/dist/core/tools/fff-search-backend.d.ts +103 -0
  283. package/dist/core/tools/fff-search-backend.d.ts.map +1 -0
  284. package/dist/core/tools/fff-search-backend.js +151 -0
  285. package/dist/core/tools/fff-search-backend.js.map +1 -0
  286. package/dist/core/tools/find.d.ts +21 -1
  287. package/dist/core/tools/find.d.ts.map +1 -1
  288. package/dist/core/tools/find.js +183 -10
  289. package/dist/core/tools/find.js.map +1 -1
  290. package/dist/core/tools/goal.d.ts +35 -0
  291. package/dist/core/tools/goal.d.ts.map +1 -0
  292. package/dist/core/tools/goal.js +122 -0
  293. package/dist/core/tools/goal.js.map +1 -0
  294. package/dist/core/tools/grep.d.ts +21 -1
  295. package/dist/core/tools/grep.d.ts.map +1 -1
  296. package/dist/core/tools/grep.js +272 -27
  297. package/dist/core/tools/grep.js.map +1 -1
  298. package/dist/core/tools/index.d.ts +4 -1
  299. package/dist/core/tools/index.d.ts.map +1 -1
  300. package/dist/core/tools/index.js +9 -0
  301. package/dist/core/tools/index.js.map +1 -1
  302. package/dist/core/tools/model-fitness.d.ts +30 -0
  303. package/dist/core/tools/model-fitness.d.ts.map +1 -0
  304. package/dist/core/tools/model-fitness.js +38 -0
  305. package/dist/core/tools/model-fitness.js.map +1 -0
  306. package/dist/core/tools/run-toolkit-script.d.ts +24 -0
  307. package/dist/core/tools/run-toolkit-script.d.ts.map +1 -0
  308. package/dist/core/tools/run-toolkit-script.js +103 -0
  309. package/dist/core/tools/run-toolkit-script.js.map +1 -0
  310. package/dist/core/tools/search-router.d.ts +75 -0
  311. package/dist/core/tools/search-router.d.ts.map +1 -0
  312. package/dist/core/tools/search-router.js +85 -0
  313. package/dist/core/tools/search-router.js.map +1 -0
  314. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  315. package/dist/modes/interactive/components/footer.js +18 -16
  316. package/dist/modes/interactive/components/footer.js.map +1 -1
  317. package/dist/modes/interactive/components/settings-selector.d.ts +13 -1
  318. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  319. package/dist/modes/interactive/components/settings-selector.js +471 -11
  320. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  321. package/dist/modes/interactive/interactive-mode.d.ts +4 -0
  322. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  323. package/dist/modes/interactive/interactive-mode.js +220 -39
  324. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  325. package/dist/modes/print-mode.d.ts.map +1 -1
  326. package/dist/modes/print-mode.js +3 -0
  327. package/dist/modes/print-mode.js.map +1 -1
  328. package/dist/utils/tools-manager.d.ts +2 -0
  329. package/dist/utils/tools-manager.d.ts.map +1 -1
  330. package/dist/utils/tools-manager.js +154 -2
  331. package/dist/utils/tools-manager.js.map +1 -1
  332. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  333. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  334. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  335. package/examples/extensions/sandbox/package-lock.json +2 -2
  336. package/examples/extensions/sandbox/package.json +1 -1
  337. package/examples/extensions/with-deps/package-lock.json +2 -2
  338. package/examples/extensions/with-deps/package.json +1 -1
  339. package/npm-shrinkwrap.json +368 -12
  340. package/package.json +5 -4
@@ -14,7 +14,10 @@ import lockfile from "proper-lockfile";
14
14
  import { APP_NAME, APP_TITLE, getAgentDir, getAuthPath, getDebugLogPath, getDocsPath, getShareViewerUrl, VERSION, } from "../../config.js";
15
15
  import { parseSkillBlock } from "../../core/agent-session.js";
16
16
  import { SessionImportFileNotFoundError } from "../../core/agent-session-runtime.js";
17
+ import { formatAutonomyDiagnostics } from "../../core/autonomy/status.js";
18
+ import { readAutoLearnSessionIdFromFile, reportCompletedAutoLearnUsageHelper } from "../../core/cost/session-usage.js";
17
19
  import { FooterDataProvider } from "../../core/footer-data-provider.js";
20
+ import { DEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS, DEFAULT_GOAL_CONTINUE_MAX_TURNS, DEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, MAX_GOAL_CONTINUE_MAX_STALL_TURNS, MAX_GOAL_CONTINUE_MAX_TURNS, MAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, } from "../../core/goals/goal-continuation-defaults.js";
18
21
  import { configureHttpDispatcher, formatHttpIdleTimeoutMs } from "../../core/http-dispatcher.js";
19
22
  import { KeybindingsManager } from "../../core/keybindings.js";
20
23
  import { createCompactionSummaryMessage } from "../../core/messages.js";
@@ -22,6 +25,7 @@ import { cliProviderAliases, defaultModelPerProvider, findExactModelReferenceMat
22
25
  import { DefaultPackageManager } from "../../core/package-manager.js";
23
26
  import { BUILT_IN_PROVIDER_DISPLAY_NAMES } from "../../core/provider-display-names.js";
24
27
  import { getPendingReloadBlockers } from "../../core/reload-blockers.js";
28
+ import { formatModelFitnessReport } from "../../core/research/model-fitness.js";
25
29
  import { resourceProfileSettingsChangedKinds } from "../../core/resource-profile-equality.js";
26
30
  import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
27
31
  import { isAutoLearnSessionId, SessionManager } from "../../core/session-manager.js";
@@ -214,32 +218,6 @@ function removeAutoLearnArtifactPath(filePath, root) {
214
218
  return false;
215
219
  }
216
220
  }
217
- function readAutoLearnSessionIdFromFile(filePath) {
218
- let fd;
219
- try {
220
- fd = fs.openSync(filePath, "r");
221
- const buffer = Buffer.alloc(64 * 1024);
222
- const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0);
223
- const firstLine = buffer.toString("utf8", 0, bytesRead).split("\n", 1)[0]?.trim();
224
- if (!firstLine)
225
- return undefined;
226
- const header = JSON.parse(firstLine);
227
- return header.type === "session" && typeof header.id === "string" ? header.id : undefined;
228
- }
229
- catch {
230
- return undefined;
231
- }
232
- finally {
233
- if (fd !== undefined) {
234
- try {
235
- fs.closeSync(fd);
236
- }
237
- catch {
238
- // Ignore close errors while pruning best-effort history artifacts.
239
- }
240
- }
241
- }
242
- }
243
221
  function getAutoLearnSessionIdFromFileName(fileName) {
244
222
  return fileName.match(/_(auto-learn-[A-Za-z0-9._-]+)\.jsonl$/)?.[1];
245
223
  }
@@ -872,6 +850,9 @@ export class InteractiveMode {
872
850
  const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
873
851
  this.showError(errorMessage);
874
852
  }
853
+ finally {
854
+ this.refreshAutonomyFooterStatus();
855
+ }
875
856
  }
876
857
  if (initialMessages) {
877
858
  for (const message of initialMessages) {
@@ -882,6 +863,9 @@ export class InteractiveMode {
882
863
  const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
883
864
  this.showError(errorMessage);
884
865
  }
866
+ finally {
867
+ this.refreshAutonomyFooterStatus();
868
+ }
885
869
  }
886
870
  }
887
871
  // Main interactive loop
@@ -894,8 +878,15 @@ export class InteractiveMode {
894
878
  const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
895
879
  this.showError(errorMessage);
896
880
  }
881
+ finally {
882
+ this.refreshAutonomyFooterStatus();
883
+ }
897
884
  }
898
885
  }
886
+ refreshAutonomyFooterStatus() {
887
+ this.footerDataProvider.setAutonomyStatusSnapshot(this.session.getAutonomyStatusSnapshot());
888
+ this.footer.invalidate();
889
+ }
899
890
  async checkForPackageUpdates() {
900
891
  if (process.env.PI_OFFLINE) {
901
892
  return [];
@@ -2443,11 +2434,16 @@ export class InteractiveMode {
2443
2434
  const images = this.takeClipboardImagesForText(text);
2444
2435
  this.editor.addToHistory?.(text);
2445
2436
  this.editor.setText("");
2446
- await this.session.prompt(text, {
2447
- streamingBehavior: queueAsFollowUp ? "followUp" : "steer",
2448
- images,
2449
- processSlashCommands: false,
2450
- });
2437
+ try {
2438
+ await this.session.prompt(text, {
2439
+ streamingBehavior: queueAsFollowUp ? "followUp" : "steer",
2440
+ images,
2441
+ processSlashCommands: false,
2442
+ });
2443
+ }
2444
+ finally {
2445
+ this.refreshAutonomyFooterStatus();
2446
+ }
2451
2447
  this.updatePendingMessagesDisplay();
2452
2448
  this.ui.requestRender();
2453
2449
  return;
@@ -2520,6 +2516,11 @@ export class InteractiveMode {
2520
2516
  this.editor.setText("");
2521
2517
  return;
2522
2518
  }
2519
+ if (text === "/goal-continue" || text.startsWith("/goal-continue ")) {
2520
+ await this.handleGoalContinueCommand(text);
2521
+ this.editor.setText("");
2522
+ return;
2523
+ }
2523
2524
  if (text === "/changelog") {
2524
2525
  this.handleChangelogCommand();
2525
2526
  this.editor.setText("");
@@ -2700,6 +2701,9 @@ export class InteractiveMode {
2700
2701
  this.footer.invalidate();
2701
2702
  this.updateEditorBorderColor();
2702
2703
  break;
2704
+ case "warning":
2705
+ this.showWarning(event.message);
2706
+ break;
2703
2707
  case "message_start":
2704
2708
  if (event.message.role === "custom") {
2705
2709
  this.addMessageToChat(event.message);
@@ -3607,7 +3611,12 @@ export class InteractiveMode {
3607
3611
  if (this.isExtensionCommand(text)) {
3608
3612
  this.editor.addToHistory?.(text);
3609
3613
  this.editor.setText("");
3610
- await this.session.prompt(text);
3614
+ try {
3615
+ await this.session.prompt(text);
3616
+ }
3617
+ finally {
3618
+ this.refreshAutonomyFooterStatus();
3619
+ }
3611
3620
  }
3612
3621
  else {
3613
3622
  const images = this.takeClipboardImagesForText(text);
@@ -3621,7 +3630,12 @@ export class InteractiveMode {
3621
3630
  const images = this.takeClipboardImagesForText(text);
3622
3631
  this.editor.addToHistory?.(text);
3623
3632
  this.editor.setText("");
3624
- await this.session.prompt(text, { streamingBehavior: "followUp", images });
3633
+ try {
3634
+ await this.session.prompt(text, { streamingBehavior: "followUp", images });
3635
+ }
3636
+ finally {
3637
+ this.refreshAutonomyFooterStatus();
3638
+ }
3625
3639
  this.updatePendingMessagesDisplay();
3626
3640
  this.ui.requestRender();
3627
3641
  }
@@ -3993,8 +4007,13 @@ export class InteractiveMode {
3993
4007
  const promptOptions = this.session.isStreaming
3994
4008
  ? { images: firstPrompt.images, streamingBehavior: firstPrompt.mode }
3995
4009
  : { images: firstPrompt.images };
3996
- const promptPromise = this.session.prompt(firstPrompt.text, promptOptions).catch((error) => {
4010
+ const promptPromise = this.session
4011
+ .prompt(firstPrompt.text, promptOptions)
4012
+ .catch((error) => {
3997
4013
  restoreQueue(error);
4014
+ })
4015
+ .finally(() => {
4016
+ this.refreshAutonomyFooterStatus();
3998
4017
  });
3999
4018
  // Queue remaining messages
4000
4019
  for (const message of rest) {
@@ -4531,9 +4550,26 @@ export class InteractiveMode {
4531
4550
  return { result: undefined, next };
4532
4551
  });
4533
4552
  }
4534
- cleanupCompletedAutoLearnRun(runId, artifactPaths) {
4553
+ reportCompletedAutoLearnUsage(runId, sessionDir, sessionId, logPath) {
4554
+ try {
4555
+ reportCompletedAutoLearnUsageHelper({
4556
+ runId,
4557
+ sessionDir,
4558
+ sessionId,
4559
+ logPath,
4560
+ parentSession: this.session,
4561
+ appendLog: (p, msg) => this.appendAutoLearnLog(p, msg),
4562
+ });
4563
+ }
4564
+ catch (error) {
4565
+ const message = error instanceof Error ? error.message : String(error);
4566
+ this.appendAutoLearnLog(logPath, `Auto Learn usage report failed: ${message}`);
4567
+ }
4568
+ }
4569
+ cleanupCompletedAutoLearnRun(runId, options) {
4570
+ this.reportCompletedAutoLearnUsage(runId, options.sessionDir, options.sessionId, options.logPath);
4535
4571
  const dataDir = this.getAutoLearnDataDir();
4536
- for (const filePath of artifactPaths)
4572
+ for (const filePath of options.artifactPaths)
4537
4573
  removeAutoLearnArtifactPath(filePath, dataDir);
4538
4574
  this.withAutoLearnStateLock((current) => {
4539
4575
  const state = this.pruneAutoLearnState(current);
@@ -4678,8 +4714,14 @@ export class InteractiveMode {
4678
4714
  }
4679
4715
  const childPid = child.pid;
4680
4716
  child.once("exit", (code) => {
4681
- if (code === 0)
4682
- this.cleanupCompletedAutoLearnRun(reservation.runId, [promptPath, logPath, sessionDir]);
4717
+ if (code === 0) {
4718
+ this.cleanupCompletedAutoLearnRun(reservation.runId, {
4719
+ artifactPaths: [promptPath, logPath, sessionDir],
4720
+ sessionDir,
4721
+ sessionId,
4722
+ logPath,
4723
+ });
4724
+ }
4683
4725
  });
4684
4726
  child.unref();
4685
4727
  this.markAutoLearnReservationRunning(reservation, childPid, settings);
@@ -5082,7 +5124,75 @@ export class InteractiveMode {
5082
5124
  this.ui.requestRender();
5083
5125
  return;
5084
5126
  }
5085
- this.showStatus("Usage: /autonomy [status|off|safe|balanced|full]");
5127
+ if (action === "diagnostics") {
5128
+ this.chatContainer.addChild(new Spacer(1));
5129
+ this.chatContainer.addChild(new Text(formatAutonomyDiagnostics(this.session.getAutonomyDiagnosticSnapshot()), 1, 0));
5130
+ this.ui.requestRender();
5131
+ return;
5132
+ }
5133
+ if (action.startsWith("rollback")) {
5134
+ const auditId = action.slice("rollback".length).trim();
5135
+ if (!auditId) {
5136
+ this.showStatus("Usage: /autonomy rollback <auditId> (see /autonomy diagnostics for audit ids)");
5137
+ return;
5138
+ }
5139
+ void this.session
5140
+ .rollbackLearningWrite(auditId)
5141
+ .then((result) => {
5142
+ this.showStatus(result.ok ? `Rolled back learning change ${auditId}.` : `Rollback skipped: ${result.reason}`);
5143
+ })
5144
+ .catch((error) => {
5145
+ const message = error instanceof Error ? error.message : String(error);
5146
+ this.showStatus(`Rollback failed: ${message}`);
5147
+ });
5148
+ return;
5149
+ }
5150
+ if (action.startsWith("fitness")) {
5151
+ const rest = action.slice("fitness".length).trim().split(/\s+/).filter(Boolean);
5152
+ const modelPattern = rest[0];
5153
+ if (!modelPattern) {
5154
+ this.showStatus("Usage: /autonomy fitness <model-pattern> [trials]");
5155
+ return;
5156
+ }
5157
+ const trials = rest[1] ? Number(rest[1]) : undefined;
5158
+ this.showStatus(`Model fitness probe running on ${modelPattern}…`);
5159
+ void this.session
5160
+ .runModelFitness({ model: modelPattern, trials: Number.isFinite(trials) ? trials : undefined })
5161
+ .then((outcome) => {
5162
+ if (!outcome.started) {
5163
+ this.showStatus(`Model fitness skipped: ${outcome.skipReason}`);
5164
+ return;
5165
+ }
5166
+ this.chatContainer.addChild(new Spacer(1));
5167
+ this.chatContainer.addChild(new Text(formatModelFitnessReport(outcome.model, outcome.report), 1, 0));
5168
+ this.ui.requestRender();
5169
+ })
5170
+ .catch((error) => {
5171
+ const message = error instanceof Error ? error.message : String(error);
5172
+ this.showStatus(`Model fitness failed: ${message}`);
5173
+ });
5174
+ return;
5175
+ }
5176
+ if (action === "research") {
5177
+ this.showStatus("Research lane: running…");
5178
+ void this.session
5179
+ .runResearchLaneOnce()
5180
+ .then((outcome) => {
5181
+ if (!outcome.started) {
5182
+ this.showStatus(`Research lane skipped: ${outcome.skipReason ?? "unknown"}`);
5183
+ return;
5184
+ }
5185
+ const status = outcome.record?.status ?? "unknown";
5186
+ const reason = outcome.record?.reasonCode ? ` (${outcome.record.reasonCode})` : "";
5187
+ this.showStatus(`Research lane ${status}${reason}`);
5188
+ })
5189
+ .catch((error) => {
5190
+ const message = error instanceof Error ? error.message : String(error);
5191
+ this.showStatus(`Research lane failed: ${message}`);
5192
+ });
5193
+ return;
5194
+ }
5195
+ this.showStatus("Usage: /autonomy [status|diagnostics|research|rollback <auditId>|off|safe|balanced|full]");
5086
5196
  }
5087
5197
  handleAutoLearnCommand(text) {
5088
5198
  const action = text.slice("/auto-learn".length).trim() || "status";
@@ -5150,11 +5260,19 @@ export class InteractiveMode {
5150
5260
  selfModificationScope: projectSettings.selfModification ? "project" : "global",
5151
5261
  autonomy: this.settingsManager.getAutonomySettings(),
5152
5262
  autonomyScope: projectSettings.autonomy ? "project" : "global",
5263
+ researchLane: this.settingsManager.getResearchLaneSettings(),
5264
+ researchLaneScope: projectSettings.researchLane ? "project" : "global",
5265
+ workerDelegation: this.settingsManager.getWorkerDelegationSettings(),
5266
+ workerDelegationScope: projectSettings.workerDelegation ? "project" : "global",
5153
5267
  modelRouter: this.settingsManager.getModelRouterSettings(),
5154
5268
  modelRouterScope: projectSettings.modelRouter ? "project" : "global",
5155
5269
  autoLearn: this.settingsManager.getAutoLearnSettings(),
5156
5270
  autoLearnScope: projectSettings.autoLearn ? "project" : "global",
5157
5271
  autoLearnModelOptions: this.getAutoLearnModelOptions(),
5272
+ contextPolicyEnforcement: this.settingsManager.getContextPromptEnforcementSettings(),
5273
+ contextPolicyEnforcementScope: projectSettings.contextPolicy?.enforcement ? "project" : "global",
5274
+ contextMemoryRetrieval: this.settingsManager.getMemoryRetrievalSettings(),
5275
+ contextMemoryRetrievalScope: projectSettings.contextPolicy?.memory ? "project" : "global",
5158
5276
  currentModelPattern: this.session.model
5159
5277
  ? `${this.session.model.provider}/${this.session.model.id}`
5160
5278
  : undefined,
@@ -5295,6 +5413,14 @@ export class InteractiveMode {
5295
5413
  this.applyAutonomyMode(settings.mode ?? "off", scope);
5296
5414
  this.showStatus(`Autonomy mode ${settings.mode ?? "off"} saved to ${scope}. Use /autonomy status.`);
5297
5415
  },
5416
+ onResearchLaneChange: (settings, scope) => {
5417
+ this.settingsManager.setResearchLaneSettings(settings, scope);
5418
+ this.showStatus(`Research lane settings saved to ${scope}. Use /autonomy research or /autonomy diagnostics.`);
5419
+ },
5420
+ onWorkerDelegationChange: (settings, scope) => {
5421
+ this.settingsManager.setWorkerDelegationSettings(settings, scope);
5422
+ this.showStatus(`Worker delegation settings saved to ${scope}. The delegate tool uses them.`);
5423
+ },
5298
5424
  onModelRouterChange: (settings, scope) => {
5299
5425
  this.settingsManager.setModelRouterSettings(settings, scope);
5300
5426
  for (const value of [settings.cheapModel, settings.expensiveModel, settings.learningModel]) {
@@ -5315,6 +5441,14 @@ export class InteractiveMode {
5315
5441
  this.updateAutoLearnFooter();
5316
5442
  this.showStatus(`Auto Learn settings saved to ${scope}. Use /auto-learn status or /auto-learn run.`);
5317
5443
  },
5444
+ onContextPolicyEnforcementChange: (settings, scope) => {
5445
+ this.settingsManager.setContextPromptEnforcementSettings(settings, scope);
5446
+ this.showStatus(`Context/prompt-policy settings saved to ${scope}.`);
5447
+ },
5448
+ onContextMemoryRetrievalChange: (settings, scope) => {
5449
+ this.settingsManager.setMemoryRetrievalSettings(settings, scope);
5450
+ this.showStatus(`Context/memory-retrieval settings saved to ${scope}.`);
5451
+ },
5318
5452
  onResourcesHubAction: (action) => {
5319
5453
  done();
5320
5454
  void this.handleResourcesHubAction(action);
@@ -7287,6 +7421,53 @@ export class InteractiveMode {
7287
7421
  this.chatContainer.addChild(new Text(theme.fg("dim", `Session name set: ${name}`), 1, 0));
7288
7422
  this.ui.requestRender();
7289
7423
  }
7424
+ parseGoalContinueCommand(text) {
7425
+ const usage = "Usage: /goal-continue [maxTurns 1-20] [maxStallTurns 0-100] [maxMinutes 0-1440]";
7426
+ const parts = text.trim().split(/\s+/).slice(1);
7427
+ if (parts.length > 3) {
7428
+ return { ok: false, error: usage };
7429
+ }
7430
+ const parseBoundedInteger = (value, fallback, min, max) => {
7431
+ if (value === undefined || value.length === 0)
7432
+ return fallback;
7433
+ if (!/^\d+$/.test(value))
7434
+ return undefined;
7435
+ const parsed = Number.parseInt(value, 10);
7436
+ if (!Number.isSafeInteger(parsed) || parsed < min || parsed > max)
7437
+ return undefined;
7438
+ return parsed;
7439
+ };
7440
+ const maxTurns = parseBoundedInteger(parts[0], DEFAULT_GOAL_CONTINUE_MAX_TURNS, 1, MAX_GOAL_CONTINUE_MAX_TURNS);
7441
+ const maxStallTurns = parseBoundedInteger(parts[1], DEFAULT_GOAL_CONTINUE_MAX_STALL_TURNS, 0, MAX_GOAL_CONTINUE_MAX_STALL_TURNS);
7442
+ const maxWallClockMinutes = parseBoundedInteger(parts[2], DEFAULT_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, 0, MAX_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES);
7443
+ if (maxTurns === undefined || maxStallTurns === undefined || maxWallClockMinutes === undefined) {
7444
+ return { ok: false, error: usage };
7445
+ }
7446
+ return { ok: true, maxTurns, maxStallTurns, maxWallClockMinutes };
7447
+ }
7448
+ async handleGoalContinueCommand(text) {
7449
+ const parsed = this.parseGoalContinueCommand(text);
7450
+ if (!parsed.ok) {
7451
+ this.showError(parsed.error);
7452
+ return;
7453
+ }
7454
+ this.showStatus(`Goal continuation started: up to ${parsed.maxTurns} turn(s), stall limit ${parsed.maxStallTurns}, wall-clock limit ${parsed.maxWallClockMinutes || "disabled"} minute(s).`);
7455
+ try {
7456
+ const result = await this.session.continueGoalLoop({
7457
+ maxTurns: parsed.maxTurns,
7458
+ maxStallTurns: parsed.maxStallTurns,
7459
+ maxWallClockMinutes: parsed.maxWallClockMinutes,
7460
+ });
7461
+ const continuation = result.finalSnapshot.continuation;
7462
+ this.showStatus(`Goal continuation stopped: ${result.stopReason}; submitted ${result.turnsSubmitted} turn(s); latest decision ${continuation.action}/${continuation.reasonCode}.`);
7463
+ }
7464
+ catch (error) {
7465
+ this.showError(`Goal continuation failed: ${error instanceof Error ? error.message : String(error)}`);
7466
+ }
7467
+ finally {
7468
+ this.refreshAutonomyFooterStatus();
7469
+ }
7470
+ }
7290
7471
  handleSessionCommand() {
7291
7472
  const stats = this.session.getSessionStats();
7292
7473
  const sessionName = this.sessionManager.getSessionName();