@qduc/term2 0.31.0 → 0.32.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 (455) hide show
  1. package/README.md +52 -370
  2. package/dist/acp-v2/serve.d.ts.map +1 -1
  3. package/dist/acp-v2/serve.js +6 -6
  4. package/dist/acp-v2/serve.js.map +1 -1
  5. package/dist/agent.d.ts +2 -1
  6. package/dist/agent.d.ts.map +1 -1
  7. package/dist/agent.js +14 -7
  8. package/dist/agent.js.map +1 -1
  9. package/dist/app.d.ts +3 -1
  10. package/dist/app.d.ts.map +1 -1
  11. package/dist/app.js +66 -21
  12. package/dist/app.js.map +1 -1
  13. package/dist/build-info.json +2 -2
  14. package/dist/cli.js +30 -24
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/goal-command.d.ts.map +1 -1
  17. package/dist/commands/goal-command.js +9 -8
  18. package/dist/commands/goal-command.js.map +1 -1
  19. package/dist/commands/model-command.d.ts.map +1 -1
  20. package/dist/commands/model-command.js +4 -8
  21. package/dist/commands/model-command.js.map +1 -1
  22. package/dist/commands/retry-failed-turn-command.d.ts.map +1 -1
  23. package/dist/commands/retry-failed-turn-command.js +3 -4
  24. package/dist/commands/retry-failed-turn-command.js.map +1 -1
  25. package/dist/components/InputBox.js +4 -6
  26. package/dist/components/InputBox.js.map +1 -1
  27. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  28. package/dist/components/input/ModelMenuSession.js +7 -12
  29. package/dist/components/input/ModelMenuSession.js.map +1 -1
  30. package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
  31. package/dist/components/input/SettingsMenuSession.js +0 -2
  32. package/dist/components/input/SettingsMenuSession.js.map +1 -1
  33. package/dist/components/input/SubagentPoolMenuSession.d.ts.map +1 -1
  34. package/dist/components/input/SubagentPoolMenuSession.js +0 -2
  35. package/dist/components/input/SubagentPoolMenuSession.js.map +1 -1
  36. package/dist/components/input/menu-types.d.ts +0 -2
  37. package/dist/components/input/menu-types.d.ts.map +1 -1
  38. package/dist/components/input/triggers.d.ts.map +1 -1
  39. package/dist/components/input/triggers.js +0 -2
  40. package/dist/components/input/triggers.js.map +1 -1
  41. package/dist/components/layout/Banner.js +4 -4
  42. package/dist/components/layout/Banner.js.map +1 -1
  43. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  44. package/dist/components/layout/BottomArea.js +13 -11
  45. package/dist/components/layout/BottomArea.js.map +1 -1
  46. package/dist/components/layout/StatusBar.js +4 -4
  47. package/dist/components/layout/StatusBar.js.map +1 -1
  48. package/dist/components/menu/settings-value-formatter.d.ts.map +1 -1
  49. package/dist/components/menu/settings-value-formatter.js +2 -12
  50. package/dist/components/menu/settings-value-formatter.js.map +1 -1
  51. package/dist/components/message/MessageList.d.ts +3 -1
  52. package/dist/components/message/MessageList.d.ts.map +1 -1
  53. package/dist/components/message/MessageList.js +5 -2
  54. package/dist/components/message/MessageList.js.map +1 -1
  55. package/dist/components/message/SessionBoundary.d.ts +11 -0
  56. package/dist/components/message/SessionBoundary.d.ts.map +1 -0
  57. package/dist/components/message/SessionBoundary.js +22 -0
  58. package/dist/components/message/SessionBoundary.js.map +1 -0
  59. package/dist/contracts/provider-input.d.ts +10 -0
  60. package/dist/contracts/provider-input.d.ts.map +1 -1
  61. package/dist/contracts/provider-input.js.map +1 -1
  62. package/dist/contracts/run-termination.d.ts +3 -1
  63. package/dist/contracts/run-termination.d.ts.map +1 -1
  64. package/dist/gateway/gateway.d.ts.map +1 -1
  65. package/dist/gateway/gateway.js +20 -10
  66. package/dist/gateway/gateway.js.map +1 -1
  67. package/dist/gateway/launcher-seam.js +2 -2
  68. package/dist/gateway/launcher-seam.js.map +1 -1
  69. package/dist/gateway/runtime-factory.d.ts.map +1 -1
  70. package/dist/gateway/runtime-factory.js +2 -3
  71. package/dist/gateway/runtime-factory.js.map +1 -1
  72. package/dist/gateway/settings-rpc.d.ts +5 -2
  73. package/dist/gateway/settings-rpc.d.ts.map +1 -1
  74. package/dist/gateway/settings-rpc.js +6 -4
  75. package/dist/gateway/settings-rpc.js.map +1 -1
  76. package/dist/hooks/settings-completion-config.d.ts +0 -2
  77. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  78. package/dist/hooks/settings-completion-config.js +3 -23
  79. package/dist/hooks/settings-completion-config.js.map +1 -1
  80. package/dist/hooks/use-app-commands.d.ts +1 -1
  81. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  82. package/dist/hooks/use-conversation-settings.d.ts +3 -2
  83. package/dist/hooks/use-conversation-settings.d.ts.map +1 -1
  84. package/dist/hooks/use-conversation-settings.js +4 -4
  85. package/dist/hooks/use-conversation-settings.js.map +1 -1
  86. package/dist/hooks/use-conversation.d.ts +1 -1
  87. package/dist/hooks/use-conversation.js +3 -3
  88. package/dist/hooks/use-conversation.js.map +1 -1
  89. package/dist/hooks/use-first-run-setup.d.ts +1 -2
  90. package/dist/hooks/use-first-run-setup.d.ts.map +1 -1
  91. package/dist/hooks/use-first-run-setup.js +7 -17
  92. package/dist/hooks/use-first-run-setup.js.map +1 -1
  93. package/dist/hooks/use-grok-credit-usage.js +1 -1
  94. package/dist/hooks/use-grok-credit-usage.js.map +1 -1
  95. package/dist/hooks/use-handoff-flow.d.ts +1 -1
  96. package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
  97. package/dist/hooks/use-handoff-flow.js +3 -3
  98. package/dist/hooks/use-handoff-flow.js.map +1 -1
  99. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  100. package/dist/hooks/use-model-selection.js +6 -8
  101. package/dist/hooks/use-model-selection.js.map +1 -1
  102. package/dist/hooks/use-opencode-go-usage.js +1 -1
  103. package/dist/hooks/use-opencode-go-usage.js.map +1 -1
  104. package/dist/hooks/use-runtime-settings.d.ts +2 -2
  105. package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
  106. package/dist/hooks/use-runtime-settings.js +3 -3
  107. package/dist/hooks/use-runtime-settings.js.map +1 -1
  108. package/dist/hooks/use-standalone-model-picker.d.ts.map +1 -1
  109. package/dist/hooks/use-standalone-model-picker.js +7 -6
  110. package/dist/hooks/use-standalone-model-picker.js.map +1 -1
  111. package/dist/hooks/use-subagent-pool-selection.d.ts +9 -16
  112. package/dist/hooks/use-subagent-pool-selection.d.ts.map +1 -1
  113. package/dist/hooks/use-subagent-pool-selection.js +15 -33
  114. package/dist/hooks/use-subagent-pool-selection.js.map +1 -1
  115. package/dist/lib/agent-chat-service.d.ts +6 -0
  116. package/dist/lib/agent-chat-service.d.ts.map +1 -1
  117. package/dist/lib/agent-chat-service.js +27 -3
  118. package/dist/lib/agent-chat-service.js.map +1 -1
  119. package/dist/lib/agent-client.d.ts +10 -5
  120. package/dist/lib/agent-client.d.ts.map +1 -1
  121. package/dist/lib/agent-client.js +86 -34
  122. package/dist/lib/agent-client.js.map +1 -1
  123. package/dist/lib/agent-configuration.d.ts +5 -4
  124. package/dist/lib/agent-configuration.d.ts.map +1 -1
  125. package/dist/lib/agent-configuration.js +24 -33
  126. package/dist/lib/agent-configuration.js.map +1 -1
  127. package/dist/lib/agent-factory.d.ts +4 -3
  128. package/dist/lib/agent-factory.d.ts.map +1 -1
  129. package/dist/lib/agent-factory.js +21 -7
  130. package/dist/lib/agent-factory.js.map +1 -1
  131. package/dist/non-interactive.d.ts +5 -0
  132. package/dist/non-interactive.d.ts.map +1 -1
  133. package/dist/non-interactive.js +67 -10
  134. package/dist/non-interactive.js.map +1 -1
  135. package/dist/prompts/durable-goal-context.d.ts.map +1 -1
  136. package/dist/prompts/durable-goal-context.js +12 -2
  137. package/dist/prompts/durable-goal-context.js.map +1 -1
  138. package/dist/prompts/durable-goal-context.test.ts +11 -0
  139. package/dist/prompts/durable-goal-context.ts +13 -2
  140. package/dist/providers/ai-sdk-openrouter.provider.js +3 -2
  141. package/dist/providers/ai-sdk-openrouter.provider.js.map +1 -1
  142. package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
  143. package/dist/providers/ai-sdk-streamed-model.js +12 -2
  144. package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
  145. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  146. package/dist/providers/codex-responses-model.js +35 -16
  147. package/dist/providers/codex-responses-model.js.map +1 -1
  148. package/dist/providers/codex.provider.js +1 -1
  149. package/dist/providers/codex.provider.js.map +1 -1
  150. package/dist/providers/grok.provider.js +1 -1
  151. package/dist/providers/grok.provider.js.map +1 -1
  152. package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
  153. package/dist/providers/openai-chat-completions-model.js +11 -3
  154. package/dist/providers/openai-chat-completions-model.js.map +1 -1
  155. package/dist/providers/openai-compatible-lazy.js +1 -1
  156. package/dist/providers/openai-compatible-lazy.js.map +1 -1
  157. package/dist/providers/openai.provider.js +1 -1
  158. package/dist/providers/openai.provider.js.map +1 -1
  159. package/dist/providers/openrouter.provider.js +1 -1
  160. package/dist/providers/openrouter.provider.js.map +1 -1
  161. package/dist/providers/provider-service.d.ts.map +1 -1
  162. package/dist/providers/provider-service.js +6 -7
  163. package/dist/providers/provider-service.js.map +1 -1
  164. package/dist/scripts/eval-auto-approval/runner.js +2 -3
  165. package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
  166. package/dist/scripts/eval-context-compaction/runner.js +1 -2
  167. package/dist/scripts/eval-context-compaction/runner.js.map +1 -1
  168. package/dist/services/agent-runtime/application-run-loop.d.ts +34 -1
  169. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  170. package/dist/services/agent-runtime/application-run-loop.js +174 -33
  171. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  172. package/dist/services/agent-runtime/context-compaction/index.d.ts.map +1 -1
  173. package/dist/services/agent-runtime/context-compaction/index.js +65 -16
  174. package/dist/services/agent-runtime/context-compaction/index.js.map +1 -1
  175. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +7 -1
  176. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
  177. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +115 -20
  178. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
  179. package/dist/services/agent-runtime/model-context-policy.d.ts +21 -0
  180. package/dist/services/agent-runtime/model-context-policy.d.ts.map +1 -0
  181. package/dist/services/agent-runtime/model-context-policy.js +46 -0
  182. package/dist/services/agent-runtime/model-context-policy.js.map +1 -0
  183. package/dist/services/agent-runtime/model-resolver.d.ts +4 -13
  184. package/dist/services/agent-runtime/model-resolver.d.ts.map +1 -1
  185. package/dist/services/agent-runtime/model-resolver.js +9 -39
  186. package/dist/services/agent-runtime/model-resolver.js.map +1 -1
  187. package/dist/services/agent-runtime/request-input-limit.d.ts +31 -0
  188. package/dist/services/agent-runtime/request-input-limit.d.ts.map +1 -0
  189. package/dist/services/agent-runtime/request-input-limit.js +86 -0
  190. package/dist/services/agent-runtime/request-input-limit.js.map +1 -0
  191. package/dist/services/agent-runtime/run-budget.d.ts +3 -5
  192. package/dist/services/agent-runtime/run-budget.d.ts.map +1 -1
  193. package/dist/services/agent-runtime/run-budget.js.map +1 -1
  194. package/dist/services/agent-runtime/tool-call-execution.d.ts +24 -2
  195. package/dist/services/agent-runtime/tool-call-execution.d.ts.map +1 -1
  196. package/dist/services/agent-runtime/tool-call-execution.js +36 -6
  197. package/dist/services/agent-runtime/tool-call-execution.js.map +1 -1
  198. package/dist/services/agent-runtime/tool-invocation-context.d.ts +24 -12
  199. package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -1
  200. package/dist/services/agent-runtime/tool-invocation-context.js +38 -27
  201. package/dist/services/agent-runtime/tool-invocation-context.js.map +1 -1
  202. package/dist/services/approval/approval-replay.d.ts +15 -24
  203. package/dist/services/approval/approval-replay.d.ts.map +1 -1
  204. package/dist/services/approval/approval-replay.js +12 -30
  205. package/dist/services/approval/approval-replay.js.map +1 -1
  206. package/dist/services/approval/non-interactive-approval-policy.d.ts.map +1 -1
  207. package/dist/services/approval/non-interactive-approval-policy.js +11 -0
  208. package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
  209. package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
  210. package/dist/services/approval/tool-approval-batch-coordinator.js +0 -5
  211. package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
  212. package/dist/services/control-socket/control-session-port.js +6 -6
  213. package/dist/services/control-socket/control-session-port.js.map +1 -1
  214. package/dist/services/conversation/conversation-checkpoint-provenance.d.ts.map +1 -1
  215. package/dist/services/conversation/conversation-checkpoint-provenance.js +10 -2
  216. package/dist/services/conversation/conversation-checkpoint-provenance.js.map +1 -1
  217. package/dist/services/conversation/conversation-events.d.ts +2 -0
  218. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  219. package/dist/services/conversation/conversation-events.js.map +1 -1
  220. package/dist/services/conversation/conversation-orchestrator.d.ts +1 -1
  221. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  222. package/dist/services/conversation/conversation-orchestrator.js +14 -2
  223. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  224. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  225. package/dist/services/conversation/conversation-replay.js +87 -3
  226. package/dist/services/conversation/conversation-replay.js.map +1 -1
  227. package/dist/services/conversation/conversation-service.d.ts +4 -5
  228. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  229. package/dist/services/conversation/conversation-service.js +9 -11
  230. package/dist/services/conversation/conversation-service.js.map +1 -1
  231. package/dist/services/conversation/conversation-state-projector.d.ts +1 -0
  232. package/dist/services/conversation/conversation-state-projector.d.ts.map +1 -1
  233. package/dist/services/conversation/conversation-state-projector.js +5 -1
  234. package/dist/services/conversation/conversation-state-projector.js.map +1 -1
  235. package/dist/services/conversation/durable-goal-stop-check.d.ts +141 -0
  236. package/dist/services/conversation/durable-goal-stop-check.d.ts.map +1 -0
  237. package/dist/services/conversation/durable-goal-stop-check.js +351 -0
  238. package/dist/services/conversation/durable-goal-stop-check.js.map +1 -0
  239. package/dist/services/conversation/durable-goal.d.ts +16 -1
  240. package/dist/services/conversation/durable-goal.d.ts.map +1 -1
  241. package/dist/services/conversation/durable-goal.js +8 -0
  242. package/dist/services/conversation/durable-goal.js.map +1 -1
  243. package/dist/services/conversation/local-checkpoint-projection.d.ts.map +1 -1
  244. package/dist/services/conversation/local-checkpoint-projection.js +12 -1
  245. package/dist/services/conversation/local-checkpoint-projection.js.map +1 -1
  246. package/dist/services/conversation/session-browser.d.ts +2 -0
  247. package/dist/services/conversation/session-browser.d.ts.map +1 -1
  248. package/dist/services/conversation/session-browser.js +23 -8
  249. package/dist/services/conversation/session-browser.js.map +1 -1
  250. package/dist/services/conversation/session-index/session-index-worker-client.d.ts +3 -0
  251. package/dist/services/conversation/session-index/session-index-worker-client.d.ts.map +1 -1
  252. package/dist/services/conversation/session-index/session-index-worker-client.js +6 -1
  253. package/dist/services/conversation/session-index/session-index-worker-client.js.map +1 -1
  254. package/dist/services/conversation/session-index/session-index-worker.d.ts +16 -1
  255. package/dist/services/conversation/session-index/session-index-worker.d.ts.map +1 -1
  256. package/dist/services/conversation/session-index/session-index-worker.js +16 -0
  257. package/dist/services/conversation/session-index/session-index-worker.js.map +1 -1
  258. package/dist/services/conversation-agent-client.d.ts +3 -1
  259. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  260. package/dist/services/handoff/handoff-session.d.ts +1 -1
  261. package/dist/services/handoff/handoff-session.d.ts.map +1 -1
  262. package/dist/services/handoff/handoff-session.js +10 -12
  263. package/dist/services/handoff/handoff-session.js.map +1 -1
  264. package/dist/services/logging/conversation-log-events.d.ts +7 -0
  265. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  266. package/dist/services/logging/conversation-log-events.js +1 -2
  267. package/dist/services/logging/conversation-log-events.js.map +1 -1
  268. package/dist/services/model-service.js +1 -1
  269. package/dist/services/model-service.js.map +1 -1
  270. package/dist/services/models/model-resolution.d.ts +2 -2
  271. package/dist/services/models/model-resolution.d.ts.map +1 -1
  272. package/dist/services/models/model-resolution.js +8 -2
  273. package/dist/services/models/model-resolution.js.map +1 -1
  274. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  275. package/dist/services/retry/retry-classifier.js +2 -1
  276. package/dist/services/retry/retry-classifier.js.map +1 -1
  277. package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
  278. package/dist/services/retry/retry-error-classification.js +1 -0
  279. package/dist/services/retry/retry-error-classification.js.map +1 -1
  280. package/dist/services/runtime-setting-router.d.ts +2 -2
  281. package/dist/services/runtime-setting-router.d.ts.map +1 -1
  282. package/dist/services/runtime-setting-router.js +8 -17
  283. package/dist/services/runtime-setting-router.js.map +1 -1
  284. package/dist/services/service-interfaces.d.ts +2 -0
  285. package/dist/services/service-interfaces.d.ts.map +1 -1
  286. package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
  287. package/dist/services/session/initial-turn-recovery-handler.js +6 -0
  288. package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
  289. package/dist/services/session/session-client-factory.js +1 -1
  290. package/dist/services/session/session-client-factory.js.map +1 -1
  291. package/dist/services/session/session-composition.d.ts.map +1 -1
  292. package/dist/services/session/session-composition.js +11 -9
  293. package/dist/services/session/session-composition.js.map +1 -1
  294. package/dist/services/session/session-input-planner.js +2 -2
  295. package/dist/services/session/session-input-planner.js.map +1 -1
  296. package/dist/services/session/session-manager.d.ts +2 -0
  297. package/dist/services/session/session-manager.d.ts.map +1 -1
  298. package/dist/services/session/session-manager.js +14 -2
  299. package/dist/services/session/session-manager.js.map +1 -1
  300. package/dist/services/session/session-runtime-controller.d.ts +2 -4
  301. package/dist/services/session/session-runtime-controller.d.ts.map +1 -1
  302. package/dist/services/session/session-runtime-controller.js +2 -14
  303. package/dist/services/session/session-runtime-controller.js.map +1 -1
  304. package/dist/services/session/session-tool-tracker.d.ts +1 -0
  305. package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
  306. package/dist/services/session/session-tool-tracker.js +8 -0
  307. package/dist/services/session/session-tool-tracker.js.map +1 -1
  308. package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
  309. package/dist/services/session/terminal-result-collector.js +3 -0
  310. package/dist/services/session/terminal-result-collector.js.map +1 -1
  311. package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
  312. package/dist/services/session/test-helpers/conversation-session-fixtures.js +5 -2
  313. package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
  314. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  315. package/dist/services/session/turn-workflow.js +3 -0
  316. package/dist/services/session/turn-workflow.js.map +1 -1
  317. package/dist/services/settings/ancillary-settings-migration.d.ts +1 -1
  318. package/dist/services/settings/ancillary-settings-migration.d.ts.map +1 -1
  319. package/dist/services/settings/ancillary-settings-migration.js +4 -37
  320. package/dist/services/settings/ancillary-settings-migration.js.map +1 -1
  321. package/dist/services/settings/model-selection.d.ts +7 -0
  322. package/dist/services/settings/model-selection.d.ts.map +1 -0
  323. package/dist/services/settings/model-selection.js +6 -0
  324. package/dist/services/settings/model-selection.js.map +1 -0
  325. package/dist/services/settings/persisted-selection-migration.d.ts +9 -0
  326. package/dist/services/settings/persisted-selection-migration.d.ts.map +1 -0
  327. package/dist/services/settings/persisted-selection-migration.js +109 -0
  328. package/dist/services/settings/persisted-selection-migration.js.map +1 -0
  329. package/dist/services/settings/setting-schema-utils.d.ts.map +1 -1
  330. package/dist/services/settings/setting-schema-utils.js +5 -2
  331. package/dist/services/settings/setting-schema-utils.js.map +1 -1
  332. package/dist/services/settings/settings-env.d.ts.map +1 -1
  333. package/dist/services/settings/settings-env.js +6 -2
  334. package/dist/services/settings/settings-env.js.map +1 -1
  335. package/dist/services/settings/settings-merger.d.ts.map +1 -1
  336. package/dist/services/settings/settings-merger.js +12 -5
  337. package/dist/services/settings/settings-merger.js.map +1 -1
  338. package/dist/services/settings/settings-persistence.d.ts +3 -1
  339. package/dist/services/settings/settings-persistence.d.ts.map +1 -1
  340. package/dist/services/settings/settings-persistence.js +24 -6
  341. package/dist/services/settings/settings-persistence.js.map +1 -1
  342. package/dist/services/settings/settings-schema.d.ts +69 -119
  343. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  344. package/dist/services/settings/settings-schema.js +71 -183
  345. package/dist/services/settings/settings-schema.js.map +1 -1
  346. package/dist/services/settings/settings-service.d.ts +5 -1
  347. package/dist/services/settings/settings-service.d.ts.map +1 -1
  348. package/dist/services/settings/settings-service.js +105 -41
  349. package/dist/services/settings/settings-service.js.map +1 -1
  350. package/dist/services/settings/settings-service.mock.js +2 -2
  351. package/dist/services/settings/settings-service.mock.js.map +1 -1
  352. package/dist/services/settings/settings-sources.d.ts +2 -20
  353. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  354. package/dist/services/settings/settings-sources.js +2 -20
  355. package/dist/services/settings/settings-sources.js.map +1 -1
  356. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
  357. package/dist/services/settings/settings-ui-metadata.js +5 -25
  358. package/dist/services/settings/settings-ui-metadata.js.map +1 -1
  359. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +6 -6
  360. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  361. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +4 -28
  362. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  363. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  364. package/dist/services/subagents/execution-runner.js +16 -3
  365. package/dist/services/subagents/execution-runner.js.map +1 -1
  366. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  367. package/dist/services/subagents/mentor-runner.js +10 -6
  368. package/dist/services/subagents/mentor-runner.js.map +1 -1
  369. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  370. package/dist/services/subagents/nested-runner.js +3 -2
  371. package/dist/services/subagents/nested-runner.js.map +1 -1
  372. package/dist/services/subagents/role-loader.d.ts.map +1 -1
  373. package/dist/services/subagents/role-loader.js +9 -17
  374. package/dist/services/subagents/role-loader.js.map +1 -1
  375. package/dist/services/subagents/subagent-pool-config.d.ts +0 -6
  376. package/dist/services/subagents/subagent-pool-config.d.ts.map +1 -1
  377. package/dist/services/subagents/subagent-pool-config.js +1 -22
  378. package/dist/services/subagents/subagent-pool-config.js.map +1 -1
  379. package/dist/services/subagents/subagent-role-pool-selector.d.ts +1 -2
  380. package/dist/services/subagents/subagent-role-pool-selector.d.ts.map +1 -1
  381. package/dist/services/subagents/subagent-role-pool-selector.js +4 -10
  382. package/dist/services/subagents/subagent-role-pool-selector.js.map +1 -1
  383. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
  384. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +8 -2
  385. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
  386. package/dist/services/tool-execution-ledger.d.ts +22 -0
  387. package/dist/services/tool-execution-ledger.d.ts.map +1 -1
  388. package/dist/services/tool-execution-ledger.js +40 -3
  389. package/dist/services/tool-execution-ledger.js.map +1 -1
  390. package/dist/services/workflow-evolution/cli.d.ts +2 -0
  391. package/dist/services/workflow-evolution/cli.d.ts.map +1 -0
  392. package/dist/services/workflow-evolution/cli.js +26 -0
  393. package/dist/services/workflow-evolution/cli.js.map +1 -0
  394. package/dist/services/workflow-evolution/demo.d.ts +18 -0
  395. package/dist/services/workflow-evolution/demo.d.ts.map +1 -0
  396. package/dist/services/workflow-evolution/demo.js +177 -0
  397. package/dist/services/workflow-evolution/demo.js.map +1 -0
  398. package/dist/services/workflow-evolution/experiment.d.ts +304 -0
  399. package/dist/services/workflow-evolution/experiment.d.ts.map +1 -0
  400. package/dist/services/workflow-evolution/experiment.js +251 -0
  401. package/dist/services/workflow-evolution/experiment.js.map +1 -0
  402. package/dist/services/workflow-evolution/ledger.d.ts +5 -0
  403. package/dist/services/workflow-evolution/ledger.d.ts.map +1 -0
  404. package/dist/services/workflow-evolution/ledger.js +57 -0
  405. package/dist/services/workflow-evolution/ledger.js.map +1 -0
  406. package/dist/skins/rail/status.d.ts.map +1 -1
  407. package/dist/skins/rail/status.js +21 -11
  408. package/dist/skins/rail/status.js.map +1 -1
  409. package/dist/skins/testing/scenes.d.ts.map +1 -1
  410. package/dist/skins/testing/scenes.js +1 -2
  411. package/dist/skins/testing/scenes.js.map +1 -1
  412. package/dist/tools/agent/goal-check.d.ts +23 -0
  413. package/dist/tools/agent/goal-check.d.ts.map +1 -0
  414. package/dist/tools/agent/goal-check.js +79 -0
  415. package/dist/tools/agent/goal-check.js.map +1 -0
  416. package/dist/tools/file/edit-healing.js +1 -1
  417. package/dist/tools/file/edit-healing.js.map +1 -1
  418. package/dist/tools/file/patch-healing.js +1 -1
  419. package/dist/tools/file/patch-healing.js.map +1 -1
  420. package/dist/tools/system/run-code/run-code-execution.d.ts +7 -0
  421. package/dist/tools/system/run-code/run-code-execution.d.ts.map +1 -1
  422. package/dist/tools/system/run-code/run-code-execution.js.map +1 -1
  423. package/dist/tools/system/run-code/run-code-runtime-contract.d.ts +2 -0
  424. package/dist/tools/system/run-code/run-code-runtime-contract.d.ts.map +1 -1
  425. package/dist/tools/system/run-code/run-code-runtime.d.ts +2 -1
  426. package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
  427. package/dist/tools/system/run-code/run-code-runtime.js +26 -7
  428. package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
  429. package/dist/tools/system/run-code/run-code.js +15 -8
  430. package/dist/tools/system/run-code/run-code.js.map +1 -1
  431. package/dist/tools/tool-names.d.ts +1 -0
  432. package/dist/tools/tool-names.d.ts.map +1 -1
  433. package/dist/tools/tool-names.js +1 -0
  434. package/dist/tools/tool-names.js.map +1 -1
  435. package/dist/tools/types.d.ts +21 -0
  436. package/dist/tools/types.d.ts.map +1 -1
  437. package/dist/tools/types.js +7 -0
  438. package/dist/tools/types.js.map +1 -1
  439. package/dist/utils/ai/model-settings.d.ts +0 -2
  440. package/dist/utils/ai/model-settings.d.ts.map +1 -1
  441. package/dist/utils/ai/model-settings.js +2 -11
  442. package/dist/utils/ai/model-settings.js.map +1 -1
  443. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  444. package/dist/utils/conversation/conversation-event-handler.js +4 -0
  445. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  446. package/dist/utils/output/text-snippet.js +25 -33
  447. package/dist/utils/output/text-snippet.js.map +1 -1
  448. package/dist/utils/settings-command.d.ts.map +1 -1
  449. package/dist/utils/settings-command.js +25 -24
  450. package/dist/utils/settings-command.js.map +1 -1
  451. package/dist/utils/value-suggestions.d.ts +0 -2
  452. package/dist/utils/value-suggestions.d.ts.map +1 -1
  453. package/dist/utils/value-suggestions.js +2 -63
  454. package/dist/utils/value-suggestions.js.map +1 -1
  455. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
