@openagt/dashboard 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (965) hide show
  1. package/README.md +14 -17
  2. package/dist/agent-view.d.ts +3 -3
  3. package/dist/bridge-browser.d.ts +4 -4
  4. package/dist/bridge-browser.d.ts.map +1 -1
  5. package/dist/bridge-browser.js +8 -8
  6. package/dist/bridge-browser.js.map +1 -1
  7. package/dist/built-in.d.ts +45 -14
  8. package/dist/built-in.d.ts.map +1 -1
  9. package/dist/built-in.js +122 -27
  10. package/dist/built-in.js.map +1 -1
  11. package/dist/chrome-extension/background.js +11 -11
  12. package/dist/chrome-extension/content.js +37 -37
  13. package/dist/chrome-extension/driver-plan.js +1 -1
  14. package/dist/chrome-extension/fingerprint.js +1 -1
  15. package/dist/chrome-extension/manifest.json +3 -3
  16. package/dist/chrome-extension/options.html +4 -4
  17. package/dist/chrome-extension/options.js +4 -4
  18. package/dist/cli.d.ts +1 -1
  19. package/dist/cli.js +7 -7
  20. package/dist/cli.js.map +1 -1
  21. package/dist/client.d.ts +1 -1
  22. package/dist/client.js +2 -2
  23. package/dist/cloud-run-state.d.ts +1 -1
  24. package/dist/cloud-scratch-refs.js +7 -7
  25. package/dist/cloud-scratch-refs.js.map +1 -1
  26. package/dist/cloud-work.js +2 -2
  27. package/dist/daemon-runtime.d.ts +5 -4
  28. package/dist/daemon-runtime.d.ts.map +1 -1
  29. package/dist/daemon-runtime.js +59 -10
  30. package/dist/daemon-runtime.js.map +1 -1
  31. package/dist/daemon-services.d.ts +4 -3
  32. package/dist/daemon-services.d.ts.map +1 -1
  33. package/dist/daemon-services.js +14 -8
  34. package/dist/daemon-services.js.map +1 -1
  35. package/dist/daemon-tick.js +1 -1
  36. package/dist/daemon.d.ts +1 -12
  37. package/dist/daemon.d.ts.map +1 -1
  38. package/dist/daemon.js +9 -32
  39. package/dist/daemon.js.map +1 -1
  40. package/dist/dashboard/agent-handoff.d.ts +4 -4
  41. package/dist/dashboard/agent-handoff.js +7 -7
  42. package/dist/dashboard/agent-handoff.js.map +1 -1
  43. package/dist/dashboard/bridge-endpoints.d.ts +3 -3
  44. package/dist/dashboard/bridge-endpoints.js +3 -3
  45. package/dist/dashboard/content-type.js +1 -1
  46. package/dist/dashboard/docs.d.ts +1 -1
  47. package/dist/dashboard/docs.js +1 -1
  48. package/dist/dashboard/git-status.d.ts +1 -1
  49. package/dist/dashboard/index.d.ts +1 -1
  50. package/dist/dashboard/index.d.ts.map +1 -1
  51. package/dist/dashboard/interventions.d.ts +2 -2
  52. package/dist/dashboard/open-in-app.d.ts +3 -3
  53. package/dist/dashboard/open-in-app.js +4 -4
  54. package/dist/dashboard/open-questions.d.ts +2 -2
  55. package/dist/dashboard/projects.d.ts +6 -5
  56. package/dist/dashboard/projects.d.ts.map +1 -1
  57. package/dist/dashboard/projects.js.map +1 -1
  58. package/dist/dashboard/pull-requests.d.ts +5 -5
  59. package/dist/dashboard/pull-requests.d.ts.map +1 -1
  60. package/dist/dashboard/pull-requests.js +2 -2
  61. package/dist/dashboard/pull-requests.js.map +1 -1
  62. package/dist/dashboard/relay-endpoints.d.ts +3 -3
  63. package/dist/dashboard/relay-endpoints.js +1 -1
  64. package/dist/dashboard/remote-run.d.ts +5 -5
  65. package/dist/dashboard/remote-run.js +3 -3
  66. package/dist/dashboard/rpc-serve.d.ts +7 -4
  67. package/dist/dashboard/rpc-serve.d.ts.map +1 -1
  68. package/dist/dashboard/rpc-serve.js.map +1 -1
  69. package/dist/dashboard/run-inbox.d.ts +2 -2
  70. package/dist/dashboard/run-inbox.js +4 -4
  71. package/dist/dashboard/run-inbox.js.map +1 -1
  72. package/dist/dashboard/server.d.ts +6 -4
  73. package/dist/dashboard/server.d.ts.map +1 -1
  74. package/dist/dashboard/server.js +3 -2
  75. package/dist/dashboard/server.js.map +1 -1
  76. package/dist/dashboard/start-branch.d.ts +32 -0
  77. package/dist/dashboard/start-branch.d.ts.map +1 -0
  78. package/dist/dashboard/start-branch.js +47 -0
  79. package/dist/dashboard/start-branch.js.map +1 -0
  80. package/dist/dashboard/static.js +1 -1
  81. package/dist/dashboard/types.d.ts +29 -3
  82. package/dist/dashboard/types.d.ts.map +1 -1
  83. package/dist/dashboard/web-start-endpoints.d.ts +1 -1
  84. package/dist/dashboard/web-start-endpoints.d.ts.map +1 -1
  85. package/dist/dashboard/web-start-endpoints.js +1 -1
  86. package/dist/dashboard/web-start-endpoints.js.map +1 -1
  87. package/dist/dashboard-bundle/assets/main-Q7JMdMJI.css +2 -0
  88. package/dist/dashboard-bundle/assets/main-fDZWGOub.js +140 -0
  89. package/dist/dashboard-bundle/assets/{module-jASZmfSB.js → module-gKz-ZvkG.js} +4 -4
  90. package/dist/dashboard-bundle/host/module.js +1 -1
  91. package/dist/dashboard-bundle/index.html +6 -6
  92. package/dist/dashboard-rpc/context.d.ts +2 -0
  93. package/dist/dashboard-rpc/context.d.ts.map +1 -1
  94. package/dist/dashboard-rpc/context.js +4 -0
  95. package/dist/dashboard-rpc/context.js.map +1 -1
  96. package/dist/dashboard-rpc/control.d.ts +1 -1
  97. package/dist/dashboard-rpc/control.js +3 -3
  98. package/dist/dashboard-rpc/control.js.map +1 -1
  99. package/dist/dashboard-rpc/events.d.ts +3 -3
  100. package/dist/dashboard-rpc/index.d.ts +2 -1
  101. package/dist/dashboard-rpc/index.d.ts.map +1 -1
  102. package/dist/dashboard-rpc/index.js +4 -2
  103. package/dist/dashboard-rpc/index.js.map +1 -1
  104. package/dist/dashboard-rpc/modules.d.ts +8 -6
  105. package/dist/dashboard-rpc/modules.d.ts.map +1 -1
  106. package/dist/dashboard-rpc/modules.js +8 -6
  107. package/dist/dashboard-rpc/modules.js.map +1 -1
  108. package/dist/dashboard-rpc/preferences.d.ts +2 -2
  109. package/dist/dashboard-rpc/preferences.d.ts.map +1 -1
  110. package/dist/dashboard-rpc/preferences.js +2 -2
  111. package/dist/dashboard-rpc/preferences.js.map +1 -1
  112. package/dist/dashboard-rpc/projects.d.ts +29 -3
  113. package/dist/dashboard-rpc/projects.d.ts.map +1 -1
  114. package/dist/dashboard-rpc/projects.js +57 -8
  115. package/dist/dashboard-rpc/projects.js.map +1 -1
  116. package/dist/dashboard-rpc/reads.d.ts +3 -3
  117. package/dist/dashboard-rpc/reads.js +1 -1
  118. package/dist/dashboard-rpc/skills.d.ts +80 -0
  119. package/dist/dashboard-rpc/skills.d.ts.map +1 -0
  120. package/dist/dashboard-rpc/skills.js +84 -0
  121. package/dist/dashboard-rpc/skills.js.map +1 -0
  122. package/dist/dashboard-rpc/test-context.d.ts.map +1 -1
  123. package/dist/dashboard-rpc/test-context.js +4 -3
  124. package/dist/dashboard-rpc/test-context.js.map +1 -1
  125. package/dist/event-stream.d.ts +1 -1
  126. package/dist/event-stream.js +1 -1
  127. package/dist/events.d.ts +8 -8
  128. package/dist/events.d.ts.map +1 -1
  129. package/dist/index.d.ts +3 -2
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/install.d.ts +9 -7
  132. package/dist/install.d.ts.map +1 -1
  133. package/dist/install.js +28 -14
  134. package/dist/install.js.map +1 -1
  135. package/dist/module-server.d.ts +1 -1
  136. package/dist/module-types/dashboard/components/ui/switch.d.ts +7 -0
  137. package/dist/module-types/dashboard/lib/route.d.ts +2 -1
  138. package/dist/module-types/dashboard/lib/use-modules.d.ts +4 -3
  139. package/dist/module-types/dashboard/module/index.d.ts +6 -5
  140. package/dist/module-types/src/agent-view.d.ts +3 -3
  141. package/dist/module-types/src/bridge-browser.d.ts +4 -4
  142. package/dist/module-types/src/built-in.d.ts +45 -14
  143. package/dist/module-types/src/client.d.ts +1 -1
  144. package/dist/module-types/src/cloud-run-state.d.ts +1 -1
  145. package/dist/module-types/src/dashboard/agent-handoff.d.ts +4 -4
  146. package/dist/module-types/src/dashboard/bridge-endpoints.d.ts +3 -3
  147. package/dist/module-types/src/dashboard/docs.d.ts +1 -1
  148. package/dist/module-types/src/dashboard/git-status.d.ts +1 -1
  149. package/dist/module-types/src/dashboard/interventions.d.ts +2 -2
  150. package/dist/module-types/src/dashboard/open-in-app.d.ts +3 -3
  151. package/dist/module-types/src/dashboard/open-questions.d.ts +2 -2
  152. package/dist/module-types/src/dashboard/projects.d.ts +6 -5
  153. package/dist/module-types/src/dashboard/pull-requests.d.ts +5 -5
  154. package/dist/module-types/src/dashboard/remote-run.d.ts +5 -5
  155. package/dist/module-types/src/dashboard/rpc-serve.d.ts +7 -4
  156. package/dist/module-types/src/dashboard/run-inbox.d.ts +2 -2
  157. package/dist/module-types/src/dashboard/start-branch.d.ts +31 -0
  158. package/dist/module-types/src/dashboard/types.d.ts +29 -3
  159. package/dist/module-types/src/dashboard-rpc/context.d.ts +2 -0
  160. package/dist/module-types/src/dashboard-rpc/control.d.ts +1 -1
  161. package/dist/module-types/src/dashboard-rpc/events.d.ts +3 -3
  162. package/dist/module-types/src/dashboard-rpc/index.d.ts +2 -1
  163. package/dist/module-types/src/dashboard-rpc/modules.d.ts +8 -6
  164. package/dist/module-types/src/dashboard-rpc/preferences.d.ts +2 -2
  165. package/dist/module-types/src/dashboard-rpc/projects.d.ts +29 -3
  166. package/dist/module-types/src/dashboard-rpc/reads.d.ts +3 -3
  167. package/dist/module-types/src/dashboard-rpc/skills.d.ts +79 -0
  168. package/dist/module-types/src/event-stream.d.ts +1 -1
  169. package/dist/module-types/src/events.d.ts +8 -8
  170. package/dist/module-types/src/index.d.ts +3 -2
  171. package/dist/module-types/src/open-choices.d.ts +2 -2
  172. package/dist/module-types/src/openagent-dir.d.ts +8 -0
  173. package/dist/module-types/src/openagent-gitignore.d.ts +11 -0
  174. package/dist/module-types/src/project-commands.d.ts +5 -1
  175. package/dist/module-types/src/project-errors.d.ts +11 -7
  176. package/dist/module-types/src/project-hooks.d.ts +12 -9
  177. package/dist/module-types/src/project-modules.d.ts +9 -7
  178. package/dist/module-types/src/project-presets.d.ts +4 -4
  179. package/dist/module-types/src/project.d.ts +6 -6
  180. package/dist/module-types/src/publish-levels.d.ts +4 -4
  181. package/dist/module-types/src/quota-boundary.d.ts +2 -2
  182. package/dist/module-types/src/registry.d.ts +13 -7
  183. package/dist/module-types/src/store/agent-checkout.d.ts +1 -1
  184. package/dist/module-types/src/store/agent-store.d.ts +6 -6
  185. package/dist/module-types/src/store/branches.d.ts +8 -8
  186. package/dist/module-types/src/store/git-host.d.ts +8 -8
  187. package/dist/module-types/src/store/provided.d.ts +3 -3
  188. package/dist/module-types/src/store/queue.d.ts +9 -9
  189. package/dist/module-types/src/store/repository.d.ts +2 -2
  190. package/dist/module-types/src/store/run-record.d.ts +10 -10
  191. package/dist/module-types/src/store/runs.d.ts +7 -7
  192. package/dist/module-types/src/store/tickets.d.ts +8 -8
  193. package/dist/module-types/src/terminal.d.ts +3 -3
  194. package/dist/open-choices.d.ts +2 -2
  195. package/dist/openagent-dir.d.ts +9 -0
  196. package/dist/openagent-dir.d.ts.map +1 -0
  197. package/dist/openagent-dir.js +9 -0
  198. package/dist/openagent-dir.js.map +1 -0
  199. package/dist/openagent-gitignore.d.ts +12 -0
  200. package/dist/openagent-gitignore.d.ts.map +1 -0
  201. package/dist/openagent-gitignore.js +19 -0
  202. package/dist/openagent-gitignore.js.map +1 -0
  203. package/dist/pick-directory.js +2 -2
  204. package/dist/pick-directory.js.map +1 -1
  205. package/dist/project-commands.d.ts +5 -1
  206. package/dist/project-commands.d.ts.map +1 -1
  207. package/dist/project-commands.js +1 -1
  208. package/dist/project-commands.js.map +1 -1
  209. package/dist/project-errors.d.ts +11 -7
  210. package/dist/project-errors.d.ts.map +1 -1
  211. package/dist/project-errors.js +10 -8
  212. package/dist/project-errors.js.map +1 -1
  213. package/dist/project-hooks.d.ts +12 -9
  214. package/dist/project-hooks.d.ts.map +1 -1
  215. package/dist/project-hooks.js +17 -14
  216. package/dist/project-hooks.js.map +1 -1
  217. package/dist/project-modules.d.ts +9 -7
  218. package/dist/project-modules.d.ts.map +1 -1
  219. package/dist/project-modules.js +7 -13
  220. package/dist/project-modules.js.map +1 -1
  221. package/dist/project-presets.d.ts +4 -4
  222. package/dist/project-presets.d.ts.map +1 -1
  223. package/dist/project-presets.js +9 -9
  224. package/dist/project-presets.js.map +1 -1
  225. package/dist/project.d.ts +6 -6
  226. package/dist/project.d.ts.map +1 -1
  227. package/dist/project.js +6 -7
  228. package/dist/project.js.map +1 -1
  229. package/dist/publish-levels.d.ts +4 -4
  230. package/dist/publish-levels.d.ts.map +1 -1
  231. package/dist/publish-levels.js +7 -5
  232. package/dist/publish-levels.js.map +1 -1
  233. package/dist/quota-boundary.d.ts +2 -2
  234. package/dist/quota-boundary.js +2 -2
  235. package/dist/registry.d.ts +13 -7
  236. package/dist/registry.d.ts.map +1 -1
  237. package/dist/registry.js +19 -3
  238. package/dist/registry.js.map +1 -1
  239. package/dist/remove-files.d.ts +24 -0
  240. package/dist/remove-files.d.ts.map +1 -0
  241. package/dist/remove-files.js +98 -0
  242. package/dist/remove-files.js.map +1 -0
  243. package/dist/store/agent-checkout.d.ts +1 -1
  244. package/dist/store/agent-checkout.js +3 -3
  245. package/dist/store/agent-checkout.js.map +1 -1
  246. package/dist/store/agent-store.d.ts +6 -6
  247. package/dist/store/agent-store.js +8 -8
  248. package/dist/store/agent-store.js.map +1 -1
  249. package/dist/store/branches.d.ts +8 -8
  250. package/dist/store/branches.d.ts.map +1 -1
  251. package/dist/store/branches.js +2 -2
  252. package/dist/store/branches.js.map +1 -1
  253. package/dist/store/git-host.d.ts +8 -8
  254. package/dist/store/git-host.d.ts.map +1 -1
  255. package/dist/store/git-host.js +3 -3
  256. package/dist/store/git-host.js.map +1 -1
  257. package/dist/store/provided.d.ts +3 -3
  258. package/dist/store/provided.d.ts.map +1 -1
  259. package/dist/store/provided.js +3 -3
  260. package/dist/store/provided.js.map +1 -1
  261. package/dist/store/queue.d.ts +9 -9
  262. package/dist/store/queue.d.ts.map +1 -1
  263. package/dist/store/queue.js +2 -2
  264. package/dist/store/queue.js.map +1 -1
  265. package/dist/store/repository.d.ts +2 -2
  266. package/dist/store/run-record.d.ts +10 -10
  267. package/dist/store/run-record.d.ts.map +1 -1
  268. package/dist/store/run-record.js +7 -7
  269. package/dist/store/run-record.js.map +1 -1
  270. package/dist/store/runs.d.ts +7 -7
  271. package/dist/store/runs.d.ts.map +1 -1
  272. package/dist/store/runs.js +3 -3
  273. package/dist/store/runs.js.map +1 -1
  274. package/dist/store/test-branches.d.ts +0 -8
  275. package/dist/store/test-branches.d.ts.map +1 -1
  276. package/dist/store/test-branches.js +0 -24
  277. package/dist/store/test-branches.js.map +1 -1
  278. package/dist/store/tickets.d.ts +8 -8
  279. package/dist/store/tickets.d.ts.map +1 -1
  280. package/dist/store/tickets.js +2 -2
  281. package/dist/store/tickets.js.map +1 -1
  282. package/dist/terminal.d.ts +3 -3
  283. package/dist/terminal.js +3 -3
  284. package/package.json +23 -20
  285. package/dist/agent-archive.d.ts +0 -35
  286. package/dist/agent-archive.d.ts.map +0 -1
  287. package/dist/agent-archive.js +0 -67
  288. package/dist/agent-archive.js.map +0 -1
  289. package/dist/agent-commit.d.ts +0 -140
  290. package/dist/agent-commit.d.ts.map +0 -1
  291. package/dist/agent-commit.js +0 -254
  292. package/dist/agent-commit.js.map +0 -1
  293. package/dist/agent-driver.d.ts +0 -28
  294. package/dist/agent-driver.d.ts.map +0 -1
  295. package/dist/agent-driver.js +0 -18
  296. package/dist/agent-driver.js.map +0 -1
  297. package/dist/agent-location.d.ts +0 -11
  298. package/dist/agent-location.d.ts.map +0 -1
  299. package/dist/agent-location.js +0 -10
  300. package/dist/agent-location.js.map +0 -1
  301. package/dist/agent-messages.d.ts +0 -55
  302. package/dist/agent-messages.d.ts.map +0 -1
  303. package/dist/agent-messages.js +0 -73
  304. package/dist/agent-messages.js.map +0 -1
  305. package/dist/agent-names.d.ts +0 -24
  306. package/dist/agent-names.d.ts.map +0 -1
  307. package/dist/agent-names.js +0 -33
  308. package/dist/agent-names.js.map +0 -1
  309. package/dist/agent-options.d.ts +0 -45
  310. package/dist/agent-options.d.ts.map +0 -1
  311. package/dist/agent-options.js +0 -83
  312. package/dist/agent-options.js.map +0 -1
  313. package/dist/agent-spec.d.ts +0 -56
  314. package/dist/agent-spec.d.ts.map +0 -1
  315. package/dist/agent-spec.js +0 -56
  316. package/dist/agent-spec.js.map +0 -1
  317. package/dist/agent-telemetry.d.ts +0 -88
  318. package/dist/agent-telemetry.d.ts.map +0 -1
  319. package/dist/agent-telemetry.js +0 -97
  320. package/dist/agent-telemetry.js.map +0 -1
  321. package/dist/agent.d.ts +0 -113
  322. package/dist/agent.d.ts.map +0 -1
  323. package/dist/agent.js +0 -168
  324. package/dist/agent.js.map +0 -1
  325. package/dist/archived-agent-patch.d.ts +0 -14
  326. package/dist/archived-agent-patch.d.ts.map +0 -1
  327. package/dist/archived-agent-patch.js +0 -22
  328. package/dist/archived-agent-patch.js.map +0 -1
  329. package/dist/auto-pm.d.ts +0 -538
  330. package/dist/auto-pm.d.ts.map +0 -1
  331. package/dist/auto-pm.js +0 -707
  332. package/dist/auto-pm.js.map +0 -1
  333. package/dist/await-gate.d.ts +0 -184
  334. package/dist/await-gate.d.ts.map +0 -1
  335. package/dist/await-gate.js +0 -252
  336. package/dist/await-gate.js.map +0 -1
  337. package/dist/branch-links-pass.d.ts +0 -15
  338. package/dist/branch-links-pass.d.ts.map +0 -1
  339. package/dist/branch-links-pass.js +0 -13
  340. package/dist/branch-links-pass.js.map +0 -1
  341. package/dist/branch-links.d.ts +0 -53
  342. package/dist/branch-links.d.ts.map +0 -1
  343. package/dist/branch-links.js +0 -94
  344. package/dist/branch-links.js.map +0 -1
  345. package/dist/branch-names.d.ts +0 -57
  346. package/dist/branch-names.d.ts.map +0 -1
  347. package/dist/branch-names.js +0 -72
  348. package/dist/branch-names.js.map +0 -1
  349. package/dist/ci-watch.d.ts +0 -123
  350. package/dist/ci-watch.d.ts.map +0 -1
  351. package/dist/ci-watch.js +0 -228
  352. package/dist/ci-watch.js.map +0 -1
  353. package/dist/claude-trust.d.ts +0 -16
  354. package/dist/claude-trust.d.ts.map +0 -1
  355. package/dist/claude-trust.js +0 -72
  356. package/dist/claude-trust.js.map +0 -1
  357. package/dist/cli-exec.d.ts +0 -36
  358. package/dist/cli-exec.d.ts.map +0 -1
  359. package/dist/cli-exec.js +0 -44
  360. package/dist/cli-exec.js.map +0 -1
  361. package/dist/closing-keywords.d.ts +0 -28
  362. package/dist/closing-keywords.d.ts.map +0 -1
  363. package/dist/closing-keywords.js +0 -49
  364. package/dist/closing-keywords.js.map +0 -1
  365. package/dist/config-layers.d.ts +0 -62
  366. package/dist/config-layers.d.ts.map +0 -1
  367. package/dist/config-layers.js +0 -70
  368. package/dist/config-layers.js.map +0 -1
  369. package/dist/config.d.ts +0 -54
  370. package/dist/config.d.ts.map +0 -1
  371. package/dist/config.js +0 -78
  372. package/dist/config.js.map +0 -1
  373. package/dist/consumption-guard.d.ts +0 -53
  374. package/dist/consumption-guard.d.ts.map +0 -1
  375. package/dist/consumption-guard.js +0 -69
  376. package/dist/consumption-guard.js.map +0 -1
  377. package/dist/control.d.ts +0 -75
  378. package/dist/control.d.ts.map +0 -1
  379. package/dist/control.js +0 -68
  380. package/dist/control.js.map +0 -1
  381. package/dist/conversation-commit.d.ts +0 -166
  382. package/dist/conversation-commit.d.ts.map +0 -1
  383. package/dist/conversation-commit.js +0 -309
  384. package/dist/conversation-commit.js.map +0 -1
  385. package/dist/conversations.d.ts +0 -93
  386. package/dist/conversations.d.ts.map +0 -1
  387. package/dist/conversations.js +0 -176
  388. package/dist/conversations.js.map +0 -1
  389. package/dist/daemon-writes.d.ts +0 -33
  390. package/dist/daemon-writes.d.ts.map +0 -1
  391. package/dist/daemon-writes.js +0 -45
  392. package/dist/daemon-writes.js.map +0 -1
  393. package/dist/dashboard/agent-tree.d.ts +0 -106
  394. package/dist/dashboard/agent-tree.d.ts.map +0 -1
  395. package/dist/dashboard/agent-tree.js +0 -180
  396. package/dist/dashboard/agent-tree.js.map +0 -1
  397. package/dist/dashboard/browser-proxy.d.ts +0 -41
  398. package/dist/dashboard/browser-proxy.d.ts.map +0 -1
  399. package/dist/dashboard/browser-proxy.js +0 -96
  400. package/dist/dashboard/browser-proxy.js.map +0 -1
  401. package/dist/dashboard/discord-webhook.d.ts +0 -17
  402. package/dist/dashboard/discord-webhook.d.ts.map +0 -1
  403. package/dist/dashboard/discord-webhook.js +0 -36
  404. package/dist/dashboard/discord-webhook.js.map +0 -1
  405. package/dist/dashboard/file-diff.d.ts +0 -67
  406. package/dist/dashboard/file-diff.d.ts.map +0 -1
  407. package/dist/dashboard/file-diff.js +0 -132
  408. package/dist/dashboard/file-diff.js.map +0 -1
  409. package/dist/dashboard/file-read.d.ts +0 -42
  410. package/dist/dashboard/file-read.d.ts.map +0 -1
  411. package/dist/dashboard/file-read.js +0 -69
  412. package/dist/dashboard/file-read.js.map +0 -1
  413. package/dist/dashboard/file-status.d.ts +0 -21
  414. package/dist/dashboard/file-status.d.ts.map +0 -1
  415. package/dist/dashboard/file-status.js +0 -37
  416. package/dist/dashboard/file-status.js.map +0 -1
  417. package/dist/dashboard/gh.d.ts +0 -131
  418. package/dist/dashboard/gh.d.ts.map +0 -1
  419. package/dist/dashboard/gh.js +0 -150
  420. package/dist/dashboard/gh.js.map +0 -1
  421. package/dist/dashboard/github.d.ts +0 -11
  422. package/dist/dashboard/github.d.ts.map +0 -1
  423. package/dist/dashboard/github.js +0 -33
  424. package/dist/dashboard/github.js.map +0 -1
  425. package/dist/dashboard/run-handoff.d.ts +0 -311
  426. package/dist/dashboard/run-handoff.d.ts.map +0 -1
  427. package/dist/dashboard/run-handoff.js +0 -485
  428. package/dist/dashboard/run-handoff.js.map +0 -1
  429. package/dist/dashboard/scheduler-state.d.ts +0 -73
  430. package/dist/dashboard/scheduler-state.d.ts.map +0 -1
  431. package/dist/dashboard/scheduler-state.js +0 -120
  432. package/dist/dashboard/scheduler-state.js.map +0 -1
  433. package/dist/dashboard/subagent-settings.d.ts +0 -26
  434. package/dist/dashboard/subagent-settings.d.ts.map +0 -1
  435. package/dist/dashboard/subagent-settings.js +0 -52
  436. package/dist/dashboard/subagent-settings.js.map +0 -1
  437. package/dist/dashboard/telefunc-serve.d.ts +0 -118
  438. package/dist/dashboard/telefunc-serve.d.ts.map +0 -1
  439. package/dist/dashboard/telefunc-serve.js +0 -108
  440. package/dist/dashboard/telefunc-serve.js.map +0 -1
  441. package/dist/dashboard/tickets.d.ts +0 -29
  442. package/dist/dashboard/tickets.d.ts.map +0 -1
  443. package/dist/dashboard/tickets.js +0 -38
  444. package/dist/dashboard/tickets.js.map +0 -1
  445. package/dist/dashboard/widget-serve.d.ts +0 -15
  446. package/dist/dashboard/widget-serve.d.ts.map +0 -1
  447. package/dist/dashboard/widget-serve.js +0 -45
  448. package/dist/dashboard/widget-serve.js.map +0 -1
  449. package/dist/dashboard-bundle/assets/main-B3HghPQy.css +0 -2
  450. package/dist/dashboard-bundle/assets/main-om0WOAku.js +0 -140
  451. package/dist/dashboard-client/assets/chunks/chunk-BF9pJudf.js +0 -4
  452. package/dist/dashboard-client/assets/entries/entry-client-routing.CT1e9F0o.js +0 -1
  453. package/dist/dashboard-client/assets/entries/pages_index.CkW5JQ8X.js +0 -428
  454. package/dist/dashboard-client/assets/static/layouts_tailwind-00e65532.8OjKGAbA.css +0 -2
  455. package/dist/dashboard-client/index.html +0 -27
  456. package/dist/dashboard-client/index.pageContext.json +0 -1
  457. package/dist/dashboard-client/logo-animated.svg +0 -34
  458. package/dist/dashboard-client/logo.svg +0 -16
  459. package/dist/dashboard-rpc/control.telefunc.d.ts +0 -176
  460. package/dist/dashboard-rpc/control.telefunc.d.ts.map +0 -1
  461. package/dist/dashboard-rpc/control.telefunc.js +0 -373
  462. package/dist/dashboard-rpc/control.telefunc.js.map +0 -1
  463. package/dist/dashboard-rpc/devices.telefunc.d.ts +0 -9
  464. package/dist/dashboard-rpc/devices.telefunc.d.ts.map +0 -1
  465. package/dist/dashboard-rpc/devices.telefunc.js +0 -12
  466. package/dist/dashboard-rpc/devices.telefunc.js.map +0 -1
  467. package/dist/dashboard-rpc/events.telefunc.d.ts +0 -36
  468. package/dist/dashboard-rpc/events.telefunc.d.ts.map +0 -1
  469. package/dist/dashboard-rpc/events.telefunc.js +0 -70
  470. package/dist/dashboard-rpc/events.telefunc.js.map +0 -1
  471. package/dist/dashboard-rpc/preferences.telefunc.d.ts +0 -97
  472. package/dist/dashboard-rpc/preferences.telefunc.d.ts.map +0 -1
  473. package/dist/dashboard-rpc/preferences.telefunc.js +0 -157
  474. package/dist/dashboard-rpc/preferences.telefunc.js.map +0 -1
  475. package/dist/dashboard-rpc/projects.telefunc.d.ts +0 -56
  476. package/dist/dashboard-rpc/projects.telefunc.d.ts.map +0 -1
  477. package/dist/dashboard-rpc/projects.telefunc.js +0 -96
  478. package/dist/dashboard-rpc/projects.telefunc.js.map +0 -1
  479. package/dist/dashboard-rpc/quota.telefunc.d.ts +0 -40
  480. package/dist/dashboard-rpc/quota.telefunc.d.ts.map +0 -1
  481. package/dist/dashboard-rpc/quota.telefunc.js +0 -84
  482. package/dist/dashboard-rpc/quota.telefunc.js.map +0 -1
  483. package/dist/dashboard-rpc/reads.telefunc.d.ts +0 -197
  484. package/dist/dashboard-rpc/reads.telefunc.d.ts.map +0 -1
  485. package/dist/dashboard-rpc/reads.telefunc.js +0 -403
  486. package/dist/dashboard-rpc/reads.telefunc.js.map +0 -1
  487. package/dist/dashboard-rpc/register.d.ts +0 -18
  488. package/dist/dashboard-rpc/register.d.ts.map +0 -1
  489. package/dist/dashboard-rpc/register.js +0 -66
  490. package/dist/dashboard-rpc/register.js.map +0 -1
  491. package/dist/dashboard-rpc/relay-run.d.ts +0 -9
  492. package/dist/dashboard-rpc/relay-run.d.ts.map +0 -1
  493. package/dist/dashboard-rpc/relay-run.js +0 -21
  494. package/dist/dashboard-rpc/relay-run.js.map +0 -1
  495. package/dist/dashboard-rpc/stream-channel.d.ts +0 -23
  496. package/dist/dashboard-rpc/stream-channel.d.ts.map +0 -1
  497. package/dist/dashboard-rpc/stream-channel.js +0 -52
  498. package/dist/dashboard-rpc/stream-channel.js.map +0 -1
  499. package/dist/dashboard-rpc/subagents.d.ts +0 -12
  500. package/dist/dashboard-rpc/subagents.d.ts.map +0 -1
  501. package/dist/dashboard-rpc/subagents.js +0 -13
  502. package/dist/dashboard-rpc/subagents.js.map +0 -1
  503. package/dist/dashboard-rpc/widgets.d.ts +0 -33
  504. package/dist/dashboard-rpc/widgets.d.ts.map +0 -1
  505. package/dist/dashboard-rpc/widgets.js +0 -54
  506. package/dist/dashboard-rpc/widgets.js.map +0 -1
  507. package/dist/data-branch.d.ts +0 -120
  508. package/dist/data-branch.d.ts.map +0 -1
  509. package/dist/data-branch.js +0 -319
  510. package/dist/data-branch.js.map +0 -1
  511. package/dist/discord/bot.d.ts +0 -61
  512. package/dist/discord/bot.d.ts.map +0 -1
  513. package/dist/discord/bot.js +0 -94
  514. package/dist/discord/bot.js.map +0 -1
  515. package/dist/discord/gateway.d.ts +0 -137
  516. package/dist/discord/gateway.d.ts.map +0 -1
  517. package/dist/discord/gateway.js +0 -315
  518. package/dist/discord/gateway.js.map +0 -1
  519. package/dist/discord/live-run.d.ts +0 -31
  520. package/dist/discord/live-run.d.ts.map +0 -1
  521. package/dist/discord/live-run.js +0 -57
  522. package/dist/discord/live-run.js.map +0 -1
  523. package/dist/discord/reply-mirror.d.ts +0 -83
  524. package/dist/discord/reply-mirror.d.ts.map +0 -1
  525. package/dist/discord/reply-mirror.js +0 -84
  526. package/dist/discord/reply-mirror.js.map +0 -1
  527. package/dist/discord/rest.d.ts +0 -20
  528. package/dist/discord/rest.d.ts.map +0 -1
  529. package/dist/discord/rest.js +0 -41
  530. package/dist/discord/rest.js.map +0 -1
  531. package/dist/discord/routing.d.ts +0 -81
  532. package/dist/discord/routing.d.ts.map +0 -1
  533. package/dist/discord/routing.js +0 -91
  534. package/dist/discord/routing.js.map +0 -1
  535. package/dist/discord-credentials-store.d.ts +0 -14
  536. package/dist/discord-credentials-store.d.ts.map +0 -1
  537. package/dist/discord-credentials-store.js +0 -53
  538. package/dist/discord-credentials-store.js.map +0 -1
  539. package/dist/discord-credentials.d.ts +0 -80
  540. package/dist/discord-credentials.d.ts.map +0 -1
  541. package/dist/discord-credentials.js +0 -55
  542. package/dist/discord-credentials.js.map +0 -1
  543. package/dist/driver/actions-zip.d.ts +0 -2
  544. package/dist/driver/actions-zip.d.ts.map +0 -1
  545. package/dist/driver/actions-zip.js +0 -70
  546. package/dist/driver/actions-zip.js.map +0 -1
  547. package/dist/driver/actions.d.ts +0 -130
  548. package/dist/driver/actions.d.ts.map +0 -1
  549. package/dist/driver/actions.js +0 -261
  550. package/dist/driver/actions.js.map +0 -1
  551. package/dist/driver/agent-cli.d.ts +0 -57
  552. package/dist/driver/agent-cli.d.ts.map +0 -1
  553. package/dist/driver/agent-cli.js +0 -134
  554. package/dist/driver/agent-cli.js.map +0 -1
  555. package/dist/driver/child-registry.d.ts +0 -25
  556. package/dist/driver/child-registry.d.ts.map +0 -1
  557. package/dist/driver/child-registry.js +0 -53
  558. package/dist/driver/child-registry.js.map +0 -1
  559. package/dist/driver/claude-code-quota.d.ts +0 -40
  560. package/dist/driver/claude-code-quota.d.ts.map +0 -1
  561. package/dist/driver/claude-code-quota.js +0 -144
  562. package/dist/driver/claude-code-quota.js.map +0 -1
  563. package/dist/driver/claude-code.d.ts +0 -104
  564. package/dist/driver/claude-code.d.ts.map +0 -1
  565. package/dist/driver/claude-code.js +0 -314
  566. package/dist/driver/claude-code.js.map +0 -1
  567. package/dist/driver/cli-session.d.ts +0 -57
  568. package/dist/driver/cli-session.d.ts.map +0 -1
  569. package/dist/driver/cli-session.js +0 -134
  570. package/dist/driver/cli-session.js.map +0 -1
  571. package/dist/driver/cloud.d.ts +0 -109
  572. package/dist/driver/cloud.d.ts.map +0 -1
  573. package/dist/driver/cloud.js +0 -232
  574. package/dist/driver/cloud.js.map +0 -1
  575. package/dist/driver/codex.d.ts +0 -99
  576. package/dist/driver/codex.d.ts.map +0 -1
  577. package/dist/driver/codex.js +0 -190
  578. package/dist/driver/codex.js.map +0 -1
  579. package/dist/driver/fake.d.ts +0 -54
  580. package/dist/driver/fake.d.ts.map +0 -1
  581. package/dist/driver/fake.js +0 -73
  582. package/dist/driver/fake.js.map +0 -1
  583. package/dist/driver/index.d.ts +0 -10
  584. package/dist/driver/index.d.ts.map +0 -1
  585. package/dist/driver/index.js +0 -14
  586. package/dist/driver/index.js.map +0 -1
  587. package/dist/driver/session-support.d.ts +0 -14
  588. package/dist/driver/session-support.d.ts.map +0 -1
  589. package/dist/driver/session-support.js +0 -37
  590. package/dist/driver/session-support.js.map +0 -1
  591. package/dist/driver/types.d.ts +0 -310
  592. package/dist/driver/types.d.ts.map +0 -1
  593. package/dist/driver/types.js +0 -5
  594. package/dist/driver/types.js.map +0 -1
  595. package/dist/driver-cli.d.ts +0 -61
  596. package/dist/driver-cli.d.ts.map +0 -1
  597. package/dist/driver-cli.js +0 -66
  598. package/dist/driver-cli.js.map +0 -1
  599. package/dist/fake-script.d.ts +0 -15
  600. package/dist/fake-script.d.ts.map +0 -1
  601. package/dist/fake-script.js +0 -58
  602. package/dist/fake-script.js.map +0 -1
  603. package/dist/framework-dir.d.ts +0 -11
  604. package/dist/framework-dir.d.ts.map +0 -1
  605. package/dist/framework-dir.js +0 -11
  606. package/dist/framework-dir.js.map +0 -1
  607. package/dist/framework-gitignore.d.ts +0 -12
  608. package/dist/framework-gitignore.d.ts.map +0 -1
  609. package/dist/framework-gitignore.js +0 -19
  610. package/dist/framework-gitignore.js.map +0 -1
  611. package/dist/gate-keepalive.d.ts +0 -47
  612. package/dist/gate-keepalive.d.ts.map +0 -1
  613. package/dist/gate-keepalive.js +0 -62
  614. package/dist/gate-keepalive.js.map +0 -1
  615. package/dist/git-exclude.d.ts +0 -11
  616. package/dist/git-exclude.d.ts.map +0 -1
  617. package/dist/git-exclude.js +0 -23
  618. package/dist/git-exclude.js.map +0 -1
  619. package/dist/handoff-level.d.ts +0 -56
  620. package/dist/handoff-level.d.ts.map +0 -1
  621. package/dist/handoff-level.js +0 -62
  622. package/dist/handoff-level.js.map +0 -1
  623. package/dist/host-exec.d.ts +0 -21
  624. package/dist/host-exec.d.ts.map +0 -1
  625. package/dist/host-exec.js +0 -30
  626. package/dist/host-exec.js.map +0 -1
  627. package/dist/layout.d.ts +0 -41
  628. package/dist/layout.d.ts.map +0 -1
  629. package/dist/layout.js +0 -69
  630. package/dist/layout.js.map +0 -1
  631. package/dist/logs.d.ts +0 -73
  632. package/dist/logs.d.ts.map +0 -1
  633. package/dist/logs.js +0 -218
  634. package/dist/logs.js.map +0 -1
  635. package/dist/maintenance.d.ts +0 -90
  636. package/dist/maintenance.d.ts.map +0 -1
  637. package/dist/maintenance.js +0 -141
  638. package/dist/maintenance.js.map +0 -1
  639. package/dist/merged-worktrees.d.ts +0 -74
  640. package/dist/merged-worktrees.d.ts.map +0 -1
  641. package/dist/merged-worktrees.js +0 -84
  642. package/dist/merged-worktrees.js.map +0 -1
  643. package/dist/module-types/src/dashboard/agent-tree.d.ts +0 -105
  644. package/dist/module-types/src/dashboard/file-diff.d.ts +0 -66
  645. package/dist/module-types/src/dashboard/file-read.d.ts +0 -41
  646. package/dist/module-types/src/dashboard/file-status.d.ts +0 -20
  647. package/dist/module-types/src/dashboard/scheduler-state.d.ts +0 -72
  648. package/dist/module-types/src/dashboard/subagent-settings.d.ts +0 -25
  649. package/dist/module-types/src/dashboard-rpc/subagents.d.ts +0 -11
  650. package/dist/module-types/src/framework-dir.d.ts +0 -10
  651. package/dist/module-types/src/framework-gitignore.d.ts +0 -11
  652. package/dist/module-types/src/subagent-settings.d.ts +0 -26
  653. package/dist/on-before-mergeable-prompt.d.ts +0 -32
  654. package/dist/on-before-mergeable-prompt.d.ts.map +0 -1
  655. package/dist/on-before-mergeable-prompt.js +0 -26
  656. package/dist/on-before-mergeable-prompt.js.map +0 -1
  657. package/dist/planned-quick-wins.d.ts +0 -102
  658. package/dist/planned-quick-wins.d.ts.map +0 -1
  659. package/dist/planned-quick-wins.js +0 -171
  660. package/dist/planned-quick-wins.js.map +0 -1
  661. package/dist/preflight.d.ts +0 -77
  662. package/dist/preflight.d.ts.map +0 -1
  663. package/dist/preflight.js +0 -91
  664. package/dist/preflight.js.map +0 -1
  665. package/dist/preset-catalog.d.ts +0 -98
  666. package/dist/preset-catalog.d.ts.map +0 -1
  667. package/dist/preset-catalog.js +0 -129
  668. package/dist/preset-catalog.js.map +0 -1
  669. package/dist/preset-prompt.d.ts +0 -81
  670. package/dist/preset-prompt.d.ts.map +0 -1
  671. package/dist/preset-prompt.js +0 -51
  672. package/dist/preset-prompt.js.map +0 -1
  673. package/dist/preset-registry.d.ts +0 -32
  674. package/dist/preset-registry.d.ts.map +0 -1
  675. package/dist/preset-registry.js +0 -35
  676. package/dist/preset-registry.js.map +0 -1
  677. package/dist/presets.d.ts +0 -20
  678. package/dist/presets.d.ts.map +0 -1
  679. package/dist/presets.js +0 -33
  680. package/dist/presets.js.map +0 -1
  681. package/dist/preview-runtime.d.ts +0 -33
  682. package/dist/preview-runtime.d.ts.map +0 -1
  683. package/dist/preview-runtime.js +0 -96
  684. package/dist/preview-runtime.js.map +0 -1
  685. package/dist/preview.d.ts +0 -78
  686. package/dist/preview.d.ts.map +0 -1
  687. package/dist/preview.js +0 -301
  688. package/dist/preview.js.map +0 -1
  689. package/dist/project-widgets.d.ts +0 -46
  690. package/dist/project-widgets.d.ts.map +0 -1
  691. package/dist/project-widgets.js +0 -93
  692. package/dist/project-widgets.js.map +0 -1
  693. package/dist/prompt-run.d.ts +0 -104
  694. package/dist/prompt-run.d.ts.map +0 -1
  695. package/dist/prompt-run.js +0 -112
  696. package/dist/prompt-run.js.map +0 -1
  697. package/dist/prompt-template.d.ts +0 -16
  698. package/dist/prompt-template.d.ts.map +0 -1
  699. package/dist/prompt-template.js +0 -56
  700. package/dist/prompt-template.js.map +0 -1
  701. package/dist/prompts.generated.d.ts +0 -53
  702. package/dist/prompts.generated.d.ts.map +0 -1
  703. package/dist/prompts.generated.js +0 -55
  704. package/dist/prompts.generated.js.map +0 -1
  705. package/dist/queue-promote.d.ts +0 -70
  706. package/dist/queue-promote.d.ts.map +0 -1
  707. package/dist/queue-promote.js +0 -118
  708. package/dist/queue-promote.js.map +0 -1
  709. package/dist/relay.d.ts +0 -84
  710. package/dist/relay.d.ts.map +0 -1
  711. package/dist/relay.js +0 -199
  712. package/dist/relay.js.map +0 -1
  713. package/dist/repos-directory.d.ts +0 -19
  714. package/dist/repos-directory.d.ts.map +0 -1
  715. package/dist/repos-directory.js +0 -23
  716. package/dist/repos-directory.js.map +0 -1
  717. package/dist/retired-project-settings.d.ts +0 -43
  718. package/dist/retired-project-settings.d.ts.map +0 -1
  719. package/dist/retired-project-settings.js +0 -125
  720. package/dist/retired-project-settings.js.map +0 -1
  721. package/dist/routine-locks.d.ts +0 -53
  722. package/dist/routine-locks.d.ts.map +0 -1
  723. package/dist/routine-locks.js +0 -125
  724. package/dist/routine-locks.js.map +0 -1
  725. package/dist/run-driver.d.ts +0 -26
  726. package/dist/run-driver.d.ts.map +0 -1
  727. package/dist/run-driver.js +0 -17
  728. package/dist/run-driver.js.map +0 -1
  729. package/dist/run-locks.d.ts +0 -3
  730. package/dist/run-locks.d.ts.map +0 -1
  731. package/dist/run-locks.js +0 -39
  732. package/dist/run-locks.js.map +0 -1
  733. package/dist/run-messages.d.ts +0 -64
  734. package/dist/run-messages.d.ts.map +0 -1
  735. package/dist/run-messages.js +0 -76
  736. package/dist/run-messages.js.map +0 -1
  737. package/dist/run-options.d.ts +0 -53
  738. package/dist/run-options.d.ts.map +0 -1
  739. package/dist/run-options.js +0 -110
  740. package/dist/run-options.js.map +0 -1
  741. package/dist/run-telemetry.d.ts +0 -115
  742. package/dist/run-telemetry.d.ts.map +0 -1
  743. package/dist/run-telemetry.js +0 -137
  744. package/dist/run-telemetry.js.map +0 -1
  745. package/dist/run-view.d.ts +0 -109
  746. package/dist/run-view.d.ts.map +0 -1
  747. package/dist/run-view.js +0 -118
  748. package/dist/run-view.js.map +0 -1
  749. package/dist/run.d.ts +0 -261
  750. package/dist/run.d.ts.map +0 -1
  751. package/dist/run.js +0 -420
  752. package/dist/run.js.map +0 -1
  753. package/dist/runtime-keys.d.ts +0 -17
  754. package/dist/runtime-keys.d.ts.map +0 -1
  755. package/dist/runtime-keys.js +0 -17
  756. package/dist/runtime-keys.js.map +0 -1
  757. package/dist/sandbox.d.ts +0 -27
  758. package/dist/sandbox.d.ts.map +0 -1
  759. package/dist/sandbox.js +0 -63
  760. package/dist/sandbox.js.map +0 -1
  761. package/dist/session-link.d.ts +0 -19
  762. package/dist/session-link.d.ts.map +0 -1
  763. package/dist/session-link.js +0 -26
  764. package/dist/session-link.js.map +0 -1
  765. package/dist/sessions.d.ts +0 -77
  766. package/dist/sessions.d.ts.map +0 -1
  767. package/dist/sessions.js +0 -146
  768. package/dist/sessions.js.map +0 -1
  769. package/dist/spike-locks.d.ts +0 -75
  770. package/dist/spike-locks.d.ts.map +0 -1
  771. package/dist/spike-locks.js +0 -208
  772. package/dist/spike-locks.js.map +0 -1
  773. package/dist/stale-branch.d.ts +0 -21
  774. package/dist/stale-branch.d.ts.map +0 -1
  775. package/dist/stale-branch.js +0 -32
  776. package/dist/stale-branch.js.map +0 -1
  777. package/dist/steps.d.ts +0 -9
  778. package/dist/steps.d.ts.map +0 -1
  779. package/dist/steps.js +0 -13
  780. package/dist/steps.js.map +0 -1
  781. package/dist/store/forge.d.ts +0 -110
  782. package/dist/store/forge.d.ts.map +0 -1
  783. package/dist/store/forge.js +0 -97
  784. package/dist/store/forge.js.map +0 -1
  785. package/dist/store/run-checkout.d.ts +0 -33
  786. package/dist/store/run-checkout.d.ts.map +0 -1
  787. package/dist/store/run-checkout.js +0 -59
  788. package/dist/store/run-checkout.js.map +0 -1
  789. package/dist/store/run-store.d.ts +0 -501
  790. package/dist/store/run-store.d.ts.map +0 -1
  791. package/dist/store/run-store.js +0 -806
  792. package/dist/store/run-store.js.map +0 -1
  793. package/dist/store/suspend.d.ts +0 -38
  794. package/dist/store/suspend.d.ts.map +0 -1
  795. package/dist/store/suspend.js +0 -45
  796. package/dist/store/suspend.js.map +0 -1
  797. package/dist/store/worktree-deps.d.ts +0 -30
  798. package/dist/store/worktree-deps.d.ts.map +0 -1
  799. package/dist/store/worktree-deps.js +0 -115
  800. package/dist/store/worktree-deps.js.map +0 -1
  801. package/dist/store/worktree.d.ts +0 -194
  802. package/dist/store/worktree.d.ts.map +0 -1
  803. package/dist/store/worktree.js +0 -331
  804. package/dist/store/worktree.js.map +0 -1
  805. package/dist/subagent-settings.d.ts +0 -27
  806. package/dist/subagent-settings.d.ts.map +0 -1
  807. package/dist/subagent-settings.js +0 -35
  808. package/dist/subagent-settings.js.map +0 -1
  809. package/dist/system-prompt-file.d.ts +0 -18
  810. package/dist/system-prompt-file.d.ts.map +0 -1
  811. package/dist/system-prompt-file.js +0 -28
  812. package/dist/system-prompt-file.js.map +0 -1
  813. package/dist/system-prompt.d.ts +0 -148
  814. package/dist/system-prompt.d.ts.map +0 -1
  815. package/dist/system-prompt.js +0 -170
  816. package/dist/system-prompt.js.map +0 -1
  817. package/dist/target-driver.d.ts +0 -28
  818. package/dist/target-driver.d.ts.map +0 -1
  819. package/dist/target-driver.js +0 -18
  820. package/dist/target-driver.js.map +0 -1
  821. package/dist/ticket-locks.d.ts +0 -61
  822. package/dist/ticket-locks.d.ts.map +0 -1
  823. package/dist/ticket-locks.js +0 -137
  824. package/dist/ticket-locks.js.map +0 -1
  825. package/dist/tickets-file.d.ts +0 -7
  826. package/dist/tickets-file.d.ts.map +0 -1
  827. package/dist/tickets-file.js +0 -21
  828. package/dist/tickets-file.js.map +0 -1
  829. package/dist/tickets.d.ts +0 -18
  830. package/dist/tickets.d.ts.map +0 -1
  831. package/dist/tickets.js +0 -23
  832. package/dist/tickets.js.map +0 -1
  833. package/dist/todo-loop.d.ts +0 -110
  834. package/dist/todo-loop.d.ts.map +0 -1
  835. package/dist/todo-loop.js +0 -175
  836. package/dist/todo-loop.js.map +0 -1
  837. package/dist/turn-gate.d.ts +0 -144
  838. package/dist/turn-gate.d.ts.map +0 -1
  839. package/dist/turn-gate.js +0 -217
  840. package/dist/turn-gate.js.map +0 -1
  841. package/dist/usage.d.ts +0 -32
  842. package/dist/usage.d.ts.map +0 -1
  843. package/dist/usage.js +0 -46
  844. package/dist/usage.js.map +0 -1
  845. package/dist/widget-types/dashboard/components/LinkActions.d.ts +0 -26
  846. package/dist/widget-types/dashboard/components/Markdown.d.ts +0 -4
  847. package/dist/widget-types/dashboard/components/StartAgentButton.d.ts +0 -39
  848. package/dist/widget-types/dashboard/components/ui/badge.d.ts +0 -2
  849. package/dist/widget-types/dashboard/components/ui/button.d.ts +0 -10
  850. package/dist/widget-types/dashboard/components/ui/card.d.ts +0 -5
  851. package/dist/widget-types/dashboard/components/ui/checkbox.d.ts +0 -7
  852. package/dist/widget-types/dashboard/components/ui/dropdown-menu.d.ts +0 -16
  853. package/dist/widget-types/dashboard/components/ui/input.d.ts +0 -2
  854. package/dist/widget-types/dashboard/components/ui/option-label.d.ts +0 -4
  855. package/dist/widget-types/dashboard/components/ui/popover.d.ts +0 -8
  856. package/dist/widget-types/dashboard/components/ui/scroll-area.d.ts +0 -10
  857. package/dist/widget-types/dashboard/components/ui/separator.d.ts +0 -3
  858. package/dist/widget-types/dashboard/components/ui/skeleton.d.ts +0 -2
  859. package/dist/widget-types/dashboard/components/ui/slider.d.ts +0 -9
  860. package/dist/widget-types/dashboard/components/ui/tooltip.d.ts +0 -11
  861. package/dist/widget-types/dashboard/lib/draft-handoff.d.ts +0 -15
  862. package/dist/widget-types/dashboard/lib/format-date.d.ts +0 -51
  863. package/dist/widget-types/dashboard/lib/host-services.d.ts +0 -12
  864. package/dist/widget-types/dashboard/lib/route.d.ts +0 -24
  865. package/dist/widget-types/dashboard/lib/rpc.d.ts +0 -31
  866. package/dist/widget-types/dashboard/lib/use-action.d.ts +0 -25
  867. package/dist/widget-types/dashboard/lib/use-async.d.ts +0 -39
  868. package/dist/widget-types/dashboard/lib/use-widgets.d.ts +0 -42
  869. package/dist/widget-types/dashboard/lib/utils.d.ts +0 -3
  870. package/dist/widget-types/dashboard/rpc/widgets.d.ts +0 -4
  871. package/dist/widget-types/dashboard/widget/index.d.ts +0 -207
  872. package/dist/widget-types/src/agent-id.d.ts +0 -12
  873. package/dist/widget-types/src/agent-locks.d.ts +0 -2
  874. package/dist/widget-types/src/agent-view.d.ts +0 -38
  875. package/dist/widget-types/src/bridge-browser.d.ts +0 -216
  876. package/dist/widget-types/src/browser-stream.d.ts +0 -19
  877. package/dist/widget-types/src/browser.d.ts +0 -15
  878. package/dist/widget-types/src/cli-exec.d.ts +0 -35
  879. package/dist/widget-types/src/cloud-run-state.d.ts +0 -26
  880. package/dist/widget-types/src/dashboard/activity.d.ts +0 -40
  881. package/dist/widget-types/src/dashboard/agent-handoff.d.ts +0 -211
  882. package/dist/widget-types/src/dashboard/agent-tree.d.ts +0 -105
  883. package/dist/widget-types/src/dashboard/bridge-endpoints.d.ts +0 -157
  884. package/dist/widget-types/src/dashboard/bridge-question.d.ts +0 -32
  885. package/dist/widget-types/src/dashboard/bridge-store.d.ts +0 -178
  886. package/dist/widget-types/src/dashboard/cache.d.ts +0 -46
  887. package/dist/widget-types/src/dashboard/content-type.d.ts +0 -2
  888. package/dist/widget-types/src/dashboard/dashboard.d.ts +0 -37
  889. package/dist/widget-types/src/dashboard/discord-webhook.d.ts +0 -16
  890. package/dist/widget-types/src/dashboard/docs.d.ts +0 -38
  891. package/dist/widget-types/src/dashboard/file-diff.d.ts +0 -66
  892. package/dist/widget-types/src/dashboard/file-read.d.ts +0 -41
  893. package/dist/widget-types/src/dashboard/file-status.d.ts +0 -20
  894. package/dist/widget-types/src/dashboard/gh.d.ts +0 -130
  895. package/dist/widget-types/src/dashboard/git-status.d.ts +0 -32
  896. package/dist/widget-types/src/dashboard/github.d.ts +0 -10
  897. package/dist/widget-types/src/dashboard/http.d.ts +0 -28
  898. package/dist/widget-types/src/dashboard/interventions.d.ts +0 -66
  899. package/dist/widget-types/src/dashboard/keys.d.ts +0 -30
  900. package/dist/widget-types/src/dashboard/models.d.ts +0 -24
  901. package/dist/widget-types/src/dashboard/open-in-app.d.ts +0 -42
  902. package/dist/widget-types/src/dashboard/open-questions.d.ts +0 -52
  903. package/dist/widget-types/src/dashboard/overview.d.ts +0 -77
  904. package/dist/widget-types/src/dashboard/projects.d.ts +0 -89
  905. package/dist/widget-types/src/dashboard/pull-requests.d.ts +0 -126
  906. package/dist/widget-types/src/dashboard/queue.d.ts +0 -16
  907. package/dist/widget-types/src/dashboard/quota.d.ts +0 -59
  908. package/dist/widget-types/src/dashboard/remote-run.d.ts +0 -94
  909. package/dist/widget-types/src/dashboard/rpc-serve.d.ts +0 -102
  910. package/dist/widget-types/src/dashboard/run-inbox.d.ts +0 -30
  911. package/dist/widget-types/src/dashboard/scheduler-state.d.ts +0 -64
  912. package/dist/widget-types/src/dashboard/tickets.d.ts +0 -28
  913. package/dist/widget-types/src/dashboard/types.d.ts +0 -99
  914. package/dist/widget-types/src/dashboard/widget-serve.d.ts +0 -14
  915. package/dist/widget-types/src/dashboard-rpc/context.d.ts +0 -53
  916. package/dist/widget-types/src/dashboard-rpc/control.d.ts +0 -108
  917. package/dist/widget-types/src/dashboard-rpc/devices.d.ts +0 -8
  918. package/dist/widget-types/src/dashboard-rpc/events-tail.d.ts +0 -53
  919. package/dist/widget-types/src/dashboard-rpc/events.d.ts +0 -29
  920. package/dist/widget-types/src/dashboard-rpc/index.d.ts +0 -28
  921. package/dist/widget-types/src/dashboard-rpc/models.d.ts +0 -3
  922. package/dist/widget-types/src/dashboard-rpc/preferences.d.ts +0 -40
  923. package/dist/widget-types/src/dashboard-rpc/projects.d.ts +0 -54
  924. package/dist/widget-types/src/dashboard-rpc/quota.d.ts +0 -26
  925. package/dist/widget-types/src/dashboard-rpc/reads.d.ts +0 -227
  926. package/dist/widget-types/src/dashboard-rpc/relay-agent.d.ts +0 -8
  927. package/dist/widget-types/src/dashboard-rpc/stream-forward.d.ts +0 -16
  928. package/dist/widget-types/src/dashboard-rpc/widgets.d.ts +0 -32
  929. package/dist/widget-types/src/discord-credentials.d.ts +0 -79
  930. package/dist/widget-types/src/driver-names.d.ts +0 -21
  931. package/dist/widget-types/src/error-message.d.ts +0 -7
  932. package/dist/widget-types/src/event-stream.d.ts +0 -32
  933. package/dist/widget-types/src/events.d.ts +0 -235
  934. package/dist/widget-types/src/framework-dir.d.ts +0 -10
  935. package/dist/widget-types/src/framework-gitignore.d.ts +0 -11
  936. package/dist/widget-types/src/index.d.ts +0 -42
  937. package/dist/widget-types/src/jsonl-tail.d.ts +0 -54
  938. package/dist/widget-types/src/loopback-host.d.ts +0 -19
  939. package/dist/widget-types/src/node-fs.d.ts +0 -32
  940. package/dist/widget-types/src/open-choices.d.ts +0 -14
  941. package/dist/widget-types/src/pick-directory.d.ts +0 -29
  942. package/dist/widget-types/src/preference-defaults.d.ts +0 -53
  943. package/dist/widget-types/src/project-commands.d.ts +0 -23
  944. package/dist/widget-types/src/project-errors.d.ts +0 -43
  945. package/dist/widget-types/src/project-hooks.d.ts +0 -133
  946. package/dist/widget-types/src/project-presets.d.ts +0 -29
  947. package/dist/widget-types/src/project-widgets.d.ts +0 -45
  948. package/dist/widget-types/src/project.d.ts +0 -28
  949. package/dist/widget-types/src/quota-boundary.d.ts +0 -115
  950. package/dist/widget-types/src/quota-poller.d.ts +0 -82
  951. package/dist/widget-types/src/registry.d.ts +0 -210
  952. package/dist/widget-types/src/store/agent-checkout.d.ts +0 -46
  953. package/dist/widget-types/src/store/agent-store.d.ts +0 -237
  954. package/dist/widget-types/src/store/branches.d.ts +0 -133
  955. package/dist/widget-types/src/store/forge.d.ts +0 -109
  956. package/dist/widget-types/src/store/git-host.d.ts +0 -111
  957. package/dist/widget-types/src/store/index.d.ts +0 -9
  958. package/dist/widget-types/src/store/provided.d.ts +0 -16
  959. package/dist/widget-types/src/store/queue.d.ts +0 -45
  960. package/dist/widget-types/src/store/run-record.d.ts +0 -21
  961. package/dist/widget-types/src/store/runs.d.ts +0 -101
  962. package/dist/widget-types/src/store/tickets.d.ts +0 -72
  963. package/dist/widget-types/src/tickets.d.ts +0 -17
  964. package/dist/widget-types/src/worktrees.d.ts +0 -89
  965. package/dist/widget.css +0 -50
