@wular/coder 0.4.1 → 0.4.3

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 (378) hide show
  1. package/README.md +69 -70
  2. package/dist/actions-FzDNxMFf.js +20 -0
  3. package/dist/{adapter-BKVzTDnn.js → adapter-7SEiVsmp.js} +1 -1
  4. package/dist/{adapter-B0oYCI0S.js → adapter-BLEfUqoQ.js} +1 -1
  5. package/dist/{adapter-DPInwbJG.js → adapter-H4GlcKQz.js} +1 -1
  6. package/dist/{add-CE-70LFs.js → add-B50dIJGd.js} +1 -1
  7. package/dist/{add-BxpLHnvD.js → add-D7X3gxap.js} +1 -1
  8. package/dist/{add-ej0X9e3a.js → add-DOEUHIe7.js} +1 -1
  9. package/dist/{add-U-pty9qJ.js → add-QExQhTzi.js} +1 -1
  10. package/dist/{add-json-CEa-6luW.js → add-json-Ck4KIZrT.js} +1 -1
  11. package/dist/{agent-JdtZozvP.js → agent-BPtnEf1q.js} +1 -1
  12. package/dist/{agent-BsYx3Odz.js → agent-BlQ_dNNm.js} +2 -2
  13. package/dist/{alias-DX-Bm86x.js → alias-BwQBovke.js} +1 -1
  14. package/dist/{app-BT5f7zL5.js → app-y6BYm2eH.js} +1 -1
  15. package/dist/{approvals-C-AvFt6s.js → approvals-Cc9cq5T1.js} +2 -2
  16. package/dist/{approve-DOmpQRNd.js → approve-oO9k2fnK.js} +2 -2
  17. package/dist/{apps-CjfrZyM5.js → apps-CU2YalX8.js} +1 -1
  18. package/dist/{archive-BziJ1rQ-.js → archive-C5c_HQS1.js} +2 -2
  19. package/dist/{archive-BUB8gFKD.js → archive-CemlWlVY.js} +2 -2
  20. package/dist/archive-sweep-ehg-fWIt.js +1 -0
  21. package/dist/{args-BOEEdpWk.js → args-DcBCtXhz.js} +1 -1
  22. package/dist/{ask-dE3U3ss2.js → ask-Chu7Twu_.js} +2 -2
  23. package/dist/auth-BOyXPOtu.js +1 -0
  24. package/dist/auth-XbqKSbcD.js +1 -0
  25. package/dist/{chat-bridge-BS9WtP3X.js → chat-bridge-DXgZItGP.js} +1 -1
  26. package/dist/{chat-B_yhNTo0.js → chat-cknlIhVh.js} +1 -1
  27. package/dist/{cli-BilSDkvE.js → cli-B1ObVrL4.js} +5 -5
  28. package/dist/cli.d.ts +1 -1
  29. package/dist/cli.js +1 -1
  30. package/dist/{client-D9IoAuDD.js → client-31YzOj-i.js} +1 -1
  31. package/dist/{config-Da_cwoxI.js → config-DAE_qHYA.js} +1 -1
  32. package/dist/{create-C_iMJV4Y.js → create-CM8B8JxD.js} +1 -1
  33. package/dist/credentials-BXD4Qptk.js +1 -0
  34. package/dist/dash/manifest.json +934 -1014
  35. package/dist/dash/public/assets/chunks/{agent-pills-c9c4ac4d4a10df83.js → agent-pills-b6a6da91c9559d9f.js} +1 -1
  36. package/dist/dash/public/assets/chunks/{agent-settings-form-8be2ddab074aba6d.js → agent-settings-form-b615c677046cd6f2.js} +1 -1
  37. package/dist/dash/public/assets/chunks/agents-grid-f2e7b4ff9e11b6e3.js +1 -0
  38. package/dist/dash/public/assets/chunks/{badge-676b01e0c615bf7b.js → badge-215c7b2631dafc69.js} +1 -1
  39. package/dist/dash/public/assets/chunks/{card-e0901d68b79dfa93.js → card-e86dcc81326d2b14.js} +1 -1
  40. package/dist/dash/public/assets/chunks/{combo-41234c24668b1db1.js → combo-09e246dc9a517fa8.js} +1 -1
  41. package/dist/dash/public/assets/chunks/composer-417166b029f48c47.js +1 -0
  42. package/dist/dash/public/assets/chunks/composer-645ae8fa97a35280.js +1 -0
  43. package/dist/dash/public/assets/chunks/{confirm-f2fe4ba9905a89c6.js → confirm-5ae484241ad888fd.js} +1 -1
  44. package/dist/dash/public/assets/chunks/{connect-apps-aa2a3d82e48ed8c3.js → connect-apps-4147c45f45fde2b1.js} +1 -1
  45. package/dist/dash/public/assets/chunks/{connect-repositories-5389ec8701a3deac.js → connect-repositories-77591110836bdf03.js} +1 -1
  46. package/dist/dash/public/assets/chunks/credentials-list-e005a0783ec93465.js +2 -0
  47. package/dist/dash/public/assets/chunks/{custom-range-4761ab14f05149df.js → custom-range-463e119af4681c61.js} +1 -1
  48. package/dist/dash/public/assets/chunks/{editor-bfe8cd854f8001be.js → editor-804b84f4fe6539cd.js} +4 -4
  49. package/dist/dash/public/assets/chunks/{engines-list-f1191390f5715b39.js → engines-list-ceab51f13c690e8c.js} +1 -1
  50. package/dist/dash/public/assets/chunks/{field-901f1f35c18c39c9.js → field-aa0a4b98a976781e.js} +1 -1
  51. package/dist/dash/public/assets/chunks/filter-91144ac2eec6297f.js +1 -0
  52. package/dist/dash/public/assets/chunks/format-105c706345987fb2.js +1 -0
  53. package/dist/dash/public/assets/chunks/heads-a42817b32d2d7f08.js +1 -0
  54. package/dist/dash/public/assets/chunks/{instructions-052fa45a9daf6db6.js → instructions-3a1dcaff2d868aa5.js} +1 -1
  55. package/dist/dash/public/assets/chunks/instructions-6c6f981fffaa31e4.js +1 -0
  56. package/dist/dash/public/assets/chunks/{list-1d259660d7612c5f.js → list-7270361464fc3c04.js} +1 -1
  57. package/dist/dash/public/assets/chunks/{mcp-list-e3bebbbe831393b8.js → mcp-list-2e715d48666b54ad.js} +1 -1
  58. package/dist/dash/public/assets/chunks/{models-list-44f857a469ca04d5.js → models-list-d3c40f94c761a6e5.js} +1 -1
  59. package/dist/dash/public/assets/chunks/paged-3ddb6077bef42752.js +1 -0
  60. package/dist/dash/public/assets/chunks/{platform-actions-d1426602049926d2.js → platform-actions-271ec3b99a64280b.js} +1 -1
  61. package/dist/dash/public/assets/chunks/runners-list-767e49c7d0ec833a.js +1 -0
  62. package/dist/dash/public/assets/chunks/{segmented-358ff2b4992b8384.js → segmented-de4386ccaac7304d.js} +1 -1
  63. package/dist/dash/public/assets/chunks/{select-7ae25fd8a7d6c338.js → select-a90307706cffa6e0.js} +1 -1
  64. package/dist/dash/public/assets/chunks/{sentinel-c972a33dc69a5135.js → sentinel-b5e032b38604dfd3.js} +1 -1
  65. package/dist/dash/public/assets/chunks/shared-init-7f81ae7bc8c82438.js +2 -0
  66. package/dist/dash/public/assets/chunks/shared-init-933c7f9ee85be766.js +5 -0
  67. package/dist/dash/public/assets/chunks/{tail-7c27aab8ba268bd9.js → tail-4891e727ee526792.js} +1 -1
  68. package/dist/dash/public/assets/chunks/task-actions-ce854925a2dc78fd.js +1 -0
  69. package/dist/dash/public/assets/chunks/task-ddfddeaf07fb684c.js +1 -0
  70. package/dist/dash/public/assets/chunks/task-view-c37dcee08f21a279.js +5 -0
  71. package/dist/dash/public/assets/chunks/tasks-list-baef587999f322d8.js +1 -0
  72. package/dist/dash/public/assets/chunks/{toolbar-a75d2570f07cbb70.js → toolbar-8d98313606ad8a2d.js} +1 -1
  73. package/dist/dash/public/assets/chunks/{versions-list-fc2e0d2a7382e049.js → versions-list-532690efd9f1b0ea.js} +1 -1
  74. package/dist/dash/public/assets/dash-49ca85b59ac65c20.css +1 -0
  75. package/dist/dash/public/assets/dash-account-edc56e85dbaaabe0.css +1 -0
  76. package/dist/dash/public/assets/dash-agents-edba57b67e4005d0.css +1 -0
  77. package/dist/dash/public/assets/dash-agents-new-fe22253fbada2fbf.css +1 -0
  78. package/dist/dash/public/assets/dash-agents-param-slug-adf52e9dacb2d825.css +1 -0
  79. package/dist/dash/public/assets/dash-agents-param-slug-edit-a2937a347689ef29.css +1 -0
  80. package/dist/dash/public/assets/dash-agents-param-slug-platforms-265ba13db32a460d.css +1 -0
  81. package/dist/dash/public/assets/dash-agents-param-slug-settings-8afc52eb0372bc4b.css +1 -0
  82. package/dist/dash/public/assets/dash-agents-param-slug-tasks-6193e646be68dbd2.css +1 -0
  83. package/dist/dash/public/assets/dash-agents-param-slug-usage-ceadb3a1c911c402.css +1 -0
  84. package/dist/dash/public/assets/dash-settings-cf1997cd7f72e518.css +1 -0
  85. package/dist/dash/public/assets/dash-settings-param-tab-b44dac8e79a560e6.css +1 -0
  86. package/dist/dash/public/assets/dash-tasks-916c7100a8058aa3.css +1 -0
  87. package/dist/dash/public/assets/dash-tasks-param-id-194a6ffc20e872f2.css +1 -0
  88. package/dist/dash/public/assets/dash-usage-40940b289f85e0b6.css +1 -0
  89. package/dist/dash/public/assets/pnext-client-13aee92bef5c9e3f.js +1 -0
  90. package/dist/dash/public/assets/pnext-client-1f2686b2044f0df6.js +1 -0
  91. package/dist/dash/public/assets/pnext-client-26130234ebad7067.js +1 -0
  92. package/dist/dash/public/assets/pnext-client-311e35b0076bf406.js +1 -0
  93. package/dist/dash/public/assets/pnext-client-4ade1bf75c9c3d87.js +1 -0
  94. package/dist/dash/public/assets/pnext-client-61cd31b687ede1da.js +1 -0
  95. package/dist/dash/public/assets/pnext-client-61db65dc4223217a.js +1 -0
  96. package/dist/dash/public/assets/pnext-client-6ea656e7705e3f2a.js +1 -0
  97. package/dist/dash/public/assets/pnext-client-7fd0f793f0322cb9.js +1 -0
  98. package/dist/dash/public/assets/pnext-client-88159c0840fcfa4a.js +1 -0
  99. package/dist/dash/public/assets/pnext-client-b03f0c47c066b4f3.js +1 -0
  100. package/dist/dash/public/assets/{pnext-client-1b9ab0963a8ff77b.js → pnext-client-d6478835f543f901.js} +1 -1
  101. package/dist/dash/public/assets/pnext-client-dadb8359021ed590.js +1 -0
  102. package/dist/dash/public/assets/pnext-client-de07532d6aaebf2c.js +1 -0
  103. package/dist/dash/public/assets/pnext-client-f87a31890c8ff224.js +1 -0
  104. package/dist/dash/public/assets/pnext-client-ffe1c123a8e2a350.js +1 -0
  105. package/dist/dash/server/bundle-0.1.6-b29ec45cb963d47f/entry.js +2 -0
  106. package/dist/{default-vYPT26DR.js → default-BMvUMTFp.js} +1 -1
  107. package/dist/default-B_nKaX0-.js +1 -0
  108. package/dist/{delete-D8gEwoOj.js → delete-Bjteibld.js} +2 -2
  109. package/dist/{delete-z1_86nf6.js → delete-riCIKZwj.js} +2 -2
  110. package/dist/{disable-DVKd-0Xb.js → disable-DQC56YFy.js} +1 -1
  111. package/dist/{discover-Dvr_3_Xr.js → discover-Qanr5TEO.js} +1 -1
  112. package/dist/{discover-Df-a8K4R.js → discover-lgTYwoQp.js} +2 -2
  113. package/dist/dispatch-BsW_1m7e.js +14 -0
  114. package/dist/{docs-DKJnqZqt.js → docs-DFs7lOJp.js} +1 -1
  115. package/dist/{docs-BX65z2Iu.js → docs-DKROso-4.js} +2 -2
  116. package/dist/{enable-C8Zf_wpN.js → enable-D2DqZvcU.js} +1 -1
  117. package/dist/{env-CRf6wkM2.js → env-YRY3I60r.js} +1 -1
  118. package/dist/exec-DuUkLMqg.js +11 -0
  119. package/dist/executor-vMppVLB6.js +10 -0
  120. package/dist/flow/builtin/review.js +1 -1
  121. package/dist/flow/index.d.ts +1 -1
  122. package/dist/flow/index.js +1 -1
  123. package/dist/{flow-17k25MHt.js → flow-DmERAnR8.js} +1 -1
  124. package/dist/{github-actions-DwUzm4hC.js → github-actions-C_NkHVJq.js} +1 -1
  125. package/dist/http-D01Udu4u.js +1 -0
  126. package/dist/{index-CZjFX5zV.d.ts → index-B1L4zXZH.d.ts} +2 -1
  127. package/dist/{init-CoMfFxbG.js → init-Bd6JHzBc.js} +1 -1
  128. package/dist/integrations-B2CavXR1.js +5 -0
  129. package/dist/integrations-D1Dwy1kt.js +1 -0
  130. package/dist/lib/broker.js +2 -2
  131. package/dist/{list-DX-z3SBp.js → list-4Uo-0v9s.js} +1 -1
  132. package/dist/{list-BAKvxSbh.js → list-B0ujEZhd.js} +3 -3
  133. package/dist/{list-BYiG8Zav.js → list-B5oa1Bhy.js} +2 -2
  134. package/dist/{list-BxEywhHU.js → list-BjE_l6la.js} +1 -1
  135. package/dist/{list-VToARh3C.js → list-Ck9ibCs1.js} +1 -1
  136. package/dist/{list-CIW2joV1.js → list-DhgK4Zc4.js} +1 -1
  137. package/dist/{list-DpCf4G-H.js → list-KvL7AUhD.js} +2 -2
  138. package/dist/{list-C5w01-8q.js → list-byYLBl1U.js} +1 -1
  139. package/dist/{load-BpEsAn51.js → load-SnZd7xG1.js} +1 -1
  140. package/dist/{local-H3uvqEbq.js → local-BRy1EUq2.js} +1 -1
  141. package/dist/log-view-DeJstSkw.js +3 -0
  142. package/dist/{login-DkkslfBx.js → login-C-ahtDKV.js} +1 -1
  143. package/dist/{login-BFxX4jJy.js → login-zpwke8g1.js} +1 -1
  144. package/dist/{logout-BHAtw4Z8.js → logout-CI6Kf-T6.js} +1 -1
  145. package/dist/{maintenance-C5FklUw3.js → maintenance-BAzr9Jlr.js} +1 -1
  146. package/dist/{match-CXAjDhg7.js → match-DxV1d49D.js} +1 -1
  147. package/dist/{mcp-BgKb2Cdk.js → mcp-CmcL1MCG.js} +1 -1
  148. package/dist/{mcp-CCZOAo06.js → mcp-mhXwtGQT.js} +1 -1
  149. package/dist/{migrate-N-85_N7J.js → migrate-Czh3TEK5.js} +1 -1
  150. package/dist/{migrate-C4vM7DQN.js → migrate-w7KfzUAR.js} +1 -1
  151. package/dist/{model-Bs1StDo3.js → model-JRoTH9QK.js} +1 -1
  152. package/dist/models-C-S7HqSb.js +1 -0
  153. package/dist/{prompt-CEuBMNhk.js → prompt-CMXmt2l9.js} +4 -4
  154. package/dist/{push-CUC55Bqd.js → push-B8BhTyZs.js} +1 -1
  155. package/dist/queue-CirjEskI.js +117 -0
  156. package/dist/refresh-Bmy2r1Ee.js +1 -0
  157. package/dist/{remote-miQNTVRa.js → remote-CxFnEjZl.js} +1 -1
  158. package/dist/{remove-B93LNkZI.js → remove-C15WLaXT.js} +1 -1
  159. package/dist/{remove-C5_xggx7.js → remove-CTZYjjSr.js} +1 -1
  160. package/dist/{remove-eQ8y5C5p.js → remove-CTl-H0f0.js} +1 -1
  161. package/dist/{remove-CuH8a3L9.js → remove-DX2FVo5b.js} +1 -1
  162. package/dist/rename-D1g4TnHQ.js +1 -0
  163. package/dist/{result-BEtQZHaY.js → result-D49VN8PM.js} +3 -3
  164. package/dist/result-DGWyUHYU.js +18 -0
  165. package/dist/{resume-DYzKvyEw.js → resume-ywzc7z6A.js} +2 -2
  166. package/dist/{review-oIBeECZE.js → review-ZC0xG8XY.js} +2 -2
  167. package/dist/{rotate-key-IdMYH7gg.js → rotate-key-Bf8_99ck.js} +1 -1
  168. package/dist/{run-CTtd0Znc.js → run-D7SJ-ieT.js} +2 -2
  169. package/dist/run-DoRQSC_K.js +2 -0
  170. package/dist/{run-CawRGnOg.js → run-ukCf2Mdy.js} +1 -1
  171. package/dist/runner-D-REfOUe.js +1 -0
  172. package/dist/{runner-sUpWJ_k0.js → runner-wDYhkVsM.js} +1 -1
  173. package/dist/schema-DoNO0dPh.js +1 -0
  174. package/dist/sdk.d.ts +4 -2
  175. package/dist/sdk.js +1 -1
  176. package/dist/serve-BJ_Mbm2m.js +8 -0
  177. package/dist/{serve-CPnmrKyf.js → serve-C1MMhM1F.js} +2 -2
  178. package/dist/{serve-GmRO89s5.js → serve-DtrOHaoS.js} +2 -2
  179. package/dist/{serve-CE8YV2e9.js → serve-P9pFkEnE.js} +1 -1
  180. package/dist/{serve-BTeomYxW.js → serve-yjSw0B1a.js} +1 -1
  181. package/dist/{server-Kb22cWfF.js → server-DDWTnmbx.js} +1 -1
  182. package/dist/{setup-host-GFTUzzZJ.js → setup-host-L6Rnn5Cz.js} +1 -1
  183. package/dist/{shared-DVtzWhUT.js → shared-XsUX_ZZb.js} +1 -1
  184. package/dist/{show-COTZEYgc.js → show-CU-jqJ90.js} +1 -1
  185. package/dist/{show-CMUg8SJu.js → show-DVJmB2u-.js} +1 -1
  186. package/dist/{status-D26U--p8.js → status-CBydR7LE.js} +1 -1
  187. package/dist/{steer-C6uARLp5.js → steer-Cm_sHZqs.js} +2 -2
  188. package/dist/{stop-BrGI3hSS.js → stop-DJS7DAPJ.js} +1 -1
  189. package/dist/{stop-ByCAlbmN.js → stop-TrebIIuv.js} +2 -2
  190. package/dist/store-BrNMqJgk.js +42 -0
  191. package/dist/store-j8icrG0v.js +19 -0
  192. package/dist/task-C8lmcNsf.js +1 -0
  193. package/dist/{task-DeglY79z.js → task-CpUI19o2.js} +4 -4
  194. package/dist/task-CvSqiwxo.js +1 -0
  195. package/dist/{test-NEbhlxvo.js → test-CDKz4jY_.js} +1 -1
  196. package/dist/{tools-D0Zfs8Hx.js → tools-DBFeoosk.js} +1 -1
  197. package/dist/{types-I5Cwtl_K.d.ts → types-DMGBYB_K.d.ts} +3 -1
  198. package/dist/{unalias-C9NqmSDq.js → unalias-BfQFBnuK.js} +1 -1
  199. package/dist/{update-BTxYQj7Z.js → update-C4FFOie8.js} +1 -1
  200. package/dist/{upgrade-hA0yWBvx.js → upgrade-DLJqMnUQ.js} +2 -2
  201. package/dist/{usage-BhqoCjvE.js → usage-CSh-xwQ2.js} +1 -1
  202. package/dist/{usage-C4d9X2Uq.js → usage-D8mc4qXK.js} +1 -1
  203. package/dist/{watch-DtRuC0Wc.js → watch-CQu-tJKZ.js} +2 -2
  204. package/dist/{watch-CSdj24ct.js → watch-DmwaEvoi.js} +2 -2
  205. package/dist/{wire-BeT1Axeo.js → wire-DzGLZ3-O.js} +1 -1
  206. package/dist/worker-BLKTMLqa.js +1 -0
  207. package/dist/worker-nHemduM_.js +9 -0
  208. package/dist/{workflow-Dcmdooi8.js → workflow-IrouAus_.js} +1 -1
  209. package/docs/cli.md +145 -0
  210. package/docs/mcp.md +1 -1
  211. package/migrations/0000_initial.sql +8 -0
  212. package/migrations/meta/0000_snapshot.json +75 -1
  213. package/migrations/meta/_journal.json +1 -1
  214. package/package.json +3 -2
  215. package/plugins/agents/skills/coder/SKILL.md +1 -0
  216. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  217. package/plugins/claude/skills/dispatch/SKILL.md +1 -1
  218. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  219. package/plugins/cursor/skills/coder/SKILL.md +1 -0
  220. package/src/client/index.ts +10 -2
  221. package/src/client/types.ts +18 -0
  222. package/src/core/defaults.ts +36 -0
  223. package/src/core/task/log-view.ts +120 -6
  224. package/src/server/dash/app/dash/agents/(list)/agent-menu.tsx +4 -0
  225. package/src/server/dash/app/dash/agents/(list)/agents-grid.tsx +18 -35
  226. package/src/server/dash/app/dash/agents/(list)/loading.tsx +7 -1
  227. package/src/server/dash/app/dash/agents/[slug]/(tabs)/layout.tsx +2 -1
  228. package/src/server/dash/app/dash/layout.css +58 -1
  229. package/src/server/dash/app/dash/layout.tsx +29 -7
  230. package/src/server/dash/app/dash/settings/[tab]/credentials-list.tsx +20 -13
  231. package/src/server/dash/app/dash/settings/[tab]/page.tsx +1 -1
  232. package/src/server/dash/app/dash/settings/[tab]/runners-list.tsx +13 -12
  233. package/src/server/dash/app/dash/tasks/[id]/activity.tsx +49 -4
  234. package/src/server/dash/app/dash/tasks/[id]/task-actions.tsx +43 -6
  235. package/src/server/dash/app/dash/tasks/[id]/task-view.css +52 -31
  236. package/src/server/dash/app/dash/tasks/[id]/task-view.tsx +143 -51
  237. package/src/server/dash/app/dash/tasks/composer.css +4 -0
  238. package/src/server/dash/app/dash/tasks/composer.tsx +6 -5
  239. package/src/server/dash/app/dash/tasks/list/task.ts +29 -1
  240. package/src/server/dash/app/dash/tasks/list/tasks-list.css +20 -7
  241. package/src/server/dash/app/dash/tasks/list/tasks-list.tsx +256 -109
  242. package/src/server/dash/app/dash/tasks/list/tasks-section.tsx +9 -13
  243. package/src/server/dash/app/dash/tasks/page.tsx +3 -35
  244. package/src/server/dash/comps/frame/loading-card.tsx +4 -3
  245. package/src/server/dash/comps/frame/page-head.css +10 -0
  246. package/src/server/dash/comps/frame/page-head.tsx +3 -2
  247. package/src/server/dash/comps/frame/task-toasts.tsx +196 -50
  248. package/src/server/dash/comps/nav/side-toggle.tsx +16 -5
  249. package/src/server/dash/comps/ui/card.css +1 -0
  250. package/src/server/dash/comps/ui/filter.css +64 -0
  251. package/src/server/dash/comps/ui/filter.tsx +336 -0
  252. package/src/server/dash/comps/ui/icons.ts +2 -0
  253. package/src/server/dash/comps/ui/menu.tsx +9 -1
  254. package/src/server/dash/comps/ui/select.tsx +2 -2
  255. package/src/server/dash/comps/ui/toast.css +3 -2
  256. package/src/server/dash/comps/ui/toolbar.css +14 -0
  257. package/src/server/dash/utils/client.ts +21 -0
  258. package/src/server/dash/utils/format.ts +12 -4
  259. package/src/server/dash/utils/paged.ts +14 -6
  260. package/dist/actions-Mk3FSlpJ.js +0 -20
  261. package/dist/archive-sweep-CtBcARgN.js +0 -1
  262. package/dist/auth-BFny--17.js +0 -1
  263. package/dist/auth-DWHIzqbA.js +0 -1
  264. package/dist/credentials-B1jv6dkg.js +0 -1
  265. package/dist/dash/public/assets/chunks/agents-grid-951584b6f4c4314e.js +0 -1
  266. package/dist/dash/public/assets/chunks/composer-5534be50bc12385e.js +0 -1
  267. package/dist/dash/public/assets/chunks/composer-d10d4b1d54c4f751.js +0 -1
  268. package/dist/dash/public/assets/chunks/credentials-list-bc5bfcab058176c5.js +0 -2
  269. package/dist/dash/public/assets/chunks/format-eb03fc9d9744d960.js +0 -1
  270. package/dist/dash/public/assets/chunks/heads-f3bcd289663d48fa.js +0 -1
  271. package/dist/dash/public/assets/chunks/instructions-d0a4b0d95009c262.js +0 -1
  272. package/dist/dash/public/assets/chunks/paged-bc6fa0c2b9d52ed7.js +0 -1
  273. package/dist/dash/public/assets/chunks/runners-list-1901af8a5dea1f09.js +0 -1
  274. package/dist/dash/public/assets/chunks/shared-init-88cce66bb3cfe1e5.js +0 -5
  275. package/dist/dash/public/assets/chunks/shared-init-ffb3397e494137c9.js +0 -2
  276. package/dist/dash/public/assets/chunks/task-actions-8e1d93c788d001df.js +0 -1
  277. package/dist/dash/public/assets/chunks/task-fa8b82e95e771c4a.js +0 -1
  278. package/dist/dash/public/assets/chunks/task-view-6d7618d2820a5cb4.js +0 -3
  279. package/dist/dash/public/assets/chunks/tasks-list-f4784e5cbd0ed785.js +0 -1
  280. package/dist/dash/public/assets/dash-9e02d5d1a6d42ee3.css +0 -1
  281. package/dist/dash/public/assets/dash-account-04859899c1838ada.css +0 -1
  282. package/dist/dash/public/assets/dash-agents-9e678137267dec07.css +0 -1
  283. package/dist/dash/public/assets/dash-agents-new-26fa27b17ef9b8d8.css +0 -1
  284. package/dist/dash/public/assets/dash-agents-param-slug-b975c48f8abf3444.css +0 -1
  285. package/dist/dash/public/assets/dash-agents-param-slug-edit-e13fda599bb04843.css +0 -1
  286. package/dist/dash/public/assets/dash-agents-param-slug-platforms-70292932cb27bc96.css +0 -1
  287. package/dist/dash/public/assets/dash-agents-param-slug-settings-71f9a86251723fcc.css +0 -1
  288. package/dist/dash/public/assets/dash-agents-param-slug-tasks-fb8eb2ed71006601.css +0 -1
  289. package/dist/dash/public/assets/dash-agents-param-slug-usage-7c8740f1cdd52c71.css +0 -1
  290. package/dist/dash/public/assets/dash-settings-8eb818da462227e8.css +0 -1
  291. package/dist/dash/public/assets/dash-settings-param-tab-849a1a9542e273f5.css +0 -1
  292. package/dist/dash/public/assets/dash-tasks-81e510e0b6931b42.css +0 -1
  293. package/dist/dash/public/assets/dash-tasks-param-id-bbd2a83342f2ec10.css +0 -1
  294. package/dist/dash/public/assets/dash-usage-8e0259e03eaed1bd.css +0 -1
  295. package/dist/dash/public/assets/pnext-client-03b03b254e525e82.js +0 -1
  296. package/dist/dash/public/assets/pnext-client-1c7859bb888f4ef0.js +0 -1
  297. package/dist/dash/public/assets/pnext-client-3c748afe963fb05d.js +0 -1
  298. package/dist/dash/public/assets/pnext-client-4f47c2cae220f107.js +0 -1
  299. package/dist/dash/public/assets/pnext-client-6ab9fd9b53b794d2.js +0 -1
  300. package/dist/dash/public/assets/pnext-client-6c241786342498e4.js +0 -1
  301. package/dist/dash/public/assets/pnext-client-80b56d420f02b808.js +0 -1
  302. package/dist/dash/public/assets/pnext-client-83135c17bae850a3.js +0 -1
  303. package/dist/dash/public/assets/pnext-client-8e6fa4302ae0396f.js +0 -1
  304. package/dist/dash/public/assets/pnext-client-932c9d8cc0717fc8.js +0 -1
  305. package/dist/dash/public/assets/pnext-client-a42ae63d4de113f9.js +0 -1
  306. package/dist/dash/public/assets/pnext-client-d2ee6f8c1e337032.js +0 -1
  307. package/dist/dash/public/assets/pnext-client-d513f65ec23b7f20.js +0 -1
  308. package/dist/dash/public/assets/pnext-client-ecb88e2a8a109954.js +0 -1
  309. package/dist/dash/public/assets/pnext-client-f1545ee6270bbf9a.js +0 -1
  310. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/boot-B2MFTRO2.js +0 -30
  311. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/build-tier-XJJSL5FR.js +0 -2704
  312. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-2HFY3DQT.js +0 -208
  313. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-2ICEVELW.js +0 -834
  314. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-3UPROT2C.js +0 -35
  315. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-4P5CMIYT.js +0 -1582
  316. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-4TKZKZ3Q.js +0 -131
  317. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-5RDEILQB.js +0 -437
  318. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-62KEQM43.js +0 -25
  319. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-6KQSWT6D.js +0 -831
  320. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-7DCNCW6O.js +0 -724
  321. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-B4THCTQP.js +0 -22
  322. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-C2LIV2MM.js +0 -172
  323. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-CCATPVTW.js +0 -378
  324. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-COXJAPTU.js +0 -89
  325. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-E6IXL2NJ.js +0 -6270
  326. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-FLGRBFAH.js +0 -1198
  327. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-FTJVHFWD.js +0 -61
  328. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-H523KSIH.js +0 -5151
  329. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-HT6KKX6A.js +0 -20
  330. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-JESFYECC.js +0 -438
  331. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-JRPJM2XY.js +0 -17
  332. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-L2IWDUXG.js +0 -107
  333. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-L5P4Y4UC.js +0 -183
  334. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-NQE46AZN.js +0 -647
  335. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-PA4QEARJ.js +0 -129
  336. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-PZ5AXOLW.js +0 -7146
  337. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-SNVPTULL.js +0 -2397
  338. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-T3QZT3PG.js +0 -220
  339. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-VC5O2SDP.js +0 -72
  340. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-WZX4V6CM.js +0 -231
  341. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-XUUIDXY5.js +0 -627
  342. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/chunk-ZHFDO3PR.js +0 -265
  343. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/compile-CE2DN7ZA.js +0 -18
  344. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/config-UREY7XJT.js +0 -16
  345. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/config-loader-UI2XE3PZ.js +0 -17
  346. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/entry.js +0 -219
  347. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/generate-I2PPTDFD.js +0 -16
  348. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/modules-UVOCE4C2.js +0 -48
  349. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/pipeline-UW47K537.js +0 -963
  350. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/proxy-ITGOVJBW.js +0 -26
  351. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/register-4SA55SWT.js +0 -12579
  352. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/router-JNKHLBCZ.js +0 -505
  353. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/routes-PD6J2NXW.js +0 -54
  354. package/dist/dash/server/bundle-0.1.5-1508b6c99c0d1e68/tsconfig-defaults-ZXEH7RQK.js +0 -15
  355. package/dist/default-Bobztoxf.js +0 -1
  356. package/dist/dispatch-BKeAch9E.js +0 -14
  357. package/dist/exec-RZFLclKX.js +0 -11
  358. package/dist/executor-BvAA7Cgw.js +0 -10
  359. package/dist/http-Bkg_OQ6r.js +0 -1
  360. package/dist/integrations-5xCaXSd-.js +0 -1
  361. package/dist/integrations-BAgdVDhj.js +0 -5
  362. package/dist/log-view-dg0TlKLA.js +0 -1
  363. package/dist/models-_5LVGC3m.js +0 -1
  364. package/dist/queue-6io_NOP3.js +0 -116
  365. package/dist/refresh-BIrmrWYq.js +0 -1
  366. package/dist/rename-CYfy03FE.js +0 -1
  367. package/dist/result-BzaM3inj.js +0 -15
  368. package/dist/run-BDYl0CKl.js +0 -2
  369. package/dist/runner-D7ScbIHJ.js +0 -1
  370. package/dist/schema-CU2iFkp8.js +0 -1
  371. package/dist/serve-CQKZxzFE.js +0 -4
  372. package/dist/store-B94tSate.js +0 -42
  373. package/dist/store-DzqXS2wT.js +0 -8
  374. package/dist/task-C6VAg5WU.js +0 -1
  375. package/dist/task-CgOKgkEG.js +0 -1
  376. package/dist/worker-CXndxmGF.js +0 -9
  377. package/dist/worker-DX7P9kWl.js +0 -1
  378. package/src/server/dash/app/dash/token-from-hash.tsx +0 -17
