@cardstack/boxel-cli 0.13.0-unstable.4 → 0.13.0-unstable.6

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 (1058) hide show
  1. package/bundled-realms/pretui/components/doc-report.gts +2 -2
  2. package/bundled-realms/pretui/components/doc-report.usage.gts +3 -3
  3. package/bundled-realms/pretui/components/form-field.md +1 -1
  4. package/bundled-realms/pretui/components/icon-button.md +1 -1
  5. package/bundled-realms/pretui/components/popup.md +1 -1
  6. package/bundled-realms/pretui/components/switch.gts +13 -0
  7. package/bundled-realms/pretui/components/switch.md +5 -3
  8. package/bundled-realms/pretui/components/theme-frame.gts +49 -22
  9. package/bundled-realms/pretui/components/tooltip.gts +141 -42
  10. package/bundled-realms/pretui/components/tooltip.md +10 -12
  11. package/bundled-realms/pretui/components/tooltip.usage.gts +3 -5
  12. package/bundled-realms/pretui/docs/structure.md +1 -1
  13. package/bundled-realms/pretui/internal/overlay.gts +4 -2
  14. package/bundled-realms/pretui/pretui-css.gts +6 -2
  15. package/bundled-realms/pretui/theme-scoped-css.gts +262 -0
  16. package/bundled-test-harness/assets/account-switch-failed-test-DwAZq6Sc.js +45 -0
  17. package/bundled-test-harness/assets/adapter-C_6pnsx1.js +2 -0
  18. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-zMYtJWBv.js +112 -0
  19. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-CwhAV-Ow.js +130 -0
  20. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DNgclkGJ.js +46 -0
  21. package/bundled-test-harness/assets/ai-assistant-test-DGYFiRTb.js +2223 -0
  22. package/bundled-test-harness/assets/ai-function-generation-test-Dj6WzKkh.js +1176 -0
  23. package/bundled-test-harness/assets/ai-module-creation-test-C4zhhxaZ.js +151 -0
  24. package/bundled-test-harness/assets/aibot-message-BShcljQ9.js +1312 -0
  25. package/bundled-test-harness/assets/app-DiEYqT6T.js +14146 -0
  26. package/bundled-test-harness/assets/apply-markdown-edit-test-CPhfeg1i.js +230 -0
  27. package/bundled-test-harness/assets/ask-user-picker-NVRkhKwt.js +370 -0
  28. package/bundled-test-harness/assets/ask-user-picker-test-SsZqFm9W.js +39 -0
  29. package/bundled-test-harness/assets/assistant-transcript-test-DesuBCIB.js +57 -0
  30. package/bundled-test-harness/assets/audio-metadata-extractor-test-8JM6oZXG.js +1176 -0
  31. package/bundled-test-harness/assets/authed-fetch-test-yPTMe-9V.js +73 -0
  32. package/bundled-test-harness/assets/avif-image-def-test-Kyknj908.js +187 -0
  33. package/bundled-test-harness/assets/basic-test-D9OrrMaq.js +139 -0
  34. package/bundled-test-harness/assets/binary-upload-dedupe-test-C0RFmHma.js +308 -0
  35. package/bundled-test-harness/assets/bot-registration-test-Bk2lTaCW.js +97 -0
  36. package/bundled-test-harness/assets/box-test-BbV9sMyU.js +50 -0
  37. package/bundled-test-harness/assets/brand-guide-attachments-test-z4wTsKbI.js +84 -0
  38. package/bundled-test-harness/assets/brand-guide-custom-css-test-BlSJE8xo.js +196 -0
  39. package/bundled-test-harness/assets/brand-guide-edit-test-DJ1OQ6IB.js +140 -0
  40. package/bundled-test-harness/assets/brand-logo-mark-field-test-ux7eetkO.js +86 -0
  41. package/bundled-test-harness/assets/broken-link-template-test-CqB3MWyw.js +192 -0
  42. package/bundled-test-harness/assets/bundled-base-modules-test-B2oNLZSJ.js +54 -0
  43. package/bundled-test-harness/assets/bundled-base-oracle-test-DelPfFjn.js +37 -0
  44. package/bundled-test-harness/assets/buried-stack-item-scroll-test-Ixsl1tS0.js +236 -0
  45. package/bundled-test-harness/assets/button-BvYQm_A1.js +141 -0
  46. package/bundled-test-harness/assets/bxl-cyclic-graph-test-p23WCLRW.js +47 -0
  47. package/bundled-test-harness/assets/bxl-expression-test-CVTQYT_C.js +250 -0
  48. package/bundled-test-harness/assets/bxl-indexing-test-D_A7X2sr.js +212 -0
  49. package/bundled-test-harness/assets/bxl-platform-module-test-Cltfyybp.js +71 -0
  50. package/bundled-test-harness/assets/can-invoke-test-CVfE1l1V.js +455 -0
  51. package/bundled-test-harness/assets/can-read-realm-test-CIz6WX_K.js +56 -0
  52. package/bundled-test-harness/assets/cancel-indexing-job-test-0LlrOgYK.js +69 -0
  53. package/bundled-test-harness/assets/capture-test-diHIWmh0.js +360 -0
  54. package/bundled-test-harness/assets/card-api-test-Ci9b0ghP.js +198 -0
  55. package/bundled-test-harness/assets/card-basics-test-RKQoQWZD.js +5364 -0
  56. package/bundled-test-harness/assets/card-chooser-paging-test-BN21sDpP.js +235 -0
  57. package/bundled-test-harness/assets/card-chooser-test-C9jDiIgM.js +393 -0
  58. package/bundled-test-harness/assets/card-context-search-results-KmkXJbmC.js +30 -0
  59. package/bundled-test-harness/assets/card-context-search-results-test-CpMr8OlX.js +184 -0
  60. package/bundled-test-harness/assets/card-def-field-def-relationships-test-D_30xak6.js +562 -0
  61. package/bundled-test-harness/assets/card-def-menu-items-test-ohuHc0b4.js +228 -0
  62. package/bundled-test-harness/assets/card-delete-test-BlsD9Xw4.js +466 -0
  63. package/bundled-test-harness/assets/card-error-3q1o3i0e.js +72 -0
  64. package/bundled-test-harness/assets/card-error-awaiting-index-test-DPgYKfbF.js +53 -0
  65. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-CVfeJyjt.js +219 -0
  66. package/bundled-test-harness/assets/card-playground-test-D-7bi4PQ.js +1491 -0
  67. package/bundled-test-harness/assets/card-prerender-DemTfK_a.js +12939 -0
  68. package/bundled-test-harness/assets/card-thunk-error-test-DCBh1vRT.js +48 -0
  69. package/bundled-test-harness/assets/card-type-service-test-DXPrfVYk.js +161 -0
  70. package/bundled-test-harness/assets/check-correctness-test-DjE7r1X2.js +1093 -0
  71. package/bundled-test-harness/assets/check-domain-availability-test-U10xSKbY.js +98 -0
  72. package/bundled-test-harness/assets/chip-0r_r9SC8.js +44 -0
  73. package/bundled-test-harness/assets/choreo-CZUXQKjf.js +1110 -0
  74. package/bundled-test-harness/assets/choreo-D8RcLuoq.js +2 -0
  75. package/bundled-test-harness/assets/choreo-feature-reel-test-DRGloCAJ.js +155 -0
  76. package/bundled-test-harness/assets/choreo-gallery-build-order-test-BR-r7gaw.js +436 -0
  77. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CWRLfcNT.js +399 -0
  78. package/bundled-test-harness/assets/choreo-gallery-cover-test-BT05gNKC.js +214 -0
  79. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-WJ7FmjYi.js +133 -0
  80. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-C-yxdVT_.js +42 -0
  81. package/bundled-test-harness/assets/choreo-gallery-drift-test-HX1mK3od.js +620 -0
  82. package/bundled-test-harness/assets/choreo-gallery-escort-test-jZEVk_V4.js +187 -0
  83. package/bundled-test-harness/assets/choreo-gallery-films-test-DLDQzsxb.js +140 -0
  84. package/bundled-test-harness/assets/choreo-gallery-filter-test-BJv8KEeP.js +46 -0
  85. package/bundled-test-harness/assets/choreo-gallery-fold-test-BssKC8A8.js +180 -0
  86. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-DS41eNNV.js +114 -0
  87. package/bundled-test-harness/assets/choreo-gallery-guides-test-DTj7yEKp.js +321 -0
  88. package/bundled-test-harness/assets/choreo-gallery-hang-test-BqJLmeFF.js +426 -0
  89. package/bundled-test-harness/assets/choreo-gallery-highlight-test-B1Q7-ICm.js +60 -0
  90. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-7My9lVam.js +370 -0
  91. package/bundled-test-harness/assets/choreo-gallery-interruption-test-BlIAaGrw.js +176 -0
  92. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-C9NnYIP8.js +104 -0
  93. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CWzXkvbW.js +193 -0
  94. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-CwdiZWeI.js +111 -0
  95. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-D55fxwTn.js +127 -0
  96. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-D8Wxv0lb.js +100 -0
  97. package/bundled-test-harness/assets/choreo-gallery-presentation-test-BLoWfp6G.js +157 -0
  98. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-D5XxTBDS.js +145 -0
  99. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-DrHTTvss.js +89 -0
  100. package/bundled-test-harness/assets/choreo-gallery-sheet-test-BFVdnM_b.js +48 -0
  101. package/bundled-test-harness/assets/choreo-gallery-site-test-BhEBHdvI.js +237 -0
  102. package/bundled-test-harness/assets/choreo-gallery-stage-DcKKsdcu.js +256 -0
  103. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-Fcc6SC3F.js +102 -0
  104. package/bundled-test-harness/assets/choreo-gallery-stages-test-Cb-ADpxK.js +35 -0
  105. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-DMJ6C9FW.js +138 -0
  106. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CAjSUdLJ.js +144 -0
  107. package/bundled-test-harness/assets/choreo-gallery-theater-test-B-3IZMj9.js +252 -0
  108. package/bundled-test-harness/assets/choreo-gallery-tuning-test-BVxK5Ry_.js +95 -0
  109. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-uWBH1EKE.js +88 -0
  110. package/bundled-test-harness/assets/choreo-gallery-wires-test-Bo4Sd1Vn.js +148 -0
  111. package/bundled-test-harness/assets/client-telemetry-test-DFM4mML2.js +340 -0
  112. package/bundled-test-harness/assets/clip-DY6N6K67.js +92 -0
  113. package/bundled-test-harness/assets/clip-DzXoPdp-.js +2 -0
  114. package/bundled-test-harness/assets/code-block-DRE8KQZQ.js +502 -0
  115. package/bundled-test-harness/assets/code-ref-test-CDcqE8_C.js +163 -0
  116. package/bundled-test-harness/assets/code-submode-availability-test-DPTqZYYm.js +198 -0
  117. package/bundled-test-harness/assets/code-submode-test-AHV4mzJ4.js +1839 -0
  118. package/bundled-test-harness/assets/codeblocks-test-D6ijVvEL.js +418 -0
  119. package/bundled-test-harness/assets/codemirror-editor-test-BeAMVivu.js +1512 -0
  120. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bnb7_KUT.js +366 -0
  121. package/bundled-test-harness/assets/color-field-test-CR6gGEqE.js +212 -0
  122. package/bundled-test-harness/assets/compaction-test-CjEsY0uG.js +150 -0
  123. package/bundled-test-harness/assets/computed-test-DtyZGgdc.js +1320 -0
  124. package/bundled-test-harness/assets/container-BYGZImLU.css +5101 -0
  125. package/bundled-test-harness/assets/container-CBZZ8uFw.js +10925 -0
  126. package/bundled-test-harness/assets/content-preview-components-test-BztI4fz-.js +462 -0
  127. package/bundled-test-harness/assets/copy-and-edit-test-Cqw7kcur.js +292 -0
  128. package/bundled-test-harness/assets/copy-card-test-D5m3eVEH.js +218 -0
  129. package/bundled-test-harness/assets/copy-file-to-realm-test-FPY-6Ddm.js +148 -0
  130. package/bundled-test-harness/assets/copy-source-test-9pJD-qey.js +56 -0
  131. package/bundled-test-harness/assets/create-file-test-DjMf88u_.js +1086 -0
  132. package/bundled-test-harness/assets/create-file-test-XbgOqg38.js +464 -0
  133. package/bundled-test-harness/assets/create-listing-modal-test-De7b4vu3.js +273 -0
  134. package/bundled-test-harness/assets/create-listing-pr-request-test-CBtIV0Z8.js +117 -0
  135. package/bundled-test-harness/assets/create-spec-test-4xR0gM7E.js +256 -0
  136. package/bundled-test-harness/assets/create-submission-workflow-test-DQpWrpGT.js +132 -0
  137. package/bundled-test-harness/assets/create-workspace-test-BQAudgpS.js +104 -0
  138. package/bundled-test-harness/assets/credential-fields-test-DXKBdbZD.js +200 -0
  139. package/bundled-test-harness/assets/csv-file-def-test-Cnp4y834.js +102 -0
  140. package/bundled-test-harness/assets/dashboard-CmuOhIYC.js +3628 -0
  141. package/bundled-test-harness/assets/dashboard-CzN49x74.css +2400 -0
  142. package/bundled-test-harness/assets/dashboard-add-workspace-test-T32hWB-g.js +50 -0
  143. package/bundled-test-harness/assets/dashboard-agents-test-BN5maCgQ.js +334 -0
  144. package/bundled-test-harness/assets/dashboard-archive-test-BzwUte_Z.js +128 -0
  145. package/bundled-test-harness/assets/dashboard-delete-test-D2Gcp81V.js +163 -0
  146. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-BgKNIr35.js +71 -0
  147. package/bundled-test-harness/assets/dashboard-duplicate-test-D7JEWylc.js +222 -0
  148. package/bundled-test-harness/assets/dashboard-get-started-test-DOGPzGoA.js +374 -0
  149. package/bundled-test-harness/assets/dashboard-ir2bakJS.js +142 -0
  150. package/bundled-test-harness/assets/dashboard-pinned-cards-test-Bn_P9xJU.js +220 -0
  151. package/bundled-test-harness/assets/dashboard-publish-test-64sGQ0nG.js +70 -0
  152. package/bundled-test-harness/assets/dashboard-reindex-test-DJjYq1ct.js +115 -0
  153. package/bundled-test-harness/assets/dashboard-section-rail-test-ZkAhWu5V.js +169 -0
  154. package/bundled-test-harness/assets/dashboard-state-test-BbkpPB5L.js +162 -0
  155. package/bundled-test-harness/assets/dashboard-test-CBLdPrSt.js +545 -0
  156. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DFT3R1Zx.js +62 -0
  157. package/bundled-test-harness/assets/dashboard-workspace-test-DqBdCFo2.js +537 -0
  158. package/bundled-test-harness/assets/dashboard-workspaces-section-test-CH1HDfxR.js +410 -0
  159. package/bundled-test-harness/assets/data-file-def-preview-test-CNsZwQEJ.js +155 -0
  160. package/bundled-test-harness/assets/date-time-fields-test-CEFaZTnF.js +359 -0
  161. package/bundled-test-harness/assets/debug-message-test-Ck3BfFv3.js +117 -0
  162. package/bundled-test-harness/assets/declared-captures-test-C-0yPRU7.js +879 -0
  163. package/bundled-test-harness/assets/delete-workspace-test-CZOwGy78.js +102 -0
  164. package/bundled-test-harness/assets/diffing-test-BEKI905O.js +210 -0
  165. package/bundled-test-harness/assets/download-file-to-realm-test-C1kAGDll.js +119 -0
  166. package/bundled-test-harness/assets/editor-test-C9x5ZY6g.js +688 -0
  167. package/bundled-test-harness/assets/edits-D76-aanh.js +651 -0
  168. package/bundled-test-harness/assets/email-field-test-LGkrB_2B.js +75 -0
  169. package/bundled-test-harness/assets/enum-field-test-CPyV1J-m.js +935 -0
  170. package/bundled-test-harness/assets/error-display-test-bWuUtfIG.js +343 -0
  171. package/bundled-test-harness/assets/evaluate-module-test-CbS5h8t3.js +91 -0
  172. package/bundled-test-harness/assets/execute-atomic-operations-test-B4Kfco0k.js +113 -0
  173. package/bundled-test-harness/assets/externals-k-2ZBepK.js +4393 -0
  174. package/bundled-test-harness/assets/fallback-banner-live-delete-test-CuFiH1D8.js +207 -0
  175. package/bundled-test-harness/assets/fallback-banner-test-CqSRN7D8.js +225 -0
  176. package/bundled-test-harness/assets/fallback-banner-test-DQkrFE4-.js +53 -0
  177. package/bundled-test-harness/assets/fallback-models-test-BWekNxC0.js +161 -0
  178. package/bundled-test-harness/assets/fetch-card-json-test-DULUqUEu.js +61 -0
  179. package/bundled-test-harness/assets/field-configuration-test-BXZq28xa.js +551 -0
  180. package/bundled-test-harness/assets/field-markdown-domain-test-DdXCifs6.js +616 -0
  181. package/bundled-test-harness/assets/field-markdown-oversize-test-DouPPTHX.js +88 -0
  182. package/bundled-test-harness/assets/field-markdown-primitives-test-DSRGJeyl.js +365 -0
  183. package/bundled-test-harness/assets/field-markdown-specialized-test-DlTYLl_s.js +534 -0
  184. package/bundled-test-harness/assets/field-playground-test-NhS4VvoN.js +894 -0
  185. package/bundled-test-harness/assets/field-support-predicates-test-DWpyT1Qf.js +167 -0
  186. package/bundled-test-harness/assets/file-attachment-test-LwZf-BSY.js +796 -0
  187. package/bundled-test-harness/assets/file-chooser-panel-test-DuAqD9bn.js +153 -0
  188. package/bundled-test-harness/assets/file-chooser-test-CjaXXwpT.js +504 -0
  189. package/bundled-test-harness/assets/file-def-format-templates-test-BDs4OmHq.js +380 -0
  190. package/bundled-test-harness/assets/file-def-live-reload-test-BqTdnq-W.js +124 -0
  191. package/bundled-test-harness/assets/file-def-menu-items-test-DqdINXsD.js +138 -0
  192. package/bundled-test-harness/assets/file-def-navigation-test-BPGr0SQy.js +109 -0
  193. package/bundled-test-harness/assets/file-def-serialization-test-CvjW-FlC.js +89 -0
  194. package/bundled-test-harness/assets/file-def-test-C-Yv_NjS.js +216 -0
  195. package/bundled-test-harness/assets/file-preview-live-reload-test-MzwGwasU.js +310 -0
  196. package/bundled-test-harness/assets/file-resource-primitives-test-D3GmfqNs.js +255 -0
  197. package/bundled-test-harness/assets/file-tree-from-index-test-CfldnUgm.js +96 -0
  198. package/bundled-test-harness/assets/file-tree-test--0ZCPRe9.js +851 -0
  199. package/bundled-test-harness/assets/file-view-model-test-BDIAeBV8.js +346 -0
  200. package/bundled-test-harness/assets/filedef-export-shape-test-B2tgU404.js +61 -0
  201. package/bundled-test-harness/assets/film-Bf73ypzi.js +4074 -0
  202. package/bundled-test-harness/assets/film-C54lhaiU.js +2 -0
  203. package/bundled-test-harness/assets/film-DPcMEHYu.js +13 -0
  204. package/bundled-test-harness/assets/flac-audio-def-test-ByoXMoQ1.js +143 -0
  205. package/bundled-test-harness/assets/font-metadata-extractor-test-hawLTDTG.js +415 -0
  206. package/bundled-test-harness/assets/formatted-aibot-message-test-BahBj3x8.js +109 -0
  207. package/bundled-test-harness/assets/formatted-user-message-test-CodbrU3t.js +43 -0
  208. package/bundled-test-harness/assets/freestyle-test-faQhSciz.js +17 -0
  209. package/bundled-test-harness/assets/full-reindex-realm-test-CE5RJTIC.js +101 -0
  210. package/bundled-test-harness/assets/garbage-collection-test-v-3sev77.js +403 -0
  211. package/bundled-test-harness/assets/general-test-DKZPBtSb.js +923 -0
  212. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-CucWyrkH.js +65 -0
  213. package/bundled-test-harness/assets/generic-file-def-preview-test-_EDRsebi.js +71 -0
  214. package/bundled-test-harness/assets/get-available-realm-identifiers-test-CV023yek.js +47 -0
  215. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test--DOu3DyV.js +47 -0
  216. package/bundled-test-harness/assets/get-default-writable-realm-test-Bic8jl6R.js +54 -0
  217. package/bundled-test-harness/assets/get-published-realms-test-DrA5YcFN.js +71 -0
  218. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-jfU6SIWn.js +54 -0
  219. package/bundled-test-harness/assets/get-relationship-membership-state-test-Ccy2Z7MN.js +1308 -0
  220. package/bundled-test-harness/assets/get-user-system-card-test-Bmq2lmWv.js +67 -0
  221. package/bundled-test-harness/assets/gif-image-def-test-N1mMQC-X.js +188 -0
  222. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BkUDjiTs.js +160 -0
  223. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DsFWCzTs.js +74 -0
  224. package/bundled-test-harness/assets/gts-file-def-test-BL1jpQ9J.js +100 -0
  225. package/bundled-test-harness/assets/head-format-preview-test-BVCaPQqc.js +158 -0
  226. package/bundled-test-harness/assets/helpers-Ds68JxHe.js +5 -0
  227. package/bundled-test-harness/assets/host-mode-service-B4bisRdR.js +262 -0
  228. package/bundled-test-harness/assets/host-mode-test-BmkN2PCJ.js +831 -0
  229. package/bundled-test-harness/assets/host-submode-test-C6SxQ796.js +1392 -0
  230. package/bundled-test-harness/assets/html-component-test-CNQ9wF0Q.js +65 -0
  231. package/bundled-test-harness/assets/html-def-test-BcaCVVQq.js +160 -0
  232. package/bundled-test-harness/assets/html-meta-extractor-test-BU1hjkTp.js +60 -0
  233. package/bundled-test-harness/assets/hydratable-card-test-CX6MWiti.js +426 -0
  234. package/bundled-test-harness/assets/icon-button-C1zH38Nc.js +67 -0
  235. package/bundled-test-harness/assets/image-metadata-extractor-test-CakSBPZ_.js +1109 -0
  236. package/bundled-test-harness/assets/index-changes-test-D8RtgfyG.js +367 -0
  237. package/bundled-test-harness/assets/index-query-engine-test-BETfoYOK.js +2593 -0
  238. package/bundled-test-harness/assets/index-writer-test-B_bR2fjw.js +3040 -0
  239. package/bundled-test-harness/assets/inspector-test-BwPXJj1S.js +2058 -0
  240. package/bundled-test-harness/assets/instance-filter-matcher-test-BSVCg59b.js +788 -0
  241. package/bundled-test-harness/assets/instantiate-card-test-BVQhZjpq.js +164 -0
  242. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DzQLG41H.js +475 -0
  243. package/bundled-test-harness/assets/interact-submode-setup-C5bKXq73.js +566 -0
  244. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-Cd3dpjhB.js +99 -0
  245. package/bundled-test-harness/assets/invite-user-to-room-test-Brabz1tt.js +142 -0
  246. package/bundled-test-harness/assets/invoke-card-operation-test-C1Q1FUf4.js +333 -0
  247. package/bundled-test-harness/assets/isolated-render-test-BLJfS7BU.js +51 -0
  248. package/bundled-test-harness/assets/job-scoped-doc-cache-test-Bgv5woaB.js +181 -0
  249. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C_bB6KpR.js +103 -0
  250. package/bundled-test-harness/assets/jpg-image-def-test-gdLIKocD.js +697 -0
  251. package/bundled-test-harness/assets/json-file-def-test-CPYMRBY-.js +95 -0
  252. package/bundled-test-harness/assets/key-notices-badge-test-DemslfLw.js +155 -0
  253. package/bundled-test-harness/assets/key-readiness-test-5tq5JycL.js +190 -0
  254. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-BbhDZ2PH.js +398 -0
  255. package/bundled-test-harness/assets/linksto-error-sentinel-test-C2t7fFPi.js +238 -0
  256. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test--U_UvUty.js +354 -0
  257. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-Dj3Xy0ZF.js +303 -0
  258. package/bundled-test-harness/assets/linksto-sentinel-reload-test-D0dK4Jjs.js +197 -0
  259. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test---IYiXok.js +260 -0
  260. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CT04MhES.js +196 -0
  261. package/bundled-test-harness/assets/lint-and-fix-test-aadgx7rX.js +51 -0
  262. package/bundled-test-harness/assets/live-test-BGij_vuc.js +100 -0
  263. package/bundled-test-harness/assets/live-test-CppvValf.js +2 -0
  264. package/bundled-test-harness/assets/load-default-skills-test-Cp2m_ebp.js +74 -0
  265. package/bundled-test-harness/assets/loader-parallel-prefetch-test-vU_26Jqu.js +257 -0
  266. package/bundled-test-harness/assets/loader-test-CTaw8K_B.js +482 -0
  267. package/bundled-test-harness/assets/loading-test-DGGt4qZZ.js +63 -0
  268. package/bundled-test-harness/assets/m4a-audio-def-test-DAiReOXH.js +190 -0
  269. package/bundled-test-harness/assets/main-bXHwJ0CN.js +5 -0
  270. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIXq9FqR.js +470 -0
  271. package/bundled-test-harness/assets/markdown-embed-chooser-test-zFGh9WfP.js +334 -0
  272. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-Byn_WFwY.js +447 -0
  273. package/bundled-test-harness/assets/markdown-embed-preview-test-Y3iFMttg.js +368 -0
  274. package/bundled-test-harness/assets/markdown-fallback-test-Br1TPkLZ.js +316 -0
  275. package/bundled-test-harness/assets/markdown-file-def-test-Crm2MAnq.js +380 -0
  276. package/bundled-test-harness/assets/markdown-helpers-test-CZ9Vvywc.js +188 -0
  277. package/bundled-test-harness/assets/markdown-highlighting-test-CFMkoVDl.js +244 -0
  278. package/bundled-test-harness/assets/markdown-preview-lOh-MyqF.js +72 -0
  279. package/bundled-test-harness/assets/markdown-preview-test-B8w0fFIy.js +238 -0
  280. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-aH6HQly1.js +146 -0
  281. package/bundled-test-harness/assets/markdown-skill-search-test-CiNLQs-5.js +80 -0
  282. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-DaA8w1Jj.js +63 -0
  283. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-21GIlf55.js +300 -0
  284. package/bundled-test-harness/assets/matrix-service-personal-realm-test-jn9DUENm.js +125 -0
  285. package/bundled-test-harness/assets/matrix-service-realm-servers-test-eNZVJakl.js +55 -0
  286. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-Cabm8_dY.js +132 -0
  287. package/bundled-test-harness/assets/matrix-service-relogin-test-C77EFgjc.js +59 -0
  288. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-BgM0fPiO.js +35 -0
  289. package/bundled-test-harness/assets/menu-Cl50TSFe.js +3561 -0
  290. package/bundled-test-harness/assets/message-service-subscription-test-CfEqH2jP.js +110 -0
  291. package/bundled-test-harness/assets/message-service-test-DsTzH1In.js +144 -0
  292. package/bundled-test-harness/assets/message-tool-test-C5xVfTtj.js +33 -0
  293. package/bundled-test-harness/assets/midi-audio-def-test-goLRCNCZ.js +182 -0
  294. package/bundled-test-harness/assets/migrate-skill-test-yPCbVfxG.js +161 -0
  295. package/bundled-test-harness/assets/mini-YXjrY_tH.js +1404 -0
  296. package/bundled-test-harness/assets/mini-card-chooser-test-DrllikHB.js +272 -0
  297. package/bundled-test-harness/assets/mini-file-chooser-test-BfqayhmI.js +201 -0
  298. package/bundled-test-harness/assets/mock-matrix-C7BrPS6S.js +2 -0
  299. package/bundled-test-harness/assets/mock-matrix-FjsXmU7-.js +15107 -0
  300. package/bundled-test-harness/assets/modal-BgaZavcs.js +322 -0
  301. package/bundled-test-harness/assets/model-cost-tier-test-BGg-sJML.js +174 -0
  302. package/bundled-test-harness/assets/model-file-extract-test-CjEBupY5.js +206 -0
  303. package/bundled-test-harness/assets/module-transpile-cache-test-XW6DDsmz.js +67 -0
  304. package/bundled-test-harness/assets/monaco-test-DkoRuFiQ.js +100 -0
  305. package/bundled-test-harness/assets/mp3-audio-def-test-v369NNsQ.js +133 -0
  306. package/bundled-test-harness/assets/multiple-stacks-test-CJpYPWdM.js +208 -0
  307. package/bundled-test-harness/assets/nested-query-field-render-test-CfDrBcUN.js +249 -0
  308. package/bundled-test-harness/assets/no-stacks-test-MmsJeLpz.js +48 -0
  309. package/bundled-test-harness/assets/number-field-test-A7B2r0M5.js +184 -0
  310. package/bundled-test-harness/assets/office-file-def-test-BNRvFmCB.js +263 -0
  311. package/bundled-test-harness/assets/office-metadata-extractor-test-zlDoEIEp.js +218 -0
  312. package/bundled-test-harness/assets/office-poster-capture-test-DdFEaOxR.js +203 -0
  313. package/bundled-test-harness/assets/ogg-audio-def-test-kk91BzQY.js +196 -0
  314. package/bundled-test-harness/assets/open-create-listing-modal-test-D1Dl1pov.js +131 -0
  315. package/bundled-test-harness/assets/open-image-in-new-tab-test-DyCmdMyO.js +52 -0
  316. package/bundled-test-harness/assets/open-secure-window-test-dz1vPudF.js +253 -0
  317. package/bundled-test-harness/assets/open-workspace-test-BvTcskzP.js +46 -0
  318. package/bundled-test-harness/assets/operation-lowering-test-omU66bkJ.js +2957 -0
  319. package/bundled-test-harness/assets/operations-invocation-test-BMj42rQe.js +523 -0
  320. package/bundled-test-harness/assets/operations-optimistic-test-KJLyzT8v.js +203 -0
  321. package/bundled-test-harness/assets/operations-query-test-J3HcnaoK.js +459 -0
  322. package/bundled-test-harness/assets/operations-store-reconciliation-test-CkbGBMBQ.js +406 -0
  323. package/bundled-test-harness/assets/operations-test-C7zXXpRW.js +2518 -0
  324. package/bundled-test-harness/assets/operator-mode-acceptance-test-BPolI_RD.js +1195 -0
  325. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DjTQgizt.js +1036 -0
  326. package/bundled-test-harness/assets/operator-mode-links-test-DSEqy5Db.js +797 -0
  327. package/bundled-test-harness/assets/operator-mode-test-CB7BNDNE.js +696 -0
  328. package/bundled-test-harness/assets/operator-mode-ui-test-C1OhF1il.js +1045 -0
  329. package/bundled-test-harness/assets/overlay-D2rQi8lJ.js +427 -0
  330. package/bundled-test-harness/assets/overlay-menu-items-test-CPN31yBJ.js +331 -0
  331. package/bundled-test-harness/assets/overlays-B-qMEPhY.js +2 -0
  332. package/bundled-test-harness/assets/overlays-DSf2je0c.js +75 -0
  333. package/bundled-test-harness/assets/overlays-detached-element-test-C73nMXes.js +56 -0
  334. package/bundled-test-harness/assets/panel-DjrC7DxA.js +15124 -0
  335. package/bundled-test-harness/assets/past-sessions-test-BSIS2Hlq.js +321 -0
  336. package/bundled-test-harness/assets/patch-fields-test-Bp2IE0Jw.js +1014 -0
  337. package/bundled-test-harness/assets/patch-instance-test-DssuRGKP.js +348 -0
  338. package/bundled-test-harness/assets/pdf-file-def-test-Barj9ffD.js +111 -0
  339. package/bundled-test-harness/assets/pdf-metadata-extractor-test-B7KnXcIm.js +130 -0
  340. package/bundled-test-harness/assets/permission-checking-realm-test-BD4O0nen.js +306 -0
  341. package/bundled-test-harness/assets/persist-module-inspector-view-test-BIdbkdPr.js +60 -0
  342. package/bundled-test-harness/assets/persist-scroll-position-test-Bhb7wJiy.js +254 -0
  343. package/bundled-test-harness/assets/phone-number-field-test-C2yuCrXY.js +73 -0
  344. package/bundled-test-harness/assets/pill-menu-test-BIp91YXi.js +60 -0
  345. package/bundled-test-harness/assets/plate-CJq1veVA.js +41 -0
  346. package/bundled-test-harness/assets/plate-CwAvOUfL.js +2 -0
  347. package/bundled-test-harness/assets/player-Digk7omr.js +2 -0
  348. package/bundled-test-harness/assets/player-vsjosoN_.js +82 -0
  349. package/bundled-test-harness/assets/playground-B02e8uqB.js +58 -0
  350. package/bundled-test-harness/assets/plural-field-components-test-C1acuN-A.js +198 -0
  351. package/bundled-test-harness/assets/png-image-def-test-B9QeVo1f.js +266 -0
  352. package/bundled-test-harness/assets/policy-audit-confirmation-test-CeVquvc_.js +155 -0
  353. package/bundled-test-harness/assets/policy-scoped-search-test-SFPiIqR3.js +339 -0
  354. package/bundled-test-harness/assets/prerender-file-extract-test-HSJKAHyO.js +346 -0
  355. package/bundled-test-harness/assets/prerender-html-test-BTAcFCme.js +670 -0
  356. package/bundled-test-harness/assets/prerender-meta-test-Csyz2b21.js +614 -0
  357. package/bundled-test-harness/assets/prerender-module-test-DpTYAbmI.js +409 -0
  358. package/bundled-test-harness/assets/prerender-persistence-block-test-BhIt-7kK.js +124 -0
  359. package/bundled-test-harness/assets/prerender-pre-model-error-test-DxKPQKqx.js +61 -0
  360. package/bundled-test-harness/assets/prerender-serialize-cycle-test-C8V5YWQO.js +134 -0
  361. package/bundled-test-harness/assets/prerendered-html-read-test-Cq7JVGwg.js +191 -0
  362. package/bundled-test-harness/assets/pretui-components-test-Ducr9fLT.css +743 -0
  363. package/bundled-test-harness/assets/pretui-components-test-Hs0uyIUQ.js +992 -0
  364. package/bundled-test-harness/assets/pretui-primitives-CRs8NRm0.js +69 -0
  365. package/bundled-test-harness/assets/preview-format-test-cCqLrfdY.js +103 -0
  366. package/bundled-test-harness/assets/preview-test-BMqJSoR1.js +474 -0
  367. package/bundled-test-harness/assets/process-card-test-578tfDvr.js +94 -0
  368. package/bundled-test-harness/assets/profile-settings-modal-CVnNl7Yu.js +990 -0
  369. package/bundled-test-harness/assets/publish-realm-COoeWexp.js +82 -0
  370. package/bundled-test-harness/assets/publish-realm-test-a5nkx0Ov.js +210 -0
  371. package/bundled-test-harness/assets/query-field-barrier-test-qX3xVPfk.js +113 -0
  372. package/bundled-test-harness/assets/query-field-error-sentinel-test-V6JDPFLX.js +201 -0
  373. package/bundled-test-harness/assets/query-field-membership-status-test-CK7eDf-K.js +323 -0
  374. package/bundled-test-harness/assets/query-field-page-optin-test-B5YBHUvU.js +126 -0
  375. package/bundled-test-harness/assets/query-field-schema-test-D4SjOGlK.js +231 -0
  376. package/bundled-test-harness/assets/query-field-search-throttle-test-BVkm1-D8.js +154 -0
  377. package/bundled-test-harness/assets/query-field-stale-prerender-test-9g7hcD91.js +152 -0
  378. package/bundled-test-harness/assets/query-fields-test-CQYqhzpN.js +535 -0
  379. package/bundled-test-harness/assets/quick-look-test-CE0o6lJ4.js +139 -0
  380. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D0mJorwH.js +91 -0
  381. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-B_F_2GEB.js +45 -0
  382. package/bundled-test-harness/assets/read-source-test-BgJV4B4F.js +67 -0
  383. package/bundled-test-harness/assets/read-text-file-test-DaeLzg4u.js +124 -0
  384. package/bundled-test-harness/assets/realm-C_a9su1j.js +2858 -0
  385. package/bundled-test-harness/assets/realm-api-keys-D5USFOoS.js +2 -0
  386. package/bundled-test-harness/assets/realm-api-keys-m_VOcixC.js +578 -0
  387. package/bundled-test-harness/assets/realm-api-keys-test-BVs7f5Dz.js +109 -0
  388. package/bundled-test-harness/assets/realm-api-keys-test-C_uZnTmq.js +588 -0
  389. package/bundled-test-harness/assets/realm-config-m5eccPW8.js +833 -0
  390. package/bundled-test-harness/assets/realm-config-policy-standing-test-Ber-IXpc.js +290 -0
  391. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-3Xqt5VlM.js +274 -0
  392. package/bundled-test-harness/assets/realm-config-settings-test-CkalhbDF.js +187 -0
  393. package/bundled-test-harness/assets/realm-field-test-B_PUoqnk.js +100 -0
  394. package/bundled-test-harness/assets/realm-indexing-test-8iLjeV_e.js +4380 -0
  395. package/bundled-test-harness/assets/realm-policy-fitted-test-Bptvra0U.js +206 -0
  396. package/bundled-test-harness/assets/realm-policy-test-DwG0qqXE.js +1141 -0
  397. package/bundled-test-harness/assets/realm-querying-test-Dvw26A6Q.js +1067 -0
  398. package/bundled-test-harness/assets/realm-server-form-agnostic-test-DrXQH0UP.js +96 -0
  399. package/bundled-test-harness/assets/realm-server-subscriber-test-Dkj23vQK.js +46 -0
  400. package/bundled-test-harness/assets/realm-service-info-test-CdRlDhj-.js +67 -0
  401. package/bundled-test-harness/assets/realm-test-DGYN48Qx.js +2364 -0
  402. package/bundled-test-harness/assets/realm-token-refresh-test-CEWATL9h.js +153 -0
  403. package/bundled-test-harness/assets/realm-url-tooltip-test-8ZjTNPuy.js +78 -0
  404. package/bundled-test-harness/assets/reasoning-test-BV49AYg2.js +221 -0
  405. package/bundled-test-harness/assets/recent-files-test-Dc6L6Dm4.js +450 -0
  406. package/bundled-test-harness/assets/reindex-realm-test-CFRSt39u.js +117 -0
  407. package/bundled-test-harness/assets/relationship-loading-state-test-FKbtOFUr.js +290 -0
  408. package/bundled-test-harness/assets/remix-card-test-CKGC_Sgq.js +58 -0
  409. package/bundled-test-harness/assets/rendered-markdown-DXiDN91F.js +292 -0
  410. package/bundled-test-harness/assets/rendered-markdown-test-n3MlXmmu.js +587 -0
  411. package/bundled-test-harness/assets/resident-instance-reuse-test-BjdhE6CM.js +82 -0
  412. package/bundled-test-harness/assets/result-tile-o6dtjgX4.js +144 -0
  413. package/bundled-test-harness/assets/rich-markdown-field-test-VXr6l20h.js +1647 -0
  414. package/bundled-test-harness/assets/room-message-test-BrjJ2wMs.js +484 -0
  415. package/bundled-test-harness/assets/run-P_7TsreC.js +4017 -0
  416. package/bundled-test-harness/assets/run-realm-code-DsBUf1si.js +2964 -0
  417. package/bundled-test-harness/assets/run-realm-code-test-cS0DzaKo.js +3844 -0
  418. package/bundled-test-harness/assets/sanitize-module-list-test-CvuOOiUY.js +85 -0
  419. package/bundled-test-harness/assets/save-card-skip-index-wait-test-fpJ1eq32.js +89 -0
  420. package/bundled-test-harness/assets/schema-editor-test-NkKjCgyf.js +785 -0
  421. package/bundled-test-harness/assets/schema-generation-test-Dmg3lWl7.js +28 -0
  422. package/bundled-test-harness/assets/scrolling-test-B0GNYGYc.js +412 -0
  423. package/bundled-test-harness/assets/search-adorn-test-CZebk7_y.js +136 -0
  424. package/bundled-test-harness/assets/search-and-choose-test-Bd4NZUup.js +154 -0
  425. package/bundled-test-harness/assets/search-correlation-id-test-DXKlEO55.js +139 -0
  426. package/bundled-test-harness/assets/search-entries-result-test-QQawA8Fm.js +234 -0
  427. package/bundled-test-harness/assets/search-entries-test-3DlqGPQq.js +1486 -0
  428. package/bundled-test-harness/assets/search-entries-tool-test-D1TvDE9D.js +504 -0
  429. package/bundled-test-harness/assets/search-google-images-test-DqsoQGr1.js +166 -0
  430. package/bundled-test-harness/assets/search-results-DGrNaPxh.js +266 -0
  431. package/bundled-test-harness/assets/search-results-test-CqVHYNRt.js +578 -0
  432. package/bundled-test-harness/assets/search-selection-menu-test-D6bIjKiH.js +108 -0
  433. package/bundled-test-harness/assets/search-sheet-files-test-Bf37TQXo.js +126 -0
  434. package/bundled-test-harness/assets/search-sheet-persistence-test-CV4_XdxR.js +131 -0
  435. package/bundled-test-harness/assets/search-test-Dlb-wg3a.js +2249 -0
  436. package/bundled-test-harness/assets/search-tool-test-BJLgVMoL.js +156 -0
  437. package/bundled-test-harness/assets/searchable-option-test-CcbfMqIL.js +322 -0
  438. package/bundled-test-harness/assets/searchable-search-doc-test-yH9fLGNS.js +1271 -0
  439. package/bundled-test-harness/assets/section-rail-CNFCebtT.js +113 -0
  440. package/bundled-test-harness/assets/section-rail-test-KNJAWWl6.js +256 -0
  441. package/bundled-test-harness/assets/secure-sign-in-Dyljp0Th.js +174 -0
  442. package/bundled-test-harness/assets/secure-sign-in-test-QnqNuTP3.js +373 -0
  443. package/bundled-test-harness/assets/segmented-control-DxJdoJ4Z.js +173 -0
  444. package/bundled-test-harness/assets/select-BiQTg2ts.js +175 -0
  445. package/bundled-test-harness/assets/send-ai-assistant-message-test-CAn7M2dZ.js +52 -0
  446. package/bundled-test-harness/assets/send-bot-trigger-event-test-qBu5E_jy.js +56 -0
  447. package/bundled-test-harness/assets/send-request-via-proxy-test-CLuwLBq_.js +380 -0
  448. package/bundled-test-harness/assets/sending-test-H0AaBSgi.js +659 -0
  449. package/bundled-test-harness/assets/serialization-rri-form-audit-test-hMJukiKt.js +136 -0
  450. package/bundled-test-harness/assets/serialization-test-W5e3wKbz.js +8758 -0
  451. package/bundled-test-harness/assets/set-user-system-card-test-CjgWLkNV.js +59 -0
  452. package/bundled-test-harness/assets/setup-CssMNvui.js +772 -0
  453. package/bundled-test-harness/assets/setup-D8YXvK-p.js +2 -0
  454. package/bundled-test-harness/assets/shared-link-target-reuse-test-D42UO8DC.js +207 -0
  455. package/bundled-test-harness/assets/show-card-test-CHEaS514.js +365 -0
  456. package/bundled-test-harness/assets/signed-capture-link-test-BgEu0F-S.js +132 -0
  457. package/bundled-test-harness/assets/single-stack-test-DYcu_v7Z.js +652 -0
  458. package/bundled-test-harness/assets/skills-test-ChmKhADX.js +648 -0
  459. package/bundled-test-harness/assets/skip-boot-index-guard-test-BzRIncDN.js +46 -0
  460. package/bundled-test-harness/assets/spec-test-BYvFR6Xb.js +1077 -0
  461. package/bundled-test-harness/assets/spinner-Bx9x55NA.js +49 -0
  462. package/bundled-test-harness/assets/src-C1hYFgVl.js +216 -0
  463. package/bundled-test-harness/assets/src-CIlLx7Lu.js +5 -0
  464. package/bundled-test-harness/assets/stick-to-bottom-resize-test-DMHsAG0v.js +56 -0
  465. package/bundled-test-harness/assets/store-add-test-D_9IHQjZ.js +50 -0
  466. package/bundled-test-harness/assets/store-module-rebuild-test-BRGZoLRV.js +454 -0
  467. package/bundled-test-harness/assets/store-search-test-3G8JHuj2.js +175 -0
  468. package/bundled-test-harness/assets/store-test-BiKKDqqW.js +3672 -0
  469. package/bundled-test-harness/assets/structured-theme-test-11TNsgUW.js +377 -0
  470. package/bundled-test-harness/assets/summarize-session-test-CwzD_ZbD.js +172 -0
  471. package/bundled-test-harness/assets/svg-image-def-test-zV6aMK9q.js +167 -0
  472. package/bundled-test-harness/assets/switch-submode-test-DQU2cP5_.js +168 -0
  473. package/bundled-test-harness/assets/sync-openrouter-models-test-xrXVaC2H.js +97 -0
  474. package/bundled-test-harness/assets/test-support-BGl3rthw.js +3 -0
  475. package/bundled-test-harness/assets/test-support-BcBv__98.js +99 -0
  476. package/bundled-test-harness/assets/tests-CmM9imwB.js +3598 -0
  477. package/bundled-test-harness/assets/text-file-def-test-Cyq78UFY.js +94 -0
  478. package/bundled-test-harness/assets/text-input-validator-test-DBj7TaM_.js +156 -0
  479. package/bundled-test-harness/assets/text-suggestion-test-C4XAqWqY.js +340 -0
  480. package/bundled-test-harness/assets/theme-card-test-dVNz4tgU.js +621 -0
  481. package/bundled-test-harness/assets/theme-dashboard-nav-test-DYSn5pqo.js +196 -0
  482. package/bundled-test-harness/assets/theme-scheme-island-test-C1WpkfEP.js +264 -0
  483. package/bundled-test-harness/assets/theme-scoped-css-parity-test-BVluppsE.js +176 -0
  484. package/bundled-test-harness/assets/titles-DCvAhECF.js +52 -0
  485. package/bundled-test-harness/assets/titles-ZPeArtS1.js +2 -0
  486. package/bundled-test-harness/assets/to-device-streaming-test-BJ4J1cXe.js +163 -0
  487. package/bundled-test-harness/assets/token-usage-test-WUf4r4fQ.js +160 -0
  488. package/bundled-test-harness/assets/tools-J_Knr_W6.js +774 -0
  489. package/bundled-test-harness/assets/tools-calling-test-CfqZX0Ed.js +200 -0
  490. package/bundled-test-harness/assets/tools-test-B4x58ZmI.js +1624 -0
  491. package/bundled-test-harness/assets/tools-test-Cvau5219.js +3204 -0
  492. package/bundled-test-harness/assets/tooltip-B0rEgyMW.css +66 -0
  493. package/bundled-test-harness/assets/tooltip-DvUMUgVX.js +195 -0
  494. package/bundled-test-harness/assets/transform-cards-test-CYQbZeD9.js +341 -0
  495. package/bundled-test-harness/assets/ts-file-def-preview-test-m39f8Zio.js +95 -0
  496. package/bundled-test-harness/assets/ts-file-def-test-xIcL5xWe.js +92 -0
  497. package/bundled-test-harness/assets/ttf-font-def-test-ClQ2SzFF.js +206 -0
  498. package/bundled-test-harness/assets/turn-settling-test-DZoL2mRT.js +160 -0
  499. package/bundled-test-harness/assets/turn-summary-Bmt7ZxTS.js +1039 -0
  500. package/bundled-test-harness/assets/unpublish-realm-test-0ToTJczx.js +102 -0
  501. package/bundled-test-harness/assets/update-room-skills-test-o_j8NOUV.js +240 -0
  502. package/bundled-test-harness/assets/use-ai-assistant-test-D7HFpxKJ.js +384 -0
  503. package/bundled-test-harness/assets/user-message-BAOt1hS3.js +262 -0
  504. package/bundled-test-harness/assets/validate-realm-test-e3xIbNLB.js +67 -0
  505. package/bundled-test-harness/assets/video-metadata-extractor-test-D8naLSlg.js +520 -0
  506. package/bundled-test-harness/assets/view-visually-test-BuhGau5E.js +335 -0
  507. package/bundled-test-harness/assets/virtual-network-reset-test-CgaFNGPi.js +96 -0
  508. package/bundled-test-harness/assets/wav-audio-def-test-CWG_UdCh.js +160 -0
  509. package/bundled-test-harness/assets/webp-image-def-test-sN4yw8Zu.js +226 -0
  510. package/bundled-test-harness/assets/workspace-0LfPqbYB.js +445 -0
  511. package/bundled-test-harness/assets/workspace-a11y-test-DQxYDRAP.js +197 -0
  512. package/bundled-test-harness/assets/workspace-actions-jGJSfl8M.js +588 -0
  513. package/bundled-test-harness/assets/workspace-behavior-test-BnF-bmBN.js +338 -0
  514. package/bundled-test-harness/assets/workspace-delete-multiple-test-D-rxPDuT.js +212 -0
  515. package/bundled-test-harness/assets/workspace-delete-summary-test-C2-Mve5R.js +63 -0
  516. package/bundled-test-harness/assets/workspace-hosting-test-BvDKdlOb.js +138 -0
  517. package/bundled-test-harness/assets/workspace-indexing-test-B34T3kqD.js +71 -0
  518. package/bundled-test-harness/assets/workspace-test-CJivgv-m.js +51 -0
  519. package/bundled-test-harness/assets/workspace-test-CuSRpPnQ.js +385 -0
  520. package/bundled-test-harness/assets/workspace-timestamp-labels-test-aWgjdbCp.js +68 -0
  521. package/bundled-test-harness/assets/workspace-unit-test-DHMUf2KT.js +122 -0
  522. package/bundled-test-harness/assets/write-binary-file-test-P-hVQuin.js +124 -0
  523. package/bundled-test-harness/assets/write-text-file-test-fXvJueDd.js +191 -0
  524. package/bundled-test-harness/assets/zip-archive-test-C2P5CUSR.js +285 -0
  525. package/bundled-test-harness/assets/zip-file-def-test-BfJZAmGt.js +164 -0
  526. package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
  527. package/bundled-test-harness/index.html +48 -48
  528. package/bundled-test-harness/tests/index.html +50 -50
  529. package/bundled-types/boxel-ui/helpers/theme-scoped-css.ts +4 -0
  530. package/bundled-types/choreo/choreo.gts +58 -2
  531. package/bundled-types/choreo/compile.ts +5 -0
  532. package/bundled-types/choreo/layout-probe.ts +100 -0
  533. package/bundled-types/choreo/run.ts +99 -4
  534. package/bundled-types/host-app/components/operator-mode/dashboard/get-started.gts +152 -7
  535. package/bundled-types/host-app/components/operator-mode/dashboard/index.gts +2 -0
  536. package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +5 -3
  537. package/bundled-types/host-app/components/operator-mode/dashboard-modals/workspace-modals.gts +5 -22
  538. package/bundled-types/host-app/components/operator-mode/host-submode/publishing-realm-popover.gts +1 -1
  539. package/bundled-types/host-app/components/operator-mode/host-submode.gts +111 -37
  540. package/bundled-types/host-app/components/operator-mode/motion/stack-motion.gts +92 -33
  541. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +1 -0
  542. package/bundled-types/host-app/components/operator-mode/stack-item.gts +2 -2
  543. package/bundled-types/host-app/components/operator-mode/stack.gts +36 -25
  544. package/bundled-types/host-app/components/operator-mode/submode-layout.gts +2 -2
  545. package/bundled-types/host-app/lib/modal-focus-trap.ts +33 -0
  546. package/bundled-types/host-app/lib/workspace-actions.ts +21 -0
  547. package/bundled-types/host-app/services/host-mode-service.ts +39 -0
  548. package/bundled-types/host-app/services/realm.ts +14 -0
  549. package/bundled-types/host-tests/helpers/dashboard.ts +67 -0
  550. package/package.json +1 -1
  551. package/bundled-test-harness/assets/account-switch-failed-test-FytUFiPO.js +0 -45
  552. package/bundled-test-harness/assets/adapter-DvmPwSZv.js +0 -2
  553. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-DN525jiY.js +0 -112
  554. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-q3tKqVJQ.js +0 -130
  555. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DgeXcCyi.js +0 -46
  556. package/bundled-test-harness/assets/ai-assistant-test-lDIGPKFP.js +0 -2223
  557. package/bundled-test-harness/assets/ai-function-generation-test-D5GbLyvL.js +0 -1176
  558. package/bundled-test-harness/assets/ai-module-creation-test-I3-j2beD.js +0 -151
  559. package/bundled-test-harness/assets/aibot-message-Dmsjifs6.js +0 -1312
  560. package/bundled-test-harness/assets/app-BS9_-DhN.js +0 -14146
  561. package/bundled-test-harness/assets/apply-markdown-edit-test-4zlwt0Db.js +0 -230
  562. package/bundled-test-harness/assets/ask-user-picker-Dr-0qpNr.js +0 -370
  563. package/bundled-test-harness/assets/ask-user-picker-test-633AFdmS.js +0 -39
  564. package/bundled-test-harness/assets/assistant-transcript-test-BgRnLvMg.js +0 -57
  565. package/bundled-test-harness/assets/audio-metadata-extractor-test-4xsQqL-0.js +0 -1176
  566. package/bundled-test-harness/assets/authed-fetch-test-663mT5_N.js +0 -73
  567. package/bundled-test-harness/assets/avif-image-def-test-h01BPIJy.js +0 -187
  568. package/bundled-test-harness/assets/basic-test-DiD6T-8Q.js +0 -139
  569. package/bundled-test-harness/assets/binary-upload-dedupe-test-CkjMPO_e.js +0 -308
  570. package/bundled-test-harness/assets/bot-registration-test-CFZHpwdj.js +0 -97
  571. package/bundled-test-harness/assets/box-test-C3pSy5ED.js +0 -50
  572. package/bundled-test-harness/assets/brand-guide-attachments-test-EoC_u7Vc.js +0 -84
  573. package/bundled-test-harness/assets/brand-guide-custom-css-test-Dn3fvblr.js +0 -196
  574. package/bundled-test-harness/assets/brand-guide-edit-test-NeiT3MyK.js +0 -140
  575. package/bundled-test-harness/assets/brand-logo-mark-field-test-C2A1EnBB.js +0 -86
  576. package/bundled-test-harness/assets/broken-link-template-test-CWn6V5zZ.js +0 -192
  577. package/bundled-test-harness/assets/bundled-base-modules-test-D7mLzpsw.js +0 -54
  578. package/bundled-test-harness/assets/bundled-base-oracle-test-I7xCId_k.js +0 -37
  579. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DFBev0h-.js +0 -236
  580. package/bundled-test-harness/assets/button-BeSuhveJ.js +0 -207
  581. package/bundled-test-harness/assets/bxl-cyclic-graph-test-DPykwvvx.js +0 -47
  582. package/bundled-test-harness/assets/bxl-expression-test-LBWJiFb9.js +0 -250
  583. package/bundled-test-harness/assets/bxl-indexing-test-BuZmLk7y.js +0 -212
  584. package/bundled-test-harness/assets/bxl-platform-module-test-BNIvlkCM.js +0 -71
  585. package/bundled-test-harness/assets/can-invoke-test-t-bFIIeX.js +0 -455
  586. package/bundled-test-harness/assets/can-read-realm-test-2Q_MzRT9.js +0 -56
  587. package/bundled-test-harness/assets/cancel-indexing-job-test-QeYxEukn.js +0 -69
  588. package/bundled-test-harness/assets/capture-test-CJmJG8YR.js +0 -360
  589. package/bundled-test-harness/assets/card-api-test-B43I510H.js +0 -198
  590. package/bundled-test-harness/assets/card-basics-test-CBClzP2y.js +0 -5364
  591. package/bundled-test-harness/assets/card-chooser-paging-test-HEVzf6pR.js +0 -235
  592. package/bundled-test-harness/assets/card-chooser-test-GfjBRPFI.js +0 -393
  593. package/bundled-test-harness/assets/card-context-search-results-CoSr4EdS.js +0 -30
  594. package/bundled-test-harness/assets/card-context-search-results-test-BLMlZu9t.js +0 -184
  595. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DEBOzKan.js +0 -562
  596. package/bundled-test-harness/assets/card-def-menu-items-test-88_h8o0D.js +0 -228
  597. package/bundled-test-harness/assets/card-delete-test-DKom1phy.js +0 -466
  598. package/bundled-test-harness/assets/card-error-awaiting-index-test-DEwgFZMP.js +0 -53
  599. package/bundled-test-harness/assets/card-error-r6_cXst9.js +0 -72
  600. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-B7LiY15e.js +0 -219
  601. package/bundled-test-harness/assets/card-playground-test-CgyIJHui.js +0 -1491
  602. package/bundled-test-harness/assets/card-prerender-rPfzpIOU.js +0 -12939
  603. package/bundled-test-harness/assets/card-thunk-error-test-L0pvg4Ce.js +0 -48
  604. package/bundled-test-harness/assets/card-type-service-test-B2dhqxSD.js +0 -161
  605. package/bundled-test-harness/assets/check-correctness-test-DgqaLlCW.js +0 -1093
  606. package/bundled-test-harness/assets/check-domain-availability-test-B0hJHY5l.js +0 -98
  607. package/bundled-test-harness/assets/chip-D01NW3WH.js +0 -44
  608. package/bundled-test-harness/assets/choreo-D2Jl79RU.js +0 -1019
  609. package/bundled-test-harness/assets/choreo-_E8SOEe-.js +0 -2
  610. package/bundled-test-harness/assets/choreo-feature-reel-test-WLjsZDmS.js +0 -155
  611. package/bundled-test-harness/assets/choreo-gallery-build-order-test-6jnS8PsS.js +0 -436
  612. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CbUZsVB6.js +0 -399
  613. package/bundled-test-harness/assets/choreo-gallery-cover-test-CbvAStgk.js +0 -214
  614. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-tdjvUSa6.js +0 -133
  615. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-CsnM3hQK.js +0 -42
  616. package/bundled-test-harness/assets/choreo-gallery-drift-test-DG2LQTa7.js +0 -620
  617. package/bundled-test-harness/assets/choreo-gallery-escort-test-mn3-qXP1.js +0 -187
  618. package/bundled-test-harness/assets/choreo-gallery-films-test-BuktaC0D.js +0 -140
  619. package/bundled-test-harness/assets/choreo-gallery-filter-test-Dd-zpps0.js +0 -46
  620. package/bundled-test-harness/assets/choreo-gallery-fold-test-CWc1ijGc.js +0 -180
  621. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-tk2QmYPU.js +0 -114
  622. package/bundled-test-harness/assets/choreo-gallery-guides-test-DVbf1zM4.js +0 -321
  623. package/bundled-test-harness/assets/choreo-gallery-hang-test-B7EFp2dx.js +0 -426
  624. package/bundled-test-harness/assets/choreo-gallery-highlight-test-BFgbdesP.js +0 -60
  625. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-DJb8FC5R.js +0 -370
  626. package/bundled-test-harness/assets/choreo-gallery-interruption-test-DWyMXo5D.js +0 -176
  627. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-D3b8LsJ6.js +0 -104
  628. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CjjU6Rvn.js +0 -193
  629. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Le_h3QWU.js +0 -111
  630. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-Cp-DlWj4.js +0 -127
  631. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-DayS4GCJ.js +0 -100
  632. package/bundled-test-harness/assets/choreo-gallery-presentation-test-DeAfuFS7.js +0 -157
  633. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BgPWpggq.js +0 -145
  634. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-PzyoMNYv.js +0 -89
  635. package/bundled-test-harness/assets/choreo-gallery-sheet-test-CxaiNBkL.js +0 -48
  636. package/bundled-test-harness/assets/choreo-gallery-site-test-6xtSntS5.js +0 -237
  637. package/bundled-test-harness/assets/choreo-gallery-stage-E6Q5r-zU.js +0 -256
  638. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-C7aWMr9a.js +0 -102
  639. package/bundled-test-harness/assets/choreo-gallery-stages-test-CDWWgC61.js +0 -35
  640. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-Bkp15XJv.js +0 -138
  641. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CcGRi_3O.js +0 -144
  642. package/bundled-test-harness/assets/choreo-gallery-theater-test-Qph5pLT_.js +0 -252
  643. package/bundled-test-harness/assets/choreo-gallery-tuning-test-C4DhFLVA.js +0 -95
  644. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-LK493r1M.js +0 -88
  645. package/bundled-test-harness/assets/choreo-gallery-wires-test-B7SeUCc8.js +0 -148
  646. package/bundled-test-harness/assets/client-telemetry-test-DGmHzAFx.js +0 -340
  647. package/bundled-test-harness/assets/clip-BpYQPVz_.js +0 -2
  648. package/bundled-test-harness/assets/clip-CNaYbIwL.js +0 -92
  649. package/bundled-test-harness/assets/code-block-Cp2CJo5-.js +0 -502
  650. package/bundled-test-harness/assets/code-ref-test-C8JBHDb-.js +0 -163
  651. package/bundled-test-harness/assets/code-submode-availability-test-CzG1Tv6L.js +0 -198
  652. package/bundled-test-harness/assets/code-submode-test-BclVWjm5.js +0 -1839
  653. package/bundled-test-harness/assets/codeblocks-test-CmQlyxN7.js +0 -418
  654. package/bundled-test-harness/assets/codemirror-editor-test-B74H_yn8.js +0 -1512
  655. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bz6VEysU.js +0 -366
  656. package/bundled-test-harness/assets/color-field-test-DMCPQKIP.js +0 -212
  657. package/bundled-test-harness/assets/compaction-test-saQCLBrQ.js +0 -150
  658. package/bundled-test-harness/assets/computed-test-C05HliJC.js +0 -1320
  659. package/bundled-test-harness/assets/container-Cqcwrd-m.js +0 -10857
  660. package/bundled-test-harness/assets/container-h3Wc26qn.css +0 -5097
  661. package/bundled-test-harness/assets/content-preview-components-test-DZPj4_CU.js +0 -462
  662. package/bundled-test-harness/assets/copy-and-edit-test-DiXTQNTF.js +0 -292
  663. package/bundled-test-harness/assets/copy-card-test-ys7GquUY.js +0 -218
  664. package/bundled-test-harness/assets/copy-file-to-realm-test-Gn0Wn4vT.js +0 -148
  665. package/bundled-test-harness/assets/copy-source-test-BTLrOmPm.js +0 -56
  666. package/bundled-test-harness/assets/create-file-test-BCeIW-Rt.js +0 -464
  667. package/bundled-test-harness/assets/create-file-test-DbHQ5JsS.js +0 -1086
  668. package/bundled-test-harness/assets/create-listing-modal-test-CeHc4ter.js +0 -273
  669. package/bundled-test-harness/assets/create-listing-pr-request-test-DXbJNfMh.js +0 -117
  670. package/bundled-test-harness/assets/create-spec-test-BDIZoyHT.js +0 -256
  671. package/bundled-test-harness/assets/create-submission-workflow-test-Bix5J-3A.js +0 -132
  672. package/bundled-test-harness/assets/create-workspace-test-BmNnLHwC.js +0 -104
  673. package/bundled-test-harness/assets/credential-fields-test-NK1F4QWn.js +0 -200
  674. package/bundled-test-harness/assets/csv-file-def-test-BSfs4TTP.js +0 -102
  675. package/bundled-test-harness/assets/dashboard-C4T7ffKY.js +0 -3576
  676. package/bundled-test-harness/assets/dashboard-CFeHuP5-.js +0 -81
  677. package/bundled-test-harness/assets/dashboard-DQlpW-ux.css +0 -2392
  678. package/bundled-test-harness/assets/dashboard-add-workspace-test--rr6objf.js +0 -50
  679. package/bundled-test-harness/assets/dashboard-agents-test-D1y8H4xH.js +0 -334
  680. package/bundled-test-harness/assets/dashboard-archive-test-bN4EQaXv.js +0 -128
  681. package/bundled-test-harness/assets/dashboard-delete-test-BvsASb8B.js +0 -163
  682. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-DEsd5ZzZ.js +0 -71
  683. package/bundled-test-harness/assets/dashboard-duplicate-test-BnR0sTgB.js +0 -222
  684. package/bundled-test-harness/assets/dashboard-get-started-test-DG4uUXLv.js +0 -246
  685. package/bundled-test-harness/assets/dashboard-pinned-cards-test-AoGGVRAS.js +0 -220
  686. package/bundled-test-harness/assets/dashboard-reindex-test-BN9a96Xp.js +0 -115
  687. package/bundled-test-harness/assets/dashboard-section-rail-test-B3OT9V2T.js +0 -169
  688. package/bundled-test-harness/assets/dashboard-state-test-BY0Zqrmj.js +0 -162
  689. package/bundled-test-harness/assets/dashboard-test-C13oNpWt.js +0 -545
  690. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DZIV4x5j.js +0 -62
  691. package/bundled-test-harness/assets/dashboard-workspace-test-CBnOQViI.js +0 -537
  692. package/bundled-test-harness/assets/dashboard-workspaces-section-test-KU8ZVOYp.js +0 -396
  693. package/bundled-test-harness/assets/data-file-def-preview-test-CI5gcdtK.js +0 -155
  694. package/bundled-test-harness/assets/date-time-fields-test-D2CpR_Pb.js +0 -359
  695. package/bundled-test-harness/assets/debug-message-test-Df1kHesw.js +0 -117
  696. package/bundled-test-harness/assets/declared-captures-test-hQ43zuox.js +0 -879
  697. package/bundled-test-harness/assets/delete-workspace-test-BhfMKsix.js +0 -102
  698. package/bundled-test-harness/assets/diffing-test-CHRh55mC.js +0 -210
  699. package/bundled-test-harness/assets/download-file-to-realm-test-CC1HURCi.js +0 -119
  700. package/bundled-test-harness/assets/editor-test-DkeCv28f.js +0 -688
  701. package/bundled-test-harness/assets/edits-BSJqtUXM.js +0 -651
  702. package/bundled-test-harness/assets/email-field-test-DihK0suO.js +0 -75
  703. package/bundled-test-harness/assets/enum-field-test-Gja3bzt5.js +0 -935
  704. package/bundled-test-harness/assets/error-display-test-GhYZu7cp.js +0 -343
  705. package/bundled-test-harness/assets/evaluate-module-test-D_t4CiUq.js +0 -91
  706. package/bundled-test-harness/assets/execute-atomic-operations-test-xtou8Zeg.js +0 -113
  707. package/bundled-test-harness/assets/externals-B02-sD_L.js +0 -4393
  708. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DtxzNXdE.js +0 -207
  709. package/bundled-test-harness/assets/fallback-banner-test-BfmiQ_68.js +0 -53
  710. package/bundled-test-harness/assets/fallback-banner-test-DLtTdmvn.js +0 -225
  711. package/bundled-test-harness/assets/fallback-models-test-BxNJxhfd.js +0 -161
  712. package/bundled-test-harness/assets/fetch-card-json-test-DofKbzvC.js +0 -61
  713. package/bundled-test-harness/assets/field-configuration-test-SUoPaXWy.js +0 -551
  714. package/bundled-test-harness/assets/field-markdown-domain-test-BwtR0dPP.js +0 -616
  715. package/bundled-test-harness/assets/field-markdown-oversize-test-D8UJcBc3.js +0 -88
  716. package/bundled-test-harness/assets/field-markdown-primitives-test-D5_ZdoDO.js +0 -365
  717. package/bundled-test-harness/assets/field-markdown-specialized-test-Dpd5hs04.js +0 -534
  718. package/bundled-test-harness/assets/field-playground-test-CzhYzKGv.js +0 -894
  719. package/bundled-test-harness/assets/field-support-predicates-test-BSvVOFth.js +0 -167
  720. package/bundled-test-harness/assets/file-attachment-test-fM-yFedm.js +0 -796
  721. package/bundled-test-harness/assets/file-chooser-panel-test-CKj8YTdY.js +0 -153
  722. package/bundled-test-harness/assets/file-chooser-test-Bs8jFXqa.js +0 -504
  723. package/bundled-test-harness/assets/file-def-format-templates-test-CxrRoWoD.js +0 -380
  724. package/bundled-test-harness/assets/file-def-live-reload-test-X_8YEkve.js +0 -124
  725. package/bundled-test-harness/assets/file-def-menu-items-test-Dx879o_o.js +0 -138
  726. package/bundled-test-harness/assets/file-def-navigation-test-MMI_EEO1.js +0 -109
  727. package/bundled-test-harness/assets/file-def-serialization-test-B5lguBQD.js +0 -89
  728. package/bundled-test-harness/assets/file-def-test-Di9QWcrj.js +0 -216
  729. package/bundled-test-harness/assets/file-preview-live-reload-test-aqx93A7c.js +0 -310
  730. package/bundled-test-harness/assets/file-resource-primitives-test-a5abpcSB.js +0 -255
  731. package/bundled-test-harness/assets/file-tree-from-index-test-CnruGxJ8.js +0 -96
  732. package/bundled-test-harness/assets/file-tree-test-BCyWDdSE.js +0 -851
  733. package/bundled-test-harness/assets/file-view-model-test-BfpLa01Y.js +0 -346
  734. package/bundled-test-harness/assets/filedef-export-shape-test-CQ9XbrzS.js +0 -61
  735. package/bundled-test-harness/assets/film-CL1zj_bJ.js +0 -2
  736. package/bundled-test-harness/assets/film-Dq_quZ31.js +0 -13
  737. package/bundled-test-harness/assets/film-xbkQa060.js +0 -4074
  738. package/bundled-test-harness/assets/flac-audio-def-test-BmVp9dMx.js +0 -143
  739. package/bundled-test-harness/assets/focus-Dm4wkM72.js +0 -306
  740. package/bundled-test-harness/assets/font-metadata-extractor-test-OWEh9_MS.js +0 -415
  741. package/bundled-test-harness/assets/formatted-aibot-message-test-BpHsWpuV.js +0 -109
  742. package/bundled-test-harness/assets/formatted-user-message-test-DZW5TAr0.js +0 -43
  743. package/bundled-test-harness/assets/freestyle-test-D_uaPU_3.js +0 -17
  744. package/bundled-test-harness/assets/full-reindex-realm-test-C6vHL5kC.js +0 -101
  745. package/bundled-test-harness/assets/garbage-collection-test-D-Ao4t2n.js +0 -403
  746. package/bundled-test-harness/assets/general-test-PSGI8W0z.js +0 -923
  747. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-J-m-0E6W.js +0 -65
  748. package/bundled-test-harness/assets/generic-file-def-preview-test-BAsOhTYU.js +0 -71
  749. package/bundled-test-harness/assets/get-available-realm-identifiers-test-D5PBOr97.js +0 -47
  750. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-NM9UURHE.js +0 -47
  751. package/bundled-test-harness/assets/get-default-writable-realm-test-BxXc9a3J.js +0 -54
  752. package/bundled-test-harness/assets/get-published-realms-test-C8TJEc4-.js +0 -71
  753. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-Dt8CB6lS.js +0 -54
  754. package/bundled-test-harness/assets/get-relationship-membership-state-test-9_8x3myJ.js +0 -1308
  755. package/bundled-test-harness/assets/get-user-system-card-test-k0UO-uba.js +0 -67
  756. package/bundled-test-harness/assets/gif-image-def-test-BWrqPGDX.js +0 -188
  757. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BgG8QI9E.js +0 -160
  758. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-BKOvNyCN.js +0 -74
  759. package/bundled-test-harness/assets/gts-file-def-test-BCRHwDeZ.js +0 -100
  760. package/bundled-test-harness/assets/head-format-preview-test-DnfUhniI.js +0 -158
  761. package/bundled-test-harness/assets/helpers-DklkegO_.js +0 -5
  762. package/bundled-test-harness/assets/host-mode-service-vOfN0smp.js +0 -232
  763. package/bundled-test-harness/assets/host-mode-test-CCCJFz6_.js +0 -831
  764. package/bundled-test-harness/assets/host-submode-test-CtCfbuPA.js +0 -1342
  765. package/bundled-test-harness/assets/html-component-test-CWyhb5ZX.js +0 -65
  766. package/bundled-test-harness/assets/html-def-test-Cb8C2lUx.js +0 -160
  767. package/bundled-test-harness/assets/html-meta-extractor-test-BHT9Rtir.js +0 -60
  768. package/bundled-test-harness/assets/hydratable-card-test-DpgpdesD.js +0 -426
  769. package/bundled-test-harness/assets/icon-button-ABCGVF3C.js +0 -67
  770. package/bundled-test-harness/assets/image-metadata-extractor-test-ClhPTouq.js +0 -1109
  771. package/bundled-test-harness/assets/index-changes-test-CgnVr3LH.js +0 -367
  772. package/bundled-test-harness/assets/index-query-engine-test-CQTwju5_.js +0 -2593
  773. package/bundled-test-harness/assets/index-writer-test-IoVOoZT2.js +0 -3040
  774. package/bundled-test-harness/assets/inspector-test-BN2Ieb77.js +0 -2058
  775. package/bundled-test-harness/assets/instance-filter-matcher-test-Bq-_Sy89.js +0 -788
  776. package/bundled-test-harness/assets/instantiate-card-test-DEeDTzFV.js +0 -164
  777. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DP6kOyJS.js +0 -475
  778. package/bundled-test-harness/assets/interact-submode-setup-B0_cHqH-.js +0 -566
  779. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-9uUD91Pw.js +0 -99
  780. package/bundled-test-harness/assets/invite-user-to-room-test-CcDA45Ac.js +0 -142
  781. package/bundled-test-harness/assets/invoke-card-operation-test-DmUtgueM.js +0 -333
  782. package/bundled-test-harness/assets/isolated-render-test-B2eXNHu6.js +0 -51
  783. package/bundled-test-harness/assets/job-scoped-doc-cache-test-DF9D7cOc.js +0 -181
  784. package/bundled-test-harness/assets/job-scoped-instance-residency-test-CSS8xUU5.js +0 -103
  785. package/bundled-test-harness/assets/jpg-image-def-test-voECMTht.js +0 -697
  786. package/bundled-test-harness/assets/json-file-def-test-8Y4KLjUC.js +0 -95
  787. package/bundled-test-harness/assets/key-notices-badge-test-d1mYqx0e.js +0 -155
  788. package/bundled-test-harness/assets/key-readiness-test-BtCg7PCk.js +0 -190
  789. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CyCMbJnN.js +0 -398
  790. package/bundled-test-harness/assets/linksto-error-sentinel-test-BDW572-v.js +0 -238
  791. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-B4wM97hD.js +0 -354
  792. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-BhJmtJ0_.js +0 -303
  793. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BpBQ5V_i.js +0 -197
  794. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-pkBBl4e9.js +0 -260
  795. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-Bb6wjUdD.js +0 -196
  796. package/bundled-test-harness/assets/lint-and-fix-test-CcMLn-co.js +0 -51
  797. package/bundled-test-harness/assets/live-test-AyBnq7BX.js +0 -2
  798. package/bundled-test-harness/assets/live-test-CgnAcIDw.js +0 -100
  799. package/bundled-test-harness/assets/load-default-skills-test-BIOwtx0Y.js +0 -74
  800. package/bundled-test-harness/assets/loader-parallel-prefetch-test-D5_oRSER.js +0 -257
  801. package/bundled-test-harness/assets/loader-test-DSc_jR1c.js +0 -482
  802. package/bundled-test-harness/assets/loading-test-8pldx7S-.js +0 -63
  803. package/bundled-test-harness/assets/m4a-audio-def-test-BDI5apzM.js +0 -190
  804. package/bundled-test-harness/assets/main-5kHyCkdm.js +0 -5
  805. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-Wud0s7WZ.js +0 -470
  806. package/bundled-test-harness/assets/markdown-embed-chooser-test-DVzzS-0C.js +0 -334
  807. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B5W_iqsi.js +0 -447
  808. package/bundled-test-harness/assets/markdown-embed-preview-test-CZF_s0fB.js +0 -368
  809. package/bundled-test-harness/assets/markdown-fallback-test-fT6BS4W7.js +0 -316
  810. package/bundled-test-harness/assets/markdown-file-def-test-B1aTzazR.js +0 -380
  811. package/bundled-test-harness/assets/markdown-helpers-test-gNKZf7Mw.js +0 -188
  812. package/bundled-test-harness/assets/markdown-highlighting-test-Du5_CQmD.js +0 -244
  813. package/bundled-test-harness/assets/markdown-preview-h-_aJhRc.js +0 -72
  814. package/bundled-test-harness/assets/markdown-preview-test-DJvoVsXw.js +0 -238
  815. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-VwJi3Paj.js +0 -146
  816. package/bundled-test-harness/assets/markdown-skill-search-test-ysCdf0xM.js +0 -80
  817. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-K2JuMy36.js +0 -63
  818. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-CkdL_-os.js +0 -300
  819. package/bundled-test-harness/assets/matrix-service-personal-realm-test-Dy1DultK.js +0 -125
  820. package/bundled-test-harness/assets/matrix-service-realm-servers-test-DHDDKuEg.js +0 -55
  821. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-DcTbZpMl.js +0 -132
  822. package/bundled-test-harness/assets/matrix-service-relogin-test-D3NQktoa.js +0 -59
  823. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-6CAflWOA.js +0 -35
  824. package/bundled-test-harness/assets/menu-kUSaJIPq.js +0 -3562
  825. package/bundled-test-harness/assets/message-service-subscription-test-DaQdgDWi.js +0 -110
  826. package/bundled-test-harness/assets/message-service-test-BsGEgM_m.js +0 -144
  827. package/bundled-test-harness/assets/message-tool-test-BB_4kw1V.js +0 -33
  828. package/bundled-test-harness/assets/midi-audio-def-test-BbbkFjqf.js +0 -182
  829. package/bundled-test-harness/assets/migrate-skill-test-X9xImDuq.js +0 -161
  830. package/bundled-test-harness/assets/mini-AwF31elJ.js +0 -1404
  831. package/bundled-test-harness/assets/mini-card-chooser-test-BZtrEiWu.js +0 -272
  832. package/bundled-test-harness/assets/mini-file-chooser-test-MIHW3kCI.js +0 -201
  833. package/bundled-test-harness/assets/mock-matrix-Dd8k0DNa.js +0 -15107
  834. package/bundled-test-harness/assets/mock-matrix-DhPN_34j.js +0 -2
  835. package/bundled-test-harness/assets/modal-LTh3_oHK.js +0 -322
  836. package/bundled-test-harness/assets/model-cost-tier-test-h1IkU9mp.js +0 -174
  837. package/bundled-test-harness/assets/model-file-extract-test-ntSo0wZF.js +0 -206
  838. package/bundled-test-harness/assets/module-transpile-cache-test-CDeRaaeP.js +0 -67
  839. package/bundled-test-harness/assets/monaco-test-C0Fa744D.js +0 -100
  840. package/bundled-test-harness/assets/mp3-audio-def-test-B4j4qR9H.js +0 -133
  841. package/bundled-test-harness/assets/multiple-stacks-test-BhA25ywL.js +0 -208
  842. package/bundled-test-harness/assets/nested-query-field-render-test-S9Y8YNKB.js +0 -249
  843. package/bundled-test-harness/assets/no-stacks-test-B7VciWyg.js +0 -48
  844. package/bundled-test-harness/assets/number-field-test-CS74lDPN.js +0 -184
  845. package/bundled-test-harness/assets/office-file-def-test-2cKc1pmd.js +0 -263
  846. package/bundled-test-harness/assets/office-metadata-extractor-test-DC8Fo-OW.js +0 -218
  847. package/bundled-test-harness/assets/office-poster-capture-test-Ba0_5UrT.js +0 -203
  848. package/bundled-test-harness/assets/ogg-audio-def-test-CIPQ1d4w.js +0 -196
  849. package/bundled-test-harness/assets/open-create-listing-modal-test-bmQkY5Zl.js +0 -131
  850. package/bundled-test-harness/assets/open-image-in-new-tab-test-DBD7_vMH.js +0 -52
  851. package/bundled-test-harness/assets/open-secure-window-test-BgeuYAqz.js +0 -253
  852. package/bundled-test-harness/assets/open-workspace-test-DRHGljV0.js +0 -46
  853. package/bundled-test-harness/assets/operation-lowering-test-CH1c0pSH.js +0 -2957
  854. package/bundled-test-harness/assets/operations-invocation-test-B1YkCLrv.js +0 -523
  855. package/bundled-test-harness/assets/operations-optimistic-test-DAbtOwsC.js +0 -203
  856. package/bundled-test-harness/assets/operations-query-test-9p1ZIDe-.js +0 -459
  857. package/bundled-test-harness/assets/operations-store-reconciliation-test-D0EQh3w2.js +0 -406
  858. package/bundled-test-harness/assets/operations-test-BQhlrfe3.js +0 -2518
  859. package/bundled-test-harness/assets/operator-mode-acceptance-test-DtHnonEb.js +0 -1195
  860. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DQUxZxaq.js +0 -1036
  861. package/bundled-test-harness/assets/operator-mode-links-test-BJ26HllS.js +0 -797
  862. package/bundled-test-harness/assets/operator-mode-test-DIPDI0qt.js +0 -696
  863. package/bundled-test-harness/assets/operator-mode-ui-test-CfA-fAh4.js +0 -1045
  864. package/bundled-test-harness/assets/overlay-DecPh3nt.js +0 -123
  865. package/bundled-test-harness/assets/overlay-menu-items-test-C6XqjLtu.js +0 -331
  866. package/bundled-test-harness/assets/overlays-Ctp8ePzZ.js +0 -75
  867. package/bundled-test-harness/assets/overlays-CzWpSg5T.js +0 -2
  868. package/bundled-test-harness/assets/overlays-detached-element-test-DvL_8Bb5.js +0 -56
  869. package/bundled-test-harness/assets/panel-CImumikB.js +0 -15124
  870. package/bundled-test-harness/assets/past-sessions-test-N6riGN_I.js +0 -321
  871. package/bundled-test-harness/assets/patch-fields-test-D30_-KwQ.js +0 -1014
  872. package/bundled-test-harness/assets/patch-instance-test-C5rGscZq.js +0 -348
  873. package/bundled-test-harness/assets/pdf-file-def-test-DtiqGRvZ.js +0 -111
  874. package/bundled-test-harness/assets/pdf-metadata-extractor-test-FU02KmdV.js +0 -130
  875. package/bundled-test-harness/assets/permission-checking-realm-test-DqdNJDwU.js +0 -306
  876. package/bundled-test-harness/assets/persist-module-inspector-view-test-BHOAgPVy.js +0 -60
  877. package/bundled-test-harness/assets/persist-scroll-position-test-qtmS518r.js +0 -254
  878. package/bundled-test-harness/assets/phone-number-field-test-DhdaM7uL.js +0 -73
  879. package/bundled-test-harness/assets/pill-menu-test-C9Mrrepl.js +0 -60
  880. package/bundled-test-harness/assets/plate-9n-sXyCw.js +0 -41
  881. package/bundled-test-harness/assets/plate-BnZcAk-_.js +0 -2
  882. package/bundled-test-harness/assets/player-Cu5b4LEJ.js +0 -82
  883. package/bundled-test-harness/assets/player-unk2mkxV.js +0 -2
  884. package/bundled-test-harness/assets/playground-BwA8wFGK.js +0 -58
  885. package/bundled-test-harness/assets/plural-field-components-test-CFNQKETg.js +0 -198
  886. package/bundled-test-harness/assets/png-image-def-test-DG5Vhlqb.js +0 -266
  887. package/bundled-test-harness/assets/policy-audit-confirmation-test-yfKU47LR.js +0 -155
  888. package/bundled-test-harness/assets/policy-scoped-search-test-BjQRDYqR.js +0 -339
  889. package/bundled-test-harness/assets/prerender-file-extract-test-CEU4SaAZ.js +0 -346
  890. package/bundled-test-harness/assets/prerender-html-test-CGB3ClCS.js +0 -670
  891. package/bundled-test-harness/assets/prerender-meta-test-xqc4fW_0.js +0 -614
  892. package/bundled-test-harness/assets/prerender-module-test-CI1TmZw-.js +0 -409
  893. package/bundled-test-harness/assets/prerender-persistence-block-test-Da0dJO_N.js +0 -124
  894. package/bundled-test-harness/assets/prerender-pre-model-error-test-BVLyhk8R.js +0 -61
  895. package/bundled-test-harness/assets/prerender-serialize-cycle-test-glJFfxHU.js +0 -134
  896. package/bundled-test-harness/assets/prerendered-html-read-test-Mp4L0VHQ.js +0 -191
  897. package/bundled-test-harness/assets/pretui-components-test-BBpA9UnA.js +0 -991
  898. package/bundled-test-harness/assets/pretui-components-test-BqFq7rw_.css +0 -730
  899. package/bundled-test-harness/assets/preview-format-test-C55Bwcur.js +0 -103
  900. package/bundled-test-harness/assets/preview-test-CTAhRGU8.js +0 -474
  901. package/bundled-test-harness/assets/process-card-test-UjqpuxB7.js +0 -94
  902. package/bundled-test-harness/assets/profile-settings-modal-C8bCgTMK.js +0 -989
  903. package/bundled-test-harness/assets/publish-realm-ixUB4FPK.js +0 -82
  904. package/bundled-test-harness/assets/publish-realm-test-CrrsdL4W.js +0 -210
  905. package/bundled-test-harness/assets/query-field-barrier-test-DjivFE93.js +0 -113
  906. package/bundled-test-harness/assets/query-field-error-sentinel-test-0HwnV4Mw.js +0 -201
  907. package/bundled-test-harness/assets/query-field-membership-status-test-C8yTTBkc.js +0 -323
  908. package/bundled-test-harness/assets/query-field-page-optin-test-D4l_GcII.js +0 -126
  909. package/bundled-test-harness/assets/query-field-schema-test-DDbcNNm5.js +0 -231
  910. package/bundled-test-harness/assets/query-field-search-throttle-test-CXp50Ax0.js +0 -154
  911. package/bundled-test-harness/assets/query-field-stale-prerender-test-DErzt-Cv.js +0 -152
  912. package/bundled-test-harness/assets/query-fields-test-Dz67fdSl.js +0 -535
  913. package/bundled-test-harness/assets/quick-look-test-B1ijDsh_.js +0 -139
  914. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-DJxZ16H_.js +0 -91
  915. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-BoRQkZ8c.js +0 -45
  916. package/bundled-test-harness/assets/read-source-test-Bl-NjchO.js +0 -67
  917. package/bundled-test-harness/assets/read-text-file-test-CP37CZoo.js +0 -124
  918. package/bundled-test-harness/assets/realm-CaK5mkT-.js +0 -2852
  919. package/bundled-test-harness/assets/realm-api-keys-BNUFWbGR.js +0 -579
  920. package/bundled-test-harness/assets/realm-api-keys-CkshxhXC.js +0 -2
  921. package/bundled-test-harness/assets/realm-api-keys-test-BP8xifjn.js +0 -109
  922. package/bundled-test-harness/assets/realm-api-keys-test-CwdK9YXp.js +0 -588
  923. package/bundled-test-harness/assets/realm-config-iKwE3Htp.js +0 -833
  924. package/bundled-test-harness/assets/realm-config-policy-standing-test-BgVEIDnB.js +0 -290
  925. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-BoJoKzmX.js +0 -274
  926. package/bundled-test-harness/assets/realm-config-settings-test-Kxw-GHye.js +0 -187
  927. package/bundled-test-harness/assets/realm-field-test-CdGOxrFb.js +0 -100
  928. package/bundled-test-harness/assets/realm-indexing-test-CHtsBV2b.js +0 -4380
  929. package/bundled-test-harness/assets/realm-policy-fitted-test--DhNZSdC.js +0 -206
  930. package/bundled-test-harness/assets/realm-policy-test-D7714iVa.js +0 -1141
  931. package/bundled-test-harness/assets/realm-querying-test-Cj1ekZ0H.js +0 -1067
  932. package/bundled-test-harness/assets/realm-server-form-agnostic-test-CZFPNJfD.js +0 -96
  933. package/bundled-test-harness/assets/realm-server-subscriber-test-C86WmBp0.js +0 -46
  934. package/bundled-test-harness/assets/realm-service-info-test-CdgcwKDR.js +0 -67
  935. package/bundled-test-harness/assets/realm-test-DPoLsvKz.js +0 -2364
  936. package/bundled-test-harness/assets/realm-token-refresh-test-Ch35Siwi.js +0 -153
  937. package/bundled-test-harness/assets/realm-url-tooltip-test-x8xWOENK.js +0 -78
  938. package/bundled-test-harness/assets/reasoning-test-BxpE8Jvf.js +0 -221
  939. package/bundled-test-harness/assets/recent-files-test-DTmEzPLq.js +0 -450
  940. package/bundled-test-harness/assets/reindex-realm-test-BQ8KULn4.js +0 -117
  941. package/bundled-test-harness/assets/relationship-loading-state-test-BJoArPWf.js +0 -290
  942. package/bundled-test-harness/assets/remix-card-test-DsTA1KoG.js +0 -58
  943. package/bundled-test-harness/assets/rendered-markdown-DvukulDO.js +0 -292
  944. package/bundled-test-harness/assets/rendered-markdown-test-DxGptXSV.js +0 -587
  945. package/bundled-test-harness/assets/resident-instance-reuse-test-ZWnVu8uj.js +0 -82
  946. package/bundled-test-harness/assets/result-tile-CPyI6Vmv.js +0 -144
  947. package/bundled-test-harness/assets/rich-markdown-field-test-CdygoXIO.js +0 -1647
  948. package/bundled-test-harness/assets/room-message-test-D3NfMqH0.js +0 -484
  949. package/bundled-test-harness/assets/run-D_Px28eF.js +0 -3956
  950. package/bundled-test-harness/assets/run-realm-code-qWCZxmJ7.js +0 -2964
  951. package/bundled-test-harness/assets/run-realm-code-test-UzyeEJq6.js +0 -3844
  952. package/bundled-test-harness/assets/sanitize-module-list-test-Babq44bP.js +0 -85
  953. package/bundled-test-harness/assets/save-card-skip-index-wait-test-BcELXlQ_.js +0 -89
  954. package/bundled-test-harness/assets/schema-editor-test-CEvruZbt.js +0 -785
  955. package/bundled-test-harness/assets/schema-generation-test-hYAMdCrn.js +0 -28
  956. package/bundled-test-harness/assets/scrolling-test-DVIsh-_1.js +0 -412
  957. package/bundled-test-harness/assets/search-adorn-test-CkVhqFd0.js +0 -136
  958. package/bundled-test-harness/assets/search-and-choose-test-DUhOB3FV.js +0 -154
  959. package/bundled-test-harness/assets/search-correlation-id-test-Drn4r26N.js +0 -139
  960. package/bundled-test-harness/assets/search-entries-result-test-DTCRJ_wc.js +0 -234
  961. package/bundled-test-harness/assets/search-entries-test-CE0B47pw.js +0 -1486
  962. package/bundled-test-harness/assets/search-entries-tool-test-C4aG0ckM.js +0 -504
  963. package/bundled-test-harness/assets/search-google-images-test-LyhcB2f3.js +0 -166
  964. package/bundled-test-harness/assets/search-results-D4pSne0x.js +0 -266
  965. package/bundled-test-harness/assets/search-results-test-CRZHhqhn.js +0 -578
  966. package/bundled-test-harness/assets/search-selection-menu-test-B7Y3E_nj.js +0 -108
  967. package/bundled-test-harness/assets/search-sheet-files-test-C2y534g8.js +0 -126
  968. package/bundled-test-harness/assets/search-sheet-persistence-test-DePC59Bk.js +0 -131
  969. package/bundled-test-harness/assets/search-test-Dy8NxFkU.js +0 -2249
  970. package/bundled-test-harness/assets/search-tool-test-lctDaMH3.js +0 -156
  971. package/bundled-test-harness/assets/searchable-option-test-CE64M8oM.js +0 -322
  972. package/bundled-test-harness/assets/searchable-search-doc-test-C6u3mVvT.js +0 -1271
  973. package/bundled-test-harness/assets/section-rail-B_UQX00B.js +0 -113
  974. package/bundled-test-harness/assets/section-rail-test-DIda7MIw.js +0 -256
  975. package/bundled-test-harness/assets/secure-sign-in-CqqqfQG8.js +0 -174
  976. package/bundled-test-harness/assets/secure-sign-in-test-DimbVr_W.js +0 -373
  977. package/bundled-test-harness/assets/segmented-control-iePxSdTS.js +0 -173
  978. package/bundled-test-harness/assets/select-tNs6_xwW.js +0 -175
  979. package/bundled-test-harness/assets/send-ai-assistant-message-test-2GVrMF9Z.js +0 -52
  980. package/bundled-test-harness/assets/send-bot-trigger-event-test-B_3dKfGN.js +0 -56
  981. package/bundled-test-harness/assets/send-request-via-proxy-test-_clNWyYc.js +0 -380
  982. package/bundled-test-harness/assets/sending-test-DCPFXUVg.js +0 -659
  983. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BI0zCs8Y.js +0 -136
  984. package/bundled-test-harness/assets/serialization-test-bjdtVlZL.js +0 -8758
  985. package/bundled-test-harness/assets/set-user-system-card-test-BUv1vL08.js +0 -59
  986. package/bundled-test-harness/assets/setup-BW1mmC7C.js +0 -772
  987. package/bundled-test-harness/assets/setup-DsIcFT-T.js +0 -2
  988. package/bundled-test-harness/assets/shared-link-target-reuse-test-9NeJEjkb.js +0 -207
  989. package/bundled-test-harness/assets/show-card-test-mfyLwusD.js +0 -365
  990. package/bundled-test-harness/assets/signed-capture-link-test-BOtKNCAM.js +0 -132
  991. package/bundled-test-harness/assets/single-stack-test-B4MGjaLk.js +0 -652
  992. package/bundled-test-harness/assets/skills-test-BuP-Yzk1.js +0 -648
  993. package/bundled-test-harness/assets/skip-boot-index-guard-test-Cmrx2-K7.js +0 -46
  994. package/bundled-test-harness/assets/spec-test-BhZDdhVQ.js +0 -1077
  995. package/bundled-test-harness/assets/spinner-CpIBUG9m.js +0 -49
  996. package/bundled-test-harness/assets/src-DGHttmW-.js +0 -216
  997. package/bundled-test-harness/assets/src-DaNDSbp7.js +0 -5
  998. package/bundled-test-harness/assets/stick-to-bottom-resize-test-Dpy3OVum.js +0 -56
  999. package/bundled-test-harness/assets/store-add-test-_IYS8o74.js +0 -50
  1000. package/bundled-test-harness/assets/store-module-rebuild-test-B5VMaICy.js +0 -454
  1001. package/bundled-test-harness/assets/store-search-test-C2VZabrH.js +0 -175
  1002. package/bundled-test-harness/assets/store-test-D6PObxoD.js +0 -3672
  1003. package/bundled-test-harness/assets/structured-theme-test-BHjVeMf-.js +0 -377
  1004. package/bundled-test-harness/assets/summarize-session-test-BFtTuhe0.js +0 -172
  1005. package/bundled-test-harness/assets/svg-image-def-test-BL6lkWUX.js +0 -167
  1006. package/bundled-test-harness/assets/switch-submode-test-6Uv3bZMl.js +0 -168
  1007. package/bundled-test-harness/assets/sync-openrouter-models-test-Dp9E05tL.js +0 -97
  1008. package/bundled-test-harness/assets/test-support-DYm8XZ0E.js +0 -3
  1009. package/bundled-test-harness/assets/test-support-DfnhiIMV.js +0 -99
  1010. package/bundled-test-harness/assets/tests-CZk0Iag2.js +0 -3596
  1011. package/bundled-test-harness/assets/text-file-def-test-CHdC0yIU.js +0 -94
  1012. package/bundled-test-harness/assets/text-input-validator-test-B9ZR8XPU.js +0 -156
  1013. package/bundled-test-harness/assets/text-suggestion-test-CGLspKFQ.js +0 -340
  1014. package/bundled-test-harness/assets/theme-card-test-CXZvSEvG.js +0 -621
  1015. package/bundled-test-harness/assets/theme-dashboard-nav-test-CkEE0ILk.js +0 -196
  1016. package/bundled-test-harness/assets/theme-scheme-island-test-URXTjipF.js +0 -264
  1017. package/bundled-test-harness/assets/titles-C6enAdIv.js +0 -2
  1018. package/bundled-test-harness/assets/titles-Dft1HoUT.js +0 -52
  1019. package/bundled-test-harness/assets/to-device-streaming-test-D33ZOc9o.js +0 -163
  1020. package/bundled-test-harness/assets/token-usage-test-BHQlU4J4.js +0 -160
  1021. package/bundled-test-harness/assets/tools-CrudqfS3.js +0 -774
  1022. package/bundled-test-harness/assets/tools-calling-test-jo7IREau.js +0 -200
  1023. package/bundled-test-harness/assets/tools-test-D1wMfUa0.js +0 -1624
  1024. package/bundled-test-harness/assets/tools-test-Dn1LYsXp.js +0 -3204
  1025. package/bundled-test-harness/assets/tooltip-8Wyz4IIn.css +0 -68
  1026. package/bundled-test-harness/assets/tooltip-CqwLzRz5.js +0 -134
  1027. package/bundled-test-harness/assets/transform-cards-test-BPhwPFtp.js +0 -341
  1028. package/bundled-test-harness/assets/ts-file-def-preview-test-Bq3zTgw8.js +0 -95
  1029. package/bundled-test-harness/assets/ts-file-def-test-GLswMl7O.js +0 -92
  1030. package/bundled-test-harness/assets/ttf-font-def-test-DQulvUWs.js +0 -206
  1031. package/bundled-test-harness/assets/turn-settling-test-BspmOUQP.js +0 -160
  1032. package/bundled-test-harness/assets/turn-summary-9A8nvC0-.js +0 -1039
  1033. package/bundled-test-harness/assets/unpublish-realm-test-SkYPEhDz.js +0 -102
  1034. package/bundled-test-harness/assets/update-room-skills-test-cTxb-WU6.js +0 -240
  1035. package/bundled-test-harness/assets/use-ai-assistant-test-uaqW1T_A.js +0 -384
  1036. package/bundled-test-harness/assets/user-message-BudkIP-3.js +0 -262
  1037. package/bundled-test-harness/assets/validate-realm-test-DxrGgH9n.js +0 -67
  1038. package/bundled-test-harness/assets/video-metadata-extractor-test-B2pe-Iqa.js +0 -520
  1039. package/bundled-test-harness/assets/view-visually-test-PNon6fUo.js +0 -335
  1040. package/bundled-test-harness/assets/virtual-network-reset-test-uYJLaQHf.js +0 -96
  1041. package/bundled-test-harness/assets/wav-audio-def-test-F4OrFFR4.js +0 -160
  1042. package/bundled-test-harness/assets/webp-image-def-test-B0a_-Vya.js +0 -226
  1043. package/bundled-test-harness/assets/workspace-Cyftysy9.js +0 -440
  1044. package/bundled-test-harness/assets/workspace-a11y-test-sKiPDcbl.js +0 -197
  1045. package/bundled-test-harness/assets/workspace-actions-BuawjFmZ.js +0 -561
  1046. package/bundled-test-harness/assets/workspace-behavior-test-CKa-pb3T.js +0 -338
  1047. package/bundled-test-harness/assets/workspace-delete-multiple-test-Dt2weG5R.js +0 -212
  1048. package/bundled-test-harness/assets/workspace-delete-summary-test-CkqgFqZ8.js +0 -63
  1049. package/bundled-test-harness/assets/workspace-hosting-test-Ci7EEtHP.js +0 -138
  1050. package/bundled-test-harness/assets/workspace-indexing-test-BPVxxY6W.js +0 -71
  1051. package/bundled-test-harness/assets/workspace-test-CWr7vFbg.js +0 -385
  1052. package/bundled-test-harness/assets/workspace-test-INNpQovc.js +0 -51
  1053. package/bundled-test-harness/assets/workspace-timestamp-labels-test-CigQb5wr.js +0 -68
  1054. package/bundled-test-harness/assets/workspace-unit-test-BwVKpuXT.js +0 -122
  1055. package/bundled-test-harness/assets/write-binary-file-test-BKP3gv1k.js +0 -124
  1056. package/bundled-test-harness/assets/write-text-file-test-B6ijTKTa.js +0 -191
  1057. package/bundled-test-harness/assets/zip-archive-test-C-PBzkTn.js +0 -285
  1058. package/bundled-test-harness/assets/zip-file-def-test-FyCzJT-9.js +0 -164
@@ -0,0 +1,3628 @@
1
+ import { r as __exportAll } from "./chunk-Rp0pCe6z.js";
2
+ import { n as decorateMethodV2, r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
3
+ import { Fn as APP_BOXEL_ACTIVE_LLM, Gn as APP_BOXEL_LLM_MODE, Jo as isCardInstance, ks as logger, nr as APP_BOXEL_ROOM_SKILLS_EVENT_TYPE, pr as DEFAULT_FALLBACK_MODELS } from "./runtime-common-BTaLJEw-.js";
4
+ import { C as resolveRRIReference, T as rri } from "./paths-C9-NYXnM.js";
5
+ import { O as baseRealm } from "./constants-Icc0nFW-.js";
6
+ import { A as trimJsonExtension } from "./bfm-card-references-Cjos2rOp.js";
7
+ import { Vn as guidFor, et as tracked, wt as setComponentTemplate } from "./cache-DtDz7X5V-Wn8jRDfL.js";
8
+ import { d as action, r as service, t as Service } from "./service-LFpJ8EEP.js";
9
+ import { H as templateFactory, S as on, ht as typeOf } from "./index-DaCZcoCY-CgzbilMy.js";
10
+ import { n as src_default } from "./src-DPaAwa4H.js";
11
+ import { l as NewSessionIdPersistenceKey } from "./local-storage-keys-CS7XLz7J.js";
12
+ import { l as didCancel, n as buildTask } from "./async-arrow-runtime-STsj7E8Y.js";
13
+ import { t as cached } from "./tracking-CNiq91Pk.js";
14
+ import { i as fn, r as concat } from "./helper-BHX0HLF2.js";
15
+ import "./modifier-D0EP-FQ7.js";
16
+ import { n as Submodes, r as capitalize } from "./submode-switcher-BpDa9Rui.js";
17
+ import "./component-BJO47HTh.js";
18
+ import { t as Component } from "./dist-CkA1rgqO.js";
19
+ import { n as tracked$1, t as cached$1 } from "./tracking-800VJb8b.js";
20
+ import "./template-factory-ds9s0u8l.js";
21
+ import { t as templateOnly } from "./template-only-6nVzLWF-.js";
22
+ import { T as add, c as eq, f as not, it as cn_default, l as gt, z as css_var_default } from "./helpers-U4_dLjnS.js";
23
+ import { K as RealmIcon, mt as IconComponent$5, x as IconComponent$6 } from "./components-Ck24ubaT.js";
24
+ import { B as IconComponent$8, n as IconComponent$7 } from "./icons-Ctk-4xDe.js";
25
+ import { r as modifier } from "./dist-nMt-N14r.js";
26
+ import "./internals-BTorg710.js";
27
+ import { n as IconComponent$10, r as IconComponent$11, t as IconComponent$9 } from "./check-R9s-cqQx.js";
28
+ import { t as IconComponent$12 } from "./copy-CQfP-SsZ.js";
29
+ import { a as allSettled, r as timeout } from "./dist-DEVZvbin.js";
30
+ import { t as IconComponent$13 } from "./chevron-down-DUSOcdba.js";
31
+ import "./operator-mode-state-service-Bh__jfq7.js";
32
+ import { t as importResource } from "./import-B4ndFN20.js";
33
+ import { r as provide } from "./dist-Ble0L9o7.js";
34
+ import { t as SearchResults } from "./search-results-DGrNaPxh.js";
35
+ import { i as realmIdentifierSegments } from "./realm-utils-C4Js9BAW.js";
36
+ import { n as getSearchEntriesResource } from "./search-entries-0TMjLUAc.js";
37
+ import { n as isMatrixError } from "./matrix-utils-DgdkiqON.js";
38
+ import { t as CreateAiAssistantRoomTool } from "./create-ai-assistant-room-C41ylhDb.js";
39
+ import { t as SummarizeSessionTool } from "./summarize-session-Dy9LE5PI.js";
40
+ import { t as UpdateRoomSkillsTool } from "./update-room-skills-BmB0o3wG.js";
41
+ import { t as catalogRealmURL } from "./utils-DjDK6b6F.js";
42
+ import { a as resolveSize, i as firstDefined, o as resolveTone, r as emit } from "./pretui-primitives-CRs8NRm0.js";
43
+ import { t as Button } from "./button-BvYQm_A1.js";
44
+ import { a as resolveOpen, d as focusWhen, f as listen, g as rovingTabindex, r as modalBehavior, t as POPUPS_IN_PLACE } from "./overlay-D2rQi8lJ.js";
45
+ import { n as IconButton } from "./icon-button-C1zH38Nc.js";
46
+ import { t as VisuallyHidden } from "./visually-hidden-KvpJ_iic.js";
47
+ import { a as cssValue, i as cssStyleFrom, t as cssDeclaration } from "./pretui-css-BX-BJj3t.js";
48
+ import { t as RealmURLTooltip } from "./realm-url-tooltip-D2wwSzyR.js";
49
+ import { t as perform } from "./perform-g9ba6YNZ.js";
50
+ import { t as keepStyle } from "./keep-style-BE2XHAZs.js";
51
+ import { t as ProgressBar } from "./progress-bar-esZEZGws.js";
52
+ import { t as Spinner } from "./spinner-Bx9x55NA.js";
53
+ import { a as IconComponent$14, i as IconComponent$15, t as Menu } from "./menu-Cl50TSFe.js";
54
+ import { t as IconComponent$16 } from "./alert-triangle-W33oN1Fi.js";
55
+ import { n as IconComponent$17 } from "./play-CwV6e-PP.js";
56
+ import { n as ai_assist_icon_2x_default, t as SegmentedControl } from "./segmented-control-DxJdoJ4Z.js";
57
+ import { o as IconComponent$18 } from "./workspace-actions-jGJSfl8M.js";
58
+ import { a as nearestNavIndexInRow, c as unreachableRealmServersMessage, i as listedFavoriteRealmIdentifiers, l as wallpaperImage, n as isHostedRealm, o as orderedCatalogRealmURLs, r as isOffScreen } from "./workspace-list-7bSufR_6.js";
59
+ import { t as AddWorkspace } from "./add-workspace-CPnNIXS9.js";
60
+ import { t as Select } from "./select-BiQTg2ts.js";
61
+ import { t as IconComponent$19 } from "./settings-BMkO30Yi.js";
62
+ import { i as linkedIds, s as storiesFrom, t as LISTING_FIELDS } from "./catalog-stories-C4pan19Z.js";
63
+ import { a as fitPage, n as HostedPill, t as Workspace } from "./workspace-0LfPqbYB.js";
64
+ import { t as greetingFor } from "./greeting-CKacu-Rn.js";
65
+ //#region app/utils/titleize.ts
66
+ var titleize_exports = /* @__PURE__ */ __exportAll({ titleize: () => titleize });
67
+ function titleize(val) {
68
+ if (!val || typeOf(val) !== "string") return;
69
+ return (val.includes("-") ? val.split("-") : val.split(" ")).map((el) => capitalize(el)).join(" ");
70
+ }
71
+ //#endregion
72
+ //#region app/services/ai-assistant-panel-service.ts
73
+ var ai_assistant_panel_service_exports = /* @__PURE__ */ __exportAll({
74
+ NEW_SESSION_NAME: () => NEW_SESSION_NAME,
75
+ default: () => AiAssistantPanelService
76
+ });
77
+ var NEW_SESSION_NAME = "New AI Assistant Chat";
78
+ var AiAssistantPanelService = class extends Service {
79
+ static {
80
+ decorateFieldV2(this.prototype, "codeSemanticsService", [service]);
81
+ }
82
+ #codeSemanticsService = (initializeDeferredDecorator(this, "codeSemanticsService"), void 0);
83
+ static {
84
+ decorateFieldV2(this.prototype, "toolService", [service]);
85
+ }
86
+ #toolService = (initializeDeferredDecorator(this, "toolService"), void 0);
87
+ static {
88
+ decorateFieldV2(this.prototype, "matrixService", [service]);
89
+ }
90
+ #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
91
+ static {
92
+ decorateFieldV2(this.prototype, "monacoService", [service]);
93
+ }
94
+ #monacoService = (initializeDeferredDecorator(this, "monacoService"), void 0);
95
+ static {
96
+ decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
97
+ }
98
+ #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
99
+ static {
100
+ decorateFieldV2(this.prototype, "localPersistenceService", [service]);
101
+ }
102
+ #localPersistenceService = (initializeDeferredDecorator(this, "localPersistenceService"), void 0);
103
+ static {
104
+ decorateFieldV2(this.prototype, "session", [service]);
105
+ }
106
+ #session = (initializeDeferredDecorator(this, "session"), void 0);
107
+ static {
108
+ decorateFieldV2(this.prototype, "store", [service]);
109
+ }
110
+ #store = (initializeDeferredDecorator(this, "store"), void 0);
111
+ static {
112
+ decorateFieldV2(this.prototype, "displayRoomError", [tracked$1], function() {
113
+ return false;
114
+ });
115
+ }
116
+ #displayRoomError = (initializeDeferredDecorator(this, "displayRoomError"), void 0);
117
+ static {
118
+ decorateFieldV2(this.prototype, "isShowingPastSessions", [tracked$1], function() {
119
+ return false;
120
+ });
121
+ }
122
+ #isShowingPastSessions = (initializeDeferredDecorator(this, "isShowingPastSessions"), void 0);
123
+ deletedRoomIds = /* @__PURE__ */ new Set();
124
+ static {
125
+ decorateFieldV2(this.prototype, "roomToRename", [tracked$1], function() {});
126
+ }
127
+ #roomToRename = (initializeDeferredDecorator(this, "roomToRename"), void 0);
128
+ static {
129
+ decorateFieldV2(this.prototype, "roomToDelete", [tracked$1], function() {});
130
+ }
131
+ #roomToDelete = (initializeDeferredDecorator(this, "roomToDelete"), void 0);
132
+ static {
133
+ decorateFieldV2(this.prototype, "roomDeleteError", [tracked$1], function() {});
134
+ }
135
+ #roomDeleteError = (initializeDeferredDecorator(this, "roomDeleteError"), void 0);
136
+ constructor(owner) {
137
+ super(owner);
138
+ this.resetState();
139
+ this.session.register(this);
140
+ }
141
+ sessionStarted() {
142
+ this.ensureRoomsLoaded();
143
+ }
144
+ ensureRoomsLoaded() {
145
+ if (!this.isOpen) return;
146
+ if (!this.matrixService.currentRoomId && !this.loadRoomsTask.isRunning) return this.loadRoomsTask.perform();
147
+ }
148
+ resetState() {
149
+ this.displayRoomError = false;
150
+ this.isShowingPastSessions = false;
151
+ this.roomToRename = void 0;
152
+ this.roomToDelete = void 0;
153
+ this.roomDeleteError = void 0;
154
+ this.deletedRoomIds.clear();
155
+ src_default.localStorage.removeItem(NewSessionIdPersistenceKey);
156
+ this.loadRoomsTask.cancelAll();
157
+ this.doCreateRoom.cancelAll();
158
+ this.summarizeSessionTask.cancelAll();
159
+ this.copyFileHistoryTask.cancelAll();
160
+ this.prepareSessionContextTask.cancelAll();
161
+ }
162
+ commandModuleResource = importResource(this, () => "@cardstack/base/command");
163
+ get commandModule() {
164
+ if (this.commandModuleResource.error) throw new Error(`Error loading commandModule: ${JSON.stringify(this.commandModuleResource.error)}`);
165
+ if (!this.commandModuleResource.module) throw new Error(`bug: SkillConfigField has not loaded yet--make sure to await this.loaded before using the api`);
166
+ return this.commandModuleResource.module;
167
+ }
168
+ get isAiAssistantHidden() {
169
+ return this.operatorModeStateService.state.submode === Submodes.Host;
170
+ }
171
+ get isOpen() {
172
+ return this.operatorModeStateService.aiAssistantOpen && !this.isAiAssistantHidden;
173
+ }
174
+ get isFocusPillVisible() {
175
+ return !!this.focusPillLabel;
176
+ }
177
+ get focusPillLabel() {
178
+ if (this.operatorModeStateService.state.submode !== Submodes.Code) return;
179
+ let selectedCodeRef = this.codeSemanticsService.selectedCodeRef;
180
+ if (selectedCodeRef?.name) return selectedCodeRef?.name;
181
+ if (this.operatorModeStateService.isViewingCardInCodeMode) return "Card";
182
+ }
183
+ get focusPillItemType() {
184
+ if (this.operatorModeStateService.isViewingCardInCodeMode) return;
185
+ return titleize(this.operatorModeStateService.state.moduleInspector ?? "schema");
186
+ }
187
+ get focusPillFormat() {
188
+ const format = this.operatorModeStateService.currentViewingFormat;
189
+ if (!format) return;
190
+ return titleize(format);
191
+ }
192
+ get focusPillCodeRange() {
193
+ let selection = this.monacoService.trackedSelection;
194
+ if (!selection) return;
195
+ if (!(selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn)) return;
196
+ if (selection.startLineNumber === selection.endLineNumber) return `Line ${selection.startLineNumber}`;
197
+ return `Lines ${selection.startLineNumber}-${selection.endLineNumber}`;
198
+ }
199
+ get focusPillMetaPills() {
200
+ const metaPills = [];
201
+ const itemType = this.focusPillItemType;
202
+ if (itemType) metaPills.push(itemType);
203
+ const format = this.focusPillFormat;
204
+ if (format) metaPills.push(format);
205
+ const codeRange = this.focusPillCodeRange;
206
+ if (codeRange) metaPills.push(codeRange);
207
+ return metaPills;
208
+ }
209
+ openPanel() {
210
+ this.operatorModeStateService.openAiAssistant();
211
+ return this.loadRoomsTask.perform();
212
+ }
213
+ static {
214
+ decorateMethodV2(this.prototype, "openPanel", [action]);
215
+ }
216
+ closePanel() {
217
+ this.operatorModeStateService.closeAiAssistant();
218
+ }
219
+ static {
220
+ decorateMethodV2(this.prototype, "closePanel", [action]);
221
+ }
222
+ displayPastSessions() {
223
+ this.isShowingPastSessions = true;
224
+ }
225
+ static {
226
+ decorateMethodV2(this.prototype, "displayPastSessions", [action]);
227
+ }
228
+ hidePastSessions() {
229
+ this.isShowingPastSessions = false;
230
+ }
231
+ static {
232
+ decorateMethodV2(this.prototype, "hidePastSessions", [action]);
233
+ }
234
+ enterRoom(roomId, hidePastSessionsList = true) {
235
+ this.matrixService.currentRoomId = roomId;
236
+ this.localPersistenceService.setCurrentRoomId(roomId);
237
+ if (hidePastSessionsList) this.hidePastSessions();
238
+ }
239
+ static {
240
+ decorateMethodV2(this.prototype, "enterRoom", [action]);
241
+ }
242
+ async openNewSession() {
243
+ try {
244
+ await this.openPanel();
245
+ await this.createNewSession();
246
+ } catch (error) {
247
+ if (!didCancel(error)) throw error;
248
+ }
249
+ }
250
+ async createNewSession(opts = {
251
+ addSameSkills: false,
252
+ shouldCopyFileHistory: false,
253
+ shouldSummarizeSession: false
254
+ }) {
255
+ this.displayRoomError = false;
256
+ if (this.newSessionId && !opts.addSameSkills && !opts.shouldSummarizeSession && !opts.shouldCopyFileHistory) {
257
+ this.enterRoom(this.newSessionId);
258
+ return;
259
+ }
260
+ await this.doCreateRoom.perform(NEW_SESSION_NAME, opts);
261
+ }
262
+ static {
263
+ decorateMethodV2(this.prototype, "createNewSession", [action]);
264
+ }
265
+ get newSessionId() {
266
+ let id = src_default.localStorage.getItem(NewSessionIdPersistenceKey);
267
+ if (id && this.matrixService.roomResources.has(id) && this.matrixService.roomResources.get(id)?.messages.length === 0) return id;
268
+ }
269
+ get isCreateRoomIdle() {
270
+ return this.doCreateRoom.isIdle;
271
+ }
272
+ get currentRoomResource() {
273
+ if (!this.matrixService.currentRoomId) return;
274
+ return this.matrixService.roomResources.get(this.matrixService.currentRoomId);
275
+ }
276
+ extractSkillIdsFromCurrentRoom() {
277
+ let skillConfig = this.currentRoomResource?.matrixRoom?.skillsConfig;
278
+ let toIds = (fileDefs) => (fileDefs ?? []).map((fileDef) => fileDef.sourceUrl).filter((id) => Boolean(id));
279
+ return {
280
+ enabledSkillIds: toIds(skillConfig?.enabledSkillCards),
281
+ disabledSkillIds: toIds(skillConfig?.disabledSkillCards)
282
+ };
283
+ }
284
+ getPreferredLLMMode() {
285
+ let currentMode = this.currentRoomResource?.activeLLMMode;
286
+ if (currentMode) return currentMode;
287
+ let latestRoom = this.latestRoom;
288
+ if (!latestRoom) return;
289
+ return this.matrixService.roomResources.get(latestRoom.roomId)?.activeLLMMode;
290
+ }
291
+ collectFileHistory(roomId) {
292
+ if (!roomId) return {
293
+ attachedFiles: [],
294
+ attachedCards: []
295
+ };
296
+ const roomResource = this.matrixService.roomResources.get(roomId);
297
+ if (!roomResource) return {
298
+ attachedFiles: [],
299
+ attachedCards: []
300
+ };
301
+ const seenFileUrls = /* @__PURE__ */ new Set();
302
+ const seenCardUrls = /* @__PURE__ */ new Set();
303
+ const attachedFiles = [];
304
+ const attachedCards = [];
305
+ for (const message of roomResource.messages) {
306
+ if (message.attachedFiles) {
307
+ for (const file of message.attachedFiles) if (file.sourceUrl && !seenFileUrls.has(file.sourceUrl)) {
308
+ seenFileUrls.add(file.sourceUrl);
309
+ attachedFiles.push(file);
310
+ }
311
+ }
312
+ if (message.attachedCardIds) {
313
+ for (const cardId of message.attachedCardIds) if (cardId && !seenCardUrls.has(cardId)) {
314
+ seenCardUrls.add(cardId);
315
+ const card = this.store.peek(cardId);
316
+ if (card && isCardInstance(card)) attachedCards.push(card);
317
+ }
318
+ }
319
+ }
320
+ return {
321
+ attachedFiles,
322
+ attachedCards
323
+ };
324
+ }
325
+ doCreateRoom = buildTask(() => ({
326
+ context: this,
327
+ generator: function* (name = NEW_SESSION_NAME, opts) {
328
+ let { addSameSkills, shouldCopyFileHistory, shouldSummarizeSession, deferDefaultSkills } = opts;
329
+ try {
330
+ let roomId;
331
+ let oldRoomId = this.matrixService.currentRoomId;
332
+ if (deferDefaultSkills) roomId = yield this.createFallbackRoom(name);
333
+ else {
334
+ let createRoomCommand = new CreateAiAssistantRoomTool(this.toolService.toolContext);
335
+ let input = { name };
336
+ let llmMode = this.getPreferredLLMMode();
337
+ if (llmMode) input.llmMode = llmMode;
338
+ let enabledSkillIds = [];
339
+ let disabledSkillIds = [];
340
+ if (addSameSkills) ({enabledSkillIds, disabledSkillIds} = this.extractSkillIdsFromCurrentRoom());
341
+ if (enabledSkillIds.length || disabledSkillIds.length) {
342
+ input.enabledSkillIds = enabledSkillIds;
343
+ input.disabledSkillIds = disabledSkillIds;
344
+ } else input.enabledSkillIds = yield this.matrixService.loadDefaultSkills();
345
+ ({roomId} = yield createRoomCommand.execute(input));
346
+ }
347
+ src_default.localStorage.setItem(NewSessionIdPersistenceKey, roomId);
348
+ this.enterRoom(roomId);
349
+ if (deferDefaultSkills) this.applyDefaultSkillsToRoom(roomId);
350
+ if (oldRoomId && (shouldSummarizeSession || shouldCopyFileHistory)) this.prepareSessionContextTask.perform(oldRoomId, roomId, {
351
+ shouldSummarizeSession,
352
+ shouldCopyFileHistory
353
+ });
354
+ } catch (e) {
355
+ console.error(e);
356
+ this.displayRoomError = true;
357
+ }
358
+ }
359
+ }), null, "doCreateRoom", "restartable");
360
+ async createFallbackRoom(name) {
361
+ let userId = this.matrixService.userId;
362
+ if (!userId) throw new Error("Requires userId to create a fallback room");
363
+ let aiBotFullId = this.matrixService.aiBotUserId;
364
+ let llmMode = this.getPreferredLLMMode();
365
+ let systemCard = this.matrixService.systemCard;
366
+ let configuration = systemCard?.defaultModelConfiguration ?? systemCard?.modelConfigurations?.[0];
367
+ let model = configuration?.modelId ?? "anthropic/claude-haiku-5.5";
368
+ let fallback = DEFAULT_FALLBACK_MODELS.find((m) => m.modelId === model);
369
+ let roomPromise = this.matrixService.createRoom({
370
+ preset: this.matrixService.privateChatPreset,
371
+ invite: [aiBotFullId],
372
+ name,
373
+ room_alias_name: encodeURIComponent(`${name} - ${(/* @__PURE__ */ new Date()).toISOString()} - ${userId}`),
374
+ power_level_content_override: { users: {
375
+ [userId]: 100,
376
+ [aiBotFullId]: this.matrixService.aiBotPowerLevel
377
+ } },
378
+ initial_state: [
379
+ {
380
+ type: APP_BOXEL_ACTIVE_LLM,
381
+ content: {
382
+ model,
383
+ toolsSupported: configuration?.toolsSupported ?? fallback?.toolsSupported ?? false,
384
+ inputModalities: configuration?.inputModalities ?? fallback?.inputModalities,
385
+ reasoningEffort: configuration?.reasoningEffort ?? void 0
386
+ }
387
+ },
388
+ {
389
+ type: APP_BOXEL_LLM_MODE,
390
+ content: { mode: llmMode || "ask" }
391
+ },
392
+ {
393
+ type: APP_BOXEL_ROOM_SKILLS_EVENT_TYPE,
394
+ content: {
395
+ enabledSkillCards: [],
396
+ disabledSkillCards: [],
397
+ toolDefinitions: []
398
+ }
399
+ }
400
+ ]
401
+ });
402
+ let timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("Room creation timed out waiting for sync")), 3e4));
403
+ let { room_id: roomId } = await Promise.race([roomPromise, timeoutPromise]);
404
+ return roomId;
405
+ }
406
+ async applyDefaultSkillsToRoom(roomId) {
407
+ try {
408
+ let skillIds = await this.matrixService.loadDefaultSkills();
409
+ if (!skillIds.length) return;
410
+ await new UpdateRoomSkillsTool(this.toolService.toolContext).execute({
411
+ roomId,
412
+ skillCardIdsToActivate: skillIds
413
+ });
414
+ } catch (e) {
415
+ console.error("Failed to apply default skills to room:", e);
416
+ }
417
+ }
418
+ summarizeSessionTask = buildTask(() => ({
419
+ context: this,
420
+ generator: function* (oldRoomId, newRoomId) {
421
+ try {
422
+ const result = yield new SummarizeSessionTool(this.toolService.toolContext).execute({ roomId: oldRoomId });
423
+ if (!result.summary) return;
424
+ const messageContent = `This is a summary of the previous conversation that should be included as context for our discussion:\n\n${result.summary}`;
425
+ yield this.matrixService.sendMessage(newRoomId, messageContent, [], []);
426
+ } catch (error) {
427
+ console.error("Failed to summarize session:", error);
428
+ }
429
+ }
430
+ }), null, "summarizeSessionTask", "restartable");
431
+ copyFileHistoryTask = buildTask(() => ({
432
+ context: this,
433
+ generator: function* (oldRoomId, roomId) {
434
+ try {
435
+ const { attachedCards, attachedFiles } = this.collectFileHistory(oldRoomId);
436
+ if (attachedFiles.length > 0 || attachedCards.length > 0) yield this.matrixService.sendMessage(roomId, "This session includes files and cards from the previous conversation for context.", attachedCards, attachedFiles);
437
+ } catch (error) {
438
+ console.error("Failed to copy file history:", error);
439
+ }
440
+ }
441
+ }), null, "copyFileHistoryTask", "restartable");
442
+ prepareSessionContextTask = buildTask(() => ({
443
+ context: this,
444
+ generator: function* (oldRoomId, newRoomId, opts) {
445
+ const { shouldSummarizeSession, shouldCopyFileHistory } = opts;
446
+ if (shouldSummarizeSession) yield this.summarizeSessionTask.perform(oldRoomId, newRoomId);
447
+ if (shouldCopyFileHistory) yield this.copyFileHistoryTask.perform(oldRoomId, newRoomId);
448
+ }
449
+ }), null, "prepareSessionContextTask", "restartable");
450
+ get isSummarizingSession() {
451
+ return this.summarizeSessionTask.isRunning;
452
+ }
453
+ get isCopyingFileHistory() {
454
+ return this.copyFileHistoryTask.isRunning;
455
+ }
456
+ get isPreparingSession() {
457
+ return this.isSummarizingSession || this.isCopyingFileHistory;
458
+ }
459
+ skipSessionPreparation() {
460
+ this.summarizeSessionTask.cancelAll();
461
+ this.copyFileHistoryTask.cancelAll();
462
+ this.prepareSessionContextTask.cancelAll();
463
+ }
464
+ static {
465
+ decorateMethodV2(this.prototype, "skipSessionPreparation", [action]);
466
+ }
467
+ get loadingRooms() {
468
+ return this.loadRoomsTask.isRunning;
469
+ }
470
+ async waitForSessionRooms() {
471
+ await this.matrixService.waitForInitialSync();
472
+ await this.matrixService.flushAll;
473
+ await allSettled([...this.matrixService.roomResources.values()].map((r) => r.processing));
474
+ }
475
+ loadRoomsTask = buildTask(() => ({
476
+ context: this,
477
+ generator: function* () {
478
+ yield this.waitForSessionRooms();
479
+ yield this.enterRoomInitially();
480
+ }
481
+ }), null, "loadRoomsTask", "restartable");
482
+ async enterRoomInitially() {
483
+ let persistedRoomId = this.localPersistenceService.getCurrentRoomId();
484
+ if (persistedRoomId) {
485
+ let roomToEnter = this.aiSessionRooms.find((r) => r.roomId === persistedRoomId);
486
+ if (!roomToEnter) {
487
+ let interval;
488
+ try {
489
+ await Promise.race([timeout(2e3), new Promise((resolve) => {
490
+ interval = src_default.setInterval(() => {
491
+ roomToEnter = this.aiSessionRooms.find((r) => r.roomId === persistedRoomId);
492
+ if (roomToEnter) {
493
+ if (interval !== void 0) {
494
+ src_default.clearInterval(interval);
495
+ interval = void 0;
496
+ }
497
+ resolve();
498
+ }
499
+ }, 250);
500
+ })]);
501
+ } finally {
502
+ if (interval !== void 0) src_default.clearInterval(interval);
503
+ }
504
+ }
505
+ if (roomToEnter) {
506
+ this.enterRoom(roomToEnter.roomId);
507
+ return;
508
+ }
509
+ }
510
+ let latestRoom = this.latestRoom;
511
+ if (latestRoom) {
512
+ this.enterRoom(latestRoom.roomId);
513
+ return;
514
+ }
515
+ await this.createNewSession();
516
+ }
517
+ get aiSessionRooms() {
518
+ let sessions = [];
519
+ for (let resource of this.matrixService.roomResources.values()) {
520
+ if (!resource.matrixRoom) continue;
521
+ if (!resource.matrixRoom.hasActiveMember(this.matrixService.aiBotUserId)) continue;
522
+ if (resource.roomId && this.deletedRoomIds.has(resource.roomId)) continue;
523
+ if (this.matrixService.userId && !resource.matrixRoom.hasActiveMember(this.matrixService.userId)) continue;
524
+ if (resource.name && resource.roomId) sessions.push({
525
+ roomId: resource.roomId,
526
+ name: resource.name,
527
+ lastMessage: resource.messages[resource.messages.length - 1],
528
+ created: resource.created,
529
+ lastActiveTimestamp: resource.lastActiveTimestamp
530
+ });
531
+ }
532
+ return sessions.sort((a, b) => this.matrixService.getLastActiveTimestamp(b.roomId, b.lastActiveTimestamp) - this.matrixService.getLastActiveTimestamp(a.roomId, a.lastActiveTimestamp));
533
+ }
534
+ get latestRoom() {
535
+ if (this.aiSessionRooms.length !== 0) return this.aiSessionRooms[0];
536
+ }
537
+ setRoomToRename(room) {
538
+ this.roomToRename = room;
539
+ this.hidePastSessions();
540
+ }
541
+ static {
542
+ decorateMethodV2(this.prototype, "setRoomToRename", [action]);
543
+ }
544
+ onCloseRename() {
545
+ this.roomToRename = void 0;
546
+ this.displayPastSessions();
547
+ }
548
+ static {
549
+ decorateMethodV2(this.prototype, "onCloseRename", [action]);
550
+ }
551
+ setRoomToDelete(room) {
552
+ this.roomDeleteError = void 0;
553
+ if (!room) {
554
+ this.roomToDelete = void 0;
555
+ return;
556
+ }
557
+ this.roomToDelete = {
558
+ id: room.roomId,
559
+ name: room.name || room.roomId
560
+ };
561
+ }
562
+ static {
563
+ decorateMethodV2(this.prototype, "setRoomToDelete", [action]);
564
+ }
565
+ leaveRoom(roomId) {
566
+ this.doLeaveRoom.perform(roomId);
567
+ }
568
+ static {
569
+ decorateMethodV2(this.prototype, "leaveRoom", [action]);
570
+ }
571
+ doLeaveRoom = buildTask(() => ({
572
+ context: this,
573
+ generator: function* (roomId) {
574
+ try {
575
+ this.deletedRoomIds.add(roomId);
576
+ this.matrixService.roomResourcesCache.delete(roomId);
577
+ if (src_default.localStorage.getItem("aiPanelNewSessionId") === roomId) src_default.localStorage.removeItem(NewSessionIdPersistenceKey);
578
+ if (this.matrixService.currentRoomId === roomId) {
579
+ this.localPersistenceService.setCurrentRoomId(void 0);
580
+ if (this.latestRoom) this.enterRoom(this.latestRoom.roomId, false);
581
+ else yield this.createNewSession({
582
+ addSameSkills: false,
583
+ shouldCopyFileHistory: false,
584
+ shouldSummarizeSession: false,
585
+ deferDefaultSkills: true
586
+ });
587
+ }
588
+ this.roomToDelete = void 0;
589
+ yield this.matrixService.leave(roomId);
590
+ yield this.matrixService.forget(roomId);
591
+ } catch (e) {
592
+ this.deletedRoomIds.delete(roomId);
593
+ console.error(e);
594
+ this.roomDeleteError = "Error deleting room";
595
+ if (isMatrixError(e)) this.roomDeleteError += `: ${e.data.error}`;
596
+ else if (e instanceof Error) this.roomDeleteError += `: ${e.message}`;
597
+ }
598
+ }
599
+ }), null, "doLeaveRoom", "restartable");
600
+ };
601
+ //#endregion
602
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/bot.js
603
+ var IconComponent$4 = setComponentTemplate(templateFactory({
604
+ "id": "i3vJib5D",
605
+ "block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"lucide lucide-bot\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M12 8V4H8\"],[12],[13],[10,\"rect\"],[14,\"width\",\"16\"],[14,\"height\",\"12\"],[14,\"x\",\"4\"],[14,\"y\",\"8\"],[14,\"rx\",\"2\"],[12],[13],[10,\"path\"],[14,\"d\",\"M2 14h2M20 14h2M15 13v2M9 13v2\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
606
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/bot.gts",
607
+ "isStrictMode": true
608
+ }), templateOnly());
609
+ IconComponent$4.name = "bot";
610
+ //#endregion
611
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/store.js
612
+ var IconComponent$3 = setComponentTemplate(templateFactory({
613
+ "id": "oBsj54YK",
614
+ "block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"lucide lucide-store\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244\"],[12],[13],[10,\"path\"],[14,\"d\",\"M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
615
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/store.gts",
616
+ "isStrictMode": true
617
+ }), templateOnly());
618
+ IconComponent$3.name = "store";
619
+ //#endregion
620
+ //#region ../pretui/internal/structure-layout.gts
621
+ /** Every spelling of a size this kit will accept. */
622
+ /** Resolve any accepted size spelling to the house enum. */ function pretuiSize(raw, fallback = "m") {
623
+ return resolveSize(raw, fallback);
624
+ }
625
+ Object.assign(Object.create(null), {
626
+ horizontal: "horizontal",
627
+ row: "horizontal",
628
+ vertical: "vertical",
629
+ column: "vertical"
630
+ });
631
+ //#endregion
632
+ //#region ../pretui/components/collapsible.gts
633
+ /**
634
+ * One trigger, one disclosed region.
635
+ *
636
+ * ```hbs
637
+ * <Collapsible @label='Advanced' @defaultOpen={{false}}>
638
+ * <FormRow …/>
639
+ * </Collapsible>
640
+ * ```
641
+ */
642
+ var Collapsible = class extends Component {
643
+ static {
644
+ decorateFieldV2(this.prototype, "internal", [tracked], function() {
645
+ return this.args.defaultOpen ?? false;
646
+ });
647
+ }
648
+ #internal = (initializeDeferredDecorator(this, "internal"), void 0);
649
+ contentId = `${guidFor(this)}-content`;
650
+ triggerId = `${guidFor(this)}-trigger`;
651
+ get open() {
652
+ return this.args.open ?? this.internal;
653
+ }
654
+ get size() {
655
+ return pretuiSize(this.args.size);
656
+ }
657
+ get state() {
658
+ return this.open ? "open" : "closed";
659
+ }
660
+ toggle = () => {
661
+ if (this.args.disabled) return;
662
+ let next = !this.open;
663
+ if (this.args.open === void 0) this.internal = next;
664
+ this.args.onOpenChange?.(next);
665
+ };
666
+ static {
667
+ setComponentTemplate(templateFactory({
668
+ "id": "HbmHqx5Y",
669
+ "block": "[[[11,0],[24,0,\"pretui-collapsible\"],[16,\"data-state\",[30,0,[\"state\"]]],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"data-disabled\",[52,[30,1],\"true\",\"false\"]],[24,\"data-test-pretui-collapsible\",\"\"],[17,2],[24,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[1,\"\\n \"],[11,\"button\"],[16,1,[30,0,[\"triggerId\"]]],[24,0,\"pretui-collapsible-trigger\"],[16,\"aria-expanded\",[52,[30,0,[\"open\"]],\"true\",\"false\"]],[16,\"aria-controls\",[30,0,[\"contentId\"]]],[16,\"aria-disabled\",[52,[30,1],\"true\"]],[16,\"data-state\",[30,0,[\"state\"]]],[24,\"data-test-pretui-collapsible-trigger\",\"\"],[24,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[24,4,\"button\"],[4,[32,0],[\"click\",[30,0,[\"toggle\"]]],null],[12],[1,\"\\n\"],[41,[51,[30,3]],[[[1,\" \"],[10,1],[14,0,\"pretui-collapsible-caret\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,1],[14,0,\"pretui-collapsible-label\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,5]],[[[1,\" \"],[18,5,[[30,0,[\"open\"]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[1,[30,4]],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\\n\"],[1,\" \"],[10,0],[15,1,[30,0,[\"contentId\"]]],[14,0,\"pretui-collapsible-fold\"],[14,\"role\",\"region\"],[15,\"aria-labelledby\",[30,0,[\"triggerId\"]]],[15,\"data-state\",[30,0,[\"state\"]]],[14,\"data-test-pretui-collapsible-content\",\"\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-collapsible-inner\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[18,6,null],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"@disabled\",\"&attrs\",\"@hideCaret\",\"@label\",\"&trigger\",\"&default\"],[\"if\",\"unless\",\"has-block\",\"yield\"]]",
670
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/collapsible.gts",
671
+ "scope": () => [on],
672
+ "isStrictMode": true
673
+ }), this);
674
+ }
675
+ };
676
+ //#endregion
677
+ //#region ../pretui/internal/choice-cards.gts
678
+ var OptionCard = setComponentTemplate(templateFactory({
679
+ "id": "mO2Hqqne",
680
+ "block": "[[[11,\"label\"],[24,0,\"pretui-optioncard\"],[16,\"data-kind\",[30,1]],[16,\"data-selected\",[52,[30,2],\"true\",\"false\"]],[16,\"data-disabled\",[52,[30,3],\"true\",\"false\"]],[16,\"data-test-pretui-choice-card\",[30,4,[\"value\"]]],[17,5],[24,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,\"\\n \"],[11,\"input\"],[24,0,\"pretui-optioncard-input\"],[16,3,[30,6]],[16,2,[30,4,[\"value\"]]],[16,\"checked\",[30,2]],[16,\"disabled\",[30,3]],[24,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[16,4,[30,1]],[4,[32,0],[\"change\",[30,7]],null],[12],[13],[1,\"\\n\"],[41,[30,8],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-media\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[18,10,[[30,4]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,1],[14,0,\"pretui-optioncard-body\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,\"\\n\"],[41,[30,9],[[[1,\" \"],[18,11,[[30,4],[30,2]]],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-title\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,[30,4,[\"title\"]]],[13],[1,\"\\n\"],[41,[30,4,[\"description\"]],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-desc\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,[30,4,[\"description\"]]],[13],[1,\"\\n\"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n\"],[41,[30,4,[\"meta\"]],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-meta\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,[30,4,[\"meta\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,1],[14,0,\"pretui-optioncard-mark\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@kind\",\"@selected\",\"@disabled\",\"@option\",\"&attrs\",\"@name\",\"@onChange\",\"@hasMedia\",\"@custom\",\"&media\",\"&default\"],[\"if\",\"yield\"]]",
681
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/internal/choice-cards.gts",
682
+ "scope": () => [on],
683
+ "isStrictMode": true
684
+ }), templateOnly());
685
+ var ChoiceGrid = setComponentTemplate(templateFactory({
686
+ "id": "wNaY4vbT",
687
+ "block": "[[[11,0],[24,0,\"pretui-choicecards\"],[17,1],[24,\"data-scopedcss-8f2c6951d3-c7147e5aa6\",\"\"],[12],[18,2,null],[13],[1,\"\\n\"]],[\"&attrs\",\"&default\"],[\"yield\"]]",
688
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/internal/choice-cards.gts",
689
+ "isStrictMode": true
690
+ }), templateOnly());
691
+ //#endregion
692
+ //#region ../pretui/components/radio-card.gts
693
+ var RadioCard = class extends Component {
694
+ static {
695
+ decorateFieldV2(this.prototype, "internal", [tracked], function() {
696
+ return this.args.defaultValue;
697
+ });
698
+ }
699
+ #internal = (initializeDeferredDecorator(this, "internal"), void 0);
700
+ generatedName = `${guidFor(this)}-rc`;
701
+ get name() {
702
+ return this.args.name ?? this.generatedName;
703
+ }
704
+ get options() {
705
+ return firstDefined(this.args.options, this.args.items) ?? [];
706
+ }
707
+ get value() {
708
+ return this.args.value ?? this.internal;
709
+ }
710
+ get groupDisabled() {
711
+ return firstDefined(this.args.disabled, this.args.isDisabled) ?? false;
712
+ }
713
+ get orientation() {
714
+ return this.args.orientation ?? "vertical";
715
+ }
716
+ pick = (option, ev) => {
717
+ if (this.args.value === void 0) this.internal = option.value;
718
+ emit([this.args.onValueChange, this.args.onChange], option.value);
719
+ if (this.args.value !== void 0) ev.target.closest(".pretui-choicecards")?.querySelectorAll("input[type=\"radio\"]").forEach((input) => input.checked = input.value === this.value);
720
+ };
721
+ isOn = (option) => this.value === option.value;
722
+ isDisabled = (option) => this.groupDisabled || Boolean(option.disabled);
723
+ static {
724
+ setComponentTemplate(templateFactory({
725
+ "id": "tSyJpYXV",
726
+ "block": "[[[8,[32,0],[[24,\"role\",\"radiogroup\"],[16,\"aria-label\",[30,1]],[16,\"data-orientation\",[30,0,[\"orientation\"]]],[16,\"data-columns\",[30,2]],[24,\"data-test-pretui-radio-card\",\"\"],[17,3]],null,[[\"default\"],[[[[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"options\"]]],null]],null],null,[[[1,\" \"],[8,[32,1],null,[[\"@kind\",\"@name\",\"@option\",\"@selected\",\"@disabled\",\"@onChange\",\"@custom\",\"@hasMedia\"],[\"radio\",[30,0,[\"name\"]],[30,4],[28,[30,0,[\"isOn\"]],[[30,4]],null],[28,[30,0,[\"isDisabled\"]],[[30,4]],null],[28,[32,2],[[30,0,[\"pick\"]],[30,4]],null],[48,[30,8]],[48,[30,9]]]],[[\"default\",\"media\"],[[[[18,8,[[30,5],[30,6]]]],[5,6]],[[[18,9,[[30,7]]]],[7]]]]],[1,\"\\n\"]],[4]],null]],[]]]]]],[\"@label\",\"@columns\",\"&attrs\",\"option\",\"o\",\"selected\",\"o\",\"&default\",\"&media\"],[\"each\",\"-track-array\",\"has-block\",\"yield\"]]",
727
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/radio-card.gts",
728
+ "scope": () => [
729
+ ChoiceGrid,
730
+ OptionCard,
731
+ fn
732
+ ],
733
+ "isStrictMode": true
734
+ }), this);
735
+ }
736
+ };
737
+ //#endregion
738
+ //#region app/components/operator-mode/dashboard/agent-kinds.ts
739
+ var CLI_STEP = {
740
+ title: "Install the Boxel CLI",
741
+ note: "In a terminal, or ask your agent to run it",
742
+ text: "npm install -g @cardstack/boxel-cli"
743
+ };
744
+ var AGENT_KINDS = [
745
+ {
746
+ id: "claude",
747
+ label: "Claude Code",
748
+ hint: "Boxel plugin",
749
+ setup: [
750
+ CLI_STEP,
751
+ {
752
+ title: "Add the Boxel marketplace",
753
+ note: "Type it in Claude Code’s chat",
754
+ text: "/plugin marketplace add cardstack/boxel"
755
+ },
756
+ {
757
+ title: "Install the Boxel plugin",
758
+ text: "/plugin install boxel-cli@cardstack-boxel"
759
+ }
760
+ ]
761
+ },
762
+ {
763
+ id: "codex",
764
+ label: "Codex",
765
+ hint: "Boxel plugin",
766
+ setup: [
767
+ CLI_STEP,
768
+ {
769
+ title: "Add the Boxel marketplace",
770
+ note: "In a terminal, or ask Codex to run it",
771
+ text: "codex plugin marketplace add cardstack/boxel"
772
+ },
773
+ {
774
+ title: "Install both Boxel plugins",
775
+ note: "Open Plugins, add boxel-cli and boxel-skills, then start a new chat",
776
+ text: "/plugins"
777
+ }
778
+ ]
779
+ },
780
+ {
781
+ id: "boxel",
782
+ label: "Boxel AI Assistant",
783
+ hint: "Built into Boxel"
784
+ }
785
+ ];
786
+ function agentKindFor(agent) {
787
+ return AGENT_KINDS.find((kind) => kind.id === agent) ?? AGENT_KINDS[0];
788
+ }
789
+ function usesCodingAgent(agent, agentSetup) {
790
+ return AGENT_KINDS.some((kind) => Boolean(kind.setup) && (kind.id === agent || (agentSetup?.[kind.id] ?? 0) > 0));
791
+ }
792
+ function shownAgentFor(agent, agentSetup) {
793
+ return agentKindFor(usesCodingAgent(agent, agentSetup) ? agent : "boxel");
794
+ }
795
+ function setupStepsFor(kind, workspaceURL) {
796
+ if (!kind.setup) return [];
797
+ return [
798
+ ...kind.setup,
799
+ {
800
+ title: "Open a workspace",
801
+ note: "Your agent signs you in and syncs it",
802
+ text: `Work on my Boxel workspace ${workspaceURL ?? "<workspace URL>"}`,
803
+ isWorkspacePick: true
804
+ },
805
+ {
806
+ title: "Ask for a change",
807
+ text: "Make me a card for tracking tasks in this workspace"
808
+ },
809
+ {
810
+ title: "See it in Boxel",
811
+ note: "Boxel opens with the change live",
812
+ text: "Show it to me in Boxel"
813
+ }
814
+ ];
815
+ }
816
+ //#endregion
817
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/brand-openai.js
818
+ var IconComponent$2 = setComponentTemplate(templateFactory({
819
+ "id": "+NE/ow3a",
820
+ "block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"icon icon-tabler icons-tabler-outline icon-tabler-brand-openai\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"stroke\",\"none\"],[14,\"d\",\"M0 0h24v24H0z\"],[12],[13],[10,\"path\"],[14,\"d\",\"M11.217 19.384A3.501 3.501 0 0 0 18 18.167V13l-6-3.35\"],[12],[13],[10,\"path\"],[14,\"d\",\"M5.214 15.014A3.501 3.501 0 0 0 9.66 20.28L14 17.746V10.8\"],[12],[13],[10,\"path\"],[14,\"d\",\"M6 7.63c-1.391-.236-2.787.395-3.534 1.689a3.474 3.474 0 0 0 1.271 4.745L8 16.578l6-3.348\"],[12],[13],[10,\"path\"],[14,\"d\",\"M12.783 4.616A3.501 3.501 0 0 0 6 5.833V10.9l6 3.45\"],[12],[13],[10,\"path\"],[14,\"d\",\"M18.786 8.986A3.501 3.501 0 0 0 14.34 3.72L10 6.254V13.2\"],[12],[13],[10,\"path\"],[14,\"d\",\"M18 16.302c1.391.236 2.787-.395 3.534-1.689a3.474 3.474 0 0 0-1.271-4.745l-4.308-2.514L10 10.774\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
821
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/brand-openai.gts",
822
+ "isStrictMode": true
823
+ }), templateOnly());
824
+ IconComponent$2.name = "brand-openai";
825
+ //#endregion
826
+ //#region app/components/operator-mode/dashboard/claude-mark.gts
827
+ var ClaudeMark = setComponentTemplate(templateFactory({
828
+ "id": "or8My7t1",
829
+ "block": "[[[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"viewBox\",\"0 0 24 24\"],[24,\"fill\",\"#D97757\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z\"],[12],[13],[13]],[\"&attrs\"],[]]",
830
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/claude-mark.gts",
831
+ "isStrictMode": true
832
+ }), templateOnly());
833
+ //#endregion
834
+ //#region app/components/operator-mode/dashboard/agent-mark.gts
835
+ var AgentMark = setComponentTemplate(templateFactory({
836
+ "id": "ZKWJB6pU",
837
+ "block": "[[[11,1],[16,0,[28,[32,0],[\"agent-mark\"],[[\"is-small\"],[[28,[32,1],[[30,1],\"small\"],null]]]]],[16,\"data-test-agent-mark\",[30,2,[\"id\"]]],[17,3],[24,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[1,\"\\n\"],[41,[28,[32,1],[[30,2,[\"id\"]],\"claude\"],null],[[[1,\" \"],[10,1],[14,0,\"agent-mark-tile\"],[14,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[1,\"\\n \"],[8,[32,2],[[24,0,\"agent-mark-icon\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[28,[32,1],[[30,2,[\"id\"]],\"codex\"],null],[[[1,\" \"],[10,1],[14,0,\"agent-mark-tile\"],[14,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,0,\"agent-mark-icon\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,\"img\"],[14,0,\"agent-mark-image\"],[15,\"src\",[32,4]],[14,\"alt\",\"\"],[14,\"width\",\"32\"],[14,\"height\",\"32\"],[14,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[13],[1,\"\\n \"]],[]]]],[]]],[13],[1,\"\\n\"]],[\"@size\",\"@kind\",\"&attrs\"],[\"if\"]]",
838
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agent-mark.gts",
839
+ "scope": () => [
840
+ cn_default,
841
+ eq,
842
+ ClaudeMark,
843
+ IconComponent$2,
844
+ ai_assist_icon_2x_default
845
+ ],
846
+ "isStrictMode": true
847
+ }), templateOnly());
848
+ //#endregion
849
+ //#region app/components/operator-mode/dashboard/agents.gts
850
+ var log$3 = logger("component:dashboard/agents");
851
+ var COPIED_FEEDBACK_MS = 2e3;
852
+ var HOW_BOXEL_AI_WORKS = [
853
+ {
854
+ title: "Describe what you want",
855
+ note: "In your own words, from any workspace"
856
+ },
857
+ {
858
+ title: "Boxel AI Assistant builds it",
859
+ note: "Cards, fields and data, right in the workspace"
860
+ },
861
+ {
862
+ title: "Refine it in the chat",
863
+ note: "Ask for changes as you look"
864
+ }
865
+ ];
866
+ var Agents = class extends Component {
867
+ static {
868
+ decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
869
+ }
870
+ #aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
871
+ static {
872
+ decorateFieldV2(this.prototype, "matrixService", [service]);
873
+ }
874
+ #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
875
+ static {
876
+ decorateFieldV2(this.prototype, "network", [service]);
877
+ }
878
+ #network = (initializeDeferredDecorator(this, "network"), void 0);
879
+ static {
880
+ decorateFieldV2(this.prototype, "realm", [service]);
881
+ }
882
+ #realm = (initializeDeferredDecorator(this, "realm"), void 0);
883
+ static {
884
+ decorateFieldV2(this.prototype, "realmServer", [service]);
885
+ }
886
+ #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
887
+ static {
888
+ decorateFieldV2(this.prototype, "copied", [tracked$1], function() {
889
+ return null;
890
+ });
891
+ }
892
+ #copied = (initializeDeferredDecorator(this, "copied"), void 0);
893
+ static {
894
+ decorateFieldV2(this.prototype, "pickedWorkspaceURL", [tracked$1]);
895
+ }
896
+ #pickedWorkspaceURL = (initializeDeferredDecorator(this, "pickedWorkspaceURL"), void 0);
897
+ static {
898
+ decorateFieldV2(this.prototype, "expandedAgent", [tracked$1], function() {
899
+ return null;
900
+ });
901
+ }
902
+ #expandedAgent = (initializeDeferredDecorator(this, "expandedAgent"), void 0);
903
+ static {
904
+ decorateFieldV2(this.prototype, "showsCodingAgents", [tracked$1], function() {
905
+ return false;
906
+ });
907
+ }
908
+ #showsCodingAgents = (initializeDeferredDecorator(this, "showsCodingAgents"), void 0);
909
+ static {
910
+ decorateFieldV2(this.prototype, "openedAgent", [tracked$1]);
911
+ }
912
+ #openedAgent = (initializeDeferredDecorator(this, "openedAgent"), void 0);
913
+ focusPicker = false;
914
+ stepsId = `${guidFor(this)}-steps`;
915
+ agentOptions = AGENT_KINDS.map((kind) => ({
916
+ value: kind.id,
917
+ title: kind.label,
918
+ description: kind.hint
919
+ }));
920
+ get usesCodingAgent() {
921
+ return usesCodingAgent(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup);
922
+ }
923
+ get isMinimized() {
924
+ return !this.showsCodingAgents && !this.usesCodingAgent;
925
+ }
926
+ get kind() {
927
+ if (this.showsCodingAgents && !this.usesCodingAgent) return agentKindFor(this.openedAgent ?? this.matrixService.dashboardAgent);
928
+ return shownAgentFor(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup);
929
+ }
930
+ showCodingAgents() {
931
+ this.showsCodingAgents = true;
932
+ this.openedAgent = AGENT_KINDS.find((kind) => kind.setup)?.id;
933
+ this.focusPicker = true;
934
+ }
935
+ static {
936
+ decorateMethodV2(this.prototype, "showCodingAgents", [action]);
937
+ }
938
+ focusIfOpened = modifier((picker) => {
939
+ if (this.focusPicker) {
940
+ this.focusPicker = false;
941
+ picker.querySelector("input:checked")?.focus();
942
+ }
943
+ });
944
+ get copiedResult() {
945
+ return this.copied?.agent === this.kind.id ? this.copied : null;
946
+ }
947
+ copyFailed = (index) => this.copiedResult?.index === index && !this.copiedResult.ok;
948
+ copyTooltip = (index) => this.copiedResult?.index !== index ? "Copy" : this.copiedResult.ok ? "Copied" : "Copy failed";
949
+ copyIcon = (index) => this.copiedResult?.index !== index ? IconComponent$12 : this.copiedResult.ok ? IconComponent$9 : IconComponent$10;
950
+ copyIconStroke = (index) => this.copiedResult?.index === index ? "3" : void 0;
951
+ get isBuiltIn() {
952
+ return !this.kind.setup;
953
+ }
954
+ get workspaceOptions() {
955
+ let own = this.realmServer.userRealmIdentifiers.filter((url) => this.realm.canWrite(url));
956
+ let ownSet = new Set(own);
957
+ let favorites = this.matrixService.workspaceFavorites.filter((url) => ownSet.has(url));
958
+ return [...new Set([...favorites, ...own])].map((url) => ({
959
+ value: url,
960
+ label: this.realm.info(url).name
961
+ }));
962
+ }
963
+ static {
964
+ decorateMethodV2(this.prototype, "workspaceOptions", [cached$1]);
965
+ }
966
+ get workspaceURL() {
967
+ let options = this.workspaceOptions;
968
+ return options.find(({ value }) => value === this.pickedWorkspaceURL)?.value ?? options[0]?.value;
969
+ }
970
+ get steps() {
971
+ let id = this.workspaceURL;
972
+ return setupStepsFor(this.kind, id ? this.toURL(id) : void 0);
973
+ }
974
+ static {
975
+ decorateMethodV2(this.prototype, "steps", [cached$1]);
976
+ }
977
+ toURL(id) {
978
+ try {
979
+ return this.network.virtualNetwork.toURL(id).href;
980
+ } catch {
981
+ return id;
982
+ }
983
+ }
984
+ get copiedCount() {
985
+ let copied = this.matrixService.dashboardState.agentSetup?.[this.kind.id];
986
+ return Math.min(copied ?? 0, this.steps.length);
987
+ }
988
+ get copiedMessage() {
989
+ let result = this.copiedResult;
990
+ if (!result) return "";
991
+ let step = `Step ${result.index + 1}`;
992
+ return result.ok ? `${step} copied` : `${step} copy failed`;
993
+ }
994
+ get isSetupDone() {
995
+ return this.steps.length > 0 && this.copiedCount === this.steps.length;
996
+ }
997
+ get showsSteps() {
998
+ return !this.isSetupDone || this.expandedAgent === this.kind.id;
999
+ }
1000
+ toggleSteps() {
1001
+ this.expandedAgent = this.showsSteps ? null : this.kind.id;
1002
+ }
1003
+ static {
1004
+ decorateMethodV2(this.prototype, "toggleSteps", [action]);
1005
+ }
1006
+ stepState = (index) => index < this.copiedCount ? "is-done" : index === this.copiedCount ? "is-next" : "is-later";
1007
+ isCopied = (index) => index < this.copiedCount;
1008
+ async pickAgent(value) {
1009
+ let kind = AGENT_KINDS.find(({ id }) => id === value);
1010
+ if (!kind) return;
1011
+ this.openedAgent = void 0;
1012
+ try {
1013
+ await this.matrixService.pickDashboardAgent(kind.id);
1014
+ } catch (error) {
1015
+ log$3.warn(`saving the picked agent failed: ${error}`);
1016
+ }
1017
+ }
1018
+ static {
1019
+ decorateMethodV2(this.prototype, "pickAgent", [action]);
1020
+ }
1021
+ pickWorkspace(url) {
1022
+ this.pickedWorkspaceURL = url;
1023
+ }
1024
+ static {
1025
+ decorateMethodV2(this.prototype, "pickWorkspace", [action]);
1026
+ }
1027
+ copyTask = buildTask(() => ({
1028
+ context: this,
1029
+ generator: function* (index, text) {
1030
+ let agent = this.kind.id;
1031
+ let copied = {
1032
+ agent,
1033
+ index,
1034
+ ok: true
1035
+ };
1036
+ this.expandedAgent = agent;
1037
+ try {
1038
+ try {
1039
+ yield navigator.clipboard.writeText(text);
1040
+ } catch (error) {
1041
+ log$3.warn(`copying setup step ${index + 1} failed: ${error}`);
1042
+ copied = {
1043
+ agent,
1044
+ index,
1045
+ ok: false
1046
+ };
1047
+ }
1048
+ this.copied = copied;
1049
+ if (copied.ok) {
1050
+ this.saveProgress(agent, index);
1051
+ if (this.openedAgent === agent) {
1052
+ this.openedAgent = void 0;
1053
+ this.matrixService.pickDashboardAgent(agent).catch((error) => {
1054
+ log$3.warn(`saving the picked agent failed: ${error}`);
1055
+ });
1056
+ }
1057
+ }
1058
+ yield timeout(COPIED_FEEDBACK_MS);
1059
+ } finally {
1060
+ if (this.copied === copied) this.copied = null;
1061
+ }
1062
+ }
1063
+ }), null, "copyTask", "restartable");
1064
+ saveProgress(agent, index) {
1065
+ this.matrixService.updateDashboardState((stored) => ({ agentSetup: { [agent]: Math.max(stored.agentSetup?.[agent] ?? 0, index + 1) } })).catch((error) => {
1066
+ log$3.warn(`saving setup progress failed: ${error}`);
1067
+ });
1068
+ }
1069
+ async describeIt() {
1070
+ await this.aiAssistantPanelService.openNewSession();
1071
+ }
1072
+ static {
1073
+ decorateMethodV2(this.prototype, "describeIt", [action]);
1074
+ }
1075
+ static {
1076
+ setComponentTemplate(templateFactory({
1077
+ "id": "SL6zYC8e",
1078
+ "block": "[[[11,0],[24,0,\"agents\"],[24,\"data-test-agents\",\"\"],[17,1],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[41,[51,[30,0,[\"isMinimized\"]]],[[[1,\" \"],[8,[32,0],[[24,\"data-test-agent-picker\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[30,0,[\"focusIfOpened\"]],null,null]],[[\"@options\",\"@value\",\"@onValueChange\",\"@orientation\",\"@label\"],[[30,0,[\"agentOptions\"]],[30,0,[\"kind\",\"id\"]],[30,0,[\"pickAgent\"]],\"horizontal\",\"Your agent\"]],[[\"media\"],[[[[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@kind\"],[[28,[32,2],[[30,2,[\"value\"]]],null]]],null],[1,\"\\n \"]],[2]]]]],[1,\"\\n\"]],[]],null],[1,\"\\n\"],[1,\" \"],[10,0],[14,0,\"agent-panel-row\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,\"section\"],[14,0,\"agent-panel\"],[15,\"aria-labelledby\",[28,[32,3],[[30,0,[\"stepsId\"]],\"-title\"],null]],[15,\"data-test-agent-panel\",[30,0,[\"kind\",\"id\"]]],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"panel-head\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@kind\",\"@size\"],[[30,0,[\"kind\"]],\"small\"]],null],[1,\"\\n \"],[10,\"h4\"],[14,0,\"panel-title\"],[15,1,[28,[32,3],[[30,0,[\"stepsId\"]],\"-title\"],null]],[14,\"data-test-agent-panel-title\",\"\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[1,[52,[30,0,[\"isBuiltIn\"]],\"Build with\",\"Connect\"]],[1,\"\\n \"],[1,[30,0,[\"kind\",\"label\"]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"isBuiltIn\"]],[[[1,\" \"],[10,2],[14,0,\"panel-note\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"Built into Boxel, with nothing to install.\\n Uses credits.\"],[13],[1,\"\\n \"],[10,\"ol\"],[14,0,\"step-list\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,3],[[28,[31,3],[[32,4]],null]],null],null,[[[1,\" \"],[10,\"li\"],[14,0,\"step is-later\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-number\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[28,[32,5],[[30,4],1],null]],[13],[1,\"\\n \"],[10,0],[14,0,\"step-content\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-title\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,3,[\"title\"]]],[13],[1,\"\\n \"],[10,1],[14,0,\"step-note\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,3,[\"note\"]]],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[3,4]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,6],[[24,0,\"describe-it\"],[24,\"data-test-agent-describe-it\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[30,0,[\"describeIt\"]]],null]],[[\"@tone\",\"@appearance\"],[\"primary\",\"accent\"]],[[\"default\"],[[[[1,\"\\n Describe it\\n \"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,8],[[24,\"data-test-agent-setup-progress\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@value\",\"@max\",\"@count\",\"@label\"],[[30,0,[\"copiedCount\"]],[30,0,[\"steps\",\"length\"]],[28,[32,3],[[30,0,[\"copiedCount\"]],\" of \",[30,0,[\"steps\",\"length\"]],\" copied\"],null],\"Setup\"]],null],[1,\"\\n\"],[41,[30,0,[\"isSetupDone\"]],[[[1,\" \"],[8,[32,6],[[24,0,\"steps-toggle\"],[16,\"aria-expanded\",[52,[30,0,[\"showsSteps\"]],\"true\",\"false\"]],[16,\"aria-controls\",[52,[30,0,[\"showsSteps\"]],[30,0,[\"stepsId\"]]]],[24,\"data-test-agent-steps-toggle\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[30,0,[\"toggleSteps\"]]],null]],[[\"@appearance\",\"@size\"],[\"link\",\"s\"]],[[\"default\"],[[[[1,\"\\n \"],[1,[52,[30,0,[\"showsSteps\"]],\"Hide steps\",\"Show steps\"]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[41,[30,0,[\"showsSteps\"]],[[[1,\" \"],[10,\"ol\"],[14,0,\"step-list\"],[15,1,[30,0,[\"stepsId\"]]],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,3],[[28,[31,3],[[30,0,[\"steps\"]]],null]],null],\"title\",[[[1,\" \"],[10,\"li\"],[15,0,[28,[32,9],[\"step\",[28,[30,0,[\"stepState\"]],[[30,6]],null]],null]],[15,\"data-test-agent-step\",[28,[32,5],[[30,6],1],null]],[15,\"data-test-agent-step-copied\",[52,[28,[30,0,[\"isCopied\"]],[[30,6]],null],\"true\",\"false\"]],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-number\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[41,[28,[30,0,[\"isCopied\"]],[[30,6]],null],[[[1,\" \"],[8,[32,10],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"stroke-width\",\"3\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,null],[1,\"\\n\"]],[]],[[[1,\" \"],[1,[28,[32,5],[[30,6],1],null]],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,0],[14,0,\"step-content\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-title\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[1,[30,5,[\"title\"]]],[1,\"\\n\"],[41,[28,[30,0,[\"isCopied\"]],[[30,6]],null],[[[1,\" \"],[8,[32,11],[[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,[[\"default\"],[[[[1,\"(copied)\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,5,[\"note\"]],[[[1,\" \"],[10,1],[14,0,\"step-note\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,5,[\"note\"]]],[13],[1,\"\\n\"]],[]],null],[41,[30,5,[\"isWorkspacePick\"]],[[[41,[30,0,[\"workspaceOptions\",\"length\"]],[[[1,\" \"],[8,[32,12],[[24,0,\"workspace-pick\"],[24,\"data-test-agent-workspace-pick\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@options\",\"@value\",\"@onValueChange\",\"@label\"],[[30,0,[\"workspaceOptions\"]],[30,0,[\"workspaceURL\"]],[30,0,[\"pickWorkspace\"]],\"Workspace to open\"]],null],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[10,0],[14,0,\"step-text\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,\"code\"],[14,0,\"step-code\"],[15,1,[28,[32,3],[[30,0,[\"stepsId\"]],\"-\",[30,6],\"-text\"],null]],[14,\"data-test-agent-step-text\",\"\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,5,[\"text\"]]],[13],[1,\"\\n\"],[1,\" \"],[8,[32,13],[[24,0,\"copy\"],[16,\"aria-describedby\",[28,[32,3],[[30,0,[\"stepsId\"]],\"-\",[30,6],\"-text\"],null]],[16,\"data-test-agent-copy\",[28,[32,5],[[30,6],1],null]],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[28,[32,14],[[30,0,[\"copyTask\",\"perform\"]],[30,6],[30,5,[\"text\"]]],null]],null]],[[\"@label\",\"@tooltip\",\"@tone\",\"@appearance\",\"@size\"],[\"Copy\",[28,[30,0,[\"copyTooltip\"]],[[30,6]],null],[52,[28,[30,0,[\"copyFailed\"]],[[30,6]],null],\"danger\",\"neutral\"],\"plain\",\"xs\"]],[[\"default\"],[[[[1,\"\\n\"],[44,[[28,[30,0,[\"copyIcon\"]],[[30,6]],null]],[[[1,\" \"],[8,[30,7],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[16,\"stroke-width\",[28,[30,0,[\"copyIconStroke\"]],[[30,6]],null]],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,null],[1,\"\\n\"]],[7]]],[1,\" \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[5,6]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"isMinimized\"]],[[[1,\" \"],[8,[32,6],[[24,0,\"show-coding-agents\"],[24,\"data-test-agents-show-coding\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[30,0,[\"showCodingAgents\"]]],null]],[[\"@appearance\",\"@size\"],[\"link\",\"s\"]],[[\"default\"],[[[[1,\"\\n Use Claude Code or Codex?\\n \"],[8,[32,15],[[24,0,\"show-coding-agents-icon\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[8,[32,11],[[24,\"role\",\"status\"],[24,\"data-test-agent-copy-status\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[1,[30,0,[\"copiedMessage\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"option\",\"step\",\"index\",\"step\",\"index\",\"CopyIcon\"],[\"unless\",\"if\",\"each\",\"-track-array\",\"let\"]]",
1079
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agents.gts",
1080
+ "scope": () => [
1081
+ RadioCard,
1082
+ AgentMark,
1083
+ agentKindFor,
1084
+ concat,
1085
+ HOW_BOXEL_AI_WORKS,
1086
+ add,
1087
+ Button,
1088
+ on,
1089
+ ProgressBar,
1090
+ cn_default,
1091
+ IconComponent$9,
1092
+ VisuallyHidden,
1093
+ Select,
1094
+ IconButton,
1095
+ fn,
1096
+ IconComponent$5
1097
+ ],
1098
+ "isStrictMode": true
1099
+ }), this);
1100
+ }
1101
+ };
1102
+ //#endregion
1103
+ //#region app/components/operator-mode/dashboard/agents-flyout.gts
1104
+ var log$2 = logger("component:dashboard/agents-flyout");
1105
+ var RECENT_SESSION_COUNT = 3;
1106
+ var AgentsFlyout = class extends Component {
1107
+ static {
1108
+ decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
1109
+ }
1110
+ #aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
1111
+ static {
1112
+ decorateFieldV2(this.prototype, "matrixService", [service]);
1113
+ }
1114
+ #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
1115
+ agentKinds = AGENT_KINDS;
1116
+ sessionsHeadId = `${guidFor(this)}-sessions`;
1117
+ get pickedId() {
1118
+ return shownAgentFor(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup).id;
1119
+ }
1120
+ get recentSessions() {
1121
+ return this.aiAssistantPanelService.aiSessionRooms.slice(0, RECENT_SESSION_COUNT);
1122
+ }
1123
+ async pickAgent(kind) {
1124
+ this.args.close();
1125
+ this.args.showSection();
1126
+ try {
1127
+ await this.matrixService.pickDashboardAgent(kind.id);
1128
+ } catch (error) {
1129
+ log$2.warn(`saving the picked agent failed: ${error}`);
1130
+ }
1131
+ }
1132
+ static {
1133
+ decorateMethodV2(this.prototype, "pickAgent", [action]);
1134
+ }
1135
+ async openSession(roomId) {
1136
+ this.args.close();
1137
+ this.aiAssistantPanelService.enterRoom(roomId);
1138
+ try {
1139
+ await this.aiAssistantPanelService.openPanel();
1140
+ } catch (error) {
1141
+ if (!didCancel(error)) throw error;
1142
+ }
1143
+ }
1144
+ static {
1145
+ decorateMethodV2(this.prototype, "openSession", [action]);
1146
+ }
1147
+ async newSession() {
1148
+ this.args.close();
1149
+ await this.aiAssistantPanelService.openNewSession();
1150
+ }
1151
+ static {
1152
+ decorateMethodV2(this.prototype, "newSession", [action]);
1153
+ }
1154
+ static {
1155
+ setComponentTemplate(templateFactory({
1156
+ "id": "paD8YaSw",
1157
+ "block": "[[[10,\"header\"],[14,0,\"flyout-header\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"flyout-title\"],[15,1,[30,1]],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"Agents\"],[13],[1,\"\\n \"],[10,1],[14,0,\"flyout-hint\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"Build with the agent you use\"],[13],[1,\"\\n\"],[13],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"agentKinds\"]]],null]],null],\"id\",[[[1,\" \"],[8,[32,0],[[24,0,\"flyout-row\"],[16,\"data-test-section-rail-agent\",[30,2,[\"id\"]]],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"pickAgent\"]],[30,2]],null]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"row-content\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],[[\"@kind\",\"@size\"],[[30,2],\"small\"]],null],[1,\"\\n \"],[10,1],[14,0,\"row-title\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,[30,2,[\"label\"]]],[13],[1,\"\\n\"],[41,[28,[32,4],[[30,0,[\"pickedId\"]],[30,2,[\"id\"]]],null],[[[1,\" \"],[8,[32,5],[[24,0,\"row-picked\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],null,null],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],null,[[\"default\"],[[[[1,\"(picked)\"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"row-meta\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,[30,2,[\"hint\"]]],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[2]],null],[1,\"\\n\"],[10,0],[14,\"role\",\"group\"],[15,\"aria-labelledby\",[30,0,[\"sessionsHeadId\"]]],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"flyout-subhead\"],[15,1,[30,0,[\"sessionsHeadId\"]]],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"Boxel AI Assistant\\n sessions\"],[13],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"recentSessions\"]]],null]],null],\"roomId\",[[[1,\" \"],[8,[32,0],[[24,0,\"flyout-row\"],[16,\"data-test-section-rail-ai-session\",[30,3,[\"roomId\"]]],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"openSession\"]],[30,3,[\"roomId\"]]],null]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"row-content\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"row-title\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,[30,3,[\"name\"]]],[13],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[3]],null],[1,\" \"],[8,[32,0],[[24,0,\"flyout-row\"],[24,\"data-test-section-rail-ai-new-session\",\"\"],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[4,[32,1],[\"click\",[30,0,[\"newSession\"]]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"row-content\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[8,[32,7],[[24,\"width\",\"16\"],[24,\"height\",\"16\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"row-title\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"New session\"],[13],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"@titleId\",\"kind\",\"session\"],[\"each\",\"-track-array\",\"if\"]]",
1158
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agents-flyout.gts",
1159
+ "scope": () => [
1160
+ Button,
1161
+ on,
1162
+ fn,
1163
+ AgentMark,
1164
+ eq,
1165
+ IconComponent$9,
1166
+ VisuallyHidden,
1167
+ IconComponent$11
1168
+ ],
1169
+ "isStrictMode": true
1170
+ }), this);
1171
+ }
1172
+ };
1173
+ //#endregion
1174
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/archive-restore.js
1175
+ var IconComponent$1 = setComponentTemplate(templateFactory({
1176
+ "id": "QeRCR7YA",
1177
+ "block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"lucide lucide-archive-restore\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"rect\"],[14,\"width\",\"20\"],[14,\"height\",\"5\"],[14,\"x\",\"2\"],[14,\"y\",\"3\"],[14,\"rx\",\"1\"],[12],[13],[10,\"path\"],[14,\"d\",\"M4 8v11a2 2 0 0 0 2 2h2M20 8v11a2 2 0 0 1-2 2h-2M9 15l3-3 3 3M12 12v9\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1178
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/archive-restore.gts",
1179
+ "isStrictMode": true
1180
+ }), templateOnly());
1181
+ IconComponent$1.name = "archive-restore";
1182
+ //#endregion
1183
+ //#region app/components/operator-mode/dashboard/archived-workspace.gts
1184
+ var ArchivedWorkspace = class extends Component {
1185
+ static {
1186
+ decorateFieldV2(this.prototype, "realmServer", [service]);
1187
+ }
1188
+ #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
1189
+ static {
1190
+ decorateFieldV2(this.prototype, "restoreError", [tracked$1]);
1191
+ }
1192
+ #restoreError = (initializeDeferredDecorator(this, "restoreError"), void 0);
1193
+ get realmInfo() {
1194
+ return {
1195
+ name: this.args.archivedRealm.name,
1196
+ iconURL: this.args.archivedRealm.iconURL,
1197
+ publishable: null
1198
+ };
1199
+ }
1200
+ static {
1201
+ decorateMethodV2(this.prototype, "realmInfo", [cached$1]);
1202
+ }
1203
+ get name() {
1204
+ return this.args.archivedRealm.name;
1205
+ }
1206
+ restoreTask = buildTask(() => ({
1207
+ context: this,
1208
+ generator: function* () {
1209
+ this.restoreError = void 0;
1210
+ try {
1211
+ yield this.realmServer.unarchiveRealm(this.args.archivedRealm.url);
1212
+ } catch (error) {
1213
+ this.restoreError = error.message;
1214
+ }
1215
+ }
1216
+ }), null, "restoreTask", "drop");
1217
+ static {
1218
+ setComponentTemplate(templateFactory({
1219
+ "id": "hRJFSGVP",
1220
+ "block": "[[[11,0],[24,0,\"archived-row\"],[16,\"data-test-archived-workspace\",[30,0,[\"name\"]]],[17,1],[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"thumb\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"]],[[\"@realmURL\",\"@label\",\"@announce\"],[[30,2,[\"url\"]],[30,0,[\"name\"]],true]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"realm-icon-wrapper\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,0,\"realm-icon\"],[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"]],[[\"@realmInfo\"],[[30,0,[\"realmInfo\"]]]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[10,0],[14,0,\"info\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"name\"],[14,\"data-test-archived-workspace-name\",\"\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[1,[30,0,[\"name\"]]],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"restoreError\"]],[[[1,\" \"],[10,1],[14,0,\"restore-error\"],[14,\"role\",\"alert\"],[14,\"data-test-restore-workspace-error\",\"\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,[30,0,[\"restoreError\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[1,\" \"],[8,[32,2],[[24,0,\"restore-btn\"],[16,\"data-test-restore-workspace-btn\",[30,2,[\"url\"]]],[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[4,[32,4],[\"click\",[28,[32,5],[[30,0,[\"restoreTask\"]]],null]],null]],[[\"@appearance\",\"@shape\",\"@size\",\"@icon\",\"@busy\",\"@busyLabel\"],[\"outlined\",\"pill\",\"s\",[32,3],[30,0,[\"restoreTask\",\"isRunning\"]],\"Restoring\"]],[[\"default\"],[[[[1,\"Restore\"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"@archivedRealm\"],[\"if\"]]",
1221
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/archived-workspace.gts",
1222
+ "scope": () => [
1223
+ RealmURLTooltip,
1224
+ RealmIcon,
1225
+ Button,
1226
+ IconComponent$1,
1227
+ on,
1228
+ perform
1229
+ ],
1230
+ "isStrictMode": true
1231
+ }), this);
1232
+ }
1233
+ };
1234
+ //#endregion
1235
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/info-small.js
1236
+ var IconComponent = setComponentTemplate(templateFactory({
1237
+ "id": "aSlui7An",
1238
+ "block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"icon icon-tabler icons-tabler-outline icon-tabler-info-small\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"stroke\",\"none\"],[14,\"d\",\"M0 0h24v24H0z\"],[12],[13],[10,\"path\"],[14,\"d\",\"M12 9h.01M11 12h1v4h1\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1239
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/info-small.gts",
1240
+ "isStrictMode": true
1241
+ }), templateOnly());
1242
+ IconComponent.name = "info-small";
1243
+ //#endregion
1244
+ //#region ../pretui/components/alert.gts
1245
+ var ALERT_TONES = [
1246
+ "info",
1247
+ "success",
1248
+ "warning",
1249
+ "danger"
1250
+ ];
1251
+ var ALERT_VARIANTS = {
1252
+ default: "info",
1253
+ destructive: "danger"
1254
+ };
1255
+ var ALERT_COLORS = {
1256
+ info: {
1257
+ hue: "var(--info)",
1258
+ onHue: "var(--info-foreground)"
1259
+ },
1260
+ success: {
1261
+ hue: "var(--success)",
1262
+ onHue: "var(--success-foreground)"
1263
+ },
1264
+ warning: {
1265
+ hue: "var(--warning)",
1266
+ onHue: "var(--warning-foreground)"
1267
+ },
1268
+ danger: {
1269
+ hue: "var(--destructive)",
1270
+ onHue: "var(--destructive-foreground)"
1271
+ }
1272
+ };
1273
+ var ALERT_ICONS = {
1274
+ info: IconComponent,
1275
+ success: IconComponent$9,
1276
+ warning: IconComponent$16,
1277
+ danger: IconComponent$10
1278
+ };
1279
+ var ALERT_TONE_LABELS = {
1280
+ info: "Info",
1281
+ success: "Success",
1282
+ warning: "Warning",
1283
+ danger: "Error"
1284
+ };
1285
+ var Alert = class extends Component {
1286
+ get tone() {
1287
+ let fromVariant = this.args.variant ? ALERT_VARIANTS[this.args.variant] : void 0;
1288
+ return resolveTone(this.args.tone, ALERT_TONES, fromVariant ?? "info");
1289
+ }
1290
+ get role() {
1291
+ return this.tone === "danger" ? "alert" : "status";
1292
+ }
1293
+ get keptStyle() {
1294
+ let { hue, onHue } = ALERT_COLORS[this.tone];
1295
+ return [{
1296
+ property: "--pretui-alert-hue",
1297
+ value: hue,
1298
+ strength: "arg"
1299
+ }, {
1300
+ property: "--pretui-alert-on-hue",
1301
+ value: onHue,
1302
+ strength: "arg"
1303
+ }];
1304
+ }
1305
+ get Glyph() {
1306
+ return ALERT_ICONS[this.tone];
1307
+ }
1308
+ get spokenTone() {
1309
+ return `${this.args.toneLabel ?? ALERT_TONE_LABELS[this.tone]}:`;
1310
+ }
1311
+ static {
1312
+ setComponentTemplate(templateFactory({
1313
+ "id": "AW1vKexa",
1314
+ "block": "[[[11,0],[24,0,\"pretui-alert\"],[16,\"role\",[30,0,[\"role\"]]],[24,\"data-test-pretui-alert\",\"\"],[17,1],[24,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[4,[32,0],[[30,0,[\"keptStyle\"]]],null],[12],[1,\"\\n \"],[10,1],[14,0,\"pretui-alert-glyph\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[1,\"\\n \"],[8,[30,0,[\"Glyph\"]],[[24,\"width\",\"12\"],[24,\"height\",\"12\"],[24,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"]],null,[[\"default\"],[[[[1,[30,0,[\"spokenTone\"]]]],[]]]]],[1,\"\\n \"],[10,0],[14,0,\"pretui-alert-body\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[1,\"\\n \"],[41,[30,2],[[[10,2],[14,0,\"pretui-alert-title\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[1,[30,2]],[13]],[]],null],[1,\"\\n \"],[41,[48,[30,3]],[[[10,0],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[18,3,null],[13]],[]],null],[1,\"\\n \"],[41,[48,[30,4]],[[[10,0],[14,0,\"pretui-alert-action\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[18,4,null],[13]],[]],null],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"@title\",\"&default\",\"&action\"],[\"if\",\"has-block\",\"yield\"]]",
1315
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/alert.gts",
1316
+ "scope": () => [keepStyle, VisuallyHidden],
1317
+ "isStrictMode": true
1318
+ }), this);
1319
+ }
1320
+ };
1321
+ //#endregion
1322
+ //#region ../pretui/internal/ink.gts
1323
+ function statusHue(value) {
1324
+ let h = 0;
1325
+ let s = String(value);
1326
+ for (let i = 0; i < s.length; i++) h = h * 31 + s.charCodeAt(i) >>> 0;
1327
+ return `var(--chart-${h % 5 + 1})`;
1328
+ }
1329
+ //#endregion
1330
+ //#region ../pretui/components/avatar.gts
1331
+ var STARTS_WITH_WORD_CHAR = /* @__PURE__ */ new RegExp("^[\\p{L}\\p{N}]", "u");
1332
+ var SIZE_PROPERTY = "--pretui-avatar-size";
1333
+ var HUE_PROPERTY = "--pretui-chip-hue";
1334
+ var Avatar = class extends Component {
1335
+ static {
1336
+ decorateFieldV2(this.prototype, "failedSrc", [tracked]);
1337
+ }
1338
+ #failedSrc = (initializeDeferredDecorator(this, "failedSrc"), void 0);
1339
+ get initials() {
1340
+ return (this.args.name ?? "").split(/\s+/).filter((w) => STARTS_WITH_WORD_CHAR.test(w)).map((w) => w[0]).slice(0, 2).join("").toUpperCase();
1341
+ }
1342
+ get showImage() {
1343
+ return Boolean(this.args.src) && this.args.src !== this.failedSrc;
1344
+ }
1345
+ imageError = () => {
1346
+ this.failedSrc = this.args.src;
1347
+ };
1348
+ get size() {
1349
+ let size = Number(this.args.size) || void 0;
1350
+ return size === void 0 ? void 0 : `${size / 16}rem`;
1351
+ }
1352
+ get shape() {
1353
+ let { shape } = this.args;
1354
+ return shape === "rounded" || shape === "square" ? shape : void 0;
1355
+ }
1356
+ get explicitHue() {
1357
+ return this.args.hue ?? void 0;
1358
+ }
1359
+ get hue() {
1360
+ let hue = this.explicitHue;
1361
+ return hue === void 0 ? statusHue(this.args.name ?? "") : cssValue(hue);
1362
+ }
1363
+ get style() {
1364
+ return cssStyleFrom([cssDeclaration(SIZE_PROPERTY, this.size), cssDeclaration(HUE_PROPERTY, this.hue)]);
1365
+ }
1366
+ get keptStyle() {
1367
+ return [{
1368
+ property: SIZE_PROPERTY,
1369
+ value: this.size,
1370
+ strength: "arg"
1371
+ }, {
1372
+ property: HUE_PROPERTY,
1373
+ value: this.hue,
1374
+ strength: this.explicitHue === void 0 ? "default" : "arg"
1375
+ }];
1376
+ }
1377
+ static {
1378
+ setComponentTemplate(templateFactory({
1379
+ "id": "1puKX5ao",
1380
+ "block": "[[[11,1],[24,0,\"pretui-avatar\"],[16,\"title\",[30,1]],[16,\"role\",[52,[51,[30,0,[\"showImage\"]]],\"img\"]],[16,\"aria-label\",[52,[51,[30,0,[\"showImage\"]]],[30,1]]],[16,\"data-has-image\",[52,[30,0,[\"showImage\"]],\"true\"]],[16,\"data-shape\",[30,0,[\"shape\"]]],[16,5,[30,0,[\"style\"]]],[24,\"data-test-pretui-avatar\",\"\"],[17,2],[24,\"data-scopedcss-5178d38d8c-2454ccc101\",\"\"],[4,[32,0],[[30,0,[\"keptStyle\"]]],null],[12],[1,\"\\n \"],[41,[30,0,[\"showImage\"]],[[[11,\"img\"],[16,\"src\",[30,3]],[16,\"alt\",[30,1]],[24,\"data-scopedcss-5178d38d8c-2454ccc101\",\"\"],[4,[32,1],[\"error\",[30,0,[\"imageError\"]]],null],[12],[13]],[]],[[[1,[30,0,[\"initials\"]]]],[]]],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@name\",\"&attrs\",\"@src\"],[\"unless\",\"if\"]]",
1381
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/avatar.gts",
1382
+ "scope": () => [keepStyle, on],
1383
+ "isStrictMode": true
1384
+ }), this);
1385
+ }
1386
+ };
1387
+ //#endregion
1388
+ //#region ../pretui/components/dialog.gts
1389
+ var DIALOG_SIZES = {
1390
+ xs: "s",
1391
+ s: "s",
1392
+ m: "m",
1393
+ l: "l",
1394
+ xl: "l"
1395
+ };
1396
+ var Dialog = class extends Component {
1397
+ get popupsInPlace() {
1398
+ return true;
1399
+ }
1400
+ static {
1401
+ decorateMethodV2(this.prototype, "popupsInPlace", [provide(POPUPS_IN_PLACE)]);
1402
+ }
1403
+ get dismissible() {
1404
+ return this.args.dismissible ?? true;
1405
+ }
1406
+ get open() {
1407
+ return resolveOpen(this.args);
1408
+ }
1409
+ get size() {
1410
+ return DIALOG_SIZES[resolveSize(this.args.size)] ?? "m";
1411
+ }
1412
+ requestClose() {
1413
+ emit([this.args.onClose]);
1414
+ emit([this.args.onOpenChange], false);
1415
+ }
1416
+ onCancel = (e) => {
1417
+ e.preventDefault();
1418
+ if (this.dismissible) this.requestClose();
1419
+ };
1420
+ onClick = (e) => {
1421
+ if (this.dismissible && e.target === e.currentTarget) this.requestClose();
1422
+ };
1423
+ static {
1424
+ setComponentTemplate(templateFactory({
1425
+ "id": "Xsw334hr",
1426
+ "block": "[[[11,\"dialog\"],[24,0,\"pretui-dialog\"],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"aria-label\",[30,1]],[24,\"data-test-pretui-dialog\",\"\"],[17,2],[24,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[4,[32,0],[[30,0,[\"open\"]],[30,0,[\"onCancel\"]],[30,0,[\"onClick\"]]],null],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-dialog-inner\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,3]],[[[1,\" \"],[10,\"header\"],[14,0,\"pretui-dialog-title\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[18,3,null],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,0],[14,0,\"pretui-dialog-body\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[18,4,null],[13],[1,\"\\n\"],[41,[48,[30,5]],[[[1,\" \"],[10,\"footer\"],[14,0,\"pretui-dialog-footer\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[18,5,null],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@label\",\"&attrs\",\"&title\",\"&default\",\"&footer\"],[\"if\",\"has-block\",\"yield\"]]",
1427
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/dialog.gts",
1428
+ "scope": () => [modalBehavior],
1429
+ "isStrictMode": true
1430
+ }), this);
1431
+ }
1432
+ };
1433
+ //#endregion
1434
+ //#region ../pretui/components/item.gts
1435
+ var Item = class extends Component {
1436
+ get size() {
1437
+ return resolveSize(this.args.size);
1438
+ }
1439
+ get align() {
1440
+ return this.args.alignStart ? "start" : "center";
1441
+ }
1442
+ static {
1443
+ setComponentTemplate(templateFactory({
1444
+ "id": "ko3oU85L",
1445
+ "block": "[[[11,0],[24,0,\"pretui-item\"],[24,\"data-test-pretui-item\",\"\"],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"data-align\",[30,0,[\"align\"]]],[16,\"data-wrap\",[52,[30,1],\"true\"]],[17,2],[24,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,6]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-lead\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,6,null],[13],[1,\"\\n\"]],[]],null],[1,\"\\n \"],[10,0],[14,0,\"pretui-item-body\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,7]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-title\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,7,null],[13],[1,\"\\n\"]],[]],[[[41,[30,3],[[[41,[30,4],[[[1,\" \"],[10,3],[14,0,\"pretui-item-title pretui-item-link\"],[15,6,[30,4]],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,[30,3]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-title\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,[30,3]],[13],[1,\"\\n\"]],[]]],[1,\" \"]],[]],null]],[]]],[1,\"\\n\"],[41,[48,[30,8]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-desc\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,8,null],[13],[1,\"\\n\"]],[]],[[[41,[30,5],[[[1,\" \"],[10,1],[14,0,\"pretui-item-desc\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,[30,5]],[13],[1,\"\\n \"]],[]],null]],[]]],[1,\"\\n\"],[41,[48,[30,9]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-content\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,9,null],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\\n\"],[41,[48,[30,10]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-trail\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,10,null],[13],[1,\"\\n\"]],[]],null],[41,[48,[30,11]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-actions\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,11,null],[13],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"]],[\"@wrap\",\"&attrs\",\"@title\",\"@href\",\"@description\",\"&leading\",\"&title\",\"&description\",\"&default\",\"&trailing\",\"&actions\"],[\"if\",\"has-block\",\"yield\"]]",
1446
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/item.gts",
1447
+ "isStrictMode": true
1448
+ }), this);
1449
+ }
1450
+ };
1451
+ //#endregion
1452
+ //#region ../pretui/components/broken-link.gts
1453
+ var BrokenLink = class extends Component {
1454
+ get label() {
1455
+ return this.args.label ?? "missing card";
1456
+ }
1457
+ static {
1458
+ setComponentTemplate(templateFactory({
1459
+ "id": "ANxE2OLx",
1460
+ "block": "[[[11,1],[24,0,\"pretui-broken\"],[24,\"title\",\"This reference is gone\"],[24,\"data-test-pretui-broken-link\",\"\"],[17,1],[24,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[1,\"\\n \"],[10,\"svg\"],[14,\"width\",\"11\"],[14,\"height\",\"11\"],[14,\"viewBox\",\"0 0 12 12\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[10,\"path\"],[14,\"d\",\"M4.5 7.5 2.8 9.2a1.7 1.7 0 0 1-2.4-2.4L2.8 4.4M7.5 4.5l1.7-1.7a1.7 1.7 0 0 1 2.4 2.4L9.2 7.6M1 1l10 10\"],[14,\"fill\",\"none\"],[14,\"stroke\",\"currentColor\"],[14,\"stroke-width\",\"1.3\"],[14,\"stroke-linecap\",\"round\"],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[13],[13],[1,\"\\n \"],[10,1],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[1,[30,0,[\"label\"]]],[13],[1,\"\\n \"],[41,[30,2],[[[10,1],[14,0,\"pretui-broken-id\"],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[1,[30,2]],[13]],[]],null],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"@refId\"],[\"if\"]]",
1461
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/broken-link.gts",
1462
+ "isStrictMode": true
1463
+ }), this);
1464
+ }
1465
+ };
1466
+ //#endregion
1467
+ //#region ../pretui/components/empty-state.gts
1468
+ var EMPTY_STATE_SIZES = {
1469
+ xs: "s",
1470
+ s: "s",
1471
+ m: "m",
1472
+ l: "m",
1473
+ xl: "m"
1474
+ };
1475
+ var EmptyState = class extends Component {
1476
+ get showTexture() {
1477
+ return this.args.texture ?? true;
1478
+ }
1479
+ get separator() {
1480
+ return this.args.separator ?? "or";
1481
+ }
1482
+ get size() {
1483
+ return EMPTY_STATE_SIZES[resolveSize(this.args.size)] ?? "m";
1484
+ }
1485
+ static {
1486
+ setComponentTemplate(templateFactory({
1487
+ "id": "yJcwZ0yC",
1488
+ "block": "[[[11,0],[24,0,\"pretui-empty\"],[16,\"data-size\",[30,0,[\"size\"]]],[24,\"data-test-pretui-empty\",\"\"],[17,1],[24,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,\"\\n \"],[41,[30,0,[\"showTexture\"]],[[[10,0],[14,0,\"pretui-empty-texture\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[13]],[]],null],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-title\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\"],[41,[48,[30,4]],[[[1,\" \"],[10,0],[14,0,\"pretui-empty-msg\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,4,null],[13],[1,\"\\n\"]],[]],[[[41,[30,3],[[[1,\" \"],[10,2],[14,0,\"pretui-empty-msg\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,[30,3]],[13],[1,\"\\n \"]],[]],null]],[]]],[41,[48,[30,5]],[[[1,\" \"],[10,0],[14,0,\"pretui-empty-paths\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-action\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,6,null],[13],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-sep\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,[30,0,[\"separator\"]]],[13],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-action\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,5,null],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[48,[30,6]],[[[1,\" \"],[10,0],[14,0,\"pretui-empty-action\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,6,null],[13],[1,\"\\n \"]],[]],null]],[]]],[13],[1,\"\\n\"]],[\"&attrs\",\"@title\",\"@message\",\"&default\",\"&altAction\",\"&action\"],[\"if\",\"has-block\",\"yield\"]]",
1489
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/empty-state.gts",
1490
+ "isStrictMode": true
1491
+ }), this);
1492
+ }
1493
+ };
1494
+ //#endregion
1495
+ //#region ../pretui/components/skeleton.gts
1496
+ var Skeleton = class extends Component {
1497
+ get style() {
1498
+ return cssStyleFrom([cssDeclaration("--_w", this.args.width ?? "100%"), cssDeclaration("--_h", this.args.height ?? "12px")]);
1499
+ }
1500
+ static {
1501
+ setComponentTemplate(templateFactory({
1502
+ "id": "6lgKSRT5",
1503
+ "block": "[[[11,1],[24,0,\"pretui-skeleton\"],[16,5,[30,0,[\"style\"]]],[24,\"aria-hidden\",\"true\"],[24,\"data-test-pretui-skeleton\",\"\"],[17,1],[24,\"data-scopedcss-537b3a02bc-0566fde4f2\",\"\"],[12],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1504
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/skeleton.gts",
1505
+ "isStrictMode": true
1506
+ }), this);
1507
+ }
1508
+ };
1509
+ //#endregion
1510
+ //#region ../pretui/data-component.gts
1511
+ /** What a row is keyed by. Strings and numbers only — a key is compared with
1512
+ * `===` and must survive being written into a `data-` attribute. */
1513
+ /** Caller-supplied key accessor: stable identity for one row. */
1514
+ /** The dataset loader. Deliberately knows nothing about HTTP: it is any
1515
+ * function returning a promise of rows. */
1516
+ /** How many rows may be selected at once. */
1517
+ /** Sort direction. */
1518
+ /** The current sort: a column key plus a direction. `null` means unsorted,
1519
+ * which is a third state the asc/desc cycle passes through. */
1520
+ /**
1521
+ * THE documented key fallback, shared by every collection in the kit.
1522
+ *
1523
+ * 1. `@key` accessor if the caller supplied one — always prefer this.
1524
+ * 2. otherwise the row's own `id` when it is a string or number (the shape
1525
+ * Boxel cards, `FeedItem` and every fixture in examples.gts already have);
1526
+ * 3. otherwise the row's 0-based index.
1527
+ *
1528
+ * Branch 3 is a real, documented compromise, not a silent one: an
1529
+ * index-keyed row's identity MOVES when the collection is re-sorted or
1530
+ * spliced, so selection and the active row follow the position rather than
1531
+ * the record. Any collection whose rows can be re-ordered should pass `@key`.
1532
+ */
1533
+ function defaultRowKey(row, index) {
1534
+ if (row && typeof row === "object") {
1535
+ let id = row["id"];
1536
+ if (typeof id === "string" || typeof id === "number") return id;
1537
+ }
1538
+ return index;
1539
+ }
1540
+ /** Reads one field off a row for the default comparator. Rows are generic,
1541
+ * so the read is an explicit widening rather than an `any`. */
1542
+ function readField(row, key) {
1543
+ return row && typeof row === "object" ? row[key] : void 0;
1544
+ }
1545
+ /** Total order over unknown values: numbers numerically, everything else by
1546
+ * locale-free string compare, with null/undefined last in either direction.
1547
+ * Anything richer (dates as objects, money, nested paths) wants `@comparator`. */
1548
+ function compareValues(a, b) {
1549
+ let aMissing = a === void 0 || a === null;
1550
+ let bMissing = b === void 0 || b === null;
1551
+ if (aMissing || bMissing) return aMissing && bMissing ? 0 : aMissing ? 1 : -1;
1552
+ if (typeof a === "number" && typeof b === "number") return a - b;
1553
+ if (typeof a === "boolean" && typeof b === "boolean") return Number(a) - Number(b);
1554
+ let as = String(a);
1555
+ let bs = String(b);
1556
+ return as < bs ? -1 : as > bs ? 1 : 0;
1557
+ }
1558
+ /** Everything is an Error by the time it reaches tracked state — a thrown
1559
+ * string, a rejected `{ message }`, or a genuine Error. Never swallowed. */
1560
+ function toError(thrown) {
1561
+ if (thrown instanceof Error) return thrown;
1562
+ if (typeof thrown === "string") return new Error(thrown);
1563
+ let message = readField(thrown, "message");
1564
+ return new Error(typeof message === "string" ? message : "Load failed");
1565
+ }
1566
+ /** Re-runs `beginLoad()` whenever the loader, its key, or the reload epoch
1567
+ * changes. Exported so a subclass that writes its own `<template>` (and
1568
+ * therefore does not render `<DataShell>`) can still wire the loader. */
1569
+ var dataLoad = modifier((_el, [state, _load, _key, _epoch]) => {
1570
+ state.beginLoad();
1571
+ });
1572
+ /**
1573
+ * The narrow, non-generic slice of a data component that the shared chrome
1574
+ * needs. `DataComponent` implements it; a component that cannot extend
1575
+ * `DataComponent` (because it already extends something else) can implement
1576
+ * this instead and still wear the same chrome.
1577
+ */
1578
+ /**
1579
+ * The small amount of shared chrome that goes with the base class: the
1580
+ * `aria-busy` root, the polite live region, and the four state slots. It is a
1581
+ * separate component precisely so a subclass that writes its own
1582
+ * `<template>` keeps every accessibility guarantee without copying it.
1583
+ */
1584
+ var DataShell = class extends Component {
1585
+ get isLoading() {
1586
+ return this.args.state.status === "loading";
1587
+ }
1588
+ get isError() {
1589
+ return this.args.state.status === "error";
1590
+ }
1591
+ get isEmpty() {
1592
+ return this.args.state.status === "empty";
1593
+ }
1594
+ get skeletonRows() {
1595
+ let n = Math.max(1, Math.floor(this.args.skeletonRows ?? 3));
1596
+ let out = [];
1597
+ for (let i = 0; i < n; i++) out.push(i);
1598
+ return out;
1599
+ }
1600
+ get loadingLabel() {
1601
+ return this.args.loadingLabel ?? "Loading";
1602
+ }
1603
+ get emptyTitle() {
1604
+ return this.args.emptyTitle ?? "Nothing to show yet";
1605
+ }
1606
+ get emptyMessage() {
1607
+ return this.args.emptyMessage ?? "No records match this view. Adjust the filters, or check back once the desk has logged something.";
1608
+ }
1609
+ get errorTitle() {
1610
+ return this.args.errorTitle ?? "Could not load";
1611
+ }
1612
+ retry = () => {
1613
+ this.args.state.reload();
1614
+ };
1615
+ static {
1616
+ setComponentTemplate(templateFactory({
1617
+ "id": "MNDOTS8w",
1618
+ "block": "[[[11,0],[24,0,\"pretui-data\"],[24,\"data-test-pretui-data\",\"\"],[16,\"data-status\",[30,1,[\"status\"]]],[16,\"aria-busy\",[30,1,[\"busy\"]]],[17,2],[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[4,[32,0],[[30,1],[30,1,[\"loadFn\"]],[30,1,[\"loadKey\"]],[30,1,[\"epoch\"]]],null],[12],[1,\"\\n\"],[1,\" \"],[10,2],[14,0,\"pretui-sr\"],[14,\"role\",\"status\"],[14,\"data-test-pretui-data-live\",\"\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[1,[30,1,[\"announcement\"]]],[1,\"\\n \"],[13],[1,\"\\n\\n\"],[41,[30,0,[\"isLoading\"]],[[[41,[30,3],[[[1,\" \"],[18,7,null],[1,\"\\n\"]],[]],[[[1,\" \"],[10,0],[14,0,\"pretui-data-loading\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"pretui-data-loading-head\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,[30,0,[\"loadingLabel\"]]],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[42,[28,[31,3],[[28,[31,3],[[30,0,[\"skeletonRows\"]]],null]],null],\"@index\",[[[1,\" \"],[10,1],[14,0,\"pretui-data-skeleton\"],[15,\"data-row\",[30,4]],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[8,[32,2],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@width\",\"@height\"],[\"34%\",\"11px\"]],null],[1,\"\\n \"],[8,[32,2],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@height\"],[\"11px\"]],null],[1,\"\\n \"],[13],[1,\"\\n\"]],[4]],null],[1,\" \"],[13],[1,\"\\n\"]],[]]]],[]],[[[41,[30,0,[\"isError\"]],[[[41,[30,5],[[[1,\" \"],[18,8,null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,3],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@tone\",\"@title\"],[\"danger\",[30,0,[\"errorTitle\"]]]],[[\"default\",\"action\"],[[[[1,\"\\n \"],[10,2],[14,0,\"pretui-data-errmsg\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,[30,1,[\"errorMessage\"]]],[13],[1,\"\\n\"],[41,[30,1,[\"loadRef\"]],[[[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@label\",\"@refId\"],[\"dataset unavailable\",[30,1,[\"loadRef\"]]]],null],[1,\"\\n\"]],[]],null],[1,\" \"]],[]],[[[1,\"\\n\"],[41,[30,1,[\"canRetry\"]],[[[1,\" \"],[8,[32,5],[[24,\"data-test-pretui-data-retry\",\"\"],[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[4,[32,6],[\"click\",[30,0,[\"retry\"]]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Try again\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"]],[]]]]],[1,\"\\n\"]],[]]]],[]],[[[41,[30,0,[\"isEmpty\"]],[[[41,[30,6],[[[1,\" \"],[18,9,null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,7],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@title\",\"@message\"],[[30,0,[\"emptyTitle\"]],[30,0,[\"emptyMessage\"]]]],null],[1,\"\\n\"]],[]]]],[]],[[[1,\" \"],[18,10,null],[1,\"\\n \"]],[]]]],[]]]],[]]],[13],[1,\"\\n\"]],[\"@state\",\"&attrs\",\"@hasLoading\",\"row\",\"@hasError\",\"@hasEmpty\",\"&loading\",\"&error\",\"&empty\",\"&default\"],[\"if\",\"yield\",\"each\",\"-track-array\"]]",
1619
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
1620
+ "scope": () => [
1621
+ dataLoad,
1622
+ Spinner,
1623
+ Skeleton,
1624
+ Alert,
1625
+ BrokenLink,
1626
+ Button,
1627
+ on,
1628
+ EmptyState
1629
+ ],
1630
+ "isStrictMode": true
1631
+ }), this);
1632
+ }
1633
+ };
1634
+ /**
1635
+ * Everything a data component accepts. Subclasses widen this through the
1636
+ * `Extra` type parameter rather than re-declaring it.
1637
+ */
1638
+ /** The interaction surface yielded to the default block alongside the rows.
1639
+ * Everything here is safe to call from a template. */
1640
+ /** The expanded-rows args DataTable and List share. */
1641
+ /** One row's expansion, everything its expander and detail need. */
1642
+ /**
1643
+ * Which rows are expanded, by key, and the ARIA wiring for each row's
1644
+ * expander. Controlled when `@expandedKeys` is passed (the host never moves
1645
+ * itself, it only reports), uncontrolled otherwise, seeded from
1646
+ * `@defaultExpandedKeys`. Takes a thunk for the same reason DataSource does:
1647
+ * every read goes through the live args. DataTable and List both use it, so
1648
+ * the state rule and the ARIA contract cannot drift between them.
1649
+ */
1650
+ var ExpansionState = class {
1651
+ constructor(readArgs, idPrefix) {
1652
+ this.readArgs = readArgs;
1653
+ this.idPrefix = idPrefix;
1654
+ }
1655
+ static {
1656
+ decorateFieldV2(this.prototype, "internal", [tracked], function() {});
1657
+ }
1658
+ #internal = (initializeDeferredDecorator(this, "internal"), void 0);
1659
+ get keys() {
1660
+ let a = this.readArgs();
1661
+ if (a.expandedKeys !== void 0) return a.expandedKeys;
1662
+ return this.internal ?? a.defaultExpandedKeys ?? [];
1663
+ }
1664
+ /** A Set keeps 1 and '1' distinct, as `includes` does. */
1665
+ get keySet() {
1666
+ return new Set(this.keys);
1667
+ }
1668
+ static {
1669
+ decorateMethodV2(this.prototype, "keySet", [cached]);
1670
+ }
1671
+ isExpanded = (key) => this.keySet.has(key);
1672
+ /** The detail id is built from the row's position: a key can hold
1673
+ * spaces, and 1 and '1' are distinct keys. */
1674
+ viewFor(key, index, label) {
1675
+ let expanded = this.isExpanded(key);
1676
+ let detailId = this.idPrefix + "-d-" + String(index);
1677
+ return {
1678
+ expanded,
1679
+ expandedFlag: expanded ? "true" : "false",
1680
+ detailId,
1681
+ controls: expanded ? detailId : void 0,
1682
+ expandLabel: (expanded ? "Collapse " : "Expand ") + label
1683
+ };
1684
+ }
1685
+ toggle = (key) => {
1686
+ let current = this.keys;
1687
+ let next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
1688
+ let a = this.readArgs();
1689
+ if (a.expandedKeys === void 0) this.internal = next;
1690
+ a.onExpandedChange?.([...next]);
1691
+ };
1692
+ };
1693
+ /**
1694
+ * THE state machine, as a plain class rather than a component.
1695
+ *
1696
+ * It is separate from `DataComponent` for a reason that is worth stating,
1697
+ * because it is the difference between a base class that only serves its own
1698
+ * demo and one the whole kit can use. Glint infers a component's row type
1699
+ * from its `Args` type — and inference dies the moment `Args` is anything
1700
+ * but a bare `DataArgs<T>`: an intersection with an `Extra` type parameter
1701
+ * (`DataArgs<T> & Extra`) makes every caller's `T` collapse to `{}`. So a
1702
+ * base class cannot both infer `T` and let subclasses add their own args.
1703
+ *
1704
+ * Inheritance therefore covers the plain case, and DELEGATION covers the
1705
+ * rest: a component with its own signature — `@columns`, `@series`, extra
1706
+ * blocks, a different Element — holds a DataSource, points `<DataShell>` at
1707
+ * it, and gets the identical state machine:
1708
+ *
1709
+ * class KitTable<T> extends Component<KitTableSignature<T>> {
1710
+ * data = new DataSource<T>(() => this.args);
1711
+ * <template><DataShell @state={{this.data}}> … </DataShell></template>
1712
+ * }
1713
+ *
1714
+ * The constructor takes a THUNK, not the args object, so every read goes
1715
+ * through the live `this.args` and autotracking stays intact.
1716
+ */
1717
+ var DataSource = class {
1718
+ constructor(readArgs) {
1719
+ this.readArgs = readArgs;
1720
+ }
1721
+ /** the host's current args — read through the thunk on every access so
1722
+ * tracked argument changes are observed normally */
1723
+ get a() {
1724
+ return this.readArgs();
1725
+ }
1726
+ static {
1727
+ decorateFieldV2(this.prototype, "loadedRows", [tracked], function() {
1728
+ return [];
1729
+ });
1730
+ }
1731
+ #loadedRows = (initializeDeferredDecorator(this, "loadedRows"), void 0);
1732
+ static {
1733
+ decorateFieldV2(this.prototype, "inFlight", [tracked], function() {
1734
+ return false;
1735
+ });
1736
+ }
1737
+ #inFlight = (initializeDeferredDecorator(this, "inFlight"), void 0);
1738
+ static {
1739
+ decorateFieldV2(this.prototype, "settled", [tracked], function() {
1740
+ return false;
1741
+ });
1742
+ }
1743
+ #settled = (initializeDeferredDecorator(this, "settled"), void 0);
1744
+ static {
1745
+ decorateFieldV2(this.prototype, "failure", [tracked], function() {});
1746
+ }
1747
+ #failure = (initializeDeferredDecorator(this, "failure"), void 0);
1748
+ static {
1749
+ decorateFieldV2(this.prototype, "epoch", [tracked], function() {
1750
+ return 0;
1751
+ });
1752
+ }
1753
+ #epoch = (initializeDeferredDecorator(this, "epoch"), void 0);
1754
+ requestToken = 0;
1755
+ static {
1756
+ decorateFieldV2(this.prototype, "internalSelected", [tracked], function() {});
1757
+ }
1758
+ #internalSelected = (initializeDeferredDecorator(this, "internalSelected"), void 0);
1759
+ static {
1760
+ decorateFieldV2(this.prototype, "internalActive", [tracked], function() {});
1761
+ }
1762
+ #internalActive = (initializeDeferredDecorator(this, "internalActive"), void 0);
1763
+ static {
1764
+ decorateFieldV2(this.prototype, "internalSort", [tracked], function() {});
1765
+ }
1766
+ #internalSort = (initializeDeferredDecorator(this, "internalSort"), void 0);
1767
+ get loadFn() {
1768
+ return this.a.load;
1769
+ }
1770
+ get loadKey() {
1771
+ return this.a.loadKey;
1772
+ }
1773
+ get loadRef() {
1774
+ let key = this.a.loadKey;
1775
+ return typeof key === "string" || typeof key === "number" ? String(key) : void 0;
1776
+ }
1777
+ get canRetry() {
1778
+ return this.a.load !== void 0 && this.a.rows === void 0;
1779
+ }
1780
+ /**
1781
+ * Called by the `dataLoad` modifier on insert and on every change to
1782
+ * `@load` / `@loadKey` / `epoch`. Writes NO tracked state synchronously —
1783
+ * the modifier runs inside the render transaction, and a tracked write
1784
+ * there is the backtracking-rerender assertion.
1785
+ */
1786
+ beginLoad = () => {
1787
+ let load = this.a.load;
1788
+ let token = ++this.requestToken;
1789
+ if (!load || this.a.rows !== void 0) return;
1790
+ this.runLoad(load, token);
1791
+ };
1792
+ /** Discards whatever is in flight and loads again. */
1793
+ reload = () => {
1794
+ this.epoch = this.epoch + 1;
1795
+ };
1796
+ async runLoad(load, token) {
1797
+ await Promise.resolve();
1798
+ if (token !== this.requestToken) return;
1799
+ this.inFlight = true;
1800
+ this.failure = void 0;
1801
+ try {
1802
+ let rows = await load();
1803
+ if (token !== this.requestToken) return;
1804
+ this.loadedRows = rows ?? [];
1805
+ this.failure = void 0;
1806
+ } catch (thrown) {
1807
+ if (token !== this.requestToken) return;
1808
+ this.failure = toError(thrown);
1809
+ } finally {
1810
+ if (token === this.requestToken) {
1811
+ this.inFlight = false;
1812
+ this.settled = true;
1813
+ }
1814
+ }
1815
+ }
1816
+ /**
1817
+ * The single readable state. DERIVED — nothing assigns it:
1818
+ * error a captured failure outranks everything, so a stale row set can
1819
+ * never read as success;
1820
+ * loading a request is in flight, OR one is about to start and has never
1821
+ * settled (which is what closes the empty-flash on first paint);
1822
+ * ready settled with rows;
1823
+ * empty settled with none — only ever reachable when nothing is
1824
+ * loading, which is the bug this ordering exists to prevent;
1825
+ * idle no rows and no loader: nobody has asked for anything.
1826
+ */
1827
+ get status() {
1828
+ if (this.a.rows !== void 0) return this.a.rows.length > 0 ? "ready" : "empty";
1829
+ if (this.failure) return "error";
1830
+ if (this.inFlight) return "loading";
1831
+ if (this.a.load === void 0) return "idle";
1832
+ if (!this.settled) return "loading";
1833
+ return this.loadedRows.length > 0 ? "ready" : "empty";
1834
+ }
1835
+ get busy() {
1836
+ return this.status === "loading" ? "true" : "false";
1837
+ }
1838
+ get errorMessage() {
1839
+ return this.a.rows === void 0 && this.failure ? this.failure.message : "";
1840
+ }
1841
+ /** The rows as given: `@rows` when eager, the loaded set otherwise. */
1842
+ get rows() {
1843
+ return this.a.rows ?? this.loadedRows;
1844
+ }
1845
+ /** The rows as rendered: sorted when a sort is active. Never mutates the
1846
+ * caller's array. */
1847
+ get visibleRows() {
1848
+ let rows = this.rows;
1849
+ let sort = this.sort;
1850
+ if (!sort) return rows.slice();
1851
+ let dir = sort.dir === "desc" ? -1 : 1;
1852
+ let active = sort;
1853
+ return rows.slice().sort((a, b) => this.compare(a, b, active, dir));
1854
+ }
1855
+ get count() {
1856
+ return this.visibleRows.length;
1857
+ }
1858
+ /**
1859
+ * The polite announcement. Derived ONLY from settled state, which is how
1860
+ * "do not announce on every keystroke" is enforced structurally rather than
1861
+ * by remembering to: while a request is in flight the text is empty, so a
1862
+ * caller-driven filter that re-queries announces once when the new results
1863
+ * land, not once per key. Identical text is not re-announced by assistive
1864
+ * technology, so re-sorting the same 6 rows stays silent too.
1865
+ */
1866
+ get announcement() {
1867
+ if (this.a.silentCount) return "";
1868
+ let noun = this.a.itemNoun ?? "result";
1869
+ switch (this.status) {
1870
+ case "ready": {
1871
+ let n = this.count;
1872
+ return `${n} ${n === 1 ? noun : `${noun}s`}`;
1873
+ }
1874
+ case "empty": return `No ${noun}s`;
1875
+ case "error": return `Could not load: ${this.errorMessage}`;
1876
+ default: return "";
1877
+ }
1878
+ }
1879
+ keyFor = (row, index) => this.a.key ? this.a.key(row, index) : defaultRowKey(row, index);
1880
+ rowsForKeys(keys) {
1881
+ let wanted = new Set(keys);
1882
+ return this.visibleRows.filter((row, i) => wanted.has(this.keyFor(row, i)));
1883
+ }
1884
+ get selectionMode() {
1885
+ return this.a.selectionMode ?? "none";
1886
+ }
1887
+ get selectedKeys() {
1888
+ if (this.a.selected !== void 0) return this.a.selected;
1889
+ return this.internalSelected ?? this.a.defaultSelected ?? [];
1890
+ }
1891
+ get selectedRows() {
1892
+ return this.rowsForKeys(this.selectedKeys);
1893
+ }
1894
+ /** Every row the reader can see is selected; keys for rows outside the
1895
+ * current view do not count either way. */
1896
+ get allSelected() {
1897
+ let visible = this.visibleRows;
1898
+ if (visible.length === 0) return false;
1899
+ let selected = new Set(this.selectedKeys);
1900
+ return visible.every((row, index) => selected.has(this.keyFor(row, index)));
1901
+ }
1902
+ isSelected = (row, index) => this.selectedKeys.includes(this.keyFor(row, index));
1903
+ toggleSelected = (row, index) => {
1904
+ let mode = this.selectionMode;
1905
+ if (mode === "none") return;
1906
+ let key = this.keyFor(row, index);
1907
+ let current = this.selectedKeys;
1908
+ let next;
1909
+ if (mode === "single") next = current.length === 1 && current[0] === key ? [] : [key];
1910
+ else next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
1911
+ this.commitSelection(next);
1912
+ };
1913
+ selectAll = () => {
1914
+ if (this.selectionMode !== "multi") return;
1915
+ let visible = this.visibleRows.map((r, i) => this.keyFor(r, i));
1916
+ let shown = new Set(visible);
1917
+ let kept = this.selectedKeys.filter((key) => !shown.has(key));
1918
+ this.commitSelection(this.allSelected ? kept : [...kept, ...visible]);
1919
+ };
1920
+ clearSelection = () => {
1921
+ this.commitSelection([]);
1922
+ };
1923
+ commitSelection(next) {
1924
+ if (this.a.selected === void 0) this.internalSelected = next;
1925
+ this.a.onSelectionChange?.(next, this.rowsForKeys(next));
1926
+ }
1927
+ get activeKey() {
1928
+ if (this.a.activeKey !== void 0) return this.a.activeKey;
1929
+ return this.internalActive !== void 0 ? this.internalActive : this.a.defaultActiveKey ?? null;
1930
+ }
1931
+ isActive = (row, index) => this.activeKey !== null && this.activeKey === this.keyFor(row, index);
1932
+ setActive = (row, index) => {
1933
+ let next = row === null ? null : this.keyFor(row, index);
1934
+ if (this.a.activeKey === void 0) this.internalActive = next;
1935
+ this.a.onActiveChange?.(next, row ?? void 0);
1936
+ };
1937
+ get sort() {
1938
+ if (this.a.sort !== void 0) return this.a.sort;
1939
+ return this.internalSort !== void 0 ? this.internalSort : this.a.defaultSort ?? null;
1940
+ }
1941
+ /** asc → desc → unsorted, the three-step cycle DataGrid already used. */
1942
+ toggleSort = (key) => {
1943
+ let current = this.sort;
1944
+ let next = !current || current.key !== key ? {
1945
+ key,
1946
+ dir: "asc"
1947
+ } : current.dir === "asc" ? {
1948
+ key,
1949
+ dir: "desc"
1950
+ } : null;
1951
+ if (this.a.sort === void 0) this.internalSort = next;
1952
+ this.a.onSortChange?.(next);
1953
+ };
1954
+ ariaSort = (key) => {
1955
+ let current = this.sort;
1956
+ if (!current || current.key !== key) return "none";
1957
+ return current.dir === "asc" ? "ascending" : "descending";
1958
+ };
1959
+ compare(a, b, sort, dir) {
1960
+ if (this.a.comparator) return this.a.comparator(a, b, sort) * dir;
1961
+ let x = readField(a, sort.key);
1962
+ let y = readField(b, sort.key);
1963
+ if (x === void 0 || x === null || y === void 0 || y === null) return compareValues(x, y);
1964
+ return compareValues(x, y) * dir;
1965
+ }
1966
+ get data() {
1967
+ return {
1968
+ status: this.status,
1969
+ count: this.count,
1970
+ errorMessage: this.errorMessage,
1971
+ keyFor: this.keyFor,
1972
+ selectionMode: this.selectionMode,
1973
+ selectedKeys: this.selectedKeys,
1974
+ selectedRows: this.selectedRows,
1975
+ allSelected: this.allSelected,
1976
+ isSelected: this.isSelected,
1977
+ toggleSelected: this.toggleSelected,
1978
+ selectAll: this.selectAll,
1979
+ clearSelection: this.clearSelection,
1980
+ activeKey: this.activeKey,
1981
+ isActive: this.isActive,
1982
+ setActive: this.setActive,
1983
+ sort: this.sort,
1984
+ toggleSort: this.toggleSort,
1985
+ ariaSort: this.ariaSort,
1986
+ reload: this.reload
1987
+ };
1988
+ }
1989
+ };
1990
+ (class extends Component {
1991
+ /** the state machine — pass it to `<DataShell @state={{this.source}}>` */ source = new DataSource(() => this.args);
1992
+ get status() {
1993
+ return this.source.status;
1994
+ }
1995
+ get busy() {
1996
+ return this.source.busy;
1997
+ }
1998
+ get errorMessage() {
1999
+ return this.source.errorMessage;
2000
+ }
2001
+ get announcement() {
2002
+ return this.source.announcement;
2003
+ }
2004
+ get rows() {
2005
+ return this.source.rows;
2006
+ }
2007
+ get visibleRows() {
2008
+ return this.source.visibleRows;
2009
+ }
2010
+ get count() {
2011
+ return this.source.count;
2012
+ }
2013
+ get selectionMode() {
2014
+ return this.source.selectionMode;
2015
+ }
2016
+ get selectedKeys() {
2017
+ return this.source.selectedKeys;
2018
+ }
2019
+ get selectedRows() {
2020
+ return this.source.selectedRows;
2021
+ }
2022
+ get allSelected() {
2023
+ return this.source.allSelected;
2024
+ }
2025
+ get activeKey() {
2026
+ return this.source.activeKey;
2027
+ }
2028
+ get sort() {
2029
+ return this.source.sort;
2030
+ }
2031
+ get data() {
2032
+ return this.source.data;
2033
+ }
2034
+ keyFor = this.source.keyFor;
2035
+ isSelected = this.source.isSelected;
2036
+ toggleSelected = this.source.toggleSelected;
2037
+ selectAll = this.source.selectAll;
2038
+ clearSelection = this.source.clearSelection;
2039
+ isActive = this.source.isActive;
2040
+ setActive = this.source.setActive;
2041
+ toggleSort = this.source.toggleSort;
2042
+ ariaSort = this.source.ariaSort;
2043
+ reload = this.source.reload;
2044
+ static {
2045
+ setComponentTemplate(templateFactory({
2046
+ "id": "WDfnfAER",
2047
+ "block": "[[[8,[32,0],[[17,1]],[[\"@state\",\"@hasLoading\",\"@hasEmpty\",\"@hasError\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\"],[[30,0,[\"source\"]],[48,[30,6]],[48,[30,7]],[48,[30,8]],[30,2],[30,3],[30,4],[30,5]]],[[\"default\",\"loading\",\"empty\",\"error\"],[[[[18,9,[[30,0,[\"visibleRows\"]],[30,0,[\"data\"]]]]],[]],[[[18,6,null]],[]],[[[18,7,null]],[]],[[[18,8,null]],[]]]]]],[\"&attrs\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\",\"&loading\",\"&empty\",\"&error\",\"&default\"],[\"has-block\",\"yield\"]]",
2048
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
2049
+ "scope": () => [DataShell],
2050
+ "isStrictMode": true
2051
+ }), this);
2052
+ }
2053
+ });
2054
+ modifier((el, [mixed]) => {
2055
+ el.indeterminate = mixed;
2056
+ });
2057
+ /**
2058
+ * The roving keyboard cursor a row collection needs: one tab stop for the
2059
+ * whole list, arrows to move within it, Home/End to the ends.
2060
+ *
2061
+ * It is a plain class, not a component and not a modifier, for the reason
2062
+ * `DataSource` is one: it is testable without a DOM and it can be held by
2063
+ * anything. `<List>` holds one. `<DataTable>` deliberately does NOT — a
2064
+ * plain `<table>` must leave Tab alone so the links, buttons and checkboxes
2065
+ * inside its cells stay reachable in document order. Roving row focus is a
2066
+ * `role='grid'` behaviour, and this file does not claim that role.
2067
+ */
2068
+ var RowCursor = class {
2069
+ constructor(readCount) {
2070
+ this.readCount = readCount;
2071
+ }
2072
+ static {
2073
+ decorateFieldV2(this.prototype, "index", [tracked], function() {
2074
+ return 0;
2075
+ });
2076
+ }
2077
+ #index = (initializeDeferredDecorator(this, "index"), void 0);
2078
+ static {
2079
+ decorateFieldV2(this.prototype, "navigating", [tracked], function() {
2080
+ return false;
2081
+ });
2082
+ }
2083
+ #navigating = (initializeDeferredDecorator(this, "navigating"), void 0);
2084
+ /** true only while the KEYBOARD is driving, so `focusWhen` never steals
2085
+ * focus on a pointer path or a plain re-render */
2086
+ get count() {
2087
+ return this.readCount();
2088
+ }
2089
+ /** the cursor, clamped to the collection as it is right now */
2090
+ get active() {
2091
+ return Math.min(this.index, Math.max(0, this.count - 1));
2092
+ }
2093
+ isActive = (index) => index === this.active;
2094
+ isFocusTarget = (index) => this.navigating && this.isActive(index);
2095
+ /** move the cursor and take focus with it */
2096
+ moveTo = (index) => {
2097
+ if (index < 0 || index >= this.count) return;
2098
+ this.navigating = true;
2099
+ this.index = index;
2100
+ };
2101
+ /** follow focus that arrived some other way (a click, a Tab from outside)
2102
+ * without taking it — the early return is what keeps `focusWhen`'s
2103
+ * synchronous `el.focus()` from re-entering as a backtracking re-render */
2104
+ follow = (index) => {
2105
+ if (index === this.active) return;
2106
+ this.navigating = false;
2107
+ this.index = index;
2108
+ };
2109
+ /** returns true when the key was consumed and the caller should
2110
+ * `preventDefault()` */
2111
+ handleKey = (key) => {
2112
+ switch (key) {
2113
+ case "ArrowDown":
2114
+ this.moveTo(this.active + 1);
2115
+ return true;
2116
+ case "ArrowUp":
2117
+ this.moveTo(this.active - 1);
2118
+ return true;
2119
+ case "Home":
2120
+ this.moveTo(0);
2121
+ return true;
2122
+ case "End":
2123
+ this.moveTo(this.count - 1);
2124
+ return true;
2125
+ default: return false;
2126
+ }
2127
+ };
2128
+ };
2129
+ //#endregion
2130
+ //#region ../pretui/components/list.gts
2131
+ /**
2132
+ * A collapse removes the detail, and focus inside it would fall to <body>.
2133
+ * The row remembers (from focusin) that focus was in its detail; after a
2134
+ * collapse — by the expander, a controlled `@expandedKeys` change or a
2135
+ * reload — focus lands on the row's expander instead, unless it has already
2136
+ * moved somewhere real.
2137
+ */
2138
+ var restoreFocusOnCollapse = modifier((row, [expanded]) => {
2139
+ if (expanded || row.dataset["detailFocus"] !== "true") return;
2140
+ row.dataset["detailFocus"] = "false";
2141
+ let doc = row.ownerDocument;
2142
+ let active = doc.activeElement;
2143
+ if (!active || active === doc.body) row.querySelector(".pretui-list-expbtn")?.focus();
2144
+ });
2145
+ var List = class extends Component {
2146
+ guid = guidFor(this);
2147
+ /** The shared state machine: load status, `aria-busy`, the polite result
2148
+ * count, the row-key contract, and THE selection model `<DataTable>` uses.
2149
+ * One implementation, two components. */
2150
+ source = new DataSource(() => this.dataArgs);
2151
+ cursor = new RowCursor(() => this.rows.length);
2152
+ /** The same expanded-rows state DataTable uses. */
2153
+ expansion = new ExpansionState(() => this.args, this.guid);
2154
+ get dataArgs() {
2155
+ let a = this.args;
2156
+ return {
2157
+ rows: a.items ?? a.options ?? a.dataSource,
2158
+ load: a.load,
2159
+ loadKey: a.loadKey,
2160
+ key: a.key,
2161
+ selectionMode: a.selectionMode,
2162
+ selected: a.selected,
2163
+ defaultSelected: a.defaultSelected,
2164
+ onSelectionChange: a.onSelectionChange,
2165
+ itemNoun: a.itemNoun,
2166
+ emptyTitle: a.emptyTitle,
2167
+ emptyMessage: a.emptyMessage,
2168
+ loadingLabel: a.loadingLabel,
2169
+ skeletonRows: a.skeletonRows
2170
+ };
2171
+ }
2172
+ get rows() {
2173
+ return this.source.visibleRows;
2174
+ }
2175
+ get size() {
2176
+ return resolveSize(this.args.size);
2177
+ }
2178
+ get label() {
2179
+ return this.args.label ?? "List";
2180
+ }
2181
+ get selectionMode() {
2182
+ return this.source.selectionMode;
2183
+ }
2184
+ get selectable() {
2185
+ return this.selectionMode !== "none";
2186
+ }
2187
+ get multi() {
2188
+ return this.selectionMode === "multi";
2189
+ }
2190
+ get radioName() {
2191
+ return this.guid + "-list";
2192
+ }
2193
+ get divided() {
2194
+ return this.args.divided ?? true ? "true" : void 0;
2195
+ }
2196
+ get bordered() {
2197
+ return this.args.bordered ? "true" : void 0;
2198
+ }
2199
+ get busy() {
2200
+ return this.args.busy ?? this.args.loading ? "true" : void 0;
2201
+ }
2202
+ labelFor = (row, index) => this.args.rowLabel?.(row, index) ?? "Row " + String(index + 1);
2203
+ get lines() {
2204
+ return this.rows.map((row, index) => {
2205
+ let selected = this.source.isSelected(row, index);
2206
+ let key = this.source.keyFor(row, index);
2207
+ let label = this.labelFor(row, index);
2208
+ return {
2209
+ key,
2210
+ row,
2211
+ index,
2212
+ selected,
2213
+ selectedFlag: selected ? "true" : void 0,
2214
+ active: this.cursor.isActive(index),
2215
+ api: {
2216
+ index,
2217
+ selected,
2218
+ active: this.cursor.isActive(index),
2219
+ toggle: () => this.source.toggleSelected(row, index)
2220
+ },
2221
+ label,
2222
+ expansion: this.expansion.viewFor(key, index, label)
2223
+ };
2224
+ });
2225
+ }
2226
+ isRoving = (index) => this.cursor.isActive(index);
2227
+ isFocusTarget = (index) => this.cursor.isFocusTarget(index);
2228
+ indexFromEvent(event) {
2229
+ let raw = (event.target?.closest("[data-list-index]"))?.dataset["listIndex"];
2230
+ return raw === void 0 ? void 0 : Number(raw);
2231
+ }
2232
+ onFocusIn = (event) => {
2233
+ let target = event.target;
2234
+ let row = target?.closest("[data-list-index]");
2235
+ if (row) row.dataset["detailFocus"] = target?.closest(".pretui-list-detail") ? "true" : "false";
2236
+ let index = this.indexFromEvent(event);
2237
+ if (index !== void 0) this.cursor.follow(index);
2238
+ };
2239
+ onKeydown = (event) => {
2240
+ let ev = event;
2241
+ if (this.rows.length === 0) return;
2242
+ if (!!!ev.target?.matches("[data-list-index]")) return;
2243
+ if (this.cursor.handleKey(ev.key)) {
2244
+ ev.preventDefault();
2245
+ return;
2246
+ }
2247
+ let index = this.cursor.active;
2248
+ let row = this.rows[index];
2249
+ if (row === void 0) return;
2250
+ if (ev.key === "Enter") {
2251
+ ev.preventDefault();
2252
+ this.args.onActivate?.(row, index);
2253
+ } else if (ev.key === " " && this.selectable) {
2254
+ ev.preventDefault();
2255
+ this.source.toggleSelected(row, index);
2256
+ }
2257
+ };
2258
+ toggleExpanded = (key) => this.expansion.toggle(key);
2259
+ detailLabel = (line) => line.label + " details";
2260
+ toggleRow = (row, index) => {
2261
+ this.source.toggleSelected(row, index);
2262
+ };
2263
+ activate = (row, index) => {
2264
+ this.args.onActivate?.(row, index);
2265
+ };
2266
+ /** A click on a row activates it, unless it landed on a control or in the
2267
+ * row's expanded detail. */
2268
+ onClick = (event) => {
2269
+ if (!this.args.onActivate) return;
2270
+ let target = event.target;
2271
+ let li = target?.closest?.("li[data-list-index]");
2272
+ if (!li || target?.closest?.("a[href], button, input, select, textarea, label, summary, [role=\"button\"], [role=\"link\"], [contenteditable=\"\"], [contenteditable=\"true\"]") || target?.closest?.(".pretui-list-detail")) return;
2273
+ let index = Number(li.getAttribute("data-list-index"));
2274
+ let row = this.rows[index];
2275
+ if (row !== void 0) this.args.onActivate(row, index);
2276
+ };
2277
+ static {
2278
+ setComponentTemplate(templateFactory({
2279
+ "id": "XELOR1Am",
2280
+ "block": "[[[11,0],[24,0,\"pretui-list\"],[24,\"data-test-pretui-list\",\"\"],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"data-divided\",[30,0,[\"divided\"]]],[16,\"data-bordered\",[30,0,[\"bordered\"]]],[16,\"aria-busy\",[30,0,[\"busy\"]]],[17,1],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,7]],[[[1,\" \"],[10,0],[14,0,\"pretui-list-header\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[18,7,null],[13],[1,\"\\n\"]],[]],null],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"]],[[\"@state\",\"@hasLoading\",\"@hasEmpty\",\"@hasError\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\"],[[30,0,[\"source\"]],[48,[30,8]],[48,[30,9]],[48,[30,10]],[30,2],[30,3],[30,4],[30,5]]],[[\"default\",\"loading\",\"empty\",\"error\"],[[[[1,\"\\n \"],[11,\"ul\"],[24,0,\"pretui-list-rows\"],[16,\"aria-label\",[30,0,[\"label\"]]],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[4,[32,1],[\"keydown\",[30,0,[\"onKeydown\"]]],null],[4,[32,1],[\"focusin\",[30,0,[\"onFocusIn\"]]],null],[4,[32,1],[\"click\",[30,0,[\"onClick\"]]],null],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"lines\"]]],null]],null],\"key\",[[[1,\" \"],[11,\"li\"],[24,0,\"pretui-list-row\"],[16,\"data-list-index\",[30,6,[\"index\"]]],[16,\"data-selected\",[30,6,[\"selectedFlag\"]]],[16,\"data-expanded\",[52,[48,[30,11]],[30,6,[\"expansion\",\"expandedFlag\"]]]],[24,\"data-test-pretui-list-row\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[4,[32,2],[[28,[30,0,[\"isRoving\"]],[[30,6,[\"index\"]]],null]],null],[4,[32,3],[[28,[30,0,[\"isFocusTarget\"]],[[30,6,[\"index\"]]],null]],null],[4,[32,4],[[30,6,[\"expansion\",\"expanded\"]]],null],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-list-line\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"selectable\"]],[[[1,\" \"],[10,1],[14,0,\"pretui-list-pick\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"multi\"]],[[[1,\" \"],[11,\"input\"],[24,0,\"pretui-list-box\"],[16,\"checked\",[30,6,[\"selected\"]]],[16,\"aria-label\",[30,6,[\"label\"]]],[24,\"data-test-pretui-list-select\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[24,4,\"checkbox\"],[4,[32,5],[\"change\",[28,[32,6],[[30,0,[\"toggleRow\"]],[30,6,[\"row\"]],[30,6,[\"index\"]]],null]],null],[12],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[11,\"input\"],[24,0,\"pretui-list-box pretui-list-radio\"],[16,3,[30,0,[\"radioName\"]]],[16,\"checked\",[30,6,[\"selected\"]]],[16,\"aria-label\",[30,6,[\"label\"]]],[24,\"data-test-pretui-list-select\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[24,4,\"radio\"],[4,[32,5],[\"change\",[28,[32,6],[[30,0,[\"toggleRow\"]],[30,6,[\"row\"]],[30,6,[\"index\"]]],null]],null],[12],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[41,[48,[30,11]],[[[1,\" \"],[11,\"button\"],[24,0,\"pretui-list-expbtn\"],[16,\"aria-expanded\",[30,6,[\"expansion\",\"expandedFlag\"]]],[16,\"aria-controls\",[30,6,[\"expansion\",\"controls\"]]],[16,\"aria-label\",[30,6,[\"expansion\",\"expandLabel\"]]],[24,\"data-test-pretui-list-expand\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[24,4,\"button\"],[4,[32,5],[\"click\",[28,[32,6],[[30,0,[\"toggleExpanded\"]],[30,6,[\"key\"]]],null]],null],[12],[1,\"\\n \"],[10,1],[14,0,\"pretui-list-chev\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"›\"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,0],[14,0,\"pretui-list-body\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n \"],[18,12,[[30,6,[\"row\"]],[30,6,[\"index\"]],[30,6,[\"api\"]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[48,[30,11]],[[[41,[30,6,[\"expansion\",\"expanded\"]],[[[1,\" \"],[10,0],[14,0,\"pretui-list-detail\"],[15,1,[30,6,[\"expansion\",\"detailId\"]]],[14,\"role\",\"region\"],[14,\"tabindex\",\"-1\"],[15,\"aria-label\",[28,[30,0,[\"detailLabel\"]],[[30,6]],null]],[14,\"data-test-pretui-list-detail\",\"\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n \"],[18,11,[[30,6,[\"row\"]],[30,6,[\"index\"]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[6]],null],[1,\" \"],[13],[1,\"\\n \"]],[]],[[[18,8,null]],[]],[[[18,9,null]],[]],[[[18,10,null]],[]]]]],[1,\"\\n\\n\"],[41,[48,[30,13]],[[[1,\" \"],[10,0],[14,0,\"pretui-list-footer\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[18,13,null],[13],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"]],[\"&attrs\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\",\"line\",\"&header\",\"&loading\",\"&empty\",\"&error\",\"&expanded\",\"&item\",\"&footer\"],[\"if\",\"has-block\",\"yield\",\"each\",\"-track-array\"]]",
2281
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/list.gts",
2282
+ "scope": () => [
2283
+ DataShell,
2284
+ listen,
2285
+ rovingTabindex,
2286
+ focusWhen,
2287
+ restoreFocusOnCollapse,
2288
+ on,
2289
+ fn
2290
+ ],
2291
+ "isStrictMode": true
2292
+ }), this);
2293
+ }
2294
+ };
2295
+ //#endregion
2296
+ //#region ../pretui/components/loading-state.gts
2297
+ var LoadingState = class extends Component {
2298
+ get label() {
2299
+ return this.args.label ?? "Working";
2300
+ }
2301
+ get variant() {
2302
+ return this.args.variant ?? "drive";
2303
+ }
2304
+ get pixels() {
2305
+ let chev = Array.from({ length: 9 }, (_, i) => {
2306
+ let r = Math.floor(i / 3);
2307
+ return (i % 3 + Math.abs(r - 1)) * 90;
2308
+ });
2309
+ let order = [
2310
+ 0,
2311
+ 1,
2312
+ 2,
2313
+ 5,
2314
+ 8,
2315
+ 7,
2316
+ 6,
2317
+ 3
2318
+ ];
2319
+ let orbit = Array.from({ length: 9 }, (_, i) => {
2320
+ let k = order.indexOf(i);
2321
+ return k === -1 ? null : k * 110;
2322
+ });
2323
+ return (this.variant === "orbit" ? orbit : chev).map((d) => ({
2324
+ idle: d === null,
2325
+ kept: d === null ? [] : [{
2326
+ property: "--pretui-pixel-delay",
2327
+ value: `${d}ms`,
2328
+ strength: "arg"
2329
+ }]
2330
+ }));
2331
+ }
2332
+ static {
2333
+ setComponentTemplate(templateFactory({
2334
+ "id": "1UXlUkx6",
2335
+ "block": "[[[11,1],[24,0,\"pretui-loading\"],[24,\"role\",\"status\"],[24,\"data-test-pretui-loading-state\",\"\"],[17,1],[24,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,\"\\n \"],[10,1],[14,\"aria-hidden\",\"true\"],[14,0,\"pretui-pixelgrid\"],[15,\"data-variant\",[30,0,[\"variant\"]]],[14,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"pixels\"]]],null]],null],null,[[[1,\" \"],[11,1],[24,0,\"pretui-pixel\"],[16,\"data-idle\",[52,[30,2,[\"idle\"]],\"true\"]],[24,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[4,[32,0],[[30,2,[\"kept\"]]],null],[12],[13],[1,\"\\n\"]],[2]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-shimmer-label\"],[14,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,[30,0,[\"label\"]]],[13],[1,\"\\n \"],[41,[30,3],[[[10,1],[14,0,\"pretui-elapsed\"],[14,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,[30,3]],[13]],[]],null],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"p\",\"@elapsed\"],[\"each\",\"-track-array\",\"if\"]]",
2336
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/loading-state.gts",
2337
+ "scope": () => [keepStyle],
2338
+ "isStrictMode": true
2339
+ }), this);
2340
+ }
2341
+ };
2342
+ //#endregion
2343
+ //#region ../pretui/components/scroller.gts
2344
+ /**
2345
+ * Maintains the four edge facts as DATA ATTRIBUTES on the viewport, and
2346
+ * makes the viewport keyboard-reachable exactly when it actually scrolls.
2347
+ *
2348
+ * Written as attributes rather than tracked state on purpose: a scroll
2349
+ * listener that writes tracked state re-renders the component on every
2350
+ * frame of a flick. These attributes are read only by CSS, so the whole
2351
+ * affordance costs one `setAttribute` and no render at all.
2352
+ *
2353
+ * `tabindex` is managed here too. A scroll container that a mouse user can
2354
+ * reach and a keyboard user cannot is a keyboard trap in reverse — the
2355
+ * content is simply unreachable. Chromium and Firefox have started making
2356
+ * scrollers focusable natively; this keeps the guarantee everywhere, and
2357
+ * REMOVES the tab stop again when the content shrinks and no longer
2358
+ * overflows, which is the part native focusable-scrollers gets right and
2359
+ * hand-rolled `tabindex='0'` does not.
2360
+ */
2361
+ var scrollEdges = modifier((element, [orientation]) => {
2362
+ let update = () => {
2363
+ let horizontal = orientation !== "vertical";
2364
+ let vertical = orientation !== "horizontal";
2365
+ let overflowX = element.scrollWidth - element.clientWidth > 1;
2366
+ let overflowY = element.scrollHeight - element.clientHeight > 1;
2367
+ let left = Math.abs(element.scrollLeft);
2368
+ element.dataset["startX"] = horizontal && overflowX && left > 1 ? "clipped" : "flush";
2369
+ element.dataset["endX"] = horizontal && overflowX && left < element.scrollWidth - element.clientWidth - 1 ? "clipped" : "flush";
2370
+ element.dataset["startY"] = vertical && overflowY && element.scrollTop > 1 ? "clipped" : "flush";
2371
+ element.dataset["endY"] = vertical && overflowY && element.scrollTop < element.scrollHeight - element.clientHeight - 1 ? "clipped" : "flush";
2372
+ if (horizontal && overflowX || vertical && overflowY) {
2373
+ if (element.getAttribute("tabindex") === null) element.setAttribute("tabindex", "0");
2374
+ } else if (element.getAttribute("tabindex") === "0") element.removeAttribute("tabindex");
2375
+ };
2376
+ element.addEventListener("scroll", update, { passive: true });
2377
+ let frame;
2378
+ let schedule = () => {
2379
+ if (frame !== void 0) return;
2380
+ frame = requestAnimationFrame(() => {
2381
+ frame = void 0;
2382
+ update();
2383
+ });
2384
+ };
2385
+ let observer = new ResizeObserver(schedule);
2386
+ let observeChildren = () => {
2387
+ for (let child of Array.from(element.children)) observer.observe(child);
2388
+ };
2389
+ observer.observe(element);
2390
+ observeChildren();
2391
+ let mutations = new MutationObserver(() => {
2392
+ observeChildren();
2393
+ schedule();
2394
+ });
2395
+ mutations.observe(element, {
2396
+ childList: true,
2397
+ subtree: true,
2398
+ characterData: true
2399
+ });
2400
+ update();
2401
+ return () => {
2402
+ element.removeEventListener("scroll", update);
2403
+ observer.disconnect();
2404
+ mutations.disconnect();
2405
+ if (frame !== void 0) cancelAnimationFrame(frame);
2406
+ };
2407
+ });
2408
+ /**
2409
+ * A scroll container that says when it is clipped.
2410
+ *
2411
+ * ```hbs
2412
+ * <Scroller @label='Recent lots' @orientation='horizontal'>
2413
+ * <div class='row'>…</div>
2414
+ * </Scroller>
2415
+ * ```
2416
+ *
2417
+ * Better than the inspiration (`wa-scroller`): upstream ships one shadow
2418
+ * treatment, both axes always on, and no notion of whether the region is
2419
+ * reachable by keyboard. Here the axis is explicit, the treatment is a knob,
2420
+ * the tab stop appears and DISAPPEARS with the overflow, and the affordance
2421
+ * is driven by data attributes rather than by re-rendering on every scroll
2422
+ * frame.
2423
+ */
2424
+ var Scroller = class extends Component {
2425
+ get orientation() {
2426
+ return this.args.orientation ?? "horizontal";
2427
+ }
2428
+ get edge() {
2429
+ return this.args.edge ?? "fade";
2430
+ }
2431
+ get role() {
2432
+ return this.args.label ? "region" : void 0;
2433
+ }
2434
+ static {
2435
+ setComponentTemplate(templateFactory({
2436
+ "id": "dA5kczpk",
2437
+ "block": "[[[11,0],[24,0,\"pretui-scroller\"],[24,\"data-test-pretui-scroller\",\"\"],[16,\"data-edge\",[30,0,[\"edge\"]]],[17,1],[24,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[1,\"\\n \"],[11,0],[24,0,\"pretui-scroller-viewport\"],[16,\"data-orientation\",[30,0,[\"orientation\"]]],[16,\"data-hide-scrollbar\",[52,[30,2],\"true\"]],[16,\"role\",[30,0,[\"role\"]]],[16,\"aria-label\",[30,3]],[24,\"data-test-pretui-scroller-viewport\",\"\"],[24,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[4,[32,0],[[30,0,[\"orientation\"]]],null],[12],[1,\"\\n \"],[18,4,null],[1,\"\\n \"],[13],[1,\"\\n\"],[1,\" \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"start-x\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"end-x\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"start-y\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"end-y\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@hideScrollbar\",\"@label\",\"&default\"],[\"if\",\"yield\"]]",
2438
+ "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/scroller.gts",
2439
+ "scope": () => [scrollEdges],
2440
+ "isStrictMode": true
2441
+ }), this);
2442
+ }
2443
+ };
2444
+ //#endregion
2445
+ //#region app/components/operator-mode/dashboard-modals/manage-catalogs.gts
2446
+ var ManageCatalogsModal = class extends Component {
2447
+ static {
2448
+ decorateFieldV2(this.prototype, "matrixService", [service]);
2449
+ }
2450
+ #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
2451
+ static {
2452
+ decorateFieldV2(this.prototype, "realmServer", [service]);
2453
+ }
2454
+ #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
2455
+ static {
2456
+ decorateFieldV2(this.prototype, "choices", [tracked$1], function() {
2457
+ return null;
2458
+ });
2459
+ }
2460
+ #choices = (initializeDeferredDecorator(this, "choices"), void 0);
2461
+ static {
2462
+ decorateFieldV2(this.prototype, "loadError", [tracked$1], function() {
2463
+ return null;
2464
+ });
2465
+ }
2466
+ #loadError = (initializeDeferredDecorator(this, "loadError"), void 0);
2467
+ static {
2468
+ decorateFieldV2(this.prototype, "selected", [tracked$1]);
2469
+ }
2470
+ #selected = (initializeDeferredDecorator(this, "selected"), void 0);
2471
+ static {
2472
+ decorateFieldV2(this.prototype, "saveError", [tracked$1], function() {
2473
+ return null;
2474
+ });
2475
+ }
2476
+ #saveError = (initializeDeferredDecorator(this, "saveError"), void 0);
2477
+ constructor(owner, args) {
2478
+ super(owner, args);
2479
+ this.selected = this.realmServer.userCatalogPicks;
2480
+ this.loadChoices.perform();
2481
+ }
2482
+ get listedElsewhere() {
2483
+ return new Set([
2484
+ baseRealm.url,
2485
+ ...this.realmServer.catalogRealmIdentifiers,
2486
+ ...this.realmServer.userRealmIdentifiers
2487
+ ]);
2488
+ }
2489
+ loadChoices = buildTask(() => ({
2490
+ context: this,
2491
+ generator: function* () {
2492
+ this.loadError = null;
2493
+ try {
2494
+ let listedElsewhere = this.listedElsewhere;
2495
+ let realms = yield this.realmServer.fetchPublicRealms();
2496
+ this.choices = realms.filter(({ url }) => !listedElsewhere.has(url)).sort((a, b) => displayName(a).localeCompare(displayName(b)));
2497
+ } catch (e) {
2498
+ this.loadError = e.message;
2499
+ }
2500
+ }
2501
+ }), null, "loadChoices", "restartable");
2502
+ save = buildTask(() => ({
2503
+ context: this,
2504
+ generator: function* () {
2505
+ this.saveError = null;
2506
+ try {
2507
+ let selected = new Set(this.selected);
2508
+ let listedElsewhere = this.listedElsewhere;
2509
+ let kept = this.realmServer.userCatalogPicks.filter((url) => listedElsewhere.has(url));
2510
+ let chosen = (this.choices ?? []).map(({ url }) => url).filter((url) => selected.has(url));
2511
+ yield this.matrixService.setUserCatalogRealms([...new Set([...kept, ...chosen])]);
2512
+ this.args.onClose();
2513
+ } catch (e) {
2514
+ this.saveError = e.message;
2515
+ }
2516
+ }
2517
+ }), null, "save", null);
2518
+ rowKey = (realm) => realm.url;
2519
+ rowLabel = (realm) => displayName(realm);
2520
+ iconSrc = (realm) => realm.iconURL ?? void 0;
2521
+ setSelected = (keys) => {
2522
+ this.selected = keys.map(String);
2523
+ };
2524
+ toggle = (realm) => {
2525
+ this.selected = this.selected.includes(realm.url) ? this.selected.filter((url) => url !== realm.url) : [...this.selected, realm.url];
2526
+ };
2527
+ get rows() {
2528
+ return this.choices ?? [];
2529
+ }
2530
+ get isSaveDisabled() {
2531
+ return this.choices === null;
2532
+ }
2533
+ static {
2534
+ setComponentTemplate(templateFactory({
2535
+ "id": "6efOiZ2E",
2536
+ "block": "[[[8,[32,0],[[24,0,\"manage-catalogs-dialog\"],[24,\"data-test-manage-catalogs-modal\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@open\",\"@onClose\",\"@label\",\"@size\"],[true,[30,1],\"Choose Catalogs\",\"m\"]],[[\"title\",\"default\",\"footer\"],[[[[1,\"Choose Catalogs\"]],[]],[[[1,\"\\n \"],[10,2],[14,0,\"intro\"],[14,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[12],[1,\"\\n Choose public realms to show in your Catalogs section.\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"loadChoices\",\"isRunning\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"loading\"],[24,\"data-test-public-realms-loading\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@label\"],[\"Loading public realms\"]],null],[1,\"\\n\"]],[]],[[[41,[30,0,[\"loadError\"]],[[[1,\" \"],[8,[32,2],[[24,\"data-test-manage-catalogs-error\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@tone\",\"@title\"],[\"danger\",\"Couldn't load the public realms\"]],[[\"default\"],[[[[1,\"\\n \"],[1,[30,0,[\"loadError\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[10,0],[14,0,\"realm-list-frame\"],[14,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@orientation\"],[\"vertical\"]],[[\"default\"],[[[[1,\"\\n \"],[8,[32,4],[[24,\"data-test-public-realm-list\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@items\",\"@key\",\"@rowLabel\",\"@label\",\"@selectionMode\",\"@selected\",\"@onSelectionChange\",\"@onActivate\",\"@itemNoun\",\"@emptyTitle\",\"@emptyMessage\"],[[30,0,[\"rows\"]],[30,0,[\"rowKey\"]],[30,0,[\"rowLabel\"]],\"Public realms\",\"multi\",[30,0,[\"selected\"]],[30,0,[\"setSelected\"]],[30,0,[\"toggle\"]],\"realm\",\"Nothing more to add\",\"Every public realm is already in your Catalogs or Your Workspaces.\"]],[[\"item\"],[[[[1,\"\\n \"],[8,[32,5],[[16,\"data-test-public-realm\",[30,2,[\"url\"]]],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@title\",\"@description\"],[[28,[32,6],[[30,2]],null],[30,2,[\"url\"]]]],[[\"leading\"],[[[[1,\"\\n \"],[10,1],[14,0,\"realm-icon\"],[14,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[12],[1,\"\\n \"],[8,[32,7],[[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@name\",\"@src\",\"@size\"],[[28,[32,6],[[30,2]],null],[28,[30,0,[\"iconSrc\"]],[[30,2]],null],32]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n \"]],[2]]]]],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]],[]]],[41,[30,0,[\"saveError\"]],[[[1,\" \"],[8,[32,2],[[24,\"data-test-manage-catalogs-error\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@tone\",\"@title\"],[\"danger\",\"Couldn't save your catalogs\"]],[[\"default\"],[[[[1,\"\\n \"],[1,[30,0,[\"saveError\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"]],[]],[[[1,\"\\n \"],[8,[32,8],[[24,\"data-test-cancel-manage-catalogs\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[4,[32,9],[\"click\",[30,1]],null]],[[\"@variant\"],[\"secondary\"]],[[\"default\"],[[[[1,\"\\n Cancel\\n \"]],[]]]]],[1,\"\\n \"],[8,[32,8],[[24,\"data-test-save-manage-catalogs\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[4,[32,9],[\"click\",[28,[32,10],[[30,0,[\"save\"]]],null]],null]],[[\"@variant\",\"@busy\",\"@disabled\"],[\"primary\",[30,0,[\"save\",\"isRunning\"]],[30,0,[\"isSaveDisabled\"]]]],[[\"default\"],[[[[1,\"\\n Save\\n \"]],[]]]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[\"@onClose\",\"realm\"],[\"if\"]]",
2537
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard-modals/manage-catalogs.gts",
2538
+ "scope": () => [
2539
+ Dialog,
2540
+ LoadingState,
2541
+ Alert,
2542
+ Scroller,
2543
+ List,
2544
+ Item,
2545
+ displayName,
2546
+ Avatar,
2547
+ Button,
2548
+ on,
2549
+ perform
2550
+ ],
2551
+ "isStrictMode": true
2552
+ }), this);
2553
+ }
2554
+ };
2555
+ function displayName(realm) {
2556
+ return realm.name ?? realm.url;
2557
+ }
2558
+ var ManageCatalogs = class extends Component {
2559
+ static {
2560
+ decorateFieldV2(this.prototype, "isModalOpen", [tracked$1], function() {
2561
+ return false;
2562
+ });
2563
+ }
2564
+ #isModalOpen = (initializeDeferredDecorator(this, "isModalOpen"), void 0);
2565
+ setIsModalOpen = (value) => {
2566
+ this.isModalOpen = value;
2567
+ };
2568
+ static {
2569
+ setComponentTemplate(templateFactory({
2570
+ "id": "vkjyxb8V",
2571
+ "block": "[[[10,1],[14,0,\"manage-catalogs\"],[14,\"data-scopedcss-6121faa312-bfb1490ce6\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-test-manage-catalogs\",\"\"],[24,\"data-scopedcss-6121faa312-bfb1490ce6\",\"\"],[4,[32,2],[\"click\",[28,[32,3],[[30,0,[\"setIsModalOpen\"]],true],null]],null]],[[\"@label\",\"@tooltip\",\"@icon\",\"@iconWidth\",\"@iconHeight\",\"@variant\",\"@size\"],[\"Choose Catalogs\",\"Choose Catalogs\",[32,1],\"16\",\"16\",\"ghost\",\"s\"]],null],[1,\"\\n\"],[13],[1,\"\\n\"],[41,[30,0,[\"isModalOpen\"]],[[[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-6121faa312-bfb1490ce6\",\"\"]],[[\"@onClose\"],[[28,[32,3],[[30,0,[\"setIsModalOpen\"]],false],null]]],null],[1,\"\\n\"]],[]],null]],[],[\"if\"]]",
2572
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard-modals/manage-catalogs.gts",
2573
+ "scope": () => [
2574
+ IconButton,
2575
+ IconComponent$19,
2576
+ on,
2577
+ fn,
2578
+ ManageCatalogsModal
2579
+ ],
2580
+ "isStrictMode": true
2581
+ }), this);
2582
+ }
2583
+ };
2584
+ //#endregion
2585
+ //#region app/components/operator-mode/dashboard/catalog-shelf.gts
2586
+ var ART_PAGE_WIDTH_PX = 1e3;
2587
+ var OTHER_LISTINGS_FETCHED = 12;
2588
+ var PENDING_STORIES = Array.from({ length: 4 }, (_, i) => i);
2589
+ var LISTING_TYPE = {
2590
+ module: rri("@cardstack/catalog/catalog-app/listing/listing"),
2591
+ name: "Listing"
2592
+ };
2593
+ var lastAnswers = /* @__PURE__ */ new Map();
2594
+ var CatalogShelf = class extends Component {
2595
+ static {
2596
+ decorateFieldV2(this.prototype, "network", [service]);
2597
+ }
2598
+ #network = (initializeDeferredDecorator(this, "network"), void 0);
2599
+ static {
2600
+ decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
2601
+ }
2602
+ #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
2603
+ resolve = (link, base) => {
2604
+ try {
2605
+ return this.network.virtualNetwork.toURL(resolveRRIReference(link, rri(base))).href;
2606
+ } catch {
2607
+ return link;
2608
+ }
2609
+ };
2610
+ toListingEntry = (entry) => ({
2611
+ id: this.resolve(trimJsonExtension(entry.id), this.args.realmURL),
2612
+ item: entry.item
2613
+ });
2614
+ index = getSearchEntriesResource(this, () => ({
2615
+ realms: [this.args.realmURL],
2616
+ cardUrls: [`${this.args.realmURL}index.json`],
2617
+ scope: "cards",
2618
+ fields: { entry: ["item.featured"] }
2619
+ }));
2620
+ get featuredIds() {
2621
+ let index = this.index.entries[0];
2622
+ return index ? linkedIds(this.toListingEntry(index), "featured", this.resolve) : [];
2623
+ }
2624
+ static {
2625
+ decorateMethodV2(this.prototype, "featuredIds", [cached$1]);
2626
+ }
2627
+ get featuredCardUrls() {
2628
+ return this.featuredIds.map((id) => `${id}.json`);
2629
+ }
2630
+ static {
2631
+ decorateMethodV2(this.prototype, "featuredCardUrls", [cached$1]);
2632
+ }
2633
+ featured = getSearchEntriesResource(this, () => this.featuredCardUrls.length ? {
2634
+ realms: [this.args.realmURL],
2635
+ cardUrls: this.featuredCardUrls,
2636
+ scope: "cards",
2637
+ fields: { entry: LISTING_FIELDS }
2638
+ } : void 0);
2639
+ others = getSearchEntriesResource(this, () => ({
2640
+ realms: [this.args.realmURL],
2641
+ filter: { "item.on": LISTING_TYPE },
2642
+ page: {
2643
+ number: 0,
2644
+ size: OTHER_LISTINGS_FETCHED
2645
+ },
2646
+ scope: "cards",
2647
+ fields: { entry: LISTING_FIELDS }
2648
+ }));
2649
+ get isAnswered() {
2650
+ let answered = (resource) => resource.entriesQuery !== void 0 || resource.errors !== void 0;
2651
+ if (!answered(this.index) || !answered(this.others)) return false;
2652
+ let wanted = this.featuredCardUrls;
2653
+ if (wanted.length === 0 || this.featured.errors && !this.featured.isLoading) return true;
2654
+ let asked = this.featured.entriesQuery?.cardUrls ?? [];
2655
+ return asked.length === wanted.length && wanted.every((url, i) => asked[i] === url);
2656
+ }
2657
+ get stories() {
2658
+ if (!this.isAnswered) return lastAnswers.get(this.args.realmURL) ?? [];
2659
+ let stories = storiesFrom({
2660
+ featuredIds: this.featuredIds,
2661
+ featured: this.featured.entries.map(this.toListingEntry),
2662
+ others: this.others.entries.map(this.toListingEntry),
2663
+ resolve: this.resolve
2664
+ });
2665
+ lastAnswers.set(this.args.realmURL, stories);
2666
+ return stories;
2667
+ }
2668
+ static {
2669
+ decorateMethodV2(this.prototype, "stories", [cached$1]);
2670
+ }
2671
+ get isPending() {
2672
+ return !this.isAnswered && this.stories.length === 0;
2673
+ }
2674
+ get artQuery() {
2675
+ let exampleIds = this.stories.map((story) => story.exampleId).filter((id) => Boolean(id));
2676
+ if (exampleIds.length === 0) return;
2677
+ return {
2678
+ realms: [this.args.realmURL],
2679
+ cardUrls: exampleIds.map((id) => `${id}.json`),
2680
+ scope: "cards",
2681
+ filter: { eq: { htmlQuery: { eq: { format: "isolated" } } } },
2682
+ fields: { entry: ["html"] }
2683
+ };
2684
+ }
2685
+ artFor = (entries, exampleId) => exampleId ? entries.find((entry) => entry.html?.html != null && this.toListingEntry(entry).id === exampleId) : void 0;
2686
+ headlineId = (index) => `${guidFor(this)}-story-${index}`;
2687
+ open(cardId) {
2688
+ this.operatorModeStateService.openCardInInteractMode(cardId);
2689
+ this.operatorModeStateService.closeWorkspaceChooser();
2690
+ }
2691
+ static {
2692
+ decorateMethodV2(this.prototype, "open", [action]);
2693
+ }
2694
+ async openCatalog() {
2695
+ await this.operatorModeStateService.openWorkspace(this.args.realmURL);
2696
+ }
2697
+ static {
2698
+ decorateMethodV2(this.prototype, "openCatalog", [action]);
2699
+ }
2700
+ static {
2701
+ setComponentTemplate(templateFactory({
2702
+ "id": "DDDZj/cK",
2703
+ "block": "[[[41,[30,0,[\"stories\",\"length\"]],[[[1,\" \"],[11,0],[24,0,\"catalog-shelf\"],[24,\"data-test-catalog-shelf\",\"\"],[17,1],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-3416374426-c845240858\",\"\"]],[[\"@query\",\"@mode\",\"@overlays\"],[[30,0,[\"artQuery\"]],\"none\",false]],[[\"default\"],[[[[1,\"\\n \"],[10,\"ul\"],[14,0,\"stories\"],[14,\"aria-label\",\"From the catalog\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"stories\"]]],null]],null],\"id\",[[[44,[[28,[30,0,[\"artFor\"]],[[30,2,[\"entries\"]],[30,3,[\"exampleId\"]]],null]],[[[1,\" \"],[10,\"li\"],[15,0,[29,[\"story tint-\",[30,3,[\"tint\"]]]]],[15,\"data-theme\",[30,3,[\"scheme\"]]],[15,\"data-test-catalog-story\",[30,3,[\"id\"]]],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,2],[14,0,\"eyebrow\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,[30,3,[\"eyebrow\"]]],[13],[1,\"\\n\"],[1,\" \"],[10,\"h3\"],[14,0,\"headline\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[11,\"button\"],[16,1,[28,[30,0,[\"headlineId\"]],[[30,4]],null]],[24,0,\"story-open\"],[24,\"data-test-catalog-story-open\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[24,4,\"button\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"open\"]],[30,3,[\"id\"]]],null]],null],[12],[10,1],[14,0,\"headline-text\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,[30,3,[\"name\"]]],[13],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[11,0],[24,0,\"art\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,3],[[32,4]],null],[12],[1,\"\\n\"],[41,[30,5],[[[1,\" \"],[10,0],[14,0,\"art-page\"],[14,\"data-theme\",\"light\"],[14,\"inert\",\"\"],[15,\"data-test-catalog-story-example\",[30,3,[\"exampleId\"]]],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[8,[30,5,[\"component\"]],[[24,\"data-scopedcss-3416374426-c845240858\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,3,[\"thumbnailURL\"]],[[[1,\" \"],[10,\"img\"],[14,0,\"thumbnail\"],[15,\"src\",[30,3,[\"thumbnailURL\"]]],[14,\"alt\",\"\"],[14,\"loading\",\"lazy\"],[14,\"data-test-catalog-story-thumbnail\",\"\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,2],[14,0,\"copy\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,[30,3,[\"copy\"]]],[13],[1,\"\\n \"],[10,0],[14,0,\"actions\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n\"],[41,[30,3,[\"exampleId\"]],[[[1,\" \"],[8,[32,5],[[24,0,\"action\"],[16,\"aria-describedby\",[28,[30,0,[\"headlineId\"]],[[30,4]],null]],[24,\"data-test-catalog-story-try\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"open\"]],[30,3,[\"exampleId\"]]],null]],null]],[[\"@tone\",\"@appearance\",\"@shape\"],[\"neutral\",\"outlined\",\"pill\"]],[[\"default\"],[[[[1,\"Try it\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[8,[32,5],[[24,0,\"action\"],[16,\"aria-describedby\",[28,[30,0,[\"headlineId\"]],[[30,4]],null]],[24,\"data-test-catalog-story-action\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"open\"]],[30,3,[\"id\"]]],null]],null]],[[\"@tone\",\"@appearance\",\"@shape\"],[\"neutral\",\"accent\",\"pill\"]],[[\"default\"],[[[[1,\"Details\"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[5]]]],[3,4]],null],[1,\" \"],[13],[1,\"\\n \"]],[2]]]]],[1,\"\\n \"],[8,[32,5],[[24,0,\"see-all\"],[24,\"data-test-catalog-see-all\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,1],[\"click\",[30,0,[\"openCatalog\"]]],null]],[[\"@tone\",\"@appearance\"],[\"neutral\",\"link\"]],[[\"default\"],[[[[1,\"See the full catalog \"],[10,1],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"→\"],[13]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"isPending\"]],[[[1,\" \"],[11,0],[24,0,\"catalog-shelf\"],[24,\"aria-hidden\",\"true\"],[24,\"inert\",\"\"],[24,\"data-test-catalog-shelf-pending\",\"\"],[17,1],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,\"ul\"],[14,0,\"stories\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[32,6]],null]],null],null,[[[1,\" \"],[10,\"li\"],[14,0,\"story is-pending\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,2],[14,0,\"eyebrow\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\xA0\"],[13],[1,\"\\n \"],[10,2],[14,0,\"headline\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\xA0\"],[13],[1,\"\\n \"],[10,0],[14,0,\"art\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"],[10,2],[14,0,\"copy\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"],[10,0],[14,0,\"actions\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"pending-action\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,5],[[24,0,\"see-all is-pending\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"]],[[\"@tone\",\"@appearance\"],[\"neutral\",\"link\"]],[[\"default\"],[[[[1,\"See the full catalog\"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null]],[]]],[1,\"\\n\"]],[\"&attrs\",\"art\",\"story\",\"i\",\"artEntry\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
2704
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/catalog-shelf.gts",
2705
+ "scope": () => [
2706
+ SearchResults,
2707
+ on,
2708
+ fn,
2709
+ fitPage,
2710
+ ART_PAGE_WIDTH_PX,
2711
+ Button,
2712
+ PENDING_STORIES
2713
+ ],
2714
+ "isStrictMode": true
2715
+ }), this);
2716
+ }
2717
+ };
2718
+ //#endregion
2719
+ //#region app/components/operator-mode/dashboard/section-count.gts
2720
+ var SectionCount = setComponentTemplate(templateFactory({
2721
+ "id": "bADZiith",
2722
+ "block": "[[[11,1],[24,0,\"section-count\"],[17,1],[24,\"data-scopedcss-39a875b699-c0208536ed\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@count\"],[]]",
2723
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/section-count.gts",
2724
+ "isStrictMode": true
2725
+ }), templateOnly());
2726
+ //#endregion
2727
+ //#region app/components/operator-mode/dashboard/section-head.gts
2728
+ var SectionHead = setComponentTemplate(templateFactory({
2729
+ "id": "HKS+UKPy",
2730
+ "block": "[[[11,0],[24,0,\"section-head\"],[17,1],[24,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[1,\"\\n \"],[10,\"h2\"],[14,0,\"section-title\"],[14,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[1,\"\\n \"],[8,[30,2],[[24,0,\"section-icon\"],[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"]],null,null],[1,\"\\n \"],[10,1],[15,1,[30,3]],[14,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[1,[30,4]],[13],[1,\"\\n\"],[41,[30,5],[[[1,\" \"],[8,[32,0],[[24,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"]],[[\"@count\"],[[30,5]]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[18,6,null],[1,\"\\n \"],[10,2],[14,0,\"section-hint\"],[14,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[18,7,null],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@icon\",\"@titleId\",\"@title\",\"@count\",\"&actions\",\"&default\"],[\"if\",\"yield\"]]",
2731
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/section-head.gts",
2732
+ "scope": () => [SectionCount],
2733
+ "isStrictMode": true
2734
+ }), templateOnly());
2735
+ //#endregion
2736
+ //#region app/components/operator-mode/dashboard/catalog-section.gts
2737
+ var CatalogSection = class extends Component {
2738
+ headingId = `${guidFor(this)}-catalogs`;
2739
+ get shelfRealmURL() {
2740
+ return this.args.showShelf ? catalogRealmURL : null;
2741
+ }
2742
+ static {
2743
+ setComponentTemplate(templateFactory({
2744
+ "id": "ZtNCU0sl",
2745
+ "block": "[[[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[30,0,[\"headingId\"]]],[24,\"data-test-dashboard-section\",\"catalogs\"],[17,1],[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\",\"@count\"],[[32,1],\"Catalogs\",[30,0,[\"headingId\"]],[30,2,[\"length\"]]]],[[\"actions\",\"default\"],[[[[8,[32,2],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],null,null]],[]],[[[1,\"Apps, fields and themes to use in your workspaces.\"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"shelfRealmURL\"]],[[[1,\" \"],[8,[32,3],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],[[\"@realmURL\"],[[30,0,[\"shelfRealmURL\"]]]],null],[1,\"\\n\"]],[]],null],[41,[30,2,[\"length\"]],[[[1,\" \"],[10,0],[14,0,\"catalog-list\"],[14,\"data-test-catalog-list\",\"\"],[14,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,2]],null]],null],null,[[[44,[[28,[32,4],[[30,5],[30,4]],null]],[[[1,\" \"],[8,[32,5],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,3],\"tile\",[30,6],[28,[32,6],[[30,7,[\"currentIndex\"]],[30,6]],null],[30,7,[\"isRingShown\"]]]],null],[1,\"\\n\"]],[6]]]],[3,4]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-catalog-empty\",\"\"],[14,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"],[12],[1,[30,8]],[13],[1,\"\\n\"]],[]]],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@realmIdentifiers\",\"realmIdentifier\",\"i\",\"@navBase\",\"navIndex\",\"@cursor\",\"@emptyMessage\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
2746
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/catalog-section.gts",
2747
+ "scope": () => [
2748
+ SectionHead,
2749
+ IconComponent$3,
2750
+ ManageCatalogs,
2751
+ CatalogShelf,
2752
+ add,
2753
+ Workspace,
2754
+ eq
2755
+ ],
2756
+ "isStrictMode": true
2757
+ }), this);
2758
+ }
2759
+ };
2760
+ function recentWorkspaceCount(columns) {
2761
+ return (columns ? columns * 3 : 13) - 1;
2762
+ }
2763
+ function sortByUpdatedAtDesc(urls, infoFor) {
2764
+ let times = new Map(urls.map((url) => {
2765
+ let { updatedAt } = infoFor(url);
2766
+ let time = updatedAt ? new Date(updatedAt).getTime() : NaN;
2767
+ return [url, Number.isNaN(time) ? -Infinity : time];
2768
+ }));
2769
+ return [...urls].sort((a, b) => {
2770
+ let aTime = times.get(a);
2771
+ let bTime = times.get(b);
2772
+ return aTime === bTime ? 0 : bTime > aTime ? 1 : -1;
2773
+ });
2774
+ }
2775
+ function gridColumnCount(grid) {
2776
+ let columns = getComputedStyle(grid).gridTemplateColumns;
2777
+ return columns && columns !== "none" ? columns.split(" ").length : 0;
2778
+ }
2779
+ //#endregion
2780
+ //#region app/components/operator-mode/dashboard/get-started.gts
2781
+ var log$1 = logger("component:dashboard/get-started");
2782
+ var AUTO_DISMISS_RETRY_DELAYS = [5e3, 3e4];
2783
+ var ChangeCounter = class {
2784
+ seen;
2785
+ changes = 0;
2786
+ count(value) {
2787
+ if (!this.seen || this.seen.value !== value) {
2788
+ this.seen = { value };
2789
+ this.changes++;
2790
+ }
2791
+ return this.changes;
2792
+ }
2793
+ };
2794
+ function countOf(values, value) {
2795
+ return values.filter((other) => other === value).length;
2796
+ }
2797
+ var GetStarted = class extends Component {
2798
+ static {
2799
+ decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
2800
+ }
2801
+ #aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
2802
+ static {
2803
+ decorateFieldV2(this.prototype, "matrixService", [service]);
2804
+ }
2805
+ #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
2806
+ static {
2807
+ decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
2808
+ }
2809
+ #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
2810
+ static {
2811
+ decorateFieldV2(this.prototype, "realm", [service]);
2812
+ }
2813
+ #realm = (initializeDeferredDecorator(this, "realm"), void 0);
2814
+ static {
2815
+ decorateFieldV2(this.prototype, "realmServer", [service]);
2816
+ }
2817
+ #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
2818
+ static {
2819
+ decorateFieldV2(this.prototype, "hostModeService", [service]);
2820
+ }
2821
+ #hostModeService = (initializeDeferredDecorator(this, "hostModeService"), void 0);
2822
+ static {
2823
+ decorateFieldV2(this.prototype, "recentCardsService", [service]);
2824
+ }
2825
+ #recentCardsService = (initializeDeferredDecorator(this, "recentCardsService"), void 0);
2826
+ static {
2827
+ decorateFieldV2(this.prototype, "openedIn", [tracked$1]);
2828
+ }
2829
+ #openedIn = (initializeDeferredDecorator(this, "openedIn"), void 0);
2830
+ static {
2831
+ decorateFieldV2(this.prototype, "isExpanded", [tracked$1], function() {
2832
+ return true;
2833
+ });
2834
+ }
2835
+ #isExpanded = (initializeDeferredDecorator(this, "isExpanded"), void 0);
2836
+ static {
2837
+ decorateFieldV2(this.prototype, "dismissedIn", [tracked$1]);
2838
+ }
2839
+ #dismissedIn = (initializeDeferredDecorator(this, "dismissedIn"), void 0);
2840
+ dismissalChanges = new ChangeCounter();
2841
+ focusNext;
2842
+ panelId = `${guidFor(this)}-panel`;
2843
+ titleId = `${guidFor(this)}-title`;
2844
+ stepsId = `${guidFor(this)}-steps`;
2845
+ dismissedNoteId = `${guidFor(this)}-dismissed`;
2846
+ constructor(owner, args) {
2847
+ super(owner, args);
2848
+ this.loadTask.perform().catch((error) => {
2849
+ if (!didCancel(error)) log$1.warn(`waiting for Get started's signals failed: ${error}`);
2850
+ });
2851
+ }
2852
+ loadTask = buildTask(() => ({
2853
+ context: this,
2854
+ generator: function* () {
2855
+ yield this.aiAssistantPanelService.waitForSessionRooms();
2856
+ }
2857
+ }), null, "loadTask", null);
2858
+ get isLoaded() {
2859
+ return Boolean(this.loadTask.lastSuccessful || this.loadTask.lastErrored);
2860
+ }
2861
+ get steps() {
2862
+ return [
2863
+ {
2864
+ id: "open-card",
2865
+ title: "Open a card in a workspace",
2866
+ hint: "Cards hold your data, documents and apps.",
2867
+ done: this.recentCardsService.recentCards.length > 0
2868
+ },
2869
+ this.buildStep,
2870
+ {
2871
+ id: "publish",
2872
+ title: "Put a workspace on the web",
2873
+ hint: "Publish one from its menu to share it at its own address.",
2874
+ done: this.realmServer.userRealmIdentifiers.some((url) => isHostedRealm(this.realm.info(url)))
2875
+ }
2876
+ ];
2877
+ }
2878
+ static {
2879
+ decorateMethodV2(this.prototype, "steps", [cached$1]);
2880
+ }
2881
+ get buildStep() {
2882
+ let { agentSetup } = this.matrixService.dashboardState;
2883
+ if (usesCodingAgent(this.matrixService.dashboardAgent, agentSetup)) return {
2884
+ id: "agent",
2885
+ title: "Connect your own agent",
2886
+ hint: "Claude Code or Codex can build in your workspaces through the Boxel plugin.",
2887
+ done: AGENT_KINDS.some(({ id }) => (agentSetup?.[id] ?? 0) > 0)
2888
+ };
2889
+ return {
2890
+ id: "ask-ai",
2891
+ title: "Ask Boxel AI Assistant to build something",
2892
+ hint: "It can make your first cards from a sentence.",
2893
+ done: this.aiAssistantPanelService.aiSessionRooms.some((session) => Boolean(session.lastMessage) || session.name !== "New AI Assistant Chat")
2894
+ };
2895
+ }
2896
+ get doneCount() {
2897
+ return this.steps.filter((step) => step.done).length;
2898
+ }
2899
+ get isDismissed() {
2900
+ return Boolean(this.matrixService.dashboardState.onboardingDismissed);
2901
+ }
2902
+ get dismissalEpoch() {
2903
+ return this.dismissalChanges.count(this.isDismissed);
2904
+ }
2905
+ get isOpen() {
2906
+ return this.openedIn === this.dismissalEpoch;
2907
+ }
2908
+ toggle() {
2909
+ this.openedIn = this.isOpen ? void 0 : this.dismissalEpoch;
2910
+ this.isExpanded = true;
2911
+ }
2912
+ static {
2913
+ decorateMethodV2(this.prototype, "toggle", [action]);
2914
+ }
2915
+ toggleExpanded() {
2916
+ this.isExpanded = !this.isExpanded;
2917
+ }
2918
+ static {
2919
+ decorateMethodV2(this.prototype, "toggleExpanded", [action]);
2920
+ }
2921
+ get nextStep() {
2922
+ return this.steps.find((step) => !step.done);
2923
+ }
2924
+ get isAvailable() {
2925
+ return this.isLoaded && !this.isDismissed && this.nextStep !== void 0;
2926
+ }
2927
+ get isFinished() {
2928
+ return this.isLoaded && !this.isDismissed && this.nextStep === void 0;
2929
+ }
2930
+ get showsDismissedNote() {
2931
+ return this.dismissedIn === this.dismissalEpoch;
2932
+ }
2933
+ get toggleState() {
2934
+ return {
2935
+ isReady: this.isAvailable,
2936
+ isOpen: this.isAvailable && this.isOpen,
2937
+ panelId: this.panelId,
2938
+ toggle: this.toggle
2939
+ };
2940
+ }
2941
+ dismissWhenFinished = modifier(() => {
2942
+ this.autoDismissTask.perform();
2943
+ });
2944
+ autoDismissTask = buildTask(() => ({
2945
+ context: this,
2946
+ generator: function* () {
2947
+ for (let delay of [0, ...AUTO_DISMISS_RETRY_DELAYS]) {
2948
+ yield timeout(delay);
2949
+ if (yield this.saveDismissal()) return;
2950
+ }
2951
+ }
2952
+ }), null, "autoDismissTask", "drop");
2953
+ async saveDismissal() {
2954
+ try {
2955
+ await this.matrixService.updateDashboardState({ onboardingDismissed: true });
2956
+ return true;
2957
+ } catch (error) {
2958
+ log$1.warn(`dismissing Get started failed: ${error}`);
2959
+ return false;
2960
+ }
2961
+ }
2962
+ focusIfNext = modifier((element, [control]) => {
2963
+ if (this.focusNext !== control) return;
2964
+ this.focusNext = void 0;
2965
+ let { activeElement, body } = element.ownerDocument;
2966
+ if (!activeElement || activeElement === body) element.focus();
2967
+ });
2968
+ dismissTask = buildTask(() => ({
2969
+ context: this,
2970
+ generator: function* () {
2971
+ if (!(yield this.saveDismissal())) return;
2972
+ this.focusNext = "undo";
2973
+ this.openedIn = void 0;
2974
+ this.dismissedIn = this.dismissalEpoch;
2975
+ }
2976
+ }), null, "dismissTask", "drop");
2977
+ undoDismissTask = buildTask(() => ({
2978
+ context: this,
2979
+ generator: function* () {
2980
+ this.focusNext = "dismiss";
2981
+ this.isExpanded = true;
2982
+ this.openedIn = this.dismissalEpoch + 1;
2983
+ try {
2984
+ yield this.matrixService.updateDashboardState({ onboardingDismissed: false });
2985
+ } catch (error) {
2986
+ log$1.warn(`undoing the dismissal of Get started failed: ${error}`);
2987
+ this.focusNext = void 0;
2988
+ this.openedIn = void 0;
2989
+ return;
2990
+ }
2991
+ if (!this.isAvailable) {
2992
+ this.focusNext = void 0;
2993
+ this.openedIn = void 0;
2994
+ }
2995
+ }
2996
+ }), null, "undoDismissTask", "drop");
2997
+ async openFirstWorkspace() {
2998
+ let [first] = this.realmServer.userRealmIdentifiers;
2999
+ if (first) await this.operatorModeStateService.openWorkspace(first);
3000
+ }
3001
+ static {
3002
+ decorateMethodV2(this.prototype, "openFirstWorkspace", [action]);
3003
+ }
3004
+ get workspacesToPublish() {
3005
+ return sortByUpdatedAtDesc(this.realmServer.userRealmIdentifiers.filter((url) => this.realm.canPublish(url)), this.realm.info);
3006
+ }
3007
+ static {
3008
+ decorateMethodV2(this.prototype, "workspacesToPublish", [cached$1]);
3009
+ }
3010
+ get publishUnavailableNote() {
3011
+ return this.realmServer.userRealmIdentifiers.some((url) => this.realm.isRealmOwner(url)) ? "None of your workspaces can be published. Create a new one to publish it." : "Publishing needs a workspace you own. Create one to publish it.";
3012
+ }
3013
+ get showsPublishUnavailableNote() {
3014
+ return this.workspacesToPublish.length === 0 && this.realmServer.userRealmIdentifiers.filter((url) => this.realm.isRealmOwner(url)).every((url) => this.realm.isInfoLoaded(url));
3015
+ }
3016
+ get onlyWorkspaceToPublish() {
3017
+ let [only, ...rest] = this.workspacesToPublish;
3018
+ return rest.length === 0 ? only : void 0;
3019
+ }
3020
+ get publishMenuItems() {
3021
+ let workspaces = this.workspacesToPublish;
3022
+ let names = workspaces.map((url) => this.realm.info(url).name);
3023
+ let withSegment = workspaces.map((url, index) => {
3024
+ let segment = realmIdentifierSegments(url).at(-1);
3025
+ return segment ? `${names[index]} (${segment})` : void 0;
3026
+ });
3027
+ return workspaces.map((url, index) => {
3028
+ let label = names[index];
3029
+ if (countOf(names, label) > 1) {
3030
+ let short = withSegment[index];
3031
+ label = short && countOf(withSegment, short) === 1 ? short : `${label} (${this.realm.realmURLTextOf(url) ?? url})`;
3032
+ }
3033
+ return {
3034
+ label,
3035
+ onSelect: () => this.openToPublish(url)
3036
+ };
3037
+ });
3038
+ }
3039
+ openToPublish(workspace) {
3040
+ this.hostModeService.openToPublishTask.perform(workspace);
3041
+ }
3042
+ static {
3043
+ decorateMethodV2(this.prototype, "openToPublish", [action]);
3044
+ }
3045
+ async askBoxelAi() {
3046
+ await this.aiAssistantPanelService.openNewSession();
3047
+ }
3048
+ static {
3049
+ decorateMethodV2(this.prototype, "askBoxelAi", [action]);
3050
+ }
3051
+ static {
3052
+ setComponentTemplate(templateFactory({
3053
+ "id": "aTKK32V5",
3054
+ "block": "[[[18,6,[[30,0,[\"toggleState\"]]]],[1,\"\\n\"],[41,[30,0,[\"toggleState\",\"isOpen\"]],[[[1,\" \"],[11,\"section\"],[24,0,\"get-started\"],[16,1,[30,0,[\"panelId\"]]],[16,\"aria-labelledby\",[30,0,[\"titleId\"]]],[24,\"data-test-get-started\",\"\"],[17,1],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"get-started-body\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,\"header\"],[14,0,\"get-started-head\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,\"h2\"],[14,0,\"get-started-title\"],[15,1,[30,0,[\"titleId\"]]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"Get started\"],[13],[1,\"\\n \"],[8,[32,0],[[24,0,\"get-started-progress\"],[16,\"aria-labelledby\",[30,0,[\"titleId\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],[[\"@value\",\"@max\"],[[30,0,[\"doneCount\"]],[30,0,[\"steps\",\"length\"]]]],null],[1,\"\\n \"],[10,2],[14,0,\"get-started-count\"],[14,\"data-test-get-started-count\",\"\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[1,[30,0,[\"doneCount\"]]],[1,\"\\n of\\n \"],[1,[30,0,[\"steps\",\"length\"]]],[1,\"\\n done\\n\"],[41,[51,[30,0,[\"isExpanded\"]]],[[[41,[30,0,[\"nextStep\"]],[[[1,\" · Next:\\n \"],[1,[30,0,[\"nextStep\",\"title\"]]],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,1],[[24,0,\"get-started-dismiss\"],[24,\"data-test-get-started-dismiss\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"dismissTask\",\"perform\"]]],null],[4,[30,0,[\"focusIfNext\"]],[\"dismiss\"],null]],[[\"@tone\",\"@appearance\",\"@size\",\"@busy\"],[\"danger\",\"link\",\"s\",[30,0,[\"dismissTask\",\"isRunning\"]]]],[[\"default\"],[[[[1,\"\\n Dismiss\\n \"]],[]]]]],[1,\"\\n\"],[1,\" \"],[10,0],[14,0,\"get-started-actions\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[16,\"aria-expanded\",[52,[30,0,[\"isExpanded\"]],\"true\",\"false\"]],[16,\"aria-controls\",[52,[30,0,[\"isExpanded\"]],[30,0,[\"stepsId\"]]]],[24,\"data-test-get-started-toggle\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"toggleExpanded\"]]],null]],[[\"@icon\",\"@label\",\"@tooltip\",\"@appearance\",\"@size\"],[[52,[30,0,[\"isExpanded\"]],[32,4],[32,5]],[52,[30,0,[\"isExpanded\"]],\"Minimize steps\",\"Expand steps\"],[52,[30,0,[\"isExpanded\"]],\"Minimize steps\",\"Expand steps\"],\"plain\",\"s\"]],null],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\\n\"],[41,[30,0,[\"isExpanded\"]],[[[1,\" \"],[10,\"ol\"],[14,0,\"get-started-steps\"],[15,1,[30,0,[\"stepsId\"]]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"steps\"]]],null]],null],\"id\",[[[1,\" \"],[10,\"li\"],[15,0,[28,[32,6],[\"get-started-step\"],[[\"is-done\"],[[30,2,[\"done\"]]]]]],[15,\"data-test-get-started-step\",[30,2,[\"id\"]]],[15,\"data-test-get-started-step-done\",[52,[30,2,[\"done\"]],\"true\",\"false\"]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"tick\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n\"],[41,[30,2,[\"done\"]],[[[1,\" \"],[8,[32,7],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"stroke-width\",\"3\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"step-words\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-title\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[1,[30,2,[\"title\"]]],[1,\"\\n\"],[41,[30,2,[\"done\"]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,[[\"default\"],[[[[1,\"(done)\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"step-hint\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,[30,2,[\"hint\"]]],[13],[1,\"\\n\"],[41,[28,[32,9],[[30,2,[\"id\"]],\"publish\"],null],[[[41,[51,[30,2,[\"done\"]]],[[[41,[30,0,[\"showsPublishUnavailableNote\"]],[[[1,\" \"],[10,1],[14,0,\"step-note\"],[14,\"data-test-get-started-publish-unavailable\",\"\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,[30,0,[\"publishUnavailableNote\"]]],[13],[1,\"\\n\"]],[]],null]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[28,[32,9],[[30,2,[\"id\"]],\"publish\"],null],[[[41,[30,0,[\"onlyWorkspaceToPublish\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[28,[32,10],[[30,0,[\"openToPublish\"]],[30,0,[\"onlyWorkspaceToPublish\"]]],null]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Publish a workspace\"]],[]]]]],[1,\"\\n\"]],[]],[[[41,[30,0,[\"workspacesToPublish\",\"length\"]],[[[1,\" \"],[8,[32,11],[[24,0,\"step-action\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],[[\"@items\",\"@label\",\"@align\"],[[30,0,[\"publishMenuItems\"]],\"Workspaces to publish\",\"end\"]],[[\"trigger\"],[[[[1,\"\\n \"],[8,[32,1],[[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,4]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Publish a workspace\\n\"],[41,[30,3],[[[1,\" \"],[8,[32,4],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,0,\"publish-chevron\"],[24,\"aria-hidden\",\"true\"],[24,\"data-test-get-started-publish-chevron\",\"up\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,5],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,0,\"publish-chevron\"],[24,\"aria-hidden\",\"true\"],[24,\"data-test-get-started-publish-chevron\",\"down\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,null],[1,\"\\n \"]],[]]]],[]]]]],[1,\"\\n \"]],[3,4]]]]],[1,\"\\n \"]],[]],null]],[]]]],[]],[[[41,[28,[32,12],[[30,2,[\"done\"]]],null],[[[41,[28,[32,9],[[30,2,[\"id\"]],\"open-card\"],null],[[[41,[30,0,[\"realmServer\",\"userRealmIdentifiers\",\"length\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"openFirstWorkspace\"]]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Open a workspace\"]],[]]]]],[1,\"\\n\"]],[]],null]],[]],[[[41,[28,[32,9],[[30,2,[\"id\"]],\"ask-ai\"],null],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"askBoxelAi\"]]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Ask Boxel AI Assistant\"]],[]]]]],[1,\"\\n\"]],[]],[[[41,[28,[32,9],[[30,2,[\"id\"]],\"agent\"],null],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,5]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Set up an agent\"]],[]]]]],[1,\"\\n \"]],[]],null]],[]]]],[]]],[1,\" \"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[2]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"showsDismissedNote\"]],[[[1,\" \"],[10,0],[14,0,\"get-started-dismissed\"],[14,\"data-test-get-started-dismissed\",\"\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,2],[14,0,\"dismissed-note\"],[15,1,[30,0,[\"dismissedNoteId\"]]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"Get started won’t\\n show again.\"],[13],[1,\"\\n \"],[8,[32,1],[[16,\"aria-describedby\",[30,0,[\"dismissedNoteId\"]]],[24,\"data-test-get-started-undo-dismiss\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"undoDismissTask\",\"perform\"]]],null],[4,[30,0,[\"focusIfNext\"]],[\"undo\"],null]],[[\"@appearance\",\"@size\",\"@busy\"],[\"link\",\"s\",[30,0,[\"undoDismissTask\",\"isRunning\"]]]],[[\"default\"],[[[[1,\"\\n Undo\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"isFinished\"]],[[[1,\" \"],[11,1],[24,\"hidden\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[30,0,[\"dismissWhenFinished\"]],null,null],[12],[13],[1,\"\\n\"]],[]],null]],[]]]],[]]],[1,\"\\n\"]],[\"&attrs\",\"step\",\"isMenuOpen\",\"toggle\",\"@showAgents\",\"&head\"],[\"yield\",\"if\",\"unless\",\"each\",\"-track-array\"]]",
3055
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/get-started.gts",
3056
+ "scope": () => [
3057
+ ProgressBar,
3058
+ Button,
3059
+ on,
3060
+ IconButton,
3061
+ IconComponent$6,
3062
+ IconComponent$13,
3063
+ cn_default,
3064
+ IconComponent$9,
3065
+ VisuallyHidden,
3066
+ eq,
3067
+ fn,
3068
+ Menu,
3069
+ not
3070
+ ],
3071
+ "isStrictMode": true
3072
+ }), this);
3073
+ }
3074
+ };
3075
+ //#endregion
3076
+ //#region app/components/operator-mode/dashboard/keyboard-cursor.ts
3077
+ var KeyboardCursor = class {
3078
+ static {
3079
+ decorateFieldV2(this.prototype, "selected", [tracked$1], function() {
3080
+ return null;
3081
+ });
3082
+ }
3083
+ #selected = (initializeDeferredDecorator(this, "selected"), void 0);
3084
+ static {
3085
+ decorateFieldV2(this.prototype, "keyboardEngaged", [tracked$1], function() {
3086
+ return false;
3087
+ });
3088
+ }
3089
+ #keyboardEngaged = (initializeDeferredDecorator(this, "keyboardEngaged"), void 0);
3090
+ constructor(walk) {
3091
+ this.walk = walk;
3092
+ }
3093
+ get currentIndex() {
3094
+ let keys = this.walk.keys();
3095
+ if (keys.length === 0) return 0;
3096
+ let index;
3097
+ if (this.selected) {
3098
+ let found = keys.indexOf(this.selected.key);
3099
+ index = found >= 0 ? found : this.selected.index;
3100
+ } else index = this.walk.defaultIndex();
3101
+ return Math.min(Math.max(index, 0), keys.length - 1);
3102
+ }
3103
+ static {
3104
+ decorateMethodV2(this.prototype, "currentIndex", [cached$1]);
3105
+ }
3106
+ get isRingShown() {
3107
+ return this.keyboardEngaged;
3108
+ }
3109
+ select(index) {
3110
+ let key = this.walk.keys()[index];
3111
+ if (key !== void 0) this.selected = {
3112
+ key,
3113
+ index
3114
+ };
3115
+ }
3116
+ onPointerUp = () => {
3117
+ this.keyboardEngaged = false;
3118
+ };
3119
+ onFocusIn = (event) => {
3120
+ let target = event.target;
3121
+ let item = target.closest("[data-nav-index]") ?? target.closest("[data-workspace-tile]")?.querySelector("[data-nav-index]");
3122
+ if (!item) return;
3123
+ let index = Number(item.dataset.navIndex);
3124
+ if (Number.isNaN(index)) return;
3125
+ if (index !== this.currentIndex || !this.selected && target !== item) this.select(index);
3126
+ };
3127
+ onKeydown = (keydown) => {
3128
+ let event = keydown;
3129
+ let container = event.currentTarget;
3130
+ let count = this.walk.keys().length;
3131
+ if (count === 0) return;
3132
+ if (event.key === "Tab") this.keyboardEngaged = true;
3133
+ if (event.target === container) {
3134
+ let item = this.itemAt(container, this.currentIndex);
3135
+ if (event.key.startsWith("Arrow") || event.key === "Enter" && item && !isOffScreen(item)) {
3136
+ event.preventDefault();
3137
+ this.showCursor(item);
3138
+ item?.focus({ preventScroll: true });
3139
+ }
3140
+ return;
3141
+ }
3142
+ if (!event.target.closest("[data-nav-index]")) return;
3143
+ if (!this.keyboardEngaged && event.key.startsWith("Arrow")) {
3144
+ event.preventDefault();
3145
+ this.showCursor(this.itemAt(container, this.currentIndex));
3146
+ return;
3147
+ }
3148
+ switch (event.key) {
3149
+ case "ArrowRight":
3150
+ event.preventDefault();
3151
+ this.select(Math.min(this.currentIndex + 1, count - 1));
3152
+ break;
3153
+ case "ArrowLeft":
3154
+ event.preventDefault();
3155
+ this.select(Math.max(this.currentIndex - 1, 0));
3156
+ break;
3157
+ case "ArrowDown":
3158
+ case "ArrowUp": {
3159
+ event.preventDefault();
3160
+ let index = nearestNavIndexInRow(container, this.currentIndex, event.key === "ArrowDown" ? 1 : -1);
3161
+ if (index !== void 0) this.select(index);
3162
+ break;
3163
+ }
3164
+ case "Enter":
3165
+ event.preventDefault();
3166
+ event.stopPropagation();
3167
+ this.itemAt(container, this.currentIndex)?.click();
3168
+ break;
3169
+ }
3170
+ };
3171
+ showCursor(item) {
3172
+ this.keyboardEngaged = true;
3173
+ item?.scrollIntoView({ block: "nearest" });
3174
+ }
3175
+ itemAt(container, index) {
3176
+ return container.querySelector(`[data-nav-index='${index}']`);
3177
+ }
3178
+ };
3179
+ //#endregion
3180
+ //#region app/components/operator-mode/dashboard/realm-list-flyout.gts
3181
+ var RealmListFlyout = class extends Component {
3182
+ static {
3183
+ decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
3184
+ }
3185
+ #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
3186
+ static {
3187
+ decorateFieldV2(this.prototype, "realm", [service]);
3188
+ }
3189
+ #realm = (initializeDeferredDecorator(this, "realm"), void 0);
3190
+ get realms() {
3191
+ return this.args.realmURLs.map((url) => {
3192
+ let info = this.realm.info(url);
3193
+ return {
3194
+ url,
3195
+ info,
3196
+ isHosted: isHostedRealm(info),
3197
+ wallpaper: wallpaperImage(info.backgroundURL)
3198
+ };
3199
+ });
3200
+ }
3201
+ static {
3202
+ decorateMethodV2(this.prototype, "realms", [cached$1]);
3203
+ }
3204
+ async openWorkspace(url) {
3205
+ this.args.close();
3206
+ await this.operatorModeStateService.openWorkspace(url);
3207
+ }
3208
+ static {
3209
+ decorateMethodV2(this.prototype, "openWorkspace", [action]);
3210
+ }
3211
+ static {
3212
+ setComponentTemplate(templateFactory({
3213
+ "id": "utJJbZtc",
3214
+ "block": "[[[10,\"header\"],[14,0,\"flyout-header\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"flyout-title\"],[15,1,[30,1]],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\"],[41,[30,0,[\"realms\",\"length\"]],[[[1,\" \"],[8,[32,0],[[24,\"data-test-section-rail-flyout-count\",\"\"],[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"]],[[\"@count\"],[[30,0,[\"realms\",\"length\"]]]],null],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"realms\"]]],null]],null],\"url\",[[[1,\" \"],[8,[32,1],[[24,0,\"realm\"],[16,\"data-test-section-rail-realm\",[30,3,[\"info\",\"name\"]]],[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[4,[32,2],[\"click\",[28,[32,3],[[30,0,[\"openWorkspace\"]],[30,3,[\"url\"]]],null]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"realm-content\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"realm-thumb\"],[15,5,[28,[32,4],null,[[\"realm-wallpaper\"],[[30,3,[\"wallpaper\"]]]]]],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[8,[32,5],[[24,0,\"realm-icon\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"]],[[\"@realmInfo\"],[[30,3,[\"info\"]]]],null],[1,\"\\n \"],[13],[1,\"\\n \"],[10,1],[14,0,\"realm-name\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,[30,3,[\"info\",\"name\"]]],[13],[1,\"\\n\"],[41,[30,3,[\"isHosted\"]],[[[1,\" \"],[8,[32,6],[[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[3]],[[[1,\" \"],[10,2],[14,0,\"flyout-empty\"],[14,\"data-test-section-rail-flyout-empty\",\"\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[1,[30,4]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]]],[1,\"\\n\"]],[\"@titleId\",\"@title\",\"realm\",\"@emptyMessage\"],[\"if\",\"each\",\"-track-array\"]]",
3215
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/realm-list-flyout.gts",
3216
+ "scope": () => [
3217
+ SectionCount,
3218
+ Button,
3219
+ on,
3220
+ fn,
3221
+ css_var_default,
3222
+ RealmIcon,
3223
+ HostedPill
3224
+ ],
3225
+ "isStrictMode": true
3226
+ }), this);
3227
+ }
3228
+ };
3229
+ function realmListFlyout(title, realmURLs, emptyMessage) {
3230
+ return setComponentTemplate(templateFactory({
3231
+ "id": "mBa+wnpb",
3232
+ "block": "[[[8,[32,0],null,[[\"@title\",\"@titleId\",\"@close\",\"@realmURLs\",\"@emptyMessage\"],[[32,1],[30,1],[30,2],[28,[32,2],null,null],[28,[32,3],null,null]]],null]],[\"@titleId\",\"@close\"],[]]",
3233
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/realm-list-flyout.gts",
3234
+ "scope": () => [
3235
+ RealmListFlyout,
3236
+ title,
3237
+ realmURLs,
3238
+ emptyMessage
3239
+ ],
3240
+ "isStrictMode": true
3241
+ }), templateOnly());
3242
+ }
3243
+ //#endregion
3244
+ //#region app/components/operator-mode/dashboard/index.gts
3245
+ var log = logger("component:dashboard");
3246
+ var SCOPE_OPTIONS = [{
3247
+ value: "all",
3248
+ label: "All"
3249
+ }, {
3250
+ value: "hosted",
3251
+ label: "Hosted"
3252
+ }];
3253
+ var Dashboard = class extends Component {
3254
+ static {
3255
+ decorateFieldV2(this.prototype, "matrixService", [service]);
3256
+ }
3257
+ #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
3258
+ static {
3259
+ decorateFieldV2(this.prototype, "network", [service]);
3260
+ }
3261
+ #network = (initializeDeferredDecorator(this, "network"), void 0);
3262
+ static {
3263
+ decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
3264
+ }
3265
+ #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
3266
+ static {
3267
+ decorateFieldV2(this.prototype, "realmServer", [service]);
3268
+ }
3269
+ #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
3270
+ static {
3271
+ decorateFieldV2(this.prototype, "realm", [service]);
3272
+ }
3273
+ #realm = (initializeDeferredDecorator(this, "realm"), void 0);
3274
+ returnRealmURL = this.readReturnRealmURL();
3275
+ readReturnRealmURL() {
3276
+ try {
3277
+ return this.operatorModeStateService.openRealmURL || void 0;
3278
+ } catch {
3279
+ return;
3280
+ }
3281
+ }
3282
+ static {
3283
+ decorateFieldV2(this.prototype, "hour", [tracked$1], function() {
3284
+ return (/* @__PURE__ */ new Date()).getHours();
3285
+ });
3286
+ }
3287
+ #hour = (initializeDeferredDecorator(this, "hour"), void 0);
3288
+ get greeting() {
3289
+ return greetingFor(this.hour, this.matrixService.profile.displayName);
3290
+ }
3291
+ trackHour = modifier(() => {
3292
+ let timer;
3293
+ let schedule = () => {
3294
+ let now = /* @__PURE__ */ new Date();
3295
+ let nextHour = new Date(now);
3296
+ nextHour.setHours(now.getHours() + 1, 0, 0, 0);
3297
+ timer = setTimeout(update, nextHour.getTime() - now.getTime());
3298
+ };
3299
+ let update = () => {
3300
+ clearTimeout(timer);
3301
+ this.hour = (/* @__PURE__ */ new Date()).getHours();
3302
+ schedule();
3303
+ };
3304
+ let onVisibilityChange = () => {
3305
+ if (document.visibilityState === "visible") update();
3306
+ };
3307
+ schedule();
3308
+ document.addEventListener("visibilitychange", onVisibilityChange);
3309
+ return () => {
3310
+ clearTimeout(timer);
3311
+ document.removeEventListener("visibilitychange", onVisibilityChange);
3312
+ };
3313
+ });
3314
+ headingId = (section) => `${guidFor(this)}-${section}`;
3315
+ rowListId = `${guidFor(this)}-workspace-rows`;
3316
+ static {
3317
+ decorateFieldV2(this.prototype, "scope", [tracked$1], function() {
3318
+ return "all";
3319
+ });
3320
+ }
3321
+ #scope = (initializeDeferredDecorator(this, "scope"), void 0);
3322
+ scopeOptions = SCOPE_OPTIONS;
3323
+ setScope(value) {
3324
+ let option = SCOPE_OPTIONS.find((option) => option.value === value);
3325
+ if (option) {
3326
+ this.scope = option.value;
3327
+ this.showAllWorkspaces = false;
3328
+ }
3329
+ }
3330
+ static {
3331
+ decorateMethodV2(this.prototype, "setScope", [action]);
3332
+ }
3333
+ static {
3334
+ decorateFieldV2(this.prototype, "isArchivedExpanded", [tracked$1], function() {
3335
+ return false;
3336
+ });
3337
+ }
3338
+ #isArchivedExpanded = (initializeDeferredDecorator(this, "isArchivedExpanded"), void 0);
3339
+ get archivedRealms() {
3340
+ return this.realmServer.archivedRealms;
3341
+ }
3342
+ get unreachableRealmServers() {
3343
+ return this.realmServer.unreachableRealmServers;
3344
+ }
3345
+ get unreachableRealmServersMessage() {
3346
+ return unreachableRealmServersMessage(this.unreachableRealmServers, this.isRetryingUnreachableRealmServers);
3347
+ }
3348
+ get isRetryingUnreachableRealmServers() {
3349
+ return this.matrixService.isRetryingUnreachableRealmServers;
3350
+ }
3351
+ get unreachableNoticeIcon() {
3352
+ return this.isRetryingUnreachableRealmServers ? IconComponent$7 : IconComponent$8;
3353
+ }
3354
+ get showArchivedCount() {
3355
+ return Boolean(this.loadArchivedRealmsTask.lastSuccessful) || this.archivedRealms.length > 0;
3356
+ }
3357
+ loadArchivedRealmsTask = buildTask(() => ({
3358
+ context: this,
3359
+ generator: function* () {
3360
+ yield this.realmServer.fetchArchivedRealms();
3361
+ }
3362
+ }), null, "loadArchivedRealmsTask", "drop");
3363
+ get archivedLoadFailed() {
3364
+ return Boolean(this.loadArchivedRealmsTask.last?.isError);
3365
+ }
3366
+ setArchivedExpanded(isExpanded) {
3367
+ this.isArchivedExpanded = isExpanded;
3368
+ if (this.isArchivedExpanded) this.loadArchivedRealms();
3369
+ }
3370
+ static {
3371
+ decorateMethodV2(this.prototype, "setArchivedExpanded", [action]);
3372
+ }
3373
+ loadArchivedRealms() {
3374
+ if (!this.loadArchivedRealmsTask.lastSuccessful && !this.loadArchivedRealmsTask.isRunning) this.loadArchivedRealmsTask.perform().catch((error) => {
3375
+ if (didCancel(error)) return;
3376
+ log.warn(`loading archived realms failed: ${error}`);
3377
+ });
3378
+ }
3379
+ static {
3380
+ decorateMethodV2(this.prototype, "loadArchivedRealms", [action]);
3381
+ }
3382
+ isHosted = (url) => isHostedRealm(this.realm.info(url));
3383
+ filterByScope(urls) {
3384
+ return this.scope === "hosted" ? urls.filter(this.isHosted) : urls;
3385
+ }
3386
+ get userRealmIdentifiers() {
3387
+ return this.filterByScope(this.realmServer.userRealmIdentifiers);
3388
+ }
3389
+ static {
3390
+ decorateMethodV2(this.prototype, "userRealmIdentifiers", [cached$1]);
3391
+ }
3392
+ get filteredCatalogRealmIdentifiers() {
3393
+ return this.filterByScope(orderedCatalogRealmURLs(this.realmServer.displayedCatalogRealmIdentifiers, this.realm.info));
3394
+ }
3395
+ static {
3396
+ decorateMethodV2(this.prototype, "filteredCatalogRealmIdentifiers", [cached$1]);
3397
+ }
3398
+ get listedFavorites() {
3399
+ return listedFavoriteRealmIdentifiers(this.matrixService.workspaceFavorites, this.realmServer.userRealmIdentifiers, this.realmServer.displayedCatalogRealmIdentifiers);
3400
+ }
3401
+ static {
3402
+ decorateMethodV2(this.prototype, "listedFavorites", [cached$1]);
3403
+ }
3404
+ get favoriteRealmIdentifiers() {
3405
+ return this.filterByScope(this.listedFavorites);
3406
+ }
3407
+ static {
3408
+ decorateMethodV2(this.prototype, "favoriteRealmIdentifiers", [cached$1]);
3409
+ }
3410
+ trackFavoriteCounts = modifier((_el, [urls, _revision]) => {
3411
+ this.realm.loadIndexCounts(urls);
3412
+ });
3413
+ get isFavoritesShown() {
3414
+ return this.listedFavorites.length > 0;
3415
+ }
3416
+ get userWorkspacesEmptyMessage() {
3417
+ if (this.scope === "hosted" && this.userRealmIdentifiers.length === 0) return "No matching results";
3418
+ return null;
3419
+ }
3420
+ static {
3421
+ decorateFieldV2(this.prototype, "recentColumns", [tracked$1], function() {
3422
+ return 0;
3423
+ });
3424
+ }
3425
+ #recentColumns = (initializeDeferredDecorator(this, "recentColumns"), void 0);
3426
+ static {
3427
+ decorateFieldV2(this.prototype, "rowColumns", [tracked$1], function() {
3428
+ return 0;
3429
+ });
3430
+ }
3431
+ #rowColumns = (initializeDeferredDecorator(this, "rowColumns"), void 0);
3432
+ measureColumns = modifier((grid, [which]) => {
3433
+ if (typeof ResizeObserver === "undefined") return;
3434
+ let observer = new ResizeObserver(() => {
3435
+ let columns = gridColumnCount(grid);
3436
+ if (which === "recent" && columns !== this.recentColumns) this.recentColumns = columns;
3437
+ else if (which === "rows" && columns !== this.rowColumns) this.rowColumns = columns;
3438
+ });
3439
+ observer.observe(grid);
3440
+ return () => observer.disconnect();
3441
+ });
3442
+ get rowsPerGridRow() {
3443
+ return this.rowColumns || 3;
3444
+ }
3445
+ get recentRealmIdentifiers() {
3446
+ return sortByUpdatedAtDesc(this.userRealmIdentifiers, this.realm.info).slice(0, recentWorkspaceCount(this.recentColumns));
3447
+ }
3448
+ static {
3449
+ decorateMethodV2(this.prototype, "recentRealmIdentifiers", [cached$1]);
3450
+ }
3451
+ get rowRealmIdentifiers() {
3452
+ let recent = new Set(this.recentRealmIdentifiers);
3453
+ return this.userRealmIdentifiers.filter((url) => !recent.has(url));
3454
+ }
3455
+ static {
3456
+ decorateMethodV2(this.prototype, "rowRealmIdentifiers", [cached$1]);
3457
+ }
3458
+ static {
3459
+ decorateFieldV2(this.prototype, "showAllWorkspaces", [tracked$1]);
3460
+ }
3461
+ #showAllWorkspaces = (initializeDeferredDecorator(this, "showAllWorkspaces"), void 0);
3462
+ get isShowingAllWorkspaces() {
3463
+ return this.showAllWorkspaces ?? this.isReturnRowCollapsed;
3464
+ }
3465
+ toggleAllWorkspaces() {
3466
+ this.showAllWorkspaces = !this.isShowingAllWorkspaces;
3467
+ }
3468
+ static {
3469
+ decorateMethodV2(this.prototype, "toggleAllWorkspaces", [action]);
3470
+ }
3471
+ get isReturnRowCollapsed() {
3472
+ let target = this.returnRealmURL;
3473
+ if (!target) return false;
3474
+ return this.rowRealmIdentifiers.findIndex((url) => this.toURL(url) === target) >= this.collapsedRowCount;
3475
+ }
3476
+ get collapsedRowCount() {
3477
+ return this.rowsPerGridRow * 10;
3478
+ }
3479
+ get isRowListCollapsible() {
3480
+ return this.rowRealmIdentifiers.length > this.collapsedRowCount;
3481
+ }
3482
+ get visibleRowRealmIdentifiers() {
3483
+ return this.isShowingAllWorkspaces ? this.rowRealmIdentifiers : this.rowRealmIdentifiers.slice(0, this.collapsedRowCount);
3484
+ }
3485
+ static {
3486
+ decorateMethodV2(this.prototype, "visibleRowRealmIdentifiers", [cached$1]);
3487
+ }
3488
+ get hiddenRowCount() {
3489
+ return this.rowRealmIdentifiers.length - this.visibleRowRealmIdentifiers.length;
3490
+ }
3491
+ get favoritesCount() {
3492
+ return this.favoriteRealmIdentifiers.length;
3493
+ }
3494
+ get userWorkspacesCount() {
3495
+ return this.userRealmIdentifiers.length;
3496
+ }
3497
+ get isAddWorkspaceShown() {
3498
+ return !this.userWorkspacesEmptyMessage;
3499
+ }
3500
+ get renderedCatalogCount() {
3501
+ return this.filteredCatalogRealmIdentifiers.length;
3502
+ }
3503
+ get catalogEmptyMessage() {
3504
+ return this.scope === "hosted" ? "No matching results" : "No catalogs yet. Add public realms with the gear.";
3505
+ }
3506
+ get isCatalogShelfShown() {
3507
+ return this.scope !== "hosted";
3508
+ }
3509
+ get addWorkspaceNavIndex() {
3510
+ return this.favoritesCount;
3511
+ }
3512
+ get recentNavBase() {
3513
+ return this.addWorkspaceNavIndex + (this.isAddWorkspaceShown ? 1 : 0);
3514
+ }
3515
+ get rowsNavBase() {
3516
+ return this.recentNavBase + this.recentRealmIdentifiers.length;
3517
+ }
3518
+ get catalogNavBase() {
3519
+ return this.rowsNavBase + this.visibleRowRealmIdentifiers.length;
3520
+ }
3521
+ get walkKeys() {
3522
+ return [
3523
+ ...this.favoriteRealmIdentifiers.map((url) => `desk:${url}`),
3524
+ ...this.isAddWorkspaceShown ? ["new-workspace"] : [],
3525
+ ...this.recentRealmIdentifiers.map((url) => `workspace:${url}`),
3526
+ ...this.visibleRowRealmIdentifiers.map((url) => `workspace:${url}`),
3527
+ ...this.filteredCatalogRealmIdentifiers.map((url) => `catalog:${url}`)
3528
+ ];
3529
+ }
3530
+ static {
3531
+ decorateMethodV2(this.prototype, "walkKeys", [cached$1]);
3532
+ }
3533
+ get returnNavIndex() {
3534
+ let target = this.returnRealmURL;
3535
+ if (!target) return;
3536
+ let index = this.walkKeys.findIndex((key) => {
3537
+ let separator = key.indexOf(":");
3538
+ return separator >= 0 && this.toURL(key.slice(separator + 1)) === target;
3539
+ });
3540
+ return index >= 0 ? index : void 0;
3541
+ }
3542
+ static {
3543
+ decorateMethodV2(this.prototype, "returnNavIndex", [cached$1]);
3544
+ }
3545
+ toURL(id) {
3546
+ try {
3547
+ return this.network.virtualNetwork.toURL(id).href;
3548
+ } catch {
3549
+ return id;
3550
+ }
3551
+ }
3552
+ get defaultSelectedIndex() {
3553
+ let returnIndex = this.returnNavIndex;
3554
+ if (returnIndex !== void 0) return returnIndex;
3555
+ if (this.favoritesCount > 0) return 0;
3556
+ if (this.userWorkspacesCount > 0) return this.recentNavBase;
3557
+ if (this.renderedCatalogCount > 0) return this.catalogNavBase;
3558
+ return 0;
3559
+ }
3560
+ favoritesSection = {
3561
+ id: "favorites",
3562
+ label: "Favorites",
3563
+ icon: IconComponent$17,
3564
+ flyout: realmListFlyout("Favorites", () => this.favoriteRealmIdentifiers, () => "No matching results")
3565
+ };
3566
+ workspacesSection = {
3567
+ id: "workspaces",
3568
+ label: "Workspaces",
3569
+ icon: IconComponent$14,
3570
+ flyout: realmListFlyout("Workspaces", () => sortByUpdatedAtDesc(this.userRealmIdentifiers, this.realm.info), () => this.userWorkspacesEmptyMessage ?? "No workspaces yet. Create one from the Workspaces section.")
3571
+ };
3572
+ agentsSection = {
3573
+ id: "agents",
3574
+ label: "Agents",
3575
+ icon: IconComponent$4,
3576
+ flyout: AgentsFlyout
3577
+ };
3578
+ showAgents() {
3579
+ this.args.sections.scrollTo(this.agentsSection.id);
3580
+ }
3581
+ static {
3582
+ decorateMethodV2(this.prototype, "showAgents", [action]);
3583
+ }
3584
+ catalogsSection = {
3585
+ id: "catalogs",
3586
+ label: "Catalogs",
3587
+ icon: IconComponent$3,
3588
+ flyout: realmListFlyout("Catalogs", () => this.filteredCatalogRealmIdentifiers, () => this.catalogEmptyMessage)
3589
+ };
3590
+ cursor = new KeyboardCursor({
3591
+ keys: () => this.walkKeys,
3592
+ defaultIndex: () => this.defaultSelectedIndex
3593
+ });
3594
+ static {
3595
+ setComponentTemplate(templateFactory({
3596
+ "id": "0jDYQinL",
3597
+ "block": "[[[11,\"section\"],[16,0,[28,[32,0],[\"dashboard\"],[[\"is-compact\"],[[30,1,[\"isCompact\"]]]]]],[24,\"aria-label\",\"Dashboard\"],[24,\"data-theme\",\"dark\"],[24,\"data-keyboard-cursor\",\"\"],[24,\"data-test-dashboard\",\"\"],[17,2],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"keydown\",[30,0,[\"cursor\",\"onKeydown\"]]],null],[4,[32,1],[\"focusin\",[30,0,[\"cursor\",\"onFocusIn\"]]],null],[4,[32,1],[\"pointerup\",[30,0,[\"cursor\",\"onPointerUp\"]]],null],[12],[1,\"\\n \"],[11,0],[24,0,\"dashboard-scroller boxel-dark-scrollbar\"],[24,\"data-test-dashboard-scroller\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"trackScroller\"]],null,null],[12],[1,\"\\n \"],[10,0],[14,0,\"frosted-band\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[13],[1,\"\\n \"],[10,0],[14,0,\"dashboard-page\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[1,\" \"],[10,0],[14,0,\"unreachable-status\"],[14,\"role\",\"status\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"unreachableRealmServers\",\"length\"]],[[[1,\" \"],[10,0],[14,0,\"unreachable-notice\"],[14,\"data-test-unreachable-realm-servers-notice\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[30,0,[\"unreachableNoticeIcon\"]],[[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,0,\"unreachable-notice-icon\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"unreachableRealmServersMessage\"]]],[13],[1,\"\\n\"],[41,[30,0,[\"isRetryingUnreachableRealmServers\"]],[[[1,\" \"],[8,[32,2],[[24,0,\"unreachable-notice-icon\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@size\"],[20]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\\n\"],[1,\" \"],[8,[32,3],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@showAgents\"],[[30,0,[\"showAgents\"]]]],[[\"head\"],[[[[1,\"\\n \"],[10,\"header\"],[14,0,\"page-head\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"greeting-line\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[1,\" \"],[11,\"h1\"],[24,0,\"greeting\"],[24,\"data-test-dashboard-greeting\",\"\"],[24,\"data-test-percy-hide\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"trackHour\"]],null,null],[12],[1,[30,0,[\"greeting\"]]],[13],[1,\"\\n\"],[41,[30,3,[\"isReady\"]],[[[1,\" \"],[8,[32,4],[[16,0,[28,[32,0],[\"get-started-button\"],[[\"is-open\"],[[30,3,[\"isOpen\"]]]]]],[16,\"aria-expanded\",[52,[30,3,[\"isOpen\"]],\"true\",\"false\"]],[16,\"aria-controls\",[52,[30,3,[\"isOpen\"]],[30,3,[\"panelId\"]]]],[24,\"data-theme\",\"light\"],[24,\"data-test-get-started-button\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"click\",[30,3,[\"toggle\"]]],null]],[[\"@tone\",\"@appearance\",\"@size\",\"@shape\"],[[52,[30,3,[\"isOpen\"]],\"neutral\",\"primary\"],\"accent\",\"m\",\"pill\"]],[[\"default\"],[[[[1,\"Get started\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,5],[[24,0,\"scope-filter\"],[24,\"data-test-dashboard-filter\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@options\",\"@value\",\"@onValueChange\",\"@label\"],[[30,0,[\"scopeOptions\"]],[30,0,[\"scope\"]],[30,0,[\"setScope\"]],\"Filter workspaces\"]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[3]]]]],[1,\"\\n\\n\"],[41,[30,0,[\"isFavoritesShown\"]],[[[1,\" \"],[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[28,[30,0,[\"headingId\"]],[\"favorites\"],null]],[24,\"data-test-dashboard-section\",\"favorites\"],[24,\"data-test-favorites-section\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"favoritesSection\"]]],null],[12],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\",\"@count\"],[[32,7],\"Favorites\",[28,[30,0,[\"headingId\"]],[\"favorites\"],null],[30,0,[\"favoritesCount\"]]]],[[\"default\"],[[[[1,\"Workspaces you favorited, kept at the top.\"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"favoritesCount\"]],[[[1,\" \"],[11,0],[24,0,\"desk-list\"],[24,\"data-test-favorites-list\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"trackFavoriteCounts\"]],[[30,0,[\"favoriteRealmIdentifiers\"]],[30,0,[\"realm\",\"indexCountsRevision\"]]],null],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"favoriteRealmIdentifiers\"]]],null]],null],null,[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,4],\"desk\",[30,5],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,5]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"]],[4,5]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-favorites-empty\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"No matching\\n results\"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\"\\n \"],[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[28,[30,0,[\"headingId\"]],[\"workspaces\"],null]],[24,\"data-test-dashboard-section\",\"workspaces\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"workspacesSection\"]]],null],[12],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\"],[[32,10],\"Workspaces\",[28,[30,0,[\"headingId\"]],[\"workspaces\"],null]]],[[\"default\"],[[[[1,\"Where your cards live.\"]],[]]]]],[1,\"\\n\\n \"],[10,0],[14,0,\"group\"],[14,\"data-test-your-workspaces-section\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[10,\"h3\"],[14,0,\"group-head\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[32,11],[[24,0,\"group-icon\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"group-title\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"Your Workspaces\"],[13],[1,\"\\n\"],[41,[30,0,[\"userWorkspacesCount\"]],[[[1,\" \"],[10,1],[14,0,\"group-count\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"userWorkspacesCount\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,0,[\"userWorkspacesEmptyMessage\"]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-workspaces-empty\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"userWorkspacesEmptyMessage\"]]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,0],[14,0,\"your-workspaces\"],[14,\"data-test-workspace-list\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[11,0],[24,0,\"recent-list\"],[24,\"data-test-workspace-recent-list\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"measureColumns\"]],[\"recent\"],null],[12],[1,\"\\n \"],[8,[32,12],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,0,[\"addWorkspaceNavIndex\"]],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,0,[\"addWorkspaceNavIndex\"]]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"recentRealmIdentifiers\"]]],null]],null],null,[[[44,[[28,[32,13],[[30,0,[\"recentNavBase\"]],[30,7]],null]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,6],\"tile\",[30,8],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,8]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"]],[8]]]],[6,7]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,0,[\"rowRealmIdentifiers\",\"length\"]],[[[1,\" \"],[11,0],[16,1,[30,0,[\"rowListId\"]]],[16,0,[28,[32,0],[\"row-list\"],[[\"is-clipped\"],[[28,[32,14],[[30,0,[\"hiddenRowCount\"]],0],null]]]]],[24,\"data-test-workspace-rows\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"measureColumns\"]],[\"rows\"],null],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"visibleRowRealmIdentifiers\"]]],null]],null],null,[[[44,[[28,[32,13],[[30,0,[\"rowsNavBase\"]],[30,10]],null]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,9],\"row\",[30,11],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,11]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"]],[11]]]],[9,10]],null],[41,[30,0,[\"hiddenRowCount\"]],[[[1,\" \"],[10,0],[14,0,\"list-scrim\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,0,[\"isRowListCollapsible\"]],[[[1,\" \"],[8,[32,4],[[16,0,[28,[32,0],[\"list-toggle\"],[[\"is-collapsed\"],[[28,[32,15],[[30,0,[\"isShowingAllWorkspaces\"]]],null]]]]],[16,\"aria-controls\",[30,0,[\"rowListId\"]]],[16,\"aria-expanded\",[52,[30,0,[\"isShowingAllWorkspaces\"]],\"true\",\"false\"]],[24,\"data-test-workspace-list-toggle\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"click\",[30,0,[\"toggleAllWorkspaces\"]]],null]],[[\"@appearance\",\"@shape\"],[\"accent\",\"pill\"]],[[\"default\"],[[[[1,\"\\n\"],[41,[30,0,[\"isShowingAllWorkspaces\"]],[[[1,\" Show fewer\\n\"]],[]],[[[1,\" Show\\n \"],[1,[30,0,[\"hiddenRowCount\"]]],[1,\"\\n more\\n\"]],[]]],[1,\" \"]],[]]]]],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n\\n \"],[10,0],[14,0,\"group\"],[14,\"data-test-archived-section\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[32,16],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@open\",\"@onOpenChange\"],[[30,0,[\"isArchivedExpanded\"]],[30,0,[\"setArchivedExpanded\"]]]],[[\"trigger\",\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"group-head\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[32,17],[[24,0,\"group-icon\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"group-title\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"Archived\"],[13],[1,\"\\n\"],[41,[30,0,[\"showArchivedCount\"]],[[[1,\" \"],[10,1],[14,0,\"group-count\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"archivedRealms\",\"length\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"]],[]],[[[1,\"\\n \"],[10,0],[14,0,\"archived-content\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"loadArchivedRealmsTask\",\"isRunning\"]],[[[1,\" \"],[8,[32,2],[[24,\"aria-label\",\"Loading archived workspaces\"],[24,\"data-test-archived-loading\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@size\"],[20]],null],[1,\"\\n\"]],[]],[[[41,[30,0,[\"archivedRealms\",\"length\"]],[[[1,\" \"],[10,0],[14,0,\"row-list\"],[14,\"data-test-archived-list\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"archivedRealms\"]]],null]],null],null,[[[1,\" \"],[8,[32,18],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@archivedRealm\"],[[30,12]]],null],[1,\"\\n\"]],[12]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"archivedLoadFailed\"]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"role\",\"alert\"],[14,\"data-test-archived-error\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n Couldn’t load archived workspaces.\\n \"],[8,[32,4],[[24,\"data-test-archived-retry\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"click\",[30,0,[\"loadArchivedRealms\"]]],null]],[[\"@tone\",\"@appearance\"],[\"primary\",\"link\"]],[[\"default\"],[[[[1,\"Try again\"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-archived-empty\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"No\\n archived workspaces\"],[13],[1,\"\\n \"]],[]]]],[]]]],[]]],[1,\" \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\\n \"],[8,[32,19],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"catalogsSection\"]]],null]],[[\"@realmIdentifiers\",\"@emptyMessage\",\"@showShelf\",\"@navBase\",\"@cursor\"],[[30,0,[\"filteredCatalogRealmIdentifiers\"]],[30,0,[\"catalogEmptyMessage\"]],[30,0,[\"isCatalogShelfShown\"]],[30,0,[\"catalogNavBase\"]],[30,0,[\"cursor\"]]]],null],[1,\"\\n\\n \"],[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[28,[30,0,[\"headingId\"]],[\"agents\"],null]],[24,\"data-test-dashboard-section\",\"agents\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"agentsSection\"]]],null],[12],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\"],[[32,20],\"Agents\",[28,[30,0,[\"headingId\"]],[\"agents\"],null]]],[[\"default\"],[[[[1,\"Build with Boxel AI Assistant, or connect your own agent.\"]],[]]]]],[1,\"\\n \"],[8,[32,21],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"@sections\",\"&attrs\",\"getStarted\",\"realmIdentifier\",\"i\",\"realmIdentifier\",\"i\",\"navIndex\",\"realmIdentifier\",\"i\",\"navIndex\",\"archivedRealm\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
3598
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/index.gts",
3599
+ "scope": () => [
3600
+ cn_default,
3601
+ on,
3602
+ Spinner,
3603
+ GetStarted,
3604
+ Button,
3605
+ SegmentedControl,
3606
+ SectionHead,
3607
+ IconComponent$17,
3608
+ Workspace,
3609
+ eq,
3610
+ IconComponent$14,
3611
+ IconComponent$15,
3612
+ AddWorkspace,
3613
+ add,
3614
+ gt,
3615
+ not,
3616
+ Collapsible,
3617
+ IconComponent$18,
3618
+ ArchivedWorkspace,
3619
+ CatalogSection,
3620
+ IconComponent$4,
3621
+ Agents
3622
+ ],
3623
+ "isStrictMode": true
3624
+ }), this);
3625
+ }
3626
+ };
3627
+ //#endregion
3628
+ export { titleize_exports as i, ai_assistant_panel_service_exports as n, titleize as r, Dashboard as t };