@humwick/server 0.130.2 → 0.130.4

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 (587) hide show
  1. package/bundled/prompts/manifest.json +1 -0
  2. package/bundled/prompts/task.hydration.md +1 -1
  3. package/bundled/roles/builder.md +1 -1
  4. package/docs/guides/sub-coordinators.md +12 -5
  5. package/docs/guides/tools-coordination.md +1 -0
  6. package/docs/guides/workflows.md +16 -0
  7. package/docs/openapi.json +175 -4
  8. package/package.json +8 -7
  9. package/public/assets/{MessageBubble-BWLqMGKG.js → MessageBubble-BOkmEvgZ.js} +2 -2
  10. package/public/assets/{PlanGraphPanel-3TlIQpjk.js → PlanGraphPanel-BkaDJp0r.js} +2 -2
  11. package/public/assets/{TraceView-Wimm0Czv.js → TraceView-B99Uu2yT.js} +2 -2
  12. package/public/assets/{VaultDecisionCard-Bau_vNax.js → VaultDecisionCard-DUIfTTFF.js} +2 -2
  13. package/public/assets/{activity-CrSurn-r.js → activity-ZIX0N1El.js} +2 -2
  14. package/public/assets/{agent-lineage-CknAJKcb.js → agent-lineage-kq9TPYFw.js} +2 -2
  15. package/public/assets/agent-liveness-DSQY1Aa_.js +2 -0
  16. package/public/assets/{agent-name-DKbiIhBo.js → agent-name-C_7F4DFR.js} +2 -2
  17. package/public/assets/{agent-profiles-DwF6EQ4R.js → agent-profiles-BNOcrGcY.js} +2 -2
  18. package/public/assets/{agent-project-badge-Diz4Sjjb.js → agent-project-badge-B6yAh70a.js} +2 -2
  19. package/public/assets/{agent-tools-CRhpRQza.js → agent-tools-CcrhmOzF.js} +2 -2
  20. package/public/assets/{agent-type-icon-LrUEU3lB.js → agent-type-icon-CXSLrKiq.js} +2 -2
  21. package/public/assets/{agents-B-v66C-4.js → agents-DIZG97_X.js} +2 -2
  22. package/public/assets/{analytics-BqCb-LKi.js → analytics-rasmoPjR.js} +2 -2
  23. package/public/assets/{artifact-viewer-kf4pGuAR.js → artifact-viewer-tBpTrEPb.js} +2 -2
  24. package/public/assets/{artifacts-DJevXcvg.js → artifacts-BNkrynP1.js} +2 -2
  25. package/public/assets/{artifacts-D32zyw4Y.js → artifacts-Bjq-ZyBA.js} +2 -2
  26. package/public/assets/{automation-BpRajx_5.js → automation-Cx422L3L.js} +2 -2
  27. package/public/assets/{backlog-D_UjTdzX.js → backlog-RuFQ8PUu.js} +2 -2
  28. package/public/assets/{busy-health-N3VEh4ao.js → busy-health-BvNQ9g5x.js} +2 -2
  29. package/public/assets/{channels-9jopungq.js → channels-DNbKAS0I.js} +2 -2
  30. package/public/assets/{chat-CSXrTB3C.js → chat-Bp3Fx73h.js} +3 -3
  31. package/public/assets/{code-preview-p1NnmqK0.js → code-preview-KIRZA6cz.js} +2 -2
  32. package/public/assets/{connectors-CZdqlDNL.js → connectors-k7vO4vvc.js} +2 -2
  33. package/public/assets/{cosmos-BgdsE4dG.js → cosmos-BuVoq1aw.js} +2 -2
  34. package/public/assets/{crate-agent-30aXTKva.js → crate-agent-irqlt4NH.js} +2 -2
  35. package/public/assets/{dependency-graph-B_jvw2GE.js → dependency-graph-D_rurNBz.js} +2 -2
  36. package/public/assets/{deploys-DoN6bAb5.js → deploys-yzZqIpxE.js} +2 -2
  37. package/public/assets/{display-BrKWFGJz.js → display-BemJG1f_.js} +2 -2
  38. package/public/assets/{files-D6XEu8Ng.js → files-DXWcrxOz.js} +2 -2
  39. package/public/assets/{fleet-C7jQWbw2.js → fleet-TEuOCZXE.js} +2 -2
  40. package/public/assets/{fleet-metrics-BiDs3MLx.js → fleet-metrics-BGoDAFI-.js} +2 -2
  41. package/public/assets/{formatted-body-impl-DyG0WsQS.js → formatted-body-impl-BB9eq9nN.js} +2 -2
  42. package/public/assets/{formatted-body-CQBwc1fb.js → formatted-body-qy2nTD_1.js} +3 -3
  43. package/public/assets/{host-providers-dialog-DKaW31dN.js → host-providers-dialog-BGPHxuwT.js} +2 -2
  44. package/public/assets/{index-CRHep3M9.js → index-BC5XZc0z.js} +5 -5
  45. package/public/assets/{index-MYAIwYTX.css → index-D8Rp9pz2.css} +1 -1
  46. package/public/assets/{insights-CzrtkpOE.js → insights-C-KQG0h-.js} +2 -2
  47. package/public/assets/{integrations-aVsUmigt.js → integrations-ClPRPyKU.js} +2 -2
  48. package/public/assets/{issue-ref-chip-BnSlM_95.js → issue-ref-chip-DbH8J9Ak.js} +2 -2
  49. package/public/assets/{log-viewer-qe7Ee47Z.js → log-viewer-PH4zVn24.js} +2 -2
  50. package/public/assets/{maintenance-NfjqFZAk.js → maintenance-5lV43uTL.js} +2 -2
  51. package/public/assets/{managed-agents-BiH0HgaE.js → managed-agents-BdgU35aX.js} +2 -2
  52. package/public/assets/{markdown-preview-BixaT3Xr.js → markdown-preview-DNT4OUwQ.js} +3 -3
  53. package/public/assets/{markdown-preview-impl-DNGlWIS3.js → markdown-preview-impl-CnCcPy0A.js} +2 -2
  54. package/public/assets/{memory-DNsCl6UX.js → memory--GgWH1gH.js} +2 -2
  55. package/public/assets/{messages-DopU1L1X.js → messages-CzFl_97O.js} +2 -2
  56. package/public/assets/{orchestrators-Cq7ckLQT.js → orchestrators-CVvJVkzv.js} +2 -2
  57. package/public/assets/overview-DsrZvE86.js +2 -0
  58. package/public/assets/{pairs-DE_m6rrE.js → pairs-D2d0d2py.js} +2 -2
  59. package/public/assets/{profile-icon-B3rfh77F.js → profile-icon-_SMuSbYF.js} +2 -2
  60. package/public/assets/{project-profile-instructions-DQWZE0kA.js → project-profile-instructions-Apn15y43.js} +2 -2
  61. package/public/assets/{projects-Br2Bd2h1.js → projects-D3B6kto5.js} +2 -2
  62. package/public/assets/{prompt-settings-BKvFsvGD.js → prompt-settings-DnPB6Ez6.js} +2 -2
  63. package/public/assets/provider-display-bWwiuedV.js +2 -0
  64. package/public/assets/{registry-Cw38_6gW.js → registry-D790cIhN.js} +2 -2
  65. package/public/assets/run-card-BCro-Odj.js +2 -0
  66. package/public/assets/{secrets-DxI-vzSq.js → secrets-CVXvfvbU.js} +2 -2
  67. package/public/assets/{service-access-settings-D9s_VJbd.js → service-access-settings-D3Xxqb9w.js} +2 -2
  68. package/public/assets/{settings-CKZTVGIx.js → settings-CoUC7Jci.js} +2 -2
  69. package/public/assets/shipping-D_Lp9n_J.js +2 -0
  70. package/public/assets/{stats-DyUBKyWI.js → stats-CXiNjB9S.js} +2 -2
  71. package/public/assets/{status-dot-DYqlEUhJ.js → status-dot-C703YIy1.js} +2 -2
  72. package/public/assets/store-BgDALGIX.js +9 -0
  73. package/public/assets/{tasks-Bh7Chr4-.js → tasks-DO0WpJCx.js} +2 -2
  74. package/public/assets/{teams-bowI7qVY.js → teams-FGkdi_tL.js} +2 -2
  75. package/public/assets/{terminal-viewer-BgVLHdsU.js → terminal-viewer-Dh8dSC7e.js} +3 -3
  76. package/public/assets/{terminal-viewer-impl-Dz22UPy6.js → terminal-viewer-impl-B5Zriip3.js} +2 -2
  77. package/public/assets/{use-agent-terminal-DSQQ-iY7.js → use-agent-terminal-CRUVDvLC.js} +2 -2
  78. package/public/assets/{use-decisions-samMQhQf.js → use-decisions-CoaqRh4l.js} +2 -2
  79. package/public/assets/{use-project-list-59LheVP7.js → use-project-list-X-BgT53X.js} +2 -2
  80. package/public/assets/{use-selectors-BZa25xEB.js → use-selectors-0X_UZkk-.js} +2 -2
  81. package/public/assets/{user-avatar-DHxlvUvV.js → user-avatar-CkLhVBGu.js} +2 -2
  82. package/public/assets/{versioned-prompt-editor-BmED5DnJ.js → versioned-prompt-editor-BkTi7eim.js} +2 -2
  83. package/public/assets/{work-queue-CSvpuNLz.js → work-queue-DDOLEyKo.js} +2 -2
  84. package/public/assets/{workflow-marker-DAZcj5qt.js → workflow-marker-CzOsB8BM.js} +2 -2
  85. package/public/assets/{workflows-DdmxRSyg.js → workflows-DJilvmRM.js} +2 -2
  86. package/public/assets/{workspaces-BxeKfVuF.js → workspaces-CHcfbLR3.js} +2 -2
  87. package/public/cosmos.html +4 -4
  88. package/public/index.html +29 -29
  89. package/runner/plugins/claude/.claude-plugin/plugin.json +1 -1
  90. package/runner/src/adapters/claude-api.ts +1 -1
  91. package/runner/src/adapters/claude-headless.ts +1 -1
  92. package/runner/src/adapters/claude-launch-exit.ts +26 -0
  93. package/runner/src/adapters/claude-session-probe.ts +1 -1
  94. package/runner/src/adapters/claude-tmux.ts +38 -10
  95. package/runner/src/adapters/claude.ts +28 -75
  96. package/runner/src/adapters/provider-quota-harvest.ts +20 -71
  97. package/runner/src/agent-runner/lifecycle-milestones.ts +2 -2
  98. package/runner/src/agent-runner/liveness-exchange.ts +104 -0
  99. package/runner/src/claude-system-prompt.ts +49 -0
  100. package/runner/src/launch-assembly.ts +14 -10
  101. package/runner/src/profile-home.ts +1 -1
  102. package/runner/src/project-instructions.ts +2 -2
  103. package/runner/src/provider-command.ts +18 -0
  104. package/runner/src/provider-setup.ts +3 -2
  105. package/runner/src/runner-core.ts +14 -15
  106. package/runner/src/runner-helpers.ts +0 -8
  107. package/runner/src/session-scratch.ts +6 -2
  108. package/runner/test-support/provisioning-context.ts +4 -2
  109. package/runner/test-support/runner-harness.ts +2 -1
  110. package/scripts/steward-policy-cleanup.ts +2 -2
  111. package/src/agent-authz.ts +2 -2
  112. package/src/agent-drive-arbiter.ts +3 -8
  113. package/src/agent-exit-cleanup-async.ts +2 -2
  114. package/src/agent-exit-cleanup.ts +23 -19
  115. package/src/agent-lifecycle-events.ts +112 -85
  116. package/src/agent-ref.ts +3 -2
  117. package/src/agent-status-events.ts +43 -14
  118. package/src/auth/login-link.ts +35 -0
  119. package/src/auth/password.ts +4 -3
  120. package/src/auth/session-refresh.ts +1 -1
  121. package/src/auth/session.test-fixture.ts +2 -2
  122. package/src/auth/session.ts +7 -7
  123. package/src/automations/crud.ts +8 -81
  124. package/src/automations/dispatch.ts +33 -58
  125. package/src/automations/index.ts +1 -1
  126. package/src/automations/persistence.ts +65 -0
  127. package/src/automations/precheck.ts +18 -16
  128. package/src/automations/read-async.ts +11 -0
  129. package/src/automations/reconcile.ts +30 -39
  130. package/src/automations/storage.ts +33 -10
  131. package/src/automations/write-async.ts +33 -0
  132. package/src/branch-land-notice.ts +3 -3
  133. package/src/branch-landed.ts +25 -23
  134. package/src/bus.ts +21 -19
  135. package/src/cd-deploy-notify.ts +2 -2
  136. package/src/ci/notifications.ts +4 -4
  137. package/src/ci/root-missing.ts +3 -3
  138. package/src/ci/transition-notify.ts +5 -5
  139. package/src/claude-app/oauth-http.ts +3 -3
  140. package/src/cli/index.ts +7 -1
  141. package/src/cli/init.ts +53 -0
  142. package/src/cli/orchestrator.ts +1 -7
  143. package/src/cli/setup.ts +6 -4
  144. package/src/cli/workflow.ts +12 -3
  145. package/src/commands-db.ts +4 -4
  146. package/src/commands-write.ts +8 -0
  147. package/src/compaction-watch.ts +10 -8
  148. package/src/config-store-write.ts +2 -2
  149. package/src/config.ts +4 -11
  150. package/src/connectors.ts +10 -8
  151. package/src/context-advisory.ts +22 -21
  152. package/src/db/agent-action-write.ts +36 -0
  153. package/src/db/agent-control-async.ts +9 -0
  154. package/src/db/agent-control-write.ts +49 -0
  155. package/src/db/agent-effort-observe.ts +22 -0
  156. package/src/db/agent-meta.ts +14 -3
  157. package/src/db/agents-async.ts +8 -5
  158. package/src/db/agents.ts +15 -12
  159. package/src/db/auth-identities.ts +2 -2
  160. package/src/db/automation-read-ops.ts +11 -0
  161. package/src/db/automation-write-ops.ts +46 -0
  162. package/src/db/blackboard.ts +2 -2
  163. package/src/db/browser-session-write.ts +32 -0
  164. package/src/db/bus-outbox-write-ops.ts +3 -1
  165. package/src/db/checkout-refresh-schema.ts +47 -0
  166. package/src/db/checkout-refresh.ts +5 -5
  167. package/src/db/command-agent-profile-backfill.ts +39 -0
  168. package/src/db/command-agent-profiles.ts +5 -1
  169. package/src/db/command-retention.ts +126 -0
  170. package/src/db/commands-planner-stats.test-fixture.ts +8 -0
  171. package/src/db/commands-read-ops.ts +16 -0
  172. package/src/db/connection.ts +1 -182
  173. package/src/db/context-carry-write.ts +74 -0
  174. package/src/db/continuations.ts +4 -4
  175. package/src/db/db-error-registry.ts +12 -0
  176. package/src/db/gateway.ts +26 -133
  177. package/src/db/history-retention-ops.ts +13 -0
  178. package/src/db/inbox-async.ts +2 -2
  179. package/src/db/inbox-read-ops.ts +1 -1
  180. package/src/db/inbox.ts +9 -3
  181. package/src/db/issue-associations.ts +2 -2
  182. package/src/db/issue-refs-async.ts +4 -1
  183. package/src/db/issue-refs-read-ops.ts +6 -0
  184. package/src/db/issue-refs.ts +8 -8
  185. package/src/db/kernel-event-log-schema.ts +2 -0
  186. package/src/db/land-boundaries.ts +51 -5
  187. package/src/db/land-gate-attestations.ts +2 -2
  188. package/src/db/landing-receipts.ts +2 -2
  189. package/src/db/lifecycle-context-write.ts +5 -0
  190. package/src/db/lifecycle-tail-async.ts +76 -0
  191. package/src/db/lifecycle-tail-write-ops.ts +62 -0
  192. package/src/db/lifecycle-write-window.ts +2 -1
  193. package/src/db/lineage-pair-dedupe-sql.ts +3 -3
  194. package/src/db/main-connection-mode.ts +11 -0
  195. package/src/db/main-connection-writes.ts +20 -2
  196. package/src/db/maintenance-job-runs-async.ts +2 -2
  197. package/src/db/maintenance-job-write-ops.ts +1 -1
  198. package/src/db/maintenance-pauses.ts +2 -2
  199. package/src/db/message-send.ts +4 -0
  200. package/src/db/messages.ts +31 -25
  201. package/src/db/migrations.ts +18 -1
  202. package/src/db/notification-write-ops.ts +19 -0
  203. package/src/db/operator-answer-write.ts +19 -0
  204. package/src/db/orchestrators.ts +10 -4
  205. package/src/db/pairs-async.ts +22 -1
  206. package/src/db/pairs-write-ops.ts +8 -3
  207. package/src/db/pairs.ts +41 -48
  208. package/src/db/plan-dispatch-schema.ts +5 -1
  209. package/src/db/plan-ready-notices.ts +43 -0
  210. package/src/db/plan-tools-include-migration.ts +36 -0
  211. package/src/db/plans-write-ops.ts +2 -0
  212. package/src/db/presence-buffer.ts +5 -0
  213. package/src/db/presence-loop.ts +18 -23
  214. package/src/db/presence-write.ts +0 -6
  215. package/src/db/project-entries-async.ts +14 -0
  216. package/src/db/project-entries-read-ops.ts +5 -1
  217. package/src/db/project-entries-write-ops.ts +8 -0
  218. package/src/db/project-entries.ts +15 -12
  219. package/src/db/project-journal.ts +2 -2
  220. package/src/db/project-trust-approvals.ts +2 -2
  221. package/src/db/prompt-templates.ts +4 -4
  222. package/src/db/read-op-marshaling-fixtures.ts +18 -0
  223. package/src/db/read-ops.ts +4 -0
  224. package/src/db/retention.ts +13 -2
  225. package/src/db/review-publish-write.ts +8 -0
  226. package/src/db/runtime-admin-async.ts +19 -0
  227. package/src/db/runtime-admin-write-ops.ts +36 -0
  228. package/src/db/runtime-tail-async.ts +288 -0
  229. package/src/db/runtime-tail-write-ops.ts +97 -0
  230. package/src/db/schema.ts +4 -1
  231. package/src/db/spawn-budget.ts +5 -0
  232. package/src/db/spawn-delegation.ts +3 -12
  233. package/src/db/sql-audit-indexes.ts +3 -0
  234. package/src/db/stats-async.ts +5 -3
  235. package/src/db/task-entity.ts +5 -4
  236. package/src/db/team-claim-policy.ts +60 -0
  237. package/src/db/teams-async.ts +4 -0
  238. package/src/db/teams-write-ops.ts +4 -0
  239. package/src/db/terminal-events.ts +15 -0
  240. package/src/db/timer-cutover-bodies.ts +292 -0
  241. package/src/db/timer-cutover-core.ts +37 -278
  242. package/src/db/timer-cutover-state.ts +40 -0
  243. package/src/db/timer-cutover-write-ops.ts +1 -40
  244. package/src/db/token-db-write-ops.ts +2 -0
  245. package/src/db/token-standing-async.ts +12 -0
  246. package/src/db/token-standing.ts +6 -9
  247. package/src/db/token-usage-retention.ts +33 -0
  248. package/src/db/token-usage-write-ops.ts +1 -1
  249. package/src/db/token-usage.ts +4 -1
  250. package/src/db/user-invites-async.ts +13 -0
  251. package/src/db/user-invites.ts +3 -3
  252. package/src/db/users.ts +14 -6
  253. package/src/db/workflow-execution.ts +3 -3
  254. package/src/db/workspaces.ts +8 -5
  255. package/src/db/write-ops.ts +31 -12
  256. package/src/db/writer-fault-seam.ts +2 -9
  257. package/src/db/writer-fault-test-ops.ts +18 -0
  258. package/src/db/writer-gateway.ts +42 -46
  259. package/src/dev.ts +12 -16
  260. package/src/event-loop-lag.ts +4 -2
  261. package/src/event-loop-yield.ts +2 -2
  262. package/src/events.ts +10 -8
  263. package/src/host-provider-store.ts +5 -4
  264. package/src/hub-metrics-report.ts +5 -1
  265. package/src/hub-metrics.ts +38 -18
  266. package/src/init.ts +299 -0
  267. package/src/injection-sweep-pacing.ts +6 -8
  268. package/src/invite-link.ts +16 -9
  269. package/src/land-gate-notifications.ts +11 -10
  270. package/src/land-gate-queue-progress.ts +3 -3
  271. package/src/land-settle-dispatch.ts +52 -92
  272. package/src/lifecycle-context-pressure.ts +11 -10
  273. package/src/lifecycle-manager.ts +104 -98
  274. package/src/maintenance/breaker.ts +18 -16
  275. package/src/maintenance/checkout-refresh.ts +18 -1
  276. package/src/maintenance/critical-job-watchdog.ts +3 -3
  277. package/src/maintenance/events.ts +3 -3
  278. package/src/maintenance/history-retention-job.ts +30 -0
  279. package/src/maintenance/jobs.ts +29 -67
  280. package/src/maintenance/long-running-work.ts +3 -1
  281. package/src/maintenance/offline-agent-prune-job.ts +28 -0
  282. package/src/maintenance/orphaned-sessions.ts +5 -4
  283. package/src/maintenance/pauses.ts +4 -10
  284. package/src/maintenance/plan-ready-notice-job.ts +71 -0
  285. package/src/maintenance/scheduler.ts +18 -13
  286. package/src/maintenance/stalled-delivery-pager.ts +4 -4
  287. package/src/maintenance/teams.ts +19 -30
  288. package/src/maintenance/workspaces.ts +17 -27
  289. package/src/managed-policy-escalation.ts +7 -7
  290. package/src/managed-policy.ts +3 -3
  291. package/src/managed-provider-gate.ts +5 -4
  292. package/src/managed-spawn-reservation.ts +5 -4
  293. package/src/mcp/index.ts +8 -8
  294. package/src/mcp/output-descriptions.ts +1 -1
  295. package/src/mcp/presentation.ts +2 -1
  296. package/src/mcp/runtime-output.ts +6 -1
  297. package/src/mcp/self-care-visibility.ts +2 -2
  298. package/src/mcp/spawn-targets-matrix.ts +10 -1
  299. package/src/mcp/tool-groups.ts +3 -2
  300. package/src/mcp/tool-roles.ts +81 -0
  301. package/src/mcp/tools-workspace.ts +1 -1
  302. package/src/mcp-blackboard-tools.ts +6 -5
  303. package/src/mcp-decision-tools.ts +7 -7
  304. package/src/mcp-egress-tools.ts +10 -9
  305. package/src/mcp-issue-activity-tools.ts +2 -2
  306. package/src/mcp-issue-association-tools.ts +4 -4
  307. package/src/mcp-issue-ref-tools.ts +3 -3
  308. package/src/mcp-merge-tools.ts +5 -5
  309. package/src/mcp-notification-subscription-tools.ts +14 -15
  310. package/src/mcp-output-levels.test-fixture.ts +1 -1
  311. package/src/mcp-profile-trust-tools.ts +1 -1
  312. package/src/mcp-project-journal-tools.ts +4 -12
  313. package/src/mcp-project-tools.ts +17 -18
  314. package/src/mcp-routing-policy-tools.ts +3 -2
  315. package/src/mcp-team-tools.ts +6 -6
  316. package/src/mcp-workflow-tools.ts +5 -3
  317. package/src/memory-area-injection.ts +13 -12
  318. package/src/memory-boundary-capture.ts +6 -6
  319. package/src/memory-injection.ts +45 -43
  320. package/src/merge-pause-maintenance.ts +5 -4
  321. package/src/notification-router.ts +44 -17
  322. package/src/notify.ts +5 -5
  323. package/src/observed-reset-refresh.ts +4 -4
  324. package/src/operator-alarm.ts +2 -5
  325. package/src/project-ingest.ts +6 -6
  326. package/src/project-instructions.ts +8 -1
  327. package/src/project-trust.ts +12 -11
  328. package/src/prompt-resolver.ts +3 -3
  329. package/src/provider-quota-async.ts +5 -7
  330. package/src/provider-timeline-event.ts +4 -7
  331. package/src/quota-band-delivery.ts +2 -2
  332. package/src/recipe-runner.ts +4 -3
  333. package/src/retention-config-store.ts +4 -3
  334. package/src/reviewer-pipeline.ts +11 -10
  335. package/src/routes/_route.ts +4 -4
  336. package/src/routes/_shared.ts +13 -12
  337. package/src/routes/agent-effort.ts +5 -5
  338. package/src/routes/agent-heartbeat-quota.ts +23 -0
  339. package/src/routes/agent-keep.ts +1 -1
  340. package/src/routes/agent-reporting.ts +1 -1
  341. package/src/routes/agent-self-effort.ts +5 -5
  342. package/src/routes/agent-sessions.ts +24 -24
  343. package/src/routes/agents-spawn.ts +1 -1
  344. package/src/routes/agents.ts +17 -119
  345. package/src/routes/auth.ts +44 -17
  346. package/src/routes/authority-audit.ts +2 -2
  347. package/src/routes/automations.ts +6 -5
  348. package/src/routes/channel-binding-delete.ts +1 -1
  349. package/src/routes/channel-output.ts +3 -3
  350. package/src/routes/claude-api-budget.ts +5 -5
  351. package/src/routes/commands-listing.ts +1 -1
  352. package/src/routes/commands.ts +29 -27
  353. package/src/routes/context-resets.ts +2 -2
  354. package/src/routes/coordinator-teams.ts +1 -1
  355. package/src/routes/decisions.ts +2 -2
  356. package/src/routes/host-providers.ts +18 -0
  357. package/src/routes/host-secret-files.ts +1 -1
  358. package/src/routes/hosts.ts +11 -11
  359. package/src/routes/inbox.ts +3 -2
  360. package/src/routes/index.ts +7 -3
  361. package/src/routes/integrations.ts +9 -7
  362. package/src/routes/issue-activity.ts +2 -2
  363. package/src/routes/issue-associations.ts +4 -4
  364. package/src/routes/issue-refs.ts +3 -3
  365. package/src/routes/kernel-timers-operator.ts +1 -1
  366. package/src/routes/memory.ts +1 -1
  367. package/src/routes/merges.ts +11 -11
  368. package/src/routes/messages.ts +23 -17
  369. package/src/routes/orchestrator-bootstrap.ts +3 -1
  370. package/src/routes/orchestrator-host-registration.ts +2 -0
  371. package/src/routes/orchestrator-host-utilization.ts +2 -2
  372. package/src/routes/orchestrator-proxy.ts +2 -2
  373. package/src/routes/orchestrator.ts +27 -18
  374. package/src/routes/pairs.ts +8 -8
  375. package/src/routes/project-profile-instructions.ts +1 -1
  376. package/src/routes/project-trust.ts +1 -1
  377. package/src/routes/projects.ts +16 -16
  378. package/src/routes/prompt-templates.ts +12 -12
  379. package/src/routes/provider-quotas.ts +10 -10
  380. package/src/routes/run-command.ts +1 -1
  381. package/src/routes/secrets-backup.ts +4 -5
  382. package/src/routes/secrets-import.ts +3 -4
  383. package/src/routes/secrets-vault.ts +12 -14
  384. package/src/routes/settings.ts +1 -1
  385. package/src/routes/shipping.ts +9 -1
  386. package/src/routes/spawn-policy.ts +8 -7
  387. package/src/routes/sse.ts +2 -2
  388. package/src/routes/team-templates.ts +7 -7
  389. package/src/routes/teams.ts +10 -10
  390. package/src/routes/tokens.ts +18 -17
  391. package/src/routes/users.ts +24 -24
  392. package/src/routes/viewer-read.ts +3 -3
  393. package/src/routes/web-tool-calls.ts +4 -4
  394. package/src/routes/workflows.ts +2 -2
  395. package/src/routes/workspaces.ts +17 -16
  396. package/src/routing-policy-push.ts +6 -6
  397. package/src/runtime-grant.ts +17 -11
  398. package/src/runtime-install.ts +30 -0
  399. package/src/runtime-tokens.ts +20 -28
  400. package/src/secrets-broker/config.ts +1 -1
  401. package/src/secrets-broker/service.ts +2 -2
  402. package/src/security.ts +3 -1
  403. package/src/self-resume-carry.ts +21 -110
  404. package/src/self-resume-supersede.ts +4 -3
  405. package/src/self-resume.ts +54 -66
  406. package/src/server-background.ts +1 -1
  407. package/src/server.ts +25 -26
  408. package/src/services/agent-action.ts +12 -31
  409. package/src/services/agent-effort.ts +7 -32
  410. package/src/services/agent-hang-watchdog-job.ts +2 -2
  411. package/src/services/agent-heartbeat.ts +166 -0
  412. package/src/services/agent-reporting.ts +1 -1
  413. package/src/services/auth-context.ts +6 -0
  414. package/src/services/browser-inventory.ts +3 -3
  415. package/src/services/browser-session-state.ts +3 -2
  416. package/src/services/browser-session.ts +21 -27
  417. package/src/services/bus-command-update.ts +9 -9
  418. package/src/services/checkout-refresh-state.ts +1 -0
  419. package/src/services/checkout-refresh.test-fixture.ts +3 -2
  420. package/src/services/command-host.ts +7 -2
  421. package/src/services/coordinator-digest.ts +3 -2
  422. package/src/services/dispatch-command.ts +12 -13
  423. package/src/services/effective-launch-driver.ts +14 -9
  424. package/src/services/host-changed-paths.test-fixture.ts +5 -6
  425. package/src/services/host-project-readiness.ts +2 -2
  426. package/src/services/host-providers.ts +1 -1
  427. package/src/services/host-utilization.ts +9 -9
  428. package/src/services/idle-agent-digest.ts +17 -12
  429. package/src/services/idle-epics.ts +4 -4
  430. package/src/services/interrupt-agent.ts +12 -9
  431. package/src/services/issue-activity.ts +3 -3
  432. package/src/services/issue-associations.ts +15 -18
  433. package/src/services/issue-lifecycle-comments.ts +3 -2
  434. package/src/services/issue-lifecycle.ts +14 -13
  435. package/src/services/issue-refs.ts +4 -5
  436. package/src/services/kernel-timers-cutover-chaos-worker.ts +1 -1
  437. package/src/services/kernel-timers-ingress-chaos-worker.ts +6 -1
  438. package/src/services/kernel-timers-ingress.ts +3 -3
  439. package/src/services/kernel-timers-message-authority-chaos-worker.ts +3 -10
  440. package/src/services/kernel-timers-operator-chaos-worker.ts +3 -2
  441. package/src/services/kernel-timers-outbox.ts +1 -1
  442. package/src/services/kernel-timers-stage10-operator.ts +1 -1
  443. package/src/services/kernel-timers.ts +4 -3
  444. package/src/services/land-gate-placement.ts +11 -2
  445. package/src/services/land-issue-relations.ts +5 -4
  446. package/src/services/land-restart-retry.ts +7 -6
  447. package/src/services/landed-ancestry.ts +6 -5
  448. package/src/services/legacy-landing-host.ts +4 -1
  449. package/src/services/legacy-landing-recovery.ts +8 -6
  450. package/src/services/managed-running.ts +17 -17
  451. package/src/services/memory-areas.ts +3 -3
  452. package/src/services/merge-pause.ts +9 -15
  453. package/src/services/operator-decisions.ts +37 -41
  454. package/src/services/orchestrator-registration-recovery.ts +6 -2
  455. package/src/services/orchestrator-upgrade.ts +14 -12
  456. package/src/services/permission-decision.ts +4 -3
  457. package/src/services/plan-ci-notice.ts +1 -1
  458. package/src/services/plan-conformance.ts +4 -4
  459. package/src/services/plan-dispatch-policy.ts +10 -3
  460. package/src/services/plan-dispatch.ts +35 -14
  461. package/src/services/plan-graph.ts +39 -261
  462. package/src/services/plan-import.ts +1 -1
  463. package/src/services/plan-live-bindings.ts +8 -37
  464. package/src/services/plan-task-create.ts +1 -1
  465. package/src/services/plan-terminal-refs.ts +2 -12
  466. package/src/services/plan-wake-digest.ts +8 -3
  467. package/src/services/profile-trust.ts +2 -2
  468. package/src/services/project.ts +11 -10
  469. package/src/services/prompt-templates.ts +6 -5
  470. package/src/services/provider-api-key.ts +73 -0
  471. package/src/services/provider-hold-nudge.ts +9 -9
  472. package/src/services/provider-hold-record.ts +13 -12
  473. package/src/services/provider-state-audit.ts +19 -18
  474. package/src/services/provisioning-harness/driver.ts +1 -1
  475. package/src/services/provisioning-harness/fixture-matrix.ts +3 -3
  476. package/src/services/provisioning-harness/lifecycle.ts +24 -22
  477. package/src/services/provisioning-harness/prepare.ts +16 -17
  478. package/src/services/rate-limit-resume.ts +10 -9
  479. package/src/services/red-main-auto-revert.ts +7 -5
  480. package/src/services/red-main-controller-deps.ts +20 -3
  481. package/src/services/red-main-incident.ts +3 -1
  482. package/src/services/red-main-quarantine.ts +2 -3
  483. package/src/services/register-agent.ts +22 -22
  484. package/src/services/restart-project-role.ts +1 -1
  485. package/src/services/restart-spawn.ts +17 -16
  486. package/src/services/review-publish.ts +7 -24
  487. package/src/services/review-ref-reconcile.ts +29 -38
  488. package/src/services/runtime-dependency-alert.ts +27 -0
  489. package/src/services/scheduler-command.ts +11 -9
  490. package/src/services/scheduler.ts +5 -5
  491. package/src/services/self-effort-grant.ts +5 -25
  492. package/src/services/send-message.ts +16 -33
  493. package/src/services/shutdown-agent.ts +17 -14
  494. package/src/services/spawn-agent.ts +12 -41
  495. package/src/services/spawn-chain-inspector.ts +1 -1
  496. package/src/services/spawn-cwd-placement.ts +21 -5
  497. package/src/services/spawn-issue-activity.ts +8 -6
  498. package/src/services/spawn-launch.ts +17 -1
  499. package/src/services/spawn-loss-escalation.ts +1 -1
  500. package/src/services/spawn-registration-watchdog.ts +2 -2
  501. package/src/services/spawn-repo-probe.ts +7 -5
  502. package/src/services/spawn-tree-cleanup.ts +7 -8
  503. package/src/services/steward-reaper.ts +4 -4
  504. package/src/services/task-context-hydration.ts +25 -1
  505. package/src/services/task-delivery.ts +20 -34
  506. package/src/services/task-entity.ts +40 -203
  507. package/src/services/task-issue-link.ts +13 -20
  508. package/src/services/task-issue-weave.ts +12 -11
  509. package/src/services/task-lifecycle.ts +27 -31
  510. package/src/services/task-repo-cwd.ts +37 -0
  511. package/src/services/task-review-hold.ts +4 -17
  512. package/src/services/task-semantic-events.ts +13 -11
  513. package/src/services/task-state-reconcile.ts +3 -4
  514. package/src/services/task-validation.ts +2 -2
  515. package/src/services/team-templates.ts +5 -5
  516. package/src/services/team.ts +31 -98
  517. package/src/services/terminal-provider-exit.ts +6 -5
  518. package/src/services/timer-message-fire-chaos-worker.ts +7 -3
  519. package/src/services/timer-message-fire-outbox.ts +1 -1
  520. package/src/services/transient-agent-reaper.ts +22 -19
  521. package/src/services/turn-reconcile-audit.ts +9 -9
  522. package/src/services/user-onboarding.ts +8 -6
  523. package/src/services/user-profile.ts +6 -9
  524. package/src/services/work-finality.ts +16 -4
  525. package/src/services/workflow-auto-start.ts +2 -1
  526. package/src/services/workflow-caller.ts +61 -4
  527. package/src/services/workflow-child-proof-worker.ts +1 -1
  528. package/src/services/workflow-control-proof-worker.ts +1 -1
  529. package/src/services/workflow-coordinator.ts +8 -2
  530. package/src/services/workflow-decisions.ts +5 -5
  531. package/src/services/workflow-deferred-cleanup.ts +1 -1
  532. package/src/services/workflow-effect-driver.ts +42 -19
  533. package/src/services/workflow-effects.ts +41 -27
  534. package/src/services/workflow-pins.ts +7 -4
  535. package/src/services/workflow-reconcile.ts +1 -0
  536. package/src/services/workflow-resume-pins.ts +3 -3
  537. package/src/services/workflow-routing-defaults.ts +18 -0
  538. package/src/services/workflow-run-view.ts +4 -3
  539. package/src/services/workflow-run.test-fixture.ts +1 -1
  540. package/src/services/workflow-runs.ts +34 -22
  541. package/src/services/workflow-supervisor-state.ts +21 -1
  542. package/src/services/workflow-supervisor.ts +4 -3
  543. package/src/services/workspace-recovery.ts +4 -3
  544. package/src/setup.ts +47 -8
  545. package/src/spawn-admission.ts +10 -2
  546. package/src/spawn-placement.ts +27 -9
  547. package/src/spawn-targets.ts +8 -8
  548. package/src/sse-agent-status.ts +15 -6
  549. package/src/sse.ts +49 -24
  550. package/src/startup-context-injection.ts +61 -57
  551. package/src/steward-handoff.ts +4 -3
  552. package/src/steward-policy-cleanup.ts +9 -8
  553. package/src/steward.ts +2 -2
  554. package/src/task-dispatch-live.ts +5 -2
  555. package/src/task-dispatcher.ts +2 -2
  556. package/src/token-db.ts +2 -2
  557. package/src/token-usage-async.ts +2 -4
  558. package/src/user-awaiting-reply.ts +5 -5
  559. package/src/utils.ts +7 -0
  560. package/src/workspace-actions.ts +24 -29
  561. package/src/workspace-auto-merge.ts +14 -12
  562. package/src/workspace-changed-paths-client.ts +16 -5
  563. package/src/workspace-cleanup-stale.ts +30 -7
  564. package/src/workspace-command-settle.ts +24 -16
  565. package/src/workspace-config.ts +1 -1
  566. package/src/workspace-conflict-resolver.ts +9 -7
  567. package/src/workspace-dead-owner-recovery.ts +5 -4
  568. package/src/workspace-escalation.ts +12 -11
  569. package/src/workspace-human-escalation.ts +3 -3
  570. package/src/workspace-land-gate-watchdog.ts +3 -3
  571. package/src/workspace-land-refusal.ts +20 -0
  572. package/src/workspace-land-stopped.ts +1 -0
  573. package/src/workspace-merge.ts +10 -26
  574. package/src/workspace-nothing-to-land-notice.ts +2 -2
  575. package/src/workspace-orphans.ts +18 -37
  576. package/src/workspace-pr-completion.ts +10 -8
  577. package/src/workspace-rekey.ts +3 -3
  578. package/src/workspace-steward-failure.ts +2 -2
  579. package/src/workspace-steward-wake.ts +2 -2
  580. package/public/assets/agent-liveness-CaNwK0Zf.js +0 -2
  581. package/public/assets/overview-C1DCTzzV.js +0 -2
  582. package/public/assets/provider-display-DsuWMvVL.js +0 -2
  583. package/public/assets/run-card-CpKqRbhg.js +0 -2
  584. package/public/assets/shipping-B9YtnwtG.js +0 -2
  585. package/public/assets/store-DcClXLH0.js +0 -9
  586. package/runner/src/agent-runner/http-liveness.ts +0 -85
  587. package/src/db/on-loop-write-transaction.ts +0 -34