@@ -1,17 +1,17 @@
1
1
  import { hostname } from 'node:os';
2
2
  import { join } from 'node:path';
3
3
  import { appendInbox, takeInbox } from '@openagt/agent-driver';
4
- import { THE_FRAMEWORK_DIR } from '../framework-dir.js';
4
+ import { OPENAGENT_DIR } from '../openagent-dir.js';
5
5
  import { runResumeHook } from '../project-hooks.js';
6
6
  import { findAgent, isPidAlive, resolveAgentCheckout } from '../store/index.js';
7
7
  /**
8
8
  * What a person says to a run (#1774): their own words, or their answer to the question the run
9
9
  * stopped on. The daemon runs no agent, so the line reaches the run through what the run's tool
10
10
  * reads: the inbox file in the run's checkout while the run works, the project's `resume` hook
11
- * line once it has ended. The framework names no tool in either.
11
+ * line once it has ended. OpenAgent names no tool in either.
12
12
  */
13
13
  /**
14
- * The inbox of a run, in its checkout's `.the-framework/`: the file agent-driver's session reads
14
+ * The inbox of a run, in its checkout's `.openagent/`: the file agent-driver's session reads
15
15
  * when a turn ends, one JSON line per message or answer. The run's tool hands the session the
16
16
  * same path.
17
17
  */
