@cardstack/boxel-cli 0.9.0 → 0.10.0-unstable.0

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 (995) hide show
  1. package/README.md +12 -0
  2. package/bundled-test-harness/assets/account-switch-failed-GCSVbJML.js +23 -0
  3. package/bundled-test-harness/assets/account-switch-failed-GsWni_Gk.css +18 -0
  4. package/bundled-test-harness/assets/account-switch-failed-test-CdZWNths.js +45 -0
  5. package/bundled-test-harness/assets/add-workspace-c7L50Gx8.js +141 -0
  6. package/bundled-test-harness/assets/add-workspace-test-BZxHa6Pe.js +72 -0
  7. package/bundled-test-harness/assets/advanced-color-picker-0pGF-3WG.js +504 -0
  8. package/bundled-test-harness/assets/advanced-color-picker-pbO4HWc_.js +2 -0
  9. package/bundled-test-harness/assets/ai-assistant-test-Dnm4o9vK.js +2211 -0
  10. package/bundled-test-harness/assets/ai-module-creation-test-C6253CMt.js +151 -0
  11. package/bundled-test-harness/assets/aibot-message-miKyGeKk.js +278 -0
  12. package/bundled-test-harness/assets/app-i8pGdQkw.js +22855 -0
  13. package/bundled-test-harness/assets/app-zC7o6PyQ.css +2718 -0
  14. package/bundled-test-harness/assets/audio-file-def-DHnydP0t.js +133 -0
  15. package/bundled-test-harness/assets/auth-container-BP2gSoo4.css +51 -0
  16. package/bundled-test-harness/assets/auth-container-DN94iVfX.js +24 -0
  17. package/bundled-test-harness/assets/avif-meta-extractor-Bo5zRX1V.js +162 -0
  18. package/bundled-test-harness/assets/base64-image-B0RYxzHT.js +2 -0
  19. package/bundled-test-harness/assets/base64-image-Bxjqdwew.js +262 -0
  20. package/bundled-test-harness/assets/big-integer-7RLj5_7H.js +89 -0
  21. package/bundled-test-harness/assets/big-integer-C9sJxKVy.js +2 -0
  22. package/bundled-test-harness/assets/binary-upload-dedupe-test-DZo3EaV0.js +308 -0
  23. package/bundled-test-harness/assets/boolean-CcKPYUph.js +94 -0
  24. package/bundled-test-harness/assets/boolean-DvsSmtM7.js +2 -0
  25. package/bundled-test-harness/assets/brand-functional-palette-KpVSY2Sa.js +137 -0
  26. package/bundled-test-harness/assets/brand-logo-DDiOec0t.js +295 -0
  27. package/bundled-test-harness/assets/broken-link-template-test-DAngUbFJ.js +192 -0
  28. package/bundled-test-harness/assets/bundled-base-C_lumba6.js +254 -0
  29. package/bundled-test-harness/assets/bundled-base-modules-test-CSF7Rl4Z.js +54 -0
  30. package/bundled-test-harness/assets/buried-stack-item-scroll-test-B0J_EP88.js +236 -0
  31. package/bundled-test-harness/assets/bxl-expression-test-Dej7WgI6.js +250 -0
  32. package/bundled-test-harness/assets/can-invoke-test-elyUcOKT.js +401 -0
  33. package/bundled-test-harness/assets/card-api-CjWXCkqh.js +8 -0
  34. package/bundled-test-harness/assets/card-api-Dzje0smT.js +4393 -0
  35. package/bundled-test-harness/assets/card-api-test-DA8d4Ooc.js +198 -0
  36. package/bundled-test-harness/assets/card-basics-test-mp1Odo-l.js +5364 -0
  37. package/bundled-test-harness/assets/card-chooser-paging-test-y8OfboYd.js +235 -0
  38. package/bundled-test-harness/assets/card-chooser-test-nmg2zkDj.js +393 -0
  39. package/bundled-test-harness/assets/card-collection-BXiO3i7R.js +118 -0
  40. package/bundled-test-harness/assets/card-context-search-results-Dbhn7lvW.js +30 -0
  41. package/bundled-test-harness/assets/card-context-search-results-test-DVXT-YC5.js +184 -0
  42. package/bundled-test-harness/assets/card-def-field-def-relationships-test-mX4rxrtO.js +562 -0
  43. package/bundled-test-harness/assets/card-delete-test-BxFsqFnX.js +466 -0
  44. package/bundled-test-harness/assets/card-error-C-7hjxu9.js +72 -0
  45. package/bundled-test-harness/assets/card-error-awaiting-index-test-BvfY2eaW.js +53 -0
  46. package/bundled-test-harness/assets/card-error-detail-nMwopDir.js +271 -0
  47. package/bundled-test-harness/assets/card-info-CTFxdohf.js +2 -0
  48. package/bundled-test-harness/assets/card-list-B9QrkJ97.js +2 -0
  49. package/bundled-test-harness/assets/card-list-XbwLCXZS.js +202 -0
  50. package/bundled-test-harness/assets/card-resource-JGLjQUy6.js +86 -0
  51. package/bundled-test-harness/assets/cards-grid-CWG41hZE.js +344 -0
  52. package/bundled-test-harness/assets/cards-grid-DSpX99p6.js +2 -0
  53. package/bundled-test-harness/assets/cards-grid-layout-Bht0LwZy.js +2 -0
  54. package/bundled-test-harness/assets/cards-grid-layout-CdpKlHUb.js +111 -0
  55. package/bundled-test-harness/assets/check-correctness-test-C4BrUeKA.js +554 -0
  56. package/bundled-test-harness/assets/clip-BEVvLrXx.js +2 -0
  57. package/bundled-test-harness/assets/clip-CoB714qX.js +92 -0
  58. package/bundled-test-harness/assets/code-ref-C2uguisI.js +2 -0
  59. package/bundled-test-harness/assets/code-ref-Cy7sV5a4.js +138 -0
  60. package/bundled-test-harness/assets/code-submode-availability-test-BsA_Ul01.js +198 -0
  61. package/bundled-test-harness/assets/code-submode-test-DkBhpEPB.js +1839 -0
  62. package/bundled-test-harness/assets/codeblocks-test-B1eZ2_JF.js +418 -0
  63. package/bundled-test-harness/assets/codemirror-editor-C6pxSm5y.js +2 -0
  64. package/bundled-test-harness/assets/codemirror-editor-DzM46Cd8.js +701 -0
  65. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-BemP-ZdG.js +366 -0
  66. package/bundled-test-harness/assets/color-C-jGNFWZ.js +2 -0
  67. package/bundled-test-harness/assets/color-field-test-DPIRaBec.js +212 -0
  68. package/bundled-test-harness/assets/color-picker-field-Bv4IjS-d.js +139 -0
  69. package/bundled-test-harness/assets/color-picker-field-D1bYCQIg.js +2 -0
  70. package/bundled-test-harness/assets/color-wheel-picker-IIaCQplL.js +283 -0
  71. package/bundled-test-harness/assets/color-wheel-picker-Kw-UN3kV.js +2 -0
  72. package/bundled-test-harness/assets/color-zzCBneih.js +65 -0
  73. package/bundled-test-harness/assets/command-data-BMBtjT1E.js +95 -0
  74. package/bundled-test-harness/assets/command-data-BXC5Z0oA.js +2 -0
  75. package/bundled-test-harness/assets/compaction-test-CxUKnxlQ.js +150 -0
  76. package/bundled-test-harness/assets/components-Ct_agx0G.js +14294 -0
  77. package/bundled-test-harness/assets/computed-test-C-lpGQQ3.js +1320 -0
  78. package/bundled-test-harness/assets/container-BdPu8rvc.css +5565 -0
  79. package/bundled-test-harness/assets/container-Dj-5prh9.js +11288 -0
  80. package/bundled-test-harness/assets/contains-many-component-CAWqzX8W.js +2 -0
  81. package/bundled-test-harness/assets/contrast-checker-addon-BTLD7oMx.js +2 -0
  82. package/bundled-test-harness/assets/contrast-checker-addon-DBzizR04.js +71 -0
  83. package/bundled-test-harness/assets/convert-to-class-name-test-zZuKxYvF.js +17 -0
  84. package/bundled-test-harness/assets/coordinate-Bw8va6tO.js +48 -0
  85. package/bundled-test-harness/assets/copy-file-to-realm-test-DtCKPzqj.js +148 -0
  86. package/bundled-test-harness/assets/country-B_tWpLlO.js +199 -0
  87. package/bundled-test-harness/assets/create-file-modal-D-VPyEYp.js +570 -0
  88. package/bundled-test-harness/assets/create-listing-modal-test-hyLkQY0u.js +273 -0
  89. package/bundled-test-harness/assets/create-listing-pr-request-test-rjWFA_5S.js +117 -0
  90. package/bundled-test-harness/assets/create-spec-test-HKIxZGxK.js +256 -0
  91. package/bundled-test-harness/assets/create-specs-9-ELVyJP.js +215 -0
  92. package/bundled-test-harness/assets/create-submission-workflow-test-DNZrbRX8.js +132 -0
  93. package/bundled-test-harness/assets/credential-fields-test-xPEdA911.js +157 -0
  94. package/bundled-test-harness/assets/css-value-Du3HL39X.js +48 -0
  95. package/bundled-test-harness/assets/csv-file-def-EHRmilrp.js +277 -0
  96. package/bundled-test-harness/assets/currency-y6ZCHIqG.js +134 -0
  97. package/bundled-test-harness/assets/date-B27PrSFT.js +183 -0
  98. package/bundled-test-harness/assets/date-CiP5Eb9i.js +2 -0
  99. package/bundled-test-harness/assets/date-time-fields-test-Clf5vxRW.js +359 -0
  100. package/bundled-test-harness/assets/datetime-BEbR9YgU.js +201 -0
  101. package/bundled-test-harness/assets/datetime-DPnrt1wl.js +2 -0
  102. package/bundled-test-harness/assets/datetime-stamp-AuT7F7qn.js +2 -0
  103. package/bundled-test-harness/assets/datetime-stamp-CGwP2P3f.js +81 -0
  104. package/bundled-test-harness/assets/day-BFLxZ9bQ.js +2 -0
  105. package/bundled-test-harness/assets/day-CQoEkqgE.js +113 -0
  106. package/bundled-test-harness/assets/debug-message-test-CzgOpfcI.js +117 -0
  107. package/bundled-test-harness/assets/dist-B-fYvxfL.js +389 -0
  108. package/bundled-test-harness/assets/dist-C2IXvIKX.js +323 -0
  109. package/bundled-test-harness/assets/dist-CdNZu43l.js +1710 -0
  110. package/bundled-test-harness/assets/docx-file-def-BQMw460_.js +60 -0
  111. package/bundled-test-harness/assets/docx-meta-extractor-DBlmH_kV.js +60 -0
  112. package/bundled-test-harness/assets/docx-meta-extractor-Dw4gZ0ae.js +2 -0
  113. package/bundled-test-harness/assets/duration-B0SnEiw1.js +184 -0
  114. package/bundled-test-harness/assets/duration-DbjJTFeA.js +2 -0
  115. package/bundled-test-harness/assets/email-C-8cyWiQ.js +80 -0
  116. package/bundled-test-harness/assets/email-field-test-BOBmvQqx.js +75 -0
  117. package/bundled-test-harness/assets/email-xUgCst-p.js +2 -0
  118. package/bundled-test-harness/assets/enum-BWiCyJlu.js +167 -0
  119. package/bundled-test-harness/assets/enum-CzYjivhO.js +2 -0
  120. package/bundled-test-harness/assets/enum-field-test-Bea9EsQR.js +953 -0
  121. package/bundled-test-harness/assets/error-display-test-Cbl2D_0c.js +343 -0
  122. package/bundled-test-harness/assets/ethereum-address-Bw_J05bD.js +78 -0
  123. package/bundled-test-harness/assets/ethereum-address-C9wHMBt3.js +2 -0
  124. package/bundled-test-harness/assets/expiration-warning-BHcJEjZt.js +90 -0
  125. package/bundled-test-harness/assets/expiration-warning-_G8SKZd0.js +2 -0
  126. package/bundled-test-harness/assets/externals-CKblKBo1.js +4393 -0
  127. package/bundled-test-harness/assets/fallback-banner-BqCrvTDt.js +24 -0
  128. package/bundled-test-harness/assets/fallback-banner-live-delete-test-D_AYMvf6.js +207 -0
  129. package/bundled-test-harness/assets/fallback-banner-test-B8Ne9a5g.js +225 -0
  130. package/bundled-test-harness/assets/fallback-banner-test-C7oaSxd1.js +53 -0
  131. package/bundled-test-harness/assets/fallback-models-test-DY-PvU9k.js +161 -0
  132. package/bundled-test-harness/assets/field-component-Bj8YthPE.js +2 -0
  133. package/bundled-test-harness/assets/field-configuration-test-B5LztQ47.js +548 -0
  134. package/bundled-test-harness/assets/field-edit-Cx_haspD.js +36 -0
  135. package/bundled-test-harness/assets/field-edit-DQZWUz3F.js +2 -0
  136. package/bundled-test-harness/assets/field-markdown-domain-test-DnqK3CrE.js +616 -0
  137. package/bundled-test-harness/assets/field-markdown-oversize-test-BEpbXIvl.js +88 -0
  138. package/bundled-test-harness/assets/field-markdown-primitives-test-BDORWoOk.js +365 -0
  139. package/bundled-test-harness/assets/field-markdown-specialized-test-BmIzadYq.js +534 -0
  140. package/bundled-test-harness/assets/field-test-helpers-CRF9-jFw.js +45 -0
  141. package/bundled-test-harness/assets/file-api-DPMJghBY.js +7 -0
  142. package/bundled-test-harness/assets/file-attachment-test-DFLXg3xV.js +796 -0
  143. package/bundled-test-harness/assets/file-chooser-panel-test-B4DzCWkt.js +153 -0
  144. package/bundled-test-harness/assets/file-chooser-test-DpjOWgpB.js +504 -0
  145. package/bundled-test-harness/assets/file-def-edit-Bstl7Kkl.js +2 -0
  146. package/bundled-test-harness/assets/file-def-edit-C1dzJxmQ.js +26 -0
  147. package/bundled-test-harness/assets/file-def-embedded-CUy4G7Vc.js +2 -0
  148. package/bundled-test-harness/assets/file-def-embedded-DJs6P5t0.js +38 -0
  149. package/bundled-test-harness/assets/file-def-fitted-BlrBFfLh.js +38 -0
  150. package/bundled-test-harness/assets/file-def-fitted-Bo5Qfkyf.js +2 -0
  151. package/bundled-test-harness/assets/file-def-isolated-BsHydanv.js +38 -0
  152. package/bundled-test-harness/assets/file-def-isolated-Dp-Lc99-.js +2 -0
  153. package/bundled-test-harness/assets/file-def-serialization-test-CISKpt_o.js +89 -0
  154. package/bundled-test-harness/assets/file-menu-items-7_ltrFZq.js +117 -0
  155. package/bundled-test-harness/assets/file-menu-items-BnRG9ydE.js +2 -0
  156. package/bundled-test-harness/assets/file-preview-stage-CV3qZpiK.js +72 -0
  157. package/bundled-test-harness/assets/file-preview-stage-DTA5X8rX.js +2 -0
  158. package/bundled-test-harness/assets/file-shell-embedded-BpmiVzIG.js +2 -0
  159. package/bundled-test-harness/assets/file-shell-embedded-CEv0-6OE.js +68 -0
  160. package/bundled-test-harness/assets/file-shell-fitted-C6k3GnMc.js +2 -0
  161. package/bundled-test-harness/assets/file-shell-fitted-iSTg3PJa.js +98 -0
  162. package/bundled-test-harness/assets/file-shell-isolated-C-pEod2J.js +195 -0
  163. package/bundled-test-harness/assets/file-shell-isolated-DI9oU7ix.js +2 -0
  164. package/bundled-test-harness/assets/file-tree-from-index-BtOOMqnb.js +151 -0
  165. package/bundled-test-harness/assets/file-tree-from-index-test-T8w3hPw_.js +96 -0
  166. package/bundled-test-harness/assets/film-5n9_gRqZ.js +4074 -0
  167. package/bundled-test-harness/assets/film-Ca2Vzlfu.js +13 -0
  168. package/bundled-test-harness/assets/film-DEvhBbBu.js +2 -0
  169. package/bundled-test-harness/assets/fitted-6OGuHgoU.js +2 -0
  170. package/bundled-test-harness/assets/fitted-B2l1jlSp.js +34 -0
  171. package/bundled-test-harness/assets/flac-meta-extractor-BoJqvmDC.js +99 -0
  172. package/bundled-test-harness/assets/font-file-def-Czzt5paT.js +64 -0
  173. package/bundled-test-harness/assets/font-meta-extractor-DQYT_e5b.js +2 -0
  174. package/bundled-test-harness/assets/font-meta-extractor-IHD-pG8V.js +303 -0
  175. package/bundled-test-harness/assets/formatted-aibot-message-test-Djsl8RzE.js +109 -0
  176. package/bundled-test-harness/assets/from-elsewhere-BXcLYxxu.js +131 -0
  177. package/bundled-test-harness/assets/frontmatter-field-CciolgL3.js +41 -0
  178. package/bundled-test-harness/assets/garbage-collection-test-BTOLAfB6.js +403 -0
  179. package/bundled-test-harness/assets/gauge-C1loqGq3.js +2 -0
  180. package/bundled-test-harness/assets/gauge-u8dxl90d.js +106 -0
  181. package/bundled-test-harness/assets/general-test-Cd5WtVvd.js +926 -0
  182. package/bundled-test-harness/assets/get-relationship-membership-state-test-DJAuhOVM.js +1308 -0
  183. package/bundled-test-harness/assets/gif-meta-extractor-tSaPtuYW.js +114 -0
  184. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-DNSy5l59.js +160 -0
  185. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-B6BbQxYq.js +74 -0
  186. package/bundled-test-harness/assets/helper-m6jA5HmU.js +478 -0
  187. package/bundled-test-harness/assets/host-submode-test-CsgdksBi.js +1243 -0
  188. package/bundled-test-harness/assets/html-file-def-yKtdMSa-.js +82 -0
  189. package/bundled-test-harness/assets/hydratable-card-CxNfbqly.js +147 -0
  190. package/bundled-test-harness/assets/hydratable-card-test-NJ4CI4ey.js +426 -0
  191. package/bundled-test-harness/assets/icons-B3SAtRoj.js +894 -0
  192. package/bundled-test-harness/assets/image-file-def-B0rpS3Yy.js +3 -0
  193. package/bundled-test-harness/assets/image-file-def-DUFmjNL8.js +65 -0
  194. package/bundled-test-harness/assets/image-olOUqgMQ.js +47 -0
  195. package/bundled-test-harness/assets/index-changes-test-D7OE-99k.js +367 -0
  196. package/bundled-test-harness/assets/index-query-engine-test-BBKqgSmg.js +2593 -0
  197. package/bundled-test-harness/assets/inspector-test-DV6Ms2uz.js +1930 -0
  198. package/bundled-test-harness/assets/instance-filter-matcher-test-Bs4kf7E8.js +788 -0
  199. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DIfgRhIN.js +475 -0
  200. package/bundled-test-harness/assets/interact-submode-setup-D4M_e580.js +566 -0
  201. package/bundled-test-harness/assets/is-component-declaration-test-jPGRTVh1.js +50 -0
  202. package/bundled-test-harness/assets/iso-bmff-DHtkSbQM.js +205 -0
  203. package/bundled-test-harness/assets/iso-bmff-zmOHoSVg.js +2 -0
  204. package/bundled-test-harness/assets/isolated-and-edit-BAnwcK1T.js +2 -0
  205. package/bundled-test-harness/assets/job-priority-header-test-7j2f3Dtl.js +81 -0
  206. package/bundled-test-harness/assets/job-scoped-instance-residency-test-DPzVQUL3.js +103 -0
  207. package/bundled-test-harness/assets/join-the-community-Ft5fjeIA.js +86 -0
  208. package/bundled-test-harness/assets/jpg-meta-extractor-Dsq6rZ8F.js +88 -0
  209. package/bundled-test-harness/assets/json-field-CxOZvp3k.js +19 -0
  210. package/bundled-test-harness/assets/json-field-ojdwGD6T.js +2 -0
  211. package/bundled-test-harness/assets/json-file-def-Da_5-zSM.js +298 -0
  212. package/bundled-test-harness/assets/last-modified-date-BnyJsc04.js +43 -0
  213. package/bundled-test-harness/assets/last-modified-date-test-DFl2mo1B.js +28 -0
  214. package/bundled-test-harness/assets/links-to-editor-DO24-71w.js +2 -0
  215. package/bundled-test-harness/assets/links-to-many-component-C7DabwAY.js +2 -0
  216. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-D4lDhvnQ.js +398 -0
  217. package/bundled-test-harness/assets/linksto-error-sentinel-test-oWgDz00K.js +238 -0
  218. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-CpSl7zJ7.js +354 -0
  219. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-DJY3J8Xl.js +303 -0
  220. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BxzfoONe.js +197 -0
  221. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DyE99km_.js +260 -0
  222. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-dcWAAgxt.js +196 -0
  223. package/bundled-test-harness/assets/llm-model-DrswiczZ.js +64 -0
  224. package/bundled-test-harness/assets/login-C-EIG0-Q.css +543 -0
  225. package/bundled-test-harness/assets/login-CNeL-9IC.js +408 -0
  226. package/bundled-test-harness/assets/login-error-text-test-CEH2tjNP.js +51 -0
  227. package/bundled-test-harness/assets/login-test-BpMx7qwV.js +246 -0
  228. package/bundled-test-harness/assets/m4a-meta-extractor-BJkMHUIK.js +204 -0
  229. package/bundled-test-harness/assets/main-BaUgfpPE.js +5 -0
  230. package/bundled-test-harness/assets/markdown-ByEGbwov.js +7 -0
  231. package/bundled-test-harness/assets/markdown-KJzgTg-A.js +2 -0
  232. package/bundled-test-harness/assets/markdown-editor-mode-select-BUGPXaSE.js +2 -0
  233. package/bundled-test-harness/assets/markdown-editor-mode-select-DBk8dG0O.js +54 -0
  234. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-BIlEmna9.js +470 -0
  235. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B6rscKpk.js +447 -0
  236. package/bundled-test-harness/assets/markdown-embed-preview-test-CTQw1wq-.js +368 -0
  237. package/bundled-test-harness/assets/markdown-fallback-BVsco6gJ.js +2 -0
  238. package/bundled-test-harness/assets/markdown-fallback-test-C_CIFEzH.js +316 -0
  239. package/bundled-test-harness/assets/markdown-highlighting-test-D6YvywF5.js +244 -0
  240. package/bundled-test-harness/assets/markdown-preview-1TSMSUv0.js +64 -0
  241. package/bundled-test-harness/assets/markdown-preview-jbuUjLoD.js +72 -0
  242. package/bundled-test-harness/assets/markdown-preview-test-zuU5uoA_.js +238 -0
  243. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-CoicGRkb.js +146 -0
  244. package/bundled-test-harness/assets/menu-items-DZ_uOoYu.js +2 -0
  245. package/bundled-test-harness/assets/message-tool-test-K6LgTq5d.js +33 -0
  246. package/bundled-test-harness/assets/metadata-fields-WiOuUCDl.js +1415 -0
  247. package/bundled-test-harness/assets/metadata-fields-iu5AfQp3.js +2 -0
  248. package/bundled-test-harness/assets/midi-audio-def-CD2-4Wjx.js +52 -0
  249. package/bundled-test-harness/assets/midi-meta-extractor-CE3sLiEV.js +284 -0
  250. package/bundled-test-harness/assets/midi-meta-extractor-O7c8LHYV.js +2 -0
  251. package/bundled-test-harness/assets/migrate-skill-test-Beh-AeSN.js +161 -0
  252. package/bundled-test-harness/assets/mini-BNXINKKF.js +85 -0
  253. package/bundled-test-harness/assets/mini-C43Q4BWp.js +1519 -0
  254. package/bundled-test-harness/assets/mini-card-chooser-test-B1GMp-31.js +272 -0
  255. package/bundled-test-harness/assets/mini-file-chooser-test-CbI1vrQn.js +201 -0
  256. package/bundled-test-harness/assets/missing-template-BPhJRbDs.js +48 -0
  257. package/bundled-test-harness/assets/missing-template-DP-Pi-HQ.js +2 -0
  258. package/bundled-test-harness/assets/modal-KpPz2f8x.js +322 -0
  259. package/bundled-test-harness/assets/modal-container-0Efz_h2z.js +40 -0
  260. package/bundled-test-harness/assets/model-cost-tier-test-D-5VSjh6.js +173 -0
  261. package/bundled-test-harness/assets/module-contents-service-BRkTETb6.js +256 -0
  262. package/bundled-test-harness/assets/moment-Cln59YUK.js +3474 -0
  263. package/bundled-test-harness/assets/monaco-AbHCoDJY.js +143 -0
  264. package/bundled-test-harness/assets/monaco-test-DCPi18sy.js +100 -0
  265. package/bundled-test-harness/assets/monaco-test-waiter-lvFEYpFj.js +190 -0
  266. package/bundled-test-harness/assets/month-1eUIsvWN.js +2 -0
  267. package/bundled-test-harness/assets/month-BeUdWMWQ.js +123 -0
  268. package/bundled-test-harness/assets/month-day-Bbsd8YbR.js +192 -0
  269. package/bundled-test-harness/assets/month-day-Dks5STJu.js +2 -0
  270. package/bundled-test-harness/assets/month-year-pL_rpUhX.js +2 -0
  271. package/bundled-test-harness/assets/month-year-wH_YnYgL.js +93 -0
  272. package/bundled-test-harness/assets/mp3-meta-extractor-C3u34UHM.js +476 -0
  273. package/bundled-test-harness/assets/mp4-meta-extractor-Bj3F7dxs.js +188 -0
  274. package/bundled-test-harness/assets/multiple-stacks-test-mkNdTUMI.js +208 -0
  275. package/bundled-test-harness/assets/nested-query-field-render-test-BQLn3wg9.js +249 -0
  276. package/bundled-test-harness/assets/no-stacks-test-DpwZQAJ-.js +48 -0
  277. package/bundled-test-harness/assets/number-DZa-fHpu.js +151 -0
  278. package/bundled-test-harness/assets/number-Dvua76YP.js +3 -0
  279. package/bundled-test-harness/assets/number-field-test-BiaH2eaB.js +184 -0
  280. package/bundled-test-harness/assets/number-input-D5nDYDkK.js +82 -0
  281. package/bundled-test-harness/assets/office-extract-JzYva33g.js +27 -0
  282. package/bundled-test-harness/assets/office-extract-XMpsyYRh.js +2 -0
  283. package/bundled-test-harness/assets/ogg-meta-extractor-DJosZ9LA.js +225 -0
  284. package/bundled-test-harness/assets/on-key-BBVkS8Bi.js +472 -0
  285. package/bundled-test-harness/assets/ooxml-BlAE2w4d.js +172 -0
  286. package/bundled-test-harness/assets/ooxml-D-p8OmuM.js +2 -0
  287. package/bundled-test-harness/assets/open-image-in-new-tab-test-DWBU5pw9.js +52 -0
  288. package/bundled-test-harness/assets/operation-lowering-test-nzqprueU.js +2812 -0
  289. package/bundled-test-harness/assets/operations-CPvfTuY3.js +766 -0
  290. package/bundled-test-harness/assets/operations-invocation-test-C75T6zn3.js +523 -0
  291. package/bundled-test-harness/assets/operations-query-test-BoCszQEW.js +459 -0
  292. package/bundled-test-harness/assets/operations-test-79ipSnpM.js +2518 -0
  293. package/bundled-test-harness/assets/operations-x3Aw2Nky.js +3 -0
  294. package/bundled-test-harness/assets/operator-mode-acceptance-test-jjsYtt96.js +1188 -0
  295. package/bundled-test-harness/assets/operator-mode-card-chooser-test-hZP9gEQK.js +1036 -0
  296. package/bundled-test-harness/assets/operator-mode-links-test-DN16SuIx.js +793 -0
  297. package/bundled-test-harness/assets/operator-mode-state-service-gwiTSiWX.js +1275 -0
  298. package/bundled-test-harness/assets/operator-mode-state-service-test-Dt2qnKKP.js +206 -0
  299. package/bundled-test-harness/assets/operator-mode-test-BZnnxO9q.js +683 -0
  300. package/bundled-test-harness/assets/operator-mode-ui-test-O--qEo-y.js +1027 -0
  301. package/bundled-test-harness/assets/overlay-menu-items-test-Bl2k0aAa.js +317 -0
  302. package/bundled-test-harness/assets/overlays-CdN_JokA.js +270 -0
  303. package/bundled-test-harness/assets/overlays-clip-test-DpbR1ZTz.js +91 -0
  304. package/bundled-test-harness/assets/overlays-detached-element-test-cLgEGvMs.js +56 -0
  305. package/bundled-test-harness/assets/pane-PYdezM7g.js +330 -0
  306. package/bundled-test-harness/assets/panel-7FDqkxrr.js +474 -0
  307. package/bundled-test-harness/assets/panel-C3E0s49q.js +3540 -0
  308. package/bundled-test-harness/assets/past-sessions-test-BsjEeoze.js +321 -0
  309. package/bundled-test-harness/assets/patch-fields-test-CsixJmSr.js +1014 -0
  310. package/bundled-test-harness/assets/patch-instance-test-CBDgTi0L.js +348 -0
  311. package/bundled-test-harness/assets/pdf-file-def-9VNjnqDa.js +76 -0
  312. package/bundled-test-harness/assets/pdf-meta-extractor-BF4e5kMR.js +156 -0
  313. package/bundled-test-harness/assets/pdf-meta-extractor-D8Bxh2cc.js +2 -0
  314. package/bundled-test-harness/assets/pdf-viewer-Bu413sN8.js +112 -0
  315. package/bundled-test-harness/assets/pdf-viewer-GKDi_xmf.js +2 -0
  316. package/bundled-test-harness/assets/percentage-TOr6qK2T.js +84 -0
  317. package/bundled-test-harness/assets/permission-checking-realm-test-BRNVYszm.js +306 -0
  318. package/bundled-test-harness/assets/phone-number-D5SR8nWu.js +236 -0
  319. package/bundled-test-harness/assets/phone-number-field-test-DffwtqGd.js +73 -0
  320. package/bundled-test-harness/assets/phone-number-hf_xIVGQ.js +2 -0
  321. package/bundled-test-harness/assets/plate-Vojc88hM.js +41 -0
  322. package/bundled-test-harness/assets/plate-dTUzEMj5.js +2 -0
  323. package/bundled-test-harness/assets/player-CmRw0uM5.js +82 -0
  324. package/bundled-test-harness/assets/player-Dt85lPZl.js +2 -0
  325. package/bundled-test-harness/assets/plural-field-components-test-DNpGuH1D.js +198 -0
  326. package/bundled-test-harness/assets/png-image-def-GY7gjqya.js +48 -0
  327. package/bundled-test-harness/assets/png-meta-extractor-4pI611re.js +2 -0
  328. package/bundled-test-harness/assets/png-meta-extractor-CHp_rpAi.js +111 -0
  329. package/bundled-test-harness/assets/policy-scoped-search-test-CipPu7tY.js +339 -0
  330. package/bundled-test-harness/assets/pptx-file-def-lBBiebvn.js +60 -0
  331. package/bundled-test-harness/assets/pptx-meta-extractor-BjJYWiOJ.js +77 -0
  332. package/bundled-test-harness/assets/pptx-meta-extractor-DbT-dPRg.js +2 -0
  333. package/bundled-test-harness/assets/prerender-persistence-block-test-ClHMVvJt.js +124 -0
  334. package/bundled-test-harness/assets/prerender-serialize-cycle-test-LdqaMTK8.js +134 -0
  335. package/bundled-test-harness/assets/preview-CYlam_aW.js +74 -0
  336. package/bundled-test-harness/assets/preview-format-CiSo4kEa.js +41 -0
  337. package/bundled-test-harness/assets/preview-format-test-MsB1TOLB.js +103 -0
  338. package/bundled-test-harness/assets/process-card-B3xBGkv1.js +2 -0
  339. package/bundled-test-harness/assets/process-card-DumVcx9E.js +114 -0
  340. package/bundled-test-harness/assets/process-card-test-C44H8yVy.js +94 -0
  341. package/bundled-test-harness/assets/profile-settings-modal-ipYzrVTz.js +708 -0
  342. package/bundled-test-harness/assets/progress-circle-DJ6WSO2E.js +95 -0
  343. package/bundled-test-harness/assets/progress-circle-q358_9Sn.js +2 -0
  344. package/bundled-test-harness/assets/quarter-BjO5DlU2.js +2 -0
  345. package/bundled-test-harness/assets/quarter-_D72FwfS.js +168 -0
  346. package/bundled-test-harness/assets/query-field-membership-status-test-CzDyfK49.js +323 -0
  347. package/bundled-test-harness/assets/query-field-page-optin-test-B-x3vsmC.js +126 -0
  348. package/bundled-test-harness/assets/query-field-schema-test-DFw6KuYv.js +231 -0
  349. package/bundled-test-harness/assets/query-field-stale-prerender-test-DSQ-cv_O.js +152 -0
  350. package/bundled-test-harness/assets/query-fields-test-DQiMFRCe.js +535 -0
  351. package/bundled-test-harness/assets/rail-CNspDFyn.js +44 -0
  352. package/bundled-test-harness/assets/rail-D2YcQ0VP.js +2 -0
  353. package/bundled-test-harness/assets/realm-82Z5RUM_.js +95 -0
  354. package/bundled-test-harness/assets/realm-config-SgrwqjRu.js +844 -0
  355. package/bundled-test-harness/assets/realm-config-policy-standing-test-C6sQNk2u.js +290 -0
  356. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-DcYXBlvi.js +274 -0
  357. package/bundled-test-harness/assets/realm-config-settings-test-DblJv06X.js +187 -0
  358. package/bundled-test-harness/assets/realm-dropdown-CDvL8k3B.js +560 -0
  359. package/bundled-test-harness/assets/realm-et890flh.js +2 -0
  360. package/bundled-test-harness/assets/realm-field-test-pBK_x-Xw.js +100 -0
  361. package/bundled-test-harness/assets/realm-indexing-test-DSFn2F8F.js +4380 -0
  362. package/bundled-test-harness/assets/realm-policy-test-DYnLqzTS.js +1141 -0
  363. package/bundled-test-harness/assets/realm-test-DOZT2EG5.js +2363 -0
  364. package/bundled-test-harness/assets/realm-url-tooltip-qaXTjRb-.js +56 -0
  365. package/bundled-test-harness/assets/realm-url-tooltip-test-DGTEeLH9.js +78 -0
  366. package/bundled-test-harness/assets/reasoning-test-BRkhvYjr.js +234 -0
  367. package/bundled-test-harness/assets/recent-colors-addon-BreXcpg8.js +2 -0
  368. package/bundled-test-harness/assets/recent-colors-addon-CmCkbJ2_.js +61 -0
  369. package/bundled-test-harness/assets/relationship-loading-state-test-B6UGYKzG.js +290 -0
  370. package/bundled-test-harness/assets/relative-time-BjHvL023.js +2 -0
  371. package/bundled-test-harness/assets/relative-time-ChYKOMIM.js +129 -0
  372. package/bundled-test-harness/assets/remix-card-test-CpV0kKfq.js +58 -0
  373. package/bundled-test-harness/assets/rendered-markdown-CJa7IzCC.js +263 -0
  374. package/bundled-test-harness/assets/rendered-markdown-test-CVKsHS4P.js +587 -0
  375. package/bundled-test-harness/assets/resident-instance-reuse-test-jQfW1NMn.js +82 -0
  376. package/bundled-test-harness/assets/response-field-B2-daCl2.js +38 -0
  377. package/bundled-test-harness/assets/result-tile-BSg4mzbc.js +140 -0
  378. package/bundled-test-harness/assets/rich-markdown-BtP1yamM.js +2 -0
  379. package/bundled-test-harness/assets/rich-markdown-C6rQUngb.js +218 -0
  380. package/bundled-test-harness/assets/rich-markdown-field-test-9yB6ykCe.js +1647 -0
  381. package/bundled-test-harness/assets/room-C7tKd02X.js +1008 -0
  382. package/bundled-test-harness/assets/room-message-test-DsMmRYpV.js +445 -0
  383. package/bundled-test-harness/assets/room-test-golI1H61.js +95 -0
  384. package/bundled-test-harness/assets/run-realm-code-CbXk6bnK.js +1600 -0
  385. package/bundled-test-harness/assets/run-realm-code-test-B9JeesaW.js +2468 -0
  386. package/bundled-test-harness/assets/schema-generation-test-uLLGm5Vh.js +28 -0
  387. package/bundled-test-harness/assets/score-BQhCQdUP.js +2 -0
  388. package/bundled-test-harness/assets/score-CoWEzENH.js +100 -0
  389. package/bundled-test-harness/assets/scrolling-test-WHWEkKeZ.js +384 -0
  390. package/bundled-test-harness/assets/search-BkQYpQDY.js +605 -0
  391. package/bundled-test-harness/assets/search-adorn-test-CW92JPOk.js +136 -0
  392. package/bundled-test-harness/assets/search-entries-BU4w6Ymc.js +472 -0
  393. package/bundled-test-harness/assets/search-entries-result-test-9eydsDtD.js +234 -0
  394. package/bundled-test-harness/assets/search-entries-test-ByUREx0G.js +1486 -0
  395. package/bundled-test-harness/assets/search-result-header-UFkdo0Bx.js +128 -0
  396. package/bundled-test-harness/assets/search-results-DrHTuVRZ.js +266 -0
  397. package/bundled-test-harness/assets/search-results-test-krtQQM57.js +578 -0
  398. package/bundled-test-harness/assets/search-selection-menu-test-DoqSbez7.js +108 -0
  399. package/bundled-test-harness/assets/search-sheet-persistence-test-4ZPaEY-y.js +131 -0
  400. package/bundled-test-harness/assets/search-test-BYpq32RM.js +2241 -0
  401. package/bundled-test-harness/assets/searchable-BXw4T11q.js +192 -0
  402. package/bundled-test-harness/assets/searchable-CVvPDA3Q.js +2 -0
  403. package/bundled-test-harness/assets/searchable-option-test-BhLFI4ei.js +322 -0
  404. package/bundled-test-harness/assets/searchable-search-doc-test-DrNLCF73.js +1271 -0
  405. package/bundled-test-harness/assets/secure-sign-in-VNQhe0ae.js +130 -0
  406. package/bundled-test-harness/assets/secure-sign-in-Za8PX9cD.css +24 -0
  407. package/bundled-test-harness/assets/secure-sign-in-aunWHCrB.js +73 -0
  408. package/bundled-test-harness/assets/secure-sign-in-test-BcY1TcNd.js +32 -0
  409. package/bundled-test-harness/assets/secure-sign-in-test-DRdz89BT.js +245 -0
  410. package/bundled-test-harness/assets/sending-test-mbHpGZUu.js +576 -0
  411. package/bundled-test-harness/assets/serialization-rri-form-audit-test-nypV9J82.js +136 -0
  412. package/bundled-test-harness/assets/serialization-test-aLwrFv4d.js +8758 -0
  413. package/bundled-test-harness/assets/setup-Dgn0s6Zk.js +772 -0
  414. package/bundled-test-harness/assets/shared-link-target-reuse-test-D9MR2UNc.js +207 -0
  415. package/bundled-test-harness/assets/show-card-Dwfk332M.js +67 -0
  416. package/bundled-test-harness/assets/show-card-test-CRPwwJvc.js +365 -0
  417. package/bundled-test-harness/assets/show-file-DLdFPHMR.js +34 -0
  418. package/bundled-test-harness/assets/signed-capture-DUR9PohQ.js +204 -0
  419. package/bundled-test-harness/assets/signed-capture-link-test-DfTAB6OT.js +132 -0
  420. package/bundled-test-harness/assets/single-stack-test-Crr_8nti.js +652 -0
  421. package/bundled-test-harness/assets/skill-DQ00VonZ.js +3 -0
  422. package/bundled-test-harness/assets/skill-reference-LEitQV9i.js +112 -0
  423. package/bundled-test-harness/assets/skill-yZXS1VHQ.js +76 -0
  424. package/bundled-test-harness/assets/skills-test-D3-C-Dbm.js +648 -0
  425. package/bundled-test-harness/assets/slider-picker-B6AxKL2j.js +245 -0
  426. package/bundled-test-harness/assets/slider-picker-C4Tc5o-s.js +2 -0
  427. package/bundled-test-harness/assets/spec-Cl_LB6nC.js +602 -0
  428. package/bundled-test-harness/assets/spinner-BHFM7zcR.js +39 -0
  429. package/bundled-test-harness/assets/spinner-DvAvsyDT.css +21 -0
  430. package/bundled-test-harness/assets/store-BV6WX8oV.js +2205 -0
  431. package/bundled-test-harness/assets/store-module-rebuild-test-HyphFJiF.js +454 -0
  432. package/bundled-test-harness/assets/store-search-test-nUeJ5opb.js +175 -0
  433. package/bundled-test-harness/assets/store-test-BebUIJAg.js +3460 -0
  434. package/bundled-test-harness/assets/string-BHZZwNlZ.js +9 -0
  435. package/bundled-test-harness/assets/submode-switcher-D-U9cXo0.js +169 -0
  436. package/bundled-test-harness/assets/svg-meta-extractor-BsG4w2nX.js +42 -0
  437. package/bundled-test-harness/assets/swatches-picker-4vFztxHo.js +33 -0
  438. package/bundled-test-harness/assets/swatches-picker-C7RE7uJ8.js +2 -0
  439. package/bundled-test-harness/assets/switch-submode-CuA0Zfjn.js +79 -0
  440. package/bundled-test-harness/assets/switch-submode-test-i1Qic_Cp.js +168 -0
  441. package/bundled-test-harness/assets/tag-CZNs3DPN.js +105 -0
  442. package/bundled-test-harness/assets/tests-BneuP252.js +3523 -0
  443. package/bundled-test-harness/assets/text-area-DAShQQBe.js +9 -0
  444. package/bundled-test-harness/assets/text-file-def-D2Rs6nS1.js +151 -0
  445. package/bundled-test-harness/assets/text-input-validator-test-C9IG-1GZ.js +156 -0
  446. package/bundled-test-harness/assets/theme-Dm8LWaRK.js +9 -0
  447. package/bundled-test-harness/assets/theme-card-test-Cbb6tAap.js +621 -0
  448. package/bundled-test-harness/assets/theme-scheme-island-test-DOVLakx3.js +264 -0
  449. package/bundled-test-harness/assets/three-d-model-def-DWSPQGgD.js +70 -0
  450. package/bundled-test-harness/assets/time--_Txqya1.js +126 -0
  451. package/bundled-test-harness/assets/time-DKD7Bdjd.js +2 -0
  452. package/bundled-test-harness/assets/time-slots-BZaugjq_.js +2 -0
  453. package/bundled-test-harness/assets/time-slots-C85M0rWl.js +85 -0
  454. package/bundled-test-harness/assets/timeline-B3KGDm3M.js +2 -0
  455. package/bundled-test-harness/assets/timeline-BMwgaZZu.js +59 -0
  456. package/bundled-test-harness/assets/to-device-streaming-test-CMp5bFiz.js +163 -0
  457. package/bundled-test-harness/assets/token-usage-test-CXA0b8Ep.js +166 -0
  458. package/bundled-test-harness/assets/tool-field-BGLelnsr.js +94 -0
  459. package/bundled-test-harness/assets/tool-field-BOFuDDt3.js +2 -0
  460. package/bundled-test-harness/assets/tools-CTjy7Aub.js +725 -0
  461. package/bundled-test-harness/assets/tools-calling-test--JR-7AK7.js +200 -0
  462. package/bundled-test-harness/assets/tools-test-6yAW3W5I.js +2820 -0
  463. package/bundled-test-harness/assets/tools-test-DhpMUQkz.js +1624 -0
  464. package/bundled-test-harness/assets/ts-file-def-CDbf8aw2.js +159 -0
  465. package/bundled-test-harness/assets/update-room-skills-test-DoKsS_1C.js +240 -0
  466. package/bundled-test-harness/assets/url-D0ooeJxC.js +2 -0
  467. package/bundled-test-harness/assets/url-mFskVPSX.js +96 -0
  468. package/bundled-test-harness/assets/video-file-def-AcmWqzev.js +76 -0
  469. package/bundled-test-harness/assets/wav-meta-extractor-CbTLruQf.js +368 -0
  470. package/bundled-test-harness/assets/webm-meta-extractor-C9JH-CMX.js +178 -0
  471. package/bundled-test-harness/assets/webp-meta-extractor-C6sHm4J7.js +98 -0
  472. package/bundled-test-harness/assets/website-Bxuk_OmR.js +92 -0
  473. package/bundled-test-harness/assets/week-Bxssxce7.js +2 -0
  474. package/bundled-test-harness/assets/week-DQLj9974.js +111 -0
  475. package/bundled-test-harness/assets/welcome-to-boxel-BH82RsW5.js +172 -0
  476. package/bundled-test-harness/assets/workspace-DJ_s2x4g.js +614 -0
  477. package/bundled-test-harness/assets/workspace-a11y-test-BJbZNgoP.js +197 -0
  478. package/bundled-test-harness/assets/workspace-behavior-test-BLBARTfb.js +200 -0
  479. package/bundled-test-harness/assets/workspace-chooser-BpmlVrVn.js +2219 -0
  480. package/bundled-test-harness/assets/workspace-chooser-CqLR2Dzh.css +1296 -0
  481. package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-CmAVNAWC.js +36 -0
  482. package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DEfG7Uh9.js +60 -0
  483. package/bundled-test-harness/assets/workspace-delete-multiple-test-DE7Z8ooj.js +212 -0
  484. package/bundled-test-harness/assets/workspace-delete-summary-test-CwtG_zLH.js +63 -0
  485. package/bundled-test-harness/assets/workspace-timestamp-labels-test-DFAaRmJW.js +58 -0
  486. package/bundled-test-harness/assets/xlsx-file-def-DcvaRYnZ.js +60 -0
  487. package/bundled-test-harness/assets/xlsx-meta-extractor-0RlViVaf.js +101 -0
  488. package/bundled-test-harness/assets/xlsx-meta-extractor-BH30Vuem.js +2 -0
  489. package/bundled-test-harness/assets/year-B_MBk_hE.js +78 -0
  490. package/bundled-test-harness/assets/year-hSpccI9L.js +2 -0
  491. package/bundled-test-harness/assets/zip-file-def-c84iddi9.js +288 -0
  492. package/bundled-test-harness/index.html +78 -68
  493. package/bundled-test-harness/tests/index.html +78 -68
  494. package/bundled-types/host-app/components/matrix/account-switch-failed.gts +2 -2
  495. package/bundled-types/host-app/components/matrix/auth.gts +2 -2
  496. package/bundled-types/host-app/components/matrix/cli-auth.gts +7 -6
  497. package/bundled-types/host-app/components/matrix/forgot-password.gts +43 -129
  498. package/bundled-types/host-app/components/matrix/login.gts +15 -118
  499. package/bundled-types/host-app/components/matrix/register-user.gts +45 -226
  500. package/bundled-types/host-app/components/matrix/secure-sign-in.gts +235 -0
  501. package/bundled-types/host-app/components/operator-mode/container.gts +13 -1
  502. package/bundled-types/host-app/components/operator-mode/profile-info-popover.gts +1 -1
  503. package/bundled-types/host-app/config/environment.ts +1 -1
  504. package/bundled-types/host-app/lib/secure-sign-in.ts +130 -0
  505. package/bundled-types/host-app/services/matrix-service.ts +46 -0
  506. package/bundled-types/host-app/services/monaco-service.ts +0 -5
  507. package/bundled-types/host-app/utils/login-token.ts +23 -10
  508. package/dist/api.js +1 -1
  509. package/dist/index.js +289 -285
  510. package/package.json +1 -1
  511. package/src/build-program.ts +6 -2
  512. package/src/commands/profile.ts +72 -3
  513. package/src/lib/profile-manager.ts +5 -1
  514. package/src/lib/secure-session.ts +29 -0
  515. package/src/lib/sso-login.ts +94 -15
  516. package/bundled-test-harness/assets/account-switch-failed-B3pr_iC3.js +0 -32
  517. package/bundled-test-harness/assets/account-switch-failed-DTGZZo-G.css +0 -61
  518. package/bundled-test-harness/assets/account-switch-failed-test-9ENVgvlx.js +0 -45
  519. package/bundled-test-harness/assets/add-workspace-BAbk0250.js +0 -141
  520. package/bundled-test-harness/assets/add-workspace-test-ChAja_t-.js +0 -72
  521. package/bundled-test-harness/assets/advanced-color-picker-C-xBFJ2S.js +0 -504
  522. package/bundled-test-harness/assets/advanced-color-picker-bWAmCT-8.js +0 -2
  523. package/bundled-test-harness/assets/ai-assistant-test-BJ9yetuC.js +0 -2211
  524. package/bundled-test-harness/assets/ai-module-creation-test-Bw3TKS9d.js +0 -151
  525. package/bundled-test-harness/assets/aibot-message-DkgHT6eJ.js +0 -465
  526. package/bundled-test-harness/assets/app-DW5QjtRp.js +0 -22816
  527. package/bundled-test-harness/assets/app-yCDjO4mk.css +0 -2718
  528. package/bundled-test-harness/assets/audio-file-def-bJ3cXVmC.js +0 -133
  529. package/bundled-test-harness/assets/avif-meta-extractor-CrSDfYEt.js +0 -162
  530. package/bundled-test-harness/assets/base64-image-C7UBjK5W.js +0 -262
  531. package/bundled-test-harness/assets/base64-image-CjWpxROT.js +0 -2
  532. package/bundled-test-harness/assets/big-integer-BBql7oGZ.js +0 -89
  533. package/bundled-test-harness/assets/big-integer-B_TrzRy_.js +0 -2
  534. package/bundled-test-harness/assets/binary-upload-dedupe-test-BiX8kS7D.js +0 -308
  535. package/bundled-test-harness/assets/boolean-9LNUUTfw.js +0 -2
  536. package/bundled-test-harness/assets/boolean-BAmK01TF.js +0 -94
  537. package/bundled-test-harness/assets/brand-functional-palette-CFuoS-LS.js +0 -137
  538. package/bundled-test-harness/assets/brand-logo-By89eknI.js +0 -295
  539. package/bundled-test-harness/assets/broken-link-template-test-odBriDSP.js +0 -192
  540. package/bundled-test-harness/assets/bundled-base-CLQkkmN4.js +0 -254
  541. package/bundled-test-harness/assets/bundled-base-modules-test-BYrTaTwa.js +0 -54
  542. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DU4bM5nd.js +0 -236
  543. package/bundled-test-harness/assets/bxl-expression-test-Cs9JaZbC.js +0 -250
  544. package/bundled-test-harness/assets/can-invoke-test-ccMc06BU.js +0 -401
  545. package/bundled-test-harness/assets/card-api-Bn65NUT0.js +0 -8
  546. package/bundled-test-harness/assets/card-api-test-COrFXu2i.js +0 -198
  547. package/bundled-test-harness/assets/card-api-u1pOrwS6.js +0 -4393
  548. package/bundled-test-harness/assets/card-basics-test-D4rn3iN-.js +0 -5364
  549. package/bundled-test-harness/assets/card-chooser-paging-test-bZhdrUXt.js +0 -235
  550. package/bundled-test-harness/assets/card-chooser-test-D9w1duob.js +0 -393
  551. package/bundled-test-harness/assets/card-collection-ClCV-__1.js +0 -118
  552. package/bundled-test-harness/assets/card-context-search-results-H_rN3Upz.js +0 -30
  553. package/bundled-test-harness/assets/card-context-search-results-test-jciyaouV.js +0 -184
  554. package/bundled-test-harness/assets/card-def-field-def-relationships-test-BVZoQzM8.js +0 -562
  555. package/bundled-test-harness/assets/card-delete-test-CuLcZFnY.js +0 -466
  556. package/bundled-test-harness/assets/card-error-DIOivSkD.js +0 -72
  557. package/bundled-test-harness/assets/card-error-awaiting-index-test-JMwcRONq.js +0 -53
  558. package/bundled-test-harness/assets/card-error-detail-96jWBx6B.js +0 -271
  559. package/bundled-test-harness/assets/card-info-BxPtwG1h.js +0 -2
  560. package/bundled-test-harness/assets/card-list-B34qY3io.js +0 -2
  561. package/bundled-test-harness/assets/card-list-BpCaKkZJ.js +0 -202
  562. package/bundled-test-harness/assets/card-resource-DcPbIwH9.js +0 -86
  563. package/bundled-test-harness/assets/cards-grid-CTN8nBT_.js +0 -344
  564. package/bundled-test-harness/assets/cards-grid-Cx44vL-M.js +0 -2
  565. package/bundled-test-harness/assets/cards-grid-layout-BdL0Uzxl.js +0 -111
  566. package/bundled-test-harness/assets/cards-grid-layout-Dn8Yb4ma.js +0 -2
  567. package/bundled-test-harness/assets/check-correctness-test-BfMV-MC0.js +0 -554
  568. package/bundled-test-harness/assets/clip-CK6mVuyN.js +0 -92
  569. package/bundled-test-harness/assets/clip-CfXD1JTr.js +0 -2
  570. package/bundled-test-harness/assets/code-ref-85Bih6Zl.js +0 -138
  571. package/bundled-test-harness/assets/code-ref-DATHaoyt.js +0 -2
  572. package/bundled-test-harness/assets/code-submode-availability-test-DLYlx0wo.js +0 -198
  573. package/bundled-test-harness/assets/code-submode-test-CDIi7MjD.js +0 -1824
  574. package/bundled-test-harness/assets/codeblocks-test-CNPyTvuv.js +0 -418
  575. package/bundled-test-harness/assets/codemirror-editor-BPOPTR-f.js +0 -2
  576. package/bundled-test-harness/assets/codemirror-editor-DPhG0pec.js +0 -701
  577. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Dk5lFOUq.js +0 -366
  578. package/bundled-test-harness/assets/color-BxN5gRSg.js +0 -65
  579. package/bundled-test-harness/assets/color-CrunRcis.js +0 -2
  580. package/bundled-test-harness/assets/color-field-test-COjFIpXV.js +0 -212
  581. package/bundled-test-harness/assets/color-picker-field-C-GS1CIw.js +0 -139
  582. package/bundled-test-harness/assets/color-picker-field-D3RXhbCK.js +0 -2
  583. package/bundled-test-harness/assets/color-wheel-picker-Bz8cBmf4.js +0 -283
  584. package/bundled-test-harness/assets/color-wheel-picker-DrwPrB8B.js +0 -2
  585. package/bundled-test-harness/assets/command-data-BxXgtNBf.js +0 -2
  586. package/bundled-test-harness/assets/command-data-ZdkcpEgG.js +0 -95
  587. package/bundled-test-harness/assets/compaction-test-DS7DTGT_.js +0 -150
  588. package/bundled-test-harness/assets/components-CbCTWAON.js +0 -17777
  589. package/bundled-test-harness/assets/computed-test-D_OrXDtR.js +0 -1320
  590. package/bundled-test-harness/assets/container-DDolu1gk.js +0 -11109
  591. package/bundled-test-harness/assets/container-DndcCIMv.css +0 -5169
  592. package/bundled-test-harness/assets/contains-many-component-BtgnAXih.js +0 -2
  593. package/bundled-test-harness/assets/contrast-checker-addon-kwtLKWdL.js +0 -2
  594. package/bundled-test-harness/assets/contrast-checker-addon-zFY5cen1.js +0 -71
  595. package/bundled-test-harness/assets/convert-to-class-name-test-BcGWl2K1.js +0 -17
  596. package/bundled-test-harness/assets/coordinate-D72EF1Pl.js +0 -48
  597. package/bundled-test-harness/assets/copy-file-to-realm-test-CYoDX4YV.js +0 -148
  598. package/bundled-test-harness/assets/country-B-iIe5v8.js +0 -199
  599. package/bundled-test-harness/assets/create-file-modal-PpvMksjR.js +0 -570
  600. package/bundled-test-harness/assets/create-listing-modal-test-CQtEf_UD.js +0 -273
  601. package/bundled-test-harness/assets/create-listing-pr-request-test-CDtKWyfk.js +0 -117
  602. package/bundled-test-harness/assets/create-spec-test-Cbqk8I9T.js +0 -256
  603. package/bundled-test-harness/assets/create-specs-CZg2cpnh.js +0 -215
  604. package/bundled-test-harness/assets/create-submission-workflow-test-CYrxF7bg.js +0 -132
  605. package/bundled-test-harness/assets/credential-fields-test-Di4jCJgU.js +0 -157
  606. package/bundled-test-harness/assets/css-value-CceJyI5o.js +0 -48
  607. package/bundled-test-harness/assets/csv-file-def-DJL2aZI9.js +0 -277
  608. package/bundled-test-harness/assets/currency-Bn5WIqzF.js +0 -134
  609. package/bundled-test-harness/assets/date-XI2CVYA2.js +0 -2
  610. package/bundled-test-harness/assets/date-h83UJcFR.js +0 -183
  611. package/bundled-test-harness/assets/date-time-fields-test-Cterr2mj.js +0 -359
  612. package/bundled-test-harness/assets/datetime-DadI80tC.js +0 -201
  613. package/bundled-test-harness/assets/datetime-Dpb_Sejj.js +0 -2
  614. package/bundled-test-harness/assets/datetime-stamp-C4vv397u.js +0 -81
  615. package/bundled-test-harness/assets/datetime-stamp-DIsJdQux.js +0 -2
  616. package/bundled-test-harness/assets/day-C4pZoGNM.js +0 -113
  617. package/bundled-test-harness/assets/day-D0goBhKb.js +0 -2
  618. package/bundled-test-harness/assets/debug-message-test-CV0sj-fl.js +0 -117
  619. package/bundled-test-harness/assets/dist-CAIttNZm.js +0 -1710
  620. package/bundled-test-harness/assets/dist-CLbqnmnm.js +0 -389
  621. package/bundled-test-harness/assets/dist-qkBOmIQy.js +0 -323
  622. package/bundled-test-harness/assets/docx-file-def-hz2tVQKf.js +0 -60
  623. package/bundled-test-harness/assets/docx-meta-extractor-CeRshlxL.js +0 -60
  624. package/bundled-test-harness/assets/docx-meta-extractor-muK5CKF3.js +0 -2
  625. package/bundled-test-harness/assets/duration-BYx1dLfm.js +0 -2
  626. package/bundled-test-harness/assets/duration-FAmTFeUa.js +0 -184
  627. package/bundled-test-harness/assets/email-D-bFy_C1.js +0 -80
  628. package/bundled-test-harness/assets/email-field-test-CY9K2zur.js +0 -75
  629. package/bundled-test-harness/assets/email-j4DZNH2-.js +0 -2
  630. package/bundled-test-harness/assets/enum-B7_baAn_.js +0 -167
  631. package/bundled-test-harness/assets/enum-BQqNzVQS.js +0 -2
  632. package/bundled-test-harness/assets/enum-field-test-BJ9Epz15.js +0 -953
  633. package/bundled-test-harness/assets/error-display-test-CbDWjJ2F.js +0 -343
  634. package/bundled-test-harness/assets/ethereum-address-BOLEnKsm.js +0 -78
  635. package/bundled-test-harness/assets/ethereum-address-s3Kvb2wG.js +0 -2
  636. package/bundled-test-harness/assets/expiration-warning-BaIP1MOZ.js +0 -2
  637. package/bundled-test-harness/assets/expiration-warning-gjEtxPk0.js +0 -90
  638. package/bundled-test-harness/assets/externals-Bih8ejPS.js +0 -4393
  639. package/bundled-test-harness/assets/fallback-banner-MlImHjSD.js +0 -24
  640. package/bundled-test-harness/assets/fallback-banner-live-delete-test-Bm7IKXPf.js +0 -207
  641. package/bundled-test-harness/assets/fallback-banner-test-C7TGA0Ob.js +0 -53
  642. package/bundled-test-harness/assets/fallback-banner-test-lvuaVRXu.js +0 -225
  643. package/bundled-test-harness/assets/fallback-models-test-Dy7iIKUS.js +0 -161
  644. package/bundled-test-harness/assets/field-component-DBoOxTke.js +0 -2
  645. package/bundled-test-harness/assets/field-configuration-test-DnAnzyC-.js +0 -548
  646. package/bundled-test-harness/assets/field-edit-DdJ8Akso.js +0 -2
  647. package/bundled-test-harness/assets/field-edit-XAop92l8.js +0 -36
  648. package/bundled-test-harness/assets/field-markdown-domain-test-cZCqbcjj.js +0 -616
  649. package/bundled-test-harness/assets/field-markdown-oversize-test-BuATetVz.js +0 -88
  650. package/bundled-test-harness/assets/field-markdown-primitives-test-BsubQfhv.js +0 -365
  651. package/bundled-test-harness/assets/field-markdown-specialized-test-4eNLiYpF.js +0 -534
  652. package/bundled-test-harness/assets/field-test-helpers-9I7cHnaU.js +0 -45
  653. package/bundled-test-harness/assets/file-api-CC86I7Er.js +0 -7
  654. package/bundled-test-harness/assets/file-attachment-test-o9191GMb.js +0 -796
  655. package/bundled-test-harness/assets/file-chooser-panel-test-C8aZuJlk.js +0 -153
  656. package/bundled-test-harness/assets/file-chooser-test-B0Tn8CCR.js +0 -504
  657. package/bundled-test-harness/assets/file-def-edit-BSiF2Lje.js +0 -2
  658. package/bundled-test-harness/assets/file-def-edit-C5TYBp_q.js +0 -26
  659. package/bundled-test-harness/assets/file-def-embedded-BLVTCiVB.js +0 -2
  660. package/bundled-test-harness/assets/file-def-embedded-Bep4iD6s.js +0 -38
  661. package/bundled-test-harness/assets/file-def-fitted-BTs-AS78.js +0 -2
  662. package/bundled-test-harness/assets/file-def-fitted-DcPitdYu.js +0 -38
  663. package/bundled-test-harness/assets/file-def-isolated-Kg1YVhm-.js +0 -38
  664. package/bundled-test-harness/assets/file-def-isolated-tK5JWCam.js +0 -2
  665. package/bundled-test-harness/assets/file-def-serialization-test-D4wnd5XK.js +0 -89
  666. package/bundled-test-harness/assets/file-menu-items-CH4-naSK.js +0 -117
  667. package/bundled-test-harness/assets/file-menu-items-emUxx3ZI.js +0 -2
  668. package/bundled-test-harness/assets/file-preview-stage-B1McIWwu.js +0 -2
  669. package/bundled-test-harness/assets/file-preview-stage-BgZLNMN4.js +0 -72
  670. package/bundled-test-harness/assets/file-shell-embedded-BmfuwWfU.js +0 -2
  671. package/bundled-test-harness/assets/file-shell-embedded-zh8CJanA.js +0 -68
  672. package/bundled-test-harness/assets/file-shell-fitted-DSFUNRGJ.js +0 -2
  673. package/bundled-test-harness/assets/file-shell-fitted-DXKDH0fn.js +0 -98
  674. package/bundled-test-harness/assets/file-shell-isolated-0F1MFv4q.js +0 -2
  675. package/bundled-test-harness/assets/file-shell-isolated-DduZZzmi.js +0 -195
  676. package/bundled-test-harness/assets/file-tree-from-index-BzDvvUHy.js +0 -151
  677. package/bundled-test-harness/assets/file-tree-from-index-test-D0hfI4a1.js +0 -96
  678. package/bundled-test-harness/assets/film-BN_HVXBU.js +0 -13
  679. package/bundled-test-harness/assets/film-CKkbUi0L.js +0 -2
  680. package/bundled-test-harness/assets/film-CMNJITZ-.js +0 -4074
  681. package/bundled-test-harness/assets/fitted-CAvdcKpu.js +0 -34
  682. package/bundled-test-harness/assets/fitted-CbKOwd1u.js +0 -2
  683. package/bundled-test-harness/assets/flac-meta-extractor-e8qajPSl.js +0 -99
  684. package/bundled-test-harness/assets/font-file-def-9atde5W8.js +0 -64
  685. package/bundled-test-harness/assets/font-meta-extractor-IralDC8M.js +0 -303
  686. package/bundled-test-harness/assets/font-meta-extractor-zPBVOfoR.js +0 -2
  687. package/bundled-test-harness/assets/formatted-aibot-message-test-CWOiZUng.js +0 -109
  688. package/bundled-test-harness/assets/from-elsewhere-ChxbtsBa.js +0 -131
  689. package/bundled-test-harness/assets/frontmatter-field-cdig7KR9.js +0 -41
  690. package/bundled-test-harness/assets/garbage-collection-test-Dg-ww_Sb.js +0 -403
  691. package/bundled-test-harness/assets/gauge-B45nLOGe.js +0 -106
  692. package/bundled-test-harness/assets/gauge-BK-768BM.js +0 -2
  693. package/bundled-test-harness/assets/general-test-D7cn7PUr.js +0 -926
  694. package/bundled-test-harness/assets/get-relationship-membership-state-test-Skmj9V6y.js +0 -1308
  695. package/bundled-test-harness/assets/gif-meta-extractor-BychhK9q.js +0 -114
  696. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-C09YUmk4.js +0 -160
  697. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DYskx_Kk.js +0 -74
  698. package/bundled-test-harness/assets/helper-BHX0HLF2.js +0 -478
  699. package/bundled-test-harness/assets/host-submode-test-Clw_QnvF.js +0 -1243
  700. package/bundled-test-harness/assets/html-file-def-C0P9giwU.js +0 -82
  701. package/bundled-test-harness/assets/hydratable-card-DnjrxKsT.js +0 -147
  702. package/bundled-test-harness/assets/hydratable-card-test-BAmWHfv1.js +0 -426
  703. package/bundled-test-harness/assets/icons-DBXBZgLe.js +0 -894
  704. package/bundled-test-harness/assets/image-Cip6ojDd.js +0 -47
  705. package/bundled-test-harness/assets/image-file-def-BdQxjZcN.js +0 -65
  706. package/bundled-test-harness/assets/image-file-def-DP4aqWcS.js +0 -3
  707. package/bundled-test-harness/assets/index-changes-test-D8b_56Ke.js +0 -367
  708. package/bundled-test-harness/assets/index-query-engine-test-CCyaUwMX.js +0 -2593
  709. package/bundled-test-harness/assets/inspector-test-BJTVGdOO.js +0 -1930
  710. package/bundled-test-harness/assets/instance-filter-matcher-test-DjsPrXL7.js +0 -788
  711. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DSqM0vxh.js +0 -475
  712. package/bundled-test-harness/assets/interact-submode-setup-DF31UMX-.js +0 -566
  713. package/bundled-test-harness/assets/is-component-declaration-test-Did47eG9.js +0 -50
  714. package/bundled-test-harness/assets/iso-bmff-LuWkGL__.js +0 -205
  715. package/bundled-test-harness/assets/iso-bmff-_flO6c20.js +0 -2
  716. package/bundled-test-harness/assets/isolated-and-edit-frocLHin.js +0 -2
  717. package/bundled-test-harness/assets/job-priority-header-test-DHLAXfp7.js +0 -81
  718. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C1Bt5j98.js +0 -103
  719. package/bundled-test-harness/assets/join-the-community-BBUSO2cs.js +0 -86
  720. package/bundled-test-harness/assets/jpg-meta-extractor-CoybO4Hq.js +0 -88
  721. package/bundled-test-harness/assets/json-field-8sdH5RQb.js +0 -2
  722. package/bundled-test-harness/assets/json-field-BDD3iTUh.js +0 -19
  723. package/bundled-test-harness/assets/json-file-def-BKibsfc6.js +0 -298
  724. package/bundled-test-harness/assets/last-modified-date-CR5jru2m.js +0 -43
  725. package/bundled-test-harness/assets/last-modified-date-test-jJ00YdTm.js +0 -28
  726. package/bundled-test-harness/assets/links-to-editor-rDoCYaN-.js +0 -2
  727. package/bundled-test-harness/assets/links-to-many-component-BqZT88Fb.js +0 -2
  728. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-Cp1Eb_4U.js +0 -398
  729. package/bundled-test-harness/assets/linksto-error-sentinel-test-Bddavnh_.js +0 -238
  730. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-c5WegXnR.js +0 -354
  731. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CWskzfGW.js +0 -303
  732. package/bundled-test-harness/assets/linksto-sentinel-reload-test-ByeVNhr8.js +0 -197
  733. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DP26i6Gb.js +0 -260
  734. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-fDUXx8tO.js +0 -196
  735. package/bundled-test-harness/assets/llm-model-BcLEkTV7.js +0 -64
  736. package/bundled-test-harness/assets/login-CeuuNVvU.css +0 -139
  737. package/bundled-test-harness/assets/login-DV0WlJv-.js +0 -348
  738. package/bundled-test-harness/assets/login-error-text-test-BMGY_9gW.js +0 -51
  739. package/bundled-test-harness/assets/login-test-CL9YpMH5.js +0 -246
  740. package/bundled-test-harness/assets/m4a-meta-extractor-CHO1JQtb.js +0 -204
  741. package/bundled-test-harness/assets/main-CPLT8JNu.js +0 -5
  742. package/bundled-test-harness/assets/markdown-BvBALLGh.js +0 -7
  743. package/bundled-test-harness/assets/markdown-DFezmrFD.js +0 -2
  744. package/bundled-test-harness/assets/markdown-editor-mode-select-Au64bcIO.js +0 -2
  745. package/bundled-test-harness/assets/markdown-editor-mode-select-rK9PP8rv.js +0 -54
  746. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIxizf5k.js +0 -470
  747. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-C7GoNN7l.js +0 -447
  748. package/bundled-test-harness/assets/markdown-embed-preview-test-CDnj4uhd.js +0 -368
  749. package/bundled-test-harness/assets/markdown-fallback-n7PsLNmO.js +0 -2
  750. package/bundled-test-harness/assets/markdown-fallback-test-DTHT6OwQ.js +0 -316
  751. package/bundled-test-harness/assets/markdown-highlighting-test-DJ-4WSE_.js +0 -244
  752. package/bundled-test-harness/assets/markdown-preview-Ccelx5W-.js +0 -64
  753. package/bundled-test-harness/assets/markdown-preview-JXuMC_ve.js +0 -72
  754. package/bundled-test-harness/assets/markdown-preview-test-ByZqrpPk.js +0 -238
  755. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-DAHGeL4K.js +0 -146
  756. package/bundled-test-harness/assets/menu-items-DzJm9H_H.js +0 -2
  757. package/bundled-test-harness/assets/message-tool-test-lmdrIEdY.js +0 -33
  758. package/bundled-test-harness/assets/metadata-fields-BZZr4Qe5.js +0 -2
  759. package/bundled-test-harness/assets/metadata-fields-BtdjGsKE.js +0 -1415
  760. package/bundled-test-harness/assets/midi-audio-def-uYbYFmFi.js +0 -52
  761. package/bundled-test-harness/assets/midi-meta-extractor-DNI5gc1q.js +0 -284
  762. package/bundled-test-harness/assets/midi-meta-extractor-DbKZ4fMG.js +0 -2
  763. package/bundled-test-harness/assets/migrate-skill-test-DI1xceiL.js +0 -161
  764. package/bundled-test-harness/assets/mini-CNoDyHqG.js +0 -1519
  765. package/bundled-test-harness/assets/mini-DexlIeKK.js +0 -85
  766. package/bundled-test-harness/assets/mini-card-chooser-test-DT5eIf1_.js +0 -272
  767. package/bundled-test-harness/assets/mini-file-chooser-test-DTQnKTZJ.js +0 -201
  768. package/bundled-test-harness/assets/missing-template-DL2mwddM.js +0 -2
  769. package/bundled-test-harness/assets/missing-template-ltqlJ4JC.js +0 -48
  770. package/bundled-test-harness/assets/modal-container-DRnt95-S.js +0 -40
  771. package/bundled-test-harness/assets/modal-zE95eEFp.js +0 -322
  772. package/bundled-test-harness/assets/model-cost-tier-test-CcFz7hcv.js +0 -173
  773. package/bundled-test-harness/assets/module-contents-service-Dk_zWt-V.js +0 -256
  774. package/bundled-test-harness/assets/month-BqReBYWo.js +0 -2
  775. package/bundled-test-harness/assets/month-RhvmIp40.js +0 -123
  776. package/bundled-test-harness/assets/month-day-XFAQA72z.js +0 -2
  777. package/bundled-test-harness/assets/month-day-XzKpk6nz.js +0 -192
  778. package/bundled-test-harness/assets/month-year-BeuNr2Cl.js +0 -2
  779. package/bundled-test-harness/assets/month-year-DhU7hATV.js +0 -93
  780. package/bundled-test-harness/assets/mp3-meta-extractor-Dx2RnJc5.js +0 -476
  781. package/bundled-test-harness/assets/mp4-meta-extractor--k0m8KsT.js +0 -188
  782. package/bundled-test-harness/assets/multiple-stacks-test-bC24IWcJ.js +0 -208
  783. package/bundled-test-harness/assets/nested-query-field-render-test-qxElXx1e.js +0 -249
  784. package/bundled-test-harness/assets/no-stacks-test-Br7IGAgV.js +0 -48
  785. package/bundled-test-harness/assets/number-73SsCMEF.js +0 -3
  786. package/bundled-test-harness/assets/number-CicTBWQd.js +0 -151
  787. package/bundled-test-harness/assets/number-field-test-kV5zXo1J.js +0 -184
  788. package/bundled-test-harness/assets/number-input-CQy4xUeA.js +0 -82
  789. package/bundled-test-harness/assets/office-extract-Bo8sbNkK.js +0 -27
  790. package/bundled-test-harness/assets/office-extract-CfBaoRMD.js +0 -2
  791. package/bundled-test-harness/assets/ogg-meta-extractor-aIf5q_Rq.js +0 -225
  792. package/bundled-test-harness/assets/on-key-C8acaldQ.js +0 -472
  793. package/bundled-test-harness/assets/ooxml-Bu3iZezv.js +0 -172
  794. package/bundled-test-harness/assets/ooxml-jQPBQK25.js +0 -2
  795. package/bundled-test-harness/assets/open-image-in-new-tab-test-CP7q3kMm.js +0 -52
  796. package/bundled-test-harness/assets/operation-lowering-test-9Mdr0hRT.js +0 -2812
  797. package/bundled-test-harness/assets/operations-R9b661Qn.js +0 -3
  798. package/bundled-test-harness/assets/operations-Zv_V3Api.js +0 -766
  799. package/bundled-test-harness/assets/operations-invocation-test-BJPpWb2H.js +0 -523
  800. package/bundled-test-harness/assets/operations-query-test-DufdmPQF.js +0 -459
  801. package/bundled-test-harness/assets/operations-test-CzT051YH.js +0 -2518
  802. package/bundled-test-harness/assets/operator-mode-acceptance-test-ByOIOcD0.js +0 -1188
  803. package/bundled-test-harness/assets/operator-mode-card-chooser-test-CNhR9mvv.js +0 -1036
  804. package/bundled-test-harness/assets/operator-mode-links-test-CuxSVTPR.js +0 -793
  805. package/bundled-test-harness/assets/operator-mode-state-service-CCeHt5SH.js +0 -1275
  806. package/bundled-test-harness/assets/operator-mode-state-service-test-C8TI9WWg.js +0 -206
  807. package/bundled-test-harness/assets/operator-mode-test-DG-mG8Tn.js +0 -683
  808. package/bundled-test-harness/assets/operator-mode-ui-test-DB7xhjS0.js +0 -1027
  809. package/bundled-test-harness/assets/overlay-menu-items-test-C6rcdF_S.js +0 -317
  810. package/bundled-test-harness/assets/overlays-D2zmPxzK.js +0 -270
  811. package/bundled-test-harness/assets/overlays-clip-test-Clpq3JzQ.js +0 -91
  812. package/bundled-test-harness/assets/overlays-detached-element-test-BtsTeJch.js +0 -56
  813. package/bundled-test-harness/assets/pane-f-IYhcWT.js +0 -330
  814. package/bundled-test-harness/assets/panel-B3PCSBbf.js +0 -3540
  815. package/bundled-test-harness/assets/panel-Ban7zCBP.js +0 -474
  816. package/bundled-test-harness/assets/past-sessions-test-uM2m-oKV.js +0 -321
  817. package/bundled-test-harness/assets/patch-fields-test-COPjDhnt.js +0 -1014
  818. package/bundled-test-harness/assets/patch-instance-test-CRb3dfby.js +0 -348
  819. package/bundled-test-harness/assets/pdf-file-def-J_yOUU8_.js +0 -76
  820. package/bundled-test-harness/assets/pdf-meta-extractor-83T5Bdo7.js +0 -156
  821. package/bundled-test-harness/assets/pdf-meta-extractor-INFIklMy.js +0 -2
  822. package/bundled-test-harness/assets/pdf-viewer-B4rRluWA.js +0 -2
  823. package/bundled-test-harness/assets/pdf-viewer-vYem8ozk.js +0 -112
  824. package/bundled-test-harness/assets/percentage-ChagfNRG.js +0 -84
  825. package/bundled-test-harness/assets/permission-checking-realm-test-Dmb2a428.js +0 -306
  826. package/bundled-test-harness/assets/phone-number-BiD2eaSd.js +0 -236
  827. package/bundled-test-harness/assets/phone-number-C-wt4_UK.js +0 -2
  828. package/bundled-test-harness/assets/phone-number-field-test-BHzAmuBP.js +0 -73
  829. package/bundled-test-harness/assets/plate-CqN2nM6P.js +0 -41
  830. package/bundled-test-harness/assets/plate-DaIfpORN.js +0 -2
  831. package/bundled-test-harness/assets/player-CGt5fTd5.js +0 -2
  832. package/bundled-test-harness/assets/player-CN0l44LK.js +0 -82
  833. package/bundled-test-harness/assets/plural-field-components-test-CO2g2opW.js +0 -198
  834. package/bundled-test-harness/assets/png-image-def-B_oou2wS.js +0 -48
  835. package/bundled-test-harness/assets/png-meta-extractor-BfPz1qP_.js +0 -2
  836. package/bundled-test-harness/assets/png-meta-extractor-C8ai8sPw.js +0 -111
  837. package/bundled-test-harness/assets/policy-scoped-search-test-BRRp2a1A.js +0 -339
  838. package/bundled-test-harness/assets/pptx-file-def-C3qYEHDM.js +0 -60
  839. package/bundled-test-harness/assets/pptx-meta-extractor-8IuoBq4I.js +0 -77
  840. package/bundled-test-harness/assets/pptx-meta-extractor-BPhy9RMM.js +0 -2
  841. package/bundled-test-harness/assets/prerender-persistence-block-test-Cteb_Rs_.js +0 -124
  842. package/bundled-test-harness/assets/prerender-serialize-cycle-test-CH7b6Ra9.js +0 -134
  843. package/bundled-test-harness/assets/preview-CmERZpI6.js +0 -74
  844. package/bundled-test-harness/assets/preview-format-BPMlCSbb.js +0 -41
  845. package/bundled-test-harness/assets/preview-format-test-B7sA8fbZ.js +0 -103
  846. package/bundled-test-harness/assets/process-card-CtDzDB-_.js +0 -2
  847. package/bundled-test-harness/assets/process-card-erbWKY5h.js +0 -114
  848. package/bundled-test-harness/assets/process-card-test-DXOt1jDW.js +0 -94
  849. package/bundled-test-harness/assets/profile-settings-modal-11BrR058.js +0 -708
  850. package/bundled-test-harness/assets/progress-circle-Cd79Zqh2.js +0 -2
  851. package/bundled-test-harness/assets/progress-circle-sc-W5aUl.js +0 -95
  852. package/bundled-test-harness/assets/quarter-B61kCpcD.js +0 -168
  853. package/bundled-test-harness/assets/quarter-d5jkTzcz.js +0 -2
  854. package/bundled-test-harness/assets/query-field-membership-status-test-BmpVfohw.js +0 -323
  855. package/bundled-test-harness/assets/query-field-page-optin-test-9_Cce-OJ.js +0 -126
  856. package/bundled-test-harness/assets/query-field-schema-test-CwV7xanX.js +0 -231
  857. package/bundled-test-harness/assets/query-field-stale-prerender-test-RkdnZ-VV.js +0 -152
  858. package/bundled-test-harness/assets/query-fields-test-BLxYkTAM.js +0 -535
  859. package/bundled-test-harness/assets/rail-CFPU0tFe.js +0 -2
  860. package/bundled-test-harness/assets/rail-CQ53Dakr.js +0 -44
  861. package/bundled-test-harness/assets/realm-DdVH9lSZ.js +0 -95
  862. package/bundled-test-harness/assets/realm-DdsFw3b-.js +0 -2
  863. package/bundled-test-harness/assets/realm-config-DIslxoB7.js +0 -844
  864. package/bundled-test-harness/assets/realm-config-policy-standing-test-b4WxNDor.js +0 -290
  865. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-C-rcvkkD.js +0 -274
  866. package/bundled-test-harness/assets/realm-config-settings-test-DDUkM3zw.js +0 -187
  867. package/bundled-test-harness/assets/realm-dropdown-1j55Dy-1.js +0 -560
  868. package/bundled-test-harness/assets/realm-field-test-D-uEtFKO.js +0 -100
  869. package/bundled-test-harness/assets/realm-indexing-test-U9m0epR-.js +0 -4380
  870. package/bundled-test-harness/assets/realm-policy-test-DhKabhlk.js +0 -1141
  871. package/bundled-test-harness/assets/realm-test-BX6C9SS5.js +0 -2363
  872. package/bundled-test-harness/assets/realm-url-tooltip-BjjcKqBx.js +0 -56
  873. package/bundled-test-harness/assets/realm-url-tooltip-test-DW0ZwEEE.js +0 -78
  874. package/bundled-test-harness/assets/reasoning-test-BWT94KXG.js +0 -234
  875. package/bundled-test-harness/assets/recent-colors-addon-CfgmgilF.js +0 -61
  876. package/bundled-test-harness/assets/recent-colors-addon-D--Ry3Pf.js +0 -2
  877. package/bundled-test-harness/assets/relationship-loading-state-test-C5R6jao_.js +0 -290
  878. package/bundled-test-harness/assets/relative-time-Bq7pqums.js +0 -2
  879. package/bundled-test-harness/assets/relative-time-D0QyW4ig.js +0 -129
  880. package/bundled-test-harness/assets/remix-card-test-Cy0h3Xdf.js +0 -58
  881. package/bundled-test-harness/assets/rendered-markdown-Hw_EF8SO.js +0 -263
  882. package/bundled-test-harness/assets/rendered-markdown-test-CqeF-UZd.js +0 -587
  883. package/bundled-test-harness/assets/resident-instance-reuse-test-BiI6L40n.js +0 -82
  884. package/bundled-test-harness/assets/response-field-BCxG5phG.js +0 -38
  885. package/bundled-test-harness/assets/result-tile-DMzRnTP8.js +0 -140
  886. package/bundled-test-harness/assets/rich-markdown-C4RUl7L0.js +0 -2
  887. package/bundled-test-harness/assets/rich-markdown-DxQSCg-o.js +0 -218
  888. package/bundled-test-harness/assets/rich-markdown-field-test-B7wpedKs.js +0 -1647
  889. package/bundled-test-harness/assets/room-D0M0Zwrs.js +0 -1008
  890. package/bundled-test-harness/assets/room-message-test-BWWd4xC8.js +0 -445
  891. package/bundled-test-harness/assets/room-test-DFH-nOwi.js +0 -95
  892. package/bundled-test-harness/assets/run-realm-code-DyVyEDBl.js +0 -1600
  893. package/bundled-test-harness/assets/run-realm-code-test-BpxF-tOz.js +0 -2468
  894. package/bundled-test-harness/assets/schema-generation-test-DjaJqpYP.js +0 -28
  895. package/bundled-test-harness/assets/score-Cfp34BE7.js +0 -2
  896. package/bundled-test-harness/assets/score-DIWWpeyf.js +0 -100
  897. package/bundled-test-harness/assets/scrolling-test-hA_uBwBg.js +0 -384
  898. package/bundled-test-harness/assets/search-C0-b7dJI.js +0 -605
  899. package/bundled-test-harness/assets/search-adorn-test-C6KP3AwA.js +0 -136
  900. package/bundled-test-harness/assets/search-entries-BfPq5sPS.js +0 -472
  901. package/bundled-test-harness/assets/search-entries-result-test-Bl9u_BOD.js +0 -234
  902. package/bundled-test-harness/assets/search-entries-test-BDC_lS43.js +0 -1486
  903. package/bundled-test-harness/assets/search-result-header-DCAze_cg.js +0 -128
  904. package/bundled-test-harness/assets/search-results-Dd0enVun.js +0 -266
  905. package/bundled-test-harness/assets/search-results-test-T5KEEII4.js +0 -578
  906. package/bundled-test-harness/assets/search-selection-menu-test-CCssnBq1.js +0 -108
  907. package/bundled-test-harness/assets/search-sheet-persistence-test-BzQiO-FK.js +0 -131
  908. package/bundled-test-harness/assets/search-test-fyCWb24m.js +0 -2241
  909. package/bundled-test-harness/assets/searchable-BkgeKQMl.js +0 -2
  910. package/bundled-test-harness/assets/searchable-D_6p6fyb.js +0 -192
  911. package/bundled-test-harness/assets/searchable-option-test-CnCUYGaq.js +0 -322
  912. package/bundled-test-harness/assets/searchable-search-doc-test-B8Q0D98v.js +0 -1271
  913. package/bundled-test-harness/assets/sending-test-D5PGBDys.js +0 -576
  914. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BRJ1cJ31.js +0 -136
  915. package/bundled-test-harness/assets/serialization-test-DM6hK258.js +0 -8758
  916. package/bundled-test-harness/assets/setup-C_GgVgzM.js +0 -772
  917. package/bundled-test-harness/assets/shared-link-target-reuse-test-Be-lSKib.js +0 -207
  918. package/bundled-test-harness/assets/show-card-BFG6KR1m.js +0 -67
  919. package/bundled-test-harness/assets/show-card-test-l0wMrfZq.js +0 -365
  920. package/bundled-test-harness/assets/show-file-B8-FRVHj.js +0 -34
  921. package/bundled-test-harness/assets/signed-capture-D_Q44TQ7.js +0 -204
  922. package/bundled-test-harness/assets/signed-capture-link-test-DOS5xpYv.js +0 -132
  923. package/bundled-test-harness/assets/single-stack-test-BIEtzHVS.js +0 -652
  924. package/bundled-test-harness/assets/skill-BUTGmSsm.js +0 -76
  925. package/bundled-test-harness/assets/skill-Bo7R_2Ud.js +0 -3
  926. package/bundled-test-harness/assets/skill-reference-Cs64py3k.js +0 -112
  927. package/bundled-test-harness/assets/skills-test-CXxSIkYa.js +0 -648
  928. package/bundled-test-harness/assets/slider-picker-C81errGI.js +0 -245
  929. package/bundled-test-harness/assets/slider-picker-mvKsy6cR.js +0 -2
  930. package/bundled-test-harness/assets/spec-B55lJurX.js +0 -602
  931. package/bundled-test-harness/assets/store-DyQ0KiyI.js +0 -2205
  932. package/bundled-test-harness/assets/store-module-rebuild-test-C7532_bS.js +0 -454
  933. package/bundled-test-harness/assets/store-search-test-80NMJuoW.js +0 -175
  934. package/bundled-test-harness/assets/store-test-dHiWXXMs.js +0 -3460
  935. package/bundled-test-harness/assets/string-DHlQEHYm.js +0 -9
  936. package/bundled-test-harness/assets/submode-switcher-DQv-CD6G.js +0 -169
  937. package/bundled-test-harness/assets/svg-meta-extractor-Uw_EJytF.js +0 -42
  938. package/bundled-test-harness/assets/swatches-picker-CaEoibN1.js +0 -33
  939. package/bundled-test-harness/assets/swatches-picker-gPl50JbP.js +0 -2
  940. package/bundled-test-harness/assets/switch-submode-BKDnJd4m.js +0 -79
  941. package/bundled-test-harness/assets/switch-submode-test-_E2mVk4z.js +0 -168
  942. package/bundled-test-harness/assets/tag-B60lDr-j.js +0 -105
  943. package/bundled-test-harness/assets/tests-BBBgPBB6.js +0 -3520
  944. package/bundled-test-harness/assets/text-area-CJjWmwpi.js +0 -9
  945. package/bundled-test-harness/assets/text-file-def-u_dl0i2z.js +0 -151
  946. package/bundled-test-harness/assets/text-input-validator-test-BTwnkSS2.js +0 -156
  947. package/bundled-test-harness/assets/theme-BK-fAHVn.js +0 -9
  948. package/bundled-test-harness/assets/theme-card-test-BQmT7rqr.js +0 -621
  949. package/bundled-test-harness/assets/theme-scheme-island-test-Oi3aeyp1.js +0 -264
  950. package/bundled-test-harness/assets/three-d-model-def-B4KckPVC.js +0 -70
  951. package/bundled-test-harness/assets/time-BcuaSkHg.js +0 -126
  952. package/bundled-test-harness/assets/time-f7Irg7Z7.js +0 -2
  953. package/bundled-test-harness/assets/time-slots-ClYIZN53.js +0 -2
  954. package/bundled-test-harness/assets/time-slots-TI1aaqRN.js +0 -85
  955. package/bundled-test-harness/assets/timeline-Cof9eyq0.js +0 -59
  956. package/bundled-test-harness/assets/timeline-DFWQtCWE.js +0 -2
  957. package/bundled-test-harness/assets/to-device-streaming-test-BDrUUlOt.js +0 -163
  958. package/bundled-test-harness/assets/token-usage-test-CiZo03fY.js +0 -166
  959. package/bundled-test-harness/assets/tool-field-BXHr9r0w.js +0 -94
  960. package/bundled-test-harness/assets/tool-field-CoRO5C4R.js +0 -2
  961. package/bundled-test-harness/assets/tools-CmVaYDIS.js +0 -725
  962. package/bundled-test-harness/assets/tools-calling-test-B454__XF.js +0 -200
  963. package/bundled-test-harness/assets/tools-test-CLu51dJO.js +0 -1624
  964. package/bundled-test-harness/assets/tools-test-XGRAvVug.js +0 -2820
  965. package/bundled-test-harness/assets/ts-file-def-C05BDwdg.js +0 -159
  966. package/bundled-test-harness/assets/update-room-skills-test-jOvP14JX.js +0 -240
  967. package/bundled-test-harness/assets/url-BFf2CNo-.js +0 -2
  968. package/bundled-test-harness/assets/url-CYm-CeXp.js +0 -96
  969. package/bundled-test-harness/assets/video-file-def-B2UIrOFS.js +0 -76
  970. package/bundled-test-harness/assets/wav-meta-extractor-BNkv7e2f.js +0 -368
  971. package/bundled-test-harness/assets/webm-meta-extractor-C933kYyc.js +0 -178
  972. package/bundled-test-harness/assets/webp-meta-extractor-BLz0z1pZ.js +0 -98
  973. package/bundled-test-harness/assets/website-BuOMUW1v.js +0 -92
  974. package/bundled-test-harness/assets/week-Bo0666ji.js +0 -111
  975. package/bundled-test-harness/assets/week-CaVFA8Vc.js +0 -2
  976. package/bundled-test-harness/assets/welcome-to-boxel-PWard7GF.js +0 -172
  977. package/bundled-test-harness/assets/workspace-KXfFTQNV.js +0 -614
  978. package/bundled-test-harness/assets/workspace-a11y-test-Buwb-rfO.js +0 -197
  979. package/bundled-test-harness/assets/workspace-behavior-test-CbgFUOOo.js +0 -200
  980. package/bundled-test-harness/assets/workspace-chooser-BmQvhhrl.js +0 -2248
  981. package/bundled-test-harness/assets/workspace-chooser-Cu84Gd_E.css +0 -1317
  982. package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-rcRw6sni.js +0 -36
  983. package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DUXnBIdY.js +0 -60
  984. package/bundled-test-harness/assets/workspace-delete-multiple-test-DjRKhZ2g.js +0 -212
  985. package/bundled-test-harness/assets/workspace-delete-summary-test-CvkLVYyN.js +0 -63
  986. package/bundled-test-harness/assets/workspace-timestamp-labels-test-AYJT4inv.js +0 -58
  987. package/bundled-test-harness/assets/xlsx-file-def-DuKdbGrJ.js +0 -60
  988. package/bundled-test-harness/assets/xlsx-meta-extractor-Bz-C2JWP.js +0 -101
  989. package/bundled-test-harness/assets/xlsx-meta-extractor-ClwwgABg.js +0 -2
  990. package/bundled-test-harness/assets/year-B6ctHikl.js +0 -2
  991. package/bundled-test-harness/assets/year-C11uAQE6.js +0 -78
  992. package/bundled-test-harness/assets/zip-file-def-B8XN-OS_.js +0 -288
  993. package/bundled-types/host-app/components/matrix/auth-button.gts +0 -39
  994. package/bundled-types/host-app/components/matrix/auth-container.gts +0 -69
  995. package/bundled-types/host-app/components/matrix/auth-form-field.gts +0 -43