@@ -1,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{t as i}from"./store-DcClXLH0.js";import{M as a}from"./provider-display-DsuWMvVL.js";import{u as o}from"./api-CIIVBtAV.js";import{r as s,s as c,t as l}from"./dialog-uuJ9_geR.js";import{t as u}from"./keyboard-DcmEulph.js";import{t as d}from"./pause-DttnHD4c.js";import{t as f}from"./play-BbT8m7A0.js";import{t as p}from"./refresh-cw-CfpvQcUn.js";import{t as m}from"./terminal-Bl2u7KxT.js";import{t as h}from"./x-Bge17hWJ.js";import{t as g}from"./button-Do6Z3vvn.js";var _=e(n(),1),v=Object.defineProperty,y=Object.getOwnPropertyDescriptor,ee=(e,t)=>{for(var n in t)v(e,n,{get:t[n],enumerable:!0})},b=(e,t,n,r)=>{for(var i=r>1?void 0:r?y(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&v(t,n,i),i},x=(e,t)=>(n,r)=>t(n,r,e),te=`Terminal input`,S={get:()=>te,set:e=>te=e},ne=`Too much output to announce, navigate to rows manually to read`,re={get:()=>ne,set:e=>ne=e};function C(e){return e.replace(/\r?\n/g,`\r`)}function ie(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function w(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function ae(e,t,n,r){e.stopPropagation(),e.clipboardData&&oe(e.clipboardData.getData(`text/plain`),t,n,r)}function oe(e,t,n,r){e=C(e),e=ie(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function se(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function T(e,t,n,r,i){se(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function E(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function D(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var ce=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},le=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},O=``,ue=` `,de=class e{constructor(){this.fg=0,this.bg=0,this.extended=new k}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},k=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},fe=class e extends de{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new k,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?E(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},pe=`di$target`,me=`di$dependencies`,he=new Map;function ge(e){return e[me]||[]}function A(e){if(he.has(e))return he.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);_e(t,e,r)};return t._id=e,he.set(e,t),t}function _e(e,t,n){t[pe]===t?t[me].push({id:e,index:n}):(t[me]=[{id:e,index:n}],t[pe]=t)}var j=A(`BufferService`),ve=A(`CoreMouseService`),ye=A(`CoreService`),be=A(`CharsetService`),xe=A(`InstantiationService`),Se=A(`LogService`),Ce=A(`OptionsService`),we=A(`OscLinkService`),Te=A(`UnicodeService`),Ee=A(`DecorationService`),De=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new fe,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Oe(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};De=b([x(0,j),x(1,Ce),x(2,we)],De);function Oe(e,t){if(confirm(`Do you want to navigate to ${t}?
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{t as i}from"./store-BgDALGIX.js";import{M as a}from"./provider-display-bWwiuedV.js";import{u as o}from"./api-CIIVBtAV.js";import{r as s,s as c,t as l}from"./dialog-uuJ9_geR.js";import{t as u}from"./keyboard-DcmEulph.js";import{t as d}from"./pause-DttnHD4c.js";import{t as f}from"./play-BbT8m7A0.js";import{t as p}from"./refresh-cw-CfpvQcUn.js";import{t as m}from"./terminal-Bl2u7KxT.js";import{t as h}from"./x-Bge17hWJ.js";import{t as g}from"./button-Do6Z3vvn.js";var _=e(n(),1),v=Object.defineProperty,y=Object.getOwnPropertyDescriptor,ee=(e,t)=>{for(var n in t)v(e,n,{get:t[n],enumerable:!0})},b=(e,t,n,r)=>{for(var i=r>1?void 0:r?y(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&v(t,n,i),i},x=(e,t)=>(n,r)=>t(n,r,e),te=`Terminal input`,S={get:()=>te,set:e=>te=e},ne=`Too much output to announce, navigate to rows manually to read`,re={get:()=>ne,set:e=>ne=e};function C(e){return e.replace(/\r?\n/g,`\r`)}function ie(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function w(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function ae(e,t,n,r){e.stopPropagation(),e.clipboardData&&oe(e.clipboardData.getData(`text/plain`),t,n,r)}function oe(e,t,n,r){e=C(e),e=ie(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function se(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function T(e,t,n,r,i){se(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function E(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function D(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var ce=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},le=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},O=``,ue=` `,de=class e{constructor(){this.fg=0,this.bg=0,this.extended=new k}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},k=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},fe=class e extends de{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new k,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?E(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},pe=`di$target`,me=`di$dependencies`,he=new Map;function ge(e){return e[me]||[]}function A(e){if(he.has(e))return he.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);_e(t,e,r)};return t._id=e,he.set(e,t),t}function _e(e,t,n){t[pe]===t?t[me].push({id:e,index:n}):(t[me]=[{id:e,index:n}],t[pe]=t)}var j=A(`BufferService`),ve=A(`CoreMouseService`),ye=A(`CoreService`),be=A(`CharsetService`),xe=A(`InstantiationService`),Se=A(`LogService`),Ce=A(`OptionsService`),we=A(`OscLinkService`),Te=A(`UnicodeService`),Ee=A(`DecorationService`),De=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new fe,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Oe(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};De=b([x(0,j),x(1,Ce),x(2,we)],De);function Oe(e,t){if(confirm(`Do you want to navigate to ${t}?
2
2
 
3
3
  WARNING: This link could potentially be dangerous`)){let e=window.open();if(e){try{e.opener=null}catch{}e.location.href=t}else console.warn(`Opening link blocked as opener could not be cleared`)}}var ke=A(`CharSizeService`),Ae=A(`CoreBrowserService`),je=A(`MouseService`),Me=A(`RenderService`),Ne=A(`SelectionService`),Pe=A(`CharacterJoinerService`),Fe=A(`ThemeService`),Ie=A(`LinkProviderService`),Le=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Ue.isErrorNoTelemetry(e)?new Ue(e.message+`
4
4
 
@@ -140,4 +140,4 @@ ${s.join(`
140
140
  `))}},pp=class extends Error{constructor(e,t){super(e),this.name=`ListenerLeakError`,this.stack=t}},mp=class extends Error{constructor(e,t){super(e),this.name=`ListenerRefusalError`,this.stack=t}},hp=0,gp=class{constructor(e){this.value=e,this.id=hp++}},_p=2,vp,yp=class{constructor(e){this._size=0,this._options=e,this._leakageMon=lp>0||this._options?.leakWarningThreshold?new dp(e?.onListenerError??jf,this._options?.leakWarningThreshold??lp):void 0,this._perfMon=this._options?._profName?new cp(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){this._disposed||(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose())}get event(){return this._event??=(e,t,n)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let e=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(e);let t=this._leakageMon.getMostFrequentStack()??[`UNKNOWN stack`,-1],n=new mp(`${e}. HINT: Stack shows most frequent listener (${t[1]}-times)`,t[0]);return(this._options?.onListenerError||jf)(n),np.None}if(this._disposed)return np.None;t&&(e=e.bind(t));let r=new gp(e),i;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(r.stack=fp.create(),i=this._leakageMon.check(r.stack,this._size+1)),this._listeners?this._listeners instanceof gp?(this._deliveryQueue??=new bp,this._listeners=[this._listeners,r]):this._listeners.push(r):(this._options?.onWillAddFirstListener?.(this),this._listeners=r,this._options?.onDidAddFirstListener?.(this)),this._size++;let a=$f(()=>{vp?.unregister(a),i?.(),this._removeListener(r)});if(n instanceof tp?n.add(a):Array.isArray(n)&&n.push(a),vp){let e=Error().stack.split(`
141
141
  `).slice(2,3).join(`
142
142
  `).trim(),t=/(file:|vscode-file:\/\/vscode-app)?(\/[^:]*:\d+:\d+)/.exec(e);vp.register(a,t?.[2]??e,a)}return a},this._event}_removeListener(e){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1){this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),this._size=0;return}let t=this._listeners,n=t.indexOf(e);if(n===-1)throw console.log(`disposed?`,this._disposed),console.log(`size?`,this._size),console.log(`arr?`,JSON.stringify(this._listeners)),Error(`Attempted to dispose unknown listener`);this._size--,t[n]=void 0;let r=this._deliveryQueue.current===this;if(this._size*_p<=t.length){let e=0;for(let n=0;n<t.length;n++)t[n]?t[e++]=t[n]:r&&(this._deliveryQueue.end--,e<this._deliveryQueue.i&&this._deliveryQueue.i--);t.length=e}}_deliver(e,t){if(!e)return;let n=this._options?.onListenerError||jf;if(!n){e.value(t);return}try{e.value(t)}catch(e){n(e)}}_deliverQueue(e){let t=e.current._listeners;for(;e.i<e.end;)this._deliver(t[e.i++],e.value);e.reset()}fire(e){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof gp)this._deliver(this._listeners,e);else{let t=this._deliveryQueue;t.enqueue(this,e,this._listeners.length),this._deliverQueue(t)}this._perfMon?.stop()}hasListeners(){return this._size>0}},bp=class{constructor(){this.i=-1,this.end=0}enqueue(e,t,n){this.i=0,this.end=n,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},xp=class e{constructor(){this._providers=Object.create(null),this._active=``,this._onChange=new yp,this.onChange=this._onChange.event;let e=new kf;this.register(e),this._active=e.version,this._activeProvider=e}static extractShouldJoin(e){return(e&1)!=0}static extractWidth(e){return e>>1&3}static extractCharKind(e){return e>>3}static createPropertyValue(e,t,n=!1){return(e&16777215)<<3|(t&3)<<1|!!n}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(t){let n=0,r=0,i=t.length;for(let a=0;a<i;++a){let o=t.charCodeAt(a);if(55296<=o&&o<=56319){if(++a>=i)return n+this.wcwidth(o);let e=t.charCodeAt(a);56320<=e&&e<=57343?o=(o-55296)*1024+e-56320+65536:n+=this.wcwidth(e)}let s=this.charProperties(o,r),c=e.extractWidth(s);e.extractShouldJoin(s)&&(c-=e.extractWidth(r)),n+=c,r=s}return n}charProperties(e,t){return this._activeProvider.charProperties(e,t)}},Sp=[[768,879],[1155,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1541],[1552,1562],[1564,1564],[1611,1631],[1648,1648],[1750,1757],[1759,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2045,2045],[2070,2073],[2075,2083],[2085,2087],[2089,2093],[2137,2139],[2259,2306],[2362,2362],[2364,2364],[2369,2376],[2381,2381],[2385,2391],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2558,2558],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2641,2641],[2672,2673],[2677,2677],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2810,2815],[2817,2817],[2876,2876],[2879,2879],[2881,2884],[2893,2893],[2902,2902],[2914,2915],[2946,2946],[3008,3008],[3021,3021],[3072,3072],[3076,3076],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3170,3171],[3201,3201],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3328,3329],[3387,3388],[3393,3396],[3405,3405],[3426,3427],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3981,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4151],[4153,4154],[4157,4158],[4184,4185],[4190,4192],[4209,4212],[4226,4226],[4229,4230],[4237,4237],[4253,4253],[4448,4607],[4957,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6158],[6277,6278],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6683,6683],[6742,6742],[6744,6750],[6752,6752],[6754,6754],[6757,6764],[6771,6780],[6783,6783],[6832,6846],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7040,7041],[7074,7077],[7080,7081],[7083,7085],[7142,7142],[7144,7145],[7149,7149],[7151,7153],[7212,7219],[7222,7223],[7376,7378],[7380,7392],[7394,7400],[7405,7405],[7412,7412],[7416,7417],[7616,7673],[7675,7679],[8203,8207],[8234,8238],[8288,8292],[8294,8303],[8400,8432],[11503,11505],[11647,11647],[11744,11775],[12330,12333],[12441,12442],[42607,42610],[42612,42621],[42654,42655],[42736,42737],[43010,43010],[43014,43014],[43019,43019],[43045,43046],[43204,43205],[43232,43249],[43263,43263],[43302,43309],[43335,43345],[43392,43394],[43443,43443],[43446,43449],[43452,43453],[43493,43493],[43561,43566],[43569,43570],[43573,43574],[43587,43587],[43596,43596],[43644,43644],[43696,43696],[43698,43700],[43703,43704],[43710,43711],[43713,43713],[43756,43757],[43766,43766],[44005,44005],[44008,44008],[44013,44013],[64286,64286],[65024,65039],[65056,65071],[65279,65279],[65529,65531]],Cp=[[66045,66045],[66272,66272],[66422,66426],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[68325,68326],[68900,68903],[69446,69456],[69633,69633],[69688,69702],[69759,69761],[69811,69814],[69817,69818],[69821,69821],[69837,69837],[69888,69890],[69927,69931],[69933,69940],[70003,70003],[70016,70017],[70070,70078],[70089,70092],[70191,70193],[70196,70196],[70198,70199],[70206,70206],[70367,70367],[70371,70378],[70400,70401],[70459,70460],[70464,70464],[70502,70508],[70512,70516],[70712,70719],[70722,70724],[70726,70726],[70750,70750],[70835,70840],[70842,70842],[70847,70848],[70850,70851],[71090,71093],[71100,71101],[71103,71104],[71132,71133],[71219,71226],[71229,71229],[71231,71232],[71339,71339],[71341,71341],[71344,71349],[71351,71351],[71453,71455],[71458,71461],[71463,71467],[71727,71735],[71737,71738],[72148,72151],[72154,72155],[72160,72160],[72193,72202],[72243,72248],[72251,72254],[72263,72263],[72273,72278],[72281,72283],[72330,72342],[72344,72345],[72752,72758],[72760,72765],[72767,72767],[72850,72871],[72874,72880],[72882,72883],[72885,72886],[73009,73014],[73018,73018],[73020,73021],[73023,73029],[73031,73031],[73104,73105],[73109,73109],[73111,73111],[73459,73460],[78896,78904],[92912,92916],[92976,92982],[94031,94031],[94095,94098],[113821,113822],[113824,113827],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[121344,121398],[121403,121452],[121461,121461],[121476,121476],[121499,121503],[121505,121519],[122880,122886],[122888,122904],[122907,122913],[122915,122916],[122918,122922],[123184,123190],[123628,123631],[125136,125142],[125252,125258],[917505,917505],[917536,917631],[917760,917999]],wp=[[4352,4447],[8986,8987],[9001,9002],[9193,9196],[9200,9200],[9203,9203],[9725,9726],[9748,9749],[9800,9811],[9855,9855],[9875,9875],[9889,9889],[9898,9899],[9917,9918],[9924,9925],[9934,9934],[9940,9940],[9962,9962],[9970,9971],[9973,9973],[9978,9978],[9981,9981],[9989,9989],[9994,9995],[10024,10024],[10060,10060],[10062,10062],[10067,10069],[10071,10071],[10133,10135],[10160,10160],[10175,10175],[11035,11036],[11088,11088],[11093,11093],[11904,11929],[11931,12019],[12032,12245],[12272,12283],[12288,12329],[12334,12350],[12353,12438],[12443,12543],[12549,12591],[12593,12686],[12688,12730],[12736,12771],[12784,12830],[12832,12871],[12880,19903],[19968,42124],[42128,42182],[43360,43388],[44032,55203],[63744,64255],[65040,65049],[65072,65106],[65108,65126],[65128,65131],[65281,65376],[65504,65510]],Tp=[[94176,94179],[94208,100343],[100352,101106],[110592,110878],[110928,110930],[110948,110951],[110960,111355],[126980,126980],[127183,127183],[127374,127374],[127377,127386],[127488,127490],[127504,127547],[127552,127560],[127568,127569],[127584,127589],[127744,127776],[127789,127797],[127799,127868],[127870,127891],[127904,127946],[127951,127955],[127968,127984],[127988,127988],[127992,128062],[128064,128064],[128066,128252],[128255,128317],[128331,128334],[128336,128359],[128378,128378],[128405,128406],[128420,128420],[128507,128591],[128640,128709],[128716,128716],[128720,128722],[128725,128725],[128747,128748],[128756,128762],[128992,129003],[129293,129393],[129395,129398],[129402,129442],[129445,129450],[129454,129482],[129485,129535],[129648,129651],[129656,129658],[129664,129666],[129680,129685],[131072,196605],[196608,262141]],Ep;function Dp(e,t){let n=0,r=t.length-1,i;if(e<t[0][0]||e>t[r][1])return!1;for(;r>=n;)if(i=n+r>>1,e>t[i][1])n=i+1;else if(e<t[i][0])r=i-1;else return!0;return!1}var Op=class{constructor(){if(this.version=`11`,!Ep){Ep=new Uint8Array(65536),Ep.fill(1),Ep[0]=0,Ep.fill(0,1,32),Ep.fill(0,127,160);for(let e=0;e<Sp.length;++e)Ep.fill(0,Sp[e][0],Sp[e][1]+1);for(let e=0;e<wp.length;++e)Ep.fill(2,wp[e][0],wp[e][1]+1)}}wcwidth(e){return e<32?0:e<127?1:e<65536?Ep[e]:Dp(e,Cp)?0:Dp(e,Tp)?2:1}charProperties(e,t){let n=this.wcwidth(e),r=n===0&&t!==0;if(r){let e=xp.extractWidth(t);e===0?r=!1:e>n&&(n=e)}return xp.createPropertyValue(0,n,r)}},kp=class{activate(e){e.unicode.register(new Op)}dispose(){}},$=r();function Ap(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function jp(e){if(e)try{let t=document.createElement(`div`);t.style.color=`oklch(${e})`,document.body.appendChild(t);let n=getComputedStyle(t).color;document.body.removeChild(t);let r=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);return r?`#${[r[1],r[2],r[3]].map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}`:void 0}catch{return}}function Mp(){let e=jp(Ap(`--background`))??`#09090b`,t=jp(Ap(`--foreground`))??`#e4e4e7`;return{background:e,foreground:t,cursor:t,selectionBackground:jp(Ap(`--muted`))??`#3f3f46`}}function Np({orchestratorId:e,session:n,interactive:r=!1,canWrite:s=!1,onClose:c,onSessionChanged:l}){let v=i(e=>e.apiCall),y=i(e=>e.theme),ee=(0,_.useRef)(l);ee.current=l;let b=(0,_.useRef)(null),x=(0,_.useRef)(null),te=(0,_.useRef)(null),S=(0,_.useRef)(null),ne=(0,_.useRef)(!1),re=(0,_.useRef)(Promise.resolve()),C=(0,_.useRef)(null),ie=(0,_.useRef)(null),w=(0,_.useRef)(null),ae=(0,_.useRef)(!1),oe=(0,_.useRef)(!1),se=(0,_.useRef)(!1),[T,E]=(0,_.useState)(!1),[D,ce]=(0,_.useState)(null),[le,O]=(0,_.useState)(null),[ue,de]=(0,_.useState)(null),[k,fe]=(0,_.useState)(r&&s),pe=(0,_.useRef)(r&&s),[me,he]=(0,_.useState)(`connecting`),ge=(0,_.useRef)(!1),[A,_e]=(0,_.useState)(!1),j=(0,_.useCallback)(()=>{let e=oe.current||se.current;ae.current=e;let t=S.current;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`pause`,paused:e}))},[]);(0,_.useEffect)(()=>{oe.current=T,j()},[T,j]),(0,_.useEffect)(()=>{let e=()=>{se.current=document.hidden||!document.hasFocus(),j()};return e(),document.addEventListener(`visibilitychange`,e),window.addEventListener(`blur`,e),window.addEventListener(`focus`,e),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`blur`,e),window.removeEventListener(`focus`,e)}},[j]);let ve=(0,_.useCallback)(e=>{let t=x.current;if(t){let n=(e.content||``).replace(/\n$/,``);t.write(`\x1b[H\x1b[2J\x1b[3J${n}`),e.cursorX!=null&&e.cursorY!=null&&t.write(`\x1b[${e.cursorY+1};${e.cursorX+1}H`)}ce(e.running),de(e.capturedAt),O(null)},[]),ye=(0,_.useCallback)(async()=>{if(ae.current||ne.current)return;let t=S.current;if(t?.readyState===WebSocket.OPEN){t.send(JSON.stringify({type:`refresh`}));return}ne.current=!0;try{let t=await v(`GET`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(n)}`);ve(t)}catch(e){O(a(e))}finally{ne.current=!1}},[e,n,v,ve]);function be(t,r){let i=w.current;if(i&&i.cols===t&&i.rows===r)return;w.current={cols:t,rows:r};let a=S.current;if(a?.readyState===WebSocket.OPEN){a.send(JSON.stringify({type:`resize`,cols:t,rows:r}));return}v(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(n)}/resize`,{cols:t,rows:r}).catch(()=>{})}function xe(){let e=te.current,t=x.current;if(!(!e||!t))try{e.fit(),C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{be(t.cols,t.rows)},300)}catch{}}function Se(t){if(!t)return;let r=t.match(/[\s\S]{1,2048}/g)??[],i=S.current;if(i?.readyState===WebSocket.OPEN){for(let e of r)i.send(JSON.stringify({type:`input`,data:e}));return}for(let t of r)re.current=re.current.then(()=>v(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(n)}/input`,{data:t})).then(()=>{O(null)}).catch(e=>{if(a(e).includes(`session changed`)){O(`session changed; reopening terminal…`),ee.current?.();return}O(a(e))})}function Ce(e){if(ge.current&&e.length===1){let t=e.toLowerCase().charCodeAt(0);if(t>=97&&t<=122){Se(String.fromCharCode(t-96)),ge.current=!1,_e(!1);return}}Se(e)}function we(e){Se(e),x.current?.focus()}function Te(){let e=!ge.current;ge.current=e,_e(e)}return(0,_.useEffect)(()=>{let e=new qs,t=new Ws({convertEol:!0,cursorBlink:!1,disableStdin:!k,fontFamily:`"JetBrains Mono", "SFMono-Regular", Consolas, monospace`,fontSize:13,lineHeight:1.15,scrollback:5e3,scrollSensitivity:3,fastScrollSensitivity:10,theme:Mp()});t.loadAddon(e);try{t.loadAddon(new kp),t.unicode.activeVersion=`11`}catch{}if(x.current=t,te.current=e,b.current){t.open(b.current);let e=0,n=()=>{let t=x.current;if(t)try{let r=new wf;r.onContextLoss(()=>{r.dispose(),!(e>=3)&&(e+=1,ie.current&&clearTimeout(ie.current),ie.current=setTimeout(n,3e3))}),t.loadAddon(r)}catch{}};n(),requestAnimationFrame(()=>xe())}let n=b.current,r=0,i=0,a=0,o=null;function s(e){e.touches.length===1&&(r=e.touches[0].clientY,i=e.touches[0].clientX,a=0,o=null)}function c(e){if(e.touches.length!==1)return;let t=x.current;if(!t)return;let n=r-e.touches[0].clientY,s=i-e.touches[0].clientX;if(o===null&&(Math.abs(n)>8||Math.abs(s)>8)&&(o=Math.abs(n)>Math.abs(s)),o!==!0)return;a+=n,r=e.touches[0].clientY;let c=Math.trunc(a/15);c!==0&&(t.scrollLines(c),a-=c*15),e.preventDefault(),e.stopPropagation()}n.addEventListener(`touchstart`,s,{capture:!0,passive:!0}),n.addEventListener(`touchmove`,c,{capture:!0,passive:!1});let l=new ResizeObserver(()=>{requestAnimationFrame(()=>xe())});return b.current&&l.observe(b.current),ye(),()=>{n.removeEventListener(`touchstart`,s,{capture:!0}),n.removeEventListener(`touchmove`,c,{capture:!0}),l.disconnect(),C.current&&clearTimeout(C.current),ie.current&&clearTimeout(ie.current),t.dispose(),x.current=null,te.current=null}},[e,n]),(0,_.useEffect)(()=>{let e=x.current;e&&requestAnimationFrame(()=>{e.options.theme=Mp()})},[y]),(0,_.useEffect)(()=>{pe.current=k;let e=S.current;e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:`interactive`,interactive:k}));let t=x.current;if(t&&(t.options.disableStdin=!k,k)){let e=t.onData(Ce);return setTimeout(()=>t.focus(),50),()=>e.dispose()}},[k]),(0,_.useEffect)(()=>{let t=!1,r=!1,i=0,a=null,s=null,c=()=>{if(t||r||a)return;let e=Math.min(1e4,1e3*2**i);i+=1,a=setTimeout(()=>{a=null,l()},e)},l=()=>{if(t||r)return;he(`connecting`);let a=o(e,n);a.binaryType=`arraybuffer`,s=a,S.current=a,a.onopen=()=>{if(t)return;i=0,he(`stream`),O(null),a.send(JSON.stringify({type:`pause`,paused:ae.current})),a.send(JSON.stringify({type:`interactive`,interactive:pe.current}));let e=x.current;try{te.current?.fit()}catch{}e&&a.send(JSON.stringify({type:`resize`,cols:e.cols,rows:e.rows}))},a.onmessage=e=>{let t=x.current;if(typeof e.data!=`string`){if(!t)return;e.data instanceof ArrayBuffer?t.write(new Uint8Array(e.data)):e.data instanceof Blob&&e.data.arrayBuffer().then(e=>x.current?.write(new Uint8Array(e)));return}try{let n=JSON.parse(e.data);n.type===`reset`?(t&&t.write(`\x1B[H\x1B[2J\x1B[3J`),typeof n.running==`boolean`&&ce(n.running),typeof n.capturedAt==`number`&&de(n.capturedAt),O(null)):n.type===`closed`?n.reason===`backpressure`?(O(`stream reset (backpressure) — reconnecting`),a.close()):n.reason===`session-changed`?(O(`session changed; reopening terminal…`),a.close(),ee.current?.()):(r=!0,ce(!1),n.reason&&O(n.reason)):n.type===`error`&&O(n.error||`terminal stream error`)}catch{O(`invalid terminal stream frame`)}},a.onerror=()=>{t||O(`terminal stream failed; falling back to polling`)},a.onclose=()=>{t||(S.current===a&&(S.current=null),he(`polling`),c())}};return l(),()=>{t=!0,a&&clearTimeout(a),S.current===s&&(S.current=null),s?.close()}},[e,n]),(0,_.useEffect)(()=>{if(me===`stream`||me===`connecting`)return;let e=setInterval(()=>void ye(),k?1e3:1500);return()=>clearInterval(e)},[ye,k,me]),(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1 px-1.5 py-1.5 border-b border-border bg-background shrink-0 w-full`,children:[(0,$.jsx)(m,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground truncate min-w-0`,children:n}),(0,$.jsx)(`span`,{className:t(`text-xs shrink-0 ml-auto`,D===!1?`text-tone-danger-fg`:D===!0?`text-tone-success-fg`:`text-muted-foreground`),children:D===!1?`stopped`:D===!0?`live`:`…`}),(0,$.jsx)(`span`,{className:t(`text-xs shrink-0 hidden sm:inline`,me===`stream`?`text-tone-sky-fg`:me===`polling`?`text-tone-warning-fg`:`text-muted-foreground`),children:me}),(0,$.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[(0,$.jsx)(g,{type:`button`,variant:`ghost`,size:`icon-sm`,disabled:!s,onClick:()=>s&&fe(e=>!e),title:s?k?`Disable input`:`Enable input`:`Read-only: no write access to this session`,className:t(`h-7 w-7`,k?`text-tone-success-fg`:``),children:(0,$.jsx)(u,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(g,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>E(e=>!e),title:T?`Resume`:`Pause`,className:`h-7 w-7`,children:T?(0,$.jsx)(f,{className:`h-3.5 w-3.5`}):(0,$.jsx)(d,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(g,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>void ye(),title:`Refresh`,className:`hidden sm:inline-flex h-7 w-7`,children:(0,$.jsx)(p,{className:`h-3.5 w-3.5`})}),c&&(0,$.jsx)(g,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:c,title:`Close`,className:`h-7 w-7`,children:(0,$.jsx)(h,{className:`h-3.5 w-3.5`})})]})]}),le&&(0,$.jsx)(`div`,{className:`px-3 py-1 text-xs text-destructive bg-destructive/10 border-b border-destructive/20`,children:le}),(0,$.jsx)(`div`,{className:`flex-1 min-h-0 bg-background p-1 overscroll-contain`,children:(0,$.jsx)(`div`,{ref:b,className:`h-full w-full overscroll-contain`})}),k&&(0,$.jsxs)(`div`,{className:`flex shrink-0 gap-1 overflow-x-auto border-t border-border bg-muted/30 px-1.5 py-1.5`,children:[[{label:`Esc`,seq:`\x1B`},{label:`Tab`,seq:` `},{label:`↑`,seq:`\x1B[A`},{label:`↓`,seq:`\x1B[B`},{label:`←`,seq:`\x1B[D`},{label:`→`,seq:`\x1B[C`},{label:`^C`,seq:``},{label:`^D`,seq:``},{label:`^Z`,seq:``}].map(e=>(0,$.jsx)(`button`,{type:`button`,className:`shrink-0 rounded border border-border bg-background px-2 py-1 font-mono text-xs text-foreground active:bg-accent`,onPointerDown:e=>e.preventDefault(),onClick:()=>we(e.seq),children:e.label},e.label)),(0,$.jsx)(`button`,{type:`button`,className:t(`shrink-0 rounded border px-2 py-1 font-mono text-xs`,A?`border-primary bg-primary/20 text-primary`:`border-border bg-background text-foreground active:bg-accent`),onPointerDown:e=>e.preventDefault(),onClick:Te,children:`Ctrl`})]})]})}function Pp({open:e,onOpenChange:t,orchestratorId:n,session:r,interactive:i,canWrite:a,onSessionChanged:o}){return(0,$.jsx)(l,{open:e,onOpenChange:t,children:(0,$.jsxs)(s,{className:`inset-x-0 top-0 h-[var(--app-h)] max-h-none translate-x-0 translate-y-0 w-auto max-w-none rounded-none p-0 pt-[var(--sat)] bg-background border-border gap-0 overflow-hidden`,showCloseButton:!1,blurOverlay:!1,onEscapeKeyDown:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,$.jsxs)(c,{className:`sr-only`,children:[`Terminal — `,r]}),(0,$.jsx)(Np,{orchestratorId:n,session:r,interactive:i,canWrite:a,onClose:()=>t(!1),onSessionChanged:o})]})})}export{Pp as TerminalDialog};
143
- //# sourceMappingURL=terminal-viewer-impl-Dz22UPy6.js.map
143
+ //# sourceMappingURL=terminal-viewer-impl-B5Zriip3.js.map
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t}from"./dist-DeW2Y1R5.js";import{t as n}from"./store-DcClXLH0.js";import{t as r}from"./api-CIIVBtAV.js";var i=e(t(),1);function a(e){let t=n(e=>e.showError),[a,o]=(0,i.useState)(!1),[s,c]=(0,i.useState)(null),[l,u]=(0,i.useState)(!1),d=(0,i.useRef)(s);return d.current=s,{terminalOpen:a,terminalTarget:s,terminalOpening:l,openTerminal:(0,i.useCallback)(async()=>{if(!(!e||l)){u(!0);try{let t=await r(`POST`,`/agents/`+encodeURIComponent(e)+`/terminal-session`);c(t),o(!0)}catch(e){t(`Terminal Failed`,e.message,e)}finally{u(!1)}}},[e,l,t]),closeTerminal:(0,i.useCallback)(t=>{if(t){o(!0);return}o(!1);let n=d.current;e&&n?.mode===`guest`&&r(`DELETE`,`/agents/`+encodeURIComponent(e)+`/terminal-session/`+encodeURIComponent(n.session)).catch(()=>{}),c(null)},[e])}}export{a as t};
2
- //# sourceMappingURL=use-agent-terminal-DSQQ-iY7.js.map
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t}from"./dist-DeW2Y1R5.js";import{t as n}from"./store-BgDALGIX.js";import{t as r}from"./api-CIIVBtAV.js";var i=e(t(),1);function a(e){let t=n(e=>e.showError),[a,o]=(0,i.useState)(!1),[s,c]=(0,i.useState)(null),[l,u]=(0,i.useState)(!1),d=(0,i.useRef)(s);return d.current=s,{terminalOpen:a,terminalTarget:s,terminalOpening:l,openTerminal:(0,i.useCallback)(async()=>{if(!(!e||l)){u(!0);try{let t=await r(`POST`,`/agents/`+encodeURIComponent(e)+`/terminal-session`);c(t),o(!0)}catch(e){t(`Terminal Failed`,e.message,e)}finally{u(!1)}}},[e,l,t]),closeTerminal:(0,i.useCallback)(t=>{if(t){o(!0);return}o(!1);let n=d.current;e&&n?.mode===`guest`&&r(`DELETE`,`/agents/`+encodeURIComponent(e)+`/terminal-session/`+encodeURIComponent(n.session)).catch(()=>{}),c(null)},[e])}}export{a as t};
2
+ //# sourceMappingURL=use-agent-terminal-CRUVDvLC.js.map
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{Ct as i,Ft as a,It as o,J as s,Pt as c,q as l,t as u}from"./store-DcClXLH0.js";import"./provider-display-DsuWMvVL.js";import{et as d}from"./display-BrKWFGJz.js";import{t as f}from"./check-B3M9Ug1P.js";import{n as p,r as m,t as h}from"./zap-DGuDTw4w.js";import{t as g}from"./external-link-BRfu-fHG.js";import{t as _}from"./loader-circle-BfPd4kOD.js";import{t as v}from"./button-Do6Z3vvn.js";import{t as y}from"./badge-DqJRtj_p.js";import{t as b}from"./textarea-hs6Mpyfl.js";import{t as x}from"./formatted-body-CQBwc1fb.js";import{t as S}from"./VaultDecisionCard-Bau_vNax.js";var C=e(n(),1),w=r();function T(e){let t=e.options?.find(e=>e.recommended),n=t?.id??t?.label;return{labels:n?[n]:[],other:``,otherActive:!1}}function E(e,t,n){let r=t.otherActive||e.kind===`text`?t.other.trim():``;if(e.kind===`multi`){let e=r?[...t.labels,r]:t.labels;return e.length||n?e:null}return e.kind===`text`?r||null:r||t.labels[0]||null}function D({decision:e,className:t}){return s(e)?(0,w.jsx)(S,{decision:e,className:t}):(0,w.jsx)(O,{decision:e,className:t})}function O({decision:e,className:n}){let r=u(e=>e.answerDecision),s=u(e=>e.showWorkflowRun),l=i(),S=e.kind===`action`,D=S?e.questions.filter(e=>e.id!==o):e.questions,[O,A]=(0,C.useState)(()=>Object.fromEntries(D.map(e=>[e.id,T(e)]))),[j,M]=(0,C.useState)(``),[N,P]=(0,C.useState)(null),F=N!==null,I={};for(let t of D){let n=E(t,O[t.id],!!e.workflow);n!==null&&(I[t.id]=n)}let L=S||Object.keys(I).length===D.length,R=S?D.filter(e=>e.required&&I[e.id]===void 0):[],z=j.trim(),B=R.length>0,V=!z;function H(e,t){A(n=>({...n,[e]:{...n[e],...t}}))}function U(e,t){let n=O[e.id];e.kind===`multi`?H(e.id,{labels:n.labels.includes(t)?n.labels.filter(e=>e!==t):[...n.labels,t]}):H(e.id,{labels:[t],otherActive:!1})}function W(e){let t=O[e.id];e.kind===`multi`?H(e.id,{otherActive:!t.otherActive}):H(e.id,{labels:[],otherActive:!0})}async function G(t){if(!(!L||F)&&!(t===`Done`&&B)&&!(t===`Could not do it`&&V)){P(t??`submit`);try{await r(e.id,t?{...I,[o]:t}:I,j.trim()||void 0)}finally{P(null)}}}let K=S?m:p;return(0,w.jsxs)(`div`,{"data-testid":`decision-card-${e.id}`,"data-kind":e.kind,className:t(`rounded-xl bg-card ring-1 px-3.5 py-3 text-sm`,e.timeCritical?`ring-tone-danger/45`:S?`ring-tone-sky/40`:`ring-tone-warning/35`,n),children:[(0,w.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,w.jsx)(K,{className:t(`mt-0.5 h-4 w-4 shrink-0`,S?`text-tone-sky-fg`:`text-tone-warning-fg`)}),(0,w.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,w.jsx)(`div`,{className:`font-medium text-foreground break-words`,children:e.title}),(0,w.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-1.5 text-[11px] text-muted-foreground`,children:[S&&(0,w.jsx)(y,{variant:`outline`,className:`h-4 border-tone-sky/50 px-1 text-[10px] text-tone-sky-fg`,children:`To do for you`}),(0,w.jsxs)(`span`,{children:[`#`,e.id]}),(0,w.jsxs)(`span`,{children:[`· waiting `,d(l,e.createdAt)]}),e.timeCritical&&(0,w.jsxs)(y,{variant:`outline`,className:`h-4 gap-0.5 border-tone-danger/50 px-1 text-[10px] text-tone-danger-fg`,children:[(0,w.jsx)(h,{className:`h-2.5 w-2.5`}),`time-critical`]})]})]})]}),e.context&&(0,w.jsx)(x,{text:e.context,rawBody:e.context,className:t(`mt-2 leading-relaxed`,S?`text-[13px] text-foreground/90`:`text-xs text-muted-foreground`)}),e.workflow&&(0,w.jsxs)(`a`,{href:e.links[0],className:`mt-2 inline-flex text-xs text-tone-sky-fg hover:underline`,onClick:t=>{t.preventDefault(),s(e.workflow.runId)},children:[`Run `,e.workflow.runId,` · step `,e.workflow.step]}),!e.workflow&&e.links.length>0&&(0,w.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-2`,children:e.links.map(e=>(0,w.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-xs text-tone-sky-fg hover:underline break-all`,children:[(0,w.jsx)(g,{className:`h-3 w-3 shrink-0`}),e]},e))}),D.map(t=>{let n=O[t.id],r=t.kind===`multi`;return(0,w.jsxs)(`fieldset`,{className:`mt-3`,disabled:F,children:[(0,w.jsxs)(`legend`,{className:`text-sm text-foreground whitespace-pre-wrap break-words`,children:[t.prompt,S&&(t.required?(0,w.jsx)(`span`,{className:`font-medium text-tone-warning-fg`,children:` (required)`}):(0,w.jsx)(`span`,{className:`text-muted-foreground`,children:` (optional)`}))]}),r&&(0,w.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:`Select all that apply`}),t.kind===`text`?(0,w.jsx)(b,{rows:2,"aria-label":t.prompt,"aria-required":t.required||void 0,value:n.other,onChange:e=>H(t.id,{other:e.target.value}),placeholder:`Your answer`,className:`mt-1.5 text-sm`}):(0,w.jsxs)(`div`,{className:`mt-1.5 flex flex-col gap-1.5`,children:[t.options?.map(e=>(0,w.jsxs)(k,{multi:r,selected:n.labels.includes(e.id??e.label),onClick:()=>U(t,e.id??e.label),children:[(0,w.jsx)(`span`,{className:`text-sm text-foreground`,children:e.label}),e.recommended&&(0,w.jsx)(y,{variant:`outline`,className:`ml-1.5 h-4 px-1 text-[10px] text-tone-success-fg border-tone-success/40`,children:`recommended`}),e.description&&(0,w.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:e.description})]},e.id??e.label)),!e.workflow&&(0,w.jsx)(k,{multi:r,selected:n.otherActive,onClick:()=>W(t),children:(0,w.jsx)(`span`,{className:`text-sm text-foreground`,children:`Other…`})}),n.otherActive&&(0,w.jsx)(b,{rows:2,"aria-label":`${t.prompt} (other)`,value:n.other,onChange:e=>H(t.id,{other:e.target.value,otherActive:!0}),placeholder:`Type your answer`,className:`text-sm`})]})]},t.id)}),(0,w.jsx)(b,{rows:2,"aria-label":S?`Note`:`Notes`,value:j,disabled:F,onChange:e=>M(e.target.value),placeholder:S?`Note for the agent (needed for Could not do it)`:`Notes for the agent (optional)`,className:`mt-3 text-sm`}),S?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`div`,{className:`mt-2.5 flex gap-2`,children:[(0,w.jsxs)(v,{disabled:F||B,"aria-describedby":`decision-hint-done-${e.id}`,onClick:()=>void G(c),className:`h-11 flex-1 bg-tone-success-fg text-background hover:bg-tone-success-fg/90 sm:h-8 sm:flex-none sm:px-3`,children:[N===`Done`?(0,w.jsx)(_,{className:`animate-spin`}):(0,w.jsx)(f,{}),c]}),(0,w.jsxs)(v,{variant:`outline`,disabled:F||V,"aria-describedby":`decision-hint-not-done-${e.id}`,onClick:()=>void G(a),className:`h-11 flex-1 sm:h-8 sm:flex-none sm:px-3`,children:[N===`Could not do it`&&(0,w.jsx)(_,{className:`animate-spin`}),a]})]}),(B||V)&&(0,w.jsxs)(`div`,{"data-testid":`decision-hints`,className:`mt-1.5 space-y-0.5 text-[11px] text-muted-foreground`,children:[B&&(0,w.jsxs)(`p`,{id:`decision-hint-done-${e.id}`,className:`break-words`,children:[`To mark Done, answer: `,R.map(e=>e.prompt).join(`; `)]}),V&&(0,w.jsx)(`p`,{id:`decision-hint-not-done-${e.id}`,children:`Could not do it needs a short note saying why.`})]})]}):(0,w.jsx)(`div`,{className:`mt-3 flex items-center`,children:(0,w.jsxs)(v,{size:`sm`,disabled:!L||F,onClick:()=>void G(),className:`h-7 px-2.5 text-xs`,children:[F&&(0,w.jsx)(_,{className:`mr-1.5 h-3 w-3 animate-spin`}),`Submit`]})})]})}function k({multi:e,selected:n,onClick:r,children:i}){return(0,w.jsxs)(`button`,{type:`button`,role:e?`checkbox`:`radio`,"aria-checked":n,onClick:r,className:t(`flex items-start gap-2 rounded-lg border px-2.5 py-2 text-left transition-colors`,n?`border-tone-warning/60 bg-tone-warning/10`:`border-border bg-background/60 hover:bg-background`),children:[(0,w.jsx)(`span`,{className:t(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center border text-tone-warning-fg`,e?`rounded`:`rounded-full`,n?`border-tone-warning bg-tone-warning/20`:`border-muted-foreground/40`),children:n&&(0,w.jsx)(f,{className:`h-3 w-3`})}),(0,w.jsx)(`span`,{className:`min-w-0`,children:i})]})}function A(){let e=u(e=>e.openDecisions),t=i();return(0,C.useMemo)(()=>{let n=new Map;for(let r of e)r.coordinatorId&&!l(r,t)&&n.set(r.coordinatorId,(n.get(r.coordinatorId)??0)+1);return n},[e,t])}var j=[];function M(e){let t=u(e=>e.openDecisions);return(0,C.useMemo)(()=>{let n=t.filter(t=>t.coordinatorId===e);return n.length?n:j},[t,e])}function N(e){return`${e.id}:${e.updatedAt}`}export{D as i,M as n,A as r,N as t};
2
- //# sourceMappingURL=use-decisions-samMQhQf.js.map
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{Ct as i,Ft as a,It as o,J as s,Pt as c,q as l,t as u}from"./store-BgDALGIX.js";import"./provider-display-bWwiuedV.js";import{et as d}from"./display-BemJG1f_.js";import{t as f}from"./check-B3M9Ug1P.js";import{n as p,r as m,t as h}from"./zap-DGuDTw4w.js";import{t as g}from"./external-link-BRfu-fHG.js";import{t as _}from"./loader-circle-BfPd4kOD.js";import{t as v}from"./button-Do6Z3vvn.js";import{t as y}from"./badge-DqJRtj_p.js";import{t as b}from"./textarea-hs6Mpyfl.js";import{t as x}from"./formatted-body-qy2nTD_1.js";import{t as S}from"./VaultDecisionCard-DUIfTTFF.js";var C=e(n(),1),w=r();function T(e){let t=e.options?.find(e=>e.recommended),n=t?.id??t?.label;return{labels:n?[n]:[],other:``,otherActive:!1}}function E(e,t,n){let r=t.otherActive||e.kind===`text`?t.other.trim():``;if(e.kind===`multi`){let e=r?[...t.labels,r]:t.labels;return e.length||n?e:null}return e.kind===`text`?r||null:r||t.labels[0]||null}function D({decision:e,className:t}){return s(e)?(0,w.jsx)(S,{decision:e,className:t}):(0,w.jsx)(O,{decision:e,className:t})}function O({decision:e,className:n}){let r=u(e=>e.answerDecision),s=u(e=>e.showWorkflowRun),l=i(),S=e.kind===`action`,D=S?e.questions.filter(e=>e.id!==o):e.questions,[O,A]=(0,C.useState)(()=>Object.fromEntries(D.map(e=>[e.id,T(e)]))),[j,M]=(0,C.useState)(``),[N,P]=(0,C.useState)(null),F=N!==null,I={};for(let t of D){let n=E(t,O[t.id],!!e.workflow);n!==null&&(I[t.id]=n)}let L=S||Object.keys(I).length===D.length,R=S?D.filter(e=>e.required&&I[e.id]===void 0):[],z=j.trim(),B=R.length>0,V=!z;function H(e,t){A(n=>({...n,[e]:{...n[e],...t}}))}function U(e,t){let n=O[e.id];e.kind===`multi`?H(e.id,{labels:n.labels.includes(t)?n.labels.filter(e=>e!==t):[...n.labels,t]}):H(e.id,{labels:[t],otherActive:!1})}function W(e){let t=O[e.id];e.kind===`multi`?H(e.id,{otherActive:!t.otherActive}):H(e.id,{labels:[],otherActive:!0})}async function G(t){if(!(!L||F)&&!(t===`Done`&&B)&&!(t===`Could not do it`&&V)){P(t??`submit`);try{await r(e.id,t?{...I,[o]:t}:I,j.trim()||void 0)}finally{P(null)}}}let K=S?m:p;return(0,w.jsxs)(`div`,{"data-testid":`decision-card-${e.id}`,"data-kind":e.kind,className:t(`rounded-xl bg-card ring-1 px-3.5 py-3 text-sm`,e.timeCritical?`ring-tone-danger/45`:S?`ring-tone-sky/40`:`ring-tone-warning/35`,n),children:[(0,w.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,w.jsx)(K,{className:t(`mt-0.5 h-4 w-4 shrink-0`,S?`text-tone-sky-fg`:`text-tone-warning-fg`)}),(0,w.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,w.jsx)(`div`,{className:`font-medium text-foreground break-words`,children:e.title}),(0,w.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-1.5 text-[11px] text-muted-foreground`,children:[S&&(0,w.jsx)(y,{variant:`outline`,className:`h-4 border-tone-sky/50 px-1 text-[10px] text-tone-sky-fg`,children:`To do for you`}),(0,w.jsxs)(`span`,{children:[`#`,e.id]}),(0,w.jsxs)(`span`,{children:[`· waiting `,d(l,e.createdAt)]}),e.timeCritical&&(0,w.jsxs)(y,{variant:`outline`,className:`h-4 gap-0.5 border-tone-danger/50 px-1 text-[10px] text-tone-danger-fg`,children:[(0,w.jsx)(h,{className:`h-2.5 w-2.5`}),`time-critical`]})]})]})]}),e.context&&(0,w.jsx)(x,{text:e.context,rawBody:e.context,className:t(`mt-2 leading-relaxed`,S?`text-[13px] text-foreground/90`:`text-xs text-muted-foreground`)}),e.workflow&&(0,w.jsxs)(`a`,{href:e.links[0],className:`mt-2 inline-flex text-xs text-tone-sky-fg hover:underline`,onClick:t=>{t.preventDefault(),s(e.workflow.runId)},children:[`Run `,e.workflow.runId,` · step `,e.workflow.step]}),!e.workflow&&e.links.length>0&&(0,w.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-2`,children:e.links.map(e=>(0,w.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-xs text-tone-sky-fg hover:underline break-all`,children:[(0,w.jsx)(g,{className:`h-3 w-3 shrink-0`}),e]},e))}),D.map(t=>{let n=O[t.id],r=t.kind===`multi`;return(0,w.jsxs)(`fieldset`,{className:`mt-3`,disabled:F,children:[(0,w.jsxs)(`legend`,{className:`text-sm text-foreground whitespace-pre-wrap break-words`,children:[t.prompt,S&&(t.required?(0,w.jsx)(`span`,{className:`font-medium text-tone-warning-fg`,children:` (required)`}):(0,w.jsx)(`span`,{className:`text-muted-foreground`,children:` (optional)`}))]}),r&&(0,w.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:`Select all that apply`}),t.kind===`text`?(0,w.jsx)(b,{rows:2,"aria-label":t.prompt,"aria-required":t.required||void 0,value:n.other,onChange:e=>H(t.id,{other:e.target.value}),placeholder:`Your answer`,className:`mt-1.5 text-sm`}):(0,w.jsxs)(`div`,{className:`mt-1.5 flex flex-col gap-1.5`,children:[t.options?.map(e=>(0,w.jsxs)(k,{multi:r,selected:n.labels.includes(e.id??e.label),onClick:()=>U(t,e.id??e.label),children:[(0,w.jsx)(`span`,{className:`text-sm text-foreground`,children:e.label}),e.recommended&&(0,w.jsx)(y,{variant:`outline`,className:`ml-1.5 h-4 px-1 text-[10px] text-tone-success-fg border-tone-success/40`,children:`recommended`}),e.description&&(0,w.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:e.description})]},e.id??e.label)),!e.workflow&&(0,w.jsx)(k,{multi:r,selected:n.otherActive,onClick:()=>W(t),children:(0,w.jsx)(`span`,{className:`text-sm text-foreground`,children:`Other…`})}),n.otherActive&&(0,w.jsx)(b,{rows:2,"aria-label":`${t.prompt} (other)`,value:n.other,onChange:e=>H(t.id,{other:e.target.value,otherActive:!0}),placeholder:`Type your answer`,className:`text-sm`})]})]},t.id)}),(0,w.jsx)(b,{rows:2,"aria-label":S?`Note`:`Notes`,value:j,disabled:F,onChange:e=>M(e.target.value),placeholder:S?`Note for the agent (needed for Could not do it)`:`Notes for the agent (optional)`,className:`mt-3 text-sm`}),S?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`div`,{className:`mt-2.5 flex gap-2`,children:[(0,w.jsxs)(v,{disabled:F||B,"aria-describedby":`decision-hint-done-${e.id}`,onClick:()=>void G(c),className:`h-11 flex-1 bg-tone-success-fg text-background hover:bg-tone-success-fg/90 sm:h-8 sm:flex-none sm:px-3`,children:[N===`Done`?(0,w.jsx)(_,{className:`animate-spin`}):(0,w.jsx)(f,{}),c]}),(0,w.jsxs)(v,{variant:`outline`,disabled:F||V,"aria-describedby":`decision-hint-not-done-${e.id}`,onClick:()=>void G(a),className:`h-11 flex-1 sm:h-8 sm:flex-none sm:px-3`,children:[N===`Could not do it`&&(0,w.jsx)(_,{className:`animate-spin`}),a]})]}),(B||V)&&(0,w.jsxs)(`div`,{"data-testid":`decision-hints`,className:`mt-1.5 space-y-0.5 text-[11px] text-muted-foreground`,children:[B&&(0,w.jsxs)(`p`,{id:`decision-hint-done-${e.id}`,className:`break-words`,children:[`To mark Done, answer: `,R.map(e=>e.prompt).join(`; `)]}),V&&(0,w.jsx)(`p`,{id:`decision-hint-not-done-${e.id}`,children:`Could not do it needs a short note saying why.`})]})]}):(0,w.jsx)(`div`,{className:`mt-3 flex items-center`,children:(0,w.jsxs)(v,{size:`sm`,disabled:!L||F,onClick:()=>void G(),className:`h-7 px-2.5 text-xs`,children:[F&&(0,w.jsx)(_,{className:`mr-1.5 h-3 w-3 animate-spin`}),`Submit`]})})]})}function k({multi:e,selected:n,onClick:r,children:i}){return(0,w.jsxs)(`button`,{type:`button`,role:e?`checkbox`:`radio`,"aria-checked":n,onClick:r,className:t(`flex items-start gap-2 rounded-lg border px-2.5 py-2 text-left transition-colors`,n?`border-tone-warning/60 bg-tone-warning/10`:`border-border bg-background/60 hover:bg-background`),children:[(0,w.jsx)(`span`,{className:t(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center border text-tone-warning-fg`,e?`rounded`:`rounded-full`,n?`border-tone-warning bg-tone-warning/20`:`border-muted-foreground/40`),children:n&&(0,w.jsx)(f,{className:`h-3 w-3`})}),(0,w.jsx)(`span`,{className:`min-w-0`,children:i})]})}function A(){let e=u(e=>e.openDecisions),t=i();return(0,C.useMemo)(()=>{let n=new Map;for(let r of e)r.coordinatorId&&!l(r,t)&&n.set(r.coordinatorId,(n.get(r.coordinatorId)??0)+1);return n},[e,t])}var j=[];function M(e){let t=u(e=>e.openDecisions);return(0,C.useMemo)(()=>{let n=t.filter(t=>t.coordinatorId===e);return n.length?n:j},[t,e])}function N(e){return`${e.id}:${e.updatedAt}`}export{D as i,M as n,A as r,N as t};
2
+ //# sourceMappingURL=use-decisions-CoaqRh4l.js.map
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{r as i,t as a}from"./store-DcClXLH0.js";import{M as o}from"./provider-display-DsuWMvVL.js";import{et as s,v as c}from"./display-BrKWFGJz.js";import{t as l}from"./api-CIIVBtAV.js";import{a as u,i as d,n as f,r as p,t as m}from"./select-DTQMP4Dk.js";import{t as h}from"./folder-tree-BG3Y9nqH.js";import{t as g}from"./globe-Cl5fXtqs.js";import{t as _}from"./layers-DEfClY-v.js";import{t as v}from"./pencil-B1Hf2V_J.js";import{n as y,t as b}from"./pin-DcsKeXxr.js";import{t as x}from"./refresh-cw-CfpvQcUn.js";import{t as S}from"./trash-2-FbcSq927.js";import{t as C}from"./button-Do6Z3vvn.js";import{t as w}from"./badge-DqJRtj_p.js";import{t as T}from"./input-CsTB6jIx.js";import{t as E}from"./textarea-hs6Mpyfl.js";import{t as D}from"./formatted-body-CQBwc1fb.js";import{t as O}from"./token-estimate-Co-Jdphh.js";var k=[`manual`,`promoted`,`steward`];function A(e){return k.includes(e)}var j=[`project-wide`,`process`,`tooling`];function M(e){return j.includes(e)}var N=e(n(),1),P=r(),F=`border-tone-violet/30 bg-tone-violet/10 text-tone-violet-fg`,I=`border-tone-teal/30 bg-tone-teal/10 text-tone-teal-fg`;function L({area:e,active:n,onClick:r}){let i=M(e),a=i?g:h,o=t(`inline-flex h-5 max-w-full items-center gap-1 rounded-md border px-1.5 font-mono text-[10px]`,i?F:I,n&&`ring-2 ring-primary/60`),s=(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(a,{className:`size-3 shrink-0`,"aria-hidden":!0}),(0,P.jsx)(`span`,{className:`truncate`,children:e})]}),c=i?`system area`:`path area`;return r?(0,P.jsx)(`button`,{type:`button`,className:t(o,`cursor-pointer hover:brightness-110`),"data-area-kind":i?`system`:`path`,"aria-pressed":n,title:`${c} — filter`,onClick:r,children:s}):(0,P.jsx)(`span`,{className:o,"data-area-kind":i?`system`:`path`,title:c,children:s})}function R(e){let t=new Map;for(let n of e)for(let e of n.areas??[])t.set(e,(t.get(e)??0)+1);return[...t].sort(([e],[t])=>Number(M(t))-Number(M(e))||e.localeCompare(t))}function z(e){let t=new Map;for(let n of e)for(let e of n.tags)t.set(e,(t.get(e)??0)+1);return[...t].sort(([e,t],[n,r])=>r-t||e.localeCompare(n))}function B({counts:e,active:t,onChange:n}){return e.length===0?null:(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,role:`group`,"aria-label":`Filter by area`,children:[(0,P.jsx)(`span`,{className:`mr-0.5 text-[10px] text-muted-foreground`,children:`Areas`}),e.map(([e,r])=>(0,P.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-0.5`,children:[(0,P.jsx)(L,{area:e,active:t===e,onClick:()=>n(t===e?null:e)}),(0,P.jsx)(`span`,{className:`text-[9px] text-muted-foreground`,children:r})]},e)),t&&(0,P.jsx)(`button`,{type:`button`,className:`text-[10px] text-primary hover:underline`,onClick:()=>n(null),children:`clear`})]})}var V=[`rule`,`decision`,`fact`,`memory`],H={rule:`Rules`,decision:`Decisions`,fact:`Facts`,memory:`Memory`},U=[`pinned`,`indexed`,`never`],W=[`ingested`,...V],G={ingested:`Ingested CLAUDE.md`,...H};function K(e){return e===`ingested`?`bg-tone-info/10 text-tone-info-fg border-tone-info/30`:e===`promoted`?`bg-tone-success/10 text-tone-success-fg border-tone-success/30`:e===`steward`?`bg-tone-violet/10 text-tone-violet-fg border-tone-violet/30`:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/30`}function q(e){return`${e.length}c/${O(e)}t`}function J(e){return!e.inherited&&A(e.source)}function Y(e,t){return{kind:e?.kind??t??`memory`,title:e?.title??``,body:e?.body??``,tags:e?.tags??[],audience:e?.audience??`all`,inject:e?.inject??`indexed`}}function X(e){return{kind:e.kind,title:e.title,body:e.body,tags:e.tags,audience:e.audience,inject:e.inject}}var Z=320;function Q({audience:e,onChange:t,profiles:n}){let r=e===`all`;function i(n){let i=r?[]:e,a=i.includes(n)?i.filter(e=>e!==n):[...i,n];t(a.length?a:`all`)}return(0,P.jsxs)(`div`,{className:`min-w-[220px] flex-1 space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Profiles (audience)`}),(0,P.jsxs)(`label`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground select-none`,children:[(0,P.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:r,onChange:e=>t(e.target.checked?`all`:[])}),`All profiles`]})]}),!r&&(n.length===0?(0,P.jsx)(`div`,{className:`rounded border border-border px-1.5 py-1 text-[10px] text-muted-foreground`,children:`No agent profiles found.`}):(0,P.jsx)(`div`,{className:`grid max-h-28 grid-cols-2 gap-0.5 overflow-y-auto rounded border border-border p-1`,children:n.map(t=>(0,P.jsxs)(`label`,{className:`flex items-center gap-1.5 rounded px-1 py-0.5 text-[10px] hover:bg-accent`,children:[(0,P.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:e.includes(t.name),onChange:()=>i(t.name)}),(0,P.jsxs)(`span`,{className:`truncate font-mono`,children:[t.icon?`${t.icon} `:``,t.name]})]},t.name))}))]})}function $({initial:e,submitLabel:t,onSubmit:n,onCancel:r}){let s=a(e=>e.agentProfiles),[c,l]=(0,N.useState)(e.kind),[h,g]=(0,N.useState)(e.title),[_,v]=(0,N.useState)(e.body),[y,b]=(0,N.useState)(e.tags.join(`, `)),[x,S]=(0,N.useState)(e.audience),[w,D]=(0,N.useState)(e.inject),[O,k]=(0,N.useState)(!1),[A,j]=(0,N.useState)(null);async function M(){if(!h.trim()){j(`Title is required`);return}k(!0),j(null);let e=y.split(`,`).map(e=>e.trim()).filter(Boolean);try{await n({kind:c,title:h.trim(),body:_,tags:e,audience:x,inject:w})}catch(e){j(o(e)),k(!1)}}return(0,P.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-card/60 p-3`,children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,P.jsxs)(m,{value:c,onValueChange:e=>l(e),children:[(0,P.jsx)(d,{size:`sm`,className:`w-32`,children:(0,P.jsx)(u,{})}),(0,P.jsx)(f,{children:V.map(e=>(0,P.jsx)(p,{value:e,children:H[e]},e))})]}),(0,P.jsx)(T,{value:h,onChange:e=>g(e.target.value),placeholder:`Title`,className:`h-8 min-w-[200px] flex-1`})]}),(0,P.jsx)(E,{value:_,onChange:e=>v(e.target.value),placeholder:`Body (markdown)`,className:`min-h-24 font-mono text-xs`}),(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-3 text-[9px] text-muted-foreground`,children:[(0,P.jsxs)(`span`,{children:[`label `,q(h)]}),(0,P.jsxs)(`span`,{children:[`body `,q(_)]})]}),(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,P.jsx)(T,{value:y,onChange:e=>b(e.target.value),placeholder:`tags, comma, separated`,className:`h-8 min-w-[160px] flex-1 text-xs`}),(0,P.jsxs)(m,{value:w,onValueChange:e=>D(e),children:[(0,P.jsx)(d,{size:`sm`,className:`w-28`,children:(0,P.jsx)(u,{})}),(0,P.jsx)(f,{children:U.map(e=>(0,P.jsx)(p,{value:e,children:e},e))})]})]}),(0,P.jsx)(Q,{audience:x,onChange:S,profiles:i(s)}),A&&(0,P.jsx)(`div`,{className:`text-xs text-destructive`,children:A}),(0,P.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,P.jsx)(C,{variant:`outline`,size:`sm`,onClick:r,disabled:O,children:`Cancel`}),(0,P.jsx)(C,{size:`sm`,onClick:()=>void M(),disabled:O,children:O?`Saving…`:t})]})]})}function ee({entry:e,ownerName:t,now:n,editing:r,expanded:i,onToggleExpanded:a,onEdit:o,onDelete:l,onTogglePin:u,onSubmitEdit:d,onCancelEdit:f,onAreaClick:p}){if(r)return(0,P.jsx)($,{initial:Y(e),submitLabel:`Save`,onSubmit:d,onCancel:f});let m=e.body??``,h=m.length>Z,g=i||!h?m:m.slice(0,Z).trimEnd()+`…`,x=J(e),T=e.inject===`pinned`;return(0,P.jsxs)(`div`,{className:`rounded-md border border-border bg-card/60 p-3`,children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(`span`,{className:`min-w-0 break-words text-sm font-medium`,children:e.title}),(0,P.jsx)(w,{variant:`outline`,className:`text-[10px] ${K(e.source)}`,children:e.source}),T&&(0,P.jsxs)(w,{variant:`outline`,className:`gap-1 border-primary/30 bg-primary/10 text-[10px] text-primary`,children:[(0,P.jsx)(b,{className:`h-3 w-3`}),`pinned`]}),e.inherited&&(0,P.jsxs)(w,{variant:`outline`,className:`gap-1 border-tone-warning/30 bg-tone-warning/10 text-[10px] text-tone-warning-fg`,children:[(0,P.jsx)(_,{className:`h-3 w-3`}),`inherited`,t?` · ${t}`:``]}),(0,P.jsxs)(`span`,{className:`ml-auto flex items-center gap-1`,children:[(0,P.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,title:`Created ${c(e.createdAt)}`,children:s(n,e.updatedAt)}),x&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6`,onClick:u,title:T?`Unpin (revert to indexed)`:`Pin (always render full body)`,children:T?(0,P.jsx)(y,{className:`h-3 w-3 text-primary`}):(0,P.jsx)(b,{className:`h-3 w-3`})}),(0,P.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6`,onClick:o,title:`Edit entry`,children:(0,P.jsx)(v,{className:`h-3 w-3`})}),(0,P.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6 text-destructive hover:text-destructive`,onClick:l,title:`Remove entry`,children:(0,P.jsx)(S,{className:`h-3 w-3`})})]})]})]}),m&&(0,P.jsxs)(`div`,{className:`mt-2`,children:[(0,P.jsx)(D,{text:g,className:`text-xs text-muted-foreground`}),h&&(0,P.jsx)(`button`,{type:`button`,className:`mt-1 text-[11px] font-medium text-primary hover:underline`,onClick:a,children:i?`Show less`:`Show more`})]}),(e.areas?.length||e.tags.length>0)&&(0,P.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[e.areas?.map(e=>(0,P.jsx)(L,{area:e,onClick:p&&(()=>p(e))},`area:${e}`)),e.tags.map(e=>(0,P.jsx)(w,{variant:`secondary`,className:`h-4 px-1 text-[9px]`,children:e},e))]}),(0,P.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[9px] text-muted-foreground`,children:[(0,P.jsxs)(`span`,{children:[`label `,q(e.title)]}),m&&(0,P.jsxs)(`span`,{children:[`body `,q(m)]}),(0,P.jsxs)(`span`,{children:[`Created `,c(e.createdAt)]}),(0,P.jsxs)(`span`,{children:[`Updated `,c(e.updatedAt)]})]})]})}function te(){let e=a(e=>e.projectFocusId),t=a(e=>e.consumeProjectFocus),[n,r]=(0,N.useState)([]),[i,s]=(0,N.useState)(``),[c,u]=(0,N.useState)(!1),[d,f]=(0,N.useState)(!0),[p,m]=(0,N.useState)(null);async function h(){m(null);try{let n=await l(`GET`,`/projects${c?`?includeArchived=true`:``}`);r(n.projects);let i=e?n.projects.find(t=>t.id===e||t.slug===e):void 0;i?(s(i.id),t()):s(e=>n.projects.some(t=>t.id===e)?e:n.projects[0]?.id??``)}catch(e){m(o(e))}finally{f(!1)}}return(0,N.useEffect)(()=>{h()},[c]),(0,N.useEffect)(()=>{let r=e?n.find(t=>t.id===e||t.slug===e):void 0;r&&(s(r.id),t())},[e]),{projects:n,selectedId:i,setSelectedId:s,includeArchived:c,setIncludeArchived:u,loading:d,error:p,setError:m,refresh:h}}function ne({list:e}){let{projects:t,selectedId:n,setSelectedId:r,includeArchived:i,setIncludeArchived:a}=e;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`select`,{"aria-label":`Project`,className:`ml-auto h-8 w-full min-w-0 max-w-full basis-full rounded-md border border-border bg-card px-2 text-sm text-foreground sm:w-auto sm:basis-auto`,value:n,onChange:e=>r(e.target.value),disabled:t.length===0,children:[t.length===0&&(0,P.jsx)(`option`,{value:``,children:`No projects`}),t.map(e=>(0,P.jsxs)(`option`,{value:e.id,children:[e.title||e.slug,e.status===`archived`?` (archived)`:``]},e.id))]}),(0,P.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground select-none`,children:[(0,P.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:i,onChange:e=>a(e.target.checked)}),`Archived`]})]})}function re({icon:e,title:t,list:n,actions:r,onRefresh:i}){return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[e,(0,P.jsx)(`h1`,{className:`text-lg font-semibold`,children:t}),(0,P.jsx)(ne,{list:n}),r,(0,P.jsxs)(C,{variant:`outline`,size:`sm`,onClick:i,children:[(0,P.jsx)(x,{className:`size-4`}),` Refresh`]})]}),n.error&&(0,P.jsx)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:n.error})]})}export{$ as a,Y as c,R as d,z as f,W as i,J as l,te as n,ee as o,G as r,X as s,re as t,B as u};
2
- //# sourceMappingURL=use-project-list-59LheVP7.js.map
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{r as i,t as a}from"./store-BgDALGIX.js";import{M as o}from"./provider-display-bWwiuedV.js";import{et as s,v as c}from"./display-BemJG1f_.js";import{t as l}from"./api-CIIVBtAV.js";import{a as u,i as d,n as f,r as p,t as m}from"./select-DTQMP4Dk.js";import{t as h}from"./folder-tree-BG3Y9nqH.js";import{t as g}from"./globe-Cl5fXtqs.js";import{t as _}from"./layers-DEfClY-v.js";import{t as v}from"./pencil-B1Hf2V_J.js";import{n as y,t as b}from"./pin-DcsKeXxr.js";import{t as x}from"./refresh-cw-CfpvQcUn.js";import{t as S}from"./trash-2-FbcSq927.js";import{t as C}from"./button-Do6Z3vvn.js";import{t as w}from"./badge-DqJRtj_p.js";import{t as T}from"./input-CsTB6jIx.js";import{t as E}from"./textarea-hs6Mpyfl.js";import{t as D}from"./formatted-body-qy2nTD_1.js";import{t as O}from"./token-estimate-Co-Jdphh.js";var k=[`manual`,`promoted`,`steward`];function A(e){return k.includes(e)}var j=[`project-wide`,`process`,`tooling`];function M(e){return j.includes(e)}var N=e(n(),1),P=r(),F=`border-tone-violet/30 bg-tone-violet/10 text-tone-violet-fg`,I=`border-tone-teal/30 bg-tone-teal/10 text-tone-teal-fg`;function L({area:e,active:n,onClick:r}){let i=M(e),a=i?g:h,o=t(`inline-flex h-5 max-w-full items-center gap-1 rounded-md border px-1.5 font-mono text-[10px]`,i?F:I,n&&`ring-2 ring-primary/60`),s=(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(a,{className:`size-3 shrink-0`,"aria-hidden":!0}),(0,P.jsx)(`span`,{className:`truncate`,children:e})]}),c=i?`system area`:`path area`;return r?(0,P.jsx)(`button`,{type:`button`,className:t(o,`cursor-pointer hover:brightness-110`),"data-area-kind":i?`system`:`path`,"aria-pressed":n,title:`${c} — filter`,onClick:r,children:s}):(0,P.jsx)(`span`,{className:o,"data-area-kind":i?`system`:`path`,title:c,children:s})}function R(e){let t=new Map;for(let n of e)for(let e of n.areas??[])t.set(e,(t.get(e)??0)+1);return[...t].sort(([e],[t])=>Number(M(t))-Number(M(e))||e.localeCompare(t))}function z(e){let t=new Map;for(let n of e)for(let e of n.tags)t.set(e,(t.get(e)??0)+1);return[...t].sort(([e,t],[n,r])=>r-t||e.localeCompare(n))}function B({counts:e,active:t,onChange:n}){return e.length===0?null:(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,role:`group`,"aria-label":`Filter by area`,children:[(0,P.jsx)(`span`,{className:`mr-0.5 text-[10px] text-muted-foreground`,children:`Areas`}),e.map(([e,r])=>(0,P.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-0.5`,children:[(0,P.jsx)(L,{area:e,active:t===e,onClick:()=>n(t===e?null:e)}),(0,P.jsx)(`span`,{className:`text-[9px] text-muted-foreground`,children:r})]},e)),t&&(0,P.jsx)(`button`,{type:`button`,className:`text-[10px] text-primary hover:underline`,onClick:()=>n(null),children:`clear`})]})}var V=[`rule`,`decision`,`fact`,`memory`],H={rule:`Rules`,decision:`Decisions`,fact:`Facts`,memory:`Memory`},U=[`pinned`,`indexed`,`never`],W=[`ingested`,...V],G={ingested:`Ingested CLAUDE.md`,...H};function K(e){return e===`ingested`?`bg-tone-info/10 text-tone-info-fg border-tone-info/30`:e===`promoted`?`bg-tone-success/10 text-tone-success-fg border-tone-success/30`:e===`steward`?`bg-tone-violet/10 text-tone-violet-fg border-tone-violet/30`:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/30`}function q(e){return`${e.length}c/${O(e)}t`}function J(e){return!e.inherited&&A(e.source)}function Y(e,t){return{kind:e?.kind??t??`memory`,title:e?.title??``,body:e?.body??``,tags:e?.tags??[],audience:e?.audience??`all`,inject:e?.inject??`indexed`}}function X(e){return{kind:e.kind,title:e.title,body:e.body,tags:e.tags,audience:e.audience,inject:e.inject}}var Z=320;function Q({audience:e,onChange:t,profiles:n}){let r=e===`all`;function i(n){let i=r?[]:e,a=i.includes(n)?i.filter(e=>e!==n):[...i,n];t(a.length?a:`all`)}return(0,P.jsxs)(`div`,{className:`min-w-[220px] flex-1 space-y-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Profiles (audience)`}),(0,P.jsxs)(`label`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground select-none`,children:[(0,P.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:r,onChange:e=>t(e.target.checked?`all`:[])}),`All profiles`]})]}),!r&&(n.length===0?(0,P.jsx)(`div`,{className:`rounded border border-border px-1.5 py-1 text-[10px] text-muted-foreground`,children:`No agent profiles found.`}):(0,P.jsx)(`div`,{className:`grid max-h-28 grid-cols-2 gap-0.5 overflow-y-auto rounded border border-border p-1`,children:n.map(t=>(0,P.jsxs)(`label`,{className:`flex items-center gap-1.5 rounded px-1 py-0.5 text-[10px] hover:bg-accent`,children:[(0,P.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:e.includes(t.name),onChange:()=>i(t.name)}),(0,P.jsxs)(`span`,{className:`truncate font-mono`,children:[t.icon?`${t.icon} `:``,t.name]})]},t.name))}))]})}function $({initial:e,submitLabel:t,onSubmit:n,onCancel:r}){let s=a(e=>e.agentProfiles),[c,l]=(0,N.useState)(e.kind),[h,g]=(0,N.useState)(e.title),[_,v]=(0,N.useState)(e.body),[y,b]=(0,N.useState)(e.tags.join(`, `)),[x,S]=(0,N.useState)(e.audience),[w,D]=(0,N.useState)(e.inject),[O,k]=(0,N.useState)(!1),[A,j]=(0,N.useState)(null);async function M(){if(!h.trim()){j(`Title is required`);return}k(!0),j(null);let e=y.split(`,`).map(e=>e.trim()).filter(Boolean);try{await n({kind:c,title:h.trim(),body:_,tags:e,audience:x,inject:w})}catch(e){j(o(e)),k(!1)}}return(0,P.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-card/60 p-3`,children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,P.jsxs)(m,{value:c,onValueChange:e=>l(e),children:[(0,P.jsx)(d,{size:`sm`,className:`w-32`,children:(0,P.jsx)(u,{})}),(0,P.jsx)(f,{children:V.map(e=>(0,P.jsx)(p,{value:e,children:H[e]},e))})]}),(0,P.jsx)(T,{value:h,onChange:e=>g(e.target.value),placeholder:`Title`,className:`h-8 min-w-[200px] flex-1`})]}),(0,P.jsx)(E,{value:_,onChange:e=>v(e.target.value),placeholder:`Body (markdown)`,className:`min-h-24 font-mono text-xs`}),(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-3 text-[9px] text-muted-foreground`,children:[(0,P.jsxs)(`span`,{children:[`label `,q(h)]}),(0,P.jsxs)(`span`,{children:[`body `,q(_)]})]}),(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,P.jsx)(T,{value:y,onChange:e=>b(e.target.value),placeholder:`tags, comma, separated`,className:`h-8 min-w-[160px] flex-1 text-xs`}),(0,P.jsxs)(m,{value:w,onValueChange:e=>D(e),children:[(0,P.jsx)(d,{size:`sm`,className:`w-28`,children:(0,P.jsx)(u,{})}),(0,P.jsx)(f,{children:U.map(e=>(0,P.jsx)(p,{value:e,children:e},e))})]})]}),(0,P.jsx)(Q,{audience:x,onChange:S,profiles:i(s)}),A&&(0,P.jsx)(`div`,{className:`text-xs text-destructive`,children:A}),(0,P.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,P.jsx)(C,{variant:`outline`,size:`sm`,onClick:r,disabled:O,children:`Cancel`}),(0,P.jsx)(C,{size:`sm`,onClick:()=>void M(),disabled:O,children:O?`Saving…`:t})]})]})}function ee({entry:e,ownerName:t,now:n,editing:r,expanded:i,onToggleExpanded:a,onEdit:o,onDelete:l,onTogglePin:u,onSubmitEdit:d,onCancelEdit:f,onAreaClick:p}){if(r)return(0,P.jsx)($,{initial:Y(e),submitLabel:`Save`,onSubmit:d,onCancel:f});let m=e.body??``,h=m.length>Z,g=i||!h?m:m.slice(0,Z).trimEnd()+`…`,x=J(e),T=e.inject===`pinned`;return(0,P.jsxs)(`div`,{className:`rounded-md border border-border bg-card/60 p-3`,children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(`span`,{className:`min-w-0 break-words text-sm font-medium`,children:e.title}),(0,P.jsx)(w,{variant:`outline`,className:`text-[10px] ${K(e.source)}`,children:e.source}),T&&(0,P.jsxs)(w,{variant:`outline`,className:`gap-1 border-primary/30 bg-primary/10 text-[10px] text-primary`,children:[(0,P.jsx)(b,{className:`h-3 w-3`}),`pinned`]}),e.inherited&&(0,P.jsxs)(w,{variant:`outline`,className:`gap-1 border-tone-warning/30 bg-tone-warning/10 text-[10px] text-tone-warning-fg`,children:[(0,P.jsx)(_,{className:`h-3 w-3`}),`inherited`,t?` · ${t}`:``]}),(0,P.jsxs)(`span`,{className:`ml-auto flex items-center gap-1`,children:[(0,P.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,title:`Created ${c(e.createdAt)}`,children:s(n,e.updatedAt)}),x&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6`,onClick:u,title:T?`Unpin (revert to indexed)`:`Pin (always render full body)`,children:T?(0,P.jsx)(y,{className:`h-3 w-3 text-primary`}):(0,P.jsx)(b,{className:`h-3 w-3`})}),(0,P.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6`,onClick:o,title:`Edit entry`,children:(0,P.jsx)(v,{className:`h-3 w-3`})}),(0,P.jsx)(C,{variant:`ghost`,size:`icon`,className:`h-6 w-6 text-destructive hover:text-destructive`,onClick:l,title:`Remove entry`,children:(0,P.jsx)(S,{className:`h-3 w-3`})})]})]})]}),m&&(0,P.jsxs)(`div`,{className:`mt-2`,children:[(0,P.jsx)(D,{text:g,className:`text-xs text-muted-foreground`}),h&&(0,P.jsx)(`button`,{type:`button`,className:`mt-1 text-[11px] font-medium text-primary hover:underline`,onClick:a,children:i?`Show less`:`Show more`})]}),(e.areas?.length||e.tags.length>0)&&(0,P.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[e.areas?.map(e=>(0,P.jsx)(L,{area:e,onClick:p&&(()=>p(e))},`area:${e}`)),e.tags.map(e=>(0,P.jsx)(w,{variant:`secondary`,className:`h-4 px-1 text-[9px]`,children:e},e))]}),(0,P.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[9px] text-muted-foreground`,children:[(0,P.jsxs)(`span`,{children:[`label `,q(e.title)]}),m&&(0,P.jsxs)(`span`,{children:[`body `,q(m)]}),(0,P.jsxs)(`span`,{children:[`Created `,c(e.createdAt)]}),(0,P.jsxs)(`span`,{children:[`Updated `,c(e.updatedAt)]})]})]})}function te(){let e=a(e=>e.projectFocusId),t=a(e=>e.consumeProjectFocus),[n,r]=(0,N.useState)([]),[i,s]=(0,N.useState)(``),[c,u]=(0,N.useState)(!1),[d,f]=(0,N.useState)(!0),[p,m]=(0,N.useState)(null);async function h(){m(null);try{let n=await l(`GET`,`/projects${c?`?includeArchived=true`:``}`);r(n.projects);let i=e?n.projects.find(t=>t.id===e||t.slug===e):void 0;i?(s(i.id),t()):s(e=>n.projects.some(t=>t.id===e)?e:n.projects[0]?.id??``)}catch(e){m(o(e))}finally{f(!1)}}return(0,N.useEffect)(()=>{h()},[c]),(0,N.useEffect)(()=>{let r=e?n.find(t=>t.id===e||t.slug===e):void 0;r&&(s(r.id),t())},[e]),{projects:n,selectedId:i,setSelectedId:s,includeArchived:c,setIncludeArchived:u,loading:d,error:p,setError:m,refresh:h}}function ne({list:e}){let{projects:t,selectedId:n,setSelectedId:r,includeArchived:i,setIncludeArchived:a}=e;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`select`,{"aria-label":`Project`,className:`ml-auto h-8 w-full min-w-0 max-w-full basis-full rounded-md border border-border bg-card px-2 text-sm text-foreground sm:w-auto sm:basis-auto`,value:n,onChange:e=>r(e.target.value),disabled:t.length===0,children:[t.length===0&&(0,P.jsx)(`option`,{value:``,children:`No projects`}),t.map(e=>(0,P.jsxs)(`option`,{value:e.id,children:[e.title||e.slug,e.status===`archived`?` (archived)`:``]},e.id))]}),(0,P.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground select-none`,children:[(0,P.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:i,onChange:e=>a(e.target.checked)}),`Archived`]})]})}function re({icon:e,title:t,list:n,actions:r,onRefresh:i}){return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[e,(0,P.jsx)(`h1`,{className:`text-lg font-semibold`,children:t}),(0,P.jsx)(ne,{list:n}),r,(0,P.jsxs)(C,{variant:`outline`,size:`sm`,onClick:i,children:[(0,P.jsx)(x,{className:`size-4`}),` Refresh`]})]}),n.error&&(0,P.jsx)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:n.error})]})}export{$ as a,Y as c,R as d,z as f,W as i,J as l,te as n,ee as o,G as r,X as s,re as t,B as u};
2
+ //# sourceMappingURL=use-project-list-X-BgT53X.js.map
@@ -1,6 +1,6 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t}from"./dist-DeW2Y1R5.js";import{St as n,Tt as r,n as i,t as a}from"./store-DcClXLH0.js";import{t as o}from"./provider-display-DsuWMvVL.js";import{A as s,C as c,E as l,F as u,M as d,O as f,P as p,T as m,ct as h,d as g,f as _,i as v,it as y,j as b,k as x,s as S,tt as C,wt as w}from"./display-BrKWFGJz.js";import{s as T}from"./api-CIIVBtAV.js";var E=e(t(),1);function D(e){return a(e)}var O=null;function k(e){let t=O;if(t&&t.agents===e.agents&&t.showBuiltIns===e.showBuiltIns&&t.showOffline===e.showOffline&&t.managedPolicies===e.managedPolicies)return t.summary;let n=new Set(y(e.agents,e.showBuiltIns,e.managedPolicies)),r={online:0,offline:0,needsHumanResponse:0,needsHumanResponseIds:``,shownIds:``,hosts:``},i=[],a=[],o=new Set;for(let t of e.agents){let s=v(t);s&&i.push(t.id),n.has(t)&&(t.machine&&o.add(t.machine),t.status===`offline`?r.offline++:r.online++,!(!e.showOffline&&t.status===`offline`)&&(a.push(t.id),s&&r.needsHumanResponse++))}return r.needsHumanResponseIds=i.join(`
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t}from"./dist-DeW2Y1R5.js";import{St as n,Tt as r,n as i,t as a}from"./store-BgDALGIX.js";import{t as o}from"./provider-display-bWwiuedV.js";import{A as s,C as c,E as l,F as u,M as d,O as f,P as p,T as m,ct as h,d as g,f as _,i as v,it as y,j as b,k as x,s as S,tt as C,wt as w}from"./display-BemJG1f_.js";import{s as T}from"./api-CIIVBtAV.js";var E=e(t(),1);function D(e){return a(e)}var O=null;function k(e){let t=O;if(t&&t.agents===e.agents&&t.showBuiltIns===e.showBuiltIns&&t.showOffline===e.showOffline&&t.managedPolicies===e.managedPolicies)return t.summary;let n=new Set(y(e.agents,e.showBuiltIns,e.managedPolicies)),r={online:0,offline:0,needsHumanResponse:0,needsHumanResponseIds:``,shownIds:``,hosts:``},i=[],a=[],o=new Set;for(let t of e.agents){let s=v(t);s&&i.push(t.id),n.has(t)&&(t.machine&&o.add(t.machine),t.status===`offline`?r.offline++:r.online++,!(!e.showOffline&&t.status===`offline`)&&(a.push(t.id),s&&r.needsHumanResponse++))}return r.needsHumanResponseIds=i.join(`
2
2
  `),r.shownIds=a.join(`
3
3
  `),r.hosts=[...o].sort().join(`
4
4
  `),O={agents:e.agents,showBuiltIns:e.showBuiltIns,showOffline:e.showOffline,managedPolicies:e.managedPolicies,summary:r},r}function A(e){return new Set(e?e.split(`
5
5
  `):[])}function j(){let e=D(e=>e.pairs);return(0,E.useMemo)(()=>{let t={};for(let n of e)(n.status===`active`||n.status===`pending`)&&(n.requesterId&&(t[n.requesterId]=n),n.targetId&&(t[n.targetId]=n));return t},[e])}function M(e){let t=D(e=>e.messages),n=D(e=>e.tasks),r=D(e=>e.pairs),i=D(e=>e.inboxReadCursors),a=D(e=>e.inboxArchivedThreads);return(0,E.useMemo)(()=>{if(!e)return{unread:0,needsHumanResponse:!1,pendingPairInvite:!1,claimableTasks:0,total:0,score:0};let o=t.filter(t=>c(t)===e.id&&!b(t)),u=Number(a[e.id]||0),d=u>=o.filter(e=>s(e)&&l(e)).reduce((e,t)=>Math.max(e,t.id),0)&&u>0?0:o.filter(t=>p(i,e.id,t)).length,m=v(e),h=r.find(t=>(t.status===`active`||t.status===`pending`)&&(t.requesterId===e.id||t.targetId===e.id))?.status===`pending`,_=n.filter(t=>x(t)&&g(t.target,e)).length+t.filter(t=>f(t)&&g(t.to,e)).length;return{unread:d,needsHumanResponse:m,pendingPairInvite:h,claimableTasks:_,total:d+ +!!m+ +!!h+_,score:d*10+(m?8:0)+(h?4:0)+_*2}},[e,t,n,r,i,a])}function N(){let e=D(e=>e.agents),t=D(e=>e.showBuiltIns),i=D(e=>e.showOffline),a=D(e=>e.agentSort),o=D(e=>e.agentSortDir),s=D(e=>e.agentPresetFilter),c=D(e=>e.agentStatusFilter),l=D(e=>e.agentTagFilter),u=D(e=>e.agentHostFilter),d=D(e=>e.managedPolicies),f=D(e=>e.pairs);return(0,E.useMemo)(()=>{let r=y(e,t,d);if(s){let e=P(f);r=F(r,s,n.getState().now,e)}i||(r=r.filter(e=>e.status!==`offline`)),c===`starting`?r=r.filter(e=>e.status!==`offline`&&!e.ready):c&&(r=r.filter(e=>e.status===c)),l&&(r=r.filter(e=>(e.tags||[]).includes(l))),u&&(r=r.filter(e=>(e.machine||``)===u));let p=o===`desc`?-1:1;return[...r].sort((e,t)=>a===`name`?_(e).localeCompare(_(t))*p:a===`lastSeen`?(new Date(t.lastSeen).getTime()-new Date(e.lastSeen).getTime())*p||_(e).localeCompare(_(t)):a===`created`?(new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime())*p||_(e).localeCompare(_(t)):((w[e.status]??9)-(w[t.status]??9))*p||_(e).localeCompare(_(t)))},[e,t,i,d,a,o,s,c,l,u,f,r()])}function P(e){let t={};for(let n of e)(n.status===`active`||n.status===`pending`)&&(n.requesterId&&(t[n.requesterId]=n),n.targetId&&(t[n.targetId]=n));return t}function F(e,t,n,r){switch(t){case`active`:return e.filter(e=>e.status!==`offline`);case`offline_stale`:return e.filter(e=>e.status===`offline`||m(n,e));case`paired`:return e.filter(e=>!!r[e.id]);case`unpaired`:return e.filter(e=>!r[e.id]);default:return o().includes(t)?e.filter(e=>S(e)===t):e}}function I(e,t){let n=null;for(let r=e.length-1;r>=0;r--){let i=e[r];if(!i)continue;if(!d(i))return i;let a=i.payload?.session?.type;!n&&(t||a!==`reasoning`)&&(n=i)}return n}function L(){return D(z)}var R=null;function z(e){let t=[e.messages,e.inboxReadCursors,e.inboxArchivedThreads,k(e).needsHumanResponseIds,e.coordinatorMutes,e.chatFilters.reasoning],n=R;if(n&&t.every((e,t)=>e===n.inputs[t]))return n.threads;let[r,i,a,o,s,l]=t,u=A(o),d=new Map;for(let e of r){if(b(e))continue;let t=c(e);t&&(d.has(t)||d.set(t,{id:t,peer:t,messages:[],lastMessage:null,previewMessage:null,attention:{unread:0,needsHumanResponse:!1,score:0},archived:!1,draft:``}),d.get(t).messages.push(e))}for(let[e,t]of d){t.messages.sort((e,t)=>e.id-t.id),t.lastMessage=t.messages[t.messages.length-1]||null,t.previewMessage=I(t.messages,l);let r=s.includes(t.peer),o=r?0:t.messages.filter(e=>p(i,t.peer,e)).length,c=!r&&u.has(t.peer);t.attention={unread:o,needsHumanResponse:c,score:o*10+(c?8:0)};let f=Number(a[t.peer]||0);t.archived=!!(t.lastMessage?.id&&f>=t.lastMessage.id);let m=n?.byPeer.get(e);m&&B(m,t)&&d.set(e,m)}let f=[...d.values()].sort((e,t)=>{let n=(t.attention.score||0)-(e.attention.score||0);return n===0?(t.lastMessage?.id||0)-(e.lastMessage?.id||0):n});return R={inputs:t,byPeer:d,threads:n&&n.threads.length===f.length&&f.every((e,t)=>e===n.threads[t])?n.threads:f},R.threads}function B(e,t){return e.previewMessage===t.previewMessage&&e.archived===t.archived&&e.attention.unread===t.attention.unread&&e.attention.needsHumanResponse===t.attention.needsHumanResponse&&e.messages.length===t.messages.length&&e.messages.every((e,n)=>e===t.messages[n])}function V(){let e=L(),t=D(e=>e.inboxDrafts);return(0,E.useMemo)(()=>Object.keys(t).length===0&&e.every(e=>!e.draft)?e:e.map(e=>{let n=t[e.peer]||``;return n===e.draft?e:{...e,draft:n}}),[e,t])}function H(){let e=L(),t=D(e=>k(e).shownIds),n=D(e=>k(e).needsHumanResponse),r=D(e=>e.pairs),i=D(e=>e.tasks),a=D(e=>e.messages),o=(0,E.useMemo)(()=>A(t),[t]);return(0,E.useMemo)(()=>{let t=e.filter(e=>!e.archived&&o.has(e.peer)).reduce((e,t)=>e+(t.attention.unread||0),0),s=r.filter(e=>e.status===`pending`).length,c=i.filter(x).length+a.filter(f).length;return{unreadInbox:t,needsHumanResponse:n,pendingPairInvites:s,claimableTasks:c,total:t+n+s+c}},[e,o,n,r,i,a])}function U(){return D(e=>k(e).online)}function W(){return D(e=>k(e).offline)}function G(){let e=D(e=>e.agents);return(0,E.useMemo)(()=>e.filter(e=>e.status===`busy`).length,[e])}function K(e=!0){let t=i(e,e=>e.agents),n=i(e,e=>e.showBuiltIns),r=i(e,e=>e.showOffline),a=i(e,e=>e.managedPolicies);return(0,E.useMemo)(()=>{let e=y(t,n,a);return r?e:e.filter(e=>e.status!==`offline`)},[t,n,r,a])}function q(){let e=D(e=>k(e).hosts);return(0,E.useMemo)(()=>[...A(e)],[e])}function J(){let e=D(e=>e.agents),t=D(e=>e.showBuiltIns),n=D(e=>e.managedPolicies);return(0,E.useMemo)(()=>[...new Set(y(e,t,n).flatMap(e=>e.tags||[]))],[e,t,n])}function Y(){let e=D(e=>e.tasks),t=D(e=>e.messages);return(0,E.useMemo)(()=>{let n=e.filter(e=>(e.kind??`claim`)===`claim`).filter(e=>!h.has(e.status)).map(e=>({id:`task-`+e.id,sourceType:`task`,title:e.title,body:e.body,severity:e.severity||`info`,status:e.status,owner:e.claimedBy||``,target:e.target,source:e.source,channel:e.channel||``,updatedAt:e.updatedAt||e.createdAt,createdAt:e.createdAt,claimable:x(e),task:e})),r=t.filter(f).map(e=>({id:`message-`+e.id,sourceType:`message`,title:e.subject||`Claimable message #`+e.id,body:u(e),severity:`warning`,status:e.claimedBy?`claimed`:`open`,owner:e.claimedBy||``,target:e.to,source:`message`,channel:e.channel||``,updatedAt:e.claimedAt||e.createdAt,createdAt:e.createdAt,claimable:f(e),message:e}));return[...n,...r].sort((e,t)=>{let n=Number(t.claimable)-Number(e.claimable);if(n!==0)return n;let r={critical:0,warning:1,info:2},i=(r[e.severity]??9)-(r[t.severity]??9);return i===0?C(e.updatedAt)-C(t.updatedAt):i})},[e,t])}function X(e=!0){let t=i(e,e=>e.commandQuery),n=i(e,e=>e.agents),r=i(e,e=>e.showBuiltIns),a=i(e,e=>e.showOffline),o=i(e,e=>e.managedPolicies);return(0,E.useMemo)(()=>{let e=y(n,r,o).filter(e=>a||e.status!==`offline`),i=[...new Set(e.flatMap(e=>e.tags||[]))],s=T(),c=[Z(`open-chat`,`Open chat`,`Human console`,`MessageCircle`,`openView`,{view:`chat`}),Z(`open-work`,`Open work queue`,`Claimable messages and tasks`,`ListChecks`,`openView`,{view:`work`}),Z(`open-workspaces`,`Open workspaces`,`Agent worktrees and merge state`,`GitBranch`,`openView`,{view:`workspaces`}),Z(`show-stale`,`Show stale agents`,`Filter agents to offline or stale`,`Filter`,`agentPreset`,{preset:`offline_stale`}),Z(`copy-url`,`Copy relay URL`,s,`Copy`,`copy`,{value:s}),Z(`export-md`,`Export timeline as Markdown`,`Activity audit trace`,`FileDown`,`exportActivity`,{format:`markdown`}),Z(`export-json`,`Export timeline as JSON`,`Activity audit trace`,`Braces`,`exportActivity`,{format:`json`}),...e.slice(0,12).map(e=>Z(`msg-`+e.id,`Message agent: `+_(e),e.id,`Send`,`messageAgent`,{agentId:e.id})),...e.filter(e=>e.providerCapabilities?.liveSession?.inject===!0).slice(0,8).map(e=>Z(`pair-`+e.id,`Pair: `+_(e),e.id,`Link`,`pairAgent`,{agentId:e.id})),...i.map(e=>Z(`tag-`+e,`Filter tag: `+e,`#`+e,`Tag`,`filterTag`,{tag:e}))],l=t.trim().toLowerCase();return(l?c.filter(e=>e.search.includes(l)):c).slice(0,24)},[t,n,r,a,o])}function Z(e,t,n,r,i,a){return{id:e,title:t,subtitle:n,icon:r,action:i,payload:a,search:`${t}\n${n}\n${i}`.toLowerCase()}}export{X as a,W as c,N as d,q as f,G as i,U as l,Y as m,V as n,K as o,J as p,H as r,L as s,M as t,j as u};
6
- //# sourceMappingURL=use-selectors-BZa25xEB.js.map
6
+ //# sourceMappingURL=use-selectors-0X_UZkk-.js.map
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{mt as i,x as a}from"./display-BrKWFGJz.js";import{n as o}from"./api-CIIVBtAV.js";import{t as s}from"./agent-type-icon-LrUEU3lB.js";var c=e(n(),1),l=r(),u={id:i};function d({user:e,address:n,distinct:r=!1,className:i}){let d=e?.avatarUrl??(e?.avatarArtifactId?`/artifacts/${encodeURIComponent(e.avatarArtifactId)}/content`:null),[f,p]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!d){p(null);return}let e=!1,t=null;return(async()=>{try{let n=await o(d);if(e)return;t=URL.createObjectURL(n),p(t)}catch{e||p(null)}})(),()=>{e=!0,t&&URL.revokeObjectURL(t)}},[d]);let m=e?.displayName||e?.handle||`User`;if(f)return(0,l.jsx)(`img`,{src:f,alt:m,title:m,className:t(`w-7 h-7 rounded-md object-cover`,i)});if(r){let e=(m.trim()[0]||`U`).toUpperCase();return(0,l.jsx)(`span`,{title:m,className:t(`inline-flex w-7 h-7 items-center justify-center rounded-md bg-muted text-xs font-semibold ring-1 ring-foreground/10`,a(n),i),children:e})}return(0,l.jsx)(s,{agent:u,className:i})}export{d as t};
2
- //# sourceMappingURL=user-avatar-DHxlvUvV.js.map
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{mt as i,x as a}from"./display-BemJG1f_.js";import{n as o}from"./api-CIIVBtAV.js";import{t as s}from"./agent-type-icon-CXSLrKiq.js";var c=e(n(),1),l=r(),u={id:i};function d({user:e,address:n,distinct:r=!1,className:i}){let d=e?.avatarUrl??(e?.avatarArtifactId?`/artifacts/${encodeURIComponent(e.avatarArtifactId)}/content`:null),[f,p]=(0,c.useState)(null);(0,c.useEffect)(()=>{if(!d){p(null);return}let e=!1,t=null;return(async()=>{try{let n=await o(d);if(e)return;t=URL.createObjectURL(n),p(t)}catch{e||p(null)}})(),()=>{e=!0,t&&URL.revokeObjectURL(t)}},[d]);let m=e?.displayName||e?.handle||`User`;if(f)return(0,l.jsx)(`img`,{src:f,alt:m,title:m,className:t(`w-7 h-7 rounded-md object-cover`,i)});if(r){let e=(m.trim()[0]||`U`).toUpperCase();return(0,l.jsx)(`span`,{title:m,className:t(`inline-flex w-7 h-7 items-center justify-center rounded-md bg-muted text-xs font-semibold ring-1 ring-foreground/10`,a(n),i),children:e})}return(0,l.jsx)(s,{agent:u,className:i})}export{d as t};
2
+ //# sourceMappingURL=user-avatar-CkLhVBGu.js.map
@@ -1,8 +1,8 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{M as i}from"./provider-display-DsuWMvVL.js";import{t as a}from"./api-CIIVBtAV.js";import{t as o}from"./button-Do6Z3vvn.js";import{t as s}from"./badge-DqJRtj_p.js";import{n as c}from"./token-estimate-Co-Jdphh.js";var l=e(n(),1),u=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}else return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}};new class extends u{};function d(e,t){let n;for(n=0;n<e.length&&n<t.length;n++)if(e[n]!=t[n])return e.slice(0,n);return e.slice(0,n)}function f(e,t){let n;if(!e||!t||e[e.length-1]!=t[t.length-1])return``;for(n=0;n<e.length&&n<t.length;n++)if(e[e.length-(n+1)]!=t[t.length-(n+1)])return e.slice(-n);return e.slice(-n)}function p(e,t,n){if(e.slice(0,t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't start with prefix ${JSON.stringify(t)}; this is a bug`);return n+e.slice(t.length)}function m(e,t,n){if(!t)return e+n;if(e.slice(-t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't end with suffix ${JSON.stringify(t)}; this is a bug`);return e.slice(0,-t.length)+n}function h(e,t){return p(e,t,``)}function g(e,t){return m(e,t,``)}function _(e,t){return t.slice(0,v(e,t))}function v(e,t){let n=0;e.length>t.length&&(n=e.length-t.length);let r=t.length;e.length<t.length&&(r=e.length);let i=Array(r),a=0;i[0]=0;for(let e=1;e<r;e++){for(t[e]==t[a]?i[e]=i[a]:i[e]=a;a>0&&t[e]!=t[a];)a=i[a];t[e]==t[a]&&a++}a=0;for(let r=n;r<e.length;r++){for(;a>0&&e[r]!=t[a];)a=i[a];e[r]==t[a]&&a++}return a}function y(e,t){let n=[];for(let r of Array.from(t.segment(e))){let e=r.segment;n.length&&/\s/.test(n[n.length-1])&&/\s/.test(e)?n[n.length-1]+=e:n.push(e)}return n}function b(e,t){if(t)return S(e,t)[1];let n;for(n=e.length-1;n>=0&&e[n].match(/\s/);n--);return e.substring(n+1)}function x(e,t){if(t)return S(e,t)[0];let n=e.match(/^\s*/);return n?n[0]:``}function S(e,t){if(!t)return[x(e),b(e)];if(t.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);let n=y(e,t),r=n[0],i=n[n.length-1];return[/\s/.test(r)?r:``,/\s/.test(i)?i:``]}var C=`a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}`,w=RegExp(`[${C}]+|\\s+|[^${C}]`,`ug`);new class extends u{equals(e,t,n){return n.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e.trim()===t.trim()}tokenize(e,t={}){let n;if(t.intlSegmenter){let r=t.intlSegmenter;if(r.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);n=y(e,r)}else n=e.match(w)||[];let r=[],i=null;return n.forEach(e=>{/\s/.test(e)?i==null?r.push(e):r.push(r.pop()+e):i!=null&&/\s/.test(i)?r[r.length-1]==i?r.push(r.pop()+e):r.push(i+e):r.push(e),i=e}),r}join(e){return e.map((e,t)=>t==0?e:e.replace(/^\s+/,``)).join(``)}postProcess(e,t){if(!e||t.oneChangePerToken)return e;let n=null,r=null,i=null;return e.forEach(e=>{e.added?r=e:e.removed?i=e:((r||i)&&T(n,i,r,e,t.intlSegmenter),n=e,r=null,i=null)}),(r||i)&&T(n,i,r,null,t.intlSegmenter),e}};function T(e,t,n,r,i){if(t&&n){let[a,o]=S(t.value,i),[s,c]=S(n.value,i);if(e){let r=d(a,s);e.value=m(e.value,s,r),t.value=h(t.value,r),n.value=h(n.value,r)}if(r){let e=f(o,c);r.value=p(r.value,c,e),t.value=g(t.value,e),n.value=g(n.value,e)}}else if(n){if(e){let e=x(n.value,i);n.value=n.value.substring(e.length)}if(r){let e=x(r.value,i);r.value=r.value.substring(e.length)}}else if(e&&r){let n=x(r.value,i),[a,o]=S(t.value,i),s=d(n,a);t.value=h(t.value,s);let c=f(h(n,s),o);t.value=g(t.value,c),r.value=p(r.value,n,c),e.value=m(e.value,n,n.slice(0,n.length-c.length))}else if(r){let e=x(r.value,i),n=_(b(t.value,i),e);t.value=g(t.value,n)}else if(e){let n=_(b(e.value,i),x(t.value,i));t.value=h(t.value,n)}}new class extends u{tokenize(e){let t=RegExp(`(\\r?\\n)|[${C}]+|[^\\S\\n\\r]+|[^${C}]`,`ug`);return e.match(t)||[]}};var E=new class extends u{constructor(){super(...arguments),this.tokenize=O}equals(e,t,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{M as i}from"./provider-display-bWwiuedV.js";import{t as a}from"./api-CIIVBtAV.js";import{t as o}from"./button-Do6Z3vvn.js";import{t as s}from"./badge-DqJRtj_p.js";import{n as c}from"./token-estimate-Co-Jdphh.js";var l=e(n(),1),u=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}else return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}};new class extends u{};function d(e,t){let n;for(n=0;n<e.length&&n<t.length;n++)if(e[n]!=t[n])return e.slice(0,n);return e.slice(0,n)}function f(e,t){let n;if(!e||!t||e[e.length-1]!=t[t.length-1])return``;for(n=0;n<e.length&&n<t.length;n++)if(e[e.length-(n+1)]!=t[t.length-(n+1)])return e.slice(-n);return e.slice(-n)}function p(e,t,n){if(e.slice(0,t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't start with prefix ${JSON.stringify(t)}; this is a bug`);return n+e.slice(t.length)}function m(e,t,n){if(!t)return e+n;if(e.slice(-t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't end with suffix ${JSON.stringify(t)}; this is a bug`);return e.slice(0,-t.length)+n}function h(e,t){return p(e,t,``)}function g(e,t){return m(e,t,``)}function _(e,t){return t.slice(0,v(e,t))}function v(e,t){let n=0;e.length>t.length&&(n=e.length-t.length);let r=t.length;e.length<t.length&&(r=e.length);let i=Array(r),a=0;i[0]=0;for(let e=1;e<r;e++){for(t[e]==t[a]?i[e]=i[a]:i[e]=a;a>0&&t[e]!=t[a];)a=i[a];t[e]==t[a]&&a++}a=0;for(let r=n;r<e.length;r++){for(;a>0&&e[r]!=t[a];)a=i[a];e[r]==t[a]&&a++}return a}function y(e,t){let n=[];for(let r of Array.from(t.segment(e))){let e=r.segment;n.length&&/\s/.test(n[n.length-1])&&/\s/.test(e)?n[n.length-1]+=e:n.push(e)}return n}function b(e,t){if(t)return S(e,t)[1];let n;for(n=e.length-1;n>=0&&e[n].match(/\s/);n--);return e.substring(n+1)}function x(e,t){if(t)return S(e,t)[0];let n=e.match(/^\s*/);return n?n[0]:``}function S(e,t){if(!t)return[x(e),b(e)];if(t.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);let n=y(e,t),r=n[0],i=n[n.length-1];return[/\s/.test(r)?r:``,/\s/.test(i)?i:``]}var C=`a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}`,w=RegExp(`[${C}]+|\\s+|[^${C}]`,`ug`);new class extends u{equals(e,t,n){return n.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e.trim()===t.trim()}tokenize(e,t={}){let n;if(t.intlSegmenter){let r=t.intlSegmenter;if(r.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);n=y(e,r)}else n=e.match(w)||[];let r=[],i=null;return n.forEach(e=>{/\s/.test(e)?i==null?r.push(e):r.push(r.pop()+e):i!=null&&/\s/.test(i)?r[r.length-1]==i?r.push(r.pop()+e):r.push(i+e):r.push(e),i=e}),r}join(e){return e.map((e,t)=>t==0?e:e.replace(/^\s+/,``)).join(``)}postProcess(e,t){if(!e||t.oneChangePerToken)return e;let n=null,r=null,i=null;return e.forEach(e=>{e.added?r=e:e.removed?i=e:((r||i)&&T(n,i,r,e,t.intlSegmenter),n=e,r=null,i=null)}),(r||i)&&T(n,i,r,null,t.intlSegmenter),e}};function T(e,t,n,r,i){if(t&&n){let[a,o]=S(t.value,i),[s,c]=S(n.value,i);if(e){let r=d(a,s);e.value=m(e.value,s,r),t.value=h(t.value,r),n.value=h(n.value,r)}if(r){let e=f(o,c);r.value=p(r.value,c,e),t.value=g(t.value,e),n.value=g(n.value,e)}}else if(n){if(e){let e=x(n.value,i);n.value=n.value.substring(e.length)}if(r){let e=x(r.value,i);r.value=r.value.substring(e.length)}}else if(e&&r){let n=x(r.value,i),[a,o]=S(t.value,i),s=d(n,a);t.value=h(t.value,s);let c=f(h(n,s),o);t.value=g(t.value,c),r.value=p(r.value,n,c),e.value=m(e.value,n,n.slice(0,n.length-c.length))}else if(r){let e=x(r.value,i),n=_(b(t.value,i),e);t.value=g(t.value,n)}else if(e){let n=_(b(e.value,i),x(t.value,i));t.value=h(t.value,n)}}new class extends u{tokenize(e){let t=RegExp(`(\\r?\\n)|[${C}]+|[^\\S\\n\\r]+|[^${C}]`,`ug`);return e.match(t)||[]}};var E=new class extends u{constructor(){super(...arguments),this.tokenize=O}equals(e,t,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
2
2
  `))&&(e=e.trim()),(!n.newlineIsToken||!t.includes(`
3
3
  `))&&(t=t.trim())):n.ignoreNewlineAtEof&&!n.newlineIsToken&&(e.endsWith(`
4
4
  `)&&(e=e.slice(0,-1)),t.endsWith(`
5
5
  `)&&(t=t.slice(0,-1))),super.equals(e,t,n)}};function D(e,t,n){return E.diff(e,t,n)}function O(e,t){t.stripTrailingCr&&(e=e.replace(/\r\n/g,`
6
6
  `));let n=[],r=e.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(let e=0;e<r.length;e++){let i=r[e];e%2&&!t.newlineIsToken?n[n.length-1]+=i:n.push(i)}return n}function k(e){return e==`.`||e==`!`||e==`?`}new class extends u{tokenize(e){let t=[],n=0;for(let r=0;r<e.length;r++){if(r==e.length-1){t.push(e.slice(n));break}if(k(e[r])&&e[r+1].match(/\s/)){for(t.push(e.slice(n,r+1)),r=n=r+1;e[r+1]?.match(/\s/);)r++;t.push(e.slice(n,r+1)),n=r+1}}return t}},new class extends u{tokenize(e){return e.split(/([{}:;,]|\s+)/)}},new class extends u{constructor(){super(...arguments),this.tokenize=O}get useLongestToken(){return!0}castInput(e,t){let{undefinedReplacement:n,stringifyReplacer:r=(e,t)=>t===void 0?n:t}=t;return typeof e==`string`?e:JSON.stringify(A(e,null,null,r),null,` `)}equals(e,t,n){return super.equals(e.replace(/,([\r\n])/g,`$1`),t.replace(/,([\r\n])/g,`$1`),n)}};function A(e,t,n,r,i){t||=[],n||=[],r&&(e=r(i===void 0?``:i,e));let a;for(a=0;a<t.length;a+=1)if(t[a]===e)return n[a];let o;if(Object.prototype.toString.call(e)===`[object Array]`){for(t.push(e),o=Array(e.length),n.push(o),a=0;a<e.length;a+=1)o[a]=A(e[a],t,n,r,String(a));return t.pop(),n.pop(),o}if(e&&e.toJSON&&(e=e.toJSON()),typeof e==`object`&&e){t.push(e),o={},n.push(o);let i=[],s;for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&i.push(s);for(i.sort(),a=0;a<i.length;a+=1)s=i[a],o[s]=A(e[s],t,n,r,s);t.pop(),n.pop()}else o=e;return o}new class extends u{tokenize(e){return e.slice()}join(e){return e}removeEmpty(e){return e}};var j=r(),M=2;function N(e,t){let n=D(e,t).flatMap(e=>{let t=e.added?`add`:e.removed?`del`:`same`;return e.value.replace(/\n$/,``).split(`
7
7
  `).map(e=>({kind:t,text:e}))}),r=n.map((e,t)=>e.kind!==`same`||n.slice(Math.max(0,t-M),t+M+1).some(e=>e.kind!==`same`)),i=[],a=0;return n.forEach((e,t)=>{r[t]?(a&&i.push({kind:`gap`,text:`${a} unchanged line${a===1?``:`s`}`}),a=0,i.push(e)):a++}),a&&i.push({kind:`gap`,text:`${a} unchanged line${a===1?``:`s`}`}),i}function P({from:e,to:n,label:r}){let i=N(e,n),a=i.some(e=>e.kind===`add`||e.kind===`del`);return(0,j.jsxs)(`div`,{className:`min-w-0 space-y-1`,"data-testid":`prompt-diff`,children:[(0,j.jsx)(`p`,{className:`text-[11px] font-medium text-muted-foreground`,children:r}),a?(0,j.jsx)(`pre`,{className:`max-h-64 max-w-full overflow-auto rounded border bg-background p-1 font-mono text-[11px] leading-4`,children:i.map((e,n)=>(0,j.jsxs)(`div`,{className:t(`whitespace-pre-wrap break-words`,e.kind===`add`&&`bg-tone-success/10 text-tone-success-fg`,e.kind===`del`&&`bg-tone-danger/10 text-tone-danger-fg`,e.kind===`gap`&&`text-muted-foreground italic`),children:[e.kind===`add`?`+ `:e.kind===`del`?`- `:e.kind===`gap`?`… `:` `,e.text]},n))}):(0,j.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No differences.`})]})}function F(e){return`/settings/prompts/${encodeURIComponent(e)}`}async function I(e){let[t,n]=await Promise.all([a(`GET`,e),a(`GET`,`${e}/history`).then(e=>e.versions,()=>void 0)]);return[t,n]}function L(e){return new Date(e).toLocaleString()}function R(e){return e.fallbackReason===`db-error`?`The prompt database is unavailable, so the bundled text is being served. Editing is disabled until it recovers.`:`No saved version exists for this prompt yet, so the bundled text is being served. Editing is disabled until a saved version exists.`}function z({slug:e,...t}){return(0,j.jsx)(B,{path:F(e),title:e,...t},e)}function B({path:e,title:t,textLabel:n=`Prompt text`,saveLabel:r=`Save prompt version`,children:u,onSaved:d,readOnly:f=!1}){let[p,m]=(0,l.useState)(),[h,g]=(0,l.useState)(),[_,v]=(0,l.useState)(``),[y,b]=(0,l.useState)(``),[x,S]=(0,l.useState)(``),[C,w]=(0,l.useState)(!1),[T,E]=(0,l.useState)(!1),[D,O]=(0,l.useState)(``);(0,l.useEffect)(()=>{let t=!0;return I(e).then(e=>{t&&m(e)},e=>{t&&b(i(e))}),()=>{t=!1}},[e]);async function k(){let t=await I(e);m(t),t[0].version&&d?.(t[0])}async function A(){E(!0);try{await k(),b(``),S(C?`Reloaded the latest version. Your unsaved text is kept; review the changes and save again.`:``),w(!1)}catch(e){b(i(e))}finally{E(!1)}}async function M(t,n){if(!p)return;let[r]=p;E(!0),b(``),S(``),w(!1);try{await a(t===`edit`?`PUT`:`POST`,`${e}${t===`edit`?``:`/${t}`}`,{...t===`edit`?{template:h??r.template}:{},...n===void 0?{}:{version:n},expectedVersion:r.version,reason:_.trim()||void 0}),await k(),g(void 0),v(``),O(``)}catch(e){e.status===409?(w(!0),b(`Version ${r.version} is no longer current: someone else saved first. Reload the latest version, then re-apply your change.`)):b(i(e))}finally{E(!1)}}if(!p||p[0].version===void 0)return(0,j.jsxs)(j.Fragment,{children:[u,y&&(0,j.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,children:y})]});let[N,F]=p,z=N.source===`bundled-fallback`,B=f||z,V=h!==void 0&&h!==N.template,H=F?.find(e=>e.version===N.version),U=!!N.bundledUpdateAvailable&&N.bundledTemplate!==void 0,W=V?`Save or discard your edits first`:void 0;return(0,j.jsxs)(`div`,{className:`min-w-0 space-y-2 rounded border p-2 text-xs`,"data-testid":`versioned-prompt-editor`,children:[(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,j.jsx)(`span`,{className:`min-w-0 break-all font-medium`,children:t}),(0,j.jsxs)(`span`,{children:[`· `,z?`No saved version`:`Version ${N.version}`]}),(0,j.jsxs)(`span`,{className:`text-muted-foreground`,children:[`· `,c(h??N.template)]}),z&&(0,j.jsx)(s,{variant:`outline`,className:`border-tone-warning/40 bg-tone-warning/10 text-tone-warning-fg`,children:`Bundled fallback`}),U&&(0,j.jsx)(s,{variant:`outline`,className:`border-tone-info/40 bg-tone-info/10 text-tone-info-fg`,children:`Bundled update available`})]}),H&&(0,j.jsxs)(`p`,{className:`break-words text-muted-foreground`,children:[`Saved by `,H.actor,` · `,L(H.createdAt),H.reason?` · ${H.reason}`:``]}),z&&(0,j.jsxs)(`p`,{role:`status`,className:`rounded border border-tone-warning/30 bg-tone-warning/10 p-1.5 text-tone-warning-fg`,children:[R(N),` `,(0,j.jsx)(o,{type:`button`,variant:`outline`,size:`xs`,disabled:T,onClick:()=>void A(),children:`Reload`})]}),y&&(0,j.jsxs)(`p`,{role:`alert`,className:`rounded border border-destructive/40 bg-destructive/10 p-1.5 text-destructive`,children:[y,` `,C&&(0,j.jsx)(o,{type:`button`,variant:`outline`,size:`xs`,disabled:T,onClick:()=>void A(),children:`Reload latest`})]}),x&&(0,j.jsx)(`p`,{role:`status`,className:`rounded border border-tone-info/30 bg-tone-info/10 p-1.5 text-tone-info-fg`,children:x}),U&&!z&&(0,j.jsxs)(`details`,{className:`rounded border p-1.5`,children:[(0,j.jsx)(`summary`,{className:`cursor-pointer font-medium`,children:`Review bundled update`}),(0,j.jsxs)(`div`,{className:`mt-1.5 space-y-1.5`,children:[(0,j.jsx)(P,{from:N.template,to:N.bundledTemplate,label:`Live version ${N.version} → bundled update`}),(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[!f&&(0,j.jsx)(o,{type:`button`,size:`sm`,disabled:T||V,title:W,onClick:()=>void M(`adopt`),children:`Adopt bundled update`}),W&&!f&&(0,j.jsxs)(`span`,{className:`text-muted-foreground`,children:[W,`.`]})]})]})]}),(0,j.jsxs)(`label`,{className:`block`,children:[n,(0,j.jsx)(`textarea`,{className:`mt-1 w-full rounded border bg-background p-2 font-mono`,rows:8,readOnly:B,value:h??N.template,onChange:e=>g(e.target.value),disabled:T})]}),V&&(0,j.jsxs)(`details`,{className:`rounded border p-1.5`,children:[(0,j.jsx)(`summary`,{className:`cursor-pointer`,children:`Review my changes`}),(0,j.jsx)(`div`,{className:`mt-1.5`,children:(0,j.jsx)(P,{from:N.template,to:h,label:`Version ${N.version} → my edits`})})]}),!B&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`label`,{className:`block`,children:[`Reason (optional)`,(0,j.jsx)(`input`,{className:`mt-1 w-full rounded border bg-background p-1`,value:_,maxLength:2e3,onChange:e=>v(e.target.value)})]}),(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,j.jsx)(o,{type:`button`,size:`sm`,disabled:T||!V,onClick:()=>void M(`edit`),children:r}),(0,j.jsx)(o,{type:`button`,size:`sm`,variant:`outline`,disabled:T||!V,onClick:()=>{g(void 0),S(``)},children:`Discard changes`})]})]}),(0,j.jsxs)(`details`,{className:`rounded border p-1.5`,children:[(0,j.jsx)(`summary`,{className:`cursor-pointer font-medium`,children:F?`History (${F.length}${F.length>=100?`+, latest 100`:``})`:`History unavailable`}),(0,j.jsx)(`ul`,{className:`mt-1.5 space-y-1.5`,children:(F??[]).map(e=>{let t=e.version===N.version,n=`v${e.version}`;return(0,j.jsxs)(`li`,{className:`min-w-0 space-y-1 rounded border p-1.5`,children:[(0,j.jsxs)(`p`,{className:`break-words`,children:[`Version `,e.version,t?` (current)`:``,` · `,e.actor,` · `,L(e.createdAt),e.reason?` · ${e.reason}`:``]}),!t&&(0,j.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,j.jsxs)(o,{type:`button`,size:`xs`,variant:`outline`,"aria-pressed":D===n,disabled:T,onClick:()=>O(D===n?``:n),children:[`Compare version `,e.version,` with current`]}),!B&&(0,j.jsxs)(o,{type:`button`,size:`xs`,variant:`outline`,disabled:T||V,title:W,onClick:()=>void M(`restore`,e.version),children:[`Restore version `,e.version]})]}),D===n&&(0,j.jsx)(P,{from:e.template,to:N.template,label:`Version ${e.version} → current version ${N.version}`})]},e.version)})})]})]})}export{B as n,z as t};
