@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
@@ -1,3576 +0,0 @@
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-D4pSne0x.js";
35
- import { n as getSearchEntriesResource } from "./search-entries-0TMjLUAc.js";
36
- import { n as isMatrixError } from "./matrix-utils-DgdkiqON.js";
37
- import { t as CreateAiAssistantRoomTool } from "./create-ai-assistant-room-C41ylhDb.js";
38
- import { t as SummarizeSessionTool } from "./summarize-session-Dy9LE5PI.js";
39
- import { t as UpdateRoomSkillsTool } from "./update-room-skills-BmB0o3wG.js";
40
- import { t as catalogRealmURL } from "./utils-DjDK6b6F.js";
41
- import { a as emit, c as resolveTone, o as firstDefined, s as resolveSize, t as Button } from "./button-BeSuhveJ.js";
42
- import { a as focusWhen, o as listen, u as rovingTabindex } from "./focus-Dm4wkM72.js";
43
- import { n as IconButton } from "./icon-button-ABCGVF3C.js";
44
- import { t as VisuallyHidden } from "./visually-hidden-KvpJ_iic.js";
45
- import { a as cssValue, i as cssStyleFrom, t as cssDeclaration } from "./pretui-css-BX-BJj3t.js";
46
- import { t as RealmURLTooltip } from "./realm-url-tooltip-D2wwSzyR.js";
47
- import { t as perform } from "./perform-g9ba6YNZ.js";
48
- import { t as keepStyle } from "./keep-style-BE2XHAZs.js";
49
- import { t as ProgressBar } from "./progress-bar-esZEZGws.js";
50
- import { t as Spinner } from "./spinner-CpIBUG9m.js";
51
- import { a as IconComponent$14, i as IconComponent$15 } from "./menu-kUSaJIPq.js";
52
- import { t as IconComponent$16 } from "./alert-triangle-W33oN1Fi.js";
53
- import { n as IconComponent$17 } from "./play-CwV6e-PP.js";
54
- import { i as resolveOpen, r as modalBehavior, t as POPUPS_IN_PLACE } from "./overlay-DecPh3nt.js";
55
- import { n as ai_assist_icon_2x_default, t as SegmentedControl } from "./segmented-control-iePxSdTS.js";
56
- import { o as IconComponent$18 } from "./workspace-actions-BuawjFmZ.js";
57
- 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";
58
- import { t as AddWorkspace } from "./add-workspace-CPnNIXS9.js";
59
- import { t as Select } from "./select-tNs6_xwW.js";
60
- import { t as IconComponent$19 } from "./settings-BMkO30Yi.js";
61
- import { i as linkedIds, s as storiesFrom, t as LISTING_FIELDS } from "./catalog-stories-C4pan19Z.js";
62
- import { n as HostedPill, r as fitPage, t as Workspace } from "./workspace-Cyftysy9.js";
63
- import { t as greetingFor } from "./greeting-CKacu-Rn.js";
64
- //#region app/utils/titleize.ts
65
- var titleize_exports = /* @__PURE__ */ __exportAll({ titleize: () => titleize });
66
- function titleize(val) {
67
- if (!val || typeOf(val) !== "string") return;
68
- return (val.includes("-") ? val.split("-") : val.split(" ")).map((el) => capitalize(el)).join(" ");
69
- }
70
- //#endregion
71
- //#region app/services/ai-assistant-panel-service.ts
72
- var ai_assistant_panel_service_exports = /* @__PURE__ */ __exportAll({
73
- NEW_SESSION_NAME: () => NEW_SESSION_NAME,
74
- default: () => AiAssistantPanelService
75
- });
76
- var NEW_SESSION_NAME = "New AI Assistant Chat";
77
- var AiAssistantPanelService = class extends Service {
78
- static {
79
- decorateFieldV2(this.prototype, "codeSemanticsService", [service]);
80
- }
81
- #codeSemanticsService = (initializeDeferredDecorator(this, "codeSemanticsService"), void 0);
82
- static {
83
- decorateFieldV2(this.prototype, "toolService", [service]);
84
- }
85
- #toolService = (initializeDeferredDecorator(this, "toolService"), void 0);
86
- static {
87
- decorateFieldV2(this.prototype, "matrixService", [service]);
88
- }
89
- #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
90
- static {
91
- decorateFieldV2(this.prototype, "monacoService", [service]);
92
- }
93
- #monacoService = (initializeDeferredDecorator(this, "monacoService"), void 0);
94
- static {
95
- decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
96
- }
97
- #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
98
- static {
99
- decorateFieldV2(this.prototype, "localPersistenceService", [service]);
100
- }
101
- #localPersistenceService = (initializeDeferredDecorator(this, "localPersistenceService"), void 0);
102
- static {
103
- decorateFieldV2(this.prototype, "session", [service]);
104
- }
105
- #session = (initializeDeferredDecorator(this, "session"), void 0);
106
- static {
107
- decorateFieldV2(this.prototype, "store", [service]);
108
- }
109
- #store = (initializeDeferredDecorator(this, "store"), void 0);
110
- static {
111
- decorateFieldV2(this.prototype, "displayRoomError", [tracked$1], function() {
112
- return false;
113
- });
114
- }
115
- #displayRoomError = (initializeDeferredDecorator(this, "displayRoomError"), void 0);
116
- static {
117
- decorateFieldV2(this.prototype, "isShowingPastSessions", [tracked$1], function() {
118
- return false;
119
- });
120
- }
121
- #isShowingPastSessions = (initializeDeferredDecorator(this, "isShowingPastSessions"), void 0);
122
- deletedRoomIds = /* @__PURE__ */ new Set();
123
- static {
124
- decorateFieldV2(this.prototype, "roomToRename", [tracked$1], function() {});
125
- }
126
- #roomToRename = (initializeDeferredDecorator(this, "roomToRename"), void 0);
127
- static {
128
- decorateFieldV2(this.prototype, "roomToDelete", [tracked$1], function() {});
129
- }
130
- #roomToDelete = (initializeDeferredDecorator(this, "roomToDelete"), void 0);
131
- static {
132
- decorateFieldV2(this.prototype, "roomDeleteError", [tracked$1], function() {});
133
- }
134
- #roomDeleteError = (initializeDeferredDecorator(this, "roomDeleteError"), void 0);
135
- constructor(owner) {
136
- super(owner);
137
- this.resetState();
138
- this.session.register(this);
139
- }
140
- sessionStarted() {
141
- this.ensureRoomsLoaded();
142
- }
143
- ensureRoomsLoaded() {
144
- if (!this.isOpen) return;
145
- if (!this.matrixService.currentRoomId && !this.loadRoomsTask.isRunning) return this.loadRoomsTask.perform();
146
- }
147
- resetState() {
148
- this.displayRoomError = false;
149
- this.isShowingPastSessions = false;
150
- this.roomToRename = void 0;
151
- this.roomToDelete = void 0;
152
- this.roomDeleteError = void 0;
153
- this.deletedRoomIds.clear();
154
- src_default.localStorage.removeItem(NewSessionIdPersistenceKey);
155
- this.loadRoomsTask.cancelAll();
156
- this.doCreateRoom.cancelAll();
157
- this.summarizeSessionTask.cancelAll();
158
- this.copyFileHistoryTask.cancelAll();
159
- this.prepareSessionContextTask.cancelAll();
160
- }
161
- commandModuleResource = importResource(this, () => "@cardstack/base/command");
162
- get commandModule() {
163
- if (this.commandModuleResource.error) throw new Error(`Error loading commandModule: ${JSON.stringify(this.commandModuleResource.error)}`);
164
- if (!this.commandModuleResource.module) throw new Error(`bug: SkillConfigField has not loaded yet--make sure to await this.loaded before using the api`);
165
- return this.commandModuleResource.module;
166
- }
167
- get isAiAssistantHidden() {
168
- return this.operatorModeStateService.state.submode === Submodes.Host;
169
- }
170
- get isOpen() {
171
- return this.operatorModeStateService.aiAssistantOpen && !this.isAiAssistantHidden;
172
- }
173
- get isFocusPillVisible() {
174
- return !!this.focusPillLabel;
175
- }
176
- get focusPillLabel() {
177
- if (this.operatorModeStateService.state.submode !== Submodes.Code) return;
178
- let selectedCodeRef = this.codeSemanticsService.selectedCodeRef;
179
- if (selectedCodeRef?.name) return selectedCodeRef?.name;
180
- if (this.operatorModeStateService.isViewingCardInCodeMode) return "Card";
181
- }
182
- get focusPillItemType() {
183
- if (this.operatorModeStateService.isViewingCardInCodeMode) return;
184
- return titleize(this.operatorModeStateService.state.moduleInspector ?? "schema");
185
- }
186
- get focusPillFormat() {
187
- const format = this.operatorModeStateService.currentViewingFormat;
188
- if (!format) return;
189
- return titleize(format);
190
- }
191
- get focusPillCodeRange() {
192
- let selection = this.monacoService.trackedSelection;
193
- if (!selection) return;
194
- if (!(selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn)) return;
195
- if (selection.startLineNumber === selection.endLineNumber) return `Line ${selection.startLineNumber}`;
196
- return `Lines ${selection.startLineNumber}-${selection.endLineNumber}`;
197
- }
198
- get focusPillMetaPills() {
199
- const metaPills = [];
200
- const itemType = this.focusPillItemType;
201
- if (itemType) metaPills.push(itemType);
202
- const format = this.focusPillFormat;
203
- if (format) metaPills.push(format);
204
- const codeRange = this.focusPillCodeRange;
205
- if (codeRange) metaPills.push(codeRange);
206
- return metaPills;
207
- }
208
- openPanel() {
209
- this.operatorModeStateService.openAiAssistant();
210
- return this.loadRoomsTask.perform();
211
- }
212
- static {
213
- decorateMethodV2(this.prototype, "openPanel", [action]);
214
- }
215
- closePanel() {
216
- this.operatorModeStateService.closeAiAssistant();
217
- }
218
- static {
219
- decorateMethodV2(this.prototype, "closePanel", [action]);
220
- }
221
- displayPastSessions() {
222
- this.isShowingPastSessions = true;
223
- }
224
- static {
225
- decorateMethodV2(this.prototype, "displayPastSessions", [action]);
226
- }
227
- hidePastSessions() {
228
- this.isShowingPastSessions = false;
229
- }
230
- static {
231
- decorateMethodV2(this.prototype, "hidePastSessions", [action]);
232
- }
233
- enterRoom(roomId, hidePastSessionsList = true) {
234
- this.matrixService.currentRoomId = roomId;
235
- this.localPersistenceService.setCurrentRoomId(roomId);
236
- if (hidePastSessionsList) this.hidePastSessions();
237
- }
238
- static {
239
- decorateMethodV2(this.prototype, "enterRoom", [action]);
240
- }
241
- async openNewSession() {
242
- try {
243
- await this.openPanel();
244
- await this.createNewSession();
245
- } catch (error) {
246
- if (!didCancel(error)) throw error;
247
- }
248
- }
249
- async createNewSession(opts = {
250
- addSameSkills: false,
251
- shouldCopyFileHistory: false,
252
- shouldSummarizeSession: false
253
- }) {
254
- this.displayRoomError = false;
255
- if (this.newSessionId && !opts.addSameSkills && !opts.shouldSummarizeSession && !opts.shouldCopyFileHistory) {
256
- this.enterRoom(this.newSessionId);
257
- return;
258
- }
259
- await this.doCreateRoom.perform(NEW_SESSION_NAME, opts);
260
- }
261
- static {
262
- decorateMethodV2(this.prototype, "createNewSession", [action]);
263
- }
264
- get newSessionId() {
265
- let id = src_default.localStorage.getItem(NewSessionIdPersistenceKey);
266
- if (id && this.matrixService.roomResources.has(id) && this.matrixService.roomResources.get(id)?.messages.length === 0) return id;
267
- }
268
- get isCreateRoomIdle() {
269
- return this.doCreateRoom.isIdle;
270
- }
271
- get currentRoomResource() {
272
- if (!this.matrixService.currentRoomId) return;
273
- return this.matrixService.roomResources.get(this.matrixService.currentRoomId);
274
- }
275
- extractSkillIdsFromCurrentRoom() {
276
- let skillConfig = this.currentRoomResource?.matrixRoom?.skillsConfig;
277
- let toIds = (fileDefs) => (fileDefs ?? []).map((fileDef) => fileDef.sourceUrl).filter((id) => Boolean(id));
278
- return {
279
- enabledSkillIds: toIds(skillConfig?.enabledSkillCards),
280
- disabledSkillIds: toIds(skillConfig?.disabledSkillCards)
281
- };
282
- }
283
- getPreferredLLMMode() {
284
- let currentMode = this.currentRoomResource?.activeLLMMode;
285
- if (currentMode) return currentMode;
286
- let latestRoom = this.latestRoom;
287
- if (!latestRoom) return;
288
- return this.matrixService.roomResources.get(latestRoom.roomId)?.activeLLMMode;
289
- }
290
- collectFileHistory(roomId) {
291
- if (!roomId) return {
292
- attachedFiles: [],
293
- attachedCards: []
294
- };
295
- const roomResource = this.matrixService.roomResources.get(roomId);
296
- if (!roomResource) return {
297
- attachedFiles: [],
298
- attachedCards: []
299
- };
300
- const seenFileUrls = /* @__PURE__ */ new Set();
301
- const seenCardUrls = /* @__PURE__ */ new Set();
302
- const attachedFiles = [];
303
- const attachedCards = [];
304
- for (const message of roomResource.messages) {
305
- if (message.attachedFiles) {
306
- for (const file of message.attachedFiles) if (file.sourceUrl && !seenFileUrls.has(file.sourceUrl)) {
307
- seenFileUrls.add(file.sourceUrl);
308
- attachedFiles.push(file);
309
- }
310
- }
311
- if (message.attachedCardIds) {
312
- for (const cardId of message.attachedCardIds) if (cardId && !seenCardUrls.has(cardId)) {
313
- seenCardUrls.add(cardId);
314
- const card = this.store.peek(cardId);
315
- if (card && isCardInstance(card)) attachedCards.push(card);
316
- }
317
- }
318
- }
319
- return {
320
- attachedFiles,
321
- attachedCards
322
- };
323
- }
324
- doCreateRoom = buildTask(() => ({
325
- context: this,
326
- generator: function* (name = NEW_SESSION_NAME, opts) {
327
- let { addSameSkills, shouldCopyFileHistory, shouldSummarizeSession, deferDefaultSkills } = opts;
328
- try {
329
- let roomId;
330
- let oldRoomId = this.matrixService.currentRoomId;
331
- if (deferDefaultSkills) roomId = yield this.createFallbackRoom(name);
332
- else {
333
- let createRoomCommand = new CreateAiAssistantRoomTool(this.toolService.toolContext);
334
- let input = { name };
335
- let llmMode = this.getPreferredLLMMode();
336
- if (llmMode) input.llmMode = llmMode;
337
- let enabledSkillIds = [];
338
- let disabledSkillIds = [];
339
- if (addSameSkills) ({enabledSkillIds, disabledSkillIds} = this.extractSkillIdsFromCurrentRoom());
340
- if (enabledSkillIds.length || disabledSkillIds.length) {
341
- input.enabledSkillIds = enabledSkillIds;
342
- input.disabledSkillIds = disabledSkillIds;
343
- } else input.enabledSkillIds = yield this.matrixService.loadDefaultSkills();
344
- ({roomId} = yield createRoomCommand.execute(input));
345
- }
346
- src_default.localStorage.setItem(NewSessionIdPersistenceKey, roomId);
347
- this.enterRoom(roomId);
348
- if (deferDefaultSkills) this.applyDefaultSkillsToRoom(roomId);
349
- if (oldRoomId && (shouldSummarizeSession || shouldCopyFileHistory)) this.prepareSessionContextTask.perform(oldRoomId, roomId, {
350
- shouldSummarizeSession,
351
- shouldCopyFileHistory
352
- });
353
- } catch (e) {
354
- console.error(e);
355
- this.displayRoomError = true;
356
- }
357
- }
358
- }), null, "doCreateRoom", "restartable");
359
- async createFallbackRoom(name) {
360
- let userId = this.matrixService.userId;
361
- if (!userId) throw new Error("Requires userId to create a fallback room");
362
- let aiBotFullId = this.matrixService.aiBotUserId;
363
- let llmMode = this.getPreferredLLMMode();
364
- let systemCard = this.matrixService.systemCard;
365
- let configuration = systemCard?.defaultModelConfiguration ?? systemCard?.modelConfigurations?.[0];
366
- let model = configuration?.modelId ?? "anthropic/claude-haiku-5.5";
367
- let fallback = DEFAULT_FALLBACK_MODELS.find((m) => m.modelId === model);
368
- let roomPromise = this.matrixService.createRoom({
369
- preset: this.matrixService.privateChatPreset,
370
- invite: [aiBotFullId],
371
- name,
372
- room_alias_name: encodeURIComponent(`${name} - ${(/* @__PURE__ */ new Date()).toISOString()} - ${userId}`),
373
- power_level_content_override: { users: {
374
- [userId]: 100,
375
- [aiBotFullId]: this.matrixService.aiBotPowerLevel
376
- } },
377
- initial_state: [
378
- {
379
- type: APP_BOXEL_ACTIVE_LLM,
380
- content: {
381
- model,
382
- toolsSupported: configuration?.toolsSupported ?? fallback?.toolsSupported ?? false,
383
- inputModalities: configuration?.inputModalities ?? fallback?.inputModalities,
384
- reasoningEffort: configuration?.reasoningEffort ?? void 0
385
- }
386
- },
387
- {
388
- type: APP_BOXEL_LLM_MODE,
389
- content: { mode: llmMode || "ask" }
390
- },
391
- {
392
- type: APP_BOXEL_ROOM_SKILLS_EVENT_TYPE,
393
- content: {
394
- enabledSkillCards: [],
395
- disabledSkillCards: [],
396
- toolDefinitions: []
397
- }
398
- }
399
- ]
400
- });
401
- let timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("Room creation timed out waiting for sync")), 3e4));
402
- let { room_id: roomId } = await Promise.race([roomPromise, timeoutPromise]);
403
- return roomId;
404
- }
405
- async applyDefaultSkillsToRoom(roomId) {
406
- try {
407
- let skillIds = await this.matrixService.loadDefaultSkills();
408
- if (!skillIds.length) return;
409
- await new UpdateRoomSkillsTool(this.toolService.toolContext).execute({
410
- roomId,
411
- skillCardIdsToActivate: skillIds
412
- });
413
- } catch (e) {
414
- console.error("Failed to apply default skills to room:", e);
415
- }
416
- }
417
- summarizeSessionTask = buildTask(() => ({
418
- context: this,
419
- generator: function* (oldRoomId, newRoomId) {
420
- try {
421
- const result = yield new SummarizeSessionTool(this.toolService.toolContext).execute({ roomId: oldRoomId });
422
- if (!result.summary) return;
423
- const messageContent = `This is a summary of the previous conversation that should be included as context for our discussion:\n\n${result.summary}`;
424
- yield this.matrixService.sendMessage(newRoomId, messageContent, [], []);
425
- } catch (error) {
426
- console.error("Failed to summarize session:", error);
427
- }
428
- }
429
- }), null, "summarizeSessionTask", "restartable");
430
- copyFileHistoryTask = buildTask(() => ({
431
- context: this,
432
- generator: function* (oldRoomId, roomId) {
433
- try {
434
- const { attachedCards, attachedFiles } = this.collectFileHistory(oldRoomId);
435
- 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);
436
- } catch (error) {
437
- console.error("Failed to copy file history:", error);
438
- }
439
- }
440
- }), null, "copyFileHistoryTask", "restartable");
441
- prepareSessionContextTask = buildTask(() => ({
442
- context: this,
443
- generator: function* (oldRoomId, newRoomId, opts) {
444
- const { shouldSummarizeSession, shouldCopyFileHistory } = opts;
445
- if (shouldSummarizeSession) yield this.summarizeSessionTask.perform(oldRoomId, newRoomId);
446
- if (shouldCopyFileHistory) yield this.copyFileHistoryTask.perform(oldRoomId, newRoomId);
447
- }
448
- }), null, "prepareSessionContextTask", "restartable");
449
- get isSummarizingSession() {
450
- return this.summarizeSessionTask.isRunning;
451
- }
452
- get isCopyingFileHistory() {
453
- return this.copyFileHistoryTask.isRunning;
454
- }
455
- get isPreparingSession() {
456
- return this.isSummarizingSession || this.isCopyingFileHistory;
457
- }
458
- skipSessionPreparation() {
459
- this.summarizeSessionTask.cancelAll();
460
- this.copyFileHistoryTask.cancelAll();
461
- this.prepareSessionContextTask.cancelAll();
462
- }
463
- static {
464
- decorateMethodV2(this.prototype, "skipSessionPreparation", [action]);
465
- }
466
- get loadingRooms() {
467
- return this.loadRoomsTask.isRunning;
468
- }
469
- async waitForSessionRooms() {
470
- await this.matrixService.waitForInitialSync();
471
- await this.matrixService.flushAll;
472
- await allSettled([...this.matrixService.roomResources.values()].map((r) => r.processing));
473
- }
474
- loadRoomsTask = buildTask(() => ({
475
- context: this,
476
- generator: function* () {
477
- yield this.waitForSessionRooms();
478
- yield this.enterRoomInitially();
479
- }
480
- }), null, "loadRoomsTask", "restartable");
481
- async enterRoomInitially() {
482
- let persistedRoomId = this.localPersistenceService.getCurrentRoomId();
483
- if (persistedRoomId) {
484
- let roomToEnter = this.aiSessionRooms.find((r) => r.roomId === persistedRoomId);
485
- if (!roomToEnter) {
486
- let interval;
487
- try {
488
- await Promise.race([timeout(2e3), new Promise((resolve) => {
489
- interval = src_default.setInterval(() => {
490
- roomToEnter = this.aiSessionRooms.find((r) => r.roomId === persistedRoomId);
491
- if (roomToEnter) {
492
- if (interval !== void 0) {
493
- src_default.clearInterval(interval);
494
- interval = void 0;
495
- }
496
- resolve();
497
- }
498
- }, 250);
499
- })]);
500
- } finally {
501
- if (interval !== void 0) src_default.clearInterval(interval);
502
- }
503
- }
504
- if (roomToEnter) {
505
- this.enterRoom(roomToEnter.roomId);
506
- return;
507
- }
508
- }
509
- let latestRoom = this.latestRoom;
510
- if (latestRoom) {
511
- this.enterRoom(latestRoom.roomId);
512
- return;
513
- }
514
- await this.createNewSession();
515
- }
516
- get aiSessionRooms() {
517
- let sessions = [];
518
- for (let resource of this.matrixService.roomResources.values()) {
519
- if (!resource.matrixRoom) continue;
520
- if (!resource.matrixRoom.hasActiveMember(this.matrixService.aiBotUserId)) continue;
521
- if (resource.roomId && this.deletedRoomIds.has(resource.roomId)) continue;
522
- if (this.matrixService.userId && !resource.matrixRoom.hasActiveMember(this.matrixService.userId)) continue;
523
- if (resource.name && resource.roomId) sessions.push({
524
- roomId: resource.roomId,
525
- name: resource.name,
526
- lastMessage: resource.messages[resource.messages.length - 1],
527
- created: resource.created,
528
- lastActiveTimestamp: resource.lastActiveTimestamp
529
- });
530
- }
531
- return sessions.sort((a, b) => this.matrixService.getLastActiveTimestamp(b.roomId, b.lastActiveTimestamp) - this.matrixService.getLastActiveTimestamp(a.roomId, a.lastActiveTimestamp));
532
- }
533
- get latestRoom() {
534
- if (this.aiSessionRooms.length !== 0) return this.aiSessionRooms[0];
535
- }
536
- setRoomToRename(room) {
537
- this.roomToRename = room;
538
- this.hidePastSessions();
539
- }
540
- static {
541
- decorateMethodV2(this.prototype, "setRoomToRename", [action]);
542
- }
543
- onCloseRename() {
544
- this.roomToRename = void 0;
545
- this.displayPastSessions();
546
- }
547
- static {
548
- decorateMethodV2(this.prototype, "onCloseRename", [action]);
549
- }
550
- setRoomToDelete(room) {
551
- this.roomDeleteError = void 0;
552
- if (!room) {
553
- this.roomToDelete = void 0;
554
- return;
555
- }
556
- this.roomToDelete = {
557
- id: room.roomId,
558
- name: room.name || room.roomId
559
- };
560
- }
561
- static {
562
- decorateMethodV2(this.prototype, "setRoomToDelete", [action]);
563
- }
564
- leaveRoom(roomId) {
565
- this.doLeaveRoom.perform(roomId);
566
- }
567
- static {
568
- decorateMethodV2(this.prototype, "leaveRoom", [action]);
569
- }
570
- doLeaveRoom = buildTask(() => ({
571
- context: this,
572
- generator: function* (roomId) {
573
- try {
574
- this.deletedRoomIds.add(roomId);
575
- this.matrixService.roomResourcesCache.delete(roomId);
576
- if (src_default.localStorage.getItem("aiPanelNewSessionId") === roomId) src_default.localStorage.removeItem(NewSessionIdPersistenceKey);
577
- if (this.matrixService.currentRoomId === roomId) {
578
- this.localPersistenceService.setCurrentRoomId(void 0);
579
- if (this.latestRoom) this.enterRoom(this.latestRoom.roomId, false);
580
- else yield this.createNewSession({
581
- addSameSkills: false,
582
- shouldCopyFileHistory: false,
583
- shouldSummarizeSession: false,
584
- deferDefaultSkills: true
585
- });
586
- }
587
- this.roomToDelete = void 0;
588
- yield this.matrixService.leave(roomId);
589
- yield this.matrixService.forget(roomId);
590
- } catch (e) {
591
- this.deletedRoomIds.delete(roomId);
592
- console.error(e);
593
- this.roomDeleteError = "Error deleting room";
594
- if (isMatrixError(e)) this.roomDeleteError += `: ${e.data.error}`;
595
- else if (e instanceof Error) this.roomDeleteError += `: ${e.message}`;
596
- }
597
- }
598
- }), null, "doLeaveRoom", "restartable");
599
- };
600
- //#endregion
601
- //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/bot.js
602
- var IconComponent$4 = setComponentTemplate(templateFactory({
603
- "id": "i3vJib5D",
604
- "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\"],[]]",
605
- "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/bot.gts",
606
- "isStrictMode": true
607
- }), templateOnly());
608
- IconComponent$4.name = "bot";
609
- //#endregion
610
- //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/store.js
611
- var IconComponent$3 = setComponentTemplate(templateFactory({
612
- "id": "oBsj54YK",
613
- "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\"],[]]",
614
- "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/store.gts",
615
- "isStrictMode": true
616
- }), templateOnly());
617
- IconComponent$3.name = "store";
618
- //#endregion
619
- //#region ../pretui/internal/structure-layout.gts
620
- /** Every spelling of a size this kit will accept. */
621
- /** Resolve any accepted size spelling to the house enum. */ function pretuiSize(raw, fallback = "m") {
622
- return resolveSize(raw, fallback);
623
- }
624
- Object.assign(Object.create(null), {
625
- horizontal: "horizontal",
626
- row: "horizontal",
627
- vertical: "vertical",
628
- column: "vertical"
629
- });
630
- //#endregion
631
- //#region ../pretui/components/collapsible.gts
632
- /**
633
- * One trigger, one disclosed region.
634
- *
635
- * ```hbs
636
- * <Collapsible @label='Advanced' @defaultOpen={{false}}>
637
- * <FormRow …/>
638
- * </Collapsible>
639
- * ```
640
- */
641
- var Collapsible = class extends Component {
642
- static {
643
- decorateFieldV2(this.prototype, "internal", [tracked], function() {
644
- return this.args.defaultOpen ?? false;
645
- });
646
- }
647
- #internal = (initializeDeferredDecorator(this, "internal"), void 0);
648
- contentId = `${guidFor(this)}-content`;
649
- triggerId = `${guidFor(this)}-trigger`;
650
- get open() {
651
- return this.args.open ?? this.internal;
652
- }
653
- get size() {
654
- return pretuiSize(this.args.size);
655
- }
656
- get state() {
657
- return this.open ? "open" : "closed";
658
- }
659
- toggle = () => {
660
- if (this.args.disabled) return;
661
- let next = !this.open;
662
- if (this.args.open === void 0) this.internal = next;
663
- this.args.onOpenChange?.(next);
664
- };
665
- static {
666
- setComponentTemplate(templateFactory({
667
- "id": "HbmHqx5Y",
668
- "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\"]]",
669
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/collapsible.gts",
670
- "scope": () => [on],
671
- "isStrictMode": true
672
- }), this);
673
- }
674
- };
675
- //#endregion
676
- //#region ../pretui/internal/choice-cards.gts
677
- var OptionCard = setComponentTemplate(templateFactory({
678
- "id": "mO2Hqqne",
679
- "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\"]]",
680
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/internal/choice-cards.gts",
681
- "scope": () => [on],
682
- "isStrictMode": true
683
- }), templateOnly());
684
- var ChoiceGrid = setComponentTemplate(templateFactory({
685
- "id": "wNaY4vbT",
686
- "block": "[[[11,0],[24,0,\"pretui-choicecards\"],[17,1],[24,\"data-scopedcss-8f2c6951d3-c7147e5aa6\",\"\"],[12],[18,2,null],[13],[1,\"\\n\"]],[\"&attrs\",\"&default\"],[\"yield\"]]",
687
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/internal/choice-cards.gts",
688
- "isStrictMode": true
689
- }), templateOnly());
690
- //#endregion
691
- //#region ../pretui/components/radio-card.gts
692
- var RadioCard = class extends Component {
693
- static {
694
- decorateFieldV2(this.prototype, "internal", [tracked], function() {
695
- return this.args.defaultValue;
696
- });
697
- }
698
- #internal = (initializeDeferredDecorator(this, "internal"), void 0);
699
- generatedName = `${guidFor(this)}-rc`;
700
- get name() {
701
- return this.args.name ?? this.generatedName;
702
- }
703
- get options() {
704
- return firstDefined(this.args.options, this.args.items) ?? [];
705
- }
706
- get value() {
707
- return this.args.value ?? this.internal;
708
- }
709
- get groupDisabled() {
710
- return firstDefined(this.args.disabled, this.args.isDisabled) ?? false;
711
- }
712
- get orientation() {
713
- return this.args.orientation ?? "vertical";
714
- }
715
- pick = (option, ev) => {
716
- if (this.args.value === void 0) this.internal = option.value;
717
- emit([this.args.onValueChange, this.args.onChange], option.value);
718
- if (this.args.value !== void 0) ev.target.closest(".pretui-choicecards")?.querySelectorAll("input[type=\"radio\"]").forEach((input) => input.checked = input.value === this.value);
719
- };
720
- isOn = (option) => this.value === option.value;
721
- isDisabled = (option) => this.groupDisabled || Boolean(option.disabled);
722
- static {
723
- setComponentTemplate(templateFactory({
724
- "id": "tSyJpYXV",
725
- "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\"]]",
726
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/radio-card.gts",
727
- "scope": () => [
728
- ChoiceGrid,
729
- OptionCard,
730
- fn
731
- ],
732
- "isStrictMode": true
733
- }), this);
734
- }
735
- };
736
- //#endregion
737
- //#region app/components/operator-mode/dashboard/agent-kinds.ts
738
- var CLI_STEP = {
739
- title: "Install the Boxel CLI",
740
- note: "In a terminal, or ask your agent to run it",
741
- text: "npm install -g @cardstack/boxel-cli"
742
- };
743
- var AGENT_KINDS = [
744
- {
745
- id: "claude",
746
- label: "Claude Code",
747
- hint: "Boxel plugin",
748
- setup: [
749
- CLI_STEP,
750
- {
751
- title: "Add the Boxel marketplace",
752
- note: "Type it in Claude Code’s chat",
753
- text: "/plugin marketplace add cardstack/boxel"
754
- },
755
- {
756
- title: "Install the Boxel plugin",
757
- text: "/plugin install boxel-cli@cardstack-boxel"
758
- }
759
- ]
760
- },
761
- {
762
- id: "codex",
763
- label: "Codex",
764
- hint: "Boxel plugin",
765
- setup: [
766
- CLI_STEP,
767
- {
768
- title: "Add the Boxel marketplace",
769
- note: "In a terminal, or ask Codex to run it",
770
- text: "codex plugin marketplace add cardstack/boxel"
771
- },
772
- {
773
- title: "Install both Boxel plugins",
774
- note: "Open Plugins, add boxel-cli and boxel-skills, then start a new chat",
775
- text: "/plugins"
776
- }
777
- ]
778
- },
779
- {
780
- id: "boxel",
781
- label: "Boxel AI Assistant",
782
- hint: "Built into Boxel"
783
- }
784
- ];
785
- function agentKindFor(agent) {
786
- return AGENT_KINDS.find((kind) => kind.id === agent) ?? AGENT_KINDS[0];
787
- }
788
- function usesCodingAgent(agent, agentSetup) {
789
- return AGENT_KINDS.some((kind) => Boolean(kind.setup) && (kind.id === agent || (agentSetup?.[kind.id] ?? 0) > 0));
790
- }
791
- function shownAgentFor(agent, agentSetup) {
792
- return agentKindFor(usesCodingAgent(agent, agentSetup) ? agent : "boxel");
793
- }
794
- function setupStepsFor(kind, workspaceURL) {
795
- if (!kind.setup) return [];
796
- return [
797
- ...kind.setup,
798
- {
799
- title: "Open a workspace",
800
- note: "Your agent signs you in and syncs it",
801
- text: `Work on my Boxel workspace ${workspaceURL ?? "<workspace URL>"}`,
802
- isWorkspacePick: true
803
- },
804
- {
805
- title: "Ask for a change",
806
- text: "Make me a card for tracking tasks in this workspace"
807
- },
808
- {
809
- title: "See it in Boxel",
810
- note: "Boxel opens with the change live",
811
- text: "Show it to me in Boxel"
812
- }
813
- ];
814
- }
815
- //#endregion
816
- //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/brand-openai.js
817
- var IconComponent$2 = setComponentTemplate(templateFactory({
818
- "id": "+NE/ow3a",
819
- "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\"],[]]",
820
- "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/brand-openai.gts",
821
- "isStrictMode": true
822
- }), templateOnly());
823
- IconComponent$2.name = "brand-openai";
824
- //#endregion
825
- //#region app/components/operator-mode/dashboard/claude-mark.gts
826
- var ClaudeMark = setComponentTemplate(templateFactory({
827
- "id": "or8My7t1",
828
- "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\"],[]]",
829
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/claude-mark.gts",
830
- "isStrictMode": true
831
- }), templateOnly());
832
- //#endregion
833
- //#region app/components/operator-mode/dashboard/agent-mark.gts
834
- var AgentMark = setComponentTemplate(templateFactory({
835
- "id": "ZKWJB6pU",
836
- "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\"]]",
837
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agent-mark.gts",
838
- "scope": () => [
839
- cn_default,
840
- eq,
841
- ClaudeMark,
842
- IconComponent$2,
843
- ai_assist_icon_2x_default
844
- ],
845
- "isStrictMode": true
846
- }), templateOnly());
847
- //#endregion
848
- //#region app/components/operator-mode/dashboard/agents.gts
849
- var log$3 = logger("component:dashboard/agents");
850
- var COPIED_FEEDBACK_MS = 2e3;
851
- var HOW_BOXEL_AI_WORKS = [
852
- {
853
- title: "Describe what you want",
854
- note: "In your own words, from any workspace"
855
- },
856
- {
857
- title: "Boxel AI Assistant builds it",
858
- note: "Cards, fields and data, right in the workspace"
859
- },
860
- {
861
- title: "Refine it in the chat",
862
- note: "Ask for changes as you look"
863
- }
864
- ];
865
- var Agents = class extends Component {
866
- static {
867
- decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
868
- }
869
- #aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
870
- static {
871
- decorateFieldV2(this.prototype, "matrixService", [service]);
872
- }
873
- #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
874
- static {
875
- decorateFieldV2(this.prototype, "network", [service]);
876
- }
877
- #network = (initializeDeferredDecorator(this, "network"), void 0);
878
- static {
879
- decorateFieldV2(this.prototype, "realm", [service]);
880
- }
881
- #realm = (initializeDeferredDecorator(this, "realm"), void 0);
882
- static {
883
- decorateFieldV2(this.prototype, "realmServer", [service]);
884
- }
885
- #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
886
- static {
887
- decorateFieldV2(this.prototype, "copied", [tracked$1], function() {
888
- return null;
889
- });
890
- }
891
- #copied = (initializeDeferredDecorator(this, "copied"), void 0);
892
- static {
893
- decorateFieldV2(this.prototype, "pickedWorkspaceURL", [tracked$1]);
894
- }
895
- #pickedWorkspaceURL = (initializeDeferredDecorator(this, "pickedWorkspaceURL"), void 0);
896
- static {
897
- decorateFieldV2(this.prototype, "expandedAgent", [tracked$1], function() {
898
- return null;
899
- });
900
- }
901
- #expandedAgent = (initializeDeferredDecorator(this, "expandedAgent"), void 0);
902
- static {
903
- decorateFieldV2(this.prototype, "showsCodingAgents", [tracked$1], function() {
904
- return false;
905
- });
906
- }
907
- #showsCodingAgents = (initializeDeferredDecorator(this, "showsCodingAgents"), void 0);
908
- static {
909
- decorateFieldV2(this.prototype, "openedAgent", [tracked$1]);
910
- }
911
- #openedAgent = (initializeDeferredDecorator(this, "openedAgent"), void 0);
912
- focusPicker = false;
913
- stepsId = `${guidFor(this)}-steps`;
914
- agentOptions = AGENT_KINDS.map((kind) => ({
915
- value: kind.id,
916
- title: kind.label,
917
- description: kind.hint
918
- }));
919
- get usesCodingAgent() {
920
- return usesCodingAgent(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup);
921
- }
922
- get isMinimized() {
923
- return !this.showsCodingAgents && !this.usesCodingAgent;
924
- }
925
- get kind() {
926
- if (this.showsCodingAgents && !this.usesCodingAgent) return agentKindFor(this.openedAgent ?? this.matrixService.dashboardAgent);
927
- return shownAgentFor(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup);
928
- }
929
- showCodingAgents() {
930
- this.showsCodingAgents = true;
931
- this.openedAgent = AGENT_KINDS.find((kind) => kind.setup)?.id;
932
- this.focusPicker = true;
933
- }
934
- static {
935
- decorateMethodV2(this.prototype, "showCodingAgents", [action]);
936
- }
937
- focusIfOpened = modifier((picker) => {
938
- if (this.focusPicker) {
939
- this.focusPicker = false;
940
- picker.querySelector("input:checked")?.focus();
941
- }
942
- });
943
- get copiedResult() {
944
- return this.copied?.agent === this.kind.id ? this.copied : null;
945
- }
946
- copyFailed = (index) => this.copiedResult?.index === index && !this.copiedResult.ok;
947
- copyTooltip = (index) => this.copiedResult?.index !== index ? "Copy" : this.copiedResult.ok ? "Copied" : "Copy failed";
948
- copyIcon = (index) => this.copiedResult?.index !== index ? IconComponent$12 : this.copiedResult.ok ? IconComponent$9 : IconComponent$10;
949
- copyIconStroke = (index) => this.copiedResult?.index === index ? "3" : void 0;
950
- get isBuiltIn() {
951
- return !this.kind.setup;
952
- }
953
- get workspaceOptions() {
954
- let own = this.realmServer.userRealmIdentifiers.filter((url) => this.realm.canWrite(url));
955
- let ownSet = new Set(own);
956
- let favorites = this.matrixService.workspaceFavorites.filter((url) => ownSet.has(url));
957
- return [...new Set([...favorites, ...own])].map((url) => ({
958
- value: url,
959
- label: this.realm.info(url).name
960
- }));
961
- }
962
- static {
963
- decorateMethodV2(this.prototype, "workspaceOptions", [cached$1]);
964
- }
965
- get workspaceURL() {
966
- let options = this.workspaceOptions;
967
- return options.find(({ value }) => value === this.pickedWorkspaceURL)?.value ?? options[0]?.value;
968
- }
969
- get steps() {
970
- let id = this.workspaceURL;
971
- return setupStepsFor(this.kind, id ? this.toURL(id) : void 0);
972
- }
973
- static {
974
- decorateMethodV2(this.prototype, "steps", [cached$1]);
975
- }
976
- toURL(id) {
977
- try {
978
- return this.network.virtualNetwork.toURL(id).href;
979
- } catch {
980
- return id;
981
- }
982
- }
983
- get copiedCount() {
984
- let copied = this.matrixService.dashboardState.agentSetup?.[this.kind.id];
985
- return Math.min(copied ?? 0, this.steps.length);
986
- }
987
- get copiedMessage() {
988
- let result = this.copiedResult;
989
- if (!result) return "";
990
- let step = `Step ${result.index + 1}`;
991
- return result.ok ? `${step} copied` : `${step} copy failed`;
992
- }
993
- get isSetupDone() {
994
- return this.steps.length > 0 && this.copiedCount === this.steps.length;
995
- }
996
- get showsSteps() {
997
- return !this.isSetupDone || this.expandedAgent === this.kind.id;
998
- }
999
- toggleSteps() {
1000
- this.expandedAgent = this.showsSteps ? null : this.kind.id;
1001
- }
1002
- static {
1003
- decorateMethodV2(this.prototype, "toggleSteps", [action]);
1004
- }
1005
- stepState = (index) => index < this.copiedCount ? "is-done" : index === this.copiedCount ? "is-next" : "is-later";
1006
- isCopied = (index) => index < this.copiedCount;
1007
- async pickAgent(value) {
1008
- let kind = AGENT_KINDS.find(({ id }) => id === value);
1009
- if (!kind) return;
1010
- this.openedAgent = void 0;
1011
- try {
1012
- await this.matrixService.pickDashboardAgent(kind.id);
1013
- } catch (error) {
1014
- log$3.warn(`saving the picked agent failed: ${error}`);
1015
- }
1016
- }
1017
- static {
1018
- decorateMethodV2(this.prototype, "pickAgent", [action]);
1019
- }
1020
- pickWorkspace(url) {
1021
- this.pickedWorkspaceURL = url;
1022
- }
1023
- static {
1024
- decorateMethodV2(this.prototype, "pickWorkspace", [action]);
1025
- }
1026
- copyTask = buildTask(() => ({
1027
- context: this,
1028
- generator: function* (index, text) {
1029
- let agent = this.kind.id;
1030
- let copied = {
1031
- agent,
1032
- index,
1033
- ok: true
1034
- };
1035
- this.expandedAgent = agent;
1036
- try {
1037
- try {
1038
- yield navigator.clipboard.writeText(text);
1039
- } catch (error) {
1040
- log$3.warn(`copying setup step ${index + 1} failed: ${error}`);
1041
- copied = {
1042
- agent,
1043
- index,
1044
- ok: false
1045
- };
1046
- }
1047
- this.copied = copied;
1048
- if (copied.ok) {
1049
- this.saveProgress(agent, index);
1050
- if (this.openedAgent === agent) {
1051
- this.openedAgent = void 0;
1052
- this.matrixService.pickDashboardAgent(agent).catch((error) => {
1053
- log$3.warn(`saving the picked agent failed: ${error}`);
1054
- });
1055
- }
1056
- }
1057
- yield timeout(COPIED_FEEDBACK_MS);
1058
- } finally {
1059
- if (this.copied === copied) this.copied = null;
1060
- }
1061
- }
1062
- }), null, "copyTask", "restartable");
1063
- saveProgress(agent, index) {
1064
- this.matrixService.updateDashboardState((stored) => ({ agentSetup: { [agent]: Math.max(stored.agentSetup?.[agent] ?? 0, index + 1) } })).catch((error) => {
1065
- log$3.warn(`saving setup progress failed: ${error}`);
1066
- });
1067
- }
1068
- async describeIt() {
1069
- await this.aiAssistantPanelService.openNewSession();
1070
- }
1071
- static {
1072
- decorateMethodV2(this.prototype, "describeIt", [action]);
1073
- }
1074
- static {
1075
- setComponentTemplate(templateFactory({
1076
- "id": "SL6zYC8e",
1077
- "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\"]]",
1078
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agents.gts",
1079
- "scope": () => [
1080
- RadioCard,
1081
- AgentMark,
1082
- agentKindFor,
1083
- concat,
1084
- HOW_BOXEL_AI_WORKS,
1085
- add,
1086
- Button,
1087
- on,
1088
- ProgressBar,
1089
- cn_default,
1090
- IconComponent$9,
1091
- VisuallyHidden,
1092
- Select,
1093
- IconButton,
1094
- fn,
1095
- IconComponent$5
1096
- ],
1097
- "isStrictMode": true
1098
- }), this);
1099
- }
1100
- };
1101
- //#endregion
1102
- //#region app/components/operator-mode/dashboard/agents-flyout.gts
1103
- var log$2 = logger("component:dashboard/agents-flyout");
1104
- var RECENT_SESSION_COUNT = 3;
1105
- var AgentsFlyout = class extends Component {
1106
- static {
1107
- decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
1108
- }
1109
- #aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
1110
- static {
1111
- decorateFieldV2(this.prototype, "matrixService", [service]);
1112
- }
1113
- #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
1114
- agentKinds = AGENT_KINDS;
1115
- sessionsHeadId = `${guidFor(this)}-sessions`;
1116
- get pickedId() {
1117
- return shownAgentFor(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup).id;
1118
- }
1119
- get recentSessions() {
1120
- return this.aiAssistantPanelService.aiSessionRooms.slice(0, RECENT_SESSION_COUNT);
1121
- }
1122
- async pickAgent(kind) {
1123
- this.args.close();
1124
- this.args.showSection();
1125
- try {
1126
- await this.matrixService.pickDashboardAgent(kind.id);
1127
- } catch (error) {
1128
- log$2.warn(`saving the picked agent failed: ${error}`);
1129
- }
1130
- }
1131
- static {
1132
- decorateMethodV2(this.prototype, "pickAgent", [action]);
1133
- }
1134
- async openSession(roomId) {
1135
- this.args.close();
1136
- this.aiAssistantPanelService.enterRoom(roomId);
1137
- try {
1138
- await this.aiAssistantPanelService.openPanel();
1139
- } catch (error) {
1140
- if (!didCancel(error)) throw error;
1141
- }
1142
- }
1143
- static {
1144
- decorateMethodV2(this.prototype, "openSession", [action]);
1145
- }
1146
- async newSession() {
1147
- this.args.close();
1148
- await this.aiAssistantPanelService.openNewSession();
1149
- }
1150
- static {
1151
- decorateMethodV2(this.prototype, "newSession", [action]);
1152
- }
1153
- static {
1154
- setComponentTemplate(templateFactory({
1155
- "id": "paD8YaSw",
1156
- "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\"]]",
1157
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agents-flyout.gts",
1158
- "scope": () => [
1159
- Button,
1160
- on,
1161
- fn,
1162
- AgentMark,
1163
- eq,
1164
- IconComponent$9,
1165
- VisuallyHidden,
1166
- IconComponent$11
1167
- ],
1168
- "isStrictMode": true
1169
- }), this);
1170
- }
1171
- };
1172
- //#endregion
1173
- //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/archive-restore.js
1174
- var IconComponent$1 = setComponentTemplate(templateFactory({
1175
- "id": "QeRCR7YA",
1176
- "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\"],[]]",
1177
- "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/archive-restore.gts",
1178
- "isStrictMode": true
1179
- }), templateOnly());
1180
- IconComponent$1.name = "archive-restore";
1181
- //#endregion
1182
- //#region app/components/operator-mode/dashboard/archived-workspace.gts
1183
- var ArchivedWorkspace = class extends Component {
1184
- static {
1185
- decorateFieldV2(this.prototype, "realmServer", [service]);
1186
- }
1187
- #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
1188
- static {
1189
- decorateFieldV2(this.prototype, "restoreError", [tracked$1]);
1190
- }
1191
- #restoreError = (initializeDeferredDecorator(this, "restoreError"), void 0);
1192
- get realmInfo() {
1193
- return {
1194
- name: this.args.archivedRealm.name,
1195
- iconURL: this.args.archivedRealm.iconURL,
1196
- publishable: null
1197
- };
1198
- }
1199
- static {
1200
- decorateMethodV2(this.prototype, "realmInfo", [cached$1]);
1201
- }
1202
- get name() {
1203
- return this.args.archivedRealm.name;
1204
- }
1205
- restoreTask = buildTask(() => ({
1206
- context: this,
1207
- generator: function* () {
1208
- this.restoreError = void 0;
1209
- try {
1210
- yield this.realmServer.unarchiveRealm(this.args.archivedRealm.url);
1211
- } catch (error) {
1212
- this.restoreError = error.message;
1213
- }
1214
- }
1215
- }), null, "restoreTask", "drop");
1216
- static {
1217
- setComponentTemplate(templateFactory({
1218
- "id": "hRJFSGVP",
1219
- "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\"]]",
1220
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/archived-workspace.gts",
1221
- "scope": () => [
1222
- RealmURLTooltip,
1223
- RealmIcon,
1224
- Button,
1225
- IconComponent$1,
1226
- on,
1227
- perform
1228
- ],
1229
- "isStrictMode": true
1230
- }), this);
1231
- }
1232
- };
1233
- //#endregion
1234
- //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/info-small.js
1235
- var IconComponent = setComponentTemplate(templateFactory({
1236
- "id": "aSlui7An",
1237
- "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\"],[]]",
1238
- "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/info-small.gts",
1239
- "isStrictMode": true
1240
- }), templateOnly());
1241
- IconComponent.name = "info-small";
1242
- //#endregion
1243
- //#region ../pretui/components/alert.gts
1244
- var ALERT_TONES = [
1245
- "info",
1246
- "success",
1247
- "warning",
1248
- "danger"
1249
- ];
1250
- var ALERT_VARIANTS = {
1251
- default: "info",
1252
- destructive: "danger"
1253
- };
1254
- var ALERT_COLORS = {
1255
- info: {
1256
- hue: "var(--info)",
1257
- onHue: "var(--info-foreground)"
1258
- },
1259
- success: {
1260
- hue: "var(--success)",
1261
- onHue: "var(--success-foreground)"
1262
- },
1263
- warning: {
1264
- hue: "var(--warning)",
1265
- onHue: "var(--warning-foreground)"
1266
- },
1267
- danger: {
1268
- hue: "var(--destructive)",
1269
- onHue: "var(--destructive-foreground)"
1270
- }
1271
- };
1272
- var ALERT_ICONS = {
1273
- info: IconComponent,
1274
- success: IconComponent$9,
1275
- warning: IconComponent$16,
1276
- danger: IconComponent$10
1277
- };
1278
- var ALERT_TONE_LABELS = {
1279
- info: "Info",
1280
- success: "Success",
1281
- warning: "Warning",
1282
- danger: "Error"
1283
- };
1284
- var Alert = class extends Component {
1285
- get tone() {
1286
- let fromVariant = this.args.variant ? ALERT_VARIANTS[this.args.variant] : void 0;
1287
- return resolveTone(this.args.tone, ALERT_TONES, fromVariant ?? "info");
1288
- }
1289
- get role() {
1290
- return this.tone === "danger" ? "alert" : "status";
1291
- }
1292
- get keptStyle() {
1293
- let { hue, onHue } = ALERT_COLORS[this.tone];
1294
- return [{
1295
- property: "--pretui-alert-hue",
1296
- value: hue,
1297
- strength: "arg"
1298
- }, {
1299
- property: "--pretui-alert-on-hue",
1300
- value: onHue,
1301
- strength: "arg"
1302
- }];
1303
- }
1304
- get Glyph() {
1305
- return ALERT_ICONS[this.tone];
1306
- }
1307
- get spokenTone() {
1308
- return `${this.args.toneLabel ?? ALERT_TONE_LABELS[this.tone]}:`;
1309
- }
1310
- static {
1311
- setComponentTemplate(templateFactory({
1312
- "id": "AW1vKexa",
1313
- "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\"]]",
1314
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/alert.gts",
1315
- "scope": () => [keepStyle, VisuallyHidden],
1316
- "isStrictMode": true
1317
- }), this);
1318
- }
1319
- };
1320
- //#endregion
1321
- //#region ../pretui/internal/ink.gts
1322
- function statusHue(value) {
1323
- let h = 0;
1324
- let s = String(value);
1325
- for (let i = 0; i < s.length; i++) h = h * 31 + s.charCodeAt(i) >>> 0;
1326
- return `var(--chart-${h % 5 + 1})`;
1327
- }
1328
- //#endregion
1329
- //#region ../pretui/components/avatar.gts
1330
- var STARTS_WITH_WORD_CHAR = /* @__PURE__ */ new RegExp("^[\\p{L}\\p{N}]", "u");
1331
- var SIZE_PROPERTY = "--pretui-avatar-size";
1332
- var HUE_PROPERTY = "--pretui-chip-hue";
1333
- var Avatar = class extends Component {
1334
- static {
1335
- decorateFieldV2(this.prototype, "failedSrc", [tracked]);
1336
- }
1337
- #failedSrc = (initializeDeferredDecorator(this, "failedSrc"), void 0);
1338
- get initials() {
1339
- return (this.args.name ?? "").split(/\s+/).filter((w) => STARTS_WITH_WORD_CHAR.test(w)).map((w) => w[0]).slice(0, 2).join("").toUpperCase();
1340
- }
1341
- get showImage() {
1342
- return Boolean(this.args.src) && this.args.src !== this.failedSrc;
1343
- }
1344
- imageError = () => {
1345
- this.failedSrc = this.args.src;
1346
- };
1347
- get size() {
1348
- let size = Number(this.args.size) || void 0;
1349
- return size === void 0 ? void 0 : `${size / 16}rem`;
1350
- }
1351
- get shape() {
1352
- let { shape } = this.args;
1353
- return shape === "rounded" || shape === "square" ? shape : void 0;
1354
- }
1355
- get explicitHue() {
1356
- return this.args.hue ?? void 0;
1357
- }
1358
- get hue() {
1359
- let hue = this.explicitHue;
1360
- return hue === void 0 ? statusHue(this.args.name ?? "") : cssValue(hue);
1361
- }
1362
- get style() {
1363
- return cssStyleFrom([cssDeclaration(SIZE_PROPERTY, this.size), cssDeclaration(HUE_PROPERTY, this.hue)]);
1364
- }
1365
- get keptStyle() {
1366
- return [{
1367
- property: SIZE_PROPERTY,
1368
- value: this.size,
1369
- strength: "arg"
1370
- }, {
1371
- property: HUE_PROPERTY,
1372
- value: this.hue,
1373
- strength: this.explicitHue === void 0 ? "default" : "arg"
1374
- }];
1375
- }
1376
- static {
1377
- setComponentTemplate(templateFactory({
1378
- "id": "1puKX5ao",
1379
- "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\"]]",
1380
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/avatar.gts",
1381
- "scope": () => [keepStyle, on],
1382
- "isStrictMode": true
1383
- }), this);
1384
- }
1385
- };
1386
- //#endregion
1387
- //#region ../pretui/components/dialog.gts
1388
- var DIALOG_SIZES = {
1389
- xs: "s",
1390
- s: "s",
1391
- m: "m",
1392
- l: "l",
1393
- xl: "l"
1394
- };
1395
- var Dialog = class extends Component {
1396
- get popupsInPlace() {
1397
- return true;
1398
- }
1399
- static {
1400
- decorateMethodV2(this.prototype, "popupsInPlace", [provide(POPUPS_IN_PLACE)]);
1401
- }
1402
- get dismissible() {
1403
- return this.args.dismissible ?? true;
1404
- }
1405
- get open() {
1406
- return resolveOpen(this.args);
1407
- }
1408
- get size() {
1409
- return DIALOG_SIZES[resolveSize(this.args.size)] ?? "m";
1410
- }
1411
- requestClose() {
1412
- emit([this.args.onClose]);
1413
- emit([this.args.onOpenChange], false);
1414
- }
1415
- onCancel = (e) => {
1416
- e.preventDefault();
1417
- if (this.dismissible) this.requestClose();
1418
- };
1419
- onClick = (e) => {
1420
- if (this.dismissible && e.target === e.currentTarget) this.requestClose();
1421
- };
1422
- static {
1423
- setComponentTemplate(templateFactory({
1424
- "id": "Xsw334hr",
1425
- "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\"]]",
1426
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/dialog.gts",
1427
- "scope": () => [modalBehavior],
1428
- "isStrictMode": true
1429
- }), this);
1430
- }
1431
- };
1432
- //#endregion
1433
- //#region ../pretui/components/item.gts
1434
- var Item = class extends Component {
1435
- get size() {
1436
- return resolveSize(this.args.size);
1437
- }
1438
- get align() {
1439
- return this.args.alignStart ? "start" : "center";
1440
- }
1441
- static {
1442
- setComponentTemplate(templateFactory({
1443
- "id": "ko3oU85L",
1444
- "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\"]]",
1445
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/item.gts",
1446
- "isStrictMode": true
1447
- }), this);
1448
- }
1449
- };
1450
- //#endregion
1451
- //#region ../pretui/components/broken-link.gts
1452
- var BrokenLink = class extends Component {
1453
- get label() {
1454
- return this.args.label ?? "missing card";
1455
- }
1456
- static {
1457
- setComponentTemplate(templateFactory({
1458
- "id": "ANxE2OLx",
1459
- "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\"]]",
1460
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/broken-link.gts",
1461
- "isStrictMode": true
1462
- }), this);
1463
- }
1464
- };
1465
- //#endregion
1466
- //#region ../pretui/components/empty-state.gts
1467
- var EMPTY_STATE_SIZES = {
1468
- xs: "s",
1469
- s: "s",
1470
- m: "m",
1471
- l: "m",
1472
- xl: "m"
1473
- };
1474
- var EmptyState = class extends Component {
1475
- get showTexture() {
1476
- return this.args.texture ?? true;
1477
- }
1478
- get separator() {
1479
- return this.args.separator ?? "or";
1480
- }
1481
- get size() {
1482
- return EMPTY_STATE_SIZES[resolveSize(this.args.size)] ?? "m";
1483
- }
1484
- static {
1485
- setComponentTemplate(templateFactory({
1486
- "id": "yJcwZ0yC",
1487
- "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\"]]",
1488
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/empty-state.gts",
1489
- "isStrictMode": true
1490
- }), this);
1491
- }
1492
- };
1493
- //#endregion
1494
- //#region ../pretui/components/skeleton.gts
1495
- var Skeleton = class extends Component {
1496
- get style() {
1497
- return cssStyleFrom([cssDeclaration("--_w", this.args.width ?? "100%"), cssDeclaration("--_h", this.args.height ?? "12px")]);
1498
- }
1499
- static {
1500
- setComponentTemplate(templateFactory({
1501
- "id": "6lgKSRT5",
1502
- "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\"],[]]",
1503
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/skeleton.gts",
1504
- "isStrictMode": true
1505
- }), this);
1506
- }
1507
- };
1508
- //#endregion
1509
- //#region ../pretui/data-component.gts
1510
- /** What a row is keyed by. Strings and numbers only — a key is compared with
1511
- * `===` and must survive being written into a `data-` attribute. */
1512
- /** Caller-supplied key accessor: stable identity for one row. */
1513
- /** The dataset loader. Deliberately knows nothing about HTTP: it is any
1514
- * function returning a promise of rows. */
1515
- /** How many rows may be selected at once. */
1516
- /** Sort direction. */
1517
- /** The current sort: a column key plus a direction. `null` means unsorted,
1518
- * which is a third state the asc/desc cycle passes through. */
1519
- /**
1520
- * THE documented key fallback, shared by every collection in the kit.
1521
- *
1522
- * 1. `@key` accessor if the caller supplied one — always prefer this.
1523
- * 2. otherwise the row's own `id` when it is a string or number (the shape
1524
- * Boxel cards, `FeedItem` and every fixture in examples.gts already have);
1525
- * 3. otherwise the row's 0-based index.
1526
- *
1527
- * Branch 3 is a real, documented compromise, not a silent one: an
1528
- * index-keyed row's identity MOVES when the collection is re-sorted or
1529
- * spliced, so selection and the active row follow the position rather than
1530
- * the record. Any collection whose rows can be re-ordered should pass `@key`.
1531
- */
1532
- function defaultRowKey(row, index) {
1533
- if (row && typeof row === "object") {
1534
- let id = row["id"];
1535
- if (typeof id === "string" || typeof id === "number") return id;
1536
- }
1537
- return index;
1538
- }
1539
- /** Reads one field off a row for the default comparator. Rows are generic,
1540
- * so the read is an explicit widening rather than an `any`. */
1541
- function readField(row, key) {
1542
- return row && typeof row === "object" ? row[key] : void 0;
1543
- }
1544
- /** Total order over unknown values: numbers numerically, everything else by
1545
- * locale-free string compare, with null/undefined last in either direction.
1546
- * Anything richer (dates as objects, money, nested paths) wants `@comparator`. */
1547
- function compareValues(a, b) {
1548
- let aMissing = a === void 0 || a === null;
1549
- let bMissing = b === void 0 || b === null;
1550
- if (aMissing || bMissing) return aMissing && bMissing ? 0 : aMissing ? 1 : -1;
1551
- if (typeof a === "number" && typeof b === "number") return a - b;
1552
- if (typeof a === "boolean" && typeof b === "boolean") return Number(a) - Number(b);
1553
- let as = String(a);
1554
- let bs = String(b);
1555
- return as < bs ? -1 : as > bs ? 1 : 0;
1556
- }
1557
- /** Everything is an Error by the time it reaches tracked state — a thrown
1558
- * string, a rejected `{ message }`, or a genuine Error. Never swallowed. */
1559
- function toError(thrown) {
1560
- if (thrown instanceof Error) return thrown;
1561
- if (typeof thrown === "string") return new Error(thrown);
1562
- let message = readField(thrown, "message");
1563
- return new Error(typeof message === "string" ? message : "Load failed");
1564
- }
1565
- /** Re-runs `beginLoad()` whenever the loader, its key, or the reload epoch
1566
- * changes. Exported so a subclass that writes its own `<template>` (and
1567
- * therefore does not render `<DataShell>`) can still wire the loader. */
1568
- var dataLoad = modifier((_el, [state, _load, _key, _epoch]) => {
1569
- state.beginLoad();
1570
- });
1571
- /**
1572
- * The narrow, non-generic slice of a data component that the shared chrome
1573
- * needs. `DataComponent` implements it; a component that cannot extend
1574
- * `DataComponent` (because it already extends something else) can implement
1575
- * this instead and still wear the same chrome.
1576
- */
1577
- /**
1578
- * The small amount of shared chrome that goes with the base class: the
1579
- * `aria-busy` root, the polite live region, and the four state slots. It is a
1580
- * separate component precisely so a subclass that writes its own
1581
- * `<template>` keeps every accessibility guarantee without copying it.
1582
- */
1583
- var DataShell = class extends Component {
1584
- get isLoading() {
1585
- return this.args.state.status === "loading";
1586
- }
1587
- get isError() {
1588
- return this.args.state.status === "error";
1589
- }
1590
- get isEmpty() {
1591
- return this.args.state.status === "empty";
1592
- }
1593
- get skeletonRows() {
1594
- let n = Math.max(1, Math.floor(this.args.skeletonRows ?? 3));
1595
- let out = [];
1596
- for (let i = 0; i < n; i++) out.push(i);
1597
- return out;
1598
- }
1599
- get loadingLabel() {
1600
- return this.args.loadingLabel ?? "Loading";
1601
- }
1602
- get emptyTitle() {
1603
- return this.args.emptyTitle ?? "Nothing to show yet";
1604
- }
1605
- get emptyMessage() {
1606
- return this.args.emptyMessage ?? "No records match this view. Adjust the filters, or check back once the desk has logged something.";
1607
- }
1608
- get errorTitle() {
1609
- return this.args.errorTitle ?? "Could not load";
1610
- }
1611
- retry = () => {
1612
- this.args.state.reload();
1613
- };
1614
- static {
1615
- setComponentTemplate(templateFactory({
1616
- "id": "MNDOTS8w",
1617
- "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\"]]",
1618
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
1619
- "scope": () => [
1620
- dataLoad,
1621
- Spinner,
1622
- Skeleton,
1623
- Alert,
1624
- BrokenLink,
1625
- Button,
1626
- on,
1627
- EmptyState
1628
- ],
1629
- "isStrictMode": true
1630
- }), this);
1631
- }
1632
- };
1633
- /**
1634
- * Everything a data component accepts. Subclasses widen this through the
1635
- * `Extra` type parameter rather than re-declaring it.
1636
- */
1637
- /** The interaction surface yielded to the default block alongside the rows.
1638
- * Everything here is safe to call from a template. */
1639
- /** The expanded-rows args DataTable and List share. */
1640
- /** One row's expansion, everything its expander and detail need. */
1641
- /**
1642
- * Which rows are expanded, by key, and the ARIA wiring for each row's
1643
- * expander. Controlled when `@expandedKeys` is passed (the host never moves
1644
- * itself, it only reports), uncontrolled otherwise, seeded from
1645
- * `@defaultExpandedKeys`. Takes a thunk for the same reason DataSource does:
1646
- * every read goes through the live args. DataTable and List both use it, so
1647
- * the state rule and the ARIA contract cannot drift between them.
1648
- */
1649
- var ExpansionState = class {
1650
- constructor(readArgs, idPrefix) {
1651
- this.readArgs = readArgs;
1652
- this.idPrefix = idPrefix;
1653
- }
1654
- static {
1655
- decorateFieldV2(this.prototype, "internal", [tracked], function() {});
1656
- }
1657
- #internal = (initializeDeferredDecorator(this, "internal"), void 0);
1658
- get keys() {
1659
- let a = this.readArgs();
1660
- if (a.expandedKeys !== void 0) return a.expandedKeys;
1661
- return this.internal ?? a.defaultExpandedKeys ?? [];
1662
- }
1663
- /** A Set keeps 1 and '1' distinct, as `includes` does. */
1664
- get keySet() {
1665
- return new Set(this.keys);
1666
- }
1667
- static {
1668
- decorateMethodV2(this.prototype, "keySet", [cached]);
1669
- }
1670
- isExpanded = (key) => this.keySet.has(key);
1671
- /** The detail id is built from the row's position: a key can hold
1672
- * spaces, and 1 and '1' are distinct keys. */
1673
- viewFor(key, index, label) {
1674
- let expanded = this.isExpanded(key);
1675
- let detailId = this.idPrefix + "-d-" + String(index);
1676
- return {
1677
- expanded,
1678
- expandedFlag: expanded ? "true" : "false",
1679
- detailId,
1680
- controls: expanded ? detailId : void 0,
1681
- expandLabel: (expanded ? "Collapse " : "Expand ") + label
1682
- };
1683
- }
1684
- toggle = (key) => {
1685
- let current = this.keys;
1686
- let next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
1687
- let a = this.readArgs();
1688
- if (a.expandedKeys === void 0) this.internal = next;
1689
- a.onExpandedChange?.([...next]);
1690
- };
1691
- };
1692
- /**
1693
- * THE state machine, as a plain class rather than a component.
1694
- *
1695
- * It is separate from `DataComponent` for a reason that is worth stating,
1696
- * because it is the difference between a base class that only serves its own
1697
- * demo and one the whole kit can use. Glint infers a component's row type
1698
- * from its `Args` type — and inference dies the moment `Args` is anything
1699
- * but a bare `DataArgs<T>`: an intersection with an `Extra` type parameter
1700
- * (`DataArgs<T> & Extra`) makes every caller's `T` collapse to `{}`. So a
1701
- * base class cannot both infer `T` and let subclasses add their own args.
1702
- *
1703
- * Inheritance therefore covers the plain case, and DELEGATION covers the
1704
- * rest: a component with its own signature — `@columns`, `@series`, extra
1705
- * blocks, a different Element — holds a DataSource, points `<DataShell>` at
1706
- * it, and gets the identical state machine:
1707
- *
1708
- * class KitTable<T> extends Component<KitTableSignature<T>> {
1709
- * data = new DataSource<T>(() => this.args);
1710
- * <template><DataShell @state={{this.data}}> … </DataShell></template>
1711
- * }
1712
- *
1713
- * The constructor takes a THUNK, not the args object, so every read goes
1714
- * through the live `this.args` and autotracking stays intact.
1715
- */
1716
- var DataSource = class {
1717
- constructor(readArgs) {
1718
- this.readArgs = readArgs;
1719
- }
1720
- /** the host's current args — read through the thunk on every access so
1721
- * tracked argument changes are observed normally */
1722
- get a() {
1723
- return this.readArgs();
1724
- }
1725
- static {
1726
- decorateFieldV2(this.prototype, "loadedRows", [tracked], function() {
1727
- return [];
1728
- });
1729
- }
1730
- #loadedRows = (initializeDeferredDecorator(this, "loadedRows"), void 0);
1731
- static {
1732
- decorateFieldV2(this.prototype, "inFlight", [tracked], function() {
1733
- return false;
1734
- });
1735
- }
1736
- #inFlight = (initializeDeferredDecorator(this, "inFlight"), void 0);
1737
- static {
1738
- decorateFieldV2(this.prototype, "settled", [tracked], function() {
1739
- return false;
1740
- });
1741
- }
1742
- #settled = (initializeDeferredDecorator(this, "settled"), void 0);
1743
- static {
1744
- decorateFieldV2(this.prototype, "failure", [tracked], function() {});
1745
- }
1746
- #failure = (initializeDeferredDecorator(this, "failure"), void 0);
1747
- static {
1748
- decorateFieldV2(this.prototype, "epoch", [tracked], function() {
1749
- return 0;
1750
- });
1751
- }
1752
- #epoch = (initializeDeferredDecorator(this, "epoch"), void 0);
1753
- requestToken = 0;
1754
- static {
1755
- decorateFieldV2(this.prototype, "internalSelected", [tracked], function() {});
1756
- }
1757
- #internalSelected = (initializeDeferredDecorator(this, "internalSelected"), void 0);
1758
- static {
1759
- decorateFieldV2(this.prototype, "internalActive", [tracked], function() {});
1760
- }
1761
- #internalActive = (initializeDeferredDecorator(this, "internalActive"), void 0);
1762
- static {
1763
- decorateFieldV2(this.prototype, "internalSort", [tracked], function() {});
1764
- }
1765
- #internalSort = (initializeDeferredDecorator(this, "internalSort"), void 0);
1766
- get loadFn() {
1767
- return this.a.load;
1768
- }
1769
- get loadKey() {
1770
- return this.a.loadKey;
1771
- }
1772
- get loadRef() {
1773
- let key = this.a.loadKey;
1774
- return typeof key === "string" || typeof key === "number" ? String(key) : void 0;
1775
- }
1776
- get canRetry() {
1777
- return this.a.load !== void 0 && this.a.rows === void 0;
1778
- }
1779
- /**
1780
- * Called by the `dataLoad` modifier on insert and on every change to
1781
- * `@load` / `@loadKey` / `epoch`. Writes NO tracked state synchronously —
1782
- * the modifier runs inside the render transaction, and a tracked write
1783
- * there is the backtracking-rerender assertion.
1784
- */
1785
- beginLoad = () => {
1786
- let load = this.a.load;
1787
- let token = ++this.requestToken;
1788
- if (!load || this.a.rows !== void 0) return;
1789
- this.runLoad(load, token);
1790
- };
1791
- /** Discards whatever is in flight and loads again. */
1792
- reload = () => {
1793
- this.epoch = this.epoch + 1;
1794
- };
1795
- async runLoad(load, token) {
1796
- await Promise.resolve();
1797
- if (token !== this.requestToken) return;
1798
- this.inFlight = true;
1799
- this.failure = void 0;
1800
- try {
1801
- let rows = await load();
1802
- if (token !== this.requestToken) return;
1803
- this.loadedRows = rows ?? [];
1804
- this.failure = void 0;
1805
- } catch (thrown) {
1806
- if (token !== this.requestToken) return;
1807
- this.failure = toError(thrown);
1808
- } finally {
1809
- if (token === this.requestToken) {
1810
- this.inFlight = false;
1811
- this.settled = true;
1812
- }
1813
- }
1814
- }
1815
- /**
1816
- * The single readable state. DERIVED — nothing assigns it:
1817
- * error a captured failure outranks everything, so a stale row set can
1818
- * never read as success;
1819
- * loading a request is in flight, OR one is about to start and has never
1820
- * settled (which is what closes the empty-flash on first paint);
1821
- * ready settled with rows;
1822
- * empty settled with none — only ever reachable when nothing is
1823
- * loading, which is the bug this ordering exists to prevent;
1824
- * idle no rows and no loader: nobody has asked for anything.
1825
- */
1826
- get status() {
1827
- if (this.a.rows !== void 0) return this.a.rows.length > 0 ? "ready" : "empty";
1828
- if (this.failure) return "error";
1829
- if (this.inFlight) return "loading";
1830
- if (this.a.load === void 0) return "idle";
1831
- if (!this.settled) return "loading";
1832
- return this.loadedRows.length > 0 ? "ready" : "empty";
1833
- }
1834
- get busy() {
1835
- return this.status === "loading" ? "true" : "false";
1836
- }
1837
- get errorMessage() {
1838
- return this.a.rows === void 0 && this.failure ? this.failure.message : "";
1839
- }
1840
- /** The rows as given: `@rows` when eager, the loaded set otherwise. */
1841
- get rows() {
1842
- return this.a.rows ?? this.loadedRows;
1843
- }
1844
- /** The rows as rendered: sorted when a sort is active. Never mutates the
1845
- * caller's array. */
1846
- get visibleRows() {
1847
- let rows = this.rows;
1848
- let sort = this.sort;
1849
- if (!sort) return rows.slice();
1850
- let dir = sort.dir === "desc" ? -1 : 1;
1851
- let active = sort;
1852
- return rows.slice().sort((a, b) => this.compare(a, b, active, dir));
1853
- }
1854
- get count() {
1855
- return this.visibleRows.length;
1856
- }
1857
- /**
1858
- * The polite announcement. Derived ONLY from settled state, which is how
1859
- * "do not announce on every keystroke" is enforced structurally rather than
1860
- * by remembering to: while a request is in flight the text is empty, so a
1861
- * caller-driven filter that re-queries announces once when the new results
1862
- * land, not once per key. Identical text is not re-announced by assistive
1863
- * technology, so re-sorting the same 6 rows stays silent too.
1864
- */
1865
- get announcement() {
1866
- if (this.a.silentCount) return "";
1867
- let noun = this.a.itemNoun ?? "result";
1868
- switch (this.status) {
1869
- case "ready": {
1870
- let n = this.count;
1871
- return `${n} ${n === 1 ? noun : `${noun}s`}`;
1872
- }
1873
- case "empty": return `No ${noun}s`;
1874
- case "error": return `Could not load: ${this.errorMessage}`;
1875
- default: return "";
1876
- }
1877
- }
1878
- keyFor = (row, index) => this.a.key ? this.a.key(row, index) : defaultRowKey(row, index);
1879
- rowsForKeys(keys) {
1880
- let wanted = new Set(keys);
1881
- return this.visibleRows.filter((row, i) => wanted.has(this.keyFor(row, i)));
1882
- }
1883
- get selectionMode() {
1884
- return this.a.selectionMode ?? "none";
1885
- }
1886
- get selectedKeys() {
1887
- if (this.a.selected !== void 0) return this.a.selected;
1888
- return this.internalSelected ?? this.a.defaultSelected ?? [];
1889
- }
1890
- get selectedRows() {
1891
- return this.rowsForKeys(this.selectedKeys);
1892
- }
1893
- /** Every row the reader can see is selected; keys for rows outside the
1894
- * current view do not count either way. */
1895
- get allSelected() {
1896
- let visible = this.visibleRows;
1897
- if (visible.length === 0) return false;
1898
- let selected = new Set(this.selectedKeys);
1899
- return visible.every((row, index) => selected.has(this.keyFor(row, index)));
1900
- }
1901
- isSelected = (row, index) => this.selectedKeys.includes(this.keyFor(row, index));
1902
- toggleSelected = (row, index) => {
1903
- let mode = this.selectionMode;
1904
- if (mode === "none") return;
1905
- let key = this.keyFor(row, index);
1906
- let current = this.selectedKeys;
1907
- let next;
1908
- if (mode === "single") next = current.length === 1 && current[0] === key ? [] : [key];
1909
- else next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
1910
- this.commitSelection(next);
1911
- };
1912
- selectAll = () => {
1913
- if (this.selectionMode !== "multi") return;
1914
- let visible = this.visibleRows.map((r, i) => this.keyFor(r, i));
1915
- let shown = new Set(visible);
1916
- let kept = this.selectedKeys.filter((key) => !shown.has(key));
1917
- this.commitSelection(this.allSelected ? kept : [...kept, ...visible]);
1918
- };
1919
- clearSelection = () => {
1920
- this.commitSelection([]);
1921
- };
1922
- commitSelection(next) {
1923
- if (this.a.selected === void 0) this.internalSelected = next;
1924
- this.a.onSelectionChange?.(next, this.rowsForKeys(next));
1925
- }
1926
- get activeKey() {
1927
- if (this.a.activeKey !== void 0) return this.a.activeKey;
1928
- return this.internalActive !== void 0 ? this.internalActive : this.a.defaultActiveKey ?? null;
1929
- }
1930
- isActive = (row, index) => this.activeKey !== null && this.activeKey === this.keyFor(row, index);
1931
- setActive = (row, index) => {
1932
- let next = row === null ? null : this.keyFor(row, index);
1933
- if (this.a.activeKey === void 0) this.internalActive = next;
1934
- this.a.onActiveChange?.(next, row ?? void 0);
1935
- };
1936
- get sort() {
1937
- if (this.a.sort !== void 0) return this.a.sort;
1938
- return this.internalSort !== void 0 ? this.internalSort : this.a.defaultSort ?? null;
1939
- }
1940
- /** asc → desc → unsorted, the three-step cycle DataGrid already used. */
1941
- toggleSort = (key) => {
1942
- let current = this.sort;
1943
- let next = !current || current.key !== key ? {
1944
- key,
1945
- dir: "asc"
1946
- } : current.dir === "asc" ? {
1947
- key,
1948
- dir: "desc"
1949
- } : null;
1950
- if (this.a.sort === void 0) this.internalSort = next;
1951
- this.a.onSortChange?.(next);
1952
- };
1953
- ariaSort = (key) => {
1954
- let current = this.sort;
1955
- if (!current || current.key !== key) return "none";
1956
- return current.dir === "asc" ? "ascending" : "descending";
1957
- };
1958
- compare(a, b, sort, dir) {
1959
- if (this.a.comparator) return this.a.comparator(a, b, sort) * dir;
1960
- let x = readField(a, sort.key);
1961
- let y = readField(b, sort.key);
1962
- if (x === void 0 || x === null || y === void 0 || y === null) return compareValues(x, y);
1963
- return compareValues(x, y) * dir;
1964
- }
1965
- get data() {
1966
- return {
1967
- status: this.status,
1968
- count: this.count,
1969
- errorMessage: this.errorMessage,
1970
- keyFor: this.keyFor,
1971
- selectionMode: this.selectionMode,
1972
- selectedKeys: this.selectedKeys,
1973
- selectedRows: this.selectedRows,
1974
- allSelected: this.allSelected,
1975
- isSelected: this.isSelected,
1976
- toggleSelected: this.toggleSelected,
1977
- selectAll: this.selectAll,
1978
- clearSelection: this.clearSelection,
1979
- activeKey: this.activeKey,
1980
- isActive: this.isActive,
1981
- setActive: this.setActive,
1982
- sort: this.sort,
1983
- toggleSort: this.toggleSort,
1984
- ariaSort: this.ariaSort,
1985
- reload: this.reload
1986
- };
1987
- }
1988
- };
1989
- (class extends Component {
1990
- /** the state machine — pass it to `<DataShell @state={{this.source}}>` */ source = new DataSource(() => this.args);
1991
- get status() {
1992
- return this.source.status;
1993
- }
1994
- get busy() {
1995
- return this.source.busy;
1996
- }
1997
- get errorMessage() {
1998
- return this.source.errorMessage;
1999
- }
2000
- get announcement() {
2001
- return this.source.announcement;
2002
- }
2003
- get rows() {
2004
- return this.source.rows;
2005
- }
2006
- get visibleRows() {
2007
- return this.source.visibleRows;
2008
- }
2009
- get count() {
2010
- return this.source.count;
2011
- }
2012
- get selectionMode() {
2013
- return this.source.selectionMode;
2014
- }
2015
- get selectedKeys() {
2016
- return this.source.selectedKeys;
2017
- }
2018
- get selectedRows() {
2019
- return this.source.selectedRows;
2020
- }
2021
- get allSelected() {
2022
- return this.source.allSelected;
2023
- }
2024
- get activeKey() {
2025
- return this.source.activeKey;
2026
- }
2027
- get sort() {
2028
- return this.source.sort;
2029
- }
2030
- get data() {
2031
- return this.source.data;
2032
- }
2033
- keyFor = this.source.keyFor;
2034
- isSelected = this.source.isSelected;
2035
- toggleSelected = this.source.toggleSelected;
2036
- selectAll = this.source.selectAll;
2037
- clearSelection = this.source.clearSelection;
2038
- isActive = this.source.isActive;
2039
- setActive = this.source.setActive;
2040
- toggleSort = this.source.toggleSort;
2041
- ariaSort = this.source.ariaSort;
2042
- reload = this.source.reload;
2043
- static {
2044
- setComponentTemplate(templateFactory({
2045
- "id": "WDfnfAER",
2046
- "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\"]]",
2047
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
2048
- "scope": () => [DataShell],
2049
- "isStrictMode": true
2050
- }), this);
2051
- }
2052
- });
2053
- modifier((el, [mixed]) => {
2054
- el.indeterminate = mixed;
2055
- });
2056
- /**
2057
- * The roving keyboard cursor a row collection needs: one tab stop for the
2058
- * whole list, arrows to move within it, Home/End to the ends.
2059
- *
2060
- * It is a plain class, not a component and not a modifier, for the reason
2061
- * `DataSource` is one: it is testable without a DOM and it can be held by
2062
- * anything. `<List>` holds one. `<DataTable>` deliberately does NOT — a
2063
- * plain `<table>` must leave Tab alone so the links, buttons and checkboxes
2064
- * inside its cells stay reachable in document order. Roving row focus is a
2065
- * `role='grid'` behaviour, and this file does not claim that role.
2066
- */
2067
- var RowCursor = class {
2068
- constructor(readCount) {
2069
- this.readCount = readCount;
2070
- }
2071
- static {
2072
- decorateFieldV2(this.prototype, "index", [tracked], function() {
2073
- return 0;
2074
- });
2075
- }
2076
- #index = (initializeDeferredDecorator(this, "index"), void 0);
2077
- static {
2078
- decorateFieldV2(this.prototype, "navigating", [tracked], function() {
2079
- return false;
2080
- });
2081
- }
2082
- #navigating = (initializeDeferredDecorator(this, "navigating"), void 0);
2083
- /** true only while the KEYBOARD is driving, so `focusWhen` never steals
2084
- * focus on a pointer path or a plain re-render */
2085
- get count() {
2086
- return this.readCount();
2087
- }
2088
- /** the cursor, clamped to the collection as it is right now */
2089
- get active() {
2090
- return Math.min(this.index, Math.max(0, this.count - 1));
2091
- }
2092
- isActive = (index) => index === this.active;
2093
- isFocusTarget = (index) => this.navigating && this.isActive(index);
2094
- /** move the cursor and take focus with it */
2095
- moveTo = (index) => {
2096
- if (index < 0 || index >= this.count) return;
2097
- this.navigating = true;
2098
- this.index = index;
2099
- };
2100
- /** follow focus that arrived some other way (a click, a Tab from outside)
2101
- * without taking it — the early return is what keeps `focusWhen`'s
2102
- * synchronous `el.focus()` from re-entering as a backtracking re-render */
2103
- follow = (index) => {
2104
- if (index === this.active) return;
2105
- this.navigating = false;
2106
- this.index = index;
2107
- };
2108
- /** returns true when the key was consumed and the caller should
2109
- * `preventDefault()` */
2110
- handleKey = (key) => {
2111
- switch (key) {
2112
- case "ArrowDown":
2113
- this.moveTo(this.active + 1);
2114
- return true;
2115
- case "ArrowUp":
2116
- this.moveTo(this.active - 1);
2117
- return true;
2118
- case "Home":
2119
- this.moveTo(0);
2120
- return true;
2121
- case "End":
2122
- this.moveTo(this.count - 1);
2123
- return true;
2124
- default: return false;
2125
- }
2126
- };
2127
- };
2128
- //#endregion
2129
- //#region ../pretui/components/list.gts
2130
- /**
2131
- * A collapse removes the detail, and focus inside it would fall to <body>.
2132
- * The row remembers (from focusin) that focus was in its detail; after a
2133
- * collapse — by the expander, a controlled `@expandedKeys` change or a
2134
- * reload — focus lands on the row's expander instead, unless it has already
2135
- * moved somewhere real.
2136
- */
2137
- var restoreFocusOnCollapse = modifier((row, [expanded]) => {
2138
- if (expanded || row.dataset["detailFocus"] !== "true") return;
2139
- row.dataset["detailFocus"] = "false";
2140
- let doc = row.ownerDocument;
2141
- let active = doc.activeElement;
2142
- if (!active || active === doc.body) row.querySelector(".pretui-list-expbtn")?.focus();
2143
- });
2144
- var List = class extends Component {
2145
- guid = guidFor(this);
2146
- /** The shared state machine: load status, `aria-busy`, the polite result
2147
- * count, the row-key contract, and THE selection model `<DataTable>` uses.
2148
- * One implementation, two components. */
2149
- source = new DataSource(() => this.dataArgs);
2150
- cursor = new RowCursor(() => this.rows.length);
2151
- /** The same expanded-rows state DataTable uses. */
2152
- expansion = new ExpansionState(() => this.args, this.guid);
2153
- get dataArgs() {
2154
- let a = this.args;
2155
- return {
2156
- rows: a.items ?? a.options ?? a.dataSource,
2157
- load: a.load,
2158
- loadKey: a.loadKey,
2159
- key: a.key,
2160
- selectionMode: a.selectionMode,
2161
- selected: a.selected,
2162
- defaultSelected: a.defaultSelected,
2163
- onSelectionChange: a.onSelectionChange,
2164
- itemNoun: a.itemNoun,
2165
- emptyTitle: a.emptyTitle,
2166
- emptyMessage: a.emptyMessage,
2167
- loadingLabel: a.loadingLabel,
2168
- skeletonRows: a.skeletonRows
2169
- };
2170
- }
2171
- get rows() {
2172
- return this.source.visibleRows;
2173
- }
2174
- get size() {
2175
- return resolveSize(this.args.size);
2176
- }
2177
- get label() {
2178
- return this.args.label ?? "List";
2179
- }
2180
- get selectionMode() {
2181
- return this.source.selectionMode;
2182
- }
2183
- get selectable() {
2184
- return this.selectionMode !== "none";
2185
- }
2186
- get multi() {
2187
- return this.selectionMode === "multi";
2188
- }
2189
- get radioName() {
2190
- return this.guid + "-list";
2191
- }
2192
- get divided() {
2193
- return this.args.divided ?? true ? "true" : void 0;
2194
- }
2195
- get bordered() {
2196
- return this.args.bordered ? "true" : void 0;
2197
- }
2198
- get busy() {
2199
- return this.args.busy ?? this.args.loading ? "true" : void 0;
2200
- }
2201
- labelFor = (row, index) => this.args.rowLabel?.(row, index) ?? "Row " + String(index + 1);
2202
- get lines() {
2203
- return this.rows.map((row, index) => {
2204
- let selected = this.source.isSelected(row, index);
2205
- let key = this.source.keyFor(row, index);
2206
- let label = this.labelFor(row, index);
2207
- return {
2208
- key,
2209
- row,
2210
- index,
2211
- selected,
2212
- selectedFlag: selected ? "true" : void 0,
2213
- active: this.cursor.isActive(index),
2214
- api: {
2215
- index,
2216
- selected,
2217
- active: this.cursor.isActive(index),
2218
- toggle: () => this.source.toggleSelected(row, index)
2219
- },
2220
- label,
2221
- expansion: this.expansion.viewFor(key, index, label)
2222
- };
2223
- });
2224
- }
2225
- isRoving = (index) => this.cursor.isActive(index);
2226
- isFocusTarget = (index) => this.cursor.isFocusTarget(index);
2227
- indexFromEvent(event) {
2228
- let raw = (event.target?.closest("[data-list-index]"))?.dataset["listIndex"];
2229
- return raw === void 0 ? void 0 : Number(raw);
2230
- }
2231
- onFocusIn = (event) => {
2232
- let target = event.target;
2233
- let row = target?.closest("[data-list-index]");
2234
- if (row) row.dataset["detailFocus"] = target?.closest(".pretui-list-detail") ? "true" : "false";
2235
- let index = this.indexFromEvent(event);
2236
- if (index !== void 0) this.cursor.follow(index);
2237
- };
2238
- onKeydown = (event) => {
2239
- let ev = event;
2240
- if (this.rows.length === 0) return;
2241
- if (!!!ev.target?.matches("[data-list-index]")) return;
2242
- if (this.cursor.handleKey(ev.key)) {
2243
- ev.preventDefault();
2244
- return;
2245
- }
2246
- let index = this.cursor.active;
2247
- let row = this.rows[index];
2248
- if (row === void 0) return;
2249
- if (ev.key === "Enter") {
2250
- ev.preventDefault();
2251
- this.args.onActivate?.(row, index);
2252
- } else if (ev.key === " " && this.selectable) {
2253
- ev.preventDefault();
2254
- this.source.toggleSelected(row, index);
2255
- }
2256
- };
2257
- toggleExpanded = (key) => this.expansion.toggle(key);
2258
- detailLabel = (line) => line.label + " details";
2259
- toggleRow = (row, index) => {
2260
- this.source.toggleSelected(row, index);
2261
- };
2262
- activate = (row, index) => {
2263
- this.args.onActivate?.(row, index);
2264
- };
2265
- /** A click on a row activates it, unless it landed on a control or in the
2266
- * row's expanded detail. */
2267
- onClick = (event) => {
2268
- if (!this.args.onActivate) return;
2269
- let target = event.target;
2270
- let li = target?.closest?.("li[data-list-index]");
2271
- 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;
2272
- let index = Number(li.getAttribute("data-list-index"));
2273
- let row = this.rows[index];
2274
- if (row !== void 0) this.args.onActivate(row, index);
2275
- };
2276
- static {
2277
- setComponentTemplate(templateFactory({
2278
- "id": "XELOR1Am",
2279
- "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\"]]",
2280
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/list.gts",
2281
- "scope": () => [
2282
- DataShell,
2283
- listen,
2284
- rovingTabindex,
2285
- focusWhen,
2286
- restoreFocusOnCollapse,
2287
- on,
2288
- fn
2289
- ],
2290
- "isStrictMode": true
2291
- }), this);
2292
- }
2293
- };
2294
- //#endregion
2295
- //#region ../pretui/components/loading-state.gts
2296
- var LoadingState = class extends Component {
2297
- get label() {
2298
- return this.args.label ?? "Working";
2299
- }
2300
- get variant() {
2301
- return this.args.variant ?? "drive";
2302
- }
2303
- get pixels() {
2304
- let chev = Array.from({ length: 9 }, (_, i) => {
2305
- let r = Math.floor(i / 3);
2306
- return (i % 3 + Math.abs(r - 1)) * 90;
2307
- });
2308
- let order = [
2309
- 0,
2310
- 1,
2311
- 2,
2312
- 5,
2313
- 8,
2314
- 7,
2315
- 6,
2316
- 3
2317
- ];
2318
- let orbit = Array.from({ length: 9 }, (_, i) => {
2319
- let k = order.indexOf(i);
2320
- return k === -1 ? null : k * 110;
2321
- });
2322
- return (this.variant === "orbit" ? orbit : chev).map((d) => ({
2323
- idle: d === null,
2324
- kept: d === null ? [] : [{
2325
- property: "--pretui-pixel-delay",
2326
- value: `${d}ms`,
2327
- strength: "arg"
2328
- }]
2329
- }));
2330
- }
2331
- static {
2332
- setComponentTemplate(templateFactory({
2333
- "id": "1UXlUkx6",
2334
- "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\"]]",
2335
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/loading-state.gts",
2336
- "scope": () => [keepStyle],
2337
- "isStrictMode": true
2338
- }), this);
2339
- }
2340
- };
2341
- //#endregion
2342
- //#region ../pretui/components/scroller.gts
2343
- /**
2344
- * Maintains the four edge facts as DATA ATTRIBUTES on the viewport, and
2345
- * makes the viewport keyboard-reachable exactly when it actually scrolls.
2346
- *
2347
- * Written as attributes rather than tracked state on purpose: a scroll
2348
- * listener that writes tracked state re-renders the component on every
2349
- * frame of a flick. These attributes are read only by CSS, so the whole
2350
- * affordance costs one `setAttribute` and no render at all.
2351
- *
2352
- * `tabindex` is managed here too. A scroll container that a mouse user can
2353
- * reach and a keyboard user cannot is a keyboard trap in reverse — the
2354
- * content is simply unreachable. Chromium and Firefox have started making
2355
- * scrollers focusable natively; this keeps the guarantee everywhere, and
2356
- * REMOVES the tab stop again when the content shrinks and no longer
2357
- * overflows, which is the part native focusable-scrollers gets right and
2358
- * hand-rolled `tabindex='0'` does not.
2359
- */
2360
- var scrollEdges = modifier((element, [orientation]) => {
2361
- let update = () => {
2362
- let horizontal = orientation !== "vertical";
2363
- let vertical = orientation !== "horizontal";
2364
- let overflowX = element.scrollWidth - element.clientWidth > 1;
2365
- let overflowY = element.scrollHeight - element.clientHeight > 1;
2366
- let left = Math.abs(element.scrollLeft);
2367
- element.dataset["startX"] = horizontal && overflowX && left > 1 ? "clipped" : "flush";
2368
- element.dataset["endX"] = horizontal && overflowX && left < element.scrollWidth - element.clientWidth - 1 ? "clipped" : "flush";
2369
- element.dataset["startY"] = vertical && overflowY && element.scrollTop > 1 ? "clipped" : "flush";
2370
- element.dataset["endY"] = vertical && overflowY && element.scrollTop < element.scrollHeight - element.clientHeight - 1 ? "clipped" : "flush";
2371
- if (horizontal && overflowX || vertical && overflowY) {
2372
- if (element.getAttribute("tabindex") === null) element.setAttribute("tabindex", "0");
2373
- } else if (element.getAttribute("tabindex") === "0") element.removeAttribute("tabindex");
2374
- };
2375
- element.addEventListener("scroll", update, { passive: true });
2376
- let frame;
2377
- let schedule = () => {
2378
- if (frame !== void 0) return;
2379
- frame = requestAnimationFrame(() => {
2380
- frame = void 0;
2381
- update();
2382
- });
2383
- };
2384
- let observer = new ResizeObserver(schedule);
2385
- let observeChildren = () => {
2386
- for (let child of Array.from(element.children)) observer.observe(child);
2387
- };
2388
- observer.observe(element);
2389
- observeChildren();
2390
- let mutations = new MutationObserver(() => {
2391
- observeChildren();
2392
- schedule();
2393
- });
2394
- mutations.observe(element, {
2395
- childList: true,
2396
- subtree: true,
2397
- characterData: true
2398
- });
2399
- update();
2400
- return () => {
2401
- element.removeEventListener("scroll", update);
2402
- observer.disconnect();
2403
- mutations.disconnect();
2404
- if (frame !== void 0) cancelAnimationFrame(frame);
2405
- };
2406
- });
2407
- /**
2408
- * A scroll container that says when it is clipped.
2409
- *
2410
- * ```hbs
2411
- * <Scroller @label='Recent lots' @orientation='horizontal'>
2412
- * <div class='row'>…</div>
2413
- * </Scroller>
2414
- * ```
2415
- *
2416
- * Better than the inspiration (`wa-scroller`): upstream ships one shadow
2417
- * treatment, both axes always on, and no notion of whether the region is
2418
- * reachable by keyboard. Here the axis is explicit, the treatment is a knob,
2419
- * the tab stop appears and DISAPPEARS with the overflow, and the affordance
2420
- * is driven by data attributes rather than by re-rendering on every scroll
2421
- * frame.
2422
- */
2423
- var Scroller = class extends Component {
2424
- get orientation() {
2425
- return this.args.orientation ?? "horizontal";
2426
- }
2427
- get edge() {
2428
- return this.args.edge ?? "fade";
2429
- }
2430
- get role() {
2431
- return this.args.label ? "region" : void 0;
2432
- }
2433
- static {
2434
- setComponentTemplate(templateFactory({
2435
- "id": "dA5kczpk",
2436
- "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\"]]",
2437
- "moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/scroller.gts",
2438
- "scope": () => [scrollEdges],
2439
- "isStrictMode": true
2440
- }), this);
2441
- }
2442
- };
2443
- //#endregion
2444
- //#region app/components/operator-mode/dashboard-modals/manage-catalogs.gts
2445
- var ManageCatalogsModal = class extends Component {
2446
- static {
2447
- decorateFieldV2(this.prototype, "matrixService", [service]);
2448
- }
2449
- #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
2450
- static {
2451
- decorateFieldV2(this.prototype, "realmServer", [service]);
2452
- }
2453
- #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
2454
- static {
2455
- decorateFieldV2(this.prototype, "choices", [tracked$1], function() {
2456
- return null;
2457
- });
2458
- }
2459
- #choices = (initializeDeferredDecorator(this, "choices"), void 0);
2460
- static {
2461
- decorateFieldV2(this.prototype, "loadError", [tracked$1], function() {
2462
- return null;
2463
- });
2464
- }
2465
- #loadError = (initializeDeferredDecorator(this, "loadError"), void 0);
2466
- static {
2467
- decorateFieldV2(this.prototype, "selected", [tracked$1]);
2468
- }
2469
- #selected = (initializeDeferredDecorator(this, "selected"), void 0);
2470
- static {
2471
- decorateFieldV2(this.prototype, "saveError", [tracked$1], function() {
2472
- return null;
2473
- });
2474
- }
2475
- #saveError = (initializeDeferredDecorator(this, "saveError"), void 0);
2476
- constructor(owner, args) {
2477
- super(owner, args);
2478
- this.selected = this.realmServer.userCatalogPicks;
2479
- this.loadChoices.perform();
2480
- }
2481
- get listedElsewhere() {
2482
- return new Set([
2483
- baseRealm.url,
2484
- ...this.realmServer.catalogRealmIdentifiers,
2485
- ...this.realmServer.userRealmIdentifiers
2486
- ]);
2487
- }
2488
- loadChoices = buildTask(() => ({
2489
- context: this,
2490
- generator: function* () {
2491
- this.loadError = null;
2492
- try {
2493
- let listedElsewhere = this.listedElsewhere;
2494
- let realms = yield this.realmServer.fetchPublicRealms();
2495
- this.choices = realms.filter(({ url }) => !listedElsewhere.has(url)).sort((a, b) => displayName(a).localeCompare(displayName(b)));
2496
- } catch (e) {
2497
- this.loadError = e.message;
2498
- }
2499
- }
2500
- }), null, "loadChoices", "restartable");
2501
- save = buildTask(() => ({
2502
- context: this,
2503
- generator: function* () {
2504
- this.saveError = null;
2505
- try {
2506
- let selected = new Set(this.selected);
2507
- let listedElsewhere = this.listedElsewhere;
2508
- let kept = this.realmServer.userCatalogPicks.filter((url) => listedElsewhere.has(url));
2509
- let chosen = (this.choices ?? []).map(({ url }) => url).filter((url) => selected.has(url));
2510
- yield this.matrixService.setUserCatalogRealms([...new Set([...kept, ...chosen])]);
2511
- this.args.onClose();
2512
- } catch (e) {
2513
- this.saveError = e.message;
2514
- }
2515
- }
2516
- }), null, "save", null);
2517
- rowKey = (realm) => realm.url;
2518
- rowLabel = (realm) => displayName(realm);
2519
- iconSrc = (realm) => realm.iconURL ?? void 0;
2520
- setSelected = (keys) => {
2521
- this.selected = keys.map(String);
2522
- };
2523
- toggle = (realm) => {
2524
- this.selected = this.selected.includes(realm.url) ? this.selected.filter((url) => url !== realm.url) : [...this.selected, realm.url];
2525
- };
2526
- get rows() {
2527
- return this.choices ?? [];
2528
- }
2529
- get isSaveDisabled() {
2530
- return this.choices === null;
2531
- }
2532
- static {
2533
- setComponentTemplate(templateFactory({
2534
- "id": "6efOiZ2E",
2535
- "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\"]]",
2536
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard-modals/manage-catalogs.gts",
2537
- "scope": () => [
2538
- Dialog,
2539
- LoadingState,
2540
- Alert,
2541
- Scroller,
2542
- List,
2543
- Item,
2544
- displayName,
2545
- Avatar,
2546
- Button,
2547
- on,
2548
- perform
2549
- ],
2550
- "isStrictMode": true
2551
- }), this);
2552
- }
2553
- };
2554
- function displayName(realm) {
2555
- return realm.name ?? realm.url;
2556
- }
2557
- var ManageCatalogs = class extends Component {
2558
- static {
2559
- decorateFieldV2(this.prototype, "isModalOpen", [tracked$1], function() {
2560
- return false;
2561
- });
2562
- }
2563
- #isModalOpen = (initializeDeferredDecorator(this, "isModalOpen"), void 0);
2564
- setIsModalOpen = (value) => {
2565
- this.isModalOpen = value;
2566
- };
2567
- static {
2568
- setComponentTemplate(templateFactory({
2569
- "id": "vkjyxb8V",
2570
- "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\"]]",
2571
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard-modals/manage-catalogs.gts",
2572
- "scope": () => [
2573
- IconButton,
2574
- IconComponent$19,
2575
- on,
2576
- fn,
2577
- ManageCatalogsModal
2578
- ],
2579
- "isStrictMode": true
2580
- }), this);
2581
- }
2582
- };
2583
- //#endregion
2584
- //#region app/components/operator-mode/dashboard/catalog-shelf.gts
2585
- var ART_PAGE_WIDTH_PX = 1e3;
2586
- var OTHER_LISTINGS_FETCHED = 12;
2587
- var PENDING_STORIES = Array.from({ length: 4 }, (_, i) => i);
2588
- var LISTING_TYPE = {
2589
- module: rri("@cardstack/catalog/catalog-app/listing/listing"),
2590
- name: "Listing"
2591
- };
2592
- var lastAnswers = /* @__PURE__ */ new Map();
2593
- var CatalogShelf = class extends Component {
2594
- static {
2595
- decorateFieldV2(this.prototype, "network", [service]);
2596
- }
2597
- #network = (initializeDeferredDecorator(this, "network"), void 0);
2598
- static {
2599
- decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
2600
- }
2601
- #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
2602
- resolve = (link, base) => {
2603
- try {
2604
- return this.network.virtualNetwork.toURL(resolveRRIReference(link, rri(base))).href;
2605
- } catch {
2606
- return link;
2607
- }
2608
- };
2609
- toListingEntry = (entry) => ({
2610
- id: this.resolve(trimJsonExtension(entry.id), this.args.realmURL),
2611
- item: entry.item
2612
- });
2613
- index = getSearchEntriesResource(this, () => ({
2614
- realms: [this.args.realmURL],
2615
- cardUrls: [`${this.args.realmURL}index.json`],
2616
- scope: "cards",
2617
- fields: { entry: ["item.featured"] }
2618
- }));
2619
- get featuredIds() {
2620
- let index = this.index.entries[0];
2621
- return index ? linkedIds(this.toListingEntry(index), "featured", this.resolve) : [];
2622
- }
2623
- static {
2624
- decorateMethodV2(this.prototype, "featuredIds", [cached$1]);
2625
- }
2626
- get featuredCardUrls() {
2627
- return this.featuredIds.map((id) => `${id}.json`);
2628
- }
2629
- static {
2630
- decorateMethodV2(this.prototype, "featuredCardUrls", [cached$1]);
2631
- }
2632
- featured = getSearchEntriesResource(this, () => this.featuredCardUrls.length ? {
2633
- realms: [this.args.realmURL],
2634
- cardUrls: this.featuredCardUrls,
2635
- scope: "cards",
2636
- fields: { entry: LISTING_FIELDS }
2637
- } : void 0);
2638
- others = getSearchEntriesResource(this, () => ({
2639
- realms: [this.args.realmURL],
2640
- filter: { "item.on": LISTING_TYPE },
2641
- page: {
2642
- number: 0,
2643
- size: OTHER_LISTINGS_FETCHED
2644
- },
2645
- scope: "cards",
2646
- fields: { entry: LISTING_FIELDS }
2647
- }));
2648
- get isAnswered() {
2649
- let answered = (resource) => resource.entriesQuery !== void 0 || resource.errors !== void 0;
2650
- if (!answered(this.index) || !answered(this.others)) return false;
2651
- let wanted = this.featuredCardUrls;
2652
- if (wanted.length === 0 || this.featured.errors && !this.featured.isLoading) return true;
2653
- let asked = this.featured.entriesQuery?.cardUrls ?? [];
2654
- return asked.length === wanted.length && wanted.every((url, i) => asked[i] === url);
2655
- }
2656
- get stories() {
2657
- if (!this.isAnswered) return lastAnswers.get(this.args.realmURL) ?? [];
2658
- let stories = storiesFrom({
2659
- featuredIds: this.featuredIds,
2660
- featured: this.featured.entries.map(this.toListingEntry),
2661
- others: this.others.entries.map(this.toListingEntry),
2662
- resolve: this.resolve
2663
- });
2664
- lastAnswers.set(this.args.realmURL, stories);
2665
- return stories;
2666
- }
2667
- static {
2668
- decorateMethodV2(this.prototype, "stories", [cached$1]);
2669
- }
2670
- get isPending() {
2671
- return !this.isAnswered && this.stories.length === 0;
2672
- }
2673
- get artQuery() {
2674
- let exampleIds = this.stories.map((story) => story.exampleId).filter((id) => Boolean(id));
2675
- if (exampleIds.length === 0) return;
2676
- return {
2677
- realms: [this.args.realmURL],
2678
- cardUrls: exampleIds.map((id) => `${id}.json`),
2679
- scope: "cards",
2680
- filter: { eq: { htmlQuery: { eq: { format: "isolated" } } } },
2681
- fields: { entry: ["html"] }
2682
- };
2683
- }
2684
- artFor = (entries, exampleId) => exampleId ? entries.find((entry) => entry.html?.html != null && this.toListingEntry(entry).id === exampleId) : void 0;
2685
- headlineId = (index) => `${guidFor(this)}-story-${index}`;
2686
- open(cardId) {
2687
- this.operatorModeStateService.openCardInInteractMode(cardId);
2688
- this.operatorModeStateService.closeWorkspaceChooser();
2689
- }
2690
- static {
2691
- decorateMethodV2(this.prototype, "open", [action]);
2692
- }
2693
- async openCatalog() {
2694
- await this.operatorModeStateService.openWorkspace(this.args.realmURL);
2695
- }
2696
- static {
2697
- decorateMethodV2(this.prototype, "openCatalog", [action]);
2698
- }
2699
- static {
2700
- setComponentTemplate(templateFactory({
2701
- "id": "DDDZj/cK",
2702
- "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\"]]",
2703
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/catalog-shelf.gts",
2704
- "scope": () => [
2705
- SearchResults,
2706
- on,
2707
- fn,
2708
- fitPage,
2709
- ART_PAGE_WIDTH_PX,
2710
- Button,
2711
- PENDING_STORIES
2712
- ],
2713
- "isStrictMode": true
2714
- }), this);
2715
- }
2716
- };
2717
- //#endregion
2718
- //#region app/components/operator-mode/dashboard/section-count.gts
2719
- var SectionCount = setComponentTemplate(templateFactory({
2720
- "id": "bADZiith",
2721
- "block": "[[[11,1],[24,0,\"section-count\"],[17,1],[24,\"data-scopedcss-39a875b699-c0208536ed\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@count\"],[]]",
2722
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/section-count.gts",
2723
- "isStrictMode": true
2724
- }), templateOnly());
2725
- //#endregion
2726
- //#region app/components/operator-mode/dashboard/section-head.gts
2727
- var SectionHead = setComponentTemplate(templateFactory({
2728
- "id": "HKS+UKPy",
2729
- "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\"]]",
2730
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/section-head.gts",
2731
- "scope": () => [SectionCount],
2732
- "isStrictMode": true
2733
- }), templateOnly());
2734
- //#endregion
2735
- //#region app/components/operator-mode/dashboard/catalog-section.gts
2736
- var CatalogSection = class extends Component {
2737
- headingId = `${guidFor(this)}-catalogs`;
2738
- get shelfRealmURL() {
2739
- return this.args.showShelf ? catalogRealmURL : null;
2740
- }
2741
- static {
2742
- setComponentTemplate(templateFactory({
2743
- "id": "ZtNCU0sl",
2744
- "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\"]]",
2745
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/catalog-section.gts",
2746
- "scope": () => [
2747
- SectionHead,
2748
- IconComponent$3,
2749
- ManageCatalogs,
2750
- CatalogShelf,
2751
- add,
2752
- Workspace,
2753
- eq
2754
- ],
2755
- "isStrictMode": true
2756
- }), this);
2757
- }
2758
- };
2759
- //#endregion
2760
- //#region app/components/operator-mode/dashboard/get-started.gts
2761
- var log$1 = logger("component:dashboard/get-started");
2762
- var AUTO_DISMISS_RETRY_DELAYS = [5e3, 3e4];
2763
- var ChangeCounter = class {
2764
- seen;
2765
- changes = 0;
2766
- count(value) {
2767
- if (!this.seen || this.seen.value !== value) {
2768
- this.seen = { value };
2769
- this.changes++;
2770
- }
2771
- return this.changes;
2772
- }
2773
- };
2774
- var GetStarted = class extends Component {
2775
- static {
2776
- decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
2777
- }
2778
- #aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
2779
- static {
2780
- decorateFieldV2(this.prototype, "matrixService", [service]);
2781
- }
2782
- #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
2783
- static {
2784
- decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
2785
- }
2786
- #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
2787
- static {
2788
- decorateFieldV2(this.prototype, "realm", [service]);
2789
- }
2790
- #realm = (initializeDeferredDecorator(this, "realm"), void 0);
2791
- static {
2792
- decorateFieldV2(this.prototype, "realmServer", [service]);
2793
- }
2794
- #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
2795
- static {
2796
- decorateFieldV2(this.prototype, "recentCardsService", [service]);
2797
- }
2798
- #recentCardsService = (initializeDeferredDecorator(this, "recentCardsService"), void 0);
2799
- static {
2800
- decorateFieldV2(this.prototype, "openedIn", [tracked$1]);
2801
- }
2802
- #openedIn = (initializeDeferredDecorator(this, "openedIn"), void 0);
2803
- static {
2804
- decorateFieldV2(this.prototype, "isExpanded", [tracked$1], function() {
2805
- return true;
2806
- });
2807
- }
2808
- #isExpanded = (initializeDeferredDecorator(this, "isExpanded"), void 0);
2809
- static {
2810
- decorateFieldV2(this.prototype, "dismissedIn", [tracked$1]);
2811
- }
2812
- #dismissedIn = (initializeDeferredDecorator(this, "dismissedIn"), void 0);
2813
- dismissalChanges = new ChangeCounter();
2814
- focusNext;
2815
- panelId = `${guidFor(this)}-panel`;
2816
- titleId = `${guidFor(this)}-title`;
2817
- stepsId = `${guidFor(this)}-steps`;
2818
- dismissedNoteId = `${guidFor(this)}-dismissed`;
2819
- constructor(owner, args) {
2820
- super(owner, args);
2821
- this.loadTask.perform().catch((error) => {
2822
- if (!didCancel(error)) log$1.warn(`waiting for Get started's signals failed: ${error}`);
2823
- });
2824
- }
2825
- loadTask = buildTask(() => ({
2826
- context: this,
2827
- generator: function* () {
2828
- yield this.aiAssistantPanelService.waitForSessionRooms();
2829
- }
2830
- }), null, "loadTask", null);
2831
- get isLoaded() {
2832
- return Boolean(this.loadTask.lastSuccessful || this.loadTask.lastErrored);
2833
- }
2834
- get steps() {
2835
- return [
2836
- {
2837
- id: "open-card",
2838
- title: "Open a card in a workspace",
2839
- hint: "Cards hold your data, documents and apps.",
2840
- done: this.recentCardsService.recentCards.length > 0
2841
- },
2842
- this.buildStep,
2843
- {
2844
- id: "publish",
2845
- title: "Put a workspace on the web",
2846
- hint: "Publish one from its menu to share it at its own address.",
2847
- done: this.realmServer.userRealmIdentifiers.some((url) => isHostedRealm(this.realm.info(url)))
2848
- }
2849
- ];
2850
- }
2851
- static {
2852
- decorateMethodV2(this.prototype, "steps", [cached$1]);
2853
- }
2854
- get buildStep() {
2855
- let { agentSetup } = this.matrixService.dashboardState;
2856
- if (usesCodingAgent(this.matrixService.dashboardAgent, agentSetup)) return {
2857
- id: "agent",
2858
- title: "Connect your own agent",
2859
- hint: "Claude Code or Codex can build in your workspaces through the Boxel plugin.",
2860
- done: AGENT_KINDS.some(({ id }) => (agentSetup?.[id] ?? 0) > 0)
2861
- };
2862
- return {
2863
- id: "ask-ai",
2864
- title: "Ask Boxel AI Assistant to build something",
2865
- hint: "It can make your first cards from a sentence.",
2866
- done: this.aiAssistantPanelService.aiSessionRooms.some((session) => Boolean(session.lastMessage) || session.name !== "New AI Assistant Chat")
2867
- };
2868
- }
2869
- get doneCount() {
2870
- return this.steps.filter((step) => step.done).length;
2871
- }
2872
- get isDismissed() {
2873
- return Boolean(this.matrixService.dashboardState.onboardingDismissed);
2874
- }
2875
- get dismissalEpoch() {
2876
- return this.dismissalChanges.count(this.isDismissed);
2877
- }
2878
- get isOpen() {
2879
- return this.openedIn === this.dismissalEpoch;
2880
- }
2881
- toggle() {
2882
- this.openedIn = this.isOpen ? void 0 : this.dismissalEpoch;
2883
- this.isExpanded = true;
2884
- }
2885
- static {
2886
- decorateMethodV2(this.prototype, "toggle", [action]);
2887
- }
2888
- toggleExpanded() {
2889
- this.isExpanded = !this.isExpanded;
2890
- }
2891
- static {
2892
- decorateMethodV2(this.prototype, "toggleExpanded", [action]);
2893
- }
2894
- get nextStep() {
2895
- return this.steps.find((step) => !step.done);
2896
- }
2897
- get isAvailable() {
2898
- return this.isLoaded && !this.isDismissed && this.nextStep !== void 0;
2899
- }
2900
- get isFinished() {
2901
- return this.isLoaded && !this.isDismissed && this.nextStep === void 0;
2902
- }
2903
- get showsDismissedNote() {
2904
- return this.dismissedIn === this.dismissalEpoch;
2905
- }
2906
- get toggleState() {
2907
- return {
2908
- isReady: this.isAvailable,
2909
- isOpen: this.isAvailable && this.isOpen,
2910
- panelId: this.panelId,
2911
- toggle: this.toggle
2912
- };
2913
- }
2914
- dismissWhenFinished = modifier(() => {
2915
- this.autoDismissTask.perform();
2916
- });
2917
- autoDismissTask = buildTask(() => ({
2918
- context: this,
2919
- generator: function* () {
2920
- for (let delay of [0, ...AUTO_DISMISS_RETRY_DELAYS]) {
2921
- yield timeout(delay);
2922
- if (yield this.saveDismissal()) return;
2923
- }
2924
- }
2925
- }), null, "autoDismissTask", "drop");
2926
- async saveDismissal() {
2927
- try {
2928
- await this.matrixService.updateDashboardState({ onboardingDismissed: true });
2929
- return true;
2930
- } catch (error) {
2931
- log$1.warn(`dismissing Get started failed: ${error}`);
2932
- return false;
2933
- }
2934
- }
2935
- focusIfNext = modifier((element, [control]) => {
2936
- if (this.focusNext !== control) return;
2937
- this.focusNext = void 0;
2938
- let { activeElement, body } = element.ownerDocument;
2939
- if (!activeElement || activeElement === body) element.focus();
2940
- });
2941
- dismissTask = buildTask(() => ({
2942
- context: this,
2943
- generator: function* () {
2944
- if (!(yield this.saveDismissal())) return;
2945
- this.focusNext = "undo";
2946
- this.openedIn = void 0;
2947
- this.dismissedIn = this.dismissalEpoch;
2948
- }
2949
- }), null, "dismissTask", "drop");
2950
- undoDismissTask = buildTask(() => ({
2951
- context: this,
2952
- generator: function* () {
2953
- this.focusNext = "dismiss";
2954
- this.isExpanded = true;
2955
- this.openedIn = this.dismissalEpoch + 1;
2956
- try {
2957
- yield this.matrixService.updateDashboardState({ onboardingDismissed: false });
2958
- } catch (error) {
2959
- log$1.warn(`undoing the dismissal of Get started failed: ${error}`);
2960
- this.focusNext = void 0;
2961
- this.openedIn = void 0;
2962
- return;
2963
- }
2964
- if (!this.isAvailable) {
2965
- this.focusNext = void 0;
2966
- this.openedIn = void 0;
2967
- }
2968
- }
2969
- }), null, "undoDismissTask", "drop");
2970
- async openFirstWorkspace() {
2971
- let [first] = this.realmServer.userRealmIdentifiers;
2972
- if (first) await this.operatorModeStateService.openWorkspace(first);
2973
- }
2974
- static {
2975
- decorateMethodV2(this.prototype, "openFirstWorkspace", [action]);
2976
- }
2977
- async askBoxelAi() {
2978
- await this.aiAssistantPanelService.openNewSession();
2979
- }
2980
- static {
2981
- decorateMethodV2(this.prototype, "askBoxelAi", [action]);
2982
- }
2983
- static {
2984
- setComponentTemplate(templateFactory({
2985
- "id": "FPNUHhxx",
2986
- "block": "[[[18,4,[[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-401c3428bd\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"get-started-body\"],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[12],[1,\"\\n \"],[10,\"header\"],[14,0,\"get-started-head\"],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[12],[1,\"\\n \"],[10,\"h2\"],[14,0,\"get-started-title\"],[15,1,[30,0,[\"titleId\"]]],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[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-401c3428bd\",\"\"]],[[\"@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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"tick\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[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-401c3428bd\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"step-words\"],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-title\"],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[12],[1,\"\\n \"],[1,[30,2,[\"title\"]]],[1,\"\\n\"],[41,[30,2,[\"done\"]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-697a231739-401c3428bd\",\"\"]],null,[[\"default\"],[[[[1,\"(done)\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"step-hint\"],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[12],[1,[30,2,[\"hint\"]]],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[51,[30,2,[\"done\"]]],[[[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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[4,[32,2],[\"click\",[30,3]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Set up an agent\"]],[]]]]],[1,\"\\n \"]],[]],null]],[]]]],[]]]],[]],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-401c3428bd\",\"\"],[12],[1,\"\\n \"],[10,2],[14,0,\"dismissed-note\"],[15,1,[30,0,[\"dismissedNoteId\"]]],[14,\"data-scopedcss-697a231739-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[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-401c3428bd\",\"\"],[4,[30,0,[\"dismissWhenFinished\"]],null,null],[12],[13],[1,\"\\n\"]],[]],null]],[]]]],[]]],[1,\"\\n\"]],[\"&attrs\",\"step\",\"@showAgents\",\"&head\"],[\"yield\",\"if\",\"unless\",\"each\",\"-track-array\"]]",
2987
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/get-started.gts",
2988
- "scope": () => [
2989
- ProgressBar,
2990
- Button,
2991
- on,
2992
- IconButton,
2993
- IconComponent$6,
2994
- IconComponent$13,
2995
- cn_default,
2996
- IconComponent$9,
2997
- VisuallyHidden,
2998
- eq
2999
- ],
3000
- "isStrictMode": true
3001
- }), this);
3002
- }
3003
- };
3004
- //#endregion
3005
- //#region app/components/operator-mode/dashboard/keyboard-cursor.ts
3006
- var KeyboardCursor = class {
3007
- static {
3008
- decorateFieldV2(this.prototype, "selected", [tracked$1], function() {
3009
- return null;
3010
- });
3011
- }
3012
- #selected = (initializeDeferredDecorator(this, "selected"), void 0);
3013
- static {
3014
- decorateFieldV2(this.prototype, "keyboardEngaged", [tracked$1], function() {
3015
- return false;
3016
- });
3017
- }
3018
- #keyboardEngaged = (initializeDeferredDecorator(this, "keyboardEngaged"), void 0);
3019
- constructor(walk) {
3020
- this.walk = walk;
3021
- }
3022
- get currentIndex() {
3023
- let keys = this.walk.keys();
3024
- if (keys.length === 0) return 0;
3025
- let index;
3026
- if (this.selected) {
3027
- let found = keys.indexOf(this.selected.key);
3028
- index = found >= 0 ? found : this.selected.index;
3029
- } else index = this.walk.defaultIndex();
3030
- return Math.min(Math.max(index, 0), keys.length - 1);
3031
- }
3032
- static {
3033
- decorateMethodV2(this.prototype, "currentIndex", [cached$1]);
3034
- }
3035
- get isRingShown() {
3036
- return this.keyboardEngaged;
3037
- }
3038
- select(index) {
3039
- let key = this.walk.keys()[index];
3040
- if (key !== void 0) this.selected = {
3041
- key,
3042
- index
3043
- };
3044
- }
3045
- onPointerUp = () => {
3046
- this.keyboardEngaged = false;
3047
- };
3048
- onFocusIn = (event) => {
3049
- let target = event.target;
3050
- let item = target.closest("[data-nav-index]") ?? target.closest("[data-workspace-tile]")?.querySelector("[data-nav-index]");
3051
- if (!item) return;
3052
- let index = Number(item.dataset.navIndex);
3053
- if (Number.isNaN(index)) return;
3054
- if (index !== this.currentIndex || !this.selected && target !== item) this.select(index);
3055
- };
3056
- onKeydown = (keydown) => {
3057
- let event = keydown;
3058
- let container = event.currentTarget;
3059
- let count = this.walk.keys().length;
3060
- if (count === 0) return;
3061
- if (event.key === "Tab") this.keyboardEngaged = true;
3062
- if (event.target === container) {
3063
- let item = this.itemAt(container, this.currentIndex);
3064
- if (event.key.startsWith("Arrow") || event.key === "Enter" && item && !isOffScreen(item)) {
3065
- event.preventDefault();
3066
- this.showCursor(item);
3067
- item?.focus({ preventScroll: true });
3068
- }
3069
- return;
3070
- }
3071
- if (!event.target.closest("[data-nav-index]")) return;
3072
- if (!this.keyboardEngaged && event.key.startsWith("Arrow")) {
3073
- event.preventDefault();
3074
- this.showCursor(this.itemAt(container, this.currentIndex));
3075
- return;
3076
- }
3077
- switch (event.key) {
3078
- case "ArrowRight":
3079
- event.preventDefault();
3080
- this.select(Math.min(this.currentIndex + 1, count - 1));
3081
- break;
3082
- case "ArrowLeft":
3083
- event.preventDefault();
3084
- this.select(Math.max(this.currentIndex - 1, 0));
3085
- break;
3086
- case "ArrowDown":
3087
- case "ArrowUp": {
3088
- event.preventDefault();
3089
- let index = nearestNavIndexInRow(container, this.currentIndex, event.key === "ArrowDown" ? 1 : -1);
3090
- if (index !== void 0) this.select(index);
3091
- break;
3092
- }
3093
- case "Enter":
3094
- event.preventDefault();
3095
- event.stopPropagation();
3096
- this.itemAt(container, this.currentIndex)?.click();
3097
- break;
3098
- }
3099
- };
3100
- showCursor(item) {
3101
- this.keyboardEngaged = true;
3102
- item?.scrollIntoView({ block: "nearest" });
3103
- }
3104
- itemAt(container, index) {
3105
- return container.querySelector(`[data-nav-index='${index}']`);
3106
- }
3107
- };
3108
- //#endregion
3109
- //#region app/components/operator-mode/dashboard/realm-list-flyout.gts
3110
- var RealmListFlyout = class extends Component {
3111
- static {
3112
- decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
3113
- }
3114
- #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
3115
- static {
3116
- decorateFieldV2(this.prototype, "realm", [service]);
3117
- }
3118
- #realm = (initializeDeferredDecorator(this, "realm"), void 0);
3119
- get realms() {
3120
- return this.args.realmURLs.map((url) => {
3121
- let info = this.realm.info(url);
3122
- return {
3123
- url,
3124
- info,
3125
- isHosted: isHostedRealm(info),
3126
- wallpaper: wallpaperImage(info.backgroundURL)
3127
- };
3128
- });
3129
- }
3130
- static {
3131
- decorateMethodV2(this.prototype, "realms", [cached$1]);
3132
- }
3133
- async openWorkspace(url) {
3134
- this.args.close();
3135
- await this.operatorModeStateService.openWorkspace(url);
3136
- }
3137
- static {
3138
- decorateMethodV2(this.prototype, "openWorkspace", [action]);
3139
- }
3140
- static {
3141
- setComponentTemplate(templateFactory({
3142
- "id": "utJJbZtc",
3143
- "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\"]]",
3144
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/realm-list-flyout.gts",
3145
- "scope": () => [
3146
- SectionCount,
3147
- Button,
3148
- on,
3149
- fn,
3150
- css_var_default,
3151
- RealmIcon,
3152
- HostedPill
3153
- ],
3154
- "isStrictMode": true
3155
- }), this);
3156
- }
3157
- };
3158
- function realmListFlyout(title, realmURLs, emptyMessage) {
3159
- return setComponentTemplate(templateFactory({
3160
- "id": "mBa+wnpb",
3161
- "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\"],[]]",
3162
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/realm-list-flyout.gts",
3163
- "scope": () => [
3164
- RealmListFlyout,
3165
- title,
3166
- realmURLs,
3167
- emptyMessage
3168
- ],
3169
- "isStrictMode": true
3170
- }), templateOnly());
3171
- }
3172
- function recentWorkspaceCount(columns) {
3173
- return (columns ? columns * 3 : 13) - 1;
3174
- }
3175
- function sortByUpdatedAtDesc(urls, infoFor) {
3176
- let times = new Map(urls.map((url) => {
3177
- let { updatedAt } = infoFor(url);
3178
- let time = updatedAt ? new Date(updatedAt).getTime() : NaN;
3179
- return [url, Number.isNaN(time) ? -Infinity : time];
3180
- }));
3181
- return [...urls].sort((a, b) => {
3182
- let aTime = times.get(a);
3183
- let bTime = times.get(b);
3184
- return aTime === bTime ? 0 : bTime > aTime ? 1 : -1;
3185
- });
3186
- }
3187
- function gridColumnCount(grid) {
3188
- let columns = getComputedStyle(grid).gridTemplateColumns;
3189
- return columns && columns !== "none" ? columns.split(" ").length : 0;
3190
- }
3191
- //#endregion
3192
- //#region app/components/operator-mode/dashboard/index.gts
3193
- var log = logger("component:dashboard");
3194
- var SCOPE_OPTIONS = [{
3195
- value: "all",
3196
- label: "All"
3197
- }, {
3198
- value: "hosted",
3199
- label: "Hosted"
3200
- }];
3201
- var Dashboard = class extends Component {
3202
- static {
3203
- decorateFieldV2(this.prototype, "matrixService", [service]);
3204
- }
3205
- #matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
3206
- static {
3207
- decorateFieldV2(this.prototype, "network", [service]);
3208
- }
3209
- #network = (initializeDeferredDecorator(this, "network"), void 0);
3210
- static {
3211
- decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
3212
- }
3213
- #operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
3214
- static {
3215
- decorateFieldV2(this.prototype, "realmServer", [service]);
3216
- }
3217
- #realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
3218
- static {
3219
- decorateFieldV2(this.prototype, "realm", [service]);
3220
- }
3221
- #realm = (initializeDeferredDecorator(this, "realm"), void 0);
3222
- returnRealmURL = this.readReturnRealmURL();
3223
- readReturnRealmURL() {
3224
- try {
3225
- return this.operatorModeStateService.openRealmURL || void 0;
3226
- } catch {
3227
- return;
3228
- }
3229
- }
3230
- static {
3231
- decorateFieldV2(this.prototype, "hour", [tracked$1], function() {
3232
- return (/* @__PURE__ */ new Date()).getHours();
3233
- });
3234
- }
3235
- #hour = (initializeDeferredDecorator(this, "hour"), void 0);
3236
- get greeting() {
3237
- return greetingFor(this.hour, this.matrixService.profile.displayName);
3238
- }
3239
- trackHour = modifier(() => {
3240
- let timer;
3241
- let schedule = () => {
3242
- let now = /* @__PURE__ */ new Date();
3243
- let nextHour = new Date(now);
3244
- nextHour.setHours(now.getHours() + 1, 0, 0, 0);
3245
- timer = setTimeout(update, nextHour.getTime() - now.getTime());
3246
- };
3247
- let update = () => {
3248
- clearTimeout(timer);
3249
- this.hour = (/* @__PURE__ */ new Date()).getHours();
3250
- schedule();
3251
- };
3252
- let onVisibilityChange = () => {
3253
- if (document.visibilityState === "visible") update();
3254
- };
3255
- schedule();
3256
- document.addEventListener("visibilitychange", onVisibilityChange);
3257
- return () => {
3258
- clearTimeout(timer);
3259
- document.removeEventListener("visibilitychange", onVisibilityChange);
3260
- };
3261
- });
3262
- headingId = (section) => `${guidFor(this)}-${section}`;
3263
- rowListId = `${guidFor(this)}-workspace-rows`;
3264
- static {
3265
- decorateFieldV2(this.prototype, "scope", [tracked$1], function() {
3266
- return "all";
3267
- });
3268
- }
3269
- #scope = (initializeDeferredDecorator(this, "scope"), void 0);
3270
- scopeOptions = SCOPE_OPTIONS;
3271
- setScope(value) {
3272
- let option = SCOPE_OPTIONS.find((option) => option.value === value);
3273
- if (option) {
3274
- this.scope = option.value;
3275
- this.showAllWorkspaces = false;
3276
- }
3277
- }
3278
- static {
3279
- decorateMethodV2(this.prototype, "setScope", [action]);
3280
- }
3281
- static {
3282
- decorateFieldV2(this.prototype, "isArchivedExpanded", [tracked$1], function() {
3283
- return false;
3284
- });
3285
- }
3286
- #isArchivedExpanded = (initializeDeferredDecorator(this, "isArchivedExpanded"), void 0);
3287
- get archivedRealms() {
3288
- return this.realmServer.archivedRealms;
3289
- }
3290
- get unreachableRealmServers() {
3291
- return this.realmServer.unreachableRealmServers;
3292
- }
3293
- get unreachableRealmServersMessage() {
3294
- return unreachableRealmServersMessage(this.unreachableRealmServers, this.isRetryingUnreachableRealmServers);
3295
- }
3296
- get isRetryingUnreachableRealmServers() {
3297
- return this.matrixService.isRetryingUnreachableRealmServers;
3298
- }
3299
- get unreachableNoticeIcon() {
3300
- return this.isRetryingUnreachableRealmServers ? IconComponent$7 : IconComponent$8;
3301
- }
3302
- get showArchivedCount() {
3303
- return Boolean(this.loadArchivedRealmsTask.lastSuccessful) || this.archivedRealms.length > 0;
3304
- }
3305
- loadArchivedRealmsTask = buildTask(() => ({
3306
- context: this,
3307
- generator: function* () {
3308
- yield this.realmServer.fetchArchivedRealms();
3309
- }
3310
- }), null, "loadArchivedRealmsTask", "drop");
3311
- get archivedLoadFailed() {
3312
- return Boolean(this.loadArchivedRealmsTask.last?.isError);
3313
- }
3314
- setArchivedExpanded(isExpanded) {
3315
- this.isArchivedExpanded = isExpanded;
3316
- if (this.isArchivedExpanded) this.loadArchivedRealms();
3317
- }
3318
- static {
3319
- decorateMethodV2(this.prototype, "setArchivedExpanded", [action]);
3320
- }
3321
- loadArchivedRealms() {
3322
- if (!this.loadArchivedRealmsTask.lastSuccessful && !this.loadArchivedRealmsTask.isRunning) this.loadArchivedRealmsTask.perform().catch((error) => {
3323
- if (didCancel(error)) return;
3324
- log.warn(`loading archived realms failed: ${error}`);
3325
- });
3326
- }
3327
- static {
3328
- decorateMethodV2(this.prototype, "loadArchivedRealms", [action]);
3329
- }
3330
- isHosted = (url) => isHostedRealm(this.realm.info(url));
3331
- filterByScope(urls) {
3332
- return this.scope === "hosted" ? urls.filter(this.isHosted) : urls;
3333
- }
3334
- get userRealmIdentifiers() {
3335
- return this.filterByScope(this.realmServer.userRealmIdentifiers);
3336
- }
3337
- static {
3338
- decorateMethodV2(this.prototype, "userRealmIdentifiers", [cached$1]);
3339
- }
3340
- get filteredCatalogRealmIdentifiers() {
3341
- return this.filterByScope(orderedCatalogRealmURLs(this.realmServer.displayedCatalogRealmIdentifiers, this.realm.info));
3342
- }
3343
- static {
3344
- decorateMethodV2(this.prototype, "filteredCatalogRealmIdentifiers", [cached$1]);
3345
- }
3346
- get listedFavorites() {
3347
- return listedFavoriteRealmIdentifiers(this.matrixService.workspaceFavorites, this.realmServer.userRealmIdentifiers, this.realmServer.displayedCatalogRealmIdentifiers);
3348
- }
3349
- static {
3350
- decorateMethodV2(this.prototype, "listedFavorites", [cached$1]);
3351
- }
3352
- get favoriteRealmIdentifiers() {
3353
- return this.filterByScope(this.listedFavorites);
3354
- }
3355
- static {
3356
- decorateMethodV2(this.prototype, "favoriteRealmIdentifiers", [cached$1]);
3357
- }
3358
- trackFavoriteCounts = modifier((_el, [urls, _revision]) => {
3359
- this.realm.loadIndexCounts(urls);
3360
- });
3361
- get isFavoritesShown() {
3362
- return this.listedFavorites.length > 0;
3363
- }
3364
- get userWorkspacesEmptyMessage() {
3365
- if (this.scope === "hosted" && this.userRealmIdentifiers.length === 0) return "No matching results";
3366
- return null;
3367
- }
3368
- static {
3369
- decorateFieldV2(this.prototype, "recentColumns", [tracked$1], function() {
3370
- return 0;
3371
- });
3372
- }
3373
- #recentColumns = (initializeDeferredDecorator(this, "recentColumns"), void 0);
3374
- static {
3375
- decorateFieldV2(this.prototype, "rowColumns", [tracked$1], function() {
3376
- return 0;
3377
- });
3378
- }
3379
- #rowColumns = (initializeDeferredDecorator(this, "rowColumns"), void 0);
3380
- measureColumns = modifier((grid, [which]) => {
3381
- if (typeof ResizeObserver === "undefined") return;
3382
- let observer = new ResizeObserver(() => {
3383
- let columns = gridColumnCount(grid);
3384
- if (which === "recent" && columns !== this.recentColumns) this.recentColumns = columns;
3385
- else if (which === "rows" && columns !== this.rowColumns) this.rowColumns = columns;
3386
- });
3387
- observer.observe(grid);
3388
- return () => observer.disconnect();
3389
- });
3390
- get rowsPerGridRow() {
3391
- return this.rowColumns || 3;
3392
- }
3393
- get recentRealmIdentifiers() {
3394
- return sortByUpdatedAtDesc(this.userRealmIdentifiers, this.realm.info).slice(0, recentWorkspaceCount(this.recentColumns));
3395
- }
3396
- static {
3397
- decorateMethodV2(this.prototype, "recentRealmIdentifiers", [cached$1]);
3398
- }
3399
- get rowRealmIdentifiers() {
3400
- let recent = new Set(this.recentRealmIdentifiers);
3401
- return this.userRealmIdentifiers.filter((url) => !recent.has(url));
3402
- }
3403
- static {
3404
- decorateMethodV2(this.prototype, "rowRealmIdentifiers", [cached$1]);
3405
- }
3406
- static {
3407
- decorateFieldV2(this.prototype, "showAllWorkspaces", [tracked$1]);
3408
- }
3409
- #showAllWorkspaces = (initializeDeferredDecorator(this, "showAllWorkspaces"), void 0);
3410
- get isShowingAllWorkspaces() {
3411
- return this.showAllWorkspaces ?? this.isReturnRowCollapsed;
3412
- }
3413
- toggleAllWorkspaces() {
3414
- this.showAllWorkspaces = !this.isShowingAllWorkspaces;
3415
- }
3416
- static {
3417
- decorateMethodV2(this.prototype, "toggleAllWorkspaces", [action]);
3418
- }
3419
- get isReturnRowCollapsed() {
3420
- let target = this.returnRealmURL;
3421
- if (!target) return false;
3422
- return this.rowRealmIdentifiers.findIndex((url) => this.toURL(url) === target) >= this.collapsedRowCount;
3423
- }
3424
- get collapsedRowCount() {
3425
- return this.rowsPerGridRow * 10;
3426
- }
3427
- get isRowListCollapsible() {
3428
- return this.rowRealmIdentifiers.length > this.collapsedRowCount;
3429
- }
3430
- get visibleRowRealmIdentifiers() {
3431
- return this.isShowingAllWorkspaces ? this.rowRealmIdentifiers : this.rowRealmIdentifiers.slice(0, this.collapsedRowCount);
3432
- }
3433
- static {
3434
- decorateMethodV2(this.prototype, "visibleRowRealmIdentifiers", [cached$1]);
3435
- }
3436
- get hiddenRowCount() {
3437
- return this.rowRealmIdentifiers.length - this.visibleRowRealmIdentifiers.length;
3438
- }
3439
- get favoritesCount() {
3440
- return this.favoriteRealmIdentifiers.length;
3441
- }
3442
- get userWorkspacesCount() {
3443
- return this.userRealmIdentifiers.length;
3444
- }
3445
- get isAddWorkspaceShown() {
3446
- return !this.userWorkspacesEmptyMessage;
3447
- }
3448
- get renderedCatalogCount() {
3449
- return this.filteredCatalogRealmIdentifiers.length;
3450
- }
3451
- get catalogEmptyMessage() {
3452
- return this.scope === "hosted" ? "No matching results" : "No catalogs yet. Add public realms with the gear.";
3453
- }
3454
- get isCatalogShelfShown() {
3455
- return this.scope !== "hosted";
3456
- }
3457
- get addWorkspaceNavIndex() {
3458
- return this.favoritesCount;
3459
- }
3460
- get recentNavBase() {
3461
- return this.addWorkspaceNavIndex + (this.isAddWorkspaceShown ? 1 : 0);
3462
- }
3463
- get rowsNavBase() {
3464
- return this.recentNavBase + this.recentRealmIdentifiers.length;
3465
- }
3466
- get catalogNavBase() {
3467
- return this.rowsNavBase + this.visibleRowRealmIdentifiers.length;
3468
- }
3469
- get walkKeys() {
3470
- return [
3471
- ...this.favoriteRealmIdentifiers.map((url) => `desk:${url}`),
3472
- ...this.isAddWorkspaceShown ? ["new-workspace"] : [],
3473
- ...this.recentRealmIdentifiers.map((url) => `workspace:${url}`),
3474
- ...this.visibleRowRealmIdentifiers.map((url) => `workspace:${url}`),
3475
- ...this.filteredCatalogRealmIdentifiers.map((url) => `catalog:${url}`)
3476
- ];
3477
- }
3478
- static {
3479
- decorateMethodV2(this.prototype, "walkKeys", [cached$1]);
3480
- }
3481
- get returnNavIndex() {
3482
- let target = this.returnRealmURL;
3483
- if (!target) return;
3484
- let index = this.walkKeys.findIndex((key) => {
3485
- let separator = key.indexOf(":");
3486
- return separator >= 0 && this.toURL(key.slice(separator + 1)) === target;
3487
- });
3488
- return index >= 0 ? index : void 0;
3489
- }
3490
- static {
3491
- decorateMethodV2(this.prototype, "returnNavIndex", [cached$1]);
3492
- }
3493
- toURL(id) {
3494
- try {
3495
- return this.network.virtualNetwork.toURL(id).href;
3496
- } catch {
3497
- return id;
3498
- }
3499
- }
3500
- get defaultSelectedIndex() {
3501
- let returnIndex = this.returnNavIndex;
3502
- if (returnIndex !== void 0) return returnIndex;
3503
- if (this.favoritesCount > 0) return 0;
3504
- if (this.userWorkspacesCount > 0) return this.recentNavBase;
3505
- if (this.renderedCatalogCount > 0) return this.catalogNavBase;
3506
- return 0;
3507
- }
3508
- favoritesSection = {
3509
- id: "favorites",
3510
- label: "Favorites",
3511
- icon: IconComponent$17,
3512
- flyout: realmListFlyout("Favorites", () => this.favoriteRealmIdentifiers, () => "No matching results")
3513
- };
3514
- workspacesSection = {
3515
- id: "workspaces",
3516
- label: "Workspaces",
3517
- icon: IconComponent$14,
3518
- flyout: realmListFlyout("Workspaces", () => sortByUpdatedAtDesc(this.userRealmIdentifiers, this.realm.info), () => this.userWorkspacesEmptyMessage ?? "No workspaces yet. Create one from the Workspaces section.")
3519
- };
3520
- agentsSection = {
3521
- id: "agents",
3522
- label: "Agents",
3523
- icon: IconComponent$4,
3524
- flyout: AgentsFlyout
3525
- };
3526
- showAgents() {
3527
- this.args.sections.scrollTo(this.agentsSection.id);
3528
- }
3529
- static {
3530
- decorateMethodV2(this.prototype, "showAgents", [action]);
3531
- }
3532
- catalogsSection = {
3533
- id: "catalogs",
3534
- label: "Catalogs",
3535
- icon: IconComponent$3,
3536
- flyout: realmListFlyout("Catalogs", () => this.filteredCatalogRealmIdentifiers, () => this.catalogEmptyMessage)
3537
- };
3538
- cursor = new KeyboardCursor({
3539
- keys: () => this.walkKeys,
3540
- defaultIndex: () => this.defaultSelectedIndex
3541
- });
3542
- static {
3543
- setComponentTemplate(templateFactory({
3544
- "id": "GZOP4WiG",
3545
- "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 \"],[11,\"h1\"],[24,0,\"greeting\"],[24,\"data-test-dashboard-greeting\",\"\"],[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\"]]",
3546
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/index.gts",
3547
- "scope": () => [
3548
- cn_default,
3549
- on,
3550
- Spinner,
3551
- GetStarted,
3552
- Button,
3553
- SegmentedControl,
3554
- SectionHead,
3555
- IconComponent$17,
3556
- Workspace,
3557
- eq,
3558
- IconComponent$14,
3559
- IconComponent$15,
3560
- AddWorkspace,
3561
- add,
3562
- gt,
3563
- not,
3564
- Collapsible,
3565
- IconComponent$18,
3566
- ArchivedWorkspace,
3567
- CatalogSection,
3568
- IconComponent$4,
3569
- Agents
3570
- ],
3571
- "isStrictMode": true
3572
- }), this);
3573
- }
3574
- };
3575
- //#endregion
3576
- export { titleize_exports as i, ai_assistant_panel_service_exports as n, titleize as r, Dashboard as t };