@@ -1,1624 +0,0 @@
1
- import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
- import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
3
- import { $n as APP_BOXEL_TOOL_REQUESTS_KEY, Ar as testRealmURL, Bn as APP_BOXEL_LLM_MODE, Dr as testRRI, Fr as Tool, Lr as buildCommandFunctionName, Rr as buildCommandFunctionNameFromResolvedRef, Sc as Deferred, Vn as APP_BOXEL_MESSAGE_MSGTYPE, er as APP_BOXEL_TOOL_RESULT_EVENT_TYPE, nr as APP_BOXEL_TOOL_RESULT_WITH_NO_OUTPUT_MSGTYPE, rr as APP_BOXEL_TOOL_RESULT_WITH_OUTPUT_MSGTYPE, tr as APP_BOXEL_TOOL_RESULT_REL_TYPE } from "./runtime-common-ClpqhbwG.js";
4
- import { D as baseRealm, J as skillCardRef, V as localId } from "./constants-CqKWhRfY.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 { O as GridContainer } from "./components-CbCTWAON.js";
13
- import { r as CreateAiAssistantRoomTool } from "./ai-assistant-o-VoxzZ0.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-N1HReeGq.js";
16
- import { a as waitForRealmState, i as waitForCompletedCommandRequest, t as SendAiAssistantMessageTool } from "./send-ai-assistant-message-DlhNmLE3.js";
17
- import { t as ShowCardTool } from "./show-card-BFG6KR1m.js";
18
- import { t as SaveCardTool } from "./save-card-DkGJIGeF.js";
19
- import { n as SearchCardsByTypeAndTitleTool } from "./search-cards-C2h2J40C.js";
20
- import { t as ViewVisuallyTool } from "./view-visually-D0BZ5yxV.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, Y as waitForNewRoomSkillsLoaded, _t as registerRealmServerRoute, a as SYSTEM_CARD_FIXTURE_CONTENTS, bt as unregisterRealmServerRoute, ct as setupApplicationTest, j as setupAcceptanceTestRealm, o as addSkillToAiAssistant, pt as setupAuthEndpoints, st as visitOperatorMode, t as setupMockMatrix, z as setupUserSubscription } from "./mock-matrix-DPQ0j2MD.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-u1pOrwS6.js";
25
- import { t as string_default } from "./string-DHlQEHYm.js";
26
- import { t as CardsGrid } from "./cards-grid-CTN8nBT_.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(applySelector);
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\"] .tool-description").containsText("Switching to code submode");
783
- await click("[data-test-message-idx=\"0\"] [data-test-tool-call-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\"] .tool-description").containsText("Finding and opening Hassan card");
826
- assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply]").containsText("Search");
827
- await click("[data-test-message-idx=\"0\"] [data-test-tool-call-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-tool-call-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-apply-state=\"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\"] .tool-description").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\"] .tool-description").containsText(description);
999
- assert.dom("[data-test-message-idx=\"0\"] [data-test-tool-call-apply=\"preparing\"]").exists();
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-apply-state=\"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-apply-state=\"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-apply-state=\"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-apply-state=\"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-apply]").exists({ count: 2 });
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-option=\"ask\"]").hasClass("selected");
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-apply-state=\"ready\"]").exists("Apply button is shown in ask mode");
1246
- assert.dom("[data-test-apply-state=\"applied\"]").doesNotExist("Command is not auto-applied in ask mode");
1247
- await click("[data-test-llm-mode-option=\"act\"]");
1248
- assert.dom("[data-test-llm-mode-option=\"act\"]").hasClass("selected");
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-apply-state=\"applied\"]").exists(`Command is auto-applied in act mode: ${describeToolResult(matrixRoomId, commandId2)}`);
1269
- await click("[data-test-llm-mode-option=\"ask\"]");
1270
- assert.dom("[data-test-llm-mode-option=\"ask\"]").hasClass("selected");
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-apply-state=\"ready\"]").exists("Apply button is shown in ask mode");
1289
- assert.dom("[data-test-message-idx=\"2\"] [data-test-apply-state=\"applied\"]").doesNotExist("Command is not auto-applied in ask mode");
1290
- await click("[data-test-llm-mode-option=\"act\"]");
1291
- assert.dom("[data-test-llm-mode-option=\"act\"]").hasClass("selected");
1292
- assert.dom("[data-test-message-idx=\"2\"] [data-test-apply-state=\"ready\"]").exists("Apply button is still shown for command sent before act mode");
1293
- assert.dom("[data-test-message-idx=\"2\"] [data-test-apply-state=\"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-apply-state=\"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-apply-state=\"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-apply-state=\"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("Show card", "the pill label falls back to the tool name");
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-apply-state=\"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-tool-call-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-apply-state=\"applied\"]").exists();
1621
- });
1622
- });
1623
- });
1624
- //#endregion