8
- //# sourceMappingURL=versioned-prompt-editor-BmED5DnJ.js.map
8
+ //# sourceMappingURL=versioned-prompt-editor-BkTi7eim.js.map
@@ -1,2 +1,2 @@
1
- import{u as e}from"./dist-DeW2Y1R5.js";import{t,wt as n}from"./store-DcClXLH0.js";import{Ct as r,et as i,f as a}from"./display-BrKWFGJz.js";import{t as o}from"./scroll-area-CIN4KQse.js";import{t as s}from"./calendar-QJjoZ1JU.js";import{t as c}from"./circle-check-CkUkN96J.js";import{t as l}from"./list-checks-CwnS3hly.js";import{t as u}from"./x-Bge17hWJ.js";import{t as d}from"./button-Do6Z3vvn.js";import{t as f}from"./badge-DqJRtj_p.js";import{t as p}from"./agent-name-DKbiIhBo.js";import{m,o as h}from"./use-selectors-BZa25xEB.js";import{r as g,t as _}from"./card-C4QJ4hCW.js";var v=e(),y={open:`bg-tone-info/10 text-tone-info-fg border-tone-info/20`,blocked:`bg-tone-yellow/10 text-tone-yellow-fg border-tone-yellow/20`,claimed:`bg-tone-success/10 text-tone-success-fg border-tone-success/20`,in_progress:`bg-tone-purple/10 text-tone-purple-fg border-tone-purple/20`,validating:`bg-tone-warning/10 text-tone-warning-fg border-tone-warning/20`};function b(){let e=n(),r=t(e=>e.agentsById),i=t(e=>e.compose),s=t(e=>e.set),c=t(e=>e.doClaimTask),u=t(e=>e.doClaim),d=t(e=>e.openTaskEvents),g=t(e=>e.showError),_=t(e=>e.openConfirm),y=t(e=>e.doDeleteMessage),b=t(e=>e.doUpdateTaskStatus),S=h(),C=m(),w=C.filter(e=>e.claimable).length;function T(e){if(!i.from){g(`Validation`,`Select a "Claim as" agent first.`);return}e.sourceType===`task`&&e.task?c(e.task.id):e.sourceType===`message`&&e.message&&u(e.message.id)}function E(e){let t=e.title||(e.sourceType===`task`?`T${e.id}`:`Message #${e.id}`);_(`Cancel Item`,`Cancel "${t}"? This cannot be undone.`,()=>{e.sourceType===`task`&&e.task?b(e.task,`canceled`):e.sourceType===`message`&&e.message&&y(e.message.id)})}function D(e){e.task&&d(e.task)}return(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(l,{className:`w-5 h-5 text-muted-foreground`}),(0,v.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Work Queue`}),w>0&&(0,v.jsxs)(f,{className:`bg-tone-orange/20 text-tone-orange-fg border-tone-orange/30 border`,children:[w,` claimable`]})]}),(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(`label`,{className:`text-xs text-muted-foreground shrink-0`,children:`Claim as`}),(0,v.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:i.from,onChange:e=>s({compose:{...i,from:e.target.value}}),children:[(0,v.jsx)(`option`,{value:``,children:`Select agent...`}),S.map(e=>(0,v.jsx)(`option`,{value:e.id,children:a(e)},e.id))]})]})]}),(0,v.jsx)(o,{className:`h-[calc(100dvh-11rem)]`,children:(0,v.jsxs)(`div`,{className:`space-y-2 pr-2`,children:[C.length===0&&(0,v.jsx)(`div`,{className:`text-center text-muted-foreground py-16 text-sm`,children:`Work queue is empty`}),C.map(t=>(0,v.jsx)(x,{item:t,now:e,agentName:e=>(0,v.jsx)(p,{agent:r[e],fallback:e.slice(-10)}),onClaim:()=>T(t),onCancel:()=>E(t),onEvents:t.task?()=>D(t):void 0},t.id))]})})]})}function x({item:e,now:t,agentName:n,onClaim:a,onCancel:o,onEvents:l}){let p=r[e.severity]||r.info,m=y[e.status]||`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`;return(0,v.jsx)(_,{className:e.claimable?`ring-1 ring-tone-orange/30`:``,children:(0,v.jsx)(g,{className:`p-3`,children:(0,v.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,v.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap mb-1`,children:[(0,v.jsx)(`span`,{className:`font-medium text-sm truncate`,children:e.title}),(0,v.jsx)(f,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${p}`,children:e.severity}),(0,v.jsx)(f,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${m}`,children:e.status}),e.sourceType===`message`&&(0,v.jsx)(f,{variant:`outline`,className:`text-xs px-1.5 py-0 border border-tone-neutral/20 text-tone-neutral-fg`,children:`msg`})]}),e.body&&(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-2 mb-2`,children:e.body}),(0,v.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-muted-foreground flex-wrap`,children:[e.owner&&(0,v.jsxs)(`span`,{title:`Owner`,children:[(0,v.jsx)(c,{className:`w-3 h-3 inline mr-1`}),n(e.owner)]}),e.source&&(0,v.jsx)(`span`,{className:`font-mono`,children:e.source}),(0,v.jsxs)(`span`,{title:String(e.updatedAt),children:[(0,v.jsx)(s,{className:`w-3 h-3 inline mr-1`}),i(t,e.updatedAt)]})]})]}),(0,v.jsxs)(`div`,{className:`flex flex-col gap-1 shrink-0`,children:[e.claimable&&(0,v.jsxs)(d,{size:`sm`,className:`h-7 text-xs bg-tone-orange-fg hover:bg-tone-orange-fg/90 text-background`,onClick:a,children:[(0,v.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),` Claim`]}),l&&(0,v.jsx)(d,{size:`sm`,variant:`outline`,className:`h-7 text-xs`,onClick:l,children:`Events`}),(0,v.jsxs)(d,{size:`sm`,variant:`outline`,className:`h-7 text-xs text-tone-danger-fg hover:text-tone-danger-fg hover:bg-tone-danger/10 border-tone-danger/20`,onClick:o,children:[(0,v.jsx)(u,{className:`w-3.5 h-3.5 mr-1`}),` Cancel`]})]})]})})})}export{b as WorkQueueView};
2
- //# sourceMappingURL=work-queue-CSvpuNLz.js.map
1
+ import{u as e}from"./dist-DeW2Y1R5.js";import{t,wt as n}from"./store-BgDALGIX.js";import{Ct as r,et as i,f as a}from"./display-BemJG1f_.js";import{t as o}from"./scroll-area-CIN4KQse.js";import{t as s}from"./calendar-QJjoZ1JU.js";import{t as c}from"./circle-check-CkUkN96J.js";import{t as l}from"./list-checks-CwnS3hly.js";import{t as u}from"./x-Bge17hWJ.js";import{t as d}from"./button-Do6Z3vvn.js";import{t as f}from"./badge-DqJRtj_p.js";import{t as p}from"./agent-name-C_7F4DFR.js";import{m,o as h}from"./use-selectors-0X_UZkk-.js";import{r as g,t as _}from"./card-C4QJ4hCW.js";var v=e(),y={open:`bg-tone-info/10 text-tone-info-fg border-tone-info/20`,blocked:`bg-tone-yellow/10 text-tone-yellow-fg border-tone-yellow/20`,claimed:`bg-tone-success/10 text-tone-success-fg border-tone-success/20`,in_progress:`bg-tone-purple/10 text-tone-purple-fg border-tone-purple/20`,validating:`bg-tone-warning/10 text-tone-warning-fg border-tone-warning/20`};function b(){let e=n(),r=t(e=>e.agentsById),i=t(e=>e.compose),s=t(e=>e.set),c=t(e=>e.doClaimTask),u=t(e=>e.doClaim),d=t(e=>e.openTaskEvents),g=t(e=>e.showError),_=t(e=>e.openConfirm),y=t(e=>e.doDeleteMessage),b=t(e=>e.doUpdateTaskStatus),S=h(),C=m(),w=C.filter(e=>e.claimable).length;function T(e){if(!i.from){g(`Validation`,`Select a "Claim as" agent first.`);return}e.sourceType===`task`&&e.task?c(e.task.id):e.sourceType===`message`&&e.message&&u(e.message.id)}function E(e){let t=e.title||(e.sourceType===`task`?`T${e.id}`:`Message #${e.id}`);_(`Cancel Item`,`Cancel "${t}"? This cannot be undone.`,()=>{e.sourceType===`task`&&e.task?b(e.task,`canceled`):e.sourceType===`message`&&e.message&&y(e.message.id)})}function D(e){e.task&&d(e.task)}return(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(l,{className:`w-5 h-5 text-muted-foreground`}),(0,v.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Work Queue`}),w>0&&(0,v.jsxs)(f,{className:`bg-tone-orange/20 text-tone-orange-fg border-tone-orange/30 border`,children:[w,` claimable`]})]}),(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(`label`,{className:`text-xs text-muted-foreground shrink-0`,children:`Claim as`}),(0,v.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:i.from,onChange:e=>s({compose:{...i,from:e.target.value}}),children:[(0,v.jsx)(`option`,{value:``,children:`Select agent...`}),S.map(e=>(0,v.jsx)(`option`,{value:e.id,children:a(e)},e.id))]})]})]}),(0,v.jsx)(o,{className:`h-[calc(100dvh-11rem)]`,children:(0,v.jsxs)(`div`,{className:`space-y-2 pr-2`,children:[C.length===0&&(0,v.jsx)(`div`,{className:`text-center text-muted-foreground py-16 text-sm`,children:`Work queue is empty`}),C.map(t=>(0,v.jsx)(x,{item:t,now:e,agentName:e=>(0,v.jsx)(p,{agent:r[e],fallback:e.slice(-10)}),onClaim:()=>T(t),onCancel:()=>E(t),onEvents:t.task?()=>D(t):void 0},t.id))]})})]})}function x({item:e,now:t,agentName:n,onClaim:a,onCancel:o,onEvents:l}){let p=r[e.severity]||r.info,m=y[e.status]||`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`;return(0,v.jsx)(_,{className:e.claimable?`ring-1 ring-tone-orange/30`:``,children:(0,v.jsx)(g,{className:`p-3`,children:(0,v.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,v.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap mb-1`,children:[(0,v.jsx)(`span`,{className:`font-medium text-sm truncate`,children:e.title}),(0,v.jsx)(f,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${p}`,children:e.severity}),(0,v.jsx)(f,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${m}`,children:e.status}),e.sourceType===`message`&&(0,v.jsx)(f,{variant:`outline`,className:`text-xs px-1.5 py-0 border border-tone-neutral/20 text-tone-neutral-fg`,children:`msg`})]}),e.body&&(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-2 mb-2`,children:e.body}),(0,v.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-muted-foreground flex-wrap`,children:[e.owner&&(0,v.jsxs)(`span`,{title:`Owner`,children:[(0,v.jsx)(c,{className:`w-3 h-3 inline mr-1`}),n(e.owner)]}),e.source&&(0,v.jsx)(`span`,{className:`font-mono`,children:e.source}),(0,v.jsxs)(`span`,{title:String(e.updatedAt),children:[(0,v.jsx)(s,{className:`w-3 h-3 inline mr-1`}),i(t,e.updatedAt)]})]})]}),(0,v.jsxs)(`div`,{className:`flex flex-col gap-1 shrink-0`,children:[e.claimable&&(0,v.jsxs)(d,{size:`sm`,className:`h-7 text-xs bg-tone-orange-fg hover:bg-tone-orange-fg/90 text-background`,onClick:a,children:[(0,v.jsx)(c,{className:`w-3.5 h-3.5 mr-1`}),` Claim`]}),l&&(0,v.jsx)(d,{size:`sm`,variant:`outline`,className:`h-7 text-xs`,onClick:l,children:`Events`}),(0,v.jsxs)(d,{size:`sm`,variant:`outline`,className:`h-7 text-xs text-tone-danger-fg hover:text-tone-danger-fg hover:bg-tone-danger/10 border-tone-danger/20`,onClick:o,children:[(0,v.jsx)(u,{className:`w-3.5 h-3.5 mr-1`}),` Cancel`]})]})]})})})}export{b as WorkQueueView};
2
+ //# sourceMappingURL=work-queue-DDOLEyKo.js.map
@@ -1,2 +1,2 @@
1
- import{n as e,o as t,u as n}from"./dist-DeW2Y1R5.js";import{i as r,t as i}from"./store-DcClXLH0.js";var a=e(`route`,[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]),o=n();function s({workflow:e,step:n,className:r=`h-3 w-3`,corner:i=!1}){let s=e?`Workflow agent: ${e}${n?`, step ${n}`:``}`:`Workflow agent`;return(0,o.jsx)(`span`,{"data-testid":`workflow-marker`,role:`img`,"aria-label":s,title:s,className:t(`wf-marker inline-grid shrink-0 place-items-center`,i&&`absolute -right-1.5 -top-1.5 rounded-full bg-background p-px ring-1 ring-border`),children:(0,o.jsx)(a,{className:r,"aria-hidden":!0})})}function c({agentId:e,className:t,corner:n}){let r=i(t=>t.workflowLiveIndex.byAgent[e]);return(0,o.jsx)(s,{workflow:r?.workflow,step:r?.step,className:t,corner:n})}function l({agent:e,className:t,corner:n}){return!e||!r(e)?null:(0,o.jsx)(c,{agentId:e.id,className:t,corner:n})}export{s as n,a as r,l as t};
2
- //# sourceMappingURL=workflow-marker-DAZcj5qt.js.map
1
+ import{n as e,o as t,u as n}from"./dist-DeW2Y1R5.js";import{i as r,t as i}from"./store-BgDALGIX.js";var a=e(`route`,[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]),o=n();function s({workflow:e,step:n,className:r=`h-3 w-3`,corner:i=!1}){let s=e?`Workflow agent: ${e}${n?`, step ${n}`:``}`:`Workflow agent`;return(0,o.jsx)(`span`,{"data-testid":`workflow-marker`,role:`img`,"aria-label":s,title:s,className:t(`wf-marker inline-grid shrink-0 place-items-center`,i&&`absolute -right-1.5 -top-1.5 rounded-full bg-background p-px ring-1 ring-border`),children:(0,o.jsx)(a,{className:r,"aria-hidden":!0})})}function c({agentId:e,className:t,corner:n}){let r=i(t=>t.workflowLiveIndex.byAgent[e]);return(0,o.jsx)(s,{workflow:r?.workflow,step:r?.step,className:t,corner:n})}function l({agent:e,className:t,corner:n}){return!e||!r(e)?null:(0,o.jsx)(c,{agentId:e.id,className:t,corner:n})}export{s as n,a as r,l as t};
2
+ //# sourceMappingURL=workflow-marker-CzOsB8BM.js.map
@@ -1,6 +1,6 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{t as i}from"./store-DcClXLH0.js";import"./provider-display-DsuWMvVL.js";import{h as a}from"./display-BrKWFGJz.js";import{i as o,r as s,t as c}from"./file-code-corner-CXhIR1vB.js";import{a as l,i as u,n as d,o as f,r as p,s as m,t as h}from"./dialog-uuJ9_geR.js";import{t as ee}from"./switch-DuCA7mrB.js";import{i as g,r as _,t as v}from"./tabs-jZgNvNHr.js";import{t as y}from"./arrow-right-vFsRqG8V.js";import{t as b}from"./git-commit-horizontal-DS1pJ_SS.js";import{n as x,r as S}from"./workflow-marker-DAZcj5qt.js";import{t as C}from"./button-Do6Z3vvn.js";import{t as w}from"./copy-button-CjOj4HEf.js";import{t as T}from"./textarea-hs6Mpyfl.js";import{n as E,r as D}from"./shipping-stats-BiMTsA4A.js";import{a as O,i as te,n as k,r as A,t as j}from"./run-card-CpKqRbhg.js";import{n as M,r as ne}from"./stats-DyUBKyWI.js";var N=r(),P={running:`Running`,done:`Done`,escalated:`Escalated`,cancelled:`Cancelled`,failed:`Failed`};function F({route:e}){return(0,N.jsxs)(`li`,{className:`flex flex-wrap items-center gap-1 text-xs`,children:[(0,N.jsx)(`span`,{className:`rounded bg-muted px-1.5 font-mono text-[11px]`,children:e.on}),(0,N.jsx)(y,{className:`h-3 w-3 shrink-0 text-muted-foreground`,"aria-label":`goes to`}),(0,N.jsx)(`span`,{className:`font-medium`,children:e.to}),e.condition!==void 0&&(0,N.jsxs)(`code`,{children:[`if `,String(e.condition)]}),e.max!==void 0&&(0,N.jsxs)(`span`,{className:`text-muted-foreground`,children:[`at most `,e.max===1?`once`:`${e.max} times`,`, then `,e.else]})]})}function I({step:e}){let t=[...e.decision?[`wait for operator`,...e.decision.deadlineMs?[`deadline ${D(e.decision.deadlineMs)}`]:[]]:e.script?[`host ${e.script.host}`,...e.script.everyMs?[`poll every ${D(e.script.everyMs)}`]:[],`time limit ${D(e.script.timeoutMs)}`]:[e.task===`input`?`on the run’s Task`:`on a new Task`],e.gate&&`verdict gate ${e.gate}`,e.crossProvider&&`another provider than ${e.crossProvider}`,e.reap&&`reap ${e.reap}`,e.timeoutMs!==void 0&&`time limit ${D(e.timeoutMs)}`].filter(Boolean);return(0,N.jsxs)(`li`,{"data-testid":`workflow-def-step-${e.name}`,className:`grid min-w-0 gap-1.5 border-t border-border/60 py-2 first:border-t-0 sm:grid-cols-[minmax(0,14rem)_1fr] sm:gap-4`,children:[(0,N.jsxs)(`div`,{className:`min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,N.jsx)(`span`,{className:`text-sm font-semibold`,children:e.name}),(0,N.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.script?`script`:`role ${e.role}`})]}),(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t.join(` · `)}),e.script&&(0,N.jsx)(`code`,{className:`block break-all text-xs`,children:e.script.run})]}),(0,N.jsx)(`ul`,{"aria-label":`${e.name} routes`,className:`space-y-1`,children:e.routes.map((e,t)=>(0,N.jsx)(F,{route:e},`${e.on}-${t}`))})]})}function re({def:e,now:t,project:n}){let r=[...!e.stations||e.stations.includes(`land`)?[`land${e.land?.timeoutMs===void 0?``:` (time limit ${D(e.land.timeoutMs)})`}`]:[],...e.ciMain?[`CI on main${e.ciMain.workflow?` (${e.ciMain.workflow})`:``}${e.ciMain.timeoutMs===void 0?``:`, up to ${D(e.ciMain.timeoutMs)}`}`]:[]];return(0,N.jsxs)(`article`,{"data-testid":`workflow-def-${e.workflow}`,"aria-label":`${e.workflow} definition`,className:`wf-run min-w-0 space-y-2 rounded-lg p-3`,children:[(0,N.jsxs)(`header`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,N.jsxs)(`h3`,{className:`flex min-w-0 max-w-full items-center gap-1.5 text-sm font-semibold`,children:[(0,N.jsx)(x,{workflow:e.workflow,className:`h-3.5 w-3.5 shrink-0`}),(0,N.jsx)(O,{text:e.workflow})]}),(0,N.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 text-xs text-muted-foreground`,title:`.agent-relay/workflows/${e.workflow}.yaml at ${e.ref} ${e.sha}`,children:[(0,N.jsx)(b,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,N.jsxs)(`span`,{className:`truncate`,children:[`.agent-relay/workflows/`,e.workflow,`.yaml`]}),(0,N.jsxs)(`span`,{className:`shrink-0 font-mono`,children:[e.ref,` `,e.sha.slice(0,7)]})]}),n&&(0,N.jsx)(O,{text:n,className:`text-xs text-muted-foreground`})]}),e.description&&(0,N.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.description}),(0,N.jsx)(`ol`,{"aria-label":`Steps`,children:e.steps.map(e=>(0,N.jsx)(I,{step:e},e.name))}),r.length>0&&(0,N.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`After the steps: `,r.join(`, then `),`.`]}),(0,N.jsxs)(`footer`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-border/60 pt-2 text-xs text-muted-foreground`,children:[(0,N.jsx)(`span`,{children:`Last run`}),(0,N.jsx)(`span`,{className:`font-medium text-foreground`,children:P[e.lastRun.status]}),(0,N.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,N.jsx)(A,{taskId:e.lastRun.taskId,title:e.lastRun.taskTitle})}),(0,N.jsxs)(`span`,{title:new Date(e.lastRun.at).toLocaleString(),children:[a(t,e.lastRun.at),` ago`]})]})]})}function ie({projectTitles:e}){let t=i(e=>e.workflowDefinitions),n=i(e=>e.workflowLoading),r=i(e=>e.workflowError),a=Date.now();return(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Each workflow a run used, as its newest run read the file from the repo’s default branch. Edit the file and land it to change the next run.`}),r&&(0,N.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:[`Could not load the workflows: `,r]}),!t&&n&&(0,N.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading the workflows…`}),t&&t.length===0&&(0,N.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-8 text-center text-sm text-muted-foreground`,children:`No workflow has run yet. A coordinator starts one with relay_workflow_start.`}),t&&t.map(t=>(0,N.jsx)(re,{def:t,now:a,project:t.lastRun.projectId?e.get(t.lastRun.projectId):void 0},t.workflow))]})}var L=e(n(),1);function R(e){let t=Math.max(0,...Array.from(e.matchAll(/`+/g),e=>e[0].length));return"`".repeat(Math.max(3,t+1))}function z(e){let t=R(e.text),n=e.path.endsWith(`.yaml`)?`yaml`:`markdown`;return`${e.path}\n\n${t}${n}\n${e.text}${e.text.endsWith(`
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{t as i}from"./store-BgDALGIX.js";import"./provider-display-bWwiuedV.js";import{h as a}from"./display-BemJG1f_.js";import{i as o,r as s,t as c}from"./file-code-corner-CXhIR1vB.js";import{a as l,i as u,n as d,o as f,r as p,s as m,t as h}from"./dialog-uuJ9_geR.js";import{t as ee}from"./switch-DuCA7mrB.js";import{i as g,r as _,t as v}from"./tabs-jZgNvNHr.js";import{t as y}from"./arrow-right-vFsRqG8V.js";import{t as b}from"./git-commit-horizontal-DS1pJ_SS.js";import{n as x,r as S}from"./workflow-marker-CzOsB8BM.js";import{t as C}from"./button-Do6Z3vvn.js";import{t as w}from"./copy-button-CjOj4HEf.js";import{t as T}from"./textarea-hs6Mpyfl.js";import{n as E,r as D}from"./shipping-stats-BiMTsA4A.js";import{a as O,i as te,n as k,r as A,t as j}from"./run-card-BCro-Odj.js";import{n as M,r as ne}from"./stats-CXiNjB9S.js";var N=r(),P={running:`Running`,done:`Done`,escalated:`Escalated`,cancelled:`Cancelled`,failed:`Failed`};function F({route:e}){return(0,N.jsxs)(`li`,{className:`flex flex-wrap items-center gap-1 text-xs`,children:[(0,N.jsx)(`span`,{className:`rounded bg-muted px-1.5 font-mono text-[11px]`,children:e.on}),(0,N.jsx)(y,{className:`h-3 w-3 shrink-0 text-muted-foreground`,"aria-label":`goes to`}),(0,N.jsx)(`span`,{className:`font-medium`,children:e.to}),e.condition!==void 0&&(0,N.jsxs)(`code`,{children:[`if `,String(e.condition)]}),e.max!==void 0&&(0,N.jsxs)(`span`,{className:`text-muted-foreground`,children:[`at most `,e.max===1?`once`:`${e.max} times`,`, then `,e.else]})]})}function I({step:e}){let t=[...e.decision?[`wait for operator`,...e.decision.deadlineMs?[`deadline ${D(e.decision.deadlineMs)}`]:[]]:e.script?[`host ${e.script.host}`,...e.script.everyMs?[`poll every ${D(e.script.everyMs)}`]:[],`time limit ${D(e.script.timeoutMs)}`]:[e.task===`input`?`on the run’s Task`:`on a new Task`],e.gate&&`verdict gate ${e.gate}`,e.crossProvider&&`another provider than ${e.crossProvider}`,e.reap&&`reap ${e.reap}`,e.timeoutMs!==void 0&&`time limit ${D(e.timeoutMs)}`].filter(Boolean);return(0,N.jsxs)(`li`,{"data-testid":`workflow-def-step-${e.name}`,className:`grid min-w-0 gap-1.5 border-t border-border/60 py-2 first:border-t-0 sm:grid-cols-[minmax(0,14rem)_1fr] sm:gap-4`,children:[(0,N.jsxs)(`div`,{className:`min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[(0,N.jsx)(`span`,{className:`text-sm font-semibold`,children:e.name}),(0,N.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.script?`script`:`role ${e.role}`})]}),(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t.join(` · `)}),e.script&&(0,N.jsx)(`code`,{className:`block break-all text-xs`,children:e.script.run})]}),(0,N.jsx)(`ul`,{"aria-label":`${e.name} routes`,className:`space-y-1`,children:e.routes.map((e,t)=>(0,N.jsx)(F,{route:e},`${e.on}-${t}`))})]})}function re({def:e,now:t,project:n}){let r=[...!e.stations||e.stations.includes(`land`)?[`land${e.land?.timeoutMs===void 0?``:` (time limit ${D(e.land.timeoutMs)})`}`]:[],...e.ciMain?[`CI on main${e.ciMain.workflow?` (${e.ciMain.workflow})`:``}${e.ciMain.timeoutMs===void 0?``:`, up to ${D(e.ciMain.timeoutMs)}`}`]:[]];return(0,N.jsxs)(`article`,{"data-testid":`workflow-def-${e.workflow}`,"aria-label":`${e.workflow} definition`,className:`wf-run min-w-0 space-y-2 rounded-lg p-3`,children:[(0,N.jsxs)(`header`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,N.jsxs)(`h3`,{className:`flex min-w-0 max-w-full items-center gap-1.5 text-sm font-semibold`,children:[(0,N.jsx)(x,{workflow:e.workflow,className:`h-3.5 w-3.5 shrink-0`}),(0,N.jsx)(O,{text:e.workflow})]}),(0,N.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 text-xs text-muted-foreground`,title:`.agent-relay/workflows/${e.workflow}.yaml at ${e.ref} ${e.sha}`,children:[(0,N.jsx)(b,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,N.jsxs)(`span`,{className:`truncate`,children:[`.agent-relay/workflows/`,e.workflow,`.yaml`]}),(0,N.jsxs)(`span`,{className:`shrink-0 font-mono`,children:[e.ref,` `,e.sha.slice(0,7)]})]}),n&&(0,N.jsx)(O,{text:n,className:`text-xs text-muted-foreground`})]}),e.description&&(0,N.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.description}),(0,N.jsx)(`ol`,{"aria-label":`Steps`,children:e.steps.map(e=>(0,N.jsx)(I,{step:e},e.name))}),r.length>0&&(0,N.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`After the steps: `,r.join(`, then `),`.`]}),(0,N.jsxs)(`footer`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-border/60 pt-2 text-xs text-muted-foreground`,children:[(0,N.jsx)(`span`,{children:`Last run`}),(0,N.jsx)(`span`,{className:`font-medium text-foreground`,children:P[e.lastRun.status]}),(0,N.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,N.jsx)(A,{taskId:e.lastRun.taskId,title:e.lastRun.taskTitle})}),(0,N.jsxs)(`span`,{title:new Date(e.lastRun.at).toLocaleString(),children:[a(t,e.lastRun.at),` ago`]})]})]})}function ie({projectTitles:e}){let t=i(e=>e.workflowDefinitions),n=i(e=>e.workflowLoading),r=i(e=>e.workflowError),a=Date.now();return(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Each workflow a run used, as its newest run read the file from the repo’s default branch. Edit the file and land it to change the next run.`}),r&&(0,N.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:[`Could not load the workflows: `,r]}),!t&&n&&(0,N.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading the workflows…`}),t&&t.length===0&&(0,N.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-8 text-center text-sm text-muted-foreground`,children:`No workflow has run yet. A coordinator starts one with relay_workflow_start.`}),t&&t.map(t=>(0,N.jsx)(re,{def:t,now:a,project:t.lastRun.projectId?e.get(t.lastRun.projectId):void 0},t.workflow))]})}var L=e(n(),1);function R(e){let t=Math.max(0,...Array.from(e.matchAll(/`+/g),e=>e[0].length));return"`".repeat(Math.max(3,t+1))}function z(e){let t=R(e.text),n=e.path.endsWith(`.yaml`)?`yaml`:`markdown`;return`${e.path}\n\n${t}${n}\n${e.text}${e.text.endsWith(`
2
2
  `)?``:`
3
3
  `}${t}`}function B(e){let t=e.files.map(e=>e.path),n=t.length>1?`${t.slice(0,-1).join(`, `)} and ${t[t.length-1]}`:t[0]??``;return{title:`Override the bundled ${e.workflow} workflow in ${e.projectName}`,intent:`Land ${n} on the default branch with exactly the content in the context, so relay_workflow_start ${e.workflow} uses the project's files instead of Relay's bundled ones. Change nothing else.`,context:e.files.map(z).join(`
4
4
 
5
5
  `),doneWhen:`${n} landed on the default branch with this content.`,projectId:e.projectId}}var V={bundled:`Bundled`,project:`Project`,"project-overrides-bundled":`Overrides bundled`},H={bundled:`border-border text-muted-foreground`,project:`border-primary/40 text-primary`,"project-overrides-bundled":`border-tone-warning/50 text-tone-warning-fg`};function U({source:e}){return e?(0,N.jsx)(`span`,{"data-testid":`catalog-source`,className:t(`shrink-0 rounded-full border px-1.5 text-[11px] font-medium`,H[e]),children:V[e]}):(0,N.jsx)(`span`,{className:`rounded-full border border-destructive/50 px-1.5 text-[11px] text-destructive`,children:`Missing`})}function W(e,t){return[...new Set((e.steps??[]).map(e=>e.role))].flatMap(e=>t.filter(t=>t.name===e))}function G({label:e,text:t}){return(0,N.jsxs)(`section`,{className:`space-y-1`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,N.jsx)(`h4`,{className:`min-w-0 truncate font-mono text-xs text-muted-foreground`,children:e}),(0,N.jsx)(w,{value:t,label:`Copy ${e}`})]}),(0,N.jsx)(`pre`,{className:`max-h-[50vh] overflow-auto rounded-md border border-border bg-muted/40 p-3 font-mono text-xs leading-relaxed`,children:t})]})}function K({entry:e,roles:t,onClose:n}){return(0,N.jsx)(h,{open:!0,onOpenChange:e=>!e&&n(),children:(0,N.jsxs)(p,{className:`max-w-3xl`,children:[(0,N.jsxs)(f,{children:[(0,N.jsxs)(m,{className:`flex items-center gap-2`,children:[(0,N.jsx)(x,{workflow:e.name,className:`h-4 w-4`}),e.name,(0,N.jsx)(U,{source:e.source})]}),e.description&&(0,N.jsx)(u,{children:e.description})]}),(0,N.jsxs)(d,{className:`space-y-4`,children:[(0,N.jsx)(G,{label:e.source===`bundled`?`Bundled ${e.name}.yaml`:e.path,text:e.text}),e.bundledText!==void 0&&(0,N.jsx)(G,{label:`Bundled ${e.name}.yaml (overridden)`,text:e.bundledText}),t.map(e=>(0,N.jsxs)(`details`,{className:`rounded-md border border-border px-3 py-2`,children:[(0,N.jsxs)(`summary`,{className:`flex cursor-pointer flex-wrap items-center gap-2 text-sm`,children:[(0,N.jsxs)(`span`,{className:`font-medium`,children:[`Role `,e.name]}),(0,N.jsx)(U,{source:e.source}),e.description&&(0,N.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.description})]}),e.error&&(0,N.jsx)(`p`,{className:`mt-2 text-xs text-destructive`,children:e.error}),e.text!==void 0&&(0,N.jsx)(`div`,{className:`mt-2`,children:(0,N.jsx)(G,{label:e.source===`bundled`?`Bundled ${e.name}.md`:e.path,text:e.text})})]},e.name))]}),(0,N.jsx)(l,{children:(0,N.jsx)(C,{variant:`outline`,onClick:n,children:`Close`})})]})})}function q({entry:e,roles:t,project:n,onClose:r}){let a=i(e=>e.createWorkflowOverrideTask),o=t.filter(e=>e.source===`bundled`&&e.text!==void 0),[s,c]=(0,L.useState)(e.text),[g,_]=(0,L.useState)({}),[v,y]=(0,L.useState)(!1),[b,x]=(0,L.useState)(null);async function S(){y(!0);let t=[{path:e.path,text:s},...o.filter(e=>g[e.name]!==void 0).map(e=>({path:e.path,text:g[e.name]}))],r=await a(B({projectId:n.id,projectName:n.name,workflow:e.name,files:t}));y(!1),r!==null&&x(r)}return(0,N.jsx)(h,{open:!0,onOpenChange:e=>!e&&r(),children:(0,N.jsxs)(p,{className:`max-w-3xl`,children:[(0,N.jsxs)(f,{children:[(0,N.jsxs)(m,{children:[`Override `,e.name,` in `,n.name]}),(0,N.jsxs)(u,{children:[`Edit the copy of Relay's bundled workflow. The Task asks a builder to land it at `,(0,N.jsx)(`span`,{className:`font-mono`,children:e.path}),`; until it lands, runs keep using the bundled one.`]})]}),b===null?(0,N.jsxs)(d,{className:`space-y-4`,children:[(0,N.jsxs)(`label`,{className:`block space-y-1`,children:[(0,N.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.path}),(0,N.jsx)(T,{"aria-label":e.path,spellCheck:!1,className:`max-h-[50vh] font-mono text-xs md:text-xs`,value:s,onChange:e=>c(e.target.value)})]}),o.map(e=>{let t=g[e.name];return(0,N.jsxs)(`div`,{className:`space-y-1`,children:[(0,N.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,N.jsx)(ee,{checked:t!==void 0,onCheckedChange:t=>_(n=>{let r={...n};return t?r[e.name]=e.text:delete r[e.name],r})}),`Also override role `,e.name,` `,(0,N.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.path})]}),t!==void 0&&(0,N.jsx)(T,{"aria-label":e.path,spellCheck:!1,className:`max-h-[50vh] font-mono text-xs md:text-xs`,value:t,onChange:t=>_(n=>({...n,[e.name]:t.target.value}))})]},e.name)})]}):(0,N.jsxs)(d,{className:`space-y-2`,children:[(0,N.jsx)(`p`,{children:`Created the override Task. Dispatch it to land the files.`}),(0,N.jsx)(`div`,{className:`text-sm`,children:(0,N.jsx)(A,{taskId:b,title:`Override the bundled ${e.name} workflow in ${n.name}`})})]}),(0,N.jsx)(l,{children:b===null?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(w,{value:s,label:`Copy YAML`,showText:!0,variant:`outline`}),(0,N.jsx)(C,{disabled:v||!s.trim(),onClick:()=>void S(),children:`Create override Task`})]}):(0,N.jsx)(C,{variant:`outline`,onClick:r,children:`Close`})})]})})}function J({entry:e,roles:t,canOverride:n,onView:r,onOverride:i}){let a=new Map(t.map(e=>[e.name,e]));return(0,N.jsxs)(`article`,{"data-testid":`workflow-catalog-${e.name}`,"aria-label":`${e.name} workflow`,className:`wf-run min-w-0 space-y-2 rounded-lg p-3`,children:[(0,N.jsxs)(`header`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,N.jsxs)(`h3`,{className:`flex min-w-0 max-w-full items-center gap-1.5 text-sm font-semibold`,children:[(0,N.jsx)(x,{workflow:e.name,className:`h-3.5 w-3.5 shrink-0`}),(0,N.jsx)(O,{text:e.name})]}),(0,N.jsx)(U,{source:e.source}),(0,N.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 text-xs text-muted-foreground`,title:e.source===`bundled`?`A project file at ${e.path} would override it`:e.path,children:[(0,N.jsx)(c,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,N.jsx)(`span`,{className:`truncate font-mono`,children:e.source===`bundled`?`shipped with Relay`:e.path})]})]}),e.description&&(0,N.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.description}),e.steps&&(0,N.jsx)(`ol`,{"aria-label":`Steps`,className:`flex flex-wrap gap-x-4 gap-y-1 text-xs`,children:e.steps.map(e=>(0,N.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,N.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,N.jsx)(`span`,{className:`text-muted-foreground`,children:[`script`,`workflow`].includes(e.role)?e.role:`role ${e.role}`}),![`script`,`workflow`].includes(e.role)&&(0,N.jsx)(U,{source:a.get(e.role)?.source})]},e.name))}),e.error&&(0,N.jsxs)(`p`,{className:`text-xs text-destructive`,children:[`A run would not start: `,e.error]}),(0,N.jsxs)(`footer`,{className:`flex flex-wrap items-center gap-2 border-t border-border/60 pt-2`,children:[(0,N.jsx)(C,{size:`sm`,variant:`outline`,onClick:r,children:`View`}),e.source===`bundled`&&(0,N.jsx)(C,{size:`sm`,variant:`outline`,disabled:!n,title:n?void 0:`Pick a project to override it in`,onClick:i,children:`Override`})]})]})}function ae({projectName:e}){let t=i(e=>e.workflowCatalog),n=i(e=>e.workflowCatalogLoading),r=i(e=>e.workflowCatalogError),a=i(e=>e.workflowProjectId),[o,s]=(0,L.useState)(null),c=t?.project,l=o&&t?.workflows.find(e=>e.name===o.name),u=!!(a&&c&&!c.error);return(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a?(0,N.jsxs)(N.Fragment,{children:[`The workflows relay_workflow_start can run in `,e??`this project`,`: Relay's bundled ones and the repo's own `,(0,N.jsx)(`span`,{className:`font-mono`,children:`.agent-relay/workflows/*.yaml`}),` on its default branch. A repo file of the same name overrides the bundled one, and so does a repo role file.`]}):`The workflows Relay ships. Pick a project to see its own workflows and which bundled ones it overrides.`}),r&&(0,N.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:[`Could not load the catalog: `,r]}),c?.error&&(0,N.jsxs)(`div`,{"data-testid":`catalog-project-error`,className:`rounded-md border border-tone-warning/40 bg-tone-warning/10 px-3 py-2 text-sm`,children:[`Could not read the project's workflow files: `,c.error,`. Only Relay's bundled workflows are shown.`]}),c?.sha&&(0,N.jsxs)(`p`,{className:`flex flex-wrap items-center gap-1 text-xs text-muted-foreground`,children:[(0,N.jsx)(b,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),`Read at `,(0,N.jsxs)(`span`,{className:`font-mono`,children:[c.ref,` `,c.sha.slice(0,7)]}),c.host&&(0,N.jsxs)(N.Fragment,{children:[` on `,c.host]}),c.fetchError&&(0,N.jsxs)(`span`,{className:`text-tone-warning-fg`,children:[` as last fetched: refreshing failed (`,c.fetchError,`)`]})]}),!t&&n&&(0,N.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading the catalog…`}),t?.workflows.map(e=>(0,N.jsx)(J,{entry:e,roles:t.roles,canOverride:u,onView:()=>s({kind:`view`,name:e.name}),onOverride:()=>s({kind:`override`,name:e.name})},e.name)),l&&o.kind===`view`&&(0,N.jsx)(K,{entry:l,roles:W(l,t?.roles??[]),onClose:()=>s(null)}),l&&o.kind===`override`&&a&&(0,N.jsx)(q,{entry:l,roles:W(l,t?.roles??[]),project:{id:a,name:e??a},onClose:()=>s(null)},l.name)]})}var oe=new Set([`fail`,`failed`,`blocked`,`exited`,`escalated`,`cancelled`,`CI fail`]),Y=e=>e===void 0?`—`:D(e),X=(e,t)=>e?`median of ${e.count}; mean ${D(e.avgMs)}, longest ${D(e.maxMs)}`:t;function se({duration:e}){return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`td`,{className:`whitespace-nowrap px-1.5 py-1 text-right tabular-nums`,children:Y(e?.p50Ms)}),(0,N.jsx)(`td`,{className:`whitespace-nowrap px-1.5 py-1 text-right tabular-nums text-muted-foreground`,children:Y(e?.avgMs)}),(0,N.jsx)(`td`,{className:`whitespace-nowrap py-1 pl-1.5 text-right tabular-nums text-muted-foreground`,children:Y(e?.maxMs)})]})}function ce({outcomes:e}){return(0,N.jsx)(`span`,{className:`flex flex-wrap gap-1`,children:Object.entries(e).sort((e,t)=>t[1]-e[1]).map(([e,n])=>(0,N.jsxs)(`span`,{className:t(`rounded px-1.5 text-[11px] tabular-nums`,oe.has(e)?`bg-destructive/10 text-destructive`:`bg-muted text-muted-foreground`),children:[e,` `,n]},e))})}function Z({stats:e}){let t=e.done+e.failed,n=Object.entries(e.failedAt).sort((e,t)=>t[1]-e[1]),r=e.steps.find(e=>e.step===te)?.duration;return(0,N.jsxs)(`article`,{"data-testid":`workflow-stats-${e.workflow}`,"aria-label":`${e.workflow} statistics`,className:`wf-run min-w-0 space-y-3 rounded-lg p-3`,children:[(0,N.jsxs)(`header`,{className:`flex flex-wrap items-baseline gap-x-3 gap-y-1`,children:[(0,N.jsxs)(`h3`,{className:`flex min-w-0 max-w-full items-center gap-1.5 text-sm font-semibold`,children:[(0,N.jsx)(x,{workflow:e.workflow,className:`h-3.5 w-3.5 shrink-0`}),(0,N.jsx)(O,{text:e.workflow})]}),(0,N.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.runs,` `,e.runs===1?`run`:`runs`,e.running?`, ${e.running} running`:``]})]}),(0,N.jsxs)(`div`,{className:`grid grid-cols-6 gap-2`,children:[(0,N.jsx)(M,{className:`col-span-2`,label:`Landed`,value:String(e.done),hint:t?`${E(e.done/t)} of finished runs`:void 0}),(0,N.jsx)(M,{className:`col-span-2`,label:`Failed`,value:String(e.failed),hint:`${e.escalated} escalated, ${e.cancelled} cancelled`}),(0,N.jsx)(M,{className:`col-span-2`,label:`Fix rounds`,value:String(e.fixRounds),hint:`Most rounds in one run: ${e.maxRound}`}),(0,N.jsx)(M,{className:`col-span-3`,label:`Time to merge`,value:Y(e.timeToMerge?.p50Ms),hint:X(e.timeToMerge,`No run merged in this window`)}),(0,N.jsx)(M,{className:`col-span-3`,label:`CI after merge`,value:Y(r?.p50Ms),hint:X(r,`No run waited for CI on main in this window`)})]}),e.steps.length>0&&(0,N.jsx)(`div`,{className:`overflow-x-auto`,children:(0,N.jsxs)(`table`,{className:`w-full text-sm`,"aria-label":`${e.workflow} steps`,children:[(0,N.jsx)(`thead`,{children:(0,N.jsxs)(`tr`,{className:`whitespace-nowrap text-[11px] text-muted-foreground`,children:[(0,N.jsx)(`th`,{className:`text-left font-normal`,children:`Step`}),(0,N.jsx)(`th`,{className:`px-1.5 text-left font-normal`,children:`Outcomes`}),(0,N.jsx)(`th`,{className:`px-1.5 text-right font-normal`,title:`Median time from the step's start to its result`,children:`p50`}),(0,N.jsx)(`th`,{className:`px-1.5 text-right font-normal`,children:`Mean`}),(0,N.jsx)(`th`,{className:`pl-1.5 text-right font-normal`,children:`Longest`})]})}),(0,N.jsx)(`tbody`,{children:e.steps.map(e=>(0,N.jsxs)(`tr`,{"data-testid":`workflow-step-stats-${e.step}`,className:`border-t border-border/60 first:border-t-0`,children:[(0,N.jsx)(`th`,{scope:`row`,className:`whitespace-nowrap py-1 pr-2 text-left font-medium`,children:e.step}),(0,N.jsx)(`td`,{className:`px-1.5 py-1`,children:(0,N.jsx)(ce,{outcomes:e.outcomes})}),(0,N.jsx)(se,{duration:e.duration})]},e.step))})]})}),n.length>0&&(0,N.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Failed runs stopped at `,n.map(([e,t])=>`${e} (${t})`).join(`, `),`.`]})]})}function le({failures:e,total:t,now:n,projectTitles:r}){return e.length?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`ul`,{"aria-label":`Failed runs`,className:`divide-y divide-border rounded-lg border border-border bg-card`,children:e.map(e=>(0,N.jsxs)(`li`,{"data-testid":`workflow-failure-${e.runId}`,className:`wf-ledger flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-2 text-sm`,children:[(0,N.jsx)(`span`,{className:`ship-lamp h-2 w-2 shrink-0 rounded-full`,"data-status":e.status===`escalated`?`failing`:`unknown`,"aria-hidden":!0}),(0,N.jsx)(O,{text:e.workflow,className:`font-medium sm:w-28 sm:shrink-0`}),(0,N.jsx)(`div`,{className:`order-last w-full min-w-0 pl-5 sm:order-none sm:w-auto sm:flex-1 sm:pl-0`,children:(0,N.jsx)(A,{taskId:e.taskId,title:e.taskTitle})}),(0,N.jsxs)(`span`,{className:`ml-auto shrink-0 font-medium sm:ml-0`,children:[e.status===`escalated`?`Escalated`:`Cancelled`,` at `,e.step]}),(0,N.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[`round `,e.round]}),(0,N.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,title:new Date(e.at).toLocaleString(),children:[a(n,e.at),` ago`]}),e.projectId&&r.get(e.projectId)&&(0,N.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:r.get(e.projectId)}),e.reason&&(0,N.jsx)(O,{text:e.reason,className:`order-last w-full pl-5 text-xs text-muted-foreground`})]},e.runId))}),t>e.length&&(0,N.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`Showing the newest `,e.length,` of `,t,` failed runs.`]})]}):(0,N.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-4 text-center text-sm text-muted-foreground`,children:`No workflow run failed in this window.`})}var Q=e=>E(e.share??null);function $({label:e,rows:t}){return(0,N.jsx)(`div`,{className:`min-w-0 overflow-x-auto`,children:(0,N.jsxs)(`table`,{className:`w-full text-sm`,"aria-label":`Adoption by ${e}`,children:[(0,N.jsx)(`thead`,{children:(0,N.jsxs)(`tr`,{className:`whitespace-nowrap text-[11px] text-muted-foreground`,children:[(0,N.jsx)(`th`,{className:`text-left font-normal`,children:e===`project`?`Project`:`Coordinator`}),(0,N.jsx)(`th`,{className:`px-1.5 text-right font-normal`,children:`Landed`}),(0,N.jsx)(`th`,{className:`px-1.5 text-right font-normal`,children:`Workflow`}),(0,N.jsx)(`th`,{className:`pl-1.5 text-left font-normal`,children:`Share`})]})}),(0,N.jsx)(`tbody`,{children:t.map(t=>(0,N.jsxs)(`tr`,{"data-testid":`workflow-adoption-${e}-${t.key||`none`}`,className:`border-t border-border/60 first:border-t-0`,children:[(0,N.jsx)(`th`,{scope:`row`,className:`max-w-0 py-1 pr-2 text-left font-medium`,title:t.title,children:(0,N.jsx)(O,{text:t.name})}),(0,N.jsx)(`td`,{className:`px-1.5 py-1 text-right tabular-nums`,children:t.landed}),(0,N.jsx)(`td`,{className:`px-1.5 py-1 text-right tabular-nums`,children:t.viaWorkflow}),(0,N.jsx)(`td`,{className:`w-28 py-1 pl-1.5`,children:(0,N.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,N.jsx)(`span`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-muted`,"aria-hidden":!0,children:(0,N.jsx)(`span`,{className:`block h-full rounded-full bg-primary`,style:{width:`${Math.round((t.share??0)*100)}%`}})}),(0,N.jsx)(`span`,{className:`w-9 text-right text-xs tabular-nums`,children:Q(t)})]})})]},t.key))})]})})}function ue({adoption:e,projectTitles:t}){let n=e.byProject.map(e=>({...e,key:e.projectId??``,name:e.projectId&&t.get(e.projectId)||e.repo||e.projectId||`No project`})),r=e.byCoordinator.map(e=>({...e,key:e.coordinator??``,name:e.label||e.coordinator||`Unattributed`,title:e.coordinator}));return(0,N.jsxs)(`section`,{"aria-labelledby":`wf-adoption`,"data-testid":`workflow-adoption`,className:`space-y-2`,children:[(0,N.jsx)(`h3`,{id:`wf-adoption`,className:`text-sm font-semibold`,children:`Adoption`}),(0,N.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,N.jsx)(M,{label:`Through a workflow`,value:Q(e),hint:`${e.viaWorkflow} of ${e.landed} landed Tasks that land code`}),(0,N.jsx)(M,{label:`Workflow lands`,value:String(e.viaWorkflow)}),(0,N.jsx)(M,{label:`By hand`,value:String(e.byHand)})]}),e.landed===0?(0,N.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-4 text-center text-sm text-muted-foreground`,children:`No Task that lands code landed in this window.`}):(0,N.jsxs)(`div`,{className:`grid gap-3 lg:grid-cols-2`,children:[(0,N.jsx)($,{label:`project`,rows:n}),(0,N.jsx)($,{label:`coordinator`,rows:r})]}),e.truncated&&(0,N.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`More lands matched than one read takes; the share covers the newest ones.`}),(0,N.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`Tasks of type `,s.join(`, `),` that landed in this window, once each. A land counts as a workflow land when a workflow run on its Task started before it.`]})]})}function de({report:e,projectTitles:t}){let{totals:n}=e,r=Date.now();return(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsxs)(`div`,{"data-testid":`workflow-stats-totals`,className:`grid grid-cols-2 gap-2 sm:grid-cols-5`,children:[(0,N.jsx)(M,{label:`Runs`,value:String(n.runs)}),(0,N.jsx)(M,{label:`Running`,value:String(n.running)}),(0,N.jsx)(M,{label:`Landed`,value:String(n.done)}),(0,N.jsx)(M,{label:`Failed`,value:String(n.failed),hint:`${n.escalated} escalated, ${n.cancelled} cancelled`}),(0,N.jsx)(M,{label:`Fix rounds`,value:String(n.fixRounds),hint:`Loops back to an earlier step, such as a NO-GO sent back to the builder`})]}),e.truncated&&(0,N.jsx)(`div`,{role:`status`,className:`rounded-md border border-tone-warning/40 bg-tone-warning/10 px-3 py-2 text-sm`,children:`More runs matched than one read takes; the figures cover the newest ones.`}),e.adoption&&(0,N.jsx)(ue,{adoption:e.adoption,projectTitles:t}),e.workflows.length===0?(0,N.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-8 text-center text-sm text-muted-foreground`,children:`No workflow ran in this window.`}):(0,N.jsx)(`div`,{className:`grid gap-3 lg:grid-cols-2`,children:e.workflows.map(e=>(0,N.jsx)(Z,{stats:e},e.workflow))}),(0,N.jsxs)(`section`,{"aria-labelledby":`wf-failures`,className:`space-y-2`,children:[(0,N.jsxs)(`h3`,{id:`wf-failures`,className:`flex items-baseline gap-2 text-sm font-semibold`,children:[`Failed runs `,(0,N.jsx)(`span`,{className:`font-mono text-xs tabular-nums text-muted-foreground`,children:n.failed})]}),(0,N.jsx)(le,{failures:e.failures,total:n.failed,now:r,projectTitles:t})]}),(0,N.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Running runs, and runs that finished in this window. Step times run from the step's start to its result; land runs from the last step's result to the merge. Time to merge runs from the run's start to the merge; CI after merge is the wait for CI on main that follows it. Runs routed before step times were recorded count in outcomes but show no step time.`})]})}function fe({projectTitles:e}){let t=i(e=>e.workflowStats),n=i(e=>e.workflowLoading),r=i(e=>e.workflowError);return(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsx)(ne,{keys:o,active:i(e=>e.workflowStatsWindow),onChange:i(e=>e.setWorkflowStatsWindow)}),r&&(0,N.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:[`Could not load the statistics: `,r]}),!t&&n&&(0,N.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading the statistics…`}),t&&(0,N.jsx)(de,{report:t,projectTitles:e})]})}function pe(){let e=i(e=>e.workflowRuns),t=i(e=>e.workflowFocusedRun),n=i(e=>e.workflowRecent),r=i(e=>e.workflowProjects),a=i(e=>e.workflowProjectId),o=i(e=>e.setWorkflowProject),s=i(e=>e.workflowLoading),c=i(e=>e.workflowError),l=i(e=>e.agentsById),u=i(e=>e.workflowTab),d=i(e=>e.setWorkflowTab),f=Date.now(),p=new Map(r.map(e=>[e.id,e.title||e.slug])),m=!a,h=m?p:new Map;return(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(S,{className:`h-5 w-5 text-muted-foreground`}),(0,N.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Workflows`})]}),(0,N.jsx)(v,{value:u,onValueChange:e=>d(e),children:(0,N.jsxs)(_,{children:[(0,N.jsx)(g,{value:`runs`,className:`px-3`,children:`Live`}),(0,N.jsx)(g,{value:`stats`,className:`px-3`,children:`Statistics`}),(0,N.jsx)(g,{value:`definitions`,className:`px-3`,children:`Definitions`}),(0,N.jsx)(g,{value:`catalog`,className:`px-3`,children:`Catalog`})]})}),(0,N.jsxs)(`select`,{"aria-label":`Project`,className:`h-8 max-w-full min-w-0 rounded-md border border-border bg-background px-2 text-sm`,value:a,onChange:e=>o(e.target.value),children:[(0,N.jsx)(`option`,{value:``,children:`All projects`}),r.map(e=>(0,N.jsx)(`option`,{value:e.id,children:e.title||e.slug},e.id))]})]}),u===`stats`&&(0,N.jsx)(fe,{projectTitles:h}),u===`definitions`&&(0,N.jsx)(ie,{projectTitles:h}),u===`catalog`&&(0,N.jsx)(ae,{projectName:a?p.get(a):void 0}),u===`runs`&&t&&(0,N.jsx)(k,{run:t,agentsById:l,now:f}),u===`runs`&&c&&(0,N.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:[`Could not load workflow runs: `,c]}),u===`runs`&&!e&&s&&(0,N.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading workflow runs…`}),e&&(0,N.jsxs)(`section`,{"aria-labelledby":`wf-running`,className:`space-y-2`,children:[(0,N.jsxs)(`h3`,{id:`wf-running`,className:`flex items-baseline gap-2 text-sm font-semibold`,children:[`Running `,(0,N.jsx)(`span`,{"data-testid":`workflow-running-count`,className:`font-mono text-xs tabular-nums text-muted-foreground`,children:e.length})]}),e.length===0?(0,N.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-8 text-center text-sm text-muted-foreground`,children:`No workflow is running. A coordinator starts one with relay_workflow_start.`}):e.filter(e=>e.runId!==t?.runId).map(e=>(0,N.jsx)(k,{run:e,agentsById:l,now:f,project:m&&e.projectId?p.get(e.projectId):void 0},e.runId))]}),n&&(0,N.jsxs)(`section`,{"aria-labelledby":`wf-recent`,className:`space-y-2`,children:[(0,N.jsx)(`h3`,{id:`wf-recent`,className:`text-sm font-semibold`,children:`Recently finished`}),(0,N.jsx)(j,{runs:n,now:f,projectTitles:h})]})]})}export{pe as WorkflowsView};
6
- //# sourceMappingURL=workflows-DdmxRSyg.js.map
6
+ //# sourceMappingURL=workflows-DJilvmRM.js.map