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

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 (1050) 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-EsOoJpQ1.js +151 -0
  24. package/bundled-test-harness/assets/aibot-message-uGaCPn5o.js +1312 -0
  25. package/bundled-test-harness/assets/app-pIzBYfiZ.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-Dnxlbbu6.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-DJi7jMaU.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-BoUyFMEw.js +235 -0
  57. package/bundled-test-harness/assets/card-chooser-test-7ZwhxxkH.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-ByPl5n55.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-Be971b-V.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-Ci5dG5fv.js +2 -0
  74. package/bundled-test-harness/assets/choreo-D1K9RyjM.js +1031 -0
  75. package/bundled-test-harness/assets/choreo-feature-reel-test-vzmW-SFd.js +155 -0
  76. package/bundled-test-harness/assets/choreo-gallery-build-order-test-J6n0_PKm.js +436 -0
  77. package/bundled-test-harness/assets/choreo-gallery-compositor-test-DSi1N9bi.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-BIuLOZH6.js +133 -0
  80. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-ClGjpnj6.js +42 -0
  81. package/bundled-test-harness/assets/choreo-gallery-drift-test-OjxMXV0Y.js +620 -0
  82. package/bundled-test-harness/assets/choreo-gallery-escort-test-D6VL4FfT.js +187 -0
  83. package/bundled-test-harness/assets/choreo-gallery-films-test-DBcDHGx8.js +140 -0
  84. package/bundled-test-harness/assets/choreo-gallery-filter-test-BUghtJZe.js +46 -0
  85. package/bundled-test-harness/assets/choreo-gallery-fold-test-0D9-_h_I.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-CZnaxUNJ.js +321 -0
  88. package/bundled-test-harness/assets/choreo-gallery-hang-test-WFvsJ-MJ.js +426 -0
  89. package/bundled-test-harness/assets/choreo-gallery-highlight-test-Dn0hYPLC.js +60 -0
  90. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-C5WvS67s.js +370 -0
  91. package/bundled-test-harness/assets/choreo-gallery-interruption-test-CgT9RKTe.js +176 -0
  92. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-BZgqbTJd.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-Dt71t4CU.js +111 -0
  95. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-B_rDq4em.js +127 -0
  96. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-j_cZ9cAM.js +100 -0
  97. package/bundled-test-harness/assets/choreo-gallery-presentation-test-CIFKR65J.js +157 -0
  98. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BvRCiCvB.js +145 -0
  99. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-DgO2MBzU.js +89 -0
  100. package/bundled-test-harness/assets/choreo-gallery-sheet-test-BntUKT_P.js +48 -0
  101. package/bundled-test-harness/assets/choreo-gallery-site-test-CvSE6Jyq.js +237 -0
  102. package/bundled-test-harness/assets/choreo-gallery-stage-Dj6tFzon.js +256 -0
  103. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-CkDrAPA8.js +102 -0
  104. package/bundled-test-harness/assets/choreo-gallery-stages-test-DHUmzoRW.js +35 -0
  105. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-BZ9-cDFh.js +138 -0
  106. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-7uP6mZpo.js +144 -0
  107. package/bundled-test-harness/assets/choreo-gallery-theater-test-DgEue9FD.js +252 -0
  108. package/bundled-test-harness/assets/choreo-gallery-tuning-test-CfPx5iCp.js +95 -0
  109. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-o9T2EFKq.js +88 -0
  110. package/bundled-test-harness/assets/choreo-gallery-wires-test-73JLkxn6.js +148 -0
  111. package/bundled-test-harness/assets/client-telemetry-test-DFM4mML2.js +340 -0
  112. package/bundled-test-harness/assets/clip-CsRtHZiN.js +92 -0
  113. package/bundled-test-harness/assets/clip-CycGr0Lf.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-D9pbJMK8.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-BSqAGv4g.js +150 -0
  123. package/bundled-test-harness/assets/computed-test-DtyZGgdc.js +1320 -0
  124. package/bundled-test-harness/assets/container-CEslVSTe.js +10884 -0
  125. package/bundled-test-harness/assets/content-preview-components-test-BztI4fz-.js +462 -0
  126. package/bundled-test-harness/assets/copy-and-edit-test-Cqw7kcur.js +292 -0
  127. package/bundled-test-harness/assets/copy-card-test-D5m3eVEH.js +218 -0
  128. package/bundled-test-harness/assets/copy-file-to-realm-test-FPY-6Ddm.js +148 -0
  129. package/bundled-test-harness/assets/copy-source-test-9pJD-qey.js +56 -0
  130. package/bundled-test-harness/assets/create-file-test-DjMf88u_.js +1086 -0
  131. package/bundled-test-harness/assets/create-file-test-XbgOqg38.js +464 -0
  132. package/bundled-test-harness/assets/create-listing-modal-test-DyGlGMWu.js +273 -0
  133. package/bundled-test-harness/assets/create-listing-pr-request-test-CBtIV0Z8.js +117 -0
  134. package/bundled-test-harness/assets/create-spec-test-4xR0gM7E.js +256 -0
  135. package/bundled-test-harness/assets/create-submission-workflow-test-DQpWrpGT.js +132 -0
  136. package/bundled-test-harness/assets/create-workspace-test-BQAudgpS.js +104 -0
  137. package/bundled-test-harness/assets/credential-fields-test-DXKBdbZD.js +200 -0
  138. package/bundled-test-harness/assets/csv-file-def-test-Cnp4y834.js +102 -0
  139. package/bundled-test-harness/assets/dashboard-CmuOhIYC.js +3628 -0
  140. package/bundled-test-harness/assets/dashboard-CzN49x74.css +2400 -0
  141. package/bundled-test-harness/assets/dashboard-add-workspace-test-T32hWB-g.js +50 -0
  142. package/bundled-test-harness/assets/dashboard-agents-test-BN5maCgQ.js +334 -0
  143. package/bundled-test-harness/assets/dashboard-archive-test-BzwUte_Z.js +128 -0
  144. package/bundled-test-harness/assets/dashboard-delete-test-D2Gcp81V.js +163 -0
  145. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-BgKNIr35.js +71 -0
  146. package/bundled-test-harness/assets/dashboard-duplicate-test-D7JEWylc.js +222 -0
  147. package/bundled-test-harness/assets/dashboard-get-started-test-DOGPzGoA.js +374 -0
  148. package/bundled-test-harness/assets/dashboard-ir2bakJS.js +142 -0
  149. package/bundled-test-harness/assets/dashboard-pinned-cards-test-Bn_P9xJU.js +220 -0
  150. package/bundled-test-harness/assets/dashboard-publish-test-64sGQ0nG.js +70 -0
  151. package/bundled-test-harness/assets/dashboard-reindex-test-DJjYq1ct.js +115 -0
  152. package/bundled-test-harness/assets/dashboard-section-rail-test-ZkAhWu5V.js +169 -0
  153. package/bundled-test-harness/assets/dashboard-state-test-BbkpPB5L.js +162 -0
  154. package/bundled-test-harness/assets/dashboard-test-CBLdPrSt.js +545 -0
  155. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DFT3R1Zx.js +62 -0
  156. package/bundled-test-harness/assets/dashboard-workspace-test-DqBdCFo2.js +537 -0
  157. package/bundled-test-harness/assets/dashboard-workspaces-section-test-CH1HDfxR.js +410 -0
  158. package/bundled-test-harness/assets/data-file-def-preview-test-CNsZwQEJ.js +155 -0
  159. package/bundled-test-harness/assets/date-time-fields-test-CEFaZTnF.js +359 -0
  160. package/bundled-test-harness/assets/debug-message-test-0hv0RwE_.js +117 -0
  161. package/bundled-test-harness/assets/declared-captures-test-C-0yPRU7.js +879 -0
  162. package/bundled-test-harness/assets/delete-workspace-test-CZOwGy78.js +102 -0
  163. package/bundled-test-harness/assets/diffing-test-BEKI905O.js +210 -0
  164. package/bundled-test-harness/assets/download-file-to-realm-test-C1kAGDll.js +119 -0
  165. package/bundled-test-harness/assets/editor-test-C9x5ZY6g.js +688 -0
  166. package/bundled-test-harness/assets/edits-D76-aanh.js +651 -0
  167. package/bundled-test-harness/assets/email-field-test-LGkrB_2B.js +75 -0
  168. package/bundled-test-harness/assets/enum-field-test-CPyV1J-m.js +935 -0
  169. package/bundled-test-harness/assets/error-display-test-bWuUtfIG.js +343 -0
  170. package/bundled-test-harness/assets/evaluate-module-test-CbS5h8t3.js +91 -0
  171. package/bundled-test-harness/assets/execute-atomic-operations-test-B4Kfco0k.js +113 -0
  172. package/bundled-test-harness/assets/externals-CDQm-Lm7.js +4393 -0
  173. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DQSiTzvj.js +207 -0
  174. package/bundled-test-harness/assets/fallback-banner-test-CJFKLpOy.js +225 -0
  175. package/bundled-test-harness/assets/fallback-banner-test-DQkrFE4-.js +53 -0
  176. package/bundled-test-harness/assets/fallback-models-test-CiWfmxaB.js +161 -0
  177. package/bundled-test-harness/assets/fetch-card-json-test-DULUqUEu.js +61 -0
  178. package/bundled-test-harness/assets/field-configuration-test-BXZq28xa.js +551 -0
  179. package/bundled-test-harness/assets/field-markdown-domain-test-DdXCifs6.js +616 -0
  180. package/bundled-test-harness/assets/field-markdown-oversize-test-DouPPTHX.js +88 -0
  181. package/bundled-test-harness/assets/field-markdown-primitives-test-DSRGJeyl.js +365 -0
  182. package/bundled-test-harness/assets/field-markdown-specialized-test-DlTYLl_s.js +534 -0
  183. package/bundled-test-harness/assets/field-playground-test-NhS4VvoN.js +894 -0
  184. package/bundled-test-harness/assets/field-support-predicates-test-DWpyT1Qf.js +167 -0
  185. package/bundled-test-harness/assets/file-attachment-test-m72-VerW.js +796 -0
  186. package/bundled-test-harness/assets/file-chooser-panel-test-DuAqD9bn.js +153 -0
  187. package/bundled-test-harness/assets/file-chooser-test-CjaXXwpT.js +504 -0
  188. package/bundled-test-harness/assets/file-def-format-templates-test-BDs4OmHq.js +380 -0
  189. package/bundled-test-harness/assets/file-def-live-reload-test-BqTdnq-W.js +124 -0
  190. package/bundled-test-harness/assets/file-def-menu-items-test-DqdINXsD.js +138 -0
  191. package/bundled-test-harness/assets/file-def-navigation-test-BPGr0SQy.js +109 -0
  192. package/bundled-test-harness/assets/file-def-serialization-test-CvjW-FlC.js +89 -0
  193. package/bundled-test-harness/assets/file-def-test-C-Yv_NjS.js +216 -0
  194. package/bundled-test-harness/assets/file-preview-live-reload-test-MzwGwasU.js +310 -0
  195. package/bundled-test-harness/assets/file-resource-primitives-test-D3GmfqNs.js +255 -0
  196. package/bundled-test-harness/assets/file-tree-from-index-test-CfldnUgm.js +96 -0
  197. package/bundled-test-harness/assets/file-tree-test--0ZCPRe9.js +851 -0
  198. package/bundled-test-harness/assets/file-view-model-test-BDIAeBV8.js +346 -0
  199. package/bundled-test-harness/assets/filedef-export-shape-test-B2tgU404.js +61 -0
  200. package/bundled-test-harness/assets/film-D1E-odYG.js +13 -0
  201. package/bundled-test-harness/assets/film-D25Y0ED6.js +2 -0
  202. package/bundled-test-harness/assets/film-D97U-ydx.js +4074 -0
  203. package/bundled-test-harness/assets/flac-audio-def-test-ByoXMoQ1.js +143 -0
  204. package/bundled-test-harness/assets/font-metadata-extractor-test-hawLTDTG.js +415 -0
  205. package/bundled-test-harness/assets/formatted-aibot-message-test-Bdx_-Ktn.js +109 -0
  206. package/bundled-test-harness/assets/formatted-user-message-test-CodbrU3t.js +43 -0
  207. package/bundled-test-harness/assets/freestyle-test-faQhSciz.js +17 -0
  208. package/bundled-test-harness/assets/full-reindex-realm-test-CE5RJTIC.js +101 -0
  209. package/bundled-test-harness/assets/garbage-collection-test-v-3sev77.js +403 -0
  210. package/bundled-test-harness/assets/general-test-DQuxDvXK.js +923 -0
  211. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-CucWyrkH.js +65 -0
  212. package/bundled-test-harness/assets/generic-file-def-preview-test-_EDRsebi.js +71 -0
  213. package/bundled-test-harness/assets/get-available-realm-identifiers-test-CV023yek.js +47 -0
  214. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test--DOu3DyV.js +47 -0
  215. package/bundled-test-harness/assets/get-default-writable-realm-test-Bic8jl6R.js +54 -0
  216. package/bundled-test-harness/assets/get-published-realms-test-DrA5YcFN.js +71 -0
  217. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-jfU6SIWn.js +54 -0
  218. package/bundled-test-harness/assets/get-relationship-membership-state-test-Ccy2Z7MN.js +1308 -0
  219. package/bundled-test-harness/assets/get-user-system-card-test-Bmq2lmWv.js +67 -0
  220. package/bundled-test-harness/assets/gif-image-def-test-N1mMQC-X.js +188 -0
  221. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-DzPKH76g.js +160 -0
  222. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-D9mlcQuN.js +74 -0
  223. package/bundled-test-harness/assets/gts-file-def-test-BL1jpQ9J.js +100 -0
  224. package/bundled-test-harness/assets/head-format-preview-test-BVCaPQqc.js +158 -0
  225. package/bundled-test-harness/assets/helpers-Ds68JxHe.js +5 -0
  226. package/bundled-test-harness/assets/host-mode-service-B4bisRdR.js +262 -0
  227. package/bundled-test-harness/assets/host-mode-test-BmkN2PCJ.js +831 -0
  228. package/bundled-test-harness/assets/host-submode-test-C6SxQ796.js +1392 -0
  229. package/bundled-test-harness/assets/html-component-test-CNQ9wF0Q.js +65 -0
  230. package/bundled-test-harness/assets/html-def-test-BcaCVVQq.js +160 -0
  231. package/bundled-test-harness/assets/html-meta-extractor-test-BU1hjkTp.js +60 -0
  232. package/bundled-test-harness/assets/hydratable-card-test-CX6MWiti.js +426 -0
  233. package/bundled-test-harness/assets/icon-button-C1zH38Nc.js +67 -0
  234. package/bundled-test-harness/assets/image-metadata-extractor-test-CakSBPZ_.js +1109 -0
  235. package/bundled-test-harness/assets/index-changes-test-D8RtgfyG.js +367 -0
  236. package/bundled-test-harness/assets/index-query-engine-test-BOvxkx07.js +2593 -0
  237. package/bundled-test-harness/assets/index-writer-test-B_bR2fjw.js +3040 -0
  238. package/bundled-test-harness/assets/inspector-test-BwPXJj1S.js +2058 -0
  239. package/bundled-test-harness/assets/instance-filter-matcher-test-COAlkUed.js +788 -0
  240. package/bundled-test-harness/assets/instantiate-card-test-BVQhZjpq.js +164 -0
  241. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DzQLG41H.js +475 -0
  242. package/bundled-test-harness/assets/interact-submode-setup-C5bKXq73.js +566 -0
  243. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-Cd3dpjhB.js +99 -0
  244. package/bundled-test-harness/assets/invite-user-to-room-test-Brabz1tt.js +142 -0
  245. package/bundled-test-harness/assets/invoke-card-operation-test-C1Q1FUf4.js +333 -0
  246. package/bundled-test-harness/assets/isolated-render-test-BLJfS7BU.js +51 -0
  247. package/bundled-test-harness/assets/job-scoped-doc-cache-test-Bgv5woaB.js +181 -0
  248. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C_bB6KpR.js +103 -0
  249. package/bundled-test-harness/assets/jpg-image-def-test-gdLIKocD.js +697 -0
  250. package/bundled-test-harness/assets/json-file-def-test-CPYMRBY-.js +95 -0
  251. package/bundled-test-harness/assets/key-notices-badge-test-DemslfLw.js +155 -0
  252. package/bundled-test-harness/assets/key-readiness-test-5tq5JycL.js +190 -0
  253. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-BbhDZ2PH.js +398 -0
  254. package/bundled-test-harness/assets/linksto-error-sentinel-test-C2t7fFPi.js +238 -0
  255. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test--U_UvUty.js +354 -0
  256. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-Dj3Xy0ZF.js +303 -0
  257. package/bundled-test-harness/assets/linksto-sentinel-reload-test-D0dK4Jjs.js +197 -0
  258. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test---IYiXok.js +260 -0
  259. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CT04MhES.js +196 -0
  260. package/bundled-test-harness/assets/lint-and-fix-test-aadgx7rX.js +51 -0
  261. package/bundled-test-harness/assets/live-test-BGij_vuc.js +100 -0
  262. package/bundled-test-harness/assets/live-test-CppvValf.js +2 -0
  263. package/bundled-test-harness/assets/load-default-skills-test-Cp2m_ebp.js +74 -0
  264. package/bundled-test-harness/assets/loader-parallel-prefetch-test-vU_26Jqu.js +257 -0
  265. package/bundled-test-harness/assets/loader-test-CTaw8K_B.js +482 -0
  266. package/bundled-test-harness/assets/loading-test-DGGt4qZZ.js +63 -0
  267. package/bundled-test-harness/assets/m4a-audio-def-test-DAiReOXH.js +190 -0
  268. package/bundled-test-harness/assets/main-DUKPWRts.js +5 -0
  269. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIXq9FqR.js +470 -0
  270. package/bundled-test-harness/assets/markdown-embed-chooser-test-zFGh9WfP.js +334 -0
  271. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-Byn_WFwY.js +447 -0
  272. package/bundled-test-harness/assets/markdown-embed-preview-test-Y3iFMttg.js +368 -0
  273. package/bundled-test-harness/assets/markdown-fallback-test-Br1TPkLZ.js +316 -0
  274. package/bundled-test-harness/assets/markdown-file-def-test-Crm2MAnq.js +380 -0
  275. package/bundled-test-harness/assets/markdown-helpers-test-CZ9Vvywc.js +188 -0
  276. package/bundled-test-harness/assets/markdown-highlighting-test-CFMkoVDl.js +244 -0
  277. package/bundled-test-harness/assets/markdown-preview-Df5fp1SY.js +72 -0
  278. package/bundled-test-harness/assets/markdown-preview-test-DDaPzsVs.js +238 -0
  279. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-aH6HQly1.js +146 -0
  280. package/bundled-test-harness/assets/markdown-skill-search-test-CiNLQs-5.js +80 -0
  281. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-DaA8w1Jj.js +63 -0
  282. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-21GIlf55.js +300 -0
  283. package/bundled-test-harness/assets/matrix-service-personal-realm-test-jn9DUENm.js +125 -0
  284. package/bundled-test-harness/assets/matrix-service-realm-servers-test-eNZVJakl.js +55 -0
  285. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-Cabm8_dY.js +132 -0
  286. package/bundled-test-harness/assets/matrix-service-relogin-test-C77EFgjc.js +59 -0
  287. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-BgM0fPiO.js +35 -0
  288. package/bundled-test-harness/assets/menu-Cl50TSFe.js +3561 -0
  289. package/bundled-test-harness/assets/message-service-subscription-test-CfEqH2jP.js +110 -0
  290. package/bundled-test-harness/assets/message-service-test-DsTzH1In.js +144 -0
  291. package/bundled-test-harness/assets/message-tool-test-C5xVfTtj.js +33 -0
  292. package/bundled-test-harness/assets/midi-audio-def-test-goLRCNCZ.js +182 -0
  293. package/bundled-test-harness/assets/migrate-skill-test-yPCbVfxG.js +161 -0
  294. package/bundled-test-harness/assets/mini-YXjrY_tH.js +1404 -0
  295. package/bundled-test-harness/assets/mini-card-chooser-test-DrllikHB.js +272 -0
  296. package/bundled-test-harness/assets/mini-file-chooser-test-BfqayhmI.js +201 -0
  297. package/bundled-test-harness/assets/mock-matrix-C7BrPS6S.js +2 -0
  298. package/bundled-test-harness/assets/mock-matrix-FjsXmU7-.js +15107 -0
  299. package/bundled-test-harness/assets/modal-BgaZavcs.js +322 -0
  300. package/bundled-test-harness/assets/model-cost-tier-test-CZlu1zww.js +174 -0
  301. package/bundled-test-harness/assets/model-file-extract-test-CjEBupY5.js +206 -0
  302. package/bundled-test-harness/assets/module-transpile-cache-test-XW6DDsmz.js +67 -0
  303. package/bundled-test-harness/assets/monaco-test-DkoRuFiQ.js +100 -0
  304. package/bundled-test-harness/assets/mp3-audio-def-test-v369NNsQ.js +133 -0
  305. package/bundled-test-harness/assets/multiple-stacks-test-CJpYPWdM.js +208 -0
  306. package/bundled-test-harness/assets/nested-query-field-render-test-CfDrBcUN.js +249 -0
  307. package/bundled-test-harness/assets/no-stacks-test-MmsJeLpz.js +48 -0
  308. package/bundled-test-harness/assets/number-field-test-A7B2r0M5.js +184 -0
  309. package/bundled-test-harness/assets/office-file-def-test-BNRvFmCB.js +263 -0
  310. package/bundled-test-harness/assets/office-metadata-extractor-test-zlDoEIEp.js +218 -0
  311. package/bundled-test-harness/assets/office-poster-capture-test-DdFEaOxR.js +203 -0
  312. package/bundled-test-harness/assets/ogg-audio-def-test-kk91BzQY.js +196 -0
  313. package/bundled-test-harness/assets/open-create-listing-modal-test-D1Dl1pov.js +131 -0
  314. package/bundled-test-harness/assets/open-image-in-new-tab-test-DyCmdMyO.js +52 -0
  315. package/bundled-test-harness/assets/open-secure-window-test-dz1vPudF.js +253 -0
  316. package/bundled-test-harness/assets/open-workspace-test-BvTcskzP.js +46 -0
  317. package/bundled-test-harness/assets/operation-lowering-test-CKkamOQt.js +2957 -0
  318. package/bundled-test-harness/assets/operations-invocation-test-BMj42rQe.js +523 -0
  319. package/bundled-test-harness/assets/operations-optimistic-test-KJLyzT8v.js +203 -0
  320. package/bundled-test-harness/assets/operations-query-test-J3HcnaoK.js +459 -0
  321. package/bundled-test-harness/assets/operations-store-reconciliation-test-CkbGBMBQ.js +406 -0
  322. package/bundled-test-harness/assets/operations-test-C7zXXpRW.js +2518 -0
  323. package/bundled-test-harness/assets/operator-mode-acceptance-test-BPolI_RD.js +1195 -0
  324. package/bundled-test-harness/assets/operator-mode-card-chooser-test-CQ1v8med.js +1036 -0
  325. package/bundled-test-harness/assets/operator-mode-links-test-BMHEauS3.js +797 -0
  326. package/bundled-test-harness/assets/operator-mode-test-blL_JVF8.js +696 -0
  327. package/bundled-test-harness/assets/operator-mode-ui-test-BG6I7-Hc.js +1045 -0
  328. package/bundled-test-harness/assets/overlay-D2rQi8lJ.js +427 -0
  329. package/bundled-test-harness/assets/overlay-menu-items-test-D-zmRQQ0.js +331 -0
  330. package/bundled-test-harness/assets/overlays-COinwHCP.js +2 -0
  331. package/bundled-test-harness/assets/overlays-detached-element-test-C73nMXes.js +56 -0
  332. package/bundled-test-harness/assets/overlays-nTqcu69K.js +75 -0
  333. package/bundled-test-harness/assets/panel-D9SEMehG.js +15124 -0
  334. package/bundled-test-harness/assets/past-sessions-test-De9N4wVX.js +321 -0
  335. package/bundled-test-harness/assets/patch-fields-test-Bp2IE0Jw.js +1014 -0
  336. package/bundled-test-harness/assets/patch-instance-test-DssuRGKP.js +348 -0
  337. package/bundled-test-harness/assets/pdf-file-def-test-Barj9ffD.js +111 -0
  338. package/bundled-test-harness/assets/pdf-metadata-extractor-test-B7KnXcIm.js +130 -0
  339. package/bundled-test-harness/assets/permission-checking-realm-test-OBzvhDB_.js +306 -0
  340. package/bundled-test-harness/assets/persist-module-inspector-view-test-BIdbkdPr.js +60 -0
  341. package/bundled-test-harness/assets/persist-scroll-position-test-Bhb7wJiy.js +254 -0
  342. package/bundled-test-harness/assets/phone-number-field-test-C2yuCrXY.js +73 -0
  343. package/bundled-test-harness/assets/pill-menu-test-BIp91YXi.js +60 -0
  344. package/bundled-test-harness/assets/plate-DAr_pvwC.js +41 -0
  345. package/bundled-test-harness/assets/plate-DeoQd99m.js +2 -0
  346. package/bundled-test-harness/assets/player-BvXGBItd.js +2 -0
  347. package/bundled-test-harness/assets/player-CAVQUyKk.js +82 -0
  348. package/bundled-test-harness/assets/playground-B02e8uqB.js +58 -0
  349. package/bundled-test-harness/assets/plural-field-components-test-C1acuN-A.js +198 -0
  350. package/bundled-test-harness/assets/png-image-def-test-B9QeVo1f.js +266 -0
  351. package/bundled-test-harness/assets/policy-audit-confirmation-test-CeVquvc_.js +155 -0
  352. package/bundled-test-harness/assets/policy-scoped-search-test-SFPiIqR3.js +339 -0
  353. package/bundled-test-harness/assets/prerender-file-extract-test-HSJKAHyO.js +346 -0
  354. package/bundled-test-harness/assets/prerender-html-test-BTAcFCme.js +670 -0
  355. package/bundled-test-harness/assets/prerender-meta-test-Csyz2b21.js +614 -0
  356. package/bundled-test-harness/assets/prerender-module-test-DpTYAbmI.js +409 -0
  357. package/bundled-test-harness/assets/prerender-persistence-block-test-BhIt-7kK.js +124 -0
  358. package/bundled-test-harness/assets/prerender-pre-model-error-test-DxKPQKqx.js +61 -0
  359. package/bundled-test-harness/assets/prerender-serialize-cycle-test-C8V5YWQO.js +134 -0
  360. package/bundled-test-harness/assets/prerendered-html-read-test-Cq7JVGwg.js +191 -0
  361. package/bundled-test-harness/assets/pretui-components-test-Ducr9fLT.css +743 -0
  362. package/bundled-test-harness/assets/pretui-components-test-Hs0uyIUQ.js +992 -0
  363. package/bundled-test-harness/assets/pretui-primitives-CRs8NRm0.js +69 -0
  364. package/bundled-test-harness/assets/preview-format-test-cCqLrfdY.js +103 -0
  365. package/bundled-test-harness/assets/preview-test-BMqJSoR1.js +474 -0
  366. package/bundled-test-harness/assets/process-card-test-578tfDvr.js +94 -0
  367. package/bundled-test-harness/assets/profile-settings-modal-CVnNl7Yu.js +990 -0
  368. package/bundled-test-harness/assets/publish-realm-COoeWexp.js +82 -0
  369. package/bundled-test-harness/assets/publish-realm-test-a5nkx0Ov.js +210 -0
  370. package/bundled-test-harness/assets/query-field-barrier-test-qX3xVPfk.js +113 -0
  371. package/bundled-test-harness/assets/query-field-error-sentinel-test-V6JDPFLX.js +201 -0
  372. package/bundled-test-harness/assets/query-field-membership-status-test-CK7eDf-K.js +323 -0
  373. package/bundled-test-harness/assets/query-field-page-optin-test-B5YBHUvU.js +126 -0
  374. package/bundled-test-harness/assets/query-field-schema-test-D4SjOGlK.js +231 -0
  375. package/bundled-test-harness/assets/query-field-search-throttle-test-BVkm1-D8.js +154 -0
  376. package/bundled-test-harness/assets/query-field-stale-prerender-test-9g7hcD91.js +152 -0
  377. package/bundled-test-harness/assets/query-fields-test-CQYqhzpN.js +535 -0
  378. package/bundled-test-harness/assets/quick-look-test-icQwb1NJ.js +139 -0
  379. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D0mJorwH.js +91 -0
  380. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-B_F_2GEB.js +45 -0
  381. package/bundled-test-harness/assets/read-source-test-BgJV4B4F.js +67 -0
  382. package/bundled-test-harness/assets/read-text-file-test-DaeLzg4u.js +124 -0
  383. package/bundled-test-harness/assets/realm-C_a9su1j.js +2858 -0
  384. package/bundled-test-harness/assets/realm-api-keys-D5USFOoS.js +2 -0
  385. package/bundled-test-harness/assets/realm-api-keys-m_VOcixC.js +578 -0
  386. package/bundled-test-harness/assets/realm-api-keys-test-C_uZnTmq.js +588 -0
  387. package/bundled-test-harness/assets/realm-api-keys-test-gtJ8XZCE.js +109 -0
  388. package/bundled-test-harness/assets/realm-config-m5eccPW8.js +833 -0
  389. package/bundled-test-harness/assets/realm-config-policy-standing-test-CXJ4ZMde.js +290 -0
  390. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-DoEunShH.js +274 -0
  391. package/bundled-test-harness/assets/realm-config-settings-test-BYi9i4O6.js +187 -0
  392. package/bundled-test-harness/assets/realm-field-test-B_PUoqnk.js +100 -0
  393. package/bundled-test-harness/assets/realm-indexing-test-8iLjeV_e.js +4380 -0
  394. package/bundled-test-harness/assets/realm-policy-fitted-test-Bptvra0U.js +206 -0
  395. package/bundled-test-harness/assets/realm-policy-test-DwG0qqXE.js +1141 -0
  396. package/bundled-test-harness/assets/realm-querying-test-Dvw26A6Q.js +1067 -0
  397. package/bundled-test-harness/assets/realm-server-form-agnostic-test-DrXQH0UP.js +96 -0
  398. package/bundled-test-harness/assets/realm-server-subscriber-test-Dkj23vQK.js +46 -0
  399. package/bundled-test-harness/assets/realm-service-info-test-CdRlDhj-.js +67 -0
  400. package/bundled-test-harness/assets/realm-test-DGYN48Qx.js +2364 -0
  401. package/bundled-test-harness/assets/realm-token-refresh-test-CEWATL9h.js +153 -0
  402. package/bundled-test-harness/assets/realm-url-tooltip-test-8ZjTNPuy.js +78 -0
  403. package/bundled-test-harness/assets/reasoning-test-WUx-4agu.js +221 -0
  404. package/bundled-test-harness/assets/recent-files-test-Dc6L6Dm4.js +450 -0
  405. package/bundled-test-harness/assets/reindex-realm-test-CFRSt39u.js +117 -0
  406. package/bundled-test-harness/assets/relationship-loading-state-test-FKbtOFUr.js +290 -0
  407. package/bundled-test-harness/assets/remix-card-test-CKGC_Sgq.js +58 -0
  408. package/bundled-test-harness/assets/rendered-markdown-B_jWmDrK.js +292 -0
  409. package/bundled-test-harness/assets/rendered-markdown-test-sdWhU0NA.js +587 -0
  410. package/bundled-test-harness/assets/resident-instance-reuse-test-BjdhE6CM.js +82 -0
  411. package/bundled-test-harness/assets/result-tile-o6dtjgX4.js +144 -0
  412. package/bundled-test-harness/assets/rich-markdown-field-test-VXr6l20h.js +1647 -0
  413. package/bundled-test-harness/assets/room-message-test-BYNhZ39n.js +484 -0
  414. package/bundled-test-harness/assets/run-FzaqmBEl.js +3959 -0
  415. package/bundled-test-harness/assets/run-realm-code-DsBUf1si.js +2964 -0
  416. package/bundled-test-harness/assets/run-realm-code-test-cS0DzaKo.js +3844 -0
  417. package/bundled-test-harness/assets/sanitize-module-list-test-CvuOOiUY.js +85 -0
  418. package/bundled-test-harness/assets/save-card-skip-index-wait-test-fpJ1eq32.js +89 -0
  419. package/bundled-test-harness/assets/schema-editor-test-NkKjCgyf.js +785 -0
  420. package/bundled-test-harness/assets/schema-generation-test-Dmg3lWl7.js +28 -0
  421. package/bundled-test-harness/assets/scrolling-test-Dd4gv_fj.js +412 -0
  422. package/bundled-test-harness/assets/search-adorn-test-CZebk7_y.js +136 -0
  423. package/bundled-test-harness/assets/search-and-choose-test-Bd4NZUup.js +154 -0
  424. package/bundled-test-harness/assets/search-correlation-id-test-DXKlEO55.js +139 -0
  425. package/bundled-test-harness/assets/search-entries-result-test-QQawA8Fm.js +234 -0
  426. package/bundled-test-harness/assets/search-entries-test-3DlqGPQq.js +1486 -0
  427. package/bundled-test-harness/assets/search-entries-tool-test-D1TvDE9D.js +504 -0
  428. package/bundled-test-harness/assets/search-google-images-test-DqsoQGr1.js +166 -0
  429. package/bundled-test-harness/assets/search-results-DGrNaPxh.js +266 -0
  430. package/bundled-test-harness/assets/search-results-test-CqVHYNRt.js +578 -0
  431. package/bundled-test-harness/assets/search-selection-menu-test-D6bIjKiH.js +108 -0
  432. package/bundled-test-harness/assets/search-sheet-files-test-Bf37TQXo.js +126 -0
  433. package/bundled-test-harness/assets/search-sheet-persistence-test-CV4_XdxR.js +131 -0
  434. package/bundled-test-harness/assets/search-test-Dlb-wg3a.js +2249 -0
  435. package/bundled-test-harness/assets/search-tool-test-BJLgVMoL.js +156 -0
  436. package/bundled-test-harness/assets/searchable-option-test-eJaIPH_L.js +322 -0
  437. package/bundled-test-harness/assets/searchable-search-doc-test-yH9fLGNS.js +1271 -0
  438. package/bundled-test-harness/assets/section-rail-CNFCebtT.js +113 -0
  439. package/bundled-test-harness/assets/section-rail-test-KNJAWWl6.js +256 -0
  440. package/bundled-test-harness/assets/secure-sign-in-Dyljp0Th.js +174 -0
  441. package/bundled-test-harness/assets/secure-sign-in-test-QnqNuTP3.js +373 -0
  442. package/bundled-test-harness/assets/segmented-control-DxJdoJ4Z.js +173 -0
  443. package/bundled-test-harness/assets/select-BiQTg2ts.js +175 -0
  444. package/bundled-test-harness/assets/send-ai-assistant-message-test-CAn7M2dZ.js +52 -0
  445. package/bundled-test-harness/assets/send-bot-trigger-event-test-qBu5E_jy.js +56 -0
  446. package/bundled-test-harness/assets/send-request-via-proxy-test-CLuwLBq_.js +380 -0
  447. package/bundled-test-harness/assets/sending-test-Dt9Dh2wW.js +659 -0
  448. package/bundled-test-harness/assets/serialization-rri-form-audit-test-hMJukiKt.js +136 -0
  449. package/bundled-test-harness/assets/serialization-test-W5e3wKbz.js +8758 -0
  450. package/bundled-test-harness/assets/set-user-system-card-test-CjgWLkNV.js +59 -0
  451. package/bundled-test-harness/assets/setup-CssMNvui.js +772 -0
  452. package/bundled-test-harness/assets/setup-D8YXvK-p.js +2 -0
  453. package/bundled-test-harness/assets/shared-link-target-reuse-test-D42UO8DC.js +207 -0
  454. package/bundled-test-harness/assets/show-card-test-CHEaS514.js +365 -0
  455. package/bundled-test-harness/assets/signed-capture-link-test-BgEu0F-S.js +132 -0
  456. package/bundled-test-harness/assets/single-stack-test-DYcu_v7Z.js +652 -0
  457. package/bundled-test-harness/assets/skills-test-BP8QNesE.js +648 -0
  458. package/bundled-test-harness/assets/skip-boot-index-guard-test-BzRIncDN.js +46 -0
  459. package/bundled-test-harness/assets/spec-test-BYvFR6Xb.js +1077 -0
  460. package/bundled-test-harness/assets/spinner-Bx9x55NA.js +49 -0
  461. package/bundled-test-harness/assets/src-LqENIikj.js +5 -0
  462. package/bundled-test-harness/assets/src-a4d10Hra.js +216 -0
  463. package/bundled-test-harness/assets/stick-to-bottom-resize-test-BBLiCR3X.js +56 -0
  464. package/bundled-test-harness/assets/store-add-test-D_9IHQjZ.js +50 -0
  465. package/bundled-test-harness/assets/store-module-rebuild-test-BRGZoLRV.js +454 -0
  466. package/bundled-test-harness/assets/store-search-test-3G8JHuj2.js +175 -0
  467. package/bundled-test-harness/assets/store-test-Dd4WQp7L.js +3672 -0
  468. package/bundled-test-harness/assets/structured-theme-test-11TNsgUW.js +377 -0
  469. package/bundled-test-harness/assets/summarize-session-test-CwzD_ZbD.js +172 -0
  470. package/bundled-test-harness/assets/svg-image-def-test-zV6aMK9q.js +167 -0
  471. package/bundled-test-harness/assets/switch-submode-test-DQU2cP5_.js +168 -0
  472. package/bundled-test-harness/assets/sync-openrouter-models-test-xrXVaC2H.js +97 -0
  473. package/bundled-test-harness/assets/test-support-QTh6wGxu.js +3 -0
  474. package/bundled-test-harness/assets/test-support-Tr-PYFgc.js +99 -0
  475. package/bundled-test-harness/assets/tests-zLlwPutr.js +3598 -0
  476. package/bundled-test-harness/assets/text-file-def-test-Cyq78UFY.js +94 -0
  477. package/bundled-test-harness/assets/text-input-validator-test-C1uDVZU7.js +156 -0
  478. package/bundled-test-harness/assets/text-suggestion-test-C4XAqWqY.js +340 -0
  479. package/bundled-test-harness/assets/theme-card-test-dVNz4tgU.js +621 -0
  480. package/bundled-test-harness/assets/theme-dashboard-nav-test-DYSn5pqo.js +196 -0
  481. package/bundled-test-harness/assets/theme-scheme-island-test-C1WpkfEP.js +264 -0
  482. package/bundled-test-harness/assets/theme-scoped-css-parity-test-BVluppsE.js +176 -0
  483. package/bundled-test-harness/assets/titles-0a1luoTq.js +52 -0
  484. package/bundled-test-harness/assets/titles-DKHNLVwC.js +2 -0
  485. package/bundled-test-harness/assets/to-device-streaming-test-3A6jI0_r.js +163 -0
  486. package/bundled-test-harness/assets/token-usage-test-33ovcqPk.js +160 -0
  487. package/bundled-test-harness/assets/tools-J_Knr_W6.js +774 -0
  488. package/bundled-test-harness/assets/tools-calling-test-CfqZX0Ed.js +200 -0
  489. package/bundled-test-harness/assets/tools-test-B4x58ZmI.js +1624 -0
  490. package/bundled-test-harness/assets/tools-test-DtUQp5ez.js +3204 -0
  491. package/bundled-test-harness/assets/tooltip-B0rEgyMW.css +66 -0
  492. package/bundled-test-harness/assets/tooltip-DvUMUgVX.js +195 -0
  493. package/bundled-test-harness/assets/transform-cards-test-CYQbZeD9.js +341 -0
  494. package/bundled-test-harness/assets/ts-file-def-preview-test-m39f8Zio.js +95 -0
  495. package/bundled-test-harness/assets/ts-file-def-test-xIcL5xWe.js +92 -0
  496. package/bundled-test-harness/assets/ttf-font-def-test-ClQ2SzFF.js +206 -0
  497. package/bundled-test-harness/assets/turn-settling-test-DqYk312r.js +160 -0
  498. package/bundled-test-harness/assets/turn-summary-Bmt7ZxTS.js +1039 -0
  499. package/bundled-test-harness/assets/unpublish-realm-test-0ToTJczx.js +102 -0
  500. package/bundled-test-harness/assets/update-room-skills-test-o_j8NOUV.js +240 -0
  501. package/bundled-test-harness/assets/use-ai-assistant-test-D7HFpxKJ.js +384 -0
  502. package/bundled-test-harness/assets/user-message-BAOt1hS3.js +262 -0
  503. package/bundled-test-harness/assets/validate-realm-test-e3xIbNLB.js +67 -0
  504. package/bundled-test-harness/assets/video-metadata-extractor-test-D8naLSlg.js +520 -0
  505. package/bundled-test-harness/assets/view-visually-test-BuhGau5E.js +335 -0
  506. package/bundled-test-harness/assets/virtual-network-reset-test-CgaFNGPi.js +96 -0
  507. package/bundled-test-harness/assets/wav-audio-def-test-CWG_UdCh.js +160 -0
  508. package/bundled-test-harness/assets/webp-image-def-test-sN4yw8Zu.js +226 -0
  509. package/bundled-test-harness/assets/workspace-0LfPqbYB.js +445 -0
  510. package/bundled-test-harness/assets/workspace-a11y-test-DQxYDRAP.js +197 -0
  511. package/bundled-test-harness/assets/workspace-actions-jGJSfl8M.js +588 -0
  512. package/bundled-test-harness/assets/workspace-behavior-test-BnF-bmBN.js +338 -0
  513. package/bundled-test-harness/assets/workspace-delete-multiple-test-D-rxPDuT.js +212 -0
  514. package/bundled-test-harness/assets/workspace-delete-summary-test-C2-Mve5R.js +63 -0
  515. package/bundled-test-harness/assets/workspace-hosting-test-BvDKdlOb.js +138 -0
  516. package/bundled-test-harness/assets/workspace-indexing-test-B34T3kqD.js +71 -0
  517. package/bundled-test-harness/assets/workspace-test-CJivgv-m.js +51 -0
  518. package/bundled-test-harness/assets/workspace-test-CuSRpPnQ.js +385 -0
  519. package/bundled-test-harness/assets/workspace-timestamp-labels-test-aWgjdbCp.js +68 -0
  520. package/bundled-test-harness/assets/workspace-unit-test-DHMUf2KT.js +122 -0
  521. package/bundled-test-harness/assets/write-binary-file-test-P-hVQuin.js +124 -0
  522. package/bundled-test-harness/assets/write-text-file-test-fXvJueDd.js +191 -0
  523. package/bundled-test-harness/assets/zip-archive-test-C2P5CUSR.js +285 -0
  524. package/bundled-test-harness/assets/zip-file-def-test-BfJZAmGt.js +164 -0
  525. package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
  526. package/bundled-test-harness/index.html +47 -47
  527. package/bundled-test-harness/tests/index.html +49 -49
  528. package/bundled-types/boxel-ui/helpers/theme-scoped-css.ts +4 -0
  529. package/bundled-types/choreo/choreo.gts +13 -1
  530. package/bundled-types/choreo/run.ts +19 -0
  531. package/bundled-types/host-app/components/operator-mode/dashboard/get-started.gts +152 -7
  532. package/bundled-types/host-app/components/operator-mode/dashboard/index.gts +2 -0
  533. package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +5 -3
  534. package/bundled-types/host-app/components/operator-mode/dashboard-modals/workspace-modals.gts +5 -22
  535. package/bundled-types/host-app/components/operator-mode/host-submode/publishing-realm-popover.gts +1 -1
  536. package/bundled-types/host-app/components/operator-mode/host-submode.gts +111 -37
  537. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +1 -0
  538. package/bundled-types/host-app/lib/modal-focus-trap.ts +33 -0
  539. package/bundled-types/host-app/lib/workspace-actions.ts +21 -0
  540. package/bundled-types/host-app/services/host-mode-service.ts +39 -0
  541. package/bundled-types/host-app/services/realm.ts +14 -0
  542. package/bundled-types/host-tests/helpers/dashboard.ts +67 -0
  543. package/package.json +1 -1
  544. package/bundled-test-harness/assets/account-switch-failed-test-FytUFiPO.js +0 -45
  545. package/bundled-test-harness/assets/adapter-DvmPwSZv.js +0 -2
  546. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-DN525jiY.js +0 -112
  547. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-q3tKqVJQ.js +0 -130
  548. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DgeXcCyi.js +0 -46
  549. package/bundled-test-harness/assets/ai-assistant-test-lDIGPKFP.js +0 -2223
  550. package/bundled-test-harness/assets/ai-function-generation-test-D5GbLyvL.js +0 -1176
  551. package/bundled-test-harness/assets/ai-module-creation-test-I3-j2beD.js +0 -151
  552. package/bundled-test-harness/assets/aibot-message-Dmsjifs6.js +0 -1312
  553. package/bundled-test-harness/assets/app-BS9_-DhN.js +0 -14146
  554. package/bundled-test-harness/assets/apply-markdown-edit-test-4zlwt0Db.js +0 -230
  555. package/bundled-test-harness/assets/ask-user-picker-Dr-0qpNr.js +0 -370
  556. package/bundled-test-harness/assets/ask-user-picker-test-633AFdmS.js +0 -39
  557. package/bundled-test-harness/assets/assistant-transcript-test-BgRnLvMg.js +0 -57
  558. package/bundled-test-harness/assets/audio-metadata-extractor-test-4xsQqL-0.js +0 -1176
  559. package/bundled-test-harness/assets/authed-fetch-test-663mT5_N.js +0 -73
  560. package/bundled-test-harness/assets/avif-image-def-test-h01BPIJy.js +0 -187
  561. package/bundled-test-harness/assets/basic-test-DiD6T-8Q.js +0 -139
  562. package/bundled-test-harness/assets/binary-upload-dedupe-test-CkjMPO_e.js +0 -308
  563. package/bundled-test-harness/assets/bot-registration-test-CFZHpwdj.js +0 -97
  564. package/bundled-test-harness/assets/box-test-C3pSy5ED.js +0 -50
  565. package/bundled-test-harness/assets/brand-guide-attachments-test-EoC_u7Vc.js +0 -84
  566. package/bundled-test-harness/assets/brand-guide-custom-css-test-Dn3fvblr.js +0 -196
  567. package/bundled-test-harness/assets/brand-guide-edit-test-NeiT3MyK.js +0 -140
  568. package/bundled-test-harness/assets/brand-logo-mark-field-test-C2A1EnBB.js +0 -86
  569. package/bundled-test-harness/assets/broken-link-template-test-CWn6V5zZ.js +0 -192
  570. package/bundled-test-harness/assets/bundled-base-modules-test-D7mLzpsw.js +0 -54
  571. package/bundled-test-harness/assets/bundled-base-oracle-test-I7xCId_k.js +0 -37
  572. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DFBev0h-.js +0 -236
  573. package/bundled-test-harness/assets/button-BeSuhveJ.js +0 -207
  574. package/bundled-test-harness/assets/bxl-cyclic-graph-test-DPykwvvx.js +0 -47
  575. package/bundled-test-harness/assets/bxl-expression-test-LBWJiFb9.js +0 -250
  576. package/bundled-test-harness/assets/bxl-indexing-test-BuZmLk7y.js +0 -212
  577. package/bundled-test-harness/assets/bxl-platform-module-test-BNIvlkCM.js +0 -71
  578. package/bundled-test-harness/assets/can-invoke-test-t-bFIIeX.js +0 -455
  579. package/bundled-test-harness/assets/can-read-realm-test-2Q_MzRT9.js +0 -56
  580. package/bundled-test-harness/assets/cancel-indexing-job-test-QeYxEukn.js +0 -69
  581. package/bundled-test-harness/assets/capture-test-CJmJG8YR.js +0 -360
  582. package/bundled-test-harness/assets/card-api-test-B43I510H.js +0 -198
  583. package/bundled-test-harness/assets/card-basics-test-CBClzP2y.js +0 -5364
  584. package/bundled-test-harness/assets/card-chooser-paging-test-HEVzf6pR.js +0 -235
  585. package/bundled-test-harness/assets/card-chooser-test-GfjBRPFI.js +0 -393
  586. package/bundled-test-harness/assets/card-context-search-results-CoSr4EdS.js +0 -30
  587. package/bundled-test-harness/assets/card-context-search-results-test-BLMlZu9t.js +0 -184
  588. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DEBOzKan.js +0 -562
  589. package/bundled-test-harness/assets/card-def-menu-items-test-88_h8o0D.js +0 -228
  590. package/bundled-test-harness/assets/card-delete-test-DKom1phy.js +0 -466
  591. package/bundled-test-harness/assets/card-error-awaiting-index-test-DEwgFZMP.js +0 -53
  592. package/bundled-test-harness/assets/card-error-r6_cXst9.js +0 -72
  593. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-B7LiY15e.js +0 -219
  594. package/bundled-test-harness/assets/card-playground-test-CgyIJHui.js +0 -1491
  595. package/bundled-test-harness/assets/card-prerender-rPfzpIOU.js +0 -12939
  596. package/bundled-test-harness/assets/card-thunk-error-test-L0pvg4Ce.js +0 -48
  597. package/bundled-test-harness/assets/card-type-service-test-B2dhqxSD.js +0 -161
  598. package/bundled-test-harness/assets/check-correctness-test-DgqaLlCW.js +0 -1093
  599. package/bundled-test-harness/assets/check-domain-availability-test-B0hJHY5l.js +0 -98
  600. package/bundled-test-harness/assets/chip-D01NW3WH.js +0 -44
  601. package/bundled-test-harness/assets/choreo-D2Jl79RU.js +0 -1019
  602. package/bundled-test-harness/assets/choreo-_E8SOEe-.js +0 -2
  603. package/bundled-test-harness/assets/choreo-feature-reel-test-WLjsZDmS.js +0 -155
  604. package/bundled-test-harness/assets/choreo-gallery-build-order-test-6jnS8PsS.js +0 -436
  605. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CbUZsVB6.js +0 -399
  606. package/bundled-test-harness/assets/choreo-gallery-cover-test-CbvAStgk.js +0 -214
  607. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-tdjvUSa6.js +0 -133
  608. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-CsnM3hQK.js +0 -42
  609. package/bundled-test-harness/assets/choreo-gallery-drift-test-DG2LQTa7.js +0 -620
  610. package/bundled-test-harness/assets/choreo-gallery-escort-test-mn3-qXP1.js +0 -187
  611. package/bundled-test-harness/assets/choreo-gallery-films-test-BuktaC0D.js +0 -140
  612. package/bundled-test-harness/assets/choreo-gallery-filter-test-Dd-zpps0.js +0 -46
  613. package/bundled-test-harness/assets/choreo-gallery-fold-test-CWc1ijGc.js +0 -180
  614. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-tk2QmYPU.js +0 -114
  615. package/bundled-test-harness/assets/choreo-gallery-guides-test-DVbf1zM4.js +0 -321
  616. package/bundled-test-harness/assets/choreo-gallery-hang-test-B7EFp2dx.js +0 -426
  617. package/bundled-test-harness/assets/choreo-gallery-highlight-test-BFgbdesP.js +0 -60
  618. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-DJb8FC5R.js +0 -370
  619. package/bundled-test-harness/assets/choreo-gallery-interruption-test-DWyMXo5D.js +0 -176
  620. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-D3b8LsJ6.js +0 -104
  621. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CjjU6Rvn.js +0 -193
  622. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Le_h3QWU.js +0 -111
  623. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-Cp-DlWj4.js +0 -127
  624. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-DayS4GCJ.js +0 -100
  625. package/bundled-test-harness/assets/choreo-gallery-presentation-test-DeAfuFS7.js +0 -157
  626. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BgPWpggq.js +0 -145
  627. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-PzyoMNYv.js +0 -89
  628. package/bundled-test-harness/assets/choreo-gallery-sheet-test-CxaiNBkL.js +0 -48
  629. package/bundled-test-harness/assets/choreo-gallery-site-test-6xtSntS5.js +0 -237
  630. package/bundled-test-harness/assets/choreo-gallery-stage-E6Q5r-zU.js +0 -256
  631. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-C7aWMr9a.js +0 -102
  632. package/bundled-test-harness/assets/choreo-gallery-stages-test-CDWWgC61.js +0 -35
  633. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-Bkp15XJv.js +0 -138
  634. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CcGRi_3O.js +0 -144
  635. package/bundled-test-harness/assets/choreo-gallery-theater-test-Qph5pLT_.js +0 -252
  636. package/bundled-test-harness/assets/choreo-gallery-tuning-test-C4DhFLVA.js +0 -95
  637. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-LK493r1M.js +0 -88
  638. package/bundled-test-harness/assets/choreo-gallery-wires-test-B7SeUCc8.js +0 -148
  639. package/bundled-test-harness/assets/client-telemetry-test-DGmHzAFx.js +0 -340
  640. package/bundled-test-harness/assets/clip-BpYQPVz_.js +0 -2
  641. package/bundled-test-harness/assets/clip-CNaYbIwL.js +0 -92
  642. package/bundled-test-harness/assets/code-block-Cp2CJo5-.js +0 -502
  643. package/bundled-test-harness/assets/code-ref-test-C8JBHDb-.js +0 -163
  644. package/bundled-test-harness/assets/code-submode-availability-test-CzG1Tv6L.js +0 -198
  645. package/bundled-test-harness/assets/code-submode-test-BclVWjm5.js +0 -1839
  646. package/bundled-test-harness/assets/codeblocks-test-CmQlyxN7.js +0 -418
  647. package/bundled-test-harness/assets/codemirror-editor-test-B74H_yn8.js +0 -1512
  648. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bz6VEysU.js +0 -366
  649. package/bundled-test-harness/assets/color-field-test-DMCPQKIP.js +0 -212
  650. package/bundled-test-harness/assets/compaction-test-saQCLBrQ.js +0 -150
  651. package/bundled-test-harness/assets/computed-test-C05HliJC.js +0 -1320
  652. package/bundled-test-harness/assets/container-Cqcwrd-m.js +0 -10857
  653. package/bundled-test-harness/assets/content-preview-components-test-DZPj4_CU.js +0 -462
  654. package/bundled-test-harness/assets/copy-and-edit-test-DiXTQNTF.js +0 -292
  655. package/bundled-test-harness/assets/copy-card-test-ys7GquUY.js +0 -218
  656. package/bundled-test-harness/assets/copy-file-to-realm-test-Gn0Wn4vT.js +0 -148
  657. package/bundled-test-harness/assets/copy-source-test-BTLrOmPm.js +0 -56
  658. package/bundled-test-harness/assets/create-file-test-BCeIW-Rt.js +0 -464
  659. package/bundled-test-harness/assets/create-file-test-DbHQ5JsS.js +0 -1086
  660. package/bundled-test-harness/assets/create-listing-modal-test-CeHc4ter.js +0 -273
  661. package/bundled-test-harness/assets/create-listing-pr-request-test-DXbJNfMh.js +0 -117
  662. package/bundled-test-harness/assets/create-spec-test-BDIZoyHT.js +0 -256
  663. package/bundled-test-harness/assets/create-submission-workflow-test-Bix5J-3A.js +0 -132
  664. package/bundled-test-harness/assets/create-workspace-test-BmNnLHwC.js +0 -104
  665. package/bundled-test-harness/assets/credential-fields-test-NK1F4QWn.js +0 -200
  666. package/bundled-test-harness/assets/csv-file-def-test-BSfs4TTP.js +0 -102
  667. package/bundled-test-harness/assets/dashboard-C4T7ffKY.js +0 -3576
  668. package/bundled-test-harness/assets/dashboard-CFeHuP5-.js +0 -81
  669. package/bundled-test-harness/assets/dashboard-DQlpW-ux.css +0 -2392
  670. package/bundled-test-harness/assets/dashboard-add-workspace-test--rr6objf.js +0 -50
  671. package/bundled-test-harness/assets/dashboard-agents-test-D1y8H4xH.js +0 -334
  672. package/bundled-test-harness/assets/dashboard-archive-test-bN4EQaXv.js +0 -128
  673. package/bundled-test-harness/assets/dashboard-delete-test-BvsASb8B.js +0 -163
  674. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-DEsd5ZzZ.js +0 -71
  675. package/bundled-test-harness/assets/dashboard-duplicate-test-BnR0sTgB.js +0 -222
  676. package/bundled-test-harness/assets/dashboard-get-started-test-DG4uUXLv.js +0 -246
  677. package/bundled-test-harness/assets/dashboard-pinned-cards-test-AoGGVRAS.js +0 -220
  678. package/bundled-test-harness/assets/dashboard-reindex-test-BN9a96Xp.js +0 -115
  679. package/bundled-test-harness/assets/dashboard-section-rail-test-B3OT9V2T.js +0 -169
  680. package/bundled-test-harness/assets/dashboard-state-test-BY0Zqrmj.js +0 -162
  681. package/bundled-test-harness/assets/dashboard-test-C13oNpWt.js +0 -545
  682. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DZIV4x5j.js +0 -62
  683. package/bundled-test-harness/assets/dashboard-workspace-test-CBnOQViI.js +0 -537
  684. package/bundled-test-harness/assets/dashboard-workspaces-section-test-KU8ZVOYp.js +0 -396
  685. package/bundled-test-harness/assets/data-file-def-preview-test-CI5gcdtK.js +0 -155
  686. package/bundled-test-harness/assets/date-time-fields-test-D2CpR_Pb.js +0 -359
  687. package/bundled-test-harness/assets/debug-message-test-Df1kHesw.js +0 -117
  688. package/bundled-test-harness/assets/declared-captures-test-hQ43zuox.js +0 -879
  689. package/bundled-test-harness/assets/delete-workspace-test-BhfMKsix.js +0 -102
  690. package/bundled-test-harness/assets/diffing-test-CHRh55mC.js +0 -210
  691. package/bundled-test-harness/assets/download-file-to-realm-test-CC1HURCi.js +0 -119
  692. package/bundled-test-harness/assets/editor-test-DkeCv28f.js +0 -688
  693. package/bundled-test-harness/assets/edits-BSJqtUXM.js +0 -651
  694. package/bundled-test-harness/assets/email-field-test-DihK0suO.js +0 -75
  695. package/bundled-test-harness/assets/enum-field-test-Gja3bzt5.js +0 -935
  696. package/bundled-test-harness/assets/error-display-test-GhYZu7cp.js +0 -343
  697. package/bundled-test-harness/assets/evaluate-module-test-D_t4CiUq.js +0 -91
  698. package/bundled-test-harness/assets/execute-atomic-operations-test-xtou8Zeg.js +0 -113
  699. package/bundled-test-harness/assets/externals-B02-sD_L.js +0 -4393
  700. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DtxzNXdE.js +0 -207
  701. package/bundled-test-harness/assets/fallback-banner-test-BfmiQ_68.js +0 -53
  702. package/bundled-test-harness/assets/fallback-banner-test-DLtTdmvn.js +0 -225
  703. package/bundled-test-harness/assets/fallback-models-test-BxNJxhfd.js +0 -161
  704. package/bundled-test-harness/assets/fetch-card-json-test-DofKbzvC.js +0 -61
  705. package/bundled-test-harness/assets/field-configuration-test-SUoPaXWy.js +0 -551
  706. package/bundled-test-harness/assets/field-markdown-domain-test-BwtR0dPP.js +0 -616
  707. package/bundled-test-harness/assets/field-markdown-oversize-test-D8UJcBc3.js +0 -88
  708. package/bundled-test-harness/assets/field-markdown-primitives-test-D5_ZdoDO.js +0 -365
  709. package/bundled-test-harness/assets/field-markdown-specialized-test-Dpd5hs04.js +0 -534
  710. package/bundled-test-harness/assets/field-playground-test-CzhYzKGv.js +0 -894
  711. package/bundled-test-harness/assets/field-support-predicates-test-BSvVOFth.js +0 -167
  712. package/bundled-test-harness/assets/file-attachment-test-fM-yFedm.js +0 -796
  713. package/bundled-test-harness/assets/file-chooser-panel-test-CKj8YTdY.js +0 -153
  714. package/bundled-test-harness/assets/file-chooser-test-Bs8jFXqa.js +0 -504
  715. package/bundled-test-harness/assets/file-def-format-templates-test-CxrRoWoD.js +0 -380
  716. package/bundled-test-harness/assets/file-def-live-reload-test-X_8YEkve.js +0 -124
  717. package/bundled-test-harness/assets/file-def-menu-items-test-Dx879o_o.js +0 -138
  718. package/bundled-test-harness/assets/file-def-navigation-test-MMI_EEO1.js +0 -109
  719. package/bundled-test-harness/assets/file-def-serialization-test-B5lguBQD.js +0 -89
  720. package/bundled-test-harness/assets/file-def-test-Di9QWcrj.js +0 -216
  721. package/bundled-test-harness/assets/file-preview-live-reload-test-aqx93A7c.js +0 -310
  722. package/bundled-test-harness/assets/file-resource-primitives-test-a5abpcSB.js +0 -255
  723. package/bundled-test-harness/assets/file-tree-from-index-test-CnruGxJ8.js +0 -96
  724. package/bundled-test-harness/assets/file-tree-test-BCyWDdSE.js +0 -851
  725. package/bundled-test-harness/assets/file-view-model-test-BfpLa01Y.js +0 -346
  726. package/bundled-test-harness/assets/filedef-export-shape-test-CQ9XbrzS.js +0 -61
  727. package/bundled-test-harness/assets/film-CL1zj_bJ.js +0 -2
  728. package/bundled-test-harness/assets/film-Dq_quZ31.js +0 -13
  729. package/bundled-test-harness/assets/film-xbkQa060.js +0 -4074
  730. package/bundled-test-harness/assets/flac-audio-def-test-BmVp9dMx.js +0 -143
  731. package/bundled-test-harness/assets/focus-Dm4wkM72.js +0 -306
  732. package/bundled-test-harness/assets/font-metadata-extractor-test-OWEh9_MS.js +0 -415
  733. package/bundled-test-harness/assets/formatted-aibot-message-test-BpHsWpuV.js +0 -109
  734. package/bundled-test-harness/assets/formatted-user-message-test-DZW5TAr0.js +0 -43
  735. package/bundled-test-harness/assets/freestyle-test-D_uaPU_3.js +0 -17
  736. package/bundled-test-harness/assets/full-reindex-realm-test-C6vHL5kC.js +0 -101
  737. package/bundled-test-harness/assets/garbage-collection-test-D-Ao4t2n.js +0 -403
  738. package/bundled-test-harness/assets/general-test-PSGI8W0z.js +0 -923
  739. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-J-m-0E6W.js +0 -65
  740. package/bundled-test-harness/assets/generic-file-def-preview-test-BAsOhTYU.js +0 -71
  741. package/bundled-test-harness/assets/get-available-realm-identifiers-test-D5PBOr97.js +0 -47
  742. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-NM9UURHE.js +0 -47
  743. package/bundled-test-harness/assets/get-default-writable-realm-test-BxXc9a3J.js +0 -54
  744. package/bundled-test-harness/assets/get-published-realms-test-C8TJEc4-.js +0 -71
  745. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-Dt8CB6lS.js +0 -54
  746. package/bundled-test-harness/assets/get-relationship-membership-state-test-9_8x3myJ.js +0 -1308
  747. package/bundled-test-harness/assets/get-user-system-card-test-k0UO-uba.js +0 -67
  748. package/bundled-test-harness/assets/gif-image-def-test-BWrqPGDX.js +0 -188
  749. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BgG8QI9E.js +0 -160
  750. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-BKOvNyCN.js +0 -74
  751. package/bundled-test-harness/assets/gts-file-def-test-BCRHwDeZ.js +0 -100
  752. package/bundled-test-harness/assets/head-format-preview-test-DnfUhniI.js +0 -158
  753. package/bundled-test-harness/assets/helpers-DklkegO_.js +0 -5
  754. package/bundled-test-harness/assets/host-mode-service-vOfN0smp.js +0 -232
  755. package/bundled-test-harness/assets/host-mode-test-CCCJFz6_.js +0 -831
  756. package/bundled-test-harness/assets/host-submode-test-CtCfbuPA.js +0 -1342
  757. package/bundled-test-harness/assets/html-component-test-CWyhb5ZX.js +0 -65
  758. package/bundled-test-harness/assets/html-def-test-Cb8C2lUx.js +0 -160
  759. package/bundled-test-harness/assets/html-meta-extractor-test-BHT9Rtir.js +0 -60
  760. package/bundled-test-harness/assets/hydratable-card-test-DpgpdesD.js +0 -426
  761. package/bundled-test-harness/assets/icon-button-ABCGVF3C.js +0 -67
  762. package/bundled-test-harness/assets/image-metadata-extractor-test-ClhPTouq.js +0 -1109
  763. package/bundled-test-harness/assets/index-changes-test-CgnVr3LH.js +0 -367
  764. package/bundled-test-harness/assets/index-query-engine-test-CQTwju5_.js +0 -2593
  765. package/bundled-test-harness/assets/index-writer-test-IoVOoZT2.js +0 -3040
  766. package/bundled-test-harness/assets/inspector-test-BN2Ieb77.js +0 -2058
  767. package/bundled-test-harness/assets/instance-filter-matcher-test-Bq-_Sy89.js +0 -788
  768. package/bundled-test-harness/assets/instantiate-card-test-DEeDTzFV.js +0 -164
  769. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DP6kOyJS.js +0 -475
  770. package/bundled-test-harness/assets/interact-submode-setup-B0_cHqH-.js +0 -566
  771. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-9uUD91Pw.js +0 -99
  772. package/bundled-test-harness/assets/invite-user-to-room-test-CcDA45Ac.js +0 -142
  773. package/bundled-test-harness/assets/invoke-card-operation-test-DmUtgueM.js +0 -333
  774. package/bundled-test-harness/assets/isolated-render-test-B2eXNHu6.js +0 -51
  775. package/bundled-test-harness/assets/job-scoped-doc-cache-test-DF9D7cOc.js +0 -181
  776. package/bundled-test-harness/assets/job-scoped-instance-residency-test-CSS8xUU5.js +0 -103
  777. package/bundled-test-harness/assets/jpg-image-def-test-voECMTht.js +0 -697
  778. package/bundled-test-harness/assets/json-file-def-test-8Y4KLjUC.js +0 -95
  779. package/bundled-test-harness/assets/key-notices-badge-test-d1mYqx0e.js +0 -155
  780. package/bundled-test-harness/assets/key-readiness-test-BtCg7PCk.js +0 -190
  781. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CyCMbJnN.js +0 -398
  782. package/bundled-test-harness/assets/linksto-error-sentinel-test-BDW572-v.js +0 -238
  783. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-B4wM97hD.js +0 -354
  784. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-BhJmtJ0_.js +0 -303
  785. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BpBQ5V_i.js +0 -197
  786. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-pkBBl4e9.js +0 -260
  787. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-Bb6wjUdD.js +0 -196
  788. package/bundled-test-harness/assets/lint-and-fix-test-CcMLn-co.js +0 -51
  789. package/bundled-test-harness/assets/live-test-AyBnq7BX.js +0 -2
  790. package/bundled-test-harness/assets/live-test-CgnAcIDw.js +0 -100
  791. package/bundled-test-harness/assets/load-default-skills-test-BIOwtx0Y.js +0 -74
  792. package/bundled-test-harness/assets/loader-parallel-prefetch-test-D5_oRSER.js +0 -257
  793. package/bundled-test-harness/assets/loader-test-DSc_jR1c.js +0 -482
  794. package/bundled-test-harness/assets/loading-test-8pldx7S-.js +0 -63
  795. package/bundled-test-harness/assets/m4a-audio-def-test-BDI5apzM.js +0 -190
  796. package/bundled-test-harness/assets/main-5kHyCkdm.js +0 -5
  797. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-Wud0s7WZ.js +0 -470
  798. package/bundled-test-harness/assets/markdown-embed-chooser-test-DVzzS-0C.js +0 -334
  799. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B5W_iqsi.js +0 -447
  800. package/bundled-test-harness/assets/markdown-embed-preview-test-CZF_s0fB.js +0 -368
  801. package/bundled-test-harness/assets/markdown-fallback-test-fT6BS4W7.js +0 -316
  802. package/bundled-test-harness/assets/markdown-file-def-test-B1aTzazR.js +0 -380
  803. package/bundled-test-harness/assets/markdown-helpers-test-gNKZf7Mw.js +0 -188
  804. package/bundled-test-harness/assets/markdown-highlighting-test-Du5_CQmD.js +0 -244
  805. package/bundled-test-harness/assets/markdown-preview-h-_aJhRc.js +0 -72
  806. package/bundled-test-harness/assets/markdown-preview-test-DJvoVsXw.js +0 -238
  807. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-VwJi3Paj.js +0 -146
  808. package/bundled-test-harness/assets/markdown-skill-search-test-ysCdf0xM.js +0 -80
  809. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-K2JuMy36.js +0 -63
  810. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-CkdL_-os.js +0 -300
  811. package/bundled-test-harness/assets/matrix-service-personal-realm-test-Dy1DultK.js +0 -125
  812. package/bundled-test-harness/assets/matrix-service-realm-servers-test-DHDDKuEg.js +0 -55
  813. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-DcTbZpMl.js +0 -132
  814. package/bundled-test-harness/assets/matrix-service-relogin-test-D3NQktoa.js +0 -59
  815. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-6CAflWOA.js +0 -35
  816. package/bundled-test-harness/assets/menu-kUSaJIPq.js +0 -3562
  817. package/bundled-test-harness/assets/message-service-subscription-test-DaQdgDWi.js +0 -110
  818. package/bundled-test-harness/assets/message-service-test-BsGEgM_m.js +0 -144
  819. package/bundled-test-harness/assets/message-tool-test-BB_4kw1V.js +0 -33
  820. package/bundled-test-harness/assets/midi-audio-def-test-BbbkFjqf.js +0 -182
  821. package/bundled-test-harness/assets/migrate-skill-test-X9xImDuq.js +0 -161
  822. package/bundled-test-harness/assets/mini-AwF31elJ.js +0 -1404
  823. package/bundled-test-harness/assets/mini-card-chooser-test-BZtrEiWu.js +0 -272
  824. package/bundled-test-harness/assets/mini-file-chooser-test-MIHW3kCI.js +0 -201
  825. package/bundled-test-harness/assets/mock-matrix-Dd8k0DNa.js +0 -15107
  826. package/bundled-test-harness/assets/mock-matrix-DhPN_34j.js +0 -2
  827. package/bundled-test-harness/assets/modal-LTh3_oHK.js +0 -322
  828. package/bundled-test-harness/assets/model-cost-tier-test-h1IkU9mp.js +0 -174
  829. package/bundled-test-harness/assets/model-file-extract-test-ntSo0wZF.js +0 -206
  830. package/bundled-test-harness/assets/module-transpile-cache-test-CDeRaaeP.js +0 -67
  831. package/bundled-test-harness/assets/monaco-test-C0Fa744D.js +0 -100
  832. package/bundled-test-harness/assets/mp3-audio-def-test-B4j4qR9H.js +0 -133
  833. package/bundled-test-harness/assets/multiple-stacks-test-BhA25ywL.js +0 -208
  834. package/bundled-test-harness/assets/nested-query-field-render-test-S9Y8YNKB.js +0 -249
  835. package/bundled-test-harness/assets/no-stacks-test-B7VciWyg.js +0 -48
  836. package/bundled-test-harness/assets/number-field-test-CS74lDPN.js +0 -184
  837. package/bundled-test-harness/assets/office-file-def-test-2cKc1pmd.js +0 -263
  838. package/bundled-test-harness/assets/office-metadata-extractor-test-DC8Fo-OW.js +0 -218
  839. package/bundled-test-harness/assets/office-poster-capture-test-Ba0_5UrT.js +0 -203
  840. package/bundled-test-harness/assets/ogg-audio-def-test-CIPQ1d4w.js +0 -196
  841. package/bundled-test-harness/assets/open-create-listing-modal-test-bmQkY5Zl.js +0 -131
  842. package/bundled-test-harness/assets/open-image-in-new-tab-test-DBD7_vMH.js +0 -52
  843. package/bundled-test-harness/assets/open-secure-window-test-BgeuYAqz.js +0 -253
  844. package/bundled-test-harness/assets/open-workspace-test-DRHGljV0.js +0 -46
  845. package/bundled-test-harness/assets/operation-lowering-test-CH1c0pSH.js +0 -2957
  846. package/bundled-test-harness/assets/operations-invocation-test-B1YkCLrv.js +0 -523
  847. package/bundled-test-harness/assets/operations-optimistic-test-DAbtOwsC.js +0 -203
  848. package/bundled-test-harness/assets/operations-query-test-9p1ZIDe-.js +0 -459
  849. package/bundled-test-harness/assets/operations-store-reconciliation-test-D0EQh3w2.js +0 -406
  850. package/bundled-test-harness/assets/operations-test-BQhlrfe3.js +0 -2518
  851. package/bundled-test-harness/assets/operator-mode-acceptance-test-DtHnonEb.js +0 -1195
  852. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DQUxZxaq.js +0 -1036
  853. package/bundled-test-harness/assets/operator-mode-links-test-BJ26HllS.js +0 -797
  854. package/bundled-test-harness/assets/operator-mode-test-DIPDI0qt.js +0 -696
  855. package/bundled-test-harness/assets/operator-mode-ui-test-CfA-fAh4.js +0 -1045
  856. package/bundled-test-harness/assets/overlay-DecPh3nt.js +0 -123
  857. package/bundled-test-harness/assets/overlay-menu-items-test-C6XqjLtu.js +0 -331
  858. package/bundled-test-harness/assets/overlays-Ctp8ePzZ.js +0 -75
  859. package/bundled-test-harness/assets/overlays-CzWpSg5T.js +0 -2
  860. package/bundled-test-harness/assets/overlays-detached-element-test-DvL_8Bb5.js +0 -56
  861. package/bundled-test-harness/assets/panel-CImumikB.js +0 -15124
  862. package/bundled-test-harness/assets/past-sessions-test-N6riGN_I.js +0 -321
  863. package/bundled-test-harness/assets/patch-fields-test-D30_-KwQ.js +0 -1014
  864. package/bundled-test-harness/assets/patch-instance-test-C5rGscZq.js +0 -348
  865. package/bundled-test-harness/assets/pdf-file-def-test-DtiqGRvZ.js +0 -111
  866. package/bundled-test-harness/assets/pdf-metadata-extractor-test-FU02KmdV.js +0 -130
  867. package/bundled-test-harness/assets/permission-checking-realm-test-DqdNJDwU.js +0 -306
  868. package/bundled-test-harness/assets/persist-module-inspector-view-test-BHOAgPVy.js +0 -60
  869. package/bundled-test-harness/assets/persist-scroll-position-test-qtmS518r.js +0 -254
  870. package/bundled-test-harness/assets/phone-number-field-test-DhdaM7uL.js +0 -73
  871. package/bundled-test-harness/assets/pill-menu-test-C9Mrrepl.js +0 -60
  872. package/bundled-test-harness/assets/plate-9n-sXyCw.js +0 -41
  873. package/bundled-test-harness/assets/plate-BnZcAk-_.js +0 -2
  874. package/bundled-test-harness/assets/player-Cu5b4LEJ.js +0 -82
  875. package/bundled-test-harness/assets/player-unk2mkxV.js +0 -2
  876. package/bundled-test-harness/assets/playground-BwA8wFGK.js +0 -58
  877. package/bundled-test-harness/assets/plural-field-components-test-CFNQKETg.js +0 -198
  878. package/bundled-test-harness/assets/png-image-def-test-DG5Vhlqb.js +0 -266
  879. package/bundled-test-harness/assets/policy-audit-confirmation-test-yfKU47LR.js +0 -155
  880. package/bundled-test-harness/assets/policy-scoped-search-test-BjQRDYqR.js +0 -339
  881. package/bundled-test-harness/assets/prerender-file-extract-test-CEU4SaAZ.js +0 -346
  882. package/bundled-test-harness/assets/prerender-html-test-CGB3ClCS.js +0 -670
  883. package/bundled-test-harness/assets/prerender-meta-test-xqc4fW_0.js +0 -614
  884. package/bundled-test-harness/assets/prerender-module-test-CI1TmZw-.js +0 -409
  885. package/bundled-test-harness/assets/prerender-persistence-block-test-Da0dJO_N.js +0 -124
  886. package/bundled-test-harness/assets/prerender-pre-model-error-test-BVLyhk8R.js +0 -61
  887. package/bundled-test-harness/assets/prerender-serialize-cycle-test-glJFfxHU.js +0 -134
  888. package/bundled-test-harness/assets/prerendered-html-read-test-Mp4L0VHQ.js +0 -191
  889. package/bundled-test-harness/assets/pretui-components-test-BBpA9UnA.js +0 -991
  890. package/bundled-test-harness/assets/pretui-components-test-BqFq7rw_.css +0 -730
  891. package/bundled-test-harness/assets/preview-format-test-C55Bwcur.js +0 -103
  892. package/bundled-test-harness/assets/preview-test-CTAhRGU8.js +0 -474
  893. package/bundled-test-harness/assets/process-card-test-UjqpuxB7.js +0 -94
  894. package/bundled-test-harness/assets/profile-settings-modal-C8bCgTMK.js +0 -989
  895. package/bundled-test-harness/assets/publish-realm-ixUB4FPK.js +0 -82
  896. package/bundled-test-harness/assets/publish-realm-test-CrrsdL4W.js +0 -210
  897. package/bundled-test-harness/assets/query-field-barrier-test-DjivFE93.js +0 -113
  898. package/bundled-test-harness/assets/query-field-error-sentinel-test-0HwnV4Mw.js +0 -201
  899. package/bundled-test-harness/assets/query-field-membership-status-test-C8yTTBkc.js +0 -323
  900. package/bundled-test-harness/assets/query-field-page-optin-test-D4l_GcII.js +0 -126
  901. package/bundled-test-harness/assets/query-field-schema-test-DDbcNNm5.js +0 -231
  902. package/bundled-test-harness/assets/query-field-search-throttle-test-CXp50Ax0.js +0 -154
  903. package/bundled-test-harness/assets/query-field-stale-prerender-test-DErzt-Cv.js +0 -152
  904. package/bundled-test-harness/assets/query-fields-test-Dz67fdSl.js +0 -535
  905. package/bundled-test-harness/assets/quick-look-test-B1ijDsh_.js +0 -139
  906. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-DJxZ16H_.js +0 -91
  907. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-BoRQkZ8c.js +0 -45
  908. package/bundled-test-harness/assets/read-source-test-Bl-NjchO.js +0 -67
  909. package/bundled-test-harness/assets/read-text-file-test-CP37CZoo.js +0 -124
  910. package/bundled-test-harness/assets/realm-CaK5mkT-.js +0 -2852
  911. package/bundled-test-harness/assets/realm-api-keys-BNUFWbGR.js +0 -579
  912. package/bundled-test-harness/assets/realm-api-keys-CkshxhXC.js +0 -2
  913. package/bundled-test-harness/assets/realm-api-keys-test-BP8xifjn.js +0 -109
  914. package/bundled-test-harness/assets/realm-api-keys-test-CwdK9YXp.js +0 -588
  915. package/bundled-test-harness/assets/realm-config-iKwE3Htp.js +0 -833
  916. package/bundled-test-harness/assets/realm-config-policy-standing-test-BgVEIDnB.js +0 -290
  917. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-BoJoKzmX.js +0 -274
  918. package/bundled-test-harness/assets/realm-config-settings-test-Kxw-GHye.js +0 -187
  919. package/bundled-test-harness/assets/realm-field-test-CdGOxrFb.js +0 -100
  920. package/bundled-test-harness/assets/realm-indexing-test-CHtsBV2b.js +0 -4380
  921. package/bundled-test-harness/assets/realm-policy-fitted-test--DhNZSdC.js +0 -206
  922. package/bundled-test-harness/assets/realm-policy-test-D7714iVa.js +0 -1141
  923. package/bundled-test-harness/assets/realm-querying-test-Cj1ekZ0H.js +0 -1067
  924. package/bundled-test-harness/assets/realm-server-form-agnostic-test-CZFPNJfD.js +0 -96
  925. package/bundled-test-harness/assets/realm-server-subscriber-test-C86WmBp0.js +0 -46
  926. package/bundled-test-harness/assets/realm-service-info-test-CdgcwKDR.js +0 -67
  927. package/bundled-test-harness/assets/realm-test-DPoLsvKz.js +0 -2364
  928. package/bundled-test-harness/assets/realm-token-refresh-test-Ch35Siwi.js +0 -153
  929. package/bundled-test-harness/assets/realm-url-tooltip-test-x8xWOENK.js +0 -78
  930. package/bundled-test-harness/assets/reasoning-test-BxpE8Jvf.js +0 -221
  931. package/bundled-test-harness/assets/recent-files-test-DTmEzPLq.js +0 -450
  932. package/bundled-test-harness/assets/reindex-realm-test-BQ8KULn4.js +0 -117
  933. package/bundled-test-harness/assets/relationship-loading-state-test-BJoArPWf.js +0 -290
  934. package/bundled-test-harness/assets/remix-card-test-DsTA1KoG.js +0 -58
  935. package/bundled-test-harness/assets/rendered-markdown-DvukulDO.js +0 -292
  936. package/bundled-test-harness/assets/rendered-markdown-test-DxGptXSV.js +0 -587
  937. package/bundled-test-harness/assets/resident-instance-reuse-test-ZWnVu8uj.js +0 -82
  938. package/bundled-test-harness/assets/result-tile-CPyI6Vmv.js +0 -144
  939. package/bundled-test-harness/assets/rich-markdown-field-test-CdygoXIO.js +0 -1647
  940. package/bundled-test-harness/assets/room-message-test-D3NfMqH0.js +0 -484
  941. package/bundled-test-harness/assets/run-D_Px28eF.js +0 -3956
  942. package/bundled-test-harness/assets/run-realm-code-qWCZxmJ7.js +0 -2964
  943. package/bundled-test-harness/assets/run-realm-code-test-UzyeEJq6.js +0 -3844
  944. package/bundled-test-harness/assets/sanitize-module-list-test-Babq44bP.js +0 -85
  945. package/bundled-test-harness/assets/save-card-skip-index-wait-test-BcELXlQ_.js +0 -89
  946. package/bundled-test-harness/assets/schema-editor-test-CEvruZbt.js +0 -785
  947. package/bundled-test-harness/assets/schema-generation-test-hYAMdCrn.js +0 -28
  948. package/bundled-test-harness/assets/scrolling-test-DVIsh-_1.js +0 -412
  949. package/bundled-test-harness/assets/search-adorn-test-CkVhqFd0.js +0 -136
  950. package/bundled-test-harness/assets/search-and-choose-test-DUhOB3FV.js +0 -154
  951. package/bundled-test-harness/assets/search-correlation-id-test-Drn4r26N.js +0 -139
  952. package/bundled-test-harness/assets/search-entries-result-test-DTCRJ_wc.js +0 -234
  953. package/bundled-test-harness/assets/search-entries-test-CE0B47pw.js +0 -1486
  954. package/bundled-test-harness/assets/search-entries-tool-test-C4aG0ckM.js +0 -504
  955. package/bundled-test-harness/assets/search-google-images-test-LyhcB2f3.js +0 -166
  956. package/bundled-test-harness/assets/search-results-D4pSne0x.js +0 -266
  957. package/bundled-test-harness/assets/search-results-test-CRZHhqhn.js +0 -578
  958. package/bundled-test-harness/assets/search-selection-menu-test-B7Y3E_nj.js +0 -108
  959. package/bundled-test-harness/assets/search-sheet-files-test-C2y534g8.js +0 -126
  960. package/bundled-test-harness/assets/search-sheet-persistence-test-DePC59Bk.js +0 -131
  961. package/bundled-test-harness/assets/search-test-Dy8NxFkU.js +0 -2249
  962. package/bundled-test-harness/assets/search-tool-test-lctDaMH3.js +0 -156
  963. package/bundled-test-harness/assets/searchable-option-test-CE64M8oM.js +0 -322
  964. package/bundled-test-harness/assets/searchable-search-doc-test-C6u3mVvT.js +0 -1271
  965. package/bundled-test-harness/assets/section-rail-B_UQX00B.js +0 -113
  966. package/bundled-test-harness/assets/section-rail-test-DIda7MIw.js +0 -256
  967. package/bundled-test-harness/assets/secure-sign-in-CqqqfQG8.js +0 -174
  968. package/bundled-test-harness/assets/secure-sign-in-test-DimbVr_W.js +0 -373
  969. package/bundled-test-harness/assets/segmented-control-iePxSdTS.js +0 -173
  970. package/bundled-test-harness/assets/select-tNs6_xwW.js +0 -175
  971. package/bundled-test-harness/assets/send-ai-assistant-message-test-2GVrMF9Z.js +0 -52
  972. package/bundled-test-harness/assets/send-bot-trigger-event-test-B_3dKfGN.js +0 -56
  973. package/bundled-test-harness/assets/send-request-via-proxy-test-_clNWyYc.js +0 -380
  974. package/bundled-test-harness/assets/sending-test-DCPFXUVg.js +0 -659
  975. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BI0zCs8Y.js +0 -136
  976. package/bundled-test-harness/assets/serialization-test-bjdtVlZL.js +0 -8758
  977. package/bundled-test-harness/assets/set-user-system-card-test-BUv1vL08.js +0 -59
  978. package/bundled-test-harness/assets/setup-BW1mmC7C.js +0 -772
  979. package/bundled-test-harness/assets/setup-DsIcFT-T.js +0 -2
  980. package/bundled-test-harness/assets/shared-link-target-reuse-test-9NeJEjkb.js +0 -207
  981. package/bundled-test-harness/assets/show-card-test-mfyLwusD.js +0 -365
  982. package/bundled-test-harness/assets/signed-capture-link-test-BOtKNCAM.js +0 -132
  983. package/bundled-test-harness/assets/single-stack-test-B4MGjaLk.js +0 -652
  984. package/bundled-test-harness/assets/skills-test-BuP-Yzk1.js +0 -648
  985. package/bundled-test-harness/assets/skip-boot-index-guard-test-Cmrx2-K7.js +0 -46
  986. package/bundled-test-harness/assets/spec-test-BhZDdhVQ.js +0 -1077
  987. package/bundled-test-harness/assets/spinner-CpIBUG9m.js +0 -49
  988. package/bundled-test-harness/assets/src-DGHttmW-.js +0 -216
  989. package/bundled-test-harness/assets/src-DaNDSbp7.js +0 -5
  990. package/bundled-test-harness/assets/stick-to-bottom-resize-test-Dpy3OVum.js +0 -56
  991. package/bundled-test-harness/assets/store-add-test-_IYS8o74.js +0 -50
  992. package/bundled-test-harness/assets/store-module-rebuild-test-B5VMaICy.js +0 -454
  993. package/bundled-test-harness/assets/store-search-test-C2VZabrH.js +0 -175
  994. package/bundled-test-harness/assets/store-test-D6PObxoD.js +0 -3672
  995. package/bundled-test-harness/assets/structured-theme-test-BHjVeMf-.js +0 -377
  996. package/bundled-test-harness/assets/summarize-session-test-BFtTuhe0.js +0 -172
  997. package/bundled-test-harness/assets/svg-image-def-test-BL6lkWUX.js +0 -167
  998. package/bundled-test-harness/assets/switch-submode-test-6Uv3bZMl.js +0 -168
  999. package/bundled-test-harness/assets/sync-openrouter-models-test-Dp9E05tL.js +0 -97
  1000. package/bundled-test-harness/assets/test-support-DYm8XZ0E.js +0 -3
  1001. package/bundled-test-harness/assets/test-support-DfnhiIMV.js +0 -99
  1002. package/bundled-test-harness/assets/tests-CZk0Iag2.js +0 -3596
  1003. package/bundled-test-harness/assets/text-file-def-test-CHdC0yIU.js +0 -94
  1004. package/bundled-test-harness/assets/text-input-validator-test-B9ZR8XPU.js +0 -156
  1005. package/bundled-test-harness/assets/text-suggestion-test-CGLspKFQ.js +0 -340
  1006. package/bundled-test-harness/assets/theme-card-test-CXZvSEvG.js +0 -621
  1007. package/bundled-test-harness/assets/theme-dashboard-nav-test-CkEE0ILk.js +0 -196
  1008. package/bundled-test-harness/assets/theme-scheme-island-test-URXTjipF.js +0 -264
  1009. package/bundled-test-harness/assets/titles-C6enAdIv.js +0 -2
  1010. package/bundled-test-harness/assets/titles-Dft1HoUT.js +0 -52
  1011. package/bundled-test-harness/assets/to-device-streaming-test-D33ZOc9o.js +0 -163
  1012. package/bundled-test-harness/assets/token-usage-test-BHQlU4J4.js +0 -160
  1013. package/bundled-test-harness/assets/tools-CrudqfS3.js +0 -774
  1014. package/bundled-test-harness/assets/tools-calling-test-jo7IREau.js +0 -200
  1015. package/bundled-test-harness/assets/tools-test-D1wMfUa0.js +0 -1624
  1016. package/bundled-test-harness/assets/tools-test-Dn1LYsXp.js +0 -3204
  1017. package/bundled-test-harness/assets/tooltip-8Wyz4IIn.css +0 -68
  1018. package/bundled-test-harness/assets/tooltip-CqwLzRz5.js +0 -134
  1019. package/bundled-test-harness/assets/transform-cards-test-BPhwPFtp.js +0 -341
  1020. package/bundled-test-harness/assets/ts-file-def-preview-test-Bq3zTgw8.js +0 -95
  1021. package/bundled-test-harness/assets/ts-file-def-test-GLswMl7O.js +0 -92
  1022. package/bundled-test-harness/assets/ttf-font-def-test-DQulvUWs.js +0 -206
  1023. package/bundled-test-harness/assets/turn-settling-test-BspmOUQP.js +0 -160
  1024. package/bundled-test-harness/assets/turn-summary-9A8nvC0-.js +0 -1039
  1025. package/bundled-test-harness/assets/unpublish-realm-test-SkYPEhDz.js +0 -102
  1026. package/bundled-test-harness/assets/update-room-skills-test-cTxb-WU6.js +0 -240
  1027. package/bundled-test-harness/assets/use-ai-assistant-test-uaqW1T_A.js +0 -384
  1028. package/bundled-test-harness/assets/user-message-BudkIP-3.js +0 -262
  1029. package/bundled-test-harness/assets/validate-realm-test-DxrGgH9n.js +0 -67
  1030. package/bundled-test-harness/assets/video-metadata-extractor-test-B2pe-Iqa.js +0 -520
  1031. package/bundled-test-harness/assets/view-visually-test-PNon6fUo.js +0 -335
  1032. package/bundled-test-harness/assets/virtual-network-reset-test-uYJLaQHf.js +0 -96
  1033. package/bundled-test-harness/assets/wav-audio-def-test-F4OrFFR4.js +0 -160
  1034. package/bundled-test-harness/assets/webp-image-def-test-B0a_-Vya.js +0 -226
  1035. package/bundled-test-harness/assets/workspace-Cyftysy9.js +0 -440
  1036. package/bundled-test-harness/assets/workspace-a11y-test-sKiPDcbl.js +0 -197
  1037. package/bundled-test-harness/assets/workspace-actions-BuawjFmZ.js +0 -561
  1038. package/bundled-test-harness/assets/workspace-behavior-test-CKa-pb3T.js +0 -338
  1039. package/bundled-test-harness/assets/workspace-delete-multiple-test-Dt2weG5R.js +0 -212
  1040. package/bundled-test-harness/assets/workspace-delete-summary-test-CkqgFqZ8.js +0 -63
  1041. package/bundled-test-harness/assets/workspace-hosting-test-Ci7EEtHP.js +0 -138
  1042. package/bundled-test-harness/assets/workspace-indexing-test-BPVxxY6W.js +0 -71
  1043. package/bundled-test-harness/assets/workspace-test-CWr7vFbg.js +0 -385
  1044. package/bundled-test-harness/assets/workspace-test-INNpQovc.js +0 -51
  1045. package/bundled-test-harness/assets/workspace-timestamp-labels-test-CigQb5wr.js +0 -68
  1046. package/bundled-test-harness/assets/workspace-unit-test-BwVKpuXT.js +0 -122
  1047. package/bundled-test-harness/assets/write-binary-file-test-BKP3gv1k.js +0 -124
  1048. package/bundled-test-harness/assets/write-text-file-test-B6ijTKTa.js +0 -191
  1049. package/bundled-test-harness/assets/zip-archive-test-C-PBzkTn.js +0 -285
  1050. package/bundled-test-harness/assets/zip-file-def-test-FyCzJT-9.js +0 -164
