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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1058) hide show
  1. package/bundled-realms/pretui/components/doc-report.gts +2 -2
  2. package/bundled-realms/pretui/components/doc-report.usage.gts +3 -3
  3. package/bundled-realms/pretui/components/form-field.md +1 -1
  4. package/bundled-realms/pretui/components/icon-button.md +1 -1
  5. package/bundled-realms/pretui/components/popup.md +1 -1
  6. package/bundled-realms/pretui/components/switch.gts +13 -0
  7. package/bundled-realms/pretui/components/switch.md +5 -3
  8. package/bundled-realms/pretui/components/theme-frame.gts +49 -22
  9. package/bundled-realms/pretui/components/tooltip.gts +141 -42
  10. package/bundled-realms/pretui/components/tooltip.md +10 -12
  11. package/bundled-realms/pretui/components/tooltip.usage.gts +3 -5
  12. package/bundled-realms/pretui/docs/structure.md +1 -1
  13. package/bundled-realms/pretui/internal/overlay.gts +4 -2
  14. package/bundled-realms/pretui/pretui-css.gts +6 -2
  15. package/bundled-realms/pretui/theme-scoped-css.gts +262 -0
  16. package/bundled-test-harness/assets/account-switch-failed-test-DwAZq6Sc.js +45 -0
  17. package/bundled-test-harness/assets/adapter-C_6pnsx1.js +2 -0
  18. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-zMYtJWBv.js +112 -0
  19. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-CwhAV-Ow.js +130 -0
  20. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DNgclkGJ.js +46 -0
  21. package/bundled-test-harness/assets/ai-assistant-test-DGYFiRTb.js +2223 -0
  22. package/bundled-test-harness/assets/ai-function-generation-test-Dj6WzKkh.js +1176 -0
  23. package/bundled-test-harness/assets/ai-module-creation-test-C4zhhxaZ.js +151 -0
  24. package/bundled-test-harness/assets/aibot-message-BShcljQ9.js +1312 -0
  25. package/bundled-test-harness/assets/app-DiEYqT6T.js +14146 -0
  26. package/bundled-test-harness/assets/apply-markdown-edit-test-CPhfeg1i.js +230 -0
  27. package/bundled-test-harness/assets/ask-user-picker-NVRkhKwt.js +370 -0
  28. package/bundled-test-harness/assets/ask-user-picker-test-SsZqFm9W.js +39 -0
  29. package/bundled-test-harness/assets/assistant-transcript-test-DesuBCIB.js +57 -0
  30. package/bundled-test-harness/assets/audio-metadata-extractor-test-8JM6oZXG.js +1176 -0
  31. package/bundled-test-harness/assets/authed-fetch-test-yPTMe-9V.js +73 -0
  32. package/bundled-test-harness/assets/avif-image-def-test-Kyknj908.js +187 -0
  33. package/bundled-test-harness/assets/basic-test-D9OrrMaq.js +139 -0
  34. package/bundled-test-harness/assets/binary-upload-dedupe-test-C0RFmHma.js +308 -0
  35. package/bundled-test-harness/assets/bot-registration-test-Bk2lTaCW.js +97 -0
  36. package/bundled-test-harness/assets/box-test-BbV9sMyU.js +50 -0
  37. package/bundled-test-harness/assets/brand-guide-attachments-test-z4wTsKbI.js +84 -0
  38. package/bundled-test-harness/assets/brand-guide-custom-css-test-BlSJE8xo.js +196 -0
  39. package/bundled-test-harness/assets/brand-guide-edit-test-DJ1OQ6IB.js +140 -0
  40. package/bundled-test-harness/assets/brand-logo-mark-field-test-ux7eetkO.js +86 -0
  41. package/bundled-test-harness/assets/broken-link-template-test-CqB3MWyw.js +192 -0
  42. package/bundled-test-harness/assets/bundled-base-modules-test-B2oNLZSJ.js +54 -0
  43. package/bundled-test-harness/assets/bundled-base-oracle-test-DelPfFjn.js +37 -0
  44. package/bundled-test-harness/assets/buried-stack-item-scroll-test-Ixsl1tS0.js +236 -0
  45. package/bundled-test-harness/assets/button-BvYQm_A1.js +141 -0
  46. package/bundled-test-harness/assets/bxl-cyclic-graph-test-p23WCLRW.js +47 -0
  47. package/bundled-test-harness/assets/bxl-expression-test-CVTQYT_C.js +250 -0
  48. package/bundled-test-harness/assets/bxl-indexing-test-D_A7X2sr.js +212 -0
  49. package/bundled-test-harness/assets/bxl-platform-module-test-Cltfyybp.js +71 -0
  50. package/bundled-test-harness/assets/can-invoke-test-CVfE1l1V.js +455 -0
  51. package/bundled-test-harness/assets/can-read-realm-test-CIz6WX_K.js +56 -0
  52. package/bundled-test-harness/assets/cancel-indexing-job-test-0LlrOgYK.js +69 -0
  53. package/bundled-test-harness/assets/capture-test-diHIWmh0.js +360 -0
  54. package/bundled-test-harness/assets/card-api-test-Ci9b0ghP.js +198 -0
  55. package/bundled-test-harness/assets/card-basics-test-RKQoQWZD.js +5364 -0
  56. package/bundled-test-harness/assets/card-chooser-paging-test-BN21sDpP.js +235 -0
  57. package/bundled-test-harness/assets/card-chooser-test-C9jDiIgM.js +393 -0
  58. package/bundled-test-harness/assets/card-context-search-results-KmkXJbmC.js +30 -0
  59. package/bundled-test-harness/assets/card-context-search-results-test-CpMr8OlX.js +184 -0
  60. package/bundled-test-harness/assets/card-def-field-def-relationships-test-D_30xak6.js +562 -0
  61. package/bundled-test-harness/assets/card-def-menu-items-test-ohuHc0b4.js +228 -0
  62. package/bundled-test-harness/assets/card-delete-test-BlsD9Xw4.js +466 -0
  63. package/bundled-test-harness/assets/card-error-3q1o3i0e.js +72 -0
  64. package/bundled-test-harness/assets/card-error-awaiting-index-test-DPgYKfbF.js +53 -0
  65. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-CVfeJyjt.js +219 -0
  66. package/bundled-test-harness/assets/card-playground-test-D-7bi4PQ.js +1491 -0
  67. package/bundled-test-harness/assets/card-prerender-DemTfK_a.js +12939 -0
  68. package/bundled-test-harness/assets/card-thunk-error-test-DCBh1vRT.js +48 -0
  69. package/bundled-test-harness/assets/card-type-service-test-DXPrfVYk.js +161 -0
  70. package/bundled-test-harness/assets/check-correctness-test-DjE7r1X2.js +1093 -0
  71. package/bundled-test-harness/assets/check-domain-availability-test-U10xSKbY.js +98 -0
  72. package/bundled-test-harness/assets/chip-0r_r9SC8.js +44 -0
  73. package/bundled-test-harness/assets/choreo-CZUXQKjf.js +1110 -0
  74. package/bundled-test-harness/assets/choreo-D8RcLuoq.js +2 -0
  75. package/bundled-test-harness/assets/choreo-feature-reel-test-DRGloCAJ.js +155 -0
  76. package/bundled-test-harness/assets/choreo-gallery-build-order-test-BR-r7gaw.js +436 -0
  77. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CWRLfcNT.js +399 -0
  78. package/bundled-test-harness/assets/choreo-gallery-cover-test-BT05gNKC.js +214 -0
  79. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-WJ7FmjYi.js +133 -0
  80. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-C-yxdVT_.js +42 -0
  81. package/bundled-test-harness/assets/choreo-gallery-drift-test-HX1mK3od.js +620 -0
  82. package/bundled-test-harness/assets/choreo-gallery-escort-test-jZEVk_V4.js +187 -0
  83. package/bundled-test-harness/assets/choreo-gallery-films-test-DLDQzsxb.js +140 -0
  84. package/bundled-test-harness/assets/choreo-gallery-filter-test-BJv8KEeP.js +46 -0
  85. package/bundled-test-harness/assets/choreo-gallery-fold-test-BssKC8A8.js +180 -0
  86. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-DS41eNNV.js +114 -0
  87. package/bundled-test-harness/assets/choreo-gallery-guides-test-DTj7yEKp.js +321 -0
  88. package/bundled-test-harness/assets/choreo-gallery-hang-test-BqJLmeFF.js +426 -0
  89. package/bundled-test-harness/assets/choreo-gallery-highlight-test-B1Q7-ICm.js +60 -0
  90. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-7My9lVam.js +370 -0
  91. package/bundled-test-harness/assets/choreo-gallery-interruption-test-BlIAaGrw.js +176 -0
  92. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-C9NnYIP8.js +104 -0
  93. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CWzXkvbW.js +193 -0
  94. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-CwdiZWeI.js +111 -0
  95. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-D55fxwTn.js +127 -0
  96. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-D8Wxv0lb.js +100 -0
  97. package/bundled-test-harness/assets/choreo-gallery-presentation-test-BLoWfp6G.js +157 -0
  98. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-D5XxTBDS.js +145 -0
  99. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-DrHTTvss.js +89 -0
  100. package/bundled-test-harness/assets/choreo-gallery-sheet-test-BFVdnM_b.js +48 -0
  101. package/bundled-test-harness/assets/choreo-gallery-site-test-BhEBHdvI.js +237 -0
  102. package/bundled-test-harness/assets/choreo-gallery-stage-DcKKsdcu.js +256 -0
  103. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-Fcc6SC3F.js +102 -0
  104. package/bundled-test-harness/assets/choreo-gallery-stages-test-Cb-ADpxK.js +35 -0
  105. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-DMJ6C9FW.js +138 -0
  106. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CAjSUdLJ.js +144 -0
  107. package/bundled-test-harness/assets/choreo-gallery-theater-test-B-3IZMj9.js +252 -0
  108. package/bundled-test-harness/assets/choreo-gallery-tuning-test-BVxK5Ry_.js +95 -0
  109. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-uWBH1EKE.js +88 -0
  110. package/bundled-test-harness/assets/choreo-gallery-wires-test-Bo4Sd1Vn.js +148 -0
  111. package/bundled-test-harness/assets/client-telemetry-test-DFM4mML2.js +340 -0
  112. package/bundled-test-harness/assets/clip-DY6N6K67.js +92 -0
  113. package/bundled-test-harness/assets/clip-DzXoPdp-.js +2 -0
  114. package/bundled-test-harness/assets/code-block-DRE8KQZQ.js +502 -0
  115. package/bundled-test-harness/assets/code-ref-test-CDcqE8_C.js +163 -0
  116. package/bundled-test-harness/assets/code-submode-availability-test-DPTqZYYm.js +198 -0
  117. package/bundled-test-harness/assets/code-submode-test-AHV4mzJ4.js +1839 -0
  118. package/bundled-test-harness/assets/codeblocks-test-D6ijVvEL.js +418 -0
  119. package/bundled-test-harness/assets/codemirror-editor-test-BeAMVivu.js +1512 -0
  120. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bnb7_KUT.js +366 -0
  121. package/bundled-test-harness/assets/color-field-test-CR6gGEqE.js +212 -0
  122. package/bundled-test-harness/assets/compaction-test-CjEsY0uG.js +150 -0
  123. package/bundled-test-harness/assets/computed-test-DtyZGgdc.js +1320 -0
  124. package/bundled-test-harness/assets/container-BYGZImLU.css +5101 -0
  125. package/bundled-test-harness/assets/container-CBZZ8uFw.js +10925 -0
  126. package/bundled-test-harness/assets/content-preview-components-test-BztI4fz-.js +462 -0
  127. package/bundled-test-harness/assets/copy-and-edit-test-Cqw7kcur.js +292 -0
  128. package/bundled-test-harness/assets/copy-card-test-D5m3eVEH.js +218 -0
  129. package/bundled-test-harness/assets/copy-file-to-realm-test-FPY-6Ddm.js +148 -0
  130. package/bundled-test-harness/assets/copy-source-test-9pJD-qey.js +56 -0
  131. package/bundled-test-harness/assets/create-file-test-DjMf88u_.js +1086 -0
  132. package/bundled-test-harness/assets/create-file-test-XbgOqg38.js +464 -0
  133. package/bundled-test-harness/assets/create-listing-modal-test-De7b4vu3.js +273 -0
  134. package/bundled-test-harness/assets/create-listing-pr-request-test-CBtIV0Z8.js +117 -0
  135. package/bundled-test-harness/assets/create-spec-test-4xR0gM7E.js +256 -0
  136. package/bundled-test-harness/assets/create-submission-workflow-test-DQpWrpGT.js +132 -0
  137. package/bundled-test-harness/assets/create-workspace-test-BQAudgpS.js +104 -0
  138. package/bundled-test-harness/assets/credential-fields-test-DXKBdbZD.js +200 -0
  139. package/bundled-test-harness/assets/csv-file-def-test-Cnp4y834.js +102 -0
  140. package/bundled-test-harness/assets/dashboard-CmuOhIYC.js +3628 -0
  141. package/bundled-test-harness/assets/dashboard-CzN49x74.css +2400 -0
  142. package/bundled-test-harness/assets/dashboard-add-workspace-test-T32hWB-g.js +50 -0
  143. package/bundled-test-harness/assets/dashboard-agents-test-BN5maCgQ.js +334 -0
  144. package/bundled-test-harness/assets/dashboard-archive-test-BzwUte_Z.js +128 -0
  145. package/bundled-test-harness/assets/dashboard-delete-test-D2Gcp81V.js +163 -0
  146. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-BgKNIr35.js +71 -0
  147. package/bundled-test-harness/assets/dashboard-duplicate-test-D7JEWylc.js +222 -0
  148. package/bundled-test-harness/assets/dashboard-get-started-test-DOGPzGoA.js +374 -0
  149. package/bundled-test-harness/assets/dashboard-ir2bakJS.js +142 -0
  150. package/bundled-test-harness/assets/dashboard-pinned-cards-test-Bn_P9xJU.js +220 -0
  151. package/bundled-test-harness/assets/dashboard-publish-test-64sGQ0nG.js +70 -0
  152. package/bundled-test-harness/assets/dashboard-reindex-test-DJjYq1ct.js +115 -0
  153. package/bundled-test-harness/assets/dashboard-section-rail-test-ZkAhWu5V.js +169 -0
  154. package/bundled-test-harness/assets/dashboard-state-test-BbkpPB5L.js +162 -0
  155. package/bundled-test-harness/assets/dashboard-test-CBLdPrSt.js +545 -0
  156. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DFT3R1Zx.js +62 -0
  157. package/bundled-test-harness/assets/dashboard-workspace-test-DqBdCFo2.js +537 -0
  158. package/bundled-test-harness/assets/dashboard-workspaces-section-test-CH1HDfxR.js +410 -0
  159. package/bundled-test-harness/assets/data-file-def-preview-test-CNsZwQEJ.js +155 -0
  160. package/bundled-test-harness/assets/date-time-fields-test-CEFaZTnF.js +359 -0
  161. package/bundled-test-harness/assets/debug-message-test-Ck3BfFv3.js +117 -0
  162. package/bundled-test-harness/assets/declared-captures-test-C-0yPRU7.js +879 -0
  163. package/bundled-test-harness/assets/delete-workspace-test-CZOwGy78.js +102 -0
  164. package/bundled-test-harness/assets/diffing-test-BEKI905O.js +210 -0
  165. package/bundled-test-harness/assets/download-file-to-realm-test-C1kAGDll.js +119 -0
  166. package/bundled-test-harness/assets/editor-test-C9x5ZY6g.js +688 -0
  167. package/bundled-test-harness/assets/edits-D76-aanh.js +651 -0
  168. package/bundled-test-harness/assets/email-field-test-LGkrB_2B.js +75 -0
  169. package/bundled-test-harness/assets/enum-field-test-CPyV1J-m.js +935 -0
  170. package/bundled-test-harness/assets/error-display-test-bWuUtfIG.js +343 -0
  171. package/bundled-test-harness/assets/evaluate-module-test-CbS5h8t3.js +91 -0
  172. package/bundled-test-harness/assets/execute-atomic-operations-test-B4Kfco0k.js +113 -0
  173. package/bundled-test-harness/assets/externals-k-2ZBepK.js +4393 -0
  174. package/bundled-test-harness/assets/fallback-banner-live-delete-test-CuFiH1D8.js +207 -0
  175. package/bundled-test-harness/assets/fallback-banner-test-CqSRN7D8.js +225 -0
  176. package/bundled-test-harness/assets/fallback-banner-test-DQkrFE4-.js +53 -0
  177. package/bundled-test-harness/assets/fallback-models-test-BWekNxC0.js +161 -0
  178. package/bundled-test-harness/assets/fetch-card-json-test-DULUqUEu.js +61 -0
  179. package/bundled-test-harness/assets/field-configuration-test-BXZq28xa.js +551 -0
  180. package/bundled-test-harness/assets/field-markdown-domain-test-DdXCifs6.js +616 -0
  181. package/bundled-test-harness/assets/field-markdown-oversize-test-DouPPTHX.js +88 -0
  182. package/bundled-test-harness/assets/field-markdown-primitives-test-DSRGJeyl.js +365 -0
  183. package/bundled-test-harness/assets/field-markdown-specialized-test-DlTYLl_s.js +534 -0
  184. package/bundled-test-harness/assets/field-playground-test-NhS4VvoN.js +894 -0
  185. package/bundled-test-harness/assets/field-support-predicates-test-DWpyT1Qf.js +167 -0
  186. package/bundled-test-harness/assets/file-attachment-test-LwZf-BSY.js +796 -0
  187. package/bundled-test-harness/assets/file-chooser-panel-test-DuAqD9bn.js +153 -0
  188. package/bundled-test-harness/assets/file-chooser-test-CjaXXwpT.js +504 -0
  189. package/bundled-test-harness/assets/file-def-format-templates-test-BDs4OmHq.js +380 -0
  190. package/bundled-test-harness/assets/file-def-live-reload-test-BqTdnq-W.js +124 -0
  191. package/bundled-test-harness/assets/file-def-menu-items-test-DqdINXsD.js +138 -0
  192. package/bundled-test-harness/assets/file-def-navigation-test-BPGr0SQy.js +109 -0
  193. package/bundled-test-harness/assets/file-def-serialization-test-CvjW-FlC.js +89 -0
  194. package/bundled-test-harness/assets/file-def-test-C-Yv_NjS.js +216 -0
  195. package/bundled-test-harness/assets/file-preview-live-reload-test-MzwGwasU.js +310 -0
  196. package/bundled-test-harness/assets/file-resource-primitives-test-D3GmfqNs.js +255 -0
  197. package/bundled-test-harness/assets/file-tree-from-index-test-CfldnUgm.js +96 -0
  198. package/bundled-test-harness/assets/file-tree-test--0ZCPRe9.js +851 -0
  199. package/bundled-test-harness/assets/file-view-model-test-BDIAeBV8.js +346 -0
  200. package/bundled-test-harness/assets/filedef-export-shape-test-B2tgU404.js +61 -0
  201. package/bundled-test-harness/assets/film-Bf73ypzi.js +4074 -0
  202. package/bundled-test-harness/assets/film-C54lhaiU.js +2 -0
  203. package/bundled-test-harness/assets/film-DPcMEHYu.js +13 -0
  204. package/bundled-test-harness/assets/flac-audio-def-test-ByoXMoQ1.js +143 -0
  205. package/bundled-test-harness/assets/font-metadata-extractor-test-hawLTDTG.js +415 -0
  206. package/bundled-test-harness/assets/formatted-aibot-message-test-BahBj3x8.js +109 -0
  207. package/bundled-test-harness/assets/formatted-user-message-test-CodbrU3t.js +43 -0
  208. package/bundled-test-harness/assets/freestyle-test-faQhSciz.js +17 -0
  209. package/bundled-test-harness/assets/full-reindex-realm-test-CE5RJTIC.js +101 -0
  210. package/bundled-test-harness/assets/garbage-collection-test-v-3sev77.js +403 -0
  211. package/bundled-test-harness/assets/general-test-DKZPBtSb.js +923 -0
  212. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-CucWyrkH.js +65 -0
  213. package/bundled-test-harness/assets/generic-file-def-preview-test-_EDRsebi.js +71 -0
  214. package/bundled-test-harness/assets/get-available-realm-identifiers-test-CV023yek.js +47 -0
  215. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test--DOu3DyV.js +47 -0
  216. package/bundled-test-harness/assets/get-default-writable-realm-test-Bic8jl6R.js +54 -0
  217. package/bundled-test-harness/assets/get-published-realms-test-DrA5YcFN.js +71 -0
  218. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-jfU6SIWn.js +54 -0
  219. package/bundled-test-harness/assets/get-relationship-membership-state-test-Ccy2Z7MN.js +1308 -0
  220. package/bundled-test-harness/assets/get-user-system-card-test-Bmq2lmWv.js +67 -0
  221. package/bundled-test-harness/assets/gif-image-def-test-N1mMQC-X.js +188 -0
  222. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BkUDjiTs.js +160 -0
  223. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DsFWCzTs.js +74 -0
  224. package/bundled-test-harness/assets/gts-file-def-test-BL1jpQ9J.js +100 -0
  225. package/bundled-test-harness/assets/head-format-preview-test-BVCaPQqc.js +158 -0
  226. package/bundled-test-harness/assets/helpers-Ds68JxHe.js +5 -0
  227. package/bundled-test-harness/assets/host-mode-service-B4bisRdR.js +262 -0
  228. package/bundled-test-harness/assets/host-mode-test-BmkN2PCJ.js +831 -0
  229. package/bundled-test-harness/assets/host-submode-test-C6SxQ796.js +1392 -0
  230. package/bundled-test-harness/assets/html-component-test-CNQ9wF0Q.js +65 -0
  231. package/bundled-test-harness/assets/html-def-test-BcaCVVQq.js +160 -0
  232. package/bundled-test-harness/assets/html-meta-extractor-test-BU1hjkTp.js +60 -0
  233. package/bundled-test-harness/assets/hydratable-card-test-CX6MWiti.js +426 -0
  234. package/bundled-test-harness/assets/icon-button-C1zH38Nc.js +67 -0
  235. package/bundled-test-harness/assets/image-metadata-extractor-test-CakSBPZ_.js +1109 -0
  236. package/bundled-test-harness/assets/index-changes-test-D8RtgfyG.js +367 -0
  237. package/bundled-test-harness/assets/index-query-engine-test-BETfoYOK.js +2593 -0
  238. package/bundled-test-harness/assets/index-writer-test-B_bR2fjw.js +3040 -0
  239. package/bundled-test-harness/assets/inspector-test-BwPXJj1S.js +2058 -0
  240. package/bundled-test-harness/assets/instance-filter-matcher-test-BSVCg59b.js +788 -0
  241. package/bundled-test-harness/assets/instantiate-card-test-BVQhZjpq.js +164 -0
  242. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DzQLG41H.js +475 -0
  243. package/bundled-test-harness/assets/interact-submode-setup-C5bKXq73.js +566 -0
  244. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-Cd3dpjhB.js +99 -0
  245. package/bundled-test-harness/assets/invite-user-to-room-test-Brabz1tt.js +142 -0
  246. package/bundled-test-harness/assets/invoke-card-operation-test-C1Q1FUf4.js +333 -0
  247. package/bundled-test-harness/assets/isolated-render-test-BLJfS7BU.js +51 -0
  248. package/bundled-test-harness/assets/job-scoped-doc-cache-test-Bgv5woaB.js +181 -0
  249. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C_bB6KpR.js +103 -0
  250. package/bundled-test-harness/assets/jpg-image-def-test-gdLIKocD.js +697 -0
  251. package/bundled-test-harness/assets/json-file-def-test-CPYMRBY-.js +95 -0
  252. package/bundled-test-harness/assets/key-notices-badge-test-DemslfLw.js +155 -0
  253. package/bundled-test-harness/assets/key-readiness-test-5tq5JycL.js +190 -0
  254. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-BbhDZ2PH.js +398 -0
  255. package/bundled-test-harness/assets/linksto-error-sentinel-test-C2t7fFPi.js +238 -0
  256. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test--U_UvUty.js +354 -0
  257. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-Dj3Xy0ZF.js +303 -0
  258. package/bundled-test-harness/assets/linksto-sentinel-reload-test-D0dK4Jjs.js +197 -0
  259. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test---IYiXok.js +260 -0
  260. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CT04MhES.js +196 -0
  261. package/bundled-test-harness/assets/lint-and-fix-test-aadgx7rX.js +51 -0
  262. package/bundled-test-harness/assets/live-test-BGij_vuc.js +100 -0
  263. package/bundled-test-harness/assets/live-test-CppvValf.js +2 -0
  264. package/bundled-test-harness/assets/load-default-skills-test-Cp2m_ebp.js +74 -0
  265. package/bundled-test-harness/assets/loader-parallel-prefetch-test-vU_26Jqu.js +257 -0
  266. package/bundled-test-harness/assets/loader-test-CTaw8K_B.js +482 -0
  267. package/bundled-test-harness/assets/loading-test-DGGt4qZZ.js +63 -0
  268. package/bundled-test-harness/assets/m4a-audio-def-test-DAiReOXH.js +190 -0
  269. package/bundled-test-harness/assets/main-bXHwJ0CN.js +5 -0
  270. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIXq9FqR.js +470 -0
  271. package/bundled-test-harness/assets/markdown-embed-chooser-test-zFGh9WfP.js +334 -0
  272. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-Byn_WFwY.js +447 -0
  273. package/bundled-test-harness/assets/markdown-embed-preview-test-Y3iFMttg.js +368 -0
  274. package/bundled-test-harness/assets/markdown-fallback-test-Br1TPkLZ.js +316 -0
  275. package/bundled-test-harness/assets/markdown-file-def-test-Crm2MAnq.js +380 -0
  276. package/bundled-test-harness/assets/markdown-helpers-test-CZ9Vvywc.js +188 -0
  277. package/bundled-test-harness/assets/markdown-highlighting-test-CFMkoVDl.js +244 -0
  278. package/bundled-test-harness/assets/markdown-preview-lOh-MyqF.js +72 -0
  279. package/bundled-test-harness/assets/markdown-preview-test-B8w0fFIy.js +238 -0
  280. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-aH6HQly1.js +146 -0
  281. package/bundled-test-harness/assets/markdown-skill-search-test-CiNLQs-5.js +80 -0
  282. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-DaA8w1Jj.js +63 -0
  283. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-21GIlf55.js +300 -0
  284. package/bundled-test-harness/assets/matrix-service-personal-realm-test-jn9DUENm.js +125 -0
  285. package/bundled-test-harness/assets/matrix-service-realm-servers-test-eNZVJakl.js +55 -0
  286. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-Cabm8_dY.js +132 -0
  287. package/bundled-test-harness/assets/matrix-service-relogin-test-C77EFgjc.js +59 -0
  288. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-BgM0fPiO.js +35 -0
  289. package/bundled-test-harness/assets/menu-Cl50TSFe.js +3561 -0
  290. package/bundled-test-harness/assets/message-service-subscription-test-CfEqH2jP.js +110 -0
  291. package/bundled-test-harness/assets/message-service-test-DsTzH1In.js +144 -0
  292. package/bundled-test-harness/assets/message-tool-test-C5xVfTtj.js +33 -0
  293. package/bundled-test-harness/assets/midi-audio-def-test-goLRCNCZ.js +182 -0
  294. package/bundled-test-harness/assets/migrate-skill-test-yPCbVfxG.js +161 -0
  295. package/bundled-test-harness/assets/mini-YXjrY_tH.js +1404 -0
  296. package/bundled-test-harness/assets/mini-card-chooser-test-DrllikHB.js +272 -0
  297. package/bundled-test-harness/assets/mini-file-chooser-test-BfqayhmI.js +201 -0
  298. package/bundled-test-harness/assets/mock-matrix-C7BrPS6S.js +2 -0
  299. package/bundled-test-harness/assets/mock-matrix-FjsXmU7-.js +15107 -0
  300. package/bundled-test-harness/assets/modal-BgaZavcs.js +322 -0
  301. package/bundled-test-harness/assets/model-cost-tier-test-BGg-sJML.js +174 -0
  302. package/bundled-test-harness/assets/model-file-extract-test-CjEBupY5.js +206 -0
  303. package/bundled-test-harness/assets/module-transpile-cache-test-XW6DDsmz.js +67 -0
  304. package/bundled-test-harness/assets/monaco-test-DkoRuFiQ.js +100 -0
  305. package/bundled-test-harness/assets/mp3-audio-def-test-v369NNsQ.js +133 -0
  306. package/bundled-test-harness/assets/multiple-stacks-test-CJpYPWdM.js +208 -0
  307. package/bundled-test-harness/assets/nested-query-field-render-test-CfDrBcUN.js +249 -0
  308. package/bundled-test-harness/assets/no-stacks-test-MmsJeLpz.js +48 -0
  309. package/bundled-test-harness/assets/number-field-test-A7B2r0M5.js +184 -0
  310. package/bundled-test-harness/assets/office-file-def-test-BNRvFmCB.js +263 -0
  311. package/bundled-test-harness/assets/office-metadata-extractor-test-zlDoEIEp.js +218 -0
  312. package/bundled-test-harness/assets/office-poster-capture-test-DdFEaOxR.js +203 -0
  313. package/bundled-test-harness/assets/ogg-audio-def-test-kk91BzQY.js +196 -0
  314. package/bundled-test-harness/assets/open-create-listing-modal-test-D1Dl1pov.js +131 -0
  315. package/bundled-test-harness/assets/open-image-in-new-tab-test-DyCmdMyO.js +52 -0
  316. package/bundled-test-harness/assets/open-secure-window-test-dz1vPudF.js +253 -0
  317. package/bundled-test-harness/assets/open-workspace-test-BvTcskzP.js +46 -0
  318. package/bundled-test-harness/assets/operation-lowering-test-omU66bkJ.js +2957 -0
  319. package/bundled-test-harness/assets/operations-invocation-test-BMj42rQe.js +523 -0
  320. package/bundled-test-harness/assets/operations-optimistic-test-KJLyzT8v.js +203 -0
  321. package/bundled-test-harness/assets/operations-query-test-J3HcnaoK.js +459 -0
  322. package/bundled-test-harness/assets/operations-store-reconciliation-test-CkbGBMBQ.js +406 -0
  323. package/bundled-test-harness/assets/operations-test-C7zXXpRW.js +2518 -0
  324. package/bundled-test-harness/assets/operator-mode-acceptance-test-BPolI_RD.js +1195 -0
  325. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DjTQgizt.js +1036 -0
  326. package/bundled-test-harness/assets/operator-mode-links-test-DSEqy5Db.js +797 -0
  327. package/bundled-test-harness/assets/operator-mode-test-CB7BNDNE.js +696 -0
  328. package/bundled-test-harness/assets/operator-mode-ui-test-C1OhF1il.js +1045 -0
  329. package/bundled-test-harness/assets/overlay-D2rQi8lJ.js +427 -0
  330. package/bundled-test-harness/assets/overlay-menu-items-test-CPN31yBJ.js +331 -0
  331. package/bundled-test-harness/assets/overlays-B-qMEPhY.js +2 -0
  332. package/bundled-test-harness/assets/overlays-DSf2je0c.js +75 -0
  333. package/bundled-test-harness/assets/overlays-detached-element-test-C73nMXes.js +56 -0
  334. package/bundled-test-harness/assets/panel-DjrC7DxA.js +15124 -0
  335. package/bundled-test-harness/assets/past-sessions-test-BSIS2Hlq.js +321 -0
  336. package/bundled-test-harness/assets/patch-fields-test-Bp2IE0Jw.js +1014 -0
  337. package/bundled-test-harness/assets/patch-instance-test-DssuRGKP.js +348 -0
  338. package/bundled-test-harness/assets/pdf-file-def-test-Barj9ffD.js +111 -0
  339. package/bundled-test-harness/assets/pdf-metadata-extractor-test-B7KnXcIm.js +130 -0
  340. package/bundled-test-harness/assets/permission-checking-realm-test-BD4O0nen.js +306 -0
  341. package/bundled-test-harness/assets/persist-module-inspector-view-test-BIdbkdPr.js +60 -0
  342. package/bundled-test-harness/assets/persist-scroll-position-test-Bhb7wJiy.js +254 -0
  343. package/bundled-test-harness/assets/phone-number-field-test-C2yuCrXY.js +73 -0
  344. package/bundled-test-harness/assets/pill-menu-test-BIp91YXi.js +60 -0
  345. package/bundled-test-harness/assets/plate-CJq1veVA.js +41 -0
  346. package/bundled-test-harness/assets/plate-CwAvOUfL.js +2 -0
  347. package/bundled-test-harness/assets/player-Digk7omr.js +2 -0
  348. package/bundled-test-harness/assets/player-vsjosoN_.js +82 -0
  349. package/bundled-test-harness/assets/playground-B02e8uqB.js +58 -0
  350. package/bundled-test-harness/assets/plural-field-components-test-C1acuN-A.js +198 -0
  351. package/bundled-test-harness/assets/png-image-def-test-B9QeVo1f.js +266 -0
  352. package/bundled-test-harness/assets/policy-audit-confirmation-test-CeVquvc_.js +155 -0
  353. package/bundled-test-harness/assets/policy-scoped-search-test-SFPiIqR3.js +339 -0
  354. package/bundled-test-harness/assets/prerender-file-extract-test-HSJKAHyO.js +346 -0
  355. package/bundled-test-harness/assets/prerender-html-test-BTAcFCme.js +670 -0
  356. package/bundled-test-harness/assets/prerender-meta-test-Csyz2b21.js +614 -0
  357. package/bundled-test-harness/assets/prerender-module-test-DpTYAbmI.js +409 -0
  358. package/bundled-test-harness/assets/prerender-persistence-block-test-BhIt-7kK.js +124 -0
  359. package/bundled-test-harness/assets/prerender-pre-model-error-test-DxKPQKqx.js +61 -0
  360. package/bundled-test-harness/assets/prerender-serialize-cycle-test-C8V5YWQO.js +134 -0
  361. package/bundled-test-harness/assets/prerendered-html-read-test-Cq7JVGwg.js +191 -0
  362. package/bundled-test-harness/assets/pretui-components-test-Ducr9fLT.css +743 -0
  363. package/bundled-test-harness/assets/pretui-components-test-Hs0uyIUQ.js +992 -0
  364. package/bundled-test-harness/assets/pretui-primitives-CRs8NRm0.js +69 -0
  365. package/bundled-test-harness/assets/preview-format-test-cCqLrfdY.js +103 -0
  366. package/bundled-test-harness/assets/preview-test-BMqJSoR1.js +474 -0
  367. package/bundled-test-harness/assets/process-card-test-578tfDvr.js +94 -0
  368. package/bundled-test-harness/assets/profile-settings-modal-CVnNl7Yu.js +990 -0
  369. package/bundled-test-harness/assets/publish-realm-COoeWexp.js +82 -0
  370. package/bundled-test-harness/assets/publish-realm-test-a5nkx0Ov.js +210 -0
  371. package/bundled-test-harness/assets/query-field-barrier-test-qX3xVPfk.js +113 -0
  372. package/bundled-test-harness/assets/query-field-error-sentinel-test-V6JDPFLX.js +201 -0
  373. package/bundled-test-harness/assets/query-field-membership-status-test-CK7eDf-K.js +323 -0
  374. package/bundled-test-harness/assets/query-field-page-optin-test-B5YBHUvU.js +126 -0
  375. package/bundled-test-harness/assets/query-field-schema-test-D4SjOGlK.js +231 -0
  376. package/bundled-test-harness/assets/query-field-search-throttle-test-BVkm1-D8.js +154 -0
  377. package/bundled-test-harness/assets/query-field-stale-prerender-test-9g7hcD91.js +152 -0
  378. package/bundled-test-harness/assets/query-fields-test-CQYqhzpN.js +535 -0
  379. package/bundled-test-harness/assets/quick-look-test-CE0o6lJ4.js +139 -0
  380. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D0mJorwH.js +91 -0
  381. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-B_F_2GEB.js +45 -0
  382. package/bundled-test-harness/assets/read-source-test-BgJV4B4F.js +67 -0
  383. package/bundled-test-harness/assets/read-text-file-test-DaeLzg4u.js +124 -0
  384. package/bundled-test-harness/assets/realm-C_a9su1j.js +2858 -0
  385. package/bundled-test-harness/assets/realm-api-keys-D5USFOoS.js +2 -0
  386. package/bundled-test-harness/assets/realm-api-keys-m_VOcixC.js +578 -0
  387. package/bundled-test-harness/assets/realm-api-keys-test-BVs7f5Dz.js +109 -0
  388. package/bundled-test-harness/assets/realm-api-keys-test-C_uZnTmq.js +588 -0
  389. package/bundled-test-harness/assets/realm-config-m5eccPW8.js +833 -0
  390. package/bundled-test-harness/assets/realm-config-policy-standing-test-Ber-IXpc.js +290 -0
  391. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-3Xqt5VlM.js +274 -0
  392. package/bundled-test-harness/assets/realm-config-settings-test-CkalhbDF.js +187 -0
  393. package/bundled-test-harness/assets/realm-field-test-B_PUoqnk.js +100 -0
  394. package/bundled-test-harness/assets/realm-indexing-test-8iLjeV_e.js +4380 -0
  395. package/bundled-test-harness/assets/realm-policy-fitted-test-Bptvra0U.js +206 -0
  396. package/bundled-test-harness/assets/realm-policy-test-DwG0qqXE.js +1141 -0
  397. package/bundled-test-harness/assets/realm-querying-test-Dvw26A6Q.js +1067 -0
  398. package/bundled-test-harness/assets/realm-server-form-agnostic-test-DrXQH0UP.js +96 -0
  399. package/bundled-test-harness/assets/realm-server-subscriber-test-Dkj23vQK.js +46 -0
  400. package/bundled-test-harness/assets/realm-service-info-test-CdRlDhj-.js +67 -0
  401. package/bundled-test-harness/assets/realm-test-DGYN48Qx.js +2364 -0
  402. package/bundled-test-harness/assets/realm-token-refresh-test-CEWATL9h.js +153 -0
  403. package/bundled-test-harness/assets/realm-url-tooltip-test-8ZjTNPuy.js +78 -0
  404. package/bundled-test-harness/assets/reasoning-test-BV49AYg2.js +221 -0
  405. package/bundled-test-harness/assets/recent-files-test-Dc6L6Dm4.js +450 -0
  406. package/bundled-test-harness/assets/reindex-realm-test-CFRSt39u.js +117 -0
  407. package/bundled-test-harness/assets/relationship-loading-state-test-FKbtOFUr.js +290 -0
  408. package/bundled-test-harness/assets/remix-card-test-CKGC_Sgq.js +58 -0
  409. package/bundled-test-harness/assets/rendered-markdown-DXiDN91F.js +292 -0
  410. package/bundled-test-harness/assets/rendered-markdown-test-n3MlXmmu.js +587 -0
  411. package/bundled-test-harness/assets/resident-instance-reuse-test-BjdhE6CM.js +82 -0
  412. package/bundled-test-harness/assets/result-tile-o6dtjgX4.js +144 -0
  413. package/bundled-test-harness/assets/rich-markdown-field-test-VXr6l20h.js +1647 -0
  414. package/bundled-test-harness/assets/room-message-test-BrjJ2wMs.js +484 -0
  415. package/bundled-test-harness/assets/run-P_7TsreC.js +4017 -0
  416. package/bundled-test-harness/assets/run-realm-code-DsBUf1si.js +2964 -0
  417. package/bundled-test-harness/assets/run-realm-code-test-cS0DzaKo.js +3844 -0
  418. package/bundled-test-harness/assets/sanitize-module-list-test-CvuOOiUY.js +85 -0
  419. package/bundled-test-harness/assets/save-card-skip-index-wait-test-fpJ1eq32.js +89 -0
  420. package/bundled-test-harness/assets/schema-editor-test-NkKjCgyf.js +785 -0
  421. package/bundled-test-harness/assets/schema-generation-test-Dmg3lWl7.js +28 -0
  422. package/bundled-test-harness/assets/scrolling-test-B0GNYGYc.js +412 -0
  423. package/bundled-test-harness/assets/search-adorn-test-CZebk7_y.js +136 -0
  424. package/bundled-test-harness/assets/search-and-choose-test-Bd4NZUup.js +154 -0
  425. package/bundled-test-harness/assets/search-correlation-id-test-DXKlEO55.js +139 -0
  426. package/bundled-test-harness/assets/search-entries-result-test-QQawA8Fm.js +234 -0
  427. package/bundled-test-harness/assets/search-entries-test-3DlqGPQq.js +1486 -0
  428. package/bundled-test-harness/assets/search-entries-tool-test-D1TvDE9D.js +504 -0
  429. package/bundled-test-harness/assets/search-google-images-test-DqsoQGr1.js +166 -0
  430. package/bundled-test-harness/assets/search-results-DGrNaPxh.js +266 -0
  431. package/bundled-test-harness/assets/search-results-test-CqVHYNRt.js +578 -0
  432. package/bundled-test-harness/assets/search-selection-menu-test-D6bIjKiH.js +108 -0
  433. package/bundled-test-harness/assets/search-sheet-files-test-Bf37TQXo.js +126 -0
  434. package/bundled-test-harness/assets/search-sheet-persistence-test-CV4_XdxR.js +131 -0
  435. package/bundled-test-harness/assets/search-test-Dlb-wg3a.js +2249 -0
  436. package/bundled-test-harness/assets/search-tool-test-BJLgVMoL.js +156 -0
  437. package/bundled-test-harness/assets/searchable-option-test-CcbfMqIL.js +322 -0
  438. package/bundled-test-harness/assets/searchable-search-doc-test-yH9fLGNS.js +1271 -0
  439. package/bundled-test-harness/assets/section-rail-CNFCebtT.js +113 -0
  440. package/bundled-test-harness/assets/section-rail-test-KNJAWWl6.js +256 -0
  441. package/bundled-test-harness/assets/secure-sign-in-Dyljp0Th.js +174 -0
  442. package/bundled-test-harness/assets/secure-sign-in-test-QnqNuTP3.js +373 -0
  443. package/bundled-test-harness/assets/segmented-control-DxJdoJ4Z.js +173 -0
  444. package/bundled-test-harness/assets/select-BiQTg2ts.js +175 -0
  445. package/bundled-test-harness/assets/send-ai-assistant-message-test-CAn7M2dZ.js +52 -0
  446. package/bundled-test-harness/assets/send-bot-trigger-event-test-qBu5E_jy.js +56 -0
  447. package/bundled-test-harness/assets/send-request-via-proxy-test-CLuwLBq_.js +380 -0
  448. package/bundled-test-harness/assets/sending-test-H0AaBSgi.js +659 -0
  449. package/bundled-test-harness/assets/serialization-rri-form-audit-test-hMJukiKt.js +136 -0
  450. package/bundled-test-harness/assets/serialization-test-W5e3wKbz.js +8758 -0
  451. package/bundled-test-harness/assets/set-user-system-card-test-CjgWLkNV.js +59 -0
  452. package/bundled-test-harness/assets/setup-CssMNvui.js +772 -0
  453. package/bundled-test-harness/assets/setup-D8YXvK-p.js +2 -0
  454. package/bundled-test-harness/assets/shared-link-target-reuse-test-D42UO8DC.js +207 -0
  455. package/bundled-test-harness/assets/show-card-test-CHEaS514.js +365 -0
  456. package/bundled-test-harness/assets/signed-capture-link-test-BgEu0F-S.js +132 -0
  457. package/bundled-test-harness/assets/single-stack-test-DYcu_v7Z.js +652 -0
  458. package/bundled-test-harness/assets/skills-test-ChmKhADX.js +648 -0
  459. package/bundled-test-harness/assets/skip-boot-index-guard-test-BzRIncDN.js +46 -0
  460. package/bundled-test-harness/assets/spec-test-BYvFR6Xb.js +1077 -0
  461. package/bundled-test-harness/assets/spinner-Bx9x55NA.js +49 -0
  462. package/bundled-test-harness/assets/src-C1hYFgVl.js +216 -0
  463. package/bundled-test-harness/assets/src-CIlLx7Lu.js +5 -0
  464. package/bundled-test-harness/assets/stick-to-bottom-resize-test-DMHsAG0v.js +56 -0
  465. package/bundled-test-harness/assets/store-add-test-D_9IHQjZ.js +50 -0
  466. package/bundled-test-harness/assets/store-module-rebuild-test-BRGZoLRV.js +454 -0
  467. package/bundled-test-harness/assets/store-search-test-3G8JHuj2.js +175 -0
  468. package/bundled-test-harness/assets/store-test-BiKKDqqW.js +3672 -0
  469. package/bundled-test-harness/assets/structured-theme-test-11TNsgUW.js +377 -0
  470. package/bundled-test-harness/assets/summarize-session-test-CwzD_ZbD.js +172 -0
  471. package/bundled-test-harness/assets/svg-image-def-test-zV6aMK9q.js +167 -0
  472. package/bundled-test-harness/assets/switch-submode-test-DQU2cP5_.js +168 -0
  473. package/bundled-test-harness/assets/sync-openrouter-models-test-xrXVaC2H.js +97 -0
  474. package/bundled-test-harness/assets/test-support-BGl3rthw.js +3 -0
  475. package/bundled-test-harness/assets/test-support-BcBv__98.js +99 -0
  476. package/bundled-test-harness/assets/tests-CmM9imwB.js +3598 -0
  477. package/bundled-test-harness/assets/text-file-def-test-Cyq78UFY.js +94 -0
  478. package/bundled-test-harness/assets/text-input-validator-test-DBj7TaM_.js +156 -0
  479. package/bundled-test-harness/assets/text-suggestion-test-C4XAqWqY.js +340 -0
  480. package/bundled-test-harness/assets/theme-card-test-dVNz4tgU.js +621 -0
  481. package/bundled-test-harness/assets/theme-dashboard-nav-test-DYSn5pqo.js +196 -0
  482. package/bundled-test-harness/assets/theme-scheme-island-test-C1WpkfEP.js +264 -0
  483. package/bundled-test-harness/assets/theme-scoped-css-parity-test-BVluppsE.js +176 -0
  484. package/bundled-test-harness/assets/titles-DCvAhECF.js +52 -0
  485. package/bundled-test-harness/assets/titles-ZPeArtS1.js +2 -0
  486. package/bundled-test-harness/assets/to-device-streaming-test-BJ4J1cXe.js +163 -0
  487. package/bundled-test-harness/assets/token-usage-test-WUf4r4fQ.js +160 -0
  488. package/bundled-test-harness/assets/tools-J_Knr_W6.js +774 -0
  489. package/bundled-test-harness/assets/tools-calling-test-CfqZX0Ed.js +200 -0
  490. package/bundled-test-harness/assets/tools-test-B4x58ZmI.js +1624 -0
  491. package/bundled-test-harness/assets/tools-test-Cvau5219.js +3204 -0
  492. package/bundled-test-harness/assets/tooltip-B0rEgyMW.css +66 -0
  493. package/bundled-test-harness/assets/tooltip-DvUMUgVX.js +195 -0
  494. package/bundled-test-harness/assets/transform-cards-test-CYQbZeD9.js +341 -0
  495. package/bundled-test-harness/assets/ts-file-def-preview-test-m39f8Zio.js +95 -0
  496. package/bundled-test-harness/assets/ts-file-def-test-xIcL5xWe.js +92 -0
  497. package/bundled-test-harness/assets/ttf-font-def-test-ClQ2SzFF.js +206 -0
  498. package/bundled-test-harness/assets/turn-settling-test-DZoL2mRT.js +160 -0
  499. package/bundled-test-harness/assets/turn-summary-Bmt7ZxTS.js +1039 -0
  500. package/bundled-test-harness/assets/unpublish-realm-test-0ToTJczx.js +102 -0
  501. package/bundled-test-harness/assets/update-room-skills-test-o_j8NOUV.js +240 -0
  502. package/bundled-test-harness/assets/use-ai-assistant-test-D7HFpxKJ.js +384 -0
  503. package/bundled-test-harness/assets/user-message-BAOt1hS3.js +262 -0
  504. package/bundled-test-harness/assets/validate-realm-test-e3xIbNLB.js +67 -0
  505. package/bundled-test-harness/assets/video-metadata-extractor-test-D8naLSlg.js +520 -0
  506. package/bundled-test-harness/assets/view-visually-test-BuhGau5E.js +335 -0
  507. package/bundled-test-harness/assets/virtual-network-reset-test-CgaFNGPi.js +96 -0
  508. package/bundled-test-harness/assets/wav-audio-def-test-CWG_UdCh.js +160 -0
  509. package/bundled-test-harness/assets/webp-image-def-test-sN4yw8Zu.js +226 -0
  510. package/bundled-test-harness/assets/workspace-0LfPqbYB.js +445 -0
  511. package/bundled-test-harness/assets/workspace-a11y-test-DQxYDRAP.js +197 -0
  512. package/bundled-test-harness/assets/workspace-actions-jGJSfl8M.js +588 -0
  513. package/bundled-test-harness/assets/workspace-behavior-test-BnF-bmBN.js +338 -0
  514. package/bundled-test-harness/assets/workspace-delete-multiple-test-D-rxPDuT.js +212 -0
  515. package/bundled-test-harness/assets/workspace-delete-summary-test-C2-Mve5R.js +63 -0
  516. package/bundled-test-harness/assets/workspace-hosting-test-BvDKdlOb.js +138 -0
  517. package/bundled-test-harness/assets/workspace-indexing-test-B34T3kqD.js +71 -0
  518. package/bundled-test-harness/assets/workspace-test-CJivgv-m.js +51 -0
  519. package/bundled-test-harness/assets/workspace-test-CuSRpPnQ.js +385 -0
  520. package/bundled-test-harness/assets/workspace-timestamp-labels-test-aWgjdbCp.js +68 -0
  521. package/bundled-test-harness/assets/workspace-unit-test-DHMUf2KT.js +122 -0
  522. package/bundled-test-harness/assets/write-binary-file-test-P-hVQuin.js +124 -0
  523. package/bundled-test-harness/assets/write-text-file-test-fXvJueDd.js +191 -0
  524. package/bundled-test-harness/assets/zip-archive-test-C2P5CUSR.js +285 -0
  525. package/bundled-test-harness/assets/zip-file-def-test-BfJZAmGt.js +164 -0
  526. package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
  527. package/bundled-test-harness/index.html +48 -48
  528. package/bundled-test-harness/tests/index.html +50 -50
  529. package/bundled-types/boxel-ui/helpers/theme-scoped-css.ts +4 -0
  530. package/bundled-types/choreo/choreo.gts +58 -2
  531. package/bundled-types/choreo/compile.ts +5 -0
  532. package/bundled-types/choreo/layout-probe.ts +100 -0
  533. package/bundled-types/choreo/run.ts +99 -4
  534. package/bundled-types/host-app/components/operator-mode/dashboard/get-started.gts +152 -7
  535. package/bundled-types/host-app/components/operator-mode/dashboard/index.gts +2 -0
  536. package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +5 -3
  537. package/bundled-types/host-app/components/operator-mode/dashboard-modals/workspace-modals.gts +5 -22
  538. package/bundled-types/host-app/components/operator-mode/host-submode/publishing-realm-popover.gts +1 -1
  539. package/bundled-types/host-app/components/operator-mode/host-submode.gts +111 -37
  540. package/bundled-types/host-app/components/operator-mode/motion/stack-motion.gts +92 -33
  541. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +1 -0
  542. package/bundled-types/host-app/components/operator-mode/stack-item.gts +2 -2
  543. package/bundled-types/host-app/components/operator-mode/stack.gts +36 -25
  544. package/bundled-types/host-app/components/operator-mode/submode-layout.gts +2 -2
  545. package/bundled-types/host-app/lib/modal-focus-trap.ts +33 -0
  546. package/bundled-types/host-app/lib/workspace-actions.ts +21 -0
  547. package/bundled-types/host-app/services/host-mode-service.ts +39 -0
  548. package/bundled-types/host-app/services/realm.ts +14 -0
  549. package/bundled-types/host-tests/helpers/dashboard.ts +67 -0
  550. package/package.json +1 -1
  551. package/bundled-test-harness/assets/account-switch-failed-test-FytUFiPO.js +0 -45
  552. package/bundled-test-harness/assets/adapter-DvmPwSZv.js +0 -2
  553. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-DN525jiY.js +0 -112
  554. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-q3tKqVJQ.js +0 -130
  555. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DgeXcCyi.js +0 -46
  556. package/bundled-test-harness/assets/ai-assistant-test-lDIGPKFP.js +0 -2223
  557. package/bundled-test-harness/assets/ai-function-generation-test-D5GbLyvL.js +0 -1176
  558. package/bundled-test-harness/assets/ai-module-creation-test-I3-j2beD.js +0 -151
  559. package/bundled-test-harness/assets/aibot-message-Dmsjifs6.js +0 -1312
  560. package/bundled-test-harness/assets/app-BS9_-DhN.js +0 -14146
  561. package/bundled-test-harness/assets/apply-markdown-edit-test-4zlwt0Db.js +0 -230
  562. package/bundled-test-harness/assets/ask-user-picker-Dr-0qpNr.js +0 -370
  563. package/bundled-test-harness/assets/ask-user-picker-test-633AFdmS.js +0 -39
  564. package/bundled-test-harness/assets/assistant-transcript-test-BgRnLvMg.js +0 -57
  565. package/bundled-test-harness/assets/audio-metadata-extractor-test-4xsQqL-0.js +0 -1176
  566. package/bundled-test-harness/assets/authed-fetch-test-663mT5_N.js +0 -73
  567. package/bundled-test-harness/assets/avif-image-def-test-h01BPIJy.js +0 -187
  568. package/bundled-test-harness/assets/basic-test-DiD6T-8Q.js +0 -139
  569. package/bundled-test-harness/assets/binary-upload-dedupe-test-CkjMPO_e.js +0 -308
  570. package/bundled-test-harness/assets/bot-registration-test-CFZHpwdj.js +0 -97
  571. package/bundled-test-harness/assets/box-test-C3pSy5ED.js +0 -50
  572. package/bundled-test-harness/assets/brand-guide-attachments-test-EoC_u7Vc.js +0 -84
  573. package/bundled-test-harness/assets/brand-guide-custom-css-test-Dn3fvblr.js +0 -196
  574. package/bundled-test-harness/assets/brand-guide-edit-test-NeiT3MyK.js +0 -140
  575. package/bundled-test-harness/assets/brand-logo-mark-field-test-C2A1EnBB.js +0 -86
  576. package/bundled-test-harness/assets/broken-link-template-test-CWn6V5zZ.js +0 -192
  577. package/bundled-test-harness/assets/bundled-base-modules-test-D7mLzpsw.js +0 -54
  578. package/bundled-test-harness/assets/bundled-base-oracle-test-I7xCId_k.js +0 -37
  579. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DFBev0h-.js +0 -236
  580. package/bundled-test-harness/assets/button-BeSuhveJ.js +0 -207
  581. package/bundled-test-harness/assets/bxl-cyclic-graph-test-DPykwvvx.js +0 -47
  582. package/bundled-test-harness/assets/bxl-expression-test-LBWJiFb9.js +0 -250
  583. package/bundled-test-harness/assets/bxl-indexing-test-BuZmLk7y.js +0 -212
  584. package/bundled-test-harness/assets/bxl-platform-module-test-BNIvlkCM.js +0 -71
  585. package/bundled-test-harness/assets/can-invoke-test-t-bFIIeX.js +0 -455
  586. package/bundled-test-harness/assets/can-read-realm-test-2Q_MzRT9.js +0 -56
  587. package/bundled-test-harness/assets/cancel-indexing-job-test-QeYxEukn.js +0 -69
  588. package/bundled-test-harness/assets/capture-test-CJmJG8YR.js +0 -360
  589. package/bundled-test-harness/assets/card-api-test-B43I510H.js +0 -198
  590. package/bundled-test-harness/assets/card-basics-test-CBClzP2y.js +0 -5364
  591. package/bundled-test-harness/assets/card-chooser-paging-test-HEVzf6pR.js +0 -235
  592. package/bundled-test-harness/assets/card-chooser-test-GfjBRPFI.js +0 -393
  593. package/bundled-test-harness/assets/card-context-search-results-CoSr4EdS.js +0 -30
  594. package/bundled-test-harness/assets/card-context-search-results-test-BLMlZu9t.js +0 -184
  595. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DEBOzKan.js +0 -562
  596. package/bundled-test-harness/assets/card-def-menu-items-test-88_h8o0D.js +0 -228
  597. package/bundled-test-harness/assets/card-delete-test-DKom1phy.js +0 -466
  598. package/bundled-test-harness/assets/card-error-awaiting-index-test-DEwgFZMP.js +0 -53
  599. package/bundled-test-harness/assets/card-error-r6_cXst9.js +0 -72
  600. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-B7LiY15e.js +0 -219
  601. package/bundled-test-harness/assets/card-playground-test-CgyIJHui.js +0 -1491
  602. package/bundled-test-harness/assets/card-prerender-rPfzpIOU.js +0 -12939
  603. package/bundled-test-harness/assets/card-thunk-error-test-L0pvg4Ce.js +0 -48
  604. package/bundled-test-harness/assets/card-type-service-test-B2dhqxSD.js +0 -161
  605. package/bundled-test-harness/assets/check-correctness-test-DgqaLlCW.js +0 -1093
  606. package/bundled-test-harness/assets/check-domain-availability-test-B0hJHY5l.js +0 -98
  607. package/bundled-test-harness/assets/chip-D01NW3WH.js +0 -44
  608. package/bundled-test-harness/assets/choreo-D2Jl79RU.js +0 -1019
  609. package/bundled-test-harness/assets/choreo-_E8SOEe-.js +0 -2
  610. package/bundled-test-harness/assets/choreo-feature-reel-test-WLjsZDmS.js +0 -155
  611. package/bundled-test-harness/assets/choreo-gallery-build-order-test-6jnS8PsS.js +0 -436
  612. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CbUZsVB6.js +0 -399
  613. package/bundled-test-harness/assets/choreo-gallery-cover-test-CbvAStgk.js +0 -214
  614. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-tdjvUSa6.js +0 -133
  615. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-CsnM3hQK.js +0 -42
  616. package/bundled-test-harness/assets/choreo-gallery-drift-test-DG2LQTa7.js +0 -620
  617. package/bundled-test-harness/assets/choreo-gallery-escort-test-mn3-qXP1.js +0 -187
  618. package/bundled-test-harness/assets/choreo-gallery-films-test-BuktaC0D.js +0 -140
  619. package/bundled-test-harness/assets/choreo-gallery-filter-test-Dd-zpps0.js +0 -46
  620. package/bundled-test-harness/assets/choreo-gallery-fold-test-CWc1ijGc.js +0 -180
  621. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-tk2QmYPU.js +0 -114
  622. package/bundled-test-harness/assets/choreo-gallery-guides-test-DVbf1zM4.js +0 -321
  623. package/bundled-test-harness/assets/choreo-gallery-hang-test-B7EFp2dx.js +0 -426
  624. package/bundled-test-harness/assets/choreo-gallery-highlight-test-BFgbdesP.js +0 -60
  625. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-DJb8FC5R.js +0 -370
  626. package/bundled-test-harness/assets/choreo-gallery-interruption-test-DWyMXo5D.js +0 -176
  627. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-D3b8LsJ6.js +0 -104
  628. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CjjU6Rvn.js +0 -193
  629. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Le_h3QWU.js +0 -111
  630. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-Cp-DlWj4.js +0 -127
  631. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-DayS4GCJ.js +0 -100
  632. package/bundled-test-harness/assets/choreo-gallery-presentation-test-DeAfuFS7.js +0 -157
  633. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BgPWpggq.js +0 -145
  634. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-PzyoMNYv.js +0 -89
  635. package/bundled-test-harness/assets/choreo-gallery-sheet-test-CxaiNBkL.js +0 -48
  636. package/bundled-test-harness/assets/choreo-gallery-site-test-6xtSntS5.js +0 -237
  637. package/bundled-test-harness/assets/choreo-gallery-stage-E6Q5r-zU.js +0 -256
  638. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-C7aWMr9a.js +0 -102
  639. package/bundled-test-harness/assets/choreo-gallery-stages-test-CDWWgC61.js +0 -35
  640. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-Bkp15XJv.js +0 -138
  641. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CcGRi_3O.js +0 -144
  642. package/bundled-test-harness/assets/choreo-gallery-theater-test-Qph5pLT_.js +0 -252
  643. package/bundled-test-harness/assets/choreo-gallery-tuning-test-C4DhFLVA.js +0 -95
  644. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-LK493r1M.js +0 -88
  645. package/bundled-test-harness/assets/choreo-gallery-wires-test-B7SeUCc8.js +0 -148
  646. package/bundled-test-harness/assets/client-telemetry-test-DGmHzAFx.js +0 -340
  647. package/bundled-test-harness/assets/clip-BpYQPVz_.js +0 -2
  648. package/bundled-test-harness/assets/clip-CNaYbIwL.js +0 -92
  649. package/bundled-test-harness/assets/code-block-Cp2CJo5-.js +0 -502
  650. package/bundled-test-harness/assets/code-ref-test-C8JBHDb-.js +0 -163
  651. package/bundled-test-harness/assets/code-submode-availability-test-CzG1Tv6L.js +0 -198
  652. package/bundled-test-harness/assets/code-submode-test-BclVWjm5.js +0 -1839
  653. package/bundled-test-harness/assets/codeblocks-test-CmQlyxN7.js +0 -418
  654. package/bundled-test-harness/assets/codemirror-editor-test-B74H_yn8.js +0 -1512
  655. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bz6VEysU.js +0 -366
  656. package/bundled-test-harness/assets/color-field-test-DMCPQKIP.js +0 -212
  657. package/bundled-test-harness/assets/compaction-test-saQCLBrQ.js +0 -150
  658. package/bundled-test-harness/assets/computed-test-C05HliJC.js +0 -1320
  659. package/bundled-test-harness/assets/container-Cqcwrd-m.js +0 -10857
  660. package/bundled-test-harness/assets/container-h3Wc26qn.css +0 -5097
  661. package/bundled-test-harness/assets/content-preview-components-test-DZPj4_CU.js +0 -462
  662. package/bundled-test-harness/assets/copy-and-edit-test-DiXTQNTF.js +0 -292
  663. package/bundled-test-harness/assets/copy-card-test-ys7GquUY.js +0 -218
  664. package/bundled-test-harness/assets/copy-file-to-realm-test-Gn0Wn4vT.js +0 -148
  665. package/bundled-test-harness/assets/copy-source-test-BTLrOmPm.js +0 -56
  666. package/bundled-test-harness/assets/create-file-test-BCeIW-Rt.js +0 -464
  667. package/bundled-test-harness/assets/create-file-test-DbHQ5JsS.js +0 -1086
  668. package/bundled-test-harness/assets/create-listing-modal-test-CeHc4ter.js +0 -273
  669. package/bundled-test-harness/assets/create-listing-pr-request-test-DXbJNfMh.js +0 -117
  670. package/bundled-test-harness/assets/create-spec-test-BDIZoyHT.js +0 -256
  671. package/bundled-test-harness/assets/create-submission-workflow-test-Bix5J-3A.js +0 -132
  672. package/bundled-test-harness/assets/create-workspace-test-BmNnLHwC.js +0 -104
  673. package/bundled-test-harness/assets/credential-fields-test-NK1F4QWn.js +0 -200
  674. package/bundled-test-harness/assets/csv-file-def-test-BSfs4TTP.js +0 -102
  675. package/bundled-test-harness/assets/dashboard-C4T7ffKY.js +0 -3576
  676. package/bundled-test-harness/assets/dashboard-CFeHuP5-.js +0 -81
  677. package/bundled-test-harness/assets/dashboard-DQlpW-ux.css +0 -2392
  678. package/bundled-test-harness/assets/dashboard-add-workspace-test--rr6objf.js +0 -50
  679. package/bundled-test-harness/assets/dashboard-agents-test-D1y8H4xH.js +0 -334
  680. package/bundled-test-harness/assets/dashboard-archive-test-bN4EQaXv.js +0 -128
  681. package/bundled-test-harness/assets/dashboard-delete-test-BvsASb8B.js +0 -163
  682. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-DEsd5ZzZ.js +0 -71
  683. package/bundled-test-harness/assets/dashboard-duplicate-test-BnR0sTgB.js +0 -222
  684. package/bundled-test-harness/assets/dashboard-get-started-test-DG4uUXLv.js +0 -246
  685. package/bundled-test-harness/assets/dashboard-pinned-cards-test-AoGGVRAS.js +0 -220
  686. package/bundled-test-harness/assets/dashboard-reindex-test-BN9a96Xp.js +0 -115
  687. package/bundled-test-harness/assets/dashboard-section-rail-test-B3OT9V2T.js +0 -169
  688. package/bundled-test-harness/assets/dashboard-state-test-BY0Zqrmj.js +0 -162
  689. package/bundled-test-harness/assets/dashboard-test-C13oNpWt.js +0 -545
  690. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DZIV4x5j.js +0 -62
  691. package/bundled-test-harness/assets/dashboard-workspace-test-CBnOQViI.js +0 -537
  692. package/bundled-test-harness/assets/dashboard-workspaces-section-test-KU8ZVOYp.js +0 -396
  693. package/bundled-test-harness/assets/data-file-def-preview-test-CI5gcdtK.js +0 -155
  694. package/bundled-test-harness/assets/date-time-fields-test-D2CpR_Pb.js +0 -359
  695. package/bundled-test-harness/assets/debug-message-test-Df1kHesw.js +0 -117
  696. package/bundled-test-harness/assets/declared-captures-test-hQ43zuox.js +0 -879
  697. package/bundled-test-harness/assets/delete-workspace-test-BhfMKsix.js +0 -102
  698. package/bundled-test-harness/assets/diffing-test-CHRh55mC.js +0 -210
  699. package/bundled-test-harness/assets/download-file-to-realm-test-CC1HURCi.js +0 -119
  700. package/bundled-test-harness/assets/editor-test-DkeCv28f.js +0 -688
  701. package/bundled-test-harness/assets/edits-BSJqtUXM.js +0 -651
  702. package/bundled-test-harness/assets/email-field-test-DihK0suO.js +0 -75
  703. package/bundled-test-harness/assets/enum-field-test-Gja3bzt5.js +0 -935
  704. package/bundled-test-harness/assets/error-display-test-GhYZu7cp.js +0 -343
  705. package/bundled-test-harness/assets/evaluate-module-test-D_t4CiUq.js +0 -91
  706. package/bundled-test-harness/assets/execute-atomic-operations-test-xtou8Zeg.js +0 -113
  707. package/bundled-test-harness/assets/externals-B02-sD_L.js +0 -4393
  708. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DtxzNXdE.js +0 -207
  709. package/bundled-test-harness/assets/fallback-banner-test-BfmiQ_68.js +0 -53
  710. package/bundled-test-harness/assets/fallback-banner-test-DLtTdmvn.js +0 -225
  711. package/bundled-test-harness/assets/fallback-models-test-BxNJxhfd.js +0 -161
  712. package/bundled-test-harness/assets/fetch-card-json-test-DofKbzvC.js +0 -61
  713. package/bundled-test-harness/assets/field-configuration-test-SUoPaXWy.js +0 -551
  714. package/bundled-test-harness/assets/field-markdown-domain-test-BwtR0dPP.js +0 -616
  715. package/bundled-test-harness/assets/field-markdown-oversize-test-D8UJcBc3.js +0 -88
  716. package/bundled-test-harness/assets/field-markdown-primitives-test-D5_ZdoDO.js +0 -365
  717. package/bundled-test-harness/assets/field-markdown-specialized-test-Dpd5hs04.js +0 -534
  718. package/bundled-test-harness/assets/field-playground-test-CzhYzKGv.js +0 -894
  719. package/bundled-test-harness/assets/field-support-predicates-test-BSvVOFth.js +0 -167
  720. package/bundled-test-harness/assets/file-attachment-test-fM-yFedm.js +0 -796
  721. package/bundled-test-harness/assets/file-chooser-panel-test-CKj8YTdY.js +0 -153
  722. package/bundled-test-harness/assets/file-chooser-test-Bs8jFXqa.js +0 -504
  723. package/bundled-test-harness/assets/file-def-format-templates-test-CxrRoWoD.js +0 -380
  724. package/bundled-test-harness/assets/file-def-live-reload-test-X_8YEkve.js +0 -124
  725. package/bundled-test-harness/assets/file-def-menu-items-test-Dx879o_o.js +0 -138
  726. package/bundled-test-harness/assets/file-def-navigation-test-MMI_EEO1.js +0 -109
  727. package/bundled-test-harness/assets/file-def-serialization-test-B5lguBQD.js +0 -89
  728. package/bundled-test-harness/assets/file-def-test-Di9QWcrj.js +0 -216
  729. package/bundled-test-harness/assets/file-preview-live-reload-test-aqx93A7c.js +0 -310
  730. package/bundled-test-harness/assets/file-resource-primitives-test-a5abpcSB.js +0 -255
  731. package/bundled-test-harness/assets/file-tree-from-index-test-CnruGxJ8.js +0 -96
  732. package/bundled-test-harness/assets/file-tree-test-BCyWDdSE.js +0 -851
  733. package/bundled-test-harness/assets/file-view-model-test-BfpLa01Y.js +0 -346
  734. package/bundled-test-harness/assets/filedef-export-shape-test-CQ9XbrzS.js +0 -61
  735. package/bundled-test-harness/assets/film-CL1zj_bJ.js +0 -2
  736. package/bundled-test-harness/assets/film-Dq_quZ31.js +0 -13
  737. package/bundled-test-harness/assets/film-xbkQa060.js +0 -4074
  738. package/bundled-test-harness/assets/flac-audio-def-test-BmVp9dMx.js +0 -143
  739. package/bundled-test-harness/assets/focus-Dm4wkM72.js +0 -306
  740. package/bundled-test-harness/assets/font-metadata-extractor-test-OWEh9_MS.js +0 -415
  741. package/bundled-test-harness/assets/formatted-aibot-message-test-BpHsWpuV.js +0 -109
  742. package/bundled-test-harness/assets/formatted-user-message-test-DZW5TAr0.js +0 -43
  743. package/bundled-test-harness/assets/freestyle-test-D_uaPU_3.js +0 -17
  744. package/bundled-test-harness/assets/full-reindex-realm-test-C6vHL5kC.js +0 -101
  745. package/bundled-test-harness/assets/garbage-collection-test-D-Ao4t2n.js +0 -403
  746. package/bundled-test-harness/assets/general-test-PSGI8W0z.js +0 -923
  747. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-J-m-0E6W.js +0 -65
  748. package/bundled-test-harness/assets/generic-file-def-preview-test-BAsOhTYU.js +0 -71
  749. package/bundled-test-harness/assets/get-available-realm-identifiers-test-D5PBOr97.js +0 -47
  750. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-NM9UURHE.js +0 -47
  751. package/bundled-test-harness/assets/get-default-writable-realm-test-BxXc9a3J.js +0 -54
  752. package/bundled-test-harness/assets/get-published-realms-test-C8TJEc4-.js +0 -71
  753. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-Dt8CB6lS.js +0 -54
  754. package/bundled-test-harness/assets/get-relationship-membership-state-test-9_8x3myJ.js +0 -1308
  755. package/bundled-test-harness/assets/get-user-system-card-test-k0UO-uba.js +0 -67
  756. package/bundled-test-harness/assets/gif-image-def-test-BWrqPGDX.js +0 -188
  757. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BgG8QI9E.js +0 -160
  758. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-BKOvNyCN.js +0 -74
  759. package/bundled-test-harness/assets/gts-file-def-test-BCRHwDeZ.js +0 -100
  760. package/bundled-test-harness/assets/head-format-preview-test-DnfUhniI.js +0 -158
  761. package/bundled-test-harness/assets/helpers-DklkegO_.js +0 -5
  762. package/bundled-test-harness/assets/host-mode-service-vOfN0smp.js +0 -232
  763. package/bundled-test-harness/assets/host-mode-test-CCCJFz6_.js +0 -831
  764. package/bundled-test-harness/assets/host-submode-test-CtCfbuPA.js +0 -1342
  765. package/bundled-test-harness/assets/html-component-test-CWyhb5ZX.js +0 -65
  766. package/bundled-test-harness/assets/html-def-test-Cb8C2lUx.js +0 -160
  767. package/bundled-test-harness/assets/html-meta-extractor-test-BHT9Rtir.js +0 -60
  768. package/bundled-test-harness/assets/hydratable-card-test-DpgpdesD.js +0 -426
  769. package/bundled-test-harness/assets/icon-button-ABCGVF3C.js +0 -67
  770. package/bundled-test-harness/assets/image-metadata-extractor-test-ClhPTouq.js +0 -1109
  771. package/bundled-test-harness/assets/index-changes-test-CgnVr3LH.js +0 -367
  772. package/bundled-test-harness/assets/index-query-engine-test-CQTwju5_.js +0 -2593
  773. package/bundled-test-harness/assets/index-writer-test-IoVOoZT2.js +0 -3040
  774. package/bundled-test-harness/assets/inspector-test-BN2Ieb77.js +0 -2058
  775. package/bundled-test-harness/assets/instance-filter-matcher-test-Bq-_Sy89.js +0 -788
  776. package/bundled-test-harness/assets/instantiate-card-test-DEeDTzFV.js +0 -164
  777. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DP6kOyJS.js +0 -475
  778. package/bundled-test-harness/assets/interact-submode-setup-B0_cHqH-.js +0 -566
  779. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-9uUD91Pw.js +0 -99
  780. package/bundled-test-harness/assets/invite-user-to-room-test-CcDA45Ac.js +0 -142
  781. package/bundled-test-harness/assets/invoke-card-operation-test-DmUtgueM.js +0 -333
  782. package/bundled-test-harness/assets/isolated-render-test-B2eXNHu6.js +0 -51
  783. package/bundled-test-harness/assets/job-scoped-doc-cache-test-DF9D7cOc.js +0 -181
  784. package/bundled-test-harness/assets/job-scoped-instance-residency-test-CSS8xUU5.js +0 -103
  785. package/bundled-test-harness/assets/jpg-image-def-test-voECMTht.js +0 -697
  786. package/bundled-test-harness/assets/json-file-def-test-8Y4KLjUC.js +0 -95
  787. package/bundled-test-harness/assets/key-notices-badge-test-d1mYqx0e.js +0 -155
  788. package/bundled-test-harness/assets/key-readiness-test-BtCg7PCk.js +0 -190
  789. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CyCMbJnN.js +0 -398
  790. package/bundled-test-harness/assets/linksto-error-sentinel-test-BDW572-v.js +0 -238
  791. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-B4wM97hD.js +0 -354
  792. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-BhJmtJ0_.js +0 -303
  793. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BpBQ5V_i.js +0 -197
  794. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-pkBBl4e9.js +0 -260
  795. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-Bb6wjUdD.js +0 -196
  796. package/bundled-test-harness/assets/lint-and-fix-test-CcMLn-co.js +0 -51
  797. package/bundled-test-harness/assets/live-test-AyBnq7BX.js +0 -2
  798. package/bundled-test-harness/assets/live-test-CgnAcIDw.js +0 -100
  799. package/bundled-test-harness/assets/load-default-skills-test-BIOwtx0Y.js +0 -74
  800. package/bundled-test-harness/assets/loader-parallel-prefetch-test-D5_oRSER.js +0 -257
  801. package/bundled-test-harness/assets/loader-test-DSc_jR1c.js +0 -482
  802. package/bundled-test-harness/assets/loading-test-8pldx7S-.js +0 -63
  803. package/bundled-test-harness/assets/m4a-audio-def-test-BDI5apzM.js +0 -190
  804. package/bundled-test-harness/assets/main-5kHyCkdm.js +0 -5
  805. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-Wud0s7WZ.js +0 -470
  806. package/bundled-test-harness/assets/markdown-embed-chooser-test-DVzzS-0C.js +0 -334
  807. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B5W_iqsi.js +0 -447
  808. package/bundled-test-harness/assets/markdown-embed-preview-test-CZF_s0fB.js +0 -368
  809. package/bundled-test-harness/assets/markdown-fallback-test-fT6BS4W7.js +0 -316
  810. package/bundled-test-harness/assets/markdown-file-def-test-B1aTzazR.js +0 -380
  811. package/bundled-test-harness/assets/markdown-helpers-test-gNKZf7Mw.js +0 -188
  812. package/bundled-test-harness/assets/markdown-highlighting-test-Du5_CQmD.js +0 -244
  813. package/bundled-test-harness/assets/markdown-preview-h-_aJhRc.js +0 -72
  814. package/bundled-test-harness/assets/markdown-preview-test-DJvoVsXw.js +0 -238
  815. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-VwJi3Paj.js +0 -146
  816. package/bundled-test-harness/assets/markdown-skill-search-test-ysCdf0xM.js +0 -80
  817. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-K2JuMy36.js +0 -63
  818. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-CkdL_-os.js +0 -300
  819. package/bundled-test-harness/assets/matrix-service-personal-realm-test-Dy1DultK.js +0 -125
  820. package/bundled-test-harness/assets/matrix-service-realm-servers-test-DHDDKuEg.js +0 -55
  821. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-DcTbZpMl.js +0 -132
  822. package/bundled-test-harness/assets/matrix-service-relogin-test-D3NQktoa.js +0 -59
  823. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-6CAflWOA.js +0 -35
  824. package/bundled-test-harness/assets/menu-kUSaJIPq.js +0 -3562
  825. package/bundled-test-harness/assets/message-service-subscription-test-DaQdgDWi.js +0 -110
  826. package/bundled-test-harness/assets/message-service-test-BsGEgM_m.js +0 -144
  827. package/bundled-test-harness/assets/message-tool-test-BB_4kw1V.js +0 -33
  828. package/bundled-test-harness/assets/midi-audio-def-test-BbbkFjqf.js +0 -182
  829. package/bundled-test-harness/assets/migrate-skill-test-X9xImDuq.js +0 -161
  830. package/bundled-test-harness/assets/mini-AwF31elJ.js +0 -1404
  831. package/bundled-test-harness/assets/mini-card-chooser-test-BZtrEiWu.js +0 -272
  832. package/bundled-test-harness/assets/mini-file-chooser-test-MIHW3kCI.js +0 -201
  833. package/bundled-test-harness/assets/mock-matrix-Dd8k0DNa.js +0 -15107
  834. package/bundled-test-harness/assets/mock-matrix-DhPN_34j.js +0 -2
  835. package/bundled-test-harness/assets/modal-LTh3_oHK.js +0 -322
  836. package/bundled-test-harness/assets/model-cost-tier-test-h1IkU9mp.js +0 -174
  837. package/bundled-test-harness/assets/model-file-extract-test-ntSo0wZF.js +0 -206
  838. package/bundled-test-harness/assets/module-transpile-cache-test-CDeRaaeP.js +0 -67
  839. package/bundled-test-harness/assets/monaco-test-C0Fa744D.js +0 -100
  840. package/bundled-test-harness/assets/mp3-audio-def-test-B4j4qR9H.js +0 -133
  841. package/bundled-test-harness/assets/multiple-stacks-test-BhA25ywL.js +0 -208
  842. package/bundled-test-harness/assets/nested-query-field-render-test-S9Y8YNKB.js +0 -249
  843. package/bundled-test-harness/assets/no-stacks-test-B7VciWyg.js +0 -48
  844. package/bundled-test-harness/assets/number-field-test-CS74lDPN.js +0 -184
  845. package/bundled-test-harness/assets/office-file-def-test-2cKc1pmd.js +0 -263
  846. package/bundled-test-harness/assets/office-metadata-extractor-test-DC8Fo-OW.js +0 -218
  847. package/bundled-test-harness/assets/office-poster-capture-test-Ba0_5UrT.js +0 -203
  848. package/bundled-test-harness/assets/ogg-audio-def-test-CIPQ1d4w.js +0 -196
  849. package/bundled-test-harness/assets/open-create-listing-modal-test-bmQkY5Zl.js +0 -131
  850. package/bundled-test-harness/assets/open-image-in-new-tab-test-DBD7_vMH.js +0 -52
  851. package/bundled-test-harness/assets/open-secure-window-test-BgeuYAqz.js +0 -253
  852. package/bundled-test-harness/assets/open-workspace-test-DRHGljV0.js +0 -46
  853. package/bundled-test-harness/assets/operation-lowering-test-CH1c0pSH.js +0 -2957
  854. package/bundled-test-harness/assets/operations-invocation-test-B1YkCLrv.js +0 -523
  855. package/bundled-test-harness/assets/operations-optimistic-test-DAbtOwsC.js +0 -203
  856. package/bundled-test-harness/assets/operations-query-test-9p1ZIDe-.js +0 -459
  857. package/bundled-test-harness/assets/operations-store-reconciliation-test-D0EQh3w2.js +0 -406
  858. package/bundled-test-harness/assets/operations-test-BQhlrfe3.js +0 -2518
  859. package/bundled-test-harness/assets/operator-mode-acceptance-test-DtHnonEb.js +0 -1195
  860. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DQUxZxaq.js +0 -1036
  861. package/bundled-test-harness/assets/operator-mode-links-test-BJ26HllS.js +0 -797
  862. package/bundled-test-harness/assets/operator-mode-test-DIPDI0qt.js +0 -696
  863. package/bundled-test-harness/assets/operator-mode-ui-test-CfA-fAh4.js +0 -1045
  864. package/bundled-test-harness/assets/overlay-DecPh3nt.js +0 -123
  865. package/bundled-test-harness/assets/overlay-menu-items-test-C6XqjLtu.js +0 -331
  866. package/bundled-test-harness/assets/overlays-Ctp8ePzZ.js +0 -75
  867. package/bundled-test-harness/assets/overlays-CzWpSg5T.js +0 -2
  868. package/bundled-test-harness/assets/overlays-detached-element-test-DvL_8Bb5.js +0 -56
  869. package/bundled-test-harness/assets/panel-CImumikB.js +0 -15124
  870. package/bundled-test-harness/assets/past-sessions-test-N6riGN_I.js +0 -321
  871. package/bundled-test-harness/assets/patch-fields-test-D30_-KwQ.js +0 -1014
  872. package/bundled-test-harness/assets/patch-instance-test-C5rGscZq.js +0 -348
  873. package/bundled-test-harness/assets/pdf-file-def-test-DtiqGRvZ.js +0 -111
  874. package/bundled-test-harness/assets/pdf-metadata-extractor-test-FU02KmdV.js +0 -130
  875. package/bundled-test-harness/assets/permission-checking-realm-test-DqdNJDwU.js +0 -306
  876. package/bundled-test-harness/assets/persist-module-inspector-view-test-BHOAgPVy.js +0 -60
  877. package/bundled-test-harness/assets/persist-scroll-position-test-qtmS518r.js +0 -254
  878. package/bundled-test-harness/assets/phone-number-field-test-DhdaM7uL.js +0 -73
  879. package/bundled-test-harness/assets/pill-menu-test-C9Mrrepl.js +0 -60
  880. package/bundled-test-harness/assets/plate-9n-sXyCw.js +0 -41
  881. package/bundled-test-harness/assets/plate-BnZcAk-_.js +0 -2
  882. package/bundled-test-harness/assets/player-Cu5b4LEJ.js +0 -82
  883. package/bundled-test-harness/assets/player-unk2mkxV.js +0 -2
  884. package/bundled-test-harness/assets/playground-BwA8wFGK.js +0 -58
  885. package/bundled-test-harness/assets/plural-field-components-test-CFNQKETg.js +0 -198
  886. package/bundled-test-harness/assets/png-image-def-test-DG5Vhlqb.js +0 -266
  887. package/bundled-test-harness/assets/policy-audit-confirmation-test-yfKU47LR.js +0 -155
  888. package/bundled-test-harness/assets/policy-scoped-search-test-BjQRDYqR.js +0 -339
  889. package/bundled-test-harness/assets/prerender-file-extract-test-CEU4SaAZ.js +0 -346
  890. package/bundled-test-harness/assets/prerender-html-test-CGB3ClCS.js +0 -670
  891. package/bundled-test-harness/assets/prerender-meta-test-xqc4fW_0.js +0 -614
  892. package/bundled-test-harness/assets/prerender-module-test-CI1TmZw-.js +0 -409
  893. package/bundled-test-harness/assets/prerender-persistence-block-test-Da0dJO_N.js +0 -124
  894. package/bundled-test-harness/assets/prerender-pre-model-error-test-BVLyhk8R.js +0 -61
  895. package/bundled-test-harness/assets/prerender-serialize-cycle-test-glJFfxHU.js +0 -134
  896. package/bundled-test-harness/assets/prerendered-html-read-test-Mp4L0VHQ.js +0 -191
  897. package/bundled-test-harness/assets/pretui-components-test-BBpA9UnA.js +0 -991
  898. package/bundled-test-harness/assets/pretui-components-test-BqFq7rw_.css +0 -730
  899. package/bundled-test-harness/assets/preview-format-test-C55Bwcur.js +0 -103
  900. package/bundled-test-harness/assets/preview-test-CTAhRGU8.js +0 -474
  901. package/bundled-test-harness/assets/process-card-test-UjqpuxB7.js +0 -94
  902. package/bundled-test-harness/assets/profile-settings-modal-C8bCgTMK.js +0 -989
  903. package/bundled-test-harness/assets/publish-realm-ixUB4FPK.js +0 -82
  904. package/bundled-test-harness/assets/publish-realm-test-CrrsdL4W.js +0 -210
  905. package/bundled-test-harness/assets/query-field-barrier-test-DjivFE93.js +0 -113
  906. package/bundled-test-harness/assets/query-field-error-sentinel-test-0HwnV4Mw.js +0 -201
  907. package/bundled-test-harness/assets/query-field-membership-status-test-C8yTTBkc.js +0 -323
  908. package/bundled-test-harness/assets/query-field-page-optin-test-D4l_GcII.js +0 -126
  909. package/bundled-test-harness/assets/query-field-schema-test-DDbcNNm5.js +0 -231
  910. package/bundled-test-harness/assets/query-field-search-throttle-test-CXp50Ax0.js +0 -154
  911. package/bundled-test-harness/assets/query-field-stale-prerender-test-DErzt-Cv.js +0 -152
  912. package/bundled-test-harness/assets/query-fields-test-Dz67fdSl.js +0 -535
  913. package/bundled-test-harness/assets/quick-look-test-B1ijDsh_.js +0 -139
  914. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-DJxZ16H_.js +0 -91
  915. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-BoRQkZ8c.js +0 -45
  916. package/bundled-test-harness/assets/read-source-test-Bl-NjchO.js +0 -67
  917. package/bundled-test-harness/assets/read-text-file-test-CP37CZoo.js +0 -124
  918. package/bundled-test-harness/assets/realm-CaK5mkT-.js +0 -2852
  919. package/bundled-test-harness/assets/realm-api-keys-BNUFWbGR.js +0 -579
  920. package/bundled-test-harness/assets/realm-api-keys-CkshxhXC.js +0 -2
  921. package/bundled-test-harness/assets/realm-api-keys-test-BP8xifjn.js +0 -109
  922. package/bundled-test-harness/assets/realm-api-keys-test-CwdK9YXp.js +0 -588
  923. package/bundled-test-harness/assets/realm-config-iKwE3Htp.js +0 -833
  924. package/bundled-test-harness/assets/realm-config-policy-standing-test-BgVEIDnB.js +0 -290
  925. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-BoJoKzmX.js +0 -274
  926. package/bundled-test-harness/assets/realm-config-settings-test-Kxw-GHye.js +0 -187
  927. package/bundled-test-harness/assets/realm-field-test-CdGOxrFb.js +0 -100
  928. package/bundled-test-harness/assets/realm-indexing-test-CHtsBV2b.js +0 -4380
  929. package/bundled-test-harness/assets/realm-policy-fitted-test--DhNZSdC.js +0 -206
  930. package/bundled-test-harness/assets/realm-policy-test-D7714iVa.js +0 -1141
  931. package/bundled-test-harness/assets/realm-querying-test-Cj1ekZ0H.js +0 -1067
  932. package/bundled-test-harness/assets/realm-server-form-agnostic-test-CZFPNJfD.js +0 -96
  933. package/bundled-test-harness/assets/realm-server-subscriber-test-C86WmBp0.js +0 -46
  934. package/bundled-test-harness/assets/realm-service-info-test-CdgcwKDR.js +0 -67
  935. package/bundled-test-harness/assets/realm-test-DPoLsvKz.js +0 -2364
  936. package/bundled-test-harness/assets/realm-token-refresh-test-Ch35Siwi.js +0 -153
  937. package/bundled-test-harness/assets/realm-url-tooltip-test-x8xWOENK.js +0 -78
  938. package/bundled-test-harness/assets/reasoning-test-BxpE8Jvf.js +0 -221
  939. package/bundled-test-harness/assets/recent-files-test-DTmEzPLq.js +0 -450
  940. package/bundled-test-harness/assets/reindex-realm-test-BQ8KULn4.js +0 -117
  941. package/bundled-test-harness/assets/relationship-loading-state-test-BJoArPWf.js +0 -290
  942. package/bundled-test-harness/assets/remix-card-test-DsTA1KoG.js +0 -58
  943. package/bundled-test-harness/assets/rendered-markdown-DvukulDO.js +0 -292
  944. package/bundled-test-harness/assets/rendered-markdown-test-DxGptXSV.js +0 -587
  945. package/bundled-test-harness/assets/resident-instance-reuse-test-ZWnVu8uj.js +0 -82
  946. package/bundled-test-harness/assets/result-tile-CPyI6Vmv.js +0 -144
  947. package/bundled-test-harness/assets/rich-markdown-field-test-CdygoXIO.js +0 -1647
  948. package/bundled-test-harness/assets/room-message-test-D3NfMqH0.js +0 -484
  949. package/bundled-test-harness/assets/run-D_Px28eF.js +0 -3956
  950. package/bundled-test-harness/assets/run-realm-code-qWCZxmJ7.js +0 -2964
  951. package/bundled-test-harness/assets/run-realm-code-test-UzyeEJq6.js +0 -3844
  952. package/bundled-test-harness/assets/sanitize-module-list-test-Babq44bP.js +0 -85
  953. package/bundled-test-harness/assets/save-card-skip-index-wait-test-BcELXlQ_.js +0 -89
  954. package/bundled-test-harness/assets/schema-editor-test-CEvruZbt.js +0 -785
  955. package/bundled-test-harness/assets/schema-generation-test-hYAMdCrn.js +0 -28
  956. package/bundled-test-harness/assets/scrolling-test-DVIsh-_1.js +0 -412
  957. package/bundled-test-harness/assets/search-adorn-test-CkVhqFd0.js +0 -136
  958. package/bundled-test-harness/assets/search-and-choose-test-DUhOB3FV.js +0 -154
  959. package/bundled-test-harness/assets/search-correlation-id-test-Drn4r26N.js +0 -139
  960. package/bundled-test-harness/assets/search-entries-result-test-DTCRJ_wc.js +0 -234
  961. package/bundled-test-harness/assets/search-entries-test-CE0B47pw.js +0 -1486
  962. package/bundled-test-harness/assets/search-entries-tool-test-C4aG0ckM.js +0 -504
  963. package/bundled-test-harness/assets/search-google-images-test-LyhcB2f3.js +0 -166
  964. package/bundled-test-harness/assets/search-results-D4pSne0x.js +0 -266
  965. package/bundled-test-harness/assets/search-results-test-CRZHhqhn.js +0 -578
  966. package/bundled-test-harness/assets/search-selection-menu-test-B7Y3E_nj.js +0 -108
  967. package/bundled-test-harness/assets/search-sheet-files-test-C2y534g8.js +0 -126
  968. package/bundled-test-harness/assets/search-sheet-persistence-test-DePC59Bk.js +0 -131
  969. package/bundled-test-harness/assets/search-test-Dy8NxFkU.js +0 -2249
  970. package/bundled-test-harness/assets/search-tool-test-lctDaMH3.js +0 -156
  971. package/bundled-test-harness/assets/searchable-option-test-CE64M8oM.js +0 -322
  972. package/bundled-test-harness/assets/searchable-search-doc-test-C6u3mVvT.js +0 -1271
  973. package/bundled-test-harness/assets/section-rail-B_UQX00B.js +0 -113
  974. package/bundled-test-harness/assets/section-rail-test-DIda7MIw.js +0 -256
  975. package/bundled-test-harness/assets/secure-sign-in-CqqqfQG8.js +0 -174
  976. package/bundled-test-harness/assets/secure-sign-in-test-DimbVr_W.js +0 -373
  977. package/bundled-test-harness/assets/segmented-control-iePxSdTS.js +0 -173
  978. package/bundled-test-harness/assets/select-tNs6_xwW.js +0 -175
  979. package/bundled-test-harness/assets/send-ai-assistant-message-test-2GVrMF9Z.js +0 -52
  980. package/bundled-test-harness/assets/send-bot-trigger-event-test-B_3dKfGN.js +0 -56
  981. package/bundled-test-harness/assets/send-request-via-proxy-test-_clNWyYc.js +0 -380
  982. package/bundled-test-harness/assets/sending-test-DCPFXUVg.js +0 -659
  983. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BI0zCs8Y.js +0 -136
  984. package/bundled-test-harness/assets/serialization-test-bjdtVlZL.js +0 -8758
  985. package/bundled-test-harness/assets/set-user-system-card-test-BUv1vL08.js +0 -59
  986. package/bundled-test-harness/assets/setup-BW1mmC7C.js +0 -772
  987. package/bundled-test-harness/assets/setup-DsIcFT-T.js +0 -2
  988. package/bundled-test-harness/assets/shared-link-target-reuse-test-9NeJEjkb.js +0 -207
  989. package/bundled-test-harness/assets/show-card-test-mfyLwusD.js +0 -365
  990. package/bundled-test-harness/assets/signed-capture-link-test-BOtKNCAM.js +0 -132
  991. package/bundled-test-harness/assets/single-stack-test-B4MGjaLk.js +0 -652
  992. package/bundled-test-harness/assets/skills-test-BuP-Yzk1.js +0 -648
  993. package/bundled-test-harness/assets/skip-boot-index-guard-test-Cmrx2-K7.js +0 -46
  994. package/bundled-test-harness/assets/spec-test-BhZDdhVQ.js +0 -1077
  995. package/bundled-test-harness/assets/spinner-CpIBUG9m.js +0 -49
  996. package/bundled-test-harness/assets/src-DGHttmW-.js +0 -216
  997. package/bundled-test-harness/assets/src-DaNDSbp7.js +0 -5
  998. package/bundled-test-harness/assets/stick-to-bottom-resize-test-Dpy3OVum.js +0 -56
  999. package/bundled-test-harness/assets/store-add-test-_IYS8o74.js +0 -50
  1000. package/bundled-test-harness/assets/store-module-rebuild-test-B5VMaICy.js +0 -454
  1001. package/bundled-test-harness/assets/store-search-test-C2VZabrH.js +0 -175
  1002. package/bundled-test-harness/assets/store-test-D6PObxoD.js +0 -3672
  1003. package/bundled-test-harness/assets/structured-theme-test-BHjVeMf-.js +0 -377
  1004. package/bundled-test-harness/assets/summarize-session-test-BFtTuhe0.js +0 -172
  1005. package/bundled-test-harness/assets/svg-image-def-test-BL6lkWUX.js +0 -167
  1006. package/bundled-test-harness/assets/switch-submode-test-6Uv3bZMl.js +0 -168
  1007. package/bundled-test-harness/assets/sync-openrouter-models-test-Dp9E05tL.js +0 -97
  1008. package/bundled-test-harness/assets/test-support-DYm8XZ0E.js +0 -3
  1009. package/bundled-test-harness/assets/test-support-DfnhiIMV.js +0 -99
  1010. package/bundled-test-harness/assets/tests-CZk0Iag2.js +0 -3596
  1011. package/bundled-test-harness/assets/text-file-def-test-CHdC0yIU.js +0 -94
  1012. package/bundled-test-harness/assets/text-input-validator-test-B9ZR8XPU.js +0 -156
  1013. package/bundled-test-harness/assets/text-suggestion-test-CGLspKFQ.js +0 -340
  1014. package/bundled-test-harness/assets/theme-card-test-CXZvSEvG.js +0 -621
  1015. package/bundled-test-harness/assets/theme-dashboard-nav-test-CkEE0ILk.js +0 -196
  1016. package/bundled-test-harness/assets/theme-scheme-island-test-URXTjipF.js +0 -264
  1017. package/bundled-test-harness/assets/titles-C6enAdIv.js +0 -2
  1018. package/bundled-test-harness/assets/titles-Dft1HoUT.js +0 -52
  1019. package/bundled-test-harness/assets/to-device-streaming-test-D33ZOc9o.js +0 -163
  1020. package/bundled-test-harness/assets/token-usage-test-BHQlU4J4.js +0 -160
  1021. package/bundled-test-harness/assets/tools-CrudqfS3.js +0 -774
  1022. package/bundled-test-harness/assets/tools-calling-test-jo7IREau.js +0 -200
  1023. package/bundled-test-harness/assets/tools-test-D1wMfUa0.js +0 -1624
  1024. package/bundled-test-harness/assets/tools-test-Dn1LYsXp.js +0 -3204
  1025. package/bundled-test-harness/assets/tooltip-8Wyz4IIn.css +0 -68
  1026. package/bundled-test-harness/assets/tooltip-CqwLzRz5.js +0 -134
  1027. package/bundled-test-harness/assets/transform-cards-test-BPhwPFtp.js +0 -341
  1028. package/bundled-test-harness/assets/ts-file-def-preview-test-Bq3zTgw8.js +0 -95
  1029. package/bundled-test-harness/assets/ts-file-def-test-GLswMl7O.js +0 -92
  1030. package/bundled-test-harness/assets/ttf-font-def-test-DQulvUWs.js +0 -206
  1031. package/bundled-test-harness/assets/turn-settling-test-BspmOUQP.js +0 -160
  1032. package/bundled-test-harness/assets/turn-summary-9A8nvC0-.js +0 -1039
  1033. package/bundled-test-harness/assets/unpublish-realm-test-SkYPEhDz.js +0 -102
  1034. package/bundled-test-harness/assets/update-room-skills-test-cTxb-WU6.js +0 -240
  1035. package/bundled-test-harness/assets/use-ai-assistant-test-uaqW1T_A.js +0 -384
  1036. package/bundled-test-harness/assets/user-message-BudkIP-3.js +0 -262
  1037. package/bundled-test-harness/assets/validate-realm-test-DxrGgH9n.js +0 -67
  1038. package/bundled-test-harness/assets/video-metadata-extractor-test-B2pe-Iqa.js +0 -520
  1039. package/bundled-test-harness/assets/view-visually-test-PNon6fUo.js +0 -335
  1040. package/bundled-test-harness/assets/virtual-network-reset-test-uYJLaQHf.js +0 -96
  1041. package/bundled-test-harness/assets/wav-audio-def-test-F4OrFFR4.js +0 -160
  1042. package/bundled-test-harness/assets/webp-image-def-test-B0a_-Vya.js +0 -226
  1043. package/bundled-test-harness/assets/workspace-Cyftysy9.js +0 -440
  1044. package/bundled-test-harness/assets/workspace-a11y-test-sKiPDcbl.js +0 -197
  1045. package/bundled-test-harness/assets/workspace-actions-BuawjFmZ.js +0 -561
  1046. package/bundled-test-harness/assets/workspace-behavior-test-CKa-pb3T.js +0 -338
  1047. package/bundled-test-harness/assets/workspace-delete-multiple-test-Dt2weG5R.js +0 -212
  1048. package/bundled-test-harness/assets/workspace-delete-summary-test-CkqgFqZ8.js +0 -63
  1049. package/bundled-test-harness/assets/workspace-hosting-test-Ci7EEtHP.js +0 -138
  1050. package/bundled-test-harness/assets/workspace-indexing-test-BPVxxY6W.js +0 -71
  1051. package/bundled-test-harness/assets/workspace-test-CWr7vFbg.js +0 -385
  1052. package/bundled-test-harness/assets/workspace-test-INNpQovc.js +0 -51
  1053. package/bundled-test-harness/assets/workspace-timestamp-labels-test-CigQb5wr.js +0 -68
  1054. package/bundled-test-harness/assets/workspace-unit-test-BwVKpuXT.js +0 -122
  1055. package/bundled-test-harness/assets/write-binary-file-test-BKP3gv1k.js +0 -124
  1056. package/bundled-test-harness/assets/write-text-file-test-B6ijTKTa.js +0 -191
  1057. package/bundled-test-harness/assets/zip-archive-test-C-PBzkTn.js +0 -285
  1058. package/bundled-test-harness/assets/zip-file-def-test-FyCzJT-9.js +0 -164
@@ -0,0 +1,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