@caupulican/pi-adaptative 0.94.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/bundled-resources/extensions/tmux-agent-manager/README.md +32 -13
  3. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts +7 -4
  4. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
  5. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +173 -293
  6. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
  7. package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +247 -392
  8. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.d.ts +52 -0
  9. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.d.ts.map +1 -0
  10. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.js +118 -0
  11. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.js.map +1 -0
  12. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.ts +169 -0
  13. package/dist/bundled-resources/extensions/tmux-agent-manager/templates/builder-validator.json +1 -1
  14. package/dist/bundled-resources/extensions/tmux-agent-manager/templates/provider-prompt-smoke.json +1 -1
  15. package/dist/bundled-resources/skills/pi-harness-learning/SKILL.md +13 -7
  16. package/dist/bundled-resources/skills/worker-profile-writer/SKILL.md +11 -11
  17. package/dist/core/agent-paths.d.ts +2 -0
  18. package/dist/core/agent-paths.d.ts.map +1 -1
  19. package/dist/core/agent-paths.js +7 -0
  20. package/dist/core/agent-paths.js.map +1 -1
  21. package/dist/core/agent-session.d.ts +11 -41
  22. package/dist/core/agent-session.d.ts.map +1 -1
  23. package/dist/core/agent-session.js +98 -161
  24. package/dist/core/agent-session.js.map +1 -1
  25. package/dist/core/autonomy/envelope-enforcement.d.ts +6 -1
  26. package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
  27. package/dist/core/autonomy/envelope-enforcement.js +26 -25
  28. package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
  29. package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -1
  30. package/dist/core/autonomy/lane-private-paths.js +2 -1
  31. package/dist/core/autonomy/lane-private-paths.js.map +1 -1
  32. package/dist/core/autonomy/lane-tool-surface.d.ts +8 -8
  33. package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
  34. package/dist/core/autonomy/lane-tool-surface.js +45 -30
  35. package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
  36. package/dist/core/autonomy/worker-session-private-scope.d.ts +12 -0
  37. package/dist/core/autonomy/worker-session-private-scope.d.ts.map +1 -0
  38. package/dist/core/autonomy/worker-session-private-scope.js +42 -0
  39. package/dist/core/autonomy/worker-session-private-scope.js.map +1 -0
  40. package/dist/core/autonomy/worker-tool-adapter-registry.d.ts +65 -0
  41. package/dist/core/autonomy/worker-tool-adapter-registry.d.ts.map +1 -0
  42. package/dist/core/autonomy/worker-tool-adapter-registry.js +145 -0
  43. package/dist/core/autonomy/worker-tool-adapter-registry.js.map +1 -0
  44. package/dist/core/background-lane-controller.d.ts +9 -1
  45. package/dist/core/background-lane-controller.d.ts.map +1 -1
  46. package/dist/core/background-lane-controller.js +76 -6
  47. package/dist/core/background-lane-controller.js.map +1 -1
  48. package/dist/core/background-tool-task-controller.d.ts +23 -2
  49. package/dist/core/background-tool-task-controller.d.ts.map +1 -1
  50. package/dist/core/background-tool-task-controller.js +132 -17
  51. package/dist/core/background-tool-task-controller.js.map +1 -1
  52. package/dist/core/context/long-term-memory-trigger.d.ts +3 -1
  53. package/dist/core/context/long-term-memory-trigger.d.ts.map +1 -1
  54. package/dist/core/context/long-term-memory-trigger.js +1 -1
  55. package/dist/core/context/long-term-memory-trigger.js.map +1 -1
  56. package/dist/core/context/okf-memory-provider.d.ts +3 -0
  57. package/dist/core/context/okf-memory-provider.d.ts.map +1 -1
  58. package/dist/core/context/okf-memory-provider.js +66 -31
  59. package/dist/core/context/okf-memory-provider.js.map +1 -1
  60. package/dist/core/context/okf-memory.d.ts +18 -1
  61. package/dist/core/context/okf-memory.d.ts.map +1 -1
  62. package/dist/core/context/okf-memory.js +48 -0
  63. package/dist/core/context/okf-memory.js.map +1 -1
  64. package/dist/core/cost-guard-controller.d.ts +37 -0
  65. package/dist/core/cost-guard-controller.d.ts.map +1 -0
  66. package/dist/core/cost-guard-controller.js +71 -0
  67. package/dist/core/cost-guard-controller.js.map +1 -0
  68. package/dist/core/cost-guard.d.ts +9 -4
  69. package/dist/core/cost-guard.d.ts.map +1 -1
  70. package/dist/core/cost-guard.js +7 -3
  71. package/dist/core/cost-guard.js.map +1 -1
  72. package/dist/core/delegation/worker-agent-control.d.ts +4 -0
  73. package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
  74. package/dist/core/delegation/worker-agent-control.js.map +1 -1
  75. package/dist/core/delegation/worker-attempt-executor.d.ts +1 -1
  76. package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
  77. package/dist/core/delegation/worker-attempt-executor.js +0 -1
  78. package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
  79. package/dist/core/delegation/worker-authority-resolver.d.ts +16 -3
  80. package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
  81. package/dist/core/delegation/worker-authority-resolver.js +114 -55
  82. package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
  83. package/dist/core/delegation/worker-claim.d.ts +1 -2
  84. package/dist/core/delegation/worker-claim.d.ts.map +1 -1
  85. package/dist/core/delegation/worker-claim.js.map +1 -1
  86. package/dist/core/delegation/worker-delegation-controller.d.ts +19 -6
  87. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
  88. package/dist/core/delegation/worker-delegation-controller.js +125 -40
  89. package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
  90. package/dist/core/delegation/worker-delegation-request.d.ts +3 -3
  91. package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
  92. package/dist/core/delegation/worker-delegation-request.js +13 -19
  93. package/dist/core/delegation/worker-delegation-request.js.map +1 -1
  94. package/dist/core/delegation/worker-execution-policy.d.ts +3 -2
  95. package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
  96. package/dist/core/delegation/worker-execution-policy.js +54 -39
  97. package/dist/core/delegation/worker-execution-policy.js.map +1 -1
  98. package/dist/core/delegation/worker-fleet-limits.d.ts +3 -3
  99. package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -1
  100. package/dist/core/delegation/worker-fleet-limits.js +7 -7
  101. package/dist/core/delegation/worker-fleet-limits.js.map +1 -1
  102. package/dist/core/delegation/worker-machine-scope.d.ts +12 -0
  103. package/dist/core/delegation/worker-machine-scope.d.ts.map +1 -0
  104. package/dist/core/delegation/worker-machine-scope.js +38 -0
  105. package/dist/core/delegation/worker-machine-scope.js.map +1 -0
  106. package/dist/core/delegation/worker-notification-coordinator.d.ts +10 -0
  107. package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
  108. package/dist/core/delegation/worker-notification-coordinator.js +69 -3
  109. package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
  110. package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -1
  111. package/dist/core/delegation/worker-recovery-coordinator.js +6 -1
  112. package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -1
  113. package/dist/core/delegation/worker-runner.d.ts +5 -7
  114. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  115. package/dist/core/delegation/worker-runner.js +1 -4
  116. package/dist/core/delegation/worker-runner.js.map +1 -1
  117. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts +3 -2
  118. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -1
  119. package/dist/core/delegation/worker-write-reservation-coordinator.js +50 -25
  120. package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -1
  121. package/dist/core/durable-custom-message-turn-controller.d.ts +6 -0
  122. package/dist/core/durable-custom-message-turn-controller.d.ts.map +1 -1
  123. package/dist/core/durable-custom-message-turn-controller.js +38 -15
  124. package/dist/core/durable-custom-message-turn-controller.js.map +1 -1
  125. package/dist/core/extension-binding-controller.d.ts +5 -1
  126. package/dist/core/extension-binding-controller.d.ts.map +1 -1
  127. package/dist/core/extension-binding-controller.js +15 -0
  128. package/dist/core/extension-binding-controller.js.map +1 -1
  129. package/dist/core/extensions/factory-runtime.d.ts.map +1 -1
  130. package/dist/core/extensions/factory-runtime.js +5 -0
  131. package/dist/core/extensions/factory-runtime.js.map +1 -1
  132. package/dist/core/extensions/runner.d.ts.map +1 -1
  133. package/dist/core/extensions/runner.js +1 -0
  134. package/dist/core/extensions/runner.js.map +1 -1
  135. package/dist/core/extensions/types.d.ts +8 -4
  136. package/dist/core/extensions/types.d.ts.map +1 -1
  137. package/dist/core/extensions/types.js.map +1 -1
  138. package/dist/core/foreground-terminal-handoff-controller.d.ts +31 -0
  139. package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
  140. package/dist/core/foreground-terminal-handoff-controller.js +239 -55
  141. package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
  142. package/dist/core/goals/goal-session-controller.d.ts +2 -0
  143. package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
  144. package/dist/core/goals/goal-session-controller.js +8 -0
  145. package/dist/core/goals/goal-session-controller.js.map +1 -1
  146. package/dist/core/goals/goal-tool-core.d.ts +5 -4
  147. package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
  148. package/dist/core/goals/goal-tool-core.js +23 -19
  149. package/dist/core/goals/goal-tool-core.js.map +1 -1
  150. package/dist/core/learning/auto-learn-settings.d.ts +84 -0
  151. package/dist/core/learning/auto-learn-settings.d.ts.map +1 -0
  152. package/dist/core/learning/auto-learn-settings.js +66 -0
  153. package/dist/core/learning/auto-learn-settings.js.map +1 -0
  154. package/dist/core/learning/learning-audit.d.ts +5 -1
  155. package/dist/core/learning/learning-audit.d.ts.map +1 -1
  156. package/dist/core/learning/learning-audit.js +32 -1
  157. package/dist/core/learning/learning-audit.js.map +1 -1
  158. package/dist/core/learning/reflection-engine.d.ts +24 -0
  159. package/dist/core/learning/reflection-engine.d.ts.map +1 -1
  160. package/dist/core/learning/reflection-engine.js +104 -8
  161. package/dist/core/learning/reflection-engine.js.map +1 -1
  162. package/dist/core/local-prefix-warm-controller.d.ts +24 -0
  163. package/dist/core/local-prefix-warm-controller.d.ts.map +1 -0
  164. package/dist/core/local-prefix-warm-controller.js +79 -0
  165. package/dist/core/local-prefix-warm-controller.js.map +1 -0
  166. package/dist/core/memory/okf-project-memory-store.d.ts +28 -0
  167. package/dist/core/memory/okf-project-memory-store.d.ts.map +1 -0
  168. package/dist/core/memory/okf-project-memory-store.js +111 -0
  169. package/dist/core/memory/okf-project-memory-store.js.map +1 -0
  170. package/dist/core/memory/providers/file-store.d.ts +44 -1
  171. package/dist/core/memory/providers/file-store.d.ts.map +1 -1
  172. package/dist/core/memory/providers/file-store.js +341 -24
  173. package/dist/core/memory/providers/file-store.js.map +1 -1
  174. package/dist/core/memory/worker-memory-tools.d.ts +5 -0
  175. package/dist/core/memory/worker-memory-tools.d.ts.map +1 -0
  176. package/dist/core/memory/worker-memory-tools.js +5 -0
  177. package/dist/core/memory/worker-memory-tools.js.map +1 -0
  178. package/dist/core/memory-controller.d.ts +10 -1
  179. package/dist/core/memory-controller.d.ts.map +1 -1
  180. package/dist/core/memory-controller.js +72 -8
  181. package/dist/core/memory-controller.js.map +1 -1
  182. package/dist/core/model-capability.d.ts +7 -0
  183. package/dist/core/model-capability.d.ts.map +1 -1
  184. package/dist/core/model-capability.js +12 -0
  185. package/dist/core/model-capability.js.map +1 -1
  186. package/dist/core/model-registry.d.ts.map +1 -1
  187. package/dist/core/model-registry.js +2 -10
  188. package/dist/core/model-registry.js.map +1 -1
  189. package/dist/core/model-router-controller.d.ts +3 -2
  190. package/dist/core/model-router-controller.d.ts.map +1 -1
  191. package/dist/core/model-router-controller.js +3 -2
  192. package/dist/core/model-router-controller.js.map +1 -1
  193. package/dist/core/orchestration/contracts.d.ts +16 -12
  194. package/dist/core/orchestration/contracts.d.ts.map +1 -1
  195. package/dist/core/orchestration/contracts.js +2 -2
  196. package/dist/core/orchestration/contracts.js.map +1 -1
  197. package/dist/core/orchestration/lane-tool-manifests.d.ts +2 -2
  198. package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -1
  199. package/dist/core/orchestration/lane-tool-manifests.js +6 -1
  200. package/dist/core/orchestration/lane-tool-manifests.js.map +1 -1
  201. package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
  202. package/dist/core/orchestration/profile-registry.js +14 -0
  203. package/dist/core/orchestration/profile-registry.js.map +1 -1
  204. package/dist/core/orchestration/task-profile-writer.d.ts +7 -4
  205. package/dist/core/orchestration/task-profile-writer.d.ts.map +1 -1
  206. package/dist/core/orchestration/task-profile-writer.js +71 -59
  207. package/dist/core/orchestration/task-profile-writer.js.map +1 -1
  208. package/dist/core/orchestration/thinking-level-schema.d.ts +7 -0
  209. package/dist/core/orchestration/thinking-level-schema.d.ts.map +1 -0
  210. package/dist/core/orchestration/thinking-level-schema.js +19 -0
  211. package/dist/core/orchestration/thinking-level-schema.js.map +1 -0
  212. package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
  213. package/dist/core/orchestration/worker-execution-contract.js +12 -5
  214. package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
  215. package/dist/core/provider-prompt-contracts.d.ts +1 -4
  216. package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
  217. package/dist/core/provider-prompt-contracts.js +13 -29
  218. package/dist/core/provider-prompt-contracts.js.map +1 -1
  219. package/dist/core/provider-request-context-controller.d.ts +2 -0
  220. package/dist/core/provider-request-context-controller.d.ts.map +1 -1
  221. package/dist/core/provider-request-context-controller.js +10 -3
  222. package/dist/core/provider-request-context-controller.js.map +1 -1
  223. package/dist/core/reflection-controller.d.ts +63 -27
  224. package/dist/core/reflection-controller.d.ts.map +1 -1
  225. package/dist/core/reflection-controller.js +300 -132
  226. package/dist/core/reflection-controller.js.map +1 -1
  227. package/dist/core/runtime-builder.d.ts +1 -0
  228. package/dist/core/runtime-builder.d.ts.map +1 -1
  229. package/dist/core/runtime-builder.js +25 -14
  230. package/dist/core/runtime-builder.js.map +1 -1
  231. package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
  232. package/dist/core/secrets/credential-exposure-guard.js +55 -10
  233. package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
  234. package/dist/core/session-role.d.ts +6 -8
  235. package/dist/core/session-role.d.ts.map +1 -1
  236. package/dist/core/session-role.js +8 -18
  237. package/dist/core/session-role.js.map +1 -1
  238. package/dist/core/settings-manager.d.ts +13 -16
  239. package/dist/core/settings-manager.d.ts.map +1 -1
  240. package/dist/core/settings-manager.js +53 -50
  241. package/dist/core/settings-manager.js.map +1 -1
  242. package/dist/core/skill-vault.d.ts +15 -0
  243. package/dist/core/skill-vault.d.ts.map +1 -1
  244. package/dist/core/skill-vault.js +79 -45
  245. package/dist/core/skill-vault.js.map +1 -1
  246. package/dist/core/skills.d.ts +3 -0
  247. package/dist/core/skills.d.ts.map +1 -1
  248. package/dist/core/skills.js +6 -6
  249. package/dist/core/skills.js.map +1 -1
  250. package/dist/core/system-prompt-builder.d.ts +2 -0
  251. package/dist/core/system-prompt-builder.d.ts.map +1 -1
  252. package/dist/core/system-prompt-builder.js +52 -12
  253. package/dist/core/system-prompt-builder.js.map +1 -1
  254. package/dist/core/system-prompt.js +1 -1
  255. package/dist/core/system-prompt.js.map +1 -1
  256. package/dist/core/tool-capability-policy.d.ts +3 -0
  257. package/dist/core/tool-capability-policy.d.ts.map +1 -1
  258. package/dist/core/tool-capability-policy.js +13 -2
  259. package/dist/core/tool-capability-policy.js.map +1 -1
  260. package/dist/core/toolkit/script-runner.d.ts +2 -1
  261. package/dist/core/toolkit/script-runner.d.ts.map +1 -1
  262. package/dist/core/toolkit/script-runner.js +10 -2
  263. package/dist/core/toolkit/script-runner.js.map +1 -1
  264. package/dist/core/tools/delegate-status.d.ts +3 -1
  265. package/dist/core/tools/delegate-status.d.ts.map +1 -1
  266. package/dist/core/tools/delegate-status.js +5 -1
  267. package/dist/core/tools/delegate-status.js.map +1 -1
  268. package/dist/core/tools/delegate.d.ts +4 -13
  269. package/dist/core/tools/delegate.d.ts.map +1 -1
  270. package/dist/core/tools/delegate.js +173 -73
  271. package/dist/core/tools/delegate.js.map +1 -1
  272. package/dist/core/tools/goal.d.ts +3 -4
  273. package/dist/core/tools/goal.d.ts.map +1 -1
  274. package/dist/core/tools/goal.js +24 -7
  275. package/dist/core/tools/goal.js.map +1 -1
  276. package/dist/core/tools/profile-writer.d.ts +2 -8
  277. package/dist/core/tools/profile-writer.d.ts.map +1 -1
  278. package/dist/core/tools/profile-writer.js +6 -18
  279. package/dist/core/tools/profile-writer.js.map +1 -1
  280. package/dist/core/tools/run-toolkit-script.d.ts +1 -1
  281. package/dist/core/tools/run-toolkit-script.d.ts.map +1 -1
  282. package/dist/core/tools/run-toolkit-script.js +2 -2
  283. package/dist/core/tools/run-toolkit-script.js.map +1 -1
  284. package/dist/core/tools/skill-audit.d.ts +28 -1
  285. package/dist/core/tools/skill-audit.d.ts.map +1 -1
  286. package/dist/core/tools/skill-audit.js +56 -12
  287. package/dist/core/tools/skill-audit.js.map +1 -1
  288. package/dist/core/tools/skill.d.ts +12 -1
  289. package/dist/core/tools/skill.d.ts.map +1 -1
  290. package/dist/core/tools/skill.js +52 -0
  291. package/dist/core/tools/skill.js.map +1 -1
  292. package/dist/core/tools/skillify.d.ts.map +1 -1
  293. package/dist/core/tools/skillify.js +16 -7
  294. package/dist/core/tools/skillify.js.map +1 -1
  295. package/dist/core/tools/task-steps.js +1 -1
  296. package/dist/core/tools/task-steps.js.map +1 -1
  297. package/dist/core/tools/tmux-dispatch.d.ts +4 -16
  298. package/dist/core/tools/tmux-dispatch.d.ts.map +1 -1
  299. package/dist/core/tools/tmux-dispatch.js +5 -20
  300. package/dist/core/tools/tmux-dispatch.js.map +1 -1
  301. package/dist/core/tools/tool-task.d.ts +1 -0
  302. package/dist/core/tools/tool-task.d.ts.map +1 -1
  303. package/dist/core/tools/tool-task.js +13 -8
  304. package/dist/core/tools/tool-task.js.map +1 -1
  305. package/dist/core/util/atomic-file.d.ts +2 -0
  306. package/dist/core/util/atomic-file.d.ts.map +1 -1
  307. package/dist/core/util/atomic-file.js +4 -0
  308. package/dist/core/util/atomic-file.js.map +1 -1
  309. package/dist/core/worktree-sync/codes.d.ts +1 -2
  310. package/dist/core/worktree-sync/codes.d.ts.map +1 -1
  311. package/dist/core/worktree-sync/codes.js +1 -2
  312. package/dist/core/worktree-sync/codes.js.map +1 -1
  313. package/dist/core/worktree-sync/lane-gate.d.ts +4 -8
  314. package/dist/core/worktree-sync/lane-gate.d.ts.map +1 -1
  315. package/dist/core/worktree-sync/lane-gate.js +5 -51
  316. package/dist/core/worktree-sync/lane-gate.js.map +1 -1
  317. package/dist/index.d.ts +5 -0
  318. package/dist/index.d.ts.map +1 -1
  319. package/dist/index.js +7 -0
  320. package/dist/index.js.map +1 -1
  321. package/dist/modes/interactive/auto-learn-controller.d.ts +6 -7
  322. package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
  323. package/dist/modes/interactive/auto-learn-controller.js +32 -207
  324. package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
  325. package/dist/modes/interactive/autonomy-commands.js +2 -2
  326. package/dist/modes/interactive/autonomy-commands.js.map +1 -1
  327. package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
  328. package/dist/modes/interactive/components/activity-lane.js +12 -23
  329. package/dist/modes/interactive/components/activity-lane.js.map +1 -1
  330. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  331. package/dist/modes/interactive/components/custom-message.js +142 -1
  332. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  333. package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
  334. package/dist/modes/interactive/components/fitness-role-selector.js +2 -2
  335. package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
  336. package/dist/modes/interactive/components/footer.js +1 -1
  337. package/dist/modes/interactive/components/footer.js.map +1 -1
  338. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  339. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  340. package/dist/modes/interactive/components/settings-selector.js +150 -73
  341. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  342. package/dist/modes/interactive/report-commands.d.ts.map +1 -1
  343. package/dist/modes/interactive/report-commands.js +8 -4
  344. package/dist/modes/interactive/report-commands.js.map +1 -1
  345. package/dist/modes/interactive/settings-selector-flow.d.ts.map +1 -1
  346. package/dist/modes/interactive/settings-selector-flow.js +10 -0
  347. package/dist/modes/interactive/settings-selector-flow.js.map +1 -1
  348. package/docs/extensions.md +8 -0
  349. package/docs/harness-architecture.md +28 -32
  350. package/docs/index.md +1 -1
  351. package/docs/process-matrix.md +8 -6
  352. package/docs/resources.md +1 -1
  353. package/docs/settings.md +61 -51
  354. package/docs/tmux-agent-manager.md +47 -40
  355. package/docs/usage.md +1 -1
  356. package/docs/worker-profiles.md +8 -6
  357. package/docs/worktree-sync.md +26 -20
  358. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  359. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  360. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  361. package/examples/extensions/sandbox/package-lock.json +2 -2
  362. package/examples/extensions/sandbox/package.json +1 -1
  363. package/examples/extensions/with-deps/package-lock.json +2 -2
  364. package/examples/extensions/with-deps/package.json +1 -1
  365. package/npm-shrinkwrap.json +12 -12
  366. package/package.json +4 -4
  367. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts +0 -133
  368. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +0 -1
  369. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js +0 -199
  370. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +0 -1
  371. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.ts +0 -312