@@ -0,0 +1,1624 @@
1
+ import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
+ import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
3
+ import { Br as testRealmURL, Gn as APP_BOXEL_LLM_MODE, Gr as Tool, Jr as buildCommandFunctionNameFromResolvedRef, Kn as APP_BOXEL_MESSAGE_MSGTYPE, Lr as testRRI, Rc as Deferred, ar as APP_BOXEL_TOOL_REQUESTS_KEY, cr as APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE, lr as APP_BOXEL_TOOL_RESULT_WITH_OUTPUT_MSGTYPE, or as APP_BOXEL_TOOL_RESULT_EVENT_TYPE, qr as buildCommandFunctionName, sr as APP_BOXEL_TOOL_RESULT_REL_TYPE } from "./runtime-common-BTaLJEw-.js";
4
+ import { B as localId, O as baseRealm, q as skillCardRef } from "./constants-Icc0nFW-.js";
5
+ import { r as setOwner } from "./owner-CP0__uFm.js";
6
+ import { t as getOwner } from "./owner-BT6cj890.js";
7
+ import { wt as setComponentTemplate } from "./cache-DtDz7X5V-Wn8jRDfL.js";
8
+ import { H as templateFactory, S as on } from "./index-DaCZcoCY-CgzbilMy.js";
9
+ import "./modifier-D0EP-FQ7.js";
10
+ import "./component-BJO47HTh.js";
11
+ import "./template-factory-ds9s0u8l.js";
12
+ import { k as GridContainer } from "./components-Ck24ubaT.js";
13
+ import { t as CreateAiAssistantRoomTool } from "./create-ai-assistant-room-C41ylhDb.js";
14
+ import { M as waitUntil, T as settled, d as click, i as findAll, k as visit, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
15
+ import { t as OpenAiAssistantRoomTool } from "./open-ai-assistant-room-DNXUjg4T.js";
16
+ import { a as waitForRealmState, i as waitForCompletedCommandRequest, t as SendAiAssistantMessageTool } from "./send-ai-assistant-message-BJpusZZQ.js";
17
+ import { t as ShowCardTool } from "./show-card-CkLxtwMs.js";
18
+ import { t as SaveCardTool } from "./save-card-ijP2lSOP.js";
19
+ import { n as SearchCardsByTypeAndTitleTool } from "./search-cards-kYbYmtqA.js";
20
+ import { t as ViewVisuallyTool } from "./view-visually-QMl0ypqH.js";
21
+ import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
22
+ import { D as realmConfigCardJSON, F as setupLocalIndexing, H as testModuleRealm, I as setupOnSave, St as unregisterRealmServerRoute, Y as waitForNewRoomSkillsLoaded, a as SYSTEM_CARD_FIXTURE_CONTENTS, ct as setupApplicationTest, j as setupAcceptanceTestRealm, mt as setupAuthEndpoints, o as addSkillToAiAssistant, st as visitOperatorMode, t as setupMockMatrix, yt as registerRealmServerRoute, z as setupUserSubscription } from "./mock-matrix-FjsXmU7-.js";
23
+ import { r as getService } from "./dist-CPfIHBla.js";
24
+ import { A as field, C as card_api_exports, H as linksTo, U as linksToMany, a as CardDef, s as Component, w as contains } from "./card-api-Cc8uZunB.js";
25
+ import { t as string_default } from "./string-5IAMEUit.js";
26
+ import { t as CardsGrid } from "./cards-grid-CbyLapaw.js";
27
+ import { t as suspendGlobalErrorHook } from "./uncaught-exceptions-Cm9iqRb6.js";
28
+ //#region tests/acceptance/tools-test.gts
29
+ var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
30
+ var matrixRoomId = "";
31
+ var maybeBoomShouldBoom = true;
32
+ var linkEchoMessages = [];
33
+ var linkEchoProbe;
34
+ var savedMeetingCardId;
35
+ (0, import_qunit.module)("Acceptance | Tools tests", function(hooks) {
36
+ const showCardToolName = buildCommandFunctionNameFromResolvedRef({
37
+ module: "@cardstack/boxel-host/commands/show-card",
38
+ name: "default"
39
+ });
40
+ const viewVisuallyToolName = buildCommandFunctionNameFromResolvedRef({
41
+ module: "@cardstack/boxel-host/tools/view-visually",
42
+ name: "default"
43
+ });
44
+ setupApplicationTest(hooks);
45
+ setupLocalIndexing(hooks);
46
+ setupOnSave(hooks);
47
+ let mockMatrixUtils = setupMockMatrix(hooks, {
48
+ loggedInAs: "@testuser:localhost",
49
+ activeRealms: [baseRealm.url, testRealmURL]
50
+ });
51
+ let { simulateRemoteMessage, getRoomIds, getRoomEvents, getRoomState, createAndJoinRoom } = mockMatrixUtils;
52
+ function toolResultFor(roomId, toolCallId) {
53
+ return getRoomEvents(roomId).filter((event) => event.type === "app.boxel.toolResult" && event.content.commandRequestId === toolCallId).pop();
54
+ }
55
+ function describeToolResult(roomId, toolCallId) {
56
+ let content = toolResultFor(roomId, toolCallId)?.content;
57
+ return content ? `result is ${content["m.relates_to"]?.key} (${content.failureReason ?? "no failure reason"})` : "no result event";
58
+ }
59
+ hooks.beforeEach(async function() {
60
+ savedMeetingCardId = void 0;
61
+ linkEchoMessages = [];
62
+ linkEchoProbe = void 0;
63
+ matrixRoomId = await createAndJoinRoom({
64
+ sender: "@testuser:localhost",
65
+ name: "room-test"
66
+ });
67
+ setupUserSubscription();
68
+ setupAuthEndpoints();
69
+ class Pet extends CardDef {
70
+ static displayName = "Pet";
71
+ static {
72
+ decorateFieldV2(this.prototype, "name", [field], function() {
73
+ return contains(string_default);
74
+ });
75
+ }
76
+ #name = (initializeDeferredDecorator(this, "name"), void 0);
77
+ static {
78
+ decorateFieldV2(this.prototype, "favoriteTreat", [field], function() {
79
+ return contains(string_default);
80
+ });
81
+ }
82
+ #favoriteTreat = (initializeDeferredDecorator(this, "favoriteTreat"), void 0);
83
+ static {
84
+ decorateFieldV2(this.prototype, "cardTitle", [field], function() {
85
+ return contains(string_default, { computeVia: function() {
86
+ return this.name;
87
+ } });
88
+ });
89
+ }
90
+ #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
91
+ static embedded = class Embedded extends Component {
92
+ static {
93
+ setComponentTemplate(templateFactory({
94
+ "id": "mGs5q2q4",
95
+ "block": "[[[10,\"h3\"],[15,\"data-test-pet\",[30,1,[\"name\"]]],[12],[1,\"\\n \"],[8,[30,2,[\"name\"]],null,null,null],[1,\"\\n\"],[13]],[\"@model\",\"@fields\"],[]]",
96
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/acceptance/tools-test.gts",
97
+ "isStrictMode": true
98
+ }), this);
99
+ }
100
+ };
101
+ static isolated = class Isolated extends Component {
102
+ static {
103
+ setComponentTemplate(templateFactory({
104
+ "id": "N4AVF92C",
105
+ "block": "[[[8,[32,0],[[24,0,\"container\"]],null,[[\"default\"],[[[[1,\"\\n \"],[10,\"h2\"],[12],[8,[30,1,[\"cardTitle\"]],null,null,null],[13],[1,\"\\n \"],[10,0],[12],[1,\"\\n \"],[10,0],[12],[1,\"Favorite Treat: \"],[8,[30,1,[\"favoriteTreat\"]],null,null,null],[13],[1,\"\\n \"],[10,0],[14,\"data-test-editable-meta\",\"\"],[12],[1,\"\\n\"],[41,[30,2],[[[1,\" \"],[8,[30,1,[\"cardTitle\"]],null,null,null],[1,\"\\n is editable.\\n\"]],[]],[[[1,\" \"],[8,[30,1,[\"cardTitle\"]],null,null,null],[1,\"\\n is NOT editable.\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]]]]]],[\"@fields\",\"@canEdit\"],[\"if\"]]",
106
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/acceptance/tools-test.gts",
107
+ "scope": () => [GridContainer],
108
+ "isStrictMode": true
109
+ }), this);
110
+ }
111
+ };
112
+ }
113
+ class ScheduleMeetingInput extends CardDef {
114
+ static {
115
+ decorateFieldV2(this.prototype, "topic", [field], function() {
116
+ return contains(string_default);
117
+ });
118
+ }
119
+ #topic = (initializeDeferredDecorator(this, "topic"), void 0);
120
+ static {
121
+ decorateFieldV2(this.prototype, "participants", [field], function() {
122
+ return linksToMany(() => Person);
123
+ });
124
+ }
125
+ #participants = (initializeDeferredDecorator(this, "participants"), void 0);
126
+ }
127
+ class Meeting extends CardDef {
128
+ static displayName = "Meeting";
129
+ static {
130
+ decorateFieldV2(this.prototype, "participants", [field], function() {
131
+ return linksToMany(() => Person);
132
+ });
133
+ }
134
+ #participants = (initializeDeferredDecorator(this, "participants"), void 0);
135
+ static {
136
+ decorateFieldV2(this.prototype, "topic", [field], function() {
137
+ return contains(string_default);
138
+ });
139
+ }
140
+ #topic = (initializeDeferredDecorator(this, "topic"), void 0);
141
+ }
142
+ class ScheduleMeetingCommand extends Tool {
143
+ static displayName = "ScheduleMeetingCommand";
144
+ static actionVerb = "Schedule";
145
+ async getInputType() {
146
+ return ScheduleMeetingInput;
147
+ }
148
+ async run(input) {
149
+ let meeting = new Meeting({
150
+ topic: "unset topic",
151
+ participants: input.participants
152
+ });
153
+ savedMeetingCardId = (await new SaveCardTool(this.toolContext).execute({
154
+ card: meeting,
155
+ realm: testRealmURL
156
+ }))?.id;
157
+ let { roomId } = await new CreateAiAssistantRoomTool(this.toolContext).execute({ name: "AI Assistant Room" });
158
+ let { eventId } = await new SendAiAssistantMessageTool(this.toolContext).execute({
159
+ roomId,
160
+ prompt: `Change the topic of the meeting to "${input.topic}"`,
161
+ attachedCards: [meeting]
162
+ });
163
+ await waitForCompletedCommandRequest(this.toolContext, roomId, (toolRequest) => toolRequest.name === "patchCardInstance", { afterEventId: eventId });
164
+ await waitForRealmState(this.toolContext, testRealmURL, () => meeting.topic === input.topic);
165
+ await new ShowCardTool(this.toolContext).execute({ cardId: meeting.id });
166
+ }
167
+ }
168
+ class RealmViewerCommand extends ViewVisuallyTool {
169
+ async run() {
170
+ let { ViewVisuallyResult, AttachedImageField } = await this.loadToolModule();
171
+ return new ViewVisuallyResult({
172
+ sourceUrl: `${testRealmURL}Pet/mango`,
173
+ kind: "card",
174
+ format: "isolated",
175
+ attachedImages: [new AttachedImageField({
176
+ name: "mango.png",
177
+ sourceUrl: "boxel-local://capture/mango.png",
178
+ url: "mxc://localhost/mango",
179
+ contentType: "image/png",
180
+ contentSize: 68
181
+ })]
182
+ });
183
+ }
184
+ }
185
+ class MaybeBoomCommand extends Tool {
186
+ static displayName = "MaybeBoomCommand";
187
+ static actionVerb = "Boom?";
188
+ async getInputType() {}
189
+ async run() {
190
+ if (maybeBoomShouldBoom) throw new Error("Boom!");
191
+ }
192
+ }
193
+ class SearchAndOpenCardCommand extends Tool {
194
+ static displayName = "SearchAndOpenCardCommand";
195
+ static actionVerb = "Search";
196
+ async getInputType() {
197
+ return new SearchCardsByTypeAndTitleTool(this.toolContext).getInputType();
198
+ }
199
+ async run(input) {
200
+ let searchResult = await new SearchCardsByTypeAndTitleTool(this.toolContext).execute(input);
201
+ if (searchResult.cardIds.length > 0) await new ShowCardTool(this.toolContext).execute({ cardId: searchResult.cardIds[0] });
202
+ }
203
+ }
204
+ class GreetingCard extends CardDef {
205
+ static displayName = "GreetingCard";
206
+ static {
207
+ decorateFieldV2(this.prototype, "message", [field], function() {
208
+ return contains(string_default);
209
+ });
210
+ }
211
+ #message = (initializeDeferredDecorator(this, "message"), void 0);
212
+ static isolated = class Isolated extends Component {
213
+ static {
214
+ setComponentTemplate(templateFactory({
215
+ "id": "QmtQZq+z",
216
+ "block": "[[[10,\"h2\"],[14,\"data-test-command-runner-greeting\",\"\"],[12],[8,[30,1,[\"message\"]],null,null,null],[13]],[\"@fields\"],[]]",
217
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/acceptance/tools-test.gts",
218
+ "isStrictMode": true
219
+ }), this);
220
+ }
221
+ };
222
+ }
223
+ class HelloCommand extends Tool {
224
+ static displayName = "HelloCommand";
225
+ async getInputType() {}
226
+ async run() {
227
+ return new GreetingCard({ message: "Hello from command runner" });
228
+ }
229
+ }
230
+ class Person extends CardDef {
231
+ static displayName = "Person";
232
+ static {
233
+ decorateFieldV2(this.prototype, "firstName", [field], function() {
234
+ return contains(string_default);
235
+ });
236
+ }
237
+ #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
238
+ static {
239
+ decorateFieldV2(this.prototype, "lastName", [field], function() {
240
+ return contains(string_default);
241
+ });
242
+ }
243
+ #lastName = (initializeDeferredDecorator(this, "lastName"), void 0);
244
+ static {
245
+ decorateFieldV2(this.prototype, "pet", [field], function() {
246
+ return linksTo(Pet);
247
+ });
248
+ }
249
+ #pet = (initializeDeferredDecorator(this, "pet"), void 0);
250
+ static {
251
+ decorateFieldV2(this.prototype, "friends", [field], function() {
252
+ return linksToMany(Pet);
253
+ });
254
+ }
255
+ #friends = (initializeDeferredDecorator(this, "friends"), void 0);
256
+ static {
257
+ decorateFieldV2(this.prototype, "firstLetterOfTheName", [field], function() {
258
+ return contains(string_default, { computeVia: function() {
259
+ if (!this.firstName) return;
260
+ return this.firstName[0];
261
+ } });
262
+ });
263
+ }
264
+ #firstLetterOfTheName = (initializeDeferredDecorator(this, "firstLetterOfTheName"), void 0);
265
+ static {
266
+ decorateFieldV2(this.prototype, "cardTitle", [field], function() {
267
+ return contains(string_default, { computeVia: function() {
268
+ return [this.firstName, this.lastName].filter(Boolean).join(" ");
269
+ } });
270
+ });
271
+ }
272
+ #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
273
+ static isolated = class Isolated extends Component {
274
+ runScheduleMeetingCommand = async () => {
275
+ let toolContext = this.args.context?.toolContext;
276
+ if (!toolContext) {
277
+ console.error("No command context found");
278
+ return;
279
+ }
280
+ let scheduleMeeting = new ScheduleMeetingCommand(toolContext);
281
+ setOwner(scheduleMeeting, getOwner(this));
282
+ await scheduleMeeting.execute({
283
+ topic: "Meeting with Hassan",
284
+ participants: [this.args.model]
285
+ });
286
+ };
287
+ runOpenAiAssistantRoomCommand = async () => {
288
+ let toolContext = this.args.context?.toolContext;
289
+ if (!toolContext) {
290
+ console.error("No command context found");
291
+ return;
292
+ }
293
+ await new OpenAiAssistantRoomTool(toolContext).execute({ roomId: getRoomIds().pop() });
294
+ };
295
+ runMaybeBoomCommandViaAiAssistant = async () => {
296
+ let toolContext = this.args.context?.toolContext;
297
+ if (!toolContext) {
298
+ console.error("No command context found");
299
+ return;
300
+ }
301
+ let { roomId } = await new CreateAiAssistantRoomTool(toolContext).execute({
302
+ name: "AI Assistant Room",
303
+ enabledSkills: [await getService("store").get(`${testRealmURL}Skill/useful-commands`)]
304
+ });
305
+ await new SendAiAssistantMessageTool(toolContext).execute({
306
+ prompt: "Let's find out if it will boom",
307
+ roomId
308
+ });
309
+ };
310
+ static {
311
+ setComponentTemplate(templateFactory({
312
+ "id": "dvMmt382",
313
+ "block": "[[[10,\"h2\"],[15,\"data-test-person\",[30,1,[\"firstName\"]]],[12],[1,\"\\n \"],[8,[30,2,[\"firstName\"]],null,null,null],[1,\"\\n\"],[13],[1,\"\\n\"],[10,2],[15,\"data-test-first-letter-of-the-name\",[30,1,[\"firstLetterOfTheName\"]]],[12],[1,\"\\n \"],[8,[30,2,[\"firstLetterOfTheName\"]],null,null,null],[1,\"\\n\"],[13],[1,\"\\nPet:\\n\"],[8,[30,2,[\"pet\"]],null,null,null],[1,\"\\nFriends:\\n\"],[8,[30,2,[\"friends\"]],null,null,null],[1,\"\\n\"],[11,\"button\"],[24,\"data-test-schedule-meeting-button\",\"\"],[4,[32,0],[\"click\",[30,0,[\"runScheduleMeetingCommand\"]]],null],[12],[1,\"Schedule meeting\"],[13],[1,\"\\n\"],[11,\"button\"],[24,\"data-test-open-ai-assistant-room-button\",\"\"],[4,[32,0],[\"click\",[30,0,[\"runOpenAiAssistantRoomCommand\"]]],null],[12],[1,\"Open AI Assistant Room\"],[13],[1,\"\\n\"],[11,\"button\"],[24,\"data-test-maybe-boom-via-ai-assistant\",\"\"],[4,[32,0],[\"click\",[30,0,[\"runMaybeBoomCommandViaAiAssistant\"]]],null],[12],[1,\"Maybe Boom\"],[13]],[\"@model\",\"@fields\"],[]]",
314
+ "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/acceptance/tools-test.gts",
315
+ "scope": () => [on],
316
+ "isStrictMode": true
317
+ }), this);
318
+ }
319
+ };
320
+ }
321
+ class LinkEchoInput extends CardDef {
322
+ static {
323
+ decorateFieldV2(this.prototype, "pet", [field], function() {
324
+ return linksTo(Pet);
325
+ });
326
+ }
327
+ #pet = (initializeDeferredDecorator(this, "pet"), void 0);
328
+ static {
329
+ decorateFieldV2(this.prototype, "friends", [field], function() {
330
+ return linksToMany(Pet);
331
+ });
332
+ }
333
+ #friends = (initializeDeferredDecorator(this, "friends"), void 0);
334
+ }
335
+ let echoLinks = (input) => {
336
+ linkEchoProbe?.(input);
337
+ let message = `pet=${input.pet?.name ?? "none"}; friends=${(input.friends ?? []).map((friend) => friend.name).join(", ")}`;
338
+ linkEchoMessages.push(message);
339
+ return new GreetingCard({ message });
340
+ };
341
+ class LinkEchoCommand extends Tool {
342
+ static displayName = "LinkEchoCommand";
343
+ requireInputFields = ["pet"];
344
+ async getInputType() {
345
+ return LinkEchoInput;
346
+ }
347
+ async run(input) {
348
+ return echoLinks(input);
349
+ }
350
+ }
351
+ class UnexportedLinkEchoInput extends CardDef {
352
+ static {
353
+ decorateFieldV2(this.prototype, "pet", [field], function() {
354
+ return linksTo(Pet);
355
+ });
356
+ }
357
+ #pet = (initializeDeferredDecorator(this, "pet"), void 0);
358
+ static {
359
+ decorateFieldV2(this.prototype, "friends", [field], function() {
360
+ return linksToMany(Pet);
361
+ });
362
+ }
363
+ #friends = (initializeDeferredDecorator(this, "friends"), void 0);
364
+ }
365
+ class UnexportedLinkEchoCommand extends Tool {
366
+ static displayName = "UnexportedLinkEchoCommand";
367
+ async getInputType() {
368
+ return UnexportedLinkEchoInput;
369
+ }
370
+ async run(input) {
371
+ return echoLinks(input);
372
+ }
373
+ }
374
+ let mangoPet = new Pet({ name: "Mango" });
375
+ await setupAcceptanceTestRealm({
376
+ mockMatrixUtils,
377
+ contents: {
378
+ ...SYSTEM_CARD_FIXTURE_CONTENTS,
379
+ "person.gts": {
380
+ Person,
381
+ Meeting
382
+ },
383
+ "pet.gts": { Pet },
384
+ "Pet/ringo.json": new Pet({ name: "Ringo" }),
385
+ "AiCommandExample/london.json": { data: {
386
+ type: "card",
387
+ attributes: { location: "London" },
388
+ meta: { adoptsFrom: {
389
+ module: `${testModuleRealm}ai-command-example`,
390
+ name: "AiCommandExample"
391
+ } }
392
+ } },
393
+ "Person/hassan.json": new Person({
394
+ firstName: "Hassan",
395
+ lastName: "Abdel-Rahman",
396
+ pet: mangoPet,
397
+ friends: [mangoPet]
398
+ }),
399
+ "Pet/mango.json": mangoPet,
400
+ "Pet/vangogh.json": new Pet({ name: "Van Gogh" }),
401
+ "Person/fadhlan.json": new Person({
402
+ firstName: "Fadhlan",
403
+ pet: mangoPet,
404
+ friends: [mangoPet]
405
+ }),
406
+ "maybe-boom-command.ts": { default: MaybeBoomCommand },
407
+ "realm-viewer-command.ts": { default: RealmViewerCommand },
408
+ "command-runner-hello-command.ts": {
409
+ GreetingCard,
410
+ default: HelloCommand
411
+ },
412
+ "link-echo-command.ts": {
413
+ LinkEchoInput,
414
+ default: LinkEchoCommand
415
+ },
416
+ "unexported-link-echo-command.ts": { default: UnexportedLinkEchoCommand },
417
+ "search-and-open-card-command.ts": { default: SearchAndOpenCardCommand },
418
+ "Skill/useful-commands.json": { data: {
419
+ type: "card",
420
+ attributes: {
421
+ instructions: "Here are few commands you might find useful: * switch-submode: use this with \"code\" to go to code mode and \"interact\" to go to interact mode. * search-cards-by-type-and-title: search for cards by name or description.",
422
+ commands: [
423
+ {
424
+ codeRef: {
425
+ name: "SearchCardsByTypeAndTitleTool",
426
+ module: "@cardstack/boxel-host/commands/search-cards"
427
+ },
428
+ requiresApproval: true
429
+ },
430
+ {
431
+ codeRef: {
432
+ name: "default",
433
+ module: "@cardstack/boxel-host/commands/switch-submode"
434
+ },
435
+ requiresApproval: true
436
+ },
437
+ {
438
+ codeRef: {
439
+ name: "default",
440
+ module: `/test/maybe-boom-command`
441
+ },
442
+ requiresApproval: false
443
+ },
444
+ {
445
+ codeRef: {
446
+ name: "default",
447
+ module: "../search-and-open-card-command"
448
+ },
449
+ requiresApproval: true
450
+ }
451
+ ],
452
+ cardTitle: "Useful Commands",
453
+ cardDescription: null,
454
+ cardThumbnailURL: null
455
+ },
456
+ meta: { adoptsFrom: skillCardRef }
457
+ } },
458
+ "Skill/link-echo.json": { data: {
459
+ type: "card",
460
+ attributes: {
461
+ instructions: "Use link-echo to name the pets you are given.",
462
+ commands: [{
463
+ codeRef: {
464
+ name: "default",
465
+ module: "../link-echo-command"
466
+ },
467
+ requiresApproval: true
468
+ }],
469
+ cardTitle: "Link echo",
470
+ cardDescription: null,
471
+ cardThumbnailURL: null
472
+ },
473
+ meta: { adoptsFrom: skillCardRef }
474
+ } },
475
+ "Skill/link-echo-unexported.json": { data: {
476
+ type: "card",
477
+ attributes: {
478
+ instructions: "Use link-echo to name the pets you are given.",
479
+ commands: [{
480
+ codeRef: {
481
+ name: "default",
482
+ module: "../unexported-link-echo-command"
483
+ },
484
+ requiresApproval: true
485
+ }],
486
+ cardTitle: "Link echo (unexported input)",
487
+ cardDescription: null,
488
+ cardThumbnailURL: null
489
+ },
490
+ meta: { adoptsFrom: skillCardRef }
491
+ } },
492
+ "Skill/realm-seeing.json": { data: {
493
+ type: "card",
494
+ attributes: {
495
+ instructions: "Use the realm viewer to look at a card.",
496
+ commands: [{
497
+ codeRef: {
498
+ name: "default",
499
+ module: "../realm-viewer-command"
500
+ },
501
+ requiresApproval: false
502
+ }],
503
+ cardTitle: "Realm seeing",
504
+ cardDescription: null,
505
+ cardThumbnailURL: null
506
+ },
507
+ meta: { adoptsFrom: skillCardRef }
508
+ } },
509
+ "Skill/seeing.json": { data: {
510
+ type: "card",
511
+ attributes: {
512
+ instructions: "Use view-visually to look at a card.",
513
+ commands: [{
514
+ codeRef: {
515
+ name: "default",
516
+ module: "@cardstack/boxel-host/tools/view-visually"
517
+ },
518
+ requiresApproval: false
519
+ }],
520
+ cardTitle: "Seeing",
521
+ cardDescription: null,
522
+ cardThumbnailURL: null
523
+ },
524
+ meta: { adoptsFrom: skillCardRef }
525
+ } },
526
+ "Skill/card-editing.json": { data: {
527
+ type: "card",
528
+ attributes: {
529
+ instructions: "Use show-card to bring a card into view once you know its id.",
530
+ commands: [{
531
+ codeRef: {
532
+ name: "default",
533
+ module: "@cardstack/boxel-host/commands/show-card"
534
+ },
535
+ requiresApproval: false
536
+ }],
537
+ cardTitle: "Card Editing",
538
+ cardDescription: null,
539
+ cardThumbnailURL: null
540
+ },
541
+ meta: { adoptsFrom: skillCardRef }
542
+ } },
543
+ "index.json": new CardsGrid(),
544
+ "realm.json": realmConfigCardJSON({
545
+ name: "Test Workspace B",
546
+ backgroundURL: "/test-fixtures/realm-images/pawel-czerwinski-Ly-ZLa-A5jti-Y-unsplash.jpg",
547
+ iconURL: "/test-fixtures/realm-images/boxel-logo.png"
548
+ }),
549
+ "skills/read-tools/SKILL.md": [
550
+ "---",
551
+ "name: read-tools",
552
+ "boxel:",
553
+ " kind: skill",
554
+ " tools:",
555
+ " - codeRef:",
556
+ " module: '@cardstack/boxel-host/commands/switch-submode'",
557
+ " name: default",
558
+ "---",
559
+ "# Read Tools",
560
+ "",
561
+ "Use switch-submode to move between interact and code modes.",
562
+ ""
563
+ ].join("\n"),
564
+ "skills/decoy/SKILL.md": [
565
+ "---",
566
+ "name: decoy",
567
+ "boxel:",
568
+ " kind: skill",
569
+ " tools:",
570
+ " - codeRef:",
571
+ " module: /test/maybe-boom-command",
572
+ " name: default",
573
+ "---",
574
+ "# Decoy",
575
+ "",
576
+ "Declares only maybe-boom.",
577
+ ""
578
+ ].join("\n"),
579
+ "hi.txt": "hi"
580
+ }
581
+ });
582
+ });
583
+ (0, import_qunit.test)("OpenAiAssistantRoomTool opens the AI assistant room", async function(assert) {
584
+ await visitOperatorMode({ stacks: [[{
585
+ id: `${testRealmURL}Person/hassan`,
586
+ format: "isolated"
587
+ }]] });
588
+ await click("[data-test-schedule-meeting-button]");
589
+ await click("[data-test-open-ai-assistant-room-button]");
590
+ await waitFor("[data-room-settled]");
591
+ await waitFor("[data-test-room-name=\"AI Assistant Room\"]");
592
+ assert.dom("[data-test-ai-message-content]").includesText("Change the topic of the meeting to \"Meeting with Hassan\"");
593
+ });
594
+ (0, import_qunit.module)("command-runner", function() {
595
+ function setCommandRunnerRequest(requestId, nonce, command, input) {
596
+ window.localStorage.setItem(`boxel-command-request:${requestId}`, JSON.stringify({
597
+ command,
598
+ input,
599
+ nonce,
600
+ createdAt: Date.now()
601
+ }));
602
+ }
603
+ (0, import_qunit.test)("route renders command result card", async function(assert) {
604
+ let requestId = "command-runner-test-success";
605
+ let nonce = "1";
606
+ setCommandRunnerRequest(requestId, nonce, `${testRealmURL}command-runner-hello-command/default`, null);
607
+ await visit(`/command-runner/${requestId}/${nonce}`);
608
+ await waitFor("[data-prerender][data-prerender-status=\"ready\"]");
609
+ assert.dom("[data-test-command-runner-greeting]").includesText("Hello from command runner");
610
+ });
611
+ (0, import_qunit.test)("route captures command runtime error", async function(assert) {
612
+ maybeBoomShouldBoom = true;
613
+ let requestId = "command-runner-test-error";
614
+ let nonce = "2";
615
+ setCommandRunnerRequest(requestId, nonce, `${testRealmURL}maybe-boom-command/default`, null);
616
+ await visit(`/command-runner/${requestId}/${nonce}`);
617
+ await waitFor("[data-prerender][data-prerender-status=\"error\"]");
618
+ assert.dom("[data-prerender-error]").includesText("Boom!");
619
+ assert.dom("[data-test-command-runner-greeting]").doesNotExist();
620
+ });
621
+ (0, import_qunit.test)("resolves linksTo and linksToMany inputs specified by card id", async function(assert) {
622
+ let requestId = "command-runner-test-linksto";
623
+ let nonce = "3";
624
+ setCommandRunnerRequest(requestId, nonce, `${testRealmURL}link-echo-command/default`, {
625
+ pet: `${testRealmURL}Pet/ringo`,
626
+ friends: [`${testRealmURL}Pet/mango`, `${testRealmURL}Pet/vangogh`]
627
+ });
628
+ await visit(`/command-runner/${requestId}/${nonce}`);
629
+ await waitFor("[data-prerender][data-prerender-status=\"ready\"]");
630
+ assert.dom("[data-test-command-runner-greeting]").includesText("pet=Ringo");
631
+ assert.dom("[data-test-command-runner-greeting]").includesText("friends=Mango, Van Gogh");
632
+ });
633
+ (0, import_qunit.test)("captures an error when a linksTo input id cannot be resolved", async function(assert) {
634
+ let requestId = "command-runner-test-linksto-missing";
635
+ let nonce = "4";
636
+ setCommandRunnerRequest(requestId, nonce, `${testRealmURL}link-echo-command/default`, { pet: `${testRealmURL}Pet/does-not-exist` });
637
+ await visit(`/command-runner/${requestId}/${nonce}`);
638
+ await waitFor("[data-prerender][data-prerender-status=\"error\"]");
639
+ assert.dom("[data-prerender-error]").includesText("Pet/does-not-exist");
640
+ assert.dom("[data-test-command-runner-greeting]").doesNotExist();
641
+ });
642
+ });
643
+ (0, import_qunit.test)("SaveCardTool returns the saved card with its id set", async function(assert) {
644
+ await visitOperatorMode({ stacks: [[{
645
+ id: `${testRealmURL}index`,
646
+ format: "isolated"
647
+ }]] });
648
+ const testCard = `${testRealmURL}Person/hassan`;
649
+ await click("[data-test-boxel-filter-list-button=\"All Cards\"]");
650
+ await click(`[data-test-stack-card="${testRealmURL}index"] [data-test-cards-grid-item="${testCard}"] .field-component-card`);
651
+ await click("[data-test-schedule-meeting-button]");
652
+ await waitUntil(() => savedMeetingCardId !== void 0);
653
+ assert.ok(savedMeetingCardId, "SaveCardTool returned the saved card");
654
+ assert.true(savedMeetingCardId.startsWith(testRealmURL), "saved card id is a URL within the test realm");
655
+ });
656
+ (0, import_qunit.test)("a scripted command can create a card, update it and show it", async function(assert) {
657
+ await visitOperatorMode({ stacks: [[{
658
+ id: `${testRealmURL}index`,
659
+ format: "isolated"
660
+ }]] });
661
+ const testCard = `${testRealmURL}Person/hassan`;
662
+ await click("[data-test-boxel-filter-list-button=\"All Cards\"]");
663
+ await click(`[data-test-stack-card="${testRealmURL}index"] [data-test-cards-grid-item="${testCard}"] .field-component-card`);
664
+ await click("[data-test-schedule-meeting-button]");
665
+ await waitUntil(() => getRoomIds().length > 0);
666
+ let roomId = getRoomIds().pop();
667
+ let message = await waitUntil(() => {
668
+ let roomEvents = getRoomEvents(roomId);
669
+ for (let i = roomEvents.length - 1; i >= 0; i--) {
670
+ let event = roomEvents[i];
671
+ if (event.content.msgtype === "app.boxel.message") return event;
672
+ }
673
+ });
674
+ let meetingCardId = JSON.parse(message.content.data).attachedCards[0].sourceUrl;
675
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
676
+ body: "",
677
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
678
+ format: "org.matrix.custom.html",
679
+ isStreamingFinished: true,
680
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
681
+ name: "patchCardInstance",
682
+ id: "794c52f1-b444-47bd-8b2c-5d03ba7ef042",
683
+ arguments: JSON.stringify({
684
+ description: "Change the topic of the meeting to \"Meeting with Hassan\"",
685
+ attributes: {
686
+ cardId: meetingCardId,
687
+ patch: { attributes: { topic: "Meeting with Hassan" } }
688
+ }
689
+ })
690
+ }],
691
+ data: { context: { agentId: getService("matrix-service").agentId } }
692
+ });
693
+ await click("[data-test-open-ai-assistant]");
694
+ getService("ai-assistant-panel-service").enterRoom(roomId);
695
+ await waitFor(`[data-room-id="${roomId}"][data-room-settled]`);
696
+ let applySelector = "[data-test-message-idx=\"1\"] [data-test-tool-call-apply]";
697
+ try {
698
+ await waitFor(applySelector, { timeout: 1e4 });
699
+ } catch (err) {
700
+ let messageIdxs = findAll("[data-test-message-idx]").map((el) => el.getAttribute("data-test-message-idx"));
701
+ let applyButtons = findAll("[data-test-tool-call-apply]").map((el) => el.getAttribute("data-test-tool-call-apply"));
702
+ let roomElements = findAll("[data-room-id]").map((el) => ({
703
+ roomId: el.getAttribute("data-room-id"),
704
+ settled: el.getAttribute("data-room-settled"),
705
+ roomName: el.getAttribute("data-test-room-name")
706
+ }));
707
+ let sessionPreparation = findAll("[data-test-session-preparation]").length;
708
+ let matrixService = getService("matrix-service");
709
+ let aiAssistantPanelService = getService("ai-assistant-panel-service");
710
+ let roomResource = matrixService.roomResources?.get?.(roomId);
711
+ let renderedRoomResource = matrixService.roomResources?.get?.(matrixService.currentRoomId);
712
+ let serviceState = {
713
+ currentRoomId: String(matrixService.currentRoomId ?? ""),
714
+ isLoadingTimeline: Boolean(matrixService.isLoadingTimeline),
715
+ isPreparingSession: Boolean(aiAssistantPanelService.isPreparingSession),
716
+ loadingRooms: Boolean(aiAssistantPanelService.loadingRooms),
717
+ aiSessionRoomIds: (aiAssistantPanelService.aiSessionRooms ?? []).map((r) => String(r.roomId ?? ""))
718
+ };
719
+ let resourceState = (label, r) => ({
720
+ label,
721
+ present: Boolean(r),
722
+ roomId: String(r?.roomId ?? ""),
723
+ hasMatrixRoom: Boolean(r?.matrixRoom),
724
+ memberIds: Array.isArray(r?.matrixRoom?.memberIds) ? r.matrixRoom.memberIds.map((m) => String(m)) : [],
725
+ hasRoomState: Boolean(r?.matrixRoom?.hasRoomState),
726
+ eventsCount: Number(r?.matrixRoom?.events?.length ?? 0),
727
+ messagesCount: Number(r?.messages?.length ?? 0),
728
+ isProcessing: Boolean(r?.isProcessing)
729
+ });
730
+ let roomEventsSummary = getRoomEvents(roomId).map((e) => ({
731
+ eventId: e.event_id,
732
+ type: e.type,
733
+ sender: e.sender,
734
+ stateKey: e.state_key,
735
+ msgtype: e.content?.msgtype,
736
+ hasCommandRequests: Array.isArray(e.content?.[APP_BOXEL_TOOL_REQUESTS_KEY])
737
+ }));
738
+ console.error("[scripted-command-test] apply button never rendered. Diagnostic:", JSON.stringify({
739
+ testRoomId: roomId,
740
+ renderedRoomElements: roomElements,
741
+ renderedMessageIdxs: messageIdxs,
742
+ renderedApplyButtonStates: applyButtons,
743
+ sessionPreparationElements: sessionPreparation,
744
+ serviceState,
745
+ resourceForTestRoom: resourceState("roomResources.get(testRoomId)", roomResource),
746
+ resourceForCurrentRoom: resourceState("roomResources.get(currentRoomId)", renderedRoomResource),
747
+ roomEvents: roomEventsSummary
748
+ }, null, 2));
749
+ throw err;
750
+ }
751
+ await click("[data-test-message-idx=\"1\"] [data-test-pretui-tool-gate-action=\"apply\"]");
752
+ await waitUntil(() => findAll("[data-test-operator-mode-stack]").length === 2);
753
+ assert.dom("[data-test-operator-mode-stack]").exists({ count: 2 });
754
+ assert.dom("[data-test-operator-mode-stack=\"1\"] [data-test-stack-card-index=\"0\"]").includesText("Meeting with Hassan");
755
+ });
756
+ (0, import_qunit.test)("a host command added from a skill can be executed when clicked on", async function(assert) {
757
+ await visitOperatorMode({
758
+ stacks: [[{
759
+ id: `${testRealmURL}index`,
760
+ format: "isolated"
761
+ }]],
762
+ aiAssistantOpen: true
763
+ });
764
+ await waitFor("[data-room-settled]");
765
+ await addSkillToAiAssistant(`${testRealmURL}Skill/useful-commands`);
766
+ let roomId = getRoomIds().pop();
767
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
768
+ body: "",
769
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
770
+ format: "org.matrix.custom.html",
771
+ isStreamingFinished: true,
772
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
773
+ id: "abc123",
774
+ name: "switch-submode_dd88",
775
+ arguments: JSON.stringify({
776
+ description: "Switching to code submode",
777
+ attributes: { submode: "code" }
778
+ })
779
+ }]
780
+ });
781
+ await settled();
782
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-pretui-tool-row-title]").containsText("Switching to code submode");
783
+ await click("[data-test-message-idx=\"0\"] [data-test-pretui-tool-gate-action=\"apply\"]");
784
+ await waitFor("[data-test-submode-switcher=code]", { timeout: 5e3 });
785
+ assert.dom("[data-test-submode-switcher=code]").exists();
786
+ await waitUntil(() => getRoomIds().length > 0 && getRoomEvents(roomId).find((m) => m.content.msgtype === "app.boxel.toolResultWithNoOutput"), {
787
+ timeout: 5e3,
788
+ timeoutMessage: "timed out waiting for command result event"
789
+ });
790
+ let message = getRoomEvents(roomId).find((m) => m.content.msgtype === APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE);
791
+ assert.strictEqual(message.content.msgtype, APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE);
792
+ assert.strictEqual(message.content["m.relates_to"]?.rel_type, APP_BOXEL_TOOL_RESULT_REL_TYPE);
793
+ assert.strictEqual(message.content["m.relates_to"]?.key, "applied");
794
+ assert.strictEqual(message.content.commandRequestId, "abc123");
795
+ });
796
+ (0, import_qunit.test)("a userland command added from a skill can be executed when clicked on", async function(assert) {
797
+ await visitOperatorMode({
798
+ stacks: [[{
799
+ id: `${testRealmURL}index`,
800
+ format: "isolated"
801
+ }]],
802
+ aiAssistantOpen: true
803
+ });
804
+ await waitFor("[data-room-settled]");
805
+ await addSkillToAiAssistant(`${testRealmURL}Skill/useful-commands`);
806
+ let roomId = getRoomIds().pop();
807
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
808
+ body: "",
809
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
810
+ format: "org.matrix.custom.html",
811
+ isStreamingFinished: true,
812
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
813
+ id: "29e8addb-197b-4d6d-b0a9-547959bf7c96",
814
+ name: buildCommandFunctionName({
815
+ module: testRRI("search-and-open-card-command"),
816
+ name: "default"
817
+ }, void 0, getService("network").virtualNetwork),
818
+ arguments: JSON.stringify({
819
+ description: "Finding and opening Hassan card",
820
+ attributes: { cardTitle: "Hassan" }
821
+ })
822
+ }]
823
+ });
824
+ await waitFor("[data-test-message-idx=\"0\"]");
825
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-pretui-tool-row-title]").containsText("Finding and opening Hassan card");
826
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-pretui-tool-gate-action=\"apply\"]").containsText("Search");
827
+ await click("[data-test-message-idx=\"0\"] [data-test-pretui-tool-gate-action=\"apply\"]");
828
+ assert.dom("[data-test-operator-mode-stack=\"1\"] [data-test-stack-card-index=\"0\"]").includesText("Person - Hassan Abdel-Rahman");
829
+ await waitUntil(() => getRoomIds().length > 0);
830
+ let message = getRoomEvents(roomId).pop();
831
+ assert.strictEqual(message.content.msgtype, APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE);
832
+ assert.strictEqual(message.content["m.relates_to"]?.rel_type, APP_BOXEL_TOOL_RESULT_REL_TYPE);
833
+ assert.strictEqual(message.content["m.relates_to"]?.key, "applied");
834
+ assert.strictEqual(message.content.commandRequestId, "29e8addb-197b-4d6d-b0a9-547959bf7c96");
835
+ });
836
+ function simulateSkillReadResult(roomId, sourceSkillUrl, functionName) {
837
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
838
+ msgtype: APP_BOXEL_TOOL_RESULT_WITH_OUTPUT_MSGTYPE,
839
+ commandRequestId: "read-1",
840
+ "m.relates_to": {
841
+ rel_type: APP_BOXEL_TOOL_RESULT_REL_TYPE,
842
+ key: "applied",
843
+ event_id: "earlier-bot-message"
844
+ },
845
+ data: {
846
+ attachedFiles: [],
847
+ discoveredTools: [{
848
+ sourceSkillUrl,
849
+ codeRef: {
850
+ module: "@cardstack/boxel-host/commands/switch-submode",
851
+ name: "default"
852
+ },
853
+ functionName,
854
+ requiresApproval: true,
855
+ definition: {
856
+ type: "function",
857
+ function: {
858
+ name: functionName,
859
+ description: "Switch between interact and code submodes",
860
+ parameters: {
861
+ type: "object",
862
+ properties: {}
863
+ }
864
+ }
865
+ }
866
+ }]
867
+ }
868
+ }, { type: APP_BOXEL_TOOL_RESULT_EVENT_TYPE });
869
+ }
870
+ (0, import_qunit.test)("a tool from a skill read via readRealmFile executes after approval", async function(assert) {
871
+ await visitOperatorMode({
872
+ stacks: [[{
873
+ id: `${testRealmURL}index`,
874
+ format: "isolated"
875
+ }]],
876
+ aiAssistantOpen: true
877
+ });
878
+ await waitFor("[data-room-settled]");
879
+ let roomId = getRoomIds().pop();
880
+ simulateSkillReadResult(roomId, `${testRealmURL}skills/read-tools/SKILL.md`, "switch-submode_dd88");
881
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
882
+ body: "",
883
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
884
+ format: "org.matrix.custom.html",
885
+ isStreamingFinished: true,
886
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
887
+ id: "call-1",
888
+ name: "switch-submode_dd88",
889
+ arguments: JSON.stringify({
890
+ description: "Switching to code submode",
891
+ attributes: { submode: "code" }
892
+ })
893
+ }]
894
+ });
895
+ await settled();
896
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply]").exists("the verified read-skill tool offers approval, not auto-run");
897
+ await click("[data-test-message-idx=\"0\"] [data-test-pretui-tool-gate-action=\"apply\"]");
898
+ await waitFor("[data-test-submode-switcher=code]", { timeout: 5e3 });
899
+ assert.dom("[data-test-submode-switcher=code]").exists();
900
+ await waitUntil(() => getRoomEvents(roomId).find((m) => m.content.msgtype === "app.boxel.toolResultWithNoOutput" && m.content.commandRequestId === "call-1"), {
901
+ timeout: 5e3,
902
+ timeoutMessage: "timed out waiting for command result event"
903
+ });
904
+ let message = getRoomEvents(roomId).find((m) => m.content.msgtype === "app.boxel.toolResultWithNoOutput" && m.content.commandRequestId === "call-1");
905
+ assert.strictEqual(message.content["m.relates_to"]?.key, "applied");
906
+ });
907
+ (0, import_qunit.test)("a discovered-tool annotation naming a skill that does not declare the tool is rejected", async function(assert) {
908
+ await visitOperatorMode({
909
+ stacks: [[{
910
+ id: `${testRealmURL}index`,
911
+ format: "isolated"
912
+ }]],
913
+ aiAssistantOpen: true
914
+ });
915
+ await waitFor("[data-room-settled]");
916
+ let roomId = getRoomIds().pop();
917
+ simulateSkillReadResult(roomId, `${testRealmURL}skills/decoy/SKILL.md`, "switch-submode_dd88");
918
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
919
+ body: "",
920
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
921
+ format: "org.matrix.custom.html",
922
+ isStreamingFinished: true,
923
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
924
+ id: "call-forged",
925
+ name: "switch-submode_dd88",
926
+ arguments: JSON.stringify({
927
+ description: "Switching to code submode",
928
+ attributes: { submode: "code" }
929
+ })
930
+ }],
931
+ data: { context: { agentId: getService("matrix-service").agentId } }
932
+ });
933
+ await settled();
934
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"invalid\"]").exists("the tool call is invalid");
935
+ assert.dom("[data-test-boxel-alert=\"warning\"]").containsText("No command for the name \"switch-submode_dd88\" was found");
936
+ assert.dom("[data-test-submode-switcher=code]").doesNotExist("the forged tool call never executed");
937
+ let message = toolResultFor(roomId, "call-forged");
938
+ assert.strictEqual(message.content.msgtype, APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE);
939
+ assert.strictEqual(message.content["m.relates_to"]?.key, "invalid");
940
+ });
941
+ (0, import_qunit.test)("rendering a command request without a description fallsback to attributes.description", async function(assert) {
942
+ await visitOperatorMode({
943
+ stacks: [[{
944
+ id: `${testRealmURL}index`,
945
+ format: "isolated"
946
+ }]],
947
+ aiAssistantOpen: true
948
+ });
949
+ await waitFor("[data-room-settled]");
950
+ await addSkillToAiAssistant(`${testRealmURL}Skill/useful-commands`);
951
+ simulateRemoteMessage(getRoomIds().pop(), "@aibot:localhost", {
952
+ body: "",
953
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
954
+ format: "org.matrix.custom.html",
955
+ isStreamingFinished: true,
956
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
957
+ id: "29e8addb-197b-4d6d-b0a9-547959bf7c96",
958
+ name: buildCommandFunctionName({
959
+ module: testRRI("search-and-open-card-command"),
960
+ name: "default"
961
+ }, void 0, getService("network").virtualNetwork),
962
+ arguments: JSON.stringify({ attributes: {
963
+ description: "Finding and opening Hassan card",
964
+ title: "Hassan"
965
+ } })
966
+ }]
967
+ });
968
+ await waitFor("[data-test-message-idx=\"0\"]");
969
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-pretui-tool-row-title]").containsText("Finding and opening Hassan card");
970
+ });
971
+ (0, import_qunit.test)("command description is visible while tool call is preparing", async function(assert) {
972
+ await visitOperatorMode({
973
+ stacks: [[{
974
+ id: `${testRealmURL}index`,
975
+ format: "isolated"
976
+ }]],
977
+ aiAssistantOpen: true
978
+ });
979
+ await waitFor("[data-room-settled]");
980
+ await addSkillToAiAssistant(`${testRealmURL}Skill/useful-commands`);
981
+ let roomId = getRoomIds().pop();
982
+ let description = "Switching to code submode during preparation";
983
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
984
+ body: "",
985
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
986
+ format: "org.matrix.custom.html",
987
+ isStreamingFinished: false,
988
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
989
+ id: "preparing-command-id",
990
+ name: "switch-submode_dd88",
991
+ arguments: JSON.stringify({
992
+ description,
993
+ attributes: { submode: "code" }
994
+ })
995
+ }]
996
+ });
997
+ await waitFor("[data-test-message-idx=\"0\"]");
998
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-pretui-tool-row-title]").containsText(description);
999
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-pretui-tool-row][data-state=\"streaming\"]").exists("a preparing call reads as streaming in its row");
1000
+ });
1001
+ (0, import_qunit.test)("ShowCard command added from a skill, can be automatically executed when agentId matches", async function(assert) {
1002
+ await visitOperatorMode({
1003
+ stacks: [[{
1004
+ id: `${testRealmURL}index`,
1005
+ format: "isolated"
1006
+ }]],
1007
+ aiAssistantOpen: true
1008
+ });
1009
+ let roomId = getRoomIds().pop();
1010
+ await waitFor("[data-test-message-field]");
1011
+ await fillIn("[data-test-message-field]", "Test message to enable new session button");
1012
+ await click("[data-test-send-message-btn]");
1013
+ await click("[data-test-create-room-btn]");
1014
+ roomId = getRoomIds().pop();
1015
+ await addSkillToAiAssistant(`${testRealmURL}Skill/card-editing`);
1016
+ await waitForNewRoomSkillsLoaded(roomId);
1017
+ let toolCallId = "1554f297-e9f2-43fe-8b95-55b29251444d";
1018
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1019
+ body: "Show the card",
1020
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1021
+ format: "org.matrix.custom.html",
1022
+ isStreamingFinished: true,
1023
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1024
+ id: toolCallId,
1025
+ name: showCardToolName,
1026
+ arguments: JSON.stringify({
1027
+ description: "Displaying the card with the Latin word for milkweed in the title.",
1028
+ attributes: {
1029
+ cardId: `${testRealmURL}Person/hassan`,
1030
+ cardInfo: { name: "Asclepias" }
1031
+ }
1032
+ })
1033
+ }],
1034
+ data: { context: { agentId: getService("matrix-service").agentId } }
1035
+ });
1036
+ await settled();
1037
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"applied\"]").exists(describeToolResult(roomId, toolCallId));
1038
+ assert.dom("[data-test-tool-call-id]").doesNotHaveClass("is-failed");
1039
+ assert.dom("[data-test-submode-switcher=interact]").exists();
1040
+ assert.dom("[data-test-operator-mode-stack=\"1\"] [data-test-stack-card-index=\"0\"]").includesText("Person - Hassan Abdel-Rahman");
1041
+ await waitUntil(() => getRoomIds().length > 0);
1042
+ let message = toolResultFor(roomId, toolCallId);
1043
+ assert.strictEqual(message.content.msgtype, APP_BOXEL_TOOL_RESULT_WITH_OUTPUT_MSGTYPE);
1044
+ assert.strictEqual(message.content["m.relates_to"]?.rel_type, APP_BOXEL_TOOL_RESULT_REL_TYPE);
1045
+ assert.strictEqual(message.content["m.relates_to"]?.key, "applied");
1046
+ assert.strictEqual(message.content.commandRequestId, "1554f297-e9f2-43fe-8b95-55b29251444d");
1047
+ });
1048
+ (0, import_qunit.test)("a view-visually result attaches the capture to the tool result event for the model", async function(assert) {
1049
+ const png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==";
1050
+ registerRealmServerRoute({
1051
+ path: "/_capture",
1052
+ handler: async () => new Response(JSON.stringify({ data: {
1053
+ type: "capture-result",
1054
+ attributes: {
1055
+ status: "ready",
1056
+ base64: png,
1057
+ width: 1,
1058
+ height: 1,
1059
+ contentType: "image/png"
1060
+ }
1061
+ } }), {
1062
+ status: 201,
1063
+ headers: { "Content-Type": "application/vnd.api+json" }
1064
+ })
1065
+ });
1066
+ try {
1067
+ await visitOperatorMode({
1068
+ stacks: [[{
1069
+ id: `${testRealmURL}index`,
1070
+ format: "isolated"
1071
+ }]],
1072
+ aiAssistantOpen: true
1073
+ });
1074
+ await waitFor("[data-test-message-field]");
1075
+ await fillIn("[data-test-message-field]", "Start a session");
1076
+ await click("[data-test-send-message-btn]");
1077
+ await click("[data-test-create-room-btn]");
1078
+ let roomId = getRoomIds().pop();
1079
+ await addSkillToAiAssistant(`${testRealmURL}Skill/seeing`);
1080
+ await waitForNewRoomSkillsLoaded(roomId);
1081
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1082
+ body: "Looking at the card",
1083
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1084
+ format: "org.matrix.custom.html",
1085
+ isStreamingFinished: true,
1086
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1087
+ id: "view-visually-handoff",
1088
+ name: viewVisuallyToolName,
1089
+ arguments: JSON.stringify({
1090
+ description: "Look at the card",
1091
+ attributes: { url: `${testRealmURL}Person/hassan` }
1092
+ })
1093
+ }],
1094
+ data: { context: { agentId: getService("matrix-service").agentId } }
1095
+ });
1096
+ await settled();
1097
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"applied\"]").exists(describeToolResult(roomId, "view-visually-handoff"));
1098
+ let result = getRoomEvents(roomId).filter((event) => event.content["m.relates_to"]?.rel_type === "app.boxel.toolAnnotation" && event.content.commandRequestId === "view-visually-handoff").pop();
1099
+ assert.strictEqual(result.content["m.relates_to"]?.key, "applied");
1100
+ let attachedFiles = JSON.parse(result.content.data).attachedFiles;
1101
+ assert.strictEqual(attachedFiles.length, 1, "one image is attached");
1102
+ assert.strictEqual(attachedFiles[0].contentType, "image/png");
1103
+ assert.ok(attachedFiles[0].url, "the image names its uploaded media");
1104
+ assert.strictEqual(typeof attachedFiles[0].contentSize, "number", "the image records its size, which the prompt needs to send it");
1105
+ } finally {
1106
+ unregisterRealmServerRoute("/_capture");
1107
+ }
1108
+ });
1109
+ (0, import_qunit.test)("a command loaded from a realm attaches nothing to its tool result, even one built on a host tool", async function(assert) {
1110
+ await visitOperatorMode({
1111
+ stacks: [[{
1112
+ id: `${testRealmURL}index`,
1113
+ format: "isolated"
1114
+ }]],
1115
+ aiAssistantOpen: true
1116
+ });
1117
+ await waitFor("[data-test-message-field]");
1118
+ await fillIn("[data-test-message-field]", "Start a session");
1119
+ await click("[data-test-send-message-btn]");
1120
+ await click("[data-test-create-room-btn]");
1121
+ let roomId = getRoomIds().pop();
1122
+ await addSkillToAiAssistant(`${testRealmURL}Skill/realm-seeing`);
1123
+ await waitForNewRoomSkillsLoaded(roomId);
1124
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1125
+ body: "Looking at the card",
1126
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1127
+ format: "org.matrix.custom.html",
1128
+ isStreamingFinished: true,
1129
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1130
+ id: "realm-viewer-request",
1131
+ name: buildCommandFunctionName({
1132
+ module: testRRI("realm-viewer-command"),
1133
+ name: "default"
1134
+ }, void 0, getService("network").virtualNetwork),
1135
+ arguments: JSON.stringify({
1136
+ description: "Look at the card",
1137
+ attributes: { url: `${testRealmURL}Pet/mango` }
1138
+ })
1139
+ }],
1140
+ data: { context: { agentId: getService("matrix-service").agentId } }
1141
+ });
1142
+ await settled();
1143
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"applied\"]").exists(describeToolResult(roomId, "realm-viewer-request"));
1144
+ let result = getRoomEvents(roomId).filter((event) => event.content["m.relates_to"]?.rel_type === "app.boxel.toolAnnotation" && event.content.commandRequestId === "realm-viewer-request").pop();
1145
+ assert.strictEqual(result.content["m.relates_to"]?.key, "applied");
1146
+ let data = JSON.parse(result.content.data);
1147
+ assert.deepEqual(data.attachedFiles, [], "the image its result names is not attached for the model");
1148
+ });
1149
+ (0, import_qunit.test)("ShowCard command added from a skill, is not automatically executed when agentId does not match", async function(assert) {
1150
+ await visitOperatorMode({
1151
+ stacks: [[{
1152
+ id: `${testRealmURL}index`,
1153
+ format: "isolated"
1154
+ }]],
1155
+ aiAssistantOpen: true
1156
+ });
1157
+ let roomId = getRoomIds().pop();
1158
+ await waitFor("[data-test-message-field]");
1159
+ await fillIn("[data-test-message-field]", "Test message to enable new session button");
1160
+ await click("[data-test-send-message-btn]");
1161
+ await click("[data-test-create-room-btn]");
1162
+ roomId = getRoomIds().pop();
1163
+ await addSkillToAiAssistant(`${testRealmURL}Skill/card-editing`);
1164
+ await waitForNewRoomSkillsLoaded(roomId);
1165
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1166
+ body: "Show the card",
1167
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1168
+ format: "org.matrix.custom.html",
1169
+ isStreamingFinished: true,
1170
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1171
+ id: "1554f297-e9f2-43fe-8b95-55b29251444d",
1172
+ name: showCardToolName,
1173
+ arguments: JSON.stringify({
1174
+ description: "Displaying the card with the Latin word for milkweed in the title.",
1175
+ attributes: {
1176
+ id: `${testRealmURL}Person/hassan`,
1177
+ title: "Asclepias"
1178
+ }
1179
+ })
1180
+ }],
1181
+ data: { context: { agentId: "some-other-agent-id" } }
1182
+ });
1183
+ await settled();
1184
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"ready\"]").exists();
1185
+ assert.dom("[data-test-tool-call-id]").doesNotHaveClass("is-failed");
1186
+ assert.dom("[data-test-submode-switcher=interact]").exists();
1187
+ });
1188
+ (0, import_qunit.test)("multiple commands can be requested in a single aibot message", async function(assert) {
1189
+ await visitOperatorMode({
1190
+ stacks: [[{
1191
+ id: `${testRealmURL}index`,
1192
+ format: "isolated"
1193
+ }]],
1194
+ aiAssistantOpen: true
1195
+ });
1196
+ await waitFor("[data-room-settled]");
1197
+ await addSkillToAiAssistant(`${testRealmURL}Skill/useful-commands`);
1198
+ simulateRemoteMessage(getRoomIds().pop(), "@aibot:localhost", {
1199
+ body: "Checking the current UI state and searching for cards",
1200
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1201
+ format: "org.matrix.custom.html",
1202
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1203
+ id: "a4237eca-b73e-4256-bf3a-45849fa07d02",
1204
+ name: "switch-submode_dd88",
1205
+ arguments: JSON.stringify({ attributes: { submode: "code" } })
1206
+ }, {
1207
+ id: "2b48526b-d599-4789-a47b-dff349948c37",
1208
+ name: "search-cards-by-type-and-title_dd88",
1209
+ arguments: JSON.stringify({ attributes: { query: "test" } })
1210
+ }]
1211
+ });
1212
+ await waitFor("[data-test-message-idx=\"0\"]");
1213
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-id]").exists({ count: 2 }, "each requested call has its row");
1214
+ });
1215
+ (0, import_qunit.test)("LLM mode event controls auto-apply of switch-submode command with timestamp checking", async function(assert) {
1216
+ await visitOperatorMode({
1217
+ stacks: [[{
1218
+ id: `${testRealmURL}index`,
1219
+ format: "isolated"
1220
+ }]],
1221
+ aiAssistantOpen: true
1222
+ });
1223
+ await waitFor(`[data-room-settled]`);
1224
+ await addSkillToAiAssistant(`${testRealmURL}Skill/useful-commands`);
1225
+ await click("[data-test-skill-menu]");
1226
+ await click("[data-test-skill-menu] [data-test-pill-menu-header] [data-test-pill-menu-button]");
1227
+ assert.dom("[data-test-llm-mode-toggle] [data-test-pretui-segmented-option=\"ask\"]").isChecked();
1228
+ let commandId = "switch-submode-cmd-1";
1229
+ simulateRemoteMessage(matrixRoomId, "@aibot:localhost", {
1230
+ body: "Switch to code mode",
1231
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1232
+ format: "org.matrix.custom.html",
1233
+ isStreamingFinished: true,
1234
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1235
+ id: commandId,
1236
+ name: "switch-submode_dd88",
1237
+ arguments: JSON.stringify({
1238
+ description: "switch to code mode",
1239
+ attributes: { submode: "code" }
1240
+ })
1241
+ }],
1242
+ data: { context: { agentId: getService("matrix-service").agentId } }
1243
+ });
1244
+ await settled();
1245
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"ready\"]").exists("Apply button is shown in ask mode");
1246
+ assert.dom("[data-test-tool-call-apply=\"applied\"]").doesNotExist("Command is not auto-applied in ask mode");
1247
+ await click("[data-test-llm-mode-toggle] [data-test-pretui-segmented-option=\"act\"]");
1248
+ assert.dom("[data-test-llm-mode-toggle] [data-test-pretui-segmented-option=\"act\"]").isChecked();
1249
+ let llmModeState = getRoomState(matrixRoomId, APP_BOXEL_LLM_MODE, "");
1250
+ assert.strictEqual(llmModeState?.mode, "act", "LLM mode updates to act");
1251
+ let commandId2 = "switch-submode-cmd-2";
1252
+ simulateRemoteMessage(matrixRoomId, "@aibot:localhost", {
1253
+ body: "Switch to interact mode",
1254
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1255
+ format: "org.matrix.custom.html",
1256
+ isStreamingFinished: true,
1257
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1258
+ id: commandId2,
1259
+ name: "switch-submode_dd88",
1260
+ arguments: JSON.stringify({
1261
+ description: "switch to interact mode",
1262
+ attributes: { submode: "interact" }
1263
+ })
1264
+ }],
1265
+ data: { context: { agentId: getService("matrix-service").agentId } }
1266
+ });
1267
+ await settled();
1268
+ assert.dom("[data-test-message-idx=\"1\"] [data-test-tool-call-apply=\"applied\"]").exists(`Command is auto-applied in act mode: ${describeToolResult(matrixRoomId, commandId2)}`);
1269
+ await click("[data-test-llm-mode-toggle] [data-test-pretui-segmented-option=\"ask\"]");
1270
+ assert.dom("[data-test-llm-mode-toggle] [data-test-pretui-segmented-option=\"ask\"]").isChecked();
1271
+ let commandId3 = "switch-submode-cmd-3";
1272
+ simulateRemoteMessage(matrixRoomId, "@aibot:localhost", {
1273
+ body: "Switch to code mode again",
1274
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1275
+ format: "org.matrix.custom.html",
1276
+ isStreamingFinished: true,
1277
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1278
+ id: commandId3,
1279
+ name: "switch-submode_dd88",
1280
+ arguments: JSON.stringify({
1281
+ description: "switch to code mode",
1282
+ attributes: { submode: "code" }
1283
+ })
1284
+ }],
1285
+ data: { context: { agentId: getService("matrix-service").agentId } }
1286
+ });
1287
+ await settled();
1288
+ assert.dom("[data-test-message-idx=\"2\"] [data-test-tool-call-apply=\"ready\"]").exists("Apply button is shown in ask mode");
1289
+ assert.dom("[data-test-message-idx=\"2\"] [data-test-tool-call-apply=\"applied\"]").doesNotExist("Command is not auto-applied in ask mode");
1290
+ await click("[data-test-llm-mode-toggle] [data-test-pretui-segmented-option=\"act\"]");
1291
+ assert.dom("[data-test-llm-mode-toggle] [data-test-pretui-segmented-option=\"act\"]").isChecked();
1292
+ assert.dom("[data-test-message-idx=\"2\"] [data-test-tool-call-apply=\"ready\"]").exists("Apply button is still shown for command sent before act mode");
1293
+ assert.dom("[data-test-message-idx=\"2\"] [data-test-tool-call-apply=\"applied\"]").doesNotExist("Command sent before act mode is not auto-applied");
1294
+ let commandId4 = "switch-submode-cmd-4";
1295
+ simulateRemoteMessage(matrixRoomId, "@aibot:localhost", {
1296
+ body: "Switch to interact mode again",
1297
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1298
+ format: "org.matrix.custom.html",
1299
+ isStreamingFinished: true,
1300
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1301
+ id: commandId4,
1302
+ name: "switch-submode_dd88",
1303
+ arguments: JSON.stringify({
1304
+ description: "switch to interact mode",
1305
+ attributes: { submode: "interact" }
1306
+ })
1307
+ }],
1308
+ data: { context: { agentId: getService("matrix-service").agentId } }
1309
+ });
1310
+ await settled();
1311
+ assert.dom("[data-test-message-idx=\"3\"] [data-test-tool-call-apply=\"applied\"]").exists(`New command sent after act mode is auto-applied: ${describeToolResult(matrixRoomId, commandId4)}`);
1312
+ });
1313
+ (0, import_qunit.test)("command request with invalid name gets an \"invalid\" result", async function(assert) {
1314
+ await visitOperatorMode({
1315
+ aiAssistantOpen: true,
1316
+ stacks: [[{
1317
+ id: `${testRealmURL}index`,
1318
+ format: "isolated"
1319
+ }]]
1320
+ });
1321
+ await waitFor("[data-test-message-field]");
1322
+ await fillIn("[data-test-message-field]", "Test message to enable new session button");
1323
+ await click("[data-test-send-message-btn]");
1324
+ await click("[data-test-create-room-btn]");
1325
+ let roomId = getRoomIds().pop();
1326
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1327
+ body: "Show the card",
1328
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1329
+ format: "org.matrix.custom.html",
1330
+ isStreamingFinished: true,
1331
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1332
+ id: "1554f297-e9f2-43fe-8b95-55b29251444d",
1333
+ name: "no-such-command",
1334
+ arguments: JSON.stringify({
1335
+ description: "Displaying the card with the Latin word for milkweed in the title.",
1336
+ attributes: {
1337
+ id: `${testRealmURL}Person/hassan`,
1338
+ title: "Asclepias"
1339
+ }
1340
+ })
1341
+ }],
1342
+ data: { context: { agentId: getService("matrix-service").agentId } }
1343
+ });
1344
+ await settled();
1345
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"invalid\"]").exists("the tool call is invalid");
1346
+ assert.dom("[data-test-boxel-alert=\"warning\"]").containsText("No command for the name \"no-such-command\" was found");
1347
+ assert.dom("[data-test-tool-call-id]").doesNotHaveClass("is-failed");
1348
+ let message = toolResultFor(roomId, "1554f297-e9f2-43fe-8b95-55b29251444d");
1349
+ assert.strictEqual(message.content.msgtype, APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE);
1350
+ assert.strictEqual(message.content["m.relates_to"]?.rel_type, APP_BOXEL_TOOL_RESULT_REL_TYPE);
1351
+ assert.strictEqual(message.content["m.relates_to"]?.key, "invalid");
1352
+ assert.strictEqual(message.content.failureReason, "No command for the name \"no-such-command\" was found");
1353
+ assert.strictEqual(message.content.commandRequestId, "1554f297-e9f2-43fe-8b95-55b29251444d");
1354
+ });
1355
+ (0, import_qunit.test)("a tool request without the description label still validates and runs", async function(assert) {
1356
+ await visitOperatorMode({
1357
+ stacks: [[{
1358
+ id: `${testRealmURL}index`,
1359
+ format: "isolated"
1360
+ }]],
1361
+ aiAssistantOpen: true
1362
+ });
1363
+ await waitFor("[data-test-message-field]");
1364
+ await fillIn("[data-test-message-field]", "Test message to enable new session button");
1365
+ await click("[data-test-send-message-btn]");
1366
+ await click("[data-test-create-room-btn]");
1367
+ let roomId = getRoomIds().pop();
1368
+ await addSkillToAiAssistant(`${testRealmURL}Skill/card-editing`);
1369
+ await waitForNewRoomSkillsLoaded(roomId);
1370
+ let toolCallId = "no-description-request";
1371
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1372
+ body: "Show the card",
1373
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1374
+ format: "org.matrix.custom.html",
1375
+ isStreamingFinished: true,
1376
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1377
+ id: toolCallId,
1378
+ name: showCardToolName,
1379
+ arguments: JSON.stringify({ attributes: { cardId: `${testRealmURL}Person/hassan` } })
1380
+ }],
1381
+ data: { context: { agentId: getService("matrix-service").agentId } }
1382
+ });
1383
+ await settled();
1384
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"applied\"]").exists(describeToolResult(roomId, toolCallId));
1385
+ assert.dom("[data-test-boxel-alert=\"warning\"]").doesNotExist();
1386
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-code-block]").containsText("Showed card", "the row title falls back to the tool name, settled");
1387
+ let message = toolResultFor(roomId, toolCallId);
1388
+ assert.strictEqual(message.content["m.relates_to"]?.key, "applied");
1389
+ assert.strictEqual(message.content.commandRequestId, toolCallId);
1390
+ });
1391
+ (0, import_qunit.test)("command request with arguments that do not match the json schema gets an \"invalid\" result", async function(assert) {
1392
+ await visitOperatorMode({
1393
+ aiAssistantOpen: true,
1394
+ stacks: [[{
1395
+ id: `${testRealmURL}index`,
1396
+ format: "isolated"
1397
+ }]]
1398
+ });
1399
+ await waitFor("[data-test-message-field]");
1400
+ await fillIn("[data-test-message-field]", "Test message to enable new session button");
1401
+ await click("[data-test-send-message-btn]");
1402
+ await click("[data-test-create-room-btn]");
1403
+ let roomId = getRoomIds().pop();
1404
+ await addSkillToAiAssistant(`${testRealmURL}Skill/card-editing`);
1405
+ await waitForNewRoomSkillsLoaded(roomId);
1406
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1407
+ body: "Show the card",
1408
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1409
+ format: "org.matrix.custom.html",
1410
+ isStreamingFinished: true,
1411
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1412
+ id: "1554f297-e9f2-43fe-8b95-55b29251444d",
1413
+ name: showCardToolName,
1414
+ arguments: JSON.stringify({
1415
+ description: "Displaying the card with the Latin word for milkweed in the title.",
1416
+ attributes: { title: "Asclepias" }
1417
+ })
1418
+ }],
1419
+ data: { context: { agentId: getService("matrix-service").agentId } }
1420
+ });
1421
+ await settled();
1422
+ assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"invalid\"]").exists("the tool call is invalid");
1423
+ let expectedValidationText = `Command "${showCardToolName}" validation failed: data/attributes must have required property 'cardId'`;
1424
+ let warningText = document.querySelector("[data-test-boxel-alert=\"warning\"]")?.textContent?.trim() ?? "";
1425
+ if (!warningText.includes(expectedValidationText)) {
1426
+ let roomData = getService("matrix-service").getRoomData(roomId);
1427
+ let roomResource = getService("matrix-service").roomResources.get(roomId);
1428
+ console.error("[commands-test/json-schema-validation] warning text mismatch. Diagnostic:", JSON.stringify({
1429
+ roomId,
1430
+ warningText,
1431
+ enabledSkillCards: roomData?.skillsConfig?.enabledSkillCards?.map((f) => f.sourceUrl) ?? null,
1432
+ roomResourceCommandCount: roomResource?.tools?.length ?? null
1433
+ }, null, 2));
1434
+ }
1435
+ assert.dom("[data-test-boxel-alert=\"warning\"]").containsText(expectedValidationText);
1436
+ assert.dom("[data-test-tool-call-id]").doesNotHaveClass("is-failed");
1437
+ let message = toolResultFor(roomId, "1554f297-e9f2-43fe-8b95-55b29251444d");
1438
+ assert.strictEqual(message.content.msgtype, APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE);
1439
+ assert.strictEqual(message.content["m.relates_to"]?.rel_type, APP_BOXEL_TOOL_RESULT_REL_TYPE);
1440
+ assert.strictEqual(message.content["m.relates_to"]?.key, "invalid");
1441
+ assert.strictEqual(message.content.failureReason, expectedValidationText);
1442
+ assert.strictEqual(message.content.commandRequestId, "1554f297-e9f2-43fe-8b95-55b29251444d");
1443
+ });
1444
+ async function requestLinkEcho(relationships, { tool = "link-echo" } = {}) {
1445
+ let skill = tool === "link-echo" ? "Skill/link-echo" : "Skill/link-echo-unexported";
1446
+ await visitOperatorMode({
1447
+ stacks: [[{
1448
+ id: `${testRealmURL}${skill}`,
1449
+ format: "isolated"
1450
+ }]],
1451
+ aiAssistantOpen: true
1452
+ });
1453
+ await waitFor("[data-room-settled]");
1454
+ await addSkillToAiAssistant(`${testRealmURL}${skill}`);
1455
+ let roomId = getRoomIds().pop();
1456
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1457
+ body: "",
1458
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1459
+ format: "org.matrix.custom.html",
1460
+ isStreamingFinished: true,
1461
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1462
+ id: "link-echo-request",
1463
+ name: buildCommandFunctionName({
1464
+ module: testRRI(`${tool}-command`),
1465
+ name: "default"
1466
+ }, void 0, getService("network").virtualNetwork),
1467
+ arguments: JSON.stringify({
1468
+ description: "Naming the pets",
1469
+ attributes: {},
1470
+ relationships
1471
+ })
1472
+ }]
1473
+ });
1474
+ await waitFor("[data-test-message-idx=\"0\"] [data-test-tool-call-apply]");
1475
+ await settled();
1476
+ return roomId;
1477
+ }
1478
+ function linkEchoResult(roomId) {
1479
+ return getRoomEvents(roomId).find((event) => event.type === "app.boxel.toolResult" && event.content.commandRequestId === "link-echo-request");
1480
+ }
1481
+ async function applyLinkEcho(roomId) {
1482
+ await click("[data-test-message-idx=\"0\"] [data-test-pretui-tool-gate-action=\"apply\"]");
1483
+ await waitUntil(() => linkEchoResult(roomId), {
1484
+ timeout: 5e3,
1485
+ timeoutMessage: "timed out waiting for the link-echo result"
1486
+ });
1487
+ return linkEchoResult(roomId);
1488
+ }
1489
+ const allPets = {
1490
+ pet: { links: { self: `${testRealmURL}Pet/ringo` } },
1491
+ friends: [{ links: { self: `${testRealmURL}Pet/mango` } }, { links: { self: `${testRealmURL}Pet/vangogh` } }]
1492
+ };
1493
+ (0, import_qunit.test)("a tool runs with the linked inputs it was given once they load", async function(assert) {
1494
+ let roomId = await requestLinkEcho(allPets);
1495
+ let store = getService("store");
1496
+ let petIds = [
1497
+ "ringo",
1498
+ "mango",
1499
+ "vangogh"
1500
+ ].map((name) => `${testRealmURL}Pet/${name}`);
1501
+ for (let id of petIds) assert.strictEqual(store.peek(id), void 0, `${id} is not in the store before the tool runs`);
1502
+ let duringRun;
1503
+ linkEchoProbe = (input) => {
1504
+ store.store.sweep(card_api_exports);
1505
+ store.store.sweep(card_api_exports);
1506
+ let inputId = input[localId];
1507
+ duringRun = {
1508
+ inputId,
1509
+ references: store.getReferenceCount(inputId),
1510
+ resident: petIds.map((id) => store.peek(id) !== void 0)
1511
+ };
1512
+ };
1513
+ let result = await applyLinkEcho(roomId);
1514
+ assert.strictEqual(result.content["m.relates_to"]?.key, "applied");
1515
+ assert.deepEqual(linkEchoMessages, ["pet=Ringo; friends=Mango, Van Gogh"]);
1516
+ assert.strictEqual(duringRun.references, 1, "the call holds its input while the tool runs");
1517
+ assert.deepEqual(duringRun.resident, [
1518
+ true,
1519
+ true,
1520
+ true
1521
+ ], "the linked pets survive garbage collection while the tool runs");
1522
+ await waitUntil(() => store.getReferenceCount(duringRun.inputId) === 0, { timeoutMessage: "the call did not release its input" });
1523
+ });
1524
+ (0, import_qunit.test)("a tool waits only on its own linked inputs, not on other loads in the store", async function(assert) {
1525
+ let roomId = await requestLinkEcho(allPets);
1526
+ let unrelatedLoad = new Deferred();
1527
+ getService("store").trackLoad(unrelatedLoad.promise);
1528
+ try {
1529
+ let result = await applyLinkEcho(roomId);
1530
+ assert.strictEqual(result.content["m.relates_to"]?.key, "applied");
1531
+ assert.deepEqual(linkEchoMessages, ["pet=Ringo; friends=Mango, Van Gogh"]);
1532
+ } finally {
1533
+ unrelatedLoad.fulfill();
1534
+ }
1535
+ });
1536
+ (0, import_qunit.test)("a tool whose linked input is already in the store runs with it", async function(assert) {
1537
+ await getService("store").get(`${testRealmURL}Pet/ringo`);
1538
+ let result = await applyLinkEcho(await requestLinkEcho({ pet: { links: { self: `${testRealmURL}Pet/ringo` } } }));
1539
+ assert.strictEqual(result.content["m.relates_to"]?.key, "applied");
1540
+ assert.deepEqual(linkEchoMessages, ["pet=Ringo; friends="]);
1541
+ });
1542
+ (0, import_qunit.test)("a linked input that does not exist makes the call invalid, naming the field and the card", async function(assert) {
1543
+ let missing = `${testRealmURL}Pet/does-not-exist`;
1544
+ let result = await applyLinkEcho(await requestLinkEcho({ pet: { links: { self: missing } } }));
1545
+ assert.strictEqual(result.content["m.relates_to"]?.key, "invalid");
1546
+ assert.true(result.content.failureReason.startsWith(`Could not load pet "${missing}" (not-found`), `failure names the field and the card, got: ${result.content.failureReason}`);
1547
+ assert.deepEqual(linkEchoMessages, [], "the tool did not run");
1548
+ });
1549
+ (0, import_qunit.test)("one missing card in a plural linked input makes the call invalid, naming only that card", async function(assert) {
1550
+ let missing = `${testRealmURL}Pet/does-not-exist`;
1551
+ let result = await applyLinkEcho(await requestLinkEcho({
1552
+ pet: { links: { self: `${testRealmURL}Pet/ringo` } },
1553
+ friends: [{ links: { self: `${testRealmURL}Pet/mango` } }, { links: { self: missing } }]
1554
+ }));
1555
+ assert.strictEqual(result.content["m.relates_to"]?.key, "invalid");
1556
+ assert.true(result.content.failureReason.startsWith(`Could not load friends "${missing}" (not-found`), `failure names the missing card, got: ${result.content.failureReason}`);
1557
+ assert.false(result.content.failureReason.includes("Pet/mango"), "the card that loaded is not named");
1558
+ assert.deepEqual(linkEchoMessages, [], "the tool did not run");
1559
+ });
1560
+ (0, import_qunit.test)("a call that leaves out a required linked input is invalid", async function(assert) {
1561
+ let result = await applyLinkEcho(await requestLinkEcho(void 0));
1562
+ assert.strictEqual(result.content["m.relates_to"]?.key, "invalid");
1563
+ assert.true(result.content.failureReason.startsWith("Missing pet"), `failure names the missing field, got: ${result.content.failureReason}`);
1564
+ assert.deepEqual(linkEchoMessages, [], "the tool did not run");
1565
+ });
1566
+ (0, import_qunit.test)("a call that gives a required linked input an empty link is invalid", async function(assert) {
1567
+ let result = await applyLinkEcho(await requestLinkEcho({ pet: { links: { self: "" } } }));
1568
+ assert.strictEqual(result.content["m.relates_to"]?.key, "invalid");
1569
+ assert.true(result.content.failureReason.startsWith("Missing pet"), `failure names the missing field, got: ${result.content.failureReason}`);
1570
+ assert.deepEqual(linkEchoMessages, [], "the tool did not run");
1571
+ });
1572
+ (0, import_qunit.test)("a tool whose input class is not exported runs with its linked inputs once they load", async function(assert) {
1573
+ let result = await applyLinkEcho(await requestLinkEcho(allPets, { tool: "unexported-link-echo" }));
1574
+ assert.strictEqual(result.content["m.relates_to"]?.key, "applied");
1575
+ assert.deepEqual(linkEchoMessages, ["pet=Ringo; friends=Mango, Van Gogh"]);
1576
+ });
1577
+ (0, import_qunit.test)("a tool whose input class is not exported reports a linked input that does not exist", async function(assert) {
1578
+ let missing = `${testRealmURL}Pet/does-not-exist`;
1579
+ let result = await applyLinkEcho(await requestLinkEcho({ pet: { links: { self: missing } } }, { tool: "unexported-link-echo" }));
1580
+ assert.strictEqual(result.content["m.relates_to"]?.key, "invalid");
1581
+ assert.true(result.content.failureReason.startsWith(`Could not load pet "${missing}" (not-found`), `failure names the field and the card, got: ${result.content.failureReason}`);
1582
+ assert.deepEqual(linkEchoMessages, [], "the tool did not run");
1583
+ });
1584
+ (0, import_qunit.module)("suspending global error hook", (hooks) => {
1585
+ suspendGlobalErrorHook(hooks);
1586
+ (0, import_qunit.test)("a command that errors when executing allows retry", async function(assert) {
1587
+ await visitOperatorMode({ stacks: [[{
1588
+ id: `${testRealmURL}Person/hassan`,
1589
+ format: "isolated"
1590
+ }]] });
1591
+ await click("[data-test-maybe-boom-via-ai-assistant]");
1592
+ await waitUntil(() => getRoomIds().length > 0);
1593
+ await click("[data-test-open-ai-assistant-room-button]");
1594
+ let roomId = getRoomIds().pop();
1595
+ maybeBoomShouldBoom = true;
1596
+ simulateRemoteMessage(roomId, "@aibot:localhost", {
1597
+ body: "Will it boom?",
1598
+ msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
1599
+ format: "org.matrix.custom.html",
1600
+ isStreamingFinished: true,
1601
+ [APP_BOXEL_TOOL_REQUESTS_KEY]: [{
1602
+ id: "2dd27b90-b473-403c-a5ae-399a29af7d62",
1603
+ name: "maybe-boom-command_4b30",
1604
+ arguments: JSON.stringify({
1605
+ description: "Maybe it will boom",
1606
+ attributes: {}
1607
+ })
1608
+ }],
1609
+ data: { context: { agentId: getService("matrix-service").agentId } }
1610
+ });
1611
+ await settled();
1612
+ let failedResultEvents = await getRoomEvents(roomId).filter((event) => event.type === "app.boxel.toolResult" && event.content["m.relates_to"]?.key === "failed");
1613
+ assert.strictEqual(failedResultEvents.length, 1, "failed command result event dispatched");
1614
+ let appliedResultEvents = await getRoomEvents(roomId).filter((event) => event.type === "app.boxel.toolResult" && event.content["m.relates_to"]?.key === "applied");
1615
+ assert.strictEqual(appliedResultEvents.length, 0, "no applied command result event dispatched");
1616
+ maybeBoomShouldBoom = false;
1617
+ await click("[data-test-alert-action-button=\"Retry\"]");
1618
+ appliedResultEvents = await getRoomEvents(roomId).filter((event) => event.type === "app.boxel.toolResult" && event.content["m.relates_to"]?.key === "applied");
1619
+ assert.strictEqual(appliedResultEvents.length, 1, "applied command result event was dispatched after retry");
1620
+ assert.dom("[data-test-tool-call-apply=\"applied\"]").exists();
1621
+ });
1622
+ });
1623
+ });
1624
+ //#endregion