@aragon-agent/cli 0.6.47 → 0.6.48

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 (775) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +27 -6
  3. package/dist/agent/coalesce.d.ts +1 -1
  4. package/dist/agent/controller.d.ts +21 -21
  5. package/dist/agent/controller.js +13 -13
  6. package/dist/agent/conversation-reset.d.ts +1 -1
  7. package/dist/agent/governance-wiring.d.ts +6 -6
  8. package/dist/agent/governance-wiring.js +4 -4
  9. package/dist/agent/headless.d.ts +5 -5
  10. package/dist/agent/headless.js +4 -4
  11. package/dist/agent/job-notices.d.ts +1 -1
  12. package/dist/agent/job-notices.js +1 -1
  13. package/dist/agent/kit-apply.d.ts +3 -3
  14. package/dist/agent/kit-apply.js +3 -3
  15. package/dist/agent/model-profile-settings.d.ts +2 -2
  16. package/dist/agent/model-profile-settings.js +6 -6
  17. package/dist/agent/prompt-options.d.ts +1 -1
  18. package/dist/agent/system-prompt.d.ts +1 -1
  19. package/dist/{ui → app}/App.d.ts +9 -9
  20. package/dist/{ui → app}/App.js +79 -79
  21. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  22. package/dist/{ui → app}/use-startup-notices.js +2 -2
  23. package/dist/cli.js +29 -29
  24. package/dist/commands/agents-command.js +1 -1
  25. package/dist/commands/builtins.js +9 -9
  26. package/dist/commands/governance-command.js +2 -2
  27. package/dist/commands/governance-runs-table.js +1 -1
  28. package/dist/commands/kit-command.js +1 -1
  29. package/dist/commands/perf.d.ts +3 -3
  30. package/dist/commands/perf.js +1 -1
  31. package/dist/commands/registry.d.ts +8 -8
  32. package/dist/commands/skills.js +2 -2
  33. package/dist/commands/team-command.js +1 -1
  34. package/dist/compaction/archive.d.ts +1 -1
  35. package/dist/compaction/archive.js +1 -1
  36. package/dist/compaction/child.d.ts +3 -3
  37. package/dist/compaction/child.js +4 -4
  38. package/dist/compaction/command.js +5 -5
  39. package/dist/compaction/compactor.d.ts +6 -6
  40. package/dist/compaction/compactor.js +6 -6
  41. package/dist/compaction/context-command.js +1 -1
  42. package/dist/compaction/digest.js +1 -1
  43. package/dist/compaction/memory-input.js +1 -1
  44. package/dist/compaction/memory-validation.js +1 -1
  45. package/dist/compaction/memory.js +1 -1
  46. package/dist/compaction/summarize-call.js +1 -1
  47. package/dist/compaction/summary-prompt.js +1 -1
  48. package/dist/compaction/tail-budget.js +2 -2
  49. package/dist/compaction/wiring.d.ts +5 -5
  50. package/dist/compaction/wiring.js +2 -2
  51. package/dist/config/cli-commands.d.ts +1 -1
  52. package/dist/config/cli-commands.js +3 -3
  53. package/dist/config/env.d.ts +1 -1
  54. package/dist/config/env.js +4 -4
  55. package/dist/config/load.d.ts +2 -2
  56. package/dist/config/load.js +6 -6
  57. package/dist/config/migrate-state-out-of-config.js +1 -1
  58. package/dist/config/model-profile-store.d.ts +4 -54
  59. package/dist/config/model-profile-store.js +3 -3
  60. package/dist/config/prompt-history.js +1 -1
  61. package/dist/config/store.d.ts +2 -2
  62. package/dist/config/store.js +3 -3
  63. package/dist/diagnostics/doctor.js +4 -4
  64. package/dist/exec/bridge/decisions.d.ts +1 -1
  65. package/dist/exec/bridge/human-answers.d.ts +1 -1
  66. package/dist/exec/bridge/human-answers.js +1 -1
  67. package/dist/exec/bridge/protocol.d.ts +1 -1
  68. package/dist/exec/bridge/server.js +1 -1
  69. package/dist/exec/events.d.ts +2 -2
  70. package/dist/exec/index.d.ts +1 -1
  71. package/dist/exec/index.js +1 -1
  72. package/dist/exec/permission.js +1 -1
  73. package/dist/exec/runner.d.ts +3 -3
  74. package/dist/exec/runner.js +2 -2
  75. package/dist/exec/threads/runtime.js +1 -1
  76. package/dist/fast/digest.d.ts +1 -1
  77. package/dist/fast/digest.js +1 -1
  78. package/dist/fast/frames.d.ts +1 -1
  79. package/dist/fast/frames.js +1 -1
  80. package/dist/fast/prompt.d.ts +1 -1
  81. package/dist/fast/prompt.js +1 -1
  82. package/dist/fast/review-call.js +1 -1
  83. package/dist/fast/reviewer.d.ts +3 -3
  84. package/dist/fast/reviewer.js +1 -1
  85. package/dist/fast/summary-call.d.ts +3 -3
  86. package/dist/fast/summary-call.js +2 -2
  87. package/dist/fast/summary-prompt.d.ts +1 -1
  88. package/dist/fast/summary-prompt.js +1 -1
  89. package/dist/fast/wiring.d.ts +4 -4
  90. package/dist/fast/wiring.js +1 -1
  91. package/dist/governance/card-normalize.d.ts +1 -1
  92. package/dist/governance/copy.d.ts +1 -1
  93. package/dist/governance/copy.js +2 -2
  94. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  95. package/dist/governance/engine/budget.d.ts +1 -1
  96. package/dist/governance/engine/budget.js +1 -1
  97. package/dist/governance/engine/cards.d.ts +1 -1
  98. package/dist/governance/engine/digest.js +1 -1
  99. package/dist/governance/engine/engine-core.d.ts +5 -5
  100. package/dist/governance/engine/engine-core.js +1 -1
  101. package/dist/governance/engine/engine.d.ts +1 -1
  102. package/dist/governance/engine/engine.js +1 -1
  103. package/dist/governance/engine/estimate.d.ts +1 -1
  104. package/dist/governance/engine/estimate.js +1 -1
  105. package/dist/governance/engine/inspector.js +2 -2
  106. package/dist/governance/engine/integration.d.ts +1 -1
  107. package/dist/governance/engine/lifecycle.d.ts +1 -1
  108. package/dist/governance/engine/lifecycle.js +1 -1
  109. package/dist/governance/engine/phase-members.d.ts +1 -1
  110. package/dist/governance/engine/phase-planner.d.ts +1 -1
  111. package/dist/governance/engine/phase-planner.js +1 -1
  112. package/dist/governance/engine/rebuild.d.ts +1 -1
  113. package/dist/governance/engine/report.d.ts +1 -1
  114. package/dist/governance/engine/report.js +1 -1
  115. package/dist/governance/engine/run-digest.d.ts +1 -1
  116. package/dist/governance/engine/spec-builder.d.ts +2 -2
  117. package/dist/governance/engine/spec-builder.js +2 -2
  118. package/dist/governance/engine/stage-runner.js +2 -2
  119. package/dist/governance/engine/start-input.d.ts +1 -1
  120. package/dist/governance/engine/start-input.js +1 -1
  121. package/dist/governance/engine/state-machine.d.ts +1 -1
  122. package/dist/governance/engine/state-machine.js +3 -3
  123. package/dist/governance/engine/submission-queries.d.ts +1 -1
  124. package/dist/governance/engine/submission-render.d.ts +1 -1
  125. package/dist/governance/engine/submissions.d.ts +1 -1
  126. package/dist/governance/engine/submissions.js +1 -1
  127. package/dist/governance/engine/visibility.d.ts +1 -1
  128. package/dist/governance/engine/visibility.js +1 -1
  129. package/dist/governance/posture-transition.d.ts +2 -2
  130. package/dist/governance/posture-transition.js +1 -1
  131. package/dist/governance/profiles.d.ts +1 -1
  132. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  133. package/dist/governance/prompts/orchestrator-block.js +2 -2
  134. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  135. package/dist/governance/prompts/plan-addendum.js +1 -1
  136. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  137. package/dist/governance/prompts/role-blocks.js +1 -1
  138. package/dist/governance/report-reader.js +1 -1
  139. package/dist/governance/roles.d.ts +1 -1
  140. package/dist/governance/rules/claims.d.ts +1 -1
  141. package/dist/governance/rules/claims.js +1 -1
  142. package/dist/governance/rules/elimination.d.ts +1 -1
  143. package/dist/governance/rules/elimination.js +1 -1
  144. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  145. package/dist/governance/rules/failure-analysis.js +1 -1
  146. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  147. package/dist/governance/rules/ledger-state.d.ts +1 -1
  148. package/dist/governance/rules/ledger-state.js +1 -1
  149. package/dist/governance/rules/ledger.d.ts +2 -2
  150. package/dist/governance/rules/ledger.js +2 -2
  151. package/dist/governance/rules/rca.d.ts +1 -1
  152. package/dist/governance/rules/rca.js +1 -1
  153. package/dist/governance/rules/settlement.d.ts +2 -2
  154. package/dist/governance/rules/settlement.js +2 -2
  155. package/dist/governance/rules/suspicion.d.ts +1 -1
  156. package/dist/governance/store/artifacts.d.ts +1 -1
  157. package/dist/governance/store/artifacts.js +1 -1
  158. package/dist/governance/store/events-log.d.ts +1 -1
  159. package/dist/governance/store/run-store.d.ts +1 -1
  160. package/dist/governance/store/run-store.js +1 -1
  161. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  162. package/dist/governance/tools/child-tools.d.ts +1 -1
  163. package/dist/governance/tools/guard.d.ts +1 -1
  164. package/dist/governance/tools/guard.js +1 -1
  165. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  166. package/dist/governance/tools/inspector-tools.js +2 -2
  167. package/dist/governance/tools/lead-tools.d.ts +1 -1
  168. package/dist/governance/tools/lead-tools.js +1 -1
  169. package/dist/governance/tools/normalize-util.js +1 -1
  170. package/dist/governance/tools/scan-incomplete.js +1 -1
  171. package/dist/governance/tools/shared-tools.d.ts +1 -1
  172. package/dist/governance/tools/shared-tools.js +1 -1
  173. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  174. package/dist/governance/tools/submit-normalizers.js +1 -1
  175. package/dist/governance/tools/submit-tools.d.ts +1 -1
  176. package/dist/logging/cli-commands.js +1 -1
  177. package/dist/logging/install.d.ts +1 -1
  178. package/dist/logging/install.js +3 -3
  179. package/dist/logging/logger.d.ts +2 -2
  180. package/dist/logging/logger.js +31 -2
  181. package/dist/proc/kill-tree.js +1 -1
  182. package/dist/proc/log-mirror.js +1 -1
  183. package/dist/proc/log-ring.js +2 -2
  184. package/dist/proc/notices.d.ts +1 -1
  185. package/dist/proc/notices.js +2 -2
  186. package/dist/proc/prompt.d.ts +1 -1
  187. package/dist/proc/prompt.js +1 -1
  188. package/dist/proc/readiness.js +1 -1
  189. package/dist/proc/supervisor.d.ts +1 -1
  190. package/dist/proc/supervisor.js +3 -3
  191. package/dist/proc/wait.d.ts +1 -1
  192. package/dist/proc/wait.js +1 -1
  193. package/dist/prompts/command.d.ts +1 -1
  194. package/dist/prompts/command.js +1 -1
  195. package/dist/prompts/normalize.d.ts +1 -1
  196. package/dist/prompts/normalize.js +1 -1
  197. package/dist/prompts/resolve.d.ts +1 -1
  198. package/dist/prompts/store.d.ts +2 -12
  199. package/dist/prompts/store.js +6 -60
  200. package/dist/session/checkpoint.d.ts +2 -2
  201. package/dist/session/clear-archive.d.ts +2 -2
  202. package/dist/session/persist.d.ts +2 -2
  203. package/dist/session/persist.js +1 -1
  204. package/dist/session/startup-session.d.ts +2 -2
  205. package/dist/session/validate-session.js +3 -3
  206. package/dist/skills/service.d.ts +2 -2
  207. package/dist/team/bus.d.ts +1 -1
  208. package/dist/team/bus.js +1 -1
  209. package/dist/team/child-reviewer.d.ts +2 -2
  210. package/dist/team/child-reviewer.js +1 -1
  211. package/dist/team/comm-tools.js +1 -1
  212. package/dist/team/dispatch-gate.js +1 -1
  213. package/dist/team/forced-dispatch.js +1 -1
  214. package/dist/team/forced-mode.d.ts +1 -1
  215. package/dist/team/forced-prompt.d.ts +1 -1
  216. package/dist/team/forced-prompt.js +1 -1
  217. package/dist/team/normalize.d.ts +1 -1
  218. package/dist/team/normalize.js +1 -1
  219. package/dist/team/overseer.d.ts +3 -3
  220. package/dist/team/overseer.js +3 -3
  221. package/dist/team/prompt.d.ts +1 -1
  222. package/dist/team/prompt.js +1 -1
  223. package/dist/team/report.d.ts +2 -2
  224. package/dist/team/report.js +2 -2
  225. package/dist/team/retry.d.ts +1 -1
  226. package/dist/team/retry.js +1 -1
  227. package/dist/team/runtime.d.ts +4 -4
  228. package/dist/team/runtime.js +2 -2
  229. package/dist/team/settled.d.ts +2 -2
  230. package/dist/team/subagent.d.ts +4 -4
  231. package/dist/team/subagent.js +5 -5
  232. package/dist/team/task-tool.d.ts +1 -1
  233. package/dist/team/task-tool.js +1 -1
  234. package/dist/todo/normalize.d.ts +1 -1
  235. package/dist/todo/normalize.js +1 -1
  236. package/dist/todo/prompt.d.ts +1 -1
  237. package/dist/todo/prompt.js +1 -1
  238. package/dist/todo/store.d.ts +1 -1
  239. package/dist/todo/store.js +2 -2
  240. package/dist/todo/todo-tool.d.ts +1 -1
  241. package/dist/todo/todo-tool.js +2 -2
  242. package/dist/tools/bash-tool.d.ts +1 -1
  243. package/dist/tools/bash-tool.js +2 -2
  244. package/dist/tools/diff.d.ts +1 -1
  245. package/dist/tools/diff.js +1 -1
  246. package/dist/tools/file-change-store.d.ts +1 -1
  247. package/dist/tools/fs-tools.d.ts +2 -2
  248. package/dist/tools/fs-tools.js +1 -1
  249. package/dist/tools/index.d.ts +3 -3
  250. package/dist/tools/index.js +1 -1
  251. package/dist/tools/job-tools.d.ts +2 -2
  252. package/dist/tools/job-tools.js +4 -4
  253. package/dist/tools/plan-tools.d.ts +1 -1
  254. package/dist/tools/plan-tools.js +1 -1
  255. package/dist/tools/proc-tools.d.ts +1 -1
  256. package/dist/tools/proc-tools.js +2 -2
  257. package/dist/update/classify-failure.d.ts +1 -1
  258. package/dist/update/install-lock.js +1 -1
  259. package/dist/update/install-source.d.ts +1 -1
  260. package/dist/update/installer.js +2 -2
  261. package/dist/update/npm-view.d.ts +1 -1
  262. package/dist/update/npm-view.js +1 -1
  263. package/dist/update/registry.d.ts +1 -1
  264. package/dist/update/registry.js +1 -1
  265. package/dist/update/service.d.ts +2 -2
  266. package/dist/update/service.js +2 -2
  267. package/package.json +7 -7
  268. package/dist/agent/agent-mode.d.ts +0 -108
  269. package/dist/agent/agent-mode.js +0 -121
  270. package/dist/agent/entry-limits.d.ts +0 -65
  271. package/dist/agent/entry-limits.js +0 -133
  272. package/dist/agent/governance-view.d.ts +0 -40
  273. package/dist/agent/governance-view.js +0 -40
  274. package/dist/agent/invocation-card.d.ts +0 -77
  275. package/dist/agent/invocation-card.js +0 -169
  276. package/dist/agent/model-probe-limits.d.ts +0 -39
  277. package/dist/agent/model-probe-limits.js +0 -25
  278. package/dist/agent/model-probe.d.ts +0 -104
  279. package/dist/agent/model-probe.js +0 -391
  280. package/dist/agent/queued-messages.d.ts +0 -23
  281. package/dist/agent/queued-messages.js +0 -49
  282. package/dist/agent/reducer.d.ts +0 -857
  283. package/dist/agent/reducer.js +0 -1646
  284. package/dist/agent/retry-view.d.ts +0 -68
  285. package/dist/agent/retry-view.js +0 -95
  286. package/dist/agent/usage.d.ts +0 -47
  287. package/dist/agent/usage.js +0 -84
  288. package/dist/compaction/limits.d.ts +0 -61
  289. package/dist/compaction/limits.js +0 -64
  290. package/dist/compaction/meter.d.ts +0 -276
  291. package/dist/compaction/meter.js +0 -512
  292. package/dist/compaction/pressure.d.ts +0 -163
  293. package/dist/compaction/pressure.js +0 -199
  294. package/dist/compaction/reason-text.d.ts +0 -36
  295. package/dist/compaction/reason-text.js +0 -78
  296. package/dist/compaction/types.d.ts +0 -360
  297. package/dist/compaction/types.js +0 -22
  298. package/dist/config/governance-config.d.ts +0 -125
  299. package/dist/config/governance-config.js +0 -164
  300. package/dist/config/kit-resolution.d.ts +0 -93
  301. package/dist/config/kit-resolution.js +0 -226
  302. package/dist/config/model-kits.d.ts +0 -225
  303. package/dist/config/model-kits.js +0 -302
  304. package/dist/config/model-profile-resolution.d.ts +0 -28
  305. package/dist/config/model-profile-resolution.js +0 -88
  306. package/dist/config/model-profiles.d.ts +0 -103
  307. package/dist/config/model-profiles.js +0 -188
  308. package/dist/config/schema.d.ts +0 -1645
  309. package/dist/config/schema.js +0 -1383
  310. package/dist/fast/limits.d.ts +0 -152
  311. package/dist/fast/limits.js +0 -152
  312. package/dist/fast/resolve.d.ts +0 -44
  313. package/dist/fast/resolve.js +0 -107
  314. package/dist/fast/task-summary-types.d.ts +0 -66
  315. package/dist/fast/task-summary-types.js +0 -17
  316. package/dist/fast/types.d.ts +0 -141
  317. package/dist/fast/types.js +0 -14
  318. package/dist/governance/governed-dispatch.d.ts +0 -19
  319. package/dist/governance/governed-dispatch.js +0 -17
  320. package/dist/governance/limits.d.ts +0 -107
  321. package/dist/governance/limits.js +0 -131
  322. package/dist/governance/posture.d.ts +0 -35
  323. package/dist/governance/posture.js +0 -59
  324. package/dist/governance/rules/events-table.d.ts +0 -46
  325. package/dist/governance/rules/events-table.js +0 -94
  326. package/dist/governance/types.d.ts +0 -661
  327. package/dist/governance/types.js +0 -27
  328. package/dist/input/control-sequences.d.ts +0 -71
  329. package/dist/input/control-sequences.js +0 -222
  330. package/dist/input/csiu-keys.d.ts +0 -66
  331. package/dist/input/csiu-keys.js +0 -181
  332. package/dist/input/cursor-report.d.ts +0 -61
  333. package/dist/input/cursor-report.js +0 -97
  334. package/dist/input/enter-sequences.d.ts +0 -64
  335. package/dist/input/enter-sequences.js +0 -153
  336. package/dist/input/interrupt-gesture.d.ts +0 -18
  337. package/dist/input/interrupt-gesture.js +0 -19
  338. package/dist/input/keyboard-enhancement.d.ts +0 -42
  339. package/dist/input/keyboard-enhancement.js +0 -65
  340. package/dist/input/keymap.d.ts +0 -20
  341. package/dist/input/keymap.js +0 -99
  342. package/dist/input/limits.d.ts +0 -118
  343. package/dist/input/limits.js +0 -109
  344. package/dist/input/mouse-events.d.ts +0 -87
  345. package/dist/input/mouse-events.js +0 -212
  346. package/dist/input/paste-parse.d.ts +0 -83
  347. package/dist/input/paste-parse.js +0 -107
  348. package/dist/input/pointer-router.d.ts +0 -11
  349. package/dist/input/pointer-router.js +0 -14
  350. package/dist/input/stdin-filter.d.ts +0 -112
  351. package/dist/input/stdin-filter.js +0 -657
  352. package/dist/input/win32-input-mode.d.ts +0 -61
  353. package/dist/input/win32-input-mode.js +0 -269
  354. package/dist/logging/levels.d.ts +0 -40
  355. package/dist/logging/levels.js +0 -59
  356. package/dist/logging/secret-registry.d.ts +0 -32
  357. package/dist/logging/secret-registry.js +0 -73
  358. package/dist/proc/limits.d.ts +0 -214
  359. package/dist/proc/limits.js +0 -221
  360. package/dist/proc/progress.d.ts +0 -47
  361. package/dist/proc/progress.js +0 -163
  362. package/dist/proc/types.d.ts +0 -269
  363. package/dist/proc/types.js +0 -15
  364. package/dist/proc/wait-view.d.ts +0 -65
  365. package/dist/proc/wait-view.js +0 -66
  366. package/dist/prompts/copy.d.ts +0 -89
  367. package/dist/prompts/copy.js +0 -131
  368. package/dist/prompts/fill.d.ts +0 -51
  369. package/dist/prompts/fill.js +0 -46
  370. package/dist/prompts/limits.d.ts +0 -53
  371. package/dist/prompts/limits.js +0 -53
  372. package/dist/prompts/search.d.ts +0 -58
  373. package/dist/prompts/search.js +0 -146
  374. package/dist/prompts/types.d.ts +0 -204
  375. package/dist/prompts/types.js +0 -13
  376. package/dist/team/activity.d.ts +0 -67
  377. package/dist/team/activity.js +0 -130
  378. package/dist/team/limits.d.ts +0 -308
  379. package/dist/team/limits.js +0 -330
  380. package/dist/team/model.d.ts +0 -104
  381. package/dist/team/model.js +0 -150
  382. package/dist/team/panel-rows.d.ts +0 -48
  383. package/dist/team/panel-rows.js +0 -75
  384. package/dist/team/timeline.d.ts +0 -74
  385. package/dist/team/timeline.js +0 -101
  386. package/dist/team/types.d.ts +0 -354
  387. package/dist/team/types.js +0 -13
  388. package/dist/todo/acceptance.d.ts +0 -120
  389. package/dist/todo/acceptance.js +0 -399
  390. package/dist/todo/follow-through.d.ts +0 -138
  391. package/dist/todo/follow-through.js +0 -248
  392. package/dist/todo/limits.d.ts +0 -152
  393. package/dist/todo/limits.js +0 -152
  394. package/dist/todo/panel-rows.d.ts +0 -45
  395. package/dist/todo/panel-rows.js +0 -70
  396. package/dist/todo/plan-sections.d.ts +0 -60
  397. package/dist/todo/plan-sections.js +0 -108
  398. package/dist/todo/row-window.d.ts +0 -51
  399. package/dist/todo/row-window.js +0 -107
  400. package/dist/todo/types.d.ts +0 -124
  401. package/dist/todo/types.js +0 -12
  402. package/dist/tools/human-input.d.ts +0 -212
  403. package/dist/tools/human-input.js +0 -265
  404. package/dist/tools/patch.d.ts +0 -115
  405. package/dist/tools/patch.js +0 -453
  406. package/dist/tools/terminal-output.d.ts +0 -115
  407. package/dist/tools/terminal-output.js +0 -201
  408. package/dist/tools/tool-output-store.d.ts +0 -68
  409. package/dist/tools/tool-output-store.js +0 -102
  410. package/dist/ui/ActivityLine.d.ts +0 -26
  411. package/dist/ui/ActivityLine.js +0 -51
  412. package/dist/ui/AutocompletePopup.d.ts +0 -23
  413. package/dist/ui/AutocompletePopup.js +0 -17
  414. package/dist/ui/BottomStatusRow.d.ts +0 -10
  415. package/dist/ui/BottomStatusRow.js +0 -9
  416. package/dist/ui/Composer.d.ts +0 -115
  417. package/dist/ui/Composer.js +0 -64
  418. package/dist/ui/GovernancePanel.d.ts +0 -50
  419. package/dist/ui/GovernancePanel.js +0 -77
  420. package/dist/ui/GovernanceRun.d.ts +0 -18
  421. package/dist/ui/GovernanceRun.js +0 -11
  422. package/dist/ui/Header.d.ts +0 -48
  423. package/dist/ui/Header.js +0 -27
  424. package/dist/ui/Logo.d.ts +0 -32
  425. package/dist/ui/Logo.js +0 -65
  426. package/dist/ui/Markdown.d.ts +0 -29
  427. package/dist/ui/Markdown.js +0 -116
  428. package/dist/ui/PromptCaret.d.ts +0 -11
  429. package/dist/ui/PromptCaret.js +0 -31
  430. package/dist/ui/PromptInput.d.ts +0 -192
  431. package/dist/ui/PromptInput.js +0 -689
  432. package/dist/ui/QueuePanel.d.ts +0 -8
  433. package/dist/ui/QueuePanel.js +0 -9
  434. package/dist/ui/QueueStatusRow.d.ts +0 -24
  435. package/dist/ui/QueueStatusRow.js +0 -51
  436. package/dist/ui/ScrollbackShell.d.ts +0 -132
  437. package/dist/ui/ScrollbackShell.js +0 -26
  438. package/dist/ui/SessionOpener.d.ts +0 -30
  439. package/dist/ui/SessionOpener.js +0 -12
  440. package/dist/ui/StatusBar.d.ts +0 -130
  441. package/dist/ui/StatusBar.js +0 -61
  442. package/dist/ui/TeamPanel.d.ts +0 -76
  443. package/dist/ui/TeamPanel.js +0 -103
  444. package/dist/ui/ToastStack.d.ts +0 -8
  445. package/dist/ui/ToastStack.js +0 -31
  446. package/dist/ui/TodoPanel.d.ts +0 -52
  447. package/dist/ui/TodoPanel.js +0 -214
  448. package/dist/ui/Transcript.d.ts +0 -105
  449. package/dist/ui/Transcript.js +0 -258
  450. package/dist/ui/UpdateLine.d.ts +0 -44
  451. package/dist/ui/UpdateLine.js +0 -129
  452. package/dist/ui/activity-phrases.d.ts +0 -33
  453. package/dist/ui/activity-phrases.js +0 -50
  454. package/dist/ui/capabilities.d.ts +0 -27
  455. package/dist/ui/capabilities.js +0 -65
  456. package/dist/ui/clipboard-task.d.ts +0 -29
  457. package/dist/ui/clipboard-task.js +0 -66
  458. package/dist/ui/clipboard.d.ts +0 -31
  459. package/dist/ui/clipboard.js +0 -157
  460. package/dist/ui/color-runtime.d.ts +0 -5
  461. package/dist/ui/color-runtime.js +0 -29
  462. package/dist/ui/composer-input.d.ts +0 -38
  463. package/dist/ui/composer-input.js +0 -79
  464. package/dist/ui/composer-limits.d.ts +0 -30
  465. package/dist/ui/composer-limits.js +0 -45
  466. package/dist/ui/composer-rows.d.ts +0 -73
  467. package/dist/ui/composer-rows.js +0 -129
  468. package/dist/ui/console-bridge.d.ts +0 -19
  469. package/dist/ui/console-bridge.js +0 -52
  470. package/dist/ui/density.d.ts +0 -26
  471. package/dist/ui/density.js +0 -34
  472. package/dist/ui/display-tab.d.ts +0 -51
  473. package/dist/ui/display-tab.js +0 -82
  474. package/dist/ui/editor-navigation.d.ts +0 -55
  475. package/dist/ui/editor-navigation.js +0 -96
  476. package/dist/ui/editor-reducer.d.ts +0 -108
  477. package/dist/ui/editor-reducer.js +0 -187
  478. package/dist/ui/enter-frames.d.ts +0 -47
  479. package/dist/ui/enter-frames.js +0 -117
  480. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  481. package/dist/ui/entries/AssistantEntry.js +0 -43
  482. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  483. package/dist/ui/entries/CompactionCard.js +0 -222
  484. package/dist/ui/entries/DiffView.d.ts +0 -61
  485. package/dist/ui/entries/DiffView.js +0 -103
  486. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  487. package/dist/ui/entries/EntryFrame.js +0 -6
  488. package/dist/ui/entries/FastCard.d.ts +0 -53
  489. package/dist/ui/entries/FastCard.js +0 -105
  490. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  491. package/dist/ui/entries/GovernanceCard.js +0 -32
  492. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  493. package/dist/ui/entries/InvocationCard.js +0 -32
  494. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  495. package/dist/ui/entries/QueuedEntry.js +0 -33
  496. package/dist/ui/entries/RetryCard.d.ts +0 -56
  497. package/dist/ui/entries/RetryCard.js +0 -60
  498. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  499. package/dist/ui/entries/ServiceCard.js +0 -151
  500. package/dist/ui/entries/TeamCard.d.ts +0 -55
  501. package/dist/ui/entries/TeamCard.js +0 -94
  502. package/dist/ui/entries/TodoCard.d.ts +0 -54
  503. package/dist/ui/entries/TodoCard.js +0 -98
  504. package/dist/ui/entries/ToolCard.d.ts +0 -81
  505. package/dist/ui/entries/ToolCard.js +0 -169
  506. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  507. package/dist/ui/entries/ToolPreview.js +0 -208
  508. package/dist/ui/entries/UserEntry.d.ts +0 -36
  509. package/dist/ui/entries/UserEntry.js +0 -57
  510. package/dist/ui/entries/WaitCard.d.ts +0 -37
  511. package/dist/ui/entries/WaitCard.js +0 -92
  512. package/dist/ui/exit-snapshot.d.ts +0 -43
  513. package/dist/ui/exit-snapshot.js +0 -26
  514. package/dist/ui/frame-differ.d.ts +0 -166
  515. package/dist/ui/frame-differ.js +0 -354
  516. package/dist/ui/frame-observer.d.ts +0 -17
  517. package/dist/ui/frame-observer.js +0 -94
  518. package/dist/ui/frame-parser.d.ts +0 -7
  519. package/dist/ui/frame-parser.js +0 -18
  520. package/dist/ui/gauge.d.ts +0 -39
  521. package/dist/ui/gauge.js +0 -55
  522. package/dist/ui/glyphs.d.ts +0 -178
  523. package/dist/ui/glyphs.js +0 -165
  524. package/dist/ui/governance-copy.d.ts +0 -69
  525. package/dist/ui/governance-copy.js +0 -104
  526. package/dist/ui/governance-status.d.ts +0 -145
  527. package/dist/ui/governance-status.js +0 -326
  528. package/dist/ui/gradient.d.ts +0 -11
  529. package/dist/ui/gradient.js +0 -50
  530. package/dist/ui/ink-runtime.d.ts +0 -4
  531. package/dist/ui/ink-runtime.js +0 -51
  532. package/dist/ui/interaction-copy.d.ts +0 -84
  533. package/dist/ui/interaction-copy.js +0 -41
  534. package/dist/ui/interaction-hints.d.ts +0 -44
  535. package/dist/ui/interaction-hints.js +0 -97
  536. package/dist/ui/layout/AppShell.d.ts +0 -17
  537. package/dist/ui/layout/AppShell.js +0 -6
  538. package/dist/ui/layout/Gutter.d.ts +0 -67
  539. package/dist/ui/layout/Gutter.js +0 -42
  540. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  541. package/dist/ui/layout/MeasuredEntry.js +0 -30
  542. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  543. package/dist/ui/layout/OverlayFrame.js +0 -110
  544. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  545. package/dist/ui/layout/ScrollIndicator.js +0 -22
  546. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  547. package/dist/ui/layout/ScrollViewport.js +0 -222
  548. package/dist/ui/layout/agents-board.d.ts +0 -102
  549. package/dist/ui/layout/agents-board.js +0 -389
  550. package/dist/ui/layout/autocomplete.d.ts +0 -18
  551. package/dist/ui/layout/autocomplete.js +0 -26
  552. package/dist/ui/layout/budget.d.ts +0 -43
  553. package/dist/ui/layout/budget.js +0 -52
  554. package/dist/ui/layout/cells.d.ts +0 -61
  555. package/dist/ui/layout/cells.js +0 -156
  556. package/dist/ui/layout/document-layout.d.ts +0 -13
  557. package/dist/ui/layout/document-layout.js +0 -10
  558. package/dist/ui/layout/follow-state.d.ts +0 -138
  559. package/dist/ui/layout/follow-state.js +0 -148
  560. package/dist/ui/layout/frame.d.ts +0 -36
  561. package/dist/ui/layout/frame.js +0 -39
  562. package/dist/ui/layout/governance-board.d.ts +0 -121
  563. package/dist/ui/layout/governance-board.js +0 -382
  564. package/dist/ui/layout/governance-card.d.ts +0 -53
  565. package/dist/ui/layout/governance-card.js +0 -134
  566. package/dist/ui/layout/governance-chip.d.ts +0 -38
  567. package/dist/ui/layout/governance-chip.js +0 -64
  568. package/dist/ui/layout/governance-panel.d.ts +0 -85
  569. package/dist/ui/layout/governance-panel.js +0 -358
  570. package/dist/ui/layout/governance-roster.d.ts +0 -65
  571. package/dist/ui/layout/governance-roster.js +0 -275
  572. package/dist/ui/layout/header-hints.d.ts +0 -90
  573. package/dist/ui/layout/header-hints.js +0 -110
  574. package/dist/ui/layout/header-left.d.ts +0 -115
  575. package/dist/ui/layout/header-left.js +0 -206
  576. package/dist/ui/layout/invocation-card.d.ts +0 -41
  577. package/dist/ui/layout/invocation-card.js +0 -91
  578. package/dist/ui/layout/kit-chip.d.ts +0 -50
  579. package/dist/ui/layout/kit-chip.js +0 -81
  580. package/dist/ui/layout/overlay-window.d.ts +0 -43
  581. package/dist/ui/layout/overlay-window.js +0 -51
  582. package/dist/ui/layout/queue-layout.d.ts +0 -19
  583. package/dist/ui/layout/queue-layout.js +0 -26
  584. package/dist/ui/layout/rail.d.ts +0 -7
  585. package/dist/ui/layout/rail.js +0 -16
  586. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  587. package/dist/ui/layout/scroll-indicator.js +0 -36
  588. package/dist/ui/layout/scroll.d.ts +0 -37
  589. package/dist/ui/layout/scroll.js +0 -99
  590. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  591. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  592. package/dist/ui/layout/session-chip.d.ts +0 -52
  593. package/dist/ui/layout/session-chip.js +0 -64
  594. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  595. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  596. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  597. package/dist/ui/layout/status-detail-layout.js +0 -79
  598. package/dist/ui/layout/status-layout.d.ts +0 -140
  599. package/dist/ui/layout/status-layout.js +0 -262
  600. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  601. package/dist/ui/layout/task-summary-cell.js +0 -65
  602. package/dist/ui/layout/team-panel.d.ts +0 -18
  603. package/dist/ui/layout/team-panel.js +0 -25
  604. package/dist/ui/layout/team-row.d.ts +0 -139
  605. package/dist/ui/layout/team-row.js +0 -246
  606. package/dist/ui/layout/todo-layout.d.ts +0 -62
  607. package/dist/ui/layout/todo-layout.js +0 -102
  608. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  609. package/dist/ui/layout/useTerminalSize.js +0 -50
  610. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  611. package/dist/ui/layout/viewport-geometry.js +0 -28
  612. package/dist/ui/layout/virtual-window.d.ts +0 -112
  613. package/dist/ui/layout/virtual-window.js +0 -494
  614. package/dist/ui/layout/wait-bar.d.ts +0 -34
  615. package/dist/ui/layout/wait-bar.js +0 -48
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -63
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -130
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,225 +0,0 @@
1
- /**
2
- * Agent model kits: a named preset that pins the THREE model roles
3
- * (main / fast / subagent) to profiles that already live in the library
4
- * (agent-model-kits D-1 / D-2).
5
- *
6
- * ASCII ONLY - `src/config/**` is inside `glyphs.test.ts::inScope`.
7
- *
8
- * A KIT STORES REFERENCES, NEVER COPIES (D-1): every slot is a profile id, so
9
- * editing the profile changes the meaning of every kit that names it, which is
10
- * exactly the promise a "preset" makes. That is also why deleting a profile has
11
- * to delete the kits that reference it (D-9) instead of leaving a preset nobody
12
- * can repair from the UI.
13
- *
14
- * EVERY CROSS-LAYER IMPORT HERE IS `import type` (RV-P2-5): `schema.ts` names
15
- * `model-profiles.ts` through an inline `import('./model-profiles.js')` type
16
- * query, so `model-profiles -> model-kits -> schema` is already a TYPE cycle. A
17
- * value import (`DEFAULT_FAST_CONFIG`, `clampTeamConfig`) would turn it into a
18
- * runtime cycle, and vitest surfaces that as an empty module at import time.
19
- */
20
- import type { CliConfig, FastConfig, TeamConfig } from './schema.js';
21
- import type { ModelProfilesConfig, ProfileValidationIssue } from './model-profiles.js';
22
- import type { ModelSettingsSaveResult } from './model-profile-store.js';
23
- export type KitSlot = 'main' | 'fast' | 'subagent';
24
- /**
25
- * The session kit's runtime shape (D-5): the kit plus the slots it still owns.
26
- *
27
- * `held` is the ONLY mutable part. It shrinks when a save explicitly decides a
28
- * slot (§4.3 / D-6), so "the user changed subagent, so subagent is theirs now"
29
- * needs no second bookkeeping structure.
30
- */
31
- export interface SessionKitState {
32
- id: string;
33
- held: KitSlot[];
34
- }
35
- /**
36
- * The kit's subagent slot.
37
- *
38
- * `model` is typed with `TeamConfig['model']` rather than by importing
39
- * `team/model.ts`: `team/model.ts` already imports `config/`, so the reverse
40
- * edge would be a cycle. `import type` keeps even this one erased.
41
- */
42
- export interface AgentKitSubagent {
43
- model: TeamConfig['model'];
44
- /** Non-null IF AND ONLY IF `model === 'profile'` (I-2, guaranteed by normalize). */
45
- modelProfileId: string | null;
46
- }
47
- export interface AgentKit {
48
- id: string;
49
- /** 1..48 code points, no control characters. Names MAY repeat (§6.6). */
50
- name: string;
51
- /** Required (D-8). A dangling reference is NOT a validation error - see I-8. */
52
- mainProfileId: string;
53
- /** `null` = this kit turns the fast tier OFF for its session (D-8). */
54
- fastProfileId: string | null;
55
- subagent: AgentKitSubagent;
56
- }
57
- export declare const KIT_LIMITS: {
58
- /**
59
- * Structural ceiling. The EFFECTIVE ceiling is lower and implicit: every kit
60
- * references at least one profile, so 200 entries cap the reachable kits
61
- * (RV-P2-7) - recorded, not cross-validated, because the two numbers answer
62
- * different questions.
63
- */
64
- readonly maxKits: 50;
65
- readonly nameMaxChars: 48;
66
- readonly maxSlots: 3;
67
- };
68
- /**
69
- * STRUCTURAL ONLY (RV-P1-1). Reference existence is a RESOLUTION-time concern,
70
- * exactly as it is for `team.modelProfileId` (`schema.ts` clampTeamConfig):
71
- * `createModelProfileState` blanks the whole settings page when validation
72
- * fails, so promoting "a hand-edited file left one dangling id" into "the page
73
- * and the `Subagent model` row are both dead" is a wildly disproportionate blast
74
- * radius.
75
- *
76
- * `duplicate_name` is deliberately NOT a code: two kits may share a name
77
- * (§6.6), and `/kit use` disambiguates with an `#id` prefix.
78
- */
79
- export interface KitIssue {
80
- path: string;
81
- code: 'invalid' | 'duplicate_id';
82
- message: string;
83
- }
84
- /** One resolved slot; `null` on the slot itself means the entry is gone. */
85
- export interface KitConnection {
86
- provider: string;
87
- model: string;
88
- baseUrl: string | null;
89
- name: string;
90
- }
91
- export interface KitSlotConnections {
92
- /** `null` = the referenced entry is gone; render `Profile missing`, never throw. */
93
- main: KitConnection | null;
94
- fast: KitConnection | null;
95
- subagent: {
96
- /**
97
- * The SLOT MODE (`main` / `fast` / `profile`). Named `mode` rather than
98
- * `model` because the resolved connection below carries a model ID of its
99
- * own, and two `model` keys in one object literal is a TypeScript error
100
- * (recorded as an implementation-time fix in the spec's issues section).
101
- */
102
- mode: TeamConfig['model'];
103
- provider: string | null;
104
- model: string | null;
105
- baseUrl: string | null;
106
- name: string | null;
107
- };
108
- }
109
- /**
110
- * A consequence of applying a kit that the user MUST be told about (§4.2).
111
- *
112
- * Not one of these is a failure: applying a kit is allowed to turn the fast tier
113
- * on (which is real money - `DEFAULT_FAST_CONFIG.review` is `true`), to leave a
114
- * profile without a usable key, or to name a tier this kit just switched off.
115
- * The rule is the one every other subsystem in this package follows: no silent
116
- * decisions, especially about spend.
117
- */
118
- export type KitNote = 'fast_tier_enabled' | 'fast_review_enabled' | 'fast_tier_off' | 'restart_required' | 'main_key_missing' | 'subagent_key_missing' | 'subagent_fast_unavailable';
119
- /**
120
- * What a session-kit action did, or why it did nothing.
121
- *
122
- * THE CODE SET IS THE SAVE SET PLUS TWO (RV-P1-3): every code the reused
123
- * prepare/commit chain can produce is spelled here, so `kitApplyMessage` has no
124
- * gap to fall through. A missing message would be rendered by a non-null
125
- * assertion as the literal string `undefined`.
126
- */
127
- export interface KitApplyResult {
128
- ok: boolean;
129
- code?: ModelSettingsSaveResult['code'] | 'kit_missing' | 'kit_references_missing_profile';
130
- /** `clearSessionKit` only: the session is back on the config file. */
131
- released?: boolean;
132
- notes: KitNote[];
133
- /** Set when `kit_references_missing_profile` refused the apply (I-8). */
134
- issues?: ProfileValidationIssue[];
135
- }
136
- export interface KitsNormalization {
137
- kits: AgentKit[];
138
- /** Self-healed: a pointer at a kit that did not survive becomes `null`. */
139
- defaultKitId: string | null;
140
- /** Forward migration marker (D-3). Never anything but 1. */
141
- kitsVersion: 1;
142
- /** Entries thrown away because they were structurally unsalvageable. */
143
- dropped: number;
144
- }
145
- export declare const SUBAGENT_MODES: readonly ["main", "fast", "profile"];
146
- /** The one mapping from a kit to a persisted-config patch (§4.2). */
147
- export interface KitCandidate {
148
- modelProfiles: ModelProfilesConfig;
149
- team: Partial<TeamConfig>;
150
- fast: Partial<FastConfig>;
151
- }
152
- /**
153
- * Validate the `kits` array STRUCTURALLY (RV-P1-1).
154
- *
155
- * Returns `[]` for `undefined`/`null`/`[]` so a library written by a pre-KIT
156
- * build keeps validating - the whole point of D-3's additive migration.
157
- */
158
- export declare function validateKits(value: unknown): KitIssue[];
159
- /**
160
- * White-list normalization of `kits` + `defaultKitId` (F-3 / R-2).
161
- *
162
- * TOTAL: no input throws. `normalizeModelProfiles` calls this on whatever the
163
- * file holds, and a throw there would take the whole library - including the
164
- * user's credentials - down with one malformed kit.
165
- *
166
- * `defaultKitRef` is a SEPARATE argument because `defaultKitId` is a sibling of
167
- * `kits` in the library, not a member of the array; keeping it here is what
168
- * lets the pointer self-heal against the kits that actually survived.
169
- */
170
- export declare function normalizeKits(kitsValue: unknown, defaultKitRef?: unknown): KitsNormalization;
171
- /** Create a kit with a stable UUID, normalized like `createModelProfile`. */
172
- export declare function createAgentKit(input: Omit<AgentKit, 'id'>): AgentKit;
173
- /** Copy a kit under a free ` (copy)` name - the manager's `Duplicate` action. */
174
- export declare function duplicateAgentKit(kit: AgentKit, existing: readonly AgentKit[]): AgentKit;
175
- /**
176
- * Every kit a reference text may mean.
177
- *
178
- * ONE parser for `ctrl+K`, `/kit use` and the settings manager, so "what did I
179
- * just type" has a single answer. `ref` is an exact id, an `#id` prefix, or an
180
- * exact name; an ambiguous reference returns more than one hit and the caller
181
- * reports it rather than silently taking the first (§4.9).
182
- */
183
- export declare function kitMatches(library: ModelProfilesConfig | undefined, ref: string | null | undefined): AgentKit[];
184
- /** Resolve one kit, or `undefined` when the reference is missing or ambiguous. */
185
- export declare function findKit(library: ModelProfilesConfig | undefined, ref: string | null | undefined): AgentKit | undefined;
186
- /**
187
- * THE ONE mapping from a kit to a persisted-config patch (§4.2).
188
- *
189
- * Both consumption paths - "set as default" (writes the result) and `ctrl+K`
190
- * (never writes it) - call this, so a default kit and a session kit produce
191
- * structurally identical configurations. There is no second interpretation.
192
- *
193
- * `defaultKitId` is only touched when the caller PASSES it (it is
194
- * `undefined` for a session kit), which is what keeps `ctrl+K` from moving the
195
- * persisted pointer.
196
- */
197
- export declare function kitCandidate(input: {
198
- library: ModelProfilesConfig;
199
- kit: AgentKit;
200
- defaultKitId?: string | null;
201
- }): KitCandidate;
202
- /**
203
- * Dereference the three slots for every surface that prints them (picker,
204
- * management page, `/kit list`).
205
- *
206
- * A MISSING ENTRY RETURNS `null` INSTEAD OF THROWING (RV-P1-1 / I-8): the UI
207
- * renders `Profile missing`, the library stays readable, and only APPLYING the
208
- * kit is refused, with a stable code.
209
- */
210
- export declare function kitSlotConnections(library: ModelProfilesConfig | undefined, kit: AgentKit): KitSlotConnections;
211
- /**
212
- * Pre-fill the first kit from what this machine already runs (§4.10 / D-13).
213
- *
214
- * `mainProfileId` comes from the caller because CREATING a profile is UI work:
215
- * `createCustomProfile` lives in `ui/overlays/model-profile-state.ts`, and a
216
- * `config/` module importing `ui/` would invert the dependency direction this
217
- * package keeps everywhere else. The caller creates (or reuses) the entry and
218
- * hands its id in; when it is absent the kit is still built, because a
219
- * half-filled editor is a better first form than an empty one.
220
- */
221
- export declare function createKitFromCurrent(input: {
222
- config: CliConfig;
223
- mainProfileId?: string | null;
224
- name?: string;
225
- }): AgentKit;
@@ -1,302 +0,0 @@
1
- /**
2
- * Agent model kits: a named preset that pins the THREE model roles
3
- * (main / fast / subagent) to profiles that already live in the library
4
- * (agent-model-kits D-1 / D-2).
5
- *
6
- * ASCII ONLY - `src/config/**` is inside `glyphs.test.ts::inScope`.
7
- *
8
- * A KIT STORES REFERENCES, NEVER COPIES (D-1): every slot is a profile id, so
9
- * editing the profile changes the meaning of every kit that names it, which is
10
- * exactly the promise a "preset" makes. That is also why deleting a profile has
11
- * to delete the kits that reference it (D-9) instead of leaving a preset nobody
12
- * can repair from the UI.
13
- *
14
- * EVERY CROSS-LAYER IMPORT HERE IS `import type` (RV-P2-5): `schema.ts` names
15
- * `model-profiles.ts` through an inline `import('./model-profiles.js')` type
16
- * query, so `model-profiles -> model-kits -> schema` is already a TYPE cycle. A
17
- * value import (`DEFAULT_FAST_CONFIG`, `clampTeamConfig`) would turn it into a
18
- * runtime cycle, and vitest surfaces that as an empty module at import time.
19
- */
20
- import { randomUUID } from 'node:crypto';
21
- export const KIT_LIMITS = {
22
- /**
23
- * Structural ceiling. The EFFECTIVE ceiling is lower and implicit: every kit
24
- * references at least one profile, so 200 entries cap the reachable kits
25
- * (RV-P2-7) - recorded, not cross-validated, because the two numbers answer
26
- * different questions.
27
- */
28
- maxKits: 50,
29
- nameMaxChars: 48,
30
- maxSlots: 3,
31
- };
32
- export const SUBAGENT_MODES = ['main', 'fast', 'profile'];
33
- const CONTROL = /[\u0000-\u001f\u007f-\u009f]/;
34
- function isRecord(value) {
35
- return value !== null && typeof value === 'object' && !Array.isArray(value);
36
- }
37
- /** Non-empty, control-free text of at most `max` code points. */
38
- function validText(value, max) {
39
- if (typeof value !== 'string' || CONTROL.test(value))
40
- return false;
41
- const points = [...value.trim()].length;
42
- return points > 0 && points <= max;
43
- }
44
- function invalidKit(path, message) {
45
- return { path, code: 'invalid', message };
46
- }
47
- function validateKitSubagent(value, path) {
48
- if (!isRecord(value))
49
- return [invalidKit(`${path}.subagent`, 'Subagent must be an object.')];
50
- const issues = [];
51
- if (!SUBAGENT_MODES.includes(value.model)) {
52
- issues.push(invalidKit(`${path}.subagent.model`, 'Subagent model must be main, fast or profile.'));
53
- }
54
- const id = value.modelProfileId;
55
- if (id !== null && !validText(id, 128)) {
56
- issues.push(invalidKit(`${path}.subagent.modelProfileId`, 'Subagent profile must be empty or 1-128 safe characters.'));
57
- }
58
- return issues;
59
- }
60
- function validateKit(value, index) {
61
- const path = `modelProfiles.kits[${index}]`;
62
- if (!isRecord(value))
63
- return [invalidKit(path, 'Kit must be an object.')];
64
- const issues = [];
65
- if (!validText(value.id, 128)) {
66
- issues.push(invalidKit(`${path}.id`, 'Kit ID must have 1-128 safe characters.'));
67
- }
68
- if (!validText(value.name, KIT_LIMITS.nameMaxChars)) {
69
- issues.push(invalidKit(`${path}.name`, `Kit name must have 1-${KIT_LIMITS.nameMaxChars} safe characters.`));
70
- }
71
- if (!validText(value.mainProfileId, 128)) {
72
- issues.push(invalidKit(`${path}.mainProfileId`, 'Choose a main profile for this kit.'));
73
- }
74
- const fast = value.fastProfileId;
75
- if (fast !== null && !validText(fast, 128)) {
76
- issues.push(invalidKit(`${path}.fastProfileId`, 'Fast profile must be a profile or off.'));
77
- }
78
- issues.push(...validateKitSubagent(value.subagent, path));
79
- return issues;
80
- }
81
- /**
82
- * Validate the `kits` array STRUCTURALLY (RV-P1-1).
83
- *
84
- * Returns `[]` for `undefined`/`null`/`[]` so a library written by a pre-KIT
85
- * build keeps validating - the whole point of D-3's additive migration.
86
- */
87
- export function validateKits(value) {
88
- if (value === undefined || value === null)
89
- return [];
90
- if (!Array.isArray(value)) {
91
- return [invalidKit('modelProfiles.kits', 'Kits must be an array.')];
92
- }
93
- if (value.length > KIT_LIMITS.maxKits) {
94
- return [invalidKit('modelProfiles.kits', `Use at most ${KIT_LIMITS.maxKits} kits; delete unused kits to add more.`)];
95
- }
96
- const issues = value.flatMap(validateKit);
97
- const ids = new Set();
98
- value.forEach((kit, index) => {
99
- if (!isRecord(kit) || typeof kit.id !== 'string')
100
- return;
101
- if (ids.has(kit.id)) {
102
- issues.push({ path: `modelProfiles.kits[${index}].id`, code: 'duplicate_id',
103
- message: 'Kit IDs must be unique.' });
104
- }
105
- ids.add(kit.id);
106
- });
107
- return issues;
108
- }
109
- function normalizeSubagent(value) {
110
- const source = isRecord(value) ? value : {};
111
- const model = SUBAGENT_MODES.includes(source.model)
112
- ? source.model : 'main';
113
- // I-2: the id exists exactly when the mode names a profile. A hand-edited
114
- // `{model:'fast', modelProfileId:'x'}` therefore heals instead of lingering
115
- // as a reference nothing reads.
116
- const id = model === 'profile' && validText(source.modelProfileId, 128)
117
- ? source.modelProfileId.trim() : null;
118
- return { model, modelProfileId: id };
119
- }
120
- /** One entry into a safe `AgentKit`, or `null` when it cannot be salvaged. */
121
- function normalizeKit(value) {
122
- if (!isRecord(value))
123
- return null;
124
- if (!validText(value.id, 128) || !validText(value.name, KIT_LIMITS.nameMaxChars)
125
- || !validText(value.mainProfileId, 128))
126
- return null;
127
- const fast = value.fastProfileId;
128
- if (fast !== null && fast !== undefined && !validText(fast, 128))
129
- return null;
130
- return {
131
- id: value.id.trim(),
132
- name: value.name.trim(),
133
- mainProfileId: value.mainProfileId.trim(),
134
- fastProfileId: validText(fast, 128) ? fast.trim() : null,
135
- subagent: normalizeSubagent(value.subagent),
136
- };
137
- }
138
- /**
139
- * White-list normalization of `kits` + `defaultKitId` (F-3 / R-2).
140
- *
141
- * TOTAL: no input throws. `normalizeModelProfiles` calls this on whatever the
142
- * file holds, and a throw there would take the whole library - including the
143
- * user's credentials - down with one malformed kit.
144
- *
145
- * `defaultKitRef` is a SEPARATE argument because `defaultKitId` is a sibling of
146
- * `kits` in the library, not a member of the array; keeping it here is what
147
- * lets the pointer self-heal against the kits that actually survived.
148
- */
149
- export function normalizeKits(kitsValue, defaultKitRef) {
150
- const kits = [];
151
- let dropped = 0;
152
- if (Array.isArray(kitsValue)) {
153
- const seen = new Set();
154
- for (const raw of kitsValue.slice(0, KIT_LIMITS.maxKits)) {
155
- const kit = normalizeKit(raw);
156
- if (!kit || seen.has(kit.id)) {
157
- dropped += 1;
158
- continue;
159
- }
160
- seen.add(kit.id);
161
- kits.push(kit);
162
- }
163
- dropped += Math.max(0, kitsValue.length - KIT_LIMITS.maxKits);
164
- }
165
- else if (kitsValue !== undefined && kitsValue !== null)
166
- dropped += 1;
167
- const defaultKitId = typeof defaultKitRef === 'string'
168
- && kits.some((kit) => kit.id === defaultKitRef) ? defaultKitRef : null;
169
- return { kits, defaultKitId, kitsVersion: 1, dropped };
170
- }
171
- /** Create a kit with a stable UUID, normalized like `createModelProfile`. */
172
- export function createAgentKit(input) {
173
- const draft = { ...input, id: randomUUID() };
174
- return normalizeKit(draft) ?? { ...draft, subagent: normalizeSubagent(draft.subagent) };
175
- }
176
- /** Copy a kit under a free ` (copy)` name - the manager's `Duplicate` action. */
177
- export function duplicateAgentKit(kit, existing) {
178
- const taken = new Set(existing.map((other) => other.name));
179
- const suffix = [...kit.name].slice(0, KIT_LIMITS.nameMaxChars - 8).join('').trimEnd();
180
- let name = `${suffix} (copy)`;
181
- for (let copy = 2; taken.has(name); copy += 1)
182
- name = `${suffix} (copy ${copy})`;
183
- return { ...kit, id: randomUUID(), name: [...name].slice(0, KIT_LIMITS.nameMaxChars).join('') };
184
- }
185
- /**
186
- * Every kit a reference text may mean.
187
- *
188
- * ONE parser for `ctrl+K`, `/kit use` and the settings manager, so "what did I
189
- * just type" has a single answer. `ref` is an exact id, an `#id` prefix, or an
190
- * exact name; an ambiguous reference returns more than one hit and the caller
191
- * reports it rather than silently taking the first (§4.9).
192
- */
193
- export function kitMatches(library, ref) {
194
- if (!library || !ref)
195
- return [];
196
- const kits = library.kits ?? [];
197
- const text = ref.trim();
198
- if (!text)
199
- return [];
200
- const exact = kits.find((kit) => kit.id === text);
201
- if (exact)
202
- return [exact];
203
- if (text.startsWith('#')) {
204
- const prefix = text.slice(1).trim().toLowerCase();
205
- return prefix ? kits.filter((kit) => kit.id.toLowerCase().startsWith(prefix)) : [];
206
- }
207
- return kits.filter((kit) => kit.name === text);
208
- }
209
- /** Resolve one kit, or `undefined` when the reference is missing or ambiguous. */
210
- export function findKit(library, ref) {
211
- const hits = kitMatches(library, ref);
212
- return hits.length === 1 ? hits[0] : undefined;
213
- }
214
- /**
215
- * THE ONE mapping from a kit to a persisted-config patch (§4.2).
216
- *
217
- * Both consumption paths - "set as default" (writes the result) and `ctrl+K`
218
- * (never writes it) - call this, so a default kit and a session kit produce
219
- * structurally identical configurations. There is no second interpretation.
220
- *
221
- * `defaultKitId` is only touched when the caller PASSES it (it is
222
- * `undefined` for a session kit), which is what keeps `ctrl+K` from moving the
223
- * persisted pointer.
224
- */
225
- export function kitCandidate(input) {
226
- const { library, kit } = input;
227
- const profileId = kit.subagent.model === 'profile' ? kit.subagent.modelProfileId : null;
228
- return {
229
- modelProfiles: {
230
- ...library,
231
- mainId: kit.mainProfileId,
232
- fastId: kit.fastProfileId,
233
- ...(input.defaultKitId !== undefined ? { defaultKitId: input.defaultKitId } : {}),
234
- },
235
- team: { model: kit.subagent.model, modelProfileId: profileId },
236
- // D-8: `fastProfileId: null` means OFF, not "leave it alone".
237
- fast: { enabled: kit.fastProfileId !== null },
238
- };
239
- }
240
- function connectionOf(entry) {
241
- if (!entry)
242
- return null;
243
- return { provider: entry.provider, model: entry.model, baseUrl: entry.baseUrl,
244
- name: entry.name };
245
- }
246
- /**
247
- * Dereference the three slots for every surface that prints them (picker,
248
- * management page, `/kit list`).
249
- *
250
- * A MISSING ENTRY RETURNS `null` INSTEAD OF THROWING (RV-P1-1 / I-8): the UI
251
- * renders `Profile missing`, the library stays readable, and only APPLYING the
252
- * kit is refused, with a stable code.
253
- */
254
- export function kitSlotConnections(library, kit) {
255
- const entries = library?.entries ?? [];
256
- const find = (id) => id ? entries.find((entry) => entry.id === id) : undefined;
257
- const main = find(kit.mainProfileId);
258
- const fast = find(kit.fastProfileId);
259
- const subProfile = kit.subagent.model === 'profile'
260
- ? find(kit.subagent.modelProfileId) : undefined;
261
- const target = kit.subagent.model === 'main' ? main
262
- : kit.subagent.model === 'fast' ? fast : subProfile;
263
- return {
264
- main: connectionOf(main),
265
- fast: connectionOf(fast),
266
- subagent: {
267
- mode: kit.subagent.model,
268
- provider: target?.provider ?? null,
269
- model: target?.model ?? null,
270
- baseUrl: target?.baseUrl ?? null,
271
- name: target?.name ?? null,
272
- },
273
- };
274
- }
275
- /**
276
- * Pre-fill the first kit from what this machine already runs (§4.10 / D-13).
277
- *
278
- * `mainProfileId` comes from the caller because CREATING a profile is UI work:
279
- * `createCustomProfile` lives in `ui/overlays/model-profile-state.ts`, and a
280
- * `config/` module importing `ui/` would invert the dependency direction this
281
- * package keeps everywhere else. The caller creates (or reuses) the entry and
282
- * hands its id in; when it is absent the kit is still built, because a
283
- * half-filled editor is a better first form than an empty one.
284
- */
285
- export function createKitFromCurrent(input) {
286
- const { config } = input;
287
- const library = config.modelProfiles;
288
- const fastId = config.fast?.enabled === true ? library?.fastId ?? null : null;
289
- // THE SUBAGENT PROFILE IS CARRIED, NOT BLANKED (I-2): a machine whose subagent
290
- // already runs a specific profile would otherwise be prefilled with mode
291
- // `profile` and no id, which `resolveSubagentModel` can only degrade to main -
292
- // the prefill would silently change the answer it exists to record.
293
- const subagentModel = config.team?.model ?? 'main';
294
- const subagentProfileId = subagentModel === 'profile'
295
- ? config.team?.modelProfileId ?? null : null;
296
- return createAgentKit({
297
- name: input.name ?? 'My setup',
298
- mainProfileId: input.mainProfileId ?? library?.mainId ?? '',
299
- fastProfileId: fastId,
300
- subagent: { model: subagentModel, modelProfileId: subagentProfileId },
301
- });
302
- }
@@ -1,28 +0,0 @@
1
- import { type CliConfig, type PersistedConfig } from './schema.js';
2
- import { type ModelProfilesConfig, type ModelProfilesRuntime, type ModelRole, type ProfileValidationIssue } from './model-profiles.js';
3
- export interface ProfileProjection {
4
- file: Partial<PersistedConfig>;
5
- state: ModelProfilesRuntime;
6
- issues: ProfileValidationIssue[];
7
- /**
8
- * True when a valid library has Main bound, so the bound profile OWNS the
9
- * context-window denominator (profile-context-window tradeoff B). THE ONE
10
- * AUTHORITY for "does the profile decide the window" - load.ts and the save
11
- * transaction both read it rather than comparing numbers, which would lie on
12
- * a coincidental match.
13
- */
14
- mainOwnsContextWindow: boolean;
15
- }
16
- export interface RoleKeyInput {
17
- config: CliConfig;
18
- role: ModelRole;
19
- providerId: string;
20
- }
21
- /** Compare configured endpoint spelling strictly, with null and undefined equivalent. */
22
- export declare function normalizeProfileBaseUrl(value: string | null | undefined): string | null;
23
- /** Project a valid library onto a copy without rewriting legacy preferences. */
24
- export declare function projectModelProfiles(file: Partial<PersistedConfig>): ProfileProjection;
25
- /** Derive binding status from current connections, including session/model overrides. */
26
- export declare function resolveModelProfileState(config: CliConfig, profiles?: ModelProfilesConfig | undefined, invalid?: boolean): ModelProfilesRuntime;
27
- /** Resolve only credentials scoped to the requested role and actual connection target. */
28
- export declare function resolveModelRoleKey(input: RoleKeyInput): string | undefined;
@@ -1,88 +0,0 @@
1
- import { DEFAULT_CONFIG } from './schema.js';
2
- import { emptyModelProfileState, normalizeModelProfiles, validateModelProfiles } from './model-profiles.js';
3
- /** Compare configured endpoint spelling strictly, with null and undefined equivalent. */
4
- export function normalizeProfileBaseUrl(value) {
5
- return value?.trim() || null;
6
- }
7
- /** Project a valid library onto a copy without rewriting legacy preferences. */
8
- export function projectModelProfiles(file) {
9
- const issues = validateModelProfiles(file.modelProfiles);
10
- const state = emptyModelProfileState(issues.length > 0);
11
- const projected = { ...file };
12
- if (issues.length || !file.modelProfiles) {
13
- return { file: projected, state, issues, mainOwnsContextWindow: false };
14
- }
15
- const library = normalizeModelProfiles(file.modelProfiles);
16
- projected.modelProfiles = library;
17
- for (const role of ['main', 'fast']) {
18
- const entry = library.entries.find((profile) => profile.id === library[`${role}Id`]);
19
- if (!entry)
20
- continue;
21
- state[role] = { selectedId: entry.id, appliedId: entry.id,
22
- overriddenFields: [], invalid: false };
23
- const connection = { provider: entry.provider, model: entry.model, baseUrl: entry.baseUrl };
24
- if (role === 'main') {
25
- // The profile owns the denominator: project BOTH a number and null
26
- // (null = AUTO), so "profile set auto" stays distinguishable from
27
- // "no profile bound" (profile-context-window tradeoff B).
28
- Object.assign(projected, connection, { contextWindow: entry.contextWindow });
29
- }
30
- else {
31
- projected.fast = { ...DEFAULT_CONFIG.fast, ...file.fast, ...connection,
32
- baseUrl: entry.baseUrl ?? '' };
33
- }
34
- }
35
- return { file: projected, state, issues,
36
- mainOwnsContextWindow: state.main.appliedId !== null };
37
- }
38
- /** Derive binding status from current connections, including session/model overrides. */
39
- export function resolveModelProfileState(config, profiles = config.modelProfiles, invalid = false) {
40
- const issues = validateModelProfiles(profiles);
41
- const state = emptyModelProfileState(invalid || issues.length > 0);
42
- if (issues.length || !profiles)
43
- return state;
44
- for (const role of ['main', 'fast']) {
45
- const entry = profiles.entries.find((profile) => profile.id === profiles[`${role}Id`]);
46
- if (!entry)
47
- continue;
48
- const connection = role === 'main' ? config : config.fast;
49
- const changed = ['provider', 'model', 'baseUrl'].filter((field) => field === 'baseUrl'
50
- ? normalizeProfileBaseUrl(connection[field]) !== normalizeProfileBaseUrl(entry[field])
51
- : connection[field] !== entry[field]);
52
- state[role] = { selectedId: entry.id,
53
- appliedId: changed.some((field) => field !== 'model') ? null : entry.id,
54
- overriddenFields: changed, invalid: false };
55
- }
56
- return state;
57
- }
58
- /** Resolve only credentials scoped to the requested role and actual connection target. */
59
- export function resolveModelRoleKey(input) {
60
- const { config, role, providerId } = input;
61
- const shared = config.apiKeys[providerId] || undefined;
62
- const profiles = validateModelProfiles(config.modelProfiles).length
63
- ? undefined : config.modelProfiles;
64
- const profileMode = profiles && (profiles.mainId !== null || profiles.fastId !== null);
65
- if (!profileMode) {
66
- const target = config.apiKeyOverrideTarget;
67
- if (target) {
68
- return role === 'main' && providerId === config.provider
69
- && target.provider === config.provider
70
- && normalizeProfileBaseUrl(target.baseUrl) === normalizeProfileBaseUrl(config.baseUrl)
71
- ? config.apiKeyOverride || shared : shared;
72
- }
73
- return config.apiKeyOverride && providerId === config.provider
74
- ? config.apiKeyOverride : shared;
75
- }
76
- const actualProvider = role === 'main'
77
- ? config.provider : config.fast.provider || config.provider;
78
- if (providerId !== actualProvider)
79
- return shared;
80
- const target = config.apiKeyOverrideTarget;
81
- if (role === 'main' && config.apiKeyOverride && target?.provider === config.provider
82
- && normalizeProfileBaseUrl(target.baseUrl) === normalizeProfileBaseUrl(config.baseUrl)) {
83
- return config.apiKeyOverride;
84
- }
85
- const state = resolveModelProfileState(config)[role];
86
- const entry = profiles.entries.find((profile) => profile.id === state.appliedId);
87
- return entry?.apiKey || shared;
88
- }