@@ -1,9 +1,12 @@
1
1
  import type { ThinkingLevel } from "@caupulican/pi-agent-core";
2
2
  import type { Transport } from "@caupulican/pi-ai";
3
3
  import { Container, type SelectItem, SelectList, SettingsList } from "@caupulican/pi-tui";
4
+ import { type CostGuardSettings } from "../../../core/cost-guard.ts";
4
5
  import type { AutoLearnSettings, AutonomySettings, ContextCurationSettings, ContextPromptEnforcementSettings, LearningPolicySettings, MemoryRetrievalSettings, ModelCapabilitySettings, ModelRouterSettings, ResearchLaneSettings, SelfModificationSettings, SettingsScope, WarningSettings, WorkerDelegationSettings } from "../../../core/settings-manager.ts";
5
6
  export interface SettingsConfig {
6
7
  autoCompact: boolean;
8
+ costGuard: CostGuardSettings;
9
+ costGuardScope?: SettingsScope;
7
10
  showImages: boolean;
8
11
  imageWidthCells: number;
9
12
  autoResizeImages: boolean;
@@ -68,6 +71,7 @@ export interface SettingsConfig {
68
71
  }
69
72
  export interface SettingsCallbacks {
70
73
  onAutoCompactChange: (enabled: boolean) => void;
74
+ onCostGuardChange: (settings: CostGuardSettings, scope: SettingsScope) => void;
71
75
  onShowImagesChange: (enabled: boolean) => void;
72
76
  onImageWidthCellsChange: (width: number) => void;
73
77
  onAutoResizeImagesChange: (enabled: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-selector.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { Container, getCapabilities, getKeybindings, Input, SelectList, SettingsList, Spacer, Text, } from "@caupulican/pi-tui";
2
+ import { DEFAULT_ENABLED_COST_GUARD_MAX_TURN_USD } from "../../../core/cost-guard.js";
2
3
  import { DEFAULT_WORKER_FLEET_LIMITS } from "../../../core/delegation/worker-fleet-limits.js";
3
4
  import { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from "../../../core/http-dispatcher.js";
4
- import { DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE, DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE_DELAY_MS, DEFAULT_AUTONOMY_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, DEFAULT_AUTONOMY_GOAL_CONTINUE_TURNS, DEFAULT_AUTONOMY_MAX_STALL_TURNS, DEFAULT_RESEARCH_LANE_ENABLED, DEFAULT_RESEARCH_LANE_IDLE_DELAY_MS, DEFAULT_RESEARCH_LANE_MAX_RUNS_PER_SESSION, DEFAULT_RESEARCH_LANE_MAX_USD, DEFAULT_RESEARCH_LANE_MAX_WALL_CLOCK_MS, DEFAULT_WORKER_DELEGATION_ENABLED, DEFAULT_WORKER_DELEGATION_MAX_CONCURRENT, DEFAULT_WORKER_DELEGATION_MAX_USD, DEFAULT_WORKER_DELEGATION_MAX_WALL_CLOCK_MS, DEFAULT_WORKER_DELEGATION_WRITE_ENABLED, MAX_WORKER_DELEGATION_MAX_USD, } from "../../../core/settings-manager.js";
5
+ import { DEFAULT_AUTO_LEARN_SETTINGS, resolveAutoLearnSettings } from "../../../core/learning/auto-learn-settings.js";
6
+ import { DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE, DEFAULT_AUTONOMY_GOAL_AUTO_CONTINUE_DELAY_MS, DEFAULT_AUTONOMY_GOAL_CONTINUE_MAX_WALL_CLOCK_MINUTES, DEFAULT_AUTONOMY_GOAL_CONTINUE_TURNS, DEFAULT_AUTONOMY_MAX_STALL_TURNS, DEFAULT_LEARNING_POLICY_AUTO_APPLY_ENABLED, DEFAULT_LEARNING_POLICY_AUTO_APPLY_SUPERSESSIONS, DEFAULT_LEARNING_POLICY_CONFIDENCE_THRESHOLD, DEFAULT_LEARNING_POLICY_ENABLED, DEFAULT_LEARNING_POLICY_MIN_OBSERVATIONS, DEFAULT_RESEARCH_LANE_ENABLED, DEFAULT_RESEARCH_LANE_IDLE_DELAY_MS, DEFAULT_RESEARCH_LANE_MAX_RUNS_PER_SESSION, DEFAULT_RESEARCH_LANE_MAX_USD, DEFAULT_RESEARCH_LANE_MAX_WALL_CLOCK_MS, DEFAULT_WORKER_DELEGATION_ENABLED, DEFAULT_WORKER_DELEGATION_MAX_CONCURRENT, DEFAULT_WORKER_DELEGATION_MAX_USD, DEFAULT_WORKER_DELEGATION_MAX_WALL_CLOCK_MS, DEFAULT_WORKER_DELEGATION_WRITE_ENABLED, MAX_WORKER_DELEGATION_MAX_USD, } from "../../../core/settings-manager.js";
5
7
  import { getSelectListTheme, getSettingsListTheme, theme } from "../theme/theme.js";
6
8
  import { THINKING_LEVEL_DESCRIPTIONS } from "../thinking-level-descriptions.js";
7
9
  import { DynamicBorder } from "./dynamic-border.js";
@@ -34,18 +36,6 @@ const CONTEXT_MEMORY_RETRIEVAL_DEFAULTS = {
34
36
  includeInPrompt: true,
35
37
  allowExternalEgress: false,
36
38
  };
37
- const AUTO_LEARN_DEFAULTS = {
38
- model: "active",
39
- longSessionMessages: 32,
40
- longSessionContextPercent: 70,
41
- cooldownMinutes: 120,
42
- leaseMinutes: 90,
43
- maxConcurrentLearners: 2,
44
- applyHighConfidence: false,
45
- reflectionReview: true,
46
- reflectionMinToolCalls: 5,
47
- reflectionCooldownMinutes: 60,
48
- };
49
39
  function booleanSettingValue(value, defaultValue = false) {
50
40
  return (value ?? defaultValue) ? "true" : "false";
51
41
  }
@@ -64,7 +54,7 @@ function numberSettingValue(value, defaultValue) {
64
54
  return String(value ?? defaultValue);
65
55
  }
66
56
  function autoLearnModelValue(settings) {
67
- return optionalStringValue(settings.model, AUTO_LEARN_DEFAULTS.model);
57
+ return optionalStringValue(settings.model, DEFAULT_AUTO_LEARN_SETTINGS.model);
68
58
  }
69
59
  function selfModificationSummary(settings) {
70
60
  if (!(settings.enabled ?? false))
@@ -73,6 +63,11 @@ function selfModificationSummary(settings) {
73
63
  (Array.isArray(settings.sourcePaths) && settings.sourcePaths.some((candidate) => Boolean(candidate?.trim())));
74
64
  return hasPath ? "enabled" : "enabled (missing path)";
75
65
  }
66
+ function costGuardSummary(settings) {
67
+ if (!settings.enabled)
68
+ return "disabled";
69
+ return `${settings.action} at $${settings.maxTurnUsd.toFixed(2)}/turn`;
70
+ }
76
71
  function autonomyModeValue(settings) {
77
72
  return settings.mode && AUTONOMY_MODES.includes(settings.mode) ? settings.mode : "off";
78
73
  }
@@ -112,9 +107,11 @@ function contextCurationSummary(settings) {
112
107
  return `on · ${settings.model ?? "no model"} · ${settings.maxJobsPerTurn ?? 4} jobs/turn`;
113
108
  }
114
109
  function learningPolicySummary(settings) {
115
- if (!settings.enabled)
110
+ if (!(settings.enabled ?? DEFAULT_LEARNING_POLICY_ENABLED))
116
111
  return "disabled (legacy direct-apply)";
117
- return `on · auto-apply ${settings.autoApplyEnabled ? "on" : "off"} · conf>=${settings.confidenceThreshold ?? 60}`;
112
+ const autoApply = settings.autoApplyEnabled ?? DEFAULT_LEARNING_POLICY_AUTO_APPLY_ENABLED;
113
+ const confidence = settings.confidenceThreshold ?? DEFAULT_LEARNING_POLICY_CONFIDENCE_THRESHOLD;
114
+ return `on · auto-apply ${autoApply ? "on" : "off"} · conf>=${confidence}`;
118
115
  }
119
116
  function modelCapabilitySummary(settings) {
120
117
  const mode = settings.mode ?? "auto";
@@ -124,10 +121,11 @@ function workerDelegationSummary(settings) {
124
121
  if (!(settings.enabled ?? DEFAULT_WORKER_DELEGATION_ENABLED))
125
122
  return "disabled";
126
123
  const maxUsd = settings.maxUsd ?? DEFAULT_WORKER_DELEGATION_MAX_USD;
127
- return maxUsd > 0 ? `enabled ($${maxUsd}/tree)` : "enabled (unbounded)";
124
+ return maxUsd > 0 ? `enabled ($${maxUsd}/worker)` : "enabled (unbounded)";
128
125
  }
129
- function autoLearnSummary(settings) {
130
- return settings.enabled ? `enabled (${autoLearnModelValue(settings)})` : "disabled";
126
+ function autoLearnSummary(settings, autonomyMode) {
127
+ const effective = resolveAutoLearnSettings(autonomyMode, settings);
128
+ return effective.enabled ? `enabled (${effective.model})` : "disabled";
131
129
  }
132
130
  function contextPolicyEnforcementSummary(settings) {
133
131
  if (!(settings.enabled ?? CONTEXT_POLICY_ENFORCEMENT_DEFAULTS.enabled))
@@ -154,7 +152,7 @@ function buildAutoLearnModelOptions(settings, configuredModelOptions, currentMod
154
152
  const currentValue = autoLearnModelValue(settings);
155
153
  const options = [
156
154
  {
157
- value: AUTO_LEARN_DEFAULTS.model,
155
+ value: DEFAULT_AUTO_LEARN_SETTINGS.model,
158
156
  label: "active",
159
157
  description: currentModelPattern
160
158
  ? `Use the current session model (${currentModelPattern})`
@@ -168,7 +166,7 @@ function buildAutoLearnModelOptions(settings, configuredModelOptions, currentMod
168
166
  options.push(option);
169
167
  seen.add(option.value);
170
168
  }
171
- if (currentValue !== AUTO_LEARN_DEFAULTS.model && !seen.has(currentValue)) {
169
+ if (currentValue !== DEFAULT_AUTO_LEARN_SETTINGS.model && !seen.has(currentValue)) {
172
170
  options.push({
173
171
  value: currentValue,
174
172
  label: currentValue,
@@ -188,13 +186,13 @@ function buildModelRouterRoleModelOptions(options) {
188
186
  const seen = new Set();
189
187
  if (options.includeActive) {
190
188
  modelOptions.push({
191
- value: AUTO_LEARN_DEFAULTS.model,
189
+ value: DEFAULT_AUTO_LEARN_SETTINGS.model,
192
190
  label: "active",
193
191
  description: options.currentModelPattern
194
192
  ? `Use the current session model (${options.currentModelPattern})`
195
193
  : "Use the current session model",
196
194
  });
197
- seen.add(AUTO_LEARN_DEFAULTS.model);
195
+ seen.add(DEFAULT_AUTO_LEARN_SETTINGS.model);
198
196
  }
199
197
  else {
200
198
  modelOptions.push({
@@ -264,7 +262,7 @@ class ModelSelectionSubmenu extends Container {
264
262
  customTitle: "Custom Auto Learn Model",
265
263
  customDescription: 'Enter "active" or a provider/model pattern like "openai/gpt-5.4".',
266
264
  customEmptyHint: 'empty uses "active"',
267
- customEmptyValue: AUTO_LEARN_DEFAULTS.model,
265
+ customEmptyValue: DEFAULT_AUTO_LEARN_SETTINGS.model,
268
266
  }) {
269
267
  super();
270
268
  this.customInput = null;
@@ -328,6 +326,73 @@ class SettingsListSubmenu extends Container {
328
326
  this.settingsList.handleInput(data);
329
327
  }
330
328
  }
329
+ class CostGuardSettingsSubmenu extends SettingsListSubmenu {
330
+ constructor(settings, onChange, onCancel, scope = "global") {
331
+ super();
332
+ this.state = { ...settings };
333
+ this.scope = scope;
334
+ this.mountSettingsList([
335
+ {
336
+ id: "cost-guard-scope",
337
+ label: "Save scope",
338
+ description: "Save this foreground cost guard globally or in the current project's .pi/settings.json",
339
+ currentValue: this.scope,
340
+ values: ["global", "project"],
341
+ },
342
+ {
343
+ id: "cost-guard-enabled",
344
+ label: "Enabled",
345
+ description: "Explicit opt-in. A saved threshold alone remains dormant and never limits or labels a turn.",
346
+ currentValue: String(this.state.enabled),
347
+ values: ["false", "true"],
348
+ },
349
+ {
350
+ id: "cost-guard-max-turn-usd",
351
+ label: "Maximum USD per turn",
352
+ description: "Projected foreground plus current-turn background spend; zero keeps the guard inactive",
353
+ currentValue: String(this.state.maxTurnUsd),
354
+ submenu: (_currentValue, done) => new TextInputSubmenu("Foreground Cost Guard Threshold", "Enter a nonnegative finite USD projection threshold. The Enabled switch is still mandatory.", String(this.state.maxTurnUsd), (value) => {
355
+ const maxTurnUsd = Number(value.trim());
356
+ if (!Number.isFinite(maxTurnUsd) || maxTurnUsd < 0) {
357
+ done();
358
+ return;
359
+ }
360
+ this.state = { ...this.state, maxTurnUsd };
361
+ onChange({ ...this.state }, this.scope);
362
+ done(String(maxTurnUsd));
363
+ }, () => done(), "nonnegative finite number; invalid input keeps the current value"),
364
+ },
365
+ {
366
+ id: "cost-guard-action",
367
+ label: "Action",
368
+ description: "warn only, or reduce reasoning one supported level for the imminent request",
369
+ currentValue: this.state.action,
370
+ values: ["warn", "downgrade"],
371
+ },
372
+ ], (id, newValue) => {
373
+ switch (id) {
374
+ case "cost-guard-scope":
375
+ this.scope = newValue;
376
+ break;
377
+ case "cost-guard-enabled":
378
+ this.state = {
379
+ ...this.state,
380
+ enabled: newValue === "true",
381
+ maxTurnUsd: newValue === "true" && this.state.maxTurnUsd <= 0
382
+ ? DEFAULT_ENABLED_COST_GUARD_MAX_TURN_USD
383
+ : this.state.maxTurnUsd,
384
+ };
385
+ break;
386
+ case "cost-guard-action":
387
+ this.state = { ...this.state, action: newValue === "downgrade" ? "downgrade" : "warn" };
388
+ break;
389
+ default:
390
+ return;
391
+ }
392
+ onChange({ ...this.state }, this.scope);
393
+ }, onCancel);
394
+ }
395
+ }
331
396
  const PROJECT_CONTEXT_SCOPE_VALUES = ["this-directory", "this-project", "all-projects"];
332
397
  function projectContextScopeValue(scope) {
333
398
  if (scope === "project")
@@ -453,7 +518,7 @@ class AutonomySettingsSubmenu extends SettingsListSubmenu {
453
518
  {
454
519
  id: "autonomy-mode",
455
520
  label: "Mode",
456
- description: "One preset for background learning: off, safe, balanced, or standing autonomy",
521
+ description: "One preset for learning and root-session reflection cues: off, safe, balanced, or standing autonomy",
457
522
  currentValue: autonomyModeValue(this.state),
458
523
  values: AUTONOMY_MODES,
459
524
  },
@@ -622,36 +687,36 @@ class LearningPolicySettingsSubmenu extends SettingsListSubmenu {
622
687
  {
623
688
  id: "learning-policy-enabled",
624
689
  label: "Enabled",
625
- description: "Gate reflection writes through the learning policy (proposals, audits, rollback). Disabled keeps legacy direct-apply with audit records.",
626
- currentValue: String(this.state.enabled ?? false),
690
+ description: "Gate root-session reflection writes through the learning policy (proposals, audits, rollback). Disabled keeps legacy direct-apply with audit records.",
691
+ currentValue: String(this.state.enabled ?? DEFAULT_LEARNING_POLICY_ENABLED),
627
692
  values: ["true", "false"],
628
693
  },
629
694
  {
630
695
  id: "learning-policy-auto-apply",
631
696
  label: "Auto-apply",
632
697
  description: "Allow eligible writes to auto-apply; otherwise everything becomes a proposal",
633
- currentValue: String(this.state.autoApplyEnabled ?? false),
698
+ currentValue: String(this.state.autoApplyEnabled ?? DEFAULT_LEARNING_POLICY_AUTO_APPLY_ENABLED),
634
699
  values: ["true", "false"],
635
700
  },
636
701
  {
637
702
  id: "learning-policy-auto-apply-supersessions",
638
703
  label: "Auto-apply supersessions",
639
704
  description: "Allow a memory_replace/memory_remove (overwrites or deletes an existing fact) to auto-apply once otherwise eligible; off keeps every supersession a proposal",
640
- currentValue: String(this.state.autoApplySupersessions ?? false),
705
+ currentValue: String(this.state.autoApplySupersessions ?? DEFAULT_LEARNING_POLICY_AUTO_APPLY_SUPERSESSIONS),
641
706
  values: ["true", "false"],
642
707
  },
643
708
  {
644
709
  id: "learning-policy-confidence",
645
710
  label: "Confidence threshold",
646
711
  description: "Minimum confidence (0-100) before a write may auto-apply; below it, proposal or no-op",
647
- currentValue: String(this.state.confidenceThreshold ?? 60),
712
+ currentValue: String(this.state.confidenceThreshold ?? DEFAULT_LEARNING_POLICY_CONFIDENCE_THRESHOLD),
648
713
  values: ["25", "50", "60", "75", "90"],
649
714
  },
650
715
  {
651
716
  id: "learning-policy-min-observations",
652
717
  label: "Min observations",
653
718
  description: "Observations required before auto-apply (allowedAutoApplyLayers stays JSON-only)",
654
- currentValue: String(this.state.minObservations ?? 2),
719
+ currentValue: String(this.state.minObservations ?? DEFAULT_LEARNING_POLICY_MIN_OBSERVATIONS),
655
720
  values: ["1", "2", "3", "5"],
656
721
  },
657
722
  ];
@@ -801,16 +866,16 @@ class WorkerDelegationSettingsSubmenu extends SettingsListSubmenu {
801
866
  {
802
867
  id: "worker-delegation-enabled",
803
868
  label: "Enabled",
804
- description: "Allow capable models to create autonomous recursive agent trees; enabled by default, and explicit false is a hard off-switch",
869
+ description: "Allow capable models to dispatch autonomous persistent leaf workers; enabled by default, and explicit false is a hard off-switch",
805
870
  currentValue: String(this.state.enabled),
806
871
  values: ["true", "false"],
807
872
  },
808
873
  {
809
874
  id: "worker-delegation-max-usd",
810
- label: "Budget per agent tree",
811
- description: "Cumulative USD budget shared by a root agent and every descendant; 0 disables this ceiling",
875
+ label: "Budget per worker task",
876
+ description: "Cumulative USD budget for one worker task; 0 disables this ceiling",
812
877
  currentValue: String(this.state.maxUsd),
813
- submenu: (_currentValue, done) => new TextInputSubmenu("Agent Tree USD Budget", `Enter a nonnegative finite number no greater than ${MAX_WORKER_DELEGATION_MAX_USD}. Zero disables the settings-level cost ceiling.`, String(this.state.maxUsd), (value) => {
878
+ submenu: (_currentValue, done) => new TextInputSubmenu("Worker Task USD Budget", `Enter a nonnegative finite number no greater than ${MAX_WORKER_DELEGATION_MAX_USD}. Zero disables the settings-level cost ceiling.`, String(this.state.maxUsd), (value) => {
814
879
  const maxUsd = Number(value.trim());
815
880
  if (Number.isFinite(maxUsd) && maxUsd >= 0 && maxUsd <= MAX_WORKER_DELEGATION_MAX_USD) {
816
881
  this.state = { ...this.state, maxUsd };
@@ -822,10 +887,10 @@ class WorkerDelegationSettingsSubmenu extends SettingsListSubmenu {
822
887
  },
823
888
  {
824
889
  id: "worker-delegation-max-wall-clock-ms",
825
- label: "Tree active milliseconds",
826
- description: "Cumulative active wall-clock budget across the agent tree; 0 disables the time budget",
890
+ label: "Worker task milliseconds",
891
+ description: "Active wall-clock budget for one worker task; 0 disables the time budget",
827
892
  currentValue: String(this.state.maxWallClockMs),
828
- submenu: (_currentValue, done) => new TextInputSubmenu("Agent Tree Active Time", "Enter cumulative active milliseconds as a nonnegative safe integer. Zero disables the time ceiling.", String(this.state.maxWallClockMs), (value) => {
893
+ submenu: (_currentValue, done) => new TextInputSubmenu("Worker Task Active Time", "Enter active milliseconds per worker task as a nonnegative safe integer. Zero disables the time ceiling.", String(this.state.maxWallClockMs), (value) => {
829
894
  const maxWallClockMs = Number(value.trim());
830
895
  if (Number.isSafeInteger(maxWallClockMs) && maxWallClockMs >= 0) {
831
896
  this.state = { ...this.state, maxWallClockMs };
@@ -838,16 +903,16 @@ class WorkerDelegationSettingsSubmenu extends SettingsListSubmenu {
838
903
  {
839
904
  id: "worker-delegation-write-enabled",
840
905
  label: "Allow file writes",
841
- description: "Let agents change files through direct write/edit tools; default scope is the current workspace and explicit false revokes it",
906
+ description: "Let workers change files through direct write/edit tools; default authority is machine-wide and explicit false revokes it",
842
907
  currentValue: String(this.state.writeEnabled ?? DEFAULT_WORKER_DELEGATION_WRITE_ENABLED),
843
908
  values: ["true", "false"],
844
909
  },
845
910
  {
846
911
  id: "worker-delegation-max-concurrent",
847
912
  label: "Max concurrent workers",
848
- description: `Global scheduler concurrency; fixed fleet caps are depth ${DEFAULT_WORKER_FLEET_LIMITS.maxDepth}, ${DEFAULT_WORKER_FLEET_LIMITS.maxChildrenPerAgent} children/agent, and ${DEFAULT_WORKER_FLEET_LIMITS.maxAgentsPerSession} session agents`,
913
+ description: `Global scheduler concurrency for leaf workers; the fleet retains at most ${DEFAULT_WORKER_FLEET_LIMITS.maxAgentsPerSession} logical agents per session`,
849
914
  currentValue: String(this.state.maxConcurrent),
850
- submenu: (_currentValue, done) => new TextInputSubmenu("Global Worker Concurrency", `Enter any positive safe integer. This limits running agents; fixed safety ceilings separately bound depth ${DEFAULT_WORKER_FLEET_LIMITS.maxDepth}, ${DEFAULT_WORKER_FLEET_LIMITS.maxChildrenPerAgent} direct children, ${DEFAULT_WORKER_FLEET_LIMITS.maxAgentsPerSession} session agents, and ${DEFAULT_WORKER_FLEET_LIMITS.maxQueuedDispatches} queued dispatches.`, String(this.state.maxConcurrent), (value) => {
915
+ submenu: (_currentValue, done) => new TextInputSubmenu("Global Worker Concurrency", `Enter any positive safe integer. This limits running leaf workers; fixed safety ceilings separately bound ${DEFAULT_WORKER_FLEET_LIMITS.maxAgentsPerSession} session agents and ${DEFAULT_WORKER_FLEET_LIMITS.maxQueuedDispatches} queued dispatches.`, String(this.state.maxConcurrent), (value) => {
851
916
  const maxConcurrent = Number(value.trim());
852
917
  if (Number.isSafeInteger(maxConcurrent) && maxConcurrent > 0) {
853
918
  this.state = { ...this.state, maxConcurrent };
@@ -886,13 +951,14 @@ class WorkerDelegationSettingsSubmenu extends SettingsListSubmenu {
886
951
  }
887
952
  }
888
953
  class AutoLearnSettingsSubmenu extends SettingsListSubmenu {
889
- constructor(settings, currentModelPattern, modelOptions, onChange, onCancel, scope = "global") {
954
+ constructor(settings, autonomyMode, currentModelPattern, modelOptions, onChange, onCancel, scope = "global") {
890
955
  super();
891
956
  this.state = { ...settings };
892
957
  this.scope = scope;
958
+ const defaults = resolveAutoLearnSettings(autonomyMode, settings);
893
959
  const modelDescription = currentModelPattern
894
- ? `Model for background learning. "active" uses ${currentModelPattern}; configured subscription/API models are listed first.`
895
- : 'Model for background learning. Use "active" for the current session model, or choose a configured subscription/API model.';
960
+ ? `Model for explicit/background learning. "active" uses ${currentModelPattern}; configured subscription/API models are listed first. Automatic reflection uses the orchestrator's current session turn.`
961
+ : 'Model for explicit/background learning. Use "active" for the current session model, or choose a configured subscription/API model. Automatic reflection uses the orchestrator\'s current session turn.';
896
962
  const selectableModelOptions = buildAutoLearnModelOptions(this.state, modelOptions, currentModelPattern);
897
963
  const items = [
898
964
  {
@@ -906,7 +972,7 @@ class AutoLearnSettingsSubmenu extends SettingsListSubmenu {
906
972
  id: "auto-learn-enabled",
907
973
  label: "Enabled",
908
974
  description: "Autonomously trigger background history scavenging for long sessions",
909
- currentValue: booleanSettingValue(this.state.enabled),
975
+ currentValue: booleanSettingValue(this.state.enabled, defaults.enabled),
910
976
  values: ["true", "false"],
911
977
  },
912
978
  {
@@ -924,64 +990,64 @@ class AutoLearnSettingsSubmenu extends SettingsListSubmenu {
924
990
  id: "auto-learn-long-session-messages",
925
991
  label: "Message trigger",
926
992
  description: "Trigger after this many message entries in the active branch",
927
- currentValue: numberSettingValue(this.state.longSessionMessages, AUTO_LEARN_DEFAULTS.longSessionMessages),
993
+ currentValue: numberSettingValue(this.state.longSessionMessages, defaults.longSessionMessages),
928
994
  values: ["16", "32", "64", "128", "256"],
929
995
  },
930
996
  {
931
997
  id: "auto-learn-context-percent",
932
998
  label: "Context trigger %",
933
999
  description: "Trigger when current context usage reaches this percentage",
934
- currentValue: numberSettingValue(this.state.longSessionContextPercent, AUTO_LEARN_DEFAULTS.longSessionContextPercent),
935
- values: ["50", "60", "70", "80", "90"],
1000
+ currentValue: numberSettingValue(this.state.longSessionContextPercent, defaults.longSessionContextPercent),
1001
+ values: ["50", "60", "70", "80", "85", "90"],
936
1002
  },
937
1003
  {
938
1004
  id: "auto-learn-cooldown-minutes",
939
1005
  label: "Cooldown minutes",
940
1006
  description: "Per-session-tenant cooldown between learner launches",
941
- currentValue: numberSettingValue(this.state.cooldownMinutes, AUTO_LEARN_DEFAULTS.cooldownMinutes),
942
- values: ["15", "30", "60", "120", "240"],
1007
+ currentValue: numberSettingValue(this.state.cooldownMinutes, defaults.cooldownMinutes),
1008
+ values: ["15", "30", "60", "120", "240", "1440"],
943
1009
  },
944
1010
  {
945
1011
  id: "auto-learn-lease-minutes",
946
1012
  label: "Lease minutes",
947
1013
  description: "Shared-state lease duration for a running background learner",
948
- currentValue: numberSettingValue(this.state.leaseMinutes, AUTO_LEARN_DEFAULTS.leaseMinutes),
1014
+ currentValue: numberSettingValue(this.state.leaseMinutes, defaults.leaseMinutes),
949
1015
  values: ["30", "60", "90", "180"],
950
1016
  },
951
1017
  {
952
1018
  id: "auto-learn-max-concurrent",
953
1019
  label: "Max learners",
954
1020
  description: "Maximum running Auto Learn background learners per session tenant",
955
- currentValue: numberSettingValue(this.state.maxConcurrentLearners, AUTO_LEARN_DEFAULTS.maxConcurrentLearners),
1021
+ currentValue: numberSettingValue(this.state.maxConcurrentLearners, defaults.maxConcurrentLearners),
956
1022
  values: ["1", "2", "3", "4"],
957
1023
  },
958
1024
  {
959
1025
  id: "auto-learn-apply-high-confidence",
960
1026
  label: "Apply high confidence",
961
1027
  description: "Allow high-confidence memory candidates to be applied automatically; broader write authority follows autonomy.mode",
962
- currentValue: booleanSettingValue(this.state.applyHighConfidence, AUTO_LEARN_DEFAULTS.applyHighConfidence),
1028
+ currentValue: booleanSettingValue(this.state.applyHighConfidence, defaults.applyHighConfidence),
963
1029
  values: ["false", "true"],
964
1030
  },
965
1031
  {
966
1032
  id: "auto-learn-reflection-review",
967
1033
  label: "Reflection review",
968
- description: "After corrective or complex turns, launch a bounded background learning review",
969
- currentValue: booleanSettingValue(this.state.reflectionReview, AUTO_LEARN_DEFAULTS.reflectionReview),
1034
+ description: "After corrective or complex turns, queue a durable root-session reflection cue for the next ordinary turn",
1035
+ currentValue: booleanSettingValue(this.state.reflectionReview, defaults.reflectionReview),
970
1036
  values: ["true", "false"],
971
1037
  },
972
1038
  {
973
1039
  id: "auto-learn-reflection-tool-calls",
974
1040
  label: "Reflection tool trigger",
975
- description: "Trigger reflection review after this many tool calls in one completed turn",
976
- currentValue: numberSettingValue(this.state.reflectionMinToolCalls, AUTO_LEARN_DEFAULTS.reflectionMinToolCalls),
1041
+ description: "Queue a root-session reflection cue after this many tool calls in one completed turn",
1042
+ currentValue: numberSettingValue(this.state.reflectionMinToolCalls, defaults.reflectionMinToolCalls),
977
1043
  values: ["3", "5", "8", "12"],
978
1044
  },
979
1045
  {
980
1046
  id: "auto-learn-reflection-cooldown",
981
1047
  label: "Reflection cooldown",
982
- description: "Per-session-tenant cooldown between reflection-review launches",
983
- currentValue: numberSettingValue(this.state.reflectionCooldownMinutes, AUTO_LEARN_DEFAULTS.reflectionCooldownMinutes),
984
- values: ["15", "30", "60", "120"],
1048
+ description: "Per-session-tenant cooldown between automatic root-session reflection cues",
1049
+ currentValue: numberSettingValue(this.state.reflectionCooldownMinutes, defaults.reflectionCooldownMinutes),
1050
+ values: ["15", "30", "60", "120", "1440"],
985
1051
  },
986
1052
  ];
987
1053
  this.mountSettingsList(items, (id, newValue) => {
@@ -1349,20 +1415,20 @@ class ModelRouterSettingsSubmenu extends SettingsListSubmenu {
1349
1415
  },
1350
1416
  {
1351
1417
  id: "model-router-learning",
1352
- label: "Learning/reflection model",
1353
- description: "Pick the model for background reflection, learn, and skill-creator work; active uses the session model",
1418
+ label: "Learning model",
1419
+ description: "Pick the model for explicit/background learning and skill-creator work; automatic reflection uses the orchestrator's current session turn",
1354
1420
  currentValue: optionalStringValue(this.state.learningModel, "active"),
1355
- submenu: (_currentValue, done) => new ModelSelectionSubmenu(learningModelOptions, this.state.learningModel ?? AUTO_LEARN_DEFAULTS.model, (value) => {
1421
+ submenu: (_currentValue, done) => new ModelSelectionSubmenu(learningModelOptions, this.state.learningModel ?? DEFAULT_AUTO_LEARN_SETTINGS.model, (value) => {
1356
1422
  this.state = { ...this.state, learningModel: value };
1357
1423
  onChange({ ...this.state }, this.scope);
1358
1424
  done(optionalStringValue(this.state.learningModel, "active"));
1359
1425
  }, () => done(), {
1360
- title: "Learning / Reflection Model",
1361
- description: "Choose active or a model from configured subscription/API accounts. Type to filter; manual is fallback.",
1362
- customTitle: "Custom Learning / Reflection Model",
1363
- customDescription: 'Enter "active" or a provider/model pattern from pi --list-models.',
1426
+ title: "Learning Model",
1427
+ description: "Choose active or a model from configured subscription/API accounts for explicit/background learning. Automatic reflection uses the orchestrator's current session turn. Type to filter; manual is fallback.",
1428
+ customTitle: "Custom Learning Model",
1429
+ customDescription: 'Enter "active" or a provider/model pattern for explicit/background learning from pi --list-models.',
1364
1430
  customEmptyHint: 'empty uses "active"',
1365
- customEmptyValue: AUTO_LEARN_DEFAULTS.model,
1431
+ customEmptyValue: DEFAULT_AUTO_LEARN_SETTINGS.model,
1366
1432
  }),
1367
1433
  },
1368
1434
  {
@@ -1532,6 +1598,7 @@ export class SettingsSelectorComponent extends Container {
1532
1598
  super();
1533
1599
  const supportsImages = getCapabilities().images;
1534
1600
  const followUpKey = keyDisplayText("app.message.followUp");
1601
+ let currentCostGuard = { ...config.costGuard };
1535
1602
  let currentWarnings = { ...config.warnings };
1536
1603
  let currentSelfModification = { ...config.selfModification };
1537
1604
  let currentAutonomy = { ...config.autonomy };
@@ -1552,6 +1619,16 @@ export class SettingsSelectorComponent extends Container {
1552
1619
  currentValue: config.autoCompact ? "true" : "false",
1553
1620
  values: ["true", "false"],
1554
1621
  },
1622
+ {
1623
+ id: "cost-guard",
1624
+ label: "Foreground cost guard",
1625
+ description: "Optional per-turn USD projection warning or reasoning downgrade; disabled by default",
1626
+ currentValue: costGuardSummary(currentCostGuard),
1627
+ submenu: (_currentValue, done) => new CostGuardSettingsSubmenu(currentCostGuard, (settings, scope) => {
1628
+ currentCostGuard = { ...settings };
1629
+ callbacks.onCostGuardChange(settings, scope);
1630
+ }, () => done(costGuardSummary(currentCostGuard)), config.costGuardScope ?? "global"),
1631
+ },
1555
1632
  {
1556
1633
  id: "steering-mode",
1557
1634
  label: "Steering mode",
@@ -1666,7 +1743,7 @@ export class SettingsSelectorComponent extends Container {
1666
1743
  {
1667
1744
  id: "worker-delegation",
1668
1745
  label: "Worker Delegation",
1669
- description: "Default-on provider-neutral agent trees: recursive delegation, inherited authority, and optional owner-authored execution presets",
1746
+ description: "Default-on provider-neutral leaf workers with inherited authority and optional owner-authored execution presets",
1670
1747
  currentValue: workerDelegationSummary(currentWorkerDelegation),
1671
1748
  submenu: (_currentValue, done) => new WorkerDelegationSettingsSubmenu(currentWorkerDelegation, (settings, scope) => {
1672
1749
  currentWorkerDelegation = { ...settings };
@@ -1706,7 +1783,7 @@ export class SettingsSelectorComponent extends Container {
1706
1783
  {
1707
1784
  id: "model-router",
1708
1785
  label: "Model Router",
1709
- description: "Configure models for cheap research, expensive modify/escalation, and background learning/reflection",
1786
+ description: "Configure models for cheap research, expensive modify/escalation, and explicit/background learning; automatic reflection uses the orchestrator's current session turn",
1710
1787
  currentValue: modelRouterSummary(currentModelRouter),
1711
1788
  submenu: (_currentValue, done) => new ModelRouterSettingsSubmenu(currentModelRouter, config.currentModelPattern, config.autoLearnModelOptions, config.resolveModelThinkingLevels, (settings, scope) => {
1712
1789
  currentModelRouter = { ...settings };
@@ -1717,11 +1794,11 @@ export class SettingsSelectorComponent extends Container {
1717
1794
  id: "auto-learn",
1718
1795
  label: "Auto Learn Advanced",
1719
1796
  description: "Advanced overrides for autonomous background learning/scavenging",
1720
- currentValue: autoLearnSummary(currentAutoLearn),
1721
- submenu: (_currentValue, done) => new AutoLearnSettingsSubmenu(currentAutoLearn, config.currentModelPattern, config.autoLearnModelOptions, (settings, scope) => {
1797
+ currentValue: autoLearnSummary(currentAutoLearn, autonomyModeValue(currentAutonomy)),
1798
+ submenu: (_currentValue, done) => new AutoLearnSettingsSubmenu(currentAutoLearn, autonomyModeValue(currentAutonomy), config.currentModelPattern, config.autoLearnModelOptions, (settings, scope) => {
1722
1799
  currentAutoLearn = { ...settings };
1723
1800
  callbacks.onAutoLearnChange(settings, scope);
1724
- }, () => done(autoLearnSummary(currentAutoLearn)), config.autoLearnScope ?? "global"),
1801
+ }, () => done(autoLearnSummary(currentAutoLearn, autonomyModeValue(currentAutonomy))), config.autoLearnScope ?? "global"),
1725
1802
  },
1726
1803
  {
1727
1804
  id: "context-policy-enforcement",