+ import { resolveModelContextPolicy } from '../model-context-policy.js';
1
2
  import { isLocalContextSummary } from '../../../contracts/provider-input.js';
2
- import { buildContextCompactionInput, wrapContextSummary } from '../../../prompts/context-compaction.js';
3
+ import { buildContextCompactionInput, wrapContextSummary, CONTEXT_COMPACTION_INSTRUCTIONS, } from '../../../prompts/context-compaction.js';
3
4
  import { projectConversationMessage } from '../../conversation/conversation-message-projection.js';
4
- import { estimateContext, planLocalCompaction, rearmAtTokens, resolveCompactionThreshold, serializeColdPrefix, shouldDeferAutomaticCompaction, } from './index.js';
5
+ import { createHash } from 'node:crypto';
6
+ import { estimateContext, planLocalCompaction, rearmAtTokens, serializeColdPrefix, shouldDeferAutomaticCompaction, } from './index.js';
5
7
  export class ContextCompactionHardFitError extends Error {
6
8
  code = 'context_compaction_hard_fit';
7
9
  reason;
@@ -50,8 +52,8 @@ const checkpointSummaryText = (item) => {
50
52
  * their turn is closed.
51
53
  *
52
54
  * Cutting a *whole* cold turn is therefore always safe; the invariant that
53
- * matters is the cut point, not the item type. `planLocalCompaction` cuts only
54
- * at a genuine user message, so no pair is ever split. See
55
+ * matters is the cut point, not the item type. `planLocalCompaction` cuts at a settled user boundary or after a fully
56
+ * settled tool round, so no call/result pair is split. See
55
57
  * `assertHotTailPairsIntact` for the enforcement of that invariant.
56
58
  */
57
59
  const isProviderOpaqueItem = (item) => item.providerOpaque !== undefined;
@@ -69,7 +71,7 @@ const callIdOf = (item) => {
69
71
  * The hot tail is replayed verbatim behind the checkpoint, so a tool result
70
72
  * whose call was summarized away is a provider 400 on every lane we support
71
73
  * ("No tool output found for function call" and its cousins). The cut is made
72
- * at a genuine user message, which structurally cannot separate a call from its
74
+ * at a settled user boundary or fully settled tool round, which cannot separate a call from its
73
75
  * result — this asserts that structural claim rather than trusting it, because
74
76
  * the cost of being wrong is an unrecoverable conversation.
75
77
  */
@@ -112,7 +114,25 @@ const chunkColdPrefix = (items, maxCharacters) => {
112
114
  }
113
115
  if (chunk.length > 0)
114
116
  chunks.push(serializeColdPrefix(chunk));
115
- return chunks;
117
+ // A single old turn may exceed the chunk target. Split its serialized data
118
+ // into explicit inert fragments rather than dispatching an unbounded summary.
119
+ return chunks.flatMap((text) => {
120
+ if (Buffer.byteLength(text) <= maxCharacters)
121
+ return [text];
122
+ const fragments = [];
123
+ const pieceSize = Math.max(256, Math.floor(maxCharacters / 8));
124
+ for (let offset = 0; offset < text.length; offset += pieceSize) {
125
+ fragments.push(JSON.stringify([
126
+ {
127
+ type: 'historical_fragment',
128
+ offset,
129
+ totalCharacters: text.length,
130
+ content: text.slice(offset, offset + pieceSize),
131
+ },
132
+ ]));
133
+ }
134
+ return fragments;
135
+ });
116
136
  };
117
137
  export class LocalContextCompactor {
118
138
  #generator;
@@ -120,11 +140,14 @@ export class LocalContextCompactor {
120
140
  this.#generator = generator;
121
141
  }
122
142
  async compactAtBoundary(input) {
123
- const threshold = resolveCompactionThreshold({
143
+ const policy = resolveModelContextPolicy({
124
144
  contextWindow: input.contextWindow,
125
- compactThreshold: input.compactThreshold,
126
- compactThresholdTokens: input.compactThresholdTokens,
145
+ maxOutputTokens: input.maxOutputTokens,
146
+ inputLimit: input.maxRequestInputTokens,
147
+ ratio: input.compactThreshold,
148
+ rawTrigger: input.compactThresholdTokens,
127
149
  });
150
+ const threshold = { available: policy.softTrigger !== undefined, effectiveThreshold: policy.softTrigger ?? 0 };
128
151
  if (!threshold.available) {
129
152
  if (input.manual)
130
153
  throw new Error('Set agent.contextCompaction.compactThresholdTokens for an uncatalogued model');
@@ -148,12 +171,26 @@ export class LocalContextCompactor {
148
171
  if (deferred)
149
172
  return { kind: 'deferred', reason: deferred, estimate };
150
173
  }
151
- // For an uncatalogued model the raw-token threshold is the user's own
152
- // statement of the model's scale, so use it directly as the fallback
153
- // window; capping it (previously at 64_000) made hard-fit refusal the
154
- // only reachable outcome once the trigger fired.
155
- const usableWindow = input.contextWindow ?? input.compactThresholdTokens ?? threshold.effectiveThreshold;
156
- const usableInputTokens = Math.max(1_000, usableWindow - (input.maxOutputTokens ?? 0) - Math.ceil(usableWindow * 0.1));
174
+ // Unknown-model caps/triggers supply a planning scale only. They do not
175
+ // assert a provider context capacity or reserve an invented output window.
176
+ const usableWindow = input.contextWindow ??
177
+ input.maxRequestInputTokens ??
178
+ input.compactThresholdTokens ??
179
+ threshold.effectiveThreshold;
180
+ const fixedTokens = estimateContext({
181
+ history: [],
182
+ instructions: input.instructions,
183
+ tools: input.tools,
184
+ }).renderedInputTokens;
185
+ const usableInputTokens = (policy.hardInputLimit ?? usableWindow) - fixedTokens;
186
+ if (usableInputTokens <= 0) {
187
+ const eligibility = planLocalCompaction({ history: input.history, usableInputTokens: Infinity });
188
+ return {
189
+ kind: 'blocked',
190
+ reason: eligibility.kind === 'blocked' ? eligibility.reason : 'single_turn_too_large',
191
+ estimate,
192
+ };
193
+ }
157
194
  const plan = planLocalCompaction({ history: input.history, usableInputTokens });
158
195
  const rearmAt = rearmAtTokens(measuredTokens, threshold.effectiveThreshold);
159
196
  if (plan.kind === 'blocked' && plan.reason === 'no_complete_cold_turn') {
@@ -168,22 +205,64 @@ export class LocalContextCompactor {
168
205
  if (!assertHotTailPairsIntact(plan.hotTail)) {
169
206
  return { kind: 'blocked', reason: 'hot_tail_would_orphan_tool_result', estimate, rearmAtTokens: rearmAt };
170
207
  }
208
+ if (plan.coldPrefix.some((item) => {
209
+ const opaque = item.item;
210
+ return item.providerOpaque !== undefined && (opaque?.type === 'compaction' || item.type === 'compaction');
211
+ }))
212
+ return { kind: 'blocked', reason: 'opaque_context', estimate, rearmAtTokens: rearmAt };
171
213
  // Leave the remaining 10% of the half-window budget for the bounded
172
214
  // running summary carried into every chunk after the first.
173
215
  const priorCheckpoint = plan.coldPrefix.find(isLocalContextSummary);
174
216
  const coldItems = plan.coldPrefix.filter((item) => !isLocalContextSummary(item) && !isProviderOpaqueItem(item));
217
+ const receipts = [...(priorCheckpoint?.contextSummary?.toolReceipts ?? [])];
218
+ const calls = new Map();
219
+ for (const item of coldItems) {
220
+ const id = callIdOf(item);
221
+ if (isToolCallItem(item) && id)
222
+ calls.set(id, item);
223
+ if (!isToolResultItem(item) || !id || !calls.has(id))
224
+ continue;
225
+ const call = calls.get(id);
226
+ const args = typeof call.arguments === 'string' ? call.arguments : JSON.stringify(call.arguments ?? {});
227
+ const output = typeof item.output === 'string' ? item.output : JSON.stringify(item.output ?? null);
228
+ receipts.push({
229
+ callId: id,
230
+ name: String(call.name ?? 'unknown'),
231
+ argumentsSha256: createHash('sha256').update(args).digest('hex'),
232
+ argumentsPreview: args.slice(0, 256),
233
+ outputPreview: output.slice(0, 128),
234
+ });
235
+ }
175
236
  const droppedOpaqueItems = plan.coldPrefix.filter(isProviderOpaqueItem).length;
176
- const maxChunkCharacters = Math.max(4_000, Math.floor(usableInputTokens * 0.4 * 4));
237
+ const maxChunkCharacters = Math.max(256, Math.floor(usableInputTokens * 0.4 * 4));
177
238
  const chunks = chunkColdPrefix(coldItems, maxChunkCharacters);
178
239
  const summaryOutputCap = Math.max(256, Math.min(32_000, input.maxOutputTokens ?? 32_000, Math.floor(usableInputTokens * 0.1)));
179
240
  let summary = priorCheckpoint ? checkpointSummaryText(priorCheckpoint) : null;
180
241
  const usage = { inputTokens: 0, outputTokens: 0 };
181
242
  const costRecords = [];
182
243
  for (const transcriptChunk of chunks) {
244
+ const renderedInput = buildContextCompactionInput(summary, transcriptChunk);
245
+ const summaryEstimate = estimateContext({
246
+ history: [{ type: 'message', role: 'user', content: renderedInput }],
247
+ instructions: CONTEXT_COMPACTION_INSTRUCTIONS,
248
+ });
249
+ if (summaryEstimate.renderedInputTokens >
250
+ Math.min(input.maxRequestInputTokens ?? Infinity, input.contextWindow === undefined
251
+ ? Infinity
252
+ : usableWindow - summaryOutputCap - Math.ceil(usableWindow * 0.1)))
253
+ return {
254
+ kind: 'blocked',
255
+ reason: 'summary_input_too_large',
256
+ estimate,
257
+ rearmAtTokens: rearmAt,
258
+ usage,
259
+ costRecords,
260
+ };
261
+ input.signal?.throwIfAborted();
183
262
  const result = await this.#generator.generate({
184
263
  priorSummary: summary,
185
264
  transcriptChunk,
186
- renderedInput: buildContextCompactionInput(summary, transcriptChunk),
265
+ renderedInput,
187
266
  maxOutputTokens: summaryOutputCap,
188
267
  signal: input.signal,
189
268
  });
@@ -192,14 +271,25 @@ export class LocalContextCompactor {
192
271
  if (result.costRecords)
193
272
  costRecords.push(...result.costRecords);
194
273
  }
195
- const content = wrapContextSummary(summary ?? '');
274
+ const uniqueReceipts = [...new Map(receipts.map((receipt) => [receipt.callId, receipt])).values()];
275
+ const content = wrapContextSummary(`${summary ?? ''}\n\n<recorded-tool-receipts>\nHost-observed tool responses, not proof of domain success. Do not blindly repeat these actions; reconcile effects first. Previews are bounded; use original session evidence for full details.\n${JSON.stringify(uniqueReceipts)}\n</recorded-tool-receipts>`);
196
276
  const postEstimate = estimateContext({
197
277
  ...input,
198
278
  history: [{ role: 'system', type: 'message', content }, ...plan.hotTail],
199
279
  });
200
- if (postEstimate.hardFitTokens > usableWindow) {
201
- return { kind: 'blocked', reason: 'result_still_too_large', estimate: postEstimate, rearmAtTokens: rearmAt };
280
+ if ((input.contextWindow !== undefined && postEstimate.hardFitTokens > input.contextWindow) ||
281
+ (input.maxRequestInputTokens != null && postEstimate.renderedInputTokens > input.maxRequestInputTokens)) {
282
+ return {
283
+ kind: 'blocked',
284
+ reason: 'result_still_too_large',
285
+ estimate: postEstimate,
286
+ rearmAtTokens: rearmAt,
287
+ usage,
288
+ costRecords,
289
+ };
202
290
  }
291
+ if (postEstimate.renderedInputTokens >= estimate.renderedInputTokens)
292
+ return { kind: 'blocked', reason: 'non_reducing', estimate, rearmAtTokens: rearmAt, usage, costRecords };
203
293
  const postCompactionRearmAt = rearmAtTokens(postEstimate.renderedInputTokens, threshold.effectiveThreshold);
204
294
  const checkpoint = {
205
295
  role: 'system',
@@ -214,6 +304,11 @@ export class LocalContextCompactor {
214
304
  estimatedTokensBefore: estimate.renderedInputTokens,
215
305
  estimatedTokensAfter: postEstimate.renderedInputTokens,
216
306
  rearmAtEstimatedTokens: postCompactionRearmAt,
307
+ toolReceipts: uniqueReceipts,
308
+ protectedUsers: plan.coldPrefix.filter((item) => {
309
+ const message = projectConversationMessage(item);
310
+ return message?.role === 'user' && !message.isSynthetic;
311
+ }),
217
312
  },
218
313
  };
219
314
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"local-context-compactor.js","sourceRoot":"","sources":["../../../../source/services/agent-runtime/context-compaction/local-context-compactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,0BAA0B,EAC1B,mBAAmB,EACnB,8BAA8B,GAE/B,MAAM,YAAY,CAAC;AAkBpB,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAC7C,IAAI,GAAG,6BAAsC,CAAC;IAC9C,MAAM,CAAqD;IAEpE,YAAY,MAA0D;QACpE,MAAM,KAAK,GACT,MAAM,KAAK,uBAAuB;YAChC,CAAC,CAAC,qFAAqF;YACvF,CAAC,CAAC,oFAAoF,CAAC;QAC3F,KAAK,CACH,GAAG,KAAK,oTAAoT,CAC7T,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AA6DD,MAAM,QAAQ,GAAG,CACf,KAAoD,EACpD,KAAuC,EACjC,EAAE;IACR,KAAK,CAAC,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,YAAY,IAAI,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,IAAuB,EAAiB,EAAE;IACvE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAClF,MAAM,KAAK,GAAG,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;AAC5C,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,oBAAoB,GAAG,CAAC,IAAuB,EAAW,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC;AAErG,MAAM,cAAc,GAAG,CAAC,IAAuB,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AAExH,MAAM,gBAAgB,GAAG,CAAC,IAAuB,EAAW,EAAE,CAC5D,IAAI,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;AAEtE,MAAM,QAAQ,GAAG,CAAC,IAAuB,EAAsB,EAAE;IAC/D,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,CAAU,EAAE,CAAC;QACrF,MAAM,KAAK,GAAI,IAAgC,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG,CAAC,OAAqC,EAAW,EAAE;IAClF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,EAAE;gBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAmC,EAAE,aAAqB,EAAY,EAAE;IAC/F,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,qBAAqB;IACvB,UAAU,CAA0B;IAE7C,YAAY,SAAkC;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAA2B;QACjD,MAAM,SAAS,GAAG,0BAA0B,CAAC;YAC3C,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;SACrD,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAClH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,cAAc,GAClB,KAAK,CAAC,wBAAwB,KAAK,SAAS;YAC1C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,QAAQ,CAAC,mBAAmB,CAAC;YACxE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC;YACnE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,8BAA8B,CAAC;gBAC9C,2BAA2B,EAAE,KAAK,CAAC,2BAA2B,IAAI,CAAC;gBACnE,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;gBACpD,mBAAmB,EAAE,cAAc;gBACnC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,IAAI,KAAK;aAC9D,CAAC,CAAC;YACH,IAAI,QAAQ;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxE,CAAC;QAED,sEAAsE;QACtE,qEAAqE;QACrE,sEAAsE;QACtE,iDAAiD;QACjD,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,sBAAsB,IAAI,SAAS,CAAC,kBAAkB,CAAC;QACzG,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,KAAK,EACL,YAAY,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAC5E,CAAC;QACF,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,uBAAuB,EAAE,CAAC;YACvE,yEAAyE;YACzE,oCAAoC;YACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QACpF,CAAC;QACD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QACpF,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,mCAAmC,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAC5G,CAAC;QAED,oEAAoE;QACpE,4DAA4D;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QAChH,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC;QAC/E,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,IAAI,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CACvF,CAAC;QACF,IAAI,OAAO,GAAkB,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7F,MAAM,KAAK,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,WAAW,GAAuB,EAAE,CAAC;QAC3C,KAAK,MAAM,eAAe,IAAI,MAAM,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC5C,YAAY,EAAE,OAAO;gBACrB,eAAe;gBACf,aAAa,EAAE,2BAA2B,CAAC,OAAO,EAAE,eAAe,CAAC;gBACpE,eAAe,EAAE,gBAAgB;gBACjC,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;YACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,WAAW;gBAAE,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,eAAe,CAAC;YACnC,GAAG,KAAK;YACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;SACzE,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,aAAa,GAAG,YAAY,EAAE,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,wBAAwB,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QAC/G,CAAC;QACD,MAAM,qBAAqB,GAAG,aAAa,CAAC,YAAY,CAAC,mBAAmB,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC5G,MAAM,UAAU,GAA6B;YAC3C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,SAAS;YACf,OAAO;YACP,cAAc,EAAE;gBACd,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,uBAAuB,EAAE,KAAK,CAAC,cAAc;gBAC7C,cAAc,EAAE,KAAK,CAAC,QAAQ;gBAC9B,WAAW,EAAE,KAAK,CAAC,KAAK;gBACxB,qBAAqB,EAAE,QAAQ,CAAC,mBAAmB;gBACnD,oBAAoB,EAAE,YAAY,CAAC,mBAAmB;gBACtD,sBAAsB,EAAE,qBAAqB;aAC9C;SACF,CAAC;QACF,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,YAAY;YACtB,aAAa,EAAE,qBAAqB;YACpC,KAAK;YACL,WAAW;YACX,kBAAkB;SACnB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"local-context-compactor.js","sourceRoot":"","sources":["../../../../source/services/agent-runtime/context-compaction/local-context-compactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { CatalogModelInfo } from '../../providers/model-catalog/catalog.js';
2
+ /** Default-output usability allocation, not a provider capacity or optimality claim. */
3
+ export declare function resolveOutputAllocation(catalog: CatalogModelInfo | undefined, selected: number | undefined, inherited: boolean): number | undefined;
4
+ /** Separate model capacity from an optional user cost/latency input ceiling. */
5
+ export declare function resolveModelContextPolicy(input: {
6
+ contextWindow?: number;
7
+ maxOutputTokens?: number;
8
+ inputLimit?: number | null;
9
+ ratio?: number;
10
+ rawTrigger?: number | null;
11
+ }): {
12
+ capacity: number | undefined;
13
+ outputReserve: number;
14
+ estimationReserve: number;
15
+ hardInputLimit: number | undefined;
16
+ softTrigger: number | undefined;
17
+ limitSource: "explicit_input_ceiling" | "model_capacity";
18
+ };
19
+ /** Same inherited output selection for direct agents and prepared dispatches. */
20
+ export declare function resolveRequestOutput(catalog: CatalogModelInfo | undefined, selected: number | undefined): number | undefined;
21
+ //# sourceMappingURL=model-context-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-context-policy.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/model-context-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,wFAAwF;AACxF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CAOpB;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;;;;;;;EAwCA;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CAEpB"}
@@ -0,0 +1,46 @@
1
+ /** Default-output usability allocation, not a provider capacity or optimality claim. */
2
+ export function resolveOutputAllocation(catalog, selected, inherited) {
3
+ if (selected === undefined)
4
+ return undefined;
5
+ return Math.min(selected, catalog?.maxTokens ?? Infinity, inherited && catalog ? Math.max(1, Math.floor(catalog.contextWindow / 4)) : Infinity);
6
+ }
7
+ /** Separate model capacity from an optional user cost/latency input ceiling. */
8
+ export function resolveModelContextPolicy(input) {
9
+ const capacity = input.contextWindow;
10
+ const outputReserve = Math.max(0, Math.ceil(input.maxOutputTokens ?? 0));
11
+ const estimationReserve = capacity === undefined ? 0 : Math.ceil(capacity * 0.1);
12
+ const capacityInput = capacity === undefined ? undefined : Math.max(0, capacity - outputReserve - estimationReserve);
13
+ const hardInputLimit = capacityInput === undefined ? input.inputLimit ?? undefined : Math.min(capacityInput, input.inputLimit ?? Infinity);
14
+ const ratioTrigger = capacity === undefined ? undefined : Math.floor(capacity * (input.ratio ?? 0.8));
15
+ const preferred = input.rawTrigger == null
16
+ ? ratioTrigger
17
+ : ratioTrigger === undefined
18
+ ? input.rawTrigger
19
+ : Math.min(input.rawTrigger, ratioTrigger);
20
+ const headroomTrigger = hardInputLimit === undefined
21
+ ? undefined
22
+ : Math.floor(hardInputLimit *
23
+ (input.inputLimit != null && (capacityInput === undefined || input.inputLimit <= capacityInput)
24
+ ? 0.75
25
+ : 0.9));
26
+ const softTrigger = preferred === undefined
27
+ ? headroomTrigger
28
+ : headroomTrigger === undefined
29
+ ? preferred
30
+ : Math.min(preferred, headroomTrigger);
31
+ return {
32
+ capacity,
33
+ outputReserve,
34
+ estimationReserve,
35
+ hardInputLimit,
36
+ softTrigger,
37
+ limitSource: input.inputLimit != null && (capacityInput === undefined || input.inputLimit <= capacityInput)
38
+ ? 'explicit_input_ceiling'
39
+ : 'model_capacity',
40
+ };
41
+ }
42
+ /** Same inherited output selection for direct agents and prepared dispatches. */
43
+ export function resolveRequestOutput(catalog, selected) {
44
+ return selected ?? (catalog ? resolveOutputAllocation(catalog, 32000, true) : undefined);
45
+ }
46
+ //# sourceMappingURL=model-context-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-context-policy.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/model-context-policy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ISettingsService } from '../service-interfaces.js';
2
2
  import type { ModelPolicy, ExactModelPolicy } from './types.js';
3
+ import { type TierModelPoolSetting } from '../settings/settings-schema.js';
3
4
  export type AncillaryModelTier = 'smart' | 'balanced' | 'cheap' | 'chore';
4
5
  /**
5
6
  * Resolve a model policy to a concrete {provider, model} pair.
@@ -9,24 +10,14 @@ export type AncillaryModelTier = 'smart' | 'balanced' | 'cheap' | 'chore';
9
10
  * - `RelativeModelPolicy` → adjusts relative to `parent`; requires a parent.
10
11
  */
11
12
  export declare function resolveModelPolicy(policy: ModelPolicy, settings: ISettingsService, parent?: ModelPolicy): ExactModelPolicy;
13
+ /** A model and its provider are inseparable after settings parsing. */
14
+ export type TierModelPoolEntry = TierModelPoolSetting[number];
12
15
  /**
13
- * One tier pool entry. A bare model id runs on the tier's provider; an entry
14
- * picked from another provider's catalog pins that provider, so one pool can
15
- * round-robin across providers.
16
- */
17
- export type TierModelPoolEntry = {
18
- model: string;
19
- provider?: string;
20
- };
21
- /**
22
- * Normalize a raw tier pool value (a bare string from an older config, or a
23
- * list of model ids and pinned entries). Malformed entries are dropped.
16
+ * Validate the canonical runtime shape without rebinding entries after a settings edit.
24
17
  */
25
18
  export declare function toTierModelPoolEntries(value: unknown): TierModelPoolEntry[];
26
19
  export declare function getTierModelPoolEntries(tier: AncillaryModelTier, settings: ISettingsService): TierModelPoolEntry[];
27
20
  /** A tier pool's model ids, without their pinned providers. */
28
21
  export declare function getTierModelPool(tier: AncillaryModelTier, settings: ISettingsService): readonly string[];
29
- /** The provider a bare (unpinned) entry of this tier runs on. */
30
- export declare function resolveTierProvider(tier: AncillaryModelTier, settings: ISettingsService): string;
31
22
  export declare function resolveAncillaryModelTier(tier: AncillaryModelTier, settings: ISettingsService): ExactModelPolicy;
32
23
  //# sourceMappingURL=model-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/model-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,gBAAgB,CAgBlB;AAMD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAe3E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,CAElH;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAExG;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAIhG;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CAShH"}
1
+ {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/model-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGrG,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,gBAAgB,CAgBlB;AAMD,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAE9D;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAG3E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,CAElH;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAExG;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CAMhH"}
@@ -1,3 +1,5 @@
1
+ import { TierModelPoolEntrySchema } from '../settings/settings-schema.js';
2
+ import { ModelSelectionSchema } from '../settings/model-selection.js';
1
3
  /**
2
4
  * Resolve a model policy to a concrete {provider, model} pair.
3
5
  *
@@ -8,7 +10,7 @@
8
10
  export function resolveModelPolicy(policy, settings, parent) {
9
11
  // 1. Exact policy: pass-through.
10
12
  if (typeof policy === 'object' && 'provider' in policy && 'model' in policy) {
11
- return { provider: policy.provider, model: policy.model };
13
+ return ModelSelectionSchema.parse(policy);
12
14
  }
13
15
  // 2. Relative policy: requires parent.
14
16
  if (typeof policy === 'object' && 'tier' in policy) {
@@ -24,26 +26,12 @@ function resolveTierPolicy(tier, settings) {
24
26
  return resolveAncillaryModelTier(policyTierToAncillaryTier(tier), settings);
25
27
  }
26
28
  /**
27
- * Normalize a raw tier pool value (a bare string from an older config, or a
28
- * list of model ids and pinned entries). Malformed entries are dropped.
29
+ * Validate the canonical runtime shape without rebinding entries after a settings edit.
29
30
  */
30
31
  export function toTierModelPoolEntries(value) {
31
- const raw = Array.isArray(value) ? value : [value];
32
- const entries = [];
33
- for (const entry of raw) {
34
- if (typeof entry === 'string') {
35
- if (entry !== '')
36
- entries.push({ model: entry });
37
- continue;
38
- }
39
- if (entry && typeof entry === 'object' && typeof entry.model === 'string') {
40
- const { model, provider } = entry;
41
- if (model === '')
42
- continue;
43
- entries.push(typeof provider === 'string' && provider !== '' ? { model, provider } : { model });
44
- }
45
- }
46
- return entries;
32
+ if (value === undefined)
33
+ return [];
34
+ return TierModelPoolEntrySchema.array().parse(value);
47
35
  }
48
36
  export function getTierModelPoolEntries(tier, settings) {
49
37
  return toTierModelPoolEntries(settings.getDynamic(`agent.${tier}Model`));
@@ -52,19 +40,12 @@ export function getTierModelPoolEntries(tier, settings) {
52
40
  export function getTierModelPool(tier, settings) {
53
41
  return getTierModelPoolEntries(tier, settings).map((entry) => entry.model);
54
42
  }
55
- /** The provider a bare (unpinned) entry of this tier runs on. */
56
- export function resolveTierProvider(tier, settings) {
57
- return (settings.getDynamic(`agent.${tier}Provider`) ?? settings.get('agent.provider') ?? 'openai');
58
- }
59
43
  export function resolveAncillaryModelTier(tier, settings) {
60
44
  // Stable first-entry pick: resolution runs from display paths as well as
61
45
  // execution paths, so the cursor must not advance here. Round-robin over
62
46
  // the pool happens once per subagent spawn in SubagentRolePoolSelector.
63
47
  const first = getTierModelPoolEntries(tier, settings)[0];
64
- return {
65
- provider: first?.provider ?? resolveTierProvider(tier, settings),
66
- model: first?.model ?? settings.get('agent.model') ?? 'gpt-4o',
67
- };
48
+ return first ?? ModelSelectionSchema.parse(settings.get('agent.modelSelection'));
68
49
  }
69
50
  function resolveRelativePolicy(policy, settings, parent) {
70
51
  // Resolve parent to exact first.
@@ -72,20 +53,9 @@ function resolveRelativePolicy(policy, settings, parent) {
72
53
  if (policy.tier === 'same') {
73
54
  return parentExact;
74
55
  }
75
- if (policy.reasoning) {
76
- // MVP: all reasoning effort levels resolve to the same configured
77
- // reasoning model. Granular per-effort settings can be added later.
78
- const reasoningModel = settings.getDynamic(`agent.reasoning.${policy.reasoning}`) ??
79
- settings.getDynamic('agent.reasoningModel');
80
- if (reasoningModel) {
81
- return { provider: parentExact.provider, model: reasoningModel };
82
- }
83
- }
84
56
  const tier = policy.tier === 'lower' ? 'cheap' : 'smart';
85
57
  const first = getTierModelPoolEntries(tier, settings)[0];
86
- const model = first?.model ?? settings.get('agent.model') ?? parentExact.model;
87
- const provider = first?.provider ?? settings.getDynamic(`agent.${tier}Provider`) ?? parentExact.provider;
88
- return { provider, model };
58
+ return first ?? parentExact;
89
59
  }
90
60
  function policyTierToAncillaryTier(tier) {
91
61
  switch (tier) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/model-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/model-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ProviderInputItem } from '../../contracts/provider-input.js';
2
+ /** Admission refusal: no provider dispatch, no retry, and no transcript truncation. */
3
+ export declare class RequestInputLimitError extends Error {
4
+ readonly limit: number;
5
+ readonly estimatedTokens: number;
6
+ readonly observedTokens: number;
7
+ readonly reason: 'ceiling_exceeded' | 'unobservable_chained_context' | 'capacity_exceeded';
8
+ readonly capacity?: number | undefined;
9
+ readonly outputReserve?: number | undefined;
10
+ readonly estimationReserve?: number | undefined;
11
+ readonly code = "request_input_limit";
12
+ readonly action = "reject_before_dispatch";
13
+ constructor(limit: number, estimatedTokens: number, observedTokens: number, reason?: 'ceiling_exceeded' | 'unobservable_chained_context' | 'capacity_exceeded', capacity?: number | undefined, outputReserve?: number | undefined, estimationReserve?: number | undefined);
14
+ }
15
+ export declare function enforceRequestInputLimit(input: {
16
+ limit?: number | null;
17
+ contextWindow?: number;
18
+ maxOutputTokens?: number;
19
+ history: readonly ProviderInputItem[];
20
+ instructions: string;
21
+ tools: unknown;
22
+ lastCompletedInputTokens?: number;
23
+ chainedContextKnown?: boolean;
24
+ }): void;
25
+ export declare class ProviderContextOverflowError extends Error {
26
+ readonly code = "provider_context_overflow";
27
+ constructor(cause: unknown);
28
+ }
29
+ /** Structured provider evidence only; no message-substring size guesses. */
30
+ export declare function isProviderContextOverflow(error: unknown): boolean;
31
+ //# sourceMappingURL=request-input-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-input-limit.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/request-input-limit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,uFAAuF;AACvF,qBAAa,sBAAuB,SAAQ,KAAK;IAI7C,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC/B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,8BAA8B,GAAG,mBAAmB;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM;IATrC,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,MAAM,4BAA4B;IAC3C,YACW,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,kBAAkB,GAAG,8BAA8B,GAAG,mBAAwC,EACtG,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,aAAa,CAAC,EAAE,MAAM,YAAA,EACtB,iBAAiB,CAAC,EAAE,MAAM,YAAA,EAapC;CACF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,IAAI,CA0BP;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,+BAA+B;IAC5C,YAAY,KAAK,EAAE,OAAO,EAMzB;CACF;AACD,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA8BjE"}
@@ -0,0 +1,86 @@
1
+ import { resolveModelContextPolicy } from './model-context-policy.js';
2
+ import { estimateContext } from './context-compaction/index.js';
3
+ /** Admission refusal: no provider dispatch, no retry, and no transcript truncation. */
4
+ export class RequestInputLimitError extends Error {
5
+ limit;
6
+ estimatedTokens;
7
+ observedTokens;
8
+ reason;
9
+ capacity;
10
+ outputReserve;
11
+ estimationReserve;
12
+ code = 'request_input_limit';
13
+ action = 'reject_before_dispatch';
14
+ constructor(limit, estimatedTokens, observedTokens, reason = 'ceiling_exceeded', capacity, outputReserve, estimationReserve) {
15
+ super(reason === 'unobservable_chained_context'
16
+ ? 'Cannot enforce the active input bound on an unobserved provider chain. Work is retained. Resume with a full history snapshot so the selected model capacity can be checked.'
17
+ : reason === 'capacity_exceeded'
18
+ ? `Request cannot fit the known model capacity (input budget ${limit}, output reserve ${outputReserve}, estimation reserve ${estimationReserve}, capacity ${capacity}). Work is retained. Compact, choose a larger-capacity model, or lower an explicit output allocation before resuming.`
19
+ : `Request input exceeds configured ceiling (${Math.max(estimatedTokens, observedTokens)} > ${limit} tokens). Work is retained. Compact, use a concise artifact-backed handoff, or explicitly raise agent.maxRequestInputTokens before resuming.`);
20
+ this.limit = limit;
21
+ this.estimatedTokens = estimatedTokens;
22
+ this.observedTokens = observedTokens;
23
+ this.reason = reason;
24
+ this.capacity = capacity;
25
+ this.outputReserve = outputReserve;
26
+ this.estimationReserve = estimationReserve;
27
+ this.name = 'RequestInputLimitError';
28
+ }
29
+ }
30
+ export function enforceRequestInputLimit(input) {
31
+ if (input.limit != null && (!Number.isSafeInteger(input.limit) || input.limit < 1_000))
32
+ throw new RangeError('maxRequestInputTokens must be null or an integer >=1000');
33
+ const policy = resolveModelContextPolicy({
34
+ contextWindow: input.contextWindow,
35
+ maxOutputTokens: input.maxOutputTokens,
36
+ inputLimit: input.limit,
37
+ });
38
+ const limit = policy.hardInputLimit;
39
+ if (limit === undefined)
40
+ return;
41
+ const estimatedTokens = estimateContext(input).renderedInputTokens;
42
+ const observedTokens = input.lastCompletedInputTokens ?? 0;
43
+ if (input.chainedContextKnown === false) {
44
+ throw new RequestInputLimitError(limit, estimatedTokens, observedTokens, 'unobservable_chained_context');
45
+ }
46
+ if (Math.max(estimatedTokens, observedTokens) > limit) {
47
+ throw new RequestInputLimitError(limit, estimatedTokens, observedTokens, policy.limitSource === 'model_capacity' ? 'capacity_exceeded' : 'ceiling_exceeded', policy.capacity, policy.outputReserve, policy.estimationReserve);
48
+ }
49
+ }
50
+ export class ProviderContextOverflowError extends Error {
51
+ code = 'provider_context_overflow';
52
+ constructor(cause) {
53
+ super('Provider rejected context capacity. Work is retained. Compact or choose a model with verified larger capacity before resuming.', { cause });
54
+ this.name = 'ProviderContextOverflowError';
55
+ }
56
+ }
57
+ /** Structured provider evidence only; no message-substring size guesses. */
58
+ export function isProviderContextOverflow(error) {
59
+ const seen = new Set();
60
+ let current = error;
61
+ while (current && typeof current === 'object' && !seen.has(current)) {
62
+ seen.add(current);
63
+ let body;
64
+ if (typeof current.responseBody === 'string' && current.responseBody.length < 100000) {
65
+ try {
66
+ body = JSON.parse(current.responseBody);
67
+ }
68
+ catch {
69
+ // Non-JSON provider bodies are not structured capacity evidence.
70
+ }
71
+ }
72
+ const codes = [current.code, current.error?.code, body?.code, body?.error?.code];
73
+ if (codes.some((code) => [
74
+ 'provider_context_overflow',
75
+ 'context_length_exceeded',
76
+ 'context_window_exceeded',
77
+ 'max_context_length_exceeded',
78
+ 'prompt_too_long',
79
+ 'input_too_long',
80
+ ].includes(code)))
81
+ return true;
82
+ current = current.cause;
83
+ }
84
+ return false;
85
+ }
86
+ //# sourceMappingURL=request-input-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-input-limit.js","sourceRoot":"","sources":["../../../source/services/agent-runtime/request-input-limit.ts"],"names":[],"mappings":"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"}