@desplega.ai/agent-swarm 2.7.6 → 2.7.7

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 (244) hide show
  1. package/dist/{acp-adapter-bp91d37f.js → acp-adapter-7b4vk3h5.js} +5 -4
  2. package/dist/{actions-yj0eeaqh.js → actions-3tt153af.js} +18 -18
  3. package/dist/{amp-adapter-4pg9h34q.js → amp-adapter-njpts0yr.js} +1 -1
  4. package/dist/{anthropic-messages-x4q6rfq5.js → anthropic-messages-xey2skwx.js} +7 -7
  5. package/dist/{app-909e97cr.js → app-nky4378f.js} +3 -3
  6. package/dist/{assistant-qdyb5fyy.js → assistant-jnb669pa.js} +19 -19
  7. package/dist/{azure-openai-responses-s1w5n70z.js → azure-openai-responses-26t7j9ra.js} +5 -5
  8. package/dist/{boot-reembed-fk0s9z18.js → boot-reembed-9mgvaztt.js} +1 -1
  9. package/dist/{boot-reembed-gs1rzrnh.js → boot-reembed-qs2djdej.js} +1 -1
  10. package/dist/{boot-scrub-sweep-4qfd4kfx.js → boot-scrub-sweep-yjpdj7s1.js} +3 -3
  11. package/dist/{boot-seeds-yr00k13d.js → boot-seeds-5cm6ambd.js} +4 -4
  12. package/dist/{boxd-vdmfssd9.js → boxd-nv507va8.js} +1 -1
  13. package/dist/{claude-adapter-qta1f1xn.js → claude-adapter-fn287zmm.js} +5 -4
  14. package/dist/{claude-managed-setup-sc6j4dm0.js → claude-managed-setup-wtdz2mj2.js} +1 -1
  15. package/dist/{claude-sdk-session-zgrz6yvc.js → claude-sdk-session-x91kqyhm.js} +8288 -8224
  16. package/dist/{cli-wp9sp1qb.js → cli-08bmz9z9.js} +1 -1
  17. package/dist/{cli-yy3rhsdw.js → cli-1c6tzt8g.js} +7 -7
  18. package/dist/{cli-q0k1w5zd.js → cli-35rsp8ye.js} +1 -1
  19. package/dist/{cli-xnrwazav.js → cli-3fg0bdcv.js} +1 -1
  20. package/dist/{cli-89knwags.js → cli-5b456bpf.js} +2 -2
  21. package/dist/{cli-drr5v6av.js → cli-5jnhv72d.js} +1 -1
  22. package/dist/{cli-dxae2yg7.js → cli-5zx699j9.js} +2 -2
  23. package/dist/{cli-0at8w34w.js → cli-6g0hb4cp.js} +8 -8
  24. package/dist/{cli-e3r2neck.js → cli-6pfd54vx.js} +5 -5
  25. package/dist/{cli-bsn8nhrq.js → cli-6vcp76qk.js} +3 -3
  26. package/dist/{cli-ekwks2vs.js → cli-72v799xn.js} +1 -1
  27. package/dist/cli-82j36f2m.js +45 -0
  28. package/dist/{cli-yx4kfngt.js → cli-8305gbq0.js} +29 -16
  29. package/dist/{cli-4necwtsv.js → cli-8sckt74b.js} +8 -8
  30. package/dist/{cli-vvpx3gsx.js → cli-95jzxcp3.js} +1 -1
  31. package/dist/{cli-hr2e2fft.js → cli-adeegh7d.js} +7 -7
  32. package/dist/{cli-m48g6p95.js → cli-afkqkrtw.js} +3 -3
  33. package/dist/{cli-0qatpy8q.js → cli-ayayvfg4.js} +24 -4
  34. package/dist/{cli-bqt1mptt.js → cli-az48n0nr.js} +4 -4
  35. package/dist/{cli-zm72anhg.js → cli-bfv7vdg6.js} +9 -9
  36. package/dist/{cli-hgaazk69.js → cli-caj33vcq.js} +5 -5
  37. package/dist/{cli-3ypk9vk1.js → cli-cb2a8pna.js} +1 -1
  38. package/dist/{cli-waqbxg08.js → cli-cppkf404.js} +17 -17
  39. package/dist/{cli-yn4kxs06.js → cli-ddaanqkd.js} +4 -4
  40. package/dist/{cli-386tyxxg.js → cli-e0kmphd6.js} +2 -2
  41. package/dist/{cli-54t00gt8.js → cli-e46hg0xw.js} +1 -1
  42. package/dist/{cli-jm2vfpfd.js → cli-e5bzrn01.js} +1 -1
  43. package/dist/{cli-436532ck.js → cli-excnnjg2.js} +165 -153
  44. package/dist/{cli-71ptav7x.js → cli-ferkkrg9.js} +1 -1
  45. package/dist/{cli-vpf89f34.js → cli-fmjd0t1y.js} +3 -3
  46. package/dist/{cli-pd7vagab.js → cli-fyt2g4wd.js} +3 -3
  47. package/dist/{cli-gdhpcbhf.js → cli-g08zdaec.js} +1 -1
  48. package/dist/{cli-ehq736cn.js → cli-g7s47cc5.js} +4 -4
  49. package/dist/{cli-svj5090z.js → cli-gz6q4eve.js} +3 -3
  50. package/dist/{cli-8snvgs5r.js → cli-je518txm.js} +10 -10
  51. package/dist/{cli-rmmmrjkd.js → cli-jtjtabxe.js} +1 -1
  52. package/dist/{cli-611a1294.js → cli-k0wwfqbg.js} +18 -1
  53. package/dist/{cli-es6va8jk.js → cli-k1nje3v3.js} +38 -43
  54. package/dist/{cli-p5gp8pcx.js → cli-k8196sh2.js} +6 -6
  55. package/dist/{cli-nwj0ee2w.js → cli-k899ehvh.js} +2 -2
  56. package/dist/{cli-decfb6v8.js → cli-m0da8j35.js} +23 -9
  57. package/dist/{cli-he9wchme.js → cli-mkk9rnzz.js} +4 -4
  58. package/dist/{cli-nhrvpaj7.js → cli-n6bv12jn.js} +510 -4
  59. package/dist/{cli-8bc1w0tw.js → cli-nmzhp1b5.js} +14 -12
  60. package/dist/{cli-0yv5z2pg.js → cli-p82cnnjq.js} +1 -1
  61. package/dist/{cli-c60vetmm.js → cli-pc6n7fre.js} +1 -1
  62. package/dist/{cli-xds5f77d.js → cli-pjctyea3.js} +2 -2
  63. package/dist/{cli-xbbndvjy.js → cli-pq73h5mz.js} +3 -3
  64. package/dist/{cli-aa6yxc7m.js → cli-pz4rk021.js} +1 -1
  65. package/dist/{cli-xnqgpshy.js → cli-q3tkegby.js} +1 -1
  66. package/dist/cli-qghe0h66.js +67 -0
  67. package/dist/{cli-zbbwez0r.js → cli-qh4d4tvk.js} +4 -4
  68. package/dist/{cli-w6dt9ged.js → cli-rtt8g4v9.js} +1 -1
  69. package/dist/{cli-1h3wcpbw.js → cli-snpj5zbj.js} +2 -2
  70. package/dist/{cli-a7v854rf.js → cli-tgrv9cjx.js} +263 -12
  71. package/dist/{cli-faxe6thg.js → cli-vz22fyqv.js} +186 -54
  72. package/dist/{cli-k2gzwsj2.js → cli-wk5yrfwd.js} +160 -26
  73. package/dist/{cli-shpbx5ee.js → cli-ws19768n.js} +1641 -49
  74. package/dist/{cli-70r77n04.js → cli-xae4g51r.js} +1 -1
  75. package/dist/{cli-kqdg1bsb.js → cli-yndmfxb3.js} +2 -2
  76. package/dist/{cli-bjb3z51z.js → cli-yyj3j5m4.js} +2 -2
  77. package/dist/cli.js +21 -21
  78. package/dist/{cloudflare-workers-ai-system-one-bm60fjm0.js → cloudflare-workers-ai-system-one-ef2a980q.js} +2 -2
  79. package/dist/{codex-adapter-ayd1fb6h.js → codex-adapter-cf2yxe9m.js} +3 -2
  80. package/dist/{codex-hook-9efm2x1m.js → codex-hook-a0c6g6t6.js} +1 -1
  81. package/dist/{codex-session-runner-jesa32xc.js → codex-session-runner-6vfzdgbd.js} +3 -2
  82. package/dist/{commands-hanewgf2.js → commands-t3mfy7vn.js} +3 -3
  83. package/dist/{controller-dt1n3c1q.js → controller-q7xrbaz0.js} +3 -3
  84. package/dist/{controllers-connect-xx8x64n5.js → controllers-connect-c6nm70kg.js} +19 -19
  85. package/dist/{cursor-adapter-9s4dwwdw.js → cursor-adapter-ftd81ga8.js} +1 -1
  86. package/dist/{db-3vttcbv4.js → db-dk572x25.js} +3 -3
  87. package/dist/{db-9dv0g1ab.js → db-vemtpmcc.js} +4 -2
  88. package/dist/{dispatcher-tx9hd1sv.js → dispatcher-kh7ecxh9.js} +17 -17
  89. package/dist/{dsh-adapter-007y4ejs.js → dsh-adapter-v8628r89.js} +1 -1
  90. package/dist/{e2b-we6hs6q5.js → e2b-fr12yccx.js} +1 -1
  91. package/dist/{e2b-a19d28rz.js → e2b-x6ywzak3.js} +1 -1
  92. package/dist/{easter-egg-3d-rgbrqb8s.js → easter-egg-3d-nenw4x63.js} +1 -1
  93. package/dist/{embedding-space-ny1e2940.js → embedding-space-0jepb239.js} +6 -6
  94. package/dist/{embeddings-2t386t13.js → embeddings-xxt49yxg.js} +1 -1
  95. package/dist/{execute-pksh0ceh.js → execute-1mhw6e4x.js} +1 -1
  96. package/dist/{external-channel-phgmhmd7.js → external-channel-55v12e60.js} +2 -2
  97. package/dist/{fx-adapter-fy8rr921.js → fx-adapter-bs8wqrk5.js} +6 -5
  98. package/dist/{google-generative-ai-8y3m3k4b.js → google-generative-ai-v94hr7h0.js} +5 -5
  99. package/dist/{google-vertex-w3v98n7b.js → google-vertex-g7vr6cf8.js} +5 -5
  100. package/dist/{grok-adapter-q0abvpaj.js → grok-adapter-gpjqmkcq.js} +6 -5
  101. package/dist/handlers-zxmp1ta4.js +32 -0
  102. package/dist/{heartbeat-kadyek8p.js → heartbeat-k42svnr0.js} +20 -20
  103. package/dist/{hook-9k551xnj.js → hook-114m7hap.js} +4 -3
  104. package/dist/{hook-5zs3msf6.js → hook-6nphweh0.js} +24 -9
  105. package/dist/{http-mhz9vw1f.js → http-r8cc4wz7.js} +1025 -173
  106. package/dist/index-a8phxqnk.js +37 -0
  107. package/dist/{index-vdygbq10.js → index-e3s8wmxy.js} +1 -1
  108. package/dist/{index-q361cg2f.js → index-fpk4bcd9.js} +1 -1
  109. package/dist/index-k6h00t4c.js +30 -0
  110. package/dist/{index-rvr00sg7.js → index-nh3wyqdt.js} +1017 -574
  111. package/dist/index-xrz7te8h.js +33 -0
  112. package/dist/{keepalive-w56f32cg.js → keepalive-x060nt9p.js} +3 -3
  113. package/dist/lead-956sd2yc.js +71 -0
  114. package/dist/{maintenance-7mdgxcea.js → maintenance-2xxfexhf.js} +1 -1
  115. package/dist/{mistral-conversations-4pmwj1c0.js → mistral-conversations-3gjpdb4b.js} +4 -4
  116. package/dist/{oauth-refresh-sweep-29txy9vk.js → oauth-refresh-sweep-fckc4ar5.js} +2 -2
  117. package/dist/{onboard-kpsrkarj.js → onboard-zc48j237.js} +3 -3
  118. package/dist/{openai-codex-responses-44j573nm.js → openai-codex-responses-8pbxq9h5.js} +5 -5
  119. package/dist/{openai-completions-a4gee2a8.js → openai-completions-rm00s912.js} +4 -4
  120. package/dist/{openai-decisions-w4qkrcar.js → openai-decisions-8v957r2r.js} +1 -1
  121. package/dist/{openai-responses-rbp6h5kr.js → openai-responses-agxpf96k.js} +5 -5
  122. package/dist/{opencode-adapter-j25vm3rr.js → opencode-adapter-r690h1cr.js} +4 -3
  123. package/dist/{otel-impl-6kkct7a8.js → otel-impl-r5xbh81q.js} +4 -4
  124. package/dist/{pi-mono-adapter-exhkzhn2.js → pi-mono-adapter-c7v8sdec.js} +7 -6
  125. package/dist/{pricing-refresh-n2x7jh6k.js → pricing-refresh-3pmre11v.js} +3 -3
  126. package/dist/{rbac-roles-81ypx6es.js → rbac-roles-3vbshwsb.js} +1 -1
  127. package/dist/{rbac-roles-b5htkjby.js → rbac-roles-910mmkgz.js} +2 -2
  128. package/dist/{render-v2-qn6jmpk4.js → render-v2-pxykkbab.js} +3 -3
  129. package/dist/{resume-wd30wx23.js → resume-adda0bwy.js} +6 -6
  130. package/dist/{runtime-4hsg7h60.js → runtime-fnbm7stk.js} +1 -1
  131. package/dist/{session-access-5qvfevhk.js → session-access-2fvamrdc.js} +4 -4
  132. package/dist/{session-source-backfill-n1czavbr.js → session-source-backfill-08xvv0sm.js} +2 -2
  133. package/dist/{setup-dnb56qy5.js → setup-1aqmvmh1.js} +1 -1
  134. package/dist/{typesafe-system-one-5mavm259.js → typesafe-system-one-0bmqcxfg.js} +2 -2
  135. package/dist/{virtual-modules-76xxv9fs.js → virtual-modules-d2pjk9j1.js} +5 -5
  136. package/dist/{work-objects-4n21tfkm.js → work-objects-9s0yrm5j.js} +20 -20
  137. package/dist/{worker-follow-up-77hvzxww.js → worker-follow-up-3q78fqmr.js} +17 -17
  138. package/dist/worker-y15hy08h.js +71 -0
  139. package/openapi.json +197 -4
  140. package/package.json +5 -5
  141. package/src/apps/definition.ts +6 -5
  142. package/src/be/db/page-theme-tokens.ts +12 -0
  143. package/src/be/db/tasks/read.ts +9 -1
  144. package/src/be/db/tasks/write.ts +19 -0
  145. package/src/be/db-client.ts +107 -7
  146. package/src/be/db.ts +34 -2
  147. package/src/be/migrations/269_pages_design_system.sql +23 -0
  148. package/src/be/seed/schedules-seeder.ts +0 -10
  149. package/src/be/seed-scripts/catalog/catalog-report.inline.ts +2 -0
  150. package/src/be/seed-scripts/catalog/catalog-report.ts +2 -0
  151. package/src/be/seed-scripts/catalog/memory-eval.ts +2 -0
  152. package/src/be/seed-scripts/catalog/swarm-update-check.ts +150 -0
  153. package/src/be/seed-scripts/index.ts +9 -0
  154. package/src/be/seed-skills/bundled-files.generated.json +3 -3
  155. package/src/be/swarm-config-guard.ts +32 -0
  156. package/src/be/task-auto-title-listener.ts +127 -0
  157. package/src/commands/onboard/agent-fs-version.ts +1 -1
  158. package/src/commands/profile-sync.ts +151 -16
  159. package/src/commands/runner.ts +15 -7
  160. package/src/hooks/hook.ts +20 -9
  161. package/src/http/index.ts +3 -0
  162. package/src/http/pages-public.ts +93 -129
  163. package/src/http/pages.ts +94 -21
  164. package/src/pages/browser-sdk.ts +48 -21
  165. package/src/pages/color-literals.ts +115 -0
  166. package/src/pages/page-head.ts +766 -0
  167. package/src/pages/version.ts +3 -0
  168. package/src/providers/amp-adapter.ts +1 -1
  169. package/src/providers/codex-adapter.ts +1 -0
  170. package/src/providers/codex-app-server.ts +27 -1
  171. package/src/providers/pi-mono-extension.ts +30 -15
  172. package/src/tasks/follow-up-gate.ts +318 -0
  173. package/src/tasks/worker-follow-up.ts +21 -1
  174. package/src/tests/codex-app-server.test.ts +59 -0
  175. package/src/tests/codex-gateway-route.test.ts +50 -1
  176. package/src/tests/create-page-tool.test.ts +501 -0
  177. package/src/tests/db-client-busy-retry.test.ts +81 -0
  178. package/src/tests/db-task-read-contract.test.ts +1 -0
  179. package/src/tests/db-task-write-contract.test.ts +2 -0
  180. package/src/tests/db-tasks-read.test.ts +21 -0
  181. package/src/tests/fixtures/pages/head-v1.html +56 -0
  182. package/src/tests/follow-up-gate-shadow.test.ts +513 -0
  183. package/src/tests/identity-field-budget.test.ts +1 -1
  184. package/src/tests/internal-ai/credentials.test.ts +62 -0
  185. package/src/tests/internal-ai/task-title.test.ts +283 -0
  186. package/src/tests/merge-gate-detect-changes.test.ts +145 -0
  187. package/src/tests/page-proxy.test.ts +1 -1
  188. package/src/tests/page-session-dev-cookie.test.ts +188 -0
  189. package/src/tests/pages-frame-ancestors.test.ts +28 -1
  190. package/src/tests/pages-head-v2.test.ts +534 -0
  191. package/src/tests/pages-http.test.ts +330 -0
  192. package/src/tests/pages-public-html.test.ts +43 -0
  193. package/src/tests/pages-storage.test.ts +182 -0
  194. package/src/tests/pages-versioning.test.ts +72 -0
  195. package/src/tests/profile-sync-stale-writeback.test.ts +334 -0
  196. package/src/tests/profile-sync.test.ts +11 -15
  197. package/src/tests/scheduled-task-required-params-migration.test.ts +3 -1
  198. package/src/tests/script-connections.test.ts +2 -0
  199. package/src/tests/seed-registry.test.ts +28 -6
  200. package/src/tests/seed-schedules.test.ts +61 -8
  201. package/src/tests/seed-scripts.test.ts +142 -2
  202. package/src/tests/swarm-diff.test.ts +121 -2
  203. package/src/tests/task-auto-title-config-guard.test.ts +37 -0
  204. package/src/tests/task-auto-title-listener.test.ts +165 -0
  205. package/src/tests/theme-import.test.ts +758 -0
  206. package/src/tests/themes-page-theme.test.ts +155 -0
  207. package/src/tests/themes-presets.test.ts +172 -0
  208. package/src/tests/workflow-script-principal.test.ts +2 -1
  209. package/src/themes/classics.ts +949 -0
  210. package/src/themes/import.ts +420 -0
  211. package/src/themes/page-fields.ts +40 -0
  212. package/src/themes/page-theme.ts +102 -0
  213. package/src/themes/presets.ts +561 -0
  214. package/src/themes/tokens.ts +218 -0
  215. package/src/tools/app-upsert.ts +1 -1
  216. package/src/tools/create-page.ts +118 -12
  217. package/src/tools/utils.ts +33 -0
  218. package/src/types.ts +45 -3
  219. package/src/utils/constants.ts +19 -0
  220. package/src/utils/follow-up-gate-schedule-ids.ts +13 -0
  221. package/src/utils/internal-ai/credentials.ts +146 -93
  222. package/src/utils/internal-ai/index.ts +10 -0
  223. package/src/utils/internal-ai/models.ts +18 -0
  224. package/src/utils/internal-ai/task-title.ts +282 -0
  225. package/src/utils/page-session.ts +37 -0
  226. package/templates/schedules/daily-status-report/content.md +88 -2
  227. package/templates/schedules/daily-swarm-update-check/content.md +16 -40
  228. package/templates/skills/apps/SKILL.md +1 -1
  229. package/templates/skills/apps/content.md +1 -1
  230. package/templates/skills/heartbeat-runbook/content.md +1 -1
  231. package/templates/skills/pages/config.json +1 -1
  232. package/templates/skills/pages/content.md +539 -86
  233. package/templates/skills/pages/files/examples/annotated-pr.html +21 -12
  234. package/templates/skills/pages/files/examples/multiplayer-board.html +41 -41
  235. package/templates/skills/pages/files/examples/report-page.html +125 -124
  236. package/dist/cli-2pnswgh8.js +0 -189
  237. package/dist/handlers-by3sfxyx.js +0 -32
  238. package/dist/index-4f2pvxae.js +0 -37
  239. package/dist/index-98gz7tmp.js +0 -30
  240. package/dist/index-k08z2cak.js +0 -33
  241. package/dist/lead-enq35nqp.js +0 -70
  242. package/dist/worker-gg1576j3.js +0 -70
  243. package/templates/schedules/daily-workflow-health-audit/config.json +0 -19
  244. package/templates/schedules/daily-workflow-health-audit/content.md +0 -191
