@humwick/server 0.0.0-stage → 0.130.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 (2508) hide show
  1. package/CLA.md +66 -0
  2. package/CONTRIBUTING.md +144 -0
  3. package/LICENSE +167 -0
  4. package/README.md +511 -2
  5. package/SECURITY.md +67 -0
  6. package/THIRD_PARTY_NOTICES.md +144 -0
  7. package/bundled/prompts/README.md +10 -0
  8. package/bundled/prompts/context.advisory.compact.md +1 -0
  9. package/bundled/prompts/context.advisory.warn.md +1 -0
  10. package/bundled/prompts/continuation.envelope.md +18 -0
  11. package/bundled/prompts/manifest.json +838 -0
  12. package/bundled/prompts/memory.capture.boundary.post.md +1 -0
  13. package/bundled/prompts/memory.capture.boundary.pre.md +1 -0
  14. package/bundled/prompts/memory.charter.md +3 -0
  15. package/bundled/prompts/memory.native-off.md +0 -0
  16. package/bundled/prompts/notify.agent.exited.md +1 -0
  17. package/bundled/prompts/notify.agent.never-ready.md +1 -0
  18. package/bundled/prompts/notify.agent.ready.md +1 -0
  19. package/bundled/prompts/notify.automation.budget-warning.md +1 -0
  20. package/bundled/prompts/notify.land.failure.md +1 -0
  21. package/bundled/prompts/notify.land.steward-taken.coordinator.md +1 -0
  22. package/bundled/prompts/notify.land.steward-taken.md +1 -0
  23. package/bundled/prompts/notify.land.success.md +1 -0
  24. package/bundled/prompts/notify.routing.policy-changed.md +2 -0
  25. package/bundled/prompts/notify.spawn.failed.md +1 -0
  26. package/bundled/prompts/notify.spawn.queued.md +1 -0
  27. package/bundled/prompts/notify.spawn.recovered.md +1 -0
  28. package/bundled/prompts/notify.spawn.unconfirmed.md +1 -0
  29. package/bundled/prompts/profile.coordinator.charter.md +17 -0
  30. package/bundled/prompts/profile.debugger.system.md +12 -0
  31. package/bundled/prompts/profile.device-qa.system.md +10 -0
  32. package/bundled/prompts/profile.image-gen.append.0.md +2 -0
  33. package/bundled/prompts/profile.image-gen.system.md +4 -0
  34. package/bundled/prompts/profile.ops-assistant.brief.md +4 -0
  35. package/bundled/prompts/profile.probe.system.md +5 -0
  36. package/bundled/prompts/profile.qa.system.md +10 -0
  37. package/bundled/prompts/profile.sec-ops.system.md +14 -0
  38. package/bundled/prompts/profile.social-media.system.md +7 -0
  39. package/bundled/prompts/profile.software-design.system.md +26 -0
  40. package/bundled/prompts/profile.sub-coordinator.charter.md +2 -0
  41. package/bundled/prompts/profile.worker-gui.system.md +7 -0
  42. package/bundled/prompts/profile.worker.system.md +2 -0
  43. package/bundled/prompts/relay.agent-core.delivery.md +13 -0
  44. package/bundled/prompts/relay.agent-core.engineering.md +13 -0
  45. package/bundled/prompts/relay.agent-core.md +22 -0
  46. package/bundled/prompts/relay.context.claude.md +1 -0
  47. package/bundled/prompts/relay.context.claude.readonly.md +3 -0
  48. package/bundled/prompts/relay.context.codex.md +1 -0
  49. package/bundled/prompts/relay.context.opencode.md +1 -0
  50. package/bundled/prompts/relay.manual.claude.md +8 -0
  51. package/bundled/prompts/relay.search.fff.md +1 -0
  52. package/bundled/prompts/relay.temp-dir.md +1 -0
  53. package/bundled/prompts/relay.web.brave.md +1 -0
  54. package/bundled/prompts/relay.web.fetch.md +1 -0
  55. package/bundled/prompts/skill.device-lane.md +20 -0
  56. package/bundled/prompts/skill.security-code-review.md +10 -0
  57. package/bundled/prompts/skill.security-hardening.md +10 -0
  58. package/bundled/prompts/skill.security-host-audit.md +11 -0
  59. package/bundled/prompts/spawn.primer.md +6 -0
  60. package/bundled/prompts/spawn.reportup.child.md +3 -0
  61. package/bundled/prompts/spawn.reportup.coordinator.md +2 -0
  62. package/bundled/prompts/spawn.reportup.workflow-step.md +4 -0
  63. package/bundled/prompts/spawn.validation.delivery.md +1 -0
  64. package/bundled/prompts/spawn.validation.iterate.generic.md +1 -0
  65. package/bundled/prompts/spawn.validation.iterate.imperative.md +1 -0
  66. package/bundled/prompts/spawn.validation.landgates.header.md +1 -0
  67. package/bundled/prompts/steward.merge-stall.md +1 -0
  68. package/bundled/prompts/steward.prompt.md +20 -0
  69. package/bundled/prompts/steward.wake.md +1 -0
  70. package/bundled/prompts/task.claim.instruction.md +1 -0
  71. package/bundled/prompts/task.hydration.md +23 -0
  72. package/bundled/prompts/user.response.brief.md +1 -0
  73. package/bundled/prompts/user.response.normal.md +1 -0
  74. package/bundled/prompts/user.style.neutral.md +1 -0
  75. package/bundled/prompts/user.style.warm.md +1 -0
  76. package/bundled/prompts/workspace.deps.command.md +1 -0
  77. package/bundled/prompts/workspace.deps.none.md +1 -0
  78. package/bundled/prompts/workspace.deps.symlink.md +1 -0
  79. package/bundled/prompts/workspace.lifecycle.md +4 -0
  80. package/bundled/prompts/workspace.mcp.instructions.md +7 -0
  81. package/bundled/prompts/workspace.phase.abandoned.headline.md +1 -0
  82. package/bundled/prompts/workspace.phase.abandoned.hint.md +1 -0
  83. package/bundled/prompts/workspace.phase.active.headline.md +1 -0
  84. package/bundled/prompts/workspace.phase.active.hint.md +1 -0
  85. package/bundled/prompts/workspace.phase.conflict.headline.md +1 -0
  86. package/bundled/prompts/workspace.phase.conflict.hint.md +1 -0
  87. package/bundled/prompts/workspace.phase.merge-planned.headline.md +1 -0
  88. package/bundled/prompts/workspace.phase.merge-planned.hint.md +1 -0
  89. package/bundled/prompts/workspace.phase.merged.headline.md +1 -0
  90. package/bundled/prompts/workspace.phase.merged.hint.md +1 -0
  91. package/bundled/prompts/workspace.phase.ready.headline.md +1 -0
  92. package/bundled/prompts/workspace.phase.ready.hint.md +1 -0
  93. package/bundled/prompts/workspace.ready.contract.md +6 -0
  94. package/bundled/prompts/workspace.symlinks.md +1 -0
  95. package/bundled/roles/builder.md +18 -0
  96. package/bundled/roles/design-reviewer.md +13 -0
  97. package/bundled/roles/designer.md +11 -0
  98. package/bundled/roles/plan-auditor.md +29 -0
  99. package/bundled/roles/reviewer.md +36 -0
  100. package/bundled/roles/slice-qa.md +13 -0
  101. package/bundled/roles/verifier.md +13 -0
  102. package/bundled/skills/agent-browser/SKILL.md +72 -0
  103. package/bundled/skills/test-audit/SKILL.md +75 -0
  104. package/bundled/workflows/build-review.yaml +8 -0
  105. package/bundled/workflows/design-review.yaml +60 -0
  106. package/bundled/workflows/plan-conformance.yaml +5 -0
  107. package/bundled/workflows/slice-proof.yaml +85 -0
  108. package/bundled/workflows/verify-deployed.yaml +140 -0
  109. package/docs/guides/sub-coordinators.md +114 -0
  110. package/docs/guides/tools-administration.md +83 -0
  111. package/docs/guides/tools-agents.md +137 -0
  112. package/docs/guides/tools-coordination.md +228 -0
  113. package/docs/guides/tools-execution.md +48 -0
  114. package/docs/guides/tools-issues.md +69 -0
  115. package/docs/guides/tools-memory.md +150 -0
  116. package/docs/guides/tools-messages.md +192 -0
  117. package/docs/guides/tools-operations.md +133 -0
  118. package/docs/guides/tools-tasks.md +235 -0
  119. package/docs/guides/workflows.md +324 -0
  120. package/docs/license-faq.md +37 -0
  121. package/docs/openapi.json +18531 -0
  122. package/examples/integrations/github-issue.ts +48 -0
  123. package/examples/integrations/ops-alert.sh +27 -0
  124. package/examples/integrations/prometheus-alertmanager.ts +55 -0
  125. package/examples/integrations/support-ticket.sh +28 -0
  126. package/node_modules/@humwick/kernel/LICENSE +167 -0
  127. package/node_modules/@humwick/kernel/async-entity-persistence.ts +344 -0
  128. package/node_modules/@humwick/kernel/async-event-log.ts +107 -0
  129. package/node_modules/@humwick/kernel/automations.pilot.ts +147 -0
  130. package/node_modules/@humwick/kernel/config.ts +111 -0
  131. package/node_modules/@humwick/kernel/contract.ts +572 -0
  132. package/node_modules/@humwick/kernel/control-authz.ts +281 -0
  133. package/node_modules/@humwick/kernel/control.ts +645 -0
  134. package/node_modules/@humwick/kernel/effects.ts +493 -0
  135. package/node_modules/@humwick/kernel/event-log.ts +319 -0
  136. package/node_modules/@humwick/kernel/http-transport.ts +384 -0
  137. package/node_modules/@humwick/kernel/identity-grammar.ts +20 -0
  138. package/node_modules/@humwick/kernel/identity.ts +248 -0
  139. package/node_modules/@humwick/kernel/index.ts +28 -0
  140. package/node_modules/@humwick/kernel/kernel-persistence.ts +181 -0
  141. package/node_modules/@humwick/kernel/landing-incident.ts +306 -0
  142. package/node_modules/@humwick/kernel/landing.ts +953 -0
  143. package/node_modules/@humwick/kernel/manifest-validation.ts +460 -0
  144. package/node_modules/@humwick/kernel/mcp-transport.ts +109 -0
  145. package/node_modules/@humwick/kernel/message-authority-chaos-worker.ts +200 -0
  146. package/node_modules/@humwick/kernel/message-authority.ts +281 -0
  147. package/node_modules/@humwick/kernel/module-host.ts +722 -0
  148. package/node_modules/@humwick/kernel/openapi-init.ts +14 -0
  149. package/node_modules/@humwick/kernel/package.json +47 -0
  150. package/node_modules/@humwick/kernel/persistence-schema.ts +248 -0
  151. package/node_modules/@humwick/kernel/persistence.ts +510 -0
  152. package/node_modules/@humwick/kernel/registry.ts +60 -0
  153. package/node_modules/@humwick/kernel/sqlite-kernel-persistence.ts +499 -0
  154. package/node_modules/@humwick/kernel/sqlite-module-host.ts +87 -0
  155. package/node_modules/@humwick/kernel/timers-chaos-worker.ts +186 -0
  156. package/node_modules/@humwick/kernel/timers.pilot.ts +1411 -0
  157. package/node_modules/@humwick/kernel/workflow-activation.ts +25 -0
  158. package/node_modules/@humwick/kernel/workflow-backstop.ts +40 -0
  159. package/node_modules/@humwick/kernel/workflow-cancel-tree.ts +20 -0
  160. package/node_modules/@humwick/kernel/workflow-chaos-worker.ts +213 -0
  161. package/node_modules/@humwick/kernel/workflow-composition.ts +231 -0
  162. package/node_modules/@humwick/kernel/workflow-container.ts +72 -0
  163. package/node_modules/@humwick/kernel/workflow-control.test-fixture.ts +42 -0
  164. package/node_modules/@humwick/kernel/workflow-control.ts +178 -0
  165. package/node_modules/@humwick/kernel/workflow-definition.ts +507 -0
  166. package/node_modules/@humwick/kernel/workflow-dispatch.ts +60 -0
  167. package/node_modules/@humwick/kernel/workflow-foreach.ts +167 -0
  168. package/node_modules/@humwick/kernel/workflow-journal-codec.ts +339 -0
  169. package/node_modules/@humwick/kernel/workflow-journal.ts +922 -0
  170. package/node_modules/@humwick/kernel/workflow-lane.ts +48 -0
  171. package/node_modules/@humwick/kernel/workflow-lease-owner.ts +60 -0
  172. package/node_modules/@humwick/kernel/workflow-recovery.test-fixture.ts +19 -0
  173. package/node_modules/@humwick/kernel/workflow-runtime.ts +938 -0
  174. package/node_modules/@humwick/kernel/workflow-script.ts +11 -0
  175. package/node_modules/@humwick/kernel/workflow-state.ts +299 -0
  176. package/node_modules/@humwick/kernel/workflow-step-commit.ts +195 -0
  177. package/node_modules/@humwick/kernel/workflow-transitions.ts +317 -0
  178. package/node_modules/@humwick/kernel/workflow-values.ts +153 -0
  179. package/node_modules/@humwick/kernel/workflow.pilot.ts +376 -0
  180. package/node_modules/@humwick/offload/LICENSE +167 -0
  181. package/node_modules/@humwick/offload/README.md +57 -0
  182. package/node_modules/@humwick/offload/dist/async-runner.d.ts +18 -0
  183. package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +1 -0
  184. package/node_modules/@humwick/offload/dist/async-runner.js +158 -0
  185. package/node_modules/@humwick/offload/dist/async-runner.js.map +1 -0
  186. package/node_modules/@humwick/offload/dist/envelope.d.ts +25 -0
  187. package/node_modules/@humwick/offload/dist/envelope.d.ts.map +1 -0
  188. package/node_modules/@humwick/offload/dist/envelope.js +80 -0
  189. package/node_modules/@humwick/offload/dist/envelope.js.map +1 -0
  190. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +10 -0
  191. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +1 -0
  192. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +59 -0
  193. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +1 -0
  194. package/node_modules/@humwick/offload/dist/index.d.ts +5 -0
  195. package/node_modules/@humwick/offload/dist/index.d.ts.map +1 -0
  196. package/node_modules/@humwick/offload/dist/index.js +5 -0
  197. package/node_modules/@humwick/offload/dist/index.js.map +1 -0
  198. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +62 -0
  199. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +1 -0
  200. package/node_modules/@humwick/offload/dist/subprocess-runner.js +295 -0
  201. package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +1 -0
  202. package/node_modules/@humwick/offload/dist/types.d.ts +111 -0
  203. package/node_modules/@humwick/offload/dist/types.d.ts.map +1 -0
  204. package/node_modules/@humwick/offload/dist/types.js +176 -0
  205. package/node_modules/@humwick/offload/dist/types.js.map +1 -0
  206. package/node_modules/@humwick/offload/dist/worker-pool.d.ts +23 -0
  207. package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +1 -0
  208. package/node_modules/@humwick/offload/dist/worker-pool.js +435 -0
  209. package/node_modules/@humwick/offload/dist/worker-pool.js.map +1 -0
  210. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +2 -0
  211. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +1 -0
  212. package/node_modules/@humwick/offload/dist/worker-runtime.js +27 -0
  213. package/node_modules/@humwick/offload/dist/worker-runtime.js.map +1 -0
  214. package/node_modules/@humwick/offload/dist/worker.d.ts +5 -0
  215. package/node_modules/@humwick/offload/dist/worker.d.ts.map +1 -0
  216. package/node_modules/@humwick/offload/dist/worker.js +1 -0
  217. package/node_modules/@humwick/offload/dist/worker.js.map +1 -0
  218. package/node_modules/@humwick/offload/package.json +46 -0
  219. package/node_modules/@humwick/offload/src/async-runner.ts +170 -0
  220. package/node_modules/@humwick/offload/src/envelope.ts +92 -0
  221. package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +49 -0
  222. package/node_modules/@humwick/offload/src/index.ts +4 -0
  223. package/node_modules/@humwick/offload/src/subprocess-runner.ts +334 -0
  224. package/node_modules/@humwick/offload/src/types.ts +235 -0
  225. package/node_modules/@humwick/offload/src/worker-pool.ts +463 -0
  226. package/node_modules/@humwick/offload/src/worker-runtime.ts +32 -0
  227. package/node_modules/@humwick/offload/src/worker.ts +5 -0
  228. package/package.json +229 -4
  229. package/public/assets/MessageBubble-BWpoBjl4.js +4 -0
  230. package/public/assets/PlanGraphPanel-C0auck3n.js +2 -0
  231. package/public/assets/TraceView-DBnOx7AQ.js +5 -0
  232. package/public/assets/VaultDecisionCard-0kp2oNBC.js +2 -0
  233. package/public/assets/activity-TMzFOdh2.js +2 -0
  234. package/public/assets/activity-yLztXEBt.js +2 -0
  235. package/public/assets/agent-lineage-BbJDR1dW.js +2 -0
  236. package/public/assets/agent-liveness-DyqxfB-t.js +2 -0
  237. package/public/assets/agent-name-CTZBrSD9.js +2 -0
  238. package/public/assets/agent-profiles-BpI_jTxq.js +2 -0
  239. package/public/assets/agent-project-badge-9TqzUUYE.js +2 -0
  240. package/public/assets/agent-tools-D4n40pn8.js +2 -0
  241. package/public/assets/agent-type-icon-D6FUarOf.js +2 -0
  242. package/public/assets/agents-BYDslkJc.js +2 -0
  243. package/public/assets/analytics-B-XSbEMC.js +910 -0
  244. package/public/assets/andromeeda-vGVdxbeo.js +2 -0
  245. package/public/assets/angular-html-BVBpGdXr.js +2 -0
  246. package/public/assets/angular-ts-BfdufMKP.js +2 -0
  247. package/public/assets/api-CIIVBtAV.js +10 -0
  248. package/public/assets/archive-CIuPSvmx.js +2 -0
  249. package/public/assets/arrow-right-vFsRqG8V.js +2 -0
  250. package/public/assets/arrow-up-a-z-CKC2RCjD.js +2 -0
  251. package/public/assets/artifact-viewer-DdWIfV6M.js +2 -0
  252. package/public/assets/artifacts-DPN1q4pA.js +2 -0
  253. package/public/assets/artifacts-oBOqks-2.js +2 -0
  254. package/public/assets/astro-JKRPP03v.js +2 -0
  255. package/public/assets/aurora-x-CDeNXAV0.js +2 -0
  256. package/public/assets/automation-4KcRFXEu.js +2 -0
  257. package/public/assets/ayu-dark-DluEY0Gj.js +2 -0
  258. package/public/assets/ayu-light-C3h-C4tm.js +2 -0
  259. package/public/assets/ayu-mirage-Bqwy1Gya.js +2 -0
  260. package/public/assets/backlog-Cw9xPTCF.js +2 -0
  261. package/public/assets/badge-DqJRtj_p.js +2 -0
  262. package/public/assets/bell-_Yzbxxrt.js +2 -0
  263. package/public/assets/blade-DA8yMPsw.js +2 -0
  264. package/public/assets/bot-B0NpDNhr.js +2 -0
  265. package/public/assets/boxes-Cv7Wq3h4.js +2 -0
  266. package/public/assets/braces-BOks9SsY.js +2 -0
  267. package/public/assets/brain-CagXMEKE.js +2 -0
  268. package/public/assets/brain-circuit-CpQeSmp3.js +2 -0
  269. package/public/assets/bundle-web-ifbJd0t-.js +14 -0
  270. package/public/assets/busy-health-CTu32MZt.js +2 -0
  271. package/public/assets/button-Do6Z3vvn.js +2 -0
  272. package/public/assets/c-Wt1voDr2.js +2 -0
  273. package/public/assets/calendar-QJjoZ1JU.js +2 -0
  274. package/public/assets/calendar-clock-CDG_KBhx.js +2 -0
  275. package/public/assets/card-C4QJ4hCW.js +2 -0
  276. package/public/assets/catppuccin-frappe-3VR1Za6u.js +2 -0
  277. package/public/assets/catppuccin-latte-DwIHMF0Q.js +2 -0
  278. package/public/assets/catppuccin-macchiato-DYnBP6_5.js +2 -0
  279. package/public/assets/catppuccin-mocha-DYhrFGRu.js +2 -0
  280. package/public/assets/channels-BiXzg1G9.js +2 -0
  281. package/public/assets/chart-column-S02ZGfTR.js +2 -0
  282. package/public/assets/chat-Ctk2qwvA.js +6 -0
  283. package/public/assets/check-B3M9Ug1P.js +2 -0
  284. package/public/assets/chevron-down-BoG3JCZn.js +2 -0
  285. package/public/assets/chevron-right-iljytE0x.js +2 -0
  286. package/public/assets/chevron-up-Bv3yC5ma.js +2 -0
  287. package/public/assets/circle-UESLMi2-.js +2 -0
  288. package/public/assets/circle-alert-CryagaZd.js +2 -0
  289. package/public/assets/circle-arrow-up-B432r0Kk.js +2 -0
  290. package/public/assets/circle-check-CkUkN96J.js +2 -0
  291. package/public/assets/circle-x-CZ0erS7Q.js +2 -0
  292. package/public/assets/clipboard-list-W2YeUsxT.js +2 -0
  293. package/public/assets/clock-3-BH47318N.js +2 -0
  294. package/public/assets/clock-BWPPBh1_.js +2 -0
  295. package/public/assets/code-preview-Bm1wWqAp.js +3 -0
  296. package/public/assets/coffee-CThvmt4R.js +2 -0
  297. package/public/assets/connectors-C36ax4Vw.js +2 -0
  298. package/public/assets/copy-DFxhHRtV.js +2 -0
  299. package/public/assets/copy-button-CjOj4HEf.js +2 -0
  300. package/public/assets/cosmos-Dn8XrlnS.css +1 -0
  301. package/public/assets/cosmos-Jj9LK2Wf.js +3993 -0
  302. package/public/assets/cpp-C5WNSHb9.js +2 -0
  303. package/public/assets/cpu-Dndy84IU.js +2 -0
  304. package/public/assets/crate-agent-H6S7-B9T.js +2 -0
  305. package/public/assets/css-DJp_X0uY.js +2 -0
  306. package/public/assets/csv-Dx-8-gkx.js +2 -0
  307. package/public/assets/dark-plus-Cs2F2srj.js +2 -0
  308. package/public/assets/dependency-graph-Cd1E23wa.js +2 -0
  309. package/public/assets/deploys-Bwfq146q.js +2 -0
  310. package/public/assets/dialog-uuJ9_geR.js +6 -0
  311. package/public/assets/display-CfO7rTuF.js +3 -0
  312. package/public/assets/dist-B2h2GeWt.js +2 -0
  313. package/public/assets/dist-BeVYU67E.js +2 -0
  314. package/public/assets/dist-Bmm-RKub.js +2 -0
  315. package/public/assets/dist-C1xmD7qJ.js +2 -0
  316. package/public/assets/dist-C2J943E6.js +2 -0
  317. package/public/assets/dist-C6lpJDoA.js +2 -0
  318. package/public/assets/dist-CoWL6B0c.js +2 -0
  319. package/public/assets/dist-D93SmTNC.js +2 -0
  320. package/public/assets/dist-Da7HrHNA.js +2 -0
  321. package/public/assets/dist-DeW2Y1R5.js +2 -0
  322. package/public/assets/dist-DwBdqQ6H.js +2 -0
  323. package/public/assets/dist-Dz182zaW.js +2 -0
  324. package/public/assets/dist-H3DLHJ0C.js +2 -0
  325. package/public/assets/dist-RrY9C4SI.js +2 -0
  326. package/public/assets/download-KgtpDbt5.js +2 -0
  327. package/public/assets/dracula-BHWKrbxM.js +2 -0
  328. package/public/assets/dracula-soft-5eyTD99u.js +2 -0
  329. package/public/assets/dropdown-menu-BXiNephE.js +2 -0
  330. package/public/assets/es2015-DMmZ8vbD.js +42 -0
  331. package/public/assets/esm-ZSuD7QuY.js +2 -0
  332. package/public/assets/everforest-dark-sB-x3p7T.js +2 -0
  333. package/public/assets/everforest-light-Df2xbC6M.js +2 -0
  334. package/public/assets/external-link-BRfu-fHG.js +2 -0
  335. package/public/assets/eye-BAP6fHrX.js +2 -0
  336. package/public/assets/file-code-corner-CXhIR1vB.js +2 -0
  337. package/public/assets/file-pen-Crunre5f.js +2 -0
  338. package/public/assets/file-text-CKuoMR2U.js +2 -0
  339. package/public/assets/files-DhhZI2Ih.js +3 -0
  340. package/public/assets/flag-CnEG9PH-.js +2 -0
  341. package/public/assets/flame-CxBuz46L.js +2 -0
  342. package/public/assets/fleet-BL4UXS_k.js +2 -0
  343. package/public/assets/fleet-metrics-BkHP-P3R.js +2 -0
  344. package/public/assets/folder-git-2-CJOmTT06.js +2 -0
  345. package/public/assets/folder-open-CBUCMSlu.js +2 -0
  346. package/public/assets/folder-tree-BG3Y9nqH.js +2 -0
  347. package/public/assets/formatted-body-Cm1RrzmN.js +3 -0
  348. package/public/assets/formatted-body-impl-DQiOuOD1.js +3 -0
  349. package/public/assets/gauge-BIODY-BQ.js +2 -0
  350. package/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
  351. package/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
  352. package/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
  353. package/public/assets/git-branch-yxhV0m8E.js +2 -0
  354. package/public/assets/git-commit-horizontal-DS1pJ_SS.js +2 -0
  355. package/public/assets/git-merge-C7eIG425.js +2 -0
  356. package/public/assets/github-dark-C-LZuMrd.js +2 -0
  357. package/public/assets/github-dark-default-DXG-b-1a.js +2 -0
  358. package/public/assets/github-dark-dimmed-Bx1FflLF.js +2 -0
  359. package/public/assets/github-dark-high-contrast-B_tTalzw.js +2 -0
  360. package/public/assets/github-light-EUqPIrTm.js +2 -0
  361. package/public/assets/github-light-default-BXViO-2h.js +2 -0
  362. package/public/assets/github-light-high-contrast-B68TUdTA.js +2 -0
  363. package/public/assets/globe-Cl5fXtqs.js +2 -0
  364. package/public/assets/glsl-Dv5r7kPw.js +2 -0
  365. package/public/assets/graphql-CcFwQwm0.js +2 -0
  366. package/public/assets/gruvbox-dark-hard-C820rvS2.js +2 -0
  367. package/public/assets/gruvbox-dark-medium-BPjhmG05.js +2 -0
  368. package/public/assets/gruvbox-dark-soft-MrdJrrXF.js +2 -0
  369. package/public/assets/gruvbox-light-hard-BC_s9l72.js +2 -0
  370. package/public/assets/gruvbox-light-medium-BAWPOn9u.js +2 -0
  371. package/public/assets/gruvbox-light-soft-BSMLrYjP.js +2 -0
  372. package/public/assets/haml-Bg4I2hiD.js +2 -0
  373. package/public/assets/handlebars-DnwbnL5R.js +2 -0
  374. package/public/assets/hash-CbtKih3g.js +2 -0
  375. package/public/assets/horizon-CE9ld1lL.js +2 -0
  376. package/public/assets/horizon-bright-DSNQnXHK.js +2 -0
  377. package/public/assets/host-mTgRw7xh.js +2 -0
  378. package/public/assets/host-providers-dialog-CHqwXTov.js +2 -0
  379. package/public/assets/hourglass-txu4ax6n.js +2 -0
  380. package/public/assets/houston-CsvMBhTu.js +2 -0
  381. package/public/assets/html-C8UlPnhE.js +2 -0
  382. package/public/assets/html-derivative-CY6NRz-J.js +2 -0
  383. package/public/assets/http-CoW620Fi.js +2 -0
  384. package/public/assets/humwick-lockup-on-dark-Ds44Y7BK.svg +19 -0
  385. package/public/assets/humwick-lockup-on-light-ClALZAHt.svg +19 -0
  386. package/public/assets/hurl-CSSETujw.js +2 -0
  387. package/public/assets/imba-DsUTQ-LC.js +2 -0
  388. package/public/assets/inbox-Dfwk3Gt8.js +2 -0
  389. package/public/assets/index-B7ZerHLY.css +2 -0
  390. package/public/assets/index-BK0WV6hF.js +15 -0
  391. package/public/assets/input-CsTB6jIx.js +2 -0
  392. package/public/assets/insights-fH1EL-qZ.js +2 -0
  393. package/public/assets/integrations-C5Oix6ng.js +2 -0
  394. package/public/assets/issue-ref-chip-ODyondIa.js +3 -0
  395. package/public/assets/java-CGc3VwQr.js +2 -0
  396. package/public/assets/javascript-CUt1pgmJ.js +2 -0
  397. package/public/assets/jinja-CD-Z-FLd.js +2 -0
  398. package/public/assets/jison-imPNup1l.js +2 -0
  399. package/public/assets/json-qhed-kSA.js +2 -0
  400. package/public/assets/json5-BR5RXkoi.js +2 -0
  401. package/public/assets/jsonc-CYpm1nAK.js +2 -0
  402. package/public/assets/jsonl-CmCQp5Yx.js +2 -0
  403. package/public/assets/jsx-CY6oMTks.js +2 -0
  404. package/public/assets/julia-CjffhBEM.js +2 -0
  405. package/public/assets/kanagawa-dragon-CXtmUGW6.js +2 -0
  406. package/public/assets/kanagawa-lotus-BN08jTvb.js +2 -0
  407. package/public/assets/kanagawa-wave-CTweb8Dz.js +2 -0
  408. package/public/assets/kernel-Bqr0CZGv.js +2 -0
  409. package/public/assets/key-round-CcSxl5qr.js +2 -0
  410. package/public/assets/keyboard-DcmEulph.js +2 -0
  411. package/public/assets/label-BPBzm9FJ.js +2 -0
  412. package/public/assets/laserwave-C_8bwKvT.js +2 -0
  413. package/public/assets/layers-DEfClY-v.js +2 -0
  414. package/public/assets/legacy-storage-carry-C-tBSxRA.js +2 -0
  415. package/public/assets/less-DVTAwKKz.js +2 -0
  416. package/public/assets/lib-D7DTGM1F.js +2 -0
  417. package/public/assets/lib-G-25QXXf.js +30 -0
  418. package/public/assets/light-plus-DVQuIRkW.js +2 -0
  419. package/public/assets/lightbulb-RDhZ4p-D.js +2 -0
  420. package/public/assets/link-2-off-DfRF9Hwb.js +2 -0
  421. package/public/assets/link-6RR7Hy3-.js +2 -0
  422. package/public/assets/list-checks-CwnS3hly.js +2 -0
  423. package/public/assets/list-ordered-D8nCM7rT.js +2 -0
  424. package/public/assets/list-todo-9qT0fgxZ.js +2 -0
  425. package/public/assets/loader-circle-BfPd4kOD.js +2 -0
  426. package/public/assets/lock-BW8MPKw_.js +2 -0
  427. package/public/assets/log-viewer-Cvfy6PW7.js +4 -0
  428. package/public/assets/mail-DyaDmwfY.js +2 -0
  429. package/public/assets/maintenance-D8CDH5wZ.js +2 -0
  430. package/public/assets/managed-agents-egllbpij.js +4 -0
  431. package/public/assets/markdown-BYOwaDjH.js +2 -0
  432. package/public/assets/markdown-preview-CYSFgVgK.js +3 -0
  433. package/public/assets/markdown-preview-impl-BteVIjX4.js +2 -0
  434. package/public/assets/marko-DvhNOisQ.js +2 -0
  435. package/public/assets/material-theme-Bm3Qr25_.js +2 -0
  436. package/public/assets/material-theme-darker-2IIEA8gg.js +2 -0
  437. package/public/assets/material-theme-lighter-uhdI0v04.js +2 -0
  438. package/public/assets/material-theme-ocean-CHQ94UKr.js +2 -0
  439. package/public/assets/material-theme-palenight-B5W6OYN7.js +2 -0
  440. package/public/assets/mdc-CazklSAj.js +2 -0
  441. package/public/assets/mdx-DQZ5AkYe.js +2 -0
  442. package/public/assets/memory-C8WmXsyr.js +2 -0
  443. package/public/assets/message-circle-wjztgHBe.js +2 -0
  444. package/public/assets/message-square-C-1G8dMM.js +2 -0
  445. package/public/assets/message-square-reply-B9Z4cbQx.js +2 -0
  446. package/public/assets/messages-BzQdqlO6.js +2 -0
  447. package/public/assets/messages-square-DVM1ZtcI.js +2 -0
  448. package/public/assets/min-dark-BSWPekZh.js +2 -0
  449. package/public/assets/min-light-DDpmG2fV.js +2 -0
  450. package/public/assets/minimize-2-BkK6XoMP.js +2 -0
  451. package/public/assets/monokai-CdkpiU2Y.js +2 -0
  452. package/public/assets/night-owl-DhmEMT88.js +2 -0
  453. package/public/assets/night-owl-light-eJ-hLW7d.js +2 -0
  454. package/public/assets/nord-Cb4Vim4T.js +2 -0
  455. package/public/assets/octagon-x-B5lnUY-8.js +2 -0
  456. package/public/assets/one-dark-pro-CLwyXe_n.js +2 -0
  457. package/public/assets/one-light-D7Lr4KcI.js +2 -0
  458. package/public/assets/orchestrators-B1HxzkNw.js +2 -0
  459. package/public/assets/overview-DCUnI4Z7.js +2 -0
  460. package/public/assets/package-open-ckPgcjpv.js +2 -0
  461. package/public/assets/package-plus-C1AKMjsl.js +2 -0
  462. package/public/assets/pairs-ftCd2XcD.js +2 -0
  463. package/public/assets/paperclip-CNpKZKum.js +2 -0
  464. package/public/assets/pause-DttnHD4c.js +2 -0
  465. package/public/assets/pencil-B1Hf2V_J.js +2 -0
  466. package/public/assets/php-CBqsN0ai.js +2 -0
  467. package/public/assets/pin-DcsKeXxr.js +2 -0
  468. package/public/assets/plastic-DQwYfKfQ.js +2 -0
  469. package/public/assets/play-BbT8m7A0.js +2 -0
  470. package/public/assets/plug-vIyO9_P8.js +2 -0
  471. package/public/assets/plug-zap-V0wMDJ-G.js +2 -0
  472. package/public/assets/plus-D5Ek4e2S.js +2 -0
  473. package/public/assets/poimandres-DRFjx7u4.js +2 -0
  474. package/public/assets/popover-8w1TWKMG.js +2 -0
  475. package/public/assets/postcss-BXeXVLqQ.js +2 -0
  476. package/public/assets/power-6tZOhYPg.js +2 -0
  477. package/public/assets/preload-helper-HclGiUj8.js +1 -0
  478. package/public/assets/profile-icon-B2zH8DMH.js +2 -0
  479. package/public/assets/projects-B_lmcqfO.js +2 -0
  480. package/public/assets/prompt-settings-Bftq9czX.js +2 -0
  481. package/public/assets/provider-brand-icon-_67JR7Zh.js +2 -0
  482. package/public/assets/provider-display-DbLWpP3j.js +2 -0
  483. package/public/assets/pug-C5hz5LQ7.js +2 -0
  484. package/public/assets/python-gzcpVVnB.js +2 -0
  485. package/public/assets/r-Dzep-lPg.js +2 -0
  486. package/public/assets/radio-Bn0_qc0G.js +2 -0
  487. package/public/assets/react-dom-DSFxiC7T.js +2 -0
  488. package/public/assets/red-CJ3rzSJv.js +2 -0
  489. package/public/assets/refresh-cw-CfpvQcUn.js +2 -0
  490. package/public/assets/regexp-Omp9DhTb.js +2 -0
  491. package/public/assets/registry-DWCU5c8q.js +4 -0
  492. package/public/assets/repeat-hl4p_Klo.js +2 -0
  493. package/public/assets/rocket-BmO1qSu-.js +2 -0
  494. package/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  495. package/public/assets/rose-pine-BthvhNj6.js +2 -0
  496. package/public/assets/rose-pine-dawn-Dg85fqjY.js +2 -0
  497. package/public/assets/rose-pine-moon-hon4tzzS.js +2 -0
  498. package/public/assets/rotate-ccw-CtD77qkX.js +2 -0
  499. package/public/assets/rotate-cw-FPtkDewA.js +2 -0
  500. package/public/assets/run-card-CO_bguQf.js +2 -0
  501. package/public/assets/sass-DXrisJhu.js +2 -0
  502. package/public/assets/save-B_PGqSm4.js +2 -0
  503. package/public/assets/scroll-area-CIN4KQse.js +2 -0
  504. package/public/assets/scss-DdSxiZKl.js +2 -0
  505. package/public/assets/search-DjzbnTbf.js +2 -0
  506. package/public/assets/secrets-C7GIUATz.js +2 -0
  507. package/public/assets/security-BUFau5-N.js +3 -0
  508. package/public/assets/select-DTQMP4Dk.js +2 -0
  509. package/public/assets/separator-t1cLZErD.js +2 -0
  510. package/public/assets/server-CZIRjFyY.js +2 -0
  511. package/public/assets/service-access-settings-C3aujqTG.js +2 -0
  512. package/public/assets/settings-C6sZ9eBa.js +6 -0
  513. package/public/assets/shellscript-CLZ0U2zV.js +2 -0
  514. package/public/assets/shield-CtXNUA0i.js +2 -0
  515. package/public/assets/shield-alert-B9jCWcKW.js +2 -0
  516. package/public/assets/shipping-Bu8p1gEw.js +2 -0
  517. package/public/assets/shipping-stats-BiMTsA4A.js +2 -0
  518. package/public/assets/slack-dark-DnToyrRv.js +2 -0
  519. package/public/assets/slack-ochin-B2OO5cIa.js +2 -0
  520. package/public/assets/smile-plus-q6EQBXHZ.js +2 -0
  521. package/public/assets/snazzy-light-4G7pJPwS.js +2 -0
  522. package/public/assets/solarized-dark-DV17i1UV.js +2 -0
  523. package/public/assets/solarized-light-DSh2HLQt.js +2 -0
  524. package/public/assets/sparkles-CzwR10ZU.js +2 -0
  525. package/public/assets/sql-DNssxck8.js +2 -0
  526. package/public/assets/square-Bqly37YM.js +2 -0
  527. package/public/assets/stats-V9Z-GxUd.js +2 -0
  528. package/public/assets/status-dot-CVv0iGHL.js +2 -0
  529. package/public/assets/stethoscope-SCBrnQQ8.js +2 -0
  530. package/public/assets/store-BvtFdlGX.js +9 -0
  531. package/public/assets/stylus-B6D30XZt.js +2 -0
  532. package/public/assets/svelte-DOdLCIlh.js +2 -0
  533. package/public/assets/switch-DuCA7mrB.js +2 -0
  534. package/public/assets/synthwave-84-nFMaYfgc.js +2 -0
  535. package/public/assets/tabs-jZgNvNHr.js +2 -0
  536. package/public/assets/task-chip-CYj0mpoL.js +2 -0
  537. package/public/assets/tasks-BIyeAaPC.js +2 -0
  538. package/public/assets/tasks-CXU75HRF.js +11 -0
  539. package/public/assets/teams-BPf976zb.js +2 -0
  540. package/public/assets/terminal-Bl2u7KxT.js +2 -0
  541. package/public/assets/terminal-viewer-DE9BOe-8.js +3 -0
  542. package/public/assets/terminal-viewer-impl-BrP-ENHg.css +1 -0
  543. package/public/assets/terminal-viewer-impl-D04pjmGh.js +143 -0
  544. package/public/assets/textarea-hs6Mpyfl.js +2 -0
  545. package/public/assets/themes-G5j9m1Ji.js +2 -0
  546. package/public/assets/tokyo-night-oM2G3aXe.js +2 -0
  547. package/public/assets/trash-2-FbcSq927.js +2 -0
  548. package/public/assets/triangle-alert-BBNhfgMi.js +2 -0
  549. package/public/assets/ts-tags-Ca73dJJY.js +2 -0
  550. package/public/assets/tsx-5Eka4NBX.js +2 -0
  551. package/public/assets/typescript-DOu2WMV5.js +2 -0
  552. package/public/assets/use-agent-terminal-B1yR456R.js +2 -0
  553. package/public/assets/use-decisions-D-S4tpDf.js +2 -0
  554. package/public/assets/use-project-list-B-T2Bnnn.js +2 -0
  555. package/public/assets/use-selectors-CnrAk2YP.js +6 -0
  556. package/public/assets/user-avatar-nBFIcR4M.js +2 -0
  557. package/public/assets/user-cog-CKcouW1J.js +2 -0
  558. package/public/assets/user-plus-D9749q73.js +2 -0
  559. package/public/assets/users-C7B3u9jv.js +2 -0
  560. package/public/assets/versioned-prompt-editor-Diu8BIaM.js +8 -0
  561. package/public/assets/vesper-DdrHHSXu.js +2 -0
  562. package/public/assets/vitesse-black-fwtXNY1n.js +2 -0
  563. package/public/assets/vitesse-dark-BZCL-v6S.js +2 -0
  564. package/public/assets/vitesse-light-VbXTXTou.js +2 -0
  565. package/public/assets/volume-2-XrcRKD9Z.js +2 -0
  566. package/public/assets/vue-Bfx0ffIq.js +2 -0
  567. package/public/assets/vue-html-BeluIYX0.js +2 -0
  568. package/public/assets/vue-vine-DGUAbOCX.js +2 -0
  569. package/public/assets/warehouse-BanzOanY.js +2 -0
  570. package/public/assets/wasm-BnjxR4X6.js +2 -0
  571. package/public/assets/wasm-ByWQv1Qj.js +2 -0
  572. package/public/assets/waypoints-CIzINtLT.js +2 -0
  573. package/public/assets/wgsl-BsKzXJz4.js +2 -0
  574. package/public/assets/wit-DdvCle-K.js +2 -0
  575. package/public/assets/work-queue-TCjJxeT-.js +2 -0
  576. package/public/assets/workflow-marker-Cf3Hf2fN.js +2 -0
  577. package/public/assets/workflows-CXQX20Qj.js +6 -0
  578. package/public/assets/workspaces-qSYzKYMA.js +3 -0
  579. package/public/assets/wrench-C7-4CgnY.js +2 -0
  580. package/public/assets/x-Bge17hWJ.js +2 -0
  581. package/public/assets/xml-DIqSwXR3.js +2 -0
  582. package/public/assets/yaml-rwi0_p6S.js +2 -0
  583. package/public/assets/zap-DGuDTw4w.js +2 -0
  584. package/public/assets/zoom-in-Bs8Qv8VL.js +2 -0
  585. package/public/assets/zoomable-image-B3Og53nj.js +2 -0
  586. package/public/cosmos/audio/README.md +50 -0
  587. package/public/cosmos/audio/alert.mp3 +0 -0
  588. package/public/cosmos/audio/ambient-bed.mp3 +0 -0
  589. package/public/cosmos/audio/comet.mp3 +0 -0
  590. package/public/cosmos/audio/cross-galaxy.mp3 +0 -0
  591. package/public/cosmos/audio/deploy.mp3 +0 -0
  592. package/public/cosmos/audio/galaxy-dissipate.mp3 +0 -0
  593. package/public/cosmos/audio/galaxy-form.mp3 +0 -0
  594. package/public/cosmos/audio/land.mp3 +0 -0
  595. package/public/cosmos/audio/reap.mp3 +0 -0
  596. package/public/cosmos/audio/spawn.mp3 +0 -0
  597. package/public/cosmos.html +34 -0
  598. package/public/favicon.ico +0 -0
  599. package/public/favicon.svg +10 -0
  600. package/public/icons/apple-touch-icon.png +0 -0
  601. package/public/icons/humwick-192.png +0 -0
  602. package/public/icons/humwick-512.png +0 -0
  603. package/public/icons/humwick.svg +19 -0
  604. package/public/index.html +188 -0
  605. package/public/manifest.webmanifest +45 -0
  606. package/public/sw.js +160 -0
  607. package/recipes/code-review.yaml +26 -0
  608. package/recipes/debug.yaml +20 -0
  609. package/recipes/feature.yaml +26 -0
  610. package/recipes/refactor.yaml +20 -0
  611. package/recipes/test.yaml +20 -0
  612. package/runner/LICENSE +167 -0
  613. package/runner/agent-bin/agent-relay-browser +10 -0
  614. package/runner/agent-bin/humwick +10 -0
  615. package/runner/hooks/fff-search-redirect/fff-search-redirect.cjs +161 -0
  616. package/runner/hooks/fff-search-redirect/hooks.json +13 -0
  617. package/runner/hooks/rg-r-guard/hooks.json +18 -0
  618. package/runner/hooks/rg-r-guard/rg-r-guard.cjs +144 -0
  619. package/runner/hooks/web-tools-redirect/hooks.json +13 -0
  620. package/runner/hooks/web-tools-redirect/web-tools-redirect.cjs +84 -0
  621. package/runner/plugins/browser/skills/playwright-cli/SKILL.md +53 -0
  622. package/runner/plugins/claude/.claude-plugin/plugin.json +8 -0
  623. package/runner/plugins/claude/claude-statusline-probe.cjs +144 -0
  624. package/runner/plugins/claude/hooks/gate-run-guard.provisioned.mjs +914 -0
  625. package/runner/plugins/claude/hooks/gate-run-guard.sh +9 -0
  626. package/runner/plugins/claude/hooks/gate-run-guard.ts +237 -0
  627. package/runner/plugins/claude/hooks/hooks.json +158 -0
  628. package/runner/plugins/claude/hooks/kill-guard.provisioned.mjs +7027 -0
  629. package/runner/plugins/claude/hooks/kill-guard.sh +341 -0
  630. package/runner/plugins/claude/hooks/kill-guard.ts +337 -0
  631. package/runner/plugins/claude/hooks/permission-request.sh +22 -0
  632. package/runner/plugins/claude/hooks/post-compact.sh +10 -0
  633. package/runner/plugins/claude/hooks/post-tool-use.sh +8 -0
  634. package/runner/plugins/claude/hooks/pre-compact.sh +12 -0
  635. package/runner/plugins/claude/hooks/read-only-bash-guard.sh +587 -0
  636. package/runner/plugins/claude/hooks/relay-status.sh +373 -0
  637. package/runner/plugins/claude/hooks/session-end.sh +26 -0
  638. package/runner/plugins/claude/hooks/session-start.sh +31 -0
  639. package/runner/plugins/claude/hooks/shell-trust.ts +28 -0
  640. package/runner/plugins/claude/hooks/stop-failure.sh +47 -0
  641. package/runner/plugins/claude/hooks/stop.sh +48 -0
  642. package/runner/plugins/claude/hooks/subagent-guard.cjs +26 -0
  643. package/runner/plugins/claude/hooks/subagent-skill-policy.cjs +160 -0
  644. package/runner/plugins/claude/hooks/subagent-start.sh +13 -0
  645. package/runner/plugins/claude/hooks/subagent-stop.sh +19 -0
  646. package/runner/plugins/claude/hooks/user-prompt-submit.sh +18 -0
  647. package/runner/plugins/claude/hooks/wait-loop-guard.ts +120 -0
  648. package/runner/plugins/claude/monitors/monitors.json +7 -0
  649. package/runner/plugins/claude/monitors/relay-monitor.provisioned.mjs +786 -0
  650. package/runner/plugins/claude/monitors/relay-monitor.ts +58 -0
  651. package/runner/plugins/claude/skills/disconnect/SKILL.md +16 -0
  652. package/runner/plugins/claude/skills/label/SKILL.md +23 -0
  653. package/runner/plugins/claude/skills/message/SKILL.md +40 -0
  654. package/runner/plugins/claude/skills/pair/SKILL.md +30 -0
  655. package/runner/plugins/claude/skills/react/SKILL.md +18 -0
  656. package/runner/plugins/claude/skills/read-message/SKILL.md +24 -0
  657. package/runner/plugins/claude/skills/reply/SKILL.md +44 -0
  658. package/runner/plugins/claude/skills/send-claimable/SKILL.md +39 -0
  659. package/runner/plugins/claude/skills/slice-first/SKILL.md +32 -0
  660. package/runner/plugins/claude/skills/slice-first/references/plan-recipe.md +46 -0
  661. package/runner/plugins/claude/skills/status/SKILL.md +16 -0
  662. package/runner/plugins/claude/skills/tags/SKILL.md +25 -0
  663. package/runner/plugins/claude/skills/task/SKILL.md +28 -0
  664. package/runner/plugins/claude-output-style/.claude-plugin/plugin.json +5 -0
  665. package/runner/plugins/claude-output-style/output-styles/agent-relay.md +5 -0
  666. package/runner/plugins/codex/skills/disconnect/SKILL.md +15 -0
  667. package/runner/plugins/codex/skills/guide/SKILL.md +15 -0
  668. package/runner/plugins/codex/skills/label/SKILL.md +22 -0
  669. package/runner/plugins/codex/skills/message/SKILL.md +40 -0
  670. package/runner/plugins/codex/skills/pair/SKILL.md +29 -0
  671. package/runner/plugins/codex/skills/react/SKILL.md +17 -0
  672. package/runner/plugins/codex/skills/read-message/SKILL.md +23 -0
  673. package/runner/plugins/codex/skills/reply/SKILL.md +44 -0
  674. package/runner/plugins/codex/skills/send-claimable/SKILL.md +39 -0
  675. package/runner/plugins/codex/skills/slice-first/SKILL.md +32 -0
  676. package/runner/plugins/codex/skills/slice-first/references/plan-recipe.md +46 -0
  677. package/runner/plugins/codex/skills/status/SKILL.md +15 -0
  678. package/runner/plugins/codex/skills/tags/SKILL.md +24 -0
  679. package/runner/plugins/codex/skills/task/SKILL.md +28 -0
  680. package/runner/src/adapter.ts +1061 -0
  681. package/runner/src/adapters/__fixtures__/codex-app-server.ts +47 -0
  682. package/runner/src/adapters/claude-api.ts +243 -0
  683. package/runner/src/adapters/claude-context-command.ts +16 -0
  684. package/runner/src/adapters/claude-credentials.ts +22 -0
  685. package/runner/src/adapters/claude-delivery-lanes.ts +28 -0
  686. package/runner/src/adapters/claude-delivery.ts +166 -0
  687. package/runner/src/adapters/claude-effort.ts +94 -0
  688. package/runner/src/adapters/claude-exit.ts +290 -0
  689. package/runner/src/adapters/claude-headless-mirror.ts +88 -0
  690. package/runner/src/adapters/claude-headless-refusal.ts +51 -0
  691. package/runner/src/adapters/claude-headless.ts +617 -0
  692. package/runner/src/adapters/claude-monitor-delivery-plan.ts +317 -0
  693. package/runner/src/adapters/claude-permission.ts +243 -0
  694. package/runner/src/adapters/claude-prompt-gates.ts +269 -0
  695. package/runner/src/adapters/claude-prompt-hook.ts +145 -0
  696. package/runner/src/adapters/claude-session-capture.ts +293 -0
  697. package/runner/src/adapters/claude-session-probe.ts +414 -0
  698. package/runner/src/adapters/claude-shutdown.ts +190 -0
  699. package/runner/src/adapters/claude-status-detectors.ts +426 -0
  700. package/runner/src/adapters/claude-subagents.ts +93 -0
  701. package/runner/src/adapters/claude-submit-confirmation.ts +287 -0
  702. package/runner/src/adapters/claude-tmux.ts +548 -0
  703. package/runner/src/adapters/claude-token-usage-capture.ts +253 -0
  704. package/runner/src/adapters/claude-tool-policy.ts +165 -0
  705. package/runner/src/adapters/claude-transcript-tail.ts +193 -0
  706. package/runner/src/adapters/claude-transcript.ts +812 -0
  707. package/runner/src/adapters/claude.ts +1097 -0
  708. package/runner/src/adapters/codex-agent-message-capture.ts +189 -0
  709. package/runner/src/adapters/codex-app-server.ts +70 -0
  710. package/runner/src/adapters/codex-client.ts +362 -0
  711. package/runner/src/adapters/codex-effective-config.ts +87 -0
  712. package/runner/src/adapters/codex-launch-config.ts +153 -0
  713. package/runner/src/adapters/codex-rollout-context.ts +272 -0
  714. package/runner/src/adapters/codex-skill-discovery.ts +18 -0
  715. package/runner/src/adapters/codex-token-usage-capture.ts +163 -0
  716. package/runner/src/adapters/codex-tool-output.ts +53 -0
  717. package/runner/src/adapters/codex-turn-outcome.ts +27 -0
  718. package/runner/src/adapters/codex-version.ts +64 -0
  719. package/runner/src/adapters/codex.ts +1442 -0
  720. package/runner/src/adapters/incremental-file.ts +110 -0
  721. package/runner/src/adapters/opencode-api.ts +71 -0
  722. package/runner/src/adapters/opencode-context.ts +277 -0
  723. package/runner/src/adapters/opencode-model-registry.ts +126 -0
  724. package/runner/src/adapters/opencode-provider.ts +169 -0
  725. package/runner/src/adapters/opencode-server-retry.ts +50 -0
  726. package/runner/src/adapters/opencode-soft-steer.ts +302 -0
  727. package/runner/src/adapters/opencode-spawn.ts +145 -0
  728. package/runner/src/adapters/opencode-subscribe.ts +62 -0
  729. package/runner/src/adapters/opencode-token-usage-capture.ts +187 -0
  730. package/runner/src/adapters/opencode-tool-events.ts +302 -0
  731. package/runner/src/adapters/opencode-tools-config.ts +17 -0
  732. package/runner/src/adapters/opencode.ts +2264 -0
  733. package/runner/src/adapters/project-shell.ts +80 -0
  734. package/runner/src/adapters/provider-launch-config.ts +21 -0
  735. package/runner/src/adapters/provider-quota-harvest.ts +127 -0
  736. package/runner/src/adapters/service-access.ts +153 -0
  737. package/runner/src/adapters/tmux-offload.ts +207 -0
  738. package/runner/src/adapters/tool-summary.ts +214 -0
  739. package/runner/src/agent-redact.ts +75 -0
  740. package/runner/src/agent-runner/commands/dispatch.ts +185 -0
  741. package/runner/src/agent-runner/commands/lifecycle.ts +84 -0
  742. package/runner/src/agent-runner/commands/prompt.ts +284 -0
  743. package/runner/src/agent-runner/credentials.ts +208 -0
  744. package/runner/src/agent-runner/http-liveness.ts +85 -0
  745. package/runner/src/agent-runner/lifecycle-milestones.ts +207 -0
  746. package/runner/src/agent-runner/lifecycle-phase.ts +80 -0
  747. package/runner/src/agent-runner/registration.ts +163 -0
  748. package/runner/src/agent-runner/runner-context.ts +158 -0
  749. package/runner/src/agent-runner/session-mirror.ts +278 -0
  750. package/runner/src/agent-runner/task-claims.ts +116 -0
  751. package/runner/src/agent-runner/token-usage-coverage.ts +54 -0
  752. package/runner/src/agent-runner/turn-report.ts +269 -0
  753. package/runner/src/api-budget-accounting.ts +91 -0
  754. package/runner/src/area-memory.ts +255 -0
  755. package/runner/src/artifact-path-materialize.ts +52 -0
  756. package/runner/src/async-guard.ts +35 -0
  757. package/runner/src/attachment-cache-sweep.ts +31 -0
  758. package/runner/src/attachment-cache.ts +195 -0
  759. package/runner/src/background-script-reconcile.ts +106 -0
  760. package/runner/src/bounded-log.ts +59 -0
  761. package/runner/src/bounded-spawn-sync.ts +18 -0
  762. package/runner/src/busy-reconciler.ts +282 -0
  763. package/runner/src/claim-tracker.ts +140 -0
  764. package/runner/src/claude-settings.ts +167 -0
  765. package/runner/src/claude-workspace-trust.ts +289 -0
  766. package/runner/src/config.ts +547 -0
  767. package/runner/src/context-boundary.ts +101 -0
  768. package/runner/src/context-command.ts +151 -0
  769. package/runner/src/context-probe-state.ts +6 -0
  770. package/runner/src/continuation-archive.ts +179 -0
  771. package/runner/src/control-server.ts +730 -0
  772. package/runner/src/delivery-policy.ts +9 -0
  773. package/runner/src/delivery-result.ts +24 -0
  774. package/runner/src/effort-command.ts +125 -0
  775. package/runner/src/empty-turn.ts +816 -0
  776. package/runner/src/free-port.ts +25 -0
  777. package/runner/src/fs-offload.ts +26 -0
  778. package/runner/src/gate-run-config.ts +35 -0
  779. package/runner/src/gate-run-lease-probe.ts +38 -0
  780. package/runner/src/host-asset-plan.ts +450 -0
  781. package/runner/src/host-claude-config-worker.ts +34 -0
  782. package/runner/src/host-sources.ts +40 -0
  783. package/runner/src/inbox-carrier.ts +7 -0
  784. package/runner/src/index.ts +386 -0
  785. package/runner/src/launch-assembly.ts +955 -0
  786. package/runner/src/liveness.ts +105 -0
  787. package/runner/src/logger.ts +108 -0
  788. package/runner/src/mcp-outbox.ts +204 -0
  789. package/runner/src/mcp-preflight.ts +86 -0
  790. package/runner/src/mcp-source-selection.ts +54 -0
  791. package/runner/src/mcp-tool-deferral.ts +35 -0
  792. package/runner/src/mcp-vault-env.ts +25 -0
  793. package/runner/src/message-body-config/config.ts +16 -0
  794. package/runner/src/message-body-config.ts +1 -0
  795. package/runner/src/mid-turn-delivery.ts +43 -0
  796. package/runner/src/native-memory-lever.ts +329 -0
  797. package/runner/src/native-self-resume.ts +244 -0
  798. package/runner/src/outbox.ts +453 -0
  799. package/runner/src/park-post.ts +17 -0
  800. package/runner/src/pending-permission-store.ts +148 -0
  801. package/runner/src/process-meta.ts +9 -0
  802. package/runner/src/profile-home.ts +419 -0
  803. package/runner/src/profile-projection.ts +411 -0
  804. package/runner/src/project-hooks.ts +65 -0
  805. package/runner/src/project-instructions.ts +119 -0
  806. package/runner/src/provider-double.ts +59 -0
  807. package/runner/src/provider-hold.ts +228 -0
  808. package/runner/src/provider-home-marker.ts +3 -0
  809. package/runner/src/provider-home-tombstone.ts +4 -0
  810. package/runner/src/provider-input-queue.ts +134 -0
  811. package/runner/src/provider-integration.ts +93 -0
  812. package/runner/src/provider-processes.ts +17 -0
  813. package/runner/src/provider-submit-failure.ts +15 -0
  814. package/runner/src/providers.ts +35 -0
  815. package/runner/src/provisioning.ts +703 -0
  816. package/runner/src/question-decision.ts +18 -0
  817. package/runner/src/quota.ts +22 -0
  818. package/runner/src/rate-limit.ts +351 -0
  819. package/runner/src/refused-prompt-store.ts +36 -0
  820. package/runner/src/relay-injection-events.ts +161 -0
  821. package/runner/src/relay-instructions.ts +107 -0
  822. package/runner/src/relay-mcp-proxy.long-turn-e2e.ts +183 -0
  823. package/runner/src/relay-mcp-proxy.ts +704 -0
  824. package/runner/src/relay-mcp.ts +583 -0
  825. package/runner/src/reply-obligation-cache.ts +211 -0
  826. package/runner/src/response-capture-report.ts +111 -0
  827. package/runner/src/response-routing.ts +6 -0
  828. package/runner/src/runner-core.ts +2955 -0
  829. package/runner/src/runner-exit.ts +12 -0
  830. package/runner/src/runner-helpers.ts +582 -0
  831. package/runner/src/runner-insights.ts +105 -0
  832. package/runner/src/runner-mcp-proxy.ts +46 -0
  833. package/runner/src/runner-spawn-config.ts +68 -0
  834. package/runner/src/runner-stale-scratch-sweep.ts +21 -0
  835. package/runner/src/runner.ts +9 -0
  836. package/runner/src/runtime-token-file.ts +45 -0
  837. package/runner/src/runtime-token-remint.ts +56 -0
  838. package/runner/src/service-access.ts +88 -0
  839. package/runner/src/session-destroy.ts +27 -0
  840. package/runner/src/session-insights.ts +118 -0
  841. package/runner/src/session-scratch.ts +296 -0
  842. package/runner/src/spawn-input.ts +147 -0
  843. package/runner/src/startup-config-fetch.ts +48 -0
  844. package/runner/src/subreaper.ts +113 -0
  845. package/runner/src/template-resolver.ts +29 -0
  846. package/runner/src/test-run-dedup.ts +435 -0
  847. package/runner/src/transcript-context.ts +99 -0
  848. package/runner/src/transport-errors.ts +48 -0
  849. package/runner/src/turn-opener.ts +55 -0
  850. package/runner/src/turn-reconcile-event.ts +88 -0
  851. package/runner/src/vault-proxy-hop.ts +99 -0
  852. package/runner/src/version.ts +44 -0
  853. package/runner/src/web-tool-call-proxy.ts +128 -0
  854. package/runner/src/web-tools.ts +59 -0
  855. package/runner/test-support/codex-web-config-proof.ts +149 -0
  856. package/runner/test-support/effective-launch.ts +189 -0
  857. package/runner/test-support/native-context-sources.ts +77 -0
  858. package/runner/test-support/provisioning-context.ts +55 -0
  859. package/runner/test-support/recorder-double.ts +130 -0
  860. package/runner/test-support/recording-provider.ts +242 -0
  861. package/runner/test-support/runner-harness.ts +249 -0
  862. package/runner/test-support/service-access-fixture.ts +12 -0
  863. package/scripts/agent-vault/bootstrap.py +87 -0
  864. package/scripts/agent-vault/install.py +200 -0
  865. package/scripts/agent-vault/install_refresh.py +98 -0
  866. package/scripts/agent-vault/refresh.py +116 -0
  867. package/scripts/agent-vault/refresh_provision.py +109 -0
  868. package/scripts/agent-vault/refresh_store.py +54 -0
  869. package/scripts/agent-vault/runtime.py +253 -0
  870. package/scripts/agent-vault/sec-ops-activation.json +23 -0
  871. package/scripts/artifact-checkout-gc.ts +51 -0
  872. package/scripts/cd-config.ts +224 -0
  873. package/scripts/cd-deploy-debounce.ts +94 -0
  874. package/scripts/cd-deploy-worktree-gc.ts +235 -0
  875. package/scripts/cd-fleet-membership.ts +48 -0
  876. package/scripts/cd-host-epochs.ts +101 -0
  877. package/scripts/cd-hub-wake.ts +40 -0
  878. package/scripts/cd-land-boundary.ts +49 -0
  879. package/scripts/cd-watcher.ts +985 -0
  880. package/scripts/dashboard-build-marker.ts +71 -0
  881. package/scripts/fleet-sha-coverage.ts +66 -0
  882. package/scripts/gate-run-lease.ts +329 -0
  883. package/scripts/gate-slot +9 -0
  884. package/scripts/gate-slot-fleet-health.ts +60 -0
  885. package/scripts/gate.sh +6 -0
  886. package/scripts/install-bin-shim.cjs +149 -0
  887. package/scripts/orchestrator-spawn-smoke.ts +398 -0
  888. package/scripts/provisioning-matrix.ts +72 -0
  889. package/scripts/release-cd-stamp.ts +146 -0
  890. package/scripts/release-health.ts +133 -0
  891. package/scripts/release-report.ts +102 -0
  892. package/scripts/release-upgrade.ts +1296 -0
  893. package/scripts/steward-policy-cleanup.ts +73 -0
  894. package/scripts/wait-for-deploy.ts +43 -0
  895. package/src/agent-authz.ts +219 -0
  896. package/src/agent-branch-state.ts +45 -0
  897. package/src/agent-busy-health.ts +158 -0
  898. package/src/agent-card-projection.ts +86 -0
  899. package/src/agent-channel-binding.ts +49 -0
  900. package/src/agent-command-activity.ts +39 -0
  901. package/src/agent-core.ts +29 -0
  902. package/src/agent-death-diagnosis.ts +314 -0
  903. package/src/agent-drive-arbiter.ts +112 -0
  904. package/src/agent-exit-alarm.ts +10 -0
  905. package/src/agent-exit-cleanup-async.ts +69 -0
  906. package/src/agent-exit-cleanup.ts +99 -0
  907. package/src/agent-exit-report.ts +28 -0
  908. package/src/agent-issue-repo.ts +53 -0
  909. package/src/agent-launch-shape-redaction.ts +72 -0
  910. package/src/agent-lifecycle-events.ts +428 -0
  911. package/src/agent-principal.ts +14 -0
  912. package/src/agent-profile-catalog.ts +188 -0
  913. package/src/agent-ref.ts +340 -0
  914. package/src/agent-spawn.ts +45 -0
  915. package/src/agent-status-events.ts +41 -0
  916. package/src/agent-system-tags.ts +38 -0
  917. package/src/artifact-media.ts +34 -0
  918. package/src/artifact-storage.ts +245 -0
  919. package/src/artifact-text.ts +31 -0
  920. package/src/async-deadline.ts +59 -0
  921. package/src/auth/admin-routes.ts +36 -0
  922. package/src/auth/index.ts +23 -0
  923. package/src/auth/login-rate-limiter.ts +153 -0
  924. package/src/auth/password.ts +142 -0
  925. package/src/auth/provider.ts +60 -0
  926. package/src/auth/role-scopes.ts +15 -0
  927. package/src/auth/session-cookie.ts +35 -0
  928. package/src/auth/session-refresh.ts +61 -0
  929. package/src/auth/session.test-fixture.ts +10 -0
  930. package/src/auth/session.ts +107 -0
  931. package/src/authority-audit.ts +56 -0
  932. package/src/authz-meta-keys.ts +64 -0
  933. package/src/auto-spawn-dispatch.ts +154 -0
  934. package/src/automations/constants.ts +14 -0
  935. package/src/automations/cron.ts +129 -0
  936. package/src/automations/crud.ts +129 -0
  937. package/src/automations/dispatch.ts +299 -0
  938. package/src/automations/index.ts +5 -0
  939. package/src/automations/precheck.ts +124 -0
  940. package/src/automations/reconcile.ts +314 -0
  941. package/src/automations/storage.ts +200 -0
  942. package/src/automations/types.ts +16 -0
  943. package/src/automations/validation.ts +216 -0
  944. package/src/automations.ts +1 -0
  945. package/src/branch-landed.ts +761 -0
  946. package/src/browser-authz.ts +18 -0
  947. package/src/browser-config.ts +31 -0
  948. package/src/bundled-workflows.ts +48 -0
  949. package/src/bus-outbox-async.ts +16 -0
  950. package/src/bus-outbox.ts +265 -0
  951. package/src/bus-resume-commands.ts +18 -0
  952. package/src/bus.ts +792 -0
  953. package/src/canonical-repo-root.ts +131 -0
  954. package/src/cd-deploy-notify.ts +59 -0
  955. package/src/cd-host-deferrals.ts +23 -0
  956. package/src/cd-host-lag-notify.ts +36 -0
  957. package/src/cd-repository.ts +49 -0
  958. package/src/channel-output-control.ts +43 -0
  959. package/src/channel-output-validation.ts +11 -0
  960. package/src/channel-policy-health.ts +20 -0
  961. package/src/channel-target.ts +40 -0
  962. package/src/channels-host-service.ts +219 -0
  963. package/src/ci/bun-test-log.ts +41 -0
  964. package/src/ci/failed-test-files.ts +52 -0
  965. package/src/ci/gate-history.ts +66 -0
  966. package/src/ci/github-actions.ts +145 -0
  967. package/src/ci/incidents.ts +175 -0
  968. package/src/ci/index.ts +6 -0
  969. package/src/ci/job-verdict.ts +27 -0
  970. package/src/ci/land-boundary-ci.ts +104 -0
  971. package/src/ci/monitor.ts +528 -0
  972. package/src/ci/not-triggered.ts +116 -0
  973. package/src/ci/notifications.ts +234 -0
  974. package/src/ci/provider.ts +87 -0
  975. package/src/ci/root-missing.ts +35 -0
  976. package/src/ci/transition-notify.ts +279 -0
  977. package/src/ci-monitor.ts +7 -0
  978. package/src/claude-api-budget-async.ts +11 -0
  979. package/src/claude-api-budget-config.ts +23 -0
  980. package/src/claude-api-expiry.ts +70 -0
  981. package/src/claude-api-overflow.ts +146 -0
  982. package/src/claude-app/config.ts +13 -0
  983. package/src/claude-app/oauth-http.ts +127 -0
  984. package/src/claude-app/oauth-provider.ts +136 -0
  985. package/src/claude-app/passphrase.ts +14 -0
  986. package/src/claude-app-auth.ts +65 -0
  987. package/src/claude-app-gateway.ts +68 -0
  988. package/src/cli/_shared.ts +136 -0
  989. package/src/cli/agent-detect.ts +175 -0
  990. package/src/cli/agent-guide.ts +152 -0
  991. package/src/cli/agent-keep.ts +37 -0
  992. package/src/cli/agent-meta.ts +111 -0
  993. package/src/cli/artifact.ts +154 -0
  994. package/src/cli/browser.ts +56 -0
  995. package/src/cli/channel-output.ts +17 -0
  996. package/src/cli/channels-host.ts +13 -0
  997. package/src/cli/channels.ts +16 -0
  998. package/src/cli/claude-api-budget.ts +41 -0
  999. package/src/cli/context-probe.ts +90 -0
  1000. package/src/cli/credentials.ts +1 -0
  1001. package/src/cli/daemon.ts +125 -0
  1002. package/src/cli/dev.ts +185 -0
  1003. package/src/cli/ephemeral.ts +159 -0
  1004. package/src/cli/hosts.ts +41 -0
  1005. package/src/cli/index.ts +442 -0
  1006. package/src/cli/introspect.ts +74 -0
  1007. package/src/cli/maintenance.ts +24 -0
  1008. package/src/cli/merges.ts +78 -0
  1009. package/src/cli/message.ts +229 -0
  1010. package/src/cli/orchestrator.ts +384 -0
  1011. package/src/cli/pair.ts +135 -0
  1012. package/src/cli/profile.ts +35 -0
  1013. package/src/cli/project.ts +52 -0
  1014. package/src/cli/prompts.ts +23 -0
  1015. package/src/cli/provider-enablement.ts +42 -0
  1016. package/src/cli/provider.ts +230 -0
  1017. package/src/cli/recipe.ts +110 -0
  1018. package/src/cli/reply.ts +130 -0
  1019. package/src/cli/roles.ts +60 -0
  1020. package/src/cli/routing-policy.ts +20 -0
  1021. package/src/cli/run.ts +96 -0
  1022. package/src/cli/secrets-backup.ts +85 -0
  1023. package/src/cli/secrets.ts +55 -0
  1024. package/src/cli/service-access.ts +23 -0
  1025. package/src/cli/setup.ts +57 -0
  1026. package/src/cli/shutdown.ts +16 -0
  1027. package/src/cli/spawn.ts +31 -0
  1028. package/src/cli/state.ts +73 -0
  1029. package/src/cli/steward.ts +58 -0
  1030. package/src/cli/task.ts +151 -0
  1031. package/src/cli/team.ts +18 -0
  1032. package/src/cli/timers.ts +53 -0
  1033. package/src/cli/token.ts +72 -0
  1034. package/src/cli/upgrade.ts +200 -0
  1035. package/src/cli/web-tool-calls.ts +17 -0
  1036. package/src/cli/workflow.ts +46 -0
  1037. package/src/cli/workspace.ts +544 -0
  1038. package/src/cli.ts +4 -0
  1039. package/src/codex-reset-consume.ts +274 -0
  1040. package/src/codex-wham-quota.ts +177 -0
  1041. package/src/command-events.ts +69 -0
  1042. package/src/command-secrets.ts +198 -0
  1043. package/src/command-ttl.ts +63 -0
  1044. package/src/commands-db.ts +1196 -0
  1045. package/src/commands-landing-async.ts +166 -0
  1046. package/src/commands-write.ts +160 -0
  1047. package/src/comment-blocks.ts +84 -0
  1048. package/src/compaction-watch.ts +259 -0
  1049. package/src/config-model-selection.ts +14 -0
  1050. package/src/config-store-write.ts +39 -0
  1051. package/src/config-store.ts +1253 -0
  1052. package/src/config.ts +939 -0
  1053. package/src/connector-boot-health.ts +27 -0
  1054. package/src/connector-paths.ts +47 -0
  1055. package/src/connectors.ts +547 -0
  1056. package/src/content-security.ts +12 -0
  1057. package/src/context-advisory.ts +279 -0
  1058. package/src/context-block-rendered-at.ts +33 -0
  1059. package/src/context-injection-channel.ts +49 -0
  1060. package/src/context-router.ts +121 -0
  1061. package/src/context-threshold-config.ts +52 -0
  1062. package/src/continuation-replay-edge.ts +30 -0
  1063. package/src/continuity-working-state.ts +107 -0
  1064. package/src/contracts.ts +109 -0
  1065. package/src/coordinator-authority.ts +100 -0
  1066. package/src/coordinator-digest-config.ts +20 -0
  1067. package/src/cosmos-events.ts +164 -0
  1068. package/src/daemon.ts +570 -0
  1069. package/src/dashboard-notifications.ts +169 -0
  1070. package/src/dashboard-presence.ts +86 -0
  1071. package/src/db/activity-async.ts +58 -0
  1072. package/src/db/activity-read-ops.ts +42 -0
  1073. package/src/db/activity-write-ops.ts +43 -0
  1074. package/src/db/activity.ts +454 -0
  1075. package/src/db/agent-card-read.ts +98 -0
  1076. package/src/db/agent-effort-state.ts +146 -0
  1077. package/src/db/agent-exit-cleanup.ts +94 -0
  1078. package/src/db/agent-exit-report.ts +33 -0
  1079. package/src/db/agent-gate-runs-write-ops.ts +7 -0
  1080. package/src/db/agent-gate-runs.ts +96 -0
  1081. package/src/db/agent-identity-archive.test-fixture.ts +12 -0
  1082. package/src/db/agent-identity-archive.ts +75 -0
  1083. package/src/db/agent-keep.ts +21 -0
  1084. package/src/db/agent-lifecycle-write-ops.ts +92 -0
  1085. package/src/db/agent-meta.ts +74 -0
  1086. package/src/db/agent-outstanding-work.ts +154 -0
  1087. package/src/db/agent-ownership-async.ts +45 -0
  1088. package/src/db/agent-ownership-read-ops.ts +12 -0
  1089. package/src/db/agent-ownership-write-ops.ts +50 -0
  1090. package/src/db/agent-ownership.ts +200 -0
  1091. package/src/db/agent-predicates.ts +64 -0
  1092. package/src/db/agent-read.ts +39 -0
  1093. package/src/db/agent-search-async.ts +21 -0
  1094. package/src/db/agent-search-read-ops.ts +8 -0
  1095. package/src/db/agent-search.ts +162 -0
  1096. package/src/db/agent-shutdown-in-flight.ts +21 -0
  1097. package/src/db/agents-async.ts +333 -0
  1098. package/src/db/agents-prune-write-op.ts +37 -0
  1099. package/src/db/agents-read-ops.ts +33 -0
  1100. package/src/db/agents-write-ops.ts +174 -0
  1101. package/src/db/agents.ts +1284 -0
  1102. package/src/db/api-budget-schema.ts +144 -0
  1103. package/src/db/api-budget-usage-migration.ts +31 -0
  1104. package/src/db/api-budget-usage.ts +40 -0
  1105. package/src/db/artifact-browse.ts +145 -0
  1106. package/src/db/artifact-retention.ts +115 -0
  1107. package/src/db/artifacts-async.ts +81 -0
  1108. package/src/db/artifacts-read-ops.ts +24 -0
  1109. package/src/db/artifacts-write-ops.ts +46 -0
  1110. package/src/db/artifacts.ts +307 -0
  1111. package/src/db/auth-identities.ts +128 -0
  1112. package/src/db/backlog.ts +172 -0
  1113. package/src/db/blackboard.ts +171 -0
  1114. package/src/db/broadcast-scope.ts +63 -0
  1115. package/src/db/broker-memory-migration.ts +71 -0
  1116. package/src/db/browser-sessions.ts +89 -0
  1117. package/src/db/budget-lineage.ts +26 -0
  1118. package/src/db/bus-outbox-read-ops.ts +29 -0
  1119. package/src/db/bus-outbox-write-ops.ts +57 -0
  1120. package/src/db/bus-prune-async.ts +16 -0
  1121. package/src/db/busy-regression.worker.ts +48 -0
  1122. package/src/db/caller-lifecycle.ts +24 -0
  1123. package/src/db/carry-pending-marker.ts +129 -0
  1124. package/src/db/carry-pending.ts +145 -0
  1125. package/src/db/channel-binding-delete.ts +15 -0
  1126. package/src/db/channel-egress-allowlist.ts +200 -0
  1127. package/src/db/channel-identity.ts +38 -0
  1128. package/src/db/channel-runtime.ts +19 -0
  1129. package/src/db/channels-async.ts +55 -0
  1130. package/src/db/channels-read-ops.ts +13 -0
  1131. package/src/db/channels-session-fence.ts +18 -0
  1132. package/src/db/channels-write-ops.ts +42 -0
  1133. package/src/db/channels.ts +654 -0
  1134. package/src/db/checkout-refresh.ts +36 -0
  1135. package/src/db/ci-gate-runs.ts +92 -0
  1136. package/src/db/ci-incidents-async.ts +76 -0
  1137. package/src/db/ci-incidents-read-ops.ts +15 -0
  1138. package/src/db/ci-incidents-write-ops.ts +57 -0
  1139. package/src/db/ci-incidents.ts +667 -0
  1140. package/src/db/ci-sha-observations-schema.ts +33 -0
  1141. package/src/db/claim-sql.ts +44 -0
  1142. package/src/db/claude-api-budget-ops.ts +15 -0
  1143. package/src/db/claude-api-budget-reconcile.ts +39 -0
  1144. package/src/db/claude-api-budget.ts +198 -0
  1145. package/src/db/claude-app-oauth.ts +74 -0
  1146. package/src/db/claude-catalog-reconcile.ts +27 -0
  1147. package/src/db/codex-reset-consumes-async.ts +9 -0
  1148. package/src/db/codex-reset-consumes-read-ops.ts +5 -0
  1149. package/src/db/codex-reset-consumes-write-ops.ts +19 -0
  1150. package/src/db/codex-reset-consumes.ts +122 -0
  1151. package/src/db/command-agent-profiles.ts +58 -0
  1152. package/src/db/command-row.ts +88 -0
  1153. package/src/db/command-terminal-status.ts +33 -0
  1154. package/src/db/command-vault-pruning.ts +30 -0
  1155. package/src/db/commands-cancel-write.ts +45 -0
  1156. package/src/db/commands-claim-admission.ts +144 -0
  1157. package/src/db/commands-effort-read.ts +58 -0
  1158. package/src/db/commands-host-land-admission.ts +106 -0
  1159. package/src/db/commands-kernel-landing.ts +268 -0
  1160. package/src/db/commands-land-occupancy.ts +40 -0
  1161. package/src/db/commands-land-wait.ts +38 -0
  1162. package/src/db/commands-landing-completeness.ts +66 -0
  1163. package/src/db/commands-landing-tuples.ts +22 -0
  1164. package/src/db/commands-landing.ts +1046 -0
  1165. package/src/db/commands-leaseless-sweep.ts +72 -0
  1166. package/src/db/commands-list-query.ts +47 -0
  1167. package/src/db/commands-planner-stats.test-fixture.ts +97 -0
  1168. package/src/db/commands-read-ops.ts +49 -0
  1169. package/src/db/commands-scheduler-recovery.ts +71 -0
  1170. package/src/db/commands-spawn-read.ts +33 -0
  1171. package/src/db/commands-write-ops.ts +286 -0
  1172. package/src/db/config-store-write-ops.ts +58 -0
  1173. package/src/db/connection-instrumentation.ts +76 -0
  1174. package/src/db/connection.ts +532 -0
  1175. package/src/db/context-reset-carry.ts +144 -0
  1176. package/src/db/continuation-archive-purge.ts +48 -0
  1177. package/src/db/continuation-archive-search.ts +249 -0
  1178. package/src/db/continuation-archives-async.ts +59 -0
  1179. package/src/db/continuation-archives-read-ops.ts +10 -0
  1180. package/src/db/continuation-archives-write-ops.ts +15 -0
  1181. package/src/db/continuation-archives.ts +158 -0
  1182. package/src/db/continuations.ts +201 -0
  1183. package/src/db/coordinator-delivery.ts +10 -0
  1184. package/src/db/coordinator-digest-async.ts +13 -0
  1185. package/src/db/coordinator-digest-flush.ts +6 -0
  1186. package/src/db/coordinator-digest.ts +145 -0
  1187. package/src/db/coordinator-seat.ts +130 -0
  1188. package/src/db/crash-reports.ts +115 -0
  1189. package/src/db/db-error-registry.ts +290 -0
  1190. package/src/db/db-reader-worker.ts +91 -0
  1191. package/src/db/db-writer-worker.ts +66 -0
  1192. package/src/db/deferred-lineage-report-queries.ts +28 -0
  1193. package/src/db/deferred-lineage-reports.ts +44 -0
  1194. package/src/db/delivery-async.ts +102 -0
  1195. package/src/db/delivery-expiration-health.ts +97 -0
  1196. package/src/db/delivery-expiration.ts +52 -0
  1197. package/src/db/delivery-quality-async.ts +23 -0
  1198. package/src/db/delivery-quality.ts +116 -0
  1199. package/src/db/delivery-read-ops.ts +26 -0
  1200. package/src/db/delivery-report-echo.ts +53 -0
  1201. package/src/db/delivery-write-ops.ts +72 -0
  1202. package/src/db/delivery.ts +545 -0
  1203. package/src/db/deploy-events-async.ts +66 -0
  1204. package/src/db/deploy-events-read-ops.ts +25 -0
  1205. package/src/db/deploy-events-write-ops.ts +81 -0
  1206. package/src/db/deploy-events.ts +554 -0
  1207. package/src/db/deploy-task-completion.ts +48 -0
  1208. package/src/db/drive-leases.ts +165 -0
  1209. package/src/db/durable-payloads.ts +92 -0
  1210. package/src/db/fixtures/writer-shutdown.ts +28 -0
  1211. package/src/db/fts-query.ts +8 -0
  1212. package/src/db/gate-policy.ts +27 -0
  1213. package/src/db/gate-runs.ts +181 -0
  1214. package/src/db/gateway.ts +513 -0
  1215. package/src/db/generation-launch.ts +82 -0
  1216. package/src/db/guides-search.ts +18 -0
  1217. package/src/db/history-delivery-settle.ts +57 -0
  1218. package/src/db/hosts-async.ts +150 -0
  1219. package/src/db/hosts-backfill.ts +91 -0
  1220. package/src/db/hosts-read-ops.ts +21 -0
  1221. package/src/db/hosts-registration.ts +452 -0
  1222. package/src/db/hosts-views.ts +259 -0
  1223. package/src/db/hosts-write-ops.ts +94 -0
  1224. package/src/db/hosts.ts +251 -0
  1225. package/src/db/human-address.ts +6 -0
  1226. package/src/db/idle-digest.ts +54 -0
  1227. package/src/db/idle-self-care.ts +100 -0
  1228. package/src/db/inbox-async.ts +29 -0
  1229. package/src/db/inbox-read-ops.ts +8 -0
  1230. package/src/db/inbox-write-ops.ts +25 -0
  1231. package/src/db/inbox.ts +197 -0
  1232. package/src/db/index.ts +147 -0
  1233. package/src/db/injection-attempts.ts +41 -0
  1234. package/src/db/insights-read-ops.ts +12 -0
  1235. package/src/db/insights-write-ops.ts +15 -0
  1236. package/src/db/integrations.ts +297 -0
  1237. package/src/db/issue-associations.ts +136 -0
  1238. package/src/db/issue-lifecycle.ts +199 -0
  1239. package/src/db/issue-refs.ts +312 -0
  1240. package/src/db/kernel-event-log-schema.ts +14 -0
  1241. package/src/db/kernel-landing-admission.ts +15 -0
  1242. package/src/db/kernel-landing-command-authority.ts +222 -0
  1243. package/src/db/kernel-persistence-async.ts +48 -0
  1244. package/src/db/kernel-persistence-read-ops.ts +24 -0
  1245. package/src/db/kernel-persistence-write-ops.ts +43 -0
  1246. package/src/db/land-boundaries.ts +138 -0
  1247. package/src/db/land-executing.ts +147 -0
  1248. package/src/db/land-gate-attestations.ts +161 -0
  1249. package/src/db/land-incident-eligibility.ts +44 -0
  1250. package/src/db/land-queue-trace.ts +28 -0
  1251. package/src/db/land-stack.ts +80 -0
  1252. package/src/db/land-telemetry-schema.ts +50 -0
  1253. package/src/db/land-telemetry-write-ops.ts +16 -0
  1254. package/src/db/land-telemetry.ts +114 -0
  1255. package/src/db/land-withdrawal-state.ts +26 -0
  1256. package/src/db/landed-merge-evidence.ts +72 -0
  1257. package/src/db/landed-task-attribution.ts +23 -0
  1258. package/src/db/landing-audit.ts +18 -0
  1259. package/src/db/landing-controllers.ts +67 -0
  1260. package/src/db/landing-ingress-async.ts +102 -0
  1261. package/src/db/landing-ingress-read-ops.ts +8 -0
  1262. package/src/db/landing-ingress-write-ops.ts +42 -0
  1263. package/src/db/landing-ingress.ts +380 -0
  1264. package/src/db/landing-read-ops.ts +18 -0
  1265. package/src/db/landing-receipts.ts +206 -0
  1266. package/src/db/landing-schema.ts +479 -0
  1267. package/src/db/launch-facts.ts +60 -0
  1268. package/src/db/legacy-landing-publication.ts +103 -0
  1269. package/src/db/legacy-message-backfill.ts +90 -0
  1270. package/src/db/lifecycle-seq.ts +127 -0
  1271. package/src/db/lifecycle-write-window.ts +216 -0
  1272. package/src/db/lineage-pair-dedupe-sql.ts +80 -0
  1273. package/src/db/lineage-startup-captures.ts +43 -0
  1274. package/src/db/long-running-work-async.ts +12 -0
  1275. package/src/db/long-running-work-write-ops.ts +8 -0
  1276. package/src/db/long-running-work.ts +78 -0
  1277. package/src/db/macos-privacy.ts +72 -0
  1278. package/src/db/main-connection-writes.ts +44 -0
  1279. package/src/db/main-thread-state.ts +38 -0
  1280. package/src/db/maintenance-health.ts +560 -0
  1281. package/src/db/maintenance-indexes.ts +37 -0
  1282. package/src/db/maintenance-job-runs-async.ts +15 -0
  1283. package/src/db/maintenance-job-runs.ts +62 -0
  1284. package/src/db/maintenance-job-write-ops.ts +10 -0
  1285. package/src/db/maintenance-pauses.ts +224 -0
  1286. package/src/db/maintenance-worker.ts +111 -0
  1287. package/src/db/mappers.ts +422 -0
  1288. package/src/db/memory-preamble-read.ts +13 -0
  1289. package/src/db/memory-resolve.ts +209 -0
  1290. package/src/db/memory-retirement-plan.ts +31 -0
  1291. package/src/db/memory-retirement.ts +15 -0
  1292. package/src/db/merge-drain-async.ts +8 -0
  1293. package/src/db/merge-lease.ts +225 -0
  1294. package/src/db/message-claims.ts +16 -0
  1295. package/src/db/message-queries.ts +16 -0
  1296. package/src/db/message-read-mark.ts +32 -0
  1297. package/src/db/message-reads-async.ts +46 -0
  1298. package/src/db/message-reads-read-ops.ts +35 -0
  1299. package/src/db/message-reads-write-ops.ts +24 -0
  1300. package/src/db/message-reads.ts +553 -0
  1301. package/src/db/message-send-suppression.ts +58 -0
  1302. package/src/db/message-send.ts +76 -0
  1303. package/src/db/message-thread.ts +15 -0
  1304. package/src/db/message-write-ops.ts +96 -0
  1305. package/src/db/messages-async.ts +31 -0
  1306. package/src/db/messages-read-ops.ts +14 -0
  1307. package/src/db/messages.ts +1201 -0
  1308. package/src/db/migration-marker.ts +13 -0
  1309. package/src/db/migrations.ts +1761 -0
  1310. package/src/db/notification-subscriptions.ts +282 -0
  1311. package/src/db/on-loop-write-transaction.ts +34 -0
  1312. package/src/db/operator-actions-schema.ts +10 -0
  1313. package/src/db/operator-decisions.ts +180 -0
  1314. package/src/db/orchestrators-async.ts +57 -0
  1315. package/src/db/orchestrators-read-ops.ts +7 -0
  1316. package/src/db/orchestrators-write-ops.ts +52 -0
  1317. package/src/db/orchestrators.ts +485 -0
  1318. package/src/db/outbox-codec.ts +16 -0
  1319. package/src/db/pair-maintenance.ts +9 -0
  1320. package/src/db/pairs-async.ts +10 -0
  1321. package/src/db/pairs-write-ops.ts +8 -0
  1322. package/src/db/pairs.ts +264 -0
  1323. package/src/db/pending-relay-runs.ts +73 -0
  1324. package/src/db/plan-blurb-migration.ts +158 -0
  1325. package/src/db/plan-ci-blocks.ts +28 -0
  1326. package/src/db/plan-completion.ts +55 -0
  1327. package/src/db/plan-conformance.ts +104 -0
  1328. package/src/db/plan-dispatch-schema.ts +17 -0
  1329. package/src/db/plan-dispatch-store.ts +112 -0
  1330. package/src/db/plan-external.ts +79 -0
  1331. package/src/db/plan-graph-async.ts +23 -0
  1332. package/src/db/plan-graph-read-ops.ts +16 -0
  1333. package/src/db/plan-graph-write-ops.ts +37 -0
  1334. package/src/db/plan-graph.ts +403 -0
  1335. package/src/db/plan-import-schema.ts +19 -0
  1336. package/src/db/plan-import.ts +211 -0
  1337. package/src/db/plan-task-create.ts +44 -0
  1338. package/src/db/planner-stats.ts +123 -0
  1339. package/src/db/plans-async.ts +22 -0
  1340. package/src/db/plans-read-ops.ts +11 -0
  1341. package/src/db/plans-write-ops.ts +9 -0
  1342. package/src/db/plans.ts +385 -0
  1343. package/src/db/policy-runtime.ts +14 -0
  1344. package/src/db/presence-buffer.ts +111 -0
  1345. package/src/db/presence-loop.ts +58 -0
  1346. package/src/db/presence-write-ops.ts +28 -0
  1347. package/src/db/presence-write.ts +38 -0
  1348. package/src/db/profile-artifact-backfill-migration.ts +32 -0
  1349. package/src/db/profile-host-sources-migration.ts +150 -0
  1350. package/src/db/profile-legacy-project-instructions-migration.ts +41 -0
  1351. package/src/db/profile-name-case-migration.ts +46 -0
  1352. package/src/db/profile-override-migration.ts +200 -0
  1353. package/src/db/profile-project-ack-migration.ts +55 -0
  1354. package/src/db/profile-slim-migration.ts +125 -0
  1355. package/src/db/profile-slim-plan.ts +190 -0
  1356. package/src/db/project-entries-async.ts +18 -0
  1357. package/src/db/project-entries-read-ops.ts +28 -0
  1358. package/src/db/project-entries.ts +514 -0
  1359. package/src/db/project-entry-search.ts +63 -0
  1360. package/src/db/project-identity.ts +16 -0
  1361. package/src/db/project-journal.ts +256 -0
  1362. package/src/db/project-lifecycle.ts +80 -0
  1363. package/src/db/project-memory-group-migration.ts +76 -0
  1364. package/src/db/project-phantom-merge.ts +228 -0
  1365. package/src/db/project-root-schema.ts +30 -0
  1366. package/src/db/project-trust-approvals.ts +98 -0
  1367. package/src/db/projects-async.ts +50 -0
  1368. package/src/db/projects-read-ops.ts +59 -0
  1369. package/src/db/projects-write-ops.ts +74 -0
  1370. package/src/db/projects.ts +629 -0
  1371. package/src/db/prompt-templates-schema.ts +23 -0
  1372. package/src/db/prompt-templates.ts +138 -0
  1373. package/src/db/prompt-version-migration.ts +115 -0
  1374. package/src/db/prompt-versions-ops.ts +16 -0
  1375. package/src/db/prompt-versions.ts +167 -0
  1376. package/src/db/provider-catalog-async.ts +31 -0
  1377. package/src/db/provider-catalog-read-ops.ts +8 -0
  1378. package/src/db/provider-catalog-write-ops.ts +16 -0
  1379. package/src/db/provider-config-history.ts +49 -0
  1380. package/src/db/provider-config-secrets.ts +117 -0
  1381. package/src/db/provider-flap-messages-async.ts +6 -0
  1382. package/src/db/provider-flap-messages-write-ops.ts +12 -0
  1383. package/src/db/provider-flap-messages.ts +19 -0
  1384. package/src/db/provider-quota-advisory-types.ts +39 -0
  1385. package/src/db/provider-quota-burn.ts +322 -0
  1386. package/src/db/provider-quota-effect-occurrences.ts +13 -0
  1387. package/src/db/provider-quota-lease-write-ops.ts +23 -0
  1388. package/src/db/provider-quota-leases-async.ts +35 -0
  1389. package/src/db/provider-quota-leases.ts +174 -0
  1390. package/src/db/provider-quota-matrix-cache.ts +85 -0
  1391. package/src/db/provider-quota-matrix-fetch.ts +85 -0
  1392. package/src/db/provider-quota-merge.ts +90 -0
  1393. package/src/db/provider-quota-notification-write.ts +98 -0
  1394. package/src/db/provider-quota-prune.ts +35 -0
  1395. package/src/db/provider-quota-read-async.ts +77 -0
  1396. package/src/db/provider-quota-read-ops.ts +56 -0
  1397. package/src/db/provider-quota-recipients.ts +38 -0
  1398. package/src/db/provider-quota-state.ts +139 -0
  1399. package/src/db/provider-quota-visibility.ts +22 -0
  1400. package/src/db/provider-quota-write-ops.ts +69 -0
  1401. package/src/db/provider-quotas.ts +726 -0
  1402. package/src/db/provider-secret-scrub.ts +64 -0
  1403. package/src/db/provisioning-assets-migration.ts +85 -0
  1404. package/src/db/provisioning-async.ts +116 -0
  1405. package/src/db/provisioning-callmux.ts +184 -0
  1406. package/src/db/provisioning-github-api.ts +16 -0
  1407. package/src/db/provisioning-github-import-target.ts +29 -0
  1408. package/src/db/provisioning-mcp-validation.ts +103 -0
  1409. package/src/db/provisioning-read-ops.ts +23 -0
  1410. package/src/db/provisioning-registry.ts +1122 -0
  1411. package/src/db/provisioning-resolve.ts +321 -0
  1412. package/src/db/provisioning-write-ops.ts +43 -0
  1413. package/src/db/qa-skill-seed.ts +27 -0
  1414. package/src/db/quota-lease-busy.worker.ts +62 -0
  1415. package/src/db/read-op-marshaling-fixtures.ts +724 -0
  1416. package/src/db/read-ops.ts +266 -0
  1417. package/src/db/reader-pool.ts +252 -0
  1418. package/src/db/recipe-read-ops.ts +15 -0
  1419. package/src/db/recipe-write-ops.ts +68 -0
  1420. package/src/db/reply-obligations.ts +265 -0
  1421. package/src/db/report-suppression.ts +126 -0
  1422. package/src/db/restart-epoch-admin-async.ts +14 -0
  1423. package/src/db/restart-epoch-admin.ts +67 -0
  1424. package/src/db/restart-epoch-admission.ts +114 -0
  1425. package/src/db/restart-epoch-async.ts +80 -0
  1426. package/src/db/restart-epoch-begin.ts +177 -0
  1427. package/src/db/restart-epoch-read-ops.ts +40 -0
  1428. package/src/db/restart-epoch-release.ts +248 -0
  1429. package/src/db/restart-epoch-write-ops.ts +117 -0
  1430. package/src/db/restart-epoch.test-fixture.ts +37 -0
  1431. package/src/db/restart-epoch.ts +623 -0
  1432. package/src/db/restart-sensitive.ts +81 -0
  1433. package/src/db/retention.ts +423 -0
  1434. package/src/db/review-ref-cleanups.ts +306 -0
  1435. package/src/db/routing-policy.ts +64 -0
  1436. package/src/db/scheduled-timer-projection.ts +123 -0
  1437. package/src/db/scheduled-timer-quota-chaos-worker.ts +84 -0
  1438. package/src/db/scheduled-timers.ts +521 -0
  1439. package/src/db/schema.ts +1472 -0
  1440. package/src/db/scoped-message-reads.ts +31 -0
  1441. package/src/db/secrets-broker-async.ts +31 -0
  1442. package/src/db/secrets-broker-read-ops.ts +8 -0
  1443. package/src/db/secrets-broker-write-ops.ts +23 -0
  1444. package/src/db/secrets-broker.ts +221 -0
  1445. package/src/db/secrets-vault-import.ts +37 -0
  1446. package/src/db/secrets-vault-key-lifecycle.ts +64 -0
  1447. package/src/db/secrets-vault-metadata.ts +37 -0
  1448. package/src/db/secrets-vault-migration.ts +53 -0
  1449. package/src/db/secrets-vault-write.ts +97 -0
  1450. package/src/db/secrets-vault.ts +69 -0
  1451. package/src/db/self-effort-permissions.ts +50 -0
  1452. package/src/db/service-access-read-ops.ts +10 -0
  1453. package/src/db/services-async.ts +29 -0
  1454. package/src/db/services-read-ops.ts +134 -0
  1455. package/src/db/services-write-ops.ts +71 -0
  1456. package/src/db/shared.ts +7 -0
  1457. package/src/db/shipping-board-async.ts +6 -0
  1458. package/src/db/shipping-board.ts +319 -0
  1459. package/src/db/shipping-stats-async.ts +24 -0
  1460. package/src/db/shipping-stats-histogram.ts +45 -0
  1461. package/src/db/shipping-stats-schema.ts +8 -0
  1462. package/src/db/shipping-stats.ts +265 -0
  1463. package/src/db/snapshot-ledger-prune.ts +53 -0
  1464. package/src/db/spawn-budget.ts +145 -0
  1465. package/src/db/spawn-command-busy.worker.ts +71 -0
  1466. package/src/db/spawn-delegation-state.ts +124 -0
  1467. package/src/db/spawn-delegation.ts +114 -0
  1468. package/src/db/spawn-host-cap.ts +29 -0
  1469. package/src/db/spawn-in-flight-count.ts +37 -0
  1470. package/src/db/spawn-in-flight.ts +15 -0
  1471. package/src/db/spawn-process-evidence.ts +68 -0
  1472. package/src/db/spawn-project-target.ts +57 -0
  1473. package/src/db/spawn-registration-confirmed-backfill.ts +71 -0
  1474. package/src/db/spawn-request-id-migration.ts +36 -0
  1475. package/src/db/spawn-request-id.ts +35 -0
  1476. package/src/db/spawn-request-reuse.ts +28 -0
  1477. package/src/db/spawn-tree-cleanup.ts +89 -0
  1478. package/src/db/spawn-tree.ts +29 -0
  1479. package/src/db/sql-audit-indexes.ts +77 -0
  1480. package/src/db/stalled-message-delivery.ts +52 -0
  1481. package/src/db/startup-write-lock.ts +36 -0
  1482. package/src/db/stats-async.ts +235 -0
  1483. package/src/db/stats-health-read-model.ts +225 -0
  1484. package/src/db/stats-read-ops.ts +25 -0
  1485. package/src/db/stats.ts +633 -0
  1486. package/src/db/target-host.ts +25 -0
  1487. package/src/db/task-async.ts +165 -0
  1488. package/src/db/task-comment-through-async.ts +14 -0
  1489. package/src/db/task-comment-through-read-ops.ts +4 -0
  1490. package/src/db/task-comment-through-write-ops.ts +7 -0
  1491. package/src/db/task-comment-through.ts +123 -0
  1492. package/src/db/task-core.ts +44 -0
  1493. package/src/db/task-deliverables-async.ts +60 -0
  1494. package/src/db/task-deliverables-read-ops.ts +4 -0
  1495. package/src/db/task-deliverables-write-ops.ts +37 -0
  1496. package/src/db/task-deliverables.ts +387 -0
  1497. package/src/db/task-dependency-cycle.worker.ts +43 -0
  1498. package/src/db/task-detail-projection.ts +91 -0
  1499. package/src/db/task-entity-async.ts +252 -0
  1500. package/src/db/task-entity-read-ops.ts +51 -0
  1501. package/src/db/task-entity-write-ops.ts +197 -0
  1502. package/src/db/task-entity.ts +1143 -0
  1503. package/src/db/task-execution.ts +20 -0
  1504. package/src/db/task-issue-relation.ts +23 -0
  1505. package/src/db/task-issue-source.ts +46 -0
  1506. package/src/db/task-land-withdraw-async.ts +10 -0
  1507. package/src/db/task-land-withdraw-read-ops.ts +13 -0
  1508. package/src/db/task-land-withdraw-read.ts +47 -0
  1509. package/src/db/task-land-withdraw-write-ops.ts +31 -0
  1510. package/src/db/task-land-withdraw.ts +423 -0
  1511. package/src/db/task-list.ts +113 -0
  1512. package/src/db/task-maintenance.ts +25 -0
  1513. package/src/db/task-memory-async.ts +19 -0
  1514. package/src/db/task-memory-read-ops.ts +9 -0
  1515. package/src/db/task-memory-write-ops.ts +23 -0
  1516. package/src/db/task-memory.ts +170 -0
  1517. package/src/db/task-owner.ts +126 -0
  1518. package/src/db/task-read-ops.ts +44 -0
  1519. package/src/db/task-review-hold-async.ts +20 -0
  1520. package/src/db/task-review-hold-delivery.ts +58 -0
  1521. package/src/db/task-review-hold-write-ops.ts +26 -0
  1522. package/src/db/task-review-hold.ts +615 -0
  1523. package/src/db/task-state-reconcile-async.ts +12 -0
  1524. package/src/db/task-state-reconcile.ts +163 -0
  1525. package/src/db/task-validation.ts +71 -0
  1526. package/src/db/task-write-ops.ts +145 -0
  1527. package/src/db/tasks.ts +528 -0
  1528. package/src/db/team-epics.ts +37 -0
  1529. package/src/db/team-idle.ts +35 -0
  1530. package/src/db/team-project.ts +69 -0
  1531. package/src/db/team-spawn-delegation-read.ts +36 -0
  1532. package/src/db/team-spawn-delegation.ts +49 -0
  1533. package/src/db/teams-async.ts +58 -0
  1534. package/src/db/teams-read-ops.ts +27 -0
  1535. package/src/db/teams-write-ops.ts +17 -0
  1536. package/src/db/teams.ts +504 -0
  1537. package/src/db/terminal-events.ts +113 -0
  1538. package/src/db/timer-async.ts +523 -0
  1539. package/src/db/timer-cutover-core.ts +545 -0
  1540. package/src/db/timer-cutover-report-read-ops.ts +211 -0
  1541. package/src/db/timer-cutover-write-ops.ts +275 -0
  1542. package/src/db/timer-ingress-payload.ts +160 -0
  1543. package/src/db/timer-ingress-read-ops.ts +39 -0
  1544. package/src/db/timer-ingress-request-keys.ts +282 -0
  1545. package/src/db/timer-ingress-write-ops.ts +145 -0
  1546. package/src/db/timer-ingress.ts +515 -0
  1547. package/src/db/timer-message-cutover.ts +322 -0
  1548. package/src/db/timer-message-fire-deadletter.ts +136 -0
  1549. package/src/db/timer-message-fire.ts +209 -0
  1550. package/src/db/timer-message-flip-chaos-worker.ts +89 -0
  1551. package/src/db/timer-message-flip-consistency.ts +147 -0
  1552. package/src/db/timer-message-flip.ts +676 -0
  1553. package/src/db/timer-message-participant.ts +138 -0
  1554. package/src/db/timer-migrate-input.ts +92 -0
  1555. package/src/db/timer-operator-async.ts +177 -0
  1556. package/src/db/timer-operator-read-ops.ts +21 -0
  1557. package/src/db/timer-operator-stage10.ts +119 -0
  1558. package/src/db/timer-operator-write-ops.ts +102 -0
  1559. package/src/db/timer-operator.ts +393 -0
  1560. package/src/db/timer-read-ops.ts +147 -0
  1561. package/src/db/timer-transfer-errors.ts +10 -0
  1562. package/src/db/timer-transfer-write-ops.ts +39 -0
  1563. package/src/db/timer-verifier-schema.ts +29 -0
  1564. package/src/db/timer-verifier.ts +379 -0
  1565. package/src/db/timer-write-ops.ts +277 -0
  1566. package/src/db/token-db-write-ops.ts +92 -0
  1567. package/src/db/token-standing.ts +84 -0
  1568. package/src/db/token-usage-read-ops.ts +8 -0
  1569. package/src/db/token-usage-write-ops.ts +35 -0
  1570. package/src/db/token-usage.ts +338 -0
  1571. package/src/db/tool-groups-empty-migration.ts +59 -0
  1572. package/src/db/urgent-intake.ts +30 -0
  1573. package/src/db/user-invites.ts +107 -0
  1574. package/src/db/user-settings-read-ops.ts +19 -0
  1575. package/src/db/user-settings-write-ops.ts +42 -0
  1576. package/src/db/users.ts +173 -0
  1577. package/src/db/vault-backup.ts +59 -0
  1578. package/src/db/vault-expiry.ts +71 -0
  1579. package/src/db/vault-health.ts +99 -0
  1580. package/src/db/vault-token-launch.ts +77 -0
  1581. package/src/db/vault-token-ops.ts +14 -0
  1582. package/src/db/vault-tokens.ts +101 -0
  1583. package/src/db/viewer-scope.ts +117 -0
  1584. package/src/db/wal-checkpointer-worker.ts +48 -0
  1585. package/src/db/wal-checkpointer.ts +107 -0
  1586. package/src/db/wal-index.ts +53 -0
  1587. package/src/db/wal-live-log.ts +68 -0
  1588. package/src/db/wal-reclaim-async.ts +45 -0
  1589. package/src/db/wal-reclaim.ts +140 -0
  1590. package/src/db/web-tool-call-ops.ts +15 -0
  1591. package/src/db/web-tool-calls.ts +87 -0
  1592. package/src/db/withdraw-land-error.ts +18 -0
  1593. package/src/db/work-evidence.ts +43 -0
  1594. package/src/db/workflow-budget.ts +44 -0
  1595. package/src/db/workflow-contact.ts +173 -0
  1596. package/src/db/workflow-execution.ts +10 -0
  1597. package/src/db/workflow-journal-async.ts +64 -0
  1598. package/src/db/workflow-journal-prune.ts +71 -0
  1599. package/src/db/workflow-journal-read-ops.ts +21 -0
  1600. package/src/db/workflow-journal-schema.ts +9 -0
  1601. package/src/db/workflow-journal-write-ops.ts +33 -0
  1602. package/src/db/workflow-journal.ts +324 -0
  1603. package/src/db/workflow-spawn-quota.ts +57 -0
  1604. package/src/db/workflow-stats-read-ops.ts +177 -0
  1605. package/src/db/workflow-step-tasks.ts +74 -0
  1606. package/src/db/workflow-task-read-ops.ts +187 -0
  1607. package/src/db/workspace-land-state.ts +65 -0
  1608. package/src/db/workspace-merge-hold.ts +28 -0
  1609. package/src/db/workspace-persistence.ts +77 -0
  1610. package/src/db/workspace-rekey-write-ops.ts +11 -0
  1611. package/src/db/workspace-rekey.ts +148 -0
  1612. package/src/db/workspace-steward-cancel.ts +85 -0
  1613. package/src/db/workspace-steward-fence.ts +30 -0
  1614. package/src/db/workspace-write-ops.ts +26 -0
  1615. package/src/db/workspace-writes-async.ts +46 -0
  1616. package/src/db/workspace-writes.ts +196 -0
  1617. package/src/db/workspaces.ts +617 -0
  1618. package/src/db/write-ops.ts +594 -0
  1619. package/src/db/writer-drain.ts +27 -0
  1620. package/src/db/writer-fault-seam.ts +101 -0
  1621. package/src/db/writer-gateway.ts +840 -0
  1622. package/src/db/writer-ledger.ts +56 -0
  1623. package/src/db.ts +4 -0
  1624. package/src/deploy-executor.ts +139 -0
  1625. package/src/dev.ts +541 -0
  1626. package/src/dispatch-availability.ts +55 -0
  1627. package/src/dispatch-match.ts +21 -0
  1628. package/src/ephemeral/host-landing-slots-proof-worker.ts +45 -0
  1629. package/src/ephemeral/index.ts +58 -0
  1630. package/src/ephemeral/instance.ts +832 -0
  1631. package/src/ephemeral/landing-ingress-proof-worker.ts +30 -0
  1632. package/src/ephemeral/ports.ts +40 -0
  1633. package/src/ephemeral/profile.ts +323 -0
  1634. package/src/ephemeral/rehearsal-stamps.ts +149 -0
  1635. package/src/ephemeral/rehearsal.ts +213 -0
  1636. package/src/ephemeral/snapshot-kernel.ts +41 -0
  1637. package/src/ephemeral/snapshot.ts +753 -0
  1638. package/src/ephemeral/sweep.ts +40 -0
  1639. package/src/event-loop-lag.ts +584 -0
  1640. package/src/event-loop-yield.ts +27 -0
  1641. package/src/events.ts +140 -0
  1642. package/src/execution-mode.ts +63 -0
  1643. package/src/fleet-convergence.ts +123 -0
  1644. package/src/gate-resolver.ts +151 -0
  1645. package/src/gate-run-capture.ts +71 -0
  1646. package/src/git-sha.ts +58 -0
  1647. package/src/guides.ts +73 -0
  1648. package/src/host/capacity.ts +79 -0
  1649. package/src/host/gate-capacity-alert.ts +90 -0
  1650. package/src/host/identity.ts +128 -0
  1651. package/src/host/presentation.ts +234 -0
  1652. package/src/host/pressure-details.ts +89 -0
  1653. package/src/host/pressure.ts +216 -0
  1654. package/src/host/state.ts +132 -0
  1655. package/src/host/utilization-buffer.ts +71 -0
  1656. package/src/host-awareness.ts +57 -0
  1657. package/src/host-identity.ts +39 -0
  1658. package/src/host-provider-enablement.ts +75 -0
  1659. package/src/host-provider-store.ts +102 -0
  1660. package/src/host-tools.ts +39 -0
  1661. package/src/http-body.ts +49 -0
  1662. package/src/http-compression.ts +16 -0
  1663. package/src/hub-metrics-report.ts +67 -0
  1664. package/src/hub-metrics.ts +166 -0
  1665. package/src/idle-digest-config.ts +40 -0
  1666. package/src/idle-self-care.ts +58 -0
  1667. package/src/index.ts +35 -0
  1668. package/src/injection-sweep-pacing.ts +24 -0
  1669. package/src/insights-async.ts +16 -0
  1670. package/src/insights-db.ts +188 -0
  1671. package/src/internal-spawn-model.ts +18 -0
  1672. package/src/invite-link.ts +11 -0
  1673. package/src/issue-tracker/adapter.ts +58 -0
  1674. package/src/issue-tracker/github.ts +342 -0
  1675. package/src/issue-tracker/index.ts +12 -0
  1676. package/src/issue-tracker/registry.ts +26 -0
  1677. package/src/journal-preamble.ts +350 -0
  1678. package/src/kernel-correlation.ts +28 -0
  1679. package/src/land-authorization.ts +73 -0
  1680. package/src/land-block.ts +59 -0
  1681. package/src/land-failure-event-key.ts +8 -0
  1682. package/src/land-gate-failure-routing.ts +69 -0
  1683. package/src/land-gate-notifications.ts +173 -0
  1684. package/src/land-gate-queue-progress.ts +54 -0
  1685. package/src/land-gates-source.ts +126 -0
  1686. package/src/land-gates.ts +29 -0
  1687. package/src/land-lifecycle-drives.ts +15 -0
  1688. package/src/land-settle-dispatch.ts +134 -0
  1689. package/src/land-stack-depth.ts +11 -0
  1690. package/src/land-telemetry.ts +40 -0
  1691. package/src/landing-base-ref.ts +3 -0
  1692. package/src/landing-host-safety.ts +38 -0
  1693. package/src/landing-lane-key.ts +74 -0
  1694. package/src/launch-mode-support.ts +11 -0
  1695. package/src/launch-mode.ts +58 -0
  1696. package/src/legacy-landing.test-fixture.ts +56 -0
  1697. package/src/lifecycle-context-pressure.ts +134 -0
  1698. package/src/lifecycle-manager.ts +831 -0
  1699. package/src/lifecycle-signal-registry.ts +87 -0
  1700. package/src/live-runs-section.ts +38 -0
  1701. package/src/loop-block-attribution.ts +442 -0
  1702. package/src/loop-block-regression-alarm.ts +156 -0
  1703. package/src/loop-task-stamps.ts +62 -0
  1704. package/src/main-thread-clock.ts +95 -0
  1705. package/src/maintenance/agent-identity-archive-job.ts +15 -0
  1706. package/src/maintenance/artifact-checkout-gc-job.ts +14 -0
  1707. package/src/maintenance/artifact-checkout-gc.ts +33 -0
  1708. package/src/maintenance/artifact-sweep.ts +23 -0
  1709. package/src/maintenance/breaker.ts +200 -0
  1710. package/src/maintenance/cd-watcher.ts +176 -0
  1711. package/src/maintenance/checkout-refresh.ts +83 -0
  1712. package/src/maintenance/ci-monitor.ts +14 -0
  1713. package/src/maintenance/claude-api-budget-job.ts +16 -0
  1714. package/src/maintenance/constants.ts +134 -0
  1715. package/src/maintenance/continuation-archive-search-job.ts +27 -0
  1716. package/src/maintenance/critical-job-watchdog.ts +252 -0
  1717. package/src/maintenance/db-planner-stats-job.ts +19 -0
  1718. package/src/maintenance/db-wal-reclaim-job.ts +82 -0
  1719. package/src/maintenance/events.ts +28 -0
  1720. package/src/maintenance/gate-capacity-sample-job.ts +16 -0
  1721. package/src/maintenance/index.ts +10 -0
  1722. package/src/maintenance/jobs.ts +857 -0
  1723. package/src/maintenance/long-running-work.ts +41 -0
  1724. package/src/maintenance/orphaned-sessions.ts +126 -0
  1725. package/src/maintenance/pauses.ts +174 -0
  1726. package/src/maintenance/provider-secret-scrub-job.ts +16 -0
  1727. package/src/maintenance/queued-message-expiration.ts +23 -0
  1728. package/src/maintenance/red-main-controller-job.ts +22 -0
  1729. package/src/maintenance/reply-obligation-parity-job.ts +27 -0
  1730. package/src/maintenance/restart-epoch-hold-health.ts +62 -0
  1731. package/src/maintenance/run-registry.ts +194 -0
  1732. package/src/maintenance/scheduler.ts +778 -0
  1733. package/src/maintenance/service-access-job.ts +31 -0
  1734. package/src/maintenance/shipping-stats-rollup-job.ts +23 -0
  1735. package/src/maintenance/snapshot-ledger-prune-job.ts +17 -0
  1736. package/src/maintenance/stalled-delivery-pager.ts +125 -0
  1737. package/src/maintenance/steward-handback.ts +11 -0
  1738. package/src/maintenance/task-state-reconcile-job.ts +22 -0
  1739. package/src/maintenance/teams.ts +426 -0
  1740. package/src/maintenance/types.ts +124 -0
  1741. package/src/maintenance/vault-backup-job.ts +34 -0
  1742. package/src/maintenance/vault-expiry-job.ts +29 -0
  1743. package/src/maintenance/web-tool-call-prune-job.ts +13 -0
  1744. package/src/maintenance/workflow-backstop-job.ts +12 -0
  1745. package/src/maintenance/workflow-journal-prune-job.ts +29 -0
  1746. package/src/maintenance/workspaces.ts +784 -0
  1747. package/src/maintenance.ts +1 -0
  1748. package/src/managed-policy-escalation.ts +123 -0
  1749. package/src/managed-policy.ts +236 -0
  1750. package/src/managed-provider-gate.ts +27 -0
  1751. package/src/managed-spawn-reservation.ts +23 -0
  1752. package/src/markdown-frontmatter.ts +14 -0
  1753. package/src/mcp/activity-output.ts +57 -0
  1754. package/src/mcp/artifact-upload.ts +53 -0
  1755. package/src/mcp/context-output.ts +73 -0
  1756. package/src/mcp/dispatch-shape-schema.ts +13 -0
  1757. package/src/mcp/guides.ts +33 -0
  1758. package/src/mcp/http.ts +27 -0
  1759. package/src/mcp/identity-projection.ts +121 -0
  1760. package/src/mcp/identity.ts +235 -0
  1761. package/src/mcp/index.ts +355 -0
  1762. package/src/mcp/issue-selector-schema.ts +12 -0
  1763. package/src/mcp/message-read.ts +87 -0
  1764. package/src/mcp/output-descriptions.ts +72 -0
  1765. package/src/mcp/output-levels.ts +71 -0
  1766. package/src/mcp/output-projection.ts +88 -0
  1767. package/src/mcp/plan-presentation.ts +166 -0
  1768. package/src/mcp/presentation-values.ts +11 -0
  1769. package/src/mcp/presentation.ts +653 -0
  1770. package/src/mcp/project-entry-search-schema.ts +7 -0
  1771. package/src/mcp/prompts.ts +36 -0
  1772. package/src/mcp/runtime-output.ts +84 -0
  1773. package/src/mcp/schema-budget.ts +28 -0
  1774. package/src/mcp/self-care-visibility.ts +23 -0
  1775. package/src/mcp/service-access.ts +18 -0
  1776. package/src/mcp/spawn-targets-matrix.ts +68 -0
  1777. package/src/mcp/spawn-targets.test-fixture.ts +21 -0
  1778. package/src/mcp/task-validation-presentation.ts +19 -0
  1779. package/src/mcp/tool-generation.ts +8 -0
  1780. package/src/mcp/tool-groups.ts +136 -0
  1781. package/src/mcp/tools-artifacts.ts +82 -0
  1782. package/src/mcp/tools-messaging.ts +541 -0
  1783. package/src/mcp/tools-permission.ts +88 -0
  1784. package/src/mcp/tools-run.ts +73 -0
  1785. package/src/mcp/tools-scheduler.ts +156 -0
  1786. package/src/mcp/tools-spawn.ts +418 -0
  1787. package/src/mcp/tools-web-tool-calls.ts +28 -0
  1788. package/src/mcp/tools-workspace.ts +260 -0
  1789. package/src/mcp/types.ts +68 -0
  1790. package/src/mcp/validation.ts +66 -0
  1791. package/src/mcp-agent-action.ts +96 -0
  1792. package/src/mcp-agent-keep.ts +37 -0
  1793. package/src/mcp-backlog-tools.ts +137 -0
  1794. package/src/mcp-blackboard-tools.ts +131 -0
  1795. package/src/mcp-channel-binding-tools.ts +27 -0
  1796. package/src/mcp-claude-api-budget.ts +35 -0
  1797. package/src/mcp-codex-reset.ts +43 -0
  1798. package/src/mcp-decision-tools.ts +96 -0
  1799. package/src/mcp-dispatch-tools.ts +142 -0
  1800. package/src/mcp-egress-tools.ts +168 -0
  1801. package/src/mcp-errors.ts +7 -0
  1802. package/src/mcp-host-tools.ts +61 -0
  1803. package/src/mcp-interrupt-agent.ts +47 -0
  1804. package/src/mcp-issue-activity-tools.ts +114 -0
  1805. package/src/mcp-issue-association-tools.ts +103 -0
  1806. package/src/mcp-issue-lifecycle-tools.ts +49 -0
  1807. package/src/mcp-issue-ref-tools.ts +214 -0
  1808. package/src/mcp-maintenance-tools.ts +113 -0
  1809. package/src/mcp-merge-tools.ts +66 -0
  1810. package/src/mcp-notification-subscription-tools.ts +297 -0
  1811. package/src/mcp-output-levels.test-fixture.ts +95 -0
  1812. package/src/mcp-plan-tools.ts +347 -0
  1813. package/src/mcp-profile-trust-tools.ts +47 -0
  1814. package/src/mcp-project-journal-tools.ts +160 -0
  1815. package/src/mcp-project-tools.ts +420 -0
  1816. package/src/mcp-provider-catalog.ts +9 -0
  1817. package/src/mcp-release-tools.ts +33 -0
  1818. package/src/mcp-routing-policy-tools.ts +35 -0
  1819. package/src/mcp-secrets-tools.ts +87 -0
  1820. package/src/mcp-task-deliver-tools.ts +166 -0
  1821. package/src/mcp-task-land-withdraw-tools.ts +49 -0
  1822. package/src/mcp-task-memory-tools.ts +119 -0
  1823. package/src/mcp-task-review-hold-tools.ts +57 -0
  1824. package/src/mcp-task-tools.ts +342 -0
  1825. package/src/mcp-task-validation-tools.ts +30 -0
  1826. package/src/mcp-task-weave-tools.ts +63 -0
  1827. package/src/mcp-team-template-tools.ts +141 -0
  1828. package/src/mcp-team-tools.ts +197 -0
  1829. package/src/mcp-tool-allowlist.ts +88 -0
  1830. package/src/mcp-workflow-tools.ts +158 -0
  1831. package/src/mcp.ts +1 -0
  1832. package/src/memory-admission-rank.ts +55 -0
  1833. package/src/memory-area-injection.ts +216 -0
  1834. package/src/memory-boundary-capture.ts +206 -0
  1835. package/src/memory-entry-safety.ts +28 -0
  1836. package/src/memory-inject-filter.ts +190 -0
  1837. package/src/memory-injection.ts +954 -0
  1838. package/src/memory-preamble-admission.ts +158 -0
  1839. package/src/memory-preamble-async.ts +13 -0
  1840. package/src/memory-preamble.ts +1142 -0
  1841. package/src/memory-retirement.ts +11 -0
  1842. package/src/memory-seam.ts +273 -0
  1843. package/src/memory-tokens.ts +91 -0
  1844. package/src/merge-drain.ts +101 -0
  1845. package/src/merge-pause-maintenance.ts +19 -0
  1846. package/src/message-visibility.ts +50 -0
  1847. package/src/messaging-policy.ts +94 -0
  1848. package/src/native-memory.ts +59 -0
  1849. package/src/notification-prefs.ts +25 -0
  1850. package/src/notification-role-policy.ts +14 -0
  1851. package/src/notification-router.ts +329 -0
  1852. package/src/notification-rules.ts +390 -0
  1853. package/src/notification-settings-store.ts +47 -0
  1854. package/src/notification-settings.ts +166 -0
  1855. package/src/notification-subscription-rules.ts +11 -0
  1856. package/src/notification-types.ts +312 -0
  1857. package/src/notify.ts +55 -0
  1858. package/src/observed-reset-boundary.ts +23 -0
  1859. package/src/observed-reset-refresh.ts +21 -0
  1860. package/src/operator-alarm.ts +41 -0
  1861. package/src/operator-decisions-section.ts +29 -0
  1862. package/src/orchestrator-lookup.ts +29 -0
  1863. package/src/orchestrator-self-report-authz.ts +34 -0
  1864. package/src/package-pack.ts +246 -0
  1865. package/src/post-bind-startup.ts +58 -0
  1866. package/src/process-guard.ts +31 -0
  1867. package/src/profile-cells.ts +305 -0
  1868. package/src/profile-effective-survey.ts +121 -0
  1869. package/src/profile-host-sources.ts +73 -0
  1870. package/src/profile-instruction-blocks.ts +11 -0
  1871. package/src/profile-project-validation.ts +23 -0
  1872. package/src/profile-provider-options.ts +59 -0
  1873. package/src/profile-role-templates.ts +26 -0
  1874. package/src/profile-workflow-policy.ts +14 -0
  1875. package/src/project-claudemd-sweep.ts +176 -0
  1876. package/src/project-file-source.ts +54 -0
  1877. package/src/project-ingest.ts +195 -0
  1878. package/src/project-instructions.ts +700 -0
  1879. package/src/project-mcp.ts +18 -0
  1880. package/src/project-role-assets.ts +109 -0
  1881. package/src/project-roles-validate.ts +53 -0
  1882. package/src/project-roles.ts +364 -0
  1883. package/src/project-settings.ts +5 -0
  1884. package/src/project-skills.ts +5 -0
  1885. package/src/project-toolchain.ts +58 -0
  1886. package/src/project-trust-fingerprint.ts +174 -0
  1887. package/src/project-trust.ts +262 -0
  1888. package/src/project-workflows.ts +185 -0
  1889. package/src/prompt-resolver.ts +697 -0
  1890. package/src/prompt-template-fallback.ts +15 -0
  1891. package/src/prompt-version-errors.ts +13 -0
  1892. package/src/provider-catalog-store.ts +393 -0
  1893. package/src/provider-config-store.ts +308 -0
  1894. package/src/provider-enablement.ts +36 -0
  1895. package/src/provider-home-gc.ts +58 -0
  1896. package/src/provider-model-seed.ts +18 -0
  1897. package/src/provider-quota-async.ts +152 -0
  1898. package/src/provider-quota-config-store.ts +60 -0
  1899. package/src/provider-secrets.test-fixture.ts +34 -0
  1900. package/src/provider-state.ts +93 -0
  1901. package/src/provider-timeline-event.ts +76 -0
  1902. package/src/quota-advisory.ts +359 -0
  1903. package/src/quota-band-delivery.ts +13 -0
  1904. package/src/quota-band-projection.ts +149 -0
  1905. package/src/quota-band-transition.ts +316 -0
  1906. package/src/quota-pacing.ts +46 -0
  1907. package/src/quota-threshold-config.ts +46 -0
  1908. package/src/quota.ts +61 -0
  1909. package/src/ratchet-files.ts +202 -0
  1910. package/src/recipe-async.ts +50 -0
  1911. package/src/recipe-db.ts +260 -0
  1912. package/src/recipe-loader.ts +132 -0
  1913. package/src/recipe-runner.ts +259 -0
  1914. package/src/recipe-validator.ts +107 -0
  1915. package/src/relay-event-drain.ts +39 -0
  1916. package/src/relay-host-locality.ts +20 -0
  1917. package/src/relay-run-lease.ts +17 -0
  1918. package/src/repo-config-source.ts +209 -0
  1919. package/src/report-verbosity.ts +5 -0
  1920. package/src/restart-epoch-deploy-hold.ts +221 -0
  1921. package/src/retention-config-store.ts +32 -0
  1922. package/src/retention-config.ts +70 -0
  1923. package/src/reviewer-pipeline.ts +238 -0
  1924. package/src/routes/_route.ts +70 -0
  1925. package/src/routes/_shared.ts +513 -0
  1926. package/src/routes/activity.ts +70 -0
  1927. package/src/routes/agent-effort.ts +69 -0
  1928. package/src/routes/agent-keep.ts +27 -0
  1929. package/src/routes/agent-profiles.ts +169 -0
  1930. package/src/routes/agent-reporting.ts +19 -0
  1931. package/src/routes/agent-self-effort.ts +51 -0
  1932. package/src/routes/agent-sessions.ts +650 -0
  1933. package/src/routes/agent-sharing.ts +23 -0
  1934. package/src/routes/agents-spawn.ts +258 -0
  1935. package/src/routes/agents.ts +452 -0
  1936. package/src/routes/artifacts.ts +340 -0
  1937. package/src/routes/auth.ts +123 -0
  1938. package/src/routes/authority-audit.ts +14 -0
  1939. package/src/routes/automations.ts +83 -0
  1940. package/src/routes/backlog.ts +112 -0
  1941. package/src/routes/blackboard.ts +54 -0
  1942. package/src/routes/browser.ts +73 -0
  1943. package/src/routes/channel-binding-delete.ts +21 -0
  1944. package/src/routes/channel-output.ts +17 -0
  1945. package/src/routes/claude-api-budget.ts +65 -0
  1946. package/src/routes/commands-listing.ts +50 -0
  1947. package/src/routes/commands.ts +586 -0
  1948. package/src/routes/config.ts +75 -0
  1949. package/src/routes/connectors.ts +108 -0
  1950. package/src/routes/context-resets.ts +35 -0
  1951. package/src/routes/continuation-archives.ts +37 -0
  1952. package/src/routes/coordinator-teams.ts +14 -0
  1953. package/src/routes/decisions.ts +82 -0
  1954. package/src/routes/deploys.ts +15 -0
  1955. package/src/routes/fleet-convergence.ts +5 -0
  1956. package/src/routes/guides.ts +13 -0
  1957. package/src/routes/host-providers.ts +73 -0
  1958. package/src/routes/host-resource-control.ts +45 -0
  1959. package/src/routes/host-secret-files.ts +38 -0
  1960. package/src/routes/hosts.ts +240 -0
  1961. package/src/routes/inbox.ts +151 -0
  1962. package/src/routes/index.ts +614 -0
  1963. package/src/routes/insights.ts +86 -0
  1964. package/src/routes/integrations.ts +636 -0
  1965. package/src/routes/issue-activity.ts +78 -0
  1966. package/src/routes/issue-associations.ts +76 -0
  1967. package/src/routes/issue-lifecycle.ts +34 -0
  1968. package/src/routes/issue-refs.ts +163 -0
  1969. package/src/routes/kernel-timers-operator.ts +57 -0
  1970. package/src/routes/memory.ts +25 -0
  1971. package/src/routes/merges.ts +109 -0
  1972. package/src/routes/message-viewer.ts +4 -0
  1973. package/src/routes/messages.ts +621 -0
  1974. package/src/routes/notifications.ts +36 -0
  1975. package/src/routes/orchestrator-bootstrap.ts +101 -0
  1976. package/src/routes/orchestrator-host-registration.ts +125 -0
  1977. package/src/routes/orchestrator-host-utilization.ts +255 -0
  1978. package/src/routes/orchestrator-proxy.ts +174 -0
  1979. package/src/routes/orchestrator.ts +699 -0
  1980. package/src/routes/pairs.ts +214 -0
  1981. package/src/routes/plans.ts +98 -0
  1982. package/src/routes/project-onboarding.ts +56 -0
  1983. package/src/routes/project-trust.ts +73 -0
  1984. package/src/routes/projects.ts +296 -0
  1985. package/src/routes/prompt-templates.ts +106 -0
  1986. package/src/routes/provider-config.ts +232 -0
  1987. package/src/routes/provider-quota-config.ts +48 -0
  1988. package/src/routes/provider-quotas.ts +312 -0
  1989. package/src/routes/provisioning-registry.ts +192 -0
  1990. package/src/routes/recipes.ts +129 -0
  1991. package/src/routes/restart-epochs.ts +98 -0
  1992. package/src/routes/routing-policy.ts +30 -0
  1993. package/src/routes/run-command.ts +25 -0
  1994. package/src/routes/secrets-backup.ts +53 -0
  1995. package/src/routes/secrets-import.ts +32 -0
  1996. package/src/routes/secrets-page.ts +98 -0
  1997. package/src/routes/secrets-vault.ts +121 -0
  1998. package/src/routes/secrets.ts +165 -0
  1999. package/src/routes/service-access.ts +57 -0
  2000. package/src/routes/settings.ts +191 -0
  2001. package/src/routes/shipping.ts +56 -0
  2002. package/src/routes/spawn-policy.ts +299 -0
  2003. package/src/routes/spec.ts +58 -0
  2004. package/src/routes/sse.ts +18 -0
  2005. package/src/routes/stats.ts +159 -0
  2006. package/src/routes/steward.ts +49 -0
  2007. package/src/routes/task-graph.ts +30 -0
  2008. package/src/routes/task-http.ts +27 -0
  2009. package/src/routes/task-issues.ts +81 -0
  2010. package/src/routes/task-reads.ts +139 -0
  2011. package/src/routes/task-validation.ts +22 -0
  2012. package/src/routes/tasks.ts +553 -0
  2013. package/src/routes/team-templates.ts +65 -0
  2014. package/src/routes/teams-config.ts +15 -0
  2015. package/src/routes/teams.ts +141 -0
  2016. package/src/routes/token-usage.ts +167 -0
  2017. package/src/routes/tokens.ts +393 -0
  2018. package/src/routes/users.ts +248 -0
  2019. package/src/routes/viewer-read.ts +27 -0
  2020. package/src/routes/web-tool-calls.ts +38 -0
  2021. package/src/routes/workflows.ts +142 -0
  2022. package/src/routes/workspaces.ts +642 -0
  2023. package/src/routes.ts +3 -0
  2024. package/src/routing-eligibility.ts +42 -0
  2025. package/src/routing-model-aliases.ts +21 -0
  2026. package/src/routing-policy-normalize.ts +412 -0
  2027. package/src/routing-policy-push.ts +154 -0
  2028. package/src/routing-policy-service.ts +19 -0
  2029. package/src/routing-policy-store.ts +16 -0
  2030. package/src/routing-preferences.ts +82 -0
  2031. package/src/routing-step-defaults.ts +31 -0
  2032. package/src/runtime-grant.ts +164 -0
  2033. package/src/runtime-prefix.ts +8 -0
  2034. package/src/runtime-tokens.ts +395 -0
  2035. package/src/search-query.ts +10 -0
  2036. package/src/secret-keys.ts +24 -0
  2037. package/src/secrets-broker/config.ts +53 -0
  2038. package/src/secrets-broker/error.ts +8 -0
  2039. package/src/secrets-broker/infisical.ts +259 -0
  2040. package/src/secrets-broker/reader-infisical.ts +41 -0
  2041. package/src/secrets-broker/reader.ts +101 -0
  2042. package/src/secrets-broker/service.ts +242 -0
  2043. package/src/secrets-broker/tool-credentials.ts +9 -0
  2044. package/src/secrets-vault/backend-conformance.ts +26 -0
  2045. package/src/secrets-vault/backend.ts +102 -0
  2046. package/src/secrets-vault/backup.ts +103 -0
  2047. package/src/secrets-vault/config.ts +7 -0
  2048. package/src/secrets-vault/expiry.ts +10 -0
  2049. package/src/secrets-vault/identity.ts +27 -0
  2050. package/src/secrets-vault/import.ts +90 -0
  2051. package/src/secrets-vault/key-files.ts +91 -0
  2052. package/src/secrets-vault/keys.ts +79 -0
  2053. package/src/secrets-vault/metadata.ts +51 -0
  2054. package/src/secrets-vault/provider-env.ts +25 -0
  2055. package/src/secrets-vault/resolve.ts +101 -0
  2056. package/src/secrets-vault/restore.ts +57 -0
  2057. package/src/secrets-vault/scope.ts +25 -0
  2058. package/src/secrets-vault/service.ts +192 -0
  2059. package/src/secrets-vault/shared.ts +10 -0
  2060. package/src/security.ts +772 -0
  2061. package/src/self-effort-rule.ts +36 -0
  2062. package/src/self-resume-carry.ts +131 -0
  2063. package/src/self-resume-command.ts +24 -0
  2064. package/src/self-resume-config.ts +54 -0
  2065. package/src/self-resume-identity.ts +40 -0
  2066. package/src/self-resume-supersede.ts +19 -0
  2067. package/src/self-resume.ts +884 -0
  2068. package/src/server-background.ts +24 -0
  2069. package/src/server.ts +726 -0
  2070. package/src/service-access/config.ts +3 -0
  2071. package/src/service-access/health.ts +151 -0
  2072. package/src/service-access/host-health.ts +62 -0
  2073. package/src/service-access/host.ts +63 -0
  2074. package/src/service-access/operations.ts +21 -0
  2075. package/src/service-access/policy.ts +30 -0
  2076. package/src/service-access/probe.ts +62 -0
  2077. package/src/service-access/request-logs.ts +93 -0
  2078. package/src/service-access/scope.ts +7 -0
  2079. package/src/service-access/service.ts +185 -0
  2080. package/src/service-access/tokens.ts +174 -0
  2081. package/src/service-access/validation.ts +75 -0
  2082. package/src/service-access/vault.ts +59 -0
  2083. package/src/services/agent-action.ts +238 -0
  2084. package/src/services/agent-control-host.ts +74 -0
  2085. package/src/services/agent-effort.ts +60 -0
  2086. package/src/services/agent-hang-watchdog-job.ts +513 -0
  2087. package/src/services/agent-hang-watchdog-wiring.ts +487 -0
  2088. package/src/services/agent-hang-watchdog.ts +395 -0
  2089. package/src/services/agent-keep.ts +72 -0
  2090. package/src/services/agent-message-fanout.ts +91 -0
  2091. package/src/services/agent-outstanding-work.ts +66 -0
  2092. package/src/services/agent-reporting.ts +27 -0
  2093. package/src/services/artifact-access.ts +39 -0
  2094. package/src/services/artifact-multipart.ts +70 -0
  2095. package/src/services/artifact-path-host.ts +55 -0
  2096. package/src/services/artifact-read.ts +88 -0
  2097. package/src/services/artifact-write.ts +25 -0
  2098. package/src/services/auth-context.ts +117 -0
  2099. package/src/services/automatic-disposal.ts +33 -0
  2100. package/src/services/backlog.ts +149 -0
  2101. package/src/services/browser-inventory.ts +52 -0
  2102. package/src/services/browser-session-state.ts +41 -0
  2103. package/src/services/browser-session.ts +167 -0
  2104. package/src/services/bus-command-update.ts +84 -0
  2105. package/src/services/bus-expiration-death.ts +57 -0
  2106. package/src/services/canonical-root.ts +284 -0
  2107. package/src/services/captured-delivery-gate.ts +12 -0
  2108. package/src/services/carry-pending.ts +5 -0
  2109. package/src/services/channel-binding-delete.ts +20 -0
  2110. package/src/services/channel-suppression-receipt.ts +28 -0
  2111. package/src/services/checkout-refresh-state.ts +18 -0
  2112. package/src/services/checkout-refresh.test-fixture.ts +12 -0
  2113. package/src/services/child-work-evidence.ts +77 -0
  2114. package/src/services/claude-app.ts +91 -0
  2115. package/src/services/command-claim-rejection.ts +23 -0
  2116. package/src/services/command-host.ts +42 -0
  2117. package/src/services/coordinator-digest.ts +30 -0
  2118. package/src/services/decision-audience.ts +26 -0
  2119. package/src/services/delivery-gate-policy.ts +98 -0
  2120. package/src/services/delivery-tip.test-fixture.ts +25 -0
  2121. package/src/services/diff-gate.ts +110 -0
  2122. package/src/services/dispatch-command.ts +388 -0
  2123. package/src/services/effective-launch-driver.ts +240 -0
  2124. package/src/services/effective-launch-harness.ts +257 -0
  2125. package/src/services/errors.ts +31 -0
  2126. package/src/services/git-process.ts +176 -0
  2127. package/src/services/git-remote.ts +100 -0
  2128. package/src/services/harness-subagents.ts +12 -0
  2129. package/src/services/host-changed-paths.test-fixture.ts +134 -0
  2130. package/src/services/host-landing-placement.ts +65 -0
  2131. package/src/services/host-project-readiness.ts +49 -0
  2132. package/src/services/host-providers.ts +114 -0
  2133. package/src/services/host-utilization.ts +70 -0
  2134. package/src/services/idle-agent-digest.ts +318 -0
  2135. package/src/services/idle-epics.ts +105 -0
  2136. package/src/services/idle-self-care.ts +47 -0
  2137. package/src/services/interrupt-agent.ts +146 -0
  2138. package/src/services/isolated-workspace-placement.ts +258 -0
  2139. package/src/services/issue-activity.ts +23 -0
  2140. package/src/services/issue-associations.ts +72 -0
  2141. package/src/services/issue-completion-drain.ts +24 -0
  2142. package/src/services/issue-completion.ts +24 -0
  2143. package/src/services/issue-lifecycle-comments.ts +12 -0
  2144. package/src/services/issue-lifecycle.ts +620 -0
  2145. package/src/services/issue-refs.ts +65 -0
  2146. package/src/services/kernel-command-bridge.ts +219 -0
  2147. package/src/services/kernel-control-host.ts +78 -0
  2148. package/src/services/kernel-control-http.ts +119 -0
  2149. package/src/services/kernel-control-mcp.ts +193 -0
  2150. package/src/services/kernel-landing-command.ts +28 -0
  2151. package/src/services/kernel-landing-ingress.ts +65 -0
  2152. package/src/services/kernel-timers-authoritative-ingress.ts +48 -0
  2153. package/src/services/kernel-timers-authz.ts +229 -0
  2154. package/src/services/kernel-timers-command.ts +182 -0
  2155. package/src/services/kernel-timers-cutover-chaos-worker.ts +209 -0
  2156. package/src/services/kernel-timers-cutover.ts +39 -0
  2157. package/src/services/kernel-timers-ingress-apply.ts +39 -0
  2158. package/src/services/kernel-timers-ingress-chaos-worker.ts +312 -0
  2159. package/src/services/kernel-timers-ingress.ts +702 -0
  2160. package/src/services/kernel-timers-message-authority-chaos-worker.ts +97 -0
  2161. package/src/services/kernel-timers-migrate.ts +158 -0
  2162. package/src/services/kernel-timers-operator-chaos-worker.ts +259 -0
  2163. package/src/services/kernel-timers-operator-preflight.ts +18 -0
  2164. package/src/services/kernel-timers-operator.ts +424 -0
  2165. package/src/services/kernel-timers-outbox.ts +138 -0
  2166. package/src/services/kernel-timers-request-key-migration-chaos-worker.ts +77 -0
  2167. package/src/services/kernel-timers-stage10-operator.ts +210 -0
  2168. package/src/services/kernel-timers-stage10.ts +85 -0
  2169. package/src/services/kernel-timers-stage9.ts +57 -0
  2170. package/src/services/kernel-timers-transfer-chaos-worker.ts +118 -0
  2171. package/src/services/kernel-timers-transfer.ts +525 -0
  2172. package/src/services/kernel-timers-verifier.ts +39 -0
  2173. package/src/services/kernel-timers.ts +247 -0
  2174. package/src/services/land-boundary-settle.ts +32 -0
  2175. package/src/services/land-gate-placement.ts +60 -0
  2176. package/src/services/land-issue-relations.ts +46 -0
  2177. package/src/services/land-restart-retry.ts +77 -0
  2178. package/src/services/landed-ancestry.ts +417 -0
  2179. package/src/services/landed-task-attribution.ts +14 -0
  2180. package/src/services/landing-terminal-report.ts +119 -0
  2181. package/src/services/legacy-landing-backfill.ts +159 -0
  2182. package/src/services/legacy-landing-host.ts +291 -0
  2183. package/src/services/legacy-landing-publication.ts +35 -0
  2184. package/src/services/legacy-landing-recovery.ts +111 -0
  2185. package/src/services/macos-privacy.ts +34 -0
  2186. package/src/services/managed-running.ts +189 -0
  2187. package/src/services/memory-areas.ts +172 -0
  2188. package/src/services/memory-identity.ts +162 -0
  2189. package/src/services/merge-pause.ts +37 -0
  2190. package/src/services/message-delivery-actions.ts +11 -0
  2191. package/src/services/operator-decisions.ts +260 -0
  2192. package/src/services/orchestrator-landing-recovery.ts +55 -0
  2193. package/src/services/orchestrator-registration-recovery.ts +12 -0
  2194. package/src/services/orchestrator-upgrade.ts +83 -0
  2195. package/src/services/parity-harness.ts +141 -0
  2196. package/src/services/permission-decision.ts +129 -0
  2197. package/src/services/plan-ci-recovery.ts +76 -0
  2198. package/src/services/plan-conformance.ts +105 -0
  2199. package/src/services/plan-dispatch-policy.ts +79 -0
  2200. package/src/services/plan-dispatch.ts +372 -0
  2201. package/src/services/plan-external-view.ts +7 -0
  2202. package/src/services/plan-frontier.ts +34 -0
  2203. package/src/services/plan-graph.ts +703 -0
  2204. package/src/services/plan-import.ts +66 -0
  2205. package/src/services/plan-live-bindings.ts +139 -0
  2206. package/src/services/plan-task-create.ts +80 -0
  2207. package/src/services/plan-terminal-refs.ts +83 -0
  2208. package/src/services/plan-wake-digest.ts +88 -0
  2209. package/src/services/plan-wake-policy.ts +12 -0
  2210. package/src/services/profile-trust.ts +54 -0
  2211. package/src/services/project-checkout-binding.ts +65 -0
  2212. package/src/services/project-checkout-enrollment.ts +27 -0
  2213. package/src/services/project-cwd.ts +41 -0
  2214. package/src/services/project-onboarding.ts +165 -0
  2215. package/src/services/project-repo-create.ts +27 -0
  2216. package/src/services/project-role.test-fixture.ts +74 -0
  2217. package/src/services/project.ts +191 -0
  2218. package/src/services/prompt-templates.ts +46 -0
  2219. package/src/services/prompt-version-writer.ts +42 -0
  2220. package/src/services/provider-catalog.ts +7 -0
  2221. package/src/services/provider-hold-flap.ts +130 -0
  2222. package/src/services/provider-hold-nudge.ts +191 -0
  2223. package/src/services/provider-hold-record.ts +137 -0
  2224. package/src/services/provider-state-audit.ts +214 -0
  2225. package/src/services/provisioning-harness/analyze.ts +285 -0
  2226. package/src/services/provisioning-harness/budget-baseline.json +391 -0
  2227. package/src/services/provisioning-harness/capture.ts +197 -0
  2228. package/src/services/provisioning-harness/config.ts +55 -0
  2229. package/src/services/provisioning-harness/context-sources.ts +85 -0
  2230. package/src/services/provisioning-harness/driver.ts +156 -0
  2231. package/src/services/provisioning-harness/expect.ts +81 -0
  2232. package/src/services/provisioning-harness/fixture-matrix.ts +38 -0
  2233. package/src/services/provisioning-harness/fixtures/project/.agent-relay/land-gates.json +1 -0
  2234. package/src/services/provisioning-harness/fixtures/project/.claude/skills/harness-skill/SKILL.md +6 -0
  2235. package/src/services/provisioning-harness/fixtures/project/.mcp.json +1 -0
  2236. package/src/services/provisioning-harness/fixtures/project/AGENTS.md +1 -0
  2237. package/src/services/provisioning-harness/fixtures/project/CLAUDE.md +1 -0
  2238. package/src/services/provisioning-harness/fixtures/project/mcp-server.ts +33 -0
  2239. package/src/services/provisioning-harness/fixtures/provider-home/AGENTS.md +1 -0
  2240. package/src/services/provisioning-harness/fixtures/provider-home/CLAUDE.md +1 -0
  2241. package/src/services/provisioning-harness/host-fixtures.ts +25 -0
  2242. package/src/services/provisioning-harness/index.ts +4 -0
  2243. package/src/services/provisioning-harness/inventory-types.ts +8 -0
  2244. package/src/services/provisioning-harness/inventory.ts +33 -0
  2245. package/src/services/provisioning-harness/lifecycle.ts +193 -0
  2246. package/src/services/provisioning-harness/live.ts +61 -0
  2247. package/src/services/provisioning-harness/manifests.ts +118 -0
  2248. package/src/services/provisioning-harness/prepare.ts +113 -0
  2249. package/src/services/provisioning-harness/redundancy-report.ts +32 -0
  2250. package/src/services/provisioning-harness/redundancy.ts +137 -0
  2251. package/src/services/provisioning-harness/report.ts +129 -0
  2252. package/src/services/provisioning-harness/types.ts +174 -0
  2253. package/src/services/provisioning-registry.ts +15 -0
  2254. package/src/services/rate-limit-resume.ts +220 -0
  2255. package/src/services/reap-verdict.ts +52 -0
  2256. package/src/services/red-main-auto-revert.ts +103 -0
  2257. package/src/services/red-main-controller-deps.ts +80 -0
  2258. package/src/services/red-main-controller.ts +262 -0
  2259. package/src/services/red-main-incident.ts +44 -0
  2260. package/src/services/red-main-quarantine.ts +92 -0
  2261. package/src/services/register-agent.ts +447 -0
  2262. package/src/services/release-readiness.ts +219 -0
  2263. package/src/services/reported-exit-death.ts +29 -0
  2264. package/src/services/response-report-admission.ts +17 -0
  2265. package/src/services/restart-epoch-driver.ts +290 -0
  2266. package/src/services/restart-epoch-reconciler.ts +326 -0
  2267. package/src/services/restart-epoch-stale-command-recovery.ts +133 -0
  2268. package/src/services/restart-instructions.ts +86 -0
  2269. package/src/services/restart-project-role.ts +74 -0
  2270. package/src/services/restart-secret-refs.ts +14 -0
  2271. package/src/services/restart-spawn.ts +510 -0
  2272. package/src/services/review-publish.ts +76 -0
  2273. package/src/services/review-ref-reconcile.ts +337 -0
  2274. package/src/services/run-command-input.ts +22 -0
  2275. package/src/services/run-command.ts +510 -0
  2276. package/src/services/run-completion-message.ts +70 -0
  2277. package/src/services/run-log.ts +212 -0
  2278. package/src/services/run-queue.ts +63 -0
  2279. package/src/services/scheduler-command-cancel.ts +49 -0
  2280. package/src/services/scheduler-command.ts +590 -0
  2281. package/src/services/scheduler-create.ts +25 -0
  2282. package/src/services/scheduler-plan.ts +202 -0
  2283. package/src/services/scheduler-recovery.ts +31 -0
  2284. package/src/services/scheduler.ts +406 -0
  2285. package/src/services/self-care-state.ts +10 -0
  2286. package/src/services/self-effort-grant.ts +93 -0
  2287. package/src/services/self-effort.ts +152 -0
  2288. package/src/services/send-message.ts +548 -0
  2289. package/src/services/server-credentials.ts +53 -0
  2290. package/src/services/shipping-board.ts +111 -0
  2291. package/src/services/shipping-project-config.ts +86 -0
  2292. package/src/services/shipping-stats.ts +86 -0
  2293. package/src/services/shutdown-agent.ts +463 -0
  2294. package/src/services/shutdown-watchdog.ts +119 -0
  2295. package/src/services/spawn-agent.ts +967 -0
  2296. package/src/services/spawn-approval.ts +26 -0
  2297. package/src/services/spawn-brief.ts +39 -0
  2298. package/src/services/spawn-chain-inspector.ts +286 -0
  2299. package/src/services/spawn-cwd-placement.ts +250 -0
  2300. package/src/services/spawn-identity.ts +127 -0
  2301. package/src/services/spawn-instruction-inputs.ts +114 -0
  2302. package/src/services/spawn-issue-activity.ts +102 -0
  2303. package/src/services/spawn-launch-decision.ts +32 -0
  2304. package/src/services/spawn-launch.ts +116 -0
  2305. package/src/services/spawn-loss-escalation.ts +253 -0
  2306. package/src/services/spawn-placement.test-fixture.ts +30 -0
  2307. package/src/services/spawn-project-role.ts +133 -0
  2308. package/src/services/spawn-registration-watchdog.ts +352 -0
  2309. package/src/services/spawn-replay.ts +61 -0
  2310. package/src/services/spawn-repo-probe.ts +118 -0
  2311. package/src/services/spawn-tree-cleanup.ts +37 -0
  2312. package/src/services/spawn-warnings.ts +13 -0
  2313. package/src/services/steward-reaper.ts +244 -0
  2314. package/src/services/task-context-hydration.ts +413 -0
  2315. package/src/services/task-delivery-close.ts +26 -0
  2316. package/src/services/task-delivery-event.ts +11 -0
  2317. package/src/services/task-delivery-land-policy.ts +35 -0
  2318. package/src/services/task-delivery-summary.ts +38 -0
  2319. package/src/services/task-delivery.ts +762 -0
  2320. package/src/services/task-dependency-graph.ts +116 -0
  2321. package/src/services/task-dispatch.ts +178 -0
  2322. package/src/services/task-done-when.ts +45 -0
  2323. package/src/services/task-entity.ts +758 -0
  2324. package/src/services/task-from-issue.ts +80 -0
  2325. package/src/services/task-issue-digest.ts +45 -0
  2326. package/src/services/task-issue-link.ts +158 -0
  2327. package/src/services/task-issue-weave.ts +570 -0
  2328. package/src/services/task-land-withdraw.ts +462 -0
  2329. package/src/services/task-lifecycle.ts +668 -0
  2330. package/src/services/task-nothing-to-land.ts +37 -0
  2331. package/src/services/task-plan-view.ts +172 -0
  2332. package/src/services/task-review-hold.ts +244 -0
  2333. package/src/services/task-semantic-events.ts +396 -0
  2334. package/src/services/task-stage-wake.ts +15 -0
  2335. package/src/services/task-state-reconcile.ts +169 -0
  2336. package/src/services/task-validation.ts +42 -0
  2337. package/src/services/team-claim-race.worker.ts +72 -0
  2338. package/src/services/team-spawn-delegation.ts +30 -0
  2339. package/src/services/team-templates.ts +172 -0
  2340. package/src/services/team.ts +320 -0
  2341. package/src/services/terminal-provider-exit.ts +57 -0
  2342. package/src/services/timer-message-fire-chaos-worker.ts +29 -0
  2343. package/src/services/timer-message-fire-outbox.ts +184 -0
  2344. package/src/services/transient-agent-reaper.ts +412 -0
  2345. package/src/services/turn-reconcile-audit.ts +236 -0
  2346. package/src/services/user-onboarding.ts +98 -0
  2347. package/src/services/user-profile.ts +57 -0
  2348. package/src/services/web-search.ts +83 -0
  2349. package/src/services/web-tool-calls.ts +65 -0
  2350. package/src/services/withdraw-steward.ts +57 -0
  2351. package/src/services/work-finality.ts +34 -0
  2352. package/src/services/workflow-agent-obligation.ts +35 -0
  2353. package/src/services/workflow-auto-start.ts +126 -0
  2354. package/src/services/workflow-backstop.ts +38 -0
  2355. package/src/services/workflow-budget.test-fixture.ts +10 -0
  2356. package/src/services/workflow-caller.ts +32 -0
  2357. package/src/services/workflow-catalog.ts +43 -0
  2358. package/src/services/workflow-child-proof-worker.ts +76 -0
  2359. package/src/services/workflow-child.test-fixture.ts +51 -0
  2360. package/src/services/workflow-ci-main.ts +93 -0
  2361. package/src/services/workflow-control-proof-worker.ts +149 -0
  2362. package/src/services/workflow-coordinator-decision-proof-worker.ts +123 -0
  2363. package/src/services/workflow-coordinator.ts +8 -0
  2364. package/src/services/workflow-decision-answer.ts +18 -0
  2365. package/src/services/workflow-decision-proof-worker.ts +92 -0
  2366. package/src/services/workflow-decision.test-fixture.ts +58 -0
  2367. package/src/services/workflow-decisions.ts +107 -0
  2368. package/src/services/workflow-deferred-cleanup.ts +40 -0
  2369. package/src/services/workflow-dispatch-result.ts +20 -0
  2370. package/src/services/workflow-effect-driver.ts +165 -0
  2371. package/src/services/workflow-effects.ts +544 -0
  2372. package/src/services/workflow-foreach-proof-worker.ts +209 -0
  2373. package/src/services/workflow-land-notice.ts +18 -0
  2374. package/src/services/workflow-land.ts +105 -0
  2375. package/src/services/workflow-notice.ts +32 -0
  2376. package/src/services/workflow-overdue-notice.ts +19 -0
  2377. package/src/services/workflow-pins.ts +162 -0
  2378. package/src/services/workflow-reconcile.ts +210 -0
  2379. package/src/services/workflow-resume-pins.ts +30 -0
  2380. package/src/services/workflow-run-chaos-worker.ts +67 -0
  2381. package/src/services/workflow-run-view.ts +71 -0
  2382. package/src/services/workflow-run.test-fixture.ts +165 -0
  2383. package/src/services/workflow-runs.ts +370 -0
  2384. package/src/services/workflow-scripts.ts +100 -0
  2385. package/src/services/workflow-slice-proof.ts +14 -0
  2386. package/src/services/workflow-stats.ts +208 -0
  2387. package/src/services/workflow-supervisor-state.ts +117 -0
  2388. package/src/services/workflow-supervisor.ts +122 -0
  2389. package/src/services/workflow-verification.ts +68 -0
  2390. package/src/services/workspace-recovery.ts +168 -0
  2391. package/src/services/workspace-task-binding.ts +22 -0
  2392. package/src/settings/modules.ts +149 -0
  2393. package/src/settings/registry.ts +629 -0
  2394. package/src/settings/user-settings.ts +81 -0
  2395. package/src/setup.ts +199 -0
  2396. package/src/shared-mcp.ts +87 -0
  2397. package/src/shutdown.ts +33 -0
  2398. package/src/spawn-admission.ts +48 -0
  2399. package/src/spawn-budget.ts +18 -0
  2400. package/src/spawn-command.ts +373 -0
  2401. package/src/spawn-env.ts +27 -0
  2402. package/src/spawn-intent.ts +17 -0
  2403. package/src/spawn-lease.ts +41 -0
  2404. package/src/spawn-models.ts +22 -0
  2405. package/src/spawn-placement.ts +348 -0
  2406. package/src/spawn-profile-errors.ts +9 -0
  2407. package/src/spawn-quota.ts +15 -0
  2408. package/src/spawn-targets.ts +679 -0
  2409. package/src/sse-agent-status.ts +35 -0
  2410. package/src/sse-outbox-cursor.ts +28 -0
  2411. package/src/sse-visibility.ts +36 -0
  2412. package/src/sse.ts +684 -0
  2413. package/src/startup-context-injection.ts +518 -0
  2414. package/src/startup-timing.ts +30 -0
  2415. package/src/state-adoption/artifacts.ts +27 -0
  2416. package/src/state-adoption/cd-cutover.ts +125 -0
  2417. package/src/state-adoption/files.ts +31 -0
  2418. package/src/state-adoption/index.ts +166 -0
  2419. package/src/state-adoption/linux-plan.ts +67 -0
  2420. package/src/state-adoption/linux.ts +104 -0
  2421. package/src/state-adoption/macos-plan.ts +58 -0
  2422. package/src/state-adoption/macos.ts +112 -0
  2423. package/src/steward-claim-release.ts +38 -0
  2424. package/src/steward-handoff.ts +28 -0
  2425. package/src/steward-identity.ts +54 -0
  2426. package/src/steward-policy-cleanup.ts +222 -0
  2427. package/src/steward-policy-model-reconcile.ts +33 -0
  2428. package/src/steward-policy-name.ts +13 -0
  2429. package/src/steward-provenance.ts +59 -0
  2430. package/src/steward-queue.ts +85 -0
  2431. package/src/steward-slot-recovery.ts +34 -0
  2432. package/src/steward-spawn-guard.ts +344 -0
  2433. package/src/steward.test-fixture.ts +11 -0
  2434. package/src/steward.ts +199 -0
  2435. package/src/stream-proxy.ts +84 -0
  2436. package/src/task-authz.ts +40 -0
  2437. package/src/task-completion.ts +39 -0
  2438. package/src/task-dispatch-live.ts +70 -0
  2439. package/src/task-dispatcher-ranking.ts +136 -0
  2440. package/src/task-dispatcher.ts +841 -0
  2441. package/src/task-owner-notices.ts +35 -0
  2442. package/src/task-owner.ts +63 -0
  2443. package/src/task-plan-status.ts +21 -0
  2444. package/src/task-verification.ts +35 -0
  2445. package/src/team-idle-tracker.ts +39 -0
  2446. package/src/team-template-config.ts +100 -0
  2447. package/src/teams-config-store.ts +22 -0
  2448. package/src/terminal-authz.ts +49 -0
  2449. package/src/token-db-write.ts +44 -0
  2450. package/src/token-db.ts +487 -0
  2451. package/src/token-usage-async.ts +40 -0
  2452. package/src/transport-subscriptions.ts +57 -0
  2453. package/src/types.ts +1 -0
  2454. package/src/upgrade-install-verify.ts +179 -0
  2455. package/src/upgrade-local-id.ts +3 -0
  2456. package/src/upgrade-services.ts +125 -0
  2457. package/src/upgrade.ts +1006 -0
  2458. package/src/user-awaiting-reply.ts +42 -0
  2459. package/src/user-path.ts +246 -0
  2460. package/src/user-settings-async.ts +33 -0
  2461. package/src/user-settings-store.ts +106 -0
  2462. package/src/user-style.ts +83 -0
  2463. package/src/utils.ts +42 -0
  2464. package/src/validation.ts +324 -0
  2465. package/src/vault-backup-config.ts +28 -0
  2466. package/src/vault-expiry-config.ts +12 -0
  2467. package/src/versioned-prompts.ts +57 -0
  2468. package/src/workflow-capabilities.ts +10 -0
  2469. package/src/workflow-prompt-templates.ts +20 -0
  2470. package/src/workspace-action-audit.ts +42 -0
  2471. package/src/workspace-actions.ts +689 -0
  2472. package/src/workspace-auto-merge.ts +1055 -0
  2473. package/src/workspace-changed-paths-client.ts +97 -0
  2474. package/src/workspace-claim.ts +45 -0
  2475. package/src/workspace-cleanup-settle.ts +51 -0
  2476. package/src/workspace-cleanup-stale.ts +231 -0
  2477. package/src/workspace-command-settle.ts +589 -0
  2478. package/src/workspace-config.ts +7 -0
  2479. package/src/workspace-conflict-resolver.ts +182 -0
  2480. package/src/workspace-dead-owner-recovery.ts +19 -0
  2481. package/src/workspace-delivery-tip.ts +51 -0
  2482. package/src/workspace-escalation.ts +107 -0
  2483. package/src/workspace-git-state-client.ts +42 -0
  2484. package/src/workspace-host-client.ts +86 -0
  2485. package/src/workspace-host-target.ts +5 -0
  2486. package/src/workspace-host.ts +61 -0
  2487. package/src/workspace-human-escalation.ts +70 -0
  2488. package/src/workspace-land-gate-watchdog.ts +76 -0
  2489. package/src/workspace-land-gate.ts +99 -0
  2490. package/src/workspace-land-result.ts +12 -0
  2491. package/src/workspace-land-retry.ts +82 -0
  2492. package/src/workspace-land-stopped.ts +57 -0
  2493. package/src/workspace-merge-dispatch.ts +27 -0
  2494. package/src/workspace-merge-progress.ts +369 -0
  2495. package/src/workspace-merge-retry-policy.ts +59 -0
  2496. package/src/workspace-merge.ts +614 -0
  2497. package/src/workspace-nothing-to-land-notice.ts +27 -0
  2498. package/src/workspace-orphans.ts +927 -0
  2499. package/src/workspace-phase.ts +507 -0
  2500. package/src/workspace-pr-completion.ts +285 -0
  2501. package/src/workspace-probe.ts +212 -0
  2502. package/src/workspace-recorded-land.ts +47 -0
  2503. package/src/workspace-recovery-authz.ts +88 -0
  2504. package/src/workspace-rekey.ts +106 -0
  2505. package/src/workspace-steward-authority.ts +16 -0
  2506. package/src/workspace-steward-failure.ts +42 -0
  2507. package/src/workspace-steward-wake.ts +150 -0
  2508. package/src/workspace-steward-watchdog.ts +240 -0
@@ -0,0 +1,9 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t}from"./dist-DeW2Y1R5.js";import{A as n,D as r,M as i,N as a,O as o,P as s,c,d as l,f as u,h as d,l as f,t as p}from"./provider-display-DbLWpP3j.js";import{A as m,C as h,E as g,F as ee,I as _,W as v,X as te,_t as ne,dt as re,f as ie,ft as ae,gt as oe,h as y,ht as se,j as ce,lt as b,m as x,ot as le,tt as ue,ut as de,z as fe}from"./display-CfO7rTuF.js";import{_ as pe,d as me,f as he,h as ge,i as _e,l as ve,m as ye,p as be,r as xe,s as Se,t as S}from"./api-CIIVBtAV.js";import{t as Ce}from"./agent-liveness-DyqxfB-t.js";var C=e(t(),1),we=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Te=(e=>e?we(e):we),Ee=e=>e;function De(e,t=Ee){let n=C.useSyncExternalStore(e.subscribe,C.useCallback(()=>t(e.getState()),[e,t]),C.useCallback(()=>t(e.getInitialState()),[e,t]));return C.useDebugValue(n),n}var Oe=e=>{let t=Te(e),n=e=>De(t,e);return Object.assign(n,t),n},w=(e=>e?Oe(e):Oe);function ke(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var Ae=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return Ae(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return Ae(t)(e)}}}},je=(e,t)=>(n,r,i)=>{let a={storage:ke(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=0,c=new Set,l=new Set,u=a.storage;if(!u)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let d=()=>{let e=a.partialize({...r()});return u.setItem(a.name,{state:e,version:a.version})},f=i.setState;i.setState=(e,t)=>(f(e,t),d());let p=e((...e)=>(n(...e),d()),r,i);i.getInitialState=()=>p;let m,h=()=>{if(!u)return;let e=++s;o=!1,c.forEach(e=>e(r()??p));let t=a.onRehydrateStorage?.call(a,r()??p)||void 0;return Ae(u.getItem.bind(u))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(t=>{if(e!==s)return;let[i,o]=t;if(m=a.merge(o,r()??p),n(m,!0),i)return d()}).then(()=>{e===s&&(t?.(r(),void 0),m=r(),o=!0,l.forEach(e=>e(m)))}).catch(n=>{e===s&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(u=e.storage)},clearStorage:()=>{u?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(l.add(e),()=>{l.delete(e)})},a.skipHydration||h(),m||p},Me=e=>Symbol.iterator in e,Ne=e=>`entries`in e,Pe=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},Fe=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function Ie(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:Me(e)&&Me(t)?Ne(e)&&Ne(t)?Pe(e,t):Fe(e,t):Pe({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function Le(e){let t=ke(e);if(!t)return;let n;return{...t,setItem:(e,r)=>{if(!(n!==void 0&&Ie(n,r.state)))return n=r.state,t.setItem(e,r)},removeItem:e=>(n=void 0,t.removeItem(e))}}var Re=`worker`,ze=[];function Be(e){return e!==void 0&&ze.includes(e)}var Ve=`This runs repo-committed code with this agent's Relay identity token and provider credentials.`,He=`Content review is bounded, not absolute: fingerprint mode covers the declaration plus every directly-named, in-repo, statically-resolved target — it does NOT cover indirect includes (a script that sources or imports another file not itself named in the command) or anything selected only at runtime (an env-var path, a glob, a built string). Commit mode is coarser still: it is invalidated by ANY new commit on the repo, whether or not that commit touches the declaration or its targets, and does not see uncommitted working-tree edits at all. Review reads the spawn cwd off the RELAY server's own filesystem, not the runner's — for a spawn whose orchestrator is on a different host, this relay cannot see that host's disk at all, so review fails closed rather than reviewing the relay's own (possibly unrelated) copy of the same path.`,Ue=`outcome`,We=`Done`,Ge=`Could not do it`;function Ke(e,t){let n=e.requestedByRole;return n===`self`||n===`operator`||n===`coordinator`?n:e.selfRequested===!0||e.requestedBy===t?`self`:s(e.requestedByUser)||e.requestedBy===`dashboard`?`operator`:`coordinator`}function qe(e){if(e.type!==`agent.setEffort`||e.status!==`succeeded`)return;let t=a(e.result?.providerResult)?e.result.providerResult:{},n=s(t.effort)??s(e.params.effort),r=s(t.previousEffort)??s(e.params.previousEffort)??`default`;if(!n||n===r)return;let i=Ke(e.params,e.target),o=s(e.params.requestedByAgentId)??s(e.params.requestedBy),c=s(e.params.requestedByUser),l=s(e.params.reason)?.trim();return{commandId:e.id,agentId:e.target,at:e.updatedAt,effort:n,previousEffort:r,actor:{role:i,...i===`self`?{id:e.target}:o&&o!==`dashboard`?{id:o}:{},...c?{user:c}:{}},...l?{reason:l}:{}}}function Je(e){return e.desiredVersion>e.observedVersion}function T(e){return r(n(e?.id??`default`))}function Ye(){return typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 767px)`).matches?4:12}var E=[];function Xe(e){let t=E.indexOf(e);t!==-1&&E.splice(t,1),E.unshift(e)}function Ze(e){let t=E.indexOf(e);t!==-1&&E.splice(t,1)}function Qe(e,t){let n=new Set(Object.keys(e)),r=new Set,i=Ye(),a=e=>{e&&n.has(e)&&r.size<i&&r.add(e)};for(let e of t)a(e);for(let e of E)if(a(e),r.size>=i)break;for(let t of Object.keys(e).reverse())a(t);let o={};for(let t of r)o[t]=e[t];return E.splice(0,E.length,...E.filter(e=>r.has(e))),o}var $e=[`landState`,`landWaitReason`,`landStateAt`,`landBackedOff`];function et(e,t){let n=e?{...e,...t}:t,r=t.meta?{...e?.meta??{},...t.meta}:e?.meta;r&&a(e?.meta?.workspace)&&a(t.meta?.workspace)&&(r.workspace={...e.meta.workspace,...t.meta.workspace});let i=$e.filter(e=>t[e]===null);return{...n,...Object.fromEntries(i.map(e=>[e,void 0])),...r?{meta:r}:{},...!t.issueRepo&&e?.issueRepo?{issueRepo:e.issueRepo}:{}}}function tt(e,t){if(!e)return null;if(t?.id!==e.id)return e;let n=t.meta?.agentProfile;return n?{...e,meta:{...e.meta,agentProfile:n}}:e}function nt(e,t){let n=new Set(t.map(e=>e.id)),r=e.filter(e=>!n.has(e.id)).map(e=>e.status===`offline`?e:{...e,status:`offline`});return O(e,r.length===0?t:[...t,...r])}function rt(e){let t={};for(let n of e)t[n.id]=n;return t}function D(e,t){let n=e.findIndex(e=>e.id===t.id),r=[...e];return n>=0?r[n]=t:r.push(t),r}function it(e,t){let n=e.findIndex(e=>e.id===t.id);if(n<0)return;let r=e[n],i=[...e];return i[n]={...t,meta:r.meta,providerCatalog:r.providerCatalog,managedAgents:t.managedAgents??r.managedAgents,providerStatus:t.providerStatus??r.providerStatus},i}function at(e,t){return e?{...t,...t.projectId===void 0&&e.projectId!==void 0?{projectId:e.projectId}:{},...t.projectSlug===void 0&&e.projectSlug!==void 0?{projectSlug:e.projectSlug}:{},...t.projectTitle===void 0&&e.projectTitle!==void 0?{projectTitle:e.projectTitle}:{},...t.ownerOnline===void 0&&e.ownerOnline!==void 0?{ownerOnline:e.ownerOnline}:{}}:t}var ot=3e3;function st(e,t,n,r=Date.now(),i){if(!t||!n)return e;let a=[...e[t]||[]],o=i||`s-${n}-${r}`;return a.some(e=>e.id===o)||a.some(e=>e.status===n&&Math.abs(e.timestamp-r)<=ot)?e:(a.push({id:o,status:n,timestamp:r}),a.length>200&&a.splice(0,a.length-200),{...e,[t]:a})}function ct(e,t){if(!(!e||e.status===t.status)){if((e.status===`offline`||e.status===`stale`)&&(t.status===`online`||t.status===`idle`||t.status===`busy`))return`online`;if(t.status===`offline`)return`offline`}}var lt=new Set([`compacting`,`compacted`,`clearing-context`,`context-cleared`]);function ut(e){let t=e.meta?.timelineEvent;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t.status;if(typeof n!=`string`||!n)return;let r=t.id,i=t.timestamp;return{status:n,...typeof r==`string`?{id:r}:{},...typeof i==`number`&&Number.isFinite(i)?{timestamp:i}:{}}}function dt(e){let t=e.params?.agentId;return typeof t==`string`&&t?t:typeof e.target==`string`&&e.target?e.target:void 0}function ft(e,t){if(t===`command.dispatched`)return e.type===`agent.compact`?`compaction-requested`:e.type===`agent.clearContext`?`clear-requested`:e.type===`agent.shutdown`?`shutting-down`:void 0;if(t===`command.succeeded`){if(e.type===`agent.shutdown`)return`shutdown`;if(e.type===`agent.restart`)return`restarted`}}function pt(e){return JSON.stringify(e)}function mt(e,t){let n=new Map(e.map(e=>[e.id,e])),r=!(e.length===t.length&&e.every((e,n)=>e.id===t[n]?.id)),i=t.map(e=>{let t=n.get(e.id);return t&&pt(t)===pt(e)?t:(r=!0,e)});return r?i:e}function O(e,t){return ht(e,t,e=>e.id)}function ht(e,t,n){let r=[...new Map(t.map(e=>[n(e),e])).values()],i=new Map(e.map(e=>[n(e),e])),a=!(e.length===r.length&&e.every((e,t)=>n(e)===n(r[t]))),o=r.map(e=>{let t=i.get(n(e));return t===e?e:t!==void 0&&JSON.stringify(t)===JSON.stringify(e)?t:(a=!0,e)});return a?o:e}function gt(e,t){return e===t||JSON.stringify(e)===JSON.stringify(t)?e:t}function _t(){return typeof document>`u`||document.hidden}function vt(e,t){return!!(e&&t.view===`chat`&&t.selectedInboxThread===e&&!_t())}function yt(e){return e.threadPeer||e.agentId||``}function bt(e,t){return vt(yt(e),t)}function xt(e){return e.filter(e=>o(e.to)&&!o(e.from)&&g(e)).reduce((e,t)=>Math.max(e,t.id),0)}function k(e,t){let n;for(let r of t)r in e&&(n??={...e},delete n[r]);return n??e}function St(e,t){return e.some(e=>t.has(e))?e.filter(e=>!t.has(e)):e}function Ct(e,t){return k(e,Object.keys(e).filter(e=>!t.has(e)))}function wt(e){return typeof e?.meta?.cwd==`string`?e.meta.cwd:``}function Tt(e){return new Set([...e.agents.map(e=>e.id),...Object.keys(e.agentChatByAgent),...Object.keys(e.chatStatusEvents),...Object.keys(e.presenceByAgent),...Object.keys(e.issueActivityByAgent),...Object.keys(e.issueLoading).flatMap(e=>e.startsWith(`agent:`)?[e.slice(6)]:[]),...Object.keys(e.issueErrors).flatMap(e=>e.startsWith(`agent:`)?[e.slice(6)]:[]),...Object.keys(e.livenessMismatches),...Object.keys(e.commandStalls),...e.coordinatorFollows,...e.coordinatorMutes,...e.chatCollapsedChildren,...[e.selectedAgent,e.agentDetailId,e.renameModal.agentId,e.selectedInboxThread,e.inboxCompose.toMode===`agent`?e.inboxCompose.to:``].filter(Boolean)])}function Et(e,t){let n=[...t],r=e.agents.filter(e=>t.has(e.id)),i=r.length?e.agents.filter(e=>!t.has(e.id)):e.agents,a=new Set(r.map(wt).filter(Boolean));for(let e of i)a.delete(wt(e));let o=n.map(e=>`agent:${e}`),s=t.has(e.compose.to),c=t.has(e.agentDetailId);return{agents:i,agentsById:k(e.agentsById,n),selectedAgent:t.has(e.selectedAgent)?``:e.selectedAgent,agentDetailOpen:!c&&e.agentDetailOpen,agentDetailId:c?``:e.agentDetailId,agentDetailCard:c?null:e.agentDetailCard,livenessMismatches:k(e.livenessMismatches,n),commandStalls:k(e.commandStalls,n),agentChatByAgent:k(e.agentChatByAgent,n),chatStatusEvents:k(e.chatStatusEvents,n),presenceByAgent:k(e.presenceByAgent,n),issueActivityByAgent:k(e.issueActivityByAgent,n),issueLoading:k(e.issueLoading,o),issueErrors:k(e.issueErrors,o),selectedInboxThread:t.has(e.selectedInboxThread)?``:e.selectedInboxThread,replyTo:s||e.replyTo&&t.has(e.replyTo.from)?null:e.replyTo,composeOpen:!s&&e.composeOpen,compose:s?{...b,from:T(e.sessionUser)}:e.compose,inboxCompose:e.inboxCompose.toMode===`agent`&&t.has(e.inboxCompose.to)?{...de}:e.inboxCompose,coordinatorFollows:St(e.coordinatorFollows,t),coordinatorMutes:St(e.coordinatorMutes,t),chatCollapsedChildren:St(e.chatCollapsedChildren,t),renameModal:t.has(e.renameModal.agentId)?{show:!1,agentId:``,label:``}:e.renameModal,projectByCwd:k(e.projectByCwd,[...a])}}var Dt=(e,t)=>({agents:[],agentsById:{},_rosterBootstrapped:!1,showOffline:!1,showBuiltIns:!1,agentSort:`status`,agentSortDir:`asc`,agentPresetFilter:``,agentStatusFilter:``,agentTagFilter:``,agentHostFilter:``,selectedAgent:``,agentDetailOpen:!1,agentDetailId:``,agentDetailCard:null,livenessMismatches:{},commandStalls:{},channelDetailOpen:!1,channelDetailId:``,renameModal:{show:!1,agentId:``,label:``},tagFilter:``,async fetchAgents(){try{let n=t()._rosterBootstrapped,r=await S(`GET`,!t().showOffline&&n?`/agents?excludeOffline=1`:`/agents`),i=!Array.isArray(r),a=i?r.agents:r,o=t(),s=i?void 0:new Set(a.map(e=>e.id)),c=s?new Set([...Tt(o)].filter(e=>!s.has(e))):new Set;for(let e of c)Ze(e);let l=c.size?Et(o,c):{},u={...o,...l},d=i?nt(u.agents,a):O(u.agents,a),f=new Set(d.map(wt).filter(Boolean)),p=Ct(u.projectByCwd,f);if(n&&!c.size&&d===o.agents&&p===o.projectByCwd)return;e({...l,agents:d,agentsById:rt(d),projectByCwd:p,...n?{}:{_rosterBootstrapped:!0}})}catch{}},setShowOffline(n){t().showOffline!==n&&(e({showOffline:n}),t().fetchAgents())},async fetchAgentCard(n){if(n)try{let r=await S(`GET`,`/agents/`+encodeURIComponent(n));if(t().agentDetailId!==n)return;e({agentDetailCard:r})}catch{}},removeAgentState(t){Ze(t),e(e=>Et(e,new Set([t])))},openAgentDetail(n){e({agentDetailId:n.id,agentDetailOpen:!0,agentDetailCard:null}),t().fetchAgentCard(n.id)},closeAgentDetail(){e({agentDetailOpen:!1,agentDetailCard:null})},openChannelDetail(t){e({channelDetailId:t.id,channelDetailOpen:!0})},closeChannelDetail(){e({channelDetailOpen:!1})},openRename(t){e({renameModal:{show:!0,agentId:t.id,label:t.label||``}})},async doRename(){let n=t(),r=n.renameModal.label.trim()||null;try{await S(`PATCH`,`/agents/`+n.renameModal.agentId+`/label`,{label:r}),e({renameModal:{...n.renameModal,show:!1}})}catch(e){t().showError(`Rename Failed`,e.message,e)}},async doDeleteAgent(e){try{await S(`DELETE`,`/agents/`+e),t().removeAgentState(e)}catch(e){t().showError(`Delete Failed`,e.message,e)}},async setAgentKeep(e,n){try{await S(`PUT`,`/agents/`+encodeURIComponent(e.id)+`/keep`,{keep:n,surface:{component:`agents-grid`}}),t().showNotification(n?`Keeping ${ie(e)}`:`Released keep on ${ie(e)}`)}catch(e){t().showError(`Keep Failed`,e.message,e)}},async doAgentAction(e,n,r,i){try{await S(`POST`,`/agents/`+encodeURIComponent(e.id)+`/actions`,{...i,action:n,...r?{surface:{component:r}}:{}});let a=n===`restart`?`Restart`:n===`resume`?`Resume`:n===`shutdown`?i?.hard===!0?`Force shutdown`:`Shutdown`:n===`compact`?`Compact`:n===`clearContext`?`Clear context`:n===`releaseSubmitHold`?`Release hold`:n;t().showNotification(`${a} command sent to ${ie(e)}`),await Promise.all([t().fetchMessages(),t().fetchActivityEvents()])}catch(e){t().showError(`Action Failed`,e.message,e)}}});function Ot(e,t,n){return t===`agents.changed`?(e.fetchAgents().catch(()=>{}),!0):t===`agent.removed`?(e.removeAgentState(JSON.parse(n).id),!0):!1}function kt(e){if(!e)return``;let t=e.replace(/\r\n/g,`
2
+ `);return t=t.replace(/```[^\n]*\n([\s\S]*?)```/g,(e,t)=>{let n=t.replace(/\n+$/,``).split(`
3
+ `).length;return` code block, ${n} ${n===1?`line`:`lines`}. `}),t=t.replace(/```[^\n]*/g,` code block. `),t=Nt(t),t=t.replace(/^#{1,6}\s+/gm,``),t=t.replace(/^\s*[-*+]\s+/gm,`. `),t=t.replace(/^\s*\d+\.\s+/gm,`. `),t=t.replace(/`([^`]+)`/g,`$1`),t=t.replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`),t=t.replace(/(\*\*|__|\*|_)(.*?)\1/g,`$2`),t=t.replace(/[ \t]+/g,` `),t=t.replace(/\n{2,}/g,`. `),t=t.replace(/\s*\.\s*\.\s*(\.\s*)+/g,`. `),t.trim()}function At(e){return/\|/.test(e)&&e.trim().length>0}function jt(e){return/^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-{2,}:?\s*)+\|?\s*$/.test(e)}function Mt(e){return e.trim().replace(/^\||\|$/g,``).split(`|`).map(e=>e.trim()).filter(e=>e.length>0)}function Nt(e){let t=e.split(`
4
+ `),n=[],r=0;for(;r<t.length;){if(At(t[r])&&r+1<t.length&&jt(t[r+1])){let e=Mt(t[r]),i=r+2,a=0;for(;i<t.length&&At(t[i])&&!jt(t[i]);)a++,i++;let o=e.length?`with columns ${e.join(`, `)}`:``,s=`${a} ${a===1?`row`:`rows`}`;n.push(`table ${o?`${o}, `:``}${s}.`.replace(/\s+/g,` `).trim()),r=i;continue}n.push(t[r]),r++}return n.join(`
5
+ `)}var Pt={ms:`milliseconds`,s:`seconds`,kb:`kilobytes`,mb:`megabytes`,gb:`gigabytes`,tb:`terabytes`};function Ft(e){return e.split(``).join(` `)}function It(e){return e.split(``).map(e=>/[0-9]/.test(e)?e:e.toUpperCase()).join(` `)}var Lt=[{name:`url`,pattern:/\bhttps?:\/\/\S+/gi,replace:` link `},{name:`path`,pattern:/(?:\/[A-Za-z0-9._-]+){2,}\/?/g,replace:e=>` `+e.replace(/[/._-]+/g,` `).trim()+` `},{name:`slash`,pattern:/(?<=[A-Za-z0-9])\/(?=[A-Za-z0-9])/g,replace:` `},{name:`func-call`,pattern:/\b([A-Za-z_$][\w$]*)\(\)/g,replace:`$1`},{name:`approx`,pattern:/~(?=\s*[\d.])/g,replace:`approximately `},{name:`range`,pattern:/(\d)\s*[-–—]\s*(?=\d)/g,replace:`$1 to `},{name:`version`,pattern:/\b(v?)(\d+(?:\.\d+){2,})\b/gi,replace:(e,t,n)=>`${t?`version `:``}${n.replace(/\./g,` dot `)}`},{name:`decimal`,pattern:/\b(\d+)\.(\d+)\b/g,replace:(e,t,n)=>`${t} point ${Ft(n)}`},{name:`hash`,pattern:/\b(?=[0-9a-f]{7,40}\b)(?=[0-9a-f]*[a-f])(?=[0-9a-f]*\d)[0-9a-f]{7,40}\b/gi,replace:e=>It(e)},{name:`id-camel`,pattern:/([a-z])(Id|ID)(s)?\b/g,replace:(e,t,n,r)=>`${t} I D${r?`s`:``}`},{name:`id-word`,pattern:/\b(?:id|Id|ID)(s)?\b/g,replace:(e,t)=>`I D${t?`s`:``}`},{name:`byte-unit`,pattern:/\b(\d+)\s?(kb|mb|gb|tb)\b/gi,replace:(e,t,n)=>`${t} ${Pt[n.toLowerCase()]}`},{name:`ms-unit`,pattern:/\b(\d{1,5})\s?ms\b/g,replace:(e,t)=>`${t} ${Pt.ms}`},{name:`s-unit`,pattern:/\b(\d{1,3})\s?s\b/g,replace:(e,t)=>`${t} ${Pt.s}`},{name:`live-adjective`,pattern:/\b(is|are|was|were|be|been|being|now|and|stays?|staying|went|go|goes|going|deployed|it's|that's|here's|there's|we're|you're|they're)\s+live\b/gi,replace:(e,t)=>`${t} lyve`},{name:`interior-dot`,pattern:/\.(?=[A-Za-z0-9])/g,replace:` dot `}];function Rt(e){if(!e)return``;let t=e;for(let e of Lt)t=t.replace(e.pattern,e.replace);return t.replace(/[ \t]{2,}/g,` `).trim()}function zt(e){return Rt(kt(e))}var Bt=[{id:`am_michael`,label:`Michael (US ♂)`},{id:`am_adam`,label:`Adam (US ♂)`},{id:`af_heart`,label:`Heart (US ♀)`},{id:`af_bella`,label:`Bella (US ♀)`},{id:`af_nicole`,label:`Nicole (US ♀)`},{id:`af_sarah`,label:`Sarah (US ♀)`},{id:`bm_george`,label:`George (UK ♂)`},{id:`bf_emma`,label:`Emma (UK ♀)`}],Vt=220;function Ht(e){let t=e.match(/[^.!?]+[.!?]*\s*/g)?.map(e=>e.trim()).filter(Boolean)??[e],n=[];for(let e of t){if(e.length<=Vt){n.push(e);continue}let t=e;for(;t.length>Vt;){let e=t.lastIndexOf(` `,Vt);e<=0&&(e=Vt),n.push(t.slice(0,e).trim()),t=t.slice(e).trim()}t&&n.push(t)}return n}function Ut(){return typeof window<`u`&&`speechSynthesis`in window}var A=new class{enabled=!1;lang=`en-US`;mode=`kokoro`;kokoroVoice=`am_michael`;browserVoice=``;active=null;queue=[];currentChat=null;speaking=!1;gen=0;audioEl=null;audioUrl=null;playingKey=null;manual=!1;listeners=new Set;get available(){return Ut()||typeof Audio<`u`}isEnabled(){return this.enabled}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getPlayingKey(){return this.playingKey}setPlayingKey(e){if(e!==this.playingKey){this.playingKey=e;for(let e of this.listeners)e()}}setEnabled(e){e!==this.enabled&&(this.enabled=e,e||this.reset())}setLang(e){this.lang=e}setMode(e){e!==this.mode&&(this.mode=e,this.reset())}setKokoroVoice(e){this.kokoroVoice=e}setBrowserVoice(e){this.browserVoice=e}setActiveChat(e){e!==this.active&&(this.active=e,this.queue=this.queue.filter(t=>t.chatId===e))}onResponse(e,t){if(!this.enabled||!this.available||!e||e!==this.active)return;let n=zt(t);n&&(this.speaking&&(this.manual||this.currentChat&&this.currentChat!==e)&&(this.queue=[],this.cancel()),this.queue.push({chatId:e,text:n}),this.pump())}speak(e,t){if(!this.available)return;let n=zt(e);if(!n)return;this.reset(),this.manual=!0,this.speaking=!0,this.currentChat=null,this.setPlayingKey(t??null);let r=++this.gen,i=Ht(n),a=()=>{r===this.gen&&(this.speaking=!1,this.manual=!1,this.setPlayingKey(null))};this.mode===`kokoro`?this.speakKokoro(i,0,r,a):this.speakBrowser(i,0,r,a)}bargeIn(){this.reset()}reset(){this.queue=[],this.cancel()}cancel(){this.gen++,this.currentChat=null,this.speaking=!1,this.manual=!1,this.setPlayingKey(null);try{window.speechSynthesis.cancel()}catch{}this.stopAudio()}stopAudio(){if(this.audioEl)try{this.audioEl.pause(),this.audioEl.src=``}catch{}if(this.audioUrl){try{URL.revokeObjectURL(this.audioUrl)}catch{}this.audioUrl=null}}pump(){if(this.speaking)return;let e=this.queue.shift();if(!e)return;this.speaking=!0,this.manual=!1,this.currentChat=e.chatId;let t=++this.gen,n=Ht(e.text),r=()=>{t===this.gen&&(this.speaking=!1,this.currentChat=null,this.pump())};this.mode===`kokoro`?this.speakKokoro(n,0,t,r):this.speakBrowser(n,0,t,r)}speakBrowser(e,t,n,r){if(n!==this.gen)return;if(!Ut()||t>=e.length)return r();let i=new SpeechSynthesisUtterance(e[t]),a=this.browserVoice?window.speechSynthesis.getVoices().find(e=>e.voiceURI===this.browserVoice):void 0;a?(i.voice=a,i.lang=a.lang):i.lang=this.lang||navigator.language||`en-US`,i.onend=()=>this.speakBrowser(e,t+1,n,r),i.onerror=()=>this.speakBrowser(e,t+1,n,r),window.speechSynthesis.speak(i)}speakKokoro(e,t,n,r,i){if(n!==this.gen)return;let a=e[t];if(a===void 0)return r();let o=i??this.fetchSpeech(a),s=e[t+1],c=s===void 0?void 0:this.fetchSpeech(s);o.then(i=>{n===this.gen&&this.playBlob(i,n,()=>this.speakKokoro(e,t+1,n,r,c),()=>{this.speakBrowser(e,t,n,r)})}).catch(()=>{n===this.gen&&this.speakBrowser(e,t,n,r)})}fetchSpeech(e){return _e(`/connectors/voice/call/speak`,{text:e,voice:this.kokoroVoice})}playBlob(e,t,n,r){if(t!==this.gen)return;if(typeof Audio>`u`)return r();this.stopAudio(),this.audioEl||=new Audio;let i=URL.createObjectURL(e);this.audioUrl=i;let a=this.audioEl;a.src=i,a.onended=()=>{t===this.gen&&n()},a.onerror=()=>{t===this.gen&&r()},a.play().catch(()=>{t===this.gen&&r()})}};function Wt(){if(!Ut())return[];try{return window.speechSynthesis.getVoices().map(e=>({uri:e.voiceURI,label:`${e.name} (${e.lang})`,lang:e.lang})).sort((e,t)=>e.lang.localeCompare(t.lang)||e.label.localeCompare(t.label))}catch{return[]}}var Gt=typeof navigator<`u`&&!!navigator.mediaDevices?.getUserMedia&&typeof window<`u`&&`MediaRecorder`in window;function Kt(){for(let e of[`audio/webm;codecs=opus`,`audio/webm`,`audio/ogg;codecs=opus`,`audio/mp4`])if(typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported?.(e))return e}var qt=class{rec=null;chunks=[];stream=null;async start(){this.stream=await navigator.mediaDevices.getUserMedia({audio:!0}),this.chunks=[];let e=Kt();this.rec=new MediaRecorder(this.stream,e?{mimeType:e}:void 0),this.rec.ondataavailable=e=>{e.data.size&&this.chunks.push(e.data)},this.rec.start()}async stop(){let e=this.rec;if(!e)return this.teardown(),null;let t=new Promise(t=>{e.onstop=()=>t()});try{e.stop()}catch{}await t;let n=e.mimeType||`audio/webm`,r=new Blob(this.chunks,{type:n});return this.teardown(),r.size?r:null}cancel(){try{this.rec?.stop()}catch{}this.teardown()}teardown(){this.stream?.getTracks().forEach(e=>e.stop()),this.rec=null,this.stream=null,this.chunks=[]}};async function Jt(e){return((await xe(`/connectors/voice/call/transcribe`,e))?.text??``).trim()}function Yt(){return typeof document<`u`&&document.visibilityState===`hidden`}var j=w((e,t)=>{let n=()=>{t()._timer||Yt()||e({now:Date.now(),_timer:setInterval(()=>e({now:Date.now()}),1e3)})},r=()=>{let n=t()._timer;n&&clearInterval(n),e({_timer:null})},i=()=>Yt()?r():n();return{now:Date.now(),_timer:null,_running:!1,start(){t()._running||(e({_running:!0}),typeof document<`u`&&document.addEventListener(`visibilitychange`,i),n())},stop(){t()._running&&(typeof document<`u`&&document.removeEventListener(`visibilitychange`,i),r(),e({_running:!1}))}}});function Xt(e=!0){return j(t=>e?t.now:0)}function Zt(e=3e4){return j(t=>Math.floor(t.now/e))}function Qt(e=1e4){return j(t=>Math.floor(t.now/e)*e)}function $t(e,t){let{[t]:n,...r}=e;return r}function en(e,t){return!t||e.desiredVersion>t.desiredVersion||e.desiredVersion===t.desiredVersion&&e.updatedAt>=t.updatedAt}function tn(e){if(!e?.agentId)return;let{states:t}=nn.getState();en(e,t[e.agentId])&&nn.setState({states:{...t,[e.agentId]:e}})}var nn=w((e,t)=>({states:{},refused:{},async request(n,r){e({refused:$t(t().refused,n)});try{let{effortState:e}=await S(`POST`,`/agents/`+encodeURIComponent(n)+`/actions`,{action:`effort`,effort:r,requestId:crypto.randomUUID(),surface:{component:`composer-effort`}});tn(e)}catch(i){e({refused:{...t().refused,[n]:{effort:r,error:i.message}}})}},async load(e){let{state:t}=await S(`GET`,`/agents/`+encodeURIComponent(e)+`/effort`);tn(t)},invalidate(){for(let e of Object.keys(t().states))t().load(e).catch(()=>{})},dismiss(n){t().refused[n]&&e({refused:$t(t().refused,n)})}}));function rn(e){return e&&Je(e)?e.desiredEffort:void 0}function an(e,t){e===`agent.effort`&&tn(JSON.parse(t))}var on={changes:[],coveredFrom:null},sn=new Set;function cn(e,t){let n=new Set(e.map(e=>e.commandId)),r=t.filter(e=>!n.has(e.commandId));return r.length?[...e,...r].sort((e,t)=>e.at-t.at):e}var ln=w((e,t)=>({byAgent:{},epoch:0,async ensureCovered(n,r){let i=t().byAgent[n]??on;if(i.coveredFrom!==null&&r>=i.coveredFrom)return;let a=`${n}:${r}`;if(!sn.has(a)){sn.add(a);try{let a=i.coveredFrom===null?``:`&to=${i.coveredFrom}`,o=[],s;do{let e=s?`&afterAt=${s.at}&afterId=${encodeURIComponent(s.id)}`:``,t=await S(`GET`,`/agents/${encodeURIComponent(n)}/effort-changes?from=${r}${a}${e}`);o.push(...t.changes),s=t.next}while(s);let c=t().byAgent[n]??on,l=c.coveredFrom===null?r:Math.min(c.coveredFrom,r);e({byAgent:{...t().byAgent,[n]:{changes:cn(c.changes,o),coveredFrom:l}}})}catch{}finally{sn.delete(a)}}},note(n){let r=t().byAgent;for(let e of n){let t=r[e.agentId]??on,n=cn(t.changes,[e]);n!==t.changes&&(r={...r,[e.agentId]:{...t,changes:n}})}r!==t().byAgent&&e({byAgent:r})},invalidate(){e({byAgent:Object.fromEntries(Object.entries(t().byAgent).map(([e,t])=>[e,{...t,coveredFrom:null}])),epoch:t().epoch+1})}}));function un(e,t){if(e!==`command.succeeded`||!t.includes(`"agent.setEffort"`))return;let n=qe(JSON.parse(t).command);n&&ln.getState().note([n])}var dn=[];function fn(e,t){let n=ln(t=>e?t.byAgent[e]:void 0),r=ln(e=>e.epoch),i=n?.coveredFrom??null;return(0,C.useEffect)(()=>{e&&t!==null&&(i===null||t<i)&&ln.getState().ensureCovered(e,t)},[e,t,i,r]),n?.changes??dn}function M(e,t){return(e?.providers??[]).filter(e=>f(t?.find(t=>t.provider===e)))}function pn(e,t,n){let r=M(e,t);return{providers:n&&e?.providers.includes(n)&&!r.includes(n)?[...r,n]:r,enabled:r}}function N(e,t){return M(e,t)[0]??p().find(e=>f(t?.find(t=>t.provider===e)))??``}function mn(e,t){return c(e,t)?.models.filter(e=>!e.disabled)??[]}function hn(e,t,n,r){return c(e,r)?.effortSwitch!==!0||n===`headless`?[]:mn(e,r).find(e=>e.alias===t)?.efforts??[]}var P=`band`;function gn(e,t){return e.includes(t)?t:P}function _n(e,t){let n=t.indexOf(e);if(!(n<0))return{floor:t[Math.max(0,n-1)],ceiling:t[Math.min(t.length-1,n+1)]}}function F(e,t){let n=c(e,t);return n?l(n).alias??``:``}function vn(e,t){return e.filter(e=>e.status===`online`&&v(t,e.baseDir)).sort((e,t)=>fe(t.baseDir).length-fe(e.baseDir).length)[0]}function yn(e,t){for(let n of e){let e=n.managedAgents.find(e=>e.agentId===t);if(e)return{orchestrator:n,managed:e}}return null}function bn(e,t){let n=yn(e,t.id)?.orchestrator;if(n)return n;let r=typeof t.meta?.cwd==`string`?t.meta.cwd:``;return r?vn(e,r):void 0}var xn=`/settings/chat/scroll`,Sn=150,Cn=1e3,I=new Map,wn=new Map,L=new Set,R=null,Tn=null,En=!1;function Dn(e){if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.stick!=`boolean`||t.topKey!==null&&typeof t.topKey!=`string`||typeof t.offset!=`number`||!Number.isFinite(t.offset))return null;let n=typeof t.anchorMessageId==`number`&&Number.isFinite(t.anchorMessageId)?t.anchorMessageId:void 0,r=typeof t.anchorEndMessageId==`number`&&Number.isFinite(t.anchorEndMessageId)?t.anchorEndMessageId:void 0,i=t.mode===`follow`||t.mode===`anchored`?t.mode:void 0;return{...i===void 0?{}:{mode:i},stick:t.stick,topKey:t.topKey,...n===void 0?{}:{anchorMessageId:n},...r===void 0?{}:{anchorEndMessageId:r},offset:t.offset}}function On(e){if(!e||typeof e!=`object`)return 0;let t=e.updatedAt;return typeof t==`number`&&Number.isFinite(t)?t:0}function kn(e){return I.get(e)}function An(e,t,n){I.delete(e),I.set(e,t),wn.set(e,n)}function jn(e,t){An(e,t,Date.now()),L.add(e),Mn(),zn(),Fn()}function Mn(){for(;I.size>Sn;){let e=I.keys().next().value;if(e===void 0)break;I.delete(e),wn.delete(e),L.delete(e)}}function Nn(e){let t={};for(let n of e){let e=I.get(n);e&&(t[n]={...e,updatedAt:wn.get(n)??Date.now()})}return t}function Pn(e){if(!(!e||typeof e!=`object`)){for(let[t,n]of Object.entries(e)){if(L.has(t))continue;let e=Dn(n);if(!e)continue;let r=On(n),i=wn.get(t);i!==void 0&&i>=r||An(t,e,r)}Mn()}}function Fn(){R!==null&&clearTimeout(R),R=setTimeout(()=>{In(!1)},Cn)}async function In(e){if(L.size===0)return;let t=L;L=new Set;let n=Nn(t);try{Pn((await S(`PUT`,xn,{value:n},e?{keepalive:!0}:void 0)).value)}catch{for(let e of t)L.add(e)}}function Ln(){R!==null&&(clearTimeout(R),R=null),In(!0)}async function Rn(){try{Pn((await S(`GET`,xn)).value)}catch{}}function zn(){En||typeof document>`u`||typeof window>`u`||(En=!0,document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`?Ln():Rn()}),window.addEventListener(`pagehide`,Ln))}function Bn(){return zn(),Tn||(Tn=Rn(),Tn)}function Vn(e,t){let n=0,r=0;return{async hydrate(i){let a=n;try{let o=t((await S(`GET`,e)).value);n===a&&r===0&&o!==void 0&&i(o)}catch{}},async save(t){n+=1,r+=1;try{await S(`PUT`,e,{value:t})}finally{--r}}}}var Hn=Vn(`/settings/chat/decisionsDock`,e=>{let t=e?.collapsed;return typeof t==`boolean`?t:void 0});function Un(e){return Hn.hydrate(t=>e({decisionsDockCollapsed:t}))}var Wn=(e,t)=>({openDecisions:[],decisionsDockCollapsed:!1,async setDecisionsDockCollapsed(n){let r=t().decisionsDockCollapsed;e({decisionsDockCollapsed:n});try{await Hn.save({collapsed:n})}catch(n){e({decisionsDockCollapsed:r}),t().showError(`Could not save panel state`,i(n),n)}},async fetchOpenDecisions(){try{let{decisions:n}=await S(`GET`,`/decisions?status=open`),r=O(t().openDecisions,n);r!==t().openDecisions&&e({openDecisions:r})}catch{}},async declineVaultRequest(n){try{return await S(`POST`,`/decisions/${n}/decline`),e({openDecisions:t().openDecisions.filter(e=>e.id!==n)}),t().showNotification(`Secret request #${n} declined`),!0}catch(e){return t().showError(`Decline failed`,i(e),e),t().fetchOpenDecisions(),!1}},async answerDecision(n,r,a){try{await S(`POST`,`/decisions/${n}/answer`,{answers:r,...a?{note:a}:{}});let i=t().openDecisions.find(e=>e.id===n);e({openDecisions:t().openDecisions.filter(e=>e.id!==n)});let o=i?.kind===`action`?r[Ue]:void 0;return t().showNotification(typeof o==`string`?`${o}: ${i.title}`:`Decision #${n} answered`),!0}catch(e){return t().showError(`Answer failed`,i(e),e),t().fetchOpenDecisions(),!1}}}),Gn=Vn(`/settings/chat/filters`,d);function Kn(e){return Gn.hydrate(t=>e({chatFilters:t}))}var qn=(e,t)=>({chatFilters:u,async setChatFilters(n){let r=t().chatFilters;e({chatFilters:n});try{await Gn.save(n)}catch(n){e({chatFilters:r}),t().showError(`Could not save chat filters`,i(n),n)}}}),Jn={expiresDate:``,expiresTime:``,revision:``,sourceUrl:``,hintEnabled:!0},Yn=e=>String(e).padStart(2,`0`),Xn=`23:59:59.999`;function Zn(e){let t=e?new Date(e):null;if(!t||Number.isNaN(t.getTime()))return{expiresDate:``,expiresTime:``};let n=t.getHours()===23&&t.getMinutes()===59&&t.getSeconds()===59;return{expiresDate:`${t.getFullYear()}-${Yn(t.getMonth()+1)}-${Yn(t.getDate())}`,expiresTime:n?``:`${Yn(t.getHours())}:${Yn(t.getMinutes())}`}}function Qn(e){if(!e.expiresDate)return null;let t=new Date(`${e.expiresDate}T${e.expiresTime||Xn}`);return!Number.isNaN(t.getTime())&&Zn(t.toISOString()).expiresDate===e.expiresDate?t.getTime():NaN}function $n(e){let{expiresDate:t,expiresTime:n}=Zn(e);return n?`${t} ${n}`:t}var er=(e,t)=>e.expiresDate===t.expiresDate&&e.expiresTime===t.expiresTime,tr=(e,t)=>({...Zn(e.expiresAt),revision:e.revision??``,sourceUrl:e.sourceUrl??``,hintEnabled:t});function nr(e,t={}){let n={},r=t.metadata??{},i={expiresAt:er(e,Zn(r.expiresAt))?r.expiresAt??``:e.expiresDate?new Date(Qn(e)).toISOString():``,revision:e.revision.trim(),sourceUrl:e.sourceUrl.trim()};for(let e of[`expiresAt`,`revision`,`sourceUrl`])i[e]!==(r[e]??``)&&(n[e]=i[e]||null);return e.hintEnabled!==(t.hintEnabled??!0)&&(n.hintEnabled=e.hintEnabled),Object.keys(n).length?n:void 0}function rr(e,t={},n=Date.now()){let r=Qn(e);return e.expiresBad||Number.isNaN(r)?`Expiry is not a real date.`:!e.expiresDate&&e.expiresTime?`Pick a date for the expiry time.`:r!==null&&r<=n&&!er(e,Zn(t.metadata?.expiresAt))?`Expiry is in the past.`:e.sourceUrl.trim()&&!/^https?:\/\/[^\s/@]+(?:[/?#]\S*)?$/i.test(e.sourceUrl.trim())?`Source URL must start with http:// or https:// and carry no credentials.`:``}function ir(e,t){let n=e?new Date(e).getTime():NaN;return Number.isFinite(n)?n<=t?{expired:!0,label:`expired ${y(t,n)} ago`}:{expired:!1,label:`expires in ${y(n,t)}`}:null}var ar=(e,t)=>e?`${e}${t?` · …${t}`:``}`:``,or={expiresAt:`expiry`,revision:`revision`,sourceUrl:`source URL`,hintEnabled:`hint`};function sr(e){try{let{field:t,oldValue:n,newValue:r}=JSON.parse(e??``);if(!t)return e??``;let i=e=>e==null?`none`:t===`hintEnabled`?e?`on`:`off`:String(e);return`${or[t]??t}: ${i(n)} → ${i(r)}`}catch{return e??``}}var cr=e=>{let t=e.projectId?`project:${e.projectId}:${e.name}`:e.name;return e.environment&&e.environment!==`prod`?`${t}@${e.environment}`:t},lr=`vault:global`,ur=/^[A-Za-z_][A-Za-z0-9_.-]{0,255}(@[a-z0-9-]{1,32})?$/,dr=e=>e.teamId===lr,fr=(e,t)=>dr(e)&&e.expiresAt!==void 0&&e.expiresAt<=t,pr=(e,t)=>e.reduce((e,n)=>e+ +!fr(n,t),0);function mr(e){let t=e.replace(/^Set secret /,``),n=/^project:([A-Za-z0-9_-]+):(.+)$/.exec(t);return n?{name:n[2],scope:`project`,projectId:n[1]}:{name:t,scope:`global`}}var hr=(e,t)=>t.tab===`global`?!e.projectId:!!e.projectId&&e.projectId===t.projectId;function gr(e){let t=e.message??``,n=/^vault_key_(missing|mismatch|unavailable)$/.exec(t);return e.status===503&&n?{status:`key-problem`,code:t}:e.status===503&&t===`unavailable`||e.status===403||e.status===404?{status:`off`}:typeof e.status==`number`?{status:`error`,message:t||`HTTP ${e.status}`}:null}var _r={requested:`Requested`,set:`Set`,rotated:`Rotated`,resolved:`Used`,deleted:`Deleted`,"metadata-edited":`Metadata edited`},vr=e=>_r[e]??e;function yr(e){let t=e.detail??``;return t?e.action===`requested`&&t.startsWith(`decision:`)?`decision #${t.slice(9)}`:e.action===`resolved`?`command ${t}`:e.action===`metadata-edited`?sr(t):t.startsWith(`requestedBy:`)?`requested by ${t.slice(12)}`:t:``}function br(e){let t=e.detail??``;return e.action===`requested`&&/^decision:\d+$/.test(t)?{decisionId:Number(t.slice(9))}:t.startsWith(`requestedBy:`)?{requestedBy:t.slice(12)}:{}}var xr=e=>/^agent-([0-9a-f]{8})(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.exec(e)?.[1]??null;function Sr(e,t){return new URL(e.replace(/^\//,``),t).toString()}var Cr={vault_key_missing:{title:`Vault key is missing`,body:"Secrets exist but the key file is gone. Relay never makes a new key while secrets exist. Put the key from `secrets export-key` back at $AGENT_RELAY_HOME/secrets/vault.key and restart Relay."},vault_key_mismatch:{title:`Vault key does not match`,body:"The key file on the hub cannot open the stored secrets. Restore the original key from your `secrets export-key` backup and restart Relay."},vault_key_unavailable:{title:`Vault key cannot be read`,body:`The key file exists but the hub cannot read it. Check its owner and permissions (0600), then restart Relay.`}};async function wr(e){try{let[{secrets:t},n,r]=await Promise.all([S(`GET`,`/secrets?scope=all&environment=*`),S(`GET`,`/projects`).then(e=>e.projects??[],()=>null),S(`GET`,`/secrets/backup`).catch(()=>null)]);e({vault:{status:`ready`,secrets:t},vaultBackup:r,...n?{vaultProjects:n}:{}})}catch(t){let n=gr(t);n&&e({vault:n})}}var Tr=e=>({vault:{status:`unknown`},vaultProjects:[],vaultBackup:null,fetchVault:()=>wr(e)});async function Er(e){return(await S(`GET`,`/secrets/${encodeURIComponent(e)}/audit`)).audit}async function Dr(e,t,n,r=`prod`){let i=await S(`POST`,`/mcp`,{jsonrpc:`2.0`,id:1,method:`tools/call`,params:{name:`relay_secret_request`,arguments:{name:r===`prod`?e:`${e}@${r}`,reason:t,...n?{scope:`project`,project:n}:{}}}});if(i.error)throw Error(i.error.message??`Secret request failed`);let a=i.result?.structuredContent;if(i.result?.isError||typeof a?.decisionId!=`number`)throw Error(i.result?.content?.[0]?.text??`Secret request failed`);let o=await S(`GET`,`/decisions/${a.decisionId}`);return{decisionId:a.decisionId,name:a.name??e,formUrl:o.formUrl,createdAt:o.createdAt}}async function Or(e){return S(`POST`,`/secrets`,{name:e.name,value:e.value,environment:e.environment??`prod`,...e.projectId?{scope:`project`,project:e.projectId}:{},...e.description?{description:e.description}:{},...e.metadata?{metadata:e.metadata}:{}})}async function kr(e,t,n,r){return S(`PUT`,`/secrets/${encodeURIComponent(e)}`,{value:t,...n?{reason:n}:{},...r?{metadata:r}:{}})}async function Ar(e,t){return S(`PATCH`,`/secrets/${encodeURIComponent(e)}/metadata`,t)}async function jr(e){return(await S(`GET`,`/secrets/${encodeURIComponent(e)}`)).versions}async function Mr(e){return S(`DELETE`,`/secrets/${encodeURIComponent(e)}`)}async function Nr(e){let t=await Promise.all(e.map(e=>S(`GET`,`/agents/${encodeURIComponent(e)}`).then(t=>[e,t.label||t.name],()=>null)));return Object.fromEntries(t.flatMap(e=>e&&e[1]?[e]:[]))}async function Pr(){return S(`POST`,`/secrets/backup`,{})}function z(e,t,n){if(e.length<=t)return e;let r=new Set(e.map((e,t)=>({item:e,index:t,rank:n(e)})).sort((e,t)=>t.rank-e.rank||t.index-e.index).slice(0,t).map(({index:e})=>e));return e.filter((e,t)=>r.has(t))}var Fr=3e4,B=null,V=new WeakMap;function Ir(e){let t=V.get(e);t!==void 0&&clearTimeout(t),V.delete(e)}function Lr(e){if(o(e.from)||o(e.to))return!0;let t=typeof e.payload?.direction==`string`?e.payload.direction:void 0;return e.kind===`channel.event`&&t===`inbound`}var Rr={enabled:!0,browserEnabled:!1,messages:!0,replies:!0,errors:!0};function zr(e,t){return t.enabled?e.kind===`message`?t.messages:e.kind===`reply`?t.replies:e.kind===`decision`||t.errors:!1}function Br(){return typeof window<`u`&&`Notification`in window}function Vr(){return Br()?window.Notification.permission:`unsupported`}function Hr(e,t){return!zr(e,t.notificationSettings)||!t.notificationSettings.browserEnabled||Vr()!==`granted`||bt(e,t)?!1:_t()||t.view!==`chat`}function Ur(e,t){if(Vr()===`granted`)try{let n=new window.Notification(e.title,{body:e.body,tag:e.id,icon:`icons/humwick-192.png`,data:{view:e.view,threadPeer:e.threadPeer,agentId:e.agentId,messageId:e.messageId}});n.onclick=()=>{window.focus(),t(),n.close()}}catch{}}var Wr=(e,t)=>({notification:null,toastNotification:null,notifications:[],notificationUnread:0,notificationSettings:{...Rr},notificationPermission:Vr(),confirmModal:{show:!1,title:``,message:``,action:null},errorModal:{show:!1,title:``,message:``},openConfirm(t,n,r){e({confirmModal:{show:!0,title:t,message:n,action:r}})},showError(n,r,i,a){let o=t();if(!a?.force&&ge(i)&&(!o.connected||o.connectionError))return;let s=`${n} ${r}`;B&&B.key===s&&!B.dismissed&&Date.now()-B.at<Fr||(B={key:s,at:Date.now(),dismissed:!1},e({errorModal:{show:!0,title:n,message:r}}))},dismissError(){B&&={...B,dismissed:!0},e({errorModal:{show:!1,title:``,message:``}})},showNotification(n){Ir(t),e({notification:n,toastNotification:null});let r=setTimeout(()=>{V.delete(t),e({notification:null})},3e3);V.set(t,r)},handleRelayNotification(n){let r=t();if(!zr(n,r.notificationSettings)||r.notifications.some(e=>e.id===n.id))return;if(n.messageId&&(n.kind===`message`||n.kind===`reply`)){let e=r.messages.find(e=>e.id===n.messageId);if(e&&!Lr(e))return}let i=bt(n,r),a=`${n.title}: ${n.body}`;if(e({notifications:[n,...r.notifications].slice(0,100),notificationUnread:i?r.notificationUnread:Math.min(99,r.notificationUnread+1),notification:i?r.notification:a,toastNotification:i?r.toastNotification:n}),!i){Ir(t);let r=n.id,i=setTimeout(()=>{V.delete(t),t().toastNotification?.id===r&&e({notification:null,toastNotification:null})},4500);V.set(t,i)}Hr(n,r)&&Ur(n,()=>t().openNotification(n)),i&&n.threadPeer&&n.messageId&&t().markInboxThreadReadTo(n.threadPeer,n.messageId)},async openNotification(n){if(e({notificationUnread:0}),n.threadPeer&&(t().openInboxThread(n.threadPeer),n.messageId&&t().markInboxThreadReadTo(n.threadPeer,n.messageId)),n.view&&await t().switchView(n.view),n.agentId&&n.view===`agents`){let e=t().agentsById[n.agentId];e&&t().openAgentDetail(e)}},dismissToast(){Ir(t),e({notification:null,toastNotification:null})},markNotificationsRead(){e({notificationUnread:0})},clearNotifications(){e({notifications:[],notificationUnread:0})},async requestBrowserNotifications(){if(!Br()){e({notificationPermission:`unsupported`,notificationSettings:{...t().notificationSettings,browserEnabled:!1}}),t().showNotification(`Browser notifications are not supported here`);return}let n=await window.Notification.requestPermission();e({notificationPermission:n,notificationSettings:{...t().notificationSettings,browserEnabled:n===`granted`}}),t().showNotification(n===`granted`?`Browser notifications enabled`:`Browser notifications not enabled`)}}),Gr={active:ne,idle:se};function Kr(e){return(e??(typeof document>`u`?void 0:document))?.visibilityState===`hidden`}function qr(e,t=Kr()){return!e.autoRefresh||t?null:e.lowBandwidth?`idle`:Date.now()-e._lastInteractionAt<=3e4?`active`:`idle`}function Jr(e,t){return t?{stop:!0,reconcile:!1,tier:null}:{stop:!1,reconcile:!0,tier:qr(e,!1)}}function Yr(e,t,n=Date.now()){return t||e.lowBandwidth||e._pollTier!==`idle`?!1:n+Gr.active<(e._pollFireAt??1/0)}function Xr(e){e.clearTimer();let t=qr(e.cadenceInput(),e.hidden());t&&e.arm(t)}function Zr(e){if(Jr(e.cadenceInput(),e.hidden()).stop){e.clearTimer();return}e.reconcileAfterGap(),Xr(e)}function Qr(e,t){let n=e.cadenceInput();t-n._lastInteractionAt<1e3||(e.recordInteraction(t),Yr(n,e.hidden(),t)&&Xr(e))}var $r=e=>({voiceTtsEnabled:!1,voiceTtsLang:`en-US`,voiceTtsMode:`kokoro`,voiceTtsKokoroVoice:`am_michael`,voiceTtsBrowserVoice:``,voiceInputMode:`compose`,setVoiceTtsEnabled(t){A.setEnabled(t),e({voiceTtsEnabled:t})},setVoiceTtsLang(t){A.setLang(t),e({voiceTtsLang:t})},setVoiceTtsMode(t){A.setMode(t),e({voiceTtsMode:t})},setVoiceTtsKokoroVoice(t){A.setKokoroVoice(t),e({voiceTtsKokoroVoice:t})},setVoiceTtsBrowserVoice(t){A.setBrowserVoice(t),e({voiceTtsBrowserVoice:t})},setVoiceInputMode(t){e({voiceInputMode:t})}}),ei=null;function ti(e){let t=e.voiceTtsEnabled&&e.view===`chat`&&e.selectedInboxThread||null;t!==ei&&(ei=t,A.setActiveChat(t))}function ni(e){let t=Object.entries(e().agentChatByAgent).filter(([,e])=>e.loadedInitial).map(([e])=>e);return Promise.all(t.map(t=>e().gapFillAgentChat(t)))}function ri(e,t){ni(e);for(let e of[ln,nn])e.getState().invalidate();t||Promise.all([e().refreshLiveData({gap:!0}),e().refreshPlans(),e().refreshIssueRefs(),e().fetchWorkflowLiveRuns()])}var ii=[`chat`,`messages`];function ai(e){let t=[e.fetchOrchestrators(),e.fetchInboxState()];return ii.includes(e.view)&&t.push(e.fetchChatHistoryImports()),t}async function oi(e,t){t!==`shipping`&&(e.shippingBoard||e.shippingLoading)&&e.closeShipping(),t!==`workflows`&&(e.workflowRuns||e.workflowStats||e.workflowDefinitions||e.workflowLoading||e.workflowTab===`catalog`)&&e.closeWorkflows(),t===`shipping`&&await e.openShipping(),t===`workflows`&&await e.openWorkflows()}function si(e,t,n){e.shippingBoard&&(t===`workspace.status`||t===`ci.status`||t.startsWith(`task.`))&&e.shippingEvent(t,n),t===`workflow.changed`&&e.workflowChanged()}function ci(e){return!e||e.role===`admin`}async function li(e,t,n){let r=await fetch(new URL(`api`+e,Se()),{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`,...ye(Se()),...n?{"X-Agent-Relay-Token":n}:{}},body:JSON.stringify(t)}),i=await r.text(),a=i?JSON.parse(i):{};if(!r.ok)throw Object.assign(Error(typeof a.error==`string`?a.error:r.statusText),{status:r.status});return a}var ui=120,H=null,di=``,fi=null;function pi(e,t,n){di=n.accessToken,me(n.accessToken),be(!ci(n.user)),t({authToken:``,sessionUser:n.user}),H&&clearTimeout(H),H=setTimeout(()=>{gi(e,t)},Math.max(30,n.expiresIn-ui)*1e3)}function mi(){return di!==``}function hi(e){H&&clearTimeout(H),H=null,di&&me(``),di=``,be(!1),e({sessionUser:null})}function gi(e,t){let n=()=>li(`/auth/refresh`,{});return fi??=(navigator.locks?navigator.locks.request(`relay-auth-refresh`,n):n()).then(n=>(pi(e,t,n),!0)).catch(e=>((e.status===400||e.status===401)&&hi(t),!1)).finally(()=>{fi=null}),fi}async function _i(e){try{e({signInEnabled:(await(await fetch(new URL(`api/auth/providers`,Se()))).json()).invitesEnabled===!0})}catch{}}async function vi(e,t){t({authNeeded:!1,connectionError:!1}),e().connectSSE(),await e().refresh(),e().startAutoRefresh()}function yi(e,t){if(e().authNeeded)return;let n=()=>{e().authNeeded||(t({authNeeded:!0,connectionError:!1}),_i(t))};mi()?gi(e,t).then(e=>{e||n()}):n()}var bi=(e,t)=>({sessionUser:null,signInEnabled:!1,async signIn(n,r){pi(t,e,await li(`/auth/login`,{provider:`password`,username:n,password:r})),await vi(t,e)},async acceptInvite({code:n,handle:r,password:i,displayName:a}){pi(t,e,await li(`/auth/invites/accept`,{code:n,handle:r,password:i,...a?{displayName:a}:{}}))},async signOut(){t().disconnectSSE(),t().stopAutoRefresh(),await li(`/auth/logout`,{},di).catch(()=>void 0),window.location.reload()}}),xi={enabled:null,sessions:{},limits:null,fleetError:``},Si=()=>({browser:xi}),Ci=new Set([`starting`,`running`,`stopping`]),wi=100,Ti=e=>Ci.has(e.status);function U(e){return e().browser??xi}function Ei(e,t,n){let r={...e};if(n)for(let[e,t]of Object.entries(r))Ti(t)&&!n.has(e)&&delete r[e];for(let e of t){let t=r[e.id];(!t||t.updatedAt<=e.updatedAt)&&(r[e.id]=e)}let i=Object.values(r).filter(e=>!Ti(e)).sort((e,t)=>t.updatedAt-e.updatedAt);for(let e of i.slice(wi))delete r[e.id];return r}function Di(e){return e.status}async function Oi(e,t){try{let n=await S(`GET`,`/browser/sessions?active=1`),r=U(t);e({browser:{...r,enabled:!0,limits:n.limits,fleetError:``,sessions:Ei(r.sessions,n.sessions,new Set(n.sessions.map(e=>e.id)))}})}catch(n){let r=Di(n),i=U(t);e(r===404?{browser:{...i,enabled:!1}}:{browser:{...i,enabled:r===403||i.enabled,fleetError:r===403?`Only an operator sees every browser session.`:n.message}})}}async function ki(e,t,n){try{let r=await S(`GET`,`/browser/sessions?agentId=${encodeURIComponent(n)}&limit=1`),i=U(t);e({browser:{...i,enabled:!0,sessions:Ei(i.sessions,r.sessions)}})}catch(n){Di(n)===404&&e({browser:{...U(t),enabled:!1}})}}async function Ai(e,t,n){let r=await S(`DELETE`,`/browser/sessions/${encodeURIComponent(n)}`),i=U(t);e({browser:{...i,sessions:Ei(i.sessions,[r.session])}})}function ji(e,t,n,r){if(!n.startsWith(`browser.session.`))return!1;let i=JSON.parse(r),a=U(t);return e({browser:{...a,enabled:!0,sessions:Ei(a.sessions,[i])}}),!0}function Mi(e,t){let n=null;for(let r of Object.values(e))r.agentId===t&&(!n||r.createdAt>n.createdAt)&&(n=r);return n}function Ni(e){let t=a(e.result)?e.result:void 0;return s(e.error)??s(t?.error)??s(t?.reason)??s(t?.message)??`spawn command failed`}function Pi(e){let t=e.id||e.correlationId||`${e.type}:${e.updatedAt??e.createdAt??Date.now()}`,n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)>>>0;return-Math.max(1,n)}function Fi(e){try{let t=JSON.parse(e);return typeof t?.namespace==`string`?t.namespace:void 0}catch{return}}function Ii(e,t){if(t.clientId){let n=e.findIndex(e=>e.clientId===t.clientId);if(n>=0){let r=[...e];return r[n]=t,r}}return D(e,t)}var Li=[`pointerdown`,`pointermove`,`keydown`,`wheel`,`touchstart`];function Ri(e,t){return{cadenceInput:()=>{let t=e();return{autoRefresh:t.autoRefresh,lowBandwidth:t.lowBandwidth,_lastInteractionAt:t._lastInteractionAt,_pollTier:t._pollTier,_pollFireAt:t._pollFireAt}},hidden:()=>Kr(),clearTimer:()=>{let n=e();n._refreshTimer&&clearTimeout(n._refreshTimer),t({_refreshTimer:null,_pollTier:null,_pollFireAt:null})},arm:n=>{let r=Date.now()+Gr[n];t({_refreshTimer:setTimeout(()=>{e().refreshLiveData(),e().startAutoRefresh()},Gr[n]),_pollTier:n,_pollFireAt:r})},recordInteraction:e=>t({_lastInteractionAt:e}),reconcileAfterGap:()=>ri(e,!1)}}function zi(e){if(typeof window>`u`||typeof document>`u`)return()=>{};let t=()=>e().noteUserActivity(),n=()=>e().handleVisibilityChange();for(let e of Li)window.addEventListener(e,t,{passive:!0});return document.addEventListener(`visibilitychange`,n),()=>{for(let e of Li)window.removeEventListener(e,t);document.removeEventListener(`visibilitychange`,n)}}var Bi=e=>(t,n)=>({theme:`dark`,view:`overview`,autoRefresh:!0,lowBandwidth:!1,mobileMenuOpen:!1,commandPaletteOpen:!1,commandQuery:``,connected:!1,connectionError:!1,quotaSeq:0,authNeeded:!1,authToken:``,stats:{},fileOrchestratorId:``,filePath:``,fileSelectedPath:``,fileSelectedLine:0,fileOverlayOpen:!1,_es:null,_refreshTimer:null,_pollTier:null,_pollFireAt:null,_lastInteractionAt:Date.now(),_pollDetachListeners:null,_refreshInFlight:!1,set:e=>t(e),async init(){await e.waitForHydration();let r=n().authToken;r?me(r):mi()||await gi(n,t),pe(n().view),A.setEnabled(n().voiceTtsEnabled),A.setLang(n().voiceTtsLang),A.setMode(n().voiceTtsMode),A.setKokoroVoice(n().voiceTtsKokoroVoice),A.setBrowserVoice(n().voiceTtsBrowserVoice),ti(n()),he(()=>yi(n,t)),Bn(),t({notificationPermission:Vr()}),n().startClock();try{t({stats:await S(`GET`,`/stats`)})}catch(e){if(e.status===401){t({authNeeded:!0}),_i(t);return}}await n().refresh(),n().fetchAllIssueRefs(),n().connectSSE(),n().startAutoRefresh(),n()._pollDetachListeners||t({_pollDetachListeners:zi(n)})},async switchView(e){pe(e),t({view:e,mobileMenuOpen:!1});let r=n();await oi(r,e),ii.includes(e)&&await Promise.all([r.fetchMessages(),r.fetchInboxState(),r.fetchChatHistoryImports(),r.fetchDeliverableTasks({unfiltered:!0})]),e===`activity`&&await Promise.all([r.fetchMessages(),r.fetchPairs(),r.fetchTasks(),r.fetchActivityEvents()]),e===`work`&&await Promise.all([r.fetchMessages(),r.fetchTasks()]),e===`pairs`&&await r.fetchPairs(),e===`channels`&&await Promise.all([r.fetchChannels(),r.fetchIntegrations()]),e===`connectors`&&await r.fetchConnectors(),e===`integrations`&&await r.fetchIntegrations(),e===`tasks`&&await Promise.all([r.fetchTasks(),r.fetchDeliverableTasks()]),e===`backlog`&&await r.fetchBacklog(),e===`dependencies`&&await r.fetchTaskGraph(),e===`teams`&&await Promise.all([r.fetchTeams(),r.fetchTeamOutcomeAggregates(),r.refreshIssueRefs()]),e===`automation`&&await Promise.all([r.fetchAutomations(),r.fetchAutomationRuns()]),e===`maintenance`&&await Promise.all([r.fetchMaintenanceJobs(),r.fetchMaintenanceRunning()]),e===`workspaces`&&await Promise.all([r.fetchWorkspaces(),r.fetchOrchestrators(),r.fetchAgents()]),(e===`files`||e===`orchestrators`)&&await r.fetchOrchestrators(),e===`analytics`&&await r.fetchAnalytics(),e===`fleet`&&await Promise.all([r.fetchHosts(),r.fetchOrchestrators(),Oi(t,n)])},startClock(){j.getState().start()},stopClock(){j.getState().stop()},startAutoRefresh(){Xr(Ri(n,t))},stopAutoRefresh(){Ri(n,t).clearTimer()},noteUserActivity(){Qr(Ri(n,t),Date.now())},handleVisibilityChange(){Zr(Ri(n,t))},async apiCall(e,t,n){return S(e,t,n)},async openFilesAt(e){let r=n();t({fileOrchestratorId:e.orchestratorId||vn(r.orchestrators,e.selectedPath||e.path)?.id||r.orchestrators.find(e=>e.status===`online`)?.id||``,filePath:e.path,fileSelectedPath:e.selectedPath||``,fileSelectedLine:e.line||0,fileOverlayOpen:e.overlay===!0}),e.overlay||await n().switchView(`files`)},async openFilesForAgent(e,t=!1){let r=typeof e.meta?.cwd==`string`?e.meta.cwd:``;if(!r){n().showNotification(`Agent has no cwd`);return}let i=bn(n().orchestrators,e);if(!i){n().showNotification(`No online orchestrator covers that cwd`);return}await n().openFilesAt({orchestratorId:i.id,path:r,overlay:t})},closeFileOverlay(){t({fileOverlayOpen:!1})},async refresh(){let e=n();Un(t),Kn(t),wr(t),await Promise.all([e.fetchStats(),e.fetchHealth(),e.fetchAgents(),e.fetchUsers(),e.fetchOrchestrators(),e.fetchPairs(),e.fetchMessages(),e.fetchTasks(),e.fetchDeliverableTasks({unfiltered:!0}),e.fetchChannels(),e.fetchConnectors(),e.fetchIntegrations(),e.fetchAutomations(),e.fetchAutomationRuns(),e.fetchManagedPolicies(),e.fetchAgentProfiles(),e.fetchToolGroupCatalog(),e.fetchWorkspaces(),e.fetchInboxState(),e.fetchActivityEvents(),e.fetchChatHistoryImports(),e.fetchProviderCatalog(),e.fetchOpenDecisions(),e.fetchWorkflowLiveRuns(),e.fetchMaintenanceJobs(),e.fetchMaintenanceRunning()])},async refreshLiveData(e){if(!n().authNeeded){if(n()._refreshInFlight){e?.gap&&await Promise.all(ai(n()));return}t({_refreshInFlight:!0});try{try{let e=gt(n().stats,await S(`GET`,`/stats`));n().connectionError?t({stats:e,connectionError:!1}):e!==n().stats&&t({stats:e})}catch(e){if(e.status===401)return;n().connectionError||t({connectionError:!0});return}let r=n(),i=[r.fetchHealth(),r.fetchAgents(),r.fetchPairs(),r.fetchMessages(),r.fetchTasks(),r.fetchManagedPolicies(),r.fetchOpenDecisions()],a=r.view;e?.gap&&i.push(...ai(r)),ii.includes(a)&&i.push(r.fetchDeliverableTasks({unfiltered:!0})),a===`activity`&&i.push(r.fetchActivityEvents()),a===`automation`&&i.push(r.fetchAutomations(),r.fetchAutomationRuns()),a===`channels`&&i.push(r.fetchChannels(),r.fetchIntegrations()),a===`connectors`&&i.push(r.fetchConnectors()),a===`integrations`&&i.push(r.fetchIntegrations()),a===`maintenance`&&i.push(r.fetchMaintenanceJobs(),r.fetchMaintenanceRunning()),(a===`profiles`||a===`projects`)&&i.push(r.fetchAgentProfiles()),a===`workspaces`&&i.push(r.fetchWorkspaces()),a===`analytics`&&i.push(r.fetchAnalytics()),a===`teams`&&i.push(r.fetchTeams(),r.fetchTeamOutcomeAggregates(),r.refreshIssueRefs()),r.agentDetailOpen&&r.agentDetailId&&i.push(r.fetchAgentIssueActivity(r.agentDetailId)),a===`tasks`&&i.push(r.fetchDeliverableTasks()),a===`backlog`&&i.push(r.fetchBacklog()),a===`dependencies`&&i.push(r.fetchTaskGraph()),a===`fleet`&&i.push(r.fetchHosts(),Oi(t,n)),(a===`orchestrators`||a===`fleet`)&&i.push(r.fetchOrchestrators()),a===`secrets`&&i.push(wr(t)),r.taskDetailOpen&&r.taskDetailId&&i.push(r.fetchTaskDetail(r.taskDetailId)),await Promise.all(i)}finally{t({_refreshInFlight:!1})}}},async fetchStats(){try{let e=gt(n().stats,await S(`GET`,`/stats`));e!==n().stats&&t({stats:e})}catch{}},connectSSE(){n().disconnectSSE(),t({_es:ve(n().authToken,{connected:(e={})=>{t(n().connectionError?{connected:!0,connectionError:!1}:{connected:!0}),ri(n,!!e.replay?.available)},disconnected:()=>t({connected:!1}),message:(e,r)=>{if(e!==`connected`&&(si(n(),e,r),!ji(t,n,e,r))){if(e===`replay.gap`){ri(n,!1);return}if(e===`message.new`){let e=JSON.parse(r);if(e.kind===`session`&&!o(e.from)){let t=e.payload?.session;t?.type===`response`&&t?.origin===`provider`&&A.onResponse(h(e),e.body)}let i=n();i.messages.some(t=>t.id===e.id)||t({messages:z([...i.messages,e],500,e=>e.id)});let a=h(e),s=n().agentChatByAgent,c=new Set([e.from,e.to,e.resolvedToAgent].filter(e=>!!e));for(let t of c)s[t]&&n().appendChatTail(t,[e]);m(e)&&g(e)&&vt(a,i)&&n().markInboxThreadReadTo(a,e.id);return}if(e===`message.queued`||e===`message.expired`||e===`message.delivery_updated`||e===`message.reaction_updated`||e===`message.finalized`){let e=JSON.parse(r);t({messages:z(D(n().messages,e),500,e=>e.id)}),n().applyChatMessageUpdate(e);return}if(e===`notification.created`){n().handleRelayNotification(JSON.parse(r));return}if(e===`plan.created`||e===`plan.changed`){let e=JSON.parse(r),t=e.plan??e.data?.plan;if(t){let e=new Map(n().plansById[t.id]?.external?.flatMap(e=>e.title?[[e.taskId,e.title]]:[]));n().upsertPlan(t.external?{...t,external:t.external.map(t=>e.has(t.taskId)?{...t,title:e.get(t.taskId)}:t)}:t),t.external?.length&&n().fetchPlan({threadId:t.threadId,...t.channel?{channel:t.channel}:{}})}return}if(e===`plan.deleted`){let e=JSON.parse(r),t=e.plan??e.data?.plan,i=t?.id??e.planId??e.id??e.data?.planId??e.data?.id;(t||i)&&n().removePlan(t??i);return}if(e===`decision.changed`){n().fetchOpenDecisions(),n().view===`secrets`&&wr(t);return}if(e===`team.dissolved`){let e=JSON.parse(r);e.teamId&&n().markTeamDissolved({teamId:e.teamId,outcomeStatus:e.outcomeStatus,reason:e.reason}),Promise.all([n().fetchTeams(),n().fetchTeamOutcomeAggregates()]);return}if(e===`activity.created`){let e=JSON.parse(r);t({activityEvents:z(D(n().activityEvents,e),200,e=>ue(e.createdAt??e.ts))}),e.issueRefId&&n().fetchIssueRef(e.issueRefId),e.agentId&&n().agentDetailOpen&&n().agentDetailId===e.agentId&&n().fetchAgentIssueActivity(e.agentId);return}if(e===`workspace.status`){let e=JSON.parse(r),i=n().workspaces;t({workspaces:D(i,at(i.find(t=>t.id===e.id),e))});return}if(e===`agent.status`){let e=JSON.parse(r),i=n(),a=i.agentsById[e.id],o=et(a,e);if(t({agents:D(i.agents,o),agentsById:{...i.agentsById,[o.id]:o}}),i.livenessMismatches[o.id]&&o.status!==`offline`){let e={...i.livenessMismatches};delete e[o.id],t({livenessMismatches:e})}let s=i.commandStalls[o.id];if(s){let e=ut(o);if(e?.status&&lt.has(e.status)&&(e.timestamp??0)>s.ts){let e={...i.commandStalls};delete e[o.id],t({commandStalls:e})}}let c=ut(o),l=c?.status??ct(a,o);if(l){let e=c?.timestamp??Date.now(),n=c?.id||`agent-status:${o.id}:${l}:${e}`;t({chatStatusEvents:st(i.chatStatusEvents,o.id,l,e,n)})}return}if(e===`dashboard.presence`){let e=JSON.parse(r);e.agentId&&n().applyPresence(e.agentId,e.viewers??[]);return}if(e===`liveness.mismatch`){let e=JSON.parse(r);e.agentId&&t({livenessMismatches:{...n().livenessMismatches,[e.agentId]:{agentId:e.agentId,detail:e.detail??`Process reported running but relay marked it offline`,ts:Date.now(),policyName:e.policyName,spawnRequestId:e.spawnRequestId}}});return}if(e===`command.stalled`){let e=JSON.parse(r);if(e.agentId){let r=Date.now(),i=e.kind??`compact`,a=i===`clear`?`clear-stalled`:`compaction-stalled`;t({commandStalls:{...n().commandStalls,[e.agentId]:{agentId:e.agentId,kind:i,detail:e.detail??`A context command was requested but never started — the session may need manual intervention.`,ts:r,commandId:e.commandId}},chatStatusEvents:st(n().chatStatusEvents,e.agentId,a,r,`command-stalled:${e.agentId}:${e.commandId??r}`)})}return}if(!Ot(n(),e,r)){if(e===`provider-quota.updated`){t({quotaSeq:n().quotaSeq+1});return}if(e===`message.claimed`){let e=JSON.parse(r);t({messages:n().messages.map(t=>t.id===e.messageId?{...t,claimedBy:e.claimedBy,claimExpiresAt:e.claimExpiresAt}:t)});return}if(e===`message.claim_released`){let e=JSON.parse(r);t({messages:n().messages.map(t=>t.id===e.messageId?{...t,claimedBy:void 0,claimedAt:void 0,claimExpiresAt:void 0}:t)});return}if(e===`message.deleted`){let e=JSON.parse(r);t({messages:n().messages.filter(t=>t.id!==e.messageId)});return}if(e===`orchestrator.status`){let e=it(n().orchestrators,JSON.parse(r));e?t({orchestrators:e}):n().fetchOrchestrators();return}if(e===`orchestrator.removed`){let e=JSON.parse(r);t({orchestrators:n().orchestrators.filter(t=>t.id!==e.id)});return}if(e===`policy.state.changed`||e===`config.changed`){n().fetchManagedPolicies(),e===`config.changed`&&Fi(r)===`provider-enablement`&&n().fetchProviderCatalog(),e===`config.changed`&&Fi(r)===`provider-quota-config`&&t({quotaSeq:n().quotaSeq+1});return}if(an(e,r),un(e,r),e===`command.failed`){let e=JSON.parse(r).command;if(e?.type===`agent.spawn`){let r=Ni(e),i=typeof e.updatedAt==`number`?e.updatedAt:typeof e.createdAt==`number`?e.createdAt:Date.now(),o=a(e.params)?e.params:{},c=s(o.spawnRequestId)??e.correlationId,l=s(o.provider),u=`command:${e.id??c??i}:agent-spawn-failed`,d={id:Pi(e),clientId:u,kind:`state`,title:`agent.spawn · failed`,body:r,meta:[l,c].filter(Boolean).join(` · `)||e.target,icon:`ti-alert-triangle`,view:`agents`,createdAt:i,ts:i,metadata:{commandId:e.id,commandType:e.type,status:e.status??`failed`,target:e.target,provider:l,spawnRequestId:c}};t({activityEvents:z(Ii(n().activityEvents,d),200,e=>ue(e.createdAt??e.ts))}),n().showNotification(`Spawn failed: ${r}`)}return}if(e===`command.dispatched`||e===`command.succeeded`){let i=JSON.parse(r).command;if(i){let r=ft(i,e);if(r){let e=typeof i.updatedAt==`number`?i.updatedAt:typeof i.createdAt==`number`?i.createdAt:Date.now();t({chatStatusEvents:st(n().chatStatusEvents,dt(i),r,e,i.id?`command:${i.id}:${r}`:void 0)})}}return}if(e.startsWith(`task.`)){let e=JSON.parse(r);if(e.kind===`deliverable`){let r=n(),i=D(r.deliverableTasks,e),a=!r.deliverableStatusFilter||(r.deliverableStatusFilter===`owner-gone`?e.staleOwnerGone===!0:e.status===r.deliverableStatusFilter),o=e.deliverableStage??`none`,s=!r.deliverableStageFilter||o===r.deliverableStageFilter,c=!r.deliverableProjectFilter||e.projectId===r.deliverableProjectFilter;t({deliverableTasks:z(a&&s&&c?i:i.filter(t=>t.id!==e.id),200,e=>e.id)}),r.taskDetailById[e.id]&&t({taskDetailById:{...r.taskDetailById,[e.id]:e}})}else t({tasks:z(D(n().tasks,e),100,e=>e.id)})}}}}},`delta`)})},disconnectSSE(){let e=n()._es;e&&(e.close(),t({_es:null}))},openCommandPalette(){t({commandQuery:``,commandPaletteOpen:!0})},closeCommandPalette(){t({commandPaletteOpen:!1,commandQuery:``})},async runCommand(e){let{action:r,payload:i}=e;if(n().closeCommandPalette(),r===`openView`)await n().switchView(i.view);else if(r===`agentPreset`)t({agentPresetFilter:i.preset||``}),n().setShowOffline(!0),await n().switchView(`agents`);else if(r===`copy`)try{await navigator.clipboard?.writeText(i.value||``)}catch{}else if(r===`messageAgent`){let e=n().agentsById[i.agentId];e&&n().openComposeToAgent(e)}else r===`pairAgent`?n().openPairInvite(i.agentId):r===`filterTag`?(t({agentTagFilter:i.tag||``,tagFilter:i.tag||``}),await n().switchView(`agents`)):r===`exportActivity`&&n().exportActivity(i.format||`markdown`)},async saveTokenAndRefresh(){let e=n().authToken;me(e);try{await S(`GET`,`/stats`)}catch(e){if(e.status===401){t({authNeeded:!0});return}}e&&hi(t),await vi(n,t)},destroy(){he(null),n()._pollDetachListeners?.(),t({_pollDetachListeners:null}),n().disconnectSSE(),n().stopAutoRefresh(),n().stopClock()}}),Vi=(e,t)=>({users:[],usersById:{},presenceByAgent:{},async fetchUsers(){try{let n=await S(`GET`,`/users`),r=O(t().users,n);if(r===t().users)return;let i={};for(let e of r)i[e.id]=e;e({users:r,usersById:i})}catch{}},applyPresence(n,r){let i=t().presenceByAgent;if(!t().agentsById[n]||r.length===0){if(!(n in i))return;let t={...i};delete t[n],e({presenceByAgent:t});return}e({presenceByAgent:{...i,[n]:r}})},async announcePresence(e,n,r){try{let i=await S(`POST`,`/agents/`+encodeURIComponent(e)+`/presence`,{typing:n,...r?{leaving:!0}:{}});t().applyPresence(e,i.viewers??[])}catch{}}}),Hi=800,W=new Map,Ui=!1,Wi=6e4;function Gi(e,t){let n={keepalive:t.length<Wi};t?S(`PUT`,`/inbox/drafts`,{operatorId:oe,peerId:e,body:t},n).catch(()=>{}):S(`DELETE`,`/inbox/drafts?operatorId=`+encodeURIComponent(oe)+`&peerId=`+encodeURIComponent(e),void 0,n).catch(()=>{})}function Ki(){Ui||typeof document>`u`||typeof window>`u`||(Ui=!0,document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&Ji()}),window.addEventListener(`pagehide`,()=>Ji()))}function qi(e,t){for(let[n,r]of Array.from(W))e(n)&&(clearTimeout(r.timer),W.delete(n),t&&Gi(n,r.value))}function Ji(e){qi(t=>e===void 0||t===e,!0)}function Yi(e){qi(t=>e===void 0||t===e,!1)}function Xi(e,t){Ki(),qi(t=>t!==e,!0);let n=W.get(e);n&&clearTimeout(n.timer);let r=setTimeout(()=>{let t=W.get(e);W.delete(e),t&&Gi(e,t.value)},Hi);W.set(e,{value:t,timer:r})}var G={kind:`follow`};function Zi(e){if(!e||(e.mode?e.mode===`follow`:e.stick))return G;let{topKey:t,anchorMessageId:n,anchorEndMessageId:r,offset:i}=e;return t===null&&n===void 0?G:{kind:`anchored`,anchor:{topKey:t,anchorMessageId:n,anchorEndMessageId:r,offset:i}}}function Qi(e,t){if(t.type===`jump-to`)return{kind:`anchored`,anchor:t.anchor};if(e.kind===`follow`)return(t.type===`gesture-up`||t.type===`selection-held`)&&t.fold?{kind:`anchored`,anchor:t.fold}:e;switch(t.type){case`selection-held`:return e;case`reached-end`:return t.tailDetached?e:G;case`own-prompt-sent`:case`latest-click`:case`anchor-unresolvable`:return G;case`scrolled`:case`gesture-up`:return t.fold&&!oa(e.anchor,t.fold)?{kind:`anchored`,anchor:t.fold}:e}}function $i(e){return e.kind===`follow`?{mode:`follow`,stick:!0,topKey:null,offset:0}:{mode:`anchored`,stick:!1,...e.anchor}}function ea(e,{settled:t,resolves:n,around:r}){if(e.kind===`follow`||n)return{kind:`open`,mode:e};if(!t||r===`requested`)return{kind:`wait`};let i=e.anchor.anchorMessageId;return r===`idle`&&i!==void 0?{kind:`fetch-around`,messageId:i}:{kind:`open`,mode:Qi(e,{type:`anchor-unresolvable`})}}var ta=1,na=()=>({commands:0});function ra(e,t,n,r){return aa(t,n)||aa(t,r)?`reset`:e.commands<8?`command`:`retire`}function ia(e,t){return t?`reset`:e.commands<8?`command`:`hold`}function aa(e,t){return Math.abs(e-t)<=ta}function oa(e,t){return e.topKey===t.topKey&&e.anchorMessageId===t.anchorMessageId&&e.anchorEndMessageId===t.anchorEndMessageId&&e.offset===t.offset}var sa={messages:[],oldestLoadedId:null,hasMore:!0,loading:!1,loadedInitial:!1,gapBeforeId:null,tail:`attached`},ca=new Map;function la(e,t){t?ca.set(e,t):ca.delete(e)}var ua=new Map;function da(e,t){t?ua.set(e,t):ua.delete(e)}function fa(e){let t=ua.get(e);t?t():jn(e,$i(G))}function pa(e){let t=ca.get(e)?.();if(t)return t;let n=kn(e);if(!n)return null;let r=Zi(n);return r.kind===`follow`?r:{kind:`anchored`,anchorId:r.anchor.anchorMessageId??-1/0}}var ma=new Map,ha=new Map;function ga(e){return ma.get(e)??0}function _a(e){return ha.get(e)??0}function va(e){for(let t of e)if(t.id>=0)return t.id;return null}function K(e){for(let t=e.length-1;t>=0;t--){let n=e[t].id;if(n>=0)return n}return null}function ya(e,t,n,r){let i=0,a=0;for(let t of e)t.id<0||(i++,r!==null&&t.id<r&&a++);if(i<=t)return{messages:e,shedOldest:!1,shedNewest:!1};let o=n===`newest`?i-t:0;r!==null&&(o=Math.min(Math.max(o,a+100+1-t),a-100)),o=Math.min(Math.max(o,0),i-t);let s=[],c=0;for(let n of e)(n.id<0||c++>=o&&c<=o+t)&&s.push(n);return{messages:s,shedOldest:o>0,shedNewest:o+t<i}}function q(e,t,n){let r=e.agentChatByAgent[t]??sa,i=n(r);if(!i)return{};let{messages:a,keep:o=`newest`,live:s=!1,tailShed:c=!1,...l}=i;c&&ma.set(t,ga(t)+1);let u={...r,...l};if(a){let n=t===e.selectedInboxThread,i=ya(a,s&&!n?500:le,o,n?wa(t,r):null);u.messages=i.messages,u.oldestLoadedId=va(i.messages),i.shedNewest&&(u.tail=`reader-detached`);let c=K(r.messages),l=c!==null&&(K(i.messages)??-1/0)<c;(i.shedNewest||u.tail!==`attached`&&l)&&ma.set(t,ga(t)+1),i.shedOldest&&ha.set(t,_a(t)+1),i.shedOldest&&(u.hasMore=!0);let d=u.gapBeforeId,f=K(i.messages),p=d!==null&&i.messages.some(e=>e.id>=0&&e.id<d);d!==null&&(u.tail!==`attached`&&f!==null&&d>f||i.shedOldest&&!p)&&(u.gapBeforeId=null)}return{agentChatByAgent:Qe({...e.agentChatByAgent,[t]:u},[t,e.selectedAgent,e.selectedInboxThread])}}function ba(e,t){let n=e.selectedInboxThread,r=n&&n!==t?e.agentChatByAgent[n]:void 0;return!r||r.messages.length<=500?{selectedInboxThread:t}:{selectedInboxThread:t,...q({...e,selectedInboxThread:t},n,e=>({messages:e.messages,live:!0}))}}function xa(e){return!!e&&(e.tail!==`attached`||!!e.tailPaging)}function Sa(e,t){return e.agentChatByAgent[t]?.tail===`reader-detached`&&pa(t)?.kind!==`follow`}function Ca(e,t){let n=e.agentChatByAgent[t];return n&&t===e.selectedInboxThread?wa(t,n):null}function wa(e,t){let n=pa(e);return n?n.kind===`anchored`?n.anchorId:K(t.messages):null}var Ta=new Set,Ea=new Map,Da=new Set;function Oa(e){return Da.has(e)}function ka(e){Da.add(e)}function Aa(e){Da.delete(e)}function ja(e){return Ta.has(e)}function Ma(e){Ta.add(e)}function Na(e){Ta.delete(e)}function Pa(e,t,n=!1){let r=Ea.get(e);Ea.set(e,{from:Math.min(r?.from??t,t),paging:n||!!r?.paging})}function Fa(e){let t=Ea.get(e);return Ea.delete(e),t}var Ia=1e3,La=3e4,Ra=new Map;function za(e){return Ra.has(e)}function Ba(e,t,n=!1){let r=Ra.get(e);if(n&&r?.timer&&r.delay<=1e3)return;r?.timer&&clearTimeout(r.timer);let i=n||!r?Ia:Math.min(r.delay*2,La),a={delay:i,timer:null};a.timer=setTimeout(()=>{a.timer=null,t()},i),Ra.set(e,a)}function Va(e){let t=Ra.get(e);t?.timer&&clearTimeout(t.timer),Ra.delete(e)}var J=300,Ha=8e3;function Ua(e,t){let n=new URLSearchParams;for(let[e,r]of Object.entries(t))n.set(e,String(r));return`/agents/${encodeURIComponent(e)}/chat?${n.toString()}`}function Y(e,t){return t.filter(t=>_(e,t)&&!ce(t)).sort((e,t)=>e.id-t.id)}function X(e,t){return O(e,[...e,...t].sort((e,t)=>e.id-t.id))}var Wa=10;async function Ga(e,t,n){let r=[],i=t,a=!1;for(let t=0;t<Wa;t++){let t=await S(`GET`,Ua(e,{before:i,limit:J})),o=Y(e,t);if(o.length===0){a=!0;break}r.push(...o);let s=o[0].id;if(n.has(s)||t.length<J){a=!0;break}i=s}return{messages:r,resolved:a,frontier:a?null:i}}function Ka(e,t){if(!t.some(e=>o(e.from)))return e;let n=new Set(t.map(e=>e.id));return e.filter(e=>{if(e.id>=0||!o(e.from))return!0;let t=qa.get(e.id);return t!==void 0&&!n.has(t)?!0:(qa.delete(e.id),!1)})}var qa=new Map;function Ja(e,t,n=!1){if(t!==e().selectedInboxThread)return Va(t);Ba(t,()=>{let n=e(),r=n.agentChatByAgent[t];if(!r||t!==n.selectedInboxThread)return Va(t);!r.loadedInitial||K(r.messages)===null?e().loadAgentChat(t):r.tail===`error-detached`?e().loadNewer(t):Va(t)},n)}function Ya(e,t,n){let r=e.gapBeforeId;if(r===null)return null;let i=e.messages.reduce((e,t)=>t.id>=0&&t.id<r&&t.id>e?t.id:e,-1/0);return t>i&&n<r?`island`:t<r&&n>=r?{gapBeforeId:t>i?t:null}:null}function Xa(e,t,n,r,i){let a=!1;e(e=>q(e,n,e=>{let t=K(e.messages),o=!i&&ja(n),s=e.tail!==`attached`,c=e.gapBeforeId??va(e.messages),l=c!==null&&r.some(e=>e.id<c)?new Set(e.messages.map(e=>e.id)):null,u=l?r.filter(e=>e.id>=c||l.has(e.id)):r,d=t!==null&&(s||o)?u.filter(e=>e.id<=t):u,f=d.length<u.length;return f&&o&&!s&&Pa(n,1/0),a=f&&e.tail===`error-detached`,d.length===0?{tailShed:f}:{messages:X(Ka(e.messages,d),d),live:!0,tailShed:f}})),a&&Ja(t,n,!0)}var Za=(e,t)=>({messages:[],agentChatByAgent:{},threadMessages:[],threadOpen:!1,chatHistoryImports:[],selectedInboxThread:``,replyTo:null,composeOpen:!1,chatAgentSearch:``,chatAgentProviderFilter:``,chatAgentStatusFilter:``,chatAgentTagFilter:``,chatAgentCapFilter:``,chatAgentHostFilter:``,chatAgentSort:`status`,chatAgentSortDir:`asc`,chatAgentGroupBy:``,chatAgentFiltersCollapsed:!0,chatCollapsedChildren:[],chatExpandedItems:[],feedObserveAll:!1,coordinatorFollows:[],coordinatorMutes:[],chatStatusEvents:{},chatStickToBottom:!0,chatHasNewItems:!1,inboxReadCursors:{},inboxArchivedThreads:{},inboxDrafts:{},chatSending:!1,inboxSearch:``,inboxSort:`attention`,inboxSortDir:`desc`,inboxShowArchived:!1,channelFilter:``,compose:{...b},inboxCompose:{...de},async fetchMessages(){try{let n=t(),r=`/messages?limit=100`;n.view===`messages`&&n.selectedAgent&&(r+=`&for=`+encodeURIComponent(n.selectedAgent)),n.view===`messages`&&n.channelFilter&&(r+=`&channel=`+encodeURIComponent(n.channelFilter));let i=await S(`GET`,r),a=mt(t().messages,i);a!==t().messages&&e({messages:a});let o=t(),s=o.selectedInboxThread;if(vt(s,o)){let e=0;for(let t of a)t.id>e&&h(t)===s&&m(t)&&g(t)&&(e=t.id);e&&t().markInboxThreadReadTo(s,e)}}catch{}},async loadAgentChat(n){if(!n)return;Xe(n);let r=t().agentChatByAgent[n];if(Oa(n))return Pa(n,1/0);ka(n),r?.loadedInitial&&r.messages.length>0||e(e=>q(e,n,()=>({loading:!0})));try{let r=ga(n),i=_a(n),a=await S(`GET`,Ua(n,{limit:J})),o=Y(n,a),s=t().agentChatByAgent[n],c=s?.loadedInitial&&_a(n)!==i?s.oldestLoadedId:null,l=c===null?o:o.filter(e=>e.id>=c),u=t().agentChatByAgent[n]??sa,d=u.loadedInitial?K(u.messages):null,f=d!==null&&a.length===J&&l.length>0&&l[0].id>d?l[0].id:null,p=l.at(-1)?.id??-1/0,m=!1;e(e=>q(e,n,e=>{let t=e.loadedInitial&&l.length?Ya(e,l[0].id,p):null,i=t===`island`?[]:l,o=e.loadedInitial?e.messages:e.messages.filter(e=>e.id<0||!l.length&&e.id>p);return m=!e.loadedInitial&&l.length>0&&e.messages.some(e=>e.id>p),{messages:X(Ka(o,i),i),tailShed:m,hasMore:e.loadedInitial?e.hasMore:a.length===J,loading:!1,loadedInitial:!0,gapBeforeId:e.loadedInitial?f!==null&&e.gapBeforeId===null?f:t&&t!==`island`?t.gapBeforeId:e.gapBeforeId:null,tail:ga(n)===r?`attached`:e.tail}})),Aa(n);let h=t().agentChatByAgent[n]?.tail;h===`attached`?Va(n):h===`error-detached`&&t().loadNewer(n);let g=Fa(n),ee=l.at(-1)?.id??1/0;if((m||g&&(g.paging||!Sa(t(),n)))&&t().loadNewer(n,Math.min(g?.from??ee,ee)),f===null)return;let _=t().agentChatByAgent[n];if(_?.tail!==`attached`||_.gapBeforeId!==f){let r=Sa(t(),n);e(e=>q(e,n,e=>({messages:e.messages.filter(e=>e.id<f),gapBeforeId:e.gapBeforeId===f?null:e.gapBeforeId,tailShed:!0,...r?{}:{tail:`attached`}}))),r||t().loadNewer(n);return}try{let t=await Ga(n,f,new Set(u.messages.map(e=>e.id)));e(e=>q(e,n,e=>e.gapBeforeId===f?{messages:X(e.messages,t.messages),gapBeforeId:t.resolved?null:t.frontier}:null))}catch(e){console.warn(`[chat] gap backfill failed for ${n}, marking for retry on next reconnect: ${e.message}`)}}catch(r){Aa(n),e(e=>q(e,n,()=>({loading:!1}))),za(n)||t().showError(`Chat Load Failed`,r.message,r),Ja(t,n)}},async loadOlder(n){if(!n)return;let r=t().agentChatByAgent[n];if(!r?.loadedInitial){await t().loadAgentChat(n);return}if(!r.loading){if(r.gapBeforeId!==null){await t().gapFillAgentChat(n);return}if(!(!r.hasMore||r.oldestLoadedId===null)){e(e=>q(e,n,()=>({loading:!0})));try{let t=await S(`GET`,Ua(n,{before:r.oldestLoadedId,limit:J})),i=Y(n,t);e(e=>q(e,n,e=>e.oldestLoadedId===r.oldestLoadedId?{messages:O(e.messages,[...i,...e.messages].sort((e,t)=>e.id-t.id)),keep:`oldest`,hasMore:t.length===J,loading:!1,loadedInitial:!0}:{loading:!1}))}catch(r){e(e=>q(e,n,()=>({loading:!1}))),t().showError(`Chat Load Failed`,r.message,r)}}}},async loadChatAround(n,r){if(!n||!Number.isFinite(r))return;let i=t().agentChatByAgent[n];if(i?.loadedInitial&&!(i.oldestLoadedId!==null&&r>=i.oldestLoadedId)){e(e=>q(e,n,()=>({loading:!0})));try{let t=Y(n,await S(`GET`,Ua(n,{around:r,limit:J}),void 0,{timeoutMs:Ha})),i=t.length?t[t.length-1].id:null;e(e=>q(e,n,r=>{if(!(r.oldestLoadedId!==null&&i!==null&&i<r.oldestLoadedId-1)){let e=i===null?null:Ya(r,t[0].id,i);return e===`island`?{loading:!1}:{messages:X(r.messages,t),keep:`oldest`,...e,loading:!1}}let a=r.gapBeforeId;return a!==null&&(Ca(e,n)??-1/0)>=a?{loading:!1}:{messages:X(a===null?r.messages:r.messages.filter(e=>e.id<a),t),keep:`oldest`,gapBeforeId:r.oldestLoadedId,tail:a!==null&&r.tail===`attached`?`reader-detached`:r.tail,loading:!1}}))}catch(t){e(e=>q(e,n,()=>({loading:!1}))),console.warn(`[chat] around-anchor load failed for ${n}@${r}: ${t.message}`)}}},async gapFillAgentChat(n){if(!n)return;let r=t().agentChatByAgent[n];if(!r?.loadedInitial||r.messages.length===0){r?.loading&&Pa(n,1/0);return}let i=Sa(t(),n);i&&Pa(n,1/0);let a=i?null:t().loadNewer(n);try{let t=r.gapBeforeId;if(t!==null){let i=await Ga(n,t,new Set(r.messages.map(e=>e.id)));e(e=>q(e,n,e=>e.gapBeforeId===t?{messages:i.messages.length?X(e.messages,i.messages):e.messages,keep:`oldest`,gapBeforeId:i.resolved?null:i.frontier}:null))}}catch(e){console.warn(`[chat] gap backfill retry skipped for ${n}: ${e.message}`)}await a},async loadNewer(n,r){if(!n)return;let i=t().agentChatByAgent[n],a=K(i?.messages??[]);if(ja(n)){a!==null&&Pa(n,r??1/0,!0);return}if(!i?.loadedInitial||a===null)return;Ma(n),i.tail!==`attached`&&e(e=>q(e,n,()=>({tail:`attached`,tailPaging:!0})));let o=!1;try{let i=Math.min(r??a,a);for(;;){let r=i,a=await S(`GET`,Ua(n,{since:i,limit:J})),o=t().agentChatByAgent[n],s=K(o?.messages??[]);if(s===null||s<r&&o.tail!==`attached`)break;if(s<r){i=s;continue}if(a.length===0)break;let c=Y(n,a.filter(e=>e.id>r));if(c.length&&Xa(e,t,n,c,!0),t().agentChatByAgent[n]?.tail!==`attached`||(i=a[a.length-1].id,i<=r)||a.length<J)break}}catch(t){console.warn(`[chat] tail catch-up skipped for ${n}: ${t.message}`),o=!0,e(e=>e.agentChatByAgent[n]?q(e,n,e=>e.tail===`reader-detached`?null:{tail:`error-detached`,tailShed:!0}):{})}finally{Na(n),e(e=>e.agentChatByAgent[n]?.tailPaging?q(e,n,()=>({tailPaging:!1})):{})}let s=Fa(n),c=t().agentChatByAgent[n]?.tail;if(o){c===`error-detached`&&Ja(t,n);return}Va(n),s&&(s.paging||!Sa(t(),n))&&await t().loadNewer(n,s.from)},appendChatTail(n,r){if(!n||r.length===0)return;let i=Y(n,r);i.length&&Xa(e,t,n,i,!1)},async fetchChatHistoryImports(){try{let n=O(t().chatHistoryImports,await S(`GET`,`/chat/history-imports?limit=500`));n!==t().chatHistoryImports&&e({chatHistoryImports:n})}catch{}},async fetchInboxState(){try{let n=await S(`GET`,`/inbox/state?operatorId=`+encodeURIComponent(T(t().sessionUser))),r={},i={},a={};for(let e of n?.threads||[])e.readCursorMessageId&&(r[e.peerId]=e.readCursorMessageId),e.archivedAtMessageId&&(i[e.peerId]=e.archivedAtMessageId);for(let e of n?.drafts||[])e.body&&(a[e.peerId]=e.body);let o=t(),s={};Ie(o.inboxReadCursors,r)||(s.inboxReadCursors=r),Ie(o.inboxArchivedThreads,i)||(s.inboxArchivedThreads=i),Object.keys(o.inboxDrafts).length===0&&!Ie(o.inboxDrafts,a)&&(s.inboxDrafts=a),Object.keys(s).length&&e(s)}catch{}},openCompose(){e({composeOpen:!0,compose:{...b,from:T(t().sessionUser)}})},openComposeToAgent(n){e({replyTo:null,compose:{...b,from:T(t().sessionUser),to:n.id},composeOpen:!0})},async doSend(){let n=t();if(!n.compose.from||!n.compose.to||!n.compose.body){t().showError(`Validation`,`From, To, and Message are required.`);return}o(n.compose.from)&&n.agentsById[n.compose.to]&&fa(n.compose.to);try{let r={from:n.compose.from,to:n.compose.to,body:n.compose.body};n.compose.channel&&(r.channel=n.compose.channel),n.compose.subject&&(r.subject=n.compose.subject),n.replyTo&&(r.replyTo=n.replyTo.id),n.compose.claimable&&(r.claimable=!0,r.kind=`task`,r.payload={title:n.compose.subject||`Claimable task`}),await S(`POST`,`/messages`,r),e({composeOpen:!1,replyTo:null,compose:{...b,from:T(t().sessionUser)}}),await t().fetchMessages()}catch(e){t().showError(`Send Failed`,e.message,e)}},async doClaim(e){let n=t(),r=n.compose.from||n.selectedAgent;if(!r){t().showError(`Validation`,`Select an agent first.`);return}try{let n=await S(`POST`,`/messages/`+e+`/claim`,{agentId:r});n.ok||t().showError(`Claim Failed`,n.error||`unknown`),n.ok&&await Promise.all([t().fetchMessages(),t().fetchTasks()])}catch(e){t().showError(`Claim Failed`,e.message,e)}},async doDeliveryAction(e,n,r){try{await S(`POST`,`/messages/`+e+`/delivery/actions`,{action:n,reason:r,agentId:t().compose.from||t().selectedAgent||T(t().sessionUser)}),await t().fetchMessages()}catch(e){t().showError(`Delivery Update Failed`,e.message,e)}},async doDeleteMessage(n){try{await S(`DELETE`,`/messages/`+n),e({messages:t().messages.filter(e=>e.id!==n)})}catch(e){t().showError(`Delete Failed`,e.message,e)}},applyChatMessageUpdate(n){let r=Object.entries(t().agentChatByAgent).filter(([,e])=>e.messages.some(e=>e.id===n.id));r.length!==0&&e(e=>r.reduce((t,[r])=>({...t,...q({...e,...t},r,e=>({messages:e.messages.map(e=>e.id===n.id?n:e)}))}),{}))},async reactToMessage(n,r){try{let i=(n.reactions||[]).some(e=>e.actorId===T(t().sessionUser)&&e.emoji===r),a=await S(`POST`,`/messages/`+n.id+`/reactions`,{actorId:T(t().sessionUser),emoji:r,action:i?`remove`:`add`});e({messages:z(D(t().messages,a),500,e=>e.id)}),t().applyChatMessageUpdate(a)}catch(e){t().showError(`Reaction Failed`,e.message,e)}},startReply(n){let r=o(n.from)?n.to:n.from;e({replyTo:{id:n.id,from:n.from},compose:{...b,from:T(t().sessionUser),to:r,channel:n.channel||``},composeOpen:!0})},cancelReply(){e({replyTo:null})},async openThread(n){e({threadMessages:[],threadOpen:!0});try{e({threadMessages:await S(`GET`,`/messages/`+n+`/thread`)})}catch(e){t().showError(`Thread Load Failed`,e.message,e)}},openInboxThread(n,r=[]){e(e=>ba(e,n)),r.length&&t().markInboxThreadRead(n,r)},closeInboxThread(){e(e=>ba(e,``))},async sendChatMessage(n,r,i=[]){if(!n.trim()&&i.length===0||t().chatSending)return;let a=r.peer;e({chatSending:!0});let o=t().inboxDrafts[a];Yi(a);let s={...t().inboxDrafts};delete s[a],e({inboxDrafts:s}),fa(a);let c=t().agentChatByAgent[a];c&&c.tail!==`attached`&&t().loadNewer(a);let l=-Date.now(),u={id:l,from:T(t().sessionUser),to:a,kind:`chat`,body:n.trim()||`Attachment`,...r.lastMessage?.channel?{channel:r.lastMessage.channel}:{},payload:i.length?{attachments:i}:{},readBy:[T(t().sessionUser)],createdAt:Date.now()};e(e=>q(e,a,e=>({messages:[...e.messages,u]})));try{let o={from:T(t().sessionUser),to:a,body:n.trim()||`Attachment`};r.lastMessage?.channel&&(o.channel=r.lastMessage.channel),r.lastMessage?.id&&(o.replyTo=r.lastMessage.id),i.length&&(o.payload={attachments:i});let s=await S(`POST`,`/messages`,o);!s||t().agentChatByAgent[a]?.messages.some(e=>e.id===s.id)?e(e=>e.agentChatByAgent[a]?q(e,a,e=>({messages:e.messages.filter(e=>e.id!==l)})):{}):qa.set(l,s.id),S(`DELETE`,`/inbox/drafts?operatorId=`+encodeURIComponent(T(t().sessionUser))+`&peerId=`+encodeURIComponent(a)).catch(()=>{}),Promise.all([t().fetchMessages(),t().loadAgentChat(a)])}catch(n){o!==void 0&&t().inboxDrafts[a]===void 0&&(e({inboxDrafts:{...t().inboxDrafts,[a]:o}}),Xi(a,o)),e(e=>e.agentChatByAgent[a]?q(e,a,e=>({messages:e.messages.filter(e=>e.id!==l)})):{}),t().showError(`Send Failed`,n.message,n)}e({chatSending:!1})},async sendPermissionDecision(e,n,r,i){try{await S(`POST`,`/agents/`+encodeURIComponent(e)+`/permission-decision`,{approvalId:n,decision:r,...i?{answers:i}:{}});let a=r===`approve`?`Approved`:r===`approve-session`?`Approved for session`:r===`abort`?`Aborted`:r===`answer`?`Answer sent for`:`Denied`;t().showNotification(`${a} ${r===`answer`?`Claude's question`:`permission request`}`),await t().fetchAgents()}catch(e){t().showError(`Permission Failed`,e.message,e)}},markInboxThreadReadTo(n,r){!n||r<=(t().inboxReadCursors[n]||0)||(e({inboxReadCursors:{...t().inboxReadCursors,[n]:r}}),S(`PATCH`,`/inbox/threads`,{operatorId:T(t().sessionUser),peerId:n,readCursorMessageId:r}).catch(()=>{}))},markInboxThreadRead(e,n){!e||!n.length||t().markInboxThreadReadTo(e,xt(n))},markInboxThreadUnread(n){let r={...t().inboxReadCursors};delete r[n],e({inboxReadCursors:r}),S(`PATCH`,`/inbox/threads`,{operatorId:T(t().sessionUser),peerId:n,readCursorMessageId:null}).catch(()=>{})},archiveInboxThread(n,r){e({inboxArchivedThreads:{...t().inboxArchivedThreads,[n]:r}}),t().selectedInboxThread===n&&t().closeInboxThread(),S(`PATCH`,`/inbox/threads`,{operatorId:T(t().sessionUser),peerId:n,archivedAtMessageId:r}).catch(()=>{})},unarchiveInboxThread(n){let r={...t().inboxArchivedThreads};delete r[n],e({inboxArchivedThreads:r}),S(`PATCH`,`/inbox/threads`,{operatorId:T(t().sessionUser),peerId:n,archivedAtMessageId:null}).catch(()=>{})},setReplyDraft(n,r){let i={...t().inboxDrafts};r?i[n]=r:delete i[n],e({inboxDrafts:i}),Xi(n,r)},async sendInboxReply(n,r){let i=(t().inboxDrafts[n]||``).trim();if(!i||t().chatSending){i||t().showError(`Validation`,`Reply body is required.`);return}Yi(n),fa(n),e({chatSending:!0});try{let a={from:T(t().sessionUser),to:n,body:i};r?.channel&&(a.channel=r.channel),r?.id&&(a.replyTo=r.id),await S(`POST`,`/messages`,a);let o={...t().inboxDrafts};delete o[n],e({inboxDrafts:o}),S(`DELETE`,`/inbox/drafts?operatorId=`+encodeURIComponent(T(t().sessionUser))+`&peerId=`+encodeURIComponent(n)).catch(()=>{}),await t().fetchMessages()}catch(e){t().showError(`Reply Failed`,e.message,e),Xi(n,t().inboxDrafts[n]||``)}e({chatSending:!1})},toggleChatChildrenCollapsed(n){let r=t().chatCollapsedChildren;e({chatCollapsedChildren:r.includes(n)?r.filter(e=>e!==n):[...r,n]})},toggleChatItemExpanded(n){let r=t().chatExpandedItems;e({chatExpandedItems:r.includes(n)?r.filter(e=>e!==n):[...r,n]})},setChatItemsExpanded(n,r){let i=t().chatExpandedItems;if(r){let t=new Set(i);for(let e of n)t.add(e);e({chatExpandedItems:Array.from(t)})}else{let t=new Set(n);e({chatExpandedItems:i.filter(e=>!t.has(e))})}},setFeedObserveAll(t){e({feedObserveAll:t})},toggleCoordinatorFollow(n){let r=t().coordinatorFollows,i=t().coordinatorMutes;r.includes(n)?e({coordinatorFollows:r.filter(e=>e!==n)}):e({coordinatorFollows:[...r,n],coordinatorMutes:i.filter(e=>e!==n)})},toggleCoordinatorMute(n){let r=t().coordinatorMutes,i=t().coordinatorFollows;r.includes(n)?e({coordinatorMutes:r.filter(e=>e!==n)}):e({coordinatorMutes:[...r,n],coordinatorFollows:i.filter(e=>e!==n)})},async doSendInboxCompose(){let{inboxCompose:n}=t();if(!n.to)return;let r=n.toMode===`agent`?n.to:`${n.toMode}:${n.to}`;if(!n.body){t().showError(`Validation`,`Message is required.`);return}n.toMode===`agent`&&fa(r);try{let i={from:T(t().sessionUser),to:r,body:n.body};n.channel&&(i.channel=n.channel),n.subject&&(i.subject=n.subject),n.claimable&&(i.claimable=!0,i.kind=`task`,i.payload={title:n.subject||`Claimable task`}),await S(`POST`,`/messages`,i),e({inboxCompose:{...de,toMode:n.toMode,to:n.to}}),await t().fetchMessages()}catch(e){t().showError(`Send Failed`,e.message,e)}}});function Qa(e,t){return JSON.stringify([String(e),t||``])}function Z(e,t){return JSON.stringify([`team`,e,t||``])}function $a(e){return{threadId:String(e.threadId),...e.channel?{channel:e.channel}:{}}}function eo(e){return e.teamId?{teamId:e.teamId,...e.channel?{channel:e.channel}:{}}:null}function to(e){return`teamId`in e?Z(e.teamId,e.channel):Qa(e.threadId,e.channel)}var no=100;function ro(e){let t=new URLSearchParams({view:`list`,teamId:e.teamId,limit:String(no)});return e.channel&&t.set(`channel`,e.channel),`/plans?${t.toString()}`}function io(e){return{id:e.id,threadId:String(e.threadId),teamId:e.teamId,...e.channel?{channel:e.channel}:{},...e.title?{title:e.title}:{},...e.objective?{objective:e.objective}:{},version:e.version,nodeCount:e.nodes.length,edgeCount:e.edges.length,...e.completion?{completion:e.completion}:{},createdAt:e.createdAt,updatedAt:e.updatedAt}}function ao(e,t){return t.updatedAt-e.updatedAt||t.createdAt-e.createdAt||e.id.localeCompare(t.id)}function oo(e,t){if(!t.teamId)return e;let n={...t,teamId:t.teamId},r={...e};for(let[i,a]of Object.entries(e)){if(a.teamId!==t.teamId||a.channel&&a.channel!==t.channel)continue;let e=a.plans.filter(e=>e.id!==t.id);r[i]={...a,plans:t.archived?e:[...e,io(n)].sort(ao)}}return r}function so(e,t){return t&&e.some(e=>e.id===t)?t:e[0]?.id??null}function co(e,t){let n=e.planListsByTeam[t],r=e.planSelections[t];if(!n)return r?e.plansById[r]??null:e.plansByTeam[t]??null;let i=so(n.plans,r);return i?e.plansById[i]??null:e.plansByTeam[t]??null}function lo(e){let t=new URLSearchParams(`teamId`in e?{teamId:e.teamId}:{threadId:String(e.threadId)});return e.channel&&t.set(`channel`,e.channel),`/plans?${t.toString()}`}var uo=(e,t)=>{async function n(n){try{let r=await S(`GET`,`/plans/${encodeURIComponent(n)}`);return e({plansById:{...t().plansById,[r.id]:r}}),t().hydrateIssueRefsForPlan(r),!0}catch(e){return t().showError(`Plan Load Failed`,e.message,e),!1}}let r=new Set;async function i(){let{planListsByTeam:e,planSelections:i,plansById:a}=t(),o=[];for(let[t,s]of Object.entries(e)){let e=so(s.plans,i[t]),c=s.plans.find(t=>t.id===e);!c||a[c.id]?.version===c.version||r.has(c.id)||(r.add(c.id),o.push(n(c.id).finally(()=>r.delete(c.id))))}await Promise.all(o)}return{plansById:{},plansByThread:{},plansByTeam:{},planListsByTeam:{},planSelections:{},planLookups:{},planLoading:{},planCollapsed:null,sessionTasksCollapsed:!1,setPlanCollapsed(t){e({planCollapsed:t})},setSessionTasksCollapsed(t){e({sessionTasksCollapsed:t})},async fetchPlan(n){let r=`teamId`in n?{teamId:n.teamId,...n.channel?{channel:n.channel}:{}}:{threadId:String(n.threadId),...n.channel?{channel:n.channel}:{}},i=to(r);e({planLookups:{...t().planLookups,[i]:r},planLoading:{...t().planLoading,[i]:!0}});try{let n=await S(`GET`,lo(r)),a=$a(n),o=Qa(a.threadId,a.channel),s=eo(n),c=s?Z(s.teamId,s.channel):``,l=!(`teamId`in r),u=`teamId`in r;e({plansById:{...t().plansById,[n.id]:n},plansByThread:{...t().plansByThread,...l?{[i]:n}:{},[o]:n},plansByTeam:s?{...t().plansByTeam,...u?{[i]:n}:{},[c]:n}:t().plansByTeam,planLookups:{...t().planLookups,[i]:r,[o]:a,...s?{[c]:s}:{}},planLoading:{...t().planLoading,[i]:!1,[o]:!1,...s?{[c]:!1}:{}}}),t().hydrateIssueRefsForPlan(n)}catch(n){let a=typeof n.status==`number`?n.status:0;e({plansByThread:a===404&&!(`teamId`in r)?{...t().plansByThread,[i]:null}:t().plansByThread,plansByTeam:a===404&&`teamId`in r?{...t().plansByTeam,[i]:null}:t().plansByTeam,planLoading:{...t().planLoading,[i]:!1}}),a&&a!==404&&t().showError(`Plan Load Failed`,n.message,n)}},async fetchTeamPlanList(n){let r={teamId:n.teamId,...n.channel?{channel:n.channel}:{}},a=Z(r.teamId,r.channel);try{let n=await S(`GET`,ro(r));e({planListsByTeam:{...t().planListsByTeam,[a]:{...r,plans:n.plans}}}),await i()}catch(e){t().showError(`Plan List Failed`,e.message,e)}},async chooseTeamPlan(r,i){if(!t().plansById[i]&&!await n(i))return;let a=Z(r.teamId,r.channel);e({planSelections:{...t().planSelections,[a]:i}})},async refreshPlans(){let e=Object.values(t().planLookups),n=Object.values(t().planListsByTeam);await Promise.all([...e.map(e=>t().fetchPlan(e)),...n.map(({teamId:e,channel:n})=>t().fetchTeamPlanList({teamId:e,channel:n}))])},async setPlanArchived(e,n){try{let r=await S(`PATCH`,`/plans/${encodeURIComponent(e)}/archive`,{archived:n});t().upsertPlan(r)}catch(e){t().showError(n?`Plan Archive Failed`:`Plan Unarchive Failed`,e.message,e)}},upsertPlan(n){let r=$a(n),a=Qa(r.threadId,r.channel),o=eo(n),s=o?Z(o.teamId,o.channel):``;e({plansById:{...t().plansById,[n.id]:n},plansByThread:{...t().plansByThread,[a]:n},plansByTeam:o?{...t().plansByTeam,[s]:n}:t().plansByTeam,planListsByTeam:oo(t().planListsByTeam,n),planLookups:{...t().planLookups,[a]:r,...o?{[s]:o}:{}},planLoading:{...t().planLoading,[a]:!1,...o?{[s]:!1}:{}}}),t().hydrateIssueRefsForPlan(n),i()},removePlan(n){let r=typeof n==`string`?n:n.id,a={...t().plansById};delete a[r],e({plansById:a,plansByThread:Object.fromEntries(Object.entries(t().plansByThread).filter(([,e])=>e?.id!==r)),plansByTeam:Object.fromEntries(Object.entries(t().plansByTeam).filter(([,e])=>e?.id!==r)),planListsByTeam:Object.fromEntries(Object.entries(t().planListsByTeam).map(([e,t])=>[e,{...t,plans:t.plans.filter(e=>e.id!==r)}])),planLookups:Object.fromEntries(Object.entries(t().planLookups).filter(([e])=>t().plansByThread[e]?.id!==r&&t().plansByTeam[e]?.id!==r))}),i()}}},fo=(e,t)=>({teams:[],teamsLoading:!1,teamsError:null,teamOutcomeAggregates:null,teamOutcomeAggregatesLoading:!1,teamOutcomeAggregatesError:null,async fetchTeams(){e({teamsLoading:!0,teamsError:null});try{let n=await S(`GET`,`/teams`),r=O(t().teams,n.teams);return e({teams:r,teamsLoading:!1,teamsError:null}),r}catch(n){return e({teamsLoading:!1,teamsError:i(n)}),t().teams}},async fetchTeamOutcomeAggregates(){e({teamOutcomeAggregatesLoading:!0,teamOutcomeAggregatesError:null});try{let t=await S(`GET`,`/teams/outcomes`);return e({teamOutcomeAggregates:t,teamOutcomeAggregatesLoading:!1,teamOutcomeAggregatesError:null}),t}catch(n){return e({teamOutcomeAggregatesLoading:!1,teamOutcomeAggregatesError:i(n)}),t().teamOutcomeAggregates}},upsertTeam(n){let r=D(t().teams,n);r!==t().teams&&e({teams:r})},markTeamDissolved(n){let r=Date.now();e({teams:t().teams.map(e=>e.id===n.teamId?{...e,status:`dissolved`,updatedAt:r,dissolvedAt:e.dissolvedAt??r,zeroMembersSince:void 0,...n.outcomeStatus?{outcomeStatus:n.outcomeStatus}:{},...n.reason?{outcomeSummary:n.reason}:{}}:e)})},async dissolveTeam(e){try{let n=await S(`POST`,`/teams/${encodeURIComponent(e)}/dissolve`,{});t().upsertTeam(n),t().showNotification(`Team dissolved`),await Promise.all([t().fetchTeams(),t().fetchTeamOutcomeAggregates(),t().fetchActivityEvents()])}catch(e){t().showError(`Dissolve Failed`,i(e),e)}}});function po(e,t){return JSON.stringify([e,t])}function mo(e){return[...new Set(e.nodes.map(e=>e.refs?.issueId).filter(e=>!!e))]}function ho(e,t){let n=!1,r={...e};for(let i of t){let t=e[i.id];(!t||JSON.stringify(t)!==JSON.stringify(i))&&(r[i.id]=i,n=!0)}return n?r:e}var go=(e,t)=>({issueRefsById:{},issuesByEntity:{},issueActivityByAgent:{},issueLoading:{},issueErrors:{},async fetchAllIssueRefs(){try{let n=await S(`GET`,`/issue-refs?limit=500`);e({issueRefsById:ho(t().issueRefsById,n.issueRefs)})}catch{}},async fetchIssueRef(e){try{let n=await S(`GET`,`/issue-refs/${encodeURIComponent(e)}`);return t().upsertIssueRef(n.issueRef),n.issueRef}catch{return t().issueRefsById[e]??null}},async fetchIssuesForEntity(n,r){let a=po(n,r);e({issueLoading:{...t().issueLoading,[a]:!0},issueErrors:{...t().issueErrors,[a]:null}});try{let i=await S(`GET`,`/issue-associations/entities/${encodeURIComponent(n)}/${encodeURIComponent(r)}/issues`);return e({issuesByEntity:{...t().issuesByEntity,[a]:i.issues},issueRefsById:ho(t().issueRefsById,i.issues.map(e=>e.issueRef)),issueLoading:{...t().issueLoading,[a]:!1}}),i.issues}catch(n){return e({issueLoading:{...t().issueLoading,[a]:!1},issueErrors:{...t().issueErrors,[a]:i(n)}}),t().issuesByEntity[a]??[]}},async fetchAgentIssueActivity(n){let r=`agent:${n}`;e({issueLoading:{...t().issueLoading,[r]:!0},issueErrors:{...t().issueErrors,[r]:null}});try{let i=await S(`GET`,`/issue-activity/agents/${encodeURIComponent(n)}`);return t().agentsById[n]?(e({issueActivityByAgent:{...t().issueActivityByAgent,[n]:i.issues},issueRefsById:ho(t().issueRefsById,i.issues.map(e=>e.issueRef)),issueLoading:{...t().issueLoading,[r]:!1}}),i.issues):[]}catch(a){return e({issueLoading:{...t().issueLoading,[r]:!1},issueErrors:{...t().issueErrors,[r]:i(a)}}),t().issueActivityByAgent[n]??[]}},async hydrateIssueRefsForPlan(e){let n=mo(e).filter(e=>!t().issueRefsById[e]);await Promise.all(n.map(e=>t().fetchIssueRef(e)))},async refreshIssueRefs(){let e=Object.keys(t().issuesByEntity).map(e=>{try{let[n,r]=JSON.parse(e);return t().fetchIssuesForEntity(n,r)}catch{return Promise.resolve([])}});await Promise.all([...Object.keys(t().issueRefsById).length?[t().fetchAllIssueRefs()]:[],...e])},upsertIssueRef(n){let r=ho(t().issueRefsById,[n]);r!==t().issueRefsById&&e({issueRefsById:r})}}),_o={fromIssue:``,title:``,intent:``,doneWhen:``,issueRefs:``,dependsOn:``,dispatchComplexity:``,dispatchType:``,dispatchFootprint:``,dispatchCriticality:``},vo=(e,t)=>({pairs:[],tasks:[],taskEvents:[],taskEventCache:{},taskEventsOpen:!1,pairInviteOpen:!1,pairMessageOpen:!1,pairInvite:{...re},deliverableTasks:[],deliverableStatusFilter:``,deliverableStageFilter:``,deliverableProjectFilter:``,deliverableTagFilter:``,deliverablePriorityFilter:``,taskDetailById:{},taskMemoryById:{},taskHistoryById:{},taskDetailOpen:!1,taskDetailId:null,taskCreateOpen:!1,taskCreateForm:{..._o},taskDispatchResultById:{},taskDispatchLoadingId:null,pairMessage:{...ae},pairStatusFilter:`open`,taskStatusFilter:``,taskSourceFilter:``,async fetchPairs(){try{let n=t(),r;if(n.view===`activity`)r=await S(`GET`,`/pairs`);else if(n.pairStatusFilter===`open`){let[e,t]=await Promise.all([S(`GET`,`/pairs?status=active`),S(`GET`,`/pairs?status=pending`)]);r=[...e,...t]}else r=n.pairStatusFilter?await S(`GET`,`/pairs?status=`+encodeURIComponent(n.pairStatusFilter)):await S(`GET`,`/pairs`);let i=r.sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()),a=O(t().pairs,i);a!==t().pairs&&e({pairs:a})}catch{}},async fetchTasks(){try{let n=t(),r=new URLSearchParams({limit:`100`});n.taskStatusFilter&&r.set(`status`,n.taskStatusFilter),n.taskSourceFilter&&r.set(`source`,n.taskSourceFilter);let i=O(t().tasks,await S(`GET`,`/tasks?`+r.toString()));i!==t().tasks&&e({tasks:i})}catch{}},async fetchDeliverableTasks(n){try{let r=t(),i=new URLSearchParams({kind:`deliverable`,limit:`200`});n?.unfiltered||(r.deliverableStatusFilter===`owner-gone`?i.set(`staleOwnerGone`,`1`):r.deliverableStatusFilter&&i.set(`status`,r.deliverableStatusFilter),r.deliverableStageFilter&&i.set(`deliverableStage`,r.deliverableStageFilter),r.deliverableProjectFilter&&i.set(`projectId`,r.deliverableProjectFilter),r.deliverableTagFilter&&i.set(`tag`,r.deliverableTagFilter),r.deliverablePriorityFilter&&i.set(`priority`,r.deliverablePriorityFilter));let a=await S(`GET`,`/tasks?`+i.toString()),o=O(t().deliverableTasks,a);o!==t().deliverableTasks&&e({deliverableTasks:o})}catch{}},async fetchTaskDetail(n){try{let r=await S(`GET`,`/tasks/`+n+`/detail`);e({taskDetailById:{...t().taskDetailById,[n]:r}})}catch{}},async fetchTaskMemory(n){try{let r=await S(`GET`,`/tasks/`+n+`/memory`);e({taskMemoryById:{...t().taskMemoryById,[n]:r}})}catch{}},async fetchTaskHistory(n){try{let r=await S(`GET`,`/tasks/`+n+`/history`);e({taskHistoryById:{...t().taskHistoryById,[n]:r}})}catch{}},openTaskDetail(n){e({taskDetailOpen:!0,taskDetailId:n.id}),t().fetchTaskDetail(n.id),t().fetchTaskMemory(n.id),t().fetchTaskHistory(n.id)},openTaskDetailById(n){e({taskDetailOpen:!0,taskDetailId:n}),t().fetchTaskDetail(n),t().fetchTaskMemory(n),t().fetchTaskHistory(n)},closeTaskDetail(){e({taskDetailOpen:!1,taskDetailId:null})},async doClaimTask(e){let n=t(),r=n.compose.from||n.selectedAgent;if(!r){t().showError(`Validation`,`Select an agent first.`);return}try{let n=await S(`POST`,`/tasks/`+e+`/claim`,{agentId:r});n.ok?await Promise.all([t().fetchTasks(),t().fetchMessages()]):t().showError(`Claim Failed`,n.error||`unknown`)}catch(e){t().showError(`Claim Failed`,e.message,e)}},async doUpdateTaskStatus(n,r){if(!(!n||!r||r===n.status))try{let i={status:r},a=n.claimedBy||t().compose.from||t().selectedAgent;a&&(i.agentId=a);let o=await S(`PATCH`,`/tasks/`+n.id+`/status`,i),s=o.task||o;e({tasks:t().tasks.map(e=>e.id===n.id?s:e)})}catch(e){t().showError(`Status Update Failed`,e.message,e),await t().fetchTasks()}},async openTaskEvents(n){e({taskEvents:[],taskEventsOpen:!0});try{let r=await S(`GET`,`/tasks/`+n.id+`/events`);e({taskEvents:r,taskEventCache:{...t().taskEventCache,[n.id]:r}})}catch(e){t().showError(`Task Events Failed`,e.message,e)}},openTaskCreate(){e({taskCreateOpen:!0,taskCreateForm:{..._o}})},closeTaskCreate(){e({taskCreateOpen:!1})},setTaskCreateForm(n){e({taskCreateForm:{...t().taskCreateForm,...n}})},async doCreateTask(){let{taskCreateForm:n}=t(),r=n.title.trim(),i=n.fromIssue?.trim();if(!r&&!i){t().showError(`Validation`,`A title or GitHub issue is required.`);return}let a=n.intent.trim()||r,o={};n.dispatchComplexity&&(o.complexity=n.dispatchComplexity),n.dispatchType&&(o.type=n.dispatchType),n.dispatchFootprint&&(o.contextFootprint=n.dispatchFootprint),n.dispatchCriticality&&(o.criticality=n.dispatchCriticality);let s=n.issueRefs.split(`,`).map(e=>e.trim()).filter(Boolean),c=n.dependsOn.split(`,`).map(e=>Number(e.trim())).filter(e=>Number.isInteger(e)&&e>0),l=n.idempotencyKey||crypto.randomUUID();e({taskCreateForm:{...n,idempotencyKey:l}});try{await S(`POST`,`/tasks`,{...r?{title:r}:{},...!i||n.intent.trim()?{intent:i?n.intent.trim():a}:{},...i?{fromIssue:i,idempotencyKey:l}:{},...n.doneWhen.trim()?{doneWhen:n.doneWhen.trim()}:{},...s.length?{issueRefs:s}:{},...c.length?{dependsOn:c}:{},...Object.keys(o).length?{dispatch:o}:{}}),e({taskCreateOpen:!1,taskCreateForm:{..._o}}),await t().fetchDeliverableTasks()}catch(e){t().showError(`Create Task Failed`,e.message,e)}},async doEditTask(n,r){try{let i=await S(`PATCH`,`/tasks/`+n,r);e({taskDetailById:{...t().taskDetailById,[n]:i},deliverableTasks:t().deliverableTasks.map(e=>e.id===n?{...e,...i}:e)})}catch(e){t().showError(`Edit Task Failed`,e.message,e)}},async doSetTaskReviewHold(e,n,r){try{return await S(`PUT`,`/tasks/`+e+`/review-hold`,{held:n,...r?{expectedHeadSha:r}:{}}),await t().fetchTaskDetail(e),!0}catch(r){return t().showError(n?`Set Review Hold Failed`:`Clear Review Hold Failed`,r.message,r),await t().fetchTaskDetail(e),!1}},async doSetTaskParent(n,r){try{let i=await S(`POST`,`/tasks/`+n+`/parent`,{parentTaskId:r});e({taskDetailById:{...t().taskDetailById,[n]:i},deliverableTasks:t().deliverableTasks.map(e=>e.id===n?{...e,...i}:e)})}catch(e){t().showError(`Set Parent Failed`,e.message,e)}},async doClearTaskParent(n){try{let r=await S(`DELETE`,`/tasks/`+n+`/parent`);e({taskDetailById:{...t().taskDetailById,[n]:r},deliverableTasks:t().deliverableTasks.map(e=>e.id===n?{...e,...r}:e)})}catch(e){t().showError(`Clear Parent Failed`,e.message,e)}},async doAddTaskRelated(n,r){try{let i=await S(`POST`,`/tasks/`+n+`/related`,{relatedTaskId:r});e({taskDetailById:{...t().taskDetailById,[n]:i},deliverableTasks:t().deliverableTasks.map(e=>e.id===n?{...e,...i}:e)})}catch(e){t().showError(`Add Related Failed`,e.message,e)}},async doRemoveTaskRelated(n,r){try{let i=await S(`DELETE`,`/tasks/`+n+`/related`,{relatedTaskId:r});e({taskDetailById:{...t().taskDetailById,[n]:i},deliverableTasks:t().deliverableTasks.map(e=>e.id===n?{...e,...i}:e)})}catch(e){t().showError(`Remove Related Failed`,e.message,e)}},async doDispatchTask(n,r,i=!0){e({taskDispatchLoadingId:n});try{let a={};r&&Object.keys(r).length&&(a.pin=r),i||(a.createReview=!1);let o=await S(`POST`,`/tasks/`+n+`/dispatch`,a);e({taskDispatchResultById:{...t().taskDispatchResultById,[n]:o},taskDispatchLoadingId:null})}catch(n){e({taskDispatchLoadingId:null}),t().showError(`Dispatch Failed`,n.message,n)}},async doSpawnWithTask(e,n,r=!0){let i=t().spawnOrchId;try{let a={provider:n.provider,taskId:e};n.model&&(a.model=n.model),n.effort&&(a.effort=n.effort),i&&(a.orchestratorId=i),r||(a.workflow=!1);let o=(await S(`POST`,`/agents/spawn`,a))?.workflowRun;t().showNotification(o?o.existing?`T${e} already runs ${o.workflow} (${o.runId}); no worker spawned`:`Workflow ${o.workflow} started on T${e} (${o.runId}); its run spawns the builder`:`Worker spawning for T${e} (${n.provider})`)}catch(e){t().showError(`Spawn Failed`,e.message,e)}},openPairInvite(n){e({pairInvite:{...re,requesterId:n||t().selectedAgent||``},pairInviteOpen:!0})},closePairInvite(){e({pairInviteOpen:!1,pairInvite:{...re}})},async doCreatePair(){let n=t();if(!n.pairInvite.requesterId||!n.pairInvite.targetId){t().showError(`Validation`,`Requester and Target are required.`);return}if(n.pairInvite.requesterId===n.pairInvite.targetId){t().showError(`Validation`,`Requester and Target must be different.`);return}try{let r={from:n.pairInvite.requesterId,target:n.pairInvite.targetId};n.pairInvite.objective&&(r.objective=n.pairInvite.objective),await S(`POST`,`/pairs`,r),e({pairInviteOpen:!1,pairInvite:{...re}}),await Promise.all([t().fetchPairs(),t().fetchMessages()])}catch(e){t().showError(`Pair Invite Failed`,e.message,e)}},openPairMessage(t,n){e({pairMessage:{...ae,pairId:t.id,from:n||t.requesterId},pairMessageOpen:!0})},closePairMessage(){e({pairMessageOpen:!1,pairMessage:{...ae}})},async doSendPairMessage(){let n=t();if(!n.pairMessage.pairId||!n.pairMessage.from||!n.pairMessage.body){t().showError(`Validation`,`Pair, From, and Message are required.`);return}try{let r={from:n.pairMessage.from,body:n.pairMessage.body};n.pairMessage.subject&&(r.subject=n.pairMessage.subject),await S(`POST`,`/pairs/`+encodeURIComponent(n.pairMessage.pairId)+`/messages`,r),e({pairMessageOpen:!1,pairMessage:{...ae}}),await Promise.all([t().fetchPairs(),t().fetchMessages()])}catch(e){t().showError(`Pair Message Failed`,e.message,e)}},async doAcceptPair(e){try{await S(`POST`,`/pairs/`+encodeURIComponent(e.id)+`/accept`,{agentId:e.targetId}),await Promise.all([t().fetchPairs(),t().fetchMessages()])}catch(e){t().showError(`Accept Failed`,e.message,e)}},async doRejectPair(e){try{await S(`POST`,`/pairs/`+encodeURIComponent(e.id)+`/reject`,{agentId:e.targetId}),await Promise.all([t().fetchPairs(),t().fetchMessages()])}catch(e){t().showError(`Reject Failed`,e.message,e)}},async doHangupPair(e,n){try{await S(`POST`,`/pairs/`+encodeURIComponent(e.id)+`/hangup`,{agentId:n||e.requesterId}),await Promise.all([t().fetchPairs(),t().fetchMessages()])}catch(e){t().showError(`Hang Up Failed`,e.message,e)}}}),yo=25;function bo(e,t){let n=new URLSearchParams({maxItems:String(yo),offset:String(t)});return e.backlogPriorityFilter&&n.set(`priority`,e.backlogPriorityFilter),e.backlogTagFilter&&n.set(`tags`,e.backlogTagFilter),e.backlogSearchFilter&&n.set(`search`,e.backlogSearchFilter),e.backlogProjectFilter&&n.set(`projectId`,e.backlogProjectFilter),n}var xo=(e,t)=>({backlogItems:[],backlogTotal:0,backlogOffset:0,backlogMaxItems:yo,backlogHasMore:!1,backlogLoading:!1,backlogError:null,backlogPriorityFilter:``,backlogTagFilter:``,backlogSearchFilter:``,backlogProjectFilter:``,backlogPromotedOpen:!1,backlogPromotedItems:[],backlogPromotedLoading:!1,backlogPromotedFetched:!1,backlogPromoteLoadingId:null,async fetchBacklog(){e({backlogLoading:!0,backlogError:null});try{let n=await S(`GET`,`/backlog?`+bo(t(),0).toString());e({backlogItems:n.items,backlogTotal:n.total,backlogOffset:n.offset,backlogMaxItems:n.maxItems,backlogHasMore:n.hasMore,backlogLoading:!1})}catch(t){e({backlogLoading:!1,backlogError:t.message})}},async loadMoreBacklog(){let n=t();if(!(!n.backlogHasMore||n.backlogLoading)){e({backlogLoading:!0,backlogError:null});try{let r=n.backlogItems.length,i=await S(`GET`,`/backlog?`+bo(n,r).toString());e({backlogItems:[...t().backlogItems,...i.items],backlogTotal:i.total,backlogOffset:r,backlogMaxItems:i.maxItems,backlogHasMore:i.hasMore,backlogLoading:!1})}catch(t){e({backlogLoading:!1,backlogError:t.message})}}},setBacklogPriorityFilter(n){e({backlogPriorityFilter:n}),t().fetchBacklog()},setBacklogTagFilter(n){e({backlogTagFilter:n}),t().fetchBacklog()},setBacklogSearchFilter(n){e({backlogSearchFilter:n}),t().fetchBacklog()},setBacklogProjectFilter(n){e({backlogProjectFilter:n}),t().fetchBacklog()},toggleBacklogPromoted(){let n=!t().backlogPromotedOpen;e({backlogPromotedOpen:n}),n&&!t().backlogPromotedFetched&&t().fetchBacklogPromoted()},async fetchBacklogPromoted(){e({backlogPromotedLoading:!0});try{e({backlogPromotedItems:(await S(`GET`,`/backlog?state=promoted&sort=updated&maxItems=50`)).items,backlogPromotedLoading:!1,backlogPromotedFetched:!0})}catch{e({backlogPromotedLoading:!1,backlogPromotedFetched:!0})}},async doPromoteBacklogTask(n){e({backlogPromoteLoadingId:n});try{await S(`POST`,`/tasks/`+n+`/promote`,{}),e({backlogItems:t().backlogItems.filter(e=>e.id!==n),backlogTotal:Math.max(0,t().backlogTotal-1),backlogPromoteLoadingId:null}),t().backlogPromotedFetched&&t().fetchBacklogPromoted()}catch(n){e({backlogPromoteLoadingId:null}),t().showError(`Promote Failed`,n.message,n)}}}),So=(e,t)=>({graphNodes:[],graphEdges:[],graphTotal:0,graphMaxNodes:0,graphTruncated:!1,graphLoading:!1,graphError:null,graphProjectFilter:``,async fetchTaskGraph(){e({graphLoading:!0,graphError:null});try{let n=t(),r=new URLSearchParams;n.graphProjectFilter&&r.set(`projectId`,n.graphProjectFilter);let i=r.toString(),a=await S(`GET`,`/task-graph`+(i?`?`+i:``));e({graphNodes:a.nodes,graphEdges:a.edges,graphTotal:a.total,graphMaxNodes:a.maxNodes,graphTruncated:a.truncated,graphLoading:!1})}catch(t){e({graphLoading:!1,graphError:t.message})}},setGraphProjectFilter(n){e({graphProjectFilter:n}),t().fetchTaskGraph()}}),Co=[`implementation`,`review`,`gates`,`landing`,`main`,`deploy`,`validated`],Q=(e,t)=>({kind:`relay`,role:e,...t?{id:t}:{}}),wo=(e,t)=>({kind:`owner`,role:t,...e.owner?{id:e.owner}:{}});function To(e,t){let n=t?.ownerAgentId??e.ownerAgentId;return n?{kind:`agent`,role:`builder`,id:n}:wo(e,`builder`)}function Eo(e,t){let n=t?.status,r=t?.landState??``;return e.verified?{stage:`validated`,responsible:Q(`done`)}:e.deliverableStage===`deploying`||e.deliverableStage===`deployed`?{stage:`deploy`,responsible:Q(`cd`)}:e.deliverableStage===`landed-on-main`||n===`landed`||n===`merged`?e.terminalStage===`landed-on-main`?{stage:`main`,responsible:Q(`done`)}:{stage:`main`,responsible:e.cd?Q(`cd`):wo(e,`closer`)}:r.startsWith(`steward-`)||(n===`conflict`||n===`stranded`)&&t?.stewardAgentId?{stage:`landing`,responsible:Q(`steward`,t?.stewardAgentId)}:n===`merge_planned`||n===`merging`||r===`queued`||r===`merging`?{stage:`landing`,responsible:Q(`landing`)}:n===`gate_running`?{stage:`gates`,responsible:Q(`landing`)}:n===`gate_failed`?{stage:`gates`,responsible:To(e,t)}:(e.reviewHold?e.reviewParked||e.needsReview:n===`review_requested`||e.needsReview)?e.reviewerAgentId?{stage:`review`,responsible:{kind:`agent`,role:`reviewer`,id:e.reviewerAgentId}}:{stage:`review`,responsible:wo(e,`reviewer`)}:{stage:`implementation`,responsible:To(e,t)}}var Do=[`deploy`,`validated`];function Oo(e,t){let n=e.some(e=>e.cd);return Co.filter(e=>n||!Do.includes(e)||t.some(t=>t.stage===e))}function ko(e,t){let n=t.branch?e.filter(e=>e.branch===t.branch):[];return n.length?n:t.ownerAgentId?e.filter(e=>e.signals.ownerAgentId===t.ownerAgentId):[]}var Ao=[`abandoned`,`cleanup_requested`,`cleaned`];function jo(e,t){if(e.signals.reviewerAgentId===t)return e;let n={...e.signals,reviewerAgentId:t};return{...e,signals:n,...Eo(n,e.workspace)}}function Mo(e,t,n){return t.stage===e.stage?e.stageSince:n}function No(e,t){let n=e.workspace;if(n&&n.id!==t.id&&n.updatedAt>t.updatedAt)return e;if(Ao.includes(t.status)){if(n?.id!==t.id)return e;let{workspace:r,...i}=e,a=Eo(e.signals);return{...i,...a,stageSince:Mo(e,a,t.updatedAt)}}let r=Eo(e.signals,t);return{...e,workspace:t,...r,stageSince:Mo(e,r,t.updatedAt)}}var Po=new Set([`claimed`,`in_progress`,`validating`,`blocked`]),Fo=e=>typeof e==`number`?e:Date.parse(e)||Date.now();function Io(e,t){return{...e,tasks:t,lanes:Oo(e.projectLanes,t)}}function Lo(e,t){let n=new Set(ko(e.tasks,t).map(e=>e.taskId));if(!n.size)return e;let r={id:t.id,status:t.status,...t.branch?{branch:t.branch}:{},...t.landState?{landState:t.landState}:{},...t.ownerAgentId?{ownerAgentId:t.ownerAgentId}:{},...t.stewardAgentId?{stewardAgentId:t.stewardAgentId}:{},updatedAt:t.updatedAt};return Io(e,e.tasks.map(e=>n.has(e.taskId)?No(e,r):e))}function Ro(e,t,n){let r=e.owner??e.createdBy;return{deliverableStage:e.deliverableStage??`none`,...e.terminalStage?{terminalStage:e.terminalStage}:{},...e.ownerAgentId?{ownerAgentId:e.ownerAgentId}:{},...r?{owner:r}:{},reviewHold:e.reviewHold===!0,reviewParked:e.reviewHold===!0&&(e.pendingReviewDelivery!==void 0||n?.reviewParked===!0),needsReview:n?.needsReview??!1,verified:n?.verified??!1,...n?.reviewerAgentId?{reviewerAgentId:n.reviewerAgentId}:{},cd:t,staleOwnerGone:!1}}function zo(e,t){if(t.kind!==`deliverable`)return e;let n=e.tasks.find(e=>e.taskId===t.id);if(!n){if(!(e.all?e.projectLanes.some(e=>e.projectId===t.projectId):t.projectId===e.projectId)||!Po.has(t.status))return e;let n=Ro(t,e.projectLanes.some(e=>e.projectId===t.projectId&&e.cd));return Io(e,[{taskId:t.id,title:t.title,...t.projectId?{projectId:t.projectId}:{},...t.branch?{branch:t.branch}:{},...Eo(n),tokens:null,stageSince:Fo(t.updatedAt),signals:n},...e.tasks])}if(!Po.has(t.status)&&t.status!==`done`)return Io(e,e.tasks.filter(e=>e.taskId!==t.id));let r=Ro(t,n.signals.cd===!0,n.signals),i=Eo(r,n.workspace),a={...n,title:t.title,...t.branch?{branch:t.branch}:{},...i,stageSince:Mo(n,i,Fo(t.updatedAt)),signals:r};return Io(e,e.tasks.map(e=>e.taskId===t.id?a:e))}function Bo(e,t){let n=t.repository.toLowerCase(),r=e.ci.find(e=>e.repository.toLowerCase()===n&&e.branch===t.branch&&e.workflow===t.workflow);return!r||r.observedAt>t.observedAt?e:{...e,ci:e.ci.map(e=>e===r?t:e)}}function Vo(e,t,n){let r=new Map;for(let e of t){let t=Number(e.meta?.taskId);e.meta?.profile===`reviewer`&&Ce(n,e)&&Number.isSafeInteger(t)&&r.set(t,e.id)}let i=!1,a=e.tasks.map(e=>{let t=r.get(e.taskId);if(e.stage!==`review`||!t)return e;let n=jo(e,t);return i||=n!==e,n});return i?{...e,tasks:a}:e}var Ho=[`implementation`,`review`];function Uo(e,t,n){let r=[e.responsible.kind===`agent`?e.responsible.id:void 0,e.workspace?.ownerAgentId??e.signals.ownerAgentId],i=null;for(let e of r){if(!e)continue;let r=t[e];if(Ce(n,r))return{id:e,agent:r,live:!0};i??={id:e,...r?{agent:r}:{},live:!1}}return i}function Wo(e,t,n){let r={inFlight:0,withAgents:0,withoutAgent:0,withRelay:0,tokens:0,maxTokens:0};for(let i of e){let{kind:e,role:a}=i.responsible;if(e===`relay`&&a===`done`)continue;r.inFlight++,e===`relay`?r.withRelay++:Uo(i,t,n)?.live?r.withAgents++:r.withoutAgent++;let o=i.tokens?.total??0;r.tokens+=o,r.maxTokens=Math.max(r.maxTokens,o)}return r}var Go=((e,t)=>(n,r)=>{async function i(){let{shippingStatsWindow:e,shippingStatsProjectId:i}=r(),a=`?window=${e}${i?`&projectId=${encodeURIComponent(i)}`:``}`;n({shippingStats:null,shippingStatsLoading:!0,shippingStatsError:null});let o=()=>{let t=r();return t.view===`shipping`&&t.shippingTab===`stats`&&t.shippingStatsWindow===e&&t.shippingStatsProjectId===i};try{let e=await t(a);o()&&n({shippingStats:e,shippingStatsLoading:!1})}catch(e){o()&&n({shippingStatsLoading:!1,shippingStatsError:e.message})}}return{shippingBoard:null,shippingLoading:!1,shippingError:null,shippingProjectId:``,shippingTab:`realtime`,shippingStats:null,shippingStatsLoading:!1,shippingStatsError:null,shippingStatsWindow:`7d`,shippingStatsProjectId:``,async openShipping(){let t=r().shippingProjectId;n({shippingLoading:!0,shippingError:null});try{let i=await e(t===`*`?`?scope=all`:t?`?projectId=${encodeURIComponent(t)}`:``);if(r().view!==`shipping`||r().shippingProjectId!==t)return;n({shippingBoard:i,shippingLoading:!1})}catch(e){r().view===`shipping`&&n({shippingLoading:!1,shippingError:e.message})}},closeShipping(){n({shippingBoard:null,shippingLoading:!1,shippingError:null,shippingTab:`realtime`,shippingStats:null,shippingStatsLoading:!1,shippingStatsError:null})},setShippingProject(e){n({shippingProjectId:e,shippingBoard:null}),r().openShipping()},setShippingTab(e){e!==r().shippingTab&&(n({shippingTab:e,shippingStats:null,shippingStatsLoading:!1,shippingStatsError:null}),e===`stats`&&i())},setShippingStatsWindow(e){n({shippingStatsWindow:e}),i()},setShippingStatsProject(e){n({shippingStatsProjectId:e}),i()},shippingEvent(e,t){let i=r().shippingBoard;if(!i)return;let a=e===`workspace.status`?Lo(i,JSON.parse(t)):e===`ci.status`?Bo(i,JSON.parse(t)):zo(i,JSON.parse(t));a!==i&&n({shippingBoard:a})}}})(e=>S(`GET`,`/shipping/board${e}`),e=>S(`GET`,`/shipping/stats${e}`)),Ko={byAgent:{},byTask:{}};function qo(e){if(!e.length)return Ko;let t={},n={};for(let r of e){let e=(e,t,n)=>({runId:r.runId,workflow:r.workflow,step:e,round:t,kind:n});for(let{steps:t,round:i}of r.rounds)for(let a of t)a.taskId!==r.taskId&&(n[a.taskId]=e(a.step,i,`step`));for(let i of r.agents)i.agentId&&(t[i.agentId]=e(i.step,i.round,`step`)),i.taskId!==r.taskId&&(n[i.taskId]=e(i.step,i.round,`step`));n[r.taskId]=e(r.step,r.round,`run`)}return{byAgent:t,byTask:n}}function Jo(e){let t=e?.meta?.workflowRunId;return typeof t==`string`&&t?t:void 0}function Yo(e){let t=e.round>1?`, round ${e.round}`:``;return e.kind===`run`?`${e.workflow} at ${e.step}${t}`:`${e.workflow}, ${e.step} step${t}`}var Xo=100,Zo=750,Qo={workflowRuns:null,workflowRecent:null,workflowStats:null,workflowDefinitions:null},$o=(e=>(t,n)=>{let r,i=0,a=0;async function o(){let r=++i,{workflowProjectId:a,workflowTab:o,workflowStatsWindow:s}=n(),c=e=>a?`${e}${e.includes(`?`)?`&`:`?`}projectId=${encodeURIComponent(a)}`:e,l=()=>r===i&&n().view===`workflows`;t({workflowLoading:!0,workflowError:null});try{if(o===`stats`){let n=await e(c(`/workflows/stats?window=${s}`));l()&&t({workflowStats:n,workflowLoading:!1})}else if(o===`definitions`){let{workflows:n}=await e(c(`/workflows/definitions`));l()&&t({workflowDefinitions:n,workflowLoading:!1})}else{let r=n().workflowFocusedRun?.runId,[i,a,o]=await Promise.all([e(c(`/workflows/runs?status=running`)),e(c(`/workflows/runs?status=finished&limit=10`)),r?e(`/workflows/runs/${encodeURIComponent(r)}?verbose=true`):void 0]);l()&&t({workflowRuns:i.runs,workflowRecent:a.runs,workflowLoading:!1,...o&&n().workflowFocusedRun?.runId===r?{workflowFocusedRun:{...o,heldCount:o.heldCount??0,taskTitle:o.taskTitle??`T${o.taskId}`,agents:o.agents??[]}}:{}})}}catch(e){l()&&t({workflowLoading:!1,workflowError:e.message})}}async function s(){n().workflowTab===`catalog`?await n().loadWorkflowCatalog():await o()}return{workflowTab:`runs`,workflowFocusedRun:null,async showWorkflowRun(r){await n().switchView(`workflows`);try{let n=await e(`/workflows/runs/${encodeURIComponent(r)}?verbose=true`);t({workflowTab:`runs`,workflowFocusedRun:{...n,heldCount:n.heldCount??0,taskTitle:n.taskTitle??`T${n.taskId}`,agents:n.agents??[]}})}catch(e){t({workflowError:e.message})}},...Qo,workflowStatsWindow:`7d`,workflowProjects:[],workflowProjectId:``,workflowLoading:!1,workflowError:null,workflowLiveRuns:[],workflowLiveIndex:Ko,async fetchWorkflowLiveRuns(){let n=++a;try{let{runs:r}=await e(`/workflows/runs?status=running&limit=${Xo}`);n===a&&t({workflowLiveRuns:r,workflowLiveIndex:qo(r)})}catch{}},async openWorkflows(){n().workflowProjects.length||e(`/projects`).then(e=>{n().view===`workflows`&&t({workflowProjects:e.projects??[]})}).catch(()=>{}),await s()},closeWorkflows(){i++,t({...Qo,workflowTab:`runs`,workflowLoading:!1,workflowError:null}),n().clearWorkflowCatalog()},setWorkflowTab(e){e!==n().workflowTab&&(i++,t({...Qo,workflowTab:e,workflowLoading:!1,workflowError:null}),n().clearWorkflowCatalog(),s())},setWorkflowStatsWindow(e){t({workflowStatsWindow:e,workflowStats:null}),o()},setWorkflowProject(e){t({...Qo,workflowProjectId:e}),s()},workflowChanged(){r||=setTimeout(()=>{r=void 0,n().fetchWorkflowLiveRuns(),n().view===`workflows`&&n().workflowTab!==`catalog`&&o()},Zo)}}})(e=>S(`GET`,e)),es=((e,t)=>(n,r)=>{let i=0;return{workflowCatalog:null,workflowCatalogLoading:!1,workflowCatalogError:null,async loadWorkflowCatalog(){let t=++i,a=r().workflowProjectId,o=()=>t===i&&r().view===`workflows`&&r().workflowTab===`catalog`;n({workflowCatalog:null,workflowCatalogLoading:!0,workflowCatalogError:null});try{let t=await e(a?`?projectId=${encodeURIComponent(a)}`:``);o()&&n({workflowCatalog:t,workflowCatalogLoading:!1})}catch(e){o()&&n({workflowCatalogLoading:!1,workflowCatalogError:e.message})}},clearWorkflowCatalog(){i++,n({workflowCatalog:null,workflowCatalogLoading:!1,workflowCatalogError:null})},async createWorkflowOverrideTask(e){try{return(await t(e)).id}catch(e){return r().showError(`Create Override Task Failed`,e.message,e),null}}}})(e=>S(`GET`,`/workflows/catalog${e}`),e=>S(`POST`,`/tasks`,e));function ts(e){return e.filter(e=>!Be(e.name))}var ns=(e,t)=>({orchestrators:[],providerCatalog:[],orchestratorSpawnOpen:!1,orchestratorInstallOpen:!1,spawnOrchId:``,spawnProvider:N(void 0),spawnModel:F(N(void 0)),spawnEffort:``,spawnSelfEffort:P,spawnProfile:Re,spawnReportVerbosity:``,spawnHarnessSubagents:``,spawnCwd:``,spawnLabel:``,spawnApproval:`guarded`,spawnLaunchMode:``,spawnWorkspaceMode:`inherit`,spawnPrompt:``,spawnSystemPromptAppend:``,spawnCount:1,spawnCwdHistory:[],isSpawning:!1,spawnDirBrowser:{open:!1,loading:!1,path:``,parent:``,baseDir:``,entries:[],error:``},pendingForkImport:null,async fetchOrchestrators(){try{let n=O(t().orchestrators,await S(`GET`,`/orchestrators`));n!==t().orchestrators&&e({orchestrators:n})}catch{}},async fetchProviderCatalog(){try{e({providerCatalog:(await S(`GET`,`/providers`)).catalog})}catch{}},async refreshOrchestratorProviders(e){try{await S(`GET`,`/orchestrators/`+encodeURIComponent(e)+`/providers?refresh=1`),await t().fetchOrchestrators(),t().showNotification(`Provider status refreshed`)}catch(e){t().showError(`Provider Refresh Failed`,e.message,e)}},hostProvidersById:{},async fetchHostProviders(n){try{let r=await S(`GET`,`/orchestrators/`+encodeURIComponent(n)+`/host-providers`);e({hostProvidersById:{...t().hostProvidersById,[n]:r}})}catch(e){t().showError(`Host Providers Failed`,e.message,e)}},async setHostProvider(n,r,i,a){let o=t().hostProvidersById[n];o&&e({hostProvidersById:{...t().hostProvidersById,[n]:{...o,providers:o.providers.map(e=>e.provider===r?{...e,enabled:i}:e)}}});try{let o=await S(`PUT`,`/orchestrators/`+encodeURIComponent(n)+`/host-providers/`+encodeURIComponent(r),{enabled:i,...a?.trim()?{reason:a.trim()}:{},updatedBy:`dashboard`});e({hostProvidersById:{...t().hostProvidersById,[n]:o}}),t().showNotification(`${r} ${i?`enabled`:`disabled`} on ${n}`)}catch(r){o&&e({hostProvidersById:{...t().hostProvidersById,[n]:o}}),t().showError(`Host Provider Update Failed`,r.message,r)}},openAgentSpawn(){t().openOrchestratorSpawn()},closeAgentSpawn(){e({orchestratorSpawnOpen:!1})},async doSpawnAgent(){await t().submitOrchestratorSpawn()},openOrchestratorSpawn(){t().openOrchestratorSpawnAt()},openOrchestratorSpawnAt(n={}){let r=t().orchestrators.filter(e=>e.status===`online`);if(!r.length){t().showError(`No Orchestrators`,`No orchestrators are currently online.`);return}t().fetchProviderCatalog();let i=t(),a=n.orchestratorId?r.find(e=>e.id===n.orchestratorId):void 0;if(n.orchestratorId&&!a){t().showError(`Orchestrator Offline`,`The selected orchestrator is not online.`);return}let o=n.cwd?.trim()||i.spawnCwd,s=o?r.find(e=>v(o,e.baseDir)):void 0,c=i.spawnOrchId?r.find(e=>e.id===i.spawnOrchId):void 0,l=a?.id||s?.id||c?.id||r[0].id,u=r.find(e=>e.id===l),d=i.spawnProvider&&M(u,i.providerCatalog).includes(i.spawnProvider)?i.spawnProvider:N(u,i.providerCatalog),f=i.spawnProvider===d&&i.spawnModel&&mn(d,i.providerCatalog).some(e=>e.alias===i.spawnModel)?i.spawnModel:F(d,i.providerCatalog),p=o&&v(o,u.baseDir)?o:u.baseDir||``;e({spawnOrchId:l,spawnProvider:d,spawnModel:f,spawnEffort:i.spawnProvider===d&&i.spawnModel===f?i.spawnEffort:``,spawnProfile:i.spawnProfile||`worker`,spawnCwd:p,spawnLabel:``,spawnHarnessSubagents:``,spawnReportVerbosity:``,spawnSelfEffort:P,spawnWorkspaceMode:`inherit`,spawnLaunchMode:``,spawnPrompt:``,spawnSystemPromptAppend:``,spawnCount:1,pendingForkImport:null,orchestratorSpawnOpen:!0})},forkFromAgent(n,r){let i=t(),l=i.agentsById[n];if(!l){t().showError(`Fork`,`Agent not found.`);return}let u=i.orchestrators.filter(e=>e.status===`online`);if(!u.length){t().showError(`No Orchestrators`,`No orchestrators are currently online.`);return}t().fetchProviderCatalog();let d=l.providerCapabilities,f=d?.model?.provider||(typeof l.meta?.provider==`string`?l.meta.provider:``),p=d?.model?.alias||d?.model?.id||``,m=c(f,i.providerCatalog)?.models.find(e=>e.alias===p||e.providerModel===p)?.alias||``,h=d?.model?.effort||``,g=l.meta?.workspace,_=a(g)?g:{},te=s(_.repoRoot)||s(_.sourceCwd)||(typeof l.meta?.cwd==`string`?l.meta.cwd:``),ne=s(_.mode),re=ne===`isolated`?`isolated`:ne===`shared`?`shared`:`inherit`,ae=d?.session?.approvalMode||(typeof l.meta?.approvalMode==`string`?l.meta.approvalMode:`guarded`),oe=l.label?`${l.label} (fork)`:``,y=u.find(e=>e.hostname===l.machine)||u.find(e=>v(te,e.baseDir))||u[0],se=ie(l),ce=[];for(let e of r){let t=ee(e).trim();if(!t)continue;let n=o(e.from)?`user`:`agent`;ce.push(`[${n}]: ${t}`)}let b=ce.join(`
6
+ `),x=14e3,le=`You are continuing work from a previous agent session (${se}). Below is the conversation history. Treat it as context for your work, not as your own actions.\n\n${b.length>x?`...
7
+ `+b.slice(b.length-x):b}`,ue=r.filter(e=>typeof e.id==`number`&&e.id>0).map(e=>e.id);e({spawnOrchId:y.id,spawnProvider:f||N(y,i.providerCatalog),spawnModel:m||F(f||N(y,i.providerCatalog),i.providerCatalog),spawnEffort:h,spawnSelfEffort:P,spawnProfile:i.spawnProfile||`worker`,spawnReportVerbosity:``,spawnCwd:te||y.baseDir||``,spawnLabel:oe,spawnApproval:ae,spawnWorkspaceMode:re,spawnPrompt:`Continue from this previous session.`,spawnSystemPromptAppend:le,spawnCount:1,pendingForkImport:{sourcePeerId:l.id,sourceAgentId:l.id,sourceThreadId:l.id,sourceAgentLabel:se,messageIds:ue},orchestratorSpawnOpen:!0})},openOrchestratorInstall(){e({orchestratorInstallOpen:!0})},openOrchestratorSpawnFor(n){let r=t(),i=r.orchestrators.find(e=>e.id===n),a=N(i,r.providerCatalog),o=F(a,r.providerCatalog),s=r.spawnProvider===a&&r.spawnModel===o?r.spawnEffort:``,c=r.spawnCwd&&v(r.spawnCwd,i?.baseDir)?r.spawnCwd:i?.baseDir||``;e({spawnOrchId:n,spawnProvider:a,spawnModel:o,spawnEffort:s,spawnProfile:r.spawnProfile||`worker`,spawnCwd:c,spawnLabel:``,spawnHarnessSubagents:``,spawnReportVerbosity:``,spawnSelfEffort:P,spawnWorkspaceMode:`inherit`,spawnPrompt:``,spawnSystemPromptAppend:``,spawnCount:1,pendingForkImport:null,orchestratorSpawnOpen:!0})},selectSpawnHistory(n,r){let i=t(),a=i.orchestrators.find(e=>e.id===n&&e.status===`online`);if(!a){t().showError(`Unavailable`,`That orchestrator is no longer online.`);return}if(n===i.spawnOrchId){e({spawnCwd:r});return}let o=i.spawnProvider&&M(a,i.providerCatalog).includes(i.spawnProvider)?i.spawnProvider:N(a,i.providerCatalog),s=i.spawnProvider===o&&i.spawnModel&&mn(o,i.providerCatalog).some(e=>e.alias===i.spawnModel)?i.spawnModel:F(o,i.providerCatalog);e({spawnOrchId:n,spawnProvider:o,spawnModel:s,spawnEffort:i.spawnProvider===o&&i.spawnModel===s?i.spawnEffort:``,spawnCwd:r})},async submitOrchestratorSpawn(){let n=t();if(n.isSpawning)return;if(!n.spawnOrchId){t().showError(`Validation`,`Select an orchestrator.`);return}let r=n.orchestrators.find(e=>e.id===n.spawnOrchId);if(!r){t().showError(`Validation`,`Selected orchestrator is not available.`);return}let i=n.spawnCwd.trim();if(!i){t().showError(`Validation`,`Select a working directory.`);return}if(!v(i,r.baseDir)){t().showError(`Validation`,`Working directory must be under ${r.baseDir}.`);return}let a=n.pendingForkImport,o=a?1:Math.max(1,Math.min(10,Math.round(n.spawnCount)||1));e({isSpawning:!0});let s=`spawn-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;try{for(let e=0;e<o;e++){let r={provider:n.spawnProvider,orchestratorId:n.spawnOrchId,approvalMode:n.spawnApproval,workspaceMode:n.spawnWorkspaceMode||`inherit`};n.spawnModel&&(r.model=n.spawnModel),n.spawnEffort&&(r.effort=n.spawnEffort);let s=hn(n.spawnProvider,n.spawnModel,n.spawnLaunchMode,n.providerCatalog),l=gn(s,n.spawnSelfEffort);s.length&&Object.assign(r,n.spawnSelfEffort?{selfEffort:!0,...l===`band`?{}:{selfEffortCeiling:l}}:{selfEffort:!1}),n.spawnProfile&&(r.profile=n.spawnProfile),n.spawnReportVerbosity&&(r.reportVerbosity=n.spawnReportVerbosity),n.spawnHarnessSubagents&&(r.harnessSubagents=n.spawnHarnessSubagents===`on`),n.spawnLaunchMode&&c(n.spawnProvider,n.providerCatalog)?.launchModes?.includes(n.spawnLaunchMode)&&(r.launchMode=n.spawnLaunchMode),r.cwd=i,n.spawnLabel&&(r.label=o>1?`${n.spawnLabel} ${e+1}`:n.spawnLabel),n.spawnPrompt&&(r.prompt=n.spawnPrompt),n.spawnSystemPromptAppend&&(r.systemPromptAppend=n.spawnSystemPromptAppend);let u=(await S(`POST`,`/agents/spawn`,r)).command?.params?.spawnRequestId;a&&u&&a.messageIds.length>0&&await S(`POST`,`/chat/history-imports`,{targetSpawnRequestId:u,sourcePeerId:a.sourcePeerId,sourceAgentId:a.sourceAgentId,sourceThreadId:a.sourceThreadId,sourceAgentLabel:a.sourceAgentLabel,importedBy:T(t().sessionUser),messageIds:a.messageIds})}e({orchestratorSpawnOpen:!1,pendingForkImport:null,isSpawning:!1,spawnCwdHistory:[{orchId:n.spawnOrchId,cwd:i},...n.spawnCwdHistory.filter(e=>!(e.orchId===n.spawnOrchId&&e.cwd===i))].slice(0,5)}),await Promise.all([t().fetchAgents(),t().fetchOrchestrators(),t().fetchActivityEvents(),t().fetchChatHistoryImports()])}catch(n){e({isSpawning:!1});let r=n.status,i=r?`HTTP ${r}`:ge(n)?`network error`:`unknown error`;console.error(`[spawn] agent spawn failed (attempt ${s}, ${i}): ${n.message}`),t().showError(`Spawn Failed`,`${n.message} (attempt ${s}, ${i})`,n,{force:!0})}},orchestratorAction(e,n,r,i){let a=n===`restart`?`Restart`:`Shutdown`,o=r?`agent "${r}"`:`all agents`;t().openConfirm(`${a} Agent`,`${a} ${o} on orchestrator "${e}"?`,async()=>{try{await S(`POST`,`/orchestrators/`+encodeURIComponent(e)+`/actions`,{action:n,agentId:r,...i?{surface:{component:i}}:{}}),await Promise.all([t().fetchOrchestrators(),t().fetchActivityEvents()])}catch(e){t().showError(`${a} Failed`,e.message,e)}})},upgradeOrchestrator(e,n){let r=n?` to v${n}`:` to match the relay`;t().openConfirm(`Upgrade Orchestrator`,`Upgrade "${e}"${r}? It will install the new version and restart itself.`,async()=>{try{await S(`POST`,`/orchestrators/`+encodeURIComponent(e)+`/actions`,{action:`upgrade`,...n?{targetVersion:n}:{}}),await Promise.all([t().fetchOrchestrators(),t().fetchActivityEvents()])}catch(e){t().showError(`Upgrade Failed`,e.message,e)}})},deleteOrchestrator(e){t().openConfirm(`Remove Orchestrator`,`Remove orchestrator "${e}"?`,async()=>{try{await S(`DELETE`,`/orchestrators/`+encodeURIComponent(e)),await Promise.all([t().fetchOrchestrators(),t().fetchActivityEvents()])}catch(e){t().showError(`Delete Failed`,e.message,e)}})},async browseSpawnDirectory(n){let r=t().spawnOrchId;if(!r)return;let i=t().spawnDirBrowser;e({spawnDirBrowser:{...i,loading:!0,error:``}});try{let i=n?`?path=`+encodeURIComponent(n):``,a=await S(`GET`,`/orchestrators/`+encodeURIComponent(r)+`/directories`+i);e({spawnDirBrowser:{open:!0,loading:!1,path:a.path||``,parent:a.parent||``,baseDir:a.baseDir||``,entries:a.entries||[],error:``},spawnCwd:a.path||t().spawnCwd})}catch(n){e({spawnDirBrowser:{...t().spawnDirBrowser,loading:!1,error:n.message}})}},selectSpawnDirectory(n){e({spawnCwd:n||t().spawnDirBrowser.path,spawnDirBrowser:{...t().spawnDirBrowser,open:!1}})}}),rs=(e,t)=>({managedPolicies:[],policyModal:{open:!1,editing:``,name:``,description:``,orchestratorId:``,cwd:``,enabled:void 0,provider:N(void 0),rig:``,model:F(N(void 0)),effort:``,profile:Re,providerArgs:``,launchMode:``,prompt:``,tags:``,capabilities:``,label:``,mode:`always-on`,permissionMode:`guarded`,restartOnUpdate:!0,scheduledDailyRestart:!1,keepaliveSeconds:`300`,backoffSchedule:`5,15,60,300`,backoffResetAfterSeconds:`600`,channelId:``},policyDirBrowser:{open:!1,loading:!1,path:``,parent:``,baseDir:``,entries:[],error:``},agentProfiles:[],toolGroupCatalog:[],toolGroupCatalogStatus:{loading:!1,loaded:!1,error:null},profileModal:{open:!1,mode:`create`,profile:{name:``,description:``,provider:`any`,base:`host`,instructions:{system:``,append:[],repoInstructions:`allow`,globalInstructions:`allow`},relay:{context:!0,skills:!0,plugins:!0,statusLine:!0,mcp:!0},skills:[],plugins:[],mcp:{mode:`host`},hooks:{mode:`host`},permissions:{filesystem:`host`},env:{},providerOptions:{}},relayToolsMode:`full`},async fetchManagedPolicies(){try{let n=ht(t().managedPolicies,await S(`GET`,`/spawn-policies/health`),e=>e.policy.name);n!==t().managedPolicies&&e({managedPolicies:n})}catch{}},async fetchAgentProfiles(){try{e({agentProfiles:(await S(`GET`,`/agent-profiles`)).map(e=>e.value)})}catch{}},async fetchToolGroupCatalog(){e({toolGroupCatalogStatus:{loading:!0,loaded:t().toolGroupCatalogStatus.loaded,error:null}});try{e({toolGroupCatalog:await S(`GET`,`/agent-profiles/tool-groups`),toolGroupCatalogStatus:{loading:!1,loaded:!0,error:null}})}catch(t){e({toolGroupCatalog:[],toolGroupCatalogStatus:{loading:!1,loaded:!0,error:i(t)}})}},openPolicyCreate(){let n=t().orchestrators.filter(e=>e.status===`online`);if(!n.length){t().showError(`No Orchestrators`,`No orchestrators are currently online.`);return}t().fetchProviderCatalog(),e({policyModal:{open:!0,editing:``,name:``,description:``,orchestratorId:n[0].id,cwd:``,enabled:void 0,provider:N(n[0],t().providerCatalog),rig:``,model:F(N(n[0],t().providerCatalog),t().providerCatalog),effort:``,profile:Re,providerArgs:``,launchMode:``,prompt:``,tags:``,capabilities:``,label:``,mode:`always-on`,permissionMode:`guarded`,restartOnUpdate:!0,scheduledDailyRestart:!1,keepaliveSeconds:`300`,backoffSchedule:`5,15,60,300`,backoffResetAfterSeconds:`600`,channelId:``},policyDirBrowser:{open:!1,loading:!1,path:``,parent:``,baseDir:``,entries:[],error:``}})},openPolicyEdit(n){t().fetchProviderCatalog(),e({policyModal:{open:!0,editing:n.name,name:n.name,enabled:n.enabled,description:n.description||``,orchestratorId:n.orchestratorId,cwd:n.cwd,provider:n.provider,rig:n.rig||``,model:n.model||F(n.provider,t().providerCatalog),effort:n.effort||``,profile:n.profile||`worker`,providerArgs:(n.providerArgs||[]).join(` `),launchMode:n.launchMode||``,prompt:n.prompt||``,tags:(n.tags||[]).join(`, `),capabilities:(n.capabilities||[]).join(`, `),label:n.label||``,mode:n.mode,permissionMode:n.permissionMode,restartOnUpdate:n.restartOnUpdate,scheduledDailyRestart:n.scheduledDailyRestart,keepaliveSeconds:String(n.onDemand?.keepaliveSeconds??300),backoffSchedule:(n.backoff?.schedule||[5,15,60,300]).join(`, `),backoffResetAfterSeconds:String(n.backoff?.resetAfterSeconds??600),channelId:n.binding?.channelId||``},policyDirBrowser:{open:!1,loading:!1,path:``,parent:``,baseDir:``,entries:[],error:``}})},async submitPolicy(){let n=t().policyModal;if(!n.name.trim()){t().showError(`Validation`,`Policy name is required.`);return}if(!n.orchestratorId){t().showError(`Validation`,`Select an orchestrator.`);return}if(!n.cwd.trim()){t().showError(`Validation`,`Working directory is required.`);return}let r=e=>e.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean),i={name:n.name.trim(),...n.description.trim()?{description:n.description.trim()}:{},...n.enabled===void 0?{}:{enabled:n.enabled},orchestratorId:n.orchestratorId,cwd:n.cwd.trim(),provider:n.provider,...n.rig.trim()?{rig:n.rig.trim()}:{},...n.model?{model:n.model}:{},...n.effort?{effort:n.effort}:{},...n.profile?{profile:n.profile}:{},providerArgs:n.providerArgs.trim()?n.providerArgs.trim().split(/\s+/):[],...n.launchMode?{launchMode:n.launchMode}:{},...n.prompt.trim()?{prompt:n.prompt.trim()}:{},tags:r(n.tags),capabilities:r(n.capabilities),...n.label.trim()?{label:n.label.trim()}:{},mode:n.mode,permissionMode:n.permissionMode,restartOnUpdate:n.restartOnUpdate,scheduledDailyRestart:n.scheduledDailyRestart,...n.mode===`on-demand`?{onDemand:{keepaliveSeconds:Number(n.keepaliveSeconds)||300,idleDefinition:`no-activity`}}:{},backoff:{schedule:r(n.backoffSchedule).map(Number).filter(e=>e>0),resetAfterSeconds:Number(n.backoffResetAfterSeconds)||600},...n.channelId.trim()?{binding:{type:`channel`,channelId:n.channelId.trim()}}:{}};i.backoff.schedule.length||(i.backoff.schedule=[5,15,60,300]);try{await S(`PUT`,`/spawn-policy/`+encodeURIComponent(i.name),i),e({policyModal:{...n,open:!1}}),await t().fetchManagedPolicies()}catch(e){t().showError(`Save Failed`,e.message,e)}},deletePolicy(e){t().openConfirm(`Delete Policy`,`Delete managed agent policy "${e}"? This will stop any running agent.`,async()=>{try{await S(`DELETE`,`/spawn-policy/`+encodeURIComponent(e)),await t().fetchManagedPolicies()}catch(e){t().showError(`Delete Failed`,e.message,e)}})},async browsePolicyDirectory(n){let r=t().policyModal.orchestratorId;if(!r)return;let i=t().policyDirBrowser;e({policyDirBrowser:{...i,loading:!0,error:``}});try{let i=n?`?path=`+encodeURIComponent(n):``,a=await S(`GET`,`/orchestrators/`+encodeURIComponent(r)+`/directories`+i);e({policyDirBrowser:{open:!0,loading:!1,path:a.path||``,parent:a.parent||``,baseDir:a.baseDir||``,entries:a.entries||[],error:``},policyModal:{...t().policyModal,cwd:a.path||t().policyModal.cwd}})}catch(n){e({policyDirBrowser:{...t().policyDirBrowser,loading:!1,error:n.message}})}},selectPolicyDirectory(n){e({policyModal:{...t().policyModal,cwd:n||t().policyDirBrowser.path},policyDirBrowser:{...t().policyDirBrowser,open:!1}})},openProfileModal(n,r){t().fetchToolGroupCatalog();let i={name:``,description:``,provider:`any`,base:`host`,instructions:{system:``,append:[],repoInstructions:`allow`,globalInstructions:`allow`},relay:{context:!0,skills:!0,plugins:!0,statusLine:!0,mcp:!0},skills:[],plugins:[],mcp:{mode:`host`},hooks:{mode:`host`},permissions:{filesystem:`host`},env:{},providerOptions:{},hostPinned:!1},a;r&&n===`duplicate`?(a=JSON.parse(JSON.stringify(r)),a.name=r.name+`-copy`,delete a.builtIn,delete a.promptVersions):a=r&&(n===`edit`||n===`view`)?JSON.parse(JSON.stringify(r)):i;let o=a.relay.tools?.groups===void 0?`full`:`custom`;e({profileModal:{open:!0,mode:n,profile:a,relayToolsMode:o}})},closeProfileModal(){e({profileModal:{...t().profileModal,open:!1}})},updateProfileModal(n){let r=t().profileModal.profile,i=typeof n==`function`?n(r):n;e({profileModal:{...t().profileModal,profile:{...r,...i}}})},setRelayToolsMode(n){if(e({profileModal:{...t().profileModal,relayToolsMode:n}}),n===`full`){let{profile:n}=t().profileModal;e({profileModal:{...t().profileModal,profile:{...n,relay:{...n.relay,tools:n.relay.tools?{include:n.relay.tools.include,exclude:n.relay.tools.exclude}:void 0}}}})}},async saveProfile(){let{mode:n,profile:r}=t().profileModal;if(!r.name.trim()){t().showError(`Validation`,`Profile name is required.`);return}if(n!==`view`)try{await S(`PUT`,`/agent-profiles/`+encodeURIComponent(r.name.trim()),r),e({profileModal:{...t().profileModal,open:!1}}),await t().fetchAgentProfiles(),t().showNotification(`Profile "${r.name}" saved`)}catch(e){t().showError(`Save Failed`,e.message,e)}},deleteProfile(e){let n=typeof e==`string`?t().agentProfiles.find(t=>t.name===e):e,r=typeof e==`string`?e:e.name,i=n?.builtIn===!0;t().openConfirm(i?`Reset Profile`:`Delete Profile`,i?`Reset built-in profile "${r}" to its default?`:`Delete agent profile "${r}"?`,async()=>{try{await S(`DELETE`,`/agent-profiles/`+encodeURIComponent(r)),await t().fetchAgentProfiles(),t().showNotification(i?`Profile "${r}" reset to default`:`Profile "${r}" deleted`)}catch(e){t().showError(`Delete Failed`,e.message,e)}})}}),is=(e,t)=>({operatorActivity:[],recordOperatorActivity(n){let r={id:Date.now(),kind:`operator`,title:n.title||`Activity`,body:n.body,meta:n.meta,icon:n.icon,view:n.view,peer:n.peer,messageId:n.messageId,pairId:n.pairId,taskId:n.taskId,agentId:n.agentId,ts:Date.now(),clientId:`op-`+Date.now(),createdAt:Date.now()};e({operatorActivity:[r,...t().operatorActivity.slice(0,79)]}),S(`POST`,`/activity`,{operatorId:T(t().sessionUser),clientId:r.clientId,kind:r.kind,title:r.title,body:r.body,meta:r.meta,icon:r.icon,view:r.view,peer:r.peer,messageId:r.messageId,pairId:r.pairId,taskId:r.taskId,agentId:r.agentId}).catch(()=>{})},async openActivityItem(e){if(e.view&&await t().switchView(e.view===`inbox`?`chat`:e.view),e.peer&&t().openInboxThread(e.peer),e.agentId){let n=t().agentsById[e.agentId];n&&t().openAgentDetail(n)}e.taskId&&t().openTaskDetailById(e.taskId)}});function as(e){return ue(e.createdAt??e.ts)}function os(e,t){let n=[`# Humwick Timeline`,``,`Exported: ${t}`,`Events: ${e.length}`,``];for(let t of e){let e=new Date(as(t)).toISOString();n.push(`## ${t.title||t.kind||`Event`}`),n.push(`- When: ${e}`),t.kind&&n.push(`- Kind: ${t.kind}`),t.agentId&&n.push(`- Agent: ${t.agentId}`),t.peer&&n.push(`- Peer: ${t.peer}`),t.body&&n.push(``,t.body),n.push(``)}return n.join(`
8
+ `)}var ss=(e,t)=>({activityEvents:[],activityFilter:``,async fetchActivityEvents(){try{e({activityEvents:z(await S(`GET`,`/activity?limit=200`),200,as)})}catch{}},exportActivity(e){let n=t(),r=[...n.operatorActivity,...n.activityEvents].sort((e,t)=>as(t)-as(e)),i=new Date().toISOString(),a=`humwick-timeline-${i.slice(0,10)}.${e===`json`?`json`:`md`}`;e===`json`?x(a,JSON.stringify({title:`Humwick Timeline`,exportedAt:i,events:r},null,2),`application/json`):x(a,os(r,i),`text/markdown`)},exportThread(e,t){let n=`humwick-thread-${te(e.peer)}.${t===`json`?`json`:`md`}`,r={title:`Thread: `+e.peer,importedHistory:e.importedHistory||[],messages:e.messages,exportedAt:new Date().toISOString()};x(n,JSON.stringify(r,null,2),t===`json`?`application/json`:`text/markdown`)},exportPair(e,t){let n=`humwick-pair-${te(e.id)}.${t===`json`?`json`:`md`}`,r={title:`Pair: `+e.id,pair:e,exportedAt:new Date().toISOString()};x(n,JSON.stringify(r,null,2),t===`json`?`application/json`:`text/markdown`)},async exportTask(n,r){let i=t().taskEventCache[n.id]||[];if(!i.length)try{i=await S(`GET`,`/tasks/`+n.id+`/events`),e({taskEventCache:{...t().taskEventCache,[n.id]:i}})}catch{}let a=`humwick-task-${n.id}.${r===`json`?`json`:`md`}`,o={title:`Task: `+(n.title||`T`+n.id),task:n,events:i,exportedAt:new Date().toISOString()};x(a,JSON.stringify(o,null,2),r===`json`?`application/json`:`text/markdown`)}}),cs=(e,t)=>({channels:[],connectors:[],integrations:[],automations:[],automationRuns:[],health:null,maintenanceJobs:[],maintenanceRunning:[],maintenanceRecentRuns:[],analyticsPeriod:`24h`,analyticsData:null,analyticsTab:`overview`,async fetchChannels(){try{e({channels:await S(`GET`,`/channels`)})}catch{}},async fetchConnectors(){try{e({connectors:await S(`GET`,`/connectors`)})}catch{}},async fetchIntegrations(){try{e({integrations:await S(`GET`,`/integrations`)})}catch{}},async fetchAutomations(){try{e({automations:await S(`GET`,`/automations`)})}catch{}},async fetchAutomationRuns(t){try{let n=new URLSearchParams({limit:`100`});t&&n.set(`automationId`,t),e({automationRuns:await S(`GET`,`/automation-runs?`+n.toString())})}catch{}},async fetchHealth(){try{let n=gt(t().health,await S(`GET`,`/health`));n!==t().health&&e({health:n})}catch{}},async fetchMaintenanceJobs(){try{e({maintenanceJobs:await S(`GET`,`/maintenance/jobs`)})}catch{}},async fetchMaintenanceRunning(){try{let t=await S(`GET`,`/maintenance/running`);e({maintenanceRunning:t.running,maintenanceRecentRuns:t.recent})}catch{}},async runMaintenanceJob(n){try{let r=await S(`POST`,`/maintenance/jobs/`+encodeURIComponent(n)+`/run`,{});return e({maintenanceJobs:r.jobs}),t().showNotification(r.run.status===`succeeded`?`Maintenance job completed`:`Maintenance job skipped`),r.run}catch(e){return t().showError(`Maintenance Job Failed`,e.message,e),await t().fetchMaintenanceJobs(),null}},async pauseMaintenanceJob(n,r){try{let i=await S(`POST`,`/maintenance/jobs/`+encodeURIComponent(n)+`/pause`,r);return i.jobs&&e({maintenanceJobs:i.jobs}),t().showNotification(r.indefinite?`Job paused indefinitely`:`Job paused`),i.pause??null}catch(e){return t().showError(`Pause Failed`,e.message,e),await t().fetchMaintenanceJobs(),null}},async resumeMaintenanceJob(n){try{let r=await S(`POST`,`/maintenance/jobs/`+encodeURIComponent(n)+`/resume`,{});r.jobs&&e({maintenanceJobs:r.jobs});let i=r.drift?` (held ${Math.round(r.drift.heldForMs/6e4)}m)`:``;return t().showNotification(`Job resumed`+i),!0}catch(e){return t().showError(`Resume Failed`,e.message,e),await t().fetchMaintenanceJobs(),!1}},async runHealthAction(n){if(n.preset&&(e({agentPresetFilter:n.preset}),t().setShowOffline(!0)),n.api&&n.path&&(await S(n.api,n.path),await t().refreshLiveData()),n.view&&await t().switchView(n.view),n.copy)try{await navigator.clipboard?.writeText(n.copy)}catch{}},async runConnectorAction(e,n){try{let r=await S(`POST`,`/connectors/`+encodeURIComponent(e)+`/actions`,{action:n});if(await t().fetchConnectors(),!r.ok)throw Error(r.stderr||`${n} failed`);return r}catch(e){throw t().showError(`Connector Action Failed`,e.message,e),e}},async fetchAnalytics(){try{e({analyticsData:await S(`GET`,`/stats/analytics?period=`+t().analyticsPeriod)})}catch{}},setAnalyticsTab(t){e({analyticsTab:t})},setAnalyticsPeriod(n){e({analyticsPeriod:n}),t().fetchAnalytics()}}),ls=(e,t)=>({workspaces:[],workspaceFocusId:null,workspaceGitState:{},workspaceMergePreview:{},workspaceDiff:{},workspaceOrphans:[],async openWorkspaceFocus(n){e({workspaceFocusId:n}),await t().switchView(`workspaces`)},async fetchWorkspaces(){try{e({workspaces:await S(`GET`,`/workspaces`)})}catch{}},async fetchWorkspaceGitState(t){try{let n=await S(`GET`,`/workspaces/`+encodeURIComponent(t)+`/git-state`);e(e=>({workspaceGitState:{...e.workspaceGitState,[t]:n}}))}catch(n){e(e=>({workspaceGitState:{...e.workspaceGitState,[t]:{available:!1,reason:n.message}}}))}},async fetchWorkspaceMergePreview(t){try{let n=await S(`GET`,`/workspaces/`+encodeURIComponent(t)+`/merge-preview`);e(e=>({workspaceMergePreview:{...e.workspaceMergePreview,[t]:n}}))}catch(n){e(e=>({workspaceMergePreview:{...e.workspaceMergePreview,[t]:{available:!1,reason:n.message}}}))}},async fetchWorkspaceDiff(t){try{let n=await S(`GET`,`/workspaces/`+encodeURIComponent(t)+`/diff`);e(e=>({workspaceDiff:{...e.workspaceDiff,[t]:n}}))}catch(n){e(e=>({workspaceDiff:{...e.workspaceDiff,[t]:{available:!1,reason:n.message}}}))}},async fetchWorkspaceOrphans(){try{e({workspaceOrphans:(await S(`GET`,`/workspaces/orphans`)).orphans??[]})}catch{}},async reclaimWorkspaceOrphan(e){t().openConfirm(`Reclaim Orphan Worktree`,`Remove the orphaned worktree "${e.branch||e.worktreePath}" from disk? It has no live agent.`,async()=>{try{await S(`POST`,`/workspaces/orphans/reclaim`,{worktreePath:e.worktreePath,repoRoot:e.repoRoot,branch:e.branch}),t().showNotification(`Orphan reclaim dispatched`),await Promise.all([t().fetchWorkspaceOrphans(),t().fetchActivityEvents()])}catch(e){t().showError(`Reclaim Failed`,e.message,e)}})},async workspaceAction(e,n){let r=n===`hold-merge`?`Merge held`:n===`resume-merge`?`Merge resumed`:n===`ready`?`Mark ready`:n===`request-review`?`Request review`:n===`merge-plan`?`Mark merge planned`:n===`merge`?`Merge`:n===`abandon`?`Abandon`:`Cleanup`,i=async()=>{try{await S(`POST`,`/workspaces/`+encodeURIComponent(e)+`/actions`,{action:n}),t().showNotification(n===`cleanup`?`Workspace cleanup requested`:n===`merge`?`Workspace merge dispatched`:`Workspace updated: ${r}`),await Promise.all([t().fetchWorkspaces(),t().fetchOrchestrators(),t().fetchActivityEvents()])}catch(e){t().showError(`Workspace Action Failed`,e.message,e)}};if(n===`cleanup`||n===`abandon`||n===`merge`){let r=t().workspaces.find(t=>t.id===e),a=r?.branch||r?.worktreePath||e;if(n===`merge`){let n=t().workspaceMergePreview[e],r=n&&n.available!==!1?` — ${n.strategy===`pr`?`opens a PR`:`rebases & fast-forwards into ${n.baseRef||`base`}, then deletes the branch`}.`:` — lands the work and deletes the branch.`;t().openConfirm(`Merge Workspace`,`Merge workspace "${a}"?${r}`,i);return}if(n===`cleanup`){await t().fetchWorkspaceGitState(e);let n=t().workspaceGitState[e],r=``;if(n&&n.available!==!1&&!n.missing){let e=n.ahead??0,t=n.dirtyCount??0;(e>0||t>0)&&(r=` ⚠ This destroys ${[e>0?`${e} unmerged commit(s)`:``,t>0?`${t} uncommitted change(s)`:``].filter(Boolean).join(` and `)}.`)}t().openConfirm(`Cleanup Workspace`,`Remove the worktree for "${a}" on the host?${r}`,i);return}t().openConfirm(`Abandon Workspace`,`Abandon workspace "${a}"?`,i);return}await i()},async purgeWorkspace(e){let n=t().workspaces.find(t=>t.id===e),r=n?.branch||n?.worktreePath||e;t().openConfirm(`Purge Workspace Record`,`Permanently remove the record for "${r}"? This only clears the dashboard row — it does not touch disk.`,async()=>{try{await S(`DELETE`,`/workspaces/`+encodeURIComponent(e)),t().showNotification(`Workspace record purged`),await Promise.all([t().fetchWorkspaces(),t().fetchActivityEvents()])}catch(e){t().showError(`Purge Failed`,e.message,e)}})}}),us=(e,t)=>({projectFocusId:null,projectByCwd:{},async openProjectFocus(n){e({projectFocusId:n}),await t().switchView(`projects`)},consumeProjectFocus(){t().projectFocusId!==null&&e({projectFocusId:null})},async fetchProjectForCwd(n){if(!(!n||n in t().projectByCwd))try{let t=await S(`GET`,`/projects/resolve?cwd=`+encodeURIComponent(n));e(e=>({projectByCwd:{...e.projectByCwd,[n]:t.project??null}}))}catch{}}});function ds(e){if(!e||typeof e!=`object`)return[];let t=e;return[...Object.values(t.enabled??{}),...Object.values(t.disabled??{})]}var fs=(e,t)=>({hosts:[],hostsLoading:!1,hostEditModal:{show:!1,hostId:``,label:``,tagsText:``,noLandingWorkspaces:null,maxAgentsText:``,maxLandingSlotsText:``},async setHostAdmission(e,n){try{await S(`PATCH`,`/hosts/`+encodeURIComponent(e)+`/admission`,n),await t().fetchHosts()}catch(e){t().showError(`Failed to Update Host Admission`,e.message,e)}},async setHostGateBudget(e,n){try{return await S(`PATCH`,`/hosts/`+encodeURIComponent(e)+`/gate-budget`,n),await t().fetchHosts(),!0}catch(e){return t().showError(`Failed to Update Gate Budget`,e.message,e),!1}},async fetchHosts(){e({hostsLoading:!0});try{e({hosts:ds(await S(`GET`,`/hosts?mode=verbose`))})}catch(e){t().showError(`Failed to Load Fleet`,e.message,e)}finally{e({hostsLoading:!1})}},openHostEdit(t){e({hostEditModal:{show:!0,hostId:t.id,label:t.label,tagsText:t.tags.join(`, `),noLandingWorkspaces:t.policy?.noLandingWorkspaces??null,maxAgentsText:t.policy?.maxAgents?.toString()??``,maxLandingSlotsText:t.policy?.maxLandingSlots?.toString()??``}})},closeHostEdit(){e({hostEditModal:{show:!1,hostId:``,label:``,tagsText:``,noLandingWorkspaces:null,maxAgentsText:``,maxLandingSlotsText:``}})},async doSaveHostEdit(){let e=t().hostEditModal,n=t().hosts.find(t=>t.id===e.hostId);if(!n)return;let r=e.label.trim(),i=[...new Set(e.tagsText.split(`,`).map(e=>e.trim()).filter(Boolean))],a=e.maxAgentsText.trim(),o=a===``?null:Number(a);if(o!==null&&!(Number.isInteger(o)&&o>=1)){t().showError(`Invalid Agent Cap`,`Max live agents must be a whole number of at least 1, or empty for the default.`);return}let s=e.maxLandingSlotsText.trim(),c=s===``?null:Number(s);if(c!==null&&!(Number.isInteger(c)&&c>=1&&c<=1e3)){t().showError(`Invalid Landing Slots`,`Landing slots must be a whole number from 1 to 1000, or empty for the default.`);return}try{r&&r!==n.label&&await S(`PATCH`,`/hosts/`+encodeURIComponent(n.id)+`/label`,{label:r}),JSON.stringify(i)!==JSON.stringify(n.tags)&&await S(`PATCH`,`/hosts/`+encodeURIComponent(n.id)+`/tags`,{tags:i}),e.noLandingWorkspaces!==(n.policy?.noLandingWorkspaces??null)&&await S(`PATCH`,`/hosts/`+encodeURIComponent(n.id)+`/landing-placement`,{noLandingWorkspaces:e.noLandingWorkspaces}),o!==(n.policy?.maxAgents??null)&&await S(`PATCH`,`/hosts/`+encodeURIComponent(n.id)+`/agent-cap`,{maxAgents:o}),c!==(n.policy?.maxLandingSlots??null)&&await S(`PATCH`,`/hosts/`+encodeURIComponent(n.id)+`/landing-cap`,{maxLandingSlots:c}),t().closeHostEdit(),await t().fetchHosts()}catch(e){t().showError(`Failed to Update Host`,e.message,e)}},async acceptHostHardware(e){try{await S(`POST`,`/hosts/`+encodeURIComponent(e)+`/accept-hardware`),await t().fetchHosts()}catch(e){t().showError(`Failed to Accept Host Hardware`,e.message,e)}}});function ps(){return $.persist.hasHydrated()?Promise.resolve():new Promise(e=>{let t=$.persist.onFinishHydration(()=>{t(),e()})})}var $=w()(je((...e)=>({...Bi({waitForHydration:ps})(...e),...Vi(...e),...Dt(...e),...Za(...e),...uo(...e),...fo(...e),...go(...e),...vo(...e),...xo(...e),...So(...e),...Go(...e),...$o(...e),...es(...e),...ns(...e),...rs(...e),...Wr(...e),...is(...e),...ss(...e),...$r(...e),...cs(...e),...ls(...e),...us(...e),...fs(...e),...Wn(...e),...qn(...e),...Tr(...e),...bi(...e),...Si()}),{name:`humwick-dashboard`,storage:Le(()=>localStorage),merge:(e,t)=>{let n={...e};return delete n.sessionRefreshToken,{...t,...n}},partialize:e=>({theme:e.theme,view:e.view===`shipping`||e.view===`workflows`?`overview`:e.view,showOffline:e.showOffline,showBuiltIns:e.showBuiltIns,autoRefresh:e.autoRefresh,lowBandwidth:e.lowBandwidth,voiceTtsEnabled:e.voiceTtsEnabled,voiceTtsLang:e.voiceTtsLang,voiceTtsMode:e.voiceTtsMode,voiceTtsKokoroVoice:e.voiceTtsKokoroVoice,voiceTtsBrowserVoice:e.voiceTtsBrowserVoice,voiceInputMode:e.voiceInputMode,agentSort:e.agentSort,agentSortDir:e.agentSortDir,agentPresetFilter:e.agentPresetFilter,agentStatusFilter:e.agentStatusFilter,agentTagFilter:e.agentTagFilter,agentHostFilter:e.agentHostFilter,pairStatusFilter:e.pairStatusFilter,inboxSort:e.inboxSort,inboxSortDir:e.inboxSortDir,inboxShowArchived:e.inboxShowArchived,chatAgentProviderFilter:e.chatAgentProviderFilter,chatAgentStatusFilter:e.chatAgentStatusFilter,chatAgentTagFilter:e.chatAgentTagFilter,chatAgentCapFilter:e.chatAgentCapFilter,chatAgentHostFilter:e.chatAgentHostFilter,chatAgentSort:e.chatAgentSort,chatAgentSortDir:e.chatAgentSortDir,chatAgentGroupBy:e.chatAgentGroupBy,chatAgentFiltersCollapsed:e.chatAgentFiltersCollapsed,chatCollapsedChildren:e.chatCollapsedChildren,chatExpandedItems:e.chatExpandedItems,feedObserveAll:e.feedObserveAll,coordinatorFollows:e.coordinatorFollows,coordinatorMutes:e.coordinatorMutes,planCollapsed:e.planCollapsed,planSelections:e.planSelections,sessionTasksCollapsed:e.sessionTasksCollapsed,activityFilter:e.activityFilter,analyticsPeriod:e.analyticsPeriod,authToken:e.authToken,sessionUser:e.sessionUser,inboxDrafts:e.inboxDrafts,operatorActivity:e.operatorActivity,notifications:e.notifications,notificationUnread:e.notificationUnread,notificationSettings:e.notificationSettings,spawnOrchId:e.spawnOrchId,spawnProvider:e.spawnProvider,spawnModel:e.spawnModel,spawnEffort:e.spawnEffort,spawnProfile:e.spawnProfile,spawnCwd:e.spawnCwd,spawnApproval:e.spawnApproval,spawnWorkspaceMode:e.spawnWorkspaceMode,spawnCwdHistory:e.spawnCwdHistory})}));$.subscribe(ti);var ms=()=>()=>{};function hs(e,t){return(0,C.useSyncExternalStore)(e?$.subscribe:ms,()=>t($.getState()))}export{Jn as $,ci as A,Jt as At,Cr as B,Ie as Bt,Qi as C,Qt as Ct,ki as D,qt as Dt,Ti as E,Bt as Et,Nr as F,Ge as Ft,br as G,xr as H,Er as I,Ue as It,dr as J,pr as K,jr as L,Re as Lt,Or as M,tt as Mt,Mr as N,T as Nt,Mi as O,Wt as Ot,Ar as P,We as Pt,cr as Q,Dr as R,Ve as Rt,ea as S,j as St,Ji as T,Zt as Tt,vr as U,ur as V,w as Vt,yr as W,Sr as X,hr as Y,mr as Z,G as _,gn as _t,Yo as a,ir as at,$i as b,rn as bt,Wo as c,jn as ct,Qa as d,F as dt,tr as et,Z as f,N as ft,xa as g,hn as gt,la as h,_n as ht,Jo as i,ar as it,Pr as j,A as jt,Ai as k,Gt as kt,Vo as l,P as lt,da as m,pn as mt,hs as n,rr as nt,Ho as o,kn as ot,co as p,yn as pt,fr as q,ts as r,nr as rt,Uo as s,Bn as st,$ as t,$n as tt,po as u,mn as ut,ia as v,M as vt,ra as w,Xt as wt,Zi as x,nn as xt,na as y,fn as yt,kr as z,He as zt};
9
+ //# sourceMappingURL=store-BvtFdlGX.js.map
@@ -0,0 +1,2 @@
1
+ var e=[Object.freeze(JSON.parse(`{"displayName":"Stylus","fileTypes":["styl","stylus","css.styl","css.stylus"],"name":"stylus","patterns":[{"include":"#comment"},{"include":"#at_rule"},{"include":"#language_keywords"},{"include":"#language_constants"},{"include":"#variable_declaration"},{"include":"#function"},{"include":"#selector"},{"include":"#declaration"},{"captures":{"1":{"name":"punctuation.section.property-list.begin.css"},"2":{"name":"punctuation.section.property-list.end.css"}},"match":"(\\\\{)(})","name":"meta.brace.curly.css"},{"match":"[{}]","name":"meta.brace.curly.css"},{"include":"#numeric"},{"include":"#string"},{"include":"#operator"}],"repository":{"at_rule":{"patterns":[{"begin":"\\\\s*((@)(import|require))\\\\b\\\\s*","beginCaptures":{"1":{"name":"keyword.control.at-rule.import.stylus"},"2":{"name":"punctuation.definition.keyword.stylus"}},"end":"\\\\s*((?=;|$|\\\\n))","endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.import.css","patterns":[{"include":"#string"}]},{"begin":"\\\\s*((@)(extends?))\\\\b\\\\s*","beginCaptures":{"1":{"name":"keyword.control.at-rule.extend.stylus"},"2":{"name":"punctuation.definition.keyword.stylus"}},"end":"\\\\s*((?=;|$|\\\\n))","endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.extend.css","patterns":[{"include":"#selector"}]},{"captures":{"1":{"name":"keyword.control.at-rule.fontface.stylus"},"2":{"name":"punctuation.definition.keyword.stylus"}},"match":"^\\\\s*((@)font-face)\\\\b","name":"meta.at-rule.fontface.stylus"},{"captures":{"1":{"name":"keyword.control.at-rule.css.stylus"},"2":{"name":"punctuation.definition.keyword.stylus"}},"match":"^\\\\s*((@)css)\\\\b","name":"meta.at-rule.css.stylus"},{"begin":"\\\\s*((@)charset)\\\\b\\\\s*","beginCaptures":{"1":{"name":"keyword.control.at-rule.charset.stylus"},"2":{"name":"punctuation.definition.keyword.stylus"}},"end":"\\\\s*((?=;|$|\\\\n))","name":"meta.at-rule.charset.stylus","patterns":[{"include":"#string"}]},{"begin":"\\\\s*((@)keyframes)\\\\b\\\\s+([-A-Z_a-z][-0-9A-Z_a-z]*)","beginCaptures":{"1":{"name":"keyword.control.at-rule.keyframes.stylus"},"2":{"name":"punctuation.definition.keyword.stylus"},"3":{"name":"entity.name.function.keyframe.stylus"}},"end":"\\\\s*((?=\\\\{|$|\\\\n))","name":"meta.at-rule.keyframes.stylus"},{"begin":"(?=\\\\b((\\\\d+%|from\\\\b|to\\\\b)))","end":"(?=([\\\\n{]))","name":"meta.at-rule.keyframes.stylus","patterns":[{"match":"\\\\b((\\\\d+%|from\\\\b|to\\\\b))","name":"entity.other.attribute-name.stylus"}]},{"captures":{"1":{"name":"keyword.control.at-rule.media.stylus"},"2":{"name":"punctuation.definition.keyword.stylus"}},"match":"^\\\\s*((@)media)\\\\b","name":"meta.at-rule.media.stylus"},{"match":"(?=\\\\w)(?<![-\\\\w])(width|scan|resolution|orientation|monochrome|min-width|min-resolution|min-monochrome|min-height|min-device-width|min-device-height|min-device-aspect-ratio|min-color-index|min-color|min-aspect-ratio|max-width|max-resolution|max-monochrome|max-height|max-device-width|max-device-height|max-device-aspect-ratio|max-color-index|max-color|max-aspect-ratio|height|grid|device-width|device-height|device-aspect-ratio|color-index|color|aspect-ratio)(?<=\\\\w)(?![-\\\\w])","name":"support.type.property-name.media-feature.media.css"},{"match":"(?=\\\\w)(?<![-\\\\w])(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)(?<=\\\\w)(?![-\\\\w])","name":"support.constant.media-type.media.css"},{"match":"(?=\\\\w)(?<![-\\\\w])(portrait|landscape)(?<=\\\\w)(?![-\\\\w])","name":"support.constant.property-value.media-property.media.css"}]},"char_escape":{"match":"\\\\\\\\(.)","name":"constant.character.escape.stylus"},"color":{"patterns":[{"begin":"\\\\b(rgba??|hsla??)(\\\\()","beginCaptures":{"1":{"name":"support.function.color.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.section.function.css"}},"name":"meta.function.color.css","patterns":[{"match":"\\\\s*(,)\\\\s*","name":"punctuation.separator.parameter.css"},{"include":"#numeric"},{"include":"#property_variable"}]},{"captures":{"1":{"name":"punctuation.definition.constant.css"}},"match":"(#)(\\\\h{3}|\\\\h{6})\\\\b","name":"constant.other.color.rgb-value.css"},{"match":"\\\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\\\b","name":"support.constant.color.w3c-standard-color-name.css"},{"match":"\\\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\\\b","name":"support.constant.color.w3c-extended-color-name.css"}]},"comment":{"patterns":[{"include":"#comment_block"},{"include":"#comment_line"}]},"comment_block":{"begin":"/\\\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.css"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.css"}},"name":"comment.block.css"},"comment_line":{"begin":"(^[\\\\t ]+)?(?=//)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.stylus"}},"end":"(?!\\\\G)","patterns":[{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.stylus"}},"end":"(?=\\\\n)","name":"comment.line.double-slash.stylus"}]},"declaration":{"begin":"((?<=^)[^\\\\n\\\\S]+)|((?<=;)[^\\\\n\\\\S]*)|((?<=\\\\{)[^\\\\n\\\\S]*)","end":"(?=\\\\n)|(;)|(?=})|(\\\\n)","endCaptures":{"2":{"name":"punctuation.terminator.rule.css"}},"name":"meta.property-list.css","patterns":[{"match":"(?<![-\\\\w])--[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.css"},{"include":"#language_keywords"},{"include":"#language_constants"},{"match":"(?<=^)[^\\\\n\\\\S]+(\\\\n)"},{"captures":{"1":{"name":"support.type.property-name.css"},"2":{"name":"punctuation.separator.key-value.css"},"3":{"name":"variable.section.css"}},"match":"\\\\G\\\\s*(counter-(?:reset|increment))(?:(:)|[^\\\\n\\\\S])[^\\\\n\\\\S]*([-A-Z_a-z][-0-9A-Z_a-z]*)","name":"meta.property.counter.css"},{"begin":"\\\\G\\\\s*(filter)(?:(:)|[^\\\\n\\\\S])[^\\\\n\\\\S]*","beginCaptures":{"1":{"name":"support.type.property-name.css"},"2":{"name":"punctuation.separator.key-value.css"}},"end":"(?=[\\\\n;}]|$)","name":"meta.property.filter.css","patterns":[{"include":"#function"},{"include":"#property_values"}]},{"include":"#property"},{"include":"#interpolation"},{"include":"$self"}]},"font_name":{"match":"\\\\b((?i:arial|century|comic|courier|cursive|fantasy|futura|garamond|georgia|helvetica|impact|lucida|monospace|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif))\\\\b","name":"support.constant.font-name.css"},"function":{"begin":"(?=[-A-Z_a-z][-0-9A-Z_a-z]*\\\\()","end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.section.function.css"}},"patterns":[{"begin":"(format|url|local)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.misc.css","patterns":[{"match":"(?<=\\\\()[^)\\\\s]*(?=\\\\))","name":"string.css"},{"include":"#string"},{"include":"#variable"},{"include":"#operator"},{"match":"\\\\s*"}]},{"captures":{"1":{"name":"support.function.misc.counter.css"},"2":{"name":"punctuation.section.function.css"},"3":{"name":"variable.section.css"}},"match":"(counter)(\\\\()([-A-Z_a-z][-0-9A-Z_a-z]*)(?=\\\\))","name":"meta.function.misc.counter.css"},{"begin":"(counters)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.counters.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.misc.counters.css","patterns":[{"match":"\\\\G[-A-Z_a-z][-0-9A-Z_a-z]*","name":"variable.section.css"},{"match":"\\\\s*(,)\\\\s*","name":"punctuation.separator.parameter.css"},{"include":"#string"},{"include":"#interpolation"}]},{"begin":"(attr)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.attr.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.misc.attr.css","patterns":[{"match":"\\\\G[-A-Z_a-z][-0-9A-Z_a-z]*","name":"entity.other.attribute-name.attribute.css"},{"match":"(?<=[-0-9A-Z_a-z])\\\\s*\\\\b(string|color|url|integer|number|length|em|ex|px|rem|vw|vh|vmin|vmax|mm|cm|in|pt|pc|angle|deg|grad|rad|time|s|ms|frequency|Hz|kHz|%)\\\\b","name":"support.type.attr.css"},{"match":"\\\\s*(,)\\\\s*","name":"punctuation.separator.parameter.css"},{"include":"#string"},{"include":"#interpolation"}]},{"begin":"(calc)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.calc.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.misc.calc.css","patterns":[{"include":"#property_values"}]},{"begin":"(cubic-bezier)(\\\\()","beginCaptures":{"1":{"name":"support.function.timing.cubic-bezier.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.timing.cubic-bezier.css","patterns":[{"match":"\\\\s*(,)\\\\s*","name":"punctuation.separator.parameter.css"},{"include":"#numeric"},{"include":"#interpolation"}]},{"begin":"(steps)(\\\\()","beginCaptures":{"1":{"name":"support.function.timing.steps.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.timing.steps.css","patterns":[{"match":"\\\\s*(,)\\\\s*","name":"punctuation.separator.parameter.css"},{"include":"#numeric"},{"match":"\\\\b(start|end)\\\\b","name":"support.constant.timing.steps.direction.css"},{"include":"#interpolation"}]},{"begin":"((?:linear|radial|repeating-linear|repeating-radial)-gradient)(\\\\()","beginCaptures":{"1":{"name":"support.function.gradient.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.gradient.css","patterns":[{"match":"\\\\s*(,)\\\\s*","name":"punctuation.separator.parameter.css"},{"include":"#numeric"},{"include":"#color"},{"match":"\\\\b(to|bottom|right|left|top|circle|ellipse|center|closest-side|closest-corner|farthest-side|farthest-corner|at)\\\\b","name":"support.constant.gradient.css"},{"include":"#interpolation"}]},{"begin":"(blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)(\\\\()","beginCaptures":{"1":{"name":"support.function.filter.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.filter.css","patterns":[{"include":"#numeric"},{"include":"#property_variable"},{"include":"#interpolation"}]},{"begin":"(drop-shadow)(\\\\()","beginCaptures":{"1":{"name":"support.function.filter.drop-shadow.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.filter.drop-shadow.css","patterns":[{"include":"#numeric"},{"include":"#color"},{"include":"#property_variable"},{"include":"#interpolation"}]},{"begin":"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[Yy]|rotate[Zz]|scale|scale3d|scale[Xx]|scale[Yy]|scale[Zz]|skew[Xx]??|skew[Yy]|translate|translate3d|translate[Xx]|translate[Yy]|translate[Zz])(\\\\()","beginCaptures":{"1":{"name":"support.function.transform.css"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.transform.css","patterns":[{"include":"#numeric"},{"include":"#property_variable"},{"include":"#interpolation"}]},{"match":"(url|local|format|counters??|attr|calc)(?=\\\\()","name":"support.function.misc.css"},{"match":"(cubic-bezier|steps)(?=\\\\()","name":"support.function.timing.css"},{"match":"((?:linear|radial|repeating-linear|repeating-radial)-gradient)(?=\\\\()","name":"support.function.gradient.css"},{"match":"(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)(?=\\\\()","name":"support.function.filter.css"},{"match":"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[Yy]|rotate[Zz]|scale|scale3d|scale[Xx]|scale[Yy]|scale[Zz]|skew[Xx]??|skew[Yy]|translate|translate3d|translate[Xx]|translate[Yy]|translate[Zz])(?=\\\\()","name":"support.function.transform.css"},{"begin":"([-A-Z_a-z][-0-9A-Z_a-z]*)(\\\\()","beginCaptures":{"1":{"name":"entity.name.function.stylus"},"2":{"name":"punctuation.section.function.css"}},"end":"(?=\\\\))","name":"meta.function.stylus","patterns":[{"match":"--[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.argument.stylus"},{"match":"\\\\s*(,)\\\\s*","name":"punctuation.separator.parameter.css"},{"include":"#interpolation"},{"include":"#property_values"}]},{"match":"\\\\(","name":"punctuation.section.function.css"}]},"interpolation":{"begin":"(\\\\{)[^\\\\n\\\\S]*(?=[^;=]*[^\\\\n\\\\S]*})","beginCaptures":{"1":{"name":"meta.brace.curly"}},"end":"[^\\\\n\\\\S]*(})|\\\\n|$","endCaptures":{"1":{"name":"meta.brace.curly"}},"name":"meta.interpolation.stylus","patterns":[{"include":"#variable"},{"include":"#numeric"},{"include":"#string"},{"include":"#operator"}]},"language_constants":{"match":"\\\\b(true|false|null)\\\\b","name":"constant.language.stylus"},"language_keywords":{"patterns":[{"match":"(\\\\b|\\\\s)(return|else|for|unless|if|else)\\\\b","name":"keyword.control.stylus"},{"match":"(\\\\b|\\\\s)(!important|in|is defined|is a)\\\\b","name":"keyword.other.stylus"},{"match":"\\\\barguments\\\\b","name":"variable.language.stylus"}]},"numeric":{"patterns":[{"captures":{"1":{"name":"keyword.other.unit.css"}},"match":"(?<![-\\\\w])(?:[-+]?[0-9]+(?:\\\\.[0-9]+)?|\\\\.[0-9]+)((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|dppx|fr|ms|s|turn|vh|vmax|vmin|vw)\\\\b|%)?","name":"constant.numeric.css"}]},"operator":{"patterns":[{"match":"((?:[!+:?~]|(\\\\s-\\\\s)|\\\\*?\\\\*|[%/]|(\\\\.)?\\\\.\\\\.|[<>]|[-%*+/:<-?]?=|!=)|\\\\b(?:in|is(?:nt)?|(?<!:)not|or|and)\\\\b)","name":"keyword.operator.stylus"},{"include":"#char_escape"}]},"property":{"begin":"\\\\G\\\\s*(?:(-webkit-[-A-Za-z]+|-moz-[-A-Za-z]+|-o-[-A-Za-z]+|-ms-[-A-Za-z]+|-khtml-[-A-Za-z]+|zoom|z-index|[xy]|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode-range|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|touch-action|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-rendering|text-overflow|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|mix-blend-mode|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line-break|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify-content|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|gap|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-start|grid-row|grid-row-end|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|row-gap|gap|font-kerning|font-language-override|font-weight|font-variant-caps|font-variant|font-style|font-synthesis|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-blend-mode|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation-fill-mode|animation|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust|will-change)|(writing-mode|text-anchor|stroke-width|stroke-opacity|stroke-miterlimit|stroke-linejoin|stroke-linecap|stroke-dashoffset|stroke-dasharray|stroke|stop-opacity|stop-color|shape-rendering|marker-start|marker-mid|marker-end|lighting-color|kerning|image-rendering|glyph-orientation-vertical|glyph-orientation-horizontal|flood-opacity|flood-color|fill-rule|fill-opacity|fill|enable-background|color-rendering|color-interpolation-filters|color-interpolation|clip-rule|clip-path)|([-A-Z_a-z][-0-9A-Z_a-z]*))(?!([^\\\\n\\\\S]*&)|([^\\\\n\\\\S]*\\\\{))(?=:|([^\\\\n\\\\S]+\\\\S))","beginCaptures":{"1":{"name":"support.type.property-name.css"},"2":{"name":"support.type.property-name.svg.css"},"3":{"name":"support.function.mixin.stylus"}},"end":"(;)|(?=[\\\\n}]|$)","endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}},"patterns":[{"include":"#property_value"}]},"property_value":{"begin":"\\\\G(?:(:)|(\\\\s))(\\\\s*)(?!&)","beginCaptures":{"1":{"name":"punctuation.separator.key-value.css"},"2":{"name":"punctuation.separator.key-value.css"}},"end":"(?=[\\\\n;}])","endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}},"name":"meta.property-value.css","patterns":[{"include":"#property_values"},{"match":"\\\\N+?"}]},"property_values":{"patterns":[{"include":"#function"},{"include":"#comment"},{"include":"#language_keywords"},{"include":"#language_constants"},{"match":"(?=\\\\w)(?<![-\\\\w])(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|strict|stretch|step-start|step-end|static|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-x|pan-left|pan-right|pan-y|pan-up|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeLegibility|opacity|oblique|nw-resize|nowrap|not-allowed|normal|none|no-repeat|no-drop|newspaper|ne-resize|n-resize|multiply|move|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?<=\\\\w)(?![-\\\\w])","name":"support.constant.property-value.css"},{"match":"(?=\\\\w)(?<![-\\\\w])(start|sRGB|square|round|optimizeSpeed|optimizeQuality|nonzero|miter|middle|linearRGB|geometricPrecision |evenodd |end |crispEdges|butt|bevel)(?<=\\\\w)(?![-\\\\w])","name":"support.constant.property-value.svg.css"},{"include":"#font_name"},{"include":"#numeric"},{"include":"#color"},{"include":"#string"},{"match":"!\\\\s*important","name":"keyword.other.important.css"},{"include":"#operator"},{"include":"#stylus_keywords"},{"include":"#property_variable"}]},"property_variable":{"patterns":[{"include":"#variable"},{"match":"(?<!^)(@[-A-Z_a-z][-0-9A-Z_a-z]*)","name":"variable.property.stylus"}]},"selector":{"patterns":[{"match":"(?=\\\\w)(?<![-\\\\w])(a|abbr|acronym|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|math|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rb|rp|rtc??|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|ul??|var|video|wbr)(?<=\\\\w)(?![-\\\\w])","name":"entity.name.tag.css"},{"match":"(?=\\\\w)(?<![-\\\\w])(vkern|view|use|tspan|tref|title|textPath|text|symbol|switch|svg|style|stop|set|script|rect|radialGradient|polyline|polygon|pattern|path|mpath|missing-glyph|metadata|mask|marker|linearGradient|line|image|hkern|glyphRef|glyph|g|foreignObject|font-face-uri|font-face-src|font-face-name|font-face-format|font-face|font|filter|feTurbulence|feTile|feSpotLight|feSpecularLighting|fePointLight|feOffset|feMorphology|feMergeNode|feMerge|feImage|feGaussianBlur|feFuncR|feFuncG|feFuncB|feFuncA|feFlood|feDistantLight|feDisplacementMap|feDiffuseLighting|feConvolveMatrix|feComposite|feComponentTransfer|feColorMatrix|feBlend|ellipse|desc|defs|cursor|color-profile|clipPath|circle|animateTransform|animateMotion|animateColor|animate|altGlyphItem|altGlyphDef|altGlyph|a)(?<=\\\\w)(?![-\\\\w])","name":"entity.name.tag.svg.css"},{"match":"\\\\s*(,)\\\\s*","name":"meta.selector.stylus"},{"match":"\\\\*","name":"meta.selector.stylus"},{"captures":{"2":{"name":"entity.other.attribute-name.parent-selector-suffix.stylus"}},"match":"\\\\s*(&)([-0-9A-Z_a-z]+)\\\\s*","name":"meta.selector.stylus"},{"match":"\\\\s*(&)\\\\s*","name":"meta.selector.stylus"},{"captures":{"1":{"name":"punctuation.definition.entity.css"}},"match":"(\\\\.)[-0-9A-Z_a-z]+","name":"entity.other.attribute-name.class.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"}},"match":"(#)[A-Za-z][-0-9A-Z_a-z]*","name":"entity.other.attribute-name.id.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"}},"match":"(:+)(after|before|content|first-letter|first-line|host|(-(moz|webkit|ms)-)?selection)\\\\b","name":"entity.other.attribute-name.pseudo-element.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"}},"match":"(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\\\\b","name":"entity.other.attribute-name.pseudo-class.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"}},"match":"(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\\\\b","name":"entity.other.attribute-name.pseudo-class.ui-state.css"},{"begin":"((:)not)(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.css"}},"patterns":[{"include":"#selector"}]},{"captures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.css"},"4":{"name":"constant.numeric.css"},"5":{"name":"punctuation.section.function.css"}},"match":"((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\\\\()(-?(?:\\\\d+n?|n)(?:\\\\+\\\\d+)?|even|odd)(\\\\))"},{"captures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"puncutation.definition.entity.css"},"3":{"name":"punctuation.section.function.css"},"4":{"name":"constant.language.css"},"5":{"name":"punctuation.section.function.css"}},"match":"((:)dir)\\\\s*(?:(\\\\()(ltr|rtl)?(\\\\)))?"},{"captures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"puncutation.definition.entity.css"},"3":{"name":"punctuation.section.function.css"},"4":{"name":"constant.language.css"},"6":{"name":"punctuation.section.function.css"}},"match":"((:)lang)\\\\s*(?:(\\\\()(\\\\w+(-\\\\w+)?)?(\\\\)))?"},{"captures":{"1":{"name":"punctuation.definition.entity.css"}},"match":"(:)(active|hover|link|visited|focus)\\\\b","name":"entity.other.attribute-name.pseudo-class.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"}},"match":"(::)(shadow)\\\\b","name":"entity.other.attribute-name.pseudo-class.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"name":"entity.other.attribute-name.attribute.css"},"3":{"name":"punctuation.separator.operator.css"},"4":{"name":"string.unquoted.attribute-value.css"},"5":{"name":"string.quoted.double.attribute-value.css"},"6":{"name":"punctuation.definition.string.begin.css"},"7":{"name":"punctuation.definition.string.end.css"},"8":{"name":"punctuation.definition.entity.css"}},"match":"(?i)(\\\\[)\\\\s*(-?[\\\\\\\\_a-z[:^ascii:]][-0-9\\\\\\\\_a-z[:^ascii:]]*)(?:\\\\s*([$*^|~]?=)\\\\s*(?:(-?[\\\\\\\\_a-z[:^ascii:]][-0-9\\\\\\\\_a-z[:^ascii:]]*)|((?>([\\"'])(?:[^\\\\\\\\]|\\\\\\\\.)*?(\\\\6)))))?\\\\s*(])","name":"meta.attribute-selector.css"},{"include":"#interpolation"},{"include":"#variable"}]},"string":{"patterns":[{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.double.css","patterns":[{"match":"\\\\\\\\(\\\\h{1,6}|.)","name":"constant.character.escape.css"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.single.css","patterns":[{"match":"\\\\\\\\(\\\\h{1,6}|.)","name":"constant.character.escape.css"}]}]},"variable":{"match":"(\\\\$[-A-Z_a-z][-0-9A-Z_a-z]*)","name":"variable.stylus"},"variable_declaration":{"begin":"^[^\\\\n\\\\S]*(\\\\$?[-A-Z_a-z][-0-9A-Z_a-z]*)[^\\\\n\\\\S]*([:?]??=)","beginCaptures":{"1":{"name":"variable.stylus"},"2":{"name":"keyword.operator.stylus"}},"end":"(\\\\n)|(;)|(?=})","endCaptures":{"2":{"name":"punctuation.terminator.rule.css"}},"patterns":[{"include":"#property_values"}]}},"scopeName":"source.stylus","aliases":["styl"]}`))];export{e as default};
2
+ //# sourceMappingURL=stylus-B6D30XZt.js.map
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./javascript-CUt1pgmJ.js";import{t}from"./css-DJp_X0uY.js";import{t as n}from"./typescript-DOu2WMV5.js";import r from"./postcss-BXeXVLqQ.js";var i=Object.freeze(JSON.parse(`{"displayName":"Svelte","fileTypes":["svelte"],"injections":{"L:(meta.script.svelte | meta.style.svelte) (meta.lang.js | meta.lang.javascript) - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.js","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.js"}]}]},"L:(meta.script.svelte | meta.style.svelte) (meta.lang.ts | meta.lang.typescript) - (meta source)":{"patterns":[{"begin":"(?<=>)(?=[^\\\\n]+</(s(?:cript|tyle))[>\\\\s])","contentName":"source.ts","end":"(?=</(s(?:cript|tyle))[>\\\\s])","name":"meta.embedded.block.svelte","patterns":[{"include":"source.ts"}]},{"begin":"(?<=>)(?!</)","contentName":"source.ts","name":"meta.embedded.block.svelte","patterns":[{"include":"source.ts"}],"while":"^(?!\\\\s*</(s(?:cript|tyle))[>\\\\s])"}]},"L:(meta.script.svelte | meta.style.svelte) meta.lang.coffee - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.coffee","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.coffee"}]}]},"L:(source.ts, source.js, source.coffee)":{"patterns":[{"match":"(?<![\\"$'./_[:alnum:]])\\\\$(?=[_[:alpha:]][$_[:alnum:]]*)","name":"punctuation.definition.variable.svelte"},{"match":"(?<![\\"$'./_[:alnum:]])(\\\\$\\\\$)(?=props|restProps|slots)","name":"punctuation.definition.variable.svelte"}]},"L:meta.script.svelte - meta.lang - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.js","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.js"}]}]},"L:meta.style.svelte - meta.lang - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.css","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.css"}]}]},"L:meta.style.svelte meta.lang.css - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.css","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.css"}]}]},"L:meta.style.svelte meta.lang.less - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.css.less","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.css.less"}]}]},"L:meta.style.svelte meta.lang.postcss - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.css.postcss","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.css.postcss"}]}]},"L:meta.style.svelte meta.lang.sass - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.sass","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.sass"}]}]},"L:meta.style.svelte meta.lang.scss - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.css.scss","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.css.scss"}]}]},"L:meta.style.svelte meta.lang.stylus - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"source.stylus","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"source.stylus"}]}]},"L:meta.template.svelte - meta.lang - (meta source)":{"patterns":[{"begin":"(?<=>)\\\\s","end":"(?=</template)","patterns":[{"include":"#scope"}]}]},"L:meta.template.svelte meta.lang.pug - (meta source)":{"patterns":[{"begin":"(?<=>)(?!</)","contentName":"text.pug","end":"(?=</)","name":"meta.embedded.block.svelte","patterns":[{"include":"text.pug"}]}]}},"name":"svelte","patterns":[{"include":"#scope"}],"repository":{"attributes":{"patterns":[{"include":"#attributes-comments"},{"include":"#attributes-directives"},{"include":"#attributes-keyvalue"},{"include":"#attributes-attach"},{"include":"#attributes-interpolated"}]},"attributes-attach":{"begin":"(?<![:=])\\\\s*(\\\\{@attach\\\\s)","captures":{"1":{"name":"entity.other.attribute-name.svelte"}},"contentName":"meta.embedded.expression.svelte source.ts","end":"(})","patterns":[{"include":"source.ts"}]},"attributes-comments":{"patterns":[{"match":"//.*$","name":"comment.line.double-slash.svelte"},{"begin":"/\\\\*","end":"\\\\*/","name":"comment.block.svelte"}]},"attributes-directives":{"begin":"(?<!<)(on|use|bind|transition|in|out|animate|let|class|style)(:)(?:((?:--)?[$_[:alpha:]][-$_[:alnum:]]*(?=\\\\s*=))|((?:--)?[$_[:alpha:]][-$_[:alnum:]]*))((\\\\|\\\\w+)*)","beginCaptures":{"1":{"patterns":[{"include":"#attributes-directives-keywords"}]},"2":{"name":"punctuation.definition.keyword.svelte"},"3":{"patterns":[{"include":"#attributes-directives-types-assigned"}]},"4":{"patterns":[{"include":"#attributes-directives-types"}]},"5":{"patterns":[{"match":"\\\\w+","name":"support.function.svelte"},{"match":"\\\\|","name":"punctuation.separator.svelte"}]}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.directive.$1.svelte","patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.svelte"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"include":"#attributes-value"}]}]},"attributes-directives-keywords":{"patterns":[{"match":"on|use|bind","name":"keyword.control.svelte"},{"match":"transition|in|out|animate","name":"keyword.other.animation.svelte"},{"match":"let","name":"storage.type.svelte"},{"match":"class|style","name":"entity.other.attribute-name.svelte"}]},"attributes-directives-types":{"patterns":[{"match":"(?<=(on):).*$","name":"entity.name.type.svelte"},{"match":"(?<=(bind):).*$","name":"variable.parameter.svelte"},{"match":"(?<=(use|transition|in|out|animate):).*$","name":"variable.function.svelte"},{"match":"(?<=(let|class|style):).*$","name":"variable.parameter.svelte"}]},"attributes-directives-types-assigned":{"patterns":[{"match":"(?<=(bind):)this$","name":"variable.language.svelte"},{"match":"(?<=(bind):).*$","name":"entity.name.type.svelte"},{"match":"(?<=(class):).*$","name":"entity.other.attribute-name.class.svelte"},{"match":"(?<=(style):).*$","name":"support.type.property-name.svelte"},{"include":"#attributes-directives-types"}]},"attributes-generics":{"begin":"(generics)(=)([\\"'])","beginCaptures":{"1":{"name":"entity.other.attribute-name.svelte"},"2":{"name":"punctuation.separator.key-value.svelte"},"3":{"name":"punctuation.definition.string.begin.svelte"}},"contentName":"meta.embedded.expression.svelte source.ts","end":"(\\\\3)","endCaptures":{"1":{"name":"punctuation.definition.string.end.svelte"}},"patterns":[{"include":"#type-parameters"}]},"attributes-interpolated":{"begin":"(?<![:=])\\\\s*(\\\\{)","captures":{"1":{"name":"entity.other.attribute-name.svelte"}},"contentName":"meta.embedded.expression.svelte source.ts","end":"(})","patterns":[{"include":"source.ts"}]},"attributes-keyvalue":{"begin":"((?:--)?[$_[:alpha:]][-$_[:alnum:]]*)","beginCaptures":{"0":{"patterns":[{"match":"--.*","name":"support.type.property-name.svelte"},{"match":".*","name":"entity.other.attribute-name.svelte"}]}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.svelte","patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.svelte"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"include":"#attributes-value"}]}]},"attributes-value":{"patterns":[{"include":"#interpolation"},{"captures":{"1":{"name":"punctuation.definition.string.begin.svelte"},"2":{"name":"constant.numeric.decimal.svelte"},"3":{"name":"punctuation.definition.string.end.svelte"},"4":{"name":"constant.numeric.decimal.svelte"}},"match":"([\\"'])([.0-9_]+[%\\\\w]{0,4})(\\\\1)|([.0-9_]+[%\\\\w]{0,4})(?=\\\\s|/?>)"},{"match":"([^\\"'/<=>\`\\\\s]|/(?!>))+","name":"string.unquoted.svelte","patterns":[{"include":"#interpolation"}]},{"begin":"([\\"'])","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.svelte"}},"end":"\\\\1","endCaptures":{"0":{"name":"punctuation.definition.string.end.svelte"}},"name":"string.quoted.svelte","patterns":[{"include":"#interpolation"}]}]},"comments":{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.svelte"}},"end":"-->","name":"comment.block.svelte","patterns":[{"begin":"(@)(component)","beginCaptures":{"1":{"name":"punctuation.definition.keyword.svelte"},"2":{"name":"storage.type.class.component.svelte keyword.declaration.class.component.svelte"}},"contentName":"comment.block.documentation.svelte","end":"(?=-->)","patterns":[{"captures":{"0":{"patterns":[{"include":"text.html.markdown"}]}},"match":".*?(?=-->)"},{"include":"text.html.markdown"}]},{"match":"\\\\G-?>|<!--(?!>)|<!-(?=-->)|--!>","name":"invalid.illegal.characters-not-allowed-here.svelte"}]},"destructuring":{"patterns":[{"begin":"(?=\\\\{)","end":"(?<=})","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts#object-binding-pattern"}]},{"begin":"(?=\\\\[)","end":"(?<=])","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts#array-binding-pattern"}]}]},"destructuring-const":{"patterns":[{"begin":"(?=\\\\{)","end":"(?<=})","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts#object-binding-pattern-const"}]},{"begin":"(?=\\\\[)","end":"(?<=])","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts#array-binding-pattern-const"}]}]},"interpolation":{"patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.svelte"}},"contentName":"meta.embedded.expression.svelte source.ts","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.svelte"}},"patterns":[{"begin":"\\\\G\\\\s*(?=\\\\{)","end":"(?<=})","patterns":[{"include":"source.ts#object-literal"}]},{"include":"source.ts"}]}]},"scope":{"patterns":[{"include":"#comments"},{"include":"#special-tags"},{"include":"#tags"},{"include":"#interpolation"},{"begin":"(?<=[>}])","end":"(?=[<{])","name":"text.svelte"}]},"special-tags":{"patterns":[{"include":"#special-tags-void"},{"include":"#special-tags-block-begin"},{"include":"#special-tags-block-end"}]},"special-tags-block-begin":{"begin":"(\\\\{)\\\\s*(#([a-z]*))","beginCaptures":{"1":{"name":"punctuation.definition.block.begin.svelte"},"2":{"patterns":[{"include":"#special-tags-keywords"}]}},"end":"(})","endCaptures":{"0":{"name":"punctuation.definition.block.end.svelte"}},"name":"meta.special.$3.svelte meta.special.start.svelte","patterns":[{"include":"#special-tags-modes"}]},"special-tags-block-end":{"begin":"(\\\\{)\\\\s*(/([a-z]*))","beginCaptures":{"1":{"name":"punctuation.definition.block.begin.svelte"},"2":{"patterns":[{"include":"#special-tags-keywords"}]}},"end":"(})","endCaptures":{"1":{"name":"punctuation.definition.block.end.svelte"}},"name":"meta.special.$3.svelte meta.special.end.svelte"},"special-tags-keywords":{"captures":{"1":{"name":"punctuation.definition.keyword.svelte"},"2":{"patterns":[{"match":"if|else\\\\s+if|else","name":"keyword.control.conditional.svelte"},{"match":"each|key","name":"keyword.control.svelte"},{"match":"await|then|catch","name":"keyword.control.flow.svelte"},{"match":"snippet","name":"keyword.control.svelte"},{"match":"html","name":"keyword.other.svelte"},{"match":"render","name":"keyword.other.svelte"},{"match":"debug","name":"keyword.other.debugger.svelte"},{"match":"const","name":"storage.type.svelte"}]}},"match":"([#/:@])(else\\\\s+if|[a-z]*)"},"special-tags-modes":{"patterns":[{"begin":"(?<=(if|key|then|catch|html|render).*?)\\\\G","end":"(?=})","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts"}]},{"begin":"(?<=snippet.*?)\\\\G","end":"(?=})","name":"meta.embedded.expression.svelte source.ts","patterns":[{"captures":{"1":{"name":"entity.name.function.ts"}},"match":"\\\\G\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=<)"},{"begin":"(?<=<)","contentName":"meta.type.parameters.ts","end":"(?=>)","patterns":[{"include":"source.ts"}]},{"begin":"(?<=>\\\\s*\\\\()","end":"(?=})","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts"}]},{"begin":"\\\\G","end":"(?=})","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts"}]}]},{"begin":"(?<=const.*?)\\\\G","end":"(?=})","patterns":[{"include":"#destructuring-const"},{"begin":"\\\\G\\\\s*([$_[:alpha:]][$_[:alnum:]]+)\\\\s*","beginCaptures":{"1":{"name":"variable.other.constant.svelte"}},"end":"(?=[:=])"},{"begin":"(?=:)","end":"(?==)","name":"meta.type.annotation.svelte","patterns":[{"include":"source.ts"}]},{"begin":"(?==)","end":"(?=})","name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts"}]}]},{"begin":"(?<=each.*?)\\\\G","end":"(?=})","patterns":[{"begin":"\\\\G\\\\s*?(?=\\\\S)","contentName":"meta.embedded.expression.svelte source.ts","end":"(?=(?:^\\\\s*|\\\\s+)(as)|\\\\s*([,}]))","patterns":[{"include":"source.ts"}]},{"begin":"(as)|(?=[,}])","beginCaptures":{"1":{"name":"keyword.control.as.svelte"}},"end":"(?=})","patterns":[{"include":"#destructuring"},{"begin":"\\\\(","captures":{"0":{"name":"meta.brace.round.svelte"}},"contentName":"meta.embedded.expression.svelte source.ts","end":"\\\\)|(?=})","patterns":[{"include":"source.ts"}]},{"captures":{"1":{"name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts"}]}},"match":"(\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*)"},{"match":",","name":"punctuation.separator.svelte"}]}]},{"begin":"(?<=await.*?)\\\\G","end":"(?=})","patterns":[{"begin":"\\\\G\\\\s*?(?=\\\\S)","contentName":"meta.embedded.expression.svelte source.ts","end":"\\\\s+(then)|(?=})","endCaptures":{"1":{"name":"keyword.control.flow.svelte"}},"patterns":[{"include":"source.ts"}]},{"begin":"(?<=then\\\\b)","contentName":"meta.embedded.expression.svelte source.ts","end":"(?=})","patterns":[{"include":"source.ts"}]}]},{"begin":"(?<=debug.*?)\\\\G","end":"(?=})","patterns":[{"captures":{"0":{"name":"meta.embedded.expression.svelte source.ts","patterns":[{"include":"source.ts"}]}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"match":",","name":"punctuation.separator.svelte"}]}]},"special-tags-void":{"begin":"(\\\\{)\\\\s*([:@](else\\\\s+if|[a-z]*))","beginCaptures":{"1":{"name":"punctuation.definition.block.begin.svelte"},"2":{"patterns":[{"include":"#special-tags-keywords"}]}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.end.svelte"}},"name":"meta.special.$3.svelte","patterns":[{"include":"#special-tags-modes"}]},"tags":{"patterns":[{"include":"#tags-lang"},{"include":"#tags-void"},{"include":"#tags-general-end"},{"include":"#tags-general-start"}]},"tags-end-node":{"captures":{"1":{"name":"meta.tag.end.svelte punctuation.definition.tag.begin.svelte"},"2":{"name":"meta.tag.end.svelte","patterns":[{"include":"#tags-name"}]},"3":{"name":"meta.tag.end.svelte punctuation.definition.tag.end.svelte"},"4":{"name":"meta.tag.start.svelte punctuation.definition.tag.end.svelte"}},"match":"(</)(.*?)\\\\s*(>)|(/>)"},"tags-general-end":{"begin":"(</)([^/>\\\\s]*)","beginCaptures":{"1":{"name":"meta.tag.end.svelte punctuation.definition.tag.begin.svelte"},"2":{"name":"meta.tag.end.svelte","patterns":[{"include":"#tags-name"}]}},"end":"(>)","endCaptures":{"1":{"name":"meta.tag.end.svelte punctuation.definition.tag.end.svelte"}},"name":"meta.scope.tag.$2.svelte"},"tags-general-start":{"begin":"(<)([^/>\\\\s]*)","beginCaptures":{"0":{"patterns":[{"include":"#tags-start-node"}]}},"end":"(/?>)","endCaptures":{"1":{"name":"meta.tag.start.svelte punctuation.definition.tag.end.svelte"}},"name":"meta.scope.tag.$2.svelte","patterns":[{"include":"#tags-start-attributes"}]},"tags-lang":{"begin":"<(script|style|template)","beginCaptures":{"0":{"patterns":[{"include":"#tags-start-node"}]}},"end":"</\\\\1\\\\s*>|/>","endCaptures":{"0":{"patterns":[{"include":"#tags-end-node"}]}},"name":"meta.$1.svelte","patterns":[{"begin":"\\\\G(?=\\\\s*[^>]*?(type|lang)\\\\s*=\\\\s*([\\"']?)(?:text/)?(\\\\w+)\\\\2)","end":"(?=</|/>)","name":"meta.lang.$3.svelte","patterns":[{"include":"#tags-lang-start-attributes"}]},{"include":"#tags-lang-start-attributes"}]},"tags-lang-start-attributes":{"begin":"\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.svelte"}},"name":"meta.tag.start.svelte","patterns":[{"include":"#attributes-generics"},{"include":"#attributes"}]},"tags-name":{"patterns":[{"captures":{"1":{"name":"keyword.control.svelte"},"2":{"name":"punctuation.definition.keyword.svelte"},"3":{"name":"entity.name.tag.svelte"}},"match":"(svelte)(:)([a-z][-:\\\\w]*)"},{"match":"slot","name":"keyword.control.svelte"},{"captures":{"1":{"patterns":[{"match":"\\\\w+","name":"support.class.component.svelte"},{"match":"\\\\.","name":"punctuation.definition.keyword.svelte"}]},"2":{"name":"support.class.component.svelte"}},"match":"(\\\\w+(?:\\\\.\\\\w+)+)|([A-Z]\\\\w*)"},{"match":"[a-z][0-:\\\\w]*-[-0-:\\\\w]*","name":"meta.tag.custom.svelte entity.name.tag.svelte"},{"match":"[a-z][-0-:\\\\w]*","name":"entity.name.tag.svelte"}]},"tags-start-attributes":{"begin":"\\\\G","end":"(?=/?>)","name":"meta.tag.start.svelte","patterns":[{"include":"#attributes"}]},"tags-start-node":{"captures":{"1":{"name":"punctuation.definition.tag.begin.svelte"},"2":{"patterns":[{"include":"#tags-name"}]}},"match":"(<)([^/>\\\\s]*)","name":"meta.tag.start.svelte"},"tags-void":{"begin":"(<)(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.svelte"},"2":{"name":"entity.name.tag.svelte"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.begin.svelte"}},"name":"meta.tag.void.svelte","patterns":[{"include":"#attributes"}]},"type-parameters":{"name":"meta.type.parameters.ts","patterns":[{"include":"source.ts#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"},{"include":"source.ts#type"},{"include":"source.ts#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.ts"}]}},"scopeName":"source.svelte","embeddedLangs":["javascript","typescript","css","postcss"],"embeddedLangsLazy":["coffee","stylus","sass","scss","less","pug","markdown"]}`)),a=[...e,...n,...t,...r,i];export{a as default};
2
+ //# sourceMappingURL=svelte-DOdLCIlh.js.map
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{f as t,o as n,p as r,u as i}from"./dist-DeW2Y1R5.js";import{a,i as o,n as s}from"./dist-CoWL6B0c.js";import{t as c}from"./dist-B2h2GeWt.js";import{t as l}from"./dist-D93SmTNC.js";import{t as u}from"./dist-C6lpJDoA.js";var d=e(r(),1),f=i(),p=`Switch`,[m,h]=o(p),[g,_]=m(p),v=d.forwardRef((e,n)=>{let{__scopeSwitch:r,name:i,checked:o,defaultChecked:l,required:u,disabled:m,value:h=`on`,onCheckedChange:_,form:v,...y}=e,[b,x]=d.useState(null),w=t(n,e=>x(e)),T=d.useRef(!1),E=!b||v||!!b.closest(`form`),[D,O]=c({prop:o,defaultProp:l??!1,onChange:_,caller:p});return(0,f.jsxs)(g,{scope:r,checked:D,disabled:m,children:[(0,f.jsx)(a.button,{type:`button`,role:`switch`,"aria-checked":D,"aria-required":u,"data-state":C(D),"data-disabled":m?``:void 0,disabled:m,value:h,...y,ref:w,onClick:s(e.onClick,e=>{O(e=>!e),E&&(T.current=e.isPropagationStopped(),T.current||e.stopPropagation())})}),E&&(0,f.jsx)(S,{control:b,bubbles:!T.current,name:i,value:h,checked:D,required:u,disabled:m,form:v,style:{transform:`translateX(-100%)`}})]})});v.displayName=p;var y=`SwitchThumb`,b=d.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=_(y,n);return(0,f.jsx)(a.span,{"data-state":C(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});b.displayName=y;var x=`SwitchBubbleInput`,S=d.forwardRef(({__scopeSwitch:e,control:n,checked:r,bubbles:i=!0,...a},o)=>{let s=d.useRef(null),c=t(s,o),p=l(r),m=u(n);return d.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set;if(p!==r&&n){let t=new Event(`click`,{bubbles:i});n.call(e,r),e.dispatchEvent(t)}},[p,r,i]),(0,f.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:r,...a,tabIndex:-1,ref:c,style:{...a.style,...m,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});S.displayName=x;function C(e){return e?`checked`:`unchecked`}var w=v,T=b;function E({className:e,size:t=`default`,...r}){return(0,f.jsx)(w,{"data-slot":`switch`,"data-size":t,className:n(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50`,e),...r,children:(0,f.jsx)(T,{"data-slot":`switch-thumb`,className:`pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground`})})}export{E as t};
2
+ //# sourceMappingURL=switch-DuCA7mrB.js.map