@@ -32,7 +32,7 @@ export async function sayToRun(cwd, agentId, line, deps = {}) {
32
32
  const isWorking = deps.isWorking ?? isRunWorking;
33
33
  const lines = [line];
34
34
  if (await isWorking(cwd, agentId)) {
35
- const inbox = join(await resolveAgentCheckout(cwd, agentId), THE_FRAMEWORK_DIR, RUN_INBOX_FILE);
35
+ const inbox = join(await resolveAgentCheckout(cwd, agentId), OPENAGENT_DIR, RUN_INBOX_FILE);
36
36
  await appendInbox(inbox, line);
37
37
  if (await isWorking(cwd, agentId))
38
38
  return { ok: true };
@@ -1 +1 @@
1
- {"version":3,"file":"run-inbox.js","sourceRoot":"","sources":["../../src/dashboard/run-inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAkB,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE/E;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAA;AAK3C,iGAAiG;AACjG,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,OAAe;IACtD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAClE,OAAO,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACrH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,OAAe,EACf,IAAe,EACf,IAAI,GAAuE,EAAE;IAE7E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAA;IAChD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAA;IACpB,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAA;QAC/F,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC9B,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACtD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE;YACvC,KAAK,EAAE,OAAO;YACd,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;SACzF,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAA;IACjC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"run-inbox.js","sourceRoot":"","sources":["../../src/dashboard/run-inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAkB,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE/E;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAA;AAK3C,iGAAiG;AACjG,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,OAAe;IACtD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAClE,OAAO,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACrH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,OAAe,EACf,IAAe,EACf,IAAI,GAAuE,EAAE;IAE7E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAA;IAChD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAA;IACpB,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,CAAA;QAC3F,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC9B,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QACtD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE;YACvC,KAAK,EAAE,OAAO;YACd,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;SACzF,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAA;IACjC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC"}
@@ -3,7 +3,7 @@ import type { QuotaSource } from './quota.js';
3
3
  import type { ModelsSource } from './models.js';
4
4
  import type { ProjectErrorsReader } from '../project-errors.js';
5
5
  import type { BridgeBrowserOwner } from '../bridge-browser.js';
6
- import type { AddProjectResult, StartAgentOptions, StartAgentResult } from './types.js';
6
+ import type { AddProjectResult, RemoveProjectResult, StartAgentOptions, StartAgentResult } from './types.js';
7
7
  import type { EventsSource, RemoteAgents } from './rpc-serve.js';
8
8
  /** Options for {@link startDashboard}. */
9
9
  export interface DashboardOptions {
@@ -20,7 +20,9 @@ export interface DashboardOptions {
20
20
  * Called when the browser adds a project (#396): the `sendAddProject` RPC reaches this through
21
21
  * the wired dashboard context. Wire it to install the repo and register it.
22
22
  */
23
- onAddProject: (path: string) => Promise<AddProjectResult> | AddProjectResult;
23
+ onAddProject: (path: string, share: boolean) => Promise<AddProjectResult> | AddProjectResult;
24
+ /** Called when the browser removes a project: the `sendRemoveProject` RPC reaches this through the wired dashboard context. */
25
+ onRemoveProject: (projectId: string, files: boolean) => Promise<RemoveProjectResult> | RemoveProjectResult;
24
26
  /**
25
27
  * The user-preferences store (#410): the `onPreferences` / `savePreferences` RPCs read and
26
28
  * write it through the wired dashboard context.
@@ -43,7 +45,7 @@ export interface DashboardOptions {
43
45
  clientBundleDir?: string;
44
46
  /**
45
47
  * The shared token that guards a non-loopback bind (#1051): with it set, every route (static
46
- * bundle, `/_rpc`, `/_relay`) needs a valid `fw_daemon` cookie or a matching
48
+ * bundle, `/_rpc`, `/_relay`) needs a valid `oa_daemon` cookie or a matching
47
49
  * `?token=`, else 401. Omit for a loopback bind, where the guard is a no-op and local UX is
48
50
  * byte-identical. A separate concern from the CSRF origin check in rpc-serve.ts.
49
51
  */
@@ -64,7 +66,7 @@ export interface DashboardOptions {
64
66
  * `token` guard above, so a device without the cookie cannot start or read a run.
65
67
  */
66
68
  relay?: {
67
- tailEvents: (agentId: string, onEvent: (event: import('../events.js').FrameworkEvent) => void) => () => void;
69
+ tailEvents: (agentId: string, onEvent: (event: import('../events.js').OpenAgentEvent) => void) => () => void;
68
70
  /** Run one whitelisted run-scoped RPC against this daemon's own checkout (#1067 slice 2). */
69
71
  rpc?: (fn: string, args: unknown[]) => Promise<unknown>;
70
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAOhE,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,EAC1B,SAAS,CAAC,EAAE,MAAM,KACf,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACjD;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAA;IAC5E;;;OAGG;IACH,WAAW,EAAE,gBAAgB,CAAA;IAC7B,yDAAyD;IACzD,KAAK,EAAE,WAAW,CAAA;IAClB,2EAA2E;IAC3E,MAAM,EAAE,YAAY,CAAA;IACpB,oFAAoF;IACpF,aAAa,EAAE,mBAAmB,CAAA;IAClC,iHAAiH;IACjH,aAAa,EAAE,kBAAkB,CAAA;IACjC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAA;IAC1B;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QACN,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,cAAc,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;QAC5G,6FAA6F;QAC7F,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KACxD,CAAA;IACD;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,uBAAuB,EAAE,aAAa,EAAE,CAAC,CAAA;CAChF;AAED,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,uBAAuB;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAuIzE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC5G,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAOhE,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,EAC1B,SAAS,CAAC,EAAE,MAAM,KACf,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACjD;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAA;IAC5F,+HAA+H;IAC/H,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAA;IAC1G;;;OAGG;IACH,WAAW,EAAE,gBAAgB,CAAA;IAC7B,yDAAyD;IACzD,KAAK,EAAE,WAAW,CAAA;IAClB,2EAA2E;IAC3E,MAAM,EAAE,YAAY,CAAA;IACpB,oFAAoF;IACpF,aAAa,EAAE,mBAAmB,CAAA;IAClC,iHAAiH;IACjH,aAAa,EAAE,kBAAkB,CAAA;IACjC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAA;IAC1B;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QACN,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,cAAc,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;QAC5G,6FAA6F;QAC7F,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KACxD,CAAA;IACD;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,uBAAuB,EAAE,aAAa,EAAE,CAAC,CAAA;CAChF;AAED,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,uBAAuB;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAwIzE"}
@@ -37,6 +37,7 @@ export function startDashboard(opts) {
37
37
  const rpcMount = makeRpcMount({
38
38
  startAgent: opts.onStart,
39
39
  addProject: opts.onAddProject,
40
+ removeProject: opts.onRemoveProject,
40
41
  eventsSource: opts.eventsSource,
41
42
  remote: opts.remote,
42
43
  preferences: opts.preferences,
@@ -179,9 +180,9 @@ function guardBrowserOrigin(req, res, host) {
179
180
  return false;
180
181
  }
181
182
  /** The cookie a bootstrapped browser carries on every same-origin request (#1051). */
182
- const DAEMON_COOKIE = 'fw_daemon';
183
+ const DAEMON_COOKIE = 'oa_daemon';
183
184
  /**
184
- * The non-loopback bind guard (#1051): a request needs a valid `fw_daemon` cookie or a matching
185
+ * The non-loopback bind guard (#1051): a request needs a valid `oa_daemon` cookie or a matching
185
186
  * `?token=`, else 401. A valid `?token=` sets the cookie and 302s to the clean path so the token
186
187
  * leaves the URL bar, history, and Referer after one hop; the cookie then rides RPC, the events
187
188
  * Channel, and the MJPEG `<img>` screencast alike (all same-origin), which a bearer header cannot
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The branch agents start from in the project at `cwd`: origin's default branch as this clone has
3
+ * it, else the branch the folder is on (a project with no remote starts an agent from its last
4
+ * local commit). `ref` is what git is asked, `name` what a person reads. None where the folder is
5
+ * on no branch, or is no repository.
6
+ */
7
+ export declare function startBranch(cwd: string): Promise<{
8
+ ref: string;
9
+ name: string;
10
+ } | undefined>;
11
+ /** A skill that is in the folder and not on the branch agents start from. */
12
+ export interface Waiting {
13
+ /** The branch it has yet to reach, by name. */
14
+ branch: string;
15
+ /** Whether the branch the folder is on has it: an agent started from that branch does. */
16
+ here: boolean;
17
+ }
18
+ /**
19
+ * Which of the skills `names`, all in the project's folder, are waiting to reach the branch agents
20
+ * start from. A skill is said to be waiting only when that is known: an agent's checkout fetches
21
+ * the remote before it starts, so before a skill is called waiting against a remote branch, this
22
+ * clone's copy of that branch is fetched too (at most once a minute per project), or a pull
23
+ * request merged a moment ago would keep its skill waiting here.
24
+ */
25
+ export declare function waitingSkills(cwd: string, names: readonly string[]): Promise<{
26
+ start?: {
27
+ ref: string;
28
+ name: string;
29
+ };
30
+ waiting: Map<string, Waiting>;
31
+ }>;
32
+ //# sourceMappingURL=start-branch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-branch.d.ts","sourceRoot":"","sources":["../../src/dashboard/start-branch.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAKjG;AAED,6EAA6E;AAC7E,MAAM,WAAW,OAAO;IACtB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,0FAA0F;IAC1F,IAAI,EAAE,OAAO,CAAA;CACd;AAQD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAe5J"}
@@ -0,0 +1,47 @@
1
+ import { nodeGitRunner, originDefaultBranch } from '@openagt/agent-data';
2
+ import { skillsOn } from '@openagt/init';
3
+ import { currentBranch } from './git-status.js';
4
+ /**
5
+ * The branch agents start from in the project at `cwd`: origin's default branch as this clone has
6
+ * it, else the branch the folder is on (a project with no remote starts an agent from its last
7
+ * local commit). `ref` is what git is asked, `name` what a person reads. None where the folder is
8
+ * on no branch, or is no repository.
9
+ */
10
+ export async function startBranch(cwd) {
11
+ const main = await originDefaultBranch(cwd).catch(() => undefined);
12
+ if (main !== undefined)
13
+ return { ref: main, name: main.slice('origin/'.length) };
14
+ const local = await currentBranch(cwd).catch(() => undefined);
15
+ return local !== undefined && local !== 'HEAD' ? { ref: 'HEAD', name: local } : undefined;
16
+ }
17
+ /** How long this clone's copy of the remote's default branch counts as fresh, per project. */
18
+ const FRESH_MS = 60_000;
19
+ /** How long a read waits for the fetch that freshens it; the fetch itself goes on. */
20
+ const FETCH_WAIT_MS = 5_000;
21
+ const fetched = new Map();
22
+ /**
23
+ * Which of the skills `names`, all in the project's folder, are waiting to reach the branch agents
24
+ * start from. A skill is said to be waiting only when that is known: an agent's checkout fetches
25
+ * the remote before it starts, so before a skill is called waiting against a remote branch, this
26
+ * clone's copy of that branch is fetched too (at most once a minute per project), or a pull
27
+ * request merged a moment ago would keep its skill waiting here.
28
+ */
29
+ export async function waitingSkills(cwd, names) {
30
+ const start = await startBranch(cwd);
31
+ if (!start || names.length === 0)
32
+ return { ...(start ? { start } : {}), waiting: new Map() };
33
+ let on = await skillsOn(cwd, start.ref);
34
+ let missing = names.filter(name => !on.has(name));
35
+ if (missing.length > 0 && start.ref !== 'HEAD' && Date.now() - (fetched.get(cwd) ?? 0) > FRESH_MS) {
36
+ fetched.set(cwd, Date.now());
37
+ const fetch = nodeGitRunner()(['fetch', '--quiet', 'origin', start.name], cwd).catch(() => undefined);
38
+ await Promise.race([fetch, new Promise(resolve => setTimeout(resolve, FETCH_WAIT_MS))]);
39
+ on = await skillsOn(cwd, start.ref);
40
+ missing = names.filter(name => !on.has(name));
41
+ }
42
+ if (missing.length === 0)
43
+ return { start, waiting: new Map() };
44
+ const here = start.ref === 'HEAD' ? { has: () => false } : await skillsOn(cwd, 'HEAD');
45
+ return { start, waiting: new Map(missing.map(name => [name, { branch: start.name, here: here.has(name) }])) };
46
+ }
47
+ //# sourceMappingURL=start-branch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-branch.js","sourceRoot":"","sources":["../../src/dashboard/start-branch.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { requestPathname } from '../request-path.js';
6
6
  // `index.html` plus `assets/**` — so the daemon serves it as
7
7
  // plain files with an SPA fallback (any non-asset path yields `index.html`, which boots
8
8
  // the client router). Assets are copied into the
9
- // framework package at build time (see scripts/bundle-dashboard.mjs).
9
+ // OpenAgent package at build time (see scripts/bundle-dashboard.mjs).
10
10
  /** Whether a real, readable file exists at `path`. */
11
11
  async function isFile(path) {
12
12
  return stat(path).then(s => s.isFile()).catch(() => false);
@@ -14,10 +14,36 @@ export type DeleteAgentResult = {
14
14
  ok: false;
15
15
  error: string;
16
16
  };
17
- /** The outcome of an add-project attempt (#396): registered, or was already, or why not. */
17
+ /**
18
+ * The outcome of an add-project attempt (#396): registered, or was already, or why not.
19
+ * `noRemote` says the person asked to share the agents' records and the repository has no remote
20
+ * to share with: they are kept on this machine.
21
+ */
18
22
  export type AddProjectResult = {
19
23
  ok: true;
20
24
  alreadyActivated: boolean;
25
+ noRemote?: true;
26
+ } | {
27
+ ok: false;
28
+ error: string;
29
+ };
30
+ /**
31
+ * What removing OpenAgent's files from a project's folder did: what went, what stayed with the
32
+ * reason, and what could not be done, each line in words for a person. Paths are from the
33
+ * project's root.
34
+ */
35
+ export interface CleanupReport {
36
+ removed: string[];
37
+ kept: {
38
+ path: string;
39
+ reason: string;
40
+ }[];
41
+ failed: string[];
42
+ }
43
+ /** The outcome of removing a project from the list: gone from it, with what the clean-up did when one was asked for, or why not. */
44
+ export type RemoveProjectResult = {
45
+ ok: true;
46
+ cleanup?: CleanupReport;
21
47
  } | {
22
48
  ok: false;
23
49
  error: string;
@@ -44,7 +70,7 @@ export interface StartAgentOptions {
44
70
  model?: string;
45
71
  /** Which coding agent the run is on: `claude-code` or `codex`. */
46
72
  driver?: string;
47
- /** The person's saved pick of how far the run takes its work when the agent finishes. Absent, none is saved: the daemon starts the run as far as the project goes with no pull request. A pick the project is not offered is held to that too. */
73
+ /** The person's saved pick of how far the run takes its work when the agent finishes. Absent, none is saved: the daemon starts the run at `commit`. A saved pick the project is not offered is held to the furthest the project goes with no pull request. */
48
74
  publish?: PublishPick;
49
75
  /**
50
76
  * The branch the agent's own branch starts from, as this machine has it, commits that are not
@@ -59,7 +85,7 @@ export interface StartAgentOptions {
59
85
  then?: string;
60
86
  /**
61
87
  * Run this session on a connected device (#1067): the local daemon relays the start to the remote
62
- * daemon at `url` (authenticating with `token` as the `fw_daemon` cookie) and streams its events
88
+ * daemon at `url` (authenticating with `token` as the `oa_daemon` cookie) and streams its events
63
89
  * back into the local agent view. The device `label` rides along (memory-only, like `url`/`token`) so
64
90
  * the local session list + notice can show which device the agent is on after a reload (#1077).
65
91
  * Memory-only relay config the dashboard sets at submit time from a saved device. NEVER persisted to
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAMvD,0DAA0D;AAC1D,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9E,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3E,4FAA4F;AAC5F,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,GACvC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhC;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kPAAkP;IAClP,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD;AAED,qHAAqH;AACrH,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3F;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE;QACT,qCAAqC;QACrC,IAAI,EAAE,MAAM,CAAA;QACZ,yCAAyC;QACzC,KAAK,EAAE,OAAO,CAAA;QACd,+FAA+F;QAC/F,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAMvD,0DAA0D;AAC1D,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9E,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhC;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxC,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,oIAAoI;AACpI,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtG;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8PAA8P;IAC9P,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD;AAED,qHAAqH;AACrH,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3F;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE;QACT,qCAAqC;QACrC,IAAI,EAAE,MAAM,CAAA;QACZ,yCAAyC;QACzC,KAAK,EAAE,OAAO,CAAA;QACd,+FAA+F;QAC/F,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
@@ -16,7 +16,7 @@ import type { BridgeStartInput, BridgeStartRequest } from './bridge-starts.js';
16
16
  */
17
17
  export declare const WEB_START_PREFIX = "/_web-start";
18
18
  /** The environment variable a run finds its daemon's URL in. */
19
- export declare const DAEMON_URL_ENV = "TF_DAEMON_URL";
19
+ export declare const DAEMON_URL_ENV = "OPENAGENT_DAEMON_URL";
20
20
  /** What the daemon wires behind the routes. Absent when the bridge is off, which 404s them. */
21
21
  export interface WebStartHandlers {
22
22
  /** The daemon token every call must present — the same one the extension holds. */
@@ -1 +1 @@
1
- {"version":3,"file":"web-start-endpoints.d.ts","sourceRoot":"","sources":["../../src/dashboard/web-start-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE9E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAE7C,gEAAgE;AAChE,eAAO,MAAM,cAAc,kBAAkB,CAAA;AAE7C,+FAA+F;AAC/F,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAA;IACb,mGAAmG;IACnG,cAAc,EAAE,MAAM,OAAO,CAAA;IAC7B,qDAAqD;IACrD,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,kBAAkB,GAAG,MAAM,CAAA;IACjE,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAA;CACpD;AAKD,sCAAsC;AACtC,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACrC,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"web-start-endpoints.d.ts","sourceRoot":"","sources":["../../src/dashboard/web-start-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE9E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAE7C,gEAAgE;AAChE,eAAO,MAAM,cAAc,yBAAyB,CAAA;AAEpD,+FAA+F;AAC/F,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAA;IACb,mGAAmG;IACnG,cAAc,EAAE,MAAM,OAAO,CAAA;IAC7B,qDAAqD;IACrD,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,kBAAkB,GAAG,MAAM,CAAA;IACjE,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAA;CACpD;AAKD,sCAAsC;AACtC,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACrC,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -16,7 +16,7 @@ import { end, readPost, requireGet, sendJson } from './http.js';
16
16
  */
17
17
  export const WEB_START_PREFIX = '/_web-start';
18
18
  /** The environment variable a run finds its daemon's URL in. */
19
- export const DAEMON_URL_ENV = 'TF_DAEMON_URL';
19
+ export const DAEMON_URL_ENV = 'OPENAGENT_DAEMON_URL';
20
20
  const MAX_BODY = 512 * 1024;
21
21
  const ID = /^[A-Za-z0-9-]{1,64}$/;
22
22
  /** Route a `/_web-start*` request. */
@@ -1 +1 @@
1
- {"version":3,"file":"web-start-endpoints.js","sourceRoot":"","sources":["../../src/dashboard/web-start-endpoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-start-endpoints.js","sourceRoot":"","sources":["../../src/dashboard/web-start-endpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--scroll-fade-b:0px}}}@layer theme{:root,:host{--font-sans:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius:.125rem;--color-background:var(--background);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-border:var(--border);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-danger:var(--danger)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-\[3px\]{top:3px}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-1{right:var(--spacing)}.right-3{right:calc(var(--spacing) * 3)}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-\[2\.375rem\]{margin-left:-2.375rem}.ml-0{margin-left:0}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[16\/11\]{aspect-ratio:16/11}.aspect-square{aspect-ratio:1}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-full{width:100%;height:100%}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-auto{height:auto}.h-full{height:100%}.h-max{height:max-content}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[1\.35rem\]{max-height:1.35rem}.max-h-\[32rem\]{max-height:32rem}.max-h-\[55vh\]{max-height:55vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.max-h-\[var\(--available-height\)\]{max-height:var(--available-height)}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-40{width:calc(var(--spacing) * 40)}.w-64{width:calc(var(--spacing) * 64)}.w-96{width:calc(var(--spacing) * 96)}.w-\[13\.5rem\]{width:13.5rem}.w-\[min\(26rem\,calc\(100vw-2rem\)\)\]{width:min(26rem,100vw - 2rem)}.w-\[min\(28rem\,calc\(100vw-2rem\)\)\]{width:min(28rem,100vw - 2rem)}.w-\[min\(34rem\,calc\(100vw-2rem\)\)\]{width:min(34rem,100vw - 2rem)}.w-\[var\(--anchor-width\)\]{width:var(--anchor-width)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-96{max-width:calc(var(--spacing) * 96)}.max-w-\[10rem\]{max-width:10rem}.max-w-\[20rem\]{max-width:20rem}.max-w-\[22rem\]{max-width:22rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[45\%\]{max-width:45%}.max-w-\[50\%\]{max-width:50%}.max-w-\[85\%\]{max-width:85%}.max-w-\[90vw\]{max-width:90vw}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:0}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-\[10rem\]{min-width:10rem}.min-w-\[13rem\]{min-width:13rem}.min-w-\[14rem\]{min-width:14rem}.min-w-\[15rem\]{min-width:15rem}.min-w-\[16rem\]{min-width:16rem}.min-w-\[18rem\]{min-width:18rem}.min-w-\[19rem\]{min-width:19rem}.min-w-\[22rem\]{min-width:22rem}.flex-1{flex:1}.flex-auto{flex:auto}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.shrink-\[100\]{flex-shrink:100}.grow{flex-grow:1}.basis-96{flex-basis:calc(var(--spacing) * 96)}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.scroll-fade-b{--scroll-fade-size:min(12%, 2.5rem);-webkit-mask-image:linear-gradient(to bottom, #000 0, #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%);-webkit-mask-image:linear-gradient(to bottom, #000 0, #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%);-webkit-mask-image:linear-gradient(to bottom, #000 0, #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%);mask-image:linear-gradient(to bottom, #000 0, #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}@supports (animation-timeline:scroll()){.scroll-fade-b{animation:1ms ease-in-out both scroll-fade-reveal-b;animation-timeline:scroll(self y);animation-range:calc(100% - 6rem) 100%}}@supports not (animation-timeline:scroll()){.scroll-fade-b{--scroll-fade-b:var(--scroll-fade-size)}}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.touch-none{touch-action:none}.resize{resize:both}.resize-y{resize:vertical}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--muted-foreground) transparent}@supports (color:color-mix(in lab, red, red)){.scrollbar-thin{scrollbar-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent) transparent}}.scrollbar-thin{scrollbar-width:thin}.scrollbar-gutter-stable{scrollbar-gutter:stable;scrollbar-gutter:stable}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:var(--radius)}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-\[var\(--color-border\)\]{border-color:var(--color-border)}.border-\[var\(--color-primary\)\]\/40{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary\)\]\/40{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.border-\[var\(--color-primary-foreground\)\]\/25{border-color:var(--color-primary-foreground)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary-foreground\)\]\/25{border-color:color-mix(in oklab, var(--color-primary-foreground) 25%, transparent)}}.border-\[var\(--color-primary-foreground\)\]\/30{border-color:var(--color-primary-foreground)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary-foreground\)\]\/30{border-color:color-mix(in oklab, var(--color-primary-foreground) 30%, transparent)}}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-danger\/30{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/30{border-color:color-mix(in oklab, var(--danger) 30%, transparent)}}.border-primary,.border-primary\/40{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/40{border-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.border-primary\/60{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/60{border-color:color-mix(in oklab, var(--primary) 60%, transparent)}}.border-sidebar-border{border-color:var(--border)}.border-transparent{border-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[var\(--color-border\)\]{background-color:var(--color-border)}.bg-\[var\(--color-card\)\]{background-color:var(--color-card)}.bg-\[var\(--color-danger\)\]{background-color:var(--color-danger)}.bg-\[var\(--color-muted\)\]{background-color:var(--color-muted)}.bg-\[var\(--color-primary\)\],.bg-\[var\(--color-primary\)\]\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-primary\)\]\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-accent,.bg-accent\/60{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/60{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.bg-background,.bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, transparent)}}.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/90{background-color:color-mix(in oklab, var(--background) 90%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-danger,.bg-danger\/10{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/10{background-color:color-mix(in oklab, var(--danger) 10%, transparent)}}.bg-danger\/15{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/15{background-color:color-mix(in oklab, var(--danger) 15%, transparent)}}.bg-foreground,.bg-foreground\/70{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/70{background-color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.bg-info{background-color:var(--info)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-primary,.bg-primary\/15{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/15{background-color:color-mix(in oklab, var(--primary) 15%, transparent)}}.bg-sidebar{background-color:var(--background)}.bg-sidebar-accent{background-color:var(--accent)}.bg-sidebar-border{background-color:var(--border)}.bg-success,.bg-success\/15{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/15{background-color:color-mix(in oklab, var(--success) 15%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning,.bg-warning\/10{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--warning) 10%, transparent)}}.bg-warning\/15{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/15{background-color:color-mix(in oklab, var(--warning) 15%, transparent)}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-background{--tw-gradient-from:var(--background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pr-1{padding-right:var(--spacing)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.align-baseline{vertical-align:baseline}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-background\)\]{color:var(--color-background)}.text-\[var\(--color-card-foreground\)\]{color:var(--color-card-foreground)}.text-\[var\(--color-muted-foreground\)\]{color:var(--color-muted-foreground)}.text-\[var\(--color-primary\)\]{color:var(--color-primary)}.text-\[var\(--color-primary-foreground\)\]{color:var(--color-primary-foreground)}.text-accent-foreground{color:var(--accent-foreground)}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-danger{color:var(--danger)}.text-foreground{color:var(--foreground)}.text-info{color:var(--info)}.text-muted-foreground,.text-muted-foreground\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/50{color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-sidebar-accent-foreground{color:var(--accent-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-35{opacity:.35}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--primary)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\,transform\]{transition-property:margin,opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[translate\,scale\,opacity\]{transition-property:translate,scale,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\/prompt\:opacity-100:is(:where(.group\/prompt):hover *),.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:0!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:0}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:0}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius-lg)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--accent-foreground)}}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:var(--spacing)}.marker\:text-muted-foreground ::marker{color:var(--muted-foreground)}.marker\:text-muted-foreground::marker{color:var(--muted-foreground)}.marker\:text-muted-foreground ::-webkit-details-marker{color:var(--muted-foreground)}.marker\:text-muted-foreground::-webkit-details-marker{color:var(--muted-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:pt-0:first-child{padding-top:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pb-0:last-child{padding-bottom:0}.empty\:hidden:empty{display:none}.focus-within\:border-muted-foreground\/40:focus-within{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus-within\:border-muted-foreground\/40:focus-within{border-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-\[var\(--color-primary\)\]:focus-within{--tw-ring-color:var(--color-primary)}@media (hover:hover){.hover\:border-primary\/50:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.hover\:bg-\[var\(--color-accent\)\]:hover{background-color:var(--color-accent)}.hover\:bg-\[var\(--color-muted\)\]:hover{background-color:var(--color-muted)}.hover\:bg-accent:hover,.hover\:bg-accent\/40:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/40:hover{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.hover\:bg-accent\/60:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/60:hover{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\:bg-background:hover{background-color:var(--background)}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-muted-foreground\/70:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted-foreground\/70:hover{background-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.hover\:bg-sidebar-accent:hover,.hover\:bg-sidebar-accent\/60:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-sidebar-accent\/60:hover{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\:text-\[var\(--color-accent-foreground\)\]:hover{color:var(--color-accent-foreground)}.hover\:text-danger:hover{color:var(--danger)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-sidebar-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--background)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--border)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:bg-accent:focus-visible{background-color:var(--accent)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[var\(--color-primary\)\]:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-sidebar-accent:active{background-color:var(--accent)}.active\:text-sidebar-accent-foreground:active{color:var(--accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-0:disabled{opacity:0}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-100:disabled{opacity:1}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--background)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.data-autoscrolling\:scrollbar-quiet[data-autoscrolling]{scrollbar-color:transparent transparent}.data-\[active\=false\]\:pointer-events-none[data-active=false]{pointer-events:none}.data-\[active\=false\]\:scale-95[data-active=false]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[active\=false\]\:opacity-0[data-active=false]{opacity:0}.data-\[active\=true\]\:translate-y-0[data-active=true]{--tw-translate-y:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[active\=true\]\:scale-100[data-active=true]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:opacity-100[data-active=true]{opacity:1}.data-\[checked\]\:translate-x-4[data-checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[checked\]\:border-primary[data-checked]{border-color:var(--primary)}.data-\[checked\]\:bg-primary[data-checked]{background-color:var(--primary)}.data-\[checked\]\:bg-primary-foreground[data-checked]{background-color:var(--primary-foreground)}.data-\[checked\]\:text-primary-foreground[data-checked]{color:var(--primary-foreground)}.data-\[direction\=end\]\:bottom-3[data-direction=end]{bottom:calc(var(--spacing) * 3)}.data-\[direction\=end\]\:data-\[active\=false\]\:translate-y-full[data-direction=end][data-active=false]{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[direction\=start\]\:top-3[data-direction=start]{top:calc(var(--spacing) * 3)}.data-\[direction\=start\]\:data-\[active\=false\]\:-translate-y-full[data-direction=start][data-active=false]{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-\[var\(--color-accent\)\][data-highlighted]{background-color:var(--color-accent)}.data-\[highlighted\]\:text-\[var\(--color-accent-foreground\)\][data-highlighted]{color:var(--color-accent-foreground)}.data-\[popup-open\]\:bg-\[var\(--color-accent\)\][data-popup-open]{background-color:var(--color-accent)}.data-\[popup-open\]\:bg-\[var\(--color-primary\)\][data-popup-open]{background-color:var(--color-primary)}.data-\[popup-open\]\:bg-muted[data-popup-open]{background-color:var(--muted)}.data-\[popup-open\]\:text-\[var\(--color-accent-foreground\)\][data-popup-open]{color:var(--color-accent-foreground)}.data-\[popup-open\]\:text-\[var\(--color-primary-foreground\)\][data-popup-open]{color:var(--color-primary-foreground)}.data-\[popup-open\]\:opacity-90[data-popup-open]{opacity:.9}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--accent-foreground)}}@media not all and (width>=40rem){.max-sm\:hidden{display:none}}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:block{display:block}.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:0}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:var(--radius-xl)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container not (width>=28rem){.\@max-md\:hidden{display:none}}.\[\&\:\:-moz-range-thumb\]\:h-3\.5::-moz-range-thumb{height:calc(var(--spacing) * 3.5)}.\[\&\:\:-moz-range-thumb\]\:w-3\.5::-moz-range-thumb{width:calc(var(--spacing) * 3.5)}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:3.40282e38px}.\[\&\:\:-moz-range-thumb\]\:border::-moz-range-thumb{border-style:var(--tw-border-style);border-width:1px}.\[\&\:\:-moz-range-thumb\]\:border-none::-moz-range-thumb{--tw-border-style:none;border-style:none}.\[\&\:\:-moz-range-thumb\]\:border-background::-moz-range-thumb{border-color:var(--background)}.\[\&\:\:-moz-range-thumb\]\:bg-foreground::-moz-range-thumb{background-color:var(--foreground)}.\[\&\:\:-moz-range-thumb\]\:shadow-sm::-moz-range-thumb{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\[\&\:\:-moz-range-track\]\:border-none::-moz-range-track{--tw-border-style:none;border-style:none}.\[\&\:\:-moz-range-track\]\:bg-transparent::-moz-range-track{background-color:#0000}.\[\&\:\:-webkit-slider-runnable-track\]\:bg-transparent::-webkit-slider-runnable-track{background-color:#0000}.\[\&\:\:-webkit-slider-thumb\]\:h-3\.5::-webkit-slider-thumb{height:calc(var(--spacing) * 3.5)}.\[\&\:\:-webkit-slider-thumb\]\:w-3\.5::-webkit-slider-thumb{width:calc(var(--spacing) * 3.5)}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-slider-thumb\]\:border::-webkit-slider-thumb{border-style:var(--tw-border-style);border-width:1px}.\[\&\:\:-webkit-slider-thumb\]\:border-background::-webkit-slider-thumb{border-color:var(--background)}.\[\&\:\:-webkit-slider-thumb\]\:bg-foreground::-webkit-slider-thumb{background-color:var(--foreground)}.\[\&\:\:-webkit-slider-thumb\]\:shadow-sm::-webkit-slider-thumb{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--accent-foreground)}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#fff;--foreground:#3a4248;--card:#fff;--card-foreground:#3a4248;--muted:#f3f5f2;--muted-foreground:#66756c;--border:#e3e7e1;--primary:#6f7f00;--primary-foreground:#fff;--accent:#eef1ec;--accent-foreground:#3a4248;--success:#6f7f00;--warning:#9a6b00;--danger:#d1403d;--info:#2b7ba5;--logo-1:#0a0a0a;--logo-2:#171717;--logo-3:#262626;--logo-4:#404040;--logo-5:#525252;--logo-6:#737373}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#2d353b;--foreground:#d3c6aa;--card:#232a2e;--card-foreground:#d3c6aa;--muted:#343f44;--muted-foreground:#9da9a0;--border:#475258;--primary:#a7c080;--primary-foreground:#2d353b;--accent:#343f44;--accent-foreground:#d3c6aa;--success:#a7c080;--warning:#dbbc7f;--danger:#e67e80;--info:#7fbbb3;--logo-1:#fafafa;--logo-2:#ededed;--logo-3:#d4d4d4;--logo-4:#a3a3a3;--logo-5:#8a8a8a;--logo-6:#737373}body{background-color:var(--background);color:var(--foreground)}.rail-title{white-space:nowrap;overflow:hidden}.rail-title.is-overflowing{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 3rem),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 3rem),#0000)}.rail-fade{opacity:0}@supports (animation-timeline:scroll()){.rail-fade{animation:1ms linear both rail-fade-appear;animation-timeline:scroll(y);animation-range:0 1.5rem}}@keyframes rail-fade-appear{to{opacity:1}}.text-shimmer{background:linear-gradient(90deg, var(--muted-foreground) 35%, var(--foreground) 50%, var(--muted-foreground) 65%) 0 0 / 250% 100%;color:#0000;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite text-shimmer}@keyframes text-shimmer{0%{background-position:100% 0}to{background-position:-66% 0}}.dot-wave{gap:3px;display:inline-flex}.dot-wave>span{background:currentColor;border-radius:9999px;width:4px;height:4px;animation:1.2s ease-in-out infinite dot-wave}.dot-wave>span:nth-child(2){animation-delay:.15s}.dot-wave>span:nth-child(3){animation-delay:.3s}@keyframes dot-wave{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@media (prefers-reduced-motion:reduce){.text-shimmer{color:inherit;background:0 0;animation:none}.dot-wave>span{animation:none}}.pe-prose{white-space:pre-wrap;word-break:break-word}.pe-prose p{margin:0}.pe-prose p+p,.pe-prose ul,.pe-prose ol,.pe-prose pre,.pe-prose blockquote{margin-top:.4rem}.pe-prose ul{padding-left:1.25rem;list-style:outside}.pe-prose ol{padding-left:1.25rem;list-style:decimal}.pe-prose h1,.pe-prose h2,.pe-prose h3{margin-top:.5rem;font-weight:600}.pe-prose code{background:var(--muted);border-radius:.25rem;padding:.05rem .3rem;font-size:.85em}.pe-prose pre{background:var(--muted);border-radius:.375rem;padding:.5rem .6rem;overflow-x:auto}.pe-prose pre code{background:0 0;padding:0}.pe-prose blockquote{border-left:2px solid var(--border);color:var(--muted-foreground);padding-left:.6rem}.pe-token{font-family:var(--font-mono);white-space:nowrap;border:1px solid #0000;border-radius:.3rem;align-items:center;padding:0 .3rem;font-size:.8em;line-height:1.4;display:inline-flex}.pe-token[data-token=project]{background:var(--accent);color:var(--accent-foreground);border-color:var(--border)}.pe-token[data-token=file]{background:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.pe-token[data-token=file]{background:color-mix(in oklab, var(--muted-foreground) 12%, transparent)}}.pe-token[data-token=file]{color:var(--foreground);border-color:var(--border)}.ProseMirror-selectednode.pe-token{outline:2px solid var(--primary)}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@keyframes scroll-fade-reveal-b{0%{--scroll-fade-b:var(--scroll-fade-size)}to{--scroll-fade-b:0px}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}