@oh-my-pi/pi-coding-agent 17.0.9 → 17.1.1

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 (349) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +1 -1
  3. package/dist/cli.js +4685 -4614
  4. package/dist/types/async/job-manager.d.ts +37 -1
  5. package/dist/types/cli/args.d.ts +2 -0
  6. package/dist/types/cli/bench-cli.d.ts +41 -0
  7. package/dist/types/commands/bench.d.ts +15 -3
  8. package/dist/types/commands/launch.d.ts +4 -0
  9. package/dist/types/config/model-registry.d.ts +3 -1
  10. package/dist/types/config/models-config-schema.d.ts +18 -6
  11. package/dist/types/config/models-config.d.ts +14 -5
  12. package/dist/types/config/provider-globals.d.ts +2 -2
  13. package/dist/types/config/service-tier.d.ts +5 -1
  14. package/dist/types/config/settings-schema.d.ts +374 -47
  15. package/dist/types/config/settings.d.ts +7 -0
  16. package/dist/types/dap/client.d.ts +20 -0
  17. package/dist/types/exec/bash-executor.d.ts +38 -0
  18. package/dist/types/exec/direnv.d.ts +33 -0
  19. package/dist/types/export/html/args.d.ts +15 -0
  20. package/dist/types/export/html/index.d.ts +11 -26
  21. package/dist/types/export/html/web-palette.d.ts +55 -116
  22. package/dist/types/extensibility/extensions/loader.d.ts +3 -0
  23. package/dist/types/extensibility/extensions/types.d.ts +17 -2
  24. package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +3 -0
  25. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +13 -0
  26. package/dist/types/live/attestation.d.ts +2 -0
  27. package/dist/types/live/controller.d.ts +48 -0
  28. package/dist/types/live/protocol.d.ts +85 -0
  29. package/dist/types/live/protocol.test.d.ts +1 -0
  30. package/dist/types/live/transport.d.ts +35 -0
  31. package/dist/types/live/visualizer.d.ts +30 -0
  32. package/dist/types/lsp/client.d.ts +16 -1
  33. package/dist/types/mcp/config-writer.test.d.ts +1 -0
  34. package/dist/types/mcp/oauth-discovery.d.ts +2 -0
  35. package/dist/types/mcp/smithery-auth.d.ts +1 -1
  36. package/dist/types/mcp/smithery-auth.test.d.ts +1 -0
  37. package/dist/types/memory-backend/tool-names.d.ts +2 -0
  38. package/dist/types/modes/components/assistant-message.d.ts +1 -0
  39. package/dist/types/modes/components/custom-message.d.ts +1 -1
  40. package/dist/types/modes/components/login-dialog.d.ts +2 -2
  41. package/dist/types/modes/components/message-frame.d.ts +8 -4
  42. package/dist/types/modes/components/plan-review-overlay.d.ts +26 -0
  43. package/dist/types/modes/components/session-account-selector.d.ts +11 -0
  44. package/dist/types/modes/components/settings-defs.d.ts +7 -1
  45. package/dist/types/modes/components/status-line/component.jj-cache.test.d.ts +1 -0
  46. package/dist/types/modes/components/tool-execution.d.ts +9 -1
  47. package/dist/types/modes/controllers/command-controller.d.ts +1 -1
  48. package/dist/types/modes/controllers/event-controller.d.ts +6 -1
  49. package/dist/types/modes/controllers/live-command-controller.d.ts +14 -0
  50. package/dist/types/modes/controllers/selector-controller.d.ts +1 -0
  51. package/dist/types/modes/interactive-mode.d.ts +6 -0
  52. package/dist/types/modes/theme/theme.d.ts +1 -1
  53. package/dist/types/modes/types.d.ts +4 -1
  54. package/dist/types/modes/utils/context-usage.d.ts +12 -2
  55. package/dist/types/plan-mode/plan-files.d.ts +10 -0
  56. package/dist/types/registry/agent-lifecycle.d.ts +21 -9
  57. package/dist/types/registry/agent-registry.d.ts +11 -4
  58. package/dist/types/sdk.d.ts +15 -1
  59. package/dist/types/secrets/index.d.ts +15 -2
  60. package/dist/types/secrets/obfuscator.d.ts +113 -15
  61. package/dist/types/session/acp-permission-gate.d.ts +19 -0
  62. package/dist/types/session/agent-session-events.d.ts +84 -0
  63. package/dist/types/session/agent-session-types.d.ts +321 -0
  64. package/dist/types/session/agent-session.d.ts +135 -753
  65. package/dist/types/session/async-job-delivery.d.ts +28 -0
  66. package/dist/types/session/auth-storage.d.ts +1 -1
  67. package/dist/types/session/bash-runner.d.ts +75 -0
  68. package/dist/types/session/blob-store.d.ts +11 -1
  69. package/dist/types/session/blob-store.test.d.ts +1 -0
  70. package/dist/types/session/checkpoint-entries.d.ts +28 -0
  71. package/dist/types/session/eval-runner.d.ts +51 -0
  72. package/dist/types/session/irc-bridge.d.ts +46 -0
  73. package/dist/types/session/messages.d.ts +24 -0
  74. package/dist/types/session/model-controls.d.ts +180 -0
  75. package/dist/types/session/prewalk.d.ts +46 -0
  76. package/dist/types/session/queued-messages.d.ts +22 -0
  77. package/dist/types/session/redis-session-storage.d.ts +1 -0
  78. package/dist/types/session/retry-fallback-chains.d.ts +74 -0
  79. package/dist/types/session/role-models.d.ts +15 -0
  80. package/dist/types/session/session-advisors.d.ts +228 -0
  81. package/dist/types/session/session-entries.d.ts +8 -0
  82. package/dist/types/session/session-handoff.d.ts +70 -0
  83. package/dist/types/session/session-history-format.d.ts +6 -1
  84. package/dist/types/session/session-maintenance.d.ts +246 -0
  85. package/dist/types/session/session-manager.d.ts +41 -0
  86. package/dist/types/session/session-memory.d.ts +56 -0
  87. package/dist/types/session/session-provider-boundary.d.ts +62 -0
  88. package/dist/types/session/session-stats.d.ts +48 -0
  89. package/dist/types/session/session-tools.d.ts +158 -0
  90. package/dist/types/session/session-workspace.d.ts +32 -0
  91. package/dist/types/session/stream-guards.d.ts +44 -0
  92. package/dist/types/session/streaming-output.d.ts +8 -0
  93. package/dist/types/session/todo-tracker.d.ts +56 -0
  94. package/dist/types/session/ttsr-coordinator.d.ts +51 -0
  95. package/dist/types/session/turn-recovery.d.ts +225 -0
  96. package/dist/types/slash-commands/helpers/session-pin.d.ts +9 -0
  97. package/dist/types/stt/index.d.ts +0 -2
  98. package/dist/types/stt/stt-controller.d.ts +7 -0
  99. package/dist/types/system-prompt.d.ts +2 -0
  100. package/dist/types/task/executor.d.ts +4 -1
  101. package/dist/types/task/output-manager.d.ts +3 -1
  102. package/dist/types/tiny/title-client.d.ts +10 -0
  103. package/dist/types/tools/approval.d.ts +1 -0
  104. package/dist/types/tools/browser/launch.d.ts +5 -0
  105. package/dist/types/tools/builtin-names.d.ts +1 -1
  106. package/dist/types/tools/computer/protocol.d.ts +43 -0
  107. package/dist/types/tools/computer/supervisor.d.ts +32 -0
  108. package/dist/types/tools/computer/worker-entry.d.ts +1 -0
  109. package/dist/types/tools/computer/worker.d.ts +15 -0
  110. package/dist/types/tools/computer-renderer.d.ts +22 -0
  111. package/dist/types/tools/computer.d.ts +71 -0
  112. package/dist/types/tools/context.d.ts +2 -0
  113. package/dist/types/tools/default-renderer.d.ts +21 -0
  114. package/dist/types/tools/image-gen.d.ts +4 -4
  115. package/dist/types/tools/image-providers.d.ts +38 -0
  116. package/dist/types/tools/index.d.ts +7 -0
  117. package/dist/types/tools/path-utils.d.ts +8 -0
  118. package/dist/types/tools/todo.d.ts +10 -4
  119. package/dist/types/tools/xdev.d.ts +5 -1
  120. package/dist/types/tts/streaming-player.d.ts +10 -29
  121. package/dist/types/tts/vocalizer.d.ts +5 -0
  122. package/dist/types/utils/jj.d.ts +29 -0
  123. package/dist/types/utils/lang-from-path.d.ts +1 -0
  124. package/dist/types/utils/title-generator.d.ts +30 -0
  125. package/dist/types/utils/tools-manager.d.ts +1 -2
  126. package/dist/types/vibe/runtime.d.ts +36 -8
  127. package/dist/types/web/search/index.d.ts +1 -1
  128. package/dist/types/web/search/provider.d.ts +15 -5
  129. package/dist/types/web/search/types.d.ts +94 -0
  130. package/package.json +12 -12
  131. package/scripts/generate-share-viewer.ts +4 -6
  132. package/src/advisor/__tests__/advisor.test.ts +643 -0
  133. package/src/advisor/runtime.ts +144 -43
  134. package/src/async/job-manager.ts +90 -2
  135. package/src/cli/args.ts +3 -0
  136. package/src/cli/auth-gateway-cli.ts +18 -3
  137. package/src/cli/bench-cli.ts +395 -29
  138. package/src/cli/flag-tables.ts +3 -0
  139. package/src/cli/gc-cli.ts +2 -2
  140. package/src/cli/setup-cli.ts +2 -14
  141. package/src/cli/usage-cli.ts +10 -1
  142. package/src/cli.ts +8 -0
  143. package/src/collab/host.ts +3 -2
  144. package/src/commands/bench.ts +18 -4
  145. package/src/commands/launch.ts +4 -0
  146. package/src/config/model-registry.ts +16 -2
  147. package/src/config/models-config-schema.ts +15 -4
  148. package/src/config/provider-globals.ts +9 -9
  149. package/src/config/service-tier.ts +26 -1
  150. package/src/config/settings-schema.ts +270 -51
  151. package/src/config/settings.ts +81 -2
  152. package/src/dap/client.ts +37 -4
  153. package/src/edit/index.ts +49 -12
  154. package/src/eval/executor-base.ts +1 -0
  155. package/src/eval/js/executor.ts +2 -0
  156. package/src/eval/py/executor.ts +103 -33
  157. package/src/exec/bash-executor.ts +90 -6
  158. package/src/exec/direnv.ts +145 -0
  159. package/src/export/html/args.ts +20 -0
  160. package/src/export/html/index.ts +45 -47
  161. package/src/export/html/template.css +19 -1
  162. package/src/export/html/template.html +6 -0
  163. package/src/export/html/template.js +21 -0
  164. package/src/export/html/tool-views.generated.js +31 -31
  165. package/src/export/html/web-palette.ts +116 -132
  166. package/src/export/share.ts +249 -49
  167. package/src/extensibility/extensions/loader.ts +29 -1
  168. package/src/extensibility/extensions/runner.ts +6 -0
  169. package/src/extensibility/extensions/types.ts +33 -2
  170. package/src/extensibility/extensions/wrapper.ts +68 -12
  171. package/src/extensibility/legacy-pi-coding-agent-shim.ts +7 -1
  172. package/src/extensibility/plugins/legacy-pi-compat.ts +19 -1
  173. package/src/hindsight/state.ts +64 -6
  174. package/src/internal-urls/local-protocol.ts +2 -1
  175. package/src/internal-urls/memory-protocol.ts +2 -2
  176. package/src/internal-urls/skill-protocol.ts +2 -2
  177. package/src/internal-urls/ssh-protocol.ts +2 -1
  178. package/src/internal-urls/vault-protocol.ts +2 -1
  179. package/src/live/attestation.ts +91 -0
  180. package/src/live/controller.ts +517 -0
  181. package/src/live/prompts/agent-final-message.md +3 -0
  182. package/src/live/prompts/live-instructions.md +23 -0
  183. package/src/live/protocol.test.ts +140 -0
  184. package/src/live/protocol.ts +233 -0
  185. package/src/live/transport.ts +422 -0
  186. package/src/live/visualizer.ts +214 -0
  187. package/src/lsp/client.ts +29 -9
  188. package/src/lsp/index.ts +19 -4
  189. package/src/main.ts +8 -1
  190. package/src/mcp/config-writer.test.ts +43 -0
  191. package/src/mcp/config-writer.ts +109 -82
  192. package/src/mcp/oauth-discovery.ts +10 -2
  193. package/src/mcp/smithery-auth.test.ts +29 -0
  194. package/src/mcp/smithery-auth.ts +3 -2
  195. package/src/memories/index.ts +40 -20
  196. package/src/memory-backend/tool-names.ts +2 -0
  197. package/src/mnemopi/backend.ts +24 -7
  198. package/src/modes/acp/acp-agent.ts +56 -10
  199. package/src/modes/acp/acp-event-mapper.ts +8 -1
  200. package/src/modes/components/agent-hub.ts +1 -1
  201. package/src/modes/components/assistant-message.ts +7 -2
  202. package/src/modes/components/custom-message.ts +4 -1
  203. package/src/modes/components/login-dialog.ts +14 -4
  204. package/src/modes/components/message-frame.ts +14 -8
  205. package/src/modes/components/plan-review-overlay.ts +350 -35
  206. package/src/modes/components/session-account-selector.ts +62 -0
  207. package/src/modes/components/settings-defs.ts +23 -1
  208. package/src/modes/components/settings-selector.ts +169 -1
  209. package/src/modes/components/status-line/component.jj-cache.test.ts +229 -0
  210. package/src/modes/components/status-line/component.ts +123 -2
  211. package/src/modes/components/tool-execution.ts +28 -112
  212. package/src/modes/controllers/command-controller.ts +56 -15
  213. package/src/modes/controllers/event-controller.ts +111 -16
  214. package/src/modes/controllers/extension-ui-controller.test.ts +1 -0
  215. package/src/modes/controllers/extension-ui-controller.ts +20 -4
  216. package/src/modes/controllers/input-controller.ts +47 -39
  217. package/src/modes/controllers/live-command-controller.ts +255 -0
  218. package/src/modes/controllers/mcp-command-controller.ts +10 -1
  219. package/src/modes/controllers/omfg-controller.ts +44 -40
  220. package/src/modes/controllers/selector-controller.ts +80 -10
  221. package/src/modes/controllers/session-focus-controller.ts +6 -1
  222. package/src/modes/interactive-mode.ts +176 -38
  223. package/src/modes/runtime-init.ts +2 -0
  224. package/src/modes/setup-wizard/scenes/web-search.ts +17 -9
  225. package/src/modes/theme/theme.ts +1 -1
  226. package/src/modes/types.ts +4 -1
  227. package/src/modes/utils/context-usage.ts +23 -7
  228. package/src/modes/utils/ui-helpers.ts +10 -5
  229. package/src/plan-mode/plan-files.ts +40 -0
  230. package/src/prompts/bench/cache-prefix-chunk.md +1 -0
  231. package/src/prompts/bench/cache-prefix.md +3 -0
  232. package/src/prompts/bench/cache-suffix.md +1 -0
  233. package/src/prompts/system/computer-safety.md +14 -0
  234. package/src/prompts/system/custom-system-prompt.md +1 -1
  235. package/src/prompts/system/project-prompt.md +8 -1
  236. package/src/prompts/system/subagent-async-pending.md +6 -0
  237. package/src/prompts/system/system-prompt.md +1 -1
  238. package/src/prompts/system/workflow-notice.md +48 -40
  239. package/src/prompts/system/xdev-mount-notice.md +4 -0
  240. package/src/prompts/tools/computer.md +26 -0
  241. package/src/prompts/tools/todo.md +3 -1
  242. package/src/registry/agent-lifecycle.ts +116 -46
  243. package/src/registry/agent-registry.ts +35 -8
  244. package/src/registry/persisted-agents.ts +26 -2
  245. package/src/sdk.ts +215 -136
  246. package/src/secrets/index.ts +127 -4
  247. package/src/secrets/obfuscator.ts +2328 -105
  248. package/src/session/acp-permission-gate.ts +165 -0
  249. package/src/session/agent-session-error-log.test.ts +1 -1
  250. package/src/session/agent-session-events.ts +66 -0
  251. package/src/session/agent-session-types.ts +343 -0
  252. package/src/session/agent-session.ts +1940 -12218
  253. package/src/session/artifacts.ts +6 -5
  254. package/src/session/async-job-delivery.ts +74 -0
  255. package/src/session/auth-storage.ts +1 -0
  256. package/src/session/bash-runner.ts +326 -0
  257. package/src/session/blob-store.test.ts +56 -0
  258. package/src/session/blob-store.ts +18 -2
  259. package/src/session/checkpoint-entries.ts +81 -0
  260. package/src/session/eval-runner.ts +217 -0
  261. package/src/session/indexed-session-storage.ts +9 -2
  262. package/src/session/irc-bridge.ts +203 -0
  263. package/src/session/messages.ts +266 -1
  264. package/src/session/model-controls.ts +714 -0
  265. package/src/session/prewalk.ts +252 -0
  266. package/src/session/queued-messages.ts +93 -0
  267. package/src/session/redis-session-storage.ts +51 -11
  268. package/src/session/retry-fallback-chains.ts +455 -0
  269. package/src/session/role-models.ts +85 -0
  270. package/src/session/session-advisors.ts +1679 -0
  271. package/src/session/session-context.ts +6 -3
  272. package/src/session/session-entries.ts +8 -0
  273. package/src/session/session-handoff.ts +308 -0
  274. package/src/session/session-history-format.ts +20 -9
  275. package/src/session/session-loader.ts +0 -46
  276. package/src/session/session-maintenance.ts +2983 -0
  277. package/src/session/session-manager.ts +390 -30
  278. package/src/session/session-memory.ts +222 -0
  279. package/src/session/session-provider-boundary.ts +307 -0
  280. package/src/session/session-stats.ts +293 -0
  281. package/src/session/session-tools.ts +980 -0
  282. package/src/session/session-workspace.ts +53 -0
  283. package/src/session/stream-guards.ts +417 -0
  284. package/src/session/streaming-output.ts +52 -5
  285. package/src/session/todo-tracker.ts +380 -0
  286. package/src/session/ttsr-coordinator.ts +496 -0
  287. package/src/session/turn-recovery.ts +1629 -0
  288. package/src/slash-commands/builtin-registry.ts +257 -20
  289. package/src/slash-commands/helpers/session-pin.ts +44 -0
  290. package/src/slash-commands/helpers/usage-report.ts +22 -3
  291. package/src/stt/downloader.ts +0 -2
  292. package/src/stt/index.ts +0 -2
  293. package/src/stt/stt-controller.ts +57 -146
  294. package/src/system-prompt.ts +45 -17
  295. package/src/task/executor.ts +285 -70
  296. package/src/task/index.ts +98 -105
  297. package/src/task/output-manager.ts +25 -3
  298. package/src/task/persisted-revive.ts +4 -3
  299. package/src/task/structured-subagent.ts +1 -0
  300. package/src/tiny/title-client.ts +22 -0
  301. package/src/tools/approval.ts +55 -10
  302. package/src/tools/bash-interactive.ts +116 -86
  303. package/src/tools/bash-skill-urls.ts +28 -2
  304. package/src/tools/bash.ts +339 -123
  305. package/src/tools/browser/launch.ts +9 -1
  306. package/src/tools/browser/tab-supervisor.ts +8 -5
  307. package/src/tools/browser.ts +94 -47
  308. package/src/tools/builtin-names.ts +1 -0
  309. package/src/tools/computer/protocol.ts +28 -0
  310. package/src/tools/computer/supervisor.ts +258 -0
  311. package/src/tools/computer/worker-entry.ts +25 -0
  312. package/src/tools/computer/worker.ts +135 -0
  313. package/src/tools/computer-renderer.ts +108 -0
  314. package/src/tools/computer.ts +433 -0
  315. package/src/tools/context.ts +2 -0
  316. package/src/tools/default-renderer.ts +139 -0
  317. package/src/tools/essential-tools.ts +1 -0
  318. package/src/tools/image-gen.ts +20 -28
  319. package/src/tools/image-providers.ts +50 -0
  320. package/src/tools/index.ts +14 -0
  321. package/src/tools/path-utils.ts +49 -2
  322. package/src/tools/read.ts +156 -88
  323. package/src/tools/renderers.ts +9 -1
  324. package/src/tools/todo.ts +101 -11
  325. package/src/tools/vibe.ts +1 -2
  326. package/src/tools/write.ts +51 -1
  327. package/src/tools/xdev.ts +121 -29
  328. package/src/tts/streaming-player.ts +82 -283
  329. package/src/tts/vocalizer.ts +18 -1
  330. package/src/utils/clipboard.ts +1 -30
  331. package/src/utils/jj.ts +125 -4
  332. package/src/utils/lang-from-path.ts +7 -0
  333. package/src/utils/mac-file-urls.applescript +37 -0
  334. package/src/utils/title-generator.ts +137 -1
  335. package/src/utils/tool-choice.ts +14 -0
  336. package/src/utils/tools-manager.ts +1 -19
  337. package/src/vibe/runtime.ts +852 -72
  338. package/src/web/search/index.ts +3 -6
  339. package/src/web/search/provider.ts +31 -16
  340. package/src/web/search/providers/xai.ts +7 -1
  341. package/src/web/search/types.ts +3 -0
  342. package/dist/types/stt/recorder.d.ts +0 -30
  343. package/dist/types/stt/transcriber.d.ts +0 -14
  344. package/dist/types/stt/wav.d.ts +0 -29
  345. package/dist/types/tts/player.d.ts +0 -32
  346. package/src/stt/recorder.ts +0 -551
  347. package/src/stt/transcriber.ts +0 -60
  348. package/src/stt/wav.ts +0 -173
  349. package/src/tts/player.ts +0 -137
