@relay-harness/coding-agent 0.0.0-stage → 1.0.2

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 (1297) hide show
  1. package/CHANGELOG.md +6111 -0
  2. package/README.md +80 -2
  3. package/dist/bun/cli.d.ts +5 -0
  4. package/dist/bun/cli.d.ts.map +1 -0
  5. package/dist/bun/cli.js +5 -0
  6. package/dist/bun/cli.js.map +1 -0
  7. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  8. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  9. package/dist/bun/restore-sandbox-env.js +36 -0
  10. package/dist/bun/restore-sandbox-env.js.map +1 -0
  11. package/dist/bun/runtime-setup.d.ts +2 -0
  12. package/dist/bun/runtime-setup.d.ts.map +1 -0
  13. package/dist/bun/runtime-setup.js +12 -0
  14. package/dist/bun/runtime-setup.js.map +1 -0
  15. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  16. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  17. package/dist/bun/sandbox-env-setup.js +4 -0
  18. package/dist/bun/sandbox-env-setup.js.map +1 -0
  19. package/dist/bundle/chunks/anthropic-messages-TXWUAW5N.js +6 -0
  20. package/dist/bundle/chunks/anthropic.js +75 -0
  21. package/dist/bundle/chunks/azure-openai-responses-EJG46ESA.js +2 -0
  22. package/dist/bundle/chunks/bedrock-converse-stream.js +83 -0
  23. package/dist/bundle/chunks/chunk-3QND5D7W.js +82 -0
  24. package/dist/bundle/chunks/chunk-3XNI2SB6.js +15 -0
  25. package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
  26. package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
  27. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  28. package/dist/bundle/chunks/chunk-A3JYRWB6.js +2 -0
  29. package/dist/bundle/chunks/chunk-C47CLQZK.js +2 -0
  30. package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
  31. package/dist/bundle/chunks/chunk-EQ2HXQGJ.js +2 -0
  32. package/dist/bundle/chunks/chunk-F5ZABL6Z.js +20 -0
  33. package/dist/bundle/chunks/chunk-H3QXYIF7.js +31 -0
  34. package/dist/bundle/chunks/chunk-H6S6DQTM.js +2 -0
  35. package/dist/bundle/chunks/chunk-ISNO4JTR.js +127 -0
  36. package/dist/bundle/chunks/chunk-KJUDFE6Y.js +11 -0
  37. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  38. package/dist/bundle/chunks/chunk-LD2P6SFZ.js +2 -0
  39. package/dist/bundle/chunks/chunk-MP5FU7MG.js +20 -0
  40. package/dist/bundle/chunks/chunk-O7R77OAK.js +2 -0
  41. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  42. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  43. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  44. package/dist/bundle/chunks/chunk-PTRF7IZB.js +2 -0
  45. package/dist/bundle/chunks/chunk-RZ4KG4BP.js +44 -0
  46. package/dist/bundle/chunks/chunk-S3GGRYIO.js +6 -0
  47. package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
  48. package/dist/bundle/chunks/chunk-TRDNDS6A.js +4 -0
  49. package/dist/bundle/chunks/chunk-USJZMAIR.js +2 -0
  50. package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
  51. package/dist/bundle/chunks/chunk-WMTXXI7H.js +4 -0
  52. package/dist/bundle/chunks/chunk-XDAWU2J5.js +132 -0
  53. package/dist/bundle/chunks/chunk-XSLAMYCK.js +1297 -0
  54. package/dist/bundle/chunks/chunk-Z2G7KLPH.js +11 -0
  55. package/dist/bundle/chunks/cli-K4CNHWOI.js +51 -0
  56. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-NM3JRRWQ.js +2 -0
  57. package/dist/bundle/chunks/codemode-worker.js +374 -0
  58. package/dist/bundle/chunks/easter-egg-3d-TGRCIHA4.js +2 -0
  59. package/dist/bundle/chunks/execute-6E5DA2QI.js +388 -0
  60. package/dist/bundle/chunks/github-copilot.js +2 -0
  61. package/dist/bundle/chunks/google-generative-ai-HYUNEOCJ.js +2 -0
  62. package/dist/bundle/chunks/google-vertex-J7MDGTNM.js +2 -0
  63. package/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
  64. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  65. package/dist/bundle/chunks/jiti-loader-C3NU2SDH.js +21 -0
  66. package/dist/bundle/chunks/jiti-static-loader-E6ANQD5T.js +2 -0
  67. package/dist/bundle/chunks/kimi-coding.js +2 -0
  68. package/dist/bundle/chunks/lib-TEDK3E5I.js +9 -0
  69. package/dist/bundle/chunks/llama-cpp-classify-XT44PI3C.js +22 -0
  70. package/dist/bundle/chunks/meta.js +2 -0
  71. package/dist/bundle/chunks/mistral-conversations-UD2HHXKZ.js +5 -0
  72. package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
  73. package/dist/bundle/chunks/node-N5BSDOA5.js +16 -0
  74. package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
  75. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  76. package/dist/bundle/chunks/openai-codex-responses-EMHXEJR4.js +10 -0
  77. package/dist/bundle/chunks/openai-codex.js +75 -0
  78. package/dist/bundle/chunks/openai-completions-LPKRZYMC.js +7 -0
  79. package/dist/bundle/chunks/openai-responses-TOOBRHUV.js +3 -0
  80. package/dist/bundle/chunks/openrouter-images-ZVXWCSIM.js +2 -0
  81. package/dist/bundle/chunks/openrouter.js +75 -0
  82. package/dist/bundle/chunks/relay-messages-QRFJXG5X.js +8 -0
  83. package/dist/bundle/chunks/runtime-O5HLCH3V.js +2 -0
  84. package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
  85. package/dist/bundle/chunks/typesafe-system-one-PRR5K6CI.js +2 -0
  86. package/dist/bundle/chunks/virtual-modules-FNVEVB65.js +2 -0
  87. package/dist/bundle/chunks/xai.js +2 -0
  88. package/dist/bundle/cli-runtime.js +3 -0
  89. package/dist/bundle/cli.js +5 -0
  90. package/dist/bundle/index.js +2 -0
  91. package/dist/bundle/rpc-entry.js +3 -0
  92. package/dist/cli/args.d.ts +61 -0
  93. package/dist/cli/args.d.ts.map +1 -0
  94. package/dist/cli/args.js +454 -0
  95. package/dist/cli/args.js.map +1 -0
  96. package/dist/cli/auth-check.d.ts +19 -0
  97. package/dist/cli/auth-check.d.ts.map +1 -0
  98. package/dist/cli/auth-check.js +50 -0
  99. package/dist/cli/auth-check.js.map +1 -0
  100. package/dist/cli/auth-command.d.ts +24 -0
  101. package/dist/cli/auth-command.d.ts.map +1 -0
  102. package/dist/cli/auth-command.js +103 -0
  103. package/dist/cli/auth-command.js.map +1 -0
  104. package/dist/cli/config-selector.d.ts +16 -0
  105. package/dist/cli/config-selector.d.ts.map +1 -0
  106. package/dist/cli/config-selector.js +32 -0
  107. package/dist/cli/config-selector.js.map +1 -0
  108. package/dist/cli/credential-print.d.ts +13 -0
  109. package/dist/cli/credential-print.d.ts.map +1 -0
  110. package/dist/cli/credential-print.js +76 -0
  111. package/dist/cli/credential-print.js.map +1 -0
  112. package/dist/cli/file-processor.d.ts +15 -0
  113. package/dist/cli/file-processor.d.ts.map +1 -0
  114. package/dist/cli/file-processor.js +71 -0
  115. package/dist/cli/file-processor.js.map +1 -0
  116. package/dist/cli/initial-message.d.ts +18 -0
  117. package/dist/cli/initial-message.d.ts.map +1 -0
  118. package/dist/cli/initial-message.js +22 -0
  119. package/dist/cli/initial-message.js.map +1 -0
  120. package/dist/cli/list-models.d.ts +9 -0
  121. package/dist/cli/list-models.d.ts.map +1 -0
  122. package/dist/cli/list-models.js +98 -0
  123. package/dist/cli/list-models.js.map +1 -0
  124. package/dist/cli/project-trust.d.ts +10 -0
  125. package/dist/cli/project-trust.d.ts.map +1 -0
  126. package/dist/cli/project-trust.js +48 -0
  127. package/dist/cli/project-trust.js.map +1 -0
  128. package/dist/cli/session-picker.d.ts +10 -0
  129. package/dist/cli/session-picker.d.ts.map +1 -0
  130. package/dist/cli/session-picker.js +36 -0
  131. package/dist/cli/session-picker.js.map +1 -0
  132. package/dist/cli/setup.d.ts +2 -0
  133. package/dist/cli/setup.d.ts.map +1 -0
  134. package/dist/cli/setup.js +12 -0
  135. package/dist/cli/setup.js.map +1 -0
  136. package/dist/cli/startup-ui.d.ts +20 -0
  137. package/dist/cli/startup-ui.d.ts.map +1 -0
  138. package/dist/cli/startup-ui.js +193 -0
  139. package/dist/cli/startup-ui.js.map +1 -0
  140. package/dist/cli.d.ts +3 -0
  141. package/dist/cli.d.ts.map +1 -0
  142. package/dist/cli.js +6 -0
  143. package/dist/cli.js.map +1 -0
  144. package/dist/config.d.ts +108 -0
  145. package/dist/config.d.ts.map +1 -0
  146. package/dist/config.js +264 -0
  147. package/dist/config.js.map +1 -0
  148. package/dist/core/agent-session-runtime.d.ts +119 -0
  149. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  150. package/dist/core/agent-session-runtime.js +317 -0
  151. package/dist/core/agent-session-runtime.js.map +1 -0
  152. package/dist/core/agent-session-services.d.ts +86 -0
  153. package/dist/core/agent-session-services.d.ts.map +1 -0
  154. package/dist/core/agent-session-services.js +147 -0
  155. package/dist/core/agent-session-services.js.map +1 -0
  156. package/dist/core/agent-session.d.ts +891 -0
  157. package/dist/core/agent-session.d.ts.map +1 -0
  158. package/dist/core/agent-session.js +3553 -0
  159. package/dist/core/agent-session.js.map +1 -0
  160. package/dist/core/auth-guidance.d.ts +5 -0
  161. package/dist/core/auth-guidance.d.ts.map +1 -0
  162. package/dist/core/auth-guidance.js +21 -0
  163. package/dist/core/auth-guidance.js.map +1 -0
  164. package/dist/core/auth-storage.d.ts +72 -0
  165. package/dist/core/auth-storage.d.ts.map +1 -0
  166. package/dist/core/auth-storage.js +426 -0
  167. package/dist/core/auth-storage.js.map +1 -0
  168. package/dist/core/bash-executor.d.ts +32 -0
  169. package/dist/core/bash-executor.d.ts.map +1 -0
  170. package/dist/core/bash-executor.js +106 -0
  171. package/dist/core/bash-executor.js.map +1 -0
  172. package/dist/core/bug-report.d.ts +176 -0
  173. package/dist/core/bug-report.d.ts.map +1 -0
  174. package/dist/core/bug-report.js +292 -0
  175. package/dist/core/bug-report.js.map +1 -0
  176. package/dist/core/cache-stats.d.ts +49 -0
  177. package/dist/core/cache-stats.d.ts.map +1 -0
  178. package/dist/core/cache-stats.js +112 -0
  179. package/dist/core/cache-stats.js.map +1 -0
  180. package/dist/core/cache-warmer.d.ts +103 -0
  181. package/dist/core/cache-warmer.d.ts.map +1 -0
  182. package/dist/core/cache-warmer.js +356 -0
  183. package/dist/core/cache-warmer.js.map +1 -0
  184. package/dist/core/compaction/branch-summarization.d.ts +98 -0
  185. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  186. package/dist/core/compaction/branch-summarization.js +251 -0
  187. package/dist/core/compaction/branch-summarization.js.map +1 -0
  188. package/dist/core/compaction/compaction.d.ts +145 -0
  189. package/dist/core/compaction/compaction.d.ts.map +1 -0
  190. package/dist/core/compaction/compaction.js +744 -0
  191. package/dist/core/compaction/compaction.js.map +1 -0
  192. package/dist/core/compaction/index.d.ts +7 -0
  193. package/dist/core/compaction/index.d.ts.map +1 -0
  194. package/dist/core/compaction/index.js +7 -0
  195. package/dist/core/compaction/index.js.map +1 -0
  196. package/dist/core/compaction/utils.d.ts +39 -0
  197. package/dist/core/compaction/utils.d.ts.map +1 -0
  198. package/dist/core/compaction/utils.js +149 -0
  199. package/dist/core/compaction/utils.js.map +1 -0
  200. package/dist/core/crash-log.d.ts +27 -0
  201. package/dist/core/crash-log.d.ts.map +1 -0
  202. package/dist/core/crash-log.js +140 -0
  203. package/dist/core/crash-log.js.map +1 -0
  204. package/dist/core/defaults.d.ts +4 -0
  205. package/dist/core/defaults.d.ts.map +1 -0
  206. package/dist/core/defaults.js +11 -0
  207. package/dist/core/defaults.js.map +1 -0
  208. package/dist/core/diagnostics.d.ts +15 -0
  209. package/dist/core/diagnostics.d.ts.map +1 -0
  210. package/dist/core/diagnostics.js +2 -0
  211. package/dist/core/diagnostics.js.map +1 -0
  212. package/dist/core/event-bus.d.ts +9 -0
  213. package/dist/core/event-bus.d.ts.map +1 -0
  214. package/dist/core/event-bus.js +25 -0
  215. package/dist/core/event-bus.js.map +1 -0
  216. package/dist/core/exec.d.ts +29 -0
  217. package/dist/core/exec.d.ts.map +1 -0
  218. package/dist/core/exec.js +75 -0
  219. package/dist/core/exec.js.map +1 -0
  220. package/dist/core/experimental.d.ts +2 -0
  221. package/dist/core/experimental.d.ts.map +1 -0
  222. package/dist/core/experimental.js +4 -0
  223. package/dist/core/experimental.js.map +1 -0
  224. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  225. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  226. package/dist/core/export-html/ansi-to-html.js +249 -0
  227. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  228. package/dist/core/export-html/index.d.ts +37 -0
  229. package/dist/core/export-html/index.d.ts.map +1 -0
  230. package/dist/core/export-html/index.js +226 -0
  231. package/dist/core/export-html/index.js.map +1 -0
  232. package/dist/core/export-html/template.css +1076 -0
  233. package/dist/core/export-html/template.html +55 -0
  234. package/dist/core/export-html/template.js +1918 -0
  235. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  236. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  237. package/dist/core/export-html/tool-renderer.js +108 -0
  238. package/dist/core/export-html/tool-renderer.js.map +1 -0
  239. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  240. package/dist/core/export-html/vendor/marked.min.js +78 -0
  241. package/dist/core/extensions/index.d.ts +12 -0
  242. package/dist/core/extensions/index.d.ts.map +1 -0
  243. package/dist/core/extensions/index.js +9 -0
  244. package/dist/core/extensions/index.js.map +1 -0
  245. package/dist/core/extensions/jiti-loader.d.ts +2 -0
  246. package/dist/core/extensions/jiti-loader.d.ts.map +1 -0
  247. package/dist/core/extensions/jiti-loader.js +4 -0
  248. package/dist/core/extensions/jiti-loader.js.map +1 -0
  249. package/dist/core/extensions/jiti-static-loader.d.ts +2 -0
  250. package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -0
  251. package/dist/core/extensions/jiti-static-loader.js +4 -0
  252. package/dist/core/extensions/jiti-static-loader.js.map +1 -0
  253. package/dist/core/extensions/loader.d.ts +23 -0
  254. package/dist/core/extensions/loader.d.ts.map +1 -0
  255. package/dist/core/extensions/loader.js +701 -0
  256. package/dist/core/extensions/loader.js.map +1 -0
  257. package/dist/core/extensions/runner.d.ts +213 -0
  258. package/dist/core/extensions/runner.d.ts.map +1 -0
  259. package/dist/core/extensions/runner.js +1239 -0
  260. package/dist/core/extensions/runner.js.map +1 -0
  261. package/dist/core/extensions/types.d.ts +1720 -0
  262. package/dist/core/extensions/types.d.ts.map +1 -0
  263. package/dist/core/extensions/types.js +48 -0
  264. package/dist/core/extensions/types.js.map +1 -0
  265. package/dist/core/extensions/virtual-modules.d.ts +3 -0
  266. package/dist/core/extensions/virtual-modules.d.ts.map +1 -0
  267. package/dist/core/extensions/virtual-modules.js +38 -0
  268. package/dist/core/extensions/virtual-modules.js.map +1 -0
  269. package/dist/core/extensions/wrapper.d.ts +20 -0
  270. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  271. package/dist/core/extensions/wrapper.js +22 -0
  272. package/dist/core/extensions/wrapper.js.map +1 -0
  273. package/dist/core/footer-data-provider.d.ts +64 -0
  274. package/dist/core/footer-data-provider.d.ts.map +1 -0
  275. package/dist/core/footer-data-provider.js +338 -0
  276. package/dist/core/footer-data-provider.js.map +1 -0
  277. package/dist/core/harness-core.d.ts +50 -0
  278. package/dist/core/harness-core.d.ts.map +1 -0
  279. package/dist/core/harness-core.js +240 -0
  280. package/dist/core/harness-core.js.map +1 -0
  281. package/dist/core/http-dispatcher.d.ts +22 -0
  282. package/dist/core/http-dispatcher.d.ts.map +1 -0
  283. package/dist/core/http-dispatcher.js +98 -0
  284. package/dist/core/http-dispatcher.js.map +1 -0
  285. package/dist/core/index.d.ts +14 -0
  286. package/dist/core/index.d.ts.map +1 -0
  287. package/dist/core/index.js +13 -0
  288. package/dist/core/index.js.map +1 -0
  289. package/dist/core/keybindings.d.ts +428 -0
  290. package/dist/core/keybindings.d.ts.map +1 -0
  291. package/dist/core/keybindings.js +321 -0
  292. package/dist/core/keybindings.js.map +1 -0
  293. package/dist/core/mcp-servers.d.ts +125 -0
  294. package/dist/core/mcp-servers.d.ts.map +1 -0
  295. package/dist/core/mcp-servers.js +198 -0
  296. package/dist/core/mcp-servers.js.map +1 -0
  297. package/dist/core/messages.d.ts +77 -0
  298. package/dist/core/messages.d.ts.map +1 -0
  299. package/dist/core/messages.js +124 -0
  300. package/dist/core/messages.js.map +1 -0
  301. package/dist/core/model-config.d.ts +759 -0
  302. package/dist/core/model-config.d.ts.map +1 -0
  303. package/dist/core/model-config.js +293 -0
  304. package/dist/core/model-config.js.map +1 -0
  305. package/dist/core/model-registry.d.ts +63 -0
  306. package/dist/core/model-registry.d.ts.map +1 -0
  307. package/dist/core/model-registry.js +144 -0
  308. package/dist/core/model-registry.js.map +1 -0
  309. package/dist/core/model-resolver.d.ts +124 -0
  310. package/dist/core/model-resolver.d.ts.map +1 -0
  311. package/dist/core/model-resolver.js +589 -0
  312. package/dist/core/model-resolver.js.map +1 -0
  313. package/dist/core/model-runtime.d.ts +142 -0
  314. package/dist/core/model-runtime.d.ts.map +1 -0
  315. package/dist/core/model-runtime.js +732 -0
  316. package/dist/core/model-runtime.js.map +1 -0
  317. package/dist/core/models-store.d.ts +22 -0
  318. package/dist/core/models-store.d.ts.map +1 -0
  319. package/dist/core/models-store.js +115 -0
  320. package/dist/core/models-store.js.map +1 -0
  321. package/dist/core/nested-tool-calls.d.ts +102 -0
  322. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  323. package/dist/core/nested-tool-calls.js +178 -0
  324. package/dist/core/nested-tool-calls.js.map +1 -0
  325. package/dist/core/output-guard.d.ts +7 -0
  326. package/dist/core/output-guard.d.ts.map +1 -0
  327. package/dist/core/output-guard.js +89 -0
  328. package/dist/core/output-guard.js.map +1 -0
  329. package/dist/core/package-manager.d.ts +217 -0
  330. package/dist/core/package-manager.d.ts.map +1 -0
  331. package/dist/core/package-manager.js +2224 -0
  332. package/dist/core/package-manager.js.map +1 -0
  333. package/dist/core/project-trust.d.ts +15 -0
  334. package/dist/core/project-trust.d.ts.map +1 -0
  335. package/dist/core/project-trust.js +59 -0
  336. package/dist/core/project-trust.js.map +1 -0
  337. package/dist/core/prompt-templates.d.ts +59 -0
  338. package/dist/core/prompt-templates.d.ts.map +1 -0
  339. package/dist/core/prompt-templates.js +262 -0
  340. package/dist/core/prompt-templates.js.map +1 -0
  341. package/dist/core/provider-attribution.d.ts +4 -0
  342. package/dist/core/provider-attribution.d.ts.map +1 -0
  343. package/dist/core/provider-attribution.js +72 -0
  344. package/dist/core/provider-attribution.js.map +1 -0
  345. package/dist/core/provider-composer.d.ts +80 -0
  346. package/dist/core/provider-composer.d.ts.map +1 -0
  347. package/dist/core/provider-composer.js +484 -0
  348. package/dist/core/provider-composer.js.map +1 -0
  349. package/dist/core/relay-manifest.d.ts +8 -0
  350. package/dist/core/relay-manifest.d.ts.map +1 -0
  351. package/dist/core/relay-manifest.js +26 -0
  352. package/dist/core/relay-manifest.js.map +1 -0
  353. package/dist/core/resolve-config-value.d.ts +30 -0
  354. package/dist/core/resolve-config-value.d.ts.map +1 -0
  355. package/dist/core/resolve-config-value.js +247 -0
  356. package/dist/core/resolve-config-value.js.map +1 -0
  357. package/dist/core/resource-loader.d.ts +227 -0
  358. package/dist/core/resource-loader.d.ts.map +1 -0
  359. package/dist/core/resource-loader.js +1005 -0
  360. package/dist/core/resource-loader.js.map +1 -0
  361. package/dist/core/runtime-credentials.d.ts +15 -0
  362. package/dist/core/runtime-credentials.d.ts.map +1 -0
  363. package/dist/core/runtime-credentials.js +39 -0
  364. package/dist/core/runtime-credentials.js.map +1 -0
  365. package/dist/core/sdk.d.ts +108 -0
  366. package/dist/core/sdk.d.ts.map +1 -0
  367. package/dist/core/sdk.js +315 -0
  368. package/dist/core/sdk.js.map +1 -0
  369. package/dist/core/session-cwd.d.ts +19 -0
  370. package/dist/core/session-cwd.d.ts.map +1 -0
  371. package/dist/core/session-cwd.js +38 -0
  372. package/dist/core/session-cwd.js.map +1 -0
  373. package/dist/core/session-export.d.ts +8 -0
  374. package/dist/core/session-export.d.ts.map +1 -0
  375. package/dist/core/session-export.js +33 -0
  376. package/dist/core/session-export.js.map +1 -0
  377. package/dist/core/session-manager.d.ts +416 -0
  378. package/dist/core/session-manager.d.ts.map +1 -0
  379. package/dist/core/session-manager.js +1523 -0
  380. package/dist/core/session-manager.js.map +1 -0
  381. package/dist/core/settings-diagnostics.d.ts +9 -0
  382. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  383. package/dist/core/settings-diagnostics.js +21 -0
  384. package/dist/core/settings-diagnostics.js.map +1 -0
  385. package/dist/core/settings-manager.d.ts +421 -0
  386. package/dist/core/settings-manager.d.ts.map +1 -0
  387. package/dist/core/settings-manager.js +1120 -0
  388. package/dist/core/settings-manager.js.map +1 -0
  389. package/dist/core/skills.d.ts +60 -0
  390. package/dist/core/skills.d.ts.map +1 -0
  391. package/dist/core/skills.js +408 -0
  392. package/dist/core/skills.js.map +1 -0
  393. package/dist/core/slash-commands.d.ts +15 -0
  394. package/dist/core/slash-commands.d.ts.map +1 -0
  395. package/dist/core/slash-commands.js +29 -0
  396. package/dist/core/slash-commands.js.map +1 -0
  397. package/dist/core/source-info.d.ts +26 -0
  398. package/dist/core/source-info.d.ts.map +1 -0
  399. package/dist/core/source-info.js +35 -0
  400. package/dist/core/source-info.js.map +1 -0
  401. package/dist/core/system-prompt.d.ts +71 -0
  402. package/dist/core/system-prompt.d.ts.map +1 -0
  403. package/dist/core/system-prompt.js +147 -0
  404. package/dist/core/system-prompt.js.map +1 -0
  405. package/dist/core/telemetry.d.ts +3 -0
  406. package/dist/core/telemetry.d.ts.map +1 -0
  407. package/dist/core/telemetry.js +9 -0
  408. package/dist/core/telemetry.js.map +1 -0
  409. package/dist/core/timings.d.ts +10 -0
  410. package/dist/core/timings.d.ts.map +1 -0
  411. package/dist/core/timings.js +41 -0
  412. package/dist/core/timings.js.map +1 -0
  413. package/dist/core/tools/bash.d.ts +100 -0
  414. package/dist/core/tools/bash.d.ts.map +1 -0
  415. package/dist/core/tools/bash.js +333 -0
  416. package/dist/core/tools/bash.js.map +1 -0
  417. package/dist/core/tools/edit-diff.d.ts +101 -0
  418. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  419. package/dist/core/tools/edit-diff.js +421 -0
  420. package/dist/core/tools/edit-diff.js.map +1 -0
  421. package/dist/core/tools/edit.d.ts +44 -0
  422. package/dist/core/tools/edit.d.ts.map +1 -0
  423. package/dist/core/tools/edit.js +147 -0
  424. package/dist/core/tools/edit.js.map +1 -0
  425. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  426. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  427. package/dist/core/tools/file-mutation-queue.js +52 -0
  428. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  429. package/dist/core/tools/find.d.ts +42 -0
  430. package/dist/core/tools/find.d.ts.map +1 -0
  431. package/dist/core/tools/find.js +251 -0
  432. package/dist/core/tools/find.js.map +1 -0
  433. package/dist/core/tools/grep.d.ts +41 -0
  434. package/dist/core/tools/grep.d.ts.map +1 -0
  435. package/dist/core/tools/grep.js +252 -0
  436. package/dist/core/tools/grep.js.map +1 -0
  437. package/dist/core/tools/index.d.ts +43 -0
  438. package/dist/core/tools/index.d.ts.map +1 -0
  439. package/dist/core/tools/index.js +129 -0
  440. package/dist/core/tools/index.js.map +1 -0
  441. package/dist/core/tools/ls.d.ts +41 -0
  442. package/dist/core/tools/ls.d.ts.map +1 -0
  443. package/dist/core/tools/ls.js +126 -0
  444. package/dist/core/tools/ls.js.map +1 -0
  445. package/dist/core/tools/output-accumulator.d.ts +63 -0
  446. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  447. package/dist/core/tools/output-accumulator.js +214 -0
  448. package/dist/core/tools/output-accumulator.js.map +1 -0
  449. package/dist/core/tools/path-utils.d.ts +10 -0
  450. package/dist/core/tools/path-utils.d.ts.map +1 -0
  451. package/dist/core/tools/path-utils.js +99 -0
  452. package/dist/core/tools/path-utils.js.map +1 -0
  453. package/dist/core/tools/powershell.d.ts +16 -0
  454. package/dist/core/tools/powershell.d.ts.map +1 -0
  455. package/dist/core/tools/powershell.js +39 -0
  456. package/dist/core/tools/powershell.js.map +1 -0
  457. package/dist/core/tools/read.d.ts +42 -0
  458. package/dist/core/tools/read.d.ts.map +1 -0
  459. package/dist/core/tools/read.js +169 -0
  460. package/dist/core/tools/read.js.map +1 -0
  461. package/dist/core/tools/render-utils.d.ts +30 -0
  462. package/dist/core/tools/render-utils.d.ts.map +1 -0
  463. package/dist/core/tools/render-utils.js +91 -0
  464. package/dist/core/tools/render-utils.js.map +1 -0
  465. package/dist/core/tools/renderers/bash.d.ts +12 -0
  466. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  467. package/dist/core/tools/renderers/bash.js +117 -0
  468. package/dist/core/tools/renderers/bash.js.map +1 -0
  469. package/dist/core/tools/renderers/edit.d.ts +23 -0
  470. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  471. package/dist/core/tools/renderers/edit.js +167 -0
  472. package/dist/core/tools/renderers/edit.js.map +1 -0
  473. package/dist/core/tools/renderers/find.d.ts +10 -0
  474. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  475. package/dist/core/tools/renderers/find.js +64 -0
  476. package/dist/core/tools/renderers/find.js.map +1 -0
  477. package/dist/core/tools/renderers/grep.d.ts +10 -0
  478. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  479. package/dist/core/tools/renderers/grep.js +69 -0
  480. package/dist/core/tools/renderers/grep.js.map +1 -0
  481. package/dist/core/tools/renderers/index.d.ts +28 -0
  482. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  483. package/dist/core/tools/renderers/index.js +47 -0
  484. package/dist/core/tools/renderers/index.js.map +1 -0
  485. package/dist/core/tools/renderers/ls.d.ts +10 -0
  486. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  487. package/dist/core/tools/renderers/ls.js +58 -0
  488. package/dist/core/tools/renderers/ls.js.map +1 -0
  489. package/dist/core/tools/renderers/read.d.ts +11 -0
  490. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  491. package/dist/core/tools/renderers/read.js +130 -0
  492. package/dist/core/tools/renderers/read.js.map +1 -0
  493. package/dist/core/tools/renderers/write.d.ts +10 -0
  494. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  495. package/dist/core/tools/renderers/write.js +153 -0
  496. package/dist/core/tools/renderers/write.js.map +1 -0
  497. package/dist/core/tools/tool-definition-wrapper.d.ts +16 -0
  498. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  499. package/dist/core/tools/tool-definition-wrapper.js +38 -0
  500. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  501. package/dist/core/tools/truncate.d.ts +84 -0
  502. package/dist/core/tools/truncate.d.ts.map +1 -0
  503. package/dist/core/tools/truncate.js +244 -0
  504. package/dist/core/tools/truncate.js.map +1 -0
  505. package/dist/core/tools/write.d.ts +30 -0
  506. package/dist/core/tools/write.d.ts.map +1 -0
  507. package/dist/core/tools/write.js +61 -0
  508. package/dist/core/tools/write.js.map +1 -0
  509. package/dist/core/trust-manager.d.ts +36 -0
  510. package/dist/core/trust-manager.d.ts.map +1 -0
  511. package/dist/core/trust-manager.js +204 -0
  512. package/dist/core/trust-manager.js.map +1 -0
  513. package/dist/core/usage-totals.d.ts +21 -0
  514. package/dist/core/usage-totals.d.ts.map +1 -0
  515. package/dist/core/usage-totals.js +79 -0
  516. package/dist/core/usage-totals.js.map +1 -0
  517. package/dist/core/virtual-models.d.ts +117 -0
  518. package/dist/core/virtual-models.d.ts.map +1 -0
  519. package/dist/core/virtual-models.js +124 -0
  520. package/dist/core/virtual-models.js.map +1 -0
  521. package/dist/core/workspace-probe.d.ts +8 -0
  522. package/dist/core/workspace-probe.d.ts.map +1 -0
  523. package/dist/core/workspace-probe.js +65 -0
  524. package/dist/core/workspace-probe.js.map +1 -0
  525. package/dist/extensions/codemode/execute.d.ts +16 -0
  526. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  527. package/dist/extensions/codemode/execute.js +577 -0
  528. package/dist/extensions/codemode/execute.js.map +1 -0
  529. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  530. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  531. package/dist/extensions/codemode/execute.lazy.js +3 -0
  532. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  533. package/dist/extensions/codemode/index.d.ts +21 -0
  534. package/dist/extensions/codemode/index.d.ts.map +1 -0
  535. package/dist/extensions/codemode/index.js +31 -0
  536. package/dist/extensions/codemode/index.js.map +1 -0
  537. package/dist/extensions/codemode/renderer.d.ts +12 -0
  538. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  539. package/dist/extensions/codemode/renderer.js +137 -0
  540. package/dist/extensions/codemode/renderer.js.map +1 -0
  541. package/dist/extensions/codemode/tool.d.ts +123 -0
  542. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  543. package/dist/extensions/codemode/tool.js +268 -0
  544. package/dist/extensions/codemode/tool.js.map +1 -0
  545. package/dist/extensions/codemode/worker.d.ts +7 -0
  546. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  547. package/dist/extensions/codemode/worker.js +7 -0
  548. package/dist/extensions/codemode/worker.js.map +1 -0
  549. package/dist/extensions/index.d.ts +3 -0
  550. package/dist/extensions/index.d.ts.map +1 -0
  551. package/dist/extensions/index.js +19 -0
  552. package/dist/extensions/index.js.map +1 -0
  553. package/dist/extensions/intake/docx.d.ts +42 -0
  554. package/dist/extensions/intake/docx.d.ts.map +1 -0
  555. package/dist/extensions/intake/docx.js +148 -0
  556. package/dist/extensions/intake/docx.js.map +1 -0
  557. package/dist/extensions/intake/index.d.ts +17 -0
  558. package/dist/extensions/intake/index.d.ts.map +1 -0
  559. package/dist/extensions/intake/index.js +88 -0
  560. package/dist/extensions/intake/index.js.map +1 -0
  561. package/dist/extensions/intake/prompt.d.ts +6 -0
  562. package/dist/extensions/intake/prompt.d.ts.map +1 -0
  563. package/dist/extensions/intake/prompt.js +41 -0
  564. package/dist/extensions/intake/prompt.js.map +1 -0
  565. package/dist/extensions/intake/questionnaire.d.ts +84 -0
  566. package/dist/extensions/intake/questionnaire.d.ts.map +1 -0
  567. package/dist/extensions/intake/questionnaire.js +472 -0
  568. package/dist/extensions/intake/questionnaire.js.map +1 -0
  569. package/dist/extensions/laya/assessment.d.ts +34 -0
  570. package/dist/extensions/laya/assessment.d.ts.map +1 -0
  571. package/dist/extensions/laya/assessment.js +171 -0
  572. package/dist/extensions/laya/assessment.js.map +1 -0
  573. package/dist/extensions/laya/index.d.ts +34 -0
  574. package/dist/extensions/laya/index.d.ts.map +1 -0
  575. package/dist/extensions/laya/index.js +516 -0
  576. package/dist/extensions/laya/index.js.map +1 -0
  577. package/dist/extensions/laya/model-manifest.d.ts +7 -0
  578. package/dist/extensions/laya/model-manifest.d.ts.map +1 -0
  579. package/dist/extensions/laya/model-manifest.js +48 -0
  580. package/dist/extensions/laya/model-manifest.js.map +1 -0
  581. package/dist/extensions/laya/policy.d.ts +130 -0
  582. package/dist/extensions/laya/policy.d.ts.map +1 -0
  583. package/dist/extensions/laya/policy.js +222 -0
  584. package/dist/extensions/laya/policy.js.map +1 -0
  585. package/dist/extensions/laya/questions.d.ts +60 -0
  586. package/dist/extensions/laya/questions.d.ts.map +1 -0
  587. package/dist/extensions/laya/questions.js +189 -0
  588. package/dist/extensions/laya/questions.js.map +1 -0
  589. package/dist/extensions/laya/routers.d.ts +17 -0
  590. package/dist/extensions/laya/routers.d.ts.map +1 -0
  591. package/dist/extensions/laya/routers.js +119 -0
  592. package/dist/extensions/laya/routers.js.map +1 -0
  593. package/dist/extensions/laya/runtime.d.ts +68 -0
  594. package/dist/extensions/laya/runtime.d.ts.map +1 -0
  595. package/dist/extensions/laya/runtime.js +179 -0
  596. package/dist/extensions/laya/runtime.js.map +1 -0
  597. package/dist/extensions/laya/seed.d.ts +39 -0
  598. package/dist/extensions/laya/seed.d.ts.map +1 -0
  599. package/dist/extensions/laya/seed.js +358 -0
  600. package/dist/extensions/laya/seed.js.map +1 -0
  601. package/dist/extensions/laya/server.d.ts +26 -0
  602. package/dist/extensions/laya/server.d.ts.map +1 -0
  603. package/dist/extensions/laya/server.js +117 -0
  604. package/dist/extensions/laya/server.js.map +1 -0
  605. package/dist/extensions/laya/telemetry.d.ts +94 -0
  606. package/dist/extensions/laya/telemetry.d.ts.map +1 -0
  607. package/dist/extensions/laya/telemetry.js +107 -0
  608. package/dist/extensions/laya/telemetry.js.map +1 -0
  609. package/dist/extensions/llama/client.d.ts +69 -0
  610. package/dist/extensions/llama/client.d.ts.map +1 -0
  611. package/dist/extensions/llama/client.js +313 -0
  612. package/dist/extensions/llama/client.js.map +1 -0
  613. package/dist/extensions/llama/huggingface.d.ts +23 -0
  614. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  615. package/dist/extensions/llama/huggingface.js +141 -0
  616. package/dist/extensions/llama/huggingface.js.map +1 -0
  617. package/dist/extensions/llama/index.d.ts +3 -0
  618. package/dist/extensions/llama/index.d.ts.map +1 -0
  619. package/dist/extensions/llama/index.js +219 -0
  620. package/dist/extensions/llama/index.js.map +1 -0
  621. package/dist/extensions/llama/provider.d.ts +12 -0
  622. package/dist/extensions/llama/provider.d.ts.map +1 -0
  623. package/dist/extensions/llama/provider.js +213 -0
  624. package/dist/extensions/llama/provider.js.map +1 -0
  625. package/dist/extensions/llama/ui.d.ts +42 -0
  626. package/dist/extensions/llama/ui.d.ts.map +1 -0
  627. package/dist/extensions/llama/ui.js +416 -0
  628. package/dist/extensions/llama/ui.js.map +1 -0
  629. package/dist/extensions/mcp/cli.d.ts +21 -0
  630. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  631. package/dist/extensions/mcp/cli.js +503 -0
  632. package/dist/extensions/mcp/cli.js.map +1 -0
  633. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  634. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  635. package/dist/extensions/mcp/cli.lazy.js +3 -0
  636. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  637. package/dist/extensions/mcp/config.d.ts +84 -0
  638. package/dist/extensions/mcp/config.d.ts.map +1 -0
  639. package/dist/extensions/mcp/config.js +194 -0
  640. package/dist/extensions/mcp/config.js.map +1 -0
  641. package/dist/extensions/mcp/index.d.ts +79 -0
  642. package/dist/extensions/mcp/index.d.ts.map +1 -0
  643. package/dist/extensions/mcp/index.js +1101 -0
  644. package/dist/extensions/mcp/index.js.map +1 -0
  645. package/dist/extensions/mcp/log.d.ts +16 -0
  646. package/dist/extensions/mcp/log.d.ts.map +1 -0
  647. package/dist/extensions/mcp/log.js +66 -0
  648. package/dist/extensions/mcp/log.js.map +1 -0
  649. package/dist/extensions/mcp/oauth.d.ts +98 -0
  650. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  651. package/dist/extensions/mcp/oauth.js +366 -0
  652. package/dist/extensions/mcp/oauth.js.map +1 -0
  653. package/dist/extensions/mcp/resources.d.ts +43 -0
  654. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  655. package/dist/extensions/mcp/resources.js +262 -0
  656. package/dist/extensions/mcp/resources.js.map +1 -0
  657. package/dist/extensions/mcp/runtime.d.ts +98 -0
  658. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  659. package/dist/extensions/mcp/runtime.js +395 -0
  660. package/dist/extensions/mcp/runtime.js.map +1 -0
  661. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  662. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  663. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  664. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  665. package/dist/extensions/mcp/tools.d.ts +86 -0
  666. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  667. package/dist/extensions/mcp/tools.js +252 -0
  668. package/dist/extensions/mcp/tools.js.map +1 -0
  669. package/dist/extensions/mcp/ui.d.ts +60 -0
  670. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  671. package/dist/extensions/mcp/ui.js +178 -0
  672. package/dist/extensions/mcp/ui.js.map +1 -0
  673. package/dist/extensions/tool-search/index.d.ts +12 -0
  674. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  675. package/dist/extensions/tool-search/index.js +15 -0
  676. package/dist/extensions/tool-search/index.js.map +1 -0
  677. package/dist/extensions/tool-search/tool.d.ts +73 -0
  678. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  679. package/dist/extensions/tool-search/tool.js +189 -0
  680. package/dist/extensions/tool-search/tool.js.map +1 -0
  681. package/dist/index.d.ts +44 -0
  682. package/dist/index.d.ts.map +1 -0
  683. package/dist/index.js +53 -0
  684. package/dist/index.js.map +1 -0
  685. package/dist/main.d.ts +16 -0
  686. package/dist/main.d.ts.map +1 -0
  687. package/dist/main.js +820 -0
  688. package/dist/main.js.map +1 -0
  689. package/dist/migrations.d.ts +33 -0
  690. package/dist/migrations.d.ts.map +1 -0
  691. package/dist/migrations.js +282 -0
  692. package/dist/migrations.js.map +1 -0
  693. package/dist/modes/index.d.ts +10 -0
  694. package/dist/modes/index.d.ts.map +1 -0
  695. package/dist/modes/index.js +8 -0
  696. package/dist/modes/index.js.map +1 -0
  697. package/dist/modes/interactive/assets/clankolas.png +0 -0
  698. package/dist/modes/interactive/bug-report.d.ts +16 -0
  699. package/dist/modes/interactive/bug-report.d.ts.map +1 -0
  700. package/dist/modes/interactive/bug-report.js +171 -0
  701. package/dist/modes/interactive/bug-report.js.map +1 -0
  702. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  703. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  704. package/dist/modes/interactive/chat-viewport.js +28 -0
  705. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  706. package/dist/modes/interactive/components/armin.d.ts +37 -0
  707. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  708. package/dist/modes/interactive/components/armin.js +335 -0
  709. package/dist/modes/interactive/components/armin.js.map +1 -0
  710. package/dist/modes/interactive/components/assistant-message.d.ts +26 -0
  711. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  712. package/dist/modes/interactive/components/assistant-message.js +158 -0
  713. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  714. package/dist/modes/interactive/components/auth-url.d.ts +14 -0
  715. package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
  716. package/dist/modes/interactive/components/auth-url.js +37 -0
  717. package/dist/modes/interactive/components/auth-url.js.map +1 -0
  718. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  719. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  720. package/dist/modes/interactive/components/bash-execution.js +175 -0
  721. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  722. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  723. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  724. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  725. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  726. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  727. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  728. package/dist/modes/interactive/components/branch-summary-message.js +51 -0
  729. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  730. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  731. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  732. package/dist/modes/interactive/components/compaction-summary-message.js +52 -0
  733. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  734. package/dist/modes/interactive/components/config-selector.d.ts +102 -0
  735. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  736. package/dist/modes/interactive/components/config-selector.js +771 -0
  737. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  738. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  739. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  740. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  741. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  742. package/dist/modes/interactive/components/custom-editor.d.ts +30 -0
  743. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  744. package/dist/modes/interactive/components/custom-editor.js +115 -0
  745. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  746. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  747. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  748. package/dist/modes/interactive/components/custom-entry.js +52 -0
  749. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  750. package/dist/modes/interactive/components/custom-message.d.ts +22 -0
  751. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  752. package/dist/modes/interactive/components/custom-message.js +87 -0
  753. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  754. package/dist/modes/interactive/components/diff.d.ts +12 -0
  755. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  756. package/dist/modes/interactive/components/diff.js +133 -0
  757. package/dist/modes/interactive/components/diff.js.map +1 -0
  758. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  759. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  760. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  761. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  762. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  763. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  764. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  765. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  766. package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
  767. package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
  768. package/dist/modes/interactive/components/easter-egg-3d.js +1141 -0
  769. package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
  770. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
  771. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
  772. package/dist/modes/interactive/components/easter-egg-3d.lazy.js +23 -0
  773. package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
  774. package/dist/modes/interactive/components/extension-editor.d.ts +24 -0
  775. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  776. package/dist/modes/interactive/components/extension-editor.js +103 -0
  777. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  778. package/dist/modes/interactive/components/extension-input.d.ts +25 -0
  779. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  780. package/dist/modes/interactive/components/extension-input.js +67 -0
  781. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  782. package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
  783. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  784. package/dist/modes/interactive/components/extension-selector.js +87 -0
  785. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  786. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  787. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  788. package/dist/modes/interactive/components/first-time-setup.js +109 -0
  789. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  790. package/dist/modes/interactive/components/footer.d.ts +39 -0
  791. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  792. package/dist/modes/interactive/components/footer.js +265 -0
  793. package/dist/modes/interactive/components/footer.js.map +1 -0
  794. package/dist/modes/interactive/components/index.d.ts +33 -0
  795. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  796. package/dist/modes/interactive/components/index.js +34 -0
  797. package/dist/modes/interactive/components/index.js.map +1 -0
  798. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  799. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  800. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  801. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  802. package/dist/modes/interactive/components/login-dialog.d.ts +54 -0
  803. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  804. package/dist/modes/interactive/components/login-dialog.js +194 -0
  805. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  806. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  807. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  808. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  809. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  810. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  811. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  812. package/dist/modes/interactive/components/mermaid.js +75 -0
  813. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  814. package/dist/modes/interactive/components/model-selector.d.ts +60 -0
  815. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  816. package/dist/modes/interactive/components/model-selector.js +361 -0
  817. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  818. package/dist/modes/interactive/components/oauth-selector.d.ts +39 -0
  819. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  820. package/dist/modes/interactive/components/oauth-selector.js +166 -0
  821. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  822. package/dist/modes/interactive/components/relay-logo.d.ts +22 -0
  823. package/dist/modes/interactive/components/relay-logo.d.ts.map +1 -0
  824. package/dist/modes/interactive/components/relay-logo.js +63 -0
  825. package/dist/modes/interactive/components/relay-logo.js.map +1 -0
  826. package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
  827. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  828. package/dist/modes/interactive/components/scoped-models-selector.js +326 -0
  829. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  830. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  831. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  832. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  833. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  834. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  835. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  836. package/dist/modes/interactive/components/session-selector.js +893 -0
  837. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  838. package/dist/modes/interactive/components/settings-selector.d.ts +96 -0
  839. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  840. package/dist/modes/interactive/components/settings-selector.js +742 -0
  841. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  842. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  843. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  844. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  845. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  846. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  847. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  848. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  849. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  850. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  851. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  852. package/dist/modes/interactive/components/skill-invocation-message.js +54 -0
  853. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  854. package/dist/modes/interactive/components/status-indicator.d.ts +30 -0
  855. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  856. package/dist/modes/interactive/components/status-indicator.js +67 -0
  857. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  858. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  859. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  860. package/dist/modes/interactive/components/theme-selector.js +50 -0
  861. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  862. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  863. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  864. package/dist/modes/interactive/components/themed-text.js +29 -0
  865. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  866. package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
  867. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  868. package/dist/modes/interactive/components/thinking-selector.js +109 -0
  869. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  870. package/dist/modes/interactive/components/tool-execution.d.ts +68 -0
  871. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  872. package/dist/modes/interactive/components/tool-execution.js +314 -0
  873. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  874. package/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  875. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  876. package/dist/modes/interactive/components/tree-selector.js +1254 -0
  877. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  878. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  879. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  880. package/dist/modes/interactive/components/trust-selector.js +91 -0
  881. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  882. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  883. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  884. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  885. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  886. package/dist/modes/interactive/components/user-message.d.ts +16 -0
  887. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  888. package/dist/modes/interactive/components/user-message.js +50 -0
  889. package/dist/modes/interactive/components/user-message.js.map +1 -0
  890. package/dist/modes/interactive/components/visual-truncate.d.ts +48 -0
  891. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  892. package/dist/modes/interactive/components/visual-truncate.js +66 -0
  893. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  894. package/dist/modes/interactive/external-editor.d.ts +12 -0
  895. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  896. package/dist/modes/interactive/external-editor.js +38 -0
  897. package/dist/modes/interactive/external-editor.js.map +1 -0
  898. package/dist/modes/interactive/interactive-mode.d.ts +482 -0
  899. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  900. package/dist/modes/interactive/interactive-mode.js +5861 -0
  901. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  902. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  903. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  904. package/dist/modes/interactive/model-catalog-refresh.js +34 -0
  905. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  906. package/dist/modes/interactive/model-search.d.ts +12 -0
  907. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  908. package/dist/modes/interactive/model-search.js +15 -0
  909. package/dist/modes/interactive/model-search.js.map +1 -0
  910. package/dist/modes/interactive/session-share.d.ts +16 -0
  911. package/dist/modes/interactive/session-share.d.ts.map +1 -0
  912. package/dist/modes/interactive/session-share.js +119 -0
  913. package/dist/modes/interactive/session-share.js.map +1 -0
  914. package/dist/modes/interactive/theme/dark.json +78 -0
  915. package/dist/modes/interactive/theme/light.json +78 -0
  916. package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
  917. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  918. package/dist/modes/interactive/theme/system-theme.js +546 -0
  919. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  920. package/dist/modes/interactive/theme/theme-controller.d.ts +81 -0
  921. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  922. package/dist/modes/interactive/theme/theme-controller.js +210 -0
  923. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  924. package/dist/modes/interactive/theme/theme-json.d.ts +85 -0
  925. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
  926. package/dist/modes/interactive/theme/theme-json.js +132 -0
  927. package/dist/modes/interactive/theme/theme-json.js.map +1 -0
  928. package/dist/modes/interactive/theme/theme-schema.json +361 -0
  929. package/dist/modes/interactive/theme/theme.d.ts +158 -0
  930. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  931. package/dist/modes/interactive/theme/theme.js +912 -0
  932. package/dist/modes/interactive/theme/theme.js.map +1 -0
  933. package/dist/modes/interactive/tui-renderer.d.ts +22 -0
  934. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  935. package/dist/modes/interactive/tui-renderer.js +67 -0
  936. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  937. package/dist/modes/json-event.d.ts +34 -0
  938. package/dist/modes/json-event.d.ts.map +1 -0
  939. package/dist/modes/json-event.js +29 -0
  940. package/dist/modes/json-event.js.map +1 -0
  941. package/dist/modes/print-mode.d.ts +28 -0
  942. package/dist/modes/print-mode.d.ts.map +1 -0
  943. package/dist/modes/print-mode.js +142 -0
  944. package/dist/modes/print-mode.js.map +1 -0
  945. package/dist/modes/rpc/jsonl.d.ts +17 -0
  946. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  947. package/dist/modes/rpc/jsonl.js +49 -0
  948. package/dist/modes/rpc/jsonl.js.map +1 -0
  949. package/dist/modes/rpc/rpc-client.d.ts +254 -0
  950. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  951. package/dist/modes/rpc/rpc-client.js +499 -0
  952. package/dist/modes/rpc/rpc-client.js.map +1 -0
  953. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  954. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  955. package/dist/modes/rpc/rpc-mode.js +655 -0
  956. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  957. package/dist/modes/rpc/rpc-types.d.ts +478 -0
  958. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  959. package/dist/modes/rpc/rpc-types.js +8 -0
  960. package/dist/modes/rpc/rpc-types.js.map +1 -0
  961. package/dist/package-manager-cli.d.ts +8 -0
  962. package/dist/package-manager-cli.d.ts.map +1 -0
  963. package/dist/package-manager-cli.js +524 -0
  964. package/dist/package-manager-cli.js.map +1 -0
  965. package/dist/rpc-entry.d.ts +3 -0
  966. package/dist/rpc-entry.d.ts.map +1 -0
  967. package/dist/rpc-entry.js +11 -0
  968. package/dist/rpc-entry.js.map +1 -0
  969. package/dist/utils/abort.d.ts +5 -0
  970. package/dist/utils/abort.d.ts.map +1 -0
  971. package/dist/utils/abort.js +48 -0
  972. package/dist/utils/abort.js.map +1 -0
  973. package/dist/utils/ansi.d.ts +2 -0
  974. package/dist/utils/ansi.d.ts.map +1 -0
  975. package/dist/utils/ansi.js +52 -0
  976. package/dist/utils/ansi.js.map +1 -0
  977. package/dist/utils/changelog.d.ts +22 -0
  978. package/dist/utils/changelog.d.ts.map +1 -0
  979. package/dist/utils/changelog.js +176 -0
  980. package/dist/utils/changelog.js.map +1 -0
  981. package/dist/utils/child-process.d.ts +18 -0
  982. package/dist/utils/child-process.d.ts.map +1 -0
  983. package/dist/utils/child-process.js +106 -0
  984. package/dist/utils/child-process.js.map +1 -0
  985. package/dist/utils/clipboard-command.d.ts +7 -0
  986. package/dist/utils/clipboard-command.d.ts.map +1 -0
  987. package/dist/utils/clipboard-command.js +45 -0
  988. package/dist/utils/clipboard-command.js.map +1 -0
  989. package/dist/utils/clipboard-image.d.ts +11 -0
  990. package/dist/utils/clipboard-image.d.ts.map +1 -0
  991. package/dist/utils/clipboard-image.js +214 -0
  992. package/dist/utils/clipboard-image.js.map +1 -0
  993. package/dist/utils/clipboard.d.ts +6 -0
  994. package/dist/utils/clipboard.d.ts.map +1 -0
  995. package/dist/utils/clipboard.js +156 -0
  996. package/dist/utils/clipboard.js.map +1 -0
  997. package/dist/utils/deprecation.d.ts +4 -0
  998. package/dist/utils/deprecation.d.ts.map +1 -0
  999. package/dist/utils/deprecation.js +13 -0
  1000. package/dist/utils/deprecation.js.map +1 -0
  1001. package/dist/utils/exif-orientation.d.ts +5 -0
  1002. package/dist/utils/exif-orientation.d.ts.map +1 -0
  1003. package/dist/utils/exif-orientation.js +157 -0
  1004. package/dist/utils/exif-orientation.js.map +1 -0
  1005. package/dist/utils/frontmatter.d.ts +8 -0
  1006. package/dist/utils/frontmatter.d.ts.map +1 -0
  1007. package/dist/utils/frontmatter.js +27 -0
  1008. package/dist/utils/frontmatter.js.map +1 -0
  1009. package/dist/utils/fs-watch.d.ts +5 -0
  1010. package/dist/utils/fs-watch.d.ts.map +1 -0
  1011. package/dist/utils/fs-watch.js +25 -0
  1012. package/dist/utils/fs-watch.js.map +1 -0
  1013. package/dist/utils/git.d.ts +26 -0
  1014. package/dist/utils/git.d.ts.map +1 -0
  1015. package/dist/utils/git.js +195 -0
  1016. package/dist/utils/git.js.map +1 -0
  1017. package/dist/utils/html.d.ts +7 -0
  1018. package/dist/utils/html.d.ts.map +1 -0
  1019. package/dist/utils/html.js +40 -0
  1020. package/dist/utils/html.js.map +1 -0
  1021. package/dist/utils/image-convert.d.ts +22 -0
  1022. package/dist/utils/image-convert.d.ts.map +1 -0
  1023. package/dist/utils/image-convert.js +84 -0
  1024. package/dist/utils/image-convert.js.map +1 -0
  1025. package/dist/utils/image-process.d.ts +18 -0
  1026. package/dist/utils/image-process.d.ts.map +1 -0
  1027. package/dist/utils/image-process.js +83 -0
  1028. package/dist/utils/image-process.js.map +1 -0
  1029. package/dist/utils/image-resize-core.d.ts +30 -0
  1030. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1031. package/dist/utils/image-resize-core.js +124 -0
  1032. package/dist/utils/image-resize-core.js.map +1 -0
  1033. package/dist/utils/image-resize-worker.d.ts +2 -0
  1034. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1035. package/dist/utils/image-resize-worker.js +31 -0
  1036. package/dist/utils/image-resize-worker.js.map +1 -0
  1037. package/dist/utils/image-resize.d.ts +16 -0
  1038. package/dist/utils/image-resize.d.ts.map +1 -0
  1039. package/dist/utils/image-resize.js +97 -0
  1040. package/dist/utils/image-resize.js.map +1 -0
  1041. package/dist/utils/json.d.ts +3 -0
  1042. package/dist/utils/json.d.ts.map +1 -0
  1043. package/dist/utils/json.js +7 -0
  1044. package/dist/utils/json.js.map +1 -0
  1045. package/dist/utils/management-http.d.ts +25 -0
  1046. package/dist/utils/management-http.d.ts.map +1 -0
  1047. package/dist/utils/management-http.js +54 -0
  1048. package/dist/utils/management-http.js.map +1 -0
  1049. package/dist/utils/mime.d.ts +3 -0
  1050. package/dist/utils/mime.d.ts.map +1 -0
  1051. package/dist/utils/mime.js +110 -0
  1052. package/dist/utils/mime.js.map +1 -0
  1053. package/dist/utils/open-browser.d.ts +9 -0
  1054. package/dist/utils/open-browser.d.ts.map +1 -0
  1055. package/dist/utils/open-browser.js +22 -0
  1056. package/dist/utils/open-browser.js.map +1 -0
  1057. package/dist/utils/output-files.d.ts +15 -0
  1058. package/dist/utils/output-files.d.ts.map +1 -0
  1059. package/dist/utils/output-files.js +30 -0
  1060. package/dist/utils/output-files.js.map +1 -0
  1061. package/dist/utils/paths.d.ts +34 -0
  1062. package/dist/utils/paths.d.ts.map +1 -0
  1063. package/dist/utils/paths.js +115 -0
  1064. package/dist/utils/paths.js.map +1 -0
  1065. package/dist/utils/photon.d.ts +21 -0
  1066. package/dist/utils/photon.d.ts.map +1 -0
  1067. package/dist/utils/photon.js +121 -0
  1068. package/dist/utils/photon.js.map +1 -0
  1069. package/dist/utils/relay-user-agent.d.ts +2 -0
  1070. package/dist/utils/relay-user-agent.d.ts.map +1 -0
  1071. package/dist/utils/relay-user-agent.js +5 -0
  1072. package/dist/utils/relay-user-agent.js.map +1 -0
  1073. package/dist/utils/shell.d.ts +32 -0
  1074. package/dist/utils/shell.d.ts.map +1 -0
  1075. package/dist/utils/shell.js +189 -0
  1076. package/dist/utils/shell.js.map +1 -0
  1077. package/dist/utils/sleep.d.ts +5 -0
  1078. package/dist/utils/sleep.d.ts.map +1 -0
  1079. package/dist/utils/sleep.js +17 -0
  1080. package/dist/utils/sleep.js.map +1 -0
  1081. package/dist/utils/syntax-highlight.d.ts +13 -0
  1082. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1083. package/dist/utils/syntax-highlight.js +179 -0
  1084. package/dist/utils/syntax-highlight.js.map +1 -0
  1085. package/dist/utils/text.d.ts +8 -0
  1086. package/dist/utils/text.d.ts.map +1 -0
  1087. package/dist/utils/text.js +9 -0
  1088. package/dist/utils/text.js.map +1 -0
  1089. package/dist/utils/tool-result-images.d.ts +21 -0
  1090. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1091. package/dist/utils/tool-result-images.js +48 -0
  1092. package/dist/utils/tool-result-images.js.map +1 -0
  1093. package/dist/utils/tools-manager.d.ts +13 -0
  1094. package/dist/utils/tools-manager.d.ts.map +1 -0
  1095. package/dist/utils/tools-manager.js +343 -0
  1096. package/dist/utils/tools-manager.js.map +1 -0
  1097. package/dist/utils/version-check.d.ts +17 -0
  1098. package/dist/utils/version-check.d.ts.map +1 -0
  1099. package/dist/utils/version-check.js +74 -0
  1100. package/dist/utils/version-check.js.map +1 -0
  1101. package/dist/utils/wsl.d.ts +3 -0
  1102. package/dist/utils/wsl.d.ts.map +1 -0
  1103. package/dist/utils/wsl.js +15 -0
  1104. package/dist/utils/wsl.js.map +1 -0
  1105. package/dist/utils/zip.d.ts +7 -0
  1106. package/dist/utils/zip.d.ts.map +1 -0
  1107. package/dist/utils/zip.js +60 -0
  1108. package/dist/utils/zip.js.map +1 -0
  1109. package/docs/cli-integration.md +106 -0
  1110. package/docs/cli.md +316 -0
  1111. package/docs/codemode.md +207 -0
  1112. package/docs/compaction.md +463 -0
  1113. package/docs/configuration.md +47 -0
  1114. package/docs/containerization.md +154 -0
  1115. package/docs/custom-provider.md +173 -0
  1116. package/docs/docs.json +224 -0
  1117. package/docs/environment-variables.md +97 -0
  1118. package/docs/extensions.md +274 -0
  1119. package/docs/harness-core.md +99 -0
  1120. package/docs/how-relay-works.md +49 -0
  1121. package/docs/images/doom-extension.png +0 -0
  1122. package/docs/images/exy.png +0 -0
  1123. package/docs/images/interactive-mode.png +0 -0
  1124. package/docs/images/tree-view.png +0 -0
  1125. package/docs/index.md +39 -0
  1126. package/docs/intake.md +40 -0
  1127. package/docs/json.md +226 -0
  1128. package/docs/keybindings.md +194 -0
  1129. package/docs/laya.md +112 -0
  1130. package/docs/llama-cpp.md +114 -0
  1131. package/docs/mcp.md +258 -0
  1132. package/docs/message-types.md +261 -0
  1133. package/docs/models.md +205 -0
  1134. package/docs/packages.md +129 -0
  1135. package/docs/prompt-templates.md +59 -0
  1136. package/docs/providers.md +187 -0
  1137. package/docs/quickstart.md +126 -0
  1138. package/docs/rpc-commands.md +860 -0
  1139. package/docs/rpc-extension-ui.md +200 -0
  1140. package/docs/rpc.md +193 -0
  1141. package/docs/sdk.md +147 -0
  1142. package/docs/security.md +99 -0
  1143. package/docs/session-format.md +293 -0
  1144. package/docs/sessions.md +66 -0
  1145. package/docs/settings.md +205 -0
  1146. package/docs/shell-aliases.md +93 -0
  1147. package/docs/skills.md +93 -0
  1148. package/docs/slash-commands.md +61 -0
  1149. package/docs/terminal-setup.md +219 -0
  1150. package/docs/termux.md +121 -0
  1151. package/docs/themes.md +136 -0
  1152. package/docs/tmux.md +55 -0
  1153. package/docs/tui.md +125 -0
  1154. package/docs/usage.md +94 -0
  1155. package/docs/virtual-models.md +114 -0
  1156. package/docs/windows.md +67 -0
  1157. package/examples/README.md +39 -0
  1158. package/examples/extensions/README.md +213 -0
  1159. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  1160. package/examples/extensions/bash-spawn-hook.ts +30 -0
  1161. package/examples/extensions/bookmark.ts +50 -0
  1162. package/examples/extensions/border-status-editor.ts +150 -0
  1163. package/examples/extensions/built-in-tool-renderer.ts +225 -0
  1164. package/examples/extensions/claude-rules.ts +86 -0
  1165. package/examples/extensions/commands.ts +72 -0
  1166. package/examples/extensions/confirm-destructive.ts +59 -0
  1167. package/examples/extensions/custom-compaction.ts +117 -0
  1168. package/examples/extensions/custom-footer.ts +64 -0
  1169. package/examples/extensions/custom-header.ts +73 -0
  1170. package/examples/extensions/custom-provider-anthropic/index.ts +617 -0
  1171. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1172. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1173. package/examples/extensions/custom-provider-gitlab-duo/index.ts +405 -0
  1174. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1175. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  1176. package/examples/extensions/debug-provider.ts +90 -0
  1177. package/examples/extensions/dirty-repo-guard.ts +56 -0
  1178. package/examples/extensions/doom-overlay/README.md +46 -0
  1179. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  1180. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  1181. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  1182. package/examples/extensions/doom-overlay/doom/doomgeneric_relay.c +72 -0
  1183. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  1184. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  1185. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  1186. package/examples/extensions/doom-overlay/index.ts +74 -0
  1187. package/examples/extensions/doom-overlay/wad-finder.ts +55 -0
  1188. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1189. package/examples/extensions/dynamic-resources/dynamic.json +81 -0
  1190. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1191. package/examples/extensions/dynamic-resources/index.ts +15 -0
  1192. package/examples/extensions/dynamic-tools.ts +74 -0
  1193. package/examples/extensions/entry-renderer.ts +41 -0
  1194. package/examples/extensions/event-bus.ts +43 -0
  1195. package/examples/extensions/file-trigger.ts +41 -0
  1196. package/examples/extensions/git-checkpoint.ts +53 -0
  1197. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  1198. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  1199. package/examples/extensions/handoff.ts +190 -0
  1200. package/examples/extensions/hello.ts +26 -0
  1201. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1202. package/examples/extensions/inline-bash.ts +94 -0
  1203. package/examples/extensions/input-transform-streaming.ts +39 -0
  1204. package/examples/extensions/input-transform.ts +43 -0
  1205. package/examples/extensions/interactive-shell.ts +196 -0
  1206. package/examples/extensions/jev-router.ts +113 -0
  1207. package/examples/extensions/mac-system-theme.ts +47 -0
  1208. package/examples/extensions/message-renderer.ts +59 -0
  1209. package/examples/extensions/minimal-mode.ts +354 -0
  1210. package/examples/extensions/modal-editor.ts +85 -0
  1211. package/examples/extensions/model-status.ts +31 -0
  1212. package/examples/extensions/notify.ts +57 -0
  1213. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  1214. package/examples/extensions/overlay-test.ts +153 -0
  1215. package/examples/extensions/permission-gate.ts +34 -0
  1216. package/examples/extensions/pirate.ts +47 -0
  1217. package/examples/extensions/plan-mode/README.md +66 -0
  1218. package/examples/extensions/plan-mode/index.ts +390 -0
  1219. package/examples/extensions/plan-mode/utils.ts +168 -0
  1220. package/examples/extensions/preset.ts +436 -0
  1221. package/examples/extensions/project-trust.ts +64 -0
  1222. package/examples/extensions/prompt-customizer.ts +49 -0
  1223. package/examples/extensions/protected-paths.ts +30 -0
  1224. package/examples/extensions/provider-payload.ts +18 -0
  1225. package/examples/extensions/qna.ts +118 -0
  1226. package/examples/extensions/question.ts +278 -0
  1227. package/examples/extensions/questionnaire.ts +440 -0
  1228. package/examples/extensions/rainbow-editor.ts +88 -0
  1229. package/examples/extensions/reload-runtime.ts +37 -0
  1230. package/examples/extensions/rpc-demo.ts +118 -0
  1231. package/examples/extensions/sandbox/index.ts +321 -0
  1232. package/examples/extensions/sandbox/package-lock.json +92 -0
  1233. package/examples/extensions/sandbox/package.json +19 -0
  1234. package/examples/extensions/send-user-message.ts +97 -0
  1235. package/examples/extensions/session-name.ts +27 -0
  1236. package/examples/extensions/shutdown-command.ts +63 -0
  1237. package/examples/extensions/snake.ts +343 -0
  1238. package/examples/extensions/space-invaders.ts +560 -0
  1239. package/examples/extensions/ssh.ts +220 -0
  1240. package/examples/extensions/status-line.ts +32 -0
  1241. package/examples/extensions/structured-output.ts +65 -0
  1242. package/examples/extensions/subagent/README.md +196 -0
  1243. package/examples/extensions/subagent/agents/planner.md +37 -0
  1244. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1245. package/examples/extensions/subagent/agents/scout.md +50 -0
  1246. package/examples/extensions/subagent/agents/security-auditor.md +20 -0
  1247. package/examples/extensions/subagent/agents/verifier.md +31 -0
  1248. package/examples/extensions/subagent/agents/worker.md +24 -0
  1249. package/examples/extensions/subagent/agents.ts +157 -0
  1250. package/examples/extensions/subagent/index.ts +1038 -0
  1251. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1252. package/examples/extensions/subagent/prompts/implement-and-verify.md +10 -0
  1253. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1254. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1255. package/examples/extensions/subagent/skills/delegate/SKILL.md +48 -0
  1256. package/examples/extensions/subagent/skills/security-audit/SKILL.md +108 -0
  1257. package/examples/extensions/subagent/skills/security-audit/references/categories.md +130 -0
  1258. package/examples/extensions/subagent/skills/security-audit/references/report.md +38 -0
  1259. package/examples/extensions/summarize.ts +199 -0
  1260. package/examples/extensions/system-prompt-header.ts +17 -0
  1261. package/examples/extensions/tic-tac-toe.ts +1008 -0
  1262. package/examples/extensions/timed-confirm.ts +70 -0
  1263. package/examples/extensions/titlebar-spinner.ts +58 -0
  1264. package/examples/extensions/todo.ts +297 -0
  1265. package/examples/extensions/tool-override.ts +144 -0
  1266. package/examples/extensions/tools.ts +146 -0
  1267. package/examples/extensions/trigger-compact.ts +50 -0
  1268. package/examples/extensions/truncated-tool.ts +195 -0
  1269. package/examples/extensions/widget-placement.ts +9 -0
  1270. package/examples/extensions/with-deps/index.ts +32 -0
  1271. package/examples/extensions/with-deps/package-lock.json +31 -0
  1272. package/examples/extensions/with-deps/package.json +22 -0
  1273. package/examples/extensions/working-indicator.ts +123 -0
  1274. package/examples/extensions/working-message-test.ts +25 -0
  1275. package/examples/plugins/relay-example-plugin/README.md +38 -0
  1276. package/examples/plugins/relay-example-plugin/package.json +10 -0
  1277. package/examples/plugins/relay-example-plugin/src/contract.ts +13 -0
  1278. package/examples/plugins/relay-example-plugin/src/session.ts +24 -0
  1279. package/examples/plugins/relay-example-plugin/src/tui.ts +31 -0
  1280. package/examples/rpc-client.ts +35 -0
  1281. package/examples/rpc-extension-ui.ts +661 -0
  1282. package/examples/sdk/01-minimal.ts +26 -0
  1283. package/examples/sdk/02-custom-model.ts +49 -0
  1284. package/examples/sdk/03-custom-prompt.ts +70 -0
  1285. package/examples/sdk/04-skills.ts +55 -0
  1286. package/examples/sdk/05-tools.ts +48 -0
  1287. package/examples/sdk/06-extensions.ts +94 -0
  1288. package/examples/sdk/07-context-files.ts +42 -0
  1289. package/examples/sdk/08-prompt-templates.ts +51 -0
  1290. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  1291. package/examples/sdk/10-settings.ts +53 -0
  1292. package/examples/sdk/11-sessions.ts +52 -0
  1293. package/examples/sdk/12-full-control.ts +74 -0
  1294. package/examples/sdk/13-session-runtime.ts +67 -0
  1295. package/examples/sdk/14-codemode-mcp.ts +61 -0
  1296. package/examples/sdk/README.md +141 -0
  1297. package/package.json +107 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-theme.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/system-theme.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The `system` theme: relay's colors derived from the terminal's own theme.\n *\n * Every token belongs to a color family (its hue) and has contrast rules: it must reach a contrast level\n * on the background and on the panels it is drawn on. Hue and saturation come from the terminal's palette\n * color for the family's ANSI slot, or from the family's own hue when the terminal reports no palette.\n * Lightness comes from the rules alone. Colors are built in OKHSL, whose saturation is relative to the\n * sRGB gamut, and fade toward gray near black and white. A palette color never gains OKLCH chroma when it\n * moves to another lightness, so pastel palettes stay pastel.\n *\n * A contrast level is a target-lightness curve: the OKLab lightness a token needs, given the lightness of\n * the surface below it. The curves were fitted to the reference theme design from the \"Relay themes: system\n * and light/dark\" review. On dark backgrounds they aim for nearly fixed lightness; on light backgrounds the\n * required difference grows as the background darkens.\n *\n * Depending on what the terminal reports, the theme is generated in one of three tiers:\n * - background and palette: hues from the palette, lightness from the background;\n * - background only: the families' own hues, lightness from the background;\n * - nothing: ANSI palette indices and the default colors, which the terminal renders itself.\n */\n\nimport {\n\tcolorToOkhsl,\n\tcolorToOklch,\n\tcolorToRgb,\n\ttype OkhslChannels,\n\tokhslColor,\n\toklabToOkhslLightness,\n\toklchColor,\n\ttype RgbColor,\n\trgbColor,\n} from \"@relay-harness/tui\";\nimport type { ThemeAppearance, ThemeBg, ThemeColor, ThemeToken } from \"./theme.ts\";\n\nexport const SYSTEM_THEME_NAME = \"system\";\n\n// ============================================================================\n// Recipe: color families and their tokens\n// ============================================================================\n\n/** A family's OKHSL hue and saturation: `max` at mid lightness, falling toward `min` at black and white. */\ninterface Family {\n\thue: number;\n\tsaturation: { min: number; max: number };\n\t/** ANSI palette slot the family takes its hue and saturation from. */\n\tslot: number;\n}\n\nconst FAMILIES = {\n\tneutral: { hue: 231.49, saturation: { min: 0.02, max: 0.08 }, slot: 8 },\n\tblue: { hue: 231.49, saturation: { min: 0.1, max: 0.68 }, slot: 4 },\n\tgreen: { hue: 158.68, saturation: { min: 0.1, max: 0.76 }, slot: 2 },\n\tred: { hue: 20, saturation: { min: 0.1, max: 0.92 }, slot: 1 },\n\tyellow: { hue: 82.36, saturation: { min: 0.5, max: 1 }, slot: 3 },\n\torange: { hue: 52, saturation: { min: 0.12, max: 0.85 }, slot: 3 },\n\tviolet: { hue: 295, saturation: { min: 0.2, max: 0.6 }, slot: 5 },\n\tcalamine: { hue: 202.43, saturation: { min: 0.1, max: 0.74 }, slot: 6 },\n\tthinkingSlate: { hue: 231.49, saturation: { min: 0.08, max: 0.2 }, slot: 4 },\n\tthinkingBlue: { hue: 231.49, saturation: { min: 0.2, max: 0.45 }, slot: 4 },\n\tthinkingPeriwinkle: { hue: 263.25, saturation: { min: 0.3, max: 0.6 }, slot: 6 },\n\tthinkingViolet: { hue: 295, saturation: { min: 0.4, max: 0.75 }, slot: 5 },\n\tthinkingMagenta: { hue: 337.5, saturation: { min: 0.5, max: 0.85 }, slot: 13 },\n\tthinkingRed: { hue: 20, saturation: { min: 0.95, max: 1 }, slot: 1 },\n} satisfies Record<string, Family>;\n\ntype FamilyName = keyof typeof FAMILIES;\n\nconst TOKEN_FAMILIES: Record<ThemeToken, FamilyName> = {\n\tselectedBg: \"blue\",\n\tsearchMatchBg: \"orange\",\n\tuserMessageBg: \"blue\",\n\tcustomMessageBg: \"violet\",\n\ttoolPendingBg: \"neutral\",\n\ttoolSuccessBg: \"green\",\n\ttoolErrorBg: \"red\",\n\n\ttext: \"neutral\",\n\tuserMessageText: \"neutral\",\n\tcustomMessageText: \"neutral\",\n\ttoolTitle: \"neutral\",\n\tsyntaxOperator: \"neutral\",\n\tsyntaxPunctuation: \"neutral\",\n\tmuted: \"neutral\",\n\tdim: \"neutral\",\n\tthinkingText: \"neutral\",\n\ttoolOutput: \"neutral\",\n\tmdLinkUrl: \"neutral\",\n\tmdQuote: \"neutral\",\n\tmdQuoteBorder: \"neutral\",\n\tmdHr: \"neutral\",\n\tmdCodeBlockBorder: \"neutral\",\n\ttoolDiffContext: \"neutral\",\n\tsyntaxComment: \"neutral\",\n\tscrollbarTrack: \"neutral\",\n\tscrollbarThumb: \"neutral\",\n\tsearchMatchText: \"neutral\",\n\tborderMuted: \"neutral\",\n\n\taccent: \"violet\",\n\tborderAccent: \"violet\",\n\tcustomMessageLabel: \"violet\",\n\tmdCode: \"violet\",\n\tmdListBullet: \"violet\",\n\tsyntaxType: \"violet\",\n\tborder: \"blue\",\n\tmdLink: \"blue\",\n\tsyntaxKeyword: \"blue\",\n\tsyntaxVariable: \"calamine\",\n\tsuccess: \"green\",\n\tmdCodeBlock: \"green\",\n\ttoolDiffAdded: \"green\",\n\tbashMode: \"green\",\n\tsyntaxNumber: \"green\",\n\terror: \"red\",\n\ttoolDiffRemoved: \"red\",\n\twarning: \"yellow\",\n\tmdHeading: \"yellow\",\n\tsyntaxFunction: \"yellow\",\n\tsyntaxString: \"orange\",\n\n\tthinkingOff: \"neutral\",\n\tthinkingMinimal: \"thinkingSlate\",\n\tthinkingLow: \"thinkingBlue\",\n\tthinkingMedium: \"thinkingPeriwinkle\",\n\tthinkingHigh: \"thinkingViolet\",\n\tthinkingXhigh: \"thinkingMagenta\",\n\tthinkingMax: \"thinkingRed\",\n};\n\n/** Palette slots for tokens that would otherwise share a hue with a similar token. */\nconst TOKEN_SLOTS: Partial<Record<ThemeToken, number>> = { syntaxString: 2, syntaxNumber: 5, searchMatchBg: 3 };\n\n// ============================================================================\n// Contrast levels and rules\n// ============================================================================\n\n/**\n * Target-lightness curves: a polynomial in the surface's OKLab lightness giving the OKLab lightness a token\n * needs on it. `reachable` is the range of surface lightness where the level can be reached; beyond it the\n * level is relaxed.\n */\ninterface Curve {\n\tcoefficients: number[];\n\treachable: [number, number];\n}\n\nconst LEVELS = {\n\tpanel: {\n\t\tdark: { coefficients: [0.29131, -0.39746, 2.33185, -0.85524, -1.2076, 0.86276], reachable: [0, 0.979] },\n\t\tlight: { coefficients: [-3.74073, 27.94549, -78.44258, 112.6798, -79.60015, 22.11277], reachable: [0.348, 1] },\n\t},\n\ttrack: {\n\t\tdark: { coefficients: [0.39028, -0.23015, 0.83573, 2.43829, -4.38292, 2.01582], reachable: [0, 0.946] },\n\t\tlight: { coefficients: [-5.24921, 38.37322, -107.28833, 152.10005, -106.17127, 29.18061], reachable: [0.368, 1] },\n\t},\n\tthinking0: {\n\t\tdark: { coefficients: [0.52988, -0.05809, -0.30924, 4.63567, -6.52933, 2.89108], reachable: [0, 0.873] },\n\t\tlight: {\n\t\t\tcoefficients: [-28.27749, 182.85284, -469.62416, 603.15916, -384.59976, 97.35147],\n\t\t\treachable: [0.51, 1],\n\t\t},\n\t},\n\tthinking1: {\n\t\tdark: { coefficients: [0.55278, -0.03667, -0.45659, 4.95347, -6.90265, 3.0706], reachable: [0, 0.858] },\n\t\tlight: {\n\t\t\tcoefficients: [-37.10484, 235.86282, -596.62344, 754.3633, -474.00763, 118.3551],\n\t\t\treachable: [0.535, 1],\n\t\t},\n\t},\n\tthinking2: {\n\t\tdark: { coefficients: [0.57486, -0.01765, -0.58987, 5.25227, -7.27175, 3.25532], reachable: [0, 0.842] },\n\t\tlight: {\n\t\t\tcoefficients: [-59.89653, 377.05024, -945.07843, 1182.03145, -734.96375, 181.68658],\n\t\t\treachable: [0.556, 1],\n\t\t},\n\t},\n\tthinking3: {\n\t\tdark: { coefficients: [0.59621, -0.00062, -0.71148, 5.53588, -7.6392, 3.44606], reachable: [0, 0.827] },\n\t\tlight: {\n\t\t\tcoefficients: [-72.07122, 445.84082, -1099.57352, 1353.88793, -829.53392, 202.26164],\n\t\t\treachable: [0.58, 1],\n\t\t},\n\t},\n\tthinking4: {\n\t\tdark: { coefficients: [0.61691, 0.01462, -0.82288, 5.80651, -8.00641, 3.64333], reachable: [0, 0.811] },\n\t\tlight: {\n\t\t\tcoefficients: [-110.14338, 674.21488, -1645.75941, 2004.32367, -1215.15899, 293.3183],\n\t\t\treachable: [0.6, 1],\n\t\t},\n\t},\n\tthinking5: {\n\t\tdark: { coefficients: [0.63702, 0.02826, -0.92498, 6.06465, -8.37246, 3.84651], reachable: [0, 0.795] },\n\t\tlight: {\n\t\t\tcoefficients: [-175.47701, 1063.54495, -2570.70594, 3098.80776, -1860.15527, 444.76392],\n\t\t\treachable: [0.62, 1],\n\t\t},\n\t},\n\tthinking6: {\n\t\tdark: { coefficients: [0.65658, 0.04044, -1.01835, 6.30989, -8.73529, 4.05439], reachable: [0, 0.779] },\n\t\tlight: {\n\t\t\tcoefficients: [-183.81712, 1094.70055, -2602.68539, 3088.71276, -1826.91131, 430.75931],\n\t\t\treachable: [0.643, 1],\n\t\t},\n\t},\n\tsubtle: {\n\t\tdark: { coefficients: [0.56762, -0.02475, -0.5383, 5.12628, -7.10931, 3.17324], reachable: [0, 0.848] },\n\t\tlight: {\n\t\t\tcoefficients: [-232.85459, 1376.54473, -3249.11801, 3827.91186, -2248.29472, 526.55751],\n\t\t\treachable: [0.657, 1],\n\t\t},\n\t},\n\tthumb: {\n\t\tdark: { coefficients: [0.60323, 0.00278, -0.73328, 5.57157, -7.68067, 3.46933], reachable: [0, 0.823] },\n\t\tlight: {\n\t\t\tcoefficients: [-82.89897, 511.01355, -1255.98095, 1540.76821, -940.68087, 228.58523],\n\t\t\treachable: [0.586, 1],\n\t\t},\n\t},\n\treadable: {\n\t\tdark: { coefficients: [0.66937, 0.04704, -1.06871, 6.43941, -8.9332, 4.17229], reachable: [0, 0.77] },\n\t\tlight: {\n\t\t\tcoefficients: [-1554.52576, 8733.56817, -19604.93507, 21977.72696, -12300.99599, 2749.81288],\n\t\t\treachable: [0.751, 1],\n\t\t},\n\t},\n\temphasis: {\n\t\tdark: { coefficients: [0.7303, 0.07695, -1.31626, 7.1681, -10.14436, 4.92846], reachable: [0, 0.712] },\n\t\tlight: {\n\t\t\tcoefficients: [-4948.31942, 26870.91986, -58334.48399, 63280.17197, -34298.01053, 7430.30146],\n\t\t\treachable: [0.811, 1],\n\t\t},\n\t},\n\ttextOnPanel: {\n\t\tdark: { coefficients: [0.86713, 0.05232, -0.89428, 4.79014, -5.5432, 1.75023], reachable: [0, 0.542] },\n\t\tlight: {\n\t\t\tcoefficients: [-8570.89457, 43954.60805, -90084.00702, 92220.6791, -47152.15802, 9632.27113],\n\t\t\treachable: [0.867, 1],\n\t\t},\n\t},\n\ttext: {\n\t\tdark: { coefficients: [0.89242, 0.02311, -0.44862, 2.34417, -0.06084, -2.63844], reachable: [0, 0.5] },\n\t\tlight: {\n\t\t\tcoefficients: [-2004.67048, 6664.47299, -6060.70202, -1792.61209, 5133.82359, -1939.85583],\n\t\t\treachable: [0.894, 1],\n\t\t},\n\t},\n} satisfies Record<string, Record<ThemeAppearance, Curve>>;\n\ntype Level = keyof typeof LEVELS;\n\ntype Surface = ThemeBg | \"background\" | \"scrollbarTrack\";\n\ninterface Rule {\n\ttoken: ThemeToken;\n\ton: Surface[];\n\tlevel: Level;\n}\n\nconst TOOL_PANELS: Surface[] = [\"toolPendingBg\", \"toolSuccessBg\", \"toolErrorBg\"];\nconst MESSAGE_PANELS: Surface[] = [\"userMessageBg\", \"customMessageBg\"];\nconst PANELS: ThemeBg[] = [\n\t\"userMessageBg\",\n\t\"toolPendingBg\",\n\t\"toolSuccessBg\",\n\t\"toolErrorBg\",\n\t\"selectedBg\",\n\t\"searchMatchBg\",\n\t\"customMessageBg\",\n];\nconst THINKING: ThemeColor[] = [\n\t\"thinkingOff\",\n\t\"thinkingMinimal\",\n\t\"thinkingLow\",\n\t\"thinkingMedium\",\n\t\"thinkingHigh\",\n\t\"thinkingXhigh\",\n\t\"thinkingMax\",\n];\nconst THINKING_LEVELS: Level[] = [\n\t\"thinking0\",\n\t\"thinking1\",\n\t\"thinking2\",\n\t\"thinking3\",\n\t\"thinking4\",\n\t\"thinking5\",\n\t\"thinking6\",\n];\n\nconst each = (tokens: ThemeToken[], on: Surface[], level: Level): Rule[] =>\n\ttokens.map((token) => ({ token, on, level }));\n\nconst RULES: Rule[] = [\n\t...each(PANELS, [\"background\"], \"panel\"),\n\t{ token: \"text\", on: [\"background\"], level: \"text\" },\n\t{ token: \"text\", on: [\"selectedBg\"], level: \"textOnPanel\" },\n\t{ token: \"userMessageText\", on: [\"userMessageBg\"], level: \"textOnPanel\" },\n\t{ token: \"toolTitle\", on: TOOL_PANELS, level: \"textOnPanel\" },\n\t...each([\"accent\", \"success\", \"error\", \"warning\"], [\"background\", \"selectedBg\", ...TOOL_PANELS], \"readable\"),\n\t{ token: \"muted\", on: [\"background\", \"selectedBg\", \"customMessageBg\", ...TOOL_PANELS], level: \"readable\" },\n\t{ token: \"dim\", on: [\"background\", \"selectedBg\", \"customMessageBg\", ...TOOL_PANELS], level: \"subtle\" },\n\t{ token: \"thinkingText\", on: [\"background\"], level: \"readable\" },\n\t{ token: \"customMessageText\", on: [\"customMessageBg\", ...TOOL_PANELS], level: \"readable\" },\n\t{\n\t\ttoken: \"customMessageLabel\",\n\t\ton: [\"background\", \"customMessageBg\", \"selectedBg\", ...TOOL_PANELS],\n\t\tlevel: \"readable\",\n\t},\n\t{ token: \"toolOutput\", on: [\"background\", ...TOOL_PANELS], level: \"readable\" },\n\t...each(\n\t\t[\"mdHeading\", \"mdLink\", \"mdLinkUrl\", \"mdCode\", \"mdQuote\", \"mdCodeBlockBorder\", \"mdListBullet\"],\n\t\t[\"background\", ...MESSAGE_PANELS],\n\t\t\"readable\",\n\t),\n\t{ token: \"mdCodeBlock\", on: [\"background\", ...MESSAGE_PANELS, ...TOOL_PANELS], level: \"readable\" },\n\t...each([\"toolDiffAdded\", \"toolDiffRemoved\", \"toolDiffContext\"], [\"background\", ...TOOL_PANELS], \"readable\"),\n\t...each(\n\t\t[\n\t\t\t\"syntaxComment\",\n\t\t\t\"syntaxKeyword\",\n\t\t\t\"syntaxFunction\",\n\t\t\t\"syntaxVariable\",\n\t\t\t\"syntaxString\",\n\t\t\t\"syntaxNumber\",\n\t\t\t\"syntaxType\",\n\t\t\t\"syntaxOperator\",\n\t\t\t\"syntaxPunctuation\",\n\t\t],\n\t\t[\"background\", ...MESSAGE_PANELS, ...TOOL_PANELS],\n\t\t\"readable\",\n\t),\n\t{ token: \"searchMatchText\", on: [\"searchMatchBg\"], level: \"readable\" },\n\t...each([\"bashMode\", \"border\", \"borderAccent\"], [\"background\"], \"readable\"),\n\t{ token: \"borderMuted\", on: [\"background\"], level: \"subtle\" },\n\t...each([\"mdQuoteBorder\", \"mdHr\"], [\"background\", ...MESSAGE_PANELS, ...TOOL_PANELS], \"readable\"),\n\t{ token: \"scrollbarTrack\", on: [\"background\"], level: \"track\" },\n\t{ token: \"scrollbarThumb\", on: [\"scrollbarTrack\"], level: \"thumb\" },\n\t...THINKING.map((token, index): Rule => ({ token, on: [\"background\"], level: THINKING_LEVELS[index] })),\n];\n\n/** Relaxation compresses levels stronger than this one toward it before weakening all levels. */\nconst READABLE_FLOOR: Record<ThemeAppearance, Level> = { dark: \"readable\", light: \"subtle\" };\n\n/** Body text uses the terminal's foreground when it reaches this level, which is clearly stronger than muted. */\nconst FOREGROUND_LEVEL: Level = \"emphasis\";\n\n/** Text-level tokens that take the terminal's foreground. */\nconst FOREGROUND_TOKENS: ThemeColor[] = [\"text\", \"userMessageText\", \"toolTitle\"];\n\n/** WCAG 2 contrast ratio that body text must reach on the surfaces it is drawn on. */\nconst TEXT_MINIMUM_WCAG_CONTRAST = 4.5;\n\n/** Tokens in dependency order: every surface before the tokens drawn on it. */\nconst SOLVE_ORDER: ThemeToken[] = (() => {\n\tconst order: ThemeToken[] = [];\n\tconst visit = (token: ThemeToken): void => {\n\t\tif (order.includes(token)) return;\n\t\tfor (const rule of RULES) {\n\t\t\tif (rule.token !== token) continue;\n\t\t\tfor (const surface of rule.on) if (surface !== \"background\") visit(surface);\n\t\t}\n\t\torder.push(token);\n\t};\n\tfor (const rule of RULES) visit(rule.token);\n\treturn order;\n})();\n\n// ============================================================================\n// Public API\n// ============================================================================\n\nexport interface SystemThemeInput {\n\tforeground?: RgbColor;\n\tbackground?: RgbColor;\n\t/** ANSI colors 0-15. */\n\tpalette?: RgbColor[];\n\t/** Saturation multiplier from 0 (grayscale) to 1. The first frame renders in grayscale until colors arrive. */\n\tsaturation?: number;\n\t/** Appearance when the terminal did not report its background, e.g. from its light/dark report or COLORFGBG. */\n\tappearanceHint?: ThemeAppearance;\n}\n\nexport interface SystemThemeColors {\n\t/** Hex colors, ANSI palette indices, or \"\" for the terminal default. */\n\tcolors: Record<ThemeToken, string | number>;\n\t/** Foreground tokens rendered faint (SGR 2), for terminals that did not report colors. */\n\tdim: ThemeColor[];\n\tappearance: ThemeAppearance | undefined;\n}\n\n/** OKLab lightness of an sRGB color, 0-1. */\nfunction oklabLightness(color: RgbColor): number {\n\treturn colorToOklch(rgbColor(color.r, color.g, color.b)).l;\n}\n\n/** WCAG 2 relative luminance. */\nexport function relativeLuminance({ r, g, b }: RgbColor): number {\n\tconst linear = (channel: number) => {\n\t\tconst value = channel / 255;\n\t\treturn value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;\n\t};\n\treturn 0.2126 * linear(r) + 0.7152 * linear(g) + 0.0722 * linear(b);\n}\n\n/** WCAG 2 contrast ratio, 1-21. */\nexport function wcagContrast(first: RgbColor, second: RgbColor): number {\n\tconst a = relativeLuminance(first);\n\tconst b = relativeLuminance(second);\n\treturn (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05);\n}\n\n/**\n * Whether a terminal is dark or light, from its reported colors: the direction of its own foreground\n * when text can be readable that way, otherwise dark when white text has more contrast on the\n * background than black text.\n */\nexport function terminalAppearance(background: RgbColor, foreground?: RgbColor): ThemeAppearance {\n\tconst white = { r: 255, g: 255, b: 255 };\n\tconst black = { r: 0, g: 0, b: 0 };\n\tconst whiteContrast = wcagContrast(white, background);\n\tconst blackContrast = wcagContrast(black, background);\n\tif (foreground) {\n\t\tconst foregroundL = oklabLightness(foreground);\n\t\tconst backgroundL = oklabLightness(background);\n\t\tif (Math.abs(foregroundL - backgroundL) > 0.05) {\n\t\t\tconst appearance = foregroundL > backgroundL ? \"dark\" : \"light\";\n\t\t\tconst best = appearance === \"dark\" ? whiteContrast : blackContrast;\n\t\t\tif (best >= TEXT_MINIMUM_WCAG_CONTRAST) return appearance;\n\t\t}\n\t}\n\treturn whiteContrast >= blackContrast ? \"dark\" : \"light\";\n}\n\n// ============================================================================\n// Generation\n// ============================================================================\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n\nfunction hexOf({ r, g, b }: RgbColor): string {\n\treturn `#${[r, g, b].map((channel) => Math.round(channel).toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\n/** Saturation weight at a lightness: a Gaussian (center 0.5, sigma 0.25), 0 at black and white, 1 in the middle. */\nfunction bellWeight(lightness: number): number {\n\tconst gaussian = (x: number): number => Math.exp(-((x - 0.5) ** 2) / (2 * 0.25 ** 2));\n\treturn (gaussian(lightness) - gaussian(0)) / (1 - gaussian(0));\n}\n\n/** A family's saturation curve relative to its maximum: 1 at mid lightness, `min / max` at black and white. */\nfunction saturationCurve({ saturation: { min, max } }: Family, lightness: number): number {\n\tconst floor = max > 0 ? min / max : 1;\n\treturn floor + (1 - floor) * bellWeight(lightness);\n}\n\n/** The target lightness for a level on a surface, or undefined where the level cannot be reached. */\nfunction levelTarget(level: Level, appearance: ThemeAppearance, surfaceL: number): number | undefined {\n\tconst curve: Curve = LEVELS[level][appearance];\n\tif (surfaceL < curve.reachable[0] || surfaceL > curve.reachable[1]) return undefined;\n\treturn curve.coefficients.reduce((sum, coefficient, power) => sum + coefficient * surfaceL ** power, 0);\n}\n\n/**\n * Generate the system theme's colors from the terminal's reported colors.\n */\nexport function generateSystemThemeColors(input: SystemThemeInput): SystemThemeColors {\n\tconst saturation = clamp(input.saturation ?? 1, 0, 1);\n\tconst { background, foreground } = input;\n\tif (!background) return indexedColors(saturation, input.appearanceHint);\n\tconst palette = input.palette?.length === 16 ? input.palette.map(sourceOf) : undefined;\n\n\tconst appearance = terminalAppearance(background, foreground);\n\tconst lighter = appearance === \"dark\";\n\tconst extreme = lighter ? 1 : 0;\n\tconst backgroundL = oklabLightness(background);\n\n\t/**\n\t * A token's color at an OKLab lightness. With a palette, the palette color's saturation applies at its\n\t * own lightness and falls off toward black and white along the family's curve, never rising above it.\n\t */\n\tconst paint = (token: ThemeToken, oklabL: number): RgbColor => {\n\t\tconst lightness = oklabToOkhslLightness(oklabL);\n\t\tconst family: Family = FAMILIES[TOKEN_FAMILIES[token]];\n\t\tif (!palette) {\n\t\t\tconst { min, max } = family.saturation;\n\t\t\treturn okhslColor(family.hue, (min + (max - min) * bellWeight(lightness)) * saturation, lightness);\n\t\t}\n\t\treturn anchored(palette[TOKEN_SLOTS[token] ?? family.slot], family, lightness, saturation);\n\t};\n\n\t/**\n\t * The lightness a rule needs on a surface, relaxed by `t`: from 0 to 1, levels stronger than the readable\n\t * floor move toward it; from 1 to 2, all levels move toward the surface itself.\n\t */\n\tconst target = (level: Level, surfaceL: number, t: number): number | undefined => {\n\t\tconst reached = levelTarget(level, appearance, surfaceL);\n\t\tif (reached === undefined && t === 0) return undefined;\n\t\tconst distance = (reached ?? extreme) - surfaceL;\n\t\tconst floor = (levelTarget(READABLE_FLOOR[appearance], appearance, surfaceL) ?? extreme) - surfaceL;\n\t\tconst compressed =\n\t\t\tMath.abs(distance) > Math.abs(floor) ? distance - (distance - floor) * Math.min(t, 1) : distance;\n\t\treturn surfaceL + compressed * (1 - Math.max(0, t - 1));\n\t};\n\n\t/**\n\t * Keep a panel light enough (or dark enough) that white (or black) text still reaches the body text\n\t * minimum on it. This only matters for backgrounds near mid-gray, where it barely does on the background.\n\t */\n\tconst extremeText = lighter ? { r: 255, g: 255, b: 255 } : { r: 0, g: 0, b: 0 };\n\tconst readable = (color: RgbColor) => wcagContrast(extremeText, color) >= TEXT_MINIMUM_WCAG_CONTRAST;\n\tconst limitPanel = (token: ThemeToken, l: number): RgbColor => {\n\t\tconst color = paint(token, l);\n\t\tif (readable(color)) return color;\n\t\tlet [low, high] = [backgroundL, l];\n\t\tfor (let index = 0; index < 20; index++) {\n\t\t\tconst middle = (low + high) / 2;\n\t\t\tif (readable(paint(token, middle))) low = middle;\n\t\t\telse high = middle;\n\t\t}\n\t\treturn paint(token, low);\n\t};\n\n\tconst solve = (t: number): Map<Surface | ThemeToken, RgbColor> | undefined => {\n\t\tconst colors = new Map<Surface | ThemeToken, RgbColor>([[\"background\", background]]);\n\t\tfor (const token of SOLVE_ORDER) {\n\t\t\tconst targets: number[] = [];\n\t\t\tfor (const rule of RULES) {\n\t\t\t\tif (rule.token !== token) continue;\n\t\t\t\tfor (const surface of rule.on) {\n\t\t\t\t\tconst value = target(rule.level, oklabLightness(colors.get(surface) ?? background), t);\n\t\t\t\t\tif (value === undefined || value < 0 || value > 1) return undefined;\n\t\t\t\t\ttargets.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst l = lighter ? Math.max(...targets) : Math.min(...targets);\n\t\t\tcolors.set(token, PANELS.includes(token as ThemeBg) ? limitPanel(token, l) : paint(token, l));\n\t\t}\n\t\treturn colors;\n\t};\n\n\tlet relaxation = 0;\n\tlet colors = solve(0);\n\tif (!colors) {\n\t\t// Mid-gray backgrounds cannot fit every level: relax as little as possible. Full relaxation always fits.\n\t\tlet [low, high] = [0, 2];\n\t\tcolors = solve(high);\n\t\tfor (let index = 0; index < 20; index++) {\n\t\t\tconst middle = (low + high) / 2;\n\t\t\tconst attempt = solve(middle);\n\t\t\tif (attempt) [high, colors] = [middle, attempt];\n\t\t\telse low = middle;\n\t\t}\n\t\trelaxation = high;\n\t}\n\tconst solved = colors ?? new Map<Surface | ThemeToken, RgbColor>();\n\tconst surfacesOf = (token: ThemeToken) =>\n\t\tRULES.filter((rule) => rule.token === token).flatMap((rule) =>\n\t\t\trule.on.map((surface) => solved.get(surface) ?? background),\n\t\t);\n\n\tconst result = {} as Record<ThemeToken, string | number>;\n\tfor (const token of Object.keys(TOKEN_FAMILIES) as ThemeToken[]) {\n\t\tconst color = solved.get(token);\n\t\tresult[token] = color ? hexOf(color) : \"\";\n\t}\n\n\tfor (const token of FOREGROUND_TOKENS) {\n\t\tconst surfaces = surfacesOf(token);\n\t\t// Body text uses the terminal's own foreground where it is clearly stronger than muted text; otherwise\n\t\t// the foreground's hue at just enough lightness.\n\t\tlet text = solved.get(token);\n\t\tif (foreground) {\n\t\t\tconst targets = surfaces.map((surface) => target(FOREGROUND_LEVEL, oklabLightness(surface), relaxation));\n\t\t\tif (targets.every((value) => value !== undefined && value >= 0 && value <= 1)) {\n\t\t\t\tconst needed = lighter ? Math.max(...(targets as number[])) : Math.min(...(targets as number[]));\n\t\t\t\tconst foregroundL = oklabLightness(foreground);\n\t\t\t\tif (lighter ? foregroundL >= needed : foregroundL <= needed) {\n\t\t\t\t\tresult[token] = \"\";\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttext = anchored(sourceOf(foreground), FAMILIES.neutral, oklabToOkhslLightness(needed), saturation);\n\t\t\t}\n\t\t}\n\t\t// Body text keeps at least 4.5:1 on the surfaces it is drawn on, even on relaxed mid-gray backgrounds.\n\t\tif (text) result[token] = hexOf(withTextContrast(text, surfaces, lighter));\n\t}\n\treturn { colors: result, dim: [], appearance };\n}\n\nfunction okhslOf({ r, g, b }: RgbColor): OkhslChannels {\n\treturn colorToOkhsl(rgbColor(r, g, b));\n}\n\n/** A terminal color's OKHSL channels and its OKLCH chroma. */\ninterface SourceColor extends OkhslChannels {\n\tchroma: number;\n}\n\nfunction sourceOf(color: RgbColor): SourceColor {\n\treturn { ...okhslOf(color), chroma: colorToOklch(rgbColor(color.r, color.g, color.b)).c };\n}\n\n/**\n * A source color's hue at another OKHSL lightness. Its saturation applies at its own lightness and falls off\n * toward black and white along the family's saturation curve, never rising above it.\n *\n * OKHSL saturation is relative to the most chroma sRGB allows at a lightness, so the same saturation can mean\n * more chroma elsewhere: Catppuccin Frappe's pink #f4b8e4 (chroma 0.089) would become #eb76d1 (0.180) at the\n * lightness the accent needs. Chroma is therefore also capped at the source's, with the same falloff.\n */\nfunction anchored(source: SourceColor, family: Family, lightness: number, saturation: number): RgbColor {\n\tconst anchor = saturationCurve(family, source.l);\n\tconst falloff = anchor > 0 ? Math.min(1, saturationCurve(family, lightness) / anchor) : 1;\n\tconst color = okhslColor(source.h, source.s * falloff * saturation, lightness);\n\tconst cap = source.chroma * falloff * saturation;\n\tconst { l, c } = colorToOklch(color);\n\treturn c <= cap ? color : colorToRgb(oklchColor(l, cap, source.h));\n}\n\n/** Move a text color toward white or black until it reaches the WCAG minimum on every surface. */\nfunction withTextContrast(color: RgbColor, surfaces: RgbColor[], lighter: boolean): RgbColor {\n\tconst meets = (candidate: RgbColor) =>\n\t\tsurfaces.every((surface) => wcagContrast(candidate, surface) >= TEXT_MINIMUM_WCAG_CONTRAST);\n\tif (meets(color)) return color;\n\tconst { h, s, l } = okhslOf(color);\n\tconst at = (lightness: number) => okhslColor(h, s, lightness);\n\tconst extreme = lighter ? 1 : 0;\n\tif (!meets(at(extreme))) return at(extreme);\n\tlet [low, high] = [l, extreme];\n\tfor (let index = 0; index < 20; index++) {\n\t\tconst middle = (low + high) / 2;\n\t\tif (meets(at(middle))) high = middle;\n\t\telse low = middle;\n\t}\n\treturn at(high);\n}\n\n/**\n * Colors for terminals that reported nothing: the terminal renders ANSI indices 0-15 and the default\n * colors with its own theme, so they fit any background. Neutral tokens below body text are faint (SGR 2)\n * instead of bright black, which some themes make nearly invisible. Panels have no background.\n */\nfunction indexedColors(saturation: number, appearance: ThemeAppearance | undefined): SystemThemeColors {\n\tconst colors = {} as Record<ThemeToken, string | number>;\n\tconst dim: ThemeColor[] = [];\n\tfor (const [token, familyName] of Object.entries(TOKEN_FAMILIES) as [ThemeToken, FamilyName][]) {\n\t\tif (PANELS.includes(token as ThemeBg)) {\n\t\t\tcolors[token] = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tconst neutral = familyName === \"neutral\";\n\t\tcolors[token] = !neutral && saturation > 0 ? (TOKEN_SLOTS[token] ?? FAMILIES[familyName].slot) : \"\";\n\t\tif (neutral && !FOREGROUND_TOKENS.includes(token as ThemeColor)) dim.push(token as ThemeColor);\n\t}\n\treturn { colors, dim, appearance };\n}\n"]}