@@ -115,6 +115,9 @@ import {
115
115
  init_api_drain2,
116
116
  parseEnabledTools,
117
117
  init_enabled_tools,
118
+ parseFollowUpGateScheduleIds,
119
+ isFollowUpGateScheduleId,
120
+ init_follow_up_gate_schedule_ids,
118
121
  tierConfigKey,
119
122
  init_model_tier_keys,
120
123
  isInternalConfigKey,
@@ -351,17 +354,17 @@ import {
351
354
  recordInlineScriptRun2,
352
355
  exports_db,
353
356
  init_db4
354
- } from "./cli-k2gzwsj2.js";
357
+ } from "./cli-wk5yrfwd.js";
355
358
  import {
356
359
  getUserGrant2,
357
360
  init_rbac_roles
358
- } from "./cli-rmmmrjkd.js";
361
+ } from "./cli-jtjtabxe.js";
359
362
  import {
360
363
  ensurePricingSeeded2,
361
364
  ensureRbacSeeded2,
362
365
  ensureModelProfilesSeeded2,
363
366
  init_boot_seeds
364
- } from "./cli-zbbwez0r.js";
367
+ } from "./cli-qh4d4tvk.js";
365
368
  import {
366
369
  buildCatalogEntries,
367
370
  listModelCatalog,
@@ -373,7 +376,7 @@ import {
373
376
  requestModelCatalogRefresh2,
374
377
  startPricingRefreshLoop2,
375
378
  init_pricing_refresh
376
- } from "./cli-89knwags.js";
379
+ } from "./cli-5b456bpf.js";
377
380
  import {
378
381
  workflowEventBus2,
379
382
  init_event_bus
@@ -386,7 +389,7 @@ import {
386
389
  externalChannelToolError2,
387
390
  getChannelBlockReason2,
388
391
  init_external_channel
389
- } from "./cli-w6dt9ged.js";
392
+ } from "./cli-rtt8g4v9.js";
390
393
  import {
391
394
  noteSlackInboundSideEffect,
392
395
  init_inbound_dispatch,
@@ -421,7 +424,7 @@ import {
421
424
  startSlackApp2,
422
425
  stopSlackApp2,
423
426
  init_app3
424
- } from "./cli-waqbxg08.js";
427
+ } from "./cli-cppkf404.js";
425
428
  import {
426
429
  shapeApprovalResolution,
427
430
  init_approval_resolution,
@@ -445,7 +448,7 @@ import {
445
448
  resumeFromChildRun2,
446
449
  initWaitBusSubscriptions2,
447
450
  init_resume
448
- } from "./cli-m48g6p95.js";
451
+ } from "./cli-afkqkrtw.js";
449
452
  import {
450
453
  FilesError,
451
454
  providerPath,
@@ -459,7 +462,7 @@ import {
459
462
  import {
460
463
  getRuntimePool2,
461
464
  init_db2
462
- } from "./cli-yn4kxs06.js";
465
+ } from "./cli-ddaanqkd.js";
463
466
  import {
464
467
  duplicateGuardedQueryKey,
465
468
  parseQueryParams,
@@ -492,7 +495,7 @@ import {
492
495
  findRoute,
493
496
  route,
494
497
  init_route_def
495
- } from "./cli-4necwtsv.js";
498
+ } from "./cli-8sckt74b.js";
496
499
  import {
497
500
  COMPOSIO_HTTP_METHODS,
498
501
  executeComposioRequest,
@@ -504,7 +507,7 @@ import {
504
507
  ampPinCatalogError,
505
508
  ampModelError,
506
509
  init_amp_models
507
- } from "./cli-q0k1w5zd.js";
510
+ } from "./cli-35rsp8ye.js";
508
511
  import {
509
512
  object,
510
513
  init_v4_mini
@@ -525,7 +528,7 @@ import {
525
528
  import {
526
529
  loadModelsDevCache,
527
530
  init_modelsdev_cache
528
- } from "./cli-c60vetmm.js";
531
+ } from "./cli-pc6n7fre.js";
529
532
  import {
530
533
  require_dist2,
531
534
  ConnectionAuthInputSchema,
@@ -604,7 +607,7 @@ import {
604
607
  init_typecheck,
605
608
  parseSkillContent,
606
609
  init_skill_parser
607
- } from "./cli-hr2e2fft.js";
610
+ } from "./cli-adeegh7d.js";
608
611
  import {
609
612
  detachedProcessGroup,
610
613
  registerProcessGroup,
@@ -619,7 +622,7 @@ import {
619
622
  ensureToken,
620
623
  ensureTokenOrThrow,
621
624
  init_ensure_token
622
- } from "./cli-xnqgpshy.js";
625
+ } from "./cli-q3tkegby.js";
623
626
  import {
624
627
  require_fast_deep_equal
625
628
  } from "./cli-bhp11egn.js";
@@ -714,7 +717,7 @@ import {
714
717
  validateDefinition,
715
718
  applyDefinitionPatch,
716
719
  init_definition2
717
- } from "./cli-8bc1w0tw.js";
720
+ } from "./cli-nmzhp1b5.js";
718
721
  import {
719
722
  isMultiRuntimeEnabled,
720
723
  init_multi_runtime2
@@ -735,15 +738,15 @@ import {
735
738
  isSlackLeaveThreadDisabled,
736
739
  leaveSlackThread,
737
740
  init_left_threads
738
- } from "./cli-gdhpcbhf.js";
741
+ } from "./cli-g08zdaec.js";
739
742
  import {
740
743
  publicEndpointSsrfOptions,
741
744
  init_mcp_wrapper
742
- } from "./cli-hgaazk69.js";
745
+ } from "./cli-caj33vcq.js";
743
746
  import {
744
747
  canProvisionKind,
745
748
  init_runtime_providers
746
- } from "./cli-kqdg1bsb.js";
749
+ } from "./cli-yndmfxb3.js";
747
750
  import {
748
751
  findUserById,
749
752
  findUserByExternalId,
@@ -758,7 +761,7 @@ import {
758
761
  resolveSessionToken,
759
762
  fingerprintApiKey,
760
763
  init_users
761
- } from "./cli-drr5v6av.js";
764
+ } from "./cli-5jnhv72d.js";
762
765
  import {
763
766
  isRbacEnabled,
764
767
  decideAdmission,
@@ -776,6 +779,11 @@ import {
776
779
  init_key,
777
780
  isSafeBundlePath,
778
781
  init_bundle_path,
782
+ PAGE_THEME_COLOR_TOKENS,
783
+ init_tokens2,
784
+ ThemeImportError,
785
+ importThemeTokens,
786
+ init_import,
779
787
  $OpenAPIRegistry,
780
788
  $OpenApiGeneratorV31,
781
789
  init_dist6,
@@ -816,6 +824,7 @@ import {
816
824
  InputValueSchema,
817
825
  PageContentTypeSchema,
818
826
  PageAuthModeSchema,
827
+ PageThemeTokensInputSchema,
819
828
  MetricDefinitionSchema,
820
829
  WorkflowRunStatusSchema,
821
830
  ScriptRunStatusSchema,
@@ -829,7 +838,7 @@ import {
829
838
  KvNamespaceSchema,
830
839
  KvKeySchema,
831
840
  init_types4
832
- } from "./cli-nhrvpaj7.js";
841
+ } from "./cli-n6bv12jn.js";
833
842
  import {
834
843
  generateDefaultClaudeMd2,
835
844
  generateDefaultSoulMd2,
@@ -840,7 +849,7 @@ import {
840
849
  init_task_attachment_links,
841
850
  contentSha256,
842
851
  init_profile_sync
843
- } from "./cli-a7v854rf.js";
852
+ } from "./cli-tgrv9cjx.js";
844
853
  import {
845
854
  getSlackConfiguration,
846
855
  init_config4
@@ -894,14 +903,10 @@ import {
894
903
  datetime,
895
904
  number3
896
905
  } from "./cli-agfm16v9.js";
897
- import {
898
- getNodeEnv,
899
- init_node_env
900
- } from "./cli-rgeadyvq.js";
901
906
  import {
902
907
  init_package,
903
908
  package_default
904
- } from "./cli-e3r2neck.js";
909
+ } from "./cli-6pfd54vx.js";
905
910
  import {
906
911
  realtimeBus,
907
912
  init_bus
@@ -918,12 +923,17 @@ import {
918
923
  getCombState,
919
924
  isAgentFsProxyEnabled,
920
925
  init_constants3
921
- } from "./cli-611a1294.js";
926
+ } from "./cli-k0wwfqbg.js";
922
927
  import {
923
928
  parseEnvFlag,
924
929
  isEnvFlagEnabled,
925
930
  init_env_flag
926
931
  } from "./cli-cebvbc9t.js";
932
+ import {
933
+ getNodeEnv,
934
+ isDevOrTestNodeEnv,
935
+ init_node_env
936
+ } from "./cli-rgeadyvq.js";
927
937
  import {
928
938
  getApiKey,
929
939
  init_api_key
@@ -20879,7 +20889,7 @@ function startRetryPoller(registry, intervalMs = 5000) {
20879
20889
  if (!waiting)
20880
20890
  continue;
20881
20891
  if (result.waitFor === "workflow.child.finished") {
20882
- const { resumeFromChildRun } = await import("./resume-wd30wx23.js");
20892
+ const { resumeFromChildRun } = await import("./resume-adda0bwy.js");
20883
20893
  await resumeFromChildRun(step.id, registry);
20884
20894
  }
20885
20895
  } else {
@@ -21592,7 +21602,7 @@ var init_notify = __esm(() => {
21592
21602
  }
21593
21603
  }
21594
21604
  case "slack": {
21595
- const { getSlackApp } = await import("./app-909e97cr.js");
21605
+ const { getSlackApp } = await import("./app-nky4378f.js");
21596
21606
  const app = getSlackApp();
21597
21607
  if (!app) {
21598
21608
  return {
@@ -24595,6 +24605,75 @@ function summarizeKvShape(root, maxEntries = 8, maxPathBytes = KV_SHAPE_PATH_BUD
24595
24605
  var KV_PATH_MAX_CHARS = 1024, KV_SHAPE_PATH_BUDGET_BYTES = 2048;
24596
24606
  var init_kv_view = () => {};
24597
24607
 
24608
+ // src/pages/color-literals.ts
24609
+ function attributeValues(html, attribute) {
24610
+ return Array.from(html.matchAll(attribute), (match) => match[1] ?? match[2] ?? "");
24611
+ }
24612
+ function classAttributeValues(html) {
24613
+ return attributeValues(html, CLASS_ATTRIBUTE);
24614
+ }
24615
+ function countMatches(regions, pattern) {
24616
+ return regions.reduce((total, region) => total + (region.match(pattern)?.length ?? 0), 0);
24617
+ }
24618
+ function countColorLiterals(html) {
24619
+ const styles = [
24620
+ ...Array.from(html.matchAll(STYLE_BLOCK), (match) => match[1] ?? ""),
24621
+ ...attributeValues(html, STYLE_ATTRIBUTE)
24622
+ ];
24623
+ return countMatches(styles, COLOR_LITERAL) + countMatches(styles, NAMED_COLOR) + countMatches(classAttributeValues(html), COLOR_CLASS);
24624
+ }
24625
+ var COLOR_LITERAL_THRESHOLD = 8, STYLE_BLOCK, STYLE_ATTRIBUTE, CLASS_ATTRIBUTE, COLOR_LITERAL, NAMED_COLOR, PALETTE_UTILITIES, TAILWIND_PALETTE, COLOR_CLASS;
24626
+ var init_color_literals = __esm(() => {
24627
+ STYLE_BLOCK = /<style\b[^>]{0,200}>([\s\S]*?)(?:<\/style\s*>|$)/gi;
24628
+ STYLE_ATTRIBUTE = /\sstyle\s*=\s*(?:"([^"]*)"|'([^']*)')/gi;
24629
+ CLASS_ATTRIBUTE = /\sclass\s*=\s*(?:"([^"]*)"|'([^']*)')/gi;
24630
+ COLOR_LITERAL = /#(?:[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{3,4})\b|\b(?:rgba?|hsla?|oklch)\(/gi;
24631
+ NAMED_COLOR = /(?<![\w.#-])(?:white|black)(?![\w-])/g;
24632
+ PALETTE_UTILITIES = [
24633
+ "bg",
24634
+ "text",
24635
+ "border",
24636
+ "ring",
24637
+ "outline",
24638
+ "divide",
24639
+ "fill",
24640
+ "stroke",
24641
+ "from",
24642
+ "via",
24643
+ "to",
24644
+ "decoration",
24645
+ "accent",
24646
+ "caret",
24647
+ "placeholder",
24648
+ "shadow"
24649
+ ];
24650
+ TAILWIND_PALETTE = [
24651
+ "slate",
24652
+ "gray",
24653
+ "zinc",
24654
+ "neutral",
24655
+ "stone",
24656
+ "red",
24657
+ "orange",
24658
+ "amber",
24659
+ "yellow",
24660
+ "lime",
24661
+ "green",
24662
+ "emerald",
24663
+ "teal",
24664
+ "cyan",
24665
+ "sky",
24666
+ "blue",
24667
+ "indigo",
24668
+ "violet",
24669
+ "purple",
24670
+ "fuchsia",
24671
+ "pink",
24672
+ "rose"
24673
+ ];
24674
+ COLOR_CLASS = new RegExp(`(?<![\\w-])(?:(?:${PALETTE_UTILITIES.join("|")})-(?:${TAILWIND_PALETTE.join("|")})-\\d+|(?:bg|text)-(?:white|black))(?![\\w-])|-\\[(?:#|rgb|hsl|oklch)`, "g");
24675
+ });
24676
+
24598
24677
  // src/tools/utils.ts
24599
24678
  function markScriptSdkRequestOrigin(meta) {
24600
24679
  scriptSdkRequestOrigins.add(meta);
@@ -24916,7 +24995,7 @@ function setPreloadedTools(server, names) {
24916
24995
  async function applyPreToolCall(name, args, requestInfo, inputSchema) {
24917
24996
  if (requestInfo.callOrigin !== "mcp")
24918
24997
  return { args };
24919
- const dispatcher = await import("./dispatcher-tx9hd1sv.js");
24998
+ const dispatcher = await import("./dispatcher-kh7ecxh9.js");
24920
24999
  const result = await dispatcher.dispatchPre("pre.tool.call", { tool: name, args, requestInfo }, inputSchema ? {
24921
25000
  validateModify: async (data) => {
24922
25001
  const schema = normalizeObjectSchema(inputSchema) ?? inputSchema;
@@ -25020,6 +25099,17 @@ var scriptSdkRequestOrigins, extensionRequestOrigins, getRequestInfo = (req) =>
25020
25099
  return;
25021
25100
  const hint = r.data?.longScriptTimeoutHint;
25022
25101
  return hint ? WORKFLOW_LONG_SCRIPT_TIMEOUT_NUDGE : undefined;
25102
+ }, createPageNudge = (r) => {
25103
+ if (!r.ok)
25104
+ return;
25105
+ const data = r.data;
25106
+ const count = data?.colorLiteralCount;
25107
+ const sentences = [
25108
+ data?.designVersion === 1 && data.usesDesignSystem === true ? "This page is on designVersion 1 (the original look), so design system classes, tokens and themes have no effect. Pass designVersion: 2." : undefined,
25109
+ data?.lightOnlyColors === true ? "Your themeTokens set colors for light mode only. Dark mode keeps the preset's dark colors; add a dark map (or a .dark block) to restyle it too." : undefined,
25110
+ typeof count === "number" && count >= COLOR_LITERAL_THRESHOLD ? `This page hardcodes ${count} color values. Use theme tokens (var(--color-primary), bg-primary, text-muted-foreground) so theme and dark-mode switches restyle it. Until then the page stays light in a dark dashboard.` : undefined
25111
+ ].filter((sentence) => sentence !== undefined);
25112
+ return sentences.length > 0 ? sentences.join(" ") : undefined;
25023
25113
  }, NUDGES, MCP_RESULT_WIRE_LIMIT_BYTES = 1e4, MCP_OVERFLOW_TTL_MS, MCP_PROSE_PREVIEW_FLOOR_CHARS = 1200, scrubMiddleware = (result) => result.allowSecretEgress ? result : scrubObject(result), nudgeMiddleware = (result, ctx) => {
25024
25114
  if (result.nudge)
25025
25115
  return result;
@@ -25141,6 +25231,7 @@ var init_utils = __esm(() => {
25141
25231
  init_kv_overflow();
25142
25232
  init_kv_view();
25143
25233
  init_otel();
25234
+ init_color_literals();
25144
25235
  init_types3();
25145
25236
  init_secret_scrubber();
25146
25237
  scriptSdkRequestOrigins = new WeakSet;
@@ -25178,6 +25269,7 @@ var init_utils = __esm(() => {
25178
25269
  "patch-workflow-node": workflowLongScriptTimeoutNudge,
25179
25270
  "slack-download-file": slackDownloadFileNudge,
25180
25271
  "slack-read": slackReadNudge,
25272
+ create_page: createPageNudge,
25181
25273
  "script-search": (r) => {
25182
25274
  if (!r.ok)
25183
25275
  return;
@@ -35881,7 +35973,7 @@ async function notifySlack(text) {
35881
35973
  return;
35882
35974
  }
35883
35975
  try {
35884
- const { getSlackApp } = await import("./app-909e97cr.js");
35976
+ const { getSlackApp } = await import("./app-nky4378f.js");
35885
35977
  const app = getSlackApp();
35886
35978
  if (!app) {
35887
35979
  console.warn("[Jira webhook keepalive] Slack not available, cannot send notification");
@@ -35952,7 +36044,7 @@ async function deleteJiraWebhook(webhookId) {
35952
36044
  console.log(`[Jira webhook keepalive] Deleted webhook id=${webhookId}`);
35953
36045
  }
35954
36046
  async function overwriteWebhookIds(next) {
35955
- const { getDbClient } = await import("./db-9dv0g1ab.js");
36047
+ const { getDbClient } = await import("./db-vemtpmcc.js");
35956
36048
  await getDbClient().transaction(async (tx) => {
35957
36049
  const row = await tx.get("SELECT metadata FROM oauth_apps WHERE provider = 'jira'");
35958
36050
  if (!row) {
@@ -109147,6 +109239,25 @@ async function extractLegacyPageSession(req) {
109147
109239
  async function extractAndVerifyCookie(req, pageId) {
109148
109240
  return (await extractPageSession(req, pageId))?.payload ?? null;
109149
109241
  }
109242
+ function isLocalHttpUrl(value) {
109243
+ try {
109244
+ const url = new URL(value);
109245
+ return url.protocol === "http:" && LOCAL_DEV_HOSTNAMES.has(url.hostname);
109246
+ } catch {
109247
+ return false;
109248
+ }
109249
+ }
109250
+ function isLocalDevPageRequest(req) {
109251
+ if (!isDevOrTestNodeEnv())
109252
+ return false;
109253
+ const origin = req.headers.origin ?? "";
109254
+ if (origin !== "")
109255
+ return isLocalHttpUrl(origin);
109256
+ const host = req.headers.host;
109257
+ if (!host)
109258
+ return true;
109259
+ return isLocalHttpUrl(`http://${host}`);
109260
+ }
109150
109261
  async function issuePageSessionCookie(pageId, opts) {
109151
109262
  const exp = Math.floor(Date.now() / 1000) + PAGE_SESSION_TTL_SECONDS;
109152
109263
  const token = await signPageSession({
@@ -109190,9 +109301,11 @@ async function pageSessionSetCookies(req, pageId, opts) {
109190
109301
  evict.add(name);
109191
109302
  return [issued, ...[...evict].map((name) => buildCookie(name, "", 0, opts.dev))];
109192
109303
  }
109193
- var ENV_SECRET = "PAGE_SESSION_SECRET", ENV_SECRET_FILE = "PAGE_SESSION_SECRET_FILE", SECRET_FILENAME = ".page-session-secret", GENERATED_SECRET_BYTES = 32, LEGACY_PAGE_SESSION_COOKIE = "page_session", COOKIE_SAFE_PAGE_ID, PAGE_SESSION_TTL_SECONDS = 3600, MAX_PAGE_SESSION_COOKIES = 20, PAGE_SESSION_COOKIE_RE;
109304
+ var ENV_SECRET = "PAGE_SESSION_SECRET", ENV_SECRET_FILE = "PAGE_SESSION_SECRET_FILE", SECRET_FILENAME = ".page-session-secret", GENERATED_SECRET_BYTES = 32, LEGACY_PAGE_SESSION_COOKIE = "page_session", COOKIE_SAFE_PAGE_ID, PAGE_SESSION_TTL_SECONDS = 3600, LOCAL_DEV_HOSTNAMES, MAX_PAGE_SESSION_COOKIES = 20, PAGE_SESSION_COOKIE_RE;
109194
109305
  var init_page_session = __esm(() => {
109306
+ init_node_env();
109195
109307
  COOKIE_SAFE_PAGE_ID = /^[A-Za-z0-9_-]{1,64}$/;
109308
+ LOCAL_DEV_HOSTNAMES = new Set(["localhost", "127.0.0.1"]);
109196
109309
  PAGE_SESSION_COOKIE_RE = new RegExp(`(?:^|;\\s*)(${LEGACY_PAGE_SESSION_COOKIE}_[A-Za-z0-9_-]{1,64})=([^;]*)`, "g");
109197
109310
  });
109198
109311
 
@@ -109425,7 +109538,7 @@ async function reloadGlobalConfigsAndIntegrations() {
109425
109538
  return runWithoutRequestAuth(() => reloadGlobalConfigsAndIntegrationsInner());
109426
109539
  }
109427
109540
  async function reloadGlobalConfigsAndIntegrationsInner() {
109428
- const { getEmbeddingProvider, resetEmbeddingProvider } = await import("./index-vdygbq10.js");
109541
+ const { getEmbeddingProvider, resetEmbeddingProvider } = await import("./index-e3s8wmxy.js");
109429
109542
  const wasEmbeddingsConfigured = getEmbeddingProvider().isConfigured();
109430
109543
  const updated = await loadGlobalConfigsIntoEnv(true);
109431
109544
  await syncTelemetryEnabled("settings").catch((err) => {
@@ -109441,7 +109554,7 @@ async function reloadGlobalConfigsAndIntegrationsInner() {
109441
109554
  integrations.push("embeddings");
109442
109555
  }
109443
109556
  if (isEmbeddingsConfigured) {
109444
- import("./embedding-space-ny1e2940.js").then(({ runEmbeddingMaintenance }) => runEmbeddingMaintenance({ backfill: !wasEmbeddingsConfigured })).catch((err) => {
109557
+ import("./embedding-space-0jepb239.js").then(({ runEmbeddingMaintenance }) => runEmbeddingMaintenance({ backfill: !wasEmbeddingsConfigured })).catch((err) => {
109445
109558
  console.error("[config-reload] embedding maintenance failed (non-fatal):", err);
109446
109559
  });
109447
109560
  }
@@ -114448,7 +114561,7 @@ var init_app_sync = __esm(() => {
114448
114561
  var registerAppUpsertTool = (server) => {
114449
114562
  createToolRegistrar(server)("app-upsert", {
114450
114563
  title: "Create or update an app",
114451
- description: "Stores a schema-backed app definition with models, queries/actions, pages, reusable elements, optional userConfig fields, and an optional top-level theme (a dashboard preset slug for the app's canvas — hive (stock; omit to inherit the viewer's theme), meadow, iris, rose, cobalt, ember, carbon, plus the classic presets github, vscode, material, solarized, tokyo, monokai, gruvbox, catppuccin; viewers can override it per-user; unknown slugs degrade to the viewer's dashboard theme), then returns its dashboard URL. userConfig is versioned schema only; each user's values are stored separately, survive rollback, and schema changes are always compatible. Pages may bind a declared field read-only at exactly /user/<field>; pure and bound reusable elements must receive that value through a prop. Elements are private by default: pure elements read declared props, allow $item/$index inside repeats, may expose one leaf ElementSlot, and cannot invoke actions; bound elements may use the defining app's queries/actions, while exported bound elements cannot navigate. Prop kinds include enum with a required non-empty enum values array. Pages or elements reuse them with literal ElementRef targets, and cross-app refs require export: true. Zero-model pure-UI apps are valid. Pass appId to update; breaking a referenced export is blocked by the compatibility gate unless forceElementBreak explicitly names it.",
114564
+ description: "Stores a schema-backed app definition with models, queries/actions, pages, reusable elements, optional userConfig fields, and an optional top-level theme (a dashboard preset slug for the app's canvas: hive (stock; omit to inherit the viewer's theme), meadow, iris, rose, cobalt, ember, carbon, paper (the warm editorial paper look), plus the classic presets github, vscode, material, solarized, tokyo, monokai, gruvbox, catppuccin; viewers can override it per-user; unknown slugs degrade to the viewer's dashboard theme), then returns its dashboard URL. userConfig is versioned schema only; each user's values are stored separately, survive rollback, and schema changes are always compatible. Pages may bind a declared field read-only at exactly /user/<field>; pure and bound reusable elements must receive that value through a prop. Elements are private by default: pure elements read declared props, allow $item/$index inside repeats, may expose one leaf ElementSlot, and cannot invoke actions; bound elements may use the defining app's queries/actions, while exported bound elements cannot navigate. Prop kinds include enum with a required non-empty enum values array. Pages or elements reuse them with literal ElementRef targets, and cross-app refs require export: true. Zero-model pure-UI apps are valid. Pass appId to update; breaking a referenced export is blocked by the compatibility gate unless forceElementBreak explicitly names it.",
114452
114565
  annotations: { destructiveHint: false },
114453
114566
  inputSchema: object2({
114454
114567
  name: string2().min(1).describe("Human-readable app name."),
@@ -116116,7 +116229,10 @@ async function snapshotPage(pageId, changedByAgentId) {
116116
116229
  authMode: page.authMode,
116117
116230
  passwordHash: page.passwordHash,
116118
116231
  body: page.body,
116119
- needsCredentials: page.needsCredentials
116232
+ needsCredentials: page.needsCredentials,
116233
+ theme: page.theme,
116234
+ themeTokens: page.themeTokens,
116235
+ designVersion: page.designVersion
116120
116236
  };
116121
116237
  return createPageVersion2({
116122
116238
  pageId,
@@ -116130,6 +116246,1245 @@ var init_version3 = __esm(() => {
116130
116246
  init_page_versions();
116131
116247
  });
116132
116248
 
116249
+ // src/themes/classics.ts
116250
+ var CLASSIC_THEME_PRESETS;
116251
+ var init_classics = __esm(() => {
116252
+ CLASSIC_THEME_PRESETS = [
116253
+ {
116254
+ id: "github",
116255
+ name: "GitHub",
116256
+ description: "Primer light / dark. Statuses from Primer's semantic fg colors.",
116257
+ accent: { light: "oklch(0.54 0.191 257.5)", dark: "oklch(0.663 0.169 255.9)" },
116258
+ field: { light: "oklch(1 0 0)", dark: "oklch(0.176 0.014 258.4)" },
116259
+ vars: {
116260
+ light: {
116261
+ "--color-background": "oklch(1 0 0)",
116262
+ "--color-foreground": "oklch(0.254 0.011 254)",
116263
+ "--color-card": "oklch(1 0 0)",
116264
+ "--color-card-foreground": "oklch(0.254 0.011 254)",
116265
+ "--color-surface": "oklch(0.978 0.003 247.9)",
116266
+ "--color-popover": "oklch(1 0 0)",
116267
+ "--color-popover-foreground": "oklch(0.254 0.011 254)",
116268
+ "--color-primary": "oklch(0.54 0.191 257.5)",
116269
+ "--color-primary-foreground": "oklch(1 0 0)",
116270
+ "--color-secondary": "oklch(0.978 0.003 247.9)",
116271
+ "--color-secondary-foreground": "oklch(0.254 0.011 254)",
116272
+ "--color-muted": "oklch(0.978 0.003 247.9)",
116273
+ "--color-muted-foreground": "oklch(0.495 0.022 250.8)",
116274
+ "--color-accent": "oklch(0.947 0.007 247.9)",
116275
+ "--color-accent-foreground": "oklch(0.254 0.011 254)",
116276
+ "--color-border": "oklch(0.876 0.012 248)",
116277
+ "--color-border-subtle": "oklch(0.898 0.01 247.9)",
116278
+ "--color-input": "oklch(0.876 0.012 248)",
116279
+ "--color-ring": "oklch(0.54 0.191 257.5)",
116280
+ "--color-chart-1": "oklch(0.54 0.191 257.5)",
116281
+ "--color-sidebar": "oklch(0.978 0.003 247.9)",
116282
+ "--color-sidebar-foreground": "oklch(0.254 0.011 254)",
116283
+ "--color-sidebar-primary": "oklch(0.54 0.191 257.5)",
116284
+ "--color-sidebar-primary-foreground": "oklch(1 0 0)",
116285
+ "--color-sidebar-accent": "oklch(0.947 0.007 247.9)",
116286
+ "--color-sidebar-accent-foreground": "oklch(0.254 0.011 254)",
116287
+ "--color-sidebar-border": "oklch(0.898 0.01 247.9)",
116288
+ "--color-sidebar-ring": "oklch(0.54 0.191 257.5)",
116289
+ "--color-status-success": "oklch(0.524 0.14 148)",
116290
+ "--color-status-success-strong": "oklch(0.524 0.14 148)",
116291
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116292
+ "--color-status-active": "oklch(0.662 0.137 79.3)",
116293
+ "--color-status-active-strong": "oklch(0.662 0.137 79.3)",
116294
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116295
+ "--color-status-error": "oklch(0.552 0.205 24.5)",
116296
+ "--color-status-error-strong": "oklch(0.552 0.205 24.5)",
116297
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116298
+ "--color-status-info": "oklch(0.54 0.191 257.5)",
116299
+ "--color-status-info-strong": "oklch(0.54 0.191 257.5)",
116300
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116301
+ "--color-status-pending": "oklch(0.554 0.117 75)",
116302
+ "--color-status-pending-strong": "oklch(0.554 0.117 75)",
116303
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
116304
+ "--color-status-warning": "oklch(0.557 0.16 44.7)",
116305
+ "--color-status-warning-strong": "oklch(0.557 0.16 44.7)",
116306
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116307
+ "--color-status-paused": "oklch(0.563 0.207 295)",
116308
+ "--color-status-paused-strong": "oklch(0.563 0.207 295)",
116309
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116310
+ "--color-status-neutral": "oklch(0.495 0.022 250.8)",
116311
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116312
+ },
116313
+ dark: {
116314
+ "--color-background": "oklch(0.176 0.014 258.4)",
116315
+ "--color-foreground": "oklch(0.97 0.01 247.9)",
116316
+ "--color-card": "oklch(0.22 0.018 255.7)",
116317
+ "--color-card-foreground": "oklch(0.97 0.01 247.9)",
116318
+ "--color-surface": "oklch(0.104 0.019 248.3)",
116319
+ "--color-popover": "oklch(0.22 0.018 255.7)",
116320
+ "--color-popover-foreground": "oklch(0.97 0.01 247.9)",
116321
+ "--color-primary": "oklch(0.663 0.169 255.9)",
116322
+ "--color-primary-foreground": "oklch(0.176 0.014 258.4)",
116323
+ "--color-secondary": "oklch(0.274 0.018 251.9)",
116324
+ "--color-secondary-foreground": "oklch(0.97 0.01 247.9)",
116325
+ "--color-muted": "oklch(0.274 0.018 251.9)",
116326
+ "--color-muted-foreground": "oklch(0.677 0.016 254.6)",
116327
+ "--color-accent": "oklch(0.292 0.02 260.6)",
116328
+ "--color-accent-foreground": "oklch(0.97 0.01 247.9)",
116329
+ "--color-border": "oklch(0.384 0.018 254.7)",
116330
+ "--color-border-subtle": "oklch(0.326 0.016 255.6)",
116331
+ "--color-input": "oklch(0.384 0.018 254.7)",
116332
+ "--color-ring": "oklch(0.663 0.169 255.9)",
116333
+ "--color-chart-1": "oklch(0.663 0.169 255.9)",
116334
+ "--color-sidebar": "oklch(0.104 0.019 248.3)",
116335
+ "--color-sidebar-foreground": "oklch(0.97 0.01 247.9)",
116336
+ "--color-sidebar-primary": "oklch(0.663 0.169 255.9)",
116337
+ "--color-sidebar-primary-foreground": "oklch(0.176 0.014 258.4)",
116338
+ "--color-sidebar-accent": "oklch(0.292 0.02 260.6)",
116339
+ "--color-sidebar-accent-foreground": "oklch(0.97 0.01 247.9)",
116340
+ "--color-sidebar-border": "oklch(0.326 0.016 255.6)",
116341
+ "--color-sidebar-ring": "oklch(0.663 0.169 255.9)",
116342
+ "--color-status-success": "oklch(0.695 0.181 145.6)",
116343
+ "--color-status-success-strong": "oklch(0.695 0.181 145.6)",
116344
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116345
+ "--color-status-active": "oklch(0.72 0.14 79.9)",
116346
+ "--color-status-active-strong": "oklch(0.72 0.14 79.9)",
116347
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116348
+ "--color-status-error": "oklch(0.665 0.205 27)",
116349
+ "--color-status-error-strong": "oklch(0.665 0.205 27)",
116350
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116351
+ "--color-status-info": "oklch(0.663 0.169 255.9)",
116352
+ "--color-status-info-strong": "oklch(0.663 0.169 255.9)",
116353
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116354
+ "--color-status-pending": "oklch(0.79 0.139 85.2)",
116355
+ "--color-status-pending-strong": "oklch(0.79 0.139 85.2)",
116356
+ "--color-status-pending-foreground": "oklch(0.21 0.006 285.885)",
116357
+ "--color-status-warning": "oklch(0.654 0.158 48.4)",
116358
+ "--color-status-warning-strong": "oklch(0.654 0.158 48.4)",
116359
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116360
+ "--color-status-paused": "oklch(0.688 0.178 298.9)",
116361
+ "--color-status-paused-strong": "oklch(0.688 0.178 298.9)",
116362
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116363
+ "--color-status-neutral": "oklch(0.677 0.016 254.6)",
116364
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116365
+ }
116366
+ }
116367
+ },
116368
+ {
116369
+ id: "vscode",
116370
+ name: "VS Code",
116371
+ description: "Light+ / Dark+ chrome; statuses from editor/git decoration colors.",
116372
+ accent: { light: "oklch(0.491 0.16 254.6)", dark: "oklch(0.568 0.167 251.3)" },
116373
+ field: { light: "oklch(1 0 0)", dark: "oklch(0.235 0 0)" },
116374
+ vars: {
116375
+ light: {
116376
+ "--color-background": "oklch(1 0 0)",
116377
+ "--color-foreground": "oklch(0.352 0 0)",
116378
+ "--color-card": "oklch(1 0 0)",
116379
+ "--color-card-foreground": "oklch(0.352 0 0)",
116380
+ "--color-surface": "oklch(0.964 0 0)",
116381
+ "--color-popover": "oklch(1 0 0)",
116382
+ "--color-popover-foreground": "oklch(0.352 0 0)",
116383
+ "--color-primary": "oklch(0.491 0.16 254.6)",
116384
+ "--color-primary-foreground": "oklch(1 0 0)",
116385
+ "--color-secondary": "oklch(0.964 0 0)",
116386
+ "--color-secondary-foreground": "oklch(0.352 0 0)",
116387
+ "--color-muted": "oklch(0.964 0 0)",
116388
+ "--color-muted-foreground": "oklch(0.493 0 0)",
116389
+ "--color-accent": "oklch(0.931 0 0)",
116390
+ "--color-accent-foreground": "oklch(0.352 0 0)",
116391
+ "--color-border": "oklch(0.922 0 0)",
116392
+ "--color-border-subtle": "oklch(0.949 0 0)",
116393
+ "--color-input": "oklch(0.922 0 0)",
116394
+ "--color-ring": "oklch(0.491 0.16 254.6)",
116395
+ "--color-chart-1": "oklch(0.491 0.16 254.6)",
116396
+ "--color-sidebar": "oklch(0.964 0 0)",
116397
+ "--color-sidebar-foreground": "oklch(0.352 0 0)",
116398
+ "--color-sidebar-primary": "oklch(0.491 0.16 254.6)",
116399
+ "--color-sidebar-primary-foreground": "oklch(1 0 0)",
116400
+ "--color-sidebar-accent": "oklch(0.931 0 0)",
116401
+ "--color-sidebar-accent-foreground": "oklch(0.352 0 0)",
116402
+ "--color-sidebar-border": "oklch(0.949 0 0)",
116403
+ "--color-sidebar-ring": "oklch(0.491 0.16 254.6)",
116404
+ "--color-status-success": "oklch(0.51 0.165 142.7)",
116405
+ "--color-status-success-strong": "oklch(0.51 0.165 142.7)",
116406
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116407
+ "--color-status-active": "oklch(0.497 0.107 68.9)",
116408
+ "--color-status-active-strong": "oklch(0.497 0.107 68.9)",
116409
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116410
+ "--color-status-error": "oklch(0.559 0.193 26.1)",
116411
+ "--color-status-error-strong": "oklch(0.559 0.193 26.1)",
116412
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116413
+ "--color-status-info": "oklch(0.491 0.16 254.6)",
116414
+ "--color-status-info-strong": "oklch(0.491 0.16 254.6)",
116415
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116416
+ "--color-status-pending": "oklch(0.589 0.119 80.7)",
116417
+ "--color-status-pending-strong": "oklch(0.589 0.119 80.7)",
116418
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
116419
+ "--color-status-warning": "oklch(0.664 0.137 79.8)",
116420
+ "--color-status-warning-strong": "oklch(0.664 0.137 79.8)",
116421
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116422
+ "--color-status-paused": "oklch(0.424 0.158 306.8)",
116423
+ "--color-status-paused-strong": "oklch(0.424 0.158 306.8)",
116424
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116425
+ "--color-status-neutral": "oklch(0.493 0 0)",
116426
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116427
+ },
116428
+ dark: {
116429
+ "--color-background": "oklch(0.235 0 0)",
116430
+ "--color-foreground": "oklch(0.845 0 0)",
116431
+ "--color-card": "oklch(0.265 0.002 286.3)",
116432
+ "--color-card-foreground": "oklch(0.845 0 0)",
116433
+ "--color-surface": "oklch(0.265 0.002 286.3)",
116434
+ "--color-popover": "oklch(0.265 0.002 286.3)",
116435
+ "--color-popover-foreground": "oklch(0.845 0 0)",
116436
+ "--color-primary": "oklch(0.568 0.167 251.3)",
116437
+ "--color-primary-foreground": "oklch(1 0 0)",
116438
+ "--color-secondary": "oklch(0.297 0 0)",
116439
+ "--color-secondary-foreground": "oklch(0.845 0 0)",
116440
+ "--color-muted": "oklch(0.297 0 0)",
116441
+ "--color-muted-foreground": "oklch(0.696 0 0)",
116442
+ "--color-accent": "oklch(0.339 0.01 285.8)",
116443
+ "--color-accent-foreground": "oklch(0.845 0 0)",
116444
+ "--color-border": "oklch(0.375 0 0)",
116445
+ "--color-border-subtle": "oklch(0.321 0 0)",
116446
+ "--color-input": "oklch(0.375 0 0)",
116447
+ "--color-ring": "oklch(0.568 0.167 251.3)",
116448
+ "--color-chart-1": "oklch(0.568 0.167 251.3)",
116449
+ "--color-sidebar": "oklch(0.265 0.002 286.3)",
116450
+ "--color-sidebar-foreground": "oklch(0.845 0 0)",
116451
+ "--color-sidebar-primary": "oklch(0.568 0.167 251.3)",
116452
+ "--color-sidebar-primary-foreground": "oklch(1 0 0)",
116453
+ "--color-sidebar-accent": "oklch(0.339 0.01 285.8)",
116454
+ "--color-sidebar-accent-foreground": "oklch(0.845 0 0)",
116455
+ "--color-sidebar-border": "oklch(0.321 0 0)",
116456
+ "--color-sidebar-ring": "oklch(0.568 0.167 251.3)",
116457
+ "--color-status-success": "oklch(0.794 0.128 143.1)",
116458
+ "--color-status-success-strong": "oklch(0.794 0.128 143.1)",
116459
+ "--color-status-success-foreground": "oklch(0.21 0.006 285.885)",
116460
+ "--color-status-active": "oklch(0.8 0.086 85.1)",
116461
+ "--color-status-active-strong": "oklch(0.8 0.086 85.1)",
116462
+ "--color-status-active-foreground": "oklch(0.21 0.006 285.885)",
116463
+ "--color-status-error": "oklch(0.738 0.138 32.5)",
116464
+ "--color-status-error-strong": "oklch(0.738 0.138 32.5)",
116465
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116466
+ "--color-status-info": "oklch(0.666 0.181 254.6)",
116467
+ "--color-status-info-strong": "oklch(0.666 0.181 254.6)",
116468
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116469
+ "--color-status-pending": "oklch(0.825 0.077 77.5)",
116470
+ "--color-status-pending-strong": "oklch(0.825 0.077 77.5)",
116471
+ "--color-status-pending-foreground": "oklch(0.21 0.006 285.885)",
116472
+ "--color-status-warning": "oklch(0.74 0.152 92.8)",
116473
+ "--color-status-warning-strong": "oklch(0.74 0.152 92.8)",
116474
+ "--color-status-warning-foreground": "oklch(0.21 0.006 285.885)",
116475
+ "--color-status-paused": "oklch(0.681 0.134 309.1)",
116476
+ "--color-status-paused-strong": "oklch(0.681 0.134 309.1)",
116477
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116478
+ "--color-status-neutral": "oklch(0.64 0 0)",
116479
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116480
+ }
116481
+ }
116482
+ },
116483
+ {
116484
+ id: "material",
116485
+ name: "Material",
116486
+ description: "Material Theme palenight-adjacent default; statuses from its accent set.",
116487
+ accent: { light: "oklch(0.604 0.091 260)", dark: "oklch(0.744 0.131 264.3)" },
116488
+ field: { light: "oklch(0.985 0 0)", dark: "oklch(0.309 0.019 229.8)" },
116489
+ vars: {
116490
+ light: {
116491
+ "--color-background": "oklch(0.985 0 0)",
116492
+ "--color-foreground": "oklch(0.387 0.025 229.8)",
116493
+ "--color-card": "oklch(1 0 0)",
116494
+ "--color-card-foreground": "oklch(0.387 0.025 229.8)",
116495
+ "--color-surface": "oklch(0.97 0 0)",
116496
+ "--color-popover": "oklch(1 0 0)",
116497
+ "--color-popover-foreground": "oklch(0.387 0.025 229.8)",
116498
+ "--color-primary": "oklch(0.604 0.091 260)",
116499
+ "--color-primary-foreground": "oklch(1 0 0)",
116500
+ "--color-secondary": "oklch(0.949 0 0)",
116501
+ "--color-secondary-foreground": "oklch(0.387 0.025 229.8)",
116502
+ "--color-muted": "oklch(0.949 0 0)",
116503
+ "--color-muted-foreground": "oklch(0.706 0.027 229.3)",
116504
+ "--color-accent": "oklch(0.928 0.001 286.4)",
116505
+ "--color-accent-foreground": "oklch(0.387 0.025 229.8)",
116506
+ "--color-border": "oklch(0.907 0 0)",
116507
+ "--color-border-subtle": "oklch(0.94 0 0)",
116508
+ "--color-input": "oklch(0.907 0 0)",
116509
+ "--color-ring": "oklch(0.604 0.091 260)",
116510
+ "--color-chart-1": "oklch(0.604 0.091 260)",
116511
+ "--color-sidebar": "oklch(0.97 0 0)",
116512
+ "--color-sidebar-foreground": "oklch(0.387 0.025 229.8)",
116513
+ "--color-sidebar-primary": "oklch(0.604 0.091 260)",
116514
+ "--color-sidebar-primary-foreground": "oklch(1 0 0)",
116515
+ "--color-sidebar-accent": "oklch(0.928 0.001 286.4)",
116516
+ "--color-sidebar-accent-foreground": "oklch(0.387 0.025 229.8)",
116517
+ "--color-sidebar-border": "oklch(0.94 0 0)",
116518
+ "--color-sidebar-ring": "oklch(0.604 0.091 260)",
116519
+ "--color-status-success": "oklch(0.733 0.131 127.8)",
116520
+ "--color-status-success-strong": "oklch(0.733 0.131 127.8)",
116521
+ "--color-status-success-foreground": "oklch(0.21 0.006 285.885)",
116522
+ "--color-status-active": "oklch(0.825 0.161 77.4)",
116523
+ "--color-status-active-strong": "oklch(0.825 0.161 77.4)",
116524
+ "--color-status-active-foreground": "oklch(0.21 0.006 285.885)",
116525
+ "--color-status-error": "oklch(0.608 0.209 27)",
116526
+ "--color-status-error-strong": "oklch(0.608 0.209 27)",
116527
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116528
+ "--color-status-info": "oklch(0.604 0.091 260)",
116529
+ "--color-status-info-strong": "oklch(0.604 0.091 260)",
116530
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116531
+ "--color-status-pending": "oklch(0.762 0.135 76.6)",
116532
+ "--color-status-pending-strong": "oklch(0.762 0.135 76.6)",
116533
+ "--color-status-pending-foreground": "oklch(0.21 0.006 285.885)",
116534
+ "--color-status-warning": "oklch(0.697 0.178 36.3)",
116535
+ "--color-status-warning-strong": "oklch(0.697 0.178 36.3)",
116536
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116537
+ "--color-status-paused": "oklch(0.579 0.247 288.2)",
116538
+ "--color-status-paused-strong": "oklch(0.579 0.247 288.2)",
116539
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116540
+ "--color-status-neutral": "oklch(0.706 0.027 229.3)",
116541
+ "--color-status-neutral-foreground": "oklch(0.21 0.006 285.885)"
116542
+ },
116543
+ dark: {
116544
+ "--color-background": "oklch(0.309 0.019 229.8)",
116545
+ "--color-foreground": "oklch(0.988 0.018 196.9)",
116546
+ "--color-card": "oklch(0.375 0.026 211.3)",
116547
+ "--color-card-foreground": "oklch(0.988 0.018 196.9)",
116548
+ "--color-surface": "oklch(0.347 0.022 229.8)",
116549
+ "--color-popover": "oklch(0.375 0.026 211.3)",
116550
+ "--color-popover-foreground": "oklch(0.988 0.018 196.9)",
116551
+ "--color-primary": "oklch(0.744 0.131 264.3)",
116552
+ "--color-primary-foreground": "oklch(0.309 0.019 229.8)",
116553
+ "--color-secondary": "oklch(0.387 0.025 229.8)",
116554
+ "--color-secondary-foreground": "oklch(0.988 0.018 196.9)",
116555
+ "--color-muted": "oklch(0.387 0.025 229.8)",
116556
+ "--color-muted-foreground": "oklch(0.793 0.018 229.1)",
116557
+ "--color-accent": "oklch(0.418 0.02 225.7)",
116558
+ "--color-accent-foreground": "oklch(0.988 0.018 196.9)",
116559
+ "--color-border": "oklch(0.387 0.025 229.8)",
116560
+ "--color-border-subtle": "oklch(0.375 0.026 211.3)",
116561
+ "--color-input": "oklch(0.387 0.025 229.8)",
116562
+ "--color-ring": "oklch(0.744 0.131 264.3)",
116563
+ "--color-chart-1": "oklch(0.744 0.131 264.3)",
116564
+ "--color-sidebar": "oklch(0.347 0.022 229.8)",
116565
+ "--color-sidebar-foreground": "oklch(0.988 0.018 196.9)",
116566
+ "--color-sidebar-primary": "oklch(0.744 0.131 264.3)",
116567
+ "--color-sidebar-primary-foreground": "oklch(0.309 0.019 229.8)",
116568
+ "--color-sidebar-accent": "oklch(0.418 0.02 225.7)",
116569
+ "--color-sidebar-accent-foreground": "oklch(0.988 0.018 196.9)",
116570
+ "--color-sidebar-border": "oklch(0.375 0.026 211.3)",
116571
+ "--color-sidebar-ring": "oklch(0.744 0.131 264.3)",
116572
+ "--color-status-success": "oklch(0.884 0.124 126.8)",
116573
+ "--color-status-success-strong": "oklch(0.884 0.124 126.8)",
116574
+ "--color-status-success-foreground": "oklch(0.21 0.006 285.885)",
116575
+ "--color-status-active": "oklch(0.869 0.128 81.1)",
116576
+ "--color-status-active-strong": "oklch(0.869 0.128 81.1)",
116577
+ "--color-status-active-foreground": "oklch(0.21 0.006 285.885)",
116578
+ "--color-status-error": "oklch(0.701 0.157 18.6)",
116579
+ "--color-status-error-strong": "oklch(0.701 0.157 18.6)",
116580
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116581
+ "--color-status-info": "oklch(0.744 0.131 264.3)",
116582
+ "--color-status-info-strong": "oklch(0.744 0.131 264.3)",
116583
+ "--color-status-info-foreground": "oklch(0.21 0.006 285.885)",
116584
+ "--color-status-pending": "oklch(0.797 0.126 81.2)",
116585
+ "--color-status-pending-strong": "oklch(0.797 0.126 81.2)",
116586
+ "--color-status-pending-foreground": "oklch(0.21 0.006 285.885)",
116587
+ "--color-status-warning": "oklch(0.749 0.138 37.5)",
116588
+ "--color-status-warning-strong": "oklch(0.749 0.138 37.5)",
116589
+ "--color-status-warning-foreground": "oklch(0.21 0.006 285.885)",
116590
+ "--color-status-paused": "oklch(0.743 0.135 311.1)",
116591
+ "--color-status-paused-strong": "oklch(0.743 0.135 311.1)",
116592
+ "--color-status-paused-foreground": "oklch(0.21 0.006 285.885)",
116593
+ "--color-status-neutral": "oklch(0.793 0.018 229.1)",
116594
+ "--color-status-neutral-foreground": "oklch(0.21 0.006 285.885)"
116595
+ }
116596
+ }
116597
+ },
116598
+ {
116599
+ id: "solarized",
116600
+ name: "Solarized",
116601
+ description: "Ethan Schoonover's palette; accents are mode-invariant by design (narrow palette: active/pending/warning share stops).",
116602
+ accent: { light: "oklch(0.615 0.139 244.9)", dark: "oklch(0.615 0.139 244.9)" },
116603
+ field: { light: "oklch(0.974 0.026 90.1)", dark: "oklch(0.267 0.049 219.8)" },
116604
+ vars: {
116605
+ light: {
116606
+ "--color-background": "oklch(0.974 0.026 90.1)",
116607
+ "--color-foreground": "oklch(0.523 0.028 219.1)",
116608
+ "--color-card": "oklch(0.974 0.026 90.1)",
116609
+ "--color-card-foreground": "oklch(0.523 0.028 219.1)",
116610
+ "--color-surface": "oklch(0.931 0.026 92.4)",
116611
+ "--color-popover": "oklch(0.974 0.026 90.1)",
116612
+ "--color-popover-foreground": "oklch(0.523 0.028 219.1)",
116613
+ "--color-primary": "oklch(0.615 0.139 244.9)",
116614
+ "--color-primary-foreground": "oklch(0.974 0.026 90.1)",
116615
+ "--color-secondary": "oklch(0.931 0.026 92.4)",
116616
+ "--color-secondary-foreground": "oklch(0.523 0.028 219.1)",
116617
+ "--color-muted": "oklch(0.931 0.026 92.4)",
116618
+ "--color-muted-foreground": "oklch(0.698 0.016 196.8)",
116619
+ "--color-accent": "oklch(0.91 0.029 91.7)",
116620
+ "--color-accent-foreground": "oklch(0.523 0.028 219.1)",
116621
+ "--color-border": "oklch(0.863 0.031 92.3)",
116622
+ "--color-border-subtle": "oklch(0.901 0.028 90.9)",
116623
+ "--color-input": "oklch(0.863 0.031 92.3)",
116624
+ "--color-ring": "oklch(0.615 0.139 244.9)",
116625
+ "--color-chart-1": "oklch(0.615 0.139 244.9)",
116626
+ "--color-sidebar": "oklch(0.931 0.026 92.4)",
116627
+ "--color-sidebar-foreground": "oklch(0.523 0.028 219.1)",
116628
+ "--color-sidebar-primary": "oklch(0.615 0.139 244.9)",
116629
+ "--color-sidebar-primary-foreground": "oklch(0.974 0.026 90.1)",
116630
+ "--color-sidebar-accent": "oklch(0.91 0.029 91.7)",
116631
+ "--color-sidebar-accent-foreground": "oklch(0.523 0.028 219.1)",
116632
+ "--color-sidebar-border": "oklch(0.901 0.028 90.9)",
116633
+ "--color-sidebar-ring": "oklch(0.615 0.139 244.9)",
116634
+ "--color-status-success": "oklch(0.644 0.151 118.6)",
116635
+ "--color-status-success-strong": "oklch(0.644 0.151 118.6)",
116636
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116637
+ "--color-status-active": "oklch(0.654 0.134 85.7)",
116638
+ "--color-status-active-strong": "oklch(0.654 0.134 85.7)",
116639
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116640
+ "--color-status-error": "oklch(0.586 0.206 27.1)",
116641
+ "--color-status-error-strong": "oklch(0.586 0.206 27.1)",
116642
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116643
+ "--color-status-info": "oklch(0.615 0.139 244.9)",
116644
+ "--color-status-info-strong": "oklch(0.615 0.139 244.9)",
116645
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116646
+ "--color-status-pending": "oklch(0.654 0.134 85.7)",
116647
+ "--color-status-pending-strong": "oklch(0.654 0.134 85.7)",
116648
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
116649
+ "--color-status-warning": "oklch(0.581 0.173 39.5)",
116650
+ "--color-status-warning-strong": "oklch(0.581 0.173 39.5)",
116651
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116652
+ "--color-status-paused": "oklch(0.582 0.126 279.1)",
116653
+ "--color-status-paused-strong": "oklch(0.582 0.126 279.1)",
116654
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116655
+ "--color-status-neutral": "oklch(0.698 0.016 196.8)",
116656
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116657
+ },
116658
+ dark: {
116659
+ "--color-background": "oklch(0.267 0.049 219.8)",
116660
+ "--color-foreground": "oklch(0.698 0.016 196.8)",
116661
+ "--color-card": "oklch(0.309 0.052 219.7)",
116662
+ "--color-card-foreground": "oklch(0.698 0.016 196.8)",
116663
+ "--color-surface": "oklch(0.309 0.052 219.7)",
116664
+ "--color-popover": "oklch(0.309 0.052 219.7)",
116665
+ "--color-popover-foreground": "oklch(0.698 0.016 196.8)",
116666
+ "--color-primary": "oklch(0.615 0.139 244.9)",
116667
+ "--color-primary-foreground": "oklch(0.974 0.026 90.1)",
116668
+ "--color-secondary": "oklch(0.36 0.06 220.8)",
116669
+ "--color-secondary-foreground": "oklch(0.698 0.016 196.8)",
116670
+ "--color-muted": "oklch(0.36 0.06 220.8)",
116671
+ "--color-muted-foreground": "oklch(0.568 0.029 221.9)",
116672
+ "--color-accent": "oklch(0.409 0.066 220.7)",
116673
+ "--color-accent-foreground": "oklch(0.698 0.016 196.8)",
116674
+ "--color-border": "oklch(0.435 0.065 215.8)",
116675
+ "--color-border-subtle": "oklch(0.366 0.057 216.3)",
116676
+ "--color-input": "oklch(0.435 0.065 215.8)",
116677
+ "--color-ring": "oklch(0.615 0.139 244.9)",
116678
+ "--color-chart-1": "oklch(0.615 0.139 244.9)",
116679
+ "--color-sidebar": "oklch(0.309 0.052 219.7)",
116680
+ "--color-sidebar-foreground": "oklch(0.698 0.016 196.8)",
116681
+ "--color-sidebar-primary": "oklch(0.615 0.139 244.9)",
116682
+ "--color-sidebar-primary-foreground": "oklch(0.974 0.026 90.1)",
116683
+ "--color-sidebar-accent": "oklch(0.409 0.066 220.7)",
116684
+ "--color-sidebar-accent-foreground": "oklch(0.698 0.016 196.8)",
116685
+ "--color-sidebar-border": "oklch(0.366 0.057 216.3)",
116686
+ "--color-sidebar-ring": "oklch(0.615 0.139 244.9)",
116687
+ "--color-status-success": "oklch(0.644 0.151 118.6)",
116688
+ "--color-status-success-strong": "oklch(0.644 0.151 118.6)",
116689
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116690
+ "--color-status-active": "oklch(0.654 0.134 85.7)",
116691
+ "--color-status-active-strong": "oklch(0.654 0.134 85.7)",
116692
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116693
+ "--color-status-error": "oklch(0.586 0.206 27.1)",
116694
+ "--color-status-error-strong": "oklch(0.586 0.206 27.1)",
116695
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116696
+ "--color-status-info": "oklch(0.615 0.139 244.9)",
116697
+ "--color-status-info-strong": "oklch(0.615 0.139 244.9)",
116698
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116699
+ "--color-status-pending": "oklch(0.654 0.134 85.7)",
116700
+ "--color-status-pending-strong": "oklch(0.654 0.134 85.7)",
116701
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
116702
+ "--color-status-warning": "oklch(0.581 0.173 39.5)",
116703
+ "--color-status-warning-strong": "oklch(0.581 0.173 39.5)",
116704
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116705
+ "--color-status-paused": "oklch(0.582 0.126 279.1)",
116706
+ "--color-status-paused-strong": "oklch(0.582 0.126 279.1)",
116707
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116708
+ "--color-status-neutral": "oklch(0.523 0.028 219.1)",
116709
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116710
+ }
116711
+ }
116712
+ },
116713
+ {
116714
+ id: "tokyo",
116715
+ name: "Tokyo Night",
116716
+ description: "Storm/Night dark + Day light; statuses from the terminal accent set.",
116717
+ accent: { light: "oklch(0.6 0.18 257.5)", dark: "oklch(0.719 0.132 264.2)" },
116718
+ field: { light: "oklch(0.913 0.007 277.2)", dark: "oklch(0.226 0.021 280.5)" },
116719
+ vars: {
116720
+ light: {
116721
+ "--color-background": "oklch(0.913 0.007 277.2)",
116722
+ "--color-foreground": "oklch(0.359 0.051 273.2)",
116723
+ "--color-card": "oklch(0.935 0.004 286.3)",
116724
+ "--color-card-foreground": "oklch(0.359 0.051 273.2)",
116725
+ "--color-surface": "oklch(0.877 0.007 277.2)",
116726
+ "--color-popover": "oklch(0.935 0.004 286.3)",
116727
+ "--color-popover-foreground": "oklch(0.359 0.051 273.2)",
116728
+ "--color-primary": "oklch(0.6 0.18 257.5)",
116729
+ "--color-primary-foreground": "oklch(0.913 0.007 277.2)",
116730
+ "--color-secondary": "oklch(0.877 0.007 277.2)",
116731
+ "--color-secondary-foreground": "oklch(0.359 0.051 273.2)",
116732
+ "--color-muted": "oklch(0.877 0.007 277.2)",
116733
+ "--color-muted-foreground": "oklch(0.555 0.066 275.7)",
116734
+ "--color-accent": "oklch(0.84 0.013 276.1)",
116735
+ "--color-accent-foreground": "oklch(0.359 0.051 273.2)",
116736
+ "--color-border": "oklch(0.828 0.014 277)",
116737
+ "--color-border-subtle": "oklch(0.865 0.011 274.9)",
116738
+ "--color-input": "oklch(0.828 0.014 277)",
116739
+ "--color-ring": "oklch(0.6 0.18 257.5)",
116740
+ "--color-chart-1": "oklch(0.6 0.18 257.5)",
116741
+ "--color-sidebar": "oklch(0.877 0.007 277.2)",
116742
+ "--color-sidebar-foreground": "oklch(0.359 0.051 273.2)",
116743
+ "--color-sidebar-primary": "oklch(0.6 0.18 257.5)",
116744
+ "--color-sidebar-primary-foreground": "oklch(0.913 0.007 277.2)",
116745
+ "--color-sidebar-accent": "oklch(0.84 0.013 276.1)",
116746
+ "--color-sidebar-accent-foreground": "oklch(0.359 0.051 273.2)",
116747
+ "--color-sidebar-border": "oklch(0.865 0.011 274.9)",
116748
+ "--color-sidebar-ring": "oklch(0.6 0.18 257.5)",
116749
+ "--color-status-success": "oklch(0.525 0.093 130.3)",
116750
+ "--color-status-success-strong": "oklch(0.525 0.093 130.3)",
116751
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116752
+ "--color-status-active": "oklch(0.553 0.075 75.2)",
116753
+ "--color-status-active-strong": "oklch(0.553 0.075 75.2)",
116754
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116755
+ "--color-status-error": "oklch(0.634 0.233 11.6)",
116756
+ "--color-status-error-strong": "oklch(0.634 0.233 11.6)",
116757
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116758
+ "--color-status-info": "oklch(0.6 0.18 257.5)",
116759
+ "--color-status-info-strong": "oklch(0.6 0.18 257.5)",
116760
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116761
+ "--color-status-pending": "oklch(0.553 0.075 75.2)",
116762
+ "--color-status-pending-strong": "oklch(0.553 0.075 75.2)",
116763
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
116764
+ "--color-status-warning": "oklch(0.565 0.138 56.1)",
116765
+ "--color-status-warning-strong": "oklch(0.565 0.138 56.1)",
116766
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116767
+ "--color-status-paused": "oklch(0.515 0.178 299.2)",
116768
+ "--color-status-paused-strong": "oklch(0.515 0.178 299.2)",
116769
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116770
+ "--color-status-neutral": "oklch(0.555 0.066 275.7)",
116771
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116772
+ },
116773
+ dark: {
116774
+ "--color-background": "oklch(0.226 0.021 280.5)",
116775
+ "--color-foreground": "oklch(0.846 0.061 274.8)",
116776
+ "--color-card": "oklch(0.261 0.034 274.2)",
116777
+ "--color-card-foreground": "oklch(0.846 0.061 274.8)",
116778
+ "--color-surface": "oklch(0.204 0.016 284.9)",
116779
+ "--color-popover": "oklch(0.261 0.034 274.2)",
116780
+ "--color-popover-foreground": "oklch(0.846 0.061 274.8)",
116781
+ "--color-primary": "oklch(0.719 0.132 264.2)",
116782
+ "--color-primary-foreground": "oklch(0.226 0.021 280.5)",
116783
+ "--color-secondary": "oklch(0.306 0.037 273.2)",
116784
+ "--color-secondary-foreground": "oklch(0.846 0.061 274.8)",
116785
+ "--color-muted": "oklch(0.306 0.037 273.2)",
116786
+ "--color-muted-foreground": "oklch(0.593 0.044 278.8)",
116787
+ "--color-accent": "oklch(0.332 0.045 275)",
116788
+ "--color-accent-foreground": "oklch(0.846 0.061 274.8)",
116789
+ "--color-border": "oklch(0.387 0.054 273.9)",
116790
+ "--color-border-subtle": "oklch(0.309 0.033 272.3)",
116791
+ "--color-input": "oklch(0.387 0.054 273.9)",
116792
+ "--color-ring": "oklch(0.719 0.132 264.2)",
116793
+ "--color-chart-1": "oklch(0.719 0.132 264.2)",
116794
+ "--color-sidebar": "oklch(0.204 0.016 284.9)",
116795
+ "--color-sidebar-foreground": "oklch(0.846 0.061 274.8)",
116796
+ "--color-sidebar-primary": "oklch(0.719 0.132 264.2)",
116797
+ "--color-sidebar-primary-foreground": "oklch(0.226 0.021 280.5)",
116798
+ "--color-sidebar-accent": "oklch(0.332 0.045 275)",
116799
+ "--color-sidebar-accent-foreground": "oklch(0.846 0.061 274.8)",
116800
+ "--color-sidebar-border": "oklch(0.309 0.033 272.3)",
116801
+ "--color-sidebar-ring": "oklch(0.719 0.132 264.2)",
116802
+ "--color-status-success": "oklch(0.795 0.139 130.1)",
116803
+ "--color-status-success-strong": "oklch(0.795 0.139 130.1)",
116804
+ "--color-status-success-foreground": "oklch(0.21 0.006 285.885)",
116805
+ "--color-status-active": "oklch(0.784 0.106 75.4)",
116806
+ "--color-status-active-strong": "oklch(0.784 0.106 75.4)",
116807
+ "--color-status-active-foreground": "oklch(0.21 0.006 285.885)",
116808
+ "--color-status-error": "oklch(0.723 0.159 10.3)",
116809
+ "--color-status-error-strong": "oklch(0.723 0.159 10.3)",
116810
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116811
+ "--color-status-info": "oklch(0.82 0.105 235.7)",
116812
+ "--color-status-info-strong": "oklch(0.82 0.105 235.7)",
116813
+ "--color-status-info-foreground": "oklch(0.21 0.006 285.885)",
116814
+ "--color-status-pending": "oklch(0.783 0.1 81.4)",
116815
+ "--color-status-pending-strong": "oklch(0.783 0.1 81.4)",
116816
+ "--color-status-pending-foreground": "oklch(0.21 0.006 285.885)",
116817
+ "--color-status-warning": "oklch(0.787 0.137 50.6)",
116818
+ "--color-status-warning-strong": "oklch(0.787 0.137 50.6)",
116819
+ "--color-status-warning-foreground": "oklch(0.21 0.006 285.885)",
116820
+ "--color-status-paused": "oklch(0.751 0.134 299.5)",
116821
+ "--color-status-paused-strong": "oklch(0.751 0.134 299.5)",
116822
+ "--color-status-paused-foreground": "oklch(0.21 0.006 285.885)",
116823
+ "--color-status-neutral": "oklch(0.593 0.044 278.8)",
116824
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116825
+ }
116826
+ }
116827
+ },
116828
+ {
116829
+ id: "monokai",
116830
+ name: "Monokai",
116831
+ description: "Classic dark; light is an adapted sketch (no canonical light exists). Primary = the iconic pink.",
116832
+ accent: { light: "oklch(0.574 0.218 7.8)", dark: "oklch(0.642 0.24 7.5)" },
116833
+ field: { light: "oklch(0.985 0 0)", dark: "oklch(0.274 0.011 114.8)" },
116834
+ vars: {
116835
+ light: {
116836
+ "--color-background": "oklch(0.985 0 0)",
116837
+ "--color-foreground": "oklch(0.274 0.011 114.8)",
116838
+ "--color-card": "oklch(1 0 0)",
116839
+ "--color-card-foreground": "oklch(0.274 0.011 114.8)",
116840
+ "--color-surface": "oklch(0.961 0.003 106.4)",
116841
+ "--color-popover": "oklch(1 0 0)",
116842
+ "--color-popover-foreground": "oklch(0.274 0.011 114.8)",
116843
+ "--color-primary": "oklch(0.574 0.218 7.8)",
116844
+ "--color-primary-foreground": "oklch(1 0 0)",
116845
+ "--color-secondary": "oklch(0.943 0.003 106.5)",
116846
+ "--color-secondary-foreground": "oklch(0.274 0.011 114.8)",
116847
+ "--color-muted": "oklch(0.943 0.003 106.5)",
116848
+ "--color-muted-foreground": "oklch(0.547 0.029 97.4)",
116849
+ "--color-accent": "oklch(0.915 0.005 106.5)",
116850
+ "--color-accent-foreground": "oklch(0.274 0.011 114.8)",
116851
+ "--color-border": "oklch(0.893 0.007 106.5)",
116852
+ "--color-border-subtle": "oklch(0.93 0.005 106.5)",
116853
+ "--color-input": "oklch(0.893 0.007 106.5)",
116854
+ "--color-ring": "oklch(0.574 0.218 7.8)",
116855
+ "--color-chart-1": "oklch(0.574 0.218 7.8)",
116856
+ "--color-sidebar": "oklch(0.961 0.003 106.4)",
116857
+ "--color-sidebar-foreground": "oklch(0.274 0.011 114.8)",
116858
+ "--color-sidebar-primary": "oklch(0.574 0.218 7.8)",
116859
+ "--color-sidebar-primary-foreground": "oklch(1 0 0)",
116860
+ "--color-sidebar-accent": "oklch(0.915 0.005 106.5)",
116861
+ "--color-sidebar-accent-foreground": "oklch(0.274 0.011 114.8)",
116862
+ "--color-sidebar-border": "oklch(0.93 0.005 106.5)",
116863
+ "--color-sidebar-ring": "oklch(0.574 0.218 7.8)",
116864
+ "--color-status-success": "oklch(0.611 0.159 127.7)",
116865
+ "--color-status-success-strong": "oklch(0.611 0.159 127.7)",
116866
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116867
+ "--color-status-active": "oklch(0.651 0.133 89.1)",
116868
+ "--color-status-active-strong": "oklch(0.651 0.133 89.1)",
116869
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116870
+ "--color-status-error": "oklch(0.574 0.218 7.8)",
116871
+ "--color-status-error-strong": "oklch(0.574 0.218 7.8)",
116872
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116873
+ "--color-status-info": "oklch(0.626 0.111 219)",
116874
+ "--color-status-info-strong": "oklch(0.626 0.111 219)",
116875
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116876
+ "--color-status-pending": "oklch(0.651 0.133 89.1)",
116877
+ "--color-status-pending-strong": "oklch(0.651 0.133 89.1)",
116878
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
116879
+ "--color-status-warning": "oklch(0.654 0.147 65)",
116880
+ "--color-status-warning-strong": "oklch(0.654 0.147 65)",
116881
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116882
+ "--color-status-paused": "oklch(0.554 0.15 296.1)",
116883
+ "--color-status-paused-strong": "oklch(0.554 0.15 296.1)",
116884
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116885
+ "--color-status-neutral": "oklch(0.547 0.029 97.4)",
116886
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116887
+ },
116888
+ dark: {
116889
+ "--color-background": "oklch(0.274 0.011 114.8)",
116890
+ "--color-foreground": "oklch(0.977 0.008 106.5)",
116891
+ "--color-card": "oklch(0.298 0.011 114.7)",
116892
+ "--color-card-foreground": "oklch(0.977 0.008 106.5)",
116893
+ "--color-surface": "oklch(0.237 0.006 121.9)",
116894
+ "--color-popover": "oklch(0.298 0.011 114.7)",
116895
+ "--color-popover-foreground": "oklch(0.977 0.008 106.5)",
116896
+ "--color-primary": "oklch(0.642 0.24 7.5)",
116897
+ "--color-primary-foreground": "oklch(0.274 0.011 114.8)",
116898
+ "--color-secondary": "oklch(0.325 0.014 113)",
116899
+ "--color-secondary-foreground": "oklch(0.977 0.008 106.5)",
116900
+ "--color-muted": "oklch(0.325 0.014 113)",
116901
+ "--color-muted-foreground": "oklch(0.654 0.009 114.3)",
116902
+ "--color-accent": "oklch(0.364 0.015 112.3)",
116903
+ "--color-accent-foreground": "oklch(0.977 0.008 106.5)",
116904
+ "--color-border": "oklch(0.401 0.018 111.4)",
116905
+ "--color-border-subtle": "oklch(0.349 0.014 112.9)",
116906
+ "--color-input": "oklch(0.401 0.018 111.4)",
116907
+ "--color-ring": "oklch(0.642 0.24 7.5)",
116908
+ "--color-chart-1": "oklch(0.642 0.24 7.5)",
116909
+ "--color-sidebar": "oklch(0.237 0.006 121.9)",
116910
+ "--color-sidebar-foreground": "oklch(0.977 0.008 106.5)",
116911
+ "--color-sidebar-primary": "oklch(0.642 0.24 7.5)",
116912
+ "--color-sidebar-primary-foreground": "oklch(0.274 0.011 114.8)",
116913
+ "--color-sidebar-accent": "oklch(0.364 0.015 112.3)",
116914
+ "--color-sidebar-accent-foreground": "oklch(0.977 0.008 106.5)",
116915
+ "--color-sidebar-border": "oklch(0.349 0.014 112.9)",
116916
+ "--color-sidebar-ring": "oklch(0.642 0.24 7.5)",
116917
+ "--color-status-success": "oklch(0.841 0.204 127.3)",
116918
+ "--color-status-success-strong": "oklch(0.841 0.204 127.3)",
116919
+ "--color-status-success-foreground": "oklch(0.21 0.006 285.885)",
116920
+ "--color-status-active": "oklch(0.879 0.125 103.2)",
116921
+ "--color-status-active-strong": "oklch(0.879 0.125 103.2)",
116922
+ "--color-status-active-foreground": "oklch(0.21 0.006 285.885)",
116923
+ "--color-status-error": "oklch(0.642 0.24 7.5)",
116924
+ "--color-status-error-strong": "oklch(0.642 0.24 7.5)",
116925
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116926
+ "--color-status-info": "oklch(0.827 0.108 212)",
116927
+ "--color-status-info-strong": "oklch(0.827 0.108 212)",
116928
+ "--color-status-info-foreground": "oklch(0.21 0.006 285.885)",
116929
+ "--color-status-pending": "oklch(0.879 0.125 103.2)",
116930
+ "--color-status-pending-strong": "oklch(0.879 0.125 103.2)",
116931
+ "--color-status-pending-foreground": "oklch(0.21 0.006 285.885)",
116932
+ "--color-status-warning": "oklch(0.767 0.168 62.4)",
116933
+ "--color-status-warning-strong": "oklch(0.767 0.168 62.4)",
116934
+ "--color-status-warning-foreground": "oklch(0.21 0.006 285.885)",
116935
+ "--color-status-paused": "oklch(0.701 0.181 298.1)",
116936
+ "--color-status-paused-strong": "oklch(0.701 0.181 298.1)",
116937
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
116938
+ "--color-status-neutral": "oklch(0.654 0.009 114.3)",
116939
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
116940
+ }
116941
+ }
116942
+ },
116943
+ {
116944
+ id: "gruvbox",
116945
+ name: "Gruvbox",
116946
+ description: "Dark uses the bright accent set, light the faded set. Primary = gruvbox orange.",
116947
+ accent: { light: "oklch(0.513 0.162 39.3)", dark: "oklch(0.731 0.182 51.7)" },
116948
+ field: { light: "oklch(0.956 0.055 96.2)", dark: "oklch(0.277 0 0)" },
116949
+ vars: {
116950
+ light: {
116951
+ "--color-background": "oklch(0.956 0.055 96.2)",
116952
+ "--color-foreground": "oklch(0.344 0.007 48.5)",
116953
+ "--color-card": "oklch(0.965 0.039 100.9)",
116954
+ "--color-card-foreground": "oklch(0.344 0.007 48.5)",
116955
+ "--color-surface": "oklch(0.922 0.055 92.5)",
116956
+ "--color-popover": "oklch(0.965 0.039 100.9)",
116957
+ "--color-popover-foreground": "oklch(0.344 0.007 48.5)",
116958
+ "--color-primary": "oklch(0.513 0.162 39.3)",
116959
+ "--color-primary-foreground": "oklch(0.956 0.055 96.2)",
116960
+ "--color-secondary": "oklch(0.894 0.057 89.2)",
116961
+ "--color-secondary-foreground": "oklch(0.344 0.007 48.5)",
116962
+ "--color-muted": "oklch(0.894 0.057 89.2)",
116963
+ "--color-muted-foreground": "oklch(0.55 0.023 62.6)",
116964
+ "--color-accent": "oklch(0.859 0.054 86.7)",
116965
+ "--color-accent-foreground": "oklch(0.344 0.007 48.5)",
116966
+ "--color-border": "oklch(0.825 0.051 85.1)",
116967
+ "--color-border-subtle": "oklch(0.88 0.051 86.9)",
116968
+ "--color-input": "oklch(0.825 0.051 85.1)",
116969
+ "--color-ring": "oklch(0.513 0.162 39.3)",
116970
+ "--color-chart-1": "oklch(0.513 0.162 39.3)",
116971
+ "--color-sidebar": "oklch(0.922 0.055 92.5)",
116972
+ "--color-sidebar-foreground": "oklch(0.344 0.007 48.5)",
116973
+ "--color-sidebar-primary": "oklch(0.513 0.162 39.3)",
116974
+ "--color-sidebar-primary-foreground": "oklch(0.956 0.055 96.2)",
116975
+ "--color-sidebar-accent": "oklch(0.859 0.054 86.7)",
116976
+ "--color-sidebar-accent-foreground": "oklch(0.344 0.007 48.5)",
116977
+ "--color-sidebar-border": "oklch(0.88 0.051 86.9)",
116978
+ "--color-sidebar-ring": "oklch(0.513 0.162 39.3)",
116979
+ "--color-status-success": "oklch(0.546 0.112 106.5)",
116980
+ "--color-status-success-strong": "oklch(0.546 0.112 106.5)",
116981
+ "--color-status-success-foreground": "oklch(0.985 0 0)",
116982
+ "--color-status-active": "oklch(0.618 0.128 70.7)",
116983
+ "--color-status-active-strong": "oklch(0.618 0.128 70.7)",
116984
+ "--color-status-active-foreground": "oklch(0.985 0 0)",
116985
+ "--color-status-error": "oklch(0.437 0.179 28.3)",
116986
+ "--color-status-error-strong": "oklch(0.437 0.179 28.3)",
116987
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
116988
+ "--color-status-info": "oklch(0.471 0.082 215.8)",
116989
+ "--color-status-info-strong": "oklch(0.471 0.082 215.8)",
116990
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
116991
+ "--color-status-pending": "oklch(0.618 0.128 70.7)",
116992
+ "--color-status-pending-strong": "oklch(0.618 0.128 70.7)",
116993
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
116994
+ "--color-status-warning": "oklch(0.513 0.162 39.3)",
116995
+ "--color-status-warning-strong": "oklch(0.513 0.162 39.3)",
116996
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
116997
+ "--color-status-paused": "oklch(0.489 0.124 344.3)",
116998
+ "--color-status-paused-strong": "oklch(0.489 0.124 344.3)",
116999
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
117000
+ "--color-status-neutral": "oklch(0.55 0.023 62.6)",
117001
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
117002
+ },
117003
+ dark: {
117004
+ "--color-background": "oklch(0.277 0 0)",
117005
+ "--color-foreground": "oklch(0.894 0.057 89.2)",
117006
+ "--color-card": "oklch(0.311 0.003 48.6)",
117007
+ "--color-card-foreground": "oklch(0.894 0.057 89.2)",
117008
+ "--color-surface": "oklch(0.241 0.005 219.7)",
117009
+ "--color-popover": "oklch(0.311 0.003 48.6)",
117010
+ "--color-popover-foreground": "oklch(0.894 0.057 89.2)",
117011
+ "--color-primary": "oklch(0.731 0.182 51.7)",
117012
+ "--color-primary-foreground": "oklch(0.277 0 0)",
117013
+ "--color-secondary": "oklch(0.344 0.007 48.5)",
117014
+ "--color-secondary-foreground": "oklch(0.894 0.057 89.2)",
117015
+ "--color-muted": "oklch(0.344 0.007 48.5)",
117016
+ "--color-muted-foreground": "oklch(0.69 0.035 76.3)",
117017
+ "--color-accent": "oklch(0.375 0.009 53.2)",
117018
+ "--color-accent-foreground": "oklch(0.894 0.057 89.2)",
117019
+ "--color-border": "oklch(0.411 0.012 51.9)",
117020
+ "--color-border-subtle": "oklch(0.344 0.007 48.5)",
117021
+ "--color-input": "oklch(0.411 0.012 51.9)",
117022
+ "--color-ring": "oklch(0.731 0.182 51.7)",
117023
+ "--color-chart-1": "oklch(0.731 0.182 51.7)",
117024
+ "--color-sidebar": "oklch(0.241 0.005 219.7)",
117025
+ "--color-sidebar-foreground": "oklch(0.894 0.057 89.2)",
117026
+ "--color-sidebar-primary": "oklch(0.731 0.182 51.7)",
117027
+ "--color-sidebar-primary-foreground": "oklch(0.277 0 0)",
117028
+ "--color-sidebar-accent": "oklch(0.375 0.009 53.2)",
117029
+ "--color-sidebar-accent-foreground": "oklch(0.894 0.057 89.2)",
117030
+ "--color-sidebar-border": "oklch(0.344 0.007 48.5)",
117031
+ "--color-sidebar-ring": "oklch(0.731 0.182 51.7)",
117032
+ "--color-status-success": "oklch(0.765 0.158 110.8)",
117033
+ "--color-status-success-strong": "oklch(0.765 0.158 110.8)",
117034
+ "--color-status-success-foreground": "oklch(0.21 0.006 285.885)",
117035
+ "--color-status-active": "oklch(0.832 0.159 83)",
117036
+ "--color-status-active-strong": "oklch(0.832 0.159 83)",
117037
+ "--color-status-active-foreground": "oklch(0.21 0.006 285.885)",
117038
+ "--color-status-error": "oklch(0.66 0.218 30.4)",
117039
+ "--color-status-error-strong": "oklch(0.66 0.218 30.4)",
117040
+ "--color-status-error-foreground": "oklch(0.985 0 0)",
117041
+ "--color-status-info": "oklch(0.693 0.042 169.8)",
117042
+ "--color-status-info-strong": "oklch(0.693 0.042 169.8)",
117043
+ "--color-status-info-foreground": "oklch(0.985 0 0)",
117044
+ "--color-status-pending": "oklch(0.725 0.143 77.7)",
117045
+ "--color-status-pending-strong": "oklch(0.725 0.143 77.7)",
117046
+ "--color-status-pending-foreground": "oklch(0.985 0 0)",
117047
+ "--color-status-warning": "oklch(0.731 0.182 51.7)",
117048
+ "--color-status-warning-strong": "oklch(0.731 0.182 51.7)",
117049
+ "--color-status-warning-foreground": "oklch(0.985 0 0)",
117050
+ "--color-status-paused": "oklch(0.705 0.098 2.2)",
117051
+ "--color-status-paused-strong": "oklch(0.705 0.098 2.2)",
117052
+ "--color-status-paused-foreground": "oklch(0.985 0 0)",
117053
+ "--color-status-neutral": "oklch(0.69 0.035 76.3)",
117054
+ "--color-status-neutral-foreground": "oklch(0.985 0 0)"
117055
+ }
117056
+ }
117057
+ },
117058
+ {
117059
+ id: "catppuccin",
117060
+ name: "Catppuccin",
117061
+ description: "Latte light / Mocha dark. Primary = catppuccin mauve.",
117062
+ accent: { light: "oklch(0.555 0.25 297)", dark: "oklch(0.787 0.119 304.8)" },
117063
+ field: { light: "oklch(0.958 0.006 264.5)", dark: "oklch(0.243 0.03 283.9)" },
117064
+ vars: {
117065
+ light: {
117066
+ "--color-background": "oklch(0.958 0.006 264.5)",
117067
+ "--color-foreground": "oklch(0.435 0.043 279.3)",
117068
+ "--color-card": "oklch(0.958 0.006 264.5)",
117069
+ "--color-card-foreground": "oklch(0.435 0.043 279.3)",
117070
+ "--color-surface": "oklch(0.933 0.009 264.5)",
117071
+ "--color-popover": "oklch(0.958 0.006 264.5)",
117072
+ "--color-popover-foreground": "oklch(0.435 0.043 279.3)",
117073
+ "--color-primary": "oklch(0.555 0.25 297)",
117074
+ "--color-primary-foreground": "oklch(0.958 0.006 264.5)",
117075
+ "--color-secondary": "oklch(0.906 0.012 264.5)",
117076
+ "--color-secondary-foreground": "oklch(0.435 0.043 279.3)",
117077
+ "--color-muted": "oklch(0.906 0.012 264.5)",
117078
+ "--color-muted-foreground": "oklch(0.492 0.038 279.3)",
117079
+ "--color-accent": "oklch(0.857 0.014 268.5)",
117080
+ "--color-accent-foreground": "oklch(0.435 0.043 279.3)",
117081
+ "--color-border": "oklch(0.857 0.014 268.5)",
117082
+ "--color-border-subtle": "oklch(0.906 0.012 264.5)",
117083
+ "--color-input": "oklch(0.857 0.014 268.5)",
117084
+ "--color-ring": "oklch(0.555 0.25 297)",
117085
+ "--color-chart-1": "oklch(0.555 0.25 297)",
117086
+ "--color-sidebar": "oklch(0.933 0.009 264.5)",
117087
+ "--color-sidebar-foreground": "oklch(0.435 0.043 279.3)",
117088
+ "--color-sidebar-primary": "oklch(0.555 0.25 297)",
117089
+ "--color-sidebar-primary-foreground": "oklch(0.958 0.006 264.5)",
117090
+ "--color-sidebar-accent": "oklch(0.857 0.014 268.5)",
117091
+ "--color-sidebar-accent-foreground": "oklch(0.435 0.043 279.3)",
117092
+ "--color-sidebar-border": "oklch(0.906 0.012 264.5)",
117093
+ "--color-sidebar-ring": "oklch(0.555 0.25 297)",
117094
+ "--color-status-success": "oklch(0.625 0.177 140.4)",
117095
+ "--color-status-success-strong": "oklch(0.52 0.177 140.4)",
117096
+ "--color-status-success-foreground": "oklch(0.183 0.02 284.2)",
117097
+ "--color-status-active": "oklch(0.714 0.149 67.8)",
117098
+ "--color-status-active-strong": "oklch(0.544 0.149 67.8)",
117099
+ "--color-status-active-foreground": "oklch(0.183 0.02 284.2)",
117100
+ "--color-status-error": "oklch(0.55 0.216 19.8)",
117101
+ "--color-status-error-strong": "oklch(0.55 0.216 19.8)",
117102
+ "--color-status-error-foreground": "oklch(0.958 0.006 264.5)",
117103
+ "--color-status-info": "oklch(0.648 0.107 212.9)",
117104
+ "--color-status-info-strong": "oklch(0.523 0.107 212.9)",
117105
+ "--color-status-info-foreground": "oklch(0.183 0.02 284.2)",
117106
+ "--color-status-pending": "oklch(0.714 0.149 67.8)",
117107
+ "--color-status-pending-strong": "oklch(0.544 0.149 67.8)",
117108
+ "--color-status-pending-foreground": "oklch(0.183 0.02 284.2)",
117109
+ "--color-status-warning": "oklch(0.692 0.204 42.4)",
117110
+ "--color-status-warning-strong": "oklch(0.557 0.204 42.4)",
117111
+ "--color-status-warning-foreground": "oklch(0.183 0.02 284.2)",
117112
+ "--color-status-paused": "oklch(0.664 0.175 273.1)",
117113
+ "--color-status-paused-strong": "oklch(0.549 0.175 273.1)",
117114
+ "--color-status-paused-foreground": "oklch(0.183 0.02 284.2)",
117115
+ "--color-status-neutral": "oklch(0.492 0.038 279.3)",
117116
+ "--color-status-neutral-strong": "oklch(0.492 0.038 279.3)",
117117
+ "--color-status-neutral-foreground": "oklch(0.958 0.006 264.5)"
117118
+ },
117119
+ dark: {
117120
+ "--color-background": "oklch(0.243 0.03 283.9)",
117121
+ "--color-foreground": "oklch(0.879 0.043 272.3)",
117122
+ "--color-card": "oklch(0.324 0.032 282)",
117123
+ "--color-card-foreground": "oklch(0.879 0.043 272.3)",
117124
+ "--color-surface": "oklch(0.216 0.025 284.1)",
117125
+ "--color-popover": "oklch(0.324 0.032 282)",
117126
+ "--color-popover-foreground": "oklch(0.879 0.043 272.3)",
117127
+ "--color-primary": "oklch(0.787 0.119 304.8)",
117128
+ "--color-primary-foreground": "oklch(0.243 0.03 283.9)",
117129
+ "--color-secondary": "oklch(0.404 0.032 280.2)",
117130
+ "--color-secondary-foreground": "oklch(0.879 0.043 272.3)",
117131
+ "--color-muted": "oklch(0.404 0.032 280.2)",
117132
+ "--color-muted-foreground": "oklch(0.817 0.04 272.9)",
117133
+ "--color-accent": "oklch(0.404 0.032 280.2)",
117134
+ "--color-accent-foreground": "oklch(0.879 0.043 272.3)",
117135
+ "--color-border": "oklch(0.879 0.043 272.3 / 12%)",
117136
+ "--color-border-subtle": "oklch(0.879 0.043 272.3 / 8%)",
117137
+ "--color-input": "oklch(0.879 0.043 272.3 / 15%)",
117138
+ "--color-ring": "oklch(0.787 0.119 304.8)",
117139
+ "--color-chart-1": "oklch(0.787 0.119 304.8)",
117140
+ "--color-sidebar": "oklch(0.216 0.025 284.1)",
117141
+ "--color-sidebar-foreground": "oklch(0.879 0.043 272.3)",
117142
+ "--color-sidebar-primary": "oklch(0.787 0.119 304.8)",
117143
+ "--color-sidebar-primary-foreground": "oklch(0.243 0.03 283.9)",
117144
+ "--color-sidebar-accent": "oklch(0.324 0.032 282)",
117145
+ "--color-sidebar-accent-foreground": "oklch(0.879 0.043 272.3)",
117146
+ "--color-sidebar-border": "oklch(0.879 0.043 272.3 / 8%)",
117147
+ "--color-sidebar-ring": "oklch(0.787 0.119 304.8)",
117148
+ "--color-status-success": "oklch(0.858 0.109 142.7)",
117149
+ "--color-status-success-strong": "oklch(0.858 0.109 142.7)",
117150
+ "--color-status-success-foreground": "oklch(0.183 0.02 284.2)",
117151
+ "--color-status-active": "oklch(0.919 0.07 86.5)",
117152
+ "--color-status-active-strong": "oklch(0.919 0.07 86.5)",
117153
+ "--color-status-active-foreground": "oklch(0.183 0.02 284.2)",
117154
+ "--color-status-error": "oklch(0.756 0.13 2.8)",
117155
+ "--color-status-error-strong": "oklch(0.756 0.13 2.8)",
117156
+ "--color-status-error-foreground": "oklch(0.183 0.02 284.2)",
117157
+ "--color-status-info": "oklch(0.791 0.096 228.7)",
117158
+ "--color-status-info-strong": "oklch(0.791 0.096 228.7)",
117159
+ "--color-status-info-foreground": "oklch(0.183 0.02 284.2)",
117160
+ "--color-status-pending": "oklch(0.919 0.07 86.5)",
117161
+ "--color-status-pending-strong": "oklch(0.919 0.07 86.5)",
117162
+ "--color-status-pending-foreground": "oklch(0.183 0.02 284.2)",
117163
+ "--color-status-warning": "oklch(0.824 0.101 52.6)",
117164
+ "--color-status-warning-strong": "oklch(0.824 0.101 52.6)",
117165
+ "--color-status-warning-foreground": "oklch(0.183 0.02 284.2)",
117166
+ "--color-status-paused": "oklch(0.817 0.091 277.3)",
117167
+ "--color-status-paused-strong": "oklch(0.817 0.091 277.3)",
117168
+ "--color-status-paused-foreground": "oklch(0.183 0.02 284.2)",
117169
+ "--color-status-neutral": "oklch(0.751 0.04 273.9)",
117170
+ "--color-status-neutral-strong": "oklch(0.751 0.04 273.9)",
117171
+ "--color-status-neutral-foreground": "oklch(0.183 0.02 284.2)"
117172
+ }
117173
+ }
117174
+ }
117175
+ ];
117176
+ });
117177
+
117178
+ // src/themes/presets.ts
117179
+ function accentPreset(id, name, description, light, dark) {
117180
+ return {
117181
+ id,
117182
+ name,
117183
+ description,
117184
+ accent: { light: light.primary, dark: dark.primary },
117185
+ field: { light: "oklch(1 0 0)", dark: "oklch(0.141 0.005 285.823)" },
117186
+ vars: {
117187
+ light: {
117188
+ "--color-primary": light.primary,
117189
+ "--color-primary-foreground": light.primaryForeground,
117190
+ "--color-ring": light.primary,
117191
+ "--color-sidebar-primary": light.primary,
117192
+ "--color-sidebar-primary-foreground": light.primaryForeground,
117193
+ "--color-sidebar-ring": light.primary,
117194
+ "--color-chart-1": light.primary
117195
+ },
117196
+ dark: {
117197
+ "--color-primary": dark.primary,
117198
+ "--color-primary-foreground": dark.primaryForeground,
117199
+ "--color-ring": dark.primary,
117200
+ "--color-sidebar-primary": dark.primary,
117201
+ "--color-sidebar-primary-foreground": dark.primaryForeground,
117202
+ "--color-sidebar-ring": dark.primary,
117203
+ "--color-chart-1": dark.primary
117204
+ }
117205
+ }
117206
+ };
117207
+ }
117208
+ function getThemePreset(id) {
117209
+ if (!id)
117210
+ return null;
117211
+ return PRESETS_BY_ID.get(id) ?? null;
117212
+ }
117213
+ function isThemePresetId(id) {
117214
+ return PRESETS_BY_ID.has(id);
117215
+ }
117216
+ var DEFAULT_THEME_ID = "hive", NEAR_WHITE = "oklch(0.985 0 0)", ZINC_900 = "oklch(0.21 0.006 285.885)", THEME_PRESETS, PRESETS_BY_ID, THEME_PRESET_IDS;
117217
+ var init_presets = __esm(() => {
117218
+ init_classics();
117219
+ THEME_PRESETS = [
117220
+ {
117221
+ id: DEFAULT_THEME_ID,
117222
+ name: "Hive",
117223
+ description: "The stock Mission Control look: zinc field, one amber voice.",
117224
+ accent: { light: "oklch(0.555 0.163 48.998)", dark: "oklch(0.769 0.188 70.08)" },
117225
+ field: { light: "oklch(1 0 0)", dark: "oklch(0.141 0.005 285.823)" },
117226
+ vars: { light: {}, dark: {} }
117227
+ },
117228
+ accentPreset("meadow", "Meadow", "Zinc field with an emerald voice.", { primary: "oklch(0.596 0.145 163.225)", primaryForeground: NEAR_WHITE }, { primary: "oklch(0.765 0.177 163.223)", primaryForeground: ZINC_900 }),
117229
+ accentPreset("iris", "Iris", "Zinc field with a violet voice.", { primary: "oklch(0.541 0.281 293.009)", primaryForeground: NEAR_WHITE }, { primary: "oklch(0.702 0.183 293.541)", primaryForeground: ZINC_900 }),
117230
+ accentPreset("rose", "Rose", "Zinc field with a deep rose voice.", { primary: "oklch(0.586 0.253 17.585)", primaryForeground: NEAR_WHITE }, { primary: "oklch(0.712 0.194 13.428)", primaryForeground: ZINC_900 }),
117231
+ {
117232
+ id: "cobalt",
117233
+ name: "Cobalt",
117234
+ description: "Cool slate field with a saturated blue voice.",
117235
+ accent: { light: "oklch(0.546 0.245 262.881)", dark: "oklch(0.707 0.165 254.624)" },
117236
+ field: { light: "oklch(1 0 0)", dark: "oklch(0.129 0.042 264.695)" },
117237
+ vars: {
117238
+ light: {
117239
+ "--color-foreground": "oklch(0.129 0.042 264.695)",
117240
+ "--color-card-foreground": "oklch(0.129 0.042 264.695)",
117241
+ "--color-popover-foreground": "oklch(0.129 0.042 264.695)",
117242
+ "--color-surface": "oklch(0.984 0.003 247.858)",
117243
+ "--color-primary": "oklch(0.546 0.245 262.881)",
117244
+ "--color-primary-foreground": NEAR_WHITE,
117245
+ "--color-secondary": "oklch(0.968 0.007 247.896)",
117246
+ "--color-secondary-foreground": "oklch(0.208 0.042 265.755)",
117247
+ "--color-muted": "oklch(0.968 0.007 247.896)",
117248
+ "--color-muted-foreground": "oklch(0.554 0.046 257.417)",
117249
+ "--color-accent": "oklch(0.945 0.01 251.7)",
117250
+ "--color-accent-foreground": "oklch(0.208 0.042 265.755)",
117251
+ "--color-border": "oklch(0.929 0.013 255.508)",
117252
+ "--color-border-subtle": "oklch(0.948 0.01 252)",
117253
+ "--color-input": "oklch(0.929 0.013 255.508)",
117254
+ "--color-ring": "oklch(0.546 0.245 262.881)",
117255
+ "--color-chart-1": "oklch(0.546 0.245 262.881)",
117256
+ "--color-sidebar": "oklch(0.984 0.003 247.858)",
117257
+ "--color-sidebar-foreground": "oklch(0.129 0.042 264.695)",
117258
+ "--color-sidebar-primary": "oklch(0.546 0.245 262.881)",
117259
+ "--color-sidebar-primary-foreground": NEAR_WHITE,
117260
+ "--color-sidebar-accent": "oklch(0.945 0.01 251.7)",
117261
+ "--color-sidebar-accent-foreground": "oklch(0.208 0.042 265.755)",
117262
+ "--color-sidebar-border": "oklch(0.948 0.01 252)",
117263
+ "--color-sidebar-ring": "oklch(0.546 0.245 262.881)"
117264
+ },
117265
+ dark: {
117266
+ "--color-background": "oklch(0.129 0.042 264.695)",
117267
+ "--color-foreground": NEAR_WHITE,
117268
+ "--color-card": "oklch(0.208 0.042 265.755)",
117269
+ "--color-card-foreground": NEAR_WHITE,
117270
+ "--color-surface": "oklch(0.17 0.042 265)",
117271
+ "--color-popover": "oklch(0.208 0.042 265.755)",
117272
+ "--color-popover-foreground": NEAR_WHITE,
117273
+ "--color-primary": "oklch(0.707 0.165 254.624)",
117274
+ "--color-primary-foreground": "oklch(0.129 0.042 264.695)",
117275
+ "--color-secondary": "oklch(0.279 0.041 260.031)",
117276
+ "--color-secondary-foreground": NEAR_WHITE,
117277
+ "--color-muted": "oklch(0.279 0.041 260.031)",
117278
+ "--color-muted-foreground": "oklch(0.704 0.04 256.788)",
117279
+ "--color-accent": "oklch(0.279 0.041 260.031)",
117280
+ "--color-accent-foreground": NEAR_WHITE,
117281
+ "--color-border": "oklch(1 0 0 / 10%)",
117282
+ "--color-border-subtle": "oklch(1 0 0 / 8%)",
117283
+ "--color-input": "oklch(1 0 0 / 15%)",
117284
+ "--color-ring": "oklch(0.707 0.165 254.624)",
117285
+ "--color-chart-1": "oklch(0.707 0.165 254.624)",
117286
+ "--color-sidebar": "oklch(0.208 0.042 265.755)",
117287
+ "--color-sidebar-foreground": NEAR_WHITE,
117288
+ "--color-sidebar-primary": "oklch(0.707 0.165 254.624)",
117289
+ "--color-sidebar-primary-foreground": NEAR_WHITE,
117290
+ "--color-sidebar-accent": "oklch(0.279 0.041 260.031)",
117291
+ "--color-sidebar-accent-foreground": NEAR_WHITE,
117292
+ "--color-sidebar-border": "oklch(1 0 0 / 8%)",
117293
+ "--color-sidebar-ring": "oklch(0.707 0.165 254.624)"
117294
+ }
117295
+ }
117296
+ },
117297
+ {
117298
+ id: "ember",
117299
+ name: "Ember",
117300
+ description: "Warm stone field with a burnt orange voice.",
117301
+ accent: { light: "oklch(0.646 0.222 41.116)", dark: "oklch(0.75 0.183 55.934)" },
117302
+ field: { light: "oklch(0.985 0.001 106.423)", dark: "oklch(0.147 0.004 49.25)" },
117303
+ vars: {
117304
+ light: {
117305
+ "--color-background": "oklch(0.985 0.001 106.423)",
117306
+ "--color-foreground": "oklch(0.147 0.004 49.25)",
117307
+ "--color-card": "oklch(1 0 0)",
117308
+ "--color-card-foreground": "oklch(0.147 0.004 49.25)",
117309
+ "--color-surface": "oklch(0.97 0.001 106.424)",
117310
+ "--color-popover": "oklch(1 0 0)",
117311
+ "--color-popover-foreground": "oklch(0.147 0.004 49.25)",
117312
+ "--color-primary": "oklch(0.646 0.222 41.116)",
117313
+ "--color-primary-foreground": NEAR_WHITE,
117314
+ "--color-secondary": "oklch(0.97 0.001 106.424)",
117315
+ "--color-secondary-foreground": "oklch(0.216 0.006 56.043)",
117316
+ "--color-muted": "oklch(0.97 0.001 106.424)",
117317
+ "--color-muted-foreground": "oklch(0.553 0.013 58.071)",
117318
+ "--color-accent": "oklch(0.946 0.002 48.7)",
117319
+ "--color-accent-foreground": "oklch(0.216 0.006 56.043)",
117320
+ "--color-border": "oklch(0.923 0.003 48.717)",
117321
+ "--color-border-subtle": "oklch(0.947 0.002 48.717)",
117322
+ "--color-input": "oklch(0.923 0.003 48.717)",
117323
+ "--color-ring": "oklch(0.646 0.222 41.116)",
117324
+ "--color-chart-1": "oklch(0.646 0.222 41.116)",
117325
+ "--color-sidebar": "oklch(0.97 0.001 106.424)",
117326
+ "--color-sidebar-foreground": "oklch(0.147 0.004 49.25)",
117327
+ "--color-sidebar-primary": "oklch(0.646 0.222 41.116)",
117328
+ "--color-sidebar-primary-foreground": NEAR_WHITE,
117329
+ "--color-sidebar-accent": "oklch(0.923 0.003 48.717)",
117330
+ "--color-sidebar-accent-foreground": "oklch(0.216 0.006 56.043)",
117331
+ "--color-sidebar-border": "oklch(0.947 0.002 48.717)",
117332
+ "--color-sidebar-ring": "oklch(0.646 0.222 41.116)"
117333
+ },
117334
+ dark: {
117335
+ "--color-background": "oklch(0.147 0.004 49.25)",
117336
+ "--color-foreground": NEAR_WHITE,
117337
+ "--color-card": "oklch(0.216 0.006 56.043)",
117338
+ "--color-card-foreground": NEAR_WHITE,
117339
+ "--color-surface": "oklch(0.185 0.005 49)",
117340
+ "--color-popover": "oklch(0.216 0.006 56.043)",
117341
+ "--color-popover-foreground": NEAR_WHITE,
117342
+ "--color-primary": "oklch(0.75 0.183 55.934)",
117343
+ "--color-primary-foreground": "oklch(0.147 0.004 49.25)",
117344
+ "--color-secondary": "oklch(0.268 0.007 34.298)",
117345
+ "--color-secondary-foreground": NEAR_WHITE,
117346
+ "--color-muted": "oklch(0.268 0.007 34.298)",
117347
+ "--color-muted-foreground": "oklch(0.709 0.01 56.259)",
117348
+ "--color-accent": "oklch(0.268 0.007 34.298)",
117349
+ "--color-accent-foreground": NEAR_WHITE,
117350
+ "--color-border": "oklch(1 0 0 / 10%)",
117351
+ "--color-border-subtle": "oklch(1 0 0 / 8%)",
117352
+ "--color-input": "oklch(1 0 0 / 15%)",
117353
+ "--color-ring": "oklch(0.75 0.183 55.934)",
117354
+ "--color-chart-1": "oklch(0.75 0.183 55.934)",
117355
+ "--color-sidebar": "oklch(0.216 0.006 56.043)",
117356
+ "--color-sidebar-foreground": NEAR_WHITE,
117357
+ "--color-sidebar-primary": "oklch(0.75 0.183 55.934)",
117358
+ "--color-sidebar-primary-foreground": NEAR_WHITE,
117359
+ "--color-sidebar-accent": "oklch(0.268 0.007 34.298)",
117360
+ "--color-sidebar-accent-foreground": NEAR_WHITE,
117361
+ "--color-sidebar-border": "oklch(1 0 0 / 8%)",
117362
+ "--color-sidebar-ring": "oklch(0.75 0.183 55.934)"
117363
+ }
117364
+ }
117365
+ },
117366
+ {
117367
+ id: "carbon",
117368
+ name: "Carbon",
117369
+ description: "Pure monochrome. The interface recedes, the data speaks.",
117370
+ accent: { light: ZINC_900, dark: NEAR_WHITE },
117371
+ field: { light: "oklch(1 0 0)", dark: "oklch(0.141 0.005 285.823)" },
117372
+ vars: {
117373
+ light: {
117374
+ "--color-primary": ZINC_900,
117375
+ "--color-primary-foreground": NEAR_WHITE,
117376
+ "--color-ring": "oklch(0.552 0.016 285.938)",
117377
+ "--color-sidebar-primary": ZINC_900,
117378
+ "--color-sidebar-primary-foreground": NEAR_WHITE,
117379
+ "--color-sidebar-ring": "oklch(0.552 0.016 285.938)"
117380
+ },
117381
+ dark: {
117382
+ "--color-primary": NEAR_WHITE,
117383
+ "--color-primary-foreground": ZINC_900,
117384
+ "--color-ring": "oklch(0.705 0.015 286.067)",
117385
+ "--color-sidebar-primary": NEAR_WHITE,
117386
+ "--color-sidebar-primary-foreground": ZINC_900,
117387
+ "--color-sidebar-ring": "oklch(0.705 0.015 286.067)"
117388
+ }
117389
+ }
117390
+ },
117391
+ {
117392
+ id: "paper",
117393
+ name: "Paper",
117394
+ description: "Warm editorial paper: off-white field, white cards, one blue voice.",
117395
+ accent: { light: "oklch(0.546 0.215 262.881)", dark: "oklch(0.714 0.143 254.624)" },
117396
+ field: { light: "oklch(0.973 0.004 91.446)", dark: "oklch(0.21 0.005 91.5)" },
117397
+ vars: {
117398
+ light: {
117399
+ "--color-background": "oklch(0.973 0.004 91.446)",
117400
+ "--color-foreground": ZINC_900,
117401
+ "--color-card": "oklch(1 0 0)",
117402
+ "--color-card-foreground": ZINC_900,
117403
+ "--color-surface": "oklch(0.988 0.001 106.423)",
117404
+ "--color-popover": "oklch(1 0 0)",
117405
+ "--color-popover-foreground": ZINC_900,
117406
+ "--color-primary": "oklch(0.546 0.215 262.881)",
117407
+ "--color-primary-foreground": NEAR_WHITE,
117408
+ "--color-secondary": "oklch(0.951 0.006 91.5)",
117409
+ "--color-secondary-foreground": ZINC_900,
117410
+ "--color-muted": "oklch(0.951 0.006 91.5)",
117411
+ "--color-muted-foreground": "oklch(0.504 0.01 271.22)",
117412
+ "--color-accent": "oklch(0.932 0.008 91.5)",
117413
+ "--color-accent-foreground": ZINC_900,
117414
+ "--color-border": "oklch(0.891 0.013 91.529)",
117415
+ "--color-border-subtle": "oklch(0.925 0.009 91.5)",
117416
+ "--color-input": "oklch(0.891 0.013 91.529)",
117417
+ "--color-ring": "oklch(0.546 0.215 262.881)",
117418
+ "--color-chart-1": "oklch(0.546 0.215 262.881)",
117419
+ "--color-sidebar": "oklch(0.951 0.006 91.5)",
117420
+ "--color-sidebar-foreground": ZINC_900,
117421
+ "--color-sidebar-primary": "oklch(0.546 0.215 262.881)",
117422
+ "--color-sidebar-primary-foreground": NEAR_WHITE,
117423
+ "--color-sidebar-accent": "oklch(0.915 0.01 91.5)",
117424
+ "--color-sidebar-accent-foreground": ZINC_900,
117425
+ "--color-sidebar-border": "oklch(0.925 0.009 91.5)",
117426
+ "--color-sidebar-ring": "oklch(0.546 0.215 262.881)"
117427
+ },
117428
+ dark: {
117429
+ "--color-background": "oklch(0.21 0.005 91.5)",
117430
+ "--color-foreground": "oklch(0.94 0.008 91.5)",
117431
+ "--color-card": "oklch(0.25 0.006 91.5)",
117432
+ "--color-card-foreground": "oklch(0.94 0.008 91.5)",
117433
+ "--color-surface": "oklch(0.23 0.0055 91.5)",
117434
+ "--color-popover": "oklch(0.25 0.006 91.5)",
117435
+ "--color-popover-foreground": "oklch(0.94 0.008 91.5)",
117436
+ "--color-primary": "oklch(0.714 0.143 254.624)",
117437
+ "--color-primary-foreground": "oklch(0.21 0.005 91.5)",
117438
+ "--color-secondary": "oklch(0.3 0.007 91.5)",
117439
+ "--color-secondary-foreground": "oklch(0.94 0.008 91.5)",
117440
+ "--color-muted": "oklch(0.3 0.007 91.5)",
117441
+ "--color-muted-foreground": "oklch(0.72 0.012 91.5)",
117442
+ "--color-accent": "oklch(0.3 0.007 91.5)",
117443
+ "--color-accent-foreground": "oklch(0.94 0.008 91.5)",
117444
+ "--color-border": "oklch(0.95 0.02 91.5 / 12%)",
117445
+ "--color-border-subtle": "oklch(0.95 0.02 91.5 / 8%)",
117446
+ "--color-input": "oklch(0.95 0.02 91.5 / 16%)",
117447
+ "--color-ring": "oklch(0.714 0.143 254.624)",
117448
+ "--color-chart-1": "oklch(0.714 0.143 254.624)",
117449
+ "--color-sidebar": "oklch(0.25 0.006 91.5)",
117450
+ "--color-sidebar-foreground": "oklch(0.94 0.008 91.5)",
117451
+ "--color-sidebar-primary": "oklch(0.714 0.143 254.624)",
117452
+ "--color-sidebar-primary-foreground": NEAR_WHITE,
117453
+ "--color-sidebar-accent": "oklch(0.3 0.007 91.5)",
117454
+ "--color-sidebar-accent-foreground": "oklch(0.94 0.008 91.5)",
117455
+ "--color-sidebar-border": "oklch(0.95 0.02 91.5 / 8%)",
117456
+ "--color-sidebar-ring": "oklch(0.714 0.143 254.624)"
117457
+ }
117458
+ }
117459
+ },
117460
+ ...CLASSIC_THEME_PRESETS
117461
+ ];
117462
+ PRESETS_BY_ID = new Map(THEME_PRESETS.map((preset) => [preset.id, preset]));
117463
+ THEME_PRESET_IDS = THEME_PRESETS.map((preset) => preset.id);
117464
+ });
117465
+
117466
+ // src/themes/page-fields.ts
117467
+ function readThemeFields(input) {
117468
+ if (typeof input.theme === "string" && !isThemePresetId(input.theme)) {
117469
+ return { error: `Unknown theme "${input.theme}". Use one of: ${THEME_PRESET_IDS.join(", ")}` };
117470
+ }
117471
+ if (!input.themeTokens) {
117472
+ return { theme: input.theme, themeTokens: input.themeTokens, ignored: [] };
117473
+ }
117474
+ try {
117475
+ const { tokens, ignored } = importThemeTokens(input.themeTokens);
117476
+ return { theme: input.theme, themeTokens: tokens, ignored };
117477
+ } catch (err) {
117478
+ if (err instanceof ThemeImportError)
117479
+ return { error: `Invalid themeTokens: ${err.message}` };
117480
+ throw err;
117481
+ }
117482
+ }
117483
+ var init_page_fields = __esm(() => {
117484
+ init_import();
117485
+ init_presets();
117486
+ });
117487
+
116133
117488
  // src/tools/create-page.ts
116134
117489
  function slugify3(input) {
116135
117490
  const slug = input.toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
@@ -116141,10 +117496,19 @@ function getApiBaseUrl() {
116141
117496
  function getAppBaseUrl2() {
116142
117497
  return getAppUrl();
116143
117498
  }
116144
- var registerCreatePageTool = (server) => {
117499
+ function bodyUsesDesignSystem(html) {
117500
+ return COLOR_TOKEN_REFERENCE.test(html) || classAttributeValues(html).some((value) => SWARM_CLASS.test(value));
117501
+ }
117502
+ function hasLightOnlyColors(tokens) {
117503
+ if (!tokens)
117504
+ return false;
117505
+ const isColor = (name) => PAGE_COLOR_TOKENS.has(name);
117506
+ return Object.keys(tokens.light).some(isColor) && !Object.keys(tokens.dark).some(isColor);
117507
+ }
117508
+ var SWARM_CLASS, COLOR_TOKEN_REFERENCE, PAGE_COLOR_TOKENS, registerCreatePageTool = (server) => {
116145
117509
  createToolRegistrar(server)("create_page", {
116146
117510
  title: "Create or update a page",
116147
- description: "Stores an HTML or JSON page in the swarm and returns shareable URLs. " + "Calls are upsert-by-(agent, slug): if you previously created a page " + "with the same slug, its prior state is snapshotted and the row is " + "updated. Use this for static reports, dashboards, or JSON action " + "specs that don't need a long-lived process.",
117511
+ description: "Stores an HTML or JSON page in the swarm and returns shareable URLs. " + "Calls are upsert-by-(agent, slug): if you previously created a page " + "with the same slug, its prior state is snapshotted and the row is " + "updated. Use this for static reports, dashboards, or JSON action " + "specs that don't need a long-lived process. " + "HTML pages use the swarm design system (designVersion 2): theme " + "tokens such as var(--color-primary), the swarm-* primitives, and " + "Tailwind v4 utilities such as bg-card and text-muted-foreground. " + "Set `theme` to a preset id or pass `themeTokens` (a token map, or a " + 'CSS variable block with format "css") to restyle the whole page. ' + "Do not hardcode colors: inside the dashboard the page follows the " + "viewer's theme and dark mode. Pages created before designVersion 2 " + "keep the old look; pass designVersion: 2 when you rewrite one.",
116148
117512
  annotations: { destructiveHint: false },
116149
117513
  inputSchema: object2({
116150
117514
  key: AssetKeySchema.optional().describe("Logical namespace. Defaults to a shared/page:<id>/ resource key."),
@@ -116155,7 +117519,10 @@ var registerCreatePageTool = (server) => {
116155
117519
  authMode: PageAuthModeSchema.default("authed").describe("'authed' — requires page-session cookie (default); 'public' — no gate and must be explicit; 'password' — requires key."),
116156
117520
  password: string2().min(1).optional().describe("Plaintext password, hashed before storage. Only meaningful for authMode='password'."),
116157
117521
  description: string2().optional().describe("Optional short description, used in listings + OG-tag unfurl."),
116158
- needsCredentials: array2(object2({ name: string2(), description: string2() })).optional().describe("Declared credential needs for JSON pages (renderer ignores for v1 — reserved for follow-up).")
117522
+ needsCredentials: array2(object2({ name: string2(), description: string2() })).optional().describe("Declared credential needs for JSON pages (renderer ignores for v1 — reserved for follow-up)."),
117523
+ theme: string2().nullable().optional().describe("Theme preset id that restyles the whole page, for example paper, github or hive. An unknown id returns an error that lists every preset. Omit to follow the viewer's theme (on update, to keep the stored one). Pass null to clear it."),
117524
+ themeTokens: PageThemeTokensInputSchema.nullable().optional().describe('Per-page token overrides, applied on top of the preset. Send { light, dark } maps of token name to CSS value (for example { light: { "--color-primary": "oklch(0.55 0.2 260)" } }), or { format: "css", css } with a CSS variable block (:root, .dark, @theme) as shadcn, tweakcn and Tailwind v4 export it. Stored normalized. Names outside the token contract, and values that reference a variable outside it, are ignored and reported in the result. Replaces the stored overrides. Omit to keep them on update. Pass null to clear them.'),
117525
+ designVersion: number2().int().min(1).max(2).optional().describe("Design system version. 2 is the swarm design system and the default for new pages. 1 is the original look that older pages keep. Omit on update to keep the stored value.")
116159
117526
  }),
116160
117527
  outputSchema: swarmToolOutputSchema({
116161
117528
  yourAgentId: string2().optional(),
@@ -116163,13 +117530,21 @@ var registerCreatePageTool = (server) => {
116163
117530
  key: AssetKeySchema.optional(),
116164
117531
  version: number2().optional(),
116165
117532
  app_url: string2().optional(),
116166
- api_url: string2().optional()
117533
+ api_url: string2().optional(),
117534
+ designVersion: number2().optional(),
117535
+ ignoredTokens: array2(string2()).optional(),
117536
+ colorLiteralCount: number2().optional(),
117537
+ usesDesignSystem: boolean().optional(),
117538
+ lightOnlyColors: boolean().optional()
116167
117539
  })
116168
117540
  }, async (input, requestInfo, _meta) => {
116169
117541
  if (!requestInfo.agentId) {
116170
117542
  const msg = "Agent ID required. Set the X-Agent-ID header on the MCP request.";
116171
117543
  return toolErr(msg);
116172
117544
  }
117545
+ const themeFields = readThemeFields(input);
117546
+ if ("error" in themeFields)
117547
+ return toolErr(themeFields.error);
116173
117548
  const slug = input.slug ?? slugify3(input.title);
116174
117549
  const finalSlug = slug || "page";
116175
117550
  let passwordHash;
@@ -116203,7 +117578,10 @@ var registerCreatePageTool = (server) => {
116203
117578
  authMode: input.authMode,
116204
117579
  passwordHash: passwordHash ?? null,
116205
117580
  body: input.body,
116206
- needsCredentials: needsCredentialsNames ?? null
117581
+ needsCredentials: needsCredentialsNames ?? null,
117582
+ theme: themeFields.theme,
117583
+ themeTokens: themeFields.themeTokens,
117584
+ designVersion: input.designVersion
116207
117585
  });
116208
117586
  if (!updated) {
116209
117587
  const msg = `Failed to update existing page ${existing.id}.`;
@@ -116224,7 +117602,10 @@ var registerCreatePageTool = (server) => {
116224
117602
  authMode: input.authMode,
116225
117603
  passwordHash,
116226
117604
  body: input.body,
116227
- needsCredentials: needsCredentialsNames
117605
+ needsCredentials: needsCredentialsNames,
117606
+ theme: themeFields.theme,
117607
+ themeTokens: themeFields.themeTokens,
117608
+ designVersion: input.designVersion
116228
117609
  });
116229
117610
  id = created.id;
116230
117611
  } catch (err) {
@@ -116241,16 +117622,26 @@ var registerCreatePageTool = (server) => {
116241
117622
  const apiUrl = `${getApiBaseUrl()}/p/${id}`;
116242
117623
  const appUrl = `${getAppBaseUrl2()}/pages/${id}`;
116243
117624
  const version = await getPageEditCounter(id);
116244
- return toolOk(`Page "${input.title}" saved (slug=${finalSlug}, version=${version}).`, {
117625
+ const designFlags = fresh.contentType === "text/html" ? {
117626
+ usesDesignSystem: typeof input.theme === "string" || Boolean(input.themeTokens) || bodyUsesDesignSystem(fresh.body),
117627
+ lightOnlyColors: hasLightOnlyColors(fresh.themeTokens),
117628
+ ...fresh.designVersion >= 2 ? { colorLiteralCount: countColorLiterals(fresh.body) } : {}
117629
+ } : {};
117630
+ const { ignored } = themeFields;
117631
+ return toolOk(`Page "${input.title}" saved (slug=${finalSlug}, version=${version}, designVersion=${fresh.designVersion}).` + (ignored.length > 0 ? " Some theme tokens were ignored (outside the page token contract or referencing a variable outside it)." : ""), {
116245
117632
  details: `API: ${apiUrl}
116246
- App: ${appUrl}`,
117633
+ App: ${appUrl}` + (ignored.length > 0 ? `
117634
+ Ignored theme tokens: ${ignored.join(", ")}` : ""),
116247
117635
  data: {
116248
117636
  yourAgentId: requestInfo.agentId,
116249
117637
  id,
116250
117638
  key: fresh.key,
116251
117639
  version,
116252
117640
  app_url: appUrl,
116253
- api_url: apiUrl
117641
+ api_url: apiUrl,
117642
+ designVersion: fresh.designVersion,
117643
+ ...ignored.length > 0 ? { ignoredTokens: ignored } : {},
117644
+ ...designFlags
116254
117645
  }
116255
117646
  });
116256
117647
  });
@@ -116261,10 +117652,16 @@ var init_create_page = __esm(() => {
116261
117652
  init_audit_user();
116262
117653
  init_db4();
116263
117654
  init_page_versions();
117655
+ init_color_literals();
116264
117656
  init_version3();
117657
+ init_page_fields();
117658
+ init_tokens2();
116265
117659
  init_utils();
116266
117660
  init_types4();
116267
117661
  init_constants3();
117662
+ SWARM_CLASS = /(?:^|\s)swarm-/;
117663
+ COLOR_TOKEN_REFERENCE = /var\(\s*--color-/i;
117664
+ PAGE_COLOR_TOKENS = new Set(PAGE_THEME_COLOR_TOKENS);
116268
117665
  });
116269
117666
 
116270
117667
  // src/oauth/app-validation.ts
@@ -116317,7 +117714,7 @@ function hydrateOAuthAppFromPreset(preset, overrides = {}) {
116317
117714
  };
116318
117715
  }
116319
117716
  var OAUTH_PRESETS;
116320
- var init_presets = __esm(() => {
117717
+ var init_presets2 = __esm(() => {
116321
117718
  OAUTH_PRESETS = [
116322
117719
  {
116323
117720
  id: "google",
@@ -116748,7 +118145,7 @@ var init_tool = __esm(() => {
116748
118145
  init_oauth_credential_bindings();
116749
118146
  init_script_connections();
116750
118147
  init_app_validation();
116751
- init_presets();
118148
+ init_presets2();
116752
118149
  init_wrapper();
116753
118150
  init_rbac();
116754
118151
  init_credential_broker();
@@ -117783,6 +119180,187 @@ var init_automatic_task_gate = __esm(() => {
117783
119180
  shouldPersistTaskCompletionMemory = shouldPersistAutomaticTaskMemory;
117784
119181
  });
117785
119182
 
119183
+ // src/tasks/follow-up-gate.ts
119184
+ function readFollowUpGateConfig(env = process.env) {
119185
+ const mode = env.FOLLOW_UP_GATE_MODE?.trim().toLowerCase() === "shadow" ? "shadow" : "off";
119186
+ const scheduleIds = new Set(parseFollowUpGateScheduleIds(env.FOLLOW_UP_GATE_SCHEDULE_IDS).filter(isFollowUpGateScheduleId).map((id) => id.toLowerCase()));
119187
+ return { mode, scheduleIds, verifierScript: env.FOLLOW_UP_GATE_VERIFIER_SCRIPT?.trim() ?? "" };
119188
+ }
119189
+ function classifyFollowUpGate(input) {
119190
+ const { task, status, config } = input;
119191
+ if (config.mode === "off")
119192
+ return { eligible: false, reason: "mode_off" };
119193
+ if (!task.scheduleId)
119194
+ return { eligible: false, reason: "not_scheduled" };
119195
+ if (!config.scheduleIds.has(task.scheduleId.toLowerCase())) {
119196
+ return { eligible: false, reason: "schedule_not_gated" };
119197
+ }
119198
+ if (status === "failed")
119199
+ return { eligible: false, reason: "status_failed" };
119200
+ if (task.followUpConfig?.onCompleted?.trim() || task.followUpConfig?.onFailed?.trim()) {
119201
+ return { eligible: false, reason: "follow_up_instructions" };
119202
+ }
119203
+ return { eligible: true };
119204
+ }
119205
+ function scheduleFollowUpGateShadow(args) {
119206
+ const config = readFollowUpGateConfig();
119207
+ const verdict = classifyFollowUpGate({ task: args.task, status: args.status, config });
119208
+ if (!verdict.eligible && (verdict.reason === "mode_off" || verdict.reason === "not_scheduled" || verdict.reason === "schedule_not_gated")) {
119209
+ return;
119210
+ }
119211
+ const deps = depsForTests ?? defaultDeps;
119212
+ getDbClient2().afterCommit(() => {
119213
+ const run = verdict.eligible ? runShadow(args, config, deps) : writeRecord(args, { decision: "ineligible", reason: verdict.reason });
119214
+ pending.add(run);
119215
+ const settle = () => {
119216
+ pending.delete(run);
119217
+ };
119218
+ run.then(settle, settle);
119219
+ });
119220
+ }
119221
+ async function runShadow(args, config, deps) {
119222
+ if (inFlight4 >= FOLLOW_UP_GATE_MAX_IN_FLIGHT) {
119223
+ await writeRecord(args, { decision: "error", reason: "concurrency_cap" });
119224
+ return;
119225
+ }
119226
+ inFlight4++;
119227
+ try {
119228
+ await writeRecord(args, await verify(args, config, deps));
119229
+ } finally {
119230
+ inFlight4--;
119231
+ }
119232
+ }
119233
+ async function verify(args, config, deps) {
119234
+ if (!config.verifierScript)
119235
+ return { decision: "error", reason: "no_verifier" };
119236
+ const started = performance.now();
119237
+ const latency = () => Math.round(performance.now() - started);
119238
+ const controller = new AbortController;
119239
+ const deadlineMs = timeoutMs;
119240
+ let timer;
119241
+ let script = null;
119242
+ let timedOut = false;
119243
+ try {
119244
+ const run = (async () => {
119245
+ script = await deps.getVerifier(config.verifierScript);
119246
+ if (!script)
119247
+ return null;
119248
+ return {
119249
+ result: await deps.runVerifier(script, { taskId: args.task.id }, args.leadAgentId, controller.signal)
119250
+ };
119251
+ })();
119252
+ run.catch(() => {});
119253
+ const deadline = new Promise((_, reject) => {
119254
+ timer = setTimeout(() => {
119255
+ timedOut = true;
119256
+ controller.abort();
119257
+ reject(new Error(`verifier timed out after ${deadlineMs}ms`));
119258
+ }, deadlineMs);
119259
+ });
119260
+ const outcome = await Promise.race([run, deadline]);
119261
+ const verifier = verifierInfo(script);
119262
+ if (!outcome) {
119263
+ return { decision: "error", reason: "no_verifier", verifier, latencyMs: latency() };
119264
+ }
119265
+ const result = outcome.result;
119266
+ if (!result || typeof result !== "object") {
119267
+ return {
119268
+ decision: "error",
119269
+ reason: "verifier_error",
119270
+ verifier,
119271
+ latencyMs: latency(),
119272
+ error: "verifier result is not an object"
119273
+ };
119274
+ }
119275
+ return { ...mapVerdict(result), verifier, latencyMs: latency() };
119276
+ } catch (err) {
119277
+ const message = err instanceof Error ? err.message : String(err);
119278
+ return {
119279
+ decision: "error",
119280
+ reason: timedOut ? "timeout" : "verifier_error",
119281
+ verifier: verifierInfo(script),
119282
+ latencyMs: latency(),
119283
+ error: clip(message)
119284
+ };
119285
+ } finally {
119286
+ clearTimeout(timer);
119287
+ }
119288
+ }
119289
+ function verifierInfo(script) {
119290
+ return script ? { name: script.name, version: script.version, contentHash: script.contentHash } : null;
119291
+ }
119292
+ function mapVerdict(result) {
119293
+ const ok = typeof result.ok === "boolean" ? result.ok : null;
119294
+ const controls = result.controls;
119295
+ const controlsOk = controls?.ok === true;
119296
+ const unverified = Array.isArray(result.unverified) ? result.unverified.filter((name) => typeof name === "string").slice(0, MAX_UNVERIFIED).map((name) => name.slice(0, 100)) : [];
119297
+ return {
119298
+ decision: ok === true && controlsOk ? "would_skip" : "would_keep",
119299
+ reason: null,
119300
+ verdict: {
119301
+ ok,
119302
+ check: typeof result.check === "string" ? result.check.slice(0, 100) : null,
119303
+ detail: typeof result.detail === "string" ? clip(result.detail) : "",
119304
+ controlsOk
119305
+ },
119306
+ unverified
119307
+ };
119308
+ }
119309
+ function clip(text) {
119310
+ return scrubSecrets(text).slice(0, TEXT_LIMIT);
119311
+ }
119312
+ async function writeRecord(args, record) {
119313
+ try {
119314
+ await createLogEntry2({
119315
+ eventType: FOLLOW_UP_GATE_SHADOW_EVENT,
119316
+ taskId: args.task.id,
119317
+ agentId: args.leadAgentId,
119318
+ metadata: {
119319
+ v: 1,
119320
+ mode: "shadow",
119321
+ followUpTaskId: args.followUpTaskId,
119322
+ scheduleId: args.task.scheduleId ?? null,
119323
+ status: args.status,
119324
+ decision: record.decision,
119325
+ reason: record.reason,
119326
+ verdict: record.verdict ?? null,
119327
+ unverified: record.unverified ?? [],
119328
+ verifier: record.verifier ?? null,
119329
+ latencyMs: record.latencyMs ?? null,
119330
+ ...record.error ? { error: record.error } : {}
119331
+ }
119332
+ });
119333
+ } catch (err) {
119334
+ console.warn(`[follow-up-gate] Could not record shadow decision for task ${args.task.id.slice(0, 8)}:`, scrubSecrets(err instanceof Error ? err.message : String(err)));
119335
+ }
119336
+ }
119337
+ var FOLLOW_UP_GATE_SHADOW_EVENT = "task_follow_up_gate_shadow", FOLLOW_UP_GATE_TIMEOUT_MS = 60000, FOLLOW_UP_GATE_MAX_IN_FLIGHT = 2, TEXT_LIMIT = 300, MAX_UNVERIFIED = 20, defaultDeps, timeoutMs, depsForTests = null, inFlight4 = 0, pending;
119338
+ var init_follow_up_gate = __esm(() => {
119339
+ init_db4();
119340
+ init_db3();
119341
+ init_run_saved();
119342
+ init_follow_up_gate_schedule_ids();
119343
+ init_secret_scrubber();
119344
+ defaultDeps = {
119345
+ getVerifier: (name) => getScript({ name, scope: "global" }),
119346
+ runVerifier: async (script, input, agentId, signal) => {
119347
+ const output = await runSavedScriptAsAgent({
119348
+ script,
119349
+ input,
119350
+ agentId,
119351
+ timeoutMs,
119352
+ signal
119353
+ });
119354
+ if (output.exitCode !== 0 || output.error || output.runtimeError) {
119355
+ throw new Error(output.runtimeError?.message ?? output.error ?? `script exited with code ${output.exitCode}`);
119356
+ }
119357
+ return output.result;
119358
+ }
119359
+ };
119360
+ timeoutMs = FOLLOW_UP_GATE_TIMEOUT_MS;
119361
+ pending = new Set;
119362
+ });
119363
+
117786
119364
  // src/tasks/worker-follow-up.ts
117787
119365
  function isCrashResumePinEnabled() {
117788
119366
  return isEnvFlagEnabled("HEARTBEAT_PIN_CRASH_RESUME", true);
@@ -117963,7 +119541,7 @@ ${depLines.join(`
117963
119541
  console.log(`[worker-follow-up] Skipped follow-up for ${status} task ${task.id.slice(0, 8)}: woke deferred waiter ${wake.waiterTaskId?.slice(0, 8) ?? "?"} (wake-up task ${wake.wakeTaskId.slice(0, 8)})`);
117964
119542
  return null;
117965
119543
  }
117966
- return await createTaskWithSiblingAwareness(changes.description ?? followUpDescription, {
119544
+ const followUp = await createTaskWithSiblingAwareness(changes.description ?? followUpDescription, {
117967
119545
  agentId: followUpAgentId,
117968
119546
  routingReason: followUpAgentId ? "skill" : undefined,
117969
119547
  routingSource: followUpAgentId ? "engine_default" : undefined,
@@ -117978,6 +119556,19 @@ ${depLines.join(`
117978
119556
  followUpConfig: changes.followUpConfig,
117979
119557
  inheritParentOutputSchema: false
117980
119558
  }, { origin: "followUp" });
119559
+ if (followUp) {
119560
+ try {
119561
+ scheduleFollowUpGateShadow({
119562
+ task,
119563
+ status,
119564
+ followUpTaskId: followUp.id,
119565
+ leadAgentId: leadAgent.id
119566
+ });
119567
+ } catch (err) {
119568
+ console.warn(`[worker-follow-up] Follow-up gate shadow failed for task ${task.id.slice(0, 8)}:`, err instanceof Error ? err.message : String(err));
119569
+ }
119570
+ }
119571
+ return followUp;
117981
119572
  }
117982
119573
  async function deferredWorkChatContextKey(task) {
117983
119574
  if (chatThreadOfContextKey(task.contextKey))
@@ -118188,6 +119779,7 @@ var init_worker_follow_up = __esm(() => {
118188
119779
  init_env_flag();
118189
119780
  init_task_attachment_links();
118190
119781
  init_context_key();
119782
+ init_follow_up_gate();
118191
119783
  init_model_pin();
118192
119784
  init_sibling_awareness();
118193
119785
  init_templates3();
@@ -140072,4 +141664,4 @@ var init_server = __esm(() => {
140072
141664
  loggedToolAllowlistWarnings = new Set;
140073
141665
  });
140074
141666
 
140075
- export { DEFAULT_NEGOTIATED_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, isJSONRPCRequest, isJSONRPCResultResponse, isJSONRPCErrorResponse, JSONRPCMessageSchema, isInitializeRequest, init_types, McpServer, init_mcp, repointTrackerSyncBySwarmId, init_tracker, isRuntimePoolWakeable, isAgentReachable, init_reachability, referencedBundlePaths, skillDirs, init_manifest_format, TaskCreationBlockedError, init_errors2, resolveIdentity, renderIdentity, init_identity, recordUnmappedIdentity, init_unmapped_identities, MAX_TASK_ATTACHMENT_BYTES, recordTaskAttachmentUpload, scopeFromAttachment, backingProviderId, init_task_attachment_store, taskModelPin, resumedTaskModelSelection, init_model_pin, listHarnessModelSupport, recordHarnessModelSupport, agentRanModel, getAgentHarnessCliVersion, setAgentHarnessCliVersion, init_harness_model_support, sanitizeModelTierOverrides, parseModelTierOverridesHeader, setAgentModelTierOverrides, previewModelTiers, recordClaimModelResolution, init_model_tier_resolution, harnessModelErrorFor, poolTaskRunsOnHarness, explicitModelError, explicitModelErrorForAgent, init_model_validation, stripSiblingBlock, init_sibling_block, createTaskWithSiblingAwareness, init_sibling_awareness, transcribeAudioNotes, init_transcription, init_templates, buildEffectiveText, bufferedFileFailures, fetchSlackFiles, createSlackTaskWithFiles, notifySlackFileFailures, init_inbound_files, isAddressedToOtherUser, broadcastMatches, routeMessage, extractTaskFromMessage, init_router, extractSlackMessageText, slackInboundMessageText, collectSlackMessageFiles, init_message_text, createAdditiveBuffer, init_additive_buffer, recoverIncompleteRuns, init_recovery, handleWebhookTrigger, verifyHmacSignature, WebhookError, init_triggers, snapshotAndUpdateWorkflow, init_version, RawLlmConfigSchema, RawLlmOutputSchema, executeRawLlm, init_raw_llm, getExecutorRegistry2, initWorkflows2, init_workflows, dispatchScheduleTarget, calculateNextRun2, startScheduler2, stopScheduler2, runScheduleNow2, init_scheduler, ExtensionAssetConflictError, init_assets, ExtensionOwnershipError, getExtensionFiles, getExtensionById, getExtensionByName, listExtensions, listExtensionVersions, updateExtensionMeta, listExtensionRuns, init_db, SDK_ALLOWLIST, mcpToolNameForSdkMethod, init_sdk_allowlist, MCP_OVERFLOW_NAMESPACE, mcpOverflowAuthError, init_kv_overflow, hasKvViewArgs, resolveKvView, init_kv_view, toolErr, createToolRegistrar, init_utils, handleMcpBridge, init_mcp_bridge, Redacted, init_redacted, SCRIPT_SDK_RESPONSE_LIMIT_BYTES, readScriptSdkJsonResponse, init_response_limit, ExtensionConfigError, init_loader, ExtensionLifecycleError, setExtensionLoopbackBaseUrl, enableExtension, disableExtension, activateVersion, ExtensionAssetsInvalidError, installExtensionWithAssets, uninstallExtension, reloadExtension, loadEnabledExtensions, stopExtensionRuntime, init_lifecycle, ExtensionAbortedError2, isRegistered2, isExtensionAgentId2, getExtensionBridgeToken2, resolveBridgeCallOrigin2, extensionIdForAgent2, runContext2, registerLoaded2, unregister2, listRegistered2, dispatchPre2, dispatchPost2, init_dispatcher, REBOOT_RETRY_PIN_TAG2, getPinCandidateAgent2, resolveLeadOnlyRecoveryAssignment2, getResumeGeneration2, getNextResumeGeneration2, inheritedModelSelection2, createWorkerTaskFollowUp2, createResumeFollowUp2, createRerouteDecisionTask2, createPoolStarvationDecisionTask2, init_worker_follow_up, isGitHubEnabled, initGitHub, verifyWebhookSignature, isAgentMailEnabled, initAgentMail, verifyAgentMailWebhook, isInboxAllowed, isSenderAllowed, handleMessageReceived, init_agentmail, isAzureDevOpsEnabled, initAzureDevOps, verifyAzureDevOpsWebhook, isAzureDevOpsUrl, canonicalAzureDevOpsRepoUrl, parseAzureDevOpsRepoUrl, init_azure_devops, createdPullRequestOf, commentedPayloadOf, handlePullRequestCreated, handlePullRequestCommented, handleWorkItemCreated, handleWorkItemUpdated, handleWorkItemCommented, handleWorkItemDeleted, handleWorkItemRestored, initAzureDevOpsOutbound, init_azure_devops2, enqueueAuditRow, enqueueAdmissionRow, flushAuditBuffer, startAuditWriter, stopAuditWriter, startAuditGc, stopAuditGc, init_rbac_audit, getTelemetryIngestAnchor, init_telemetry_ingest_anchor, initApiTelemetry, syncTelemetryEnabled, init_telemetry_enable, isBitbucketEnabled, initBitbucket, verifyBitbucketWebhook, isDuplicateDelivery, markDeliveryProcessed, pullRequestEventOf, pullRequestCommentEventOf, handlePullRequestCreated2, handlePullRequestCommentCreated, handlePullRequestClosed, init_bitbucket, handlePullRequest, handleIssue, handleComment, handlePullRequestReview, handleCheckRun, handleCheckSuite, handleWorkflowRun, init_github, isGitLabEnabled, initGitLab, verifyGitLabWebhook, handleMergeRequest, handleIssue2, handleNote, handlePipeline, init_gitlab, isChatSdkEnabled, getChatSdkConfig, init_config, errorMessage, init_logger, resolveAdapterApiUrl, init_adapters, trackBackground, init_background, TelegramBotApiError, callTelegramBotApi, init_telegram_api, isTrustedTeamsServiceUrl, init_teams_origin, getSessionLabels, rememberSessionLabel, init_session_labels, isChatSdkStopping, startChatSdk, getChatInstance, isChatAdapterConfigured, getChatSdkHealth, stopChatSdk, init_runtime, getJiraMetadata, updateJiraMetadata, clearJiraMetadata, init_metadata, registerJiraWebhook, deleteJiraWebhook, init_webhook_lifecycle, isJiraEnabled, initJira, init_app, handleJiraWebhook, init_webhook, init_jira, handleAgentSessionEvent, handleIssueUpdate, handleIssueDelete, handleAgentSessionPrompted, init_sync, isLinearEnabled, initLinear, init_app2, init_linear, init_slack, isCookieSafePageId, extractPageSession, extractLegacyPageSession, extractAndVerifyCookie, pageSessionSetCookies, init_page_session, resolveHttpRequestAuth, init_auth, getDeploymentEnvValue, loadGlobalConfigsIntoEnv, reloadGlobalConfigsAndIntegrations, scheduleIntegrationsReload, handleCore, init_core, MCP_MAX_TOOL_INPUT_ELEMENTS, MCP_MAX_REQUEST_BODY_BYTES, init_mcp_limits, userCtx, init_task_tool_ctx, requestPrincipal, agentFirstPrincipal, requireAuthKind, rejectGuest, init_request_principal, handleApps, init_apps, cancelApprovalRequest, cancelApprovalRequestAndRun, init_approval_cancel, getUserCommsPrefs, init_requester_comms, getTaskDetailsInputSchema, getTaskDetailsOutputSchema, getTaskDetailsHandler, init_get_task_details, cancelTaskInputSchema, cancelTaskOutputSchema, cancelTaskHandler, init_cancel_task, executeReadOnlyQuery, assertSelectOnlyQuery, handleDbQuery, init_db_query, snapshotMetric, init_version2, AssetKeyAuthorizationError, authorizeAssetKeyWrite, init_asset_key_auth, getPageEditCounter, init_page_versions, snapshotPage, init_version3, assertOAuthAppUrlsSafe, assertOAuthEgressUrlSafe, init_app_validation, listOAuthPresets, listOAuthPresetIds, getOAuthPreset, hydrateOAuthAppFromPreset, init_presets, scopedResourceScopeIdSchema, resolveScopedResourceId, init_scoped_resource, MemoryKeyError, init_key_guard, refreshLinks, init_link_resolver, indexMemoryContent, init_index_content, dedupeMemoryDocumentIds, recordMemoryAccesses, recordRetrievals, init_retrieval, ExplicitSelfDuplicateError, applyRating, init_store, shouldPersistAutomaticTaskMemory, init_automatic_task_gate, guardTerminalTaskResultWrite, init_terminal_result_guard, getTasksInputSchema, getTasksOutputSchema, getTasksHandler, init_get_tasks, reservedNamespaceError, privateNamespaceError, reservedRoomKeyError, init_kv_reserved_namespaces, updateMcpServerChecked, init_mcp_server_checked_update, updateTouchesStdioExecution, init_mcp_server_stdio_gate, canReadMemory, init_access, getLinksForMemory, init_links_store, expandCandidatesWithGraph, init_graph_expansion, isApiDraining, drainApi, init_api_drain, markKapsoMessageRead, sendKapsoReaction, init_client, getKapsoConfig, getKapsoNumberMapping, markKapsoMessageSeen, init_config2, changesAllowMerge, init_repo_merge_policy, updateSwarmRepoChecked, init_repo_checked_update, getCombConfig, init_config3, resolveRoomNamespace, roomRequestInfo, authorizeRoomNamespace, sessionAccessTopic, sessionPresenceRoot, init_auth2, RoomOperationSchema, init_document, removeAwarenessStates, init_awareness, roomTopic, decodeRoomSnapshot, roomView, getRoom, changeRoom, applyRoomUpdate, resetRoom, sweepRooms, closeRooms, removeNamespaceRooms, init_rooms, init_scheduler2, MEMORY_KEYS_DEFAULT_PREFIX, MEMORY_KEYS_MAX_LIMIT, estimateTokens, posteriorMean, listMemoryKeys, checkChunkIntegrity, getMemoryChunks, getPosteriorsByIds, init_key_browser, createEvent, createEventsBatch, getEventCountsFiltered, getEventsFiltered, init_events, mergeScheduleTiming, validateRecurringTiming, init_validate, followUpThreadForSourceTask, evaluateFollowUpRedelegation, init_follow_up_redelegation_guard, checkOutputSchemaShape, sendTaskOutputSchema, sendTaskHandler, init_send_task, steerTaskUserInputSchema, steerTaskOutputSchema, steerTaskHandler, init_steer_task, canClaim, init_budget_admission, emitBudgetRefusalSideEffects, init_budget_refusal_notify, workflowModelErrors, init_model_validation2, patchWorkflowDefinition, init_patch_definition, idempotencyKeyHeader, readIdempotencyKey, replayAcceptedOperation, init_idempotency_key, resolveScriptsOnlyMode, init_scripts_only_mode, ALL_CAPABILITIES, hasCapability, getEnabledCapabilities, createServer, init_server };
141667
+ export { DEFAULT_NEGOTIATED_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, isJSONRPCRequest, isJSONRPCResultResponse, isJSONRPCErrorResponse, JSONRPCMessageSchema, isInitializeRequest, init_types, McpServer, init_mcp, repointTrackerSyncBySwarmId, init_tracker, isRuntimePoolWakeable, isAgentReachable, init_reachability, referencedBundlePaths, skillDirs, init_manifest_format, TaskCreationBlockedError, init_errors2, resolveIdentity, renderIdentity, init_identity, recordUnmappedIdentity, init_unmapped_identities, MAX_TASK_ATTACHMENT_BYTES, recordTaskAttachmentUpload, scopeFromAttachment, backingProviderId, init_task_attachment_store, taskModelPin, resumedTaskModelSelection, init_model_pin, listHarnessModelSupport, recordHarnessModelSupport, agentRanModel, getAgentHarnessCliVersion, setAgentHarnessCliVersion, init_harness_model_support, sanitizeModelTierOverrides, parseModelTierOverridesHeader, setAgentModelTierOverrides, previewModelTiers, recordClaimModelResolution, init_model_tier_resolution, harnessModelErrorFor, poolTaskRunsOnHarness, explicitModelError, explicitModelErrorForAgent, init_model_validation, stripSiblingBlock, init_sibling_block, createTaskWithSiblingAwareness, init_sibling_awareness, transcribeAudioNotes, init_transcription, init_templates, buildEffectiveText, bufferedFileFailures, fetchSlackFiles, createSlackTaskWithFiles, notifySlackFileFailures, init_inbound_files, isAddressedToOtherUser, broadcastMatches, routeMessage, extractTaskFromMessage, init_router, extractSlackMessageText, slackInboundMessageText, collectSlackMessageFiles, init_message_text, createAdditiveBuffer, init_additive_buffer, recoverIncompleteRuns, init_recovery, handleWebhookTrigger, verifyHmacSignature, WebhookError, init_triggers, snapshotAndUpdateWorkflow, init_version, RawLlmConfigSchema, RawLlmOutputSchema, executeRawLlm, init_raw_llm, getExecutorRegistry2, initWorkflows2, init_workflows, dispatchScheduleTarget, calculateNextRun2, startScheduler2, stopScheduler2, runScheduleNow2, init_scheduler, ExtensionAssetConflictError, init_assets, ExtensionOwnershipError, getExtensionFiles, getExtensionById, getExtensionByName, listExtensions, listExtensionVersions, updateExtensionMeta, listExtensionRuns, init_db, SDK_ALLOWLIST, mcpToolNameForSdkMethod, init_sdk_allowlist, MCP_OVERFLOW_NAMESPACE, mcpOverflowAuthError, init_kv_overflow, hasKvViewArgs, resolveKvView, init_kv_view, COLOR_LITERAL_THRESHOLD, countColorLiterals, init_color_literals, toolErr, createToolRegistrar, init_utils, handleMcpBridge, init_mcp_bridge, Redacted, init_redacted, SCRIPT_SDK_RESPONSE_LIMIT_BYTES, readScriptSdkJsonResponse, init_response_limit, ExtensionConfigError, init_loader, ExtensionLifecycleError, setExtensionLoopbackBaseUrl, enableExtension, disableExtension, activateVersion, ExtensionAssetsInvalidError, installExtensionWithAssets, uninstallExtension, reloadExtension, loadEnabledExtensions, stopExtensionRuntime, init_lifecycle, ExtensionAbortedError2, isRegistered2, isExtensionAgentId2, getExtensionBridgeToken2, resolveBridgeCallOrigin2, extensionIdForAgent2, runContext2, registerLoaded2, unregister2, listRegistered2, dispatchPre2, dispatchPost2, init_dispatcher, REBOOT_RETRY_PIN_TAG2, getPinCandidateAgent2, resolveLeadOnlyRecoveryAssignment2, getResumeGeneration2, getNextResumeGeneration2, inheritedModelSelection2, createWorkerTaskFollowUp2, createResumeFollowUp2, createRerouteDecisionTask2, createPoolStarvationDecisionTask2, init_worker_follow_up, isGitHubEnabled, initGitHub, verifyWebhookSignature, isAgentMailEnabled, initAgentMail, verifyAgentMailWebhook, isInboxAllowed, isSenderAllowed, handleMessageReceived, init_agentmail, isAzureDevOpsEnabled, initAzureDevOps, verifyAzureDevOpsWebhook, isAzureDevOpsUrl, canonicalAzureDevOpsRepoUrl, parseAzureDevOpsRepoUrl, init_azure_devops, createdPullRequestOf, commentedPayloadOf, handlePullRequestCreated, handlePullRequestCommented, handleWorkItemCreated, handleWorkItemUpdated, handleWorkItemCommented, handleWorkItemDeleted, handleWorkItemRestored, initAzureDevOpsOutbound, init_azure_devops2, enqueueAuditRow, enqueueAdmissionRow, flushAuditBuffer, startAuditWriter, stopAuditWriter, startAuditGc, stopAuditGc, init_rbac_audit, getTelemetryIngestAnchor, init_telemetry_ingest_anchor, initApiTelemetry, syncTelemetryEnabled, init_telemetry_enable, isBitbucketEnabled, initBitbucket, verifyBitbucketWebhook, isDuplicateDelivery, markDeliveryProcessed, pullRequestEventOf, pullRequestCommentEventOf, handlePullRequestCreated2, handlePullRequestCommentCreated, handlePullRequestClosed, init_bitbucket, handlePullRequest, handleIssue, handleComment, handlePullRequestReview, handleCheckRun, handleCheckSuite, handleWorkflowRun, init_github, isGitLabEnabled, initGitLab, verifyGitLabWebhook, handleMergeRequest, handleIssue2, handleNote, handlePipeline, init_gitlab, isChatSdkEnabled, getChatSdkConfig, init_config, errorMessage, init_logger, resolveAdapterApiUrl, init_adapters, trackBackground, init_background, TelegramBotApiError, callTelegramBotApi, init_telegram_api, isTrustedTeamsServiceUrl, init_teams_origin, getSessionLabels, rememberSessionLabel, init_session_labels, isChatSdkStopping, startChatSdk, getChatInstance, isChatAdapterConfigured, getChatSdkHealth, stopChatSdk, init_runtime, getJiraMetadata, updateJiraMetadata, clearJiraMetadata, init_metadata, registerJiraWebhook, deleteJiraWebhook, init_webhook_lifecycle, isJiraEnabled, initJira, init_app, handleJiraWebhook, init_webhook, init_jira, handleAgentSessionEvent, handleIssueUpdate, handleIssueDelete, handleAgentSessionPrompted, init_sync, isLinearEnabled, initLinear, init_app2, init_linear, init_slack, isCookieSafePageId, extractPageSession, extractLegacyPageSession, extractAndVerifyCookie, isLocalDevPageRequest, pageSessionSetCookies, init_page_session, resolveHttpRequestAuth, init_auth, getDeploymentEnvValue, loadGlobalConfigsIntoEnv, reloadGlobalConfigsAndIntegrations, scheduleIntegrationsReload, handleCore, init_core, MCP_MAX_TOOL_INPUT_ELEMENTS, MCP_MAX_REQUEST_BODY_BYTES, init_mcp_limits, userCtx, init_task_tool_ctx, requestPrincipal, agentFirstPrincipal, requireAuthKind, rejectGuest, init_request_principal, handleApps, init_apps, cancelApprovalRequest, cancelApprovalRequestAndRun, init_approval_cancel, getUserCommsPrefs, init_requester_comms, getTaskDetailsInputSchema, getTaskDetailsOutputSchema, getTaskDetailsHandler, init_get_task_details, cancelTaskInputSchema, cancelTaskOutputSchema, cancelTaskHandler, init_cancel_task, executeReadOnlyQuery, assertSelectOnlyQuery, handleDbQuery, init_db_query, snapshotMetric, init_version2, AssetKeyAuthorizationError, authorizeAssetKeyWrite, init_asset_key_auth, getPageEditCounter, init_page_versions, snapshotPage, init_version3, DEFAULT_THEME_ID, THEME_PRESET_IDS, getThemePreset, init_presets, readThemeFields, init_page_fields, assertOAuthAppUrlsSafe, assertOAuthEgressUrlSafe, init_app_validation, listOAuthPresets, listOAuthPresetIds, getOAuthPreset, hydrateOAuthAppFromPreset, init_presets2, scopedResourceScopeIdSchema, resolveScopedResourceId, init_scoped_resource, MemoryKeyError, init_key_guard, refreshLinks, init_link_resolver, indexMemoryContent, init_index_content, dedupeMemoryDocumentIds, recordMemoryAccesses, recordRetrievals, init_retrieval, ExplicitSelfDuplicateError, applyRating, init_store, shouldPersistAutomaticTaskMemory, init_automatic_task_gate, guardTerminalTaskResultWrite, init_terminal_result_guard, getTasksInputSchema, getTasksOutputSchema, getTasksHandler, init_get_tasks, reservedNamespaceError, privateNamespaceError, reservedRoomKeyError, init_kv_reserved_namespaces, updateMcpServerChecked, init_mcp_server_checked_update, updateTouchesStdioExecution, init_mcp_server_stdio_gate, canReadMemory, init_access, getLinksForMemory, init_links_store, expandCandidatesWithGraph, init_graph_expansion, isApiDraining, drainApi, init_api_drain, markKapsoMessageRead, sendKapsoReaction, init_client, getKapsoConfig, getKapsoNumberMapping, markKapsoMessageSeen, init_config2, changesAllowMerge, init_repo_merge_policy, updateSwarmRepoChecked, init_repo_checked_update, getCombConfig, init_config3, resolveRoomNamespace, roomRequestInfo, authorizeRoomNamespace, sessionAccessTopic, sessionPresenceRoot, init_auth2, RoomOperationSchema, init_document, removeAwarenessStates, init_awareness, roomTopic, decodeRoomSnapshot, roomView, getRoom, changeRoom, applyRoomUpdate, resetRoom, sweepRooms, closeRooms, removeNamespaceRooms, init_rooms, init_scheduler2, MEMORY_KEYS_DEFAULT_PREFIX, MEMORY_KEYS_MAX_LIMIT, estimateTokens, posteriorMean, listMemoryKeys, checkChunkIntegrity, getMemoryChunks, getPosteriorsByIds, init_key_browser, createEvent, createEventsBatch, getEventCountsFiltered, getEventsFiltered, init_events, mergeScheduleTiming, validateRecurringTiming, init_validate, followUpThreadForSourceTask, evaluateFollowUpRedelegation, init_follow_up_redelegation_guard, checkOutputSchemaShape, sendTaskOutputSchema, sendTaskHandler, init_send_task, steerTaskUserInputSchema, steerTaskOutputSchema, steerTaskHandler, init_steer_task, canClaim, init_budget_admission, emitBudgetRefusalSideEffects, init_budget_refusal_notify, workflowModelErrors, init_model_validation2, patchWorkflowDefinition, init_patch_definition, idempotencyKeyHeader, readIdempotencyKey, replayAcceptedOperation, init_idempotency_key, resolveScriptsOnlyMode, init_scripts_only_mode, ALL_CAPABILITIES, hasCapability, getEnabledCapabilities, createServer, init_server };