@@ -1 +0,0 @@
1
- import{a as Fe}from"./connect-repositories-5389ec8701a3deac.js";import{a as ce,b as qe,c as je,e as Ke}from"./composer-data-6f7608fed13f3dd7.js";import{b as Ie,c as ae,e as le,g as G,h as Be}from"./model-options-15c53331a2f28a4f.js";import{a as H}from"./select-7ae25fd8a7d6c338.js";import{g as He}from"./task-fa8b82e95e771c4a.js";import{c as Pe}from"./card-e0901d68b79dfa93.js";import{b as ne}from"./field-901f1f35c18c39c9.js";import{a as Le,g as E}from"./format-eb03fc9d9744d960.js";import{$0d as Ae}from"./shared-init-ffb3397e494137c9.js";import{$3a as Ne}from"./shared-init-ffb3397e494137c9.js";import{$2a as ie}from"./shared-init-ffb3397e494137c9.js";import{$4d as se}from"./shared-init-ffb3397e494137c9.js";import{$5B as De,$5f as Se,$5o as Oe,$5p as re,$5r as Re,$5t as Me,$5w as Te}from"./shared-init-ffb3397e494137c9.js";import{$1a as C}from"./shared-init-88cce66bb3cfe1e5.js";import{$0b as h}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as t}from"./shared-init-88cce66bb3cfe1e5.js";import{$1c as g,$1g as u,$1i as U,$1j as $e,$1k as T,$1m as xe}from"./shared-init-8f2ac936c95a7f7b.js";var it=[["","Default"],["low","Low"],["medium","Medium"],["high","High"]],at=[["","Default"],["read-only","Read-only"],["workspace-write","Write"],["auto","Auto"]],J="coder:draft",V="+connect",pe="+other",de="+pick",ue="+clone",lt=/^\/(review|flow)(?:\s+(\S+))?\s*([\s\S]*)$/,ct=(l,s,i)=>[["",l],...[...new Set([s,...i])].filter(Boolean).map(a=>[a,a])],pt=(l,s,i)=>[["",l],...s&&!i.some(([a])=>a===s)?[[s,s]]:[],...i],We=(l,s,i)=>{let a=[...l.recent,...s].map(p=>p.path);return[["","No folder"],...[...new Set([...a,i])].filter(p=>p&&p!==l.current.path).map(p=>[p,He(p)]),l.picker?[de,"Choose\u2026"]:[pe,"Type a path\u2026"],[ue,"Repository\u2026"]]};function dt(l,s){let i=[["",[["",`Default \xB7 ${[ae[s.engine]??s.engine,s.engines[s.engine]?.model].filter(Boolean).join(" ")}`]]]];for(let a of Ie)l[a]?.length&&i.push([ae[a]??a,[[G(a,""),le(s.engines[a]?.model)],...l[a].map(p=>[G(a,p),p])]]);return i}var ze=(l,s)=>{let i=l.find(([a])=>a&&a===s)?.[1];return[["",le(i?.toLowerCase())],...l.slice(1)]};function ut(l){let s=l.currentTarget,i=document.querySelector(`[popovertarget="${s.id}"]`)?.getBoundingClientRect();if(l.newState!=="open"||!i)return;let a=Math.round(i.bottom+6);s.style.top=`${a}px`,s.style.right=`${Math.round(document.documentElement.clientWidth-i.right)}px`,s.style.maxHeight=`${Math.max(160,window.innerHeight-a-16)}px`}function ft(l){return Object.fromEntries(l.split(/\s+/).filter(Boolean).map(s=>{let i=s.indexOf("="),a=i<0?"true":s.slice(i+1);try{return[i<0?s:s.slice(0,i),JSON.parse(a)]}catch{return[s.slice(0,i),a]}}))}function mt({id:l,entries:s,active:i,selected:a,onActive:p}){return t(g,{children:s.flatMap((m,b)=>[m.head?t("div",{class:"pop-label",role:"presentation",children:m.head},`h:${m.key}`):null,t("div",{id:`${l}-${b}`,role:"option","aria-selected":a===void 0?b===i:m.key===a,class:b===i?"pop-item on":"pop-item",onMouseDown:r=>r.preventDefault(),onPointerMove:()=>b!==i&&p(b),onClick:m.pick,children:[t("span",{class:"grow",children:m.label}),m.hint?t("small",{children:m.hint}):null,a===void 0?null:t(C,{d:re})]},m.key)])})}var gt=(l,s,i,a)=>{let p={ArrowDown:1,ArrowUp:-1}[l.key];return!p||!i?!1:(l.preventDefault(),a((s+p+i)%i),!0)};function ht({reason:l,back:s="/dash/tasks"}){return t("div",{class:"notice slim",role:"status",children:[t(C,{d:Te}),t("span",{class:"grow",children:l||"Tasks need a model credential to run."}),t(ie,{class:"btn outline sm",href:"/dash/settings/[tab]",params:{tab:"credentials"},search:{return:s},children:"Add credential"})]})}function bt({initial:l,data:s,defaults:i,missing:a,connectLabel:p,tz:m}){let b=Ne(),[r,X]=u({...qe,...l}),[d,fe]=u(s),[w,Z]=u(),[q,me]=u(!1),[Ue,$]=u(""),[ge,Ge]=u(),[Je,Ve]=u(),[D,_]=u(""),[Xe,S]=u(!1),[Ze,j]=u(0),[Q,_e]=u([]),[O,A]=u(""),[N,he]=u(!1),be=T(null),y=T(null),we=T(null),ye=T(null),R=xe();U(()=>void(O&&ye.current?.focus()),[O]),U(()=>{let e=localStorage.getItem(J);e&&y.current&&!y.current.value&&(y.current.value=e),_(y.current?.value??""),y.current?.focus(),S(!0)},[]);let ke=D.startsWith("/");U(()=>{let e=r.repo;!ke||!e||w?.repo===e||(Z({repo:e}),h.pulls.list(e).then(o=>Z({repo:e,items:o})).catch(o=>{Z({repo:e,items:[]}),$(E(o))}),h.flows.list(e).then(o=>fe(c=>({...c,flows:o.map(n=>n.name)}))).catch(()=>{}))},[ke,r.repo]);let P=(e,o)=>{if(o===pe)return A("path");if(o===ue)return A("url");if(o===de)return void Ye();if(o===V)return void Fe("/dash/tasks").catch(c=>$(E(c)));M({[e]:o}),(e==="repo"||e==="cwd")&&y.current?.focus({preventScroll:!0})},M=e=>{let o={...r,...e};X(o),document.cookie=`compose=${encodeURIComponent(JSON.stringify(o))}; path=/; max-age=31536000; samesite=lax`},Y=e=>{if(!e.ok)return $(e.detail);$(""),A(""),_e(o=>[...o.filter(c=>c.path!==e.folder.path),e.folder]),P("cwd",e.folder.path===d.folders?.current.path?"":e.folder.path)},Qe=async e=>{e.trim()&&Y(await h.folders.check(e.trim()).catch(o=>({ok:!1,detail:E(o)})))},Ye=async()=>{document.body.style.cursor="progress";let e=await h.folders.pick().catch(o=>({ok:!1,detail:E(o)}));document.body.style.cursor="",(e.ok||e.detail)&&Y(e)},et=async e=>{if(!e.trim())return;he(!0),document.body.style.cursor="progress";let o=await h.folders.clone(e.trim()).catch(c=>({ok:!1,detail:E(c)}));document.body.style.cursor="",he(!1),Y(o)},ee=e=>{let o=y.current;o.value=e,localStorage.setItem(J,e),_(e),j(0),S(!1),o.focus(),o.setSelectionRange(e.length,e.length)},K=async e=>{let o=y.current?.value.trim()??"";if(q||N||!(o||e))return;let[,c,n="",k=""]=lt.exec(o)??[];if(!e&&c&&!(c==="flow"?n:/^#?\d+$/.test(n)))return void S(!1);let x=e??(c==="review"?Number(n.replace("#","")):void 0);if(x&&!r.repo)return $("Pick a repository first.");let{agent:I,engine:z,model:B,effort:v,permissions:te,runner:ot}=r,[nt,rt]=d.folders?["",r.cwd]:[r.repo,""],oe=Object.fromEntries(Object.entries({repo:nt,cwd:rt,engine:z,model:B,effort:v,permissions:te,runner:ot}).filter(([,L])=>L));me(!0),$("");try{let L=x?await h.review({...oe,repo:r.repo,pr:x}):c==="flow"?await h.flows.run(n,{...oe,agent:I,args:ft(k)}):await h.tasks.create({...oe,agent:I,prompt:o});(!e||c)&&localStorage.removeItem(J),Ae(L.task.id,"queued",o||`Review of #${x}`),b.push("/dash/tasks/[id]",{params:{id:L.task.id}})}catch(L){me(!1),L.status===409?Ge(E(L)):$(E(L))}},f=(()=>{let e=/^\/(\S*)$/.exec(D)?.[1]?.toLowerCase();if(e!==void 0)return{label:"Commands",entries:[{key:"review",label:"/review",hint:"Review a pull request",pick:()=>ee("/review ")},...d.flows.map(n=>({key:`flow ${n}`,label:`/flow ${n}`,hint:`Run the ${n} flow`,pick:()=>ee(`/flow ${n} `)}))].filter(n=>n.key.includes(e)),note:"No command matches."};let o=/^\/flow\s+(\S*)$/.exec(D)?.[1];if(o!==void 0)return{label:"Flows",entries:d.flows.filter(n=>n.includes(o)).map(n=>({key:n,label:n,hint:`Run the ${n} flow`,pick:()=>n===o?void K():ee(`/flow ${n} `)})),note:"No flow matches."};let c=/^\/review\s+#?(\S*)$/.exec(D)?.[1];if(c!==void 0)return r.repo?w?.items?{label:`Pull requests in ${r.repo}`,entries:[...w.items.filter(n=>String(n.number).startsWith(c)||n.title.toLowerCase().includes(c.toLowerCase())).sort((n,k)=>+(String(k.number)===c)-+(String(n.number)===c)).map(n=>({key:`#${n.number}`,label:`#${n.number} ${n.title}`,hint:[n.author,n.createdAt?Le(Date.parse(n.createdAt),m):""].filter(Boolean).join(" \xB7 "),pick:()=>void K(n.number)})),...c?[]:[{key:"",label:r.repo,hint:"Pick another repository",pick:()=>M({repo:""})}]],note:w.items.length?"No open pull request matches.":"No open pull requests."}:{label:`Pull requests in ${r.repo}`,entries:[],note:"loading"}:{label:"Pick a repository",entries:[...d.repos.filter(n=>n.includes(c)).map(n=>({key:n,label:n,pick:()=>P("repo",n)})),{key:V,label:p,pick:()=>P("repo",V)}]}})(),F=!!(f&&!Xe),W=f?Math.min(Ze,Math.max(0,f.entries.length-1)):0;$e(()=>{let e=we.current;if(!e)return;if(!F)return void(e.matches(":popover-open")&&e.hidePopover());let o=()=>{let c=be.current.getBoundingClientRect();e.style.top=`${Math.round(c.bottom+6)}px`,e.style.left=`${Math.round(c.left)}px`,e.style.width=`${Math.round(Math.min(c.width,460))}px`};return o(),e.matches(":popover-open")||e.showPopover(),addEventListener("scroll",o,!0),addEventListener("resize",o),()=>{removeEventListener("scroll",o,!0),removeEventListener("resize",o)}},[F,D]);let tt=r.engine||i.engine,ve=i.engines[tt]??{},Ee=d.agents.filter(([e])=>e!=="coder"),Ce=[r.agent!=="coder"&&r.agent,r.engine!==i.engine&&r.engine,...["model","effort","permissions"].map(e=>r[e]!==ve[e]&&r[e]),r.runner&&(d.runners.find(([e])=>e===r.runner)?.[1]??r.runner)].filter(Boolean).join(" \xB7 ");return t(g,{children:[t("form",{ref:be,class:"composer",onSubmit:e=>{e.preventDefault(),K()},children:[t("textarea",{ref:y,name:"prompt",rows:1,role:"combobox","aria-label":"What should the agent do?","aria-autocomplete":"list","aria-expanded":F,"aria-controls":`${R}-slash`,"aria-activedescendant":F&&f?.entries.length?`${R}-slash-${W}`:void 0,placeholder:ce,autofocus:!0,onFocus:()=>S(!1),onBlur:()=>S(!0),onInput:e=>{let o=e.currentTarget.value;localStorage.setItem(J,o),_(o),j(0),S(!1)},onKeyDown:e=>{if(!e.isComposing){if(F&&f){if(gt(e,W,f.entries.length,j))return;if(e.key==="Escape")return e.preventDefault(),S(!0);if(f.entries.length&&(e.key==="Enter"&&!e.shiftKey||e.key==="Tab"))return e.preventDefault(),f.entries[W].pick()}e.key!=="Enter"||e.shiftKey||(e.preventDefault(),K())}}}),t("div",{class:"composer-line",children:[d.folders?O?t(g,{children:[t("input",{class:"folder-path","aria-label":O==="url"?"Repository URL":"Folder path",ref:ye,placeholder:O==="url"?"https://github.com/owner/repo":"Absolute path or ~/\u2026",readOnly:N,"aria-busy":N,onKeyDown:e=>{if(N)return e.preventDefault();if(e.key==="Escape")return e.preventDefault(),$(""),A("");e.key!=="Enter"||e.isComposing||(e.preventDefault(),(O==="url"?et:Qe)(e.currentTarget.value))},onBlur:e=>!N&&!e.currentTarget.value.trim()&&A("")}),N?t("span",{class:"folder-busy",children:"Cloning\u2026"}):null]}):t("span",{class:"folder",title:r.cwd||d.folders.current.path,children:t(H,{label:"Folder",value:r.cwd,options:We(d.folders,Q,r.cwd),subs:Object.fromEntries(We(d.folders,Q,r.cwd).flatMap(([e])=>e&&e!==pe&&e!==de&&e!==ue?[[e,Q.find(o=>o.path===e)?.url??e]]:[])),onChange:e=>P("cwd",e)})}):t(H,{label:"Repository",value:r.repo,options:[...ct("No repository",r.repo,d.repos),[V,p]],onChange:e=>P("repo",e)}),t("button",{type:"button",class:"quiet",popovertarget:`${R}-settings`,"aria-label":"Run options",title:"Model, effort, permissions and more",children:[t(C,{d:De}),Ce?t("span",{children:Ce}):null]}),t("button",{class:"btn sm send",disabled:q||!D.trim(),"aria-busy":q,"aria-label":q?"Starting task":"Start task",title:"Start task (Enter)",children:t(C,{d:Me})})]}),O==="url"?t("small",{class:"folder-hint",children:"Uses this machine's git logins"}):null,t(ne,{value:Ue}),t("div",{id:`${R}-settings`,class:"pop composer-settings",popover:"auto",onBeforeToggle:ut,children:[t("p",{class:"pop-label",children:"Model"}),t("div",{role:"group","aria-label":"Model",class:"pop-radios",children:[dt(d.models,i).map(([e,o])=>t(g,{children:[e?t("p",{class:"pop-group",children:e}):null,o.map(([c,n])=>{let k=c===G(r.engine,r.model),x=Be(c),I=ze(it,i.engines[x.engine||i.engine]?.effort),z=k&&r.effort?I.find(([v])=>v===r.effort)?.[1]:void 0,B=Je===c;return t(g,{children:[t("div",{class:"pop-row",children:[t("button",{type:"button",role:"menuitemradio","aria-checked":k,class:k?"pop-item on":"pop-item",onClick:v=>{M({...x,effort:""}),v.currentTarget.closest("[popover]")?.hidePopover()},children:[t("span",{class:"grow",children:n}),z?t("small",{children:z.toLowerCase()}):null,k?t(C,{d:re}):null]}),t("button",{type:"button",class:"pop-chev","data-keep":!0,"aria-label":`Effort for ${n}`,"aria-expanded":B,onClick:()=>Ve(B?void 0:c),children:t(C,{d:Se})})]}),B?t("div",{role:"group","aria-label":`Effort for ${n}`,class:"pop-sub",children:I.map(([v,te])=>t(se,{on:k&&r.effort===v,onPick:()=>{M({...x,effort:v}),document.getElementById(`${R}-settings`)?.hidePopover()},children:te},v))}):null]},c)})]},e)),t(ie,{class:"pop-item add-models",href:"/dash/settings/[tab]",params:{tab:"models"},children:[t(C,{d:Re}),t("span",{class:"grow",children:"Add models"})]})]}),t("p",{class:"pop-label",children:"Permissions"}),t("div",{role:"group","aria-label":"Permissions",children:ze(at,ve.permissions??"auto").map(([e,o])=>t(se,{on:r.permissions===e,onPick:()=>M({permissions:e}),children:o},e))}),Ee.length||r.agent!=="coder"?t(g,{children:[t("p",{class:"pop-label",children:"Agent"}),t(H,{label:"Agent",value:r.agent,options:pt("coder",r.agent,Ee),onChange:e=>M({agent:e})})]}):null,d.runners.length>1?t(g,{children:[t("p",{class:"pop-label",children:"Runs on"}),t(H,{label:"Runs on",options:d.runners,value:r.runner,onChange:e=>M({runner:e})})]}):null]}),t("div",{ref:we,id:`${R}-slash`,class:"pop composer-slash",popover:"manual",role:"listbox","aria-label":f?.label??"Commands",children:f?t(g,{children:[t("div",{class:"pop-label",children:f.label}),t(mt,{id:`${R}-slash`,entries:f.entries,active:W,onActive:j}),f.note==="loading"?t(Pe,{label:"Loading pull requests",inline:!0}):f.note&&!f.entries.length?t("p",{class:"pop-note",children:f.note}):null]}):null})]}),ge===void 0||a?null:t(ht,{reason:ge})]})}function wt(){return t("div",{class:"composer","aria-hidden":"true",children:[t("textarea",{rows:1,disabled:!0,tabIndex:-1,placeholder:ce}),t("div",{class:"composer-line"})]})}function jt({agent:l}){let s=T(null),[i,a]=u(),[p,m]=u(""),[b,r]=u(!1),X=T(),d=()=>X.current??=Ke(h).then(a,w=>m(E(w)));return t(g,{children:[t("button",{type:"button",class:"btn new-task",onClick:()=>{r(!0),s.current?.showModal(),d()},onPointerEnter:d,onFocus:d,children:"New task"}),t("dialog",{ref:s,class:"compose-dialog","aria-label":`New task for ${l}`,onClose:()=>r(!1),onClick:w=>w.target===w.currentTarget&&s.current?.close(),children:[t("header",{children:[t("h2",{children:"New task"}),t("span",{class:"sub",children:l}),t("button",{type:"button",class:"icon-btn","aria-label":"Close",onClick:()=>s.current?.close(),children:t(C,{d:Oe})})]}),b?i?t(bt,{...i,initial:{...je(document.cookie),agent:l},tz:Intl.DateTimeFormat().resolvedOptions().timeZone}):p?t(ne,{value:p}):t(wt,{}):null]})]})}export{ht as a,bt as b,wt as c,jt as d};
@@ -1,2 +0,0 @@
1
- "use client";import{a as Q}from"./segmented-358ff2b4992b8384.js";import{a as V}from"./combo-41234c24668b1db1.js";import{f as q}from"./list-1d259660d7612c5f.js";import"./confirm-f2fe4ba9905a89c6.js";import{a as B}from"./badge-676b01e0c615bf7b.js";import{a as J}from"./select-7ae25fd8a7d6c338.js";import{a as M,c as z}from"./card-e0901d68b79dfa93.js";import{b as R}from"./field-901f1f35c18c39c9.js";import{g as E}from"./format-eb03fc9d9744d960.js";import{$3a as j}from"./shared-init-ffb3397e494137c9.js";import"./wular-pnext-246221e985d863e5-0.js";import"./shared-init-ffb3397e494137c9.js";import{$4a as U,$4b as x}from"./shared-init-ffb3397e494137c9.js";import{$5A as W,$5p as Y,$5q as F}from"./shared-init-ffb3397e494137c9.js";import{$1a as $}from"./shared-init-88cce66bb3cfe1e5.js";import{$0b as y}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as e}from"./shared-init-88cce66bb3cfe1e5.js";import"./shared-init-246221e985d863e5-2.js";import"./shared-init-246221e985d863e5-2.js";import{$1c as P,$1g as c,$1i as _,$1k as K}from"./shared-init-8f2ac936c95a7f7b.js";var X=[{id:"claude",name:"Claude",key:"ANTHROPIC_API_KEY",hint:"Anthropic API key",signIn:"Claude"},{id:"codex",name:"Codex",key:"OPENAI_API_KEY",hint:"OpenAI API key",signIn:"ChatGPT"},{id:"custom",name:"Custom",key:"OPENAI_API_KEY",hint:"API key"}],oe=["OPENAI_API_KEY","OPENROUTER_API_KEY","AI_GATEWAY_API_KEY","GROQ_API_KEY","TOGETHER_API_KEY","ANTHROPIC_API_KEY"],se=[["personal","Just me"],["workspace","Workspace"]],ae={signin:"Sign in",key:"API key",token:"Setup token"},ie=new Set(["owner","admin"]);function re({row:n,busy:a,onAct:d,onSignIn:f,canManage:r}){let u=n.label.endsWith("-subscription"),p=[n.account?.email,n.account?.plan].filter(Boolean).join(" \xB7 "),i=u&&f,m=q(r?{label:u?"Sign out":"Remove",title:u?`Sign out of ${n.label}?`:`Remove ${n.label}?`,body:"Tasks that use it stop running.",onRemove:()=>d("remove")}:void 0);return e("tr",{children:[e("td",{children:[e("span",{class:"row-title",children:[e("b",{children:n.label}),e(B,{children:n.scope}),n.isDefault?e(B,{tone:"acc",children:"default"}):null]}),e("span",{class:"sub mono",children:p?`${p} \xB7 ${n.masked}`:n.masked})]}),e("td",{class:"acts",children:[n.isDefault||!r?null:e("button",{type:"button",class:"btn ghost sm","aria-busy":a==="default",onClick:()=>void d("default"),children:"Make default"}),i||m.item?e(U,{summaryClass:"icon-btn",label:"Actions",summary:e($,{d:F}),children:[i?e(P,{children:[e(x,{title:"Sign in again",onClick:i}),e(x,{title:"Switch account",onClick:i})]}):null,m.item]}):null,m.dialog]})]})}function le({engine:n,token:a,admin:d,autoFocus:f,onSaved:r}){let[u,p]=c(""),i=K(null),[m,v]=c(n.key),[o,s]=c("personal"),[g,S]=c(!1),[N,A]=c("");_(()=>{f&&i.current?.focus()},[]);let O=()=>{g||!u.trim()||!m.trim()||(S(!0),A(""),y.credentials.add({engine:n.id,env:{[a?"CLAUDE_CODE_OAUTH_TOKEN":m.trim()]:u.trim()},...o==="workspace"&&!a?{workspace:!0}:{}}).then(r).catch(I=>{S(!1),A(E(I))}))};return e("form",{class:"cred-add",method:"post",onSubmit:I=>{I.preventDefault(),O()},children:[n.id==="custom"?e(P,{children:e(V,{label:"Environment variable",name:"custom-var",class:"mono cred-var",options:oe,placeholder:"OPENAI_API_KEY",value:m,onChange:v})}):null,e("input",{type:"password",autocomplete:"off",name:`${n.id}-${a?"token":"key"}`,"aria-label":a?"Your claude setup-token":n.hint,placeholder:a?"Paste a claude setup-token, then Enter":`${n.hint}, then Enter`,ref:i,"aria-busy":g,value:u,onInput:I=>p(I.currentTarget.value)}),d?e(J,{label:"Who can use this key",options:se,value:a?"personal":o,onChange:s,disabled:a}):null,e(R,{value:N}),e("button",{hidden:!0})]})}function T({engine:n,label:a}){let d=[`Sign in with ${n.signIn}`,`Open ${n.signIn} sign-in`,"Open sign-in page","Open again"];return e("span",{class:"sign-label","data-all":d.join(`
2
- `),children:a})}function ce({login:n,engine:a,onChange:d,onDone:f,onError:r}){let[u,p]=c(!1),[i,m]=c(!1);_(()=>{if(!n.id||n.state==="done"||n.state==="failed")return;let o=setTimeout(()=>{y.credentials.loginStatus(n.id).then(s=>{if(s.state==="done")return f();if(s.state==="failed")return r(s.error??"Sign-in failed. Try again.");d(s)}).catch(s=>r(E(s)))},800);return()=>clearTimeout(o)},[n]);let v=o=>{d({...n,state:"verifying"}),y.credentials.loginCode(n.id,o).catch(s=>r(E(s)))};return n.url?n.engine==="codex"?e("div",{class:"cred-login grow end",role:"status",children:[e(z,{label:"Waiting for approval\u2026",inline:!0}),e("span",{class:"code-box",children:[n.code,e("button",{type:"button",class:"icon-btn","aria-label":u?"Copied":"Copy code",title:u?"Copied":"Copy code",onClick:()=>void navigator.clipboard.writeText(n.code??"").then(()=>p(!0)),children:e($,{d:u?Y:W})})]}),e("a",{class:"btn",href:n.url,target:"_blank",rel:"noopener noreferrer",children:e(T,{engine:a,label:"Open sign-in page"})})]}):e("div",{class:"cred-login grow end",role:"status",children:[i?e("input",{class:"mono",autoFocus:!0,autocomplete:"off","aria-label":`Code from the ${a.signIn} sign-in page`,placeholder:"Paste the code from the sign-in page",disabled:n.state==="verifying",onPaste:o=>{let s=o.clipboardData?.getData("text").trim();s&&(o.preventDefault(),v(s))},onKeyDown:o=>{let s=o.currentTarget.value.trim();o.key==="Enter"&&s&&v(s)}}):null,e("a",{class:"btn",href:n.url,target:"_blank",rel:"noopener noreferrer",onClick:()=>m(!0),children:e(T,{engine:a,label:i?"Open again":`Open ${a.signIn} sign-in`})})]}):e("div",{class:"cred-login grow end",role:"status",children:e("button",{type:"button",class:"btn",disabled:!0,"aria-busy":"true",children:e(T,{engine:a,label:`Sign in with ${a.signIn}`})})})}function _e({status:n}){let[a,d]=c(n),[f,r]=c(""),[u,p]=c(""),i=K(),m=o=>{clearInterval(i.current);let s=Date.now()+5*6e4;i.current=setInterval(()=>{y.engines.status().then(g=>{d(g),(g[o]?.signedIn||Date.now()>s)&&(clearInterval(i.current),r(""))})},2e3)};_(()=>()=>clearInterval(i.current),[]);let v=(o,s)=>{r(`${o}:${s}`),p(""),y.engines[s](o).then(g=>{d(g),s==="login"?m(o):r("")}).catch(g=>{r(""),p(E(g))})};return e(P,{children:[X.filter(o=>o.id!=="custom").map(o=>{let s=a[o.id],g=f===`${o.id}:login`;return e(M,{title:o.name,children:e("div",{class:"cred-new",children:[s?.signedIn?e("span",{class:"signed grow",children:[e($,{d:Y}),"Signed in to ",o.name]}):g?e("span",{class:"grow muted",children:["Finish signing in in the window ",o.name," opened."]}):e("span",{class:"grow muted",children:"Not signed in on this machine."}),s?.signedIn?e("button",{type:"button",class:"btn secondary-danger sm",disabled:f===`${o.id}:logout`,onClick:()=>v(o.id,"logout"),children:"Sign out"}):e("button",{type:"button",class:"btn secondary sm","aria-busy":g,disabled:!!f,onClick:()=>v(o.id,"login"),children:"Sign in"}),g?e("button",{type:"button",class:"btn ghost sm",onClick:()=>{clearInterval(i.current),r("")},children:"Cancel"}):null]})},o.id)}),e(R,{value:u}),e("p",{class:"muted",children:"On the local server, custom models read their key variable from this machine's environment."})]})}function Oe({rows:n,me:a,focus:d,back:f}){let r=j(),[u,p]=c(""),[i,m]=c(""),[v,o]=c(""),[s,g]=c({}),[S,N]=c({}),A=!a.user,O=A||ie.has(a.organization?.role??""),I=a.server?.subscriptions;_(()=>m(""),[n]);let k=(t,b)=>g(C=>({...C,[t]:b})),G=t=>{t&&k(t),o(""),f?location.href=f:r.refresh()},H=t=>{p(""),k(t,{id:"",engine:t,state:"starting"}),y.credentials.login(t).then(b=>k(t,b)).catch(b=>{k(t),p(E(b))})},Z=(t,b)=>i?Promise.resolve():(m(`${t.scope}/${t.label}/${b}`),p(""),y.credentials[b==="default"?"setDefault":"remove"](t.label,{workspace:t.scope==="workspace"}).then(()=>r.refresh()).catch(C=>{m(""),p(E(C))}));return e(P,{children:[e(R,{value:u}),X.map(t=>{let b=n.filter(l=>l.engine===t.id),C=t.id!=="custom"&&!A&&!!I?.[t.id],L=[...C?["signin"]:[],"key",...t.id==="claude"&&!C?["token"]:[]],w=S[t.id]??L[0],ee=!b.length||v===t.id,h=t.id==="custom"?void 0:s[t.id];return e(M,{title:t.name,count:b.length||void 0,actions:h?e("button",{type:"button",class:"btn ghost-danger sm",onClick:()=>{k(h.engine),h.id&&y.credentials.cancelLogin(h.id).catch(()=>{})},children:"Cancel"}):b.length&&v!==t.id?e("button",{type:"button",class:"btn ghost sm",onClick:()=>o(t.id),children:"Add"}):null,children:e("div",{id:`engine-${t.id}`,class:"cred-engine",children:[t.id==="custom"?e("p",{class:"muted cred-note",children:["Custom keys back ",e("a",{href:"/dash/settings/models",children:"custom models"}),". A model uses OPENAI_API_KEY unless it names another variable."]}):null,b.length?e("table",{class:"rows creds",children:e("tbody",{children:b.map(l=>{let D=`${l.scope}/${l.label}/`;return e(re,{row:l,busy:i.startsWith(D)?i.slice(D.length):"",canManage:l.scope==="personal"||O,onAct:te=>Z(l,te),...C&&l.scope==="personal"?{onSignIn:()=>H(t.id)}:{}},D)})})}):null,b.length&&t.id!=="custom"?e("p",{class:"muted cred-note",children:["Ready. Built-in models run on this key. Add aliases or custom endpoints on"," ",e("a",{href:"/dash/settings/models",children:"Models"}),"."]}):null,ee||h?e("div",{class:"cred-new",children:[L.length>1?e(Q,{label:`How to add ${t.name}`,disabled:!!h,options:L.map(l=>[l,ae[l]]),value:w,onChange:l=>N({...S,[t.id]:l})}):null,h?e(ce,{login:h,engine:t,onChange:l=>k(h.engine,l),onDone:()=>G(h.engine),onError:l=>{k(h.engine),p(l)}}):w==="signin"?e("div",{class:"cred-login grow end",children:e("button",{type:"button",class:"btn",autoFocus:d===t.id,onClick:()=>H(t.id),children:e(T,{engine:t,label:`Sign in with ${t.signIn}`})})}):e(le,{engine:t,token:w==="token",admin:O,autoFocus:d===t.id||!!S[t.id],onSaved:()=>G()},w)]}):null]})},t.id)})]})}export{Oe as CredentialsList,_e as EngineLogins};
@@ -1 +0,0 @@
1
- var e=(t,r,n)=>Object.fromEntries(new Intl.DateTimeFormat("en-US",{...n,timeZone:r}).formatToParts(t).map(o=>[o.type,o.value]));function m(t,r){if(!t)return"Not available";let n=e(t,r,{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0});return`${n.month} ${n.day}, ${n.year}, ${n.hour}:${n.minute} ${n.dayPeriod}`}function u(t,r){let n=e(t,r,{hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0});return`${n.hour}:${n.minute}:${n.second} ${n.dayPeriod}`}function a(t,r){let n=e(t,r,{month:"short",day:"numeric",year:"numeric"});return`${n.month} ${n.day}, ${n.year}`}function c(t){if(t===void 0)return"Not available";if(t<1e3)return`${Math.round(t)} ms`;if(t<6e4)return`${(t/1e3).toFixed(1)} s`;let[r,n]=t<36e5?["min",6e4]:t<1728e5?["h",36e5]:["d",864e5];return`${(t/n).toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})} ${r}`}var s=t=>t.toLocaleString("en-US");function d(t){return(t??"?").trim().charAt(0).toUpperCase()||"?"}var f=t=>t instanceof Error?t.message:String(t);export{m as a,u as b,a as c,c as d,s as e,d as f,f as g};
@@ -1 +0,0 @@
1
- import{a as h}from"./sentinel-c972a33dc69a5135.js";import{$2a as c}from"./shared-init-ffb3397e494137c9.js";import{$5d as p}from"./shared-init-ffb3397e494137c9.js";import{$1a as d}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as t}from"./shared-init-88cce66bb3cfe1e5.js";import{$1c as l}from"./shared-init-8f2ac936c95a7f7b.js";var i={agents:{title:"Agents",lead:"Each agent listens on the platforms it declares and answers as itself."},tasks:{title:"Tasks"},newAgent:{title:"New agent",lead:"Start from a template or a repository. Everything but the name has a sensible default."},usage:{title:"Usage",lead:"Tasks, runner time, and tokens by agent. Pick a range, or open an agent for its breakdown."}};function u(s,a){let n=s?.match(/^\/dash\/tasks\/([^\/?]+)$/);if(n)return{href:"/dash/tasks/[id]",params:{id:decodeURIComponent(n[1])},label:"Task"};let e=s?.match(/^\/dash\/(usage|agents|tasks)(?:\?(.*))?$/);if(!e)return a;let r=new URLSearchParams(e[2]??""),o=i[e[1]].title;return e[1]==="usage"?{href:"/dash/usage",params:{},search:r,label:o}:e[1]==="agents"?{href:"/dash/agents",params:{},search:r,label:o}:{href:"/dash/tasks",params:{},search:r,label:o}}function f(s){if(!s?.startsWith("/"))return;let a=new URL(s,"http://dash");if(a.origin!=="http://dash"||!/^\/dash(\/|$)/.test(a.pathname))return;let[,,n,e]=a.pathname.split("/"),r=i[n]?.title??"Back";if(n==="agents"&&e)try{r=decodeURIComponent(e)}catch{}return{to:{href:a.pathname,search:a.searchParams},label:r}}function E({label:s,back:a,...n}){let e=f(a);return t(c,{class:"back",...e?.to??n,children:[t(d,{d:p}),e?.label??s]})}function x({title:s,lead:a,actions:n,meta:e,back:r}){return t(l,{children:[t(h,{}),t("header",{class:"head",children:[t("div",{children:[r,t("div",{class:"title-row",children:[t("h1",{children:s}),e?t("div",{class:"meta",children:e}):null]}),a?t("p",{class:"lead",children:a}):null]}),n?t("div",{class:"actions",children:n}):null]})]})}export{i as a,u as b,E as c,x as d};
@@ -1 +0,0 @@
1
- "use client";import{b as a,c as b}from"./instructions-052fa45a9daf6db6.js";import"./shared-init-88cce66bb3cfe1e5.js";import"./shared-init-8f2ac936c95a7f7b.js";export{b as Instructions,a as markdown};
@@ -1 +0,0 @@
1
- import{$1g as p,$1i as w,$1k as u}from"./shared-init-8f2ac936c95a7f7b.js";var K=t=>`${history.state?.__pnextEntry??location.pathname}|${t}`,I=t=>history.state?.coderPages?.[t],O=(t,e)=>history.replaceState({...history.state,coderPages:{...history.state?.coderPages,[t]:e}},""),j=6e4,B=t=>e=>new Promise(n=>{let s=performance.now()-t;setTimeout(n,s>150?450-s:0,e)}),x=(t,e)=>({query:t,rows:e.items,next:e.next,meta:e});function A({name:t,query:e,first:n,initial:s,root:D,fetchPage:L}){let P=u(new Map([[s,{page:n,at:Date.now()}]])),[c,m]=p(()=>x(s,n)),[y,f]=p(""),[R,T]=p(!1),S=u(null),d=u(c);d.current=c;let a=u(void 0),h=u(void 0),v=(r,o,g)=>{let l=`${o}|${r}`;if(a.current===l)return;a.current=l,f(""),T(!0);let M=performance.now(),$=K(t),E=g?void 0:P.current.get(o);E&&Date.now()-E.at<j&&m(x(o,E.page)),L(r).then(B(M)).then(i=>{a.current===l&&(g||P.current.set(o,{page:i,at:Date.now()}),f(""),h.current=void 0,m(b=>{let _=g&&b.query===o?{...b,rows:[...b.rows,...i.items],next:i.next}:x(o,i);return K(t)===$&&O(t,_),_}))}).catch(i=>{a.current===l&&(h.current=()=>v(r,o,g),f(i instanceof Error?i.message:String(i)))}).finally(()=>{a.current===l&&(a.current=void 0,T(!1))})};w(()=>()=>{a.current=void 0},[]);let k=u(n);return w(()=>{k.current!==n&&(k.current=n,P.current.set(s,{page:n,at:Date.now()}),m(x(s,n)))},[n]),w(()=>{a.current=void 0,h.current=void 0,f(""),T(!1);let r=I(t);if(r&&r.query===e&&r.rows.length>d.current.rows.length){m(r);return}e!==d.current.query&&v("",e,!1)},[e]),w(()=>{let r=S.current;if(!r||!c.next||y)return;let o=new IntersectionObserver(([g])=>{g?.isIntersecting&&d.current.next&&d.current.query===e&&v(d.current.next,e,!0)},{root:D?.()??null,rootMargin:"0px 0px 300px 0px"});return o.observe(r),()=>o.disconnect()},[c.next,c.rows.length,e,y]),{rows:c.rows,meta:c.meta,more:!!c.next,busy:R,error:y,stale:R&&c.query!==e,sentinel:S,retry:()=>{f(""),h.current?.()}}}function F(t){let e=new URL(location.href);for(let[n,s]of Object.entries(t))s?e.searchParams.set(n,s):e.searchParams.delete(n);history.replaceState(history.state,"",e)}function G(t){let e=new URLSearchParams(location.search);return Object.fromEntries(t.map(n=>[n,e.get(n)??""]))}var q=20;export{B as a,A as b,F as c,G as d,q as e};
@@ -1 +0,0 @@
1
- "use client";import{f as Y}from"./list-1d259660d7612c5f.js";import"./confirm-f2fe4ba9905a89c6.js";import{a as N}from"./badge-676b01e0c615bf7b.js";import{d as X}from"./composer-data-6f7608fed13f3dd7.js";import"./model-options-15c53331a2f28a4f.js";import{a as K}from"./select-7ae25fd8a7d6c338.js";import{a as Q,c as x}from"./card-e0901d68b79dfa93.js";import{a as B,b as E}from"./field-901f1f35c18c39c9.js";import{d as A,g as C}from"./format-eb03fc9d9744d960.js";import{$4a as O,$4b as $}from"./shared-init-ffb3397e494137c9.js";import{$5A as V,$5e as j,$5i as H,$5l as q,$5m as z,$5p as L,$5q as G,$5r as J,$5x as U,$5z as M}from"./shared-init-ffb3397e494137c9.js";import{$1a as b}from"./shared-init-88cce66bb3cfe1e5.js";import{$0b as u}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as e}from"./shared-init-88cce66bb3cfe1e5.js";import{$1c as T,$1g as l,$1i as I,$1k as W}from"./shared-init-8f2ac936c95a7f7b.js";var F={local:H,"local-docker":U,"vercel-sandbox":q,"github-actions":z,http:M},se=new Set(["default","local"]),Z=[["personal","Just me"],["workspace","Workspace"]],oe=new Set(["owner","admin"]),ae=n=>Date.now()-n<6e4?"just now":`${A(Date.now()-n).replace(/\.\d/,"")} ago`;function re({runner:n,tested:s}){return s==="testing"?e("span",{class:"sub runner-status",children:[e("i",{class:"dot"}),"Testing\u2026"]}):s?e("span",{class:`sub runner-status ${s.ok?"ok":"bad"}`,children:[e("i",{class:"dot"}),s.ok?`Reached in ${A(s.ms)}`:s.detail]}):e("span",{class:`sub runner-status${n.online?" ok":""}`,children:[e("i",{class:"dot"}),n.online?"Online":n.lastSeen?`Last seen ${ae(n.lastSeen)}`:"Not seen yet"]})}function ie({runner:n,manage:s,onChange:i,onError:g}){let[k,c]=l(!1),[d,r]=l(!1),[h,o]=l(),m=W(null);I(()=>m.current?.select(),[d]);let y=se.has(n.id),v=Y(s&&!y?{title:`Remove ${n.name}?`,body:"Its tasks go to another runner.",onRemove:()=>i(()=>u.runners.remove(n.id))}:void 0),p=()=>{o("testing"),u.runners.test(n.id).then(o,f=>{o(void 0),g(C(f))})};return e("tr",{children:[e("td",{children:[e("span",{class:"row-title",children:[e("b",{class:"runner-name",children:[e(b,{d:F[n.kind]??M}),d?e("input",{class:"runner-rename","aria-label":"Runner name",defaultValue:n.name,ref:m,onKeyDown:f=>{let a=f.currentTarget.value.trim();f.key==="Escape"&&r(!1),f.key==="Enter"&&a&&i(()=>u.runners.update(n.id,{name:a})).then(()=>r(!1))},onBlur:()=>r(!1)}):n.name]}),e(N,{children:n.scope}),n.default?e(N,{tone:"acc",children:"default"}):null]}),e(re,{runner:n,tested:h})]}),e("td",{class:"acts",children:[n.default||!s?null:e("button",{type:"button",class:"btn secondary sm",disabled:k,"aria-busy":k,onClick:()=>{c(!0),i(()=>u.runners.update(n.id,{default:!0})).finally(()=>c(!1))},children:"Make default"}),e(O,{summaryClass:"icon-btn",label:"Actions",summary:e(b,{d:G}),children:[e($,{title:"Test",onClick:p}),s&&!y?e($,{title:"Rename",onClick:()=>r(!0)}):null,v.item]}),v.dialog]})]})}function _({value:n}){let[s,i]=l(!1);return e("div",{class:"runner-cmd",children:[e("code",{children:n}),e("button",{type:"button",class:s?"icon-btn copied":"icon-btn","aria-label":s?"Copied":"Copy command",title:s?"Copied":"Copy command",onClick:()=>void navigator.clipboard.writeText(n).then(()=>i(!0)),children:e(b,{d:s?L:V})})]})}function le({pairing:n,onCancel:s}){return e("div",{class:"runner-pair",children:[e("details",{class:"runner-step",children:[e("summary",{children:"Install the Coder CLI on that computer, if it is not there yet"}),e(_,{value:"npm install -g @wular/coder"})]}),e("div",{class:"runner-step",children:[e("p",{children:"Run this there. The token works once and expires in 15 minutes."}),e(_,{value:n.command})]}),e("details",{class:"runner-step",children:[e("summary",{children:"Behind a firewall? This server has to reach that computer over HTTPS"}),e("p",{children:["Open a tunnel on that computer first, then add its address to the command above as"," ",e("code",{children:"--runner-url"}),"."]}),e(_,{value:"cloudflared tunnel --url http://localhost:4100"})]}),e("div",{class:"runner-wait",children:[e(x,{label:"Waiting for that computer to connect",inline:!0,dots:!0}),e("button",{type:"button",class:"btn secondary-danger sm",onClick:s,children:"Cancel"})]})]})}function ue({catalog:n,admin:s,personal:i,known:g,onAdded:k}){let[c,d]=l(),[r,h]=l(i?"personal":"workspace"),[o,m]=l(!1),[y,v]=l(""),[p,f]=l(),a=n.find(t=>t.kind===c);I(()=>{if(!p)return;let t=Math.min(p.expiresAt,Date.now()+15*6e4),R=setInterval(()=>{if(Date.now()>t)return P();u.runners.list().then(S=>{S.items.some(D=>!g.includes(D.id))&&(k(S),P())})},2e3);return()=>clearInterval(R)},[p]);let P=()=>{f(void 0),d(void 0)},ee=t=>{v(""),f(void 0),d(t.kind),t.connect==="pair"&&(m(!0),u.runners.pair({scope:r}).then(f,R=>{d(void 0),v(C(R))}).finally(()=>m(!1)))};return e("form",{class:"runner-add",method:"post",onSubmit:async t=>{if(t.preventDefault(),!a||o)return;let R=Object.fromEntries([...new FormData(t.currentTarget)].map(([w,ne])=>[w,String(ne).trim()])),{name:S,...D}=R;m(!0),v("");try{await u.runners.add({kind:a.kind,name:S||a.name,scope:r,config:Object.fromEntries(Object.entries(D).filter(([,w])=>w))}),k(await u.runners.list()),d(void 0)}catch(w){v(C(w))}m(!1)},children:[e("div",{class:"runner-pick",children:[e(O,{summaryClass:"btn secondary",label:"Runner kind",align:"left",wide:!0,summary:e(T,{children:[e(b,{d:a?F[a.kind]:J}),a?a.name:"Add a runner",e(b,{d:j})]}),children:n.filter(t=>t.available).map(t=>e("button",{type:"button",role:"menuitemradio","aria-checked":t.kind===c,class:"pop-item rich",onClick:()=>ee(t),children:[e(b,{d:F[t.kind]??M}),e("span",{class:"grow",children:[t.name,e("small",{children:t.available?t.description:t.reason})]}),e(b,{d:L})]},t.kind))}),a?.connect==="fields"?e(T,{children:[a.help?e("p",{class:"muted runner-help",children:a.help}):null,e("div",{class:"add-grid",children:[e(B,{label:"Name",hint:"shown in the list",children:e("input",{name:"name",placeholder:a.name,autocomplete:"off"})}),a.fields.map(t=>e(B,{label:t.label,hint:t.hint??(t.optional?"optional":void 0),children:e("input",{name:t.key,type:t.secret?"password":"text",placeholder:t.placeholder,required:!t.optional,autocomplete:"off"})},`${a.kind}:${t.key}`))]})]}):null,a?.connect==="fields"?e("div",{class:"runner-foot",children:[e(E,{value:y}),i?e(K,{label:"Who can use this runner",options:Z,value:s?r:"personal",onChange:h,disabled:!s}):null,e("button",{class:"btn","aria-busy":o,disabled:o,children:"Add runner"})]}):e(T,{children:[a&&i?e(K,{label:"Who can use this runner",options:Z,value:s?r:"personal",onChange:h,disabled:!s||!!p}):null,o&&!p?e(x,{label:"Pairing",inline:!0}):null,e(E,{value:y})]})]}),p?e(le,{pairing:p,onCancel:P}):null]})}function Ie({first:n,me:s}){let[i,g]=l(n),[k,c]=l(""),d=!s.user||oe.has(s.organization?.role??""),r=X(i.items);I(()=>{let o=setInterval(()=>void u.runners.list().then(g,()=>{}),3e4);return()=>clearInterval(o)},[]);let h=async o=>{c("");try{return await o(),g(await u.runners.list()),!0}catch(m){return c(C(m)),!1}};return e(Q,{title:"Runners",count:r.length,actions:e(E,{value:k}),children:[e("div",{class:"table-scroll",children:e("table",{class:"rows settings",children:e("tbody",{children:r.map(o=>e(ie,{runner:o,manage:o.scope==="personal"||d,onChange:h,onError:c},o.id))})})}),e(ue,{catalog:i.catalog,admin:d,personal:!!s.user,known:r.map(o=>o.id),onAdded:g})]})}export{Ie as RunnersList};
@@ -1,5 +0,0 @@
1
- var c=class extends Error{code;hint;taskId;payload;approval;result;runId;status;constructor(e,t,s={}){super(t),this.name="CoderError",this.code=e,Object.assign(this,s)}},v=class extends c{constructor(e,t,s="",n){super("server",t,{status:e,...n?{hint:n}:{}}),this.authenticate=s}};function w(e){try{let t=new URL(e).hostname.toLowerCase();return t==="localhost"||t==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(t)}catch{return!1}}function k(e){let t;try{t=new URL(e)}catch{throw new c("invalid-option","Give the server as a URL, e.g. https://agents.example.com.")}if(t.protocol!=="https:"&&!(t.protocol==="http:"&&w(t.origin)))throw new c("invalid-option","Coder servers require HTTPS unless they are loopback.",{hint:"Use https://, or http://localhost for a local server."});if(t.username||t.password||t.search||t.hash)throw new c("invalid-option","The server must be an origin without credentials, query, or fragment.");return t.toString().replace(/\/+$/,"")}var p=(e,t,s)=>`/admin/credentials/${encodeURIComponent(e)}${t}${s?"?workspace":""}`,i=(e,t)=>{let s=new URLSearchParams;"cursor"in t&&typeof t.cursor=="string"&&s.set("cursor",t.cursor);for(let[n,o]of Object.entries(t))n!=="cursor"&&o!==void 0&&o!==!1&&o!==""&&s.set(n,o===!0?"1":Array.isArray(o)?o.join(","):String(o));return`${e}?${s}`},$=new Set(["completed","failed","cancelled"]),q=class{url;fetchImpl;organization;renewal;onError;token;cookie;constructor(e,t,s={}){if(this.cookie="cookie"in t,this.url=e?k(e):"",!this.cookie&&!this.url)throw new c("invalid-option","Bearer clients need a server URL.");this.token="token"in t?t.token:void 0,this.fetchImpl=s.fetch??((n,o)=>fetch(n,o)),this.organization=s.organization,this.renewal=s.renewal,this.onError=s.onError}request(e,t={}){let s=this.read(e,t);return s.catch(()=>{}),s}async read(e,t){this.renewal&&this.renewal.expiresAt()-Date.now()<3e4&&(this.token=await this.renewal.renew());let s=await this.send(e,t);s.status===401&&this.renewal&&/invalid_token/.test(s.headers.get("www-authenticate")??"")&&(this.token=await this.renewal.renew(),s=await this.send(e,t));let n=await s.text().catch(()=>""),o={},r;try{n&&s.status!==204&&(o=JSON.parse(n))}catch{if(s.ok)throw new c("server",`The server answered ${s.status} with a body that is not JSON.`);this.cookie&&n&&(r=n)}if(!s.ok){let a=new v(s.status,o.error??o.message??r??`The server answered ${s.status}.`,s.headers.get("www-authenticate")??"",o.hint);throw this.onError?.(a),a}return o}send(e,t){let s=new Headers(t.headers);return t.body&&!s.has("content-type")&&s.set("content-type","application/json"),this.cookie||s.set("authorization",`Bearer ${this.token}`),this.organization&&s.set("x-coder-organization",this.organization),this.fetchImpl(`${this.url}${e}`,{...t,headers:s,...this.cookie?{credentials:"same-origin"}:{}}).catch(n=>{throw n instanceof c||n.name==="AbortError"?n:new c("server",this.url?`No Coder server answers at ${this.url}: ${n.message}`:"The server did not answer. Check the connection and try again.")})}post(e,t){return this.request(e,{method:"POST",...t!==void 0?{body:JSON.stringify(t)}:{}})}me(){return this.request("/me")}info(){return this.request("/api/auth/capabilities")}linkAccount(e){return this.post("/connect",{token:e})}signOut(){return this.post("/api/auth/sign-out",{})}agents={list:e=>this.request(i("/admin/agents",{...e,...e?.connect?{connect:1}:{}})),get:(e,t)=>this.request(i(`/admin/agents/${encodeURIComponent(e)}`,{...t?.versions===!1?{versions:0}:{},...t?.content===!1?{content:0}:{}})),versions:(e,t={})=>this.request(i(`/admin/agents/${encodeURIComponent(e)}/versions`,t)),remove:e=>this.request(`/admin/agents/${encodeURIComponent(e)}`,{method:"DELETE"}),preview:(e,t)=>this.request(i("/admin/agents/import",{repo:e,ref:t})),version:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}/versions/${t}`),put:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)}).then(s=>({id:e,version:s.version,unchanged:s.unchanged})),settings:(e,t)=>this.request(`/admin/agents/${encodeURIComponent(e)}/settings`,{method:"PATCH",body:JSON.stringify(t)}),import:(e,t,s)=>this.post("/admin/agents/import",{repo:e,ref:t,...s?{agents:s}:{}})};folders={list:()=>this.request("/admin/folders"),check:e=>this.post("/admin/folders/check",{path:e}),clone:e=>this.post("/admin/folders/clone",{url:e}),pick:()=>this.post("/admin/folders/pick",{})};tasks={run:e=>this.post("/admin/tasks",e),list:e=>this.request(i("/admin/tasks",{limit:20,...e,...e?.archived?{archived:1}:{},...e?.summary?{summary:1}:{},...e?.counts?{counts:1}:{}})),get:e=>this.request(`/admin/tasks/${encodeURIComponent(e)}`),logs:(e,t=-1,s)=>this.request(i(`/admin/tasks/${encodeURIComponent(e)}/logs`,{after:t,limit:s})),stream:(e,t=-1,s)=>this.send(`/admin/tasks/${encodeURIComponent(e)}/stream?after=${t}`,{headers:{accept:"text/event-stream"},signal:s}),cancel:e=>this.post(`/admin/tasks/${encodeURIComponent(e)}/cancel`),steer:(e,t)=>this.post(`/admin/tasks/${encodeURIComponent(e)}/steer`,{text:t}),ask:(e,t)=>this.post(`/admin/tasks/${encodeURIComponent(e)}/ask`,{question:t}),approve:(e,t,s)=>this.post(`/admin/tasks/${encodeURIComponent(e)}/approve`,{approvalId:t,decision:s}),archive:e=>this.post(`/admin/tasks/${encodeURIComponent(e)}/archive`),delete:e=>this.request(`/admin/tasks/${encodeURIComponent(e)}`,{method:"DELETE"}),create:e=>this.post("/admin/tasks",e),continue:(e,t,s={})=>this.post(`/admin/tasks/${encodeURIComponent(e)}/continue`,{text:t,...s}),wait:async(e,t={})=>{let s=-1;for(;;){let n=await this.tasks.stream(e,s);if(!n.ok||!n.body){let r=await this.tasks.get(e);if($.has(r.status))return r;if(n.status===401)continue;throw new c("server",`The task stream answered ${n.status}.`)}let o=!1;for await(let r of u(n.body))if(r.event==="log"){let a=JSON.parse(r.data);s=a.seq,t.onLog?.(a)}else r.event==="end"&&(o=!0);if(o)return this.tasks.get(e)}}};credentials={list:e=>this.request(i("/admin/credentials",e??{})),add:e=>this.post("/admin/credentials",e),remove:(e,{workspace:t}={})=>this.request(p(e,"",t),{method:"DELETE"}),setDefault:(e,{workspace:t}={})=>this.post(p(e,"/default",t)),login:e=>this.post("/admin/logins",{engine:e}),loginStatus:e=>this.request(`/admin/logins/${encodeURIComponent(e)}`),loginCode:(e,t)=>this.post(`/admin/logins/${encodeURIComponent(e)}`,{code:t}),cancelLogin:e=>this.request(`/admin/logins/${encodeURIComponent(e)}`,{method:"DELETE"})};runners={list:()=>this.request("/admin/runners"),add:e=>this.post("/admin/runners",e),pair:e=>this.post("/admin/runners/pair",e),update:(e,t)=>this.request(`/admin/runners/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)}),test:e=>this.post(`/admin/runners/${encodeURIComponent(e)}/test`,{}),remove:e=>this.request(`/admin/runners/${encodeURIComponent(e)}`,{method:"DELETE"})};integrations={list:()=>this.request("/admin/integrations")};repositories={list:()=>this.request("/admin/repositories")};engines={status:()=>this.request("/admin/engines/status"),login:e=>this.post(`/admin/engines/${encodeURIComponent(e)}/login`,{}),logout:e=>this.post(`/admin/engines/${encodeURIComponent(e)}/logout`,{})};apps={list:e=>this.request(i("/admin/apps",{agent:e})),install:(e,t)=>this.post(i(`/admin/apps/${encodeURIComponent(e)}/install`,{back:t}))};installations={list:e=>this.request(i("/admin/installations",{agent:e}))};connections={add:e=>this.post("/admin/connections",e)};config={get:()=>this.request("/admin/config"),put:e=>this.request("/admin/config",{method:"PUT",body:JSON.stringify(e)}),patch:e=>this.request("/admin/config",{method:"PATCH",headers:{"content-type":"application/merge-patch+json"},body:JSON.stringify(e)})};models={list:()=>this.request("/admin/models"),add:e=>this.post("/admin/models",e),probe:e=>this.post("/admin/models/probe",e),remove:e=>this.request(`/admin/models/${encodeURIComponent(e)}`,{method:"DELETE"}),alias:(e,t)=>this.post(`/admin/models/${encodeURIComponent(e)}/alias`,{spec:t}),enable:e=>this.post(`/admin/models/${encodeURIComponent(e)}/enable`),disable:e=>this.post(`/admin/models/${encodeURIComponent(e)}/disable`)};mcp={list:()=>this.request("/admin/mcp"),add:e=>this.post("/admin/mcp",e),remove:e=>this.request(`/admin/mcp/${encodeURIComponent(e)}`,{method:"DELETE"}),search:e=>this.request(i("/admin/mcp-registry",{q:e}))};flows={list:e=>this.request(i("/admin/flows",{repo:e})),run:(e,t)=>this.post(`/admin/flows/${encodeURIComponent(e)}/run`,t)};pulls={list:e=>this.request(i("/admin/pulls",{repo:e}))};review(e){return this.post("/admin/review",e)}usage(e={}){return this.request(i("/admin/usage/totals",{...e,since:e.since??Date.now()-10080*60*1e3}))}usageRows(e){return this.request(i("/admin/usage",{installation:e}))}};async function*u(e){let t=new TextDecoder,s="";for await(let n of e){s+=t.decode(n,{stream:!0});let o;for(;(o=s.indexOf(`
2
-
3
- `))>=0;){let r=s.slice(0,o);s=s.slice(o+2);let a="message",d=[];for(let h of r.split(`
4
- `))h.startsWith("event: ")?a=h.slice(7):h.startsWith("data: ")&&d.push(h.slice(6));d.length&&(yield{event:a,data:d.join(`
5
- `)})}}}var g=new q("",{cookie:!0},{onError(e){e.status===401&&(e.authenticate||/^Sign in/.test(e.message))&&(location.href=`/login?return=${encodeURIComponent(location.pathname+location.search)}`)}});async function C(){let{url:e}=await g.signOut();location.href=e??"/?signed_out=1"}import{$1a as f}from"./shared-init-8f2ac936c95a7f7b.js";var U=0;function l(e,t,s,n,o,r){t||(t={});var a,d,h=t;if("ref"in h)for(d in h={},t)d=="ref"?a=t[d]:h[d]=t[d];var m={type:e,props:h,key:s,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--U,__i:-1,__u:0,__source:o,__self:r};if(typeof e=="function"&&(a=e.defaultProps))for(d in a)h[d]===void 0&&(h[d]=a[d]);return f.vnode&&f.vnode(m),m}function y({d:e,class:t}){return l("svg",{class:t?`ic ${t}`:"ic",viewBox:"0 0 24 24","aria-hidden":"true",children:l("path",{d:e})})}function I(){return l("svg",{class:"coder-mark",viewBox:"0 0 16 16","aria-hidden":"true",children:l("path",{d:"M5 0h3v3h-3zM9 0h3v3h-3zM13 0h3v3h-3zM0 4h3v3h-3zM0 9h3v3h-3zM5 13h3v3h-3zM9 13h3v3h-3zM13 13h3v3h-3z"})})}export{u as $0a,g as $0b,C as $0c,y as $1a,I as $1b,l as $2a};
@@ -1,2 +0,0 @@
1
- import{f as $e,i as Me,j as K,k as F}from"./wular-pnext-246221e985d863e5-0.js";function b(e,t={}){let r=fe(me(e,t.params??{})),a=ve(t.search),n=be(t.hash);return`${r}${a}${n}`}function pe(){return window.__PNEXT_TRAILING_SLASH__===!0}function I(){let e=window.__PNEXT_PREFETCH__;return e===void 0?"visible":e}function fe(e){let[,t="",r=""]=/^([^?#]*)([\s\S]*)$/.exec(e)??[];return t.startsWith("/")?pe()?t==="/"||t.endsWith("/")||/\.[^/]+$/.test(t)?e:`${t}/${r}`:t==="/"||!t.endsWith("/")||/\.[^/]+\/$/.test(t)?e:`${t.replace(/\/+$/,"")}${r}`:e}function me(e,t){let r=e.replace(/\[\[\.\.\.([^\]]+)\]\]/g,(a,n)=>C(t[n],!0)).replace(/\[\.\.\.([^\]]+)\]/g,(a,n)=>C(t[n],!0)).replace(/\[([^\]]+)\]/g,(a,n)=>C(t[n],!1));return we(r)}function we(e){return e.length<=1?e:e.replace(/\/+$/,"")||"/"}function C(e,t){if(Array.isArray(e)){let r=e.map(a=>encodeURIComponent(a));return t?r.join("/"):r[0]??""}return encodeURIComponent(e??"")}function ve(e){if(!e)return"";let t=(e instanceof URLSearchParams?e:ge(e)).toString();return t?`?${t}`:""}function ge(e){let t=new URLSearchParams;for(let[r,a]of Object.entries(e)){let n=Array.isArray(a)?a:[a];for(let s of n)s!=null&&t.append(r,String(s))}return t}function be(e){return e?e.startsWith("#")?e:`#${e}`:""}import{$0a as Y,$0b as ye}from"./shared-init-246221e985d863e5-2.js";import{$1a as ke,$1d as _e}from"./shared-init-246221e985d863e5-2.js";import{$1a as xe,$1g as G,$1i as Q}from"./shared-init-8f2ac936c95a7f7b.js";var E=class extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}},Ee=class extends URLSearchParams{append(){throw new E}delete(){throw new E}set(){throw new E}sort(){throw new E}};$e();function A(){return Se}var Se={push(e,...[t]){z(T(e,t),"push",t?.scroll)},replace(e,...[t]){z(T(e,t),"replace",t?.scroll)},prefetch(e,...[t]){ye(T(e,t),{strict:!0,full:t?.kind==="full",onInvalidate:t?.onInvalidate})},refresh(){Y(window.location.href,{replace:!0,scroll:!1})},back(){window.history.back()},forward(){window.history.forward()},get bfcacheId(){return Ce().bfcacheId??""}};function T(e,t){return Le(t)?b(e,t):String(e)}function Le(e){return!!(e&&("params"in e||"search"in e||"hash"in e))}function g(){return ee().pathname}function Pe(){return new Ee(ee().search)}function H(){let e=xe,t=e.__h,r;e.__h=(s,...i)=>{r=s.__P,t?.(s,...i)};let[a,n]=G(!1);return e.__h=t,Q(()=>{let s=r?.closest("a[data-pnext-link]");if(!s)return;let i=s.__pnextHints??=new Set;return i.add(n),()=>i.delete(n)},[]),{pending:a}}function ee(){let e=X(),[,t]=G(()=>J(e));return Q(()=>{Ie();let r=()=>t(a=>{let n=J(X());return a===n?a:n});return K().add(r),r(),()=>K().delete(r)},[]),e}function J(e){return`${e.pathname}${e.search}${e.hash}`}function X(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Ce(){let e=history.state??{},t=window.__PNEXT_ROUTE__??{},r=typeof e.__pnextBfcacheId=="string"?e.__pnextBfcacheId:void 0;return r?{...t,bfcacheId:r}:t}function z(e,t,r=!0){if(_e(e))return;let a=new URL(e,window.location.href);if(a.origin!==window.location.origin){let n=globalThis;n.__pnextMpaNavigation=(n.__pnextMpaNavigation??0)+1,requestAnimationFrame(()=>requestAnimationFrame(()=>{t==="replace"?window.location.replace(a.href):window.location.assign(a.href)}));return}if(a.pathname!==window.location.pathname||a.search!==window.location.search){Y(a.href,{replace:t==="replace",scroll:r});return}t==="replace"?window.history.replaceState(history.state,"",a):window.history.pushState(history.state,"",a),Me(a,{scroll:r}),ke.settleLink?.()}function Ie(){if(window.__PNEXT_HISTORY_PATCHED__)return;window.__PNEXT_HISTORY_PATCHED__=!0;let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history);function r(a){let n=window.history.state??{},s={};for(let l of Object.keys(n))l.startsWith("__pnext")&&(s[l]=n[l]);if(Object.keys(s).length===0)return a;let i=a??{};return Object.keys(i).some(l=>l.startsWith("__pnext"))?a:{...i,...s}}window.history.pushState=function(a,n,s){let i=window.location.href,l=e(r(a),n,s);return window.location.href!==i&&F(),l},window.history.replaceState=function(a,n,s){let i=window.location.href,l=t(r(a),n,s);return window.location.href!==i&&F(),l}}import{$1b as Te,$1i as Ae,$1k as He}from"./shared-init-8f2ac936c95a7f7b.js";function $({href:e,params:t,prefetch:r,replace:a,scroll:n,search:s,hash:i,onClick:l,onNavigate:p,onPrefetchStart:w,onPrefetchFinish:o,children:c,...f}){let m=b(e,{params:t??{},search:s,hash:i}),v=r??I(),P=Re(w,o);return Te("a",{...f,ref:P,href:m,"data-pnext-link":!0,"data-prefetch":v===!1?"false":v,"data-pnext-replace":a?"true":void 0,"data-pnext-scroll":n===!1?"false":void 0,onClick:he=>{let x=he;if(l?.(x),x.defaultPrevented||!p||!Oe(x))return;let W=je();p(W),W.defaultPrevented&&x.preventDefault()}},c)}function Re(e,t){let r=He(null);return Ae(()=>{let a=r.current;if(!a||!e&&!t)return;let n=()=>e?.(),s=()=>t?.();return a.addEventListener("pnext:prefetchstart",n),a.addEventListener("pnext:prefetchfinish",s),()=>{a.removeEventListener("pnext:prefetchstart",n),a.removeEventListener("pnext:prefetchfinish",s)}},[e,t]),r}function je(){return{defaultPrevented:!1,preventDefault(){this.defaultPrevented=!0}}}function Oe(e){return e.button===0&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&!e.currentTarget.target&&!e.currentTarget.download}import{$0a as Ne,$0b as Ue}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as h}from"./shared-init-88cce66bb3cfe1e5.js";import{$1c as Ve,$1g as te,$1i as M,$1k as Ze}from"./shared-init-8f2ac936c95a7f7b.js";function ne({status:e}){return h("span",{class:`st ${e}`,children:[h("i",{}),se[e]??e]})}var se={queued:"waiting for slot",running:"running",waiting:"needs approval",completed:"completed",failed:"failed",cancelled:"cancelled"},y="coder:watched",oe="coder:notify",S="coder:toast",R=new Set(["completed","failed","cancelled"]),Be=new Set([...R,"waiting"]),qe=20,De=3,ae=3,We=8e3,Ke=2**31-1,L=()=>{try{return JSON.parse(localStorage.getItem(y)??"{}")??{}}catch{return{}}},ie=e=>{let t=Object.entries(e).sort(([,r],[,a])=>a.at-r.at).slice(0,qe);localStorage.setItem(y,JSON.stringify(Object.fromEntries(t))),dispatchEvent(new Event(y))},Fe=(e,t)=>dispatchEvent(new CustomEvent(S,{detail:{title:e,line:t}}));function le(e,t,r){let a=L(),n=a[e];!n&&R.has(t)||n?.status===t&&(!r||n.title===r)||(a[e]={title:r||n?.title||e,status:t,at:n?.at??Date.now()},ie(a))}var re=e=>/^\/dash\/tasks\/([^/]+)$/.exec(e)?.[1];function Je(e){let t=n=>typeof n=="string"?n.trim().split(`
2
- `)[0]:"",r=e.approval??{},a=typeof e.result=="object"?e.result?.output:e.result;return e.status==="waiting"?t(r.summary)||t(r.reason)||t(r.kind)||"It is waiting for your approval.":e.status==="completed"?t(a)||"It finished.":t(e.error)||(e.status==="failed"?"It failed.":"It was stopped.")}function Xe({id:e,onStatus:t}){return M(()=>{let r=new AbortController;return(async()=>{for(;!r.signal.aborted;){try{let a=await Ue.tasks.stream(e,Ke,r.signal);if(a.status===404){let n=L();return delete n[e],ie(n)}if(!a.ok||!a.body)return;for await(let n of Ne(a.body))if(n.event==="status")t(e,JSON.parse(n.data));else if(n.event==="end")return}catch{if(r.signal.aborted)return}await new Promise(a=>setTimeout(a,1e3))}})(),()=>r.abort()},[e]),null}function ze({toast:e,dismiss:t}){return M(()=>{let r=setTimeout(()=>t(e.key),We);return()=>clearTimeout(r)},[]),h("div",{class:e.id?"toast":"toast err",onClick:()=>t(e.key),children:[h("p",{class:"toast-head",children:[e.id?h($,{class:"cover",href:"/dash/tasks/[id]",params:{id:e.id},children:e.title}):h("span",{class:"cover",children:e.title}),e.status?h(ne,{status:e.status}):null]}),h("p",{class:"toast-line",children:e.line})]})}function Ye(){let e=g(),t=A(),[r,a]=te({}),[n,s]=te([]),i=Ze(re(e));i.current=re(e),M(()=>{let o=()=>a(L());return o(),addEventListener(y,o),addEventListener("storage",o),()=>{removeEventListener(y,o),removeEventListener("storage",o)}},[]),M(()=>{let o=c=>{let{title:f,line:m}=c.detail;s(v=>[{key:`${S}:${Date.now()}`,title:f,line:m},...v].slice(0,ae))};return addEventListener(S,o),()=>removeEventListener(S,o)},[]),M(()=>{if(!n.length)return;let o=c=>c.key==="Escape"&&s([]);return addEventListener("keydown",o),()=>removeEventListener("keydown",o)},[n.length]);let l=o=>s(c=>c.filter(f=>f.key!==o)),p=(o,c)=>{let f=L()[o];if(!f||f.status===c.status||(le(o,c.status),!Be.has(c.status)||i.current===o))return;let m={key:`${o}:${Date.now()}`,id:o,title:f.title,status:c.status,line:Je(c)};if(s(P=>[m,...P].slice(0,ae)),localStorage.getItem(oe)!=="1"||typeof Notification>"u"||Notification.permission!=="granted")return;let v=new Notification(`${m.title} (${se[m.status]})`,{body:m.line,tag:o});v.onclick=()=>{focus(),t.push("/dash/tasks/[id]",{params:{id:o}})}},w=Object.entries(r).filter(([o,c])=>!R.has(c.status)&&o!==i.current).sort(([,o],[,c])=>c.at-o.at).slice(0,De);return h(Ve,{children:[w.map(([o])=>h(Xe,{id:o,onStatus:p},o)),h("section",{class:"toasts","aria-label":"Task updates","aria-live":"polite",children:n.map(o=>h(ze,{toast:o,dismiss:l},o.key))})]})}var Ge="M12 8V4H8M6 8h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2ZM2 14h2M20 14h2M15 13v2M9 13v2",Qe="M22 12h-4l-3 9L9 3l-3 9H2",et="M3 3v18h18M18 17V9M13 17V5M8 17v-3",j="m15 18-6-6 6-6",tt="m6 9 6 6 6-6",O="m9 18 6-6-6-6",N="M8 12a4 4 0 1 0 8 0a4 4 0 1 0 -8 0M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M6.3 17.7l-1.4 1.4M19.1 4.9l-1.4 1.4",U="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",V="M4 4h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1ZM8 20h8M12 16v4",at="M2 15.5a5.5 5.5 0 1 0 11 0a5.5 5.5 0 1 0 -11 0M21 2l-9.6 9.6M15.5 7.5l3 3L22 7l-3-3",Z="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9",rt="m12 3 1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9ZM19 3v4M17 5h4",nt="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.7-.9l-.8-1.2A2 2 0 0 0 7.9 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2ZM10 13a2 2 0 1 0 4 0a2 2 0 1 0 -4 0M14 13h3M7 13h3",B="M4 6h16M4 12h16M4 18h16",st="M18 6 6 18M6 6l12 12",k="M20 6 9 17l-5-5",ot="M4 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0M18 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",it="M12 5v14M5 12h14",lt="M21 12a8 8 0 0 1-11.6 7.1L4 20l1-4.6A8 8 0 1 1 21 12Z",ct="M4 12h12M12 6l6 6-6 6",dt="M16 4h4v4M20 4l-7 7M4 20l6-6M16 20h4v-4M20 20l-5-5M4 4l5 5",ut="M4 11a7 7 0 1 0 14 0a7 7 0 1 0 -14 0M20 20l-3.5-3.5",ht="m21.7 18-8-14a2 2 0 0 0-3.4 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.7-3M12 9v4M12 17h.01",pt="m4 17 6-6-6-6M12 19h8",ft="M12 7v5l3 2M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",mt="M9 2v6M15 2v6M6 8h12v4a6 6 0 0 1-12 0ZM12 18v4",wt="M9 9h11v11H9ZM5 15H4V4h11v1",vt="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6";import{$1a as _}from"./shared-init-88cce66bb3cfe1e5.js";import{$0c as gt}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as d}from"./shared-init-88cce66bb3cfe1e5.js";import{$1c as ce,$1g as D,$1i as q,$1j as bt,$1k as $t}from"./shared-init-8f2ac936c95a7f7b.js";var Mt="side";function yt({collapsed:e}){let[t,r]=D(e);return d("button",{type:"button",class:"icon-btn side-toggle","aria-label":t?"Expand sidebar":"Collapse sidebar",title:t?"Expand sidebar":"Collapse sidebar",onClick:()=>{let a=!t;r(a),document.querySelector(".app")?.classList.toggle("side-min",a),document.cookie=`${Mt}=${a?"min":""}; path=/; max-age=${a?31536e3:0}; samesite=lax`},children:d(_,{d:t?O:j})})}function kt(){let[e,t]=D(!1),r=g();return q(()=>t(!1),[r]),q(()=>{if(document.documentElement.classList.toggle("drawer",e),!e)return;let a=n=>n.key==="Escape"&&t(!1);return addEventListener("keydown",a),()=>removeEventListener("keydown",a)},[e]),d(ce,{children:[d("button",{type:"button",class:"icon-btn only-m","aria-label":"Open navigation",onClick:()=>t(!e),children:d(_,{d:B})}),d("div",{class:"scrim",onClick:()=>t(!1)})]})}function _t(){return q(()=>{let e=/(?:^|&)token=([^&]+)/.exec(location.hash.slice(1))?.[1];if(!e)return;history.replaceState(null,"",location.pathname+location.search);let t=document.getElementById("token-form");t&&(t.elements.namedItem("token").value=decodeURIComponent(e),t.submit())},[]),null}var xt=e=>{let t=e.params??{};return e.href.replace(/\[([^\]]+)\]/g,(r,a)=>encodeURIComponent(String(t[a]??"")))};function Et(e,t){let r=new URLSearchParams((e instanceof URLSearchParams,e));for(let[a,n]of Object.entries(t))r.set(a,n);return r}function St({within:e,children:t,onClick:r,...a}){let n=g(),s=n===xt(a)||e!==void 0&&(n===e||n.startsWith(`${e}/`)),i=$t(null);return d($,{...a,"aria-current":s?"page":void 0,onClick:l=>{i.current=l.currentTarget,r?.(l)},children:[t,d(Lt,{anchor:i,current:s})]})}function Lt({anchor:e,current:t}){let{pending:r}=H();return bt(()=>{e.current&&(r&&!t?e.current.setAttribute("data-pending",""):e.current.removeAttribute("data-pending"))},[r,t]),null}function Pt({class:e,icon:t,children:r}){return d("button",{type:"button",class:e,onClick:()=>void gt().catch(()=>location.reload()),children:[t?d(_,{d:Z}):null,r]})}var Ct=3600*24*365,It=[["light","Light",N],["dark","Dark",U],["system","System",V]];function Tt({theme:e}){let[t,r]=D(e),a=n=>{let s=document.documentElement;n==="system"?delete s.dataset.theme:s.dataset.theme=n,document.cookie=`theme=${n}; path=/; max-age=${Ct}; samesite=lax`,r(n)};return d(ce,{children:It.map(([n,s,i])=>d("button",{type:"button",class:"pop-item",role:"menuitemradio","aria-checked":t===n,onClick:()=>a(n),children:[d(_,{d:i}),d("span",{class:"grow",children:s}),d(_,{d:k})]},n))})}import{$1a as de}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as u}from"./shared-init-88cce66bb3cfe1e5.js";import{$1c as At,$1k as Ht,$1m as ue}from"./shared-init-8f2ac936c95a7f7b.js";function Rt({summary:e,summaryClass:t,label:r,align:a="right",wide:n,class:s,children:i}){let l=ue();return u("span",{class:`menu ${a}${s?` ${s}`:""}`,children:[u("button",{popovertarget:l,type:"button",class:t,"aria-label":r,title:r,children:e}),u("div",{id:l,class:n?"pop wide":"pop",popover:"auto",onBeforeToggle:p=>{if(p.newState!=="open")return;let w=p.currentTarget,o=w.parentElement?.querySelector("button")?.getBoundingClientRect();if(!o)return;let c=a==="up"?o.top-20:window.innerHeight-o.bottom-20;w.style.maxHeight=`${Math.max(120,Math.round(c))}px`},onClick:p=>{p.target.closest("a, button:not([data-keep])")&&p.currentTarget.hidePopover()},children:i})]})}function jt({icon:e,title:t,sub:r,href:a,onClick:n,danger:s}){let i=u(At,{children:[e?u(de,{d:e}):null,u("span",{class:"grow",children:[t,r?u("small",{children:r}):null]})]}),l=`pop-item${r?" rich":""}${s?" danger":""}`;return a?u("a",{class:l,href:a,.../^https?:\/\//.test(a)?{target:"_blank",rel:"noreferrer"}:{},children:i}):u("button",{type:"button",class:l,onClick:n,children:i})}function Ot({label:e,children:t}){let r=ue(),a=Ht(null),n=s=>i=>{i.pointerType==="mouse"&&a.current.togglePopover(s)};return u("span",{class:"more",onPointerEnter:n(!0),onPointerLeave:n(!1),children:[u("button",{popovertarget:r,type:"button",children:e}),u("div",{id:r,ref:a,class:"more-list scroll-box",popover:"auto",children:t})]})}function Nt({on:e,onPick:t,children:r}){return u("button",{type:"button",role:"menuitemradio","aria-checked":e,class:e?"pop-item on":"pop-item",onClick:t,children:[u("span",{class:"grow",children:r}),e?u(de,{d:k}):null]})}export{ne as $0a,oe as $0b,Fe as $0c,le as $0d,Ye as $0e,yt as $1a,kt as $1b,_t as $1c,Et as $1d,St as $1e,Pt as $1f,Tt as $1g,$ as $2a,A as $3a,g as $3b,Pe as $3c,H as $3d,Rt as $4a,jt as $4b,Ot as $4c,Nt as $4d,wt as $5A,vt as $5B,Ge as $5a,Qe as $5b,et as $5c,j as $5d,tt as $5e,O as $5f,N as $5g,U as $5h,V as $5i,at as $5j,Z as $5k,rt as $5l,nt as $5m,B as $5n,st as $5o,k as $5p,ot as $5q,it as $5r,lt as $5s,ct as $5t,dt as $5u,ut as $5v,ht as $5w,pt as $5x,ft as $5y,mt as $5z,b as $6a,I as $6b};
@@ -1 +0,0 @@
1
- import{a as C}from"./confirm-f2fe4ba9905a89c6.js";import{a as w}from"./card-e0901d68b79dfa93.js";import{b as k}from"./field-901f1f35c18c39c9.js";import{g as f}from"./format-eb03fc9d9744d960.js";import{$3a as g}from"./shared-init-ffb3397e494137c9.js";import{$4a as y,$4b as m}from"./shared-init-ffb3397e494137c9.js";import{$5q as h}from"./shared-init-ffb3397e494137c9.js";import{$1a as b}from"./shared-init-88cce66bb3cfe1e5.js";import{$0b as c}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as t}from"./shared-init-88cce66bb3cfe1e5.js";import{$1c as d,$1g as l}from"./shared-init-8f2ac936c95a7f7b.js";function T(e){if(!e||typeof e!="object")return{};let s=e,r=(...i)=>i.map(o=>s[o]).find(o=>typeof o=="string");return{id:r("id"),action:r("kind","tool"),reason:r("summary","reason")}}var E={approve:"Decision sent.",archive:"Archived.",ask:"Question sent.",cancel:"Stop requested.",continue:"Sent.",steer:"Steer sent."};function A(e){let[s,r]=l(""),[i,o]=l("");return{error:s,outcome:i,setError:r,run:async(n,a={})=>{r(""),o("");try{return n==="approve"?await c.tasks.approve(e,a.approvalId??"",a.decision??"decline"):n==="ask"?await c.tasks.ask(e,a.question??""):n==="continue"||n==="steer"?await c.tasks[n](e,a.text??""):await c.tasks[n](e),o(E[n]),!0}catch(p){return r(f(p)),!1}}}}function D({error:e,outcome:s}){return e?t(k,{value:e}):t("span",{class:"flash",role:"status",children:s})}function Q({task:e,live:s}){let r=g(),i=A(e.task.id),[o,u]=l(!!e.archivedAt),[n,a]=l(),p=()=>{a("busy"),i.setError(""),c.tasks.delete(e.task.id).then(()=>r.push("/dash/tasks")).catch(x=>{a(void 0),i.setError(f(x))})},v=()=>void i.run("archive").then(u);return t(d,{children:[t(D,{...i}),s?t("button",{type:"button",class:"btn outline",onClick:()=>void i.run("cancel"),children:"Stop"}):o?null:t("button",{type:"button",class:"btn outline archive",onClick:v,children:"Archive"}),t(y,{summary:t(b,{d:h}),summaryClass:"icon-btn",label:"More actions",children:[s&&!o?t(m,{title:"Archive",onClick:v}):null,t(m,{title:"Delete",danger:!0,onClick:()=>a("ask")})]}),t(C,{open:!!n,title:"Delete this task?",body:"Its conversation, activity and diff go with it.",confirmLabel:"Delete",busy:n==="busy",onConfirm:p,onClose:()=>a(void 0)})]})}function j({task:e}){let s=A(e.task.id),{id:r,action:i,reason:o}=T(e.approval),u=n=>void s.run("approve",{approvalId:r,decision:n});return t(w,{tone:"accent",title:"Approval needed",actions:e.task.flow==="default"?t(d,{children:[t(D,{...s}),t("button",{type:"button",class:"btn outline sm",onClick:()=>u("decline"),children:"Deny"}),t("button",{type:"button",class:"btn sm",onClick:()=>u("accept"),children:"Allow"})]}):void 0,children:t("div",{class:"body",children:[t("p",{class:"muted",children:"The task is paused until someone decides."}),t("p",{class:"approval",children:["The agent wants to run ",t("b",{children:i??"a tool"}),"."]}),o?t("p",{class:"muted",children:o}):null]})})}export{T as a,A as b,Q as c,j as d};
@@ -1 +0,0 @@
1
- var i=[["","Recent"],["active","Active"],["waiting","Needs approval"],["running","Running"],["queued","Queued"],["completed","Completed"],["failed","Failed"],["cancelled","Cancelled"],["archived","Archived"]];function a(t){let{status:e,...s}=t;return e==="archived"?{...s,archived:!0}:{...s,status:e}}var r=[["","All sources"],["dashboard","Dashboard"],["cli","CLI"],["schedule","Schedule"]],o=t=>(r.find(([e])=>e===t)??[t,t])[1],c=t=>t.status==="queued"||t.status==="running"||t.status==="waiting",d=t=>t.task.name?.trim()||t.task.prompt?.trim()||t.task.event?.text?.trim()||`${t.task.event?.type??"task"} on ${t.task.agent}`,l=t=>t.split(/[\\/]/).filter(Boolean).at(-1)??t;export{i as a,a as b,r as c,o as d,c as e,d as f,l as g};
@@ -1,3 +0,0 @@
1
- "use client";import{b as jt,c as Vt,d as Kt}from"./heads-f3bcd289663d48fa.js";import{b as Lt,c as Wt,d as Nt}from"./task-actions-8e1d93c788d001df.js";import"./confirm-f2fe4ba9905a89c6.js";import{a as Ft}from"./badge-676b01e0c615bf7b.js";import{a as $t,b as Ht}from"./instructions-052fa45a9daf6db6.js";import{d as et,e as st,f as J,g as Dt}from"./task-fa8b82e95e771c4a.js";import{a as U,c as tt}from"./card-e0901d68b79dfa93.js";import"./field-901f1f35c18c39c9.js";import{a as pt,b as gt,d as H,g as vt}from"./format-eb03fc9d9744d960.js";import"./sentinel-c972a33dc69a5135.js";import{$0a as zt,$0c as It,$0d as Rt}from"./shared-init-ffb3397e494137c9.js";import{$3c as At}from"./shared-init-ffb3397e494137c9.js";import"./wular-pnext-246221e985d863e5-0.js";import{$2a as _t}from"./shared-init-ffb3397e494137c9.js";import"./shared-init-ffb3397e494137c9.js";import{$4a as Ct}from"./shared-init-ffb3397e494137c9.js";import{$5A as Ot,$5a as bt,$5b as Z,$5c as St,$5e as B,$5j as yt,$5l as wt,$5o as kt,$5p as V,$5s as Tt,$5t as Et,$5w as xt,$5x as Mt}from"./shared-init-ffb3397e494137c9.js";import{$1a as L}from"./shared-init-88cce66bb3cfe1e5.js";import{$0a as mt,$0b as Q}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as a}from"./shared-init-88cce66bb3cfe1e5.js";import"./shared-init-246221e985d863e5-2.js";import"./shared-init-246221e985d863e5-2.js";import{$1c as D,$1g as E,$1h as dt,$1i as z,$1j as $,$1k as F,$1l as ft}from"./shared-init-8f2ac936c95a7f7b.js";var ee=n=>n.includes("approval")||n==="sidecar-decision"||n==="auto-review";function Y(n,o){return o?n.split(`${o}/`).join("").split(o).join("."):n}var X=class{constructor(o){this.cwd=o}prevKind=null;lastAssistant="";lastTool=null;lastToolText="";lastUsageTotal=0;get lastAssistantMessage(){return this.lastAssistant}reduce(o){let t=o.entry,s=t?String(t.kind??"status"):"line",e={seq:o.seq,at:o.at,kind:"status",title:"",sourceKind:s,separated:!1,tone:"muted"};if(!t)e.kind=o.level==="err"?"error":o.level==="sys"?"status":"line",e.title=Y(o.line,this.cwd),o.level==="err"&&(e.tone="error");else if(s==="usage"){let i=t.tokens;if(!i)return[];let r=this.lastUsageTotal>0,l=i.total-this.lastUsageTotal;if(!r||l<Math.max(2e4,this.lastUsageTotal*.2))return this.lastUsageTotal=Math.max(this.lastUsageTotal,i.total),[];this.lastUsageTotal=i.total,e.kind="usage",e.tokens=i,e.title=`ctx ${Pt(i.input+i.cachedInput)} \xB7 out ${Pt(i.output)}`}else if(ee(s)&&(t.decision||!t.message)){e.kind="approval";let i=s==="sidecar-decision"?"sidecar":s==="auto-review"?"auto-review":"approval",r=t.riskLevel?`(${String(t.riskLevel)} risk)`:"",l=Y(t.summary?String(t.summary):"",this.cwd),c=l.slice(l.indexOf(": ")+2),u=l&&c&&this.lastToolText.includes(c)?"":l,d=u?"":String(t.method??"");e.title=`${[i,String(t.decision??""),r,d].filter(Boolean).join(" ")}${u?` \xB7 ${u}`:""}`,e.detail=Y(t.reason?String(t.reason):"",this.cwd)}else{let i=t.message?String(t.message):String(t.kind??"");if(!i&&!(s==="tool-result"&&(t.exitCode!=null||t.isError)))return[];if(e.title=Y(i,this.cwd),s==="assistant")e.kind="assistant",e.tone=void 0,this.lastAssistant=e.title;else if(s==="error"||s==="steer")e.kind=s,e.tone=s==="error"?"error":"warning";else if(s==="reasoning")e.kind="reasoning",e.durationMs=typeof t.durationMs=="number"?t.durationMs:0;else if(s==="tool")e.kind="tool",this.lastTool=t.tool?String(t.tool):null,this.lastToolText=e.title;else if(s==="tool-result"){e.kind="tool-result",e.exitCode=typeof t.exitCode=="number"?t.exitCode:void 0,e.tone=e.exitCode!==void 0&&e.exitCode!==0||t.isError===!0?"error":"muted",e.durationMs=typeof t.durationMs=="number"?t.durationMs:0;let r=t.tool?String(t.tool):null;r&&r!==this.lastTool&&(e.tool=r)}}return this.prevKind!==null&&(e.separated=["assistant","error","steer"].includes(s)||s==="reasoning"&&this.prevKind!=="reasoning"||s==="tool"&&["assistant","reasoning"].includes(this.prevKind)),this.prevKind=s,[e]}};function Pt(n){return n<1e3?String(n):n<1e6?`${(n/1e3).toFixed(n<1e4?1:0)}k`:`${(n/1e6).toFixed(1)}M`}function qt(n,o,t){let s=new Array(n);return new Proxy(s,{get(e,i,r){if(typeof i=="string"){let l=i.charCodeAt(0);if(l>=48&&l<=57){let c=+i;if(Number.isInteger(c)&&c>=0&&c<n){let u=e[c];if(!u){let d=o[c*2];u=e[c]={index:c,key:t(c),start:d,size:o[c*2+1],end:d+o[c*2+1],lane:0}}return u}}if(i==="length")return n}return Reflect.get(e,i,r)}})}function N(n,o,t){let s=t.initialDeps??[],e,i=!0;function r(){var l;let u=0,d=n();if(!(d.length!==s.length||d.some((w,m)=>s[m]!==w)))return e;s=d;let h=0;return e=o(...d),t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(e),i=!1,e}return r.updateDeps=l=>{s=l},r}function nt(n,o){if(n===void 0)throw new Error(`Unexpected undefined${o?`: ${o}`:""}`);return n}var Bt=(n,o)=>Math.abs(n-o)<1.01,Ut=(n,o,t)=>{let s;return function(...e){n.clearTimeout(s),s=n.setTimeout(()=>o.apply(this,e),t)}};var P,it=()=>{if(P!==void 0)return P;if(typeof navigator>"u")return P=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return P=!0;let n=navigator.maxTouchPoints;return P=navigator.platform==="MacIntel"&&n!==void 0&&n>0};var se=n=>n,ne=n=>{let o=Math.max(n.startIndex-n.overscan,0),s=Math.min(n.endIndex+n.overscan,n.count-1)-o+1,e=new Array(s);for(let i=0;i<s;i++)e[i]=o+i;return e};var q={passive:!0},Jt=(n,o)=>{let t=n.scrollElement;if(!t)return;let s=()=>{o({width:t.innerWidth,height:t.innerHeight})};return s(),t.addEventListener("resize",s,q),()=>{t.removeEventListener("resize",s)}},ie=typeof window>"u"?!0:"onscrollend"in window,oe=(n,o,t)=>{let s=n.scrollElement;if(!s)return;let e=n.targetWindow;if(!e)return;let i=n.options.useScrollendEvent&&ie,r=0,l=i?null:Ut(e,()=>o(r,!1),n.options.isScrollingResetDelay),c=p=>()=>{r=t(s),l?.(),o(r,p)},u=c(!0),d=c(!1);return s.addEventListener("scroll",u,q),i&&s.addEventListener("scrollend",d,q),()=>{s.removeEventListener("scroll",u),i&&s.removeEventListener("scrollend",d)}};var Yt=(n,o)=>oe(n,o,t=>n.options.horizontal?t.scrollX:t.scrollY),re=(n,o,t)=>{if(t.options.useCachedMeasurements){let s=t.indexFromElement(n),e=t.options.getItemKey(s);return t.itemSizeCache.get(e)??t.options.estimateSize(s)}if(o?.borderBoxSize){let s=o.borderBoxSize[0];if(s)return Math.round(s[t.options.horizontal?"inlineSize":"blockSize"])}if(!o){let s=t.indexFromElement(n),e=t.options.getItemKey(s),i=t.itemSizeCache.get(e);if(i!==void 0)return i}return n[t.options.horizontal?"offsetWidth":"offsetHeight"]},le=(n,{adjustments:o=0,behavior:t},s)=>{var e,i;(i=(e=s.scrollElement)==null?void 0:e.scrollTo)==null||i.call(e,{[s.options.horizontal?"left":"top"]:n+o,behavior:t})},Xt=le;var G=class{constructor(o){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var t,s,e;return((e=(s=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:s.now)==null?void 0:e.call(s))??Date.now()},this.observer=(()=>{let t=null,s=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(e=>{e.forEach(i=>{let r=()=>{let l=i.target,c=this.indexFromElement(l);if(!l.isConnected){this.observer.unobserve(l);for(let[u,d]of this.elementsCache)if(d===l){this.elementsCache.delete(u);break}return}this.shouldMeasureDuringScroll(c)&&this.resizeItem(c,this.options.measureElement(l,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()})}));return{disconnect:()=>{var e;(e=s())==null||e.disconnect(),t=null},observe:e=>{var i;return(i=s())==null?void 0:i.observe(e,{box:"border-box"})},unobserve:e=>{var i;return(i=s())==null?void 0:i.unobserve(e)}}})(),this.range=null,this.setOptions=t=>{var s,e;let i={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:se,rangeExtractor:ne,onChange:()=>{},measureElement:re,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(let h in t){let w=t[h];w!==void 0&&(i[h]=w)}let r=this.options,l=null,c=null,u=!1;if(r!==void 0&&r.enabled&&i.enabled&&i.anchorTo==="end"&&this.scrollElement!==null){let h=r.count,w=i.count,m=this.getMeasurements(),k=h>0?((s=m[0])==null?void 0:s.key)??r.getItemKey(0):null,y=h>0?((e=m[h-1])==null?void 0:e.key)??r.getItemKey(h-1):null;if(w!==h||h>0&&w>0&&(i.getItemKey(0)!==k||i.getItemKey(w-1)!==y)){u=!0;let b=h>0?this.getVirtualItemForOffset(this.getScrollOffset())??m[0]:null;b&&(l=[b.key,this.getScrollOffset()-b.start]);let O=i.followOnAppend===!0?"auto":i.followOnAppend||null;O&&w>h&&this.isAtEnd(r.scrollEndThreshold)&&(h===0||i.getItemKey(w-1)!==y)&&(c=O)}}this.options=i,u&&(this.pendingMin=0,this.itemSizeCacheVersion++);let d=!1,p=0;if(l&&this.scrollOffset!==null){let[h,w]=l,m=this.getMeasurements(),{count:k,getItemKey:y}=this.options,v=0;for(;v<k&&y(v)!==h;)v++;if(v<k){let x=m[v];if(x){let b=x.start+w;b!==this.scrollOffset&&(p=b-this.scrollOffset,this.scrollOffset=b,d=!0)}}}(d||c)&&(this.pendingScrollAnchor=[d?l[0]:null,d?l[1]:0,c,p])},this.notify=t=>{var s,e;(e=(s=this.options).onChange)==null||e.call(s,this,t)},this.maybeNotify=N(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;let s=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==s){if(this.cleanup(),!s){this.maybeNotify();return}if(this.scrollElement=s,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(i=>{this.observer.observe(i)}),this.unsubs.push(this.options.observeElementRect(this,i=>{this.scrollRect=i,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(i,r)=>{this._intendedScrollOffset!==null&&Math.abs(i-this._intendedScrollOffset)<1.5&&(i=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0,this.scrollDirection=r?this.getScrollOffset()<i?"forward":"backward":null,this.scrollOffset=i,this.isScrolling=r,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){let i=this.scrollElement,r=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},l=()=>{this._iosTouching=!1,!(!it()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};i.addEventListener("touchstart",r,q),i.addEventListener("touchend",l,q),this.unsubs.push(()=>{i.removeEventListener("touchstart",r),i.removeEventListener("touchend",l),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let e=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,e&&this.scrollElement&&this.options.enabled){let[i,r,l,c]=e;i!==null&&!l&&(it()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?c!==0&&(this._iosDeferredAdjustment+=c):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),l&&this.scrollToEnd({behavior:l})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let t=this.getScrollOffset(),s=this.getMaxScrollOffset();if(t<0||t>s)return;let e=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(t,{adjustments:this.scrollAdjustments+=e,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,s)=>{let e=new Map,i=new Map;for(let r=s-1;r>=0;r--){let l=t[r];if(e.has(l.lane))continue;let c=i.get(l.lane);if(c==null||l.end>c.end?i.set(l.lane,l):l.end<c.end&&e.set(l.lane,!0),e.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((r,l)=>r.end===l.end?r.index-l.index:r.end-l.end)[0]:void 0},this.getMeasurementOptions=N(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,s,e,i,r,l,c)=>(this.prevLanes!==void 0&&this.prevLanes!==l&&(this.lanesChangedFlag=!0),this.prevLanes=l,this.pendingMin=null,{count:t,paddingStart:s,scrollMargin:e,getItemKey:i,enabled:r,lanes:l,laneAssignmentMode:c}),{key:!1}),this.getMeasurements=N(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:t,paddingStart:s,scrollMargin:e,getItemKey:i,enabled:r,lanes:l,laneAssignmentMode:c},u)=>{let d=this.itemSizeCache;if(!r)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(let m of this.laneAssignments.keys())m>=t&&this.laneAssignments.delete(m);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(m=>{this.itemSizeCache.set(m.key,m.size)}));let p=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1),l===1){let m=this.options.gap,k=t*2,y=this._flatMeasurements;if(!y||y.length<k){let b=new Float64Array(k);y&&p>0&&b.set(y.subarray(0,p*2)),y=b,this._flatMeasurements=y}let v;if(p===0)v=s+e;else{let b=p-1;v=y[b*2]+y[b*2+1]+m}for(let b=p;b<t;b++){let O=i(b),A=d.get(O),C=typeof A=="number"?A:this.options.estimateSize(b);y[b*2]=v,y[b*2+1]=C,v+=C+m}let x=qt(t,y,i);return this.measurementsCache=x,x}let h=this.measurementsCache.slice(0,p),w=new Array(l).fill(void 0);for(let m=0;m<p;m++){let k=h[m];k&&(w[k.lane]=m)}for(let m=p;m<t;m++){let k=i(m),y=this.laneAssignments.get(m),v,x,b=c==="estimate"||d.has(k);if(y!==void 0&&this.options.lanes>1){v=y;let _=w[v],W=_!==void 0?h[_]:void 0;x=W?W.end+this.options.gap:s+e}else{let _=this.options.lanes===1?h[m-1]:this.getFurthestMeasurement(h,m);x=_?_.end+this.options.gap:s+e,v=_?_.lane:m%this.options.lanes,this.options.lanes>1&&b&&this.laneAssignments.set(m,v)}let O=d.get(k),A=typeof O=="number"?O:this.options.estimateSize(m),C=x+A;h[m]={index:m,start:x,size:A,end:C,key:k,lane:v},w[v]=m}return this.measurementsCache=h,h},{key:!1,debug:()=>this.options.debug}),this.calculateRange=N(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,s,e,i)=>this.range=t.length>0&&s>0?ae({measurements:t,outerSize:s,scrollOffset:e,lanes:i,flat:i===1&&this._flatMeasurements!=null?this._flatMeasurements:null}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=N(()=>{let t=null,s=null,e=this.calculateRange();return e&&(t=e.startIndex,s=e.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,s]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,s]},(t,s,e,i,r)=>i===null||r===null?[]:t({startIndex:i,endIndex:r,overscan:s,count:e}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=t=>{let s=this.options.indexAttribute,e=t.getAttribute(s);return e?parseInt(e,10):(console.warn(`Missing attribute name '${s}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var s;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;let e=this.scrollState.index??((s=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:s.index);if(e!==void 0&&this.range){let i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,e-i),l=Math.min(this.options.count-1,e+i);return t>=r&&t<=l}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((r,l)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(l))});return}let s=this.indexFromElement(t),e=this.options.getItemKey(s),i=this.elementsCache.get(e);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(e,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(s)&&this.resizeItem(s,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,s)=>{var e,i;if(t<0||t>=this.options.count)return;let r,l,c,u=this._flatMeasurements;if(this.options.lanes===1&&u!==null)c=this.options.getItemKey(t),l=u[t*2],r=u[t*2+1];else{let h=this.measurementsCache[t];if(!h)return;c=h.key,l=h.start,r=h.size}let d=this.itemSizeCache.get(c)??r,p=s-d;if(p!==0){let h=this.options.anchorTo==="end"&&((e=this.scrollState)==null?void 0:e.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,w=h?this.getTotalSize():0,m=((i=this.scrollState)==null?void 0:i.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[t]??{index:t,key:c,start:l,size:r,end:l+r,lane:0},p,this):l<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(c)||this.scrollDirection!=="backward"));(this.pendingMin===null||t<this.pendingMin)&&(this.pendingMin=t),this.itemSizeCache.set(c,s),this.itemSizeCacheVersion++,h?this.applyScrollAdjustment(this.getTotalSize()-w):m&&this.applyScrollAdjustment(p),this.notify(!1)}},this.getVirtualItems=N(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,s)=>{let e=[];for(let i=0,r=t.length;i<r;i++){let l=t[i],c=s[l];e.push(c)}return e},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{let s=this.getMeasurements();if(s.length===0)return;let e=this._flatMeasurements,i=this.options.lanes===1&&e!=null,r=Gt(0,s.length-1,i?l=>e[l*2]:l=>nt(s[l]).start,t);return nt(s[r])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(t=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=t,this.getOffsetForAlignment=(t,s,e=0)=>{if(!this.scrollElement)return 0;let i=this.getSize(),r=this.getScrollOffset();s==="auto"&&(s=t>=r+i?"end":"start"),s==="center"?t+=(e-i)/2:s==="end"&&(t-=i);let l=this.getMaxScrollOffset();return Math.max(Math.min(l,t),0)},this.getOffsetForIndex=(t,s="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));let e=this.getSize(),i=this.getScrollOffset(),r=this.measurementsCache[t];if(!r)return;if(s==="auto")if(r.end>=i+e-this.options.scrollPaddingEnd)s="end";else if(r.start<=i+this.options.scrollPaddingStart)s="start";else return[i,s];if(s==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),s];let l=s==="end"?r.end+this.options.scrollPaddingEnd:r.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,s,r.size),s]},this.scrollToOffset=(t,{align:s="start",behavior:e="auto"}={})=>{let i=this.getOffsetForAlignment(t,s),r=this.now();this.scrollState={index:null,align:s,behavior:e,startedAt:r,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:s="auto",behavior:e="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));let i=this.getOffsetForIndex(t,s);if(!i)return;let[r,l]=i,c=this.now();this.scrollState={index:t,align:l,behavior:e,startedAt:c,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:s="auto"}={})=>{let e=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:s,startedAt:i,lastTargetOffset:e,stableFrames:0},this._scrollToOffset(e,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:t="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:t});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:t})},this.getTotalSize=()=>{var t;let s=this.getMeasurements(),e;if(s.length===0)e=this.options.paddingStart;else if(this.options.lanes===1){let i=s.length-1,r=this._flatMeasurements;r!=null?e=r[i*2]+r[i*2+1]:e=((t=s[i])==null?void 0:t.end)??0}else{let i=Array(this.options.lanes).fill(null),r=s.length-1;for(;r>=0&&i.some(l=>l===null);){let l=s[r];i[l.lane]===null&&(i[l.lane]=l.end),r--}e=Math.max(...i.filter(l=>l!==null))}return Math.max(e-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let t=[];if(this.itemSizeCache.size===0)return t;let s=this.getMeasurements();for(let e of s)e&&this.itemSizeCache.has(e.key)&&t.push({index:e.index,key:e.key,start:e.start,size:e.size,end:e.end,lane:e.lane});return t},this._scrollToOffset=(t,{adjustments:s,behavior:e})=>{this._intendedScrollOffset=t+(s??0),this.options.scrollToFn(t,{behavior:e,adjustments:s},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(o)}applyScrollAdjustment(o,t){o!==0&&(it()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=o:this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:t}))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let s=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,e=s?s[0]:this.scrollState.lastTargetOffset,i=1,r=e!==this.scrollState.lastTargetOffset;if(!r&&Bt(e,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.getScrollOffset()!==e&&this._scrollToOffset(e,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,r){let l=this.getSize()||600,c=Math.abs(e-this.getScrollOffset()),u=this.scrollState.behavior==="smooth"&&c>l;this.scrollState.lastTargetOffset=e,u||(this.scrollState.behavior="auto"),this._scrollToOffset(e,{adjustments:void 0,behavior:u?"smooth":"auto"})}this.scheduleScrollReconcile()}},Gt=(n,o,t,s)=>{for(;n<=o;){let e=(n+o)/2|0,i=t(e);if(i<s)n=e+1;else if(i>s)o=e-1;else return e}return n>0?n-1:0};function ae({measurements:n,outerSize:o,scrollOffset:t,lanes:s,flat:e}){let i=n.length-1,r=e?d=>e[d*2]:d=>n[d].start,l=e?d=>e[d*2]+e[d*2+1]:d=>n[d].end;if(n.length<=s)return{startIndex:0,endIndex:i};let c=Gt(0,i,r,t),u=c;if(s===1)for(;u<i&&l(u)<t+o;)u++;else if(s>1){let d=Array(s).fill(0);for(;u<i&&d.some(h=>h<t+o);){let h=n[u];d[h.lane]=h.end,u++}let p=Array(s).fill(t+o);for(;c>=0&&p.some(h=>h>=t);){let h=n[c];p[h.lane]=h.start,c--}c=Math.max(0,c-c%s),u=Math.min(i,u+(s-1-u%s))}return{startIndex:c,endIndex:u}}var ce={assistant:Tt,tool:Mt,"tool-result":V,approval:yt,status:Z,error:xt,line:Z,reasoning:wt,steer:Et,usage:St},ue=n=>!!n.detail||n.title.length>120||n.title.includes(`
2
- `),he=()=>innerHeight+scrollY>=document.documentElement.scrollHeight-48;function de(n,o){let[,t]=dt(i=>i+1,0),s={count:n,estimateSize:()=>30,overscan:16,getScrollElement:()=>window,observeElementRect:Jt,observeElementOffset:Yt,scrollToFn:Xt,scrollMargin:o.current?o.current.getBoundingClientRect().top+scrollY:0,onChange:()=>t(0)},[e]=E(()=>new G(s));return e.setOptions(s),$(()=>e._didMount(),[]),$(()=>e._willUpdate()),e}function fe({row:n,tz:o,open:t,onToggle:s}){let e=F(null),[i,r]=E(!1);$(()=>{e.current&&r(e.current.scrollWidth>e.current.clientWidth)},[n.title]);let l=t||i||ue(n),c=n.tone==="error",u=n.kind==="tool-result"?[n.tool,n.exitCode!==void 0?`exit ${n.exitCode}`:void 0,n.durationMs?H(n.durationMs):void 0].filter(Boolean).join(" \xB7 "):n.kind==="reasoning"&&n.durationMs?H(n.durationMs):"";return a(l?"button":"div",{type:l?"button":void 0,class:`act ${n.kind}${n.tone?` ${n.tone}`:""}${n.separated?" sep":""}${t?" open":""}`,"aria-expanded":l?t:void 0,onClick:l?s:void 0,children:[a("time",{children:gt(n.at,o)}),a(L,{d:n.kind==="tool-result"&&c?kt:ce[n.kind]}),a("span",{class:"act-text",children:[a("span",{class:"act-title",ref:e,children:n.title}),u?a("span",{class:"act-detail",children:u}):null,n.detail?a("span",{class:"act-detail",children:n.detail}):null]}),l?a(L,{d:B,class:"act-chev"}):null]})}function Qt({rows:n,live:o,tz:t}){let s=F(null),[e,i]=E(new Set),[r,l]=E(o),c=de(n.length,s);return z(()=>{let u=()=>l(he());return addEventListener("scroll",u,{passive:!0}),()=>removeEventListener("scroll",u)},[]),$(()=>{r&&scrollTo({top:document.documentElement.scrollHeight})},[n.length]),n.length?a(D,{children:[a("div",{class:"act-list",ref:s,style:`height:${c.getTotalSize()}px`,role:"log","aria-live":"off",children:c.getVirtualItems().map(u=>{let d=n[u.index];return a("div",{class:"act-slot","data-index":u.index,ref:c.measureElement,style:`transform:translateY(${u.start-c.options.scrollMargin}px)`,children:a(fe,{row:d,tz:t,open:e.has(d.seq),onToggle:()=>i(p=>{let h=new Set(p);return h.delete(d.seq)||h.add(d.seq),h})})},d.seq)})}),r?null:a("button",{type:"button",class:"jump",onClick:()=>{l(!0),scrollTo({top:document.documentElement.scrollHeight})},children:"Jump to latest"})]}):a("p",{class:"act-empty muted",children:o?"Nothing yet. Events appear here as the task runs.":"No activity recorded."})}var me=["Conversation","Activity"];function rt(n,o){if(typeof n=="string")return n;if(!n||typeof n!="object")return o;let t=n;for(let s of["output","answer","message"])if(typeof t[s]=="string")return t[s];return o}var pe=n=>typeof n=="object"&&n!==null&&Array.isArray(n.findings)&&n.findings.every(o=>typeof o=="object"&&o!==null&&"file"in o&&"summary"in o);function ge({findings:n}){return n.length?a("ul",{class:"findings",children:n.map((o,t)=>a("li",{class:`finding ${o.severity}`,children:[a("p",{class:"finding-head",children:[a("span",{class:"sev",children:o.severity}),a("span",{class:"loc",children:[o.file,":",o.line]}),o.category?a("span",{class:"cat",children:o.category}):null]}),a("p",{class:"finding-sum",children:o.summary}),o.failure_scenario?a("p",{class:"finding-why muted",children:o.failure_scenario}):null]},t))}):a("p",{class:"body muted",children:"No findings."})}function ve({value:n}){let o=rt(n,"Result received."),t;if(/^\s*[[{]/.test(o))try{t=JSON.parse(o)}catch{}return pe(t)?a(ge,{findings:t.findings}):t&&typeof t=="object"?a("pre",{class:"body json",children:JSON.stringify(t,null,2)}):a("div",{class:"body md",children:Ht(o)})}function be(){let n=At();return a(Vt,{...jt(n.get("from"),{href:"/dash/tasks",params:{},label:"Tasks"}),back:n.get("back")})}function Se({id:n}){let[o,t]=E(!1),s=o?"Copied":"Copy task id";return z(()=>{if(!o)return;let e=setTimeout(()=>t(!1),1500);return()=>clearTimeout(e)},[o]),a("button",{type:"button",class:o?"copy copied":"copy","aria-label":s,title:s,onClick:()=>void navigator.clipboard.writeText(n).then(()=>t(!0)),children:a(L,{d:o?V:Ot})})}function ye({task:n,tz:o}){let t=st(n),s=n.task.event?.integration??n.task.source,e=n.task.event?.type??(n.task.flow!=="default"?n.task.flow:void 0);return a(Kt,{back:a(be,{}),title:J(n).split(`
3
- `)[0],meta:a(D,{children:[a(zt,{status:n.status}),n.archivedAt?a(Ft,{children:"archived"}):null]}),lead:a(D,{children:[a("span",{class:"task-id",children:n.task.id}),a(Se,{id:n.task.id}),a("span",{children:pt(n.createdAt,o)}),n.startedAt&&n.finishedAt?a("span",{children:H(n.finishedAt-n.startedAt)}):null,a("span",{children:e?`${et(s)} ${e}`:et(s)}),n.task.cwd?a("span",{title:n.task.cwd,children:Dt(n.task.cwd)}):null,a(_t,{class:"agent-link",href:"/dash/agents/[slug]",params:{slug:n.task.agent},search:{from:`/dash/tasks/${n.task.id}`},children:[a(L,{d:bt}),n.task.agent]})]}),actions:a(Wt,{task:n,live:t})})}function we(n){let o=F();return ft(()=>{let t=o.current??={log:new X,rows:[],seen:0};for(let s of n.slice(t.seen))t.rows.push(...t.log.reduce(s));return t.seen=n.length,[...t.rows]},[n])}function ds({initial:n,tz:o}){let[t,s]=E(n),[e,i]=E(n.logs??[]),[r,l]=E((n.logs?.length??0)<ot),[c,u]=E("conversation"),[d,p]=E([]),[h,w]=E(!1),[m,k]=E(0),y=F(t.answer?.length??0),[v,x]=E(!1),[b,O]=E(""),A=F(n.logs?.at(-1)?.seq??-1),C=F(null),_=F(null);z(()=>{let f=_.current,g=f?.closest(".page");if(!f||!g)return;let T=new ResizeObserver(()=>g.style.setProperty("--reply",`${f.offsetHeight}px`));return T.observe(f),()=>T.disconnect()},[t.task.flow]);let W=Lt(t.task.id),I=st(t),lt=t.task.flow==="default",Zt=we(e);z(()=>Rt(t.task.id,t.status,J(t)),[t.status]),z(()=>{W.error&&It("Not sent",W.error)},[W.error]);let at=f=>{let g=f.filter(T=>T.seq>A.current);g.length&&(A.current=g.at(-1).seq,i(T=>[...T,...g]))};z(()=>{I&&lt&&C.current?.focus()},[]),z(()=>{r||Q.tasks.logs(t.task.id,A.current,ot).then(f=>{at(f),f.length<ot&&l(!0)}).catch(f=>O(vt(f)))},[r,e.length]),z(()=>{if(!r||!I)return;let f=new AbortController;return(async()=>{for(;!f.signal.aborted;){try{let T=await Q.tasks.stream(t.task.id,A.current,f.signal);if(!T.ok||!T.body){O("Live updates stopped.");return}O("");for await(let S of mt(T.body))if(S.event==="log")at([JSON.parse(S.data)]);else if(S.event==="status")s(M=>({...M,...JSON.parse(S.data)}));else if(S.event==="end")return}catch{if(f.signal.aborted)return}O("Reconnecting."),await new Promise(T=>setTimeout(T,1e3))}})(),()=>f.abort()},[r,I]);let j=t.turns??[{prompt:t.task.prompt??t.task.event?.text??J(t),result:t.result,error:t.error,finishedAt:t.finishedAt}],ct=async()=>{let f=C.current?.value.trim();if(!f||h)return;let g=I?v?"ask":"steer":"continue";if(g==="ask"){C.current.value="",p(S=>[...S,{kind:g,text:f,turn:j.length-1}]),k(S=>S+1),W.run(g,{question:f}).then(S=>{if(k(M=>M-1),S)return u("conversation");p(M=>M.filter(R=>R.text!==f||R.kind!==g))});return}w(!0),await W.run(g,{text:f}).finally(()=>w(!1))&&(C.current.value="",g==="continue"?s(S=>({...S,status:"queued",result:void 0,error:void 0,finishedAt:void 0,turns:[...j.map((M,R)=>R===j.length-1?{...M,finishedAt:M.finishedAt??Date.now()}:M),{prompt:f}]})):(p(S=>[...S,{kind:g,text:f,turn:j.length-1}]),u("activity")))},ut=f=>{x(f),setTimeout(()=>C.current?.focus())},ke=t.result;return a(D,{children:[a(ye,{task:t,tz:o}),t.fallbacks?.map((f,g)=>a("p",{class:"flash",role:"status",children:[f.engine," was unavailable. ",f.detail," This task is using ",f.next,"."]},g)),a("nav",{class:"tabs",role:"tablist","aria-label":"Task",children:me.map(f=>{let g=f.toLowerCase();return a("button",{type:"button",role:"tab","aria-selected":c===g,"aria-current":c===g?"page":void 0,onClick:()=>u(g),children:f},g)})}),b?a("p",{class:"flash err",role:"status",children:b}):null,c==="activity"?a(Qt,{rows:Zt,live:I,tz:o}):a("div",{class:"convo",children:j.map((f,g)=>{let T=g===j.length-1;return a(D,{children:[a("div",{class:"turn prompt",children:[a("p",{class:"who",children:"Prompt"}),a($t,{class:"prose",children:f.prompt})]}),T&&t.approval?a(Nt,{task:t}):null,T?(t.answer??[]).slice(0,y.current).map((S,M)=>a("div",{class:"turn answer",children:[a("p",{class:"who",children:"Answer"}),a("div",{class:"prose",children:rt(S,"Answer received.")})]},`a${M}`)):null,d.filter(S=>S.turn===g).map((S,M)=>{let R=S.kind==="ask"?d.filter(te=>te.kind==="ask").indexOf(S):-1,ht=R<0?void 0:t.answer?.[y.current+R];return a("div",{class:R<0?"turn you":"turn you qa",children:[a("p",{class:"who",children:S.kind==="ask"?"You asked":"You steered"}),a("div",{class:"prose",children:S.text}),R<0?null:a("div",{class:"answer",children:[a("p",{class:"who",children:"Answer"}),ht===void 0?a(tt,{inline:!0,dots:!0,label:"Answering without interrupting the run."}):a("div",{class:"prose",children:rt(ht,"Answer received.")})]})]},M)}),f.result?a(U,{title:"Result",children:a(ve,{value:f.result})}):T&&I?a(U,{title:"Result",children:a("div",{class:"body waiting",children:a(tt,{inline:!0,dots:!0,label:"The result appears here when the task finishes."})})}):null,f.error?a(U,{tone:"danger",title:"Error",children:a("div",{class:"body prose",children:f.error})}):null]},g)})}),lt?a("form",{ref:_,class:"reply",onSubmit:f=>{f.preventDefault(),ct()},children:a("div",{class:"reply-box",children:[I?a(Ct,{summary:a(D,{children:[v?"Ask":"Steer",a(L,{d:B})]}),summaryClass:"mode",label:"Send as",align:"up",wide:!0,children:[a("button",{type:"button",class:"pop-item rich",role:"menuitemradio","aria-checked":!v,onClick:()=>ut(!1),children:[a("span",{class:"grow",children:["Steer",a("small",{children:"Change course while it works."})]}),a(L,{d:V})]}),a("button",{type:"button",class:"pop-item rich",role:"menuitemradio","aria-checked":v,onClick:()=>ut(!0),children:[a("span",{class:"grow",children:["Ask",a("small",{children:"A question that does not interrupt it."})]}),a(L,{d:V})]})]}):null,a("textarea",{ref:C,rows:1,"aria-label":"Message",autofocus:I,placeholder:I?v?"Ask about the run without interrupting it.":"Steer the agent while it works.":"Continue the conversation.",onKeyDown:f=>{f.key!=="Enter"||f.shiftKey||f.isComposing||(f.preventDefault(),ct())}}),a("button",{class:"btn sm",disabled:h,"aria-busy":h||m>0,children:"Send"})]})}):a("p",{class:"muted no-reply",children:"This flow takes no follow-ups."})]})}var ot=500;export{ot as LOG_CHUNK,ds as TaskView};
@@ -1 +0,0 @@
1
- "use client";import{a as pt}from"./task-actions-8e1d93c788d001df.js";import{a as mt}from"./confirm-f2fe4ba9905a89c6.js";import{a as ut}from"./tail-7c27aab8ba268bd9.js";import{a as it,b as lt,c as ct,d as dt}from"./toolbar-a75d2570f07cbb70.js";import{b as nt,e as rt}from"./paged-bc6fa0c2b9d52ed7.js";import{c as at}from"./badge-676b01e0c615bf7b.js";import{a as ot}from"./composer-d10d4b1d54c4f751.js";import"./connect-repositories-5389ec8701a3deac.js";import"./composer-data-6f7608fed13f3dd7.js";import"./model-options-15c53331a2f28a4f.js";import{a as X}from"./select-7ae25fd8a7d6c338.js";import{a as Y,b as Z,c as tt,d as L,e as q,f as et,g as st}from"./task-fa8b82e95e771c4a.js";import{a as W,b as P}from"./card-e0901d68b79dfa93.js";import{b as x}from"./field-901f1f35c18c39c9.js";import{a as F,c as _,d as G,e as A,g as K}from"./format-eb03fc9d9744d960.js";import"./sentinel-c972a33dc69a5135.js";import{$0a as Q}from"./shared-init-ffb3397e494137c9.js";import"./shared-init-ffb3397e494137c9.js";import"./wular-pnext-246221e985d863e5-0.js";import{$2a as J}from"./shared-init-ffb3397e494137c9.js";import"./shared-init-ffb3397e494137c9.js";import{$4a as M,$4b as b,$4d as $}from"./shared-init-ffb3397e494137c9.js";import{$5i as j,$5q as z,$5x as B,$5y as V,$5z as H}from"./shared-init-ffb3397e494137c9.js";import{$1a as I}from"./shared-init-88cce66bb3cfe1e5.js";import{$0b as f}from"./shared-init-88cce66bb3cfe1e5.js";import{$2a as t}from"./shared-init-88cce66bb3cfe1e5.js";import"./shared-init-246221e985d863e5-2.js";import"./shared-init-246221e985d863e5-2.js";import{$1c as T,$1g as C,$1i as D}from"./shared-init-8f2ac936c95a7f7b.js";var Tt={dashboard:j,cli:B,schedule:V},Ct=4e3;function Rt(e,d,i){let r=Math.round((d-e)/6e4);return r<1?"just now":r<60?`${r} min ago`:r<1440?`${Math.round(r/60)} h ago`:_(e,i)}function At({task:e,back:d,scoped:i,tz:r,now:o,onDone:l,onError:u}){let v=e.startedAt===void 0?void 0:(e.finishedAt??o)-e.startedAt,g=e.task.event?.integration??e.task.source??"dashboard",n=e.task.event?.type??(e.task.flow==="default"?void 0:e.task.flow);return t("tr",{children:[t("td",{children:[t(J,{class:"cover",href:"/dash/tasks/[id]",params:{id:e.task.id},search:d?{back:d}:void 0,children:et(e)}),t("span",{class:"sub",children:[i?null:`${e.task.agent} \xB7 `,t(at,{value:e.task.id}),n?` \xB7 ${n}`:null,e.task.cwd?t("span",{title:e.task.cwd,children:` \xB7 ${st(e.task.cwd)}`}):null]})]}),t("td",{children:t(Q,{status:e.status})}),t("td",{children:t("span",{class:"source",title:L(g),children:[t(I,{d:Tt[g]??H}),L(g)]})}),t("td",{class:"when",title:F(e.createdAt,r),children:Rt(e.createdAt,o,r)}),t("td",{class:"num",children:[G(v),t("span",{class:"row-acts",children:t(St,{task:e,onDone:l,onError:u})})]})]})}function St({task:e,onDone:d,onError:i}){let[r,o]=C(),l=(u,v)=>{i(""),(u==="approve"?f.tasks.approve(e.task.id,pt(e.approval).id??"",v??"decline"):u==="delete"?f.tasks.delete(e.task.id):f.tasks[u](e.task.id)).then(()=>d(u),n=>i(K(n))).finally(()=>o(void 0))};return t(T,{children:[t(M,{summary:t(I,{d:z}),summaryClass:"icon-btn",label:"Task actions",align:"right",children:[e.approval?t(b,{title:"Approve",onClick:()=>l("approve","accept")}):null,e.approval?t(b,{title:"Deny",onClick:()=>l("approve","decline")}):null,q(e)?t(b,{title:"Stop",onClick:()=>l("cancel")}):null,e.archivedAt?null:t(b,{title:"Archive",onClick:()=>l("archive")}),t(b,{title:"Delete",danger:!0,onClick:()=>o("ask")})]}),t(mt,{open:!!r,title:"Delete this task?",body:"Its conversation, activity and diff go with it.",confirmLabel:"Delete",busy:r==="busy",onConfirm:()=>{o("busy"),l("delete")},onClose:()=>o(void 0)})]})}function Zt({first:e,platforms:d,agents:i=[],filters:r,agent:o,head:l,missing:u,tz:v,now:g}){let{values:n,set:h,query:a}=lt(r),ft=it(r),gt=o?`&agent=${encodeURIComponent(o)}`:"",ht=o?`/dash/agents/${encodeURIComponent(o)}/tasks`:"/dash/tasks",kt=a||o?`${ht}${a?`?${a}`:""}`:void 0,y={limit:rt,summary:!0,counts:!0,...Z(n),agent:o??n.agent},w=nt({name:`tasks${gt}`,fetchPage:s=>f.tasks.list({...y,cursor:s}),query:a,first:e,initial:ft}),[S,O]=C({rows:{}}),[bt,N]=C([]);D(()=>N([]),[a]);let[vt,yt]=C(""),E=w.rows.filter(s=>!bt.includes(s.task.id)).map(s=>S.rows[s.task.id]??s),m=(S.query===a?S.counts:void 0)??w.meta.counts,U=E.some(q)||!!m?.active;return D(()=>{if(!U)return;let s=c=>Object.fromEntries(c.map(k=>[k.task.id,k])),p=setInterval(()=>{Promise.all([f.tasks.list({...y,cursor:""}),y.status?f.tasks.list({...y,status:void 0,counts:!1,cursor:""}):void 0]).then(([c,k])=>O(R=>({rows:{...R.rows,...s(k?.items??[]),...s(c.items)},counts:c.counts,query:a}))).catch(()=>{})},Ct);return()=>clearInterval(p)},[U,a,o]),t(T,{children:[t(dt,{head:l,children:[t(ct,{value:n.q,label:"Search tasks",onInput:s=>h("q",s,250)}),t(X,{label:"Status",value:n.status,options:Y,onChange:s=>h("status",s)}),t(M,{class:"filter-more",label:"More filters",summaryClass:`field-btn${n.source||n.agent?" on":""}`,summary:"Filter",children:[t("p",{class:"pop-label",children:"Source"}),t("div",{role:"group","aria-label":"Source",children:[...tt,...d].map(([s,p])=>t($,{on:n.source===s,onPick:()=>h("source",s),children:p},s))}),o?null:t(T,{children:[t("p",{class:"pop-label",children:"Agent"}),t("div",{role:"group","aria-label":"Agent",children:[["","All agents"],...n.agent&&!i.some(([s])=>s===n.agent)?[[n.agent,n.agent]]:[],...i].map(([s,p])=>t($,{on:n.agent===s,onPick:()=>h("agent",s),children:p},s))})]})]})]}),u?t(ot,{}):null,t(W,{title:"Tasks",count:m?A(m.all):void 0,actions:m?t(T,{children:[t(x,{value:vt}),m.active?t("button",{type:"button",class:"badge acc",onClick:()=>h("status","active"),children:[A(m.active)," active"]}):null,m.waiting?t("button",{type:"button",class:"badge warn",onClick:()=>h("status","waiting"),children:[A(m.waiting)," awaiting approval"]}):null]}):void 0,children:[E.length?t("div",{class:"table-scroll",children:t("table",{class:"rows tasks stacked","aria-busy":w.stale,children:[t("thead",{children:t("tr",{children:[t("th",{children:"Task"}),t("th",{children:"Status"}),t("th",{children:"Source"}),t("th",{children:"Created"}),t("th",{class:"num",children:"Duration"})]})}),t("tbody",{children:E.map(s=>t(At,{task:s,back:kt,scoped:!!o,tz:v,now:g,onError:yt,onDone:p=>{(p==="delete"||p==="archive"&&n.status!=="archived")&&N(c=>[...c,s.task.id]),f.tasks.list({...y,cursor:""}).then(c=>O(k=>({rows:{...k.rows,...Object.fromEntries(c.items.map(R=>[R.task.id,R]))},counts:c.counts,query:a}))).catch(()=>{})}},s.task.id))})]})}):w.stale?null:a?t(P,{title:"No tasks match",children:"Try another search or filter."}):t(P,{title:"No tasks yet",children:o?"Tasks appear here as this agent runs.":"Type what you want done in the box above and press Enter. Tasks from the dashboard, the CLI and platforms like GitHub show up here, newest first."}),t(ut,{noun:"tasks",...w})]})]})}export{Zt as TasksList};
@@ -1 +0,0 @@
1
- .app{--side: 232px;display:grid;grid-template-columns:var(--side) minmax(0,1fr);grid-template-rows:56px 1fr;min-height:100vh}.top{grid-column:1 / -1;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px 0 20px;background:var(--bg);border-bottom:1px solid var(--line2)}.top-l,.top-r{display:flex;align-items:center;gap:10px;min-width:0}.lockup{display:grid}.lockup small{font-weight:400;font-size:8px;line-height:8px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.side{position:sticky;top:56px;z-index:5;height:calc(100vh - 56px);display:flex;flex-direction:column;justify-content:space-between;padding:16px 12px;border-right:1px solid var(--line)}.side nav{display:grid;gap:2px}.side nav a{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;color:var(--muted);border-left:2px solid transparent}.side nav a:hover{color:var(--fg);background:var(--wash)}.side nav a[aria-current]{color:var(--fg);background:var(--wash2);border-left-color:var(--deep)}.side nav .n{margin-left:auto;background:var(--accbg);color:var(--acc)}.dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--warn)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--okbg)}.server>button{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);font-size:12px;text-align:left;cursor:pointer}.server>button:hover{background:var(--wash)}.server>button .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.server .ic{color:var(--dim);width:14px}.server .pop{width:max-content;max-width:calc(100vw - 32px)}.server .kv dd{white-space:nowrap}.pop-head{display:flex;align-items:center;gap:12px;padding:8px 10px 12px;min-width:0}.pop-head b,.pop-head small{display:block;overflow:hidden;text-overflow:ellipsis}.pop-head small,.pop-item small{color:var(--muted);font-size:11.5px}.org,.avatar{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;background:var(--wash2);font-weight:700;font-size:12px}.avatar{width:32px;height:32px}.avatar-btn{display:grid;place-items:center;width:32px;height:32px;background:var(--fg);color:var(--bg);font-weight:700;cursor:pointer}.kv{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.pop .kv{padding:6px 10px 10px;font-size:12px}.theme .ic.sun,.theme .ic.moon,.theme .ic.sys{display:none}:root[data-theme=light] .theme .ic.sun,:root[data-theme=dark] .theme .ic.moon,:root:not([data-theme]) .theme .ic.sys{display:block}.app>.auth{position:fixed;inset:0;z-index:60;overflow:auto;background:var(--bg)}@media(max-width:760px){.app{grid-template-columns:minmax(0,1fr)}.top{padding:0 10px}.side{position:fixed;top:56px;left:0;bottom:0;height:auto;width:min(280px,84vw);z-index:30;background:var(--bg);border-right:1px solid var(--line2);transform:translate(-100%);transition:transform .2s}}.side-foot{display:grid;gap:8px}.side-toggle{justify-self:end;color:var(--dim)}.side-min .side-toggle{justify-self:center}.app.side-min{--side: 60px}.side-min .top .lockup{display:none}.side-min .side{padding-inline:10px}.side-min .side nav a{justify-content:center;gap:0;padding:0;font-size:0}.side-min .side nav .n{display:none}.side-min .server>button{justify-content:center;padding:10px 0}.side-min .server>button :is(.grow,.ic){display:none}@media(max-width:760px){.side-toggle{display:none}.app.side-min{grid-template-columns:minmax(0,1fr)}}.auth{display:grid;min-height:100vh}.auth-side{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:40px 24px 72px}.auth-frame{width:100%;max-width:440px}.auth-frame .bar{min-height:32px;font-size:10px}.auth-frame .brand{font-size:12px}.tag{margin-left:auto;padding:1px 8px;background:var(--deep);color:#fff}.auth-body{display:grid;gap:14px;padding:28px 24px 26px}.auth-body h1{font-size:22px}.auth-body .lead{margin:0 0 6px}.auth-body form{display:grid;gap:14px}.auth-links{position:absolute;bottom:24px;left:0;right:0;display:flex;justify-content:center;gap:24px;font-size:9px;color:var(--muted)}.auth-links a:hover{color:var(--fg)}.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.brand .coder-mark{flex:none;position:relative;top:-1px;width:16px;height:16px;fill:currentColor}th .ic{width:12px;height:12px}.scrim{display:none}@media(max-width:760px){.drawer .side{transform:none}.scrim{display:block;position:fixed;inset:56px 0 0;z-index:25;background:#0b0c1073;opacity:0;pointer-events:none;transition:opacity .2s}.drawer .scrim{opacity:1;pointer-events:auto}}@media(min-width:761px){.only-m{display:none}}.pop,.more-list{position:fixed;inset:auto;margin:0;padding:6px;white-space:normal;max-height:calc(100vh - 24px);overflow-y:auto;border:1px solid var(--line2);background:var(--tile);color:inherit;box-shadow:0 12px 32px #0000002e}:where(.menu,.more)>button{padding:0;border:0;background:none;color:inherit;cursor:pointer}.menu>.pop,.more>.more-list{inset:0;margin:auto}@supports (anchor-scope: --menu){.menu,.more{anchor-scope:--menu}:where(.menu,.more)>button{anchor-name:--menu}.menu>.pop,.more>.more-list{position-anchor:--menu;position-try-fallbacks:flip-block;inset:anchor(bottom) auto auto anchor(left);margin:8px 0 0}.menu.right>.pop,.more>.more-list{inset:anchor(bottom) anchor(right) auto auto}.menu.up>.pop{inset:auto anchor(right) anchor(top) anchor(left);margin:0 0 8px}}.pop{z-index:40;min-width:180px}.pop:has(.pop-label,.pop-item.rich,.pop-row){min-width:260px}.menu.up>.pop{min-width:0}.pop.wide{width:min(320px,calc(100vw - 32px))}.pop hr{border:0;border-top:1px solid var(--line);margin:6px 0}.pop-label{padding:8px 10px 4px;font-size:10px;color:var(--dim);border-top:1px solid var(--line)}.pop-head+.pop-label,.pop .pop-label:first-child{border-top:0}.pop-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;background:none;text-align:left;cursor:pointer}.pop-item:hover{background:var(--wash)}.pop-item.danger:hover{background:var(--badbg);color:var(--bad)}.pop-item:disabled{cursor:default}.pop-item:disabled:hover{background:none}.pop-item small{display:block}.pop-item.rich{align-items:flex-start}.pop-item.rich .ic{margin-top:2px}.pop-item[role=menuitemradio]>.ic:last-child{visibility:hidden}.pop-item[role=menuitemradio][aria-checked=true]>.ic:last-child{visibility:visible;color:var(--acc)}.pop form{margin:0}.pop-note{padding:0 10px 8px;font-size:11.5px;color:var(--muted)}.more{flex:none}.more>button{padding:0 7px;border:1px solid var(--line2);color:var(--fg);font-size:11.5px;white-space:nowrap}.more:hover>button,.more:has(:popover-open)>button{border-color:var(--acc);color:var(--acc)}.more-list{--max: 220px;z-index:45;min-width:220px}.more-list:before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.more-list:popover-open{display:grid;gap:4px}@media(max-width:760px){.pop.wide{min-width:min(320px,calc(100vw - 32px))}}.pop .add-models{margin-top:4px;color:var(--muted)}.pop .add-models .ic{width:14px;height:14px}.toasts{position:fixed;top:16px;right:16px;bottom:16px;z-index:50;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;width:min(340px,calc(100vw - 32px));pointer-events:none}.toast{position:relative;display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line2);background:var(--tile);box-shadow:0 12px 32px #0000002e;pointer-events:auto;cursor:pointer;animation:toast-in .15s ease-out}.toast:hover{background:linear-gradient(var(--wash),var(--wash)),var(--tile)}.toast:has(.cover:focus-visible){outline:2px solid var(--acc);outline-offset:2px}.toast-head{display:flex;align-items:center;gap:10px;margin:0}.toast-head .cover{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg);text-decoration:none;outline:none}.toast-line{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.toast.err .toast-head .cover{color:var(--bad)}.toast.err .toast-line{white-space:normal}@keyframes toast-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.st{display:inline-flex;align-items:baseline;gap:7px;padding:2px 8px;font-size:10px;letter-spacing:.14em;white-space:nowrap;color:var(--muted);background:var(--wash)}.st i{align-self:center;width:7px;height:7px;border-radius:50%;background:currentColor}.st.running{color:var(--acc);background:var(--accbg)}.st.running i{width:9px;height:9px;background:none;border:1.5px solid currentColor;border-top-color:transparent;animation:spin 1s linear infinite}.st.waiting{color:var(--warn);background:var(--warnbg)}.st.completed{color:var(--ok);background:var(--okbg)}.st.failed{color:var(--bad);background:var(--badbg)}.st.queued i,.st.cancelled i{background:none;border:1.5px solid currentColor}.stats .st{justify-self:start}
@@ -1 +0,0 @@
1
- .app{--side: 232px;display:grid;grid-template-columns:var(--side) minmax(0,1fr);grid-template-rows:56px 1fr;min-height:100vh}.top{grid-column:1 / -1;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px 0 20px;background:var(--bg);border-bottom:1px solid var(--line2)}.top-l,.top-r{display:flex;align-items:center;gap:10px;min-width:0}.lockup{display:grid}.lockup small{font-weight:400;font-size:8px;line-height:8px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.side{position:sticky;top:56px;z-index:5;height:calc(100vh - 56px);display:flex;flex-direction:column;justify-content:space-between;padding:16px 12px;border-right:1px solid var(--line)}.side nav{display:grid;gap:2px}.side nav a{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;color:var(--muted);border-left:2px solid transparent}.side nav a:hover{color:var(--fg);background:var(--wash)}.side nav a[aria-current]{color:var(--fg);background:var(--wash2);border-left-color:var(--deep)}.side nav .n{margin-left:auto;background:var(--accbg);color:var(--acc)}.dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--warn)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--okbg)}.server>button{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);font-size:12px;text-align:left;cursor:pointer}.server>button:hover{background:var(--wash)}.server>button .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.server .ic{color:var(--dim);width:14px}.server .pop{width:max-content;max-width:calc(100vw - 32px)}.server .kv dd{white-space:nowrap}.pop-head{display:flex;align-items:center;gap:12px;padding:8px 10px 12px;min-width:0}.pop-head b,.pop-head small{display:block;overflow:hidden;text-overflow:ellipsis}.pop-head small,.pop-item small{color:var(--muted);font-size:11.5px}.org,.avatar{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;background:var(--wash2);font-weight:700;font-size:12px}.avatar{width:32px;height:32px}.avatar-btn{display:grid;place-items:center;width:32px;height:32px;background:var(--fg);color:var(--bg);font-weight:700;cursor:pointer}.kv{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.pop .kv{padding:6px 10px 10px;font-size:12px}.theme .ic.sun,.theme .ic.moon,.theme .ic.sys{display:none}:root[data-theme=light] .theme .ic.sun,:root[data-theme=dark] .theme .ic.moon,:root:not([data-theme]) .theme .ic.sys{display:block}.app>.auth{position:fixed;inset:0;z-index:60;overflow:auto;background:var(--bg)}@media(max-width:760px){.app{grid-template-columns:minmax(0,1fr)}.top{padding:0 10px}.side{position:fixed;top:56px;left:0;bottom:0;height:auto;width:min(280px,84vw);z-index:30;background:var(--bg);border-right:1px solid var(--line2);transform:translate(-100%);transition:transform .2s}}.side-foot{display:grid;gap:8px}.side-toggle{justify-self:end;color:var(--dim)}.side-min .side-toggle{justify-self:center}.app.side-min{--side: 60px}.side-min .top .lockup{display:none}.side-min .side{padding-inline:10px}.side-min .side nav a{justify-content:center;gap:0;padding:0;font-size:0}.side-min .side nav .n{display:none}.side-min .server>button{justify-content:center;padding:10px 0}.side-min .server>button :is(.grow,.ic){display:none}@media(max-width:760px){.side-toggle{display:none}.app.side-min{grid-template-columns:minmax(0,1fr)}}.auth{display:grid;min-height:100vh}.auth-side{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:40px 24px 72px}.auth-frame{width:100%;max-width:440px}.auth-frame .bar{min-height:32px;font-size:10px}.auth-frame .brand{font-size:12px}.tag{margin-left:auto;padding:1px 8px;background:var(--deep);color:#fff}.auth-body{display:grid;gap:14px;padding:28px 24px 26px}.auth-body h1{font-size:22px}.auth-body .lead{margin:0 0 6px}.auth-body form{display:grid;gap:14px}.auth-links{position:absolute;bottom:24px;left:0;right:0;display:flex;justify-content:center;gap:24px;font-size:9px;color:var(--muted)}.auth-links a:hover{color:var(--fg)}.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.brand .coder-mark{flex:none;position:relative;top:-1px;width:16px;height:16px;fill:currentColor}th .ic{width:12px;height:12px}.scrim{display:none}@media(max-width:760px){.drawer .side{transform:none}.scrim{display:block;position:fixed;inset:56px 0 0;z-index:25;background:#0b0c1073;opacity:0;pointer-events:none;transition:opacity .2s}.drawer .scrim{opacity:1;pointer-events:auto}}@media(min-width:761px){.only-m{display:none}}.pop,.more-list{position:fixed;inset:auto;margin:0;padding:6px;white-space:normal;max-height:calc(100vh - 24px);overflow-y:auto;border:1px solid var(--line2);background:var(--tile);color:inherit;box-shadow:0 12px 32px #0000002e}:where(.menu,.more)>button{padding:0;border:0;background:none;color:inherit;cursor:pointer}.menu>.pop,.more>.more-list{inset:0;margin:auto}@supports (anchor-scope: --menu){.menu,.more{anchor-scope:--menu}:where(.menu,.more)>button{anchor-name:--menu}.menu>.pop,.more>.more-list{position-anchor:--menu;position-try-fallbacks:flip-block;inset:anchor(bottom) auto auto anchor(left);margin:8px 0 0}.menu.right>.pop,.more>.more-list{inset:anchor(bottom) anchor(right) auto auto}.menu.up>.pop{inset:auto anchor(right) anchor(top) anchor(left);margin:0 0 8px}}.pop{z-index:40;min-width:180px}.pop:has(.pop-label,.pop-item.rich,.pop-row){min-width:260px}.menu.up>.pop{min-width:0}.pop.wide{width:min(320px,calc(100vw - 32px))}.pop hr{border:0;border-top:1px solid var(--line);margin:6px 0}.pop-label{padding:8px 10px 4px;font-size:10px;color:var(--dim);border-top:1px solid var(--line)}.pop-head+.pop-label,.pop .pop-label:first-child{border-top:0}.pop-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;background:none;text-align:left;cursor:pointer}.pop-item:hover{background:var(--wash)}.pop-item.danger:hover{background:var(--badbg);color:var(--bad)}.pop-item:disabled{cursor:default}.pop-item:disabled:hover{background:none}.pop-item small{display:block}.pop-item.rich{align-items:flex-start}.pop-item.rich .ic{margin-top:2px}.pop-item[role=menuitemradio]>.ic:last-child{visibility:hidden}.pop-item[role=menuitemradio][aria-checked=true]>.ic:last-child{visibility:visible;color:var(--acc)}.pop form{margin:0}.pop-note{padding:0 10px 8px;font-size:11.5px;color:var(--muted)}.more{flex:none}.more>button{padding:0 7px;border:1px solid var(--line2);color:var(--fg);font-size:11.5px;white-space:nowrap}.more:hover>button,.more:has(:popover-open)>button{border-color:var(--acc);color:var(--acc)}.more-list{--max: 220px;z-index:45;min-width:220px}.more-list:before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.more-list:popover-open{display:grid;gap:4px}@media(max-width:760px){.pop.wide{min-width:min(320px,calc(100vw - 32px))}}.pop .add-models{margin-top:4px;color:var(--muted)}.pop .add-models .ic{width:14px;height:14px}.toasts{position:fixed;top:16px;right:16px;bottom:16px;z-index:50;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;width:min(340px,calc(100vw - 32px));pointer-events:none}.toast{position:relative;display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line2);background:var(--tile);box-shadow:0 12px 32px #0000002e;pointer-events:auto;cursor:pointer;animation:toast-in .15s ease-out}.toast:hover{background:linear-gradient(var(--wash),var(--wash)),var(--tile)}.toast:has(.cover:focus-visible){outline:2px solid var(--acc);outline-offset:2px}.toast-head{display:flex;align-items:center;gap:10px;margin:0}.toast-head .cover{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg);text-decoration:none;outline:none}.toast-line{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.toast.err .toast-head .cover{color:var(--bad)}.toast.err .toast-line{white-space:normal}@keyframes toast-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.st{display:inline-flex;align-items:baseline;gap:7px;padding:2px 8px;font-size:10px;letter-spacing:.14em;white-space:nowrap;color:var(--muted);background:var(--wash)}.st i{align-self:center;width:7px;height:7px;border-radius:50%;background:currentColor}.st.running{color:var(--acc);background:var(--accbg)}.st.running i{width:9px;height:9px;background:none;border:1.5px solid currentColor;border-top-color:transparent;animation:spin 1s linear infinite}.st.waiting{color:var(--warn);background:var(--warnbg)}.st.completed{color:var(--ok);background:var(--okbg)}.st.failed{color:var(--bad);background:var(--badbg)}.st.queued i,.st.cancelled i{background:none;border:1.5px solid currentColor}.stats .st{justify-self:start}.sheet>div{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:24px;padding:20px;border-top:1px solid var(--line)}.sheet>div:first-child{border-top:0}.sheet .label b{display:block;font-size:10.5px;font-weight:500}.sheet .label span{display:block;margin-top:6px;color:var(--muted)}.sheet .value{display:flex;align-items:center;gap:12px;min-width:0}.sheet .value b,.sheet .value .muted{display:block}.sheet .notify{display:flex;align-items:center;gap:10px;cursor:pointer}.sheet input.switch{appearance:none;position:relative;flex:none;width:30px;height:18px;margin:0;border:1px solid var(--line2);background:var(--wash2);cursor:pointer}.sheet input.switch:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;background:var(--muted);transition:transform .15s}.sheet input.switch:checked{border-color:var(--deep);background:var(--deep)}.sheet input.switch:checked:after{transform:translate(12px);background:#fff}.sheet input.switch:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.sheet input.switch:disabled{opacity:.5;cursor:default}@media(max-width:760px){.sheet>div{grid-template-columns:minmax(0,1fr);gap:12px}}.badge{display:inline-flex;align-items:center;gap:6px;padding:1px 7px;border:1px solid var(--line2);font-size:10px;letter-spacing:.14em;color:var(--muted);white-space:nowrap}.badge.acc{border-color:transparent;background:var(--accbg);color:var(--acc)}.badge.ok{border-color:transparent;background:var(--okbg);color:var(--ok)}.badge.warn{border-color:transparent;background:var(--warnbg);color:var(--warn)}.badge.solid{border-color:var(--fg);background:var(--fg);color:var(--bg)}a.badge:hover,button.badge:hover{border-color:var(--acc)}button.badge{cursor:pointer}.chips{display:inline-flex;flex-wrap:wrap;gap:4px}.chip{line-height:18px;padding:0 6px;border:1px solid var(--line2);font-size:11.5px;color:var(--muted)}.id{font-size:11.5px;color:var(--dim)}button.chip{background:none;cursor:pointer}button.chip:hover,button.chip[aria-pressed=true]{border-color:var(--acc);color:var(--acc)}.page.narrow{max-width:760px}.meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.page .head,.page .hero{position:sticky;top:56px;z-index:10;margin-inline:-40px;padding:0 40px 6px;background:var(--bg);overflow-anchor:none}.page{--stuck: calc(56px + var(--head, 0px) + var(--tabs, 0px))}.page:has(.tabs:not(.vertical)){--tabs: 40px}.page *{scroll-margin-top:calc(var(--stuck) + 16px)}.back{display:inline-flex;align-items:center;gap:4px;margin-bottom:6px;font-size:12px;color:var(--muted)}.stuck .back{display:none}.back:hover{color:var(--fg)}.back .ic{width:14px;height:14px}.title-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;min-width:0}.title-row h1{min-width:0}.head .title-row{flex-wrap:nowrap}.head .title-row h1{flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.head .title-row .meta{flex:none}@media(max-width:760px){.page .head,.page .hero{margin-inline:-16px;padding-inline:16px}.head .title-row{flex-wrap:wrap}}.head .meta:empty{min-height:20px}.sentinel{display:block;height:0;margin-bottom:-20px}.page .head.stuck,.page .hero.stuck{padding-top:10px}.stuck{border-bottom:1px solid var(--line2);align-items:center;flex-wrap:nowrap}.stuck h1{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stuck .lead{display:none}.stuck .title-row{flex-wrap:nowrap}.stuck .meta{flex-wrap:nowrap;overflow:hidden}.stuck>div:first-child,.stuck>.grow{flex:1 1 auto;min-width:0}.stuck .actions{flex:none;flex-wrap:nowrap;width:auto;justify-content:flex-end}.stuck .hero-mark{width:28px;height:28px;font-size:13px}.stuck.hero{gap:12px}.hero.stuck .title-row .badge{display:none}@media(max-width:760px){.stuck .actions>:not(.flash,dialog)~:not(.flash,dialog){display:none}}.bar-r{display:flex;align-items:center;margin-block:-2px;gap:8px;flex-wrap:wrap;justify-content:flex-end}.card.accent{border-color:var(--warn)}.card.danger{border-color:var(--bad)}.empty{display:grid;justify-items:center;gap:6px;padding:32px 16px;border:1px dashed var(--line2);text-align:center;color:var(--muted)}.empty b{color:var(--fg);font-weight:500}.card .empty{border:0}.loading{display:flex;align-items:center;justify-content:center;gap:10px;flex:1 0 auto;min-height:var(--h, 240px);color:var(--dim);font-size:12px}.loading.inline{display:inline-flex;min-height:0}.card:has(>.loading:not([style])){flex:1 0 auto;display:flex;flex-direction:column}.loading>span{display:inline-flex;align-items:center;gap:10px;animation:loader-in 0s 60ms both}.loading .spin{flex:none;width:12px;height:12px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.loading .dots{display:inline-flex;gap:3px}.loading .dots>b{width:4px;height:4px;border-radius:50%;background:currentColor;animation:dots 1.2s ease-in-out infinite}.loading .dots>b:nth-child(2){animation-delay:.2s}.loading .dots>b:nth-child(3){animation-delay:.4s}@keyframes dots{0%,80%,to{opacity:.25}40%{opacity:1}}
@@ -1 +0,0 @@
1
- .app{--side: 232px;display:grid;grid-template-columns:var(--side) minmax(0,1fr);grid-template-rows:56px 1fr;min-height:100vh}.top{grid-column:1 / -1;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px 0 20px;background:var(--bg);border-bottom:1px solid var(--line2)}.top-l,.top-r{display:flex;align-items:center;gap:10px;min-width:0}.lockup{display:grid}.lockup small{font-weight:400;font-size:8px;line-height:8px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.side{position:sticky;top:56px;z-index:5;height:calc(100vh - 56px);display:flex;flex-direction:column;justify-content:space-between;padding:16px 12px;border-right:1px solid var(--line)}.side nav{display:grid;gap:2px}.side nav a{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;color:var(--muted);border-left:2px solid transparent}.side nav a:hover{color:var(--fg);background:var(--wash)}.side nav a[aria-current]{color:var(--fg);background:var(--wash2);border-left-color:var(--deep)}.side nav .n{margin-left:auto;background:var(--accbg);color:var(--acc)}.dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--warn)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--okbg)}.server>button{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);font-size:12px;text-align:left;cursor:pointer}.server>button:hover{background:var(--wash)}.server>button .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.server .ic{color:var(--dim);width:14px}.server .pop{width:max-content;max-width:calc(100vw - 32px)}.server .kv dd{white-space:nowrap}.pop-head{display:flex;align-items:center;gap:12px;padding:8px 10px 12px;min-width:0}.pop-head b,.pop-head small{display:block;overflow:hidden;text-overflow:ellipsis}.pop-head small,.pop-item small{color:var(--muted);font-size:11.5px}.org,.avatar{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;background:var(--wash2);font-weight:700;font-size:12px}.avatar{width:32px;height:32px}.avatar-btn{display:grid;place-items:center;width:32px;height:32px;background:var(--fg);color:var(--bg);font-weight:700;cursor:pointer}.kv{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.pop .kv{padding:6px 10px 10px;font-size:12px}.theme .ic.sun,.theme .ic.moon,.theme .ic.sys{display:none}:root[data-theme=light] .theme .ic.sun,:root[data-theme=dark] .theme .ic.moon,:root:not([data-theme]) .theme .ic.sys{display:block}.app>.auth{position:fixed;inset:0;z-index:60;overflow:auto;background:var(--bg)}@media(max-width:760px){.app{grid-template-columns:minmax(0,1fr)}.top{padding:0 10px}.side{position:fixed;top:56px;left:0;bottom:0;height:auto;width:min(280px,84vw);z-index:30;background:var(--bg);border-right:1px solid var(--line2);transform:translate(-100%);transition:transform .2s}}.side-foot{display:grid;gap:8px}.side-toggle{justify-self:end;color:var(--dim)}.side-min .side-toggle{justify-self:center}.app.side-min{--side: 60px}.side-min .top .lockup{display:none}.side-min .side{padding-inline:10px}.side-min .side nav a{justify-content:center;gap:0;padding:0;font-size:0}.side-min .side nav .n{display:none}.side-min .server>button{justify-content:center;padding:10px 0}.side-min .server>button :is(.grow,.ic){display:none}@media(max-width:760px){.side-toggle{display:none}.app.side-min{grid-template-columns:minmax(0,1fr)}}.auth{display:grid;min-height:100vh}.auth-side{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:40px 24px 72px}.auth-frame{width:100%;max-width:440px}.auth-frame .bar{min-height:32px;font-size:10px}.auth-frame .brand{font-size:12px}.tag{margin-left:auto;padding:1px 8px;background:var(--deep);color:#fff}.auth-body{display:grid;gap:14px;padding:28px 24px 26px}.auth-body h1{font-size:22px}.auth-body .lead{margin:0 0 6px}.auth-body form{display:grid;gap:14px}.auth-links{position:absolute;bottom:24px;left:0;right:0;display:flex;justify-content:center;gap:24px;font-size:9px;color:var(--muted)}.auth-links a:hover{color:var(--fg)}.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.brand .coder-mark{flex:none;position:relative;top:-1px;width:16px;height:16px;fill:currentColor}th .ic{width:12px;height:12px}.scrim{display:none}@media(max-width:760px){.drawer .side{transform:none}.scrim{display:block;position:fixed;inset:56px 0 0;z-index:25;background:#0b0c1073;opacity:0;pointer-events:none;transition:opacity .2s}.drawer .scrim{opacity:1;pointer-events:auto}}@media(min-width:761px){.only-m{display:none}}.pop,.more-list{position:fixed;inset:auto;margin:0;padding:6px;white-space:normal;max-height:calc(100vh - 24px);overflow-y:auto;border:1px solid var(--line2);background:var(--tile);color:inherit;box-shadow:0 12px 32px #0000002e}:where(.menu,.more)>button{padding:0;border:0;background:none;color:inherit;cursor:pointer}.menu>.pop,.more>.more-list{inset:0;margin:auto}@supports (anchor-scope: --menu){.menu,.more{anchor-scope:--menu}:where(.menu,.more)>button{anchor-name:--menu}.menu>.pop,.more>.more-list{position-anchor:--menu;position-try-fallbacks:flip-block;inset:anchor(bottom) auto auto anchor(left);margin:8px 0 0}.menu.right>.pop,.more>.more-list{inset:anchor(bottom) anchor(right) auto auto}.menu.up>.pop{inset:auto anchor(right) anchor(top) anchor(left);margin:0 0 8px}}.pop{z-index:40;min-width:180px}.pop:has(.pop-label,.pop-item.rich,.pop-row){min-width:260px}.menu.up>.pop{min-width:0}.pop.wide{width:min(320px,calc(100vw - 32px))}.pop hr{border:0;border-top:1px solid var(--line);margin:6px 0}.pop-label{padding:8px 10px 4px;font-size:10px;color:var(--dim);border-top:1px solid var(--line)}.pop-head+.pop-label,.pop .pop-label:first-child{border-top:0}.pop-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;background:none;text-align:left;cursor:pointer}.pop-item:hover{background:var(--wash)}.pop-item.danger:hover{background:var(--badbg);color:var(--bad)}.pop-item:disabled{cursor:default}.pop-item:disabled:hover{background:none}.pop-item small{display:block}.pop-item.rich{align-items:flex-start}.pop-item.rich .ic{margin-top:2px}.pop-item[role=menuitemradio]>.ic:last-child{visibility:hidden}.pop-item[role=menuitemradio][aria-checked=true]>.ic:last-child{visibility:visible;color:var(--acc)}.pop form{margin:0}.pop-note{padding:0 10px 8px;font-size:11.5px;color:var(--muted)}.more{flex:none}.more>button{padding:0 7px;border:1px solid var(--line2);color:var(--fg);font-size:11.5px;white-space:nowrap}.more:hover>button,.more:has(:popover-open)>button{border-color:var(--acc);color:var(--acc)}.more-list{--max: 220px;z-index:45;min-width:220px}.more-list:before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.more-list:popover-open{display:grid;gap:4px}@media(max-width:760px){.pop.wide{min-width:min(320px,calc(100vw - 32px))}}.pop .add-models{margin-top:4px;color:var(--muted)}.pop .add-models .ic{width:14px;height:14px}.toasts{position:fixed;top:16px;right:16px;bottom:16px;z-index:50;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;width:min(340px,calc(100vw - 32px));pointer-events:none}.toast{position:relative;display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line2);background:var(--tile);box-shadow:0 12px 32px #0000002e;pointer-events:auto;cursor:pointer;animation:toast-in .15s ease-out}.toast:hover{background:linear-gradient(var(--wash),var(--wash)),var(--tile)}.toast:has(.cover:focus-visible){outline:2px solid var(--acc);outline-offset:2px}.toast-head{display:flex;align-items:center;gap:10px;margin:0}.toast-head .cover{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg);text-decoration:none;outline:none}.toast-line{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.toast.err .toast-head .cover{color:var(--bad)}.toast.err .toast-line{white-space:normal}@keyframes toast-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.st{display:inline-flex;align-items:baseline;gap:7px;padding:2px 8px;font-size:10px;letter-spacing:.14em;white-space:nowrap;color:var(--muted);background:var(--wash)}.st i{align-self:center;width:7px;height:7px;border-radius:50%;background:currentColor}.st.running{color:var(--acc);background:var(--accbg)}.st.running i{width:9px;height:9px;background:none;border:1.5px solid currentColor;border-top-color:transparent;animation:spin 1s linear infinite}.st.waiting{color:var(--warn);background:var(--warnbg)}.st.completed{color:var(--ok);background:var(--okbg)}.st.failed{color:var(--bad);background:var(--badbg)}.st.queued i,.st.cancelled i{background:none;border:1.5px solid currentColor}.stats .st{justify-self:start}.agent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.agent-card{position:relative;display:flex;flex-direction:column;gap:14px;height:100%;padding:18px;border:1px solid var(--line2);background:var(--panel)}.agent-card:before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:2px;background:var(--line2);transition:background .15s}.agent-card:hover{background:var(--tile)}.agent-card:hover:before{background:var(--deep)}.bc-head{display:flex;align-items:center;gap:12px}.bc-head h3{font-size:14px;font-weight:700;overflow-wrap:anywhere}.agent-card .pills a{position:relative;z-index:1}.mark{display:grid;place-items:center;flex:none;width:36px;height:36px;background:var(--blue);color:#fff;font-weight:700}.lead-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;flex:1;overflow:hidden;color:var(--muted)}.pfs{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;min-width:0;font-size:12px}.page.narrow{max-width:760px}.meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.page .head,.page .hero{position:sticky;top:56px;z-index:10;margin-inline:-40px;padding:0 40px 6px;background:var(--bg);overflow-anchor:none}.page{--stuck: calc(56px + var(--head, 0px) + var(--tabs, 0px))}.page:has(.tabs:not(.vertical)){--tabs: 40px}.page *{scroll-margin-top:calc(var(--stuck) + 16px)}.back{display:inline-flex;align-items:center;gap:4px;margin-bottom:6px;font-size:12px;color:var(--muted)}.stuck .back{display:none}.back:hover{color:var(--fg)}.back .ic{width:14px;height:14px}.title-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;min-width:0}.title-row h1{min-width:0}.head .title-row{flex-wrap:nowrap}.head .title-row h1{flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.head .title-row .meta{flex:none}@media(max-width:760px){.page .head,.page .hero{margin-inline:-16px;padding-inline:16px}.head .title-row{flex-wrap:wrap}}.head .meta:empty{min-height:20px}.sentinel{display:block;height:0;margin-bottom:-20px}.page .head.stuck,.page .hero.stuck{padding-top:10px}.stuck{border-bottom:1px solid var(--line2);align-items:center;flex-wrap:nowrap}.stuck h1{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stuck .lead{display:none}.stuck .title-row{flex-wrap:nowrap}.stuck .meta{flex-wrap:nowrap;overflow:hidden}.stuck>div:first-child,.stuck>.grow{flex:1 1 auto;min-width:0}.stuck .actions{flex:none;flex-wrap:nowrap;width:auto;justify-content:flex-end}.stuck .hero-mark{width:28px;height:28px;font-size:13px}.stuck.hero{gap:12px}.hero.stuck .title-row .badge{display:none}@media(max-width:760px){.stuck .actions>:not(.flash,dialog)~:not(.flash,dialog){display:none}}.composer{display:flex;flex-wrap:wrap;padding:5px 5px 5px 8px;border:1px solid var(--line2);background:var(--field)}.composer:has(textarea:focus){border-color:var(--acc)}.composer textarea{flex:1 1 100%;width:auto;field-sizing:content;min-height:22px;max-height:8lh;margin:6px 0;padding:0 4px;border:0;background:none;box-shadow:none;resize:none}.composer textarea:focus{box-shadow:none}.composer-line{display:flex;align-items:center;gap:2px;width:100%;height:30px;min-width:0}.composer-line .select{flex:0 1 auto;max-width:220px}.composer-line .select>button,.composer-line .quiet{margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:3px 8px;border:1px solid transparent;background:none;font-size:11.5px;color:var(--muted);white-space:nowrap;cursor:pointer}.composer-line .select>button:hover,.composer-line .quiet:hover{background:var(--wash)}.composer-line .send{flex:none;margin-left:4px}.composer-line .send[aria-busy=true] .ic{visibility:hidden}.composer>.flash{flex-basis:100%;margin:0 4px 2px}.composer-settings:popover-open{display:block;width:min(320px,calc(100vw - 32px));overflow-y:auto;padding:6px}.composer-settings>.pop-label:not(:first-child){margin-top:10px}.composer-settings .pop-item{width:100%;min-height:30px;font-size:12px}.composer-settings .pop-group{margin:6px 10px 2px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.composer-settings .select{margin:2px 6px 4px}.set-label{font-size:11px;color:var(--muted)}.composer-settings .select>button{min-height:30px;padding:4px 8px 4px 10px;font-size:12px}.model-pick input[aria-expanded=true]{cursor:text}.model-pick input[aria-expanded=true]::placeholder{color:var(--dim)}.model-pick>.ic{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--dim);pointer-events:none}.model-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:1;max-height:260px;overflow-y:auto;padding:4px;border:1px solid var(--line2);background:var(--tile);box-shadow:0 12px 32px #0000002e;scrollbar-width:thin}.model-list .pop-item>.ic{visibility:hidden}.model-list .pop-item[aria-selected=true]>.ic{visibility:visible;color:var(--acc)}.model-list .pop-item,.composer-slash .pop-item{gap:10px;padding:6px 10px}.model-list .pop-item:hover,.composer-slash .pop-item:hover{background:none}.model-list .pop-item.on,.composer-slash .pop-item.on{background:var(--wash2)}.model-list small,.composer-slash small{font-size:11px;color:var(--dim);white-space:nowrap}.composer-slash{max-height:min(360px,50vh);overflow-y:auto}.composer-slash .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-slash>.loading{padding:6px 10px}.notice.slim{flex-wrap:nowrap;gap:10px;padding:8px 8px 8px 14px;font-size:12px}.notice.slim .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card>.notice.slim{margin:12px 16px 0}dialog.compose-dialog{width:min(760px,calc(100vw - 32px));margin:14vh auto auto;padding:0;border:1px solid var(--line2);background:var(--tile);color:inherit;box-shadow:0 12px 32px #0000002e}dialog.compose-dialog::backdrop{background:light-dark(rgba(0,0,0,.45),rgba(0,0,0,.72))}.compose-dialog>header{display:flex;align-items:baseline;gap:10px;padding:10px 6px 0 16px}.compose-dialog h2{font-size:15px;font-weight:700}.compose-dialog>header .icon-btn{align-self:center;width:30px;height:30px;margin-left:auto}.compose-dialog .composer,.compose-dialog>.loading,.compose-dialog>.flash,.compose-dialog>.notice{margin:10px 16px 16px}@media(max-width:760px){.composer-settings:popover-open{right:16px!important;grid-template-columns:minmax(0,1fr);gap:4px}.notice.slim .grow{white-space:normal}.composer-settings .set-label:not(:first-child){margin-top:6px}}.pop-row{display:flex;align-items:center}.pop-row>.pop-item{flex:1 1 auto}.pop-row>.pop-item small{margin-right:6px;color:var(--muted);font-size:11px}.pop-chev{display:inline-grid;place-items:center;flex:none;align-self:stretch;aspect-ratio:1;width:auto;border:0;background:none;color:var(--dim);cursor:pointer}.pop-chev:focus-visible{outline-offset:-2px}.pop-chev:hover,.pop-chev[aria-expanded=true]{color:var(--fg);background:var(--wash)}.pop-chev .ic{width:14px;height:14px;transition:rotate .15s}.pop-chev[aria-expanded=true] .ic{rotate:90deg}.pop-sub{padding-left:32px}.composer-line .folder{display:contents}.composer-line input.folder-path{flex:0 1 260px;min-width:0;min-height:0;height:28px;padding:3px 8px;border:1px solid transparent;background:none;font-size:11.5px}.composer-line input.folder-path:focus{border-color:var(--line2);box-shadow:none}.composer-line .folder-busy{flex:none;font-size:11.5px;color:var(--muted)}.composer>.folder-hint{flex:1 1 100%;padding:0 8px 4px;font-size:11px;color:var(--muted)}.composer>.flash{flex:1 1 100%;padding:2px 8px 4px}.bar-r{display:flex;align-items:center;margin-block:-2px;gap:8px;flex-wrap:wrap;justify-content:flex-end}.card.accent{border-color:var(--warn)}.card.danger{border-color:var(--bad)}.empty{display:grid;justify-items:center;gap:6px;padding:32px 16px;border:1px dashed var(--line2);text-align:center;color:var(--muted)}.empty b{color:var(--fg);font-weight:500}.card .empty{border:0}.loading{display:flex;align-items:center;justify-content:center;gap:10px;flex:1 0 auto;min-height:var(--h, 240px);color:var(--dim);font-size:12px}.loading.inline{display:inline-flex;min-height:0}.card:has(>.loading:not([style])){flex:1 0 auto;display:flex;flex-direction:column}.loading>span{display:inline-flex;align-items:center;gap:10px;animation:loader-in 0s 60ms both}.loading .spin{flex:none;width:12px;height:12px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.loading .dots{display:inline-flex;gap:3px}.loading .dots>b{width:4px;height:4px;border-radius:50%;background:currentColor;animation:dots 1.2s ease-in-out infinite}.loading .dots>b:nth-child(2){animation-delay:.2s}.loading .dots>b:nth-child(3){animation-delay:.4s}@keyframes dots{0%,80%,to{opacity:.25}40%{opacity:1}}.field{display:grid;gap:6px}.field>span:first-child,.field>label{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-weight:500}.field small{font-weight:400;color:var(--muted);font-size:11.5px}.field .seg-btns{width:max-content;max-width:100%}.field .seg-btns>button{height:36px}.select{position:relative;display:inline-flex;min-width:0}.field .select{display:flex}.select>button{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:7px 10px 7px 12px;border:1px solid var(--line2);background:var(--field);text-align:left;white-space:nowrap;cursor:pointer;touch-action:manipulation}.select>button .grow{overflow:hidden;text-overflow:ellipsis}.select>button .ic{color:var(--dim);transition:transform .15s}.select>button[aria-expanded=true] .ic{transform:rotate(180deg)}.select>button:focus-visible,.select>button[aria-expanded=true]{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg)}.select>button:disabled{color:var(--muted);cursor:default}.select-pop{min-width:0;max-width:min(440px,calc(100vw - 16px));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line2) transparent}.select-pop .pop-item{white-space:nowrap}.select-pop .pop-item:hover{background:none}.select-pop .pop-item.on{background:var(--wash2)}.select-pop .pop-item>.ic{visibility:hidden}.select-pop .pop-item[aria-selected=true]>.ic{visibility:visible;color:var(--acc)}.select>button:disabled{opacity:.65;cursor:default}.select-pop .pop-item .pop-path{display:block;overflow:hidden;direction:rtl;text-align:left;white-space:nowrap;text-overflow:ellipsis;font-size:11px;color:var(--muted)}.select-pop .pop-item .grow{min-width:0;overflow:hidden;text-overflow:ellipsis}.select-pop .pop-item.action{margin-top:4px;color:var(--muted)}.select-pop .pop-item.action>.ic{visibility:visible;width:14px;height:14px}.select-pop .pop-item.action.on{color:var(--fg)}.link-pill{color:var(--acc);text-transform:none;letter-spacing:.02em}.link-pill .ic{width:12px;height:12px}.pf{display:inline-flex;flex:none;align-items:center;gap:7px;color:var(--muted);white-space:nowrap}.brand-icon{width:12px;height:12px;flex:none}.brand-icon>svg{display:block;width:100%;height:100%}.badge{display:inline-flex;align-items:center;gap:6px;padding:1px 7px;border:1px solid var(--line2);font-size:10px;letter-spacing:.14em;color:var(--muted);white-space:nowrap}.badge.acc{border-color:transparent;background:var(--accbg);color:var(--acc)}.badge.ok{border-color:transparent;background:var(--okbg);color:var(--ok)}.badge.warn{border-color:transparent;background:var(--warnbg);color:var(--warn)}.badge.solid{border-color:var(--fg);background:var(--fg);color:var(--bg)}a.badge:hover,button.badge:hover{border-color:var(--acc)}button.badge{cursor:pointer}.chips{display:inline-flex;flex-wrap:wrap;gap:4px}.chip{line-height:18px;padding:0 6px;border:1px solid var(--line2);font-size:11.5px;color:var(--muted)}.id{font-size:11.5px;color:var(--dim)}button.chip{background:none;cursor:pointer}button.chip:hover,button.chip[aria-pressed=true]{border-color:var(--acc);color:var(--acc)}.head.tools{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px 24px;min-height:36px}.head.tools>div:first-child{display:contents}.head.tools .lead{grid-row:2;grid-column:1 / -1}.head.tools>.filters{grid-row:1;grid-column:2;justify-content:flex-end}.head.tools>.filters:last-child{grid-column:2 / -1}.head.tools>.actions{grid-row:1;grid-column:3}.filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search{position:relative;display:block}.tab-body .filters{position:sticky;top:calc(56px + var(--head, 0px) + var(--tabs, 0px));z-index:8;margin-block:-8px;padding-block:8px;background:var(--bg)}.filters .search{flex:1 1 240px;max-width:360px}.search .ic{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--dim);pointer-events:none}label.search input[type=search]{padding-left:32px}.filters .select{flex:none}.filters .end{margin-left:auto}.vsearch .search{width:min(280px,100%)}@media(max-width:760px){.head.tools{grid-template-columns:minmax(0,1fr) auto;row-gap:12px}.head.tools>.filters{grid-row:3;grid-column:1 / -1}.head.tools>.actions{grid-column:2;width:auto}.filters .search{max-width:none;flex-basis:100%}.filters .select{flex:1 1 0}.filters .select>button{gap:4px;padding-inline:8px}.head.tools.stuck>.filters>.select{display:none}}.filter-more>.pop:popover-open{display:block;width:min(260px,calc(100vw - 32px));max-height:calc(100vh - 160px);overflow-y:auto;padding:6px}.filter-more .pop-label:not(:first-child){margin-top:10px}.filter-more .pop-item{width:100%;min-height:30px;font-size:12px}.field-btn{display:flex;align-items:center;gap:10px;min-height:36px;padding:7px 12px;border:1px solid var(--line2);background:var(--field);white-space:nowrap;cursor:pointer}.field-btn:focus-visible,.field-btn:has(+.pop:popover-open){outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg)}.field-btn:disabled{color:var(--muted);cursor:default}.filter-more>.field-btn.on{color:var(--acc)}.tail{display:flex;align-items:center;justify-content:center;min-height:48px;padding:0 14px;color:var(--dim);font-size:11.5px}.tail.err{color:var(--bad)}
@@ -1 +0,0 @@
1
- .app{--side: 232px;display:grid;grid-template-columns:var(--side) minmax(0,1fr);grid-template-rows:56px 1fr;min-height:100vh}.top{grid-column:1 / -1;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px 0 20px;background:var(--bg);border-bottom:1px solid var(--line2)}.top-l,.top-r{display:flex;align-items:center;gap:10px;min-width:0}.lockup{display:grid}.lockup small{font-weight:400;font-size:8px;line-height:8px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.side{position:sticky;top:56px;z-index:5;height:calc(100vh - 56px);display:flex;flex-direction:column;justify-content:space-between;padding:16px 12px;border-right:1px solid var(--line)}.side nav{display:grid;gap:2px}.side nav a{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;color:var(--muted);border-left:2px solid transparent}.side nav a:hover{color:var(--fg);background:var(--wash)}.side nav a[aria-current]{color:var(--fg);background:var(--wash2);border-left-color:var(--deep)}.side nav .n{margin-left:auto;background:var(--accbg);color:var(--acc)}.dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--warn)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--okbg)}.server>button{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);font-size:12px;text-align:left;cursor:pointer}.server>button:hover{background:var(--wash)}.server>button .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.server .ic{color:var(--dim);width:14px}.server .pop{width:max-content;max-width:calc(100vw - 32px)}.server .kv dd{white-space:nowrap}.pop-head{display:flex;align-items:center;gap:12px;padding:8px 10px 12px;min-width:0}.pop-head b,.pop-head small{display:block;overflow:hidden;text-overflow:ellipsis}.pop-head small,.pop-item small{color:var(--muted);font-size:11.5px}.org,.avatar{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;background:var(--wash2);font-weight:700;font-size:12px}.avatar{width:32px;height:32px}.avatar-btn{display:grid;place-items:center;width:32px;height:32px;background:var(--fg);color:var(--bg);font-weight:700;cursor:pointer}.kv{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.pop .kv{padding:6px 10px 10px;font-size:12px}.theme .ic.sun,.theme .ic.moon,.theme .ic.sys{display:none}:root[data-theme=light] .theme .ic.sun,:root[data-theme=dark] .theme .ic.moon,:root:not([data-theme]) .theme .ic.sys{display:block}.app>.auth{position:fixed;inset:0;z-index:60;overflow:auto;background:var(--bg)}@media(max-width:760px){.app{grid-template-columns:minmax(0,1fr)}.top{padding:0 10px}.side{position:fixed;top:56px;left:0;bottom:0;height:auto;width:min(280px,84vw);z-index:30;background:var(--bg);border-right:1px solid var(--line2);transform:translate(-100%);transition:transform .2s}}.side-foot{display:grid;gap:8px}.side-toggle{justify-self:end;color:var(--dim)}.side-min .side-toggle{justify-self:center}.app.side-min{--side: 60px}.side-min .top .lockup{display:none}.side-min .side{padding-inline:10px}.side-min .side nav a{justify-content:center;gap:0;padding:0;font-size:0}.side-min .side nav .n{display:none}.side-min .server>button{justify-content:center;padding:10px 0}.side-min .server>button :is(.grow,.ic){display:none}@media(max-width:760px){.side-toggle{display:none}.app.side-min{grid-template-columns:minmax(0,1fr)}}.auth{display:grid;min-height:100vh}.auth-side{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:40px 24px 72px}.auth-frame{width:100%;max-width:440px}.auth-frame .bar{min-height:32px;font-size:10px}.auth-frame .brand{font-size:12px}.tag{margin-left:auto;padding:1px 8px;background:var(--deep);color:#fff}.auth-body{display:grid;gap:14px;padding:28px 24px 26px}.auth-body h1{font-size:22px}.auth-body .lead{margin:0 0 6px}.auth-body form{display:grid;gap:14px}.auth-links{position:absolute;bottom:24px;left:0;right:0;display:flex;justify-content:center;gap:24px;font-size:9px;color:var(--muted)}.auth-links a:hover{color:var(--fg)}.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.brand .coder-mark{flex:none;position:relative;top:-1px;width:16px;height:16px;fill:currentColor}th .ic{width:12px;height:12px}.scrim{display:none}@media(max-width:760px){.drawer .side{transform:none}.scrim{display:block;position:fixed;inset:56px 0 0;z-index:25;background:#0b0c1073;opacity:0;pointer-events:none;transition:opacity .2s}.drawer .scrim{opacity:1;pointer-events:auto}}@media(min-width:761px){.only-m{display:none}}.pop,.more-list{position:fixed;inset:auto;margin:0;padding:6px;white-space:normal;max-height:calc(100vh - 24px);overflow-y:auto;border:1px solid var(--line2);background:var(--tile);color:inherit;box-shadow:0 12px 32px #0000002e}:where(.menu,.more)>button{padding:0;border:0;background:none;color:inherit;cursor:pointer}.menu>.pop,.more>.more-list{inset:0;margin:auto}@supports (anchor-scope: --menu){.menu,.more{anchor-scope:--menu}:where(.menu,.more)>button{anchor-name:--menu}.menu>.pop,.more>.more-list{position-anchor:--menu;position-try-fallbacks:flip-block;inset:anchor(bottom) auto auto anchor(left);margin:8px 0 0}.menu.right>.pop,.more>.more-list{inset:anchor(bottom) anchor(right) auto auto}.menu.up>.pop{inset:auto anchor(right) anchor(top) anchor(left);margin:0 0 8px}}.pop{z-index:40;min-width:180px}.pop:has(.pop-label,.pop-item.rich,.pop-row){min-width:260px}.menu.up>.pop{min-width:0}.pop.wide{width:min(320px,calc(100vw - 32px))}.pop hr{border:0;border-top:1px solid var(--line);margin:6px 0}.pop-label{padding:8px 10px 4px;font-size:10px;color:var(--dim);border-top:1px solid var(--line)}.pop-head+.pop-label,.pop .pop-label:first-child{border-top:0}.pop-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;background:none;text-align:left;cursor:pointer}.pop-item:hover{background:var(--wash)}.pop-item.danger:hover{background:var(--badbg);color:var(--bad)}.pop-item:disabled{cursor:default}.pop-item:disabled:hover{background:none}.pop-item small{display:block}.pop-item.rich{align-items:flex-start}.pop-item.rich .ic{margin-top:2px}.pop-item[role=menuitemradio]>.ic:last-child{visibility:hidden}.pop-item[role=menuitemradio][aria-checked=true]>.ic:last-child{visibility:visible;color:var(--acc)}.pop form{margin:0}.pop-note{padding:0 10px 8px;font-size:11.5px;color:var(--muted)}.more{flex:none}.more>button{padding:0 7px;border:1px solid var(--line2);color:var(--fg);font-size:11.5px;white-space:nowrap}.more:hover>button,.more:has(:popover-open)>button{border-color:var(--acc);color:var(--acc)}.more-list{--max: 220px;z-index:45;min-width:220px}.more-list:before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.more-list:popover-open{display:grid;gap:4px}@media(max-width:760px){.pop.wide{min-width:min(320px,calc(100vw - 32px))}}.pop .add-models{margin-top:4px;color:var(--muted)}.pop .add-models .ic{width:14px;height:14px}.toasts{position:fixed;top:16px;right:16px;bottom:16px;z-index:50;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;width:min(340px,calc(100vw - 32px));pointer-events:none}.toast{position:relative;display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line2);background:var(--tile);box-shadow:0 12px 32px #0000002e;pointer-events:auto;cursor:pointer;animation:toast-in .15s ease-out}.toast:hover{background:linear-gradient(var(--wash),var(--wash)),var(--tile)}.toast:has(.cover:focus-visible){outline:2px solid var(--acc);outline-offset:2px}.toast-head{display:flex;align-items:center;gap:10px;margin:0}.toast-head .cover{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg);text-decoration:none;outline:none}.toast-line{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.toast.err .toast-head .cover{color:var(--bad)}.toast.err .toast-line{white-space:normal}@keyframes toast-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.st{display:inline-flex;align-items:baseline;gap:7px;padding:2px 8px;font-size:10px;letter-spacing:.14em;white-space:nowrap;color:var(--muted);background:var(--wash)}.st i{align-self:center;width:7px;height:7px;border-radius:50%;background:currentColor}.st.running{color:var(--acc);background:var(--accbg)}.st.running i{width:9px;height:9px;background:none;border:1.5px solid currentColor;border-top-color:transparent;animation:spin 1s linear infinite}.st.waiting{color:var(--warn);background:var(--warnbg)}.st.completed{color:var(--ok);background:var(--okbg)}.st.failed{color:var(--bad);background:var(--badbg)}.st.queued i,.st.cancelled i{background:none;border:1.5px solid currentColor}.stats .st{justify-self:start}.page.narrow{max-width:760px}.meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.page .head,.page .hero{position:sticky;top:56px;z-index:10;margin-inline:-40px;padding:0 40px 6px;background:var(--bg);overflow-anchor:none}.page{--stuck: calc(56px + var(--head, 0px) + var(--tabs, 0px))}.page:has(.tabs:not(.vertical)){--tabs: 40px}.page *{scroll-margin-top:calc(var(--stuck) + 16px)}.back{display:inline-flex;align-items:center;gap:4px;margin-bottom:6px;font-size:12px;color:var(--muted)}.stuck .back{display:none}.back:hover{color:var(--fg)}.back .ic{width:14px;height:14px}.title-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;min-width:0}.title-row h1{min-width:0}.head .title-row{flex-wrap:nowrap}.head .title-row h1{flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.head .title-row .meta{flex:none}@media(max-width:760px){.page .head,.page .hero{margin-inline:-16px;padding-inline:16px}.head .title-row{flex-wrap:wrap}}.head .meta:empty{min-height:20px}.sentinel{display:block;height:0;margin-bottom:-20px}.page .head.stuck,.page .hero.stuck{padding-top:10px}.stuck{border-bottom:1px solid var(--line2);align-items:center;flex-wrap:nowrap}.stuck h1{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stuck .lead{display:none}.stuck .title-row{flex-wrap:nowrap}.stuck .meta{flex-wrap:nowrap;overflow:hidden}.stuck>div:first-child,.stuck>.grow{flex:1 1 auto;min-width:0}.stuck .actions{flex:none;flex-wrap:nowrap;width:auto;justify-content:flex-end}.stuck .hero-mark{width:28px;height:28px;font-size:13px}.stuck.hero{gap:12px}.hero.stuck .title-row .badge{display:none}@media(max-width:760px){.stuck .actions>:not(.flash,dialog)~:not(.flash,dialog){display:none}}.bar-r{display:flex;align-items:center;margin-block:-2px;gap:8px;flex-wrap:wrap;justify-content:flex-end}.card.accent{border-color:var(--warn)}.card.danger{border-color:var(--bad)}.empty{display:grid;justify-items:center;gap:6px;padding:32px 16px;border:1px dashed var(--line2);text-align:center;color:var(--muted)}.empty b{color:var(--fg);font-weight:500}.card .empty{border:0}.loading{display:flex;align-items:center;justify-content:center;gap:10px;flex:1 0 auto;min-height:var(--h, 240px);color:var(--dim);font-size:12px}.loading.inline{display:inline-flex;min-height:0}.card:has(>.loading:not([style])){flex:1 0 auto;display:flex;flex-direction:column}.loading>span{display:inline-flex;align-items:center;gap:10px;animation:loader-in 0s 60ms both}.loading .spin{flex:none;width:12px;height:12px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.loading .dots{display:inline-flex;gap:3px}.loading .dots>b{width:4px;height:4px;border-radius:50%;background:currentColor;animation:dots 1.2s ease-in-out infinite}.loading .dots>b:nth-child(2){animation-delay:.2s}.loading .dots>b:nth-child(3){animation-delay:.4s}@keyframes dots{0%,80%,to{opacity:.25}40%{opacity:1}}.fixed{padding:7px 0;color:var(--muted)}.agent-new{display:flex;flex-direction:column;gap:20px}.agent-new .btn[aria-pressed=true]{border-color:var(--deep);background:var(--accbg)}.templates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.tile{width:100%;padding:10px 14px;border:1px solid var(--line2);background:var(--tile);text-align:left;font:inherit;color:inherit;cursor:pointer}.tile[aria-checked=true]{border-color:var(--deep);box-shadow:inset 3px 0 0 var(--deep)}.tile b,.tile small{display:block}.tile small{color:var(--muted);font-size:11.5px;margin-top:2px}.agent-form{display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:24px}.agent-main{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}.form-part{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;padding:16px 18px;border:1px solid var(--line2);background:var(--panel)}.form-part h2{font-size:15px;font-weight:700}.form-part h2+.muted,.part-head+.muted{margin-top:-6px}.part-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.part-head .search{flex:0 1 240px;min-width:0}.md-preview{min-height:232px;max-height:240px;overflow:auto;padding:8px 10px;border:1px solid var(--line2);background:var(--field)}.listen{border:1px solid var(--line2)}.listen>li+li{border-top:1px solid var(--line2)}.listen-row{display:flex;align-items:center;gap:12px;padding:10px 12px;cursor:pointer}.listen-row b,.listen-row small{display:block}.listen-row small{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pf-mark{display:grid;place-items:center;flex:none;width:28px;height:28px;background:var(--wash2);color:var(--muted);font-size:12px;font-weight:700}.listen li.on .pf-mark{background:var(--wash2)}.listen input.switch{appearance:none;position:relative;width:30px;height:18px;border:1px solid var(--line2);background:var(--wash2)}.listen input.switch:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;background:var(--muted);transition:transform .15s}.listen input.switch:checked{border-color:var(--deep);background:var(--deep)}.listen input.switch:checked:after{transform:translate(12px);background:#fff}.listen input.switch:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.triggers{display:grid;gap:8px;padding:0 12px 12px 52px}.triggers .chips{gap:6px}.match{display:flex;align-items:center;gap:10px}.match span{flex:none;font-size:11.5px;color:var(--muted)}.listen .match input.mono{min-width:0;min-height:30px;padding:4px 8px}.listen-none{padding:12px}.run:not([open]){gap:0}.run-body{display:grid;gap:14px}.run>summary{display:flex;align-items:baseline;gap:12px;list-style:none;cursor:pointer}.run>summary::-webkit-details-marker{display:none}.run>summary .grow{font-size:12px}.run>summary .ic{align-self:center;width:14px;height:14px;color:var(--muted);transform:rotate(-90deg);transition:transform .15s}.run[open]>summary .ic{transform:none}.agent-side{position:sticky;top:calc(var(--stuck) + 16px);display:grid;gap:10px}.side-label{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}.agent-card.preview{height:auto;min-height:160px}.agent-card.preview:before{background:var(--deep)}.summary{color:var(--muted)}@media(max-width:760px){.templates,.agent-form{grid-template-columns:minmax(0,1fr)}.agent-side{position:static}.triggers{padding-left:12px}.run-body .seg-btns>button{padding:0 8px}.page .agent-new .stuck .actions>:not(:last-child,[role=alert]){display:none}.page .agent-new .stuck .actions>:last-child{display:inline-flex}}.agent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.agent-card{position:relative;display:flex;flex-direction:column;gap:14px;height:100%;padding:18px;border:1px solid var(--line2);background:var(--panel)}.agent-card:before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:2px;background:var(--line2);transition:background .15s}.agent-card:hover{background:var(--tile)}.agent-card:hover:before{background:var(--deep)}.bc-head{display:flex;align-items:center;gap:12px}.bc-head h3{font-size:14px;font-weight:700;overflow-wrap:anywhere}.agent-card .pills a{position:relative;z-index:1}.mark{display:grid;place-items:center;flex:none;width:36px;height:36px;background:var(--blue);color:#fff;font-weight:700}.lead-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;flex:1;overflow:hidden;color:var(--muted)}.pfs{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;min-width:0;font-size:12px}.link-pill{color:var(--acc);text-transform:none;letter-spacing:.02em}.link-pill .ic{width:12px;height:12px}.pf{display:inline-flex;flex:none;align-items:center;gap:7px;color:var(--muted);white-space:nowrap}.brand-icon{width:12px;height:12px;flex:none}.brand-icon>svg{display:block;width:100%;height:100%}.badge{display:inline-flex;align-items:center;gap:6px;padding:1px 7px;border:1px solid var(--line2);font-size:10px;letter-spacing:.14em;color:var(--muted);white-space:nowrap}.badge.acc{border-color:transparent;background:var(--accbg);color:var(--acc)}.badge.ok{border-color:transparent;background:var(--okbg);color:var(--ok)}.badge.warn{border-color:transparent;background:var(--warnbg);color:var(--warn)}.badge.solid{border-color:var(--fg);background:var(--fg);color:var(--bg)}a.badge:hover,button.badge:hover{border-color:var(--acc)}button.badge{cursor:pointer}.chips{display:inline-flex;flex-wrap:wrap;gap:4px}.chip{line-height:18px;padding:0 6px;border:1px solid var(--line2);font-size:11.5px;color:var(--muted)}.id{font-size:11.5px;color:var(--dim)}button.chip{background:none;cursor:pointer}button.chip:hover,button.chip[aria-pressed=true]{border-color:var(--acc);color:var(--acc)}.hero{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap}.hero>.grow{flex:1 1 280px}.hero-mark{display:grid;place-items:center;flex:none;width:64px;height:64px;background:var(--blue);color:#fff;font-size:26px;font-weight:700}@media(max-width:760px){.hero{gap:14px}.hero-mark{width:48px;height:48px;font-size:20px}.hero .lead{display:-webkit-box;min-height:2lh;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}}.head.tools{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px 24px;min-height:36px}.head.tools>div:first-child{display:contents}.head.tools .lead{grid-row:2;grid-column:1 / -1}.head.tools>.filters{grid-row:1;grid-column:2;justify-content:flex-end}.head.tools>.filters:last-child{grid-column:2 / -1}.head.tools>.actions{grid-row:1;grid-column:3}.filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search{position:relative;display:block}.tab-body .filters{position:sticky;top:calc(56px + var(--head, 0px) + var(--tabs, 0px));z-index:8;margin-block:-8px;padding-block:8px;background:var(--bg)}.filters .search{flex:1 1 240px;max-width:360px}.search .ic{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--dim);pointer-events:none}label.search input[type=search]{padding-left:32px}.filters .select{flex:none}.filters .end{margin-left:auto}.vsearch .search{width:min(280px,100%)}@media(max-width:760px){.head.tools{grid-template-columns:minmax(0,1fr) auto;row-gap:12px}.head.tools>.filters{grid-row:3;grid-column:1 / -1}.head.tools>.actions{grid-column:2;width:auto}.filters .search{max-width:none;flex-basis:100%}.filters .select{flex:1 1 0}.filters .select>button{gap:4px;padding-inline:8px}.head.tools.stuck>.filters>.select{display:none}}.filter-more>.pop:popover-open{display:block;width:min(260px,calc(100vw - 32px));max-height:calc(100vh - 160px);overflow-y:auto;padding:6px}.filter-more .pop-label:not(:first-child){margin-top:10px}.filter-more .pop-item{width:100%;min-height:30px;font-size:12px}.field-btn{display:flex;align-items:center;gap:10px;min-height:36px;padding:7px 12px;border:1px solid var(--line2);background:var(--field);white-space:nowrap;cursor:pointer}.field-btn:focus-visible,.field-btn:has(+.pop:popover-open){outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg)}.field-btn:disabled{color:var(--muted);cursor:default}.filter-more>.field-btn.on{color:var(--acc)}.field{display:grid;gap:6px}.field>span:first-child,.field>label{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-weight:500}.field small{font-weight:400;color:var(--muted);font-size:11.5px}.field .seg-btns{width:max-content;max-width:100%}.field .seg-btns>button{height:36px}.select{position:relative;display:inline-flex;min-width:0}.field .select{display:flex}.select>button{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:7px 10px 7px 12px;border:1px solid var(--line2);background:var(--field);text-align:left;white-space:nowrap;cursor:pointer;touch-action:manipulation}.select>button .grow{overflow:hidden;text-overflow:ellipsis}.select>button .ic{color:var(--dim);transition:transform .15s}.select>button[aria-expanded=true] .ic{transform:rotate(180deg)}.select>button:focus-visible,.select>button[aria-expanded=true]{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg)}.select>button:disabled{color:var(--muted);cursor:default}.select-pop{min-width:0;max-width:min(440px,calc(100vw - 16px));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line2) transparent}.select-pop .pop-item{white-space:nowrap}.select-pop .pop-item:hover{background:none}.select-pop .pop-item.on{background:var(--wash2)}.select-pop .pop-item>.ic{visibility:hidden}.select-pop .pop-item[aria-selected=true]>.ic{visibility:visible;color:var(--acc)}.select>button:disabled{opacity:.65;cursor:default}.select-pop .pop-item .pop-path{display:block;overflow:hidden;direction:rtl;text-align:left;white-space:nowrap;text-overflow:ellipsis;font-size:11px;color:var(--muted)}.select-pop .pop-item .grow{min-width:0;overflow:hidden;text-overflow:ellipsis}.select-pop .pop-item.action{margin-top:4px;color:var(--muted)}.select-pop .pop-item.action>.ic{visibility:visible;width:14px;height:14px}.select-pop .pop-item.action.on{color:var(--fg)}.seg-btns{display:flex;border:1px solid var(--line2)}.seg-btns>a,.seg-btns>button,.seg-btns .menu>button{display:flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-left:1px solid var(--line2);background:var(--panel);font-size:10.5px;letter-spacing:.14em;color:var(--muted);cursor:pointer}.seg-btns>button{border-top:0;border-right:0;border-bottom:0;text-transform:uppercase}.seg-btns>:first-child{border-left:0}.seg-btns>a:hover,.seg-btns>button:hover,.seg-btns .menu>button:hover{color:var(--fg)}.seg-btns [aria-current],.seg-btns [aria-checked=true],.seg-btns .on>button{background:var(--accbg);color:var(--acc)}.seg-btns>button:disabled{opacity:.45;color:var(--muted);cursor:not-allowed}.form-actions.end{justify-content:flex-end}.import{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:20px}.import-repos,.import-preview,.import-agents{display:grid;gap:12px}.import-preview{min-height:240px;padding:20px;border:1px solid var(--line2);background:var(--panel)}.import-preview h3{font-size:14px;font-weight:700}.repo-list{--max: 420px;min-height:240px;border:1px solid var(--line2);background:var(--panel)}.repo-list .pop-item .ic{color:var(--dim)}.repo-list .pop-item[aria-pressed=true]{background:var(--accbg);box-shadow:inset 2px 0 0 var(--acc)}.picks-list{display:grid;gap:12px}.picks-list b{font-weight:500}.picks-list .badge{margin-left:6px}.md{overflow-wrap:anywhere}.md :where(h3,h4,h5,h6){margin:0;font-size:13px;font-weight:700}.md h3{font-size:14px}.md ul{padding-left:20px;list-style:disc}.md ol{padding-left:20px;list-style:decimal}.md pre{margin:0;padding:8px 12px;overflow-x:auto;background:var(--wash)}.md pre code{padding:0;background:none}.collapse{position:relative}.collapse:not(.open){padding-bottom:6px}.collapse-box{box-sizing:content-box;max-height:calc(var(--lines) * 1lh + 44px);overflow:hidden}.collapse.open>.collapse-box{max-height:none}.collapse.long:not(.open)>.collapse-box{mask-image:linear-gradient(#000 calc(100% - 52px),transparent calc(100% - 36px))}.collapse>.btn.more-toggle{position:absolute;z-index:1;left:50%;bottom:6px;translate:-50% 0}.collapse.open>.btn.more-toggle{position:static;display:flex;margin:0 auto 12px;translate:none}
@@ -1 +0,0 @@
1
- .app{--side: 232px;display:grid;grid-template-columns:var(--side) minmax(0,1fr);grid-template-rows:56px 1fr;min-height:100vh}.top{grid-column:1 / -1;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px 0 20px;background:var(--bg);border-bottom:1px solid var(--line2)}.top-l,.top-r{display:flex;align-items:center;gap:10px;min-width:0}.lockup{display:grid}.lockup small{font-weight:400;font-size:8px;line-height:8px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.side{position:sticky;top:56px;z-index:5;height:calc(100vh - 56px);display:flex;flex-direction:column;justify-content:space-between;padding:16px 12px;border-right:1px solid var(--line)}.side nav{display:grid;gap:2px}.side nav a{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;color:var(--muted);border-left:2px solid transparent}.side nav a:hover{color:var(--fg);background:var(--wash)}.side nav a[aria-current]{color:var(--fg);background:var(--wash2);border-left-color:var(--deep)}.side nav .n{margin-left:auto;background:var(--accbg);color:var(--acc)}.dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--warn)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--okbg)}.server>button{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);font-size:12px;text-align:left;cursor:pointer}.server>button:hover{background:var(--wash)}.server>button .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.server .ic{color:var(--dim);width:14px}.server .pop{width:max-content;max-width:calc(100vw - 32px)}.server .kv dd{white-space:nowrap}.pop-head{display:flex;align-items:center;gap:12px;padding:8px 10px 12px;min-width:0}.pop-head b,.pop-head small{display:block;overflow:hidden;text-overflow:ellipsis}.pop-head small,.pop-item small{color:var(--muted);font-size:11.5px}.org,.avatar{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;background:var(--wash2);font-weight:700;font-size:12px}.avatar{width:32px;height:32px}.avatar-btn{display:grid;place-items:center;width:32px;height:32px;background:var(--fg);color:var(--bg);font-weight:700;cursor:pointer}.kv{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.pop .kv{padding:6px 10px 10px;font-size:12px}.theme .ic.sun,.theme .ic.moon,.theme .ic.sys{display:none}:root[data-theme=light] .theme .ic.sun,:root[data-theme=dark] .theme .ic.moon,:root:not([data-theme]) .theme .ic.sys{display:block}.app>.auth{position:fixed;inset:0;z-index:60;overflow:auto;background:var(--bg)}@media(max-width:760px){.app{grid-template-columns:minmax(0,1fr)}.top{padding:0 10px}.side{position:fixed;top:56px;left:0;bottom:0;height:auto;width:min(280px,84vw);z-index:30;background:var(--bg);border-right:1px solid var(--line2);transform:translate(-100%);transition:transform .2s}}.side-foot{display:grid;gap:8px}.side-toggle{justify-self:end;color:var(--dim)}.side-min .side-toggle{justify-self:center}.app.side-min{--side: 60px}.side-min .top .lockup{display:none}.side-min .side{padding-inline:10px}.side-min .side nav a{justify-content:center;gap:0;padding:0;font-size:0}.side-min .side nav .n{display:none}.side-min .server>button{justify-content:center;padding:10px 0}.side-min .server>button :is(.grow,.ic){display:none}@media(max-width:760px){.side-toggle{display:none}.app.side-min{grid-template-columns:minmax(0,1fr)}}.auth{display:grid;min-height:100vh}.auth-side{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:40px 24px 72px}.auth-frame{width:100%;max-width:440px}.auth-frame .bar{min-height:32px;font-size:10px}.auth-frame .brand{font-size:12px}.tag{margin-left:auto;padding:1px 8px;background:var(--deep);color:#fff}.auth-body{display:grid;gap:14px;padding:28px 24px 26px}.auth-body h1{font-size:22px}.auth-body .lead{margin:0 0 6px}.auth-body form{display:grid;gap:14px}.auth-links{position:absolute;bottom:24px;left:0;right:0;display:flex;justify-content:center;gap:24px;font-size:9px;color:var(--muted)}.auth-links a:hover{color:var(--fg)}.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.brand .coder-mark{flex:none;position:relative;top:-1px;width:16px;height:16px;fill:currentColor}th .ic{width:12px;height:12px}.scrim{display:none}@media(max-width:760px){.drawer .side{transform:none}.scrim{display:block;position:fixed;inset:56px 0 0;z-index:25;background:#0b0c1073;opacity:0;pointer-events:none;transition:opacity .2s}.drawer .scrim{opacity:1;pointer-events:auto}}@media(min-width:761px){.only-m{display:none}}.pop,.more-list{position:fixed;inset:auto;margin:0;padding:6px;white-space:normal;max-height:calc(100vh - 24px);overflow-y:auto;border:1px solid var(--line2);background:var(--tile);color:inherit;box-shadow:0 12px 32px #0000002e}:where(.menu,.more)>button{padding:0;border:0;background:none;color:inherit;cursor:pointer}.menu>.pop,.more>.more-list{inset:0;margin:auto}@supports (anchor-scope: --menu){.menu,.more{anchor-scope:--menu}:where(.menu,.more)>button{anchor-name:--menu}.menu>.pop,.more>.more-list{position-anchor:--menu;position-try-fallbacks:flip-block;inset:anchor(bottom) auto auto anchor(left);margin:8px 0 0}.menu.right>.pop,.more>.more-list{inset:anchor(bottom) anchor(right) auto auto}.menu.up>.pop{inset:auto anchor(right) anchor(top) anchor(left);margin:0 0 8px}}.pop{z-index:40;min-width:180px}.pop:has(.pop-label,.pop-item.rich,.pop-row){min-width:260px}.menu.up>.pop{min-width:0}.pop.wide{width:min(320px,calc(100vw - 32px))}.pop hr{border:0;border-top:1px solid var(--line);margin:6px 0}.pop-label{padding:8px 10px 4px;font-size:10px;color:var(--dim);border-top:1px solid var(--line)}.pop-head+.pop-label,.pop .pop-label:first-child{border-top:0}.pop-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;background:none;text-align:left;cursor:pointer}.pop-item:hover{background:var(--wash)}.pop-item.danger:hover{background:var(--badbg);color:var(--bad)}.pop-item:disabled{cursor:default}.pop-item:disabled:hover{background:none}.pop-item small{display:block}.pop-item.rich{align-items:flex-start}.pop-item.rich .ic{margin-top:2px}.pop-item[role=menuitemradio]>.ic:last-child{visibility:hidden}.pop-item[role=menuitemradio][aria-checked=true]>.ic:last-child{visibility:visible;color:var(--acc)}.pop form{margin:0}.pop-note{padding:0 10px 8px;font-size:11.5px;color:var(--muted)}.more{flex:none}.more>button{padding:0 7px;border:1px solid var(--line2);color:var(--fg);font-size:11.5px;white-space:nowrap}.more:hover>button,.more:has(:popover-open)>button{border-color:var(--acc);color:var(--acc)}.more-list{--max: 220px;z-index:45;min-width:220px}.more-list:before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.more-list:popover-open{display:grid;gap:4px}@media(max-width:760px){.pop.wide{min-width:min(320px,calc(100vw - 32px))}}.pop .add-models{margin-top:4px;color:var(--muted)}.pop .add-models .ic{width:14px;height:14px}.toasts{position:fixed;top:16px;right:16px;bottom:16px;z-index:50;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;width:min(340px,calc(100vw - 32px));pointer-events:none}.toast{position:relative;display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line2);background:var(--tile);box-shadow:0 12px 32px #0000002e;pointer-events:auto;cursor:pointer;animation:toast-in .15s ease-out}.toast:hover{background:linear-gradient(var(--wash),var(--wash)),var(--tile)}.toast:has(.cover:focus-visible){outline:2px solid var(--acc);outline-offset:2px}.toast-head{display:flex;align-items:center;gap:10px;margin:0}.toast-head .cover{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg);text-decoration:none;outline:none}.toast-line{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.toast.err .toast-head .cover{color:var(--bad)}.toast.err .toast-line{white-space:normal}@keyframes toast-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.st{display:inline-flex;align-items:baseline;gap:7px;padding:2px 8px;font-size:10px;letter-spacing:.14em;white-space:nowrap;color:var(--muted);background:var(--wash)}.st i{align-self:center;width:7px;height:7px;border-radius:50%;background:currentColor}.st.running{color:var(--acc);background:var(--accbg)}.st.running i{width:9px;height:9px;background:none;border:1.5px solid currentColor;border-top-color:transparent;animation:spin 1s linear infinite}.st.waiting{color:var(--warn);background:var(--warnbg)}.st.completed{color:var(--ok);background:var(--okbg)}.st.failed{color:var(--bad);background:var(--badbg)}.st.queued i,.st.cancelled i{background:none;border:1.5px solid currentColor}.stats .st{justify-self:start}.page.narrow{max-width:760px}.meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.page .head,.page .hero{position:sticky;top:56px;z-index:10;margin-inline:-40px;padding:0 40px 6px;background:var(--bg);overflow-anchor:none}.page{--stuck: calc(56px + var(--head, 0px) + var(--tabs, 0px))}.page:has(.tabs:not(.vertical)){--tabs: 40px}.page *{scroll-margin-top:calc(var(--stuck) + 16px)}.back{display:inline-flex;align-items:center;gap:4px;margin-bottom:6px;font-size:12px;color:var(--muted)}.stuck .back{display:none}.back:hover{color:var(--fg)}.back .ic{width:14px;height:14px}.title-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;min-width:0}.title-row h1{min-width:0}.head .title-row{flex-wrap:nowrap}.head .title-row h1{flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.head .title-row .meta{flex:none}@media(max-width:760px){.page .head,.page .hero{margin-inline:-16px;padding-inline:16px}.head .title-row{flex-wrap:wrap}}.head .meta:empty{min-height:20px}.sentinel{display:block;height:0;margin-bottom:-20px}.page .head.stuck,.page .hero.stuck{padding-top:10px}.stuck{border-bottom:1px solid var(--line2);align-items:center;flex-wrap:nowrap}.stuck h1{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stuck .lead{display:none}.stuck .title-row{flex-wrap:nowrap}.stuck .meta{flex-wrap:nowrap;overflow:hidden}.stuck>div:first-child,.stuck>.grow{flex:1 1 auto;min-width:0}.stuck .actions{flex:none;flex-wrap:nowrap;width:auto;justify-content:flex-end}.stuck .hero-mark{width:28px;height:28px;font-size:13px}.stuck.hero{gap:12px}.hero.stuck .title-row .badge{display:none}@media(max-width:760px){.stuck .actions>:not(.flash,dialog)~:not(.flash,dialog){display:none}}.bar-r{display:flex;align-items:center;margin-block:-2px;gap:8px;flex-wrap:wrap;justify-content:flex-end}.card.accent{border-color:var(--warn)}.card.danger{border-color:var(--bad)}.empty{display:grid;justify-items:center;gap:6px;padding:32px 16px;border:1px dashed var(--line2);text-align:center;color:var(--muted)}.empty b{color:var(--fg);font-weight:500}.card .empty{border:0}.loading{display:flex;align-items:center;justify-content:center;gap:10px;flex:1 0 auto;min-height:var(--h, 240px);color:var(--dim);font-size:12px}.loading.inline{display:inline-flex;min-height:0}.card:has(>.loading:not([style])){flex:1 0 auto;display:flex;flex-direction:column}.loading>span{display:inline-flex;align-items:center;gap:10px;animation:loader-in 0s 60ms both}.loading .spin{flex:none;width:12px;height:12px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.loading .dots{display:inline-flex;gap:3px}.loading .dots>b{width:4px;height:4px;border-radius:50%;background:currentColor;animation:dots 1.2s ease-in-out infinite}.loading .dots>b:nth-child(2){animation-delay:.2s}.loading .dots>b:nth-child(3){animation-delay:.4s}@keyframes dots{0%,80%,to{opacity:.25}40%{opacity:1}}.tabs{display:flex;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none;box-shadow:inset 0 -1px var(--line2)}.page .tabs:not(.vertical){height:40px;margin-top:-8px;position:sticky;top:calc(56px + var(--head, 0px));z-index:9;background:var(--bg)}.tabs a,.tabs>button{display:flex;flex:none;align-items:center;gap:8px;padding:10px 12px;border:0;border-bottom:2px solid transparent;background:none;font-size:10.5px;color:var(--muted);white-space:nowrap;cursor:pointer}.tabs a:hover,.tabs>button:hover{color:var(--fg)}.tabs:focus{outline:none}.tabs a:focus-visible,.tabs>button:focus-visible{outline-offset:-2px}.tabs a[aria-current],.tabs a[data-pending],.tabs>button[aria-current]{color:var(--fg);border-bottom-color:var(--fg)}.tabs:has(a[data-pending]) a[aria-current]:not([data-pending]){color:var(--muted);border-bottom-color:transparent}.tabs .count{color:var(--dim)}@property --tabs-fade{syntax: "<length>"; inherits: false; initial-value: 0px;}@keyframes tabs-fade{0%{--tabs-fade: 40px}to{--tabs-fade: 0px}}.tabs{mask-image:linear-gradient(to left,transparent,#000 var(--tabs-fade));animation:tabs-fade linear both;animation-timeline:scroll(self inline)}.tabs[aria-hidden]>*{visibility:hidden}.hero{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap}.hero>.grow{flex:1 1 280px}.hero-mark{display:grid;place-items:center;flex:none;width:64px;height:64px;background:var(--blue);color:#fff;font-size:26px;font-weight:700}@media(max-width:760px){.hero{gap:14px}.hero-mark{width:48px;height:48px;font-size:20px}.hero .lead{display:-webkit-box;min-height:2lh;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}}.head.tools{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px 24px;min-height:36px}.head.tools>div:first-child{display:contents}.head.tools .lead{grid-row:2;grid-column:1 / -1}.head.tools>.filters{grid-row:1;grid-column:2;justify-content:flex-end}.head.tools>.filters:last-child{grid-column:2 / -1}.head.tools>.actions{grid-row:1;grid-column:3}.filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search{position:relative;display:block}.tab-body .filters{position:sticky;top:calc(56px + var(--head, 0px) + var(--tabs, 0px));z-index:8;margin-block:-8px;padding-block:8px;background:var(--bg)}.filters .search{flex:1 1 240px;max-width:360px}.search .ic{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--dim);pointer-events:none}label.search input[type=search]{padding-left:32px}.filters .select{flex:none}.filters .end{margin-left:auto}.vsearch .search{width:min(280px,100%)}@media(max-width:760px){.head.tools{grid-template-columns:minmax(0,1fr) auto;row-gap:12px}.head.tools>.filters{grid-row:3;grid-column:1 / -1}.head.tools>.actions{grid-column:2;width:auto}.filters .search{max-width:none;flex-basis:100%}.filters .select{flex:1 1 0}.filters .select>button{gap:4px;padding-inline:8px}.head.tools.stuck>.filters>.select{display:none}}.filter-more>.pop:popover-open{display:block;width:min(260px,calc(100vw - 32px));max-height:calc(100vh - 160px);overflow-y:auto;padding:6px}.filter-more .pop-label:not(:first-child){margin-top:10px}.filter-more .pop-item{width:100%;min-height:30px;font-size:12px}.field-btn{display:flex;align-items:center;gap:10px;min-height:36px;padding:7px 12px;border:1px solid var(--line2);background:var(--field);white-space:nowrap;cursor:pointer}.field-btn:focus-visible,.field-btn:has(+.pop:popover-open){outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg)}.field-btn:disabled{color:var(--muted);cursor:default}.filter-more>.field-btn.on{color:var(--acc)}.link-pill{color:var(--acc);text-transform:none;letter-spacing:.02em}.link-pill .ic{width:12px;height:12px}.pf{display:inline-flex;flex:none;align-items:center;gap:7px;color:var(--muted);white-space:nowrap}.brand-icon{width:12px;height:12px;flex:none}.brand-icon>svg{display:block;width:100%;height:100%}.badge{display:inline-flex;align-items:center;gap:6px;padding:1px 7px;border:1px solid var(--line2);font-size:10px;letter-spacing:.14em;color:var(--muted);white-space:nowrap}.badge.acc{border-color:transparent;background:var(--accbg);color:var(--acc)}.badge.ok{border-color:transparent;background:var(--okbg);color:var(--ok)}.badge.warn{border-color:transparent;background:var(--warnbg);color:var(--warn)}.badge.solid{border-color:var(--fg);background:var(--fg);color:var(--bg)}a.badge:hover,button.badge:hover{border-color:var(--acc)}button.badge{cursor:pointer}.chips{display:inline-flex;flex-wrap:wrap;gap:4px}.chip{line-height:18px;padding:0 6px;border:1px solid var(--line2);font-size:11.5px;color:var(--muted)}.id{font-size:11.5px;color:var(--dim)}button.chip{background:none;cursor:pointer}button.chip:hover,button.chip[aria-pressed=true]{border-color:var(--acc);color:var(--acc)}.tasks{table-layout:fixed;min-width:720px}.tasks th:nth-child(2){width:160px}.tasks th:nth-child(3){width:140px}.tasks th:nth-child(4){width:130px}.tasks th:nth-child(5){width:150px}.tasks td{padding-block:9px;vertical-align:middle}.tasks .cover{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.tasks td:first-child .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tasks td:first-child .sub{margin-top:1px}@media(max-width:760px){.tasks{min-width:0}.tasks td:nth-child(3){display:flex;align-items:center;justify-self:end}.tasks td.when,.tasks td.num{font-size:11.5px}.tasks td.num{justify-self:end;color:var(--muted)}}.source{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.source .ic{color:var(--dim)}.tasks th.num,.tasks td.num{padding-right:64px}.tasks td.num{position:relative}.row-acts{position:absolute;top:50%;right:8px;z-index:1;translate:0 -50%;opacity:0;transition:opacity .12s}.tasks tr:is(:hover,:focus-within) .row-acts,.row-acts:has(.pop:popover-open){opacity:1}dialog.confirm{width:min(420px,calc(100vw - 32px));margin:auto;padding:0;border:1px solid var(--line2);background:var(--tile);color:inherit;text-align:left;white-space:normal;box-shadow:0 12px 32px #0000002e}dialog.confirm::backdrop{background:#00000073}dialog.confirm form{display:grid;gap:8px;padding:20px}dialog.confirm h2{font-size:15px;font-weight:700;overflow-wrap:anywhere}dialog.confirm p{color:var(--muted)}dialog.confirm .actions{justify-content:flex-end;margin-top:12px}.btn.destructive{background:var(--bad);border-color:var(--bad);color:var(--bg)}.field{display:grid;gap:6px}.field>span:first-child,.field>label{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-weight:500}.field small{font-weight:400;color:var(--muted);font-size:11.5px}.field .seg-btns{width:max-content;max-width:100%}.field .seg-btns>button{height:36px}.select{position:relative;display:inline-flex;min-width:0}.field .select{display:flex}.select>button{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:7px 10px 7px 12px;border:1px solid var(--line2);background:var(--field);text-align:left;white-space:nowrap;cursor:pointer;touch-action:manipulation}.select>button .grow{overflow:hidden;text-overflow:ellipsis}.select>button .ic{color:var(--dim);transition:transform .15s}.select>button[aria-expanded=true] .ic{transform:rotate(180deg)}.select>button:focus-visible,.select>button[aria-expanded=true]{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg)}.select>button:disabled{color:var(--muted);cursor:default}.select-pop{min-width:0;max-width:min(440px,calc(100vw - 16px));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line2) transparent}.select-pop .pop-item{white-space:nowrap}.select-pop .pop-item:hover{background:none}.select-pop .pop-item.on{background:var(--wash2)}.select-pop .pop-item>.ic{visibility:hidden}.select-pop .pop-item[aria-selected=true]>.ic{visibility:visible;color:var(--acc)}.select>button:disabled{opacity:.65;cursor:default}.select-pop .pop-item .pop-path{display:block;overflow:hidden;direction:rtl;text-align:left;white-space:nowrap;text-overflow:ellipsis;font-size:11px;color:var(--muted)}.select-pop .pop-item .grow{min-width:0;overflow:hidden;text-overflow:ellipsis}.select-pop .pop-item.action{margin-top:4px;color:var(--muted)}.select-pop .pop-item.action>.ic{visibility:visible;width:14px;height:14px}.select-pop .pop-item.action.on{color:var(--fg)}.tail{display:flex;align-items:center;justify-content:center;min-height:48px;padding:0 14px;color:var(--dim);font-size:11.5px}.tail.err{color:var(--bad)}.composer{display:flex;flex-wrap:wrap;padding:5px 5px 5px 8px;border:1px solid var(--line2);background:var(--field)}.composer:has(textarea:focus){border-color:var(--acc)}.composer textarea{flex:1 1 100%;width:auto;field-sizing:content;min-height:22px;max-height:8lh;margin:6px 0;padding:0 4px;border:0;background:none;box-shadow:none;resize:none}.composer textarea:focus{box-shadow:none}.composer-line{display:flex;align-items:center;gap:2px;width:100%;height:30px;min-width:0}.composer-line .select{flex:0 1 auto;max-width:220px}.composer-line .select>button,.composer-line .quiet{margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:3px 8px;border:1px solid transparent;background:none;font-size:11.5px;color:var(--muted);white-space:nowrap;cursor:pointer}.composer-line .select>button:hover,.composer-line .quiet:hover{background:var(--wash)}.composer-line .send{flex:none;margin-left:4px}.composer-line .send[aria-busy=true] .ic{visibility:hidden}.composer>.flash{flex-basis:100%;margin:0 4px 2px}.composer-settings:popover-open{display:block;width:min(320px,calc(100vw - 32px));overflow-y:auto;padding:6px}.composer-settings>.pop-label:not(:first-child){margin-top:10px}.composer-settings .pop-item{width:100%;min-height:30px;font-size:12px}.composer-settings .pop-group{margin:6px 10px 2px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.composer-settings .select{margin:2px 6px 4px}.set-label{font-size:11px;color:var(--muted)}.composer-settings .select>button{min-height:30px;padding:4px 8px 4px 10px;font-size:12px}.model-pick input[aria-expanded=true]{cursor:text}.model-pick input[aria-expanded=true]::placeholder{color:var(--dim)}.model-pick>.ic{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--dim);pointer-events:none}.model-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:1;max-height:260px;overflow-y:auto;padding:4px;border:1px solid var(--line2);background:var(--tile);box-shadow:0 12px 32px #0000002e;scrollbar-width:thin}.model-list .pop-item>.ic{visibility:hidden}.model-list .pop-item[aria-selected=true]>.ic{visibility:visible;color:var(--acc)}.model-list .pop-item,.composer-slash .pop-item{gap:10px;padding:6px 10px}.model-list .pop-item:hover,.composer-slash .pop-item:hover{background:none}.model-list .pop-item.on,.composer-slash .pop-item.on{background:var(--wash2)}.model-list small,.composer-slash small{font-size:11px;color:var(--dim);white-space:nowrap}.composer-slash{max-height:min(360px,50vh);overflow-y:auto}.composer-slash .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-slash>.loading{padding:6px 10px}.notice.slim{flex-wrap:nowrap;gap:10px;padding:8px 8px 8px 14px;font-size:12px}.notice.slim .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card>.notice.slim{margin:12px 16px 0}dialog.compose-dialog{width:min(760px,calc(100vw - 32px));margin:14vh auto auto;padding:0;border:1px solid var(--line2);background:var(--tile);color:inherit;box-shadow:0 12px 32px #0000002e}dialog.compose-dialog::backdrop{background:light-dark(rgba(0,0,0,.45),rgba(0,0,0,.72))}.compose-dialog>header{display:flex;align-items:baseline;gap:10px;padding:10px 6px 0 16px}.compose-dialog h2{font-size:15px;font-weight:700}.compose-dialog>header .icon-btn{align-self:center;width:30px;height:30px;margin-left:auto}.compose-dialog .composer,.compose-dialog>.loading,.compose-dialog>.flash,.compose-dialog>.notice{margin:10px 16px 16px}@media(max-width:760px){.composer-settings:popover-open{right:16px!important;grid-template-columns:minmax(0,1fr);gap:4px}.notice.slim .grow{white-space:normal}.composer-settings .set-label:not(:first-child){margin-top:6px}}.pop-row{display:flex;align-items:center}.pop-row>.pop-item{flex:1 1 auto}.pop-row>.pop-item small{margin-right:6px;color:var(--muted);font-size:11px}.pop-chev{display:inline-grid;place-items:center;flex:none;align-self:stretch;aspect-ratio:1;width:auto;border:0;background:none;color:var(--dim);cursor:pointer}.pop-chev:focus-visible{outline-offset:-2px}.pop-chev:hover,.pop-chev[aria-expanded=true]{color:var(--fg);background:var(--wash)}.pop-chev .ic{width:14px;height:14px;transition:rotate .15s}.pop-chev[aria-expanded=true] .ic{rotate:90deg}.pop-sub{padding-left:32px}.composer-line .folder{display:contents}.composer-line input.folder-path{flex:0 1 260px;min-width:0;min-height:0;height:28px;padding:3px 8px;border:1px solid transparent;background:none;font-size:11.5px}.composer-line input.folder-path:focus{border-color:var(--line2);box-shadow:none}.composer-line .folder-busy{flex:none;font-size:11.5px;color:var(--muted)}.composer>.folder-hint{flex:1 1 100%;padding:0 8px 4px;font-size:11px;color:var(--muted)}.composer>.flash{flex:1 1 100%;padding:2px 8px 4px}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px 20px;margin:0}.facts dt{font-size:10px;color:var(--muted)}.facts dd{margin:4px 0 0;overflow-wrap:anywhere}.versions li{display:flex;align-items:first baseline;gap:14px;padding:12px 16px;border-top:1px solid var(--line)}.md{overflow-wrap:anywhere}.md :where(h3,h4,h5,h6){margin:0;font-size:13px;font-weight:700}.md h3{font-size:14px}.md ul{padding-left:20px;list-style:disc}.md ol{padding-left:20px;list-style:decimal}.md pre{margin:0;padding:8px 12px;overflow-x:auto;background:var(--wash)}.md pre code{padding:0;background:none}.collapse{position:relative}.collapse:not(.open){padding-bottom:6px}.collapse-box{box-sizing:content-box;max-height:calc(var(--lines) * 1lh + 44px);overflow:hidden}.collapse.open>.collapse-box{max-height:none}.collapse.long:not(.open)>.collapse-box{mask-image:linear-gradient(#000 calc(100% - 52px),transparent calc(100% - 36px))}.collapse>.btn.more-toggle{position:absolute;z-index:1;left:50%;bottom:6px;translate:-50% 0}.collapse.open>.btn.more-toggle{position:static;display:flex;margin:0 auto 12px;translate:none}