@@ -0,0 +1,81 @@
1
+ import type { TerminalColors, TUI } from "@relay-harness/tui";
2
+ import type { SettingsManager } from "../../../core/settings-manager.ts";
3
+ import { type TerminalTheme, type Theme } from "./theme.ts";
4
+ type ThemeResult = {
5
+ success: boolean;
6
+ error?: string;
7
+ };
8
+ /**
9
+ * Query the terminal's colors and pass them to `apply` when the query completes or times out, and again
10
+ * if the terminal answers after the timeout. A failed query applies no colors. Settles after the first apply.
11
+ */
12
+ export declare function requestTerminalColors(ui: TUI, apply: (colors: TerminalColors) => void): Promise<void>;
13
+ /**
14
+ * Applies the theme setting and keeps it in sync with the terminal. The theme applies immediately, and the
15
+ * terminal's colors update it when they arrive; the system theme renders in grayscale until then. Callers
16
+ * that bake theme colors into content can wait for the colors with `waitForTerminalColors()`.
17
+ */
18
+ export declare class InteractiveThemeController {
19
+ private readonly ui;
20
+ private readonly getSettingsManager;
21
+ private readonly showError;
22
+ private readonly onChanged;
23
+ private currentThemeSetting;
24
+ private terminalColors;
25
+ private activeThemeName;
26
+ private autoSyncEnabled;
27
+ private terminalColorSchemeUnsubscribe;
28
+ private terminalColorQuery;
29
+ constructor(ui: TUI, options: {
30
+ getSettingsManager: () => SettingsManager;
31
+ showError: (message: string) => void;
32
+ onChanged: () => void;
33
+ initialThemeSetting?: string;
34
+ });
35
+ rebindTui(): void;
36
+ /**
37
+ * Apply the theme setting now and query the terminal's colors, which update the theme when they arrive.
38
+ * Theme pairs and the system theme follow terminal appearance changes.
39
+ */
40
+ applyFromSettings(): void;
41
+ /**
42
+ * Wait until the latest color query completed or timed out. Content that bakes theme colors into
43
+ * strings, such as the startup header, should be built after this. Terminals answer the DA1 request
44
+ * right after the color replies, so this only takes the full timeout when a terminal answers nothing.
45
+ */
46
+ waitForTerminalColors(): Promise<void>;
47
+ getThemeSelection(): string | undefined;
48
+ setThemeName(themeName: string, showError?: boolean): ThemeResult;
49
+ setThemeSetting(themeSetting: string): void;
50
+ setThemeInstance(themeInstance: Theme): ThemeResult;
51
+ preview(themeSettingOrName: string): void;
52
+ disableAutoSync(): void;
53
+ dispose(): void;
54
+ getTerminalTheme(): TerminalTheme;
55
+ private getThemeSetting;
56
+ /** The theme for the current setting and terminal appearance. Without a setting, relay uses the system theme. */
57
+ private resolveThemeName;
58
+ private applyThemeName;
59
+ /** Query the terminal's colors without waiting for them; `waitForTerminalColors()` waits for this query. */
60
+ private queryTerminalColors;
61
+ /**
62
+ * Record reported colors: themes use the default colors for tokens set to "", the system theme is
63
+ * generated from all of them, and light/dark detection uses them. Re-renders only when they changed.
64
+ */
65
+ private applyTerminalColors;
66
+ /**
67
+ * Re-apply the setting after the terminal's colors or appearance changed: regenerate the system theme,
68
+ * or switch the theme of a pair. Themes set through extensions or previews are left alone.
69
+ */
70
+ private reapplyForTerminal;
71
+ private setAutoSync;
72
+ private bindTerminalColorSchemeListener;
73
+ /**
74
+ * The terminal reported a light/dark switch. Its colors changed too, so query them again: they decide
75
+ * the appearance. The reported scheme only matters for terminals that do not report their background.
76
+ */
77
+ private applyTerminalColorSchemeChange;
78
+ private notifyChanged;
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=theme-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-controller.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,cAAc,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAWN,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,MAAM,YAAY,CAAC;AAEpB,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AASxD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CASrG;AAaD;;;;GAIG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,8BAA8B,CAA2B;IAEjE,OAAO,CAAC,kBAAkB,CAAoC;IAE9D,YACC,EAAE,EAAE,GAAG,EACP,OAAO,EAAE;QACR,kBAAkB,EAAE,MAAM,eAAe,CAAC;QAC1C,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,SAAS,EAAE,MAAM,IAAI,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC7B,EAYD;IAED,SAAS,IAAI,IAAI,CAIhB;IAED;;;OAGG;IACH,iBAAiB,IAAI,IAAI,CAMxB;IAED;;;;OAIG;IACH,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;IAED,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,WAAW,CAO9D;IAED,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAG1C;IAED,gBAAgB,CAAC,aAAa,EAAE,KAAK,GAAG,WAAW,CAMlD;IAED,OAAO,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAOxC;IAED,eAAe,IAAI,IAAI,CAEtB;IAED,OAAO,IAAI,IAAI,CAId;IAED,gBAAgB,IAAI,aAAa,CAEhC;IAED,OAAO,CAAC,eAAe;IAIvB,iHAAiH;IACjH,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,cAAc;IAUtB,4GAA4G;IAC5G,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,+BAA+B;IAMvC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,aAAa;CAIrB"}
@@ -0,0 +1,210 @@
1
+ import { getTerminalTheme, initTheme, markTerminalColorsPending, parseAutoThemeSetting, resolveThemeSetting, SYSTEM_THEME_NAME, setTerminalColorScheme, setTerminalColors, setTheme, setThemeInstance, } from "./theme.js";
2
+ /**
3
+ * How long the system theme stays grayscale before falling back to palette indices. Terminals answer
4
+ * the trailing DA1 request right after the color replies, so this only matters for terminals that
5
+ * answer neither. Replies arriving later still apply.
6
+ */
7
+ const TERMINAL_QUERY_TIMEOUT_MS = 100;
8
+ /**
9
+ * Query the terminal's colors and pass them to `apply` when the query completes or times out, and again
10
+ * if the terminal answers after the timeout. A failed query applies no colors. Settles after the first apply.
11
+ */
12
+ export function requestTerminalColors(ui, apply) {
13
+ let query;
14
+ try {
15
+ query = ui.queryTerminalColors({ timeoutMs: TERMINAL_QUERY_TIMEOUT_MS, onLateReply: apply });
16
+ }
17
+ catch {
18
+ // Treat a failed query like a terminal that does not report colors.
19
+ query = Promise.resolve({});
20
+ }
21
+ return query.then(apply, () => apply({}));
22
+ }
23
+ function sameRgb(a, b) {
24
+ return a === b || (a !== undefined && b !== undefined && a.r === b.r && a.g === b.g && a.b === b.b);
25
+ }
26
+ function sameTerminalColors(a, b) {
27
+ if (!sameRgb(a.foreground, b.foreground) || !sameRgb(a.background, b.background))
28
+ return false;
29
+ if (a.palette === b.palette)
30
+ return true;
31
+ if (!a.palette || !b.palette || a.palette.length !== b.palette.length)
32
+ return false;
33
+ return a.palette.every((color, index) => sameRgb(color, b.palette?.[index]));
34
+ }
35
+ /**
36
+ * Applies the theme setting and keeps it in sync with the terminal. The theme applies immediately, and the
37
+ * terminal's colors update it when they arrive; the system theme renders in grayscale until then. Callers
38
+ * that bake theme colors into content can wait for the colors with `waitForTerminalColors()`.
39
+ */
40
+ export class InteractiveThemeController {
41
+ ui;
42
+ getSettingsManager;
43
+ showError;
44
+ onChanged;
45
+ currentThemeSetting;
46
+ // Last reported colors; a query that times out keeps them instead of erasing them.
47
+ terminalColors;
48
+ activeThemeName;
49
+ autoSyncEnabled = false;
50
+ terminalColorSchemeUnsubscribe;
51
+ // Settles when the latest color query completed or timed out, and its colors applied.
52
+ terminalColorQuery = Promise.resolve();
53
+ constructor(ui, options) {
54
+ this.ui = ui;
55
+ this.getSettingsManager = options.getSettingsManager;
56
+ this.showError = options.showError;
57
+ this.onChanged = options.onChanged;
58
+ this.currentThemeSetting = options.initialThemeSetting;
59
+ this.activeThemeName = this.resolveThemeName();
60
+ // The system theme starts in grayscale; color follows once the terminal reports its colors.
61
+ markTerminalColorsPending();
62
+ initTheme(this.activeThemeName, true);
63
+ this.bindTerminalColorSchemeListener();
64
+ }
65
+ rebindTui() {
66
+ this.terminalColorSchemeUnsubscribe?.();
67
+ this.bindTerminalColorSchemeListener();
68
+ this.ui.setTerminalColorSchemeNotifications(this.autoSyncEnabled);
69
+ }
70
+ /**
71
+ * Apply the theme setting now and query the terminal's colors, which update the theme when they arrive.
72
+ * Theme pairs and the system theme follow terminal appearance changes.
73
+ */
74
+ applyFromSettings() {
75
+ const themeSetting = this.getThemeSetting();
76
+ const themeName = this.resolveThemeName();
77
+ this.setAutoSync(parseAutoThemeSetting(themeSetting) !== undefined || themeName === SYSTEM_THEME_NAME);
78
+ this.applyThemeName(themeName, themeSetting !== undefined);
79
+ this.queryTerminalColors();
80
+ }
81
+ /**
82
+ * Wait until the latest color query completed or timed out. Content that bakes theme colors into
83
+ * strings, such as the startup header, should be built after this. Terminals answer the DA1 request
84
+ * right after the color replies, so this only takes the full timeout when a terminal answers nothing.
85
+ */
86
+ waitForTerminalColors() {
87
+ return this.terminalColorQuery;
88
+ }
89
+ getThemeSelection() {
90
+ return this.currentThemeSetting ?? this.getSettingsManager().getThemeSetting() ?? this.activeThemeName;
91
+ }
92
+ setThemeName(themeName, showError = false) {
93
+ this.setAutoSync(themeName === SYSTEM_THEME_NAME);
94
+ const result = this.applyThemeName(themeName, showError);
95
+ if (result.success) {
96
+ this.currentThemeSetting = themeName;
97
+ }
98
+ return result;
99
+ }
100
+ setThemeSetting(themeSetting) {
101
+ this.currentThemeSetting = themeSetting;
102
+ this.applyFromSettings();
103
+ }
104
+ setThemeInstance(themeInstance) {
105
+ this.setAutoSync(false);
106
+ setThemeInstance(themeInstance);
107
+ this.activeThemeName = "<in-memory>";
108
+ this.notifyChanged();
109
+ return { success: true };
110
+ }
111
+ preview(themeSettingOrName) {
112
+ const themeName = resolveThemeSetting(themeSettingOrName, getTerminalTheme()) ?? this.activeThemeName;
113
+ if (!themeName)
114
+ return;
115
+ if (setTheme(themeName, true).success) {
116
+ this.ui.invalidate();
117
+ this.ui.requestRender();
118
+ }
119
+ }
120
+ disableAutoSync() {
121
+ this.setAutoSync(false);
122
+ }
123
+ dispose() {
124
+ this.setAutoSync(false);
125
+ this.terminalColorSchemeUnsubscribe?.();
126
+ this.terminalColorSchemeUnsubscribe = undefined;
127
+ }
128
+ getTerminalTheme() {
129
+ return getTerminalTheme();
130
+ }
131
+ getThemeSetting() {
132
+ return this.currentThemeSetting ?? this.getSettingsManager().getThemeSetting();
133
+ }
134
+ /** The theme for the current setting and terminal appearance. Without a setting, relay uses the system theme. */
135
+ resolveThemeName() {
136
+ return resolveThemeSetting(this.getThemeSetting(), getTerminalTheme()) ?? SYSTEM_THEME_NAME;
137
+ }
138
+ applyThemeName(themeName, showError = false) {
139
+ const result = setTheme(themeName, true);
140
+ this.activeThemeName = result.success ? themeName : SYSTEM_THEME_NAME;
141
+ this.notifyChanged();
142
+ if (!result.success && showError) {
143
+ this.showError(`Failed to load theme "${themeName}": ${result.error}\nFell back to the system theme.`);
144
+ }
145
+ return result;
146
+ }
147
+ /** Query the terminal's colors without waiting for them; `waitForTerminalColors()` waits for this query. */
148
+ queryTerminalColors() {
149
+ this.terminalColorQuery = requestTerminalColors(this.ui, (colors) => this.applyTerminalColors(colors));
150
+ }
151
+ /**
152
+ * Record reported colors: themes use the default colors for tokens set to "", the system theme is
153
+ * generated from all of them, and light/dark detection uses them. Re-renders only when they changed.
154
+ */
155
+ applyTerminalColors(reported) {
156
+ const previous = this.terminalColors;
157
+ const next = {
158
+ foreground: reported.foreground ?? previous?.foreground,
159
+ background: reported.background ?? previous?.background,
160
+ palette: reported.palette ?? previous?.palette,
161
+ };
162
+ // Re-rendering rebuilds every component, so skip it when nothing changed (including timeouts).
163
+ if (previous && sameTerminalColors(previous, next))
164
+ return;
165
+ this.terminalColors = next;
166
+ setTerminalColors(next);
167
+ this.reapplyForTerminal();
168
+ this.ui.invalidate();
169
+ this.ui.requestRender();
170
+ }
171
+ /**
172
+ * Re-apply the setting after the terminal's colors or appearance changed: regenerate the system theme,
173
+ * or switch the theme of a pair. Themes set through extensions or previews are left alone.
174
+ */
175
+ reapplyForTerminal() {
176
+ if (this.activeThemeName === "<in-memory>")
177
+ return;
178
+ const themeName = this.resolveThemeName();
179
+ if (themeName === SYSTEM_THEME_NAME || themeName !== this.activeThemeName) {
180
+ this.applyThemeName(themeName);
181
+ }
182
+ }
183
+ setAutoSync(enabled) {
184
+ if (this.autoSyncEnabled === enabled)
185
+ return;
186
+ this.autoSyncEnabled = enabled;
187
+ this.ui.setTerminalColorSchemeNotifications(enabled);
188
+ }
189
+ bindTerminalColorSchemeListener() {
190
+ this.terminalColorSchemeUnsubscribe = this.ui.onTerminalColorSchemeChange((terminalTheme) => this.applyTerminalColorSchemeChange(terminalTheme));
191
+ }
192
+ /**
193
+ * The terminal reported a light/dark switch. Its colors changed too, so query them again: they decide
194
+ * the appearance. The reported scheme only matters for terminals that do not report their background.
195
+ */
196
+ applyTerminalColorSchemeChange(terminalTheme) {
197
+ if (!this.autoSyncEnabled)
198
+ return;
199
+ const previous = getTerminalTheme();
200
+ setTerminalColorScheme(terminalTheme);
201
+ if (getTerminalTheme() !== previous)
202
+ this.reapplyForTerminal();
203
+ this.queryTerminalColors();
204
+ }
205
+ notifyChanged() {
206
+ this.ui.invalidate();
207
+ this.onChanged();
208
+ }
209
+ }
210
+ //# sourceMappingURL=theme-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-controller.js","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RgbColor, TerminalColors, TUI } from \"@relay-harness/tui\";\nimport type { SettingsManager } from \"../../../core/settings-manager.ts\";\nimport {\n\tgetTerminalTheme,\n\tinitTheme,\n\tmarkTerminalColorsPending,\n\tparseAutoThemeSetting,\n\tresolveThemeSetting,\n\tSYSTEM_THEME_NAME,\n\tsetTerminalColorScheme,\n\tsetTerminalColors,\n\tsetTheme,\n\tsetThemeInstance,\n\ttype TerminalTheme,\n\ttype Theme,\n} from \"./theme.ts\";\n\ntype ThemeResult = { success: boolean; error?: string };\n\n/**\n * How long the system theme stays grayscale before falling back to palette indices. Terminals answer\n * the trailing DA1 request right after the color replies, so this only matters for terminals that\n * answer neither. Replies arriving later still apply.\n */\nconst TERMINAL_QUERY_TIMEOUT_MS = 100;\n\n/**\n * Query the terminal's colors and pass them to `apply` when the query completes or times out, and again\n * if the terminal answers after the timeout. A failed query applies no colors. Settles after the first apply.\n */\nexport function requestTerminalColors(ui: TUI, apply: (colors: TerminalColors) => void): Promise<void> {\n\tlet query: Promise<TerminalColors>;\n\ttry {\n\t\tquery = ui.queryTerminalColors({ timeoutMs: TERMINAL_QUERY_TIMEOUT_MS, onLateReply: apply });\n\t} catch {\n\t\t// Treat a failed query like a terminal that does not report colors.\n\t\tquery = Promise.resolve({});\n\t}\n\treturn query.then(apply, () => apply({}));\n}\n\nfunction sameRgb(a: RgbColor | undefined, b: RgbColor | undefined): boolean {\n\treturn a === b || (a !== undefined && b !== undefined && a.r === b.r && a.g === b.g && a.b === b.b);\n}\n\nfunction sameTerminalColors(a: TerminalColors, b: TerminalColors): boolean {\n\tif (!sameRgb(a.foreground, b.foreground) || !sameRgb(a.background, b.background)) return false;\n\tif (a.palette === b.palette) return true;\n\tif (!a.palette || !b.palette || a.palette.length !== b.palette.length) return false;\n\treturn a.palette.every((color, index) => sameRgb(color, b.palette?.[index]));\n}\n\n/**\n * Applies the theme setting and keeps it in sync with the terminal. The theme applies immediately, and the\n * terminal's colors update it when they arrive; the system theme renders in grayscale until then. Callers\n * that bake theme colors into content can wait for the colors with `waitForTerminalColors()`.\n */\nexport class InteractiveThemeController {\n\tprivate readonly ui: TUI;\n\tprivate readonly getSettingsManager: () => SettingsManager;\n\tprivate readonly showError: (message: string) => void;\n\tprivate readonly onChanged: () => void;\n\tprivate currentThemeSetting: string | undefined;\n\t// Last reported colors; a query that times out keeps them instead of erasing them.\n\tprivate terminalColors: TerminalColors | undefined;\n\tprivate activeThemeName: string | undefined;\n\tprivate autoSyncEnabled = false;\n\tprivate terminalColorSchemeUnsubscribe: (() => void) | undefined;\n\t// Settles when the latest color query completed or timed out, and its colors applied.\n\tprivate terminalColorQuery: Promise<void> = Promise.resolve();\n\n\tconstructor(\n\t\tui: TUI,\n\t\toptions: {\n\t\t\tgetSettingsManager: () => SettingsManager;\n\t\t\tshowError: (message: string) => void;\n\t\t\tonChanged: () => void;\n\t\t\tinitialThemeSetting?: string;\n\t\t},\n\t) {\n\t\tthis.ui = ui;\n\t\tthis.getSettingsManager = options.getSettingsManager;\n\t\tthis.showError = options.showError;\n\t\tthis.onChanged = options.onChanged;\n\t\tthis.currentThemeSetting = options.initialThemeSetting;\n\t\tthis.activeThemeName = this.resolveThemeName();\n\t\t// The system theme starts in grayscale; color follows once the terminal reports its colors.\n\t\tmarkTerminalColorsPending();\n\t\tinitTheme(this.activeThemeName, true);\n\t\tthis.bindTerminalColorSchemeListener();\n\t}\n\n\trebindTui(): void {\n\t\tthis.terminalColorSchemeUnsubscribe?.();\n\t\tthis.bindTerminalColorSchemeListener();\n\t\tthis.ui.setTerminalColorSchemeNotifications(this.autoSyncEnabled);\n\t}\n\n\t/**\n\t * Apply the theme setting now and query the terminal's colors, which update the theme when they arrive.\n\t * Theme pairs and the system theme follow terminal appearance changes.\n\t */\n\tapplyFromSettings(): void {\n\t\tconst themeSetting = this.getThemeSetting();\n\t\tconst themeName = this.resolveThemeName();\n\t\tthis.setAutoSync(parseAutoThemeSetting(themeSetting) !== undefined || themeName === SYSTEM_THEME_NAME);\n\t\tthis.applyThemeName(themeName, themeSetting !== undefined);\n\t\tthis.queryTerminalColors();\n\t}\n\n\t/**\n\t * Wait until the latest color query completed or timed out. Content that bakes theme colors into\n\t * strings, such as the startup header, should be built after this. Terminals answer the DA1 request\n\t * right after the color replies, so this only takes the full timeout when a terminal answers nothing.\n\t */\n\twaitForTerminalColors(): Promise<void> {\n\t\treturn this.terminalColorQuery;\n\t}\n\n\tgetThemeSelection(): string | undefined {\n\t\treturn this.currentThemeSetting ?? this.getSettingsManager().getThemeSetting() ?? this.activeThemeName;\n\t}\n\n\tsetThemeName(themeName: string, showError = false): ThemeResult {\n\t\tthis.setAutoSync(themeName === SYSTEM_THEME_NAME);\n\t\tconst result = this.applyThemeName(themeName, showError);\n\t\tif (result.success) {\n\t\t\tthis.currentThemeSetting = themeName;\n\t\t}\n\t\treturn result;\n\t}\n\n\tsetThemeSetting(themeSetting: string): void {\n\t\tthis.currentThemeSetting = themeSetting;\n\t\tthis.applyFromSettings();\n\t}\n\n\tsetThemeInstance(themeInstance: Theme): ThemeResult {\n\t\tthis.setAutoSync(false);\n\t\tsetThemeInstance(themeInstance);\n\t\tthis.activeThemeName = \"<in-memory>\";\n\t\tthis.notifyChanged();\n\t\treturn { success: true };\n\t}\n\n\tpreview(themeSettingOrName: string): void {\n\t\tconst themeName = resolveThemeSetting(themeSettingOrName, getTerminalTheme()) ?? this.activeThemeName;\n\t\tif (!themeName) return;\n\t\tif (setTheme(themeName, true).success) {\n\t\t\tthis.ui.invalidate();\n\t\t\tthis.ui.requestRender();\n\t\t}\n\t}\n\n\tdisableAutoSync(): void {\n\t\tthis.setAutoSync(false);\n\t}\n\n\tdispose(): void {\n\t\tthis.setAutoSync(false);\n\t\tthis.terminalColorSchemeUnsubscribe?.();\n\t\tthis.terminalColorSchemeUnsubscribe = undefined;\n\t}\n\n\tgetTerminalTheme(): TerminalTheme {\n\t\treturn getTerminalTheme();\n\t}\n\n\tprivate getThemeSetting(): string | undefined {\n\t\treturn this.currentThemeSetting ?? this.getSettingsManager().getThemeSetting();\n\t}\n\n\t/** The theme for the current setting and terminal appearance. Without a setting, relay uses the system theme. */\n\tprivate resolveThemeName(): string {\n\t\treturn resolveThemeSetting(this.getThemeSetting(), getTerminalTheme()) ?? SYSTEM_THEME_NAME;\n\t}\n\n\tprivate applyThemeName(themeName: string, showError = false): ThemeResult {\n\t\tconst result = setTheme(themeName, true);\n\t\tthis.activeThemeName = result.success ? themeName : SYSTEM_THEME_NAME;\n\t\tthis.notifyChanged();\n\t\tif (!result.success && showError) {\n\t\t\tthis.showError(`Failed to load theme \"${themeName}\": ${result.error}\\nFell back to the system theme.`);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** Query the terminal's colors without waiting for them; `waitForTerminalColors()` waits for this query. */\n\tprivate queryTerminalColors(): void {\n\t\tthis.terminalColorQuery = requestTerminalColors(this.ui, (colors) => this.applyTerminalColors(colors));\n\t}\n\n\t/**\n\t * Record reported colors: themes use the default colors for tokens set to \"\", the system theme is\n\t * generated from all of them, and light/dark detection uses them. Re-renders only when they changed.\n\t */\n\tprivate applyTerminalColors(reported: TerminalColors): void {\n\t\tconst previous = this.terminalColors;\n\t\tconst next: TerminalColors = {\n\t\t\tforeground: reported.foreground ?? previous?.foreground,\n\t\t\tbackground: reported.background ?? previous?.background,\n\t\t\tpalette: reported.palette ?? previous?.palette,\n\t\t};\n\t\t// Re-rendering rebuilds every component, so skip it when nothing changed (including timeouts).\n\t\tif (previous && sameTerminalColors(previous, next)) return;\n\t\tthis.terminalColors = next;\n\t\tsetTerminalColors(next);\n\t\tthis.reapplyForTerminal();\n\t\tthis.ui.invalidate();\n\t\tthis.ui.requestRender();\n\t}\n\n\t/**\n\t * Re-apply the setting after the terminal's colors or appearance changed: regenerate the system theme,\n\t * or switch the theme of a pair. Themes set through extensions or previews are left alone.\n\t */\n\tprivate reapplyForTerminal(): void {\n\t\tif (this.activeThemeName === \"<in-memory>\") return;\n\t\tconst themeName = this.resolveThemeName();\n\t\tif (themeName === SYSTEM_THEME_NAME || themeName !== this.activeThemeName) {\n\t\t\tthis.applyThemeName(themeName);\n\t\t}\n\t}\n\n\tprivate setAutoSync(enabled: boolean): void {\n\t\tif (this.autoSyncEnabled === enabled) return;\n\t\tthis.autoSyncEnabled = enabled;\n\t\tthis.ui.setTerminalColorSchemeNotifications(enabled);\n\t}\n\n\tprivate bindTerminalColorSchemeListener(): void {\n\t\tthis.terminalColorSchemeUnsubscribe = this.ui.onTerminalColorSchemeChange((terminalTheme) =>\n\t\t\tthis.applyTerminalColorSchemeChange(terminalTheme),\n\t\t);\n\t}\n\n\t/**\n\t * The terminal reported a light/dark switch. Its colors changed too, so query them again: they decide\n\t * the appearance. The reported scheme only matters for terminals that do not report their background.\n\t */\n\tprivate applyTerminalColorSchemeChange(terminalTheme: TerminalTheme): void {\n\t\tif (!this.autoSyncEnabled) return;\n\t\tconst previous = getTerminalTheme();\n\t\tsetTerminalColorScheme(terminalTheme);\n\t\tif (getTerminalTheme() !== previous) this.reapplyForTerminal();\n\t\tthis.queryTerminalColors();\n\t}\n\n\tprivate notifyChanged(): void {\n\t\tthis.ui.invalidate();\n\t\tthis.onChanged();\n\t}\n}\n"]}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Theme JSON validation, kept out of `theme.ts` on purpose.
3
+ *
4
+ * Validating user-authored theme files needs typebox, which costs ~17 MB of module graph to import.
5
+ * Palette lookup does not, so a presentation that only uses built-in themes should never pay for it.
6
+ * `interactive-mode.ts` installs this validator; anything that does not simply skips validation, as
7
+ * built-in themes already do.
8
+ */
9
+ import { type Static, Type } from "typebox";
10
+ declare const ColorValueSchema: Type.TUnion<[Type.TString, Type.TInteger]>;
11
+ declare const ThemeJsonSchema: Type.TObject<{
12
+ $schema: Type.TOptional<Type.TString>;
13
+ name: Type.TString;
14
+ appearance: Type.TOptional<Type.TUnion<[Type.TLiteral<"dark">, Type.TLiteral<"light">]>>;
15
+ vars: Type.TOptional<Type.TRecord<"^.*$", Type.TUnion<[Type.TString, Type.TInteger]>>>;
16
+ colors: Type.TObject<{
17
+ accent: Type.TUnion<[Type.TString, Type.TInteger]>;
18
+ border: Type.TUnion<[Type.TString, Type.TInteger]>;
19
+ borderAccent: Type.TUnion<[Type.TString, Type.TInteger]>;
20
+ borderMuted: Type.TUnion<[Type.TString, Type.TInteger]>;
21
+ success: Type.TUnion<[Type.TString, Type.TInteger]>;
22
+ error: Type.TUnion<[Type.TString, Type.TInteger]>;
23
+ warning: Type.TUnion<[Type.TString, Type.TInteger]>;
24
+ muted: Type.TUnion<[Type.TString, Type.TInteger]>;
25
+ dim: Type.TUnion<[Type.TString, Type.TInteger]>;
26
+ text: Type.TUnion<[Type.TString, Type.TInteger]>;
27
+ thinkingText: Type.TUnion<[Type.TString, Type.TInteger]>;
28
+ scrollbarTrack: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
29
+ scrollbarThumb: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
30
+ selectedBg: Type.TUnion<[Type.TString, Type.TInteger]>;
31
+ searchMatchBg: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
32
+ searchMatchText: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
33
+ userMessageBg: Type.TUnion<[Type.TString, Type.TInteger]>;
34
+ userMessageText: Type.TUnion<[Type.TString, Type.TInteger]>;
35
+ customMessageBg: Type.TUnion<[Type.TString, Type.TInteger]>;
36
+ customMessageText: Type.TUnion<[Type.TString, Type.TInteger]>;
37
+ customMessageLabel: Type.TUnion<[Type.TString, Type.TInteger]>;
38
+ toolPendingBg: Type.TUnion<[Type.TString, Type.TInteger]>;
39
+ toolSuccessBg: Type.TUnion<[Type.TString, Type.TInteger]>;
40
+ toolErrorBg: Type.TUnion<[Type.TString, Type.TInteger]>;
41
+ toolTitle: Type.TUnion<[Type.TString, Type.TInteger]>;
42
+ toolOutput: Type.TUnion<[Type.TString, Type.TInteger]>;
43
+ mdHeading: Type.TUnion<[Type.TString, Type.TInteger]>;
44
+ mdLink: Type.TUnion<[Type.TString, Type.TInteger]>;
45
+ mdLinkUrl: Type.TUnion<[Type.TString, Type.TInteger]>;
46
+ mdCode: Type.TUnion<[Type.TString, Type.TInteger]>;
47
+ mdCodeBlock: Type.TUnion<[Type.TString, Type.TInteger]>;
48
+ mdCodeBlockBorder: Type.TUnion<[Type.TString, Type.TInteger]>;
49
+ mdQuote: Type.TUnion<[Type.TString, Type.TInteger]>;
50
+ mdQuoteBorder: Type.TUnion<[Type.TString, Type.TInteger]>;
51
+ mdHr: Type.TUnion<[Type.TString, Type.TInteger]>;
52
+ mdListBullet: Type.TUnion<[Type.TString, Type.TInteger]>;
53
+ toolDiffAdded: Type.TUnion<[Type.TString, Type.TInteger]>;
54
+ toolDiffRemoved: Type.TUnion<[Type.TString, Type.TInteger]>;
55
+ toolDiffContext: Type.TUnion<[Type.TString, Type.TInteger]>;
56
+ syntaxComment: Type.TUnion<[Type.TString, Type.TInteger]>;
57
+ syntaxKeyword: Type.TUnion<[Type.TString, Type.TInteger]>;
58
+ syntaxFunction: Type.TUnion<[Type.TString, Type.TInteger]>;
59
+ syntaxVariable: Type.TUnion<[Type.TString, Type.TInteger]>;
60
+ syntaxString: Type.TUnion<[Type.TString, Type.TInteger]>;
61
+ syntaxNumber: Type.TUnion<[Type.TString, Type.TInteger]>;
62
+ syntaxType: Type.TUnion<[Type.TString, Type.TInteger]>;
63
+ syntaxOperator: Type.TUnion<[Type.TString, Type.TInteger]>;
64
+ syntaxPunctuation: Type.TUnion<[Type.TString, Type.TInteger]>;
65
+ thinkingOff: Type.TUnion<[Type.TString, Type.TInteger]>;
66
+ thinkingMinimal: Type.TUnion<[Type.TString, Type.TInteger]>;
67
+ thinkingLow: Type.TUnion<[Type.TString, Type.TInteger]>;
68
+ thinkingMedium: Type.TUnion<[Type.TString, Type.TInteger]>;
69
+ thinkingHigh: Type.TUnion<[Type.TString, Type.TInteger]>;
70
+ thinkingXhigh: Type.TUnion<[Type.TString, Type.TInteger]>;
71
+ thinkingMax: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
72
+ bashMode: Type.TUnion<[Type.TString, Type.TInteger]>;
73
+ }>;
74
+ export: Type.TOptional<Type.TObject<{
75
+ pageBg: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
76
+ cardBg: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
77
+ infoBg: Type.TOptional<Type.TUnion<[Type.TString, Type.TInteger]>>;
78
+ }>>;
79
+ }>;
80
+ export type ThemeColorValue = Static<typeof ColorValueSchema>;
81
+ export type ValidatedThemeJson = Static<typeof ThemeJsonSchema>;
82
+ /** Validate one theme document, throwing a message that names the offending tokens. */
83
+ export declare function validateThemeJson(label: string, json: unknown): ValidatedThemeJson;
84
+ export {};
85
+ //# sourceMappingURL=theme-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-json.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/theme/theme-json.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5C,QAAA,MAAM,gBAAgB,4CAGpB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+EnB,CAAC;AAIH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAEhE,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,kBAAkB,CA2ClF"}