@@ -1,142 +1,126 @@
1
- /**
2
- * Web/export palette the omp brand identity shared by the collab-web live
3
- * client (`my.omp.sh/`) and every public HTML export / share viewer (`/s/<id>`).
4
- *
5
- * Why this exists separately from `modes/theme/dark.json`: the `dark` theme is
6
- * the **default TUI theme** — its amber accent (`#febc38`) drives the terminal
7
- * status line, syntax highlighting, thinking levels, and bash/python mode
8
- * colors for every omp user. The public web artifacts want the collab-web
9
- * pink/purple identity instead, so they pin this palette rather than inheriting
10
- * the TUI's. Editing `dark.json` to repurpose it for the web would repaint
11
- * every terminal; this file keeps the two surfaces decoupled.
12
- *
13
- * Token layout — emitted as CSS custom properties on `:root`:
14
- * • Legacy export names consumed by `template.css` / `template.js`
15
- * (`--text`, `--body-bg`, `--container-bg`, `--info-bg`, `--accent`,
16
- * `--border`, `--success`, `--error`, `--warning`, `--muted`, `--dim`,
17
- * `--borderAccent`, `--selectedBg`, `--userMessageBg`, `--customMessageBg`,
18
- * `--customMessageLabel`, `--mdHeading`, `--mdLink`, `--mdCode`,
19
- * `--mdListBullet`, `--toolOutput`, `--thinkingText`, syntax*, …).
20
- * • collab-web-native aliases consumed by the `tv-` tool-render bridge
21
- * (`tool-render.css`: `var(--bg-inset, …)`, `var(--fg, …)`, …) so embedded
22
- * tool cards resolve to the *real* collab-web tokens and render
23
- * pixel-identical to the live client.
24
- *
25
- * Alpha-bearing tokens (`--border`, `--ring`, `--accent-muted`, …) keep their
26
- * `oklch(… / N%)` form — flattening them to opaque hex would produce harsh
27
- * white borders and non-matching translucent focus rings. Opaque surfaces are
28
- * sRGB hex (the collab-web `tokens.css` OKLCH dark-theme tokens converted via
29
- * the standard OKLab→linear-sRGB→gamma path); if the live client palette
30
- * changes, regenerate those from there.
31
- */
32
- export const WEB_EXPORT_PALETTE = {
33
- // --- collab-web-native aliases (tv- bridge) ---
34
- "--bg": "#0f0b14",
35
- "--bg-raised": "#16111c",
36
- "--bg-inset": "#09060c",
37
- "--bg-overlay": "#211b28",
38
- "--fg": "#e6e3ea",
39
- "--fg-muted": "#a49faa",
40
- "--fg-faint": "#6e6974",
41
- "--accent": "#ed4abf",
42
- "--accent-muted": "oklch(0.674 0.23 341 / 18%)",
43
- "--ok": "#68ca80",
44
- "--err": "#f05653",
45
- "--warn": "#e4b33f",
46
- "--ring": "oklch(0.817 0.112 205 / 70%)",
47
- "--font-mono": 'ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, monospace',
1
+ /** omp web palette bundled into standalone exports and the share viewer. */
2
+ export type WebExportScheme = "dark" | "light";
48
3
 
49
- // --- legacy export names (template.css / template.js) ---
50
- // surfaces map onto the collab-web purple ramp
51
- "--body-bg": "#0f0b14", // = --bg
52
- "--container-bg": "#16111c", // = --bg-raised
53
- "--info-bg": "#09060c", // = --bg-inset (recessed wells: code blocks, tool output)
54
- // text
55
- "--text": "#e6e3ea", // = --fg
56
- "--muted": "#a49faa", // = --fg-muted
57
- "--dim": "#6e6974", // = --fg-faint
58
- "--thinkingText": "#a49faa",
59
- // hairlines — white-alpha, matching collab-web's --border/--border-strong
60
- "--border": "oklch(1 0 0 / 9%)",
61
- "--borderMuted": "oklch(1 0 0 / 6%)",
62
- // accent + brand purple (the gradient's mid stop) for secondary highlights
4
+ const COMMON_EXPORT_PALETTE = {
5
+ "--font-mono": 'ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, monospace',
6
+ "--body-bg": "var(--bg)",
7
+ "--container-bg": "var(--bg-raised)",
8
+ "--info-bg": "var(--bg-inset)",
9
+ "--text": "var(--fg)",
10
+ "--muted": "var(--fg-muted)",
11
+ "--dim": "var(--fg-faint)",
12
+ "--thinkingText": "var(--fg-muted)",
13
+ "--borderMuted": "color-mix(in srgb, var(--border) 67%, transparent)",
63
14
  "--borderAccent": "#945ff9",
64
- "--selectedBg": "#2d2535",
65
- // status — semantic, used sparingly (cancelled / exit-code / success dots)
66
- "--success": "#68ca80", // = --ok
67
- "--error": "#f05653", // = --err
68
- "--warning": "#e4b33f", // = --warn
69
- // message bubbles
70
- "--userMessageBg": "oklch(0.674 0.23 341 / 6%)", // accent-tinted, like template.css user-message
71
- "--userMessageText": "#e6e3ea",
72
- "--customMessageBg": "#211b28", // = --bg-overlay
73
- "--customMessageText": "#a49faa", // = --fg-muted
74
- "--customMessageLabel": "#b281d6", // lilac, matching dark.json's label hue
75
- // tool surfaces
76
- "--toolPendingBg": "#16111c",
77
- "--toolSuccessBg": "#09060c",
78
- "--toolErrorBg": "oklch(0.66 0.19 25 / 14%)",
79
- "--toolTitle": "#e6e3ea",
80
- "--toolOutput": "#a49faa", // = --fg-muted
81
- // markdown
82
- "--mdHeading": "#ed4abf", // accent — headings carry the brand
83
- "--mdLink": "#5ad8e5", // ring cyan — links distinct from the pink accent
84
- "--mdLinkUrl": "#6e6974", // = --fg-faint
85
- "--mdCode": "#e6e3ea",
86
- "--mdCodeBlock": "#e6e3ea",
87
- "--mdCodeBlockBorder": "oklch(1 0 0 / 9%)",
88
- "--mdQuote": "#a49faa",
89
- "--mdQuoteBorder": "oklch(1 0 0 / 13%)",
90
- "--mdHr": "oklch(1 0 0 / 9%)",
91
- "--mdListBullet": "#ed4abf", // accent — bullets carry the brand
92
- // diff
93
- "--toolDiffAdded": "#68ca80",
94
- "--toolDiffRemoved": "#f05653",
95
- "--toolDiffContext": "#6e6974",
96
- // syntax — cool-neutral with pink/purple accents for keywords/types
97
- "--syntaxComment": "#6e6974", // = --fg-faint
98
- "--syntaxKeyword": "#945ff9", // brand purple
99
- "--syntaxFunction": "#e4b33f", // warn amber (analog of dark.json's DCDCAA)
100
- "--syntaxVariable": "#5ad8e5", // ring cyan
101
- "--syntaxString": "#68ca80", // ok green
102
- "--syntaxNumber": "#ed4abf", // accent
103
- "--syntaxType": "#b281d6", // lilac
104
- "--syntaxOperator": "#e6e3ea",
105
- "--syntaxPunctuation": "#a49faa",
106
- // thinking-level ramp — purple → lilac, matching the brand gradient
107
- "--thinkingOff": "#6e6974",
108
- "--thinkingMinimal": "#6e6974",
15
+ "--selectedBg": "var(--accent-muted)",
16
+ "--success": "var(--ok)",
17
+ "--error": "var(--err)",
18
+ "--warning": "var(--warn)",
19
+ "--userMessageBg": "var(--accent-muted)",
20
+ "--userMessageText": "var(--fg)",
21
+ "--customMessageBg": "var(--bg-overlay)",
22
+ "--customMessageText": "var(--fg-muted)",
23
+ "--customMessageLabel": "#945ff9",
24
+ "--toolPendingBg": "var(--bg-raised)",
25
+ "--toolSuccessBg": "var(--bg-inset)",
26
+ "--toolErrorBg": "color-mix(in srgb, var(--err) 14%, transparent)",
27
+ "--toolTitle": "var(--fg)",
28
+ "--toolOutput": "var(--fg-muted)",
29
+ "--mdHeading": "var(--accent)",
30
+ "--mdLink": "var(--link)",
31
+ "--mdLinkUrl": "var(--fg-faint)",
32
+ "--mdCode": "var(--fg)",
33
+ "--mdCodeBlock": "var(--fg)",
34
+ "--mdCodeBlockBorder": "var(--border)",
35
+ "--mdQuote": "var(--fg-muted)",
36
+ "--mdQuoteBorder": "var(--border-strong)",
37
+ "--mdHr": "var(--border)",
38
+ "--mdListBullet": "var(--accent)",
39
+ "--toolDiffAdded": "var(--ok)",
40
+ "--toolDiffRemoved": "var(--err)",
41
+ "--toolDiffContext": "var(--fg-faint)",
42
+ "--syntaxOperator": "var(--fg)",
43
+ "--syntaxPunctuation": "var(--fg-muted)",
44
+ "--thinkingOff": "var(--fg-faint)",
45
+ "--thinkingMinimal": "var(--fg-faint)",
109
46
  "--thinkingLow": "#945ff9",
110
47
  "--thinkingMedium": "#b281d6",
111
- "--thinkingHigh": "#ed4abf",
112
- "--thinkingXhigh": "#e4b33f",
113
- // mode tints (sidebar/role tags) — not surfaced in the export tree but
114
- // emitted for completeness so template.js role classes resolve cleanly
115
- "--bashMode": "#5ad8e5",
116
- "--pythonMode": "#e4b33f",
117
- // status-line tokens are TUI-only; not consumed by the export template, but
118
- // emitted so any future surface that reads them inherits the brand.
119
- "--statusLineBg": "#0f0b14",
120
- "--statusLineSep": "#6e6974",
121
- "--statusLineModel": "#ed4abf",
122
- "--statusLinePath": "#5ad8e5",
123
- "--statusLineGitClean": "#68ca80",
124
- "--statusLineGitDirty": "#e4b33f",
125
- "--statusLineContext": "#a49faa",
126
- "--statusLineSpend": "#5ad8e5",
127
- "--statusLineStaged": "#68ca80",
128
- "--statusLineDirty": "#e4b33f",
48
+ "--thinkingHigh": "var(--accent)",
49
+ "--thinkingXhigh": "var(--warn)",
50
+ "--bashMode": "#168b9a",
51
+ "--pythonMode": "var(--warn)",
52
+ "--statusLineBg": "var(--bg)",
53
+ "--statusLineSep": "var(--fg-faint)",
54
+ "--statusLineModel": "var(--accent)",
55
+ "--statusLinePath": "#168b9a",
56
+ "--statusLineGitClean": "var(--ok)",
57
+ "--statusLineGitDirty": "var(--warn)",
58
+ "--statusLineContext": "var(--fg-muted)",
59
+ "--statusLineSpend": "#168b9a",
60
+ "--statusLineStaged": "var(--ok)",
61
+ "--statusLineDirty": "var(--warn)",
129
62
  "--statusLineUntracked": "#945ff9",
130
63
  "--statusLineOutput": "#b281d6",
131
64
  "--statusLineCost": "#b281d6",
132
- "--statusLineSubagents": "#ed4abf",
65
+ "--statusLineSubagents": "var(--accent)",
133
66
  } as const satisfies Record<string, string>;
134
67
 
135
- /** Serialize the palette as `--key: value;` declarations for `:root { … }`. */
136
- export function webExportThemeVars(): string {
137
- let out = "";
138
- for (const k in WEB_EXPORT_PALETTE) {
139
- out += `${k}: ${WEB_EXPORT_PALETTE[k as keyof typeof WEB_EXPORT_PALETTE]}; `;
140
- }
141
- return out.trimEnd();
68
+ export const WEB_EXPORT_PALETTES = {
69
+ dark: {
70
+ "--bg": "#0f0b14",
71
+ "--bg-raised": "#16111c",
72
+ "--bg-inset": "#09060c",
73
+ "--bg-overlay": "#211b28",
74
+ "--fg": "#e6e3ea",
75
+ "--fg-muted": "#a49faa",
76
+ "--fg-faint": "#6e6974",
77
+ "--accent": "#ed4abf",
78
+ "--accent-muted": "oklch(0.674 0.23 341 / 18%)",
79
+ "--ok": "#68ca80",
80
+ "--err": "#f05653",
81
+ "--warn": "#e4b33f",
82
+ "--border": "oklch(1 0 0 / 9%)",
83
+ "--border-strong": "oklch(1 0 0 / 13%)",
84
+ "--ring": "oklch(0.817 0.112 205 / 70%)",
85
+ "--link": "#5ad8e5",
86
+ "--syntaxComment": "#6e6974",
87
+ "--syntaxKeyword": "#945ff9",
88
+ "--syntaxFunction": "#e4b33f",
89
+ "--syntaxVariable": "#5ad8e5",
90
+ "--syntaxString": "#68ca80",
91
+ "--syntaxNumber": "#ed4abf",
92
+ "--syntaxType": "#b281d6",
93
+ },
94
+ light: {
95
+ "--bg": "oklch(0.985 0.004 307)",
96
+ "--bg-raised": "oklch(1 0 0)",
97
+ "--bg-inset": "oklch(0.95 0.006 307)",
98
+ "--bg-overlay": "oklch(0.965 0.006 307)",
99
+ "--fg": "oklch(0.26 0.03 307)",
100
+ "--fg-muted": "oklch(0.46 0.03 307)",
101
+ "--fg-faint": "oklch(0.58 0.025 307)",
102
+ "--accent": "oklch(0.62 0.23 341)",
103
+ "--accent-muted": "oklch(0.62 0.23 341 / 14%)",
104
+ "--ok": "oklch(0.55 0.13 150)",
105
+ "--err": "oklch(0.55 0.19 25)",
106
+ "--warn": "oklch(0.6 0.13 85)",
107
+ "--border": "oklch(0 0 0 / 10%)",
108
+ "--border-strong": "oklch(0 0 0 / 15%)",
109
+ "--ring": "oklch(0.58 0.13 230 / 70%)",
110
+ "--link": "#0f7a88",
111
+ "--syntaxComment": "#77717c",
112
+ "--syntaxKeyword": "#6d35c7",
113
+ "--syntaxFunction": "#8a6000",
114
+ "--syntaxVariable": "#087f8c",
115
+ "--syntaxString": "#247a3d",
116
+ "--syntaxNumber": "#b51f88",
117
+ "--syntaxType": "#7b3fa2",
118
+ },
119
+ } as const satisfies Record<WebExportScheme, Record<string, string>>;
120
+
121
+ /** Serialize one web color scheme as CSS custom-property declarations. */
122
+ export function webExportThemeVars(scheme: WebExportScheme): string {
123
+ return Object.entries({ ...COMMON_EXPORT_PALETTE, ...WEB_EXPORT_PALETTES[scheme] })
124
+ .map(([key, value]) => `${key}: ${value};`)
125
+ .join(" ");
142
126
  }