@coool/opencode-adaptive 0.0.0-stage → 1.0.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 (440) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -2
  3. package/dist/adapters/codex-capacity/index.d.ts +5 -0
  4. package/dist/adapters/codex-capacity/index.d.ts.map +1 -0
  5. package/dist/adapters/codex-capacity/index.js +5 -0
  6. package/dist/adapters/codex-capacity/index.js.map +1 -0
  7. package/dist/adapters/codex-capacity/parse.d.ts +28 -0
  8. package/dist/adapters/codex-capacity/parse.d.ts.map +1 -0
  9. package/dist/adapters/codex-capacity/parse.js +130 -0
  10. package/dist/adapters/codex-capacity/parse.js.map +1 -0
  11. package/dist/adapters/codex-capacity/reading.d.ts +10 -0
  12. package/dist/adapters/codex-capacity/reading.d.ts.map +1 -0
  13. package/dist/adapters/codex-capacity/reading.js +45 -0
  14. package/dist/adapters/codex-capacity/reading.js.map +1 -0
  15. package/dist/adapters/codex-capacity/sensor.d.ts +24 -0
  16. package/dist/adapters/codex-capacity/sensor.d.ts.map +1 -0
  17. package/dist/adapters/codex-capacity/sensor.js +30 -0
  18. package/dist/adapters/codex-capacity/sensor.js.map +1 -0
  19. package/dist/adapters/codex-capacity/types.d.ts +35 -0
  20. package/dist/adapters/codex-capacity/types.d.ts.map +1 -0
  21. package/dist/adapters/codex-capacity/types.js +4 -0
  22. package/dist/adapters/codex-capacity/types.js.map +1 -0
  23. package/dist/adapters/opencode/escalation-tool.d.ts +52 -0
  24. package/dist/adapters/opencode/escalation-tool.d.ts.map +1 -0
  25. package/dist/adapters/opencode/escalation-tool.js +59 -0
  26. package/dist/adapters/opencode/escalation-tool.js.map +1 -0
  27. package/dist/adapters/opencode/events.d.ts +24 -0
  28. package/dist/adapters/opencode/events.d.ts.map +1 -0
  29. package/dist/adapters/opencode/events.js +68 -0
  30. package/dist/adapters/opencode/events.js.map +1 -0
  31. package/dist/adapters/opencode/hooks.d.ts +35 -0
  32. package/dist/adapters/opencode/hooks.d.ts.map +1 -0
  33. package/dist/adapters/opencode/hooks.js +12 -0
  34. package/dist/adapters/opencode/hooks.js.map +1 -0
  35. package/dist/adapters/opencode/index.d.ts +17 -0
  36. package/dist/adapters/opencode/index.d.ts.map +1 -0
  37. package/dist/adapters/opencode/index.js +9 -0
  38. package/dist/adapters/opencode/index.js.map +1 -0
  39. package/dist/adapters/opencode/inventory.d.ts +31 -0
  40. package/dist/adapters/opencode/inventory.d.ts.map +1 -0
  41. package/dist/adapters/opencode/inventory.js +53 -0
  42. package/dist/adapters/opencode/inventory.js.map +1 -0
  43. package/dist/adapters/opencode/report.d.ts +92 -0
  44. package/dist/adapters/opencode/report.d.ts.map +1 -0
  45. package/dist/adapters/opencode/report.js +145 -0
  46. package/dist/adapters/opencode/report.js.map +1 -0
  47. package/dist/adapters/opencode/session-ops.d.ts +40 -0
  48. package/dist/adapters/opencode/session-ops.d.ts.map +1 -0
  49. package/dist/adapters/opencode/session-ops.js +32 -0
  50. package/dist/adapters/opencode/session-ops.js.map +1 -0
  51. package/dist/adapters/opencode/storage.d.ts +16 -0
  52. package/dist/adapters/opencode/storage.d.ts.map +1 -0
  53. package/dist/adapters/opencode/storage.js +8 -0
  54. package/dist/adapters/opencode/storage.js.map +1 -0
  55. package/dist/adapters/opencode/tier-tool.d.ts +38 -0
  56. package/dist/adapters/opencode/tier-tool.d.ts.map +1 -0
  57. package/dist/adapters/opencode/tier-tool.js +72 -0
  58. package/dist/adapters/opencode/tier-tool.js.map +1 -0
  59. package/dist/adapters/opencode/types.d.ts +102 -0
  60. package/dist/adapters/opencode/types.d.ts.map +1 -0
  61. package/dist/adapters/opencode/types.js +2 -0
  62. package/dist/adapters/opencode/types.js.map +1 -0
  63. package/dist/core/compatibility/gate.d.ts +10 -0
  64. package/dist/core/compatibility/gate.d.ts.map +1 -0
  65. package/dist/core/compatibility/gate.js +55 -0
  66. package/dist/core/compatibility/gate.js.map +1 -0
  67. package/dist/core/compatibility/index.d.ts +3 -0
  68. package/dist/core/compatibility/index.d.ts.map +1 -0
  69. package/dist/core/compatibility/index.js +3 -0
  70. package/dist/core/compatibility/index.js.map +1 -0
  71. package/dist/core/compatibility/types.d.ts +54 -0
  72. package/dist/core/compatibility/types.d.ts.map +1 -0
  73. package/dist/core/compatibility/types.js +27 -0
  74. package/dist/core/compatibility/types.js.map +1 -0
  75. package/dist/core/scheduler/admit.d.ts +7 -0
  76. package/dist/core/scheduler/admit.d.ts.map +1 -0
  77. package/dist/core/scheduler/admit.js +153 -0
  78. package/dist/core/scheduler/admit.js.map +1 -0
  79. package/dist/core/scheduler/escalate.d.ts +7 -0
  80. package/dist/core/scheduler/escalate.d.ts.map +1 -0
  81. package/dist/core/scheduler/escalate.js +56 -0
  82. package/dist/core/scheduler/escalate.js.map +1 -0
  83. package/dist/core/scheduler/index.d.ts +5 -0
  84. package/dist/core/scheduler/index.d.ts.map +1 -0
  85. package/dist/core/scheduler/index.js +5 -0
  86. package/dist/core/scheduler/index.js.map +1 -0
  87. package/dist/core/scheduler/mode.d.ts +9 -0
  88. package/dist/core/scheduler/mode.d.ts.map +1 -0
  89. package/dist/core/scheduler/mode.js +10 -0
  90. package/dist/core/scheduler/mode.js.map +1 -0
  91. package/dist/core/scheduler/types.d.ts +143 -0
  92. package/dist/core/scheduler/types.d.ts.map +1 -0
  93. package/dist/core/scheduler/types.js +74 -0
  94. package/dist/core/scheduler/types.js.map +1 -0
  95. package/dist/core/tier-policy/index.d.ts +4 -0
  96. package/dist/core/tier-policy/index.d.ts.map +1 -0
  97. package/dist/core/tier-policy/index.js +4 -0
  98. package/dist/core/tier-policy/index.js.map +1 -0
  99. package/dist/core/tier-policy/resolve.d.ts +19 -0
  100. package/dist/core/tier-policy/resolve.d.ts.map +1 -0
  101. package/dist/core/tier-policy/resolve.js +52 -0
  102. package/dist/core/tier-policy/resolve.js.map +1 -0
  103. package/dist/core/tier-policy/tier-list.d.ts +11 -0
  104. package/dist/core/tier-policy/tier-list.d.ts.map +1 -0
  105. package/dist/core/tier-policy/tier-list.js +23 -0
  106. package/dist/core/tier-policy/tier-list.js.map +1 -0
  107. package/dist/core/tier-policy/types.d.ts +85 -0
  108. package/dist/core/tier-policy/types.d.ts.map +1 -0
  109. package/dist/core/tier-policy/types.js +45 -0
  110. package/dist/core/tier-policy/types.js.map +1 -0
  111. package/dist/core/work-unit/index.d.ts +4 -0
  112. package/dist/core/work-unit/index.d.ts.map +1 -0
  113. package/dist/core/work-unit/index.js +4 -0
  114. package/dist/core/work-unit/index.js.map +1 -0
  115. package/dist/core/work-unit/interruption.d.ts +8 -0
  116. package/dist/core/work-unit/interruption.d.ts.map +1 -0
  117. package/dist/core/work-unit/interruption.js +12 -0
  118. package/dist/core/work-unit/interruption.js.map +1 -0
  119. package/dist/core/work-unit/tracker.d.ts +46 -0
  120. package/dist/core/work-unit/tracker.d.ts.map +1 -0
  121. package/dist/core/work-unit/tracker.js +136 -0
  122. package/dist/core/work-unit/tracker.js.map +1 -0
  123. package/dist/core/work-unit/types.d.ts +146 -0
  124. package/dist/core/work-unit/types.d.ts.map +1 -0
  125. package/dist/core/work-unit/types.js +23 -0
  126. package/dist/core/work-unit/types.js.map +1 -0
  127. package/dist/execution/continuation/execute.d.ts +19 -0
  128. package/dist/execution/continuation/execute.d.ts.map +1 -0
  129. package/dist/execution/continuation/execute.js +31 -0
  130. package/dist/execution/continuation/execute.js.map +1 -0
  131. package/dist/execution/continuation/index.d.ts +6 -0
  132. package/dist/execution/continuation/index.d.ts.map +1 -0
  133. package/dist/execution/continuation/index.js +5 -0
  134. package/dist/execution/continuation/index.js.map +1 -0
  135. package/dist/execution/continuation/ledger.d.ts +20 -0
  136. package/dist/execution/continuation/ledger.d.ts.map +1 -0
  137. package/dist/execution/continuation/ledger.js +31 -0
  138. package/dist/execution/continuation/ledger.js.map +1 -0
  139. package/dist/execution/continuation/plan.d.ts +13 -0
  140. package/dist/execution/continuation/plan.d.ts.map +1 -0
  141. package/dist/execution/continuation/plan.js +20 -0
  142. package/dist/execution/continuation/plan.js.map +1 -0
  143. package/dist/execution/continuation/prompts.d.ts +8 -0
  144. package/dist/execution/continuation/prompts.d.ts.map +1 -0
  145. package/dist/execution/continuation/prompts.js +8 -0
  146. package/dist/execution/continuation/prompts.js.map +1 -0
  147. package/dist/execution/continuation/types.d.ts +70 -0
  148. package/dist/execution/continuation/types.d.ts.map +1 -0
  149. package/dist/execution/continuation/types.js +15 -0
  150. package/dist/execution/continuation/types.js.map +1 -0
  151. package/dist/execution/escalation/index.d.ts +2 -0
  152. package/dist/execution/escalation/index.d.ts.map +1 -0
  153. package/dist/execution/escalation/index.js +2 -0
  154. package/dist/execution/escalation/index.js.map +1 -0
  155. package/dist/execution/escalation/types.d.ts +31 -0
  156. package/dist/execution/escalation/types.d.ts.map +1 -0
  157. package/dist/execution/escalation/types.js +49 -0
  158. package/dist/execution/escalation/types.js.map +1 -0
  159. package/dist/execution/index.d.ts +5 -0
  160. package/dist/execution/index.d.ts.map +1 -0
  161. package/dist/execution/index.js +5 -0
  162. package/dist/execution/index.js.map +1 -0
  163. package/dist/execution/parking/index.d.ts +3 -0
  164. package/dist/execution/parking/index.d.ts.map +1 -0
  165. package/dist/execution/parking/index.js +2 -0
  166. package/dist/execution/parking/index.js.map +1 -0
  167. package/dist/execution/parking/plan.d.ts +40 -0
  168. package/dist/execution/parking/plan.d.ts.map +1 -0
  169. package/dist/execution/parking/plan.js +34 -0
  170. package/dist/execution/parking/plan.js.map +1 -0
  171. package/dist/execution/recovery/gate.d.ts +20 -0
  172. package/dist/execution/recovery/gate.d.ts.map +1 -0
  173. package/dist/execution/recovery/gate.js +23 -0
  174. package/dist/execution/recovery/gate.js.map +1 -0
  175. package/dist/execution/recovery/index.d.ts +3 -0
  176. package/dist/execution/recovery/index.d.ts.map +1 -0
  177. package/dist/execution/recovery/index.js +2 -0
  178. package/dist/execution/recovery/index.js.map +1 -0
  179. package/dist/execution/retry/decide.d.ts +30 -0
  180. package/dist/execution/retry/decide.d.ts.map +1 -0
  181. package/dist/execution/retry/decide.js +76 -0
  182. package/dist/execution/retry/decide.js.map +1 -0
  183. package/dist/execution/retry/index.d.ts +3 -0
  184. package/dist/execution/retry/index.d.ts.map +1 -0
  185. package/dist/execution/retry/index.js +3 -0
  186. package/dist/execution/retry/index.js.map +1 -0
  187. package/dist/execution/retry/types.d.ts +66 -0
  188. package/dist/execution/retry/types.d.ts.map +1 -0
  189. package/dist/execution/retry/types.js +9 -0
  190. package/dist/execution/retry/types.js.map +1 -0
  191. package/dist/gui-experimental.cjs +1 -0
  192. package/dist/gui.d.ts +17 -0
  193. package/dist/gui.d.ts.map +1 -0
  194. package/dist/gui.js +70 -0
  195. package/dist/gui.js.map +1 -0
  196. package/dist/health/capacity/index.d.ts +4 -0
  197. package/dist/health/capacity/index.d.ts.map +1 -0
  198. package/dist/health/capacity/index.js +4 -0
  199. package/dist/health/capacity/index.js.map +1 -0
  200. package/dist/health/capacity/merge.d.ts +58 -0
  201. package/dist/health/capacity/merge.d.ts.map +1 -0
  202. package/dist/health/capacity/merge.js +154 -0
  203. package/dist/health/capacity/merge.js.map +1 -0
  204. package/dist/health/capacity/registry.d.ts +41 -0
  205. package/dist/health/capacity/registry.d.ts.map +1 -0
  206. package/dist/health/capacity/registry.js +106 -0
  207. package/dist/health/capacity/registry.js.map +1 -0
  208. package/dist/health/capacity/types.d.ts +74 -0
  209. package/dist/health/capacity/types.d.ts.map +1 -0
  210. package/dist/health/capacity/types.js +6 -0
  211. package/dist/health/capacity/types.js.map +1 -0
  212. package/dist/health/circuit-breaker/breaker.d.ts +84 -0
  213. package/dist/health/circuit-breaker/breaker.d.ts.map +1 -0
  214. package/dist/health/circuit-breaker/breaker.js +132 -0
  215. package/dist/health/circuit-breaker/breaker.js.map +1 -0
  216. package/dist/health/circuit-breaker/index.d.ts +3 -0
  217. package/dist/health/circuit-breaker/index.d.ts.map +1 -0
  218. package/dist/health/circuit-breaker/index.js +3 -0
  219. package/dist/health/circuit-breaker/index.js.map +1 -0
  220. package/dist/health/circuit-breaker/types.d.ts +53 -0
  221. package/dist/health/circuit-breaker/types.d.ts.map +1 -0
  222. package/dist/health/circuit-breaker/types.js +13 -0
  223. package/dist/health/circuit-breaker/types.js.map +1 -0
  224. package/dist/health/classifier/classify.d.ts +9 -0
  225. package/dist/health/classifier/classify.d.ts.map +1 -0
  226. package/dist/health/classifier/classify.js +245 -0
  227. package/dist/health/classifier/classify.js.map +1 -0
  228. package/dist/health/classifier/index.d.ts +3 -0
  229. package/dist/health/classifier/index.d.ts.map +1 -0
  230. package/dist/health/classifier/index.js +3 -0
  231. package/dist/health/classifier/index.js.map +1 -0
  232. package/dist/health/classifier/types.d.ts +72 -0
  233. package/dist/health/classifier/types.d.ts.map +1 -0
  234. package/dist/health/classifier/types.js +27 -0
  235. package/dist/health/classifier/types.js.map +1 -0
  236. package/dist/health/index.d.ts +5 -0
  237. package/dist/health/index.d.ts.map +1 -0
  238. package/dist/health/index.js +5 -0
  239. package/dist/health/index.js.map +1 -0
  240. package/dist/health/resource-health/index.d.ts +5 -0
  241. package/dist/health/resource-health/index.d.ts.map +1 -0
  242. package/dist/health/resource-health/index.js +5 -0
  243. package/dist/health/resource-health/index.js.map +1 -0
  244. package/dist/health/resource-health/key.d.ts +19 -0
  245. package/dist/health/resource-health/key.d.ts.map +1 -0
  246. package/dist/health/resource-health/key.js +54 -0
  247. package/dist/health/resource-health/key.js.map +1 -0
  248. package/dist/health/resource-health/registry.d.ts +41 -0
  249. package/dist/health/resource-health/registry.d.ts.map +1 -0
  250. package/dist/health/resource-health/registry.js +258 -0
  251. package/dist/health/resource-health/registry.js.map +1 -0
  252. package/dist/health/resource-health/transitions.d.ts +11 -0
  253. package/dist/health/resource-health/transitions.d.ts.map +1 -0
  254. package/dist/health/resource-health/transitions.js +165 -0
  255. package/dist/health/resource-health/transitions.js.map +1 -0
  256. package/dist/health/resource-health/types.d.ts +116 -0
  257. package/dist/health/resource-health/types.d.ts.map +1 -0
  258. package/dist/health/resource-health/types.js +43 -0
  259. package/dist/health/resource-health/types.js.map +1 -0
  260. package/dist/index.d.ts +17 -0
  261. package/dist/index.d.ts.map +1 -0
  262. package/dist/index.js +80 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/plugin-id.d.ts +3 -0
  265. package/dist/plugin-id.d.ts.map +1 -0
  266. package/dist/plugin-id.js +3 -0
  267. package/dist/plugin-id.js.map +1 -0
  268. package/dist/rpc/definition.d.ts +100 -0
  269. package/dist/rpc/definition.d.ts.map +1 -0
  270. package/dist/rpc/definition.js +104 -0
  271. package/dist/rpc/definition.js.map +1 -0
  272. package/dist/rpc/handlers.d.ts +65 -0
  273. package/dist/rpc/handlers.d.ts.map +1 -0
  274. package/dist/rpc/handlers.js +111 -0
  275. package/dist/rpc/handlers.js.map +1 -0
  276. package/dist/rpc/status.d.ts +43 -0
  277. package/dist/rpc/status.d.ts.map +1 -0
  278. package/dist/rpc/status.js +45 -0
  279. package/dist/rpc/status.js.map +1 -0
  280. package/dist/rpc.d.ts +11 -0
  281. package/dist/rpc.d.ts.map +1 -0
  282. package/dist/rpc.js +8 -0
  283. package/dist/rpc.js.map +1 -0
  284. package/dist/state/capacity/index.d.ts +4 -0
  285. package/dist/state/capacity/index.d.ts.map +1 -0
  286. package/dist/state/capacity/index.js +4 -0
  287. package/dist/state/capacity/index.js.map +1 -0
  288. package/dist/state/capacity/parse.d.ts +3 -0
  289. package/dist/state/capacity/parse.d.ts.map +1 -0
  290. package/dist/state/capacity/parse.js +110 -0
  291. package/dist/state/capacity/parse.js.map +1 -0
  292. package/dist/state/capacity/store.d.ts +19 -0
  293. package/dist/state/capacity/store.d.ts.map +1 -0
  294. package/dist/state/capacity/store.js +64 -0
  295. package/dist/state/capacity/store.js.map +1 -0
  296. package/dist/state/capacity/types.d.ts +38 -0
  297. package/dist/state/capacity/types.d.ts.map +1 -0
  298. package/dist/state/capacity/types.js +11 -0
  299. package/dist/state/capacity/types.js.map +1 -0
  300. package/dist/state/health/index.d.ts +5 -0
  301. package/dist/state/health/index.d.ts.map +1 -0
  302. package/dist/state/health/index.js +4 -0
  303. package/dist/state/health/index.js.map +1 -0
  304. package/dist/state/health/parse.d.ts +3 -0
  305. package/dist/state/health/parse.d.ts.map +1 -0
  306. package/dist/state/health/parse.js +121 -0
  307. package/dist/state/health/parse.js.map +1 -0
  308. package/dist/state/health/store.d.ts +18 -0
  309. package/dist/state/health/store.d.ts.map +1 -0
  310. package/dist/state/health/store.js +55 -0
  311. package/dist/state/health/store.js.map +1 -0
  312. package/dist/state/health/types.d.ts +24 -0
  313. package/dist/state/health/types.d.ts.map +1 -0
  314. package/dist/state/health/types.js +5 -0
  315. package/dist/state/health/types.js.map +1 -0
  316. package/dist/state/parked-work/index.d.ts +5 -0
  317. package/dist/state/parked-work/index.d.ts.map +1 -0
  318. package/dist/state/parked-work/index.js +4 -0
  319. package/dist/state/parked-work/index.js.map +1 -0
  320. package/dist/state/parked-work/parse.d.ts +7 -0
  321. package/dist/state/parked-work/parse.d.ts.map +1 -0
  322. package/dist/state/parked-work/parse.js +83 -0
  323. package/dist/state/parked-work/parse.js.map +1 -0
  324. package/dist/state/parked-work/store.d.ts +18 -0
  325. package/dist/state/parked-work/store.d.ts.map +1 -0
  326. package/dist/state/parked-work/store.js +81 -0
  327. package/dist/state/parked-work/store.js.map +1 -0
  328. package/dist/state/parked-work/types.d.ts +42 -0
  329. package/dist/state/parked-work/types.d.ts.map +1 -0
  330. package/dist/state/parked-work/types.js +7 -0
  331. package/dist/state/parked-work/types.js.map +1 -0
  332. package/dist/state/receipts/bound.d.ts +15 -0
  333. package/dist/state/receipts/bound.d.ts.map +1 -0
  334. package/dist/state/receipts/bound.js +77 -0
  335. package/dist/state/receipts/bound.js.map +1 -0
  336. package/dist/state/receipts/index.d.ts +7 -0
  337. package/dist/state/receipts/index.d.ts.map +1 -0
  338. package/dist/state/receipts/index.js +5 -0
  339. package/dist/state/receipts/index.js.map +1 -0
  340. package/dist/state/receipts/parse.d.ts +7 -0
  341. package/dist/state/receipts/parse.d.ts.map +1 -0
  342. package/dist/state/receipts/parse.js +226 -0
  343. package/dist/state/receipts/parse.js.map +1 -0
  344. package/dist/state/receipts/store.d.ts +35 -0
  345. package/dist/state/receipts/store.d.ts.map +1 -0
  346. package/dist/state/receipts/store.js +128 -0
  347. package/dist/state/receipts/store.js.map +1 -0
  348. package/dist/state/receipts/types.d.ts +62 -0
  349. package/dist/state/receipts/types.d.ts.map +1 -0
  350. package/dist/state/receipts/types.js +12 -0
  351. package/dist/state/receipts/types.js.map +1 -0
  352. package/dist/state/session-modes/index.d.ts +5 -0
  353. package/dist/state/session-modes/index.d.ts.map +1 -0
  354. package/dist/state/session-modes/index.js +4 -0
  355. package/dist/state/session-modes/index.js.map +1 -0
  356. package/dist/state/session-modes/parse.d.ts +9 -0
  357. package/dist/state/session-modes/parse.d.ts.map +1 -0
  358. package/dist/state/session-modes/parse.js +62 -0
  359. package/dist/state/session-modes/parse.js.map +1 -0
  360. package/dist/state/session-modes/store.d.ts +21 -0
  361. package/dist/state/session-modes/store.d.ts.map +1 -0
  362. package/dist/state/session-modes/store.js +73 -0
  363. package/dist/state/session-modes/store.js.map +1 -0
  364. package/dist/state/session-modes/types.d.ts +42 -0
  365. package/dist/state/session-modes/types.d.ts.map +1 -0
  366. package/dist/state/session-modes/types.js +7 -0
  367. package/dist/state/session-modes/types.js.map +1 -0
  368. package/dist/state/settings/index.d.ts +5 -0
  369. package/dist/state/settings/index.d.ts.map +1 -0
  370. package/dist/state/settings/index.js +4 -0
  371. package/dist/state/settings/index.js.map +1 -0
  372. package/dist/state/settings/parse.d.ts +34 -0
  373. package/dist/state/settings/parse.d.ts.map +1 -0
  374. package/dist/state/settings/parse.js +261 -0
  375. package/dist/state/settings/parse.js.map +1 -0
  376. package/dist/state/settings/store.d.ts +22 -0
  377. package/dist/state/settings/store.d.ts.map +1 -0
  378. package/dist/state/settings/store.js +57 -0
  379. package/dist/state/settings/store.js.map +1 -0
  380. package/dist/state/settings/types.d.ts +63 -0
  381. package/dist/state/settings/types.d.ts.map +1 -0
  382. package/dist/state/settings/types.js +12 -0
  383. package/dist/state/settings/types.js.map +1 -0
  384. package/dist/supervisor/index.d.ts +5 -0
  385. package/dist/supervisor/index.d.ts.map +1 -0
  386. package/dist/supervisor/index.js +4 -0
  387. package/dist/supervisor/index.js.map +1 -0
  388. package/dist/supervisor/log.d.ts +11 -0
  389. package/dist/supervisor/log.d.ts.map +1 -0
  390. package/dist/supervisor/log.js +14 -0
  391. package/dist/supervisor/log.js.map +1 -0
  392. package/dist/supervisor/supervisor.d.ts +69 -0
  393. package/dist/supervisor/supervisor.d.ts.map +1 -0
  394. package/dist/supervisor/supervisor.js +1343 -0
  395. package/dist/supervisor/supervisor.js.map +1 -0
  396. package/dist/supervisor/types.d.ts +50 -0
  397. package/dist/supervisor/types.d.ts.map +1 -0
  398. package/dist/supervisor/types.js +3 -0
  399. package/dist/supervisor/types.js.map +1 -0
  400. package/dist/supervisor/view.d.ts +4 -0
  401. package/dist/supervisor/view.d.ts.map +1 -0
  402. package/dist/supervisor/view.js +4 -0
  403. package/dist/supervisor/view.js.map +1 -0
  404. package/dist/tui.d.ts +16 -0
  405. package/dist/tui.d.ts.map +1 -0
  406. package/dist/tui.js +252 -0
  407. package/dist/tui.js.map +1 -0
  408. package/dist/ui/gui/api.d.ts +18 -0
  409. package/dist/ui/gui/api.d.ts.map +1 -0
  410. package/dist/ui/gui/api.js +21 -0
  411. package/dist/ui/gui/api.js.map +1 -0
  412. package/dist/ui/gui/view.d.ts +27 -0
  413. package/dist/ui/gui/view.d.ts.map +1 -0
  414. package/dist/ui/gui/view.js +49 -0
  415. package/dist/ui/gui/view.js.map +1 -0
  416. package/dist/ui/tui/controller.d.ts +98 -0
  417. package/dist/ui/tui/controller.d.ts.map +1 -0
  418. package/dist/ui/tui/controller.js +399 -0
  419. package/dist/ui/tui/controller.js.map +1 -0
  420. package/dist/ui/tui/menu.d.ts +56 -0
  421. package/dist/ui/tui/menu.d.ts.map +1 -0
  422. package/dist/ui/tui/menu.js +176 -0
  423. package/dist/ui/tui/menu.js.map +1 -0
  424. package/dist/ui/tui/options.d.ts +20 -0
  425. package/dist/ui/tui/options.d.ts.map +1 -0
  426. package/dist/ui/tui/options.js +17 -0
  427. package/dist/ui/tui/options.js.map +1 -0
  428. package/dist/ui/tui/receipts.d.ts +22 -0
  429. package/dist/ui/tui/receipts.d.ts.map +1 -0
  430. package/dist/ui/tui/receipts.js +109 -0
  431. package/dist/ui/tui/receipts.js.map +1 -0
  432. package/dist/ui/tui/status.d.ts +23 -0
  433. package/dist/ui/tui/status.d.ts.map +1 -0
  434. package/dist/ui/tui/status.js +90 -0
  435. package/dist/ui/tui/status.js.map +1 -0
  436. package/dist/ui/tui/tiers.d.ts +52 -0
  437. package/dist/ui/tui/tiers.d.ts.map +1 -0
  438. package/dist/ui/tui/tiers.js +108 -0
  439. package/dist/ui/tui/tiers.js.map +1 -0
  440. package/package.json +85 -4
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Bounded shape validation and migration-on-read (ADP-036). Every parser is
3
+ * total: it accepts `unknown` and either returns a typed value or `undefined`
4
+ * — the read path always falls back to a default rather than throwing, so a
5
+ * corrupted record can never take the plugin (or the host) down (ADP-031).
6
+ *
7
+ * Plain objects are never indexed with untrusted strings beyond own-property
8
+ * checks (`Object.hasOwn`) — prototype-chain keys like "toString" must not be
9
+ * mistaken for data (project-wide audit rule).
10
+ */
11
+ import { OPERATING_MODES } from "../../core/scheduler/types.js";
12
+ import { normalizeTierList } from "../../core/tier-policy/tier-list.js";
13
+ import { TIERS } from "../../core/tier-policy/types.js";
14
+ import { MAX_AGENT_TIERS, MAX_TIER_RESOURCES, SETTINGS_VERSION } from "./types.js";
15
+ function isRecord(value) {
16
+ return typeof value === "object" && value !== null && !Array.isArray(value);
17
+ }
18
+ /**
19
+ * Quoted, bounded rendering of an untrusted patch value inside an error
20
+ * message (errors travel to surfaces over RPC; JSON.stringify is only ever
21
+ * called on strings here, so a cyclic object cannot make applyPatch throw).
22
+ */
23
+ function describePatchValue(value) {
24
+ if (typeof value === "string") {
25
+ const quoted = JSON.stringify(value);
26
+ return quoted.length > 64 ? `${quoted.slice(0, 64)}…` : quoted;
27
+ }
28
+ if (value === null)
29
+ return "null";
30
+ if (typeof value === "object")
31
+ return "object";
32
+ if (typeof value === "number" || typeof value === "boolean")
33
+ return String(value);
34
+ return typeof value;
35
+ }
36
+ export function parseMode(raw) {
37
+ if (typeof raw !== "string")
38
+ return undefined;
39
+ return OPERATING_MODES.find((mode) => mode === raw);
40
+ }
41
+ /**
42
+ * Legacy persisted value: v1 settings written before the `control → active`
43
+ * rename store `mode: "control"`. Migration-on-read maps it; patches stay
44
+ * strict (wire input must use the current vocabulary).
45
+ */
46
+ function parseLegacyMode(raw) {
47
+ return raw === "control" ? "active" : parseMode(raw);
48
+ }
49
+ export function parseTierLists(raw) {
50
+ if (!isRecord(raw))
51
+ return undefined;
52
+ const tiers = {};
53
+ for (const tier of TIERS) {
54
+ tiers[tier] = normalizeTierListValue(raw[tier]);
55
+ }
56
+ return tiers;
57
+ }
58
+ /** Shared per-tier normalization (drop invalid, dedupe, cap) for both paths. */
59
+ function normalizeTierListValue(list) {
60
+ return Array.isArray(list)
61
+ ? normalizeTierList(list.map(parseModelRef).filter((ref) => ref !== undefined)).slice(0, MAX_TIER_RESOURCES)
62
+ : [];
63
+ }
64
+ export function parseModelRef(raw) {
65
+ if (!isRecord(raw))
66
+ return undefined;
67
+ const providerID = raw["providerID"];
68
+ const id = raw["id"];
69
+ const variant = raw["variant"];
70
+ if (typeof providerID !== "string" || providerID === "")
71
+ return undefined;
72
+ if (typeof id !== "string" || id === "")
73
+ return undefined;
74
+ return {
75
+ providerID,
76
+ id,
77
+ ...(typeof variant === "string" && variant !== "" ? { variant } : {}),
78
+ };
79
+ }
80
+ export function parsePin(raw) {
81
+ if (raw === null)
82
+ return null;
83
+ return parseModelRef(raw);
84
+ }
85
+ export function parseAgentTiers(raw) {
86
+ if (!isRecord(raw))
87
+ return undefined;
88
+ const entries = [];
89
+ for (const [agent, tier] of Object.entries(raw)) {
90
+ if (agent === "")
91
+ continue;
92
+ const parsed = parseModelessTier(tier);
93
+ if (parsed === undefined)
94
+ continue;
95
+ entries.push([agent, parsed]);
96
+ if (entries.length === MAX_AGENT_TIERS)
97
+ break;
98
+ }
99
+ // `Object.fromEntries` creates own data properties, so even a "__proto__"
100
+ // key from JSON input cannot pollute the prototype here.
101
+ return Object.fromEntries(entries);
102
+ }
103
+ function parseModelessTier(raw) {
104
+ if (typeof raw !== "string")
105
+ return undefined;
106
+ return TIERS.find((tier) => tier === raw);
107
+ }
108
+ /**
109
+ * Patch-path tier-list validation. Unlike the read path (which fills missing
110
+ * or unusable tiers with `[]`), a patch that names `tiers` REPLACES the whole
111
+ * map — silently filling an omitted key with `[]` would wipe that tier's
112
+ * configured resources, so every key must be present and array-typed. List
113
+ * contents still go through the shared normalization (drop invalid, dedupe,
114
+ * cap), which is repair of user-typed entries rather than data loss.
115
+ */
116
+ function parseTierListsPatch(raw) {
117
+ if (!isRecord(raw))
118
+ return { ok: false, error: "invalid tiers" };
119
+ const missing = TIERS.filter((tier) => raw[tier] === undefined);
120
+ if (missing.length > 0) {
121
+ const named = missing.map((tier) => JSON.stringify(tier)).join(", ");
122
+ return { ok: false, error: `invalid tiers: missing ${named}` };
123
+ }
124
+ const tiers = {};
125
+ for (const tier of TIERS) {
126
+ const list = raw[tier];
127
+ if (!Array.isArray(list)) {
128
+ return { ok: false, error: `invalid tiers: ${JSON.stringify(tier)} must be an array` };
129
+ }
130
+ tiers[tier] = normalizeTierListValue(list);
131
+ }
132
+ return { ok: true, value: tiers };
133
+ }
134
+ /**
135
+ * Patch-path agent-tier validation. Unlike the read path (which drops invalid
136
+ * entries as migration-on-read repair), a patch REPLACES the whole map —
137
+ * silently dropping entries would let a single typo wipe the persisted hints,
138
+ * so any invalid entry (and an over-cap patch) is rejected with an error that
139
+ * names the offending field and value.
140
+ */
141
+ function parseAgentTiersPatch(raw) {
142
+ if (!isRecord(raw))
143
+ return { ok: false, error: "invalid agentTiers" };
144
+ const entries = [];
145
+ for (const [agent, tier] of Object.entries(raw)) {
146
+ if (entries.length === MAX_AGENT_TIERS) {
147
+ return {
148
+ ok: false,
149
+ error: `invalid agentTiers: more than ${String(MAX_AGENT_TIERS)} entries`,
150
+ };
151
+ }
152
+ if (agent === "")
153
+ return { ok: false, error: "invalid agentTiers: empty agent name" };
154
+ const parsed = parseModelessTier(tier);
155
+ if (parsed === undefined) {
156
+ return {
157
+ ok: false,
158
+ error: `invalid agentTiers entry ${describePatchValue(agent)}: ${describePatchValue(tier)}`,
159
+ };
160
+ }
161
+ entries.push([agent, parsed]);
162
+ }
163
+ // `Object.fromEntries` creates own data properties, so even a "__proto__"
164
+ // key from JSON input cannot pollute the prototype here.
165
+ return { ok: true, value: Object.fromEntries(entries) };
166
+ }
167
+ /** Settings with nothing configured: OBSERVE, empty tiers, no pin (ADP-029/032). */
168
+ export function defaultSettings() {
169
+ return {
170
+ version: SETTINGS_VERSION,
171
+ mode: "observe",
172
+ tiers: { quick: [], standard: [], advanced: [] },
173
+ pin: null,
174
+ agentTiers: {},
175
+ inviteDismissed: false,
176
+ };
177
+ }
178
+ /**
179
+ * Migration-on-read. `undefined`/absent record → defaults (first install);
180
+ * versionless (v0 draft) and v1 records are validated field-wise with
181
+ * defaults for unusable fields; a record written by a NEWER version is
182
+ * returned as defaults rather than guessed at (and is only re-persisted once
183
+ * the user changes something, which stamps the current version).
184
+ */
185
+ export function migrateSettings(raw) {
186
+ if (!isRecord(raw))
187
+ return defaultSettings();
188
+ const version = raw["version"];
189
+ if (version !== SETTINGS_VERSION && version !== 0 && version !== undefined) {
190
+ return defaultSettings();
191
+ }
192
+ return fieldsFrom(raw);
193
+ }
194
+ function fieldsFrom(raw) {
195
+ const mode = parseLegacyMode(raw["mode"]) ?? "observe";
196
+ const tiers = parseTierLists(raw["tiers"]) ?? defaultSettings().tiers;
197
+ const pin = parsePin(raw["pin"]) ?? null;
198
+ const agentTiers = parseAgentTiers(raw["agentTiers"]) ?? {};
199
+ const inviteDismissed = raw["inviteDismissed"] === true;
200
+ return { version: SETTINGS_VERSION, mode, tiers, pin, agentTiers, inviteDismissed };
201
+ }
202
+ /**
203
+ * Validate a patch against current settings. The patch is WIRE input (unknown
204
+ * by contract — surfaces send untrusted JSON over RPC; the SettingsPatch type
205
+ * documents the expected shape, the field parsers enforce it). Invalid fields
206
+ * collect error strings (at most one per field, five fields); a valid patch
207
+ * produces a NEW settings object (inputs are never mutated).
208
+ */
209
+ export function applyPatch(current, patch) {
210
+ if (!isRecord(patch))
211
+ return { ok: false, errors: ["invalid patch"] };
212
+ const request = patch;
213
+ const errors = [];
214
+ let mode = current.mode;
215
+ let tiers = current.tiers;
216
+ let pin = current.pin;
217
+ let agentTiers = current.agentTiers;
218
+ let inviteDismissed = current.inviteDismissed;
219
+ if (request.mode !== undefined) {
220
+ const parsed = parseMode(request.mode);
221
+ if (parsed === undefined)
222
+ errors.push("invalid mode");
223
+ else
224
+ mode = parsed;
225
+ }
226
+ if (request.tiers !== undefined) {
227
+ const parsed = parseTierListsPatch(request.tiers);
228
+ if (parsed.ok)
229
+ tiers = parsed.value;
230
+ else
231
+ errors.push(parsed.error);
232
+ }
233
+ // `pin === null` is a meaningful clear and must not read as absence.
234
+ if (request.pin !== undefined) {
235
+ const parsed = parsePin(request.pin);
236
+ if (parsed === undefined)
237
+ errors.push("invalid pin");
238
+ else
239
+ pin = parsed;
240
+ }
241
+ if (request.agentTiers !== undefined) {
242
+ const parsed = parseAgentTiersPatch(request.agentTiers);
243
+ if (parsed.ok)
244
+ agentTiers = parsed.value;
245
+ else
246
+ errors.push(parsed.error);
247
+ }
248
+ if (request.inviteDismissed !== undefined) {
249
+ if (typeof request.inviteDismissed !== "boolean")
250
+ errors.push("invalid inviteDismissed");
251
+ else
252
+ inviteDismissed = request.inviteDismissed;
253
+ }
254
+ if (errors.length > 0)
255
+ return { ok: false, errors };
256
+ return {
257
+ ok: true,
258
+ settings: { version: SETTINGS_VERSION, mode, tiers, pin, agentTiers, inviteDismissed },
259
+ };
260
+ }
261
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/state/settings/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { PatchResult, SettingsPatch, SettingsStorage, SettingsV1 } from "./types.js";
2
+ export declare class SettingsStore {
3
+ #private;
4
+ private readonly storage;
5
+ constructor(storage: SettingsStorage);
6
+ /** Current snapshot (defaults until the first successful load). */
7
+ get(): SettingsV1;
8
+ /**
9
+ * Read + migrate the persisted record. A storage read failure degrades to
10
+ * defaults instead of breaking setup; the record is not rewritten here, so
11
+ * a later successful patch simply re-stamps the current version.
12
+ */
13
+ load(): Promise<SettingsV1>;
14
+ /**
15
+ * Validate, persist, then adopt. Invalid patches change nothing. Updates
16
+ * serialize through a promise chain so two concurrent callers cannot both
17
+ * patch the same base snapshot and lose one write (the chain swallows
18
+ * rejections — a failed update must not poison the next one).
19
+ */
20
+ update(patch: SettingsPatch): Promise<PatchResult>;
21
+ }
22
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/state/settings/store.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGzF,qBAAa,aAAa;;IAKZ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAErD,mEAAmE;IACnE,GAAG,IAAI,UAAU;IAIjB;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAWjC;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;CAWnD"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Settings store (ADP-036): the server-side single source of truth. Loads
3
+ * once at setup (migration-on-read), serves synchronous snapshots to the
4
+ * scheduler, and persists validated patches. Reads fail open to defaults
5
+ * (ADP-031); write failures propagate to the caller so surfaces can report
6
+ * them — the in-memory snapshot is only advanced after a successful write.
7
+ */
8
+ import { applyPatch, migrateSettings } from "./parse.js";
9
+ import { defaultSettings } from "./parse.js";
10
+ export class SettingsStore {
11
+ storage;
12
+ #current = defaultSettings();
13
+ /** Tail of the update chain; keeps awaiting updates serialized. */
14
+ #queue = Promise.resolve();
15
+ constructor(storage) {
16
+ this.storage = storage;
17
+ }
18
+ /** Current snapshot (defaults until the first successful load). */
19
+ get() {
20
+ return this.#current;
21
+ }
22
+ /**
23
+ * Read + migrate the persisted record. A storage read failure degrades to
24
+ * defaults instead of breaking setup; the record is not rewritten here, so
25
+ * a later successful patch simply re-stamps the current version.
26
+ */
27
+ async load() {
28
+ let raw;
29
+ try {
30
+ raw = await this.storage.read();
31
+ }
32
+ catch {
33
+ raw = undefined;
34
+ }
35
+ this.#current = migrateSettings(raw);
36
+ return this.#current;
37
+ }
38
+ /**
39
+ * Validate, persist, then adopt. Invalid patches change nothing. Updates
40
+ * serialize through a promise chain so two concurrent callers cannot both
41
+ * patch the same base snapshot and lose one write (the chain swallows
42
+ * rejections — a failed update must not poison the next one).
43
+ */
44
+ update(patch) {
45
+ const run = this.#queue.then(async () => {
46
+ const result = applyPatch(this.#current, patch);
47
+ if (!result.ok)
48
+ return result;
49
+ await this.storage.write(result.settings);
50
+ this.#current = result.settings;
51
+ return result;
52
+ });
53
+ this.#queue = run.catch(() => undefined);
54
+ return run;
55
+ }
56
+ }
57
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/state/settings/store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,OAAO,aAAa;IAKK;IAJ7B,QAAQ,GAAe,eAAe,EAAE,CAAA;IACxC,mEAAmE;IACnE,MAAM,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAA;IAE5C,YAA6B,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEzD,mEAAmE;IACnE,GAAG;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,GAAY,CAAA;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,GAAG,SAAS,CAAA;QACjB,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAoB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACtC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAA;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACzC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;YAC/B,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACxC,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Durable settings (ADP-036): versioned, migrated on read, persisted through
3
+ * `ctx.storage` under a single key. The server plugin owns the store; TUI and
4
+ * GUI surfaces only read snapshots and send patches (ADP-034/036).
5
+ */
6
+ import type { OperatingMode } from "../../core/scheduler/types.js";
7
+ import type { TierName } from "../../core/tier-policy/types.js";
8
+ import type { ModelRef } from "../../core/work-unit/types.js";
9
+ /** Storage key for the settings record (see architecture "Persistence ownership"). */
10
+ export declare const SETTINGS_KEY = "coool.adaptive/settings";
11
+ /** Current settings schema version. */
12
+ export declare const SETTINGS_VERSION = 1;
13
+ /**
14
+ * Product bounds, not user knobs: they keep a hostile or buggy write from
15
+ * growing state without limit. (Patch error lists need no cap: at most one
16
+ * error per field, and the patch has five fields.)
17
+ */
18
+ export declare const MAX_TIER_RESOURCES = 32;
19
+ export declare const MAX_AGENT_TIERS = 64;
20
+ export interface SettingsV1 {
21
+ readonly version: typeof SETTINGS_VERSION;
22
+ /** OFF does nothing; OBSERVE is the safe default after install (ADP-029/032). */
23
+ readonly mode: OperatingMode;
24
+ /** Ordered per-tier resource lists; order is user policy and never reordered (ADP-005). */
25
+ readonly tiers: Readonly<Record<TierName, readonly ModelRef[]>>;
26
+ /**
27
+ * Global explicit user pin. `null` = no pin. A pin names a concrete model
28
+ * and outranks every other routing input (ADP-002).
29
+ */
30
+ readonly pin: ModelRef | null;
31
+ /** User-configured agent → tier hints (role level of the ladder, ADP-002). */
32
+ readonly agentTiers: Readonly<Record<string, TierName>>;
33
+ /** First-install invitation dismissed (ADP-032: shown once, never nagged). */
34
+ readonly inviteDismissed: boolean;
35
+ }
36
+ /**
37
+ * Partial update as sent by surfaces over RPC. Field absence means "leave
38
+ * unchanged"; `pin: null` explicitly clears the pin.
39
+ */
40
+ export interface SettingsPatch {
41
+ readonly mode?: OperatingMode | undefined;
42
+ readonly tiers?: Readonly<Record<TierName, readonly ModelRef[]>> | undefined;
43
+ readonly pin?: ModelRef | null | undefined;
44
+ readonly agentTiers?: Readonly<Record<string, TierName>> | undefined;
45
+ readonly inviteDismissed?: boolean | undefined;
46
+ }
47
+ export type PatchResult = {
48
+ readonly ok: true;
49
+ readonly settings: SettingsV1;
50
+ } | {
51
+ readonly ok: false;
52
+ readonly errors: readonly string[];
53
+ };
54
+ /**
55
+ * Narrow storage seam so the store stays decoupled from `@opencode/plugin`
56
+ * (only `adapters/opencode` may touch the host API). The adapter binds the
57
+ * settings key and translates `ctx.storage`.
58
+ */
59
+ export interface SettingsStorage {
60
+ read(): Promise<unknown>;
61
+ write(settings: SettingsV1): Promise<void>;
62
+ }
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/state/settings/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAE7D,sFAAsF;AACtF,eAAO,MAAM,YAAY,4BAA4B,CAAA;AAErD,uCAAuC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAA;AACpC,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,gBAAgB,CAAA;IACzC,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC/D;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IACvD,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAA;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;IACpE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC/C;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GACpD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC,CAAA;AAEL;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C"}
@@ -0,0 +1,12 @@
1
+ /** Storage key for the settings record (see architecture "Persistence ownership"). */
2
+ export const SETTINGS_KEY = "coool.adaptive/settings";
3
+ /** Current settings schema version. */
4
+ export const SETTINGS_VERSION = 1;
5
+ /**
6
+ * Product bounds, not user knobs: they keep a hostile or buggy write from
7
+ * growing state without limit. (Patch error lists need no cap: at most one
8
+ * error per field, and the patch has five fields.)
9
+ */
10
+ export const MAX_TIER_RESOURCES = 32;
11
+ export const MAX_AGENT_TIERS = 64;
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/state/settings/types.ts"],"names":[],"mappings":"AASA,sFAAsF;AACtF,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CAAA;AAErD,uCAAuC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAEjC;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { LOG_ERROR_LENGTH, logFailOpen } from "./log.js";
2
+ export { Supervisor } from "./supervisor.js";
3
+ export { CODEX_PROVIDER_ID } from "./types.js";
4
+ export type { RetryHookInput, SupervisorOptions, SupervisorSessionSource } from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { LOG_ERROR_LENGTH, logFailOpen } from "./log.js";
2
+ export { Supervisor } from "./supervisor.js";
3
+ export { CODEX_PROVIDER_ID } from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Fail-open logging (ADP-031). The supervisor never throws from its public
3
+ * entry points; unexpected failures are logged with a bounded scope line and
4
+ * swallowed. Logging is the degradation path, not a channel for secrets —
5
+ * only the error's string form, bounded, is emitted.
6
+ */
7
+ /** Bound for the logged error text (bounded diagnostics, ADP-030 spirit). */
8
+ export declare const LOG_ERROR_LENGTH = 200;
9
+ /** Log one swallowed internal failure under the plugin's namespace. */
10
+ export declare function logFailOpen(scope: string, error: unknown): void;
11
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/supervisor/log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAG/D"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Fail-open logging (ADP-031). The supervisor never throws from its public
3
+ * entry points; unexpected failures are logged with a bounded scope line and
4
+ * swallowed. Logging is the degradation path, not a channel for secrets —
5
+ * only the error's string form, bounded, is emitted.
6
+ */
7
+ /** Bound for the logged error text (bounded diagnostics, ADP-030 spirit). */
8
+ export const LOG_ERROR_LENGTH = 200;
9
+ /** Log one swallowed internal failure under the plugin's namespace. */
10
+ export function logFailOpen(scope, error) {
11
+ const detail = String(error).slice(0, LOG_ERROR_LENGTH);
12
+ console.error(`[coool.adaptive] ${scope}: ${detail}`);
13
+ }
14
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/supervisor/log.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAEnC,uEAAuE;AACvE,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,KAAc;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;IACvD,OAAO,CAAC,KAAK,CAAC,oBAAoB,KAAK,KAAK,MAAM,EAAE,CAAC,CAAA;AACvD,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { TierName } from "../core/tier-policy/types.js";
2
+ import type { OperatingMode } from "../core/scheduler/types.js";
3
+ import type { SettingsV1 } from "../state/settings/index.js";
4
+ import type { PatchResult, SettingsPatch } from "../state/settings/types.js";
5
+ import type { Receipt } from "../state/receipts/types.js";
6
+ import type { StatusSnapshot } from "../rpc/status.js";
7
+ import type { EventReport } from "../adapters/opencode/index.js";
8
+ import type { RetryHookInput, SupervisorOptions } from "./types.js";
9
+ export declare class Supervisor {
10
+ #private;
11
+ /** Last agent observed per session (role-hint routing evidence, ADP-002). */
12
+ static readonly MAX_AGENT_HINTS = 1024;
13
+ /**
14
+ * Per-session tier requests (agent-declared via the adaptive_tier tool):
15
+ * the request is STICKY — it steers the session's next and following
16
+ * admissions until cleared or the session dies — because an agent works
17
+ * across many units in one task. Insertion order gives the eviction.
18
+ */
19
+ static readonly MAX_TIER_REQUESTS = 1024;
20
+ constructor(options: SupervisorOptions);
21
+ /** Handle one host report (event pump or session hook). */
22
+ handleReport(report: EventReport): Promise<void>;
23
+ /**
24
+ * Handle one `retry` hook invocation. On a veto this mutates
25
+ * `input.decision` to `{ retry: false }`; otherwise the decision is left
26
+ * untouched and OpenCode's native retry policy stands.
27
+ */
28
+ handleRetry(input: RetryHookInput): Promise<void>;
29
+ /**
30
+ * Record an escalation-tool request (ADP-015 agent self-report) against the
31
+ * session's current work unit. Returns false when no unit is active — the
32
+ * request is then discarded (escalation is a per-unit signal).
33
+ */
34
+ noteEscalationRequest(sessionID: string, reason: string, evidence: string): boolean;
35
+ /**
36
+ * Record an agent-declared tier request for the session (the adaptive_tier
37
+ * tool). STICKY: it steers the session's next and following admissions
38
+ * until cleared — an agent works across many units in one task. Returns
39
+ * false on an unknown tier (the tool re-validates before calling).
40
+ */
41
+ noteTierRequest(sessionID: string, tier: string): boolean;
42
+ /** The session's tier request, or `null` when it follows the routing ladder. */
43
+ getTierRequest(sessionID: string): Promise<TierName | null>;
44
+ /** Clear one session's tier request (`null` is the only valid input). */
45
+ setTierRequest(sessionID: string, tier: TierName | null): Promise<void>;
46
+ /** Current settings (awaits the constructor load). */
47
+ settings(): Promise<SettingsV1>;
48
+ /** Validate and persist a settings patch; returns per-field errors. */
49
+ updateSettings(patch: SettingsPatch): Promise<PatchResult>;
50
+ /** The session's mode override, or `null` when it follows the global mode. */
51
+ getSessionMode(sessionID: string): Promise<OperatingMode | null>;
52
+ /**
53
+ * Persist one session's mode override (`null` clears it). Throws on write
54
+ * failure — the RPC handler degrades that to an error patch result
55
+ * (fail-open, ADP-031), while the routing path never calls this.
56
+ */
57
+ setSessionMode(sessionID: string, mode: OperatingMode | null): Promise<void>;
58
+ /**
59
+ * Bounded status snapshot for the status view (ADP-033). Health is read
60
+ * from the persisted record set (not the in-memory registry): the serving
61
+ * instance's registry can be empty when the host's plugin reconciliation
62
+ * placed the event-pump hooks on another instance, while the persisted
63
+ * mirror is shared by every instance.
64
+ */
65
+ status(): Promise<StatusSnapshot>;
66
+ /** Newest-first bounded receipt view (ADP-030). */
67
+ receipts(): Promise<Receipt[]>;
68
+ }
69
+ //# sourceMappingURL=supervisor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/supervisor/supervisor.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAQ7E,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,4BAA4B,CAAA;AAwBnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG5E,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,4BAA4B,CAAA;AAEvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AActD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAGhE,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAiCnE,qBAAa,UAAU;;IAiBrB,6EAA6E;IAI7E,MAAM,CAAC,QAAQ,CAAC,eAAe,QAAO;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,QAAO;gBAiD5B,OAAO,EAAE,iBAAiB;IA0GtC,2DAA2D;IACrD,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAetD;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD;;;;OAIG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYnF;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAiBzD,gFAAgF;IAC1E,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAKjE,yEAAyE;IACnE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7E,sDAAsD;IAChD,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAIrC,uEAAuE;IACjE,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAKhE,8EAA8E;IACxE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKtE;;;;OAIG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlF;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IA8BvC,mDAAmD;IAC7C,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CA86BrC"}