@cardstack/boxel-cli 0.3.2-unstable.58 → 0.3.2-unstable.60
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.
- package/api.ts +3 -3
- package/bundled-realms/base/command.gts +73 -0
- package/bundled-test-harness/assets/adapter-TgpmkD23.js +2 -0
- package/bundled-test-harness/assets/add-field-to-card-definition-command-test-BVVD6_Wq.js +111 -0
- package/bundled-test-harness/assets/add-workspace-test-BvvYJ2Fk.js +71 -0
- package/bundled-test-harness/assets/ai-assistant-Ba_RBqf6.js +129 -0
- package/bundled-test-harness/assets/ai-assistant-panel-service-test-DK87n1hh.js +95 -0
- package/bundled-test-harness/assets/ai-assistant-test-CZATBlJS.js +2137 -0
- package/bundled-test-harness/assets/ai-function-generation-test-e58MHziu.js +996 -0
- package/bundled-test-harness/assets/ai-module-creation-test-CEieL3Fa.js +150 -0
- package/bundled-test-harness/assets/aibot-message-DhTbAqNk.js +1185 -0
- package/bundled-test-harness/assets/amd-transpile-test-CSk5COu7.js +425 -0
- package/bundled-test-harness/assets/app-Btfy4HWI.js +21464 -0
- package/bundled-test-harness/assets/apply-boxel-formatting-test-BHTP9NBp.js +134 -0
- package/bundled-test-harness/assets/apply-markdown-edit-test-BETCndeK.js +230 -0
- package/bundled-test-harness/assets/apply-search-replace-block-test-KNolar0-.js +630 -0
- package/bundled-test-harness/assets/arc-CA8yZ0zo.js +199 -0
- package/bundled-test-harness/assets/architecture-7EHR7CIX-C5JFMGdb.js +3 -0
- package/bundled-test-harness/assets/architectureDiagram-3BPJPVTR-CmVPjKgm.js +7400 -0
- package/bundled-test-harness/assets/auth-error-guard-test-D0rKESg_.js +30 -0
- package/bundled-test-harness/assets/auth-service-worker-test-DGg_vbKo.js +538 -0
- package/bundled-test-harness/assets/authed-fetch-test-CHF3eh_H.js +75 -0
- package/bundled-test-harness/assets/avif-image-def-test-p9tiyh4_.js +186 -0
- package/bundled-test-harness/assets/base-realm-Chjzrp6m.js +2 -0
- package/bundled-test-harness/assets/base-realm-DpSTsZxD.js +140 -0
- package/bundled-test-harness/assets/basic-test-D7qEz4hw.js +128 -0
- package/bundled-test-harness/assets/bfm-card-references-test-D-m1YnL8.js +577 -0
- package/bundled-test-harness/assets/binary-upload-dedupe-test-8RKK73EG.js +308 -0
- package/bundled-test-harness/assets/blockDiagram-GPEHLZMM-BdVFTa2C.js +4355 -0
- package/bundled-test-harness/assets/bot-registration-test-9zYny2wR.js +99 -0
- package/bundled-test-harness/assets/box-test-0T92xi3A.js +51 -0
- package/bundled-test-harness/assets/brand-guide-attachments-test-5ZtPn4cC.js +87 -0
- package/bundled-test-harness/assets/brand-guide-custom-css-test-CKKSgKyp.js +135 -0
- package/bundled-test-harness/assets/brand-logo-mark-field-test-nlNNQ3rw.js +87 -0
- package/bundled-test-harness/assets/broken-link-template-test-BGIExVof.js +345 -0
- package/bundled-test-harness/assets/browser-index-BaR-gTqG.js +3 -0
- package/bundled-test-harness/assets/browser-index-G4NKYBAj.js +8802 -0
- package/bundled-test-harness/assets/c4Diagram-AAUBKEIU-DyugX7zz.js +3764 -0
- package/bundled-test-harness/assets/cached-fetch-test-MtqvDphJ.js +93 -0
- package/bundled-test-harness/assets/can-read-realm-test-BZmwIOqS.js +58 -0
- package/bundled-test-harness/assets/cancel-indexing-job-test-BsQtQbDu.js +71 -0
- package/bundled-test-harness/assets/card-api-test-BxQ8f0-c.js +196 -0
- package/bundled-test-harness/assets/card-basics-test-B-uBZ8o4.js +4895 -0
- package/bundled-test-harness/assets/card-catalog-test-YmwmyIKf.js +377 -0
- package/bundled-test-harness/assets/card-copy-test-LoqdH1CQ.js +777 -0
- package/bundled-test-harness/assets/card-def-field-def-relationships-test-DvtBA1jv.js +560 -0
- package/bundled-test-harness/assets/card-def-menu-items-test-DHnd0LuM.js +182 -0
- package/bundled-test-harness/assets/card-delete-test-vKF0Jf1X.js +412 -0
- package/bundled-test-harness/assets/card-directory-name-test-CbCuPwSz.js +71 -0
- package/bundled-test-harness/assets/card-playground-test-CRIP3b5-.js +1497 -0
- package/bundled-test-harness/assets/card-prerender-ClYlSOBU.js +12661 -0
- package/bundled-test-harness/assets/card-search-adorn-test-Mggk5ZgY.js +128 -0
- package/bundled-test-harness/assets/card-search-query-builder-test-Cdl12s50.js +88 -0
- package/bundled-test-harness/assets/card-search-selection-menu-test-CtuCCLoB.js +108 -0
- package/bundled-test-harness/assets/channel-BKUMepxs.js +8 -0
- package/bundled-test-harness/assets/check-correctness-test-DBh8DT_f.js +252 -0
- package/bundled-test-harness/assets/chunk-2J33WTMH-ClrRoNQU.js +31 -0
- package/bundled-test-harness/assets/chunk-3OPIFGDE-g_0Oh8jN.js +5548 -0
- package/bundled-test-harness/assets/chunk-4BX2VUAB-D2LCc7Y9.js +11 -0
- package/bundled-test-harness/assets/chunk-4EGX6M5U-D8vRS5IG.js +44 -0
- package/bundled-test-harness/assets/chunk-55IACEB6-C5j4VAmb.js +10 -0
- package/bundled-test-harness/assets/chunk-5DO6E6H7-CPb3jsP0.js +27 -0
- package/bundled-test-harness/assets/chunk-5ZQYHXKU-BlVb7vgG.js +1767 -0
- package/bundled-test-harness/assets/chunk-727SXJPM-C_NVCDMC.js +3877 -0
- package/bundled-test-harness/assets/chunk-AQP2D5EJ-CpwrMix_.js +2622 -0
- package/bundled-test-harness/assets/chunk-BR22UD5L-AF0NWdjT.js +85 -0
- package/bundled-test-harness/assets/chunk-BSJP7CBP-Dgun5vYb.js +114 -0
- package/bundled-test-harness/assets/chunk-CSCIHK7Q-D7nFiAZ-.js +6144 -0
- package/bundled-test-harness/assets/chunk-FHYWG6QK-2nuXS9PL.js +27 -0
- package/bundled-test-harness/assets/chunk-FMBD7UC4-O-Y8VK1S.js +20 -0
- package/bundled-test-harness/assets/chunk-KSCS5N6A-Du5-DprU.js +871 -0
- package/bundled-test-harness/assets/chunk-L5ZTLDWV-C2lDtkix.js +43 -0
- package/bundled-test-harness/assets/chunk-LZXEDZCA-qAMsMZkF.js +65 -0
- package/bundled-test-harness/assets/chunk-MPE355IW-DcT_60Oq.js +27 -0
- package/bundled-test-harness/assets/chunk-MZUSXYTE-BsH_YmnC.js +36 -0
- package/bundled-test-harness/assets/chunk-N66VUXT2-DMyMHgoS.js +70 -0
- package/bundled-test-harness/assets/chunk-ND2GUHAM-DO1Znn8O.js +93 -0
- package/bundled-test-harness/assets/chunk-NZK2D7GU-B1YWBxHm.js +89 -0
- package/bundled-test-harness/assets/chunk-O5CBEL6O-CZVSBsRq.js +2395 -0
- package/bundled-test-harness/assets/chunk-PUPMXCY4-DzOK-Vbt.js +27 -0
- package/bundled-test-harness/assets/chunk-QZHKN3VN-DJFnRn99.js +20 -0
- package/bundled-test-harness/assets/chunk-UIBZB4QT-5KIxBxjk.js +27 -0
- package/bundled-test-harness/assets/chunk-WCWK7LTN-BsQwhliq.js +36 -0
- package/bundled-test-harness/assets/chunk-WU5MYG2G-DUVb5MAo.js +12 -0
- package/bundled-test-harness/assets/chunk-XPW4576I-DLaJYAOU.js +2341 -0
- package/bundled-test-harness/assets/classDiagram-4FO5ZUOK-DjP2uozG.js +31 -0
- package/bundled-test-harness/assets/classDiagram-v2-Q7XG4LA2-Dt6ps5uz.js +31 -0
- package/bundled-test-harness/assets/code-equality-assertion-BBezFT13.js +474 -0
- package/bundled-test-harness/assets/code-patches-test-DzoQGARM.js +1128 -0
- package/bundled-test-harness/assets/code-patching-test-D8r-pJ5w.js +114 -0
- package/bundled-test-harness/assets/code-ref-test-DU3HChNz.js +138 -0
- package/bundled-test-harness/assets/code-semantics-service-test-DArUotKy.js +65 -0
- package/bundled-test-harness/assets/code-submode-test-h5wWKsz2.js +1762 -0
- package/bundled-test-harness/assets/codeblocks-test-FbuwTy5v.js +492 -0
- package/bundled-test-harness/assets/codemirror-context-DVlC9C78.js +2 -0
- package/bundled-test-harness/assets/codemirror-editor-test-JDT9uwqM.js +1176 -0
- package/bundled-test-harness/assets/color-field-test-BssRlQAX.js +213 -0
- package/bundled-test-harness/assets/command-definitions-test-J21kOxBs.js +72 -0
- package/bundled-test-harness/assets/commands-DAo0DgCX.js +1379 -0
- package/bundled-test-harness/assets/commands-calling-test-C3deVvv_.js +200 -0
- package/bundled-test-harness/assets/commands-test--0zViqs2.js +1041 -0
- package/bundled-test-harness/assets/commands-test-BwNn2npL.js +1145 -0
- package/bundled-test-harness/assets/computed-test-BD_KrZmc.js +882 -0
- package/bundled-test-harness/assets/container-C8gu0I0Q.js +14605 -0
- package/bundled-test-harness/assets/convert-to-class-name-test-CX21VRzM.js +17 -0
- package/bundled-test-harness/assets/copy-and-edit-test-BUy_o8XJ.js +291 -0
- package/bundled-test-harness/assets/copy-card-test-LWbugEPe.js +156 -0
- package/bundled-test-harness/assets/copy-file-to-realm-test-BS25EUGV.js +99 -0
- package/bundled-test-harness/assets/copy-source-test-Dh33cqM8.js +56 -0
- package/bundled-test-harness/assets/cose-bilkent-S5V4N54A-CjAFDdpS.js +4275 -0
- package/bundled-test-harness/assets/create-file-test-DOc3YYij.js +963 -0
- package/bundled-test-harness/assets/create-file-test-DgUya7-i.js +397 -0
- package/bundled-test-harness/assets/create-listing-modal-test-DZxZBYS7.js +194 -0
- package/bundled-test-harness/assets/create-listing-pr-request-Aw0ms76l.js +64 -0
- package/bundled-test-harness/assets/create-listing-pr-request-test-CFvqkgky.js +117 -0
- package/bundled-test-harness/assets/create-spec-test-BTRt8oe8.js +239 -0
- package/bundled-test-harness/assets/csv-file-def-test-BVffg8wL.js +101 -0
- package/bundled-test-harness/assets/dagre-BM42HDAG-GoRrN65x.js +606 -0
- package/bundled-test-harness/assets/dagre-ByxOOmYM.js +4195 -0
- package/bundled-test-harness/assets/date-time-fields-test-BEcfCqgB.js +322 -0
- package/bundled-test-harness/assets/debug-message-test-CAxbe6x2.js +119 -0
- package/bundled-test-harness/assets/diagram-2AECGRRQ-B6-pvp9H.js +279 -0
- package/bundled-test-harness/assets/diagram-5GNKFQAL-C9M7hXIc.js +142 -0
- package/bundled-test-harness/assets/diagram-KO2AKTUF-BNJvCLGK.js +551 -0
- package/bundled-test-harness/assets/diagram-LMA3HP47-hlJyTtqP.js +184 -0
- package/bundled-test-harness/assets/diagram-OG6HWLK6-BvPoB3IH.js +857 -0
- package/bundled-test-harness/assets/diffing-test-De9Ev_Fr.js +210 -0
- package/bundled-test-harness/assets/dist-BsEojs3T.js +232 -0
- package/bundled-test-harness/assets/dist-CY3T64Hs.js +105 -0
- package/bundled-test-harness/assets/dist-q2xz8RMj.js +2 -0
- package/bundled-test-harness/assets/editor-test-DOI_TvWQ.js +551 -0
- package/bundled-test-harness/assets/editor.main-CpuM6HrX.js +43566 -0
- package/bundled-test-harness/assets/editor.main-DkMgS1qm.js +3 -0
- package/bundled-test-harness/assets/email-field-test-t-80Z94b.js +74 -0
- package/bundled-test-harness/assets/enum-field-test-DVp-2pip.js +909 -0
- package/bundled-test-harness/assets/erDiagram-TEJ5UH35-CYniRkua.js +2041 -0
- package/bundled-test-harness/assets/error-display-test-IuRxKyLz.js +343 -0
- package/bundled-test-harness/assets/evaluate-module-test-DdnfbFp-.js +66 -0
- package/bundled-test-harness/assets/eventmodeling-FCH6USID-BO089-Cs.js +3 -0
- package/bundled-test-harness/assets/execute-atomic-operations-test-CgbvrBlu.js +75 -0
- package/bundled-test-harness/assets/externals-5atxeNU4.js +5533 -0
- package/bundled-test-harness/assets/extract-css-variables-test-Cii-CYfc.js +169 -0
- package/bundled-test-harness/assets/fallback-banner-test-CUUd-Wuu.js +227 -0
- package/bundled-test-harness/assets/fallback-banner-test-D4NWyahM.js +53 -0
- package/bundled-test-harness/assets/fallback-models-test-2MJ1jAs8.js +163 -0
- package/bundled-test-harness/assets/fetch-card-json-test-Cruqsq6S.js +63 -0
- package/bundled-test-harness/assets/fetcher-test-CkHlbTzz.js +85 -0
- package/bundled-test-harness/assets/field-configuration-test-CqwsGNib.js +535 -0
- package/bundled-test-harness/assets/field-markdown-domain-test-DPjz8i4Y.js +615 -0
- package/bundled-test-harness/assets/field-markdown-primitives-test-Dw07UtT7.js +362 -0
- package/bundled-test-harness/assets/field-markdown-specialized-test-C-t34PAw.js +527 -0
- package/bundled-test-harness/assets/field-path-parser-test-BeNjacPu.js +387 -0
- package/bundled-test-harness/assets/field-playground-test-BILTGxqr.js +902 -0
- package/bundled-test-harness/assets/field-support-predicates-test-Df24w0Wa.js +170 -0
- package/bundled-test-harness/assets/field-test-helpers-P22hxBNz.js +45 -0
- package/bundled-test-harness/assets/file-attachment-test-Cjg4NBeM.js +635 -0
- package/bundled-test-harness/assets/file-chooser-test-Cl0XujPT.js +439 -0
- package/bundled-test-harness/assets/file-def-live-reload-test-D4Obzi12.js +50 -0
- package/bundled-test-harness/assets/file-def-manager-DUgR-gjs.js +470 -0
- package/bundled-test-harness/assets/file-def-manager-canonicalize-test-D_LWVsvz.js +451 -0
- package/bundled-test-harness/assets/file-def-menu-items-test-xvsUTOK4.js +114 -0
- package/bundled-test-harness/assets/file-def-navigation-test-DxPceB7E.js +109 -0
- package/bundled-test-harness/assets/file-def-serialization-test-CpwbDb8p.js +87 -0
- package/bundled-test-harness/assets/file-def-test-CEnKcvW9.js +219 -0
- package/bundled-test-harness/assets/file-tree-test-DE2aH6iq.js +773 -0
- package/bundled-test-harness/assets/flac-audio-def-test-BCg7LnR6.js +138 -0
- package/bundled-test-harness/assets/flowDiagram-I6XJVG4X-Xv8-LIxQ.js +4883 -0
- package/bundled-test-harness/assets/formatted-aibot-message-test-CsxFn62P.js +366 -0
- package/bundled-test-harness/assets/formatted-user-message-test-DjZc8qnA.js +43 -0
- package/bundled-test-harness/assets/freestyle-test-QEZaZCNJ.js +17 -0
- package/bundled-test-harness/assets/full-reindex-realm-test-C_c2OTTD.js +103 -0
- package/bundled-test-harness/assets/ganttDiagram-6RSMTGT7-DmvkzS5w.js +4060 -0
- package/bundled-test-harness/assets/garbage-collection-test-BVuvfidI.js +373 -0
- package/bundled-test-harness/assets/general-test-Ydis4jEq.js +926 -0
- package/bundled-test-harness/assets/generate-css-variables-test-CZCmgTAO.js +88 -0
- package/bundled-test-harness/assets/generate-example-cards-one-shot-test-x_szhkSN.js +67 -0
- package/bundled-test-harness/assets/get-available-realm-identifiers-test-DvRnwCHR.js +49 -0
- package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-46TE-XA0.js +49 -0
- package/bundled-test-harness/assets/get-default-writable-realm-test-DaAkxTNh.js +56 -0
- package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-9XEGHVOV.js +55 -0
- package/bundled-test-harness/assets/get-relationship-membership-state-test-BY4gk5JZ.js +1306 -0
- package/bundled-test-harness/assets/get-type-refs-from-filter-test-BynlX0JE.js +136 -0
- package/bundled-test-harness/assets/get-user-system-card-test-D98Xxn1k.js +52 -0
- package/bundled-test-harness/assets/gif-image-def-test-FwKGFGWw.js +161 -0
- package/bundled-test-harness/assets/gitGraph-WXDBUCRP-Bmn0Z_Xi.js +3 -0
- package/bundled-test-harness/assets/gitGraphDiagram-PVQCEYII-BAo0G82W.js +1150 -0
- package/bundled-test-harness/assets/gts-file-def-test-ivEk8Muv.js +99 -0
- package/bundled-test-harness/assets/head-format-preview-test-CNhvk724.js +156 -0
- package/bundled-test-harness/assets/helpers-BH4Yfo_2.js +5 -0
- package/bundled-test-harness/assets/host-mode-test-BRNndb2h.js +391 -0
- package/bundled-test-harness/assets/host-submode-test-DHd0x-6x.js +904 -0
- package/bundled-test-harness/assets/index-query-engine-test-7Fzc09fG.js +2548 -0
- package/bundled-test-harness/assets/index-writer-test-D3cL2q2N.js +1842 -0
- package/bundled-test-harness/assets/indexeddb-crypto-store-C09Shau-.js +49434 -0
- package/bundled-test-harness/assets/info-J43DQDTF-Dz5b1Xgc.js +3 -0
- package/bundled-test-harness/assets/infoDiagram-5YYISTIA-Dl8XvIfi.js +23 -0
- package/bundled-test-harness/assets/inspector-test-CVZVQdIJ.js +1776 -0
- package/bundled-test-harness/assets/instance-filter-matcher-test-C-4z6qUt.js +564 -0
- package/bundled-test-harness/assets/instantiate-card-test-eQ22Vt_m.js +104 -0
- package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-hXPsRPMU.js +497 -0
- package/bundled-test-harness/assets/interact-submode-setup-D55IIVc5.js +558 -0
- package/bundled-test-harness/assets/interact-submode-test-BwrtFe2m.js +725 -0
- package/bundled-test-harness/assets/invalidate-realm-identifiers-test-BMk7yd-D.js +101 -0
- package/bundled-test-harness/assets/invite-user-to-room-test-B5B0umJQ.js +67 -0
- package/bundled-test-harness/assets/ishikawaDiagram-YF4QCWOH-BrO7NAng.js +1009 -0
- package/bundled-test-harness/assets/isolated-render-test-DX1wdHoS.js +51 -0
- package/bundled-test-harness/assets/item-button-QkVr-FW0.js +203 -0
- package/bundled-test-harness/assets/javascript-BWNQhcCY.js +75 -0
- package/bundled-test-harness/assets/job-priority-header-test-CuBZloLK.js +81 -0
- package/bundled-test-harness/assets/journeyDiagram-JHISSGLW-B7BT66v0.js +1256 -0
- package/bundled-test-harness/assets/jpg-image-def-test-DEx462nY.js +430 -0
- package/bundled-test-harness/assets/json-file-def-test-Cray6ly6.js +92 -0
- package/bundled-test-harness/assets/kanban-definition-UN3LZRKU-C0E5Vmr_.js +1284 -0
- package/bundled-test-harness/assets/last-modified-date-test-BzE25NOB.js +18 -0
- package/bundled-test-harness/assets/limited-set-test-NwGNoXKc.js +123 -0
- package/bundled-test-harness/assets/line-BbGOk93s.js +55 -0
- package/bundled-test-harness/assets/linear-CHTo-YQl.js +417 -0
- package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CZdgRM1b.js +315 -0
- package/bundled-test-harness/assets/linksto-error-sentinel-test-DhsHO7Xs.js +236 -0
- package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-mt-RrRta.js +303 -0
- package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CdGUXZsi.js +301 -0
- package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DOJ_6Gwf.js +258 -0
- package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-BZC-gslF.js +194 -0
- package/bundled-test-harness/assets/live-prerendered-search-BSkwf5AH.js +639 -0
- package/bundled-test-harness/assets/live-test-DTfxZnsy.js +100 -0
- package/bundled-test-harness/assets/live-test-WOMYpc1I.js +2 -0
- package/bundled-test-harness/assets/loader-icon-error-test-F_ukQytn.js +62 -0
- package/bundled-test-harness/assets/loader-parallel-prefetch-test-DpNaFnhc.js +257 -0
- package/bundled-test-harness/assets/loader-retry-test-EQ2X0bFS.js +173 -0
- package/bundled-test-harness/assets/loader-test-BYkWAwc4.js +245 -0
- package/bundled-test-harness/assets/loading-test-jfWH_OpH.js +63 -0
- package/bundled-test-harness/assets/login-error-text-test-Cldr1X6h.js +51 -0
- package/bundled-test-harness/assets/m4a-audio-def-test-BQ1WKApD.js +185 -0
- package/bundled-test-harness/assets/main-ByAsLO_g.js +5 -0
- package/bundled-test-harness/assets/markdown-fallback-test-dtTaGP1s.js +316 -0
- package/bundled-test-harness/assets/markdown-file-def-test-shW9Xxd1.js +286 -0
- package/bundled-test-harness/assets/markdown-helpers-test-B6H7p4ay.js +183 -0
- package/bundled-test-harness/assets/markdown-highlighting-test-ZIrFNHRe.js +244 -0
- package/bundled-test-harness/assets/markdown-preview-KII3nJ2M.js +69 -0
- package/bundled-test-harness/assets/markdown-preview-test-De-IaUbK.js +237 -0
- package/bundled-test-harness/assets/marked-sync-CGSehq4u.js +2 -0
- package/bundled-test-harness/assets/marked-sync-DenC7QgC.js +2561 -0
- package/bundled-test-harness/assets/marked-sync-test-jZBr20Hq.js +146 -0
- package/bundled-test-harness/assets/matrix-service-sliding-sync-test-Ax4kyAMt.js +33 -0
- package/bundled-test-harness/assets/mermaid-parser.core-B_3tzKUl.js +114 -0
- package/bundled-test-harness/assets/mermaid.core-D2hqA7Hq.js +1700 -0
- package/bundled-test-harness/assets/message-service-subscription-test-B42KnJ91.js +113 -0
- package/bundled-test-harness/assets/mindmap-definition-RKZ34NQL-IZz7Qpd0.js +1347 -0
- package/bundled-test-harness/assets/mock-matrix-BhFWlMMr.js +14292 -0
- package/bundled-test-harness/assets/mock-matrix-CrtMntcN.js +2 -0
- package/bundled-test-harness/assets/module-transpile-cache-test-BtWN4OiM.js +66 -0
- package/bundled-test-harness/assets/monaco.contribution-B1hOUP3w.js +2 -0
- package/bundled-test-harness/assets/monaco.contribution-DhNsYtZe.js +2 -0
- package/bundled-test-harness/assets/monaco.contribution-DvJDImx2.js +103 -0
- package/bundled-test-harness/assets/monaco.contribution-yXcOyzue.js +243 -0
- package/bundled-test-harness/assets/mp3-audio-def-test-D365TuA7.js +129 -0
- package/bundled-test-harness/assets/mutex-test-DY09HLvv.js +71 -0
- package/bundled-test-harness/assets/number-field-test-wYaQjnzA.js +153 -0
- package/bundled-test-harness/assets/ogg-audio-def-test-Dl01PP31.js +191 -0
- package/bundled-test-harness/assets/open-create-listing-modal-test-D8C2PUFv.js +117 -0
- package/bundled-test-harness/assets/open-workspace-test-DN2n8IkC.js +48 -0
- package/bundled-test-harness/assets/operator-mode-acceptance-test-B_hzJZo4.js +1044 -0
- package/bundled-test-harness/assets/operator-mode-card-catalog-test-Hrrnkdt9.js +989 -0
- package/bundled-test-harness/assets/operator-mode-links-test-DC6sc9TZ.js +797 -0
- package/bundled-test-harness/assets/operator-mode-state-service-test-Aqz9_v0U.js +122 -0
- package/bundled-test-harness/assets/operator-mode-test-CLgpZGEM.js +617 -0
- package/bundled-test-harness/assets/operator-mode-ui-test-CDRrORfC.js +985 -0
- package/bundled-test-harness/assets/ordinal-BIRuJQBH.js +85 -0
- package/bundled-test-harness/assets/overlay-menu-items-test-of24KuXp.js +316 -0
- package/bundled-test-harness/assets/packet-YPE3B663-hs92geQG.js +3 -0
- package/bundled-test-harness/assets/panel-rIdTMDfK.js +3371 -0
- package/bundled-test-harness/assets/past-sessions-test-ZKr4ACF0.js +321 -0
- package/bundled-test-harness/assets/patch-code-test-BZa-Itrt.js +203 -0
- package/bundled-test-harness/assets/patch-fields-test-BkaHs-zo.js +992 -0
- package/bundled-test-harness/assets/patch-instance-test-CRMgg52p.js +287 -0
- package/bundled-test-harness/assets/persist-module-inspector-view-test-CqNy2RXR.js +62 -0
- package/bundled-test-harness/assets/phone-number-field-test-CV6gntON.js +72 -0
- package/bundled-test-harness/assets/pie-LRSECV5Y-DcM5pWE3.js +3 -0
- package/bundled-test-harness/assets/pieDiagram-4H26LBE5-CtO8RHpU.js +253 -0
- package/bundled-test-harness/assets/plan-install-test-lfBTuWXU.js +417 -0
- package/bundled-test-harness/assets/playground-VscW9KdT.js +57 -0
- package/bundled-test-harness/assets/png-image-def-test-CRspcIHP.js +222 -0
- package/bundled-test-harness/assets/prerender-file-extract-test-D3SpxfMI.js +176 -0
- package/bundled-test-harness/assets/prerender-html-test-WWptGXJ0.js +615 -0
- package/bundled-test-harness/assets/prerender-meta-test-DwQEGN6j.js +388 -0
- package/bundled-test-harness/assets/prerender-module-test-BM1AOwRF.js +195 -0
- package/bundled-test-harness/assets/prerendered-card-search-test-BVJ8IHLe.js +708 -0
- package/bundled-test-harness/assets/preview-format-test-DDpiXDN_.js +103 -0
- package/bundled-test-harness/assets/preview-test-D2UV1C5D.js +455 -0
- package/bundled-test-harness/assets/published-realm-url-DUIZzAJ5.js +52 -0
- package/bundled-test-harness/assets/published-realm-url-test-CIgSf4Ub.js +137 -0
- package/bundled-test-harness/assets/qs-test-Bi679H5w.js +36 -0
- package/bundled-test-harness/assets/quadrantDiagram-W4KKPZXB-GOTAKsCo.js +2324 -0
- package/bundled-test-harness/assets/query-field-barrier-test-BlOuVxdS.js +118 -0
- package/bundled-test-harness/assets/query-field-error-sentinel-test-BsB76iUQ.js +202 -0
- package/bundled-test-harness/assets/query-field-normalization-test-B2YodJCr.js +271 -0
- package/bundled-test-harness/assets/query-field-schema-test-CQhJASFx.js +231 -0
- package/bundled-test-harness/assets/query-fields-test-CaZ19leM.js +535 -0
- package/bundled-test-harness/assets/queue-test-DrSip6mJ.js +216 -0
- package/bundled-test-harness/assets/radar-GUYGQ44K-BkAe1nkp.js +3 -0
- package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D8yB-OL9.js +91 -0
- package/bundled-test-harness/assets/read-file-for-ai-assistant-test-K3M0-lBD.js +45 -0
- package/bundled-test-harness/assets/read-source-test-CKlb0ORb.js +67 -0
- package/bundled-test-harness/assets/read-text-file-test-CJdasDDU.js +124 -0
- package/bundled-test-harness/assets/realm-DhUCLR5r.js +884 -0
- package/bundled-test-harness/assets/realm-field-test-kFgxphDI.js +101 -0
- package/bundled-test-harness/assets/realm-index-card-id-test-DAnMAqw4.js +18 -0
- package/bundled-test-harness/assets/realm-indexing-test-BQkX-Dat.js +4018 -0
- package/bundled-test-harness/assets/realm-paths-test-CmEi9rzu.js +33 -0
- package/bundled-test-harness/assets/realm-querying-test-eq3qSXLu.js +1062 -0
- package/bundled-test-harness/assets/realm-test-DLQAtdMt.js +2409 -0
- package/bundled-test-harness/assets/reasoning-test-CwTfyDlj.js +234 -0
- package/bundled-test-harness/assets/recent-files-test-MVIGLp8S.js +449 -0
- package/bundled-test-harness/assets/reindex-realm-test-BwLgJeB3.js +119 -0
- package/bundled-test-harness/assets/relationship-loading-state-test-B4Ca43yD.js +289 -0
- package/bundled-test-harness/assets/render-component-BKEihV4U.js +2 -0
- package/bundled-test-harness/assets/render-error-test-DWD6tfNe.js +22 -0
- package/bundled-test-harness/assets/render-service-test-BjuoVrUK.js +87 -0
- package/bundled-test-harness/assets/render-timer-stub-test-BgUY5u3X.js +84 -0
- package/bundled-test-harness/assets/rendered-markdown-DOP-s6fW.js +211 -0
- package/bundled-test-harness/assets/rendered-markdown-test-CD02UYwA.js +360 -0
- package/bundled-test-harness/assets/requirementDiagram-4Y6WPE33-DJIy7eR9.js +2550 -0
- package/bundled-test-harness/assets/rich-markdown-field-test-BJeQx1tL.js +806 -0
- package/bundled-test-harness/assets/room-message-test-CjD7FlPD.js +171 -0
- package/bundled-test-harness/assets/rust-crypto-GS0FFZ7H.js +16141 -0
- package/bundled-test-harness/assets/sanitize-module-list-test-gi0pcqSy.js +68 -0
- package/bundled-test-harness/assets/sankeyDiagram-5OEKKPKP-wBsbt1Mr.js +1357 -0
- package/bundled-test-harness/assets/schema-editor-test-BSqu8W3e.js +784 -0
- package/bundled-test-harness/assets/schema-generation-test-DVFuSsLl.js +28 -0
- package/bundled-test-harness/assets/scrolling-test-CpzkRiBS.js +292 -0
- package/bundled-test-harness/assets/search-and-choose-test-DVWX4XRb.js +156 -0
- package/bundled-test-harness/assets/search-cache-key-test-BMnYM4a5.js +79 -0
- package/bundled-test-harness/assets/search-command-test-kEfT0AO7.js +135 -0
- package/bundled-test-harness/assets/search-correlation-id-test-D08FtVUZ.js +101 -0
- package/bundled-test-harness/assets/search-data-test-CTrBEc1m.js +243 -0
- package/bundled-test-harness/assets/search-google-images-test-UnKG8qCp.js +168 -0
- package/bundled-test-harness/assets/search-in-flight-key-test-9Va-JXFz.js +79 -0
- package/bundled-test-harness/assets/search-test-COlO2lZi.js +847 -0
- package/bundled-test-harness/assets/send-ai-assistant-message-test-BPjOjt2R.js +52 -0
- package/bundled-test-harness/assets/send-bot-trigger-event-test-BB4lHbB_.js +56 -0
- package/bundled-test-harness/assets/send-request-via-proxy-test-U8frmHZA.js +333 -0
- package/bundled-test-harness/assets/sending-test-DjEzksEX.js +317 -0
- package/bundled-test-harness/assets/sequenceDiagram-3UESZ5HK-QAEjhoay.js +5551 -0
- package/bundled-test-harness/assets/serialization-test-DHdLriC8.js +8283 -0
- package/bundled-test-harness/assets/set-user-system-card-test-C8I1lDBh.js +59 -0
- package/bundled-test-harness/assets/setup-BkuybBki.js +769 -0
- package/bundled-test-harness/assets/setup-gxkWJKID.js +2 -0
- package/bundled-test-harness/assets/show-card-test-DHKQ6AI4.js +362 -0
- package/bundled-test-harness/assets/skills-test-DlMgZrPV.js +568 -0
- package/bundled-test-harness/assets/spec-test-s9Zj7x2E.js +1012 -0
- package/bundled-test-harness/assets/stateDiagram-AJRCARHV-nEhf3efZ.js +363 -0
- package/bundled-test-harness/assets/stateDiagram-v2-BHNVJYJU-tZz_3w-7.js +29 -0
- package/bundled-test-harness/assets/store-add-test-D44FWRl3.js +52 -0
- package/bundled-test-harness/assets/store-test-TTmNBs5v.js +1562 -0
- package/bundled-test-harness/assets/summarize-session-test-DHAuNb5K.js +169 -0
- package/bundled-test-harness/assets/svg-image-def-test-C2_GGzR6.js +164 -0
- package/bundled-test-harness/assets/switch-submode-test-CfGaoxVe.js +168 -0
- package/bundled-test-harness/assets/test-realm-service-worker-C21o7yvW.js +73 -0
- package/bundled-test-harness/assets/tests-BSt6h9iC.js +2771 -0
- package/bundled-test-harness/assets/text-file-def-test-CR4QO7e_.js +93 -0
- package/bundled-test-harness/assets/text-input-validator-test-DYS3mFj9.js +155 -0
- package/bundled-test-harness/assets/text-suggestion-test-GUxJ7WtF.js +339 -0
- package/bundled-test-harness/assets/theme-card-test-Ba2KqFB8.js +573 -0
- package/bundled-test-harness/assets/timeline-definition-PNZ67QCA-BQYyTIei.js +1545 -0
- package/bundled-test-harness/assets/transform-cards-test-DyA8eCom.js +341 -0
- package/bundled-test-harness/assets/treeView-BLDUP644-Z4ezSvef.js +3 -0
- package/bundled-test-harness/assets/treemap-LRROVOQU-Bf5rk_He.js +3 -0
- package/bundled-test-harness/assets/ts-file-def-test-Cxnc6H74.js +90 -0
- package/bundled-test-harness/assets/tsMode-oJEHe-CR.js +968 -0
- package/bundled-test-harness/assets/typescript-DLbb7q56.js +2 -0
- package/bundled-test-harness/assets/update-room-skills-test-B7VLHU3-.js +197 -0
- package/bundled-test-harness/assets/url-test-w-69Zycf.js +103 -0
- package/bundled-test-harness/assets/use-ai-assistant-test-DJkFz7_b.js +330 -0
- package/bundled-test-harness/assets/validate-realm-test-BioLutB8.js +53 -0
- package/bundled-test-harness/assets/vennDiagram-CIIHVFJN-9eLwsQET.js +2833 -0
- package/bundled-test-harness/assets/wardley-L42UT6IY-qNP5_917.js +3 -0
- package/bundled-test-harness/assets/wardleyDiagram-YWT4CUSO-DZhEm4N4.js +872 -0
- package/bundled-test-harness/assets/wav-audio-def-test-DqsTEBw8.js +155 -0
- package/bundled-test-harness/assets/webp-image-def-test-23wOLPMu.js +225 -0
- package/bundled-test-harness/assets/workspace-chooser-delete-test-Q6S_nGDT.js +189 -0
- package/bundled-test-harness/assets/workspace-chooser-test-CzsvY1v_.js +235 -0
- package/bundled-test-harness/assets/workspace-delete-multiple-test-BNFHkJpQ.js +213 -0
- package/bundled-test-harness/assets/workspace-delete-summary-test-DLzNdjvC.js +63 -0
- package/bundled-test-harness/assets/write-binary-file-test-PHHt9fVI.js +100 -0
- package/bundled-test-harness/assets/write-text-file-test-DuHe6tR5.js +172 -0
- package/bundled-test-harness/assets/xychartDiagram-2RQKCTM6-bflHQbEv.js +2551 -0
- package/bundled-test-harness/index.html +24 -23
- package/bundled-test-harness/tests/index.html +31 -30
- package/bundled-types/base/command.d.ts +48 -0
- package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +17 -26
- package/bundled-types/host-app/lib/published-realm-url.ts +135 -0
- package/package.json +3 -3
- package/src/build-program.ts +12 -12
- package/src/commands/consolidate-workspaces.ts +1 -1
- package/src/commands/file/delete.ts +4 -4
- package/src/commands/file/index.ts +6 -6
- package/src/commands/file/lint.ts +4 -4
- package/src/commands/file/list.ts +3 -3
- package/src/commands/file/read.ts +3 -3
- package/src/commands/file/touch.ts +6 -6
- package/src/commands/file/write.ts +3 -3
- package/src/commands/lint.ts +6 -6
- package/src/commands/parse.ts +6 -6
- package/src/commands/profile.ts +4 -4
- package/src/commands/read-transpiled.ts +6 -3
- package/src/commands/realm/cancel-indexing.ts +3 -3
- package/src/commands/realm/create.ts +2 -2
- package/src/commands/realm/history.ts +4 -4
- package/src/commands/realm/index.ts +15 -15
- package/src/commands/realm/indexing-errors.ts +3 -3
- package/src/commands/realm/list.ts +2 -2
- package/src/commands/realm/milestone.ts +4 -4
- package/src/commands/realm/publish.ts +4 -4
- package/src/commands/realm/pull.ts +6 -6
- package/src/commands/realm/push.ts +7 -7
- package/src/commands/realm/remove.ts +3 -3
- package/src/commands/realm/status.ts +8 -8
- package/src/commands/realm/sync.ts +9 -9
- package/src/commands/realm/unpublish.ts +3 -3
- package/src/commands/realm/wait-for-ready.ts +2 -2
- package/src/commands/realm/watch/index.ts +2 -2
- package/src/commands/realm/watch/start.ts +13 -10
- package/src/commands/realm/watch/stop.ts +2 -2
- package/src/commands/run-command.ts +6 -3
- package/src/commands/search.ts +3 -3
- package/src/commands/test.ts +5 -5
- package/src/index.ts +2 -2
- package/src/lib/auth-resolver.ts +3 -3
- package/src/lib/boxel-cli-client.ts +18 -15
- package/src/lib/checkpoint-manager.ts +1 -1
- package/src/lib/find-checkpoint.ts +1 -1
- package/src/lib/profile-manager.ts +4 -4
- package/src/lib/realm-local-paths.ts +1 -1
- package/src/lib/realm-sync-base.ts +1 -1
- package/src/lib/seed-auth.ts +1 -1
- package/src/lib/sync-logic.ts +1 -1
- package/src/lib/watch-process-registry.ts +1 -1
- package/bundled-test-harness/assets/adapter-C8oDflNN.js +0 -2
- package/bundled-test-harness/assets/add-field-to-card-definition-command-test-Cs670972.js +0 -111
- package/bundled-test-harness/assets/add-workspace-test-BviDAUBK.js +0 -71
- package/bundled-test-harness/assets/ai-assistant-B5fp2iOz.js +0 -129
- package/bundled-test-harness/assets/ai-assistant-panel-service-test-NpHZzZAz.js +0 -95
- package/bundled-test-harness/assets/ai-assistant-test-jPV29jEw.js +0 -2137
- package/bundled-test-harness/assets/ai-function-generation-test-QRPcE9tQ.js +0 -996
- package/bundled-test-harness/assets/ai-module-creation-test-DyuyfnkY.js +0 -150
- package/bundled-test-harness/assets/aibot-message-Dwxp5hTW.js +0 -1185
- package/bundled-test-harness/assets/amd-transpile-test-CF7Lkbif.js +0 -425
- package/bundled-test-harness/assets/app-CgP2IpNG.js +0 -21464
- package/bundled-test-harness/assets/apply-boxel-formatting-test-BXyZ3z0I.js +0 -134
- package/bundled-test-harness/assets/apply-markdown-edit-test-C6bcaj3a.js +0 -230
- package/bundled-test-harness/assets/apply-search-replace-block-test-BSwC4J9g.js +0 -630
- package/bundled-test-harness/assets/arc-DNRb_8LA.js +0 -199
- package/bundled-test-harness/assets/architecture-7EHR7CIX-BtVh_LBJ.js +0 -3
- package/bundled-test-harness/assets/architectureDiagram-3BPJPVTR-D9UYbaKj.js +0 -7400
- package/bundled-test-harness/assets/auth-error-guard-test-Bvu8E7Wy.js +0 -30
- package/bundled-test-harness/assets/auth-service-worker-test-CC6DzdfK.js +0 -538
- package/bundled-test-harness/assets/authed-fetch-test-CfF-IBHI.js +0 -75
- package/bundled-test-harness/assets/avif-image-def-test-B9L2z0nR.js +0 -186
- package/bundled-test-harness/assets/base-realm-43wjttN2.js +0 -140
- package/bundled-test-harness/assets/base-realm-CJ5x9iyX.js +0 -2
- package/bundled-test-harness/assets/basic-test-B64a5zCK.js +0 -128
- package/bundled-test-harness/assets/bfm-card-references-test-cLQVLpth.js +0 -577
- package/bundled-test-harness/assets/binary-upload-dedupe-test-By7Y1iQ3.js +0 -308
- package/bundled-test-harness/assets/blockDiagram-GPEHLZMM-LgOorG2O.js +0 -4355
- package/bundled-test-harness/assets/bot-registration-test-DOjf0P1R.js +0 -99
- package/bundled-test-harness/assets/box-test-Cd1-RcXg.js +0 -51
- package/bundled-test-harness/assets/brand-guide-attachments-test-DxRqP8fo.js +0 -87
- package/bundled-test-harness/assets/brand-guide-custom-css-test-DBpZiHzJ.js +0 -135
- package/bundled-test-harness/assets/brand-logo-mark-field-test-61k4e5Om.js +0 -87
- package/bundled-test-harness/assets/broken-link-template-test-A1P4flQ5.js +0 -345
- package/bundled-test-harness/assets/browser-index-Bzhpucwe.js +0 -3
- package/bundled-test-harness/assets/browser-index-D0mzSWYV.js +0 -8802
- package/bundled-test-harness/assets/c4Diagram-AAUBKEIU-1iq94vGa.js +0 -3764
- package/bundled-test-harness/assets/cached-fetch-test-ByQ-5OQI.js +0 -93
- package/bundled-test-harness/assets/can-read-realm-test-VFLHJdEv.js +0 -58
- package/bundled-test-harness/assets/cancel-indexing-job-test-n3Os4ZaX.js +0 -71
- package/bundled-test-harness/assets/card-api-test-DvNfLv3V.js +0 -196
- package/bundled-test-harness/assets/card-basics-test-CKzZuFdw.js +0 -4895
- package/bundled-test-harness/assets/card-catalog-test-JFvkVHED.js +0 -377
- package/bundled-test-harness/assets/card-copy-test-iwrFA72s.js +0 -777
- package/bundled-test-harness/assets/card-def-field-def-relationships-test-D5s2RH5t.js +0 -560
- package/bundled-test-harness/assets/card-def-menu-items-test-XcmkT4NF.js +0 -182
- package/bundled-test-harness/assets/card-delete-test-jtAOHk1Y.js +0 -412
- package/bundled-test-harness/assets/card-directory-name-test-veQEp5FJ.js +0 -71
- package/bundled-test-harness/assets/card-playground-test-P7Ed0tO4.js +0 -1497
- package/bundled-test-harness/assets/card-prerender-DXG8cQEv.js +0 -12661
- package/bundled-test-harness/assets/card-search-adorn-test-BX0-IJHB.js +0 -128
- package/bundled-test-harness/assets/card-search-query-builder-test-D01uixke.js +0 -88
- package/bundled-test-harness/assets/card-search-selection-menu-test-DMTeZFmW.js +0 -108
- package/bundled-test-harness/assets/channel-BvoW_rbI.js +0 -8
- package/bundled-test-harness/assets/check-correctness-test-D7QB1GTo.js +0 -252
- package/bundled-test-harness/assets/chunk-2J33WTMH-BbxCvOlt.js +0 -31
- package/bundled-test-harness/assets/chunk-3OPIFGDE-DHY3s0oT.js +0 -5548
- package/bundled-test-harness/assets/chunk-4BX2VUAB-CRivrLQ6.js +0 -11
- package/bundled-test-harness/assets/chunk-4EGX6M5U-qWzlMeqd.js +0 -44
- package/bundled-test-harness/assets/chunk-55IACEB6-DOl6NECJ.js +0 -10
- package/bundled-test-harness/assets/chunk-5DO6E6H7-scwNnzDb.js +0 -27
- package/bundled-test-harness/assets/chunk-5ZQYHXKU-BeETnugr.js +0 -1767
- package/bundled-test-harness/assets/chunk-727SXJPM-BlycTxFE.js +0 -3877
- package/bundled-test-harness/assets/chunk-AQP2D5EJ-BE3Clw-g.js +0 -2622
- package/bundled-test-harness/assets/chunk-BR22UD5L-BTPKlhWA.js +0 -85
- package/bundled-test-harness/assets/chunk-BSJP7CBP-BIhtUfvc.js +0 -114
- package/bundled-test-harness/assets/chunk-CSCIHK7Q-DnRAp6Bv.js +0 -6144
- package/bundled-test-harness/assets/chunk-FHYWG6QK-DpIXIGDC.js +0 -27
- package/bundled-test-harness/assets/chunk-FMBD7UC4-B36w3LIg.js +0 -20
- package/bundled-test-harness/assets/chunk-KSCS5N6A-gbz9p9BU.js +0 -871
- package/bundled-test-harness/assets/chunk-L5ZTLDWV-HNfH9U8K.js +0 -43
- package/bundled-test-harness/assets/chunk-LZXEDZCA-CbKHJfzx.js +0 -65
- package/bundled-test-harness/assets/chunk-MPE355IW-BGVbCTZH.js +0 -27
- package/bundled-test-harness/assets/chunk-MZUSXYTE-DoCjuxcJ.js +0 -36
- package/bundled-test-harness/assets/chunk-N66VUXT2-BX17MI-i.js +0 -70
- package/bundled-test-harness/assets/chunk-ND2GUHAM-IpeiJZYz.js +0 -93
- package/bundled-test-harness/assets/chunk-NZK2D7GU-CH-Gg7qc.js +0 -89
- package/bundled-test-harness/assets/chunk-O5CBEL6O-D2JbLgI8.js +0 -2395
- package/bundled-test-harness/assets/chunk-PUPMXCY4-DS4ZxM2V.js +0 -27
- package/bundled-test-harness/assets/chunk-QZHKN3VN-WLHeRUJ3.js +0 -20
- package/bundled-test-harness/assets/chunk-UIBZB4QT-DNIJBpkq.js +0 -27
- package/bundled-test-harness/assets/chunk-WCWK7LTN-CqRJ3WOy.js +0 -36
- package/bundled-test-harness/assets/chunk-WU5MYG2G-CtItCLbE.js +0 -12
- package/bundled-test-harness/assets/chunk-XPW4576I-D2Q7Qo8n.js +0 -2341
- package/bundled-test-harness/assets/classDiagram-4FO5ZUOK-CnNFReKQ.js +0 -31
- package/bundled-test-harness/assets/classDiagram-v2-Q7XG4LA2-BlhpbohY.js +0 -31
- package/bundled-test-harness/assets/code-equality-assertion-C-2g5YGf.js +0 -474
- package/bundled-test-harness/assets/code-patches-test-DaV4Mon_.js +0 -1128
- package/bundled-test-harness/assets/code-patching-test-CcbWlImN.js +0 -114
- package/bundled-test-harness/assets/code-ref-test-8Yj8gbww.js +0 -138
- package/bundled-test-harness/assets/code-semantics-service-test-C3srTfDz.js +0 -65
- package/bundled-test-harness/assets/code-submode-test-BUhjvWtB.js +0 -1762
- package/bundled-test-harness/assets/codeblocks-test-3zAp0_GA.js +0 -492
- package/bundled-test-harness/assets/codemirror-context-C7KmSAyy.js +0 -2
- package/bundled-test-harness/assets/codemirror-editor-test-WojU4k2h.js +0 -1176
- package/bundled-test-harness/assets/color-field-test-yESUakoE.js +0 -213
- package/bundled-test-harness/assets/command-definitions-test-UsXsAhn7.js +0 -72
- package/bundled-test-harness/assets/commands-CBDBujm_.js +0 -1379
- package/bundled-test-harness/assets/commands-calling-test-DJTl0EbL.js +0 -200
- package/bundled-test-harness/assets/commands-test-DW2gupNS.js +0 -1041
- package/bundled-test-harness/assets/commands-test-DjLnuojW.js +0 -1145
- package/bundled-test-harness/assets/computed-test-0n5g8Ez5.js +0 -882
- package/bundled-test-harness/assets/container-D8y7fmir.js +0 -14602
- package/bundled-test-harness/assets/convert-to-class-name-test-DSIflIV2.js +0 -17
- package/bundled-test-harness/assets/copy-and-edit-test-BuK1ZHr-.js +0 -291
- package/bundled-test-harness/assets/copy-card-test-DnDC4_7J.js +0 -156
- package/bundled-test-harness/assets/copy-file-to-realm-test-CFd_3Iff.js +0 -99
- package/bundled-test-harness/assets/copy-source-test-38yUGJor.js +0 -56
- package/bundled-test-harness/assets/cose-bilkent-S5V4N54A-DXA1S87S.js +0 -4275
- package/bundled-test-harness/assets/create-file-test-B2oem0-V.js +0 -963
- package/bundled-test-harness/assets/create-file-test-BHk00RtD.js +0 -397
- package/bundled-test-harness/assets/create-listing-modal-test-L-71-Uo2.js +0 -194
- package/bundled-test-harness/assets/create-listing-pr-request-CZaLsHhE.js +0 -64
- package/bundled-test-harness/assets/create-listing-pr-request-test-OGzk4Q2E.js +0 -117
- package/bundled-test-harness/assets/create-spec-test-BsM7VKuH.js +0 -239
- package/bundled-test-harness/assets/csv-file-def-test-BhJalhE-.js +0 -101
- package/bundled-test-harness/assets/dagre-BIk_r1iU.js +0 -4195
- package/bundled-test-harness/assets/dagre-BM42HDAG-FaUWeGOj.js +0 -606
- package/bundled-test-harness/assets/date-time-fields-test-Cs5T6Xk1.js +0 -322
- package/bundled-test-harness/assets/debug-message-test-WlHe7pJF.js +0 -119
- package/bundled-test-harness/assets/diagram-2AECGRRQ-DLve-IVM.js +0 -279
- package/bundled-test-harness/assets/diagram-5GNKFQAL-CJG1RTLk.js +0 -142
- package/bundled-test-harness/assets/diagram-KO2AKTUF-DYGDq3dD.js +0 -551
- package/bundled-test-harness/assets/diagram-LMA3HP47-BNRYdpMl.js +0 -184
- package/bundled-test-harness/assets/diagram-OG6HWLK6-BlJH5g83.js +0 -857
- package/bundled-test-harness/assets/diffing-test-DO54USSm.js +0 -210
- package/bundled-test-harness/assets/dist-BDRmXkWl.js +0 -232
- package/bundled-test-harness/assets/dist-BfNSLd0O.js +0 -105
- package/bundled-test-harness/assets/dist-BoireClP.js +0 -2
- package/bundled-test-harness/assets/editor-test-DChC9LuR.js +0 -551
- package/bundled-test-harness/assets/editor.main-BiohyrHK.js +0 -3
- package/bundled-test-harness/assets/editor.main-CMU_0pR1.js +0 -43566
- package/bundled-test-harness/assets/email-field-test-DWIFSfZ-.js +0 -74
- package/bundled-test-harness/assets/enum-field-test-BUc6l4us.js +0 -909
- package/bundled-test-harness/assets/erDiagram-TEJ5UH35-pOJ2novh.js +0 -2041
- package/bundled-test-harness/assets/error-display-test-CHSE6h6Z.js +0 -343
- package/bundled-test-harness/assets/evaluate-module-test-Caa5n0B9.js +0 -66
- package/bundled-test-harness/assets/eventmodeling-FCH6USID-B6XXU7R3.js +0 -3
- package/bundled-test-harness/assets/execute-atomic-operations-test-CT060oDk.js +0 -75
- package/bundled-test-harness/assets/externals-Do1fVZ4j.js +0 -5533
- package/bundled-test-harness/assets/extract-css-variables-test-DzjAsMgg.js +0 -169
- package/bundled-test-harness/assets/fallback-banner-test-CmxysrDn.js +0 -227
- package/bundled-test-harness/assets/fallback-banner-test-DJ4cO8PB.js +0 -53
- package/bundled-test-harness/assets/fallback-models-test-r5upJFeA.js +0 -163
- package/bundled-test-harness/assets/fetch-card-json-test-Di1wmvy5.js +0 -63
- package/bundled-test-harness/assets/fetcher-test-DjzNl_7F.js +0 -85
- package/bundled-test-harness/assets/field-configuration-test-C3vr-HhG.js +0 -535
- package/bundled-test-harness/assets/field-markdown-domain-test-DG2U4qIm.js +0 -615
- package/bundled-test-harness/assets/field-markdown-primitives-test-Bay2v8nT.js +0 -362
- package/bundled-test-harness/assets/field-markdown-specialized-test-Bl0Sl4sc.js +0 -527
- package/bundled-test-harness/assets/field-path-parser-test-bxxwUjcm.js +0 -387
- package/bundled-test-harness/assets/field-playground-test-Bcjfws4m.js +0 -902
- package/bundled-test-harness/assets/field-support-predicates-test-DYTqOGvv.js +0 -170
- package/bundled-test-harness/assets/field-test-helpers-DYSfSGdh.js +0 -45
- package/bundled-test-harness/assets/file-attachment-test-6ypDRDS7.js +0 -635
- package/bundled-test-harness/assets/file-chooser-test-mtmcHTFP.js +0 -439
- package/bundled-test-harness/assets/file-def-live-reload-test-CX1-lOv6.js +0 -50
- package/bundled-test-harness/assets/file-def-manager-DNHII2oj.js +0 -470
- package/bundled-test-harness/assets/file-def-manager-canonicalize-test-i_7UVakF.js +0 -451
- package/bundled-test-harness/assets/file-def-menu-items-test-Dw458iku.js +0 -114
- package/bundled-test-harness/assets/file-def-navigation-test-B3Ztr1Rd.js +0 -109
- package/bundled-test-harness/assets/file-def-serialization-test-C_gV8AkU.js +0 -87
- package/bundled-test-harness/assets/file-def-test-vXXJmtxX.js +0 -219
- package/bundled-test-harness/assets/file-tree-test-BJCiw9jm.js +0 -773
- package/bundled-test-harness/assets/flac-audio-def-test-BX3SE1vW.js +0 -138
- package/bundled-test-harness/assets/flowDiagram-I6XJVG4X-7Q5ROn4X.js +0 -4883
- package/bundled-test-harness/assets/formatted-aibot-message-test-DyqUz2nt.js +0 -366
- package/bundled-test-harness/assets/formatted-user-message-test-aqAzqvBP.js +0 -43
- package/bundled-test-harness/assets/freestyle-test-CLRrZkAE.js +0 -17
- package/bundled-test-harness/assets/full-reindex-realm-test-ClqPVQ0c.js +0 -103
- package/bundled-test-harness/assets/ganttDiagram-6RSMTGT7-BkDoIAAE.js +0 -4060
- package/bundled-test-harness/assets/garbage-collection-test-Ba2dD3qS.js +0 -373
- package/bundled-test-harness/assets/general-test-D0zhs14K.js +0 -926
- package/bundled-test-harness/assets/generate-css-variables-test-CKrXSlHs.js +0 -88
- package/bundled-test-harness/assets/generate-example-cards-one-shot-test-fSAdGJeT.js +0 -67
- package/bundled-test-harness/assets/get-available-realm-identifiers-test-BXMUW65I.js +0 -49
- package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-DKEq6Zcq.js +0 -49
- package/bundled-test-harness/assets/get-default-writable-realm-test-Dp4nBIRP.js +0 -56
- package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-DYNnMgD-.js +0 -55
- package/bundled-test-harness/assets/get-relationship-membership-state-test-k9EUNWeq.js +0 -1306
- package/bundled-test-harness/assets/get-type-refs-from-filter-test-BPuivF-v.js +0 -136
- package/bundled-test-harness/assets/get-user-system-card-test-DSHv00O7.js +0 -52
- package/bundled-test-harness/assets/gif-image-def-test-LuDSr5Kz.js +0 -161
- package/bundled-test-harness/assets/gitGraph-WXDBUCRP-BrG_LYEh.js +0 -3
- package/bundled-test-harness/assets/gitGraphDiagram-PVQCEYII-QJjQcX4J.js +0 -1150
- package/bundled-test-harness/assets/gts-file-def-test-bS3ML062.js +0 -99
- package/bundled-test-harness/assets/head-format-preview-test-B8IPh71E.js +0 -156
- package/bundled-test-harness/assets/helpers-wSIq-bau.js +0 -5
- package/bundled-test-harness/assets/host-mode-test-D44nXoQZ.js +0 -391
- package/bundled-test-harness/assets/host-submode-test-CefkXg9F.js +0 -904
- package/bundled-test-harness/assets/index-query-engine-test-DJnDqmfK.js +0 -2548
- package/bundled-test-harness/assets/index-writer-test-BcrCMj37.js +0 -1842
- package/bundled-test-harness/assets/indexeddb-crypto-store-RTTNdynf.js +0 -49434
- package/bundled-test-harness/assets/info-J43DQDTF-DhDzvz9k.js +0 -3
- package/bundled-test-harness/assets/infoDiagram-5YYISTIA-8TmRFIRz.js +0 -23
- package/bundled-test-harness/assets/inspector-test-D4iMBlbL.js +0 -1776
- package/bundled-test-harness/assets/instance-filter-matcher-test-CYT6N3hN.js +0 -564
- package/bundled-test-harness/assets/instantiate-card-test-j1JS5lDe.js +0 -104
- package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-B-aXzOh6.js +0 -497
- package/bundled-test-harness/assets/interact-submode-setup-VMwOUl3u.js +0 -558
- package/bundled-test-harness/assets/interact-submode-test-D5lNNXdq.js +0 -725
- package/bundled-test-harness/assets/invalidate-realm-identifiers-test-71Ze8eGV.js +0 -101
- package/bundled-test-harness/assets/invite-user-to-room-test-UfjsvwVp.js +0 -67
- package/bundled-test-harness/assets/ishikawaDiagram-YF4QCWOH-7UALIGwM.js +0 -1009
- package/bundled-test-harness/assets/isolated-render-test-C2IL-Fz3.js +0 -51
- package/bundled-test-harness/assets/item-button-6g7XYj56.js +0 -203
- package/bundled-test-harness/assets/javascript-BwLQ7_Nc.js +0 -75
- package/bundled-test-harness/assets/job-priority-header-test-C3FfKLPP.js +0 -81
- package/bundled-test-harness/assets/journeyDiagram-JHISSGLW-t4gEZYup.js +0 -1256
- package/bundled-test-harness/assets/jpg-image-def-test-BTBk9lk5.js +0 -430
- package/bundled-test-harness/assets/json-file-def-test-BpU_Eidn.js +0 -92
- package/bundled-test-harness/assets/kanban-definition-UN3LZRKU-C_KHB3_r.js +0 -1284
- package/bundled-test-harness/assets/last-modified-date-test-fE7IP0q0.js +0 -18
- package/bundled-test-harness/assets/limited-set-test-uu2vX1Sv.js +0 -123
- package/bundled-test-harness/assets/line-BiZHXOjs.js +0 -55
- package/bundled-test-harness/assets/linear-DUaMMmmA.js +0 -417
- package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-qZeqQ1gt.js +0 -315
- package/bundled-test-harness/assets/linksto-error-sentinel-test-BaV3I8Xx.js +0 -236
- package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-BvJi1vCb.js +0 -303
- package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CK60Cugk.js +0 -301
- package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-BWxdEO9D.js +0 -258
- package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CIsLhqR2.js +0 -194
- package/bundled-test-harness/assets/live-prerendered-search-jZe3I16p.js +0 -639
- package/bundled-test-harness/assets/live-test-CF_R5WGr.js +0 -2
- package/bundled-test-harness/assets/live-test-jO7lXuyB.js +0 -100
- package/bundled-test-harness/assets/loader-icon-error-test-N4JYZuTx.js +0 -62
- package/bundled-test-harness/assets/loader-parallel-prefetch-test-DteeG7mU.js +0 -257
- package/bundled-test-harness/assets/loader-retry-test-DYVgpS_I.js +0 -173
- package/bundled-test-harness/assets/loader-test-DLI8JIx-.js +0 -245
- package/bundled-test-harness/assets/loading-test-D4ZBtRYf.js +0 -63
- package/bundled-test-harness/assets/login-error-text-test-Dcq7q3EY.js +0 -51
- package/bundled-test-harness/assets/m4a-audio-def-test-BKqGO-CW.js +0 -185
- package/bundled-test-harness/assets/main-BjBdsiQT.js +0 -5
- package/bundled-test-harness/assets/markdown-fallback-test-BBj80dZZ.js +0 -316
- package/bundled-test-harness/assets/markdown-file-def-test-BnMF5rQF.js +0 -286
- package/bundled-test-harness/assets/markdown-helpers-test-DnuuSLfS.js +0 -183
- package/bundled-test-harness/assets/markdown-highlighting-test-CWRp2Rce.js +0 -244
- package/bundled-test-harness/assets/markdown-preview-test-Bf5OqKGf.js +0 -237
- package/bundled-test-harness/assets/markdown-preview-yYHtwNeI.js +0 -69
- package/bundled-test-harness/assets/marked-sync-2EfimW4i.js +0 -2
- package/bundled-test-harness/assets/marked-sync-DZOVFLjK.js +0 -2561
- package/bundled-test-harness/assets/marked-sync-test-BaaYbZNF.js +0 -146
- package/bundled-test-harness/assets/matrix-service-sliding-sync-test-CdEy3ASW.js +0 -33
- package/bundled-test-harness/assets/mermaid-parser.core-CKNAdXJW.js +0 -114
- package/bundled-test-harness/assets/mermaid.core-C0mfwy8A.js +0 -1700
- package/bundled-test-harness/assets/message-service-subscription-test-pGz_7rz3.js +0 -113
- package/bundled-test-harness/assets/mindmap-definition-RKZ34NQL-ClcHxkdY.js +0 -1347
- package/bundled-test-harness/assets/mock-matrix-D7JHfFtT.js +0 -2
- package/bundled-test-harness/assets/mock-matrix-DqDbNhEj.js +0 -14292
- package/bundled-test-harness/assets/module-transpile-cache-test-D0M-fPxs.js +0 -66
- package/bundled-test-harness/assets/monaco.contribution-BEs3qwfd.js +0 -103
- package/bundled-test-harness/assets/monaco.contribution-Dpx8UiPl.js +0 -2
- package/bundled-test-harness/assets/monaco.contribution-RF_qxJYG.js +0 -2
- package/bundled-test-harness/assets/monaco.contribution-jPVrF29f.js +0 -243
- package/bundled-test-harness/assets/mp3-audio-def-test-CxeRk1bl.js +0 -129
- package/bundled-test-harness/assets/mutex-test-D1xyxTj2.js +0 -71
- package/bundled-test-harness/assets/number-field-test-gjAGDy6P.js +0 -153
- package/bundled-test-harness/assets/ogg-audio-def-test-B6Ww3Ixr.js +0 -191
- package/bundled-test-harness/assets/open-create-listing-modal-test-uN58T3rI.js +0 -117
- package/bundled-test-harness/assets/open-workspace-test-DXVsvBFJ.js +0 -48
- package/bundled-test-harness/assets/operator-mode-acceptance-test-BxIq2xSS.js +0 -1044
- package/bundled-test-harness/assets/operator-mode-card-catalog-test-xFYx9_ng.js +0 -989
- package/bundled-test-harness/assets/operator-mode-links-test-qhXWmz-S.js +0 -797
- package/bundled-test-harness/assets/operator-mode-state-service-test-BdA_uvaY.js +0 -122
- package/bundled-test-harness/assets/operator-mode-test-D3EyTwq3.js +0 -617
- package/bundled-test-harness/assets/operator-mode-ui-test-CSrk6Q0A.js +0 -985
- package/bundled-test-harness/assets/ordinal-DO1mUmjg.js +0 -85
- package/bundled-test-harness/assets/overlay-menu-items-test-CuqqLsQT.js +0 -316
- package/bundled-test-harness/assets/packet-YPE3B663--JkMNy78.js +0 -3
- package/bundled-test-harness/assets/panel-C2rtbx32.js +0 -3371
- package/bundled-test-harness/assets/past-sessions-test-B9SCbbXz.js +0 -316
- package/bundled-test-harness/assets/patch-code-test-CcFr9pDb.js +0 -203
- package/bundled-test-harness/assets/patch-fields-test-BW1gzcJM.js +0 -992
- package/bundled-test-harness/assets/patch-instance-test-DKqA9gQ6.js +0 -287
- package/bundled-test-harness/assets/persist-module-inspector-view-test-D1eKBUkt.js +0 -62
- package/bundled-test-harness/assets/phone-number-field-test-D1is5RWv.js +0 -72
- package/bundled-test-harness/assets/pie-LRSECV5Y-BDVv8Wdy.js +0 -3
- package/bundled-test-harness/assets/pieDiagram-4H26LBE5-CSYI-nMz.js +0 -253
- package/bundled-test-harness/assets/plan-install-test-DB-PrjPR.js +0 -417
- package/bundled-test-harness/assets/playground-B0iQV7dU.js +0 -57
- package/bundled-test-harness/assets/png-image-def-test-DnOsJGs6.js +0 -222
- package/bundled-test-harness/assets/prerender-file-extract-test-DhOLozj2.js +0 -176
- package/bundled-test-harness/assets/prerender-html-test-DKVhQZA9.js +0 -615
- package/bundled-test-harness/assets/prerender-meta-test-CnRNyqSz.js +0 -388
- package/bundled-test-harness/assets/prerender-module-test-D163QcrZ.js +0 -195
- package/bundled-test-harness/assets/prerendered-card-search-test-DX-8yabJ.js +0 -708
- package/bundled-test-harness/assets/preview-format-test-H7bnpdlC.js +0 -103
- package/bundled-test-harness/assets/preview-test-B7u6uWJR.js +0 -455
- package/bundled-test-harness/assets/qs-test-COb0mre6.js +0 -36
- package/bundled-test-harness/assets/quadrantDiagram-W4KKPZXB-2Y2ben29.js +0 -2324
- package/bundled-test-harness/assets/query-field-barrier-test-Cypj-MhK.js +0 -118
- package/bundled-test-harness/assets/query-field-error-sentinel-test-Dnqn8TdN.js +0 -202
- package/bundled-test-harness/assets/query-field-normalization-test-B7D8SHBP.js +0 -271
- package/bundled-test-harness/assets/query-field-schema-test-DIYY3-c8.js +0 -231
- package/bundled-test-harness/assets/query-fields-test-k-VBF9PE.js +0 -535
- package/bundled-test-harness/assets/queue-test-B_74vXZE.js +0 -216
- package/bundled-test-harness/assets/radar-GUYGQ44K-Cn2A0VBR.js +0 -3
- package/bundled-test-harness/assets/read-card-for-ai-assistant-test-SyL9F_La.js +0 -91
- package/bundled-test-harness/assets/read-file-for-ai-assistant-test-nLPp49U2.js +0 -45
- package/bundled-test-harness/assets/read-source-test-DBELJkhN.js +0 -67
- package/bundled-test-harness/assets/read-text-file-test-CP1JuWlX.js +0 -124
- package/bundled-test-harness/assets/realm-Dr4iygv_.js +0 -884
- package/bundled-test-harness/assets/realm-field-test-Cice2mYk.js +0 -101
- package/bundled-test-harness/assets/realm-index-card-id-test-BzpozdWc.js +0 -18
- package/bundled-test-harness/assets/realm-indexing-test-C0YSXziR.js +0 -4018
- package/bundled-test-harness/assets/realm-paths-test-DV_g07rF.js +0 -33
- package/bundled-test-harness/assets/realm-querying-test-B526abM0.js +0 -1062
- package/bundled-test-harness/assets/realm-test-D8UN5X-w.js +0 -2409
- package/bundled-test-harness/assets/reasoning-test-ClIOvdkX.js +0 -234
- package/bundled-test-harness/assets/recent-files-test-C2J_dJUD.js +0 -449
- package/bundled-test-harness/assets/reindex-realm-test-DMphy1g6.js +0 -119
- package/bundled-test-harness/assets/relationship-loading-state-test-BWrZdLlZ.js +0 -289
- package/bundled-test-harness/assets/render-component-BII_KnyK.js +0 -2
- package/bundled-test-harness/assets/render-error-test-BUAJJlUi.js +0 -22
- package/bundled-test-harness/assets/render-service-test-BKkCjErY.js +0 -87
- package/bundled-test-harness/assets/render-timer-stub-test-TUDMWJ8v.js +0 -84
- package/bundled-test-harness/assets/rendered-markdown-ColekGTF.js +0 -211
- package/bundled-test-harness/assets/rendered-markdown-test-B4CWIo02.js +0 -360
- package/bundled-test-harness/assets/requirementDiagram-4Y6WPE33-CTICatxk.js +0 -2550
- package/bundled-test-harness/assets/rich-markdown-field-test-B5u6D3Nk.js +0 -806
- package/bundled-test-harness/assets/room-message-test-0eJSqQfu.js +0 -171
- package/bundled-test-harness/assets/rust-crypto-B0m3j_yZ.js +0 -16141
- package/bundled-test-harness/assets/sanitize-module-list-test-rH6OqjKh.js +0 -68
- package/bundled-test-harness/assets/sankeyDiagram-5OEKKPKP-hBIg6-LP.js +0 -1357
- package/bundled-test-harness/assets/schema-editor-test-DH4MLFCD.js +0 -784
- package/bundled-test-harness/assets/schema-generation-test-BZMkX7VA.js +0 -28
- package/bundled-test-harness/assets/scrolling-test-CFTyLG8X.js +0 -292
- package/bundled-test-harness/assets/search-and-choose-test-CcbVyp4c.js +0 -156
- package/bundled-test-harness/assets/search-cache-key-test-BYt46iNT.js +0 -79
- package/bundled-test-harness/assets/search-command-test-BRIJPr54.js +0 -135
- package/bundled-test-harness/assets/search-correlation-id-test-B298Tfux.js +0 -101
- package/bundled-test-harness/assets/search-data-test-DHV2Fd4S.js +0 -243
- package/bundled-test-harness/assets/search-google-images-test-CNrazllP.js +0 -168
- package/bundled-test-harness/assets/search-in-flight-key-test-Dy3bU2c1.js +0 -79
- package/bundled-test-harness/assets/search-test-DL1-gD-G.js +0 -847
- package/bundled-test-harness/assets/send-ai-assistant-message-test-CyEkQ5pD.js +0 -52
- package/bundled-test-harness/assets/send-bot-trigger-event-test-CAsK28m-.js +0 -56
- package/bundled-test-harness/assets/send-request-via-proxy-test-DpMlRvPv.js +0 -333
- package/bundled-test-harness/assets/sending-test-BOeGYcTU.js +0 -317
- package/bundled-test-harness/assets/sequenceDiagram-3UESZ5HK-DQMiI040.js +0 -5551
- package/bundled-test-harness/assets/serialization-test-gY2QQVxS.js +0 -8283
- package/bundled-test-harness/assets/set-user-system-card-test-BE3y5GNK.js +0 -59
- package/bundled-test-harness/assets/setup-B8O9JQKq.js +0 -769
- package/bundled-test-harness/assets/setup-BMqGUBDK.js +0 -2
- package/bundled-test-harness/assets/show-card-test-BfJNnWMy.js +0 -362
- package/bundled-test-harness/assets/skills-test-CqhnZxBi.js +0 -568
- package/bundled-test-harness/assets/spec-test-BUKNn_1q.js +0 -1012
- package/bundled-test-harness/assets/stateDiagram-AJRCARHV-BoOij2yt.js +0 -363
- package/bundled-test-harness/assets/stateDiagram-v2-BHNVJYJU-Dosil5p2.js +0 -29
- package/bundled-test-harness/assets/store-add-test-BR1M-IDR.js +0 -52
- package/bundled-test-harness/assets/store-test-DaqI-HRh.js +0 -1562
- package/bundled-test-harness/assets/summarize-session-test-BMg54JGF.js +0 -169
- package/bundled-test-harness/assets/svg-image-def-test-xNyIKRPV.js +0 -164
- package/bundled-test-harness/assets/switch-submode-test-BKvpODUD.js +0 -168
- package/bundled-test-harness/assets/test-realm-service-worker-DK4SmTM5.js +0 -73
- package/bundled-test-harness/assets/tests-x4_eRjiT.js +0 -2770
- package/bundled-test-harness/assets/text-file-def-test-CsXiyVfI.js +0 -93
- package/bundled-test-harness/assets/text-input-validator-test-D4s_laO7.js +0 -155
- package/bundled-test-harness/assets/text-suggestion-test-CkLf1xuS.js +0 -339
- package/bundled-test-harness/assets/theme-card-test-D-6L6OfD.js +0 -573
- package/bundled-test-harness/assets/timeline-definition-PNZ67QCA-DD2d81uJ.js +0 -1545
- package/bundled-test-harness/assets/transform-cards-test-CRZF2gqZ.js +0 -341
- package/bundled-test-harness/assets/treeView-BLDUP644-CUm8wuM-.js +0 -3
- package/bundled-test-harness/assets/treemap-LRROVOQU-lbLrY2PE.js +0 -3
- package/bundled-test-harness/assets/ts-file-def-test-CDo6ojCf.js +0 -90
- package/bundled-test-harness/assets/tsMode-BPQoRibc.js +0 -968
- package/bundled-test-harness/assets/typescript-BaU6yDhK.js +0 -2
- package/bundled-test-harness/assets/update-room-skills-test-BnSgVFwT.js +0 -197
- package/bundled-test-harness/assets/url-test-CK-HB0qu.js +0 -103
- package/bundled-test-harness/assets/use-ai-assistant-test-BuJXEP8H.js +0 -330
- package/bundled-test-harness/assets/validate-realm-test-Cx7MOtS8.js +0 -53
- package/bundled-test-harness/assets/vennDiagram-CIIHVFJN-DtXtzGwZ.js +0 -2833
- package/bundled-test-harness/assets/wardley-L42UT6IY-D8aCp_Ox.js +0 -3
- package/bundled-test-harness/assets/wardleyDiagram-YWT4CUSO-D-73g3bB.js +0 -872
- package/bundled-test-harness/assets/wav-audio-def-test-DIo2GzQL.js +0 -155
- package/bundled-test-harness/assets/webp-image-def-test-BQsV0_De.js +0 -225
- package/bundled-test-harness/assets/workspace-chooser-delete-test-peDXmnQf.js +0 -189
- package/bundled-test-harness/assets/workspace-chooser-test-DS2RtTEF.js +0 -235
- package/bundled-test-harness/assets/workspace-delete-multiple-test-DTbjRSzN.js +0 -213
- package/bundled-test-harness/assets/workspace-delete-summary-test-B--ink4m.js +0 -63
- package/bundled-test-harness/assets/write-binary-file-test-A3TQ5lFn.js +0 -100
- package/bundled-test-harness/assets/write-text-file-test-D_rjNDsT.js +0 -172
- package/bundled-test-harness/assets/xychartDiagram-2RQKCTM6-D1aoqDp-.js +0 -2551
- /package/bundled-test-harness/assets/{abap-CLdVBGqB.js → abap-FZAuBTMl.js} +0 -0
- /package/bundled-test-harness/assets/{apex-DV8eHjgQ.js → apex-CAO3qFTc.js} +0 -0
- /package/bundled-test-harness/assets/{array-DsDWWqmW.js → array-CRfHnEm4.js} +0 -0
- /package/bundled-test-harness/assets/{azcli-C4pZYsiJ.js → azcli-Bnu7jG0Y.js} +0 -0
- /package/bundled-test-harness/assets/{bat-DBoaeFpB.js → bat-DdE54Pqq.js} +0 -0
- /package/bundled-test-harness/assets/{bicep-VlrJhbeK.js → bicep-Dp4vFp3K.js} +0 -0
- /package/bundled-test-harness/assets/{cameligo-jyzrvLUm.js → cameligo-Cym4x98m.js} +0 -0
- /package/bundled-test-harness/assets/{chunk-NNHCCRGN-Be15HUz2.js → chunk-NNHCCRGN-PWOfDYpb.js} +0 -0
- /package/bundled-test-harness/assets/{clojure-bzahmEtz.js → clojure-B47IJ25u.js} +0 -0
- /package/bundled-test-harness/assets/{codemirror-context-BauLYUNt.js → codemirror-context-oJy03XqC.js} +0 -0
- /package/bundled-test-harness/assets/{coffee-CMADdzOH.js → coffee-CZlkBXT8.js} +0 -0
- /package/bundled-test-harness/assets/{cpp-CEJwzcLE.js → cpp-mX4KaA7p.js} +0 -0
- /package/bundled-test-harness/assets/{csharp-XYqm0UE0.js → csharp-C-OeDGwk.js} +0 -0
- /package/bundled-test-harness/assets/{csp-82fNWQc2.js → csp-AS2OEE8R.js} +0 -0
- /package/bundled-test-harness/assets/{css-B5b0ooFS.js → css-C-TQxhWe.js} +0 -0
- /package/bundled-test-harness/assets/{cssMode-DTKuqAkO.js → cssMode-C87GnEsk.js} +0 -0
- /package/bundled-test-harness/assets/{cypher-Df9GkdDY.js → cypher-T6F_0eIM.js} +0 -0
- /package/bundled-test-harness/assets/{cytoscape.esm-D0iwZ9Jj.js → cytoscape.esm-Bc2V-MhP.js} +0 -0
- /package/bundled-test-harness/assets/{dart-C4JY9dMc.js → dart-DzVesk0n.js} +0 -0
- /package/bundled-test-harness/assets/{defaultLocale-BtLxQtxy.js → defaultLocale-CAoL4lzt.js} +0 -0
- /package/bundled-test-harness/assets/{dist-D-PuK2H3.js → dist-BZ5MfZEJ.js} +0 -0
- /package/bundled-test-harness/assets/{dockerfile-Ck0tNttO.js → dockerfile-BH0_bQxC.js} +0 -0
- /package/bundled-test-harness/assets/{ecl-BpeXqJR_.js → ecl-KIxjxrJo.js} +0 -0
- /package/bundled-test-harness/assets/{elixir-HmBzrXaX.js → elixir-CPPdtCW1.js} +0 -0
- /package/bundled-test-harness/assets/{flow9-DhsfsDhH.js → flow9-Dxho7Ldf.js} +0 -0
- /package/bundled-test-harness/assets/{freemarker2-D3Yd6nGl.js → freemarker2-DP1aOr3_.js} +0 -0
- /package/bundled-test-harness/assets/{fsharp-D56OprHc.js → fsharp-ozN53Joe.js} +0 -0
- /package/bundled-test-harness/assets/{go-BITsFLfX.js → go-DPj6Rbqe.js} +0 -0
- /package/bundled-test-harness/assets/{graphlib-qkaQhadO.js → graphlib-DOITgaas.js} +0 -0
- /package/bundled-test-harness/assets/{graphql-CJJVsEX1.js → graphql-C8_-AnBG.js} +0 -0
- /package/bundled-test-harness/assets/{handlebars-Dvw6QbL7.js → handlebars-B2gYBZpU.js} +0 -0
- /package/bundled-test-harness/assets/{hcl-DSTZcJuq.js → hcl-r3d7BhXB.js} +0 -0
- /package/bundled-test-harness/assets/{helpers-D_JZYUOQ.js → helpers-CItTycq2.js} +0 -0
- /package/bundled-test-harness/assets/{html-Bik3qLmc.js → html-DhN1Nxr0.js} +0 -0
- /package/bundled-test-harness/assets/{htmlMode-DPCaR3Ab.js → htmlMode-BnBg5hCh.js} +0 -0
- /package/bundled-test-harness/assets/{ini-li-kC8ZU.js → ini-CzzRigmS.js} +0 -0
- /package/bundled-test-harness/assets/{init-Bq7IGMcH.js → init-Bd2YUhsG.js} +0 -0
- /package/bundled-test-harness/assets/{java-CETpuNN7.js → java-BgeDsIoV.js} +0 -0
- /package/bundled-test-harness/assets/{jsonMode-CZ3hOG-W.js → jsonMode-sRb0gsB8.js} +0 -0
- /package/bundled-test-harness/assets/{julia-hgihs1aN.js → julia-u3K1H5Ts.js} +0 -0
- /package/bundled-test-harness/assets/{katex-DqhsSYO4.js → katex-CHY7BUZt.js} +0 -0
- /package/bundled-test-harness/assets/{kotlin-CKfyb82K.js → kotlin-DfqmlJ10.js} +0 -0
- /package/bundled-test-harness/assets/{less-xB5yXbw8.js → less-CSzH7DPY.js} +0 -0
- /package/bundled-test-harness/assets/{lexon-BLwrXVrI.js → lexon-DwPTpxXt.js} +0 -0
- /package/bundled-test-harness/assets/{liquid-Bf2lpknJ.js → liquid-95J9g5Vk.js} +0 -0
- /package/bundled-test-harness/assets/{lua-Ch5i3IrF.js → lua-CGw6zbeh.js} +0 -0
- /package/bundled-test-harness/assets/{m3-D5tNlhaF.js → m3-BfgwloGF.js} +0 -0
- /package/bundled-test-harness/assets/{markdown-Dzc9uMky.js → markdown-RZRK7Mc9.js} +0 -0
- /package/bundled-test-harness/assets/{mdx-xsI4TJrf.js → mdx-BYD-W2sn.js} +0 -0
- /package/bundled-test-harness/assets/{mips-CmdzHkQm.js → mips-DAySN5Lp.js} +0 -0
- /package/bundled-test-harness/assets/{msdax-CAZvxB9E.js → msdax-Cy0COjTJ.js} +0 -0
- /package/bundled-test-harness/assets/{mysql-CyVS-z5H.js → mysql-CfGw9jyw.js} +0 -0
- /package/bundled-test-harness/assets/{objective-c-CCG8cTc_.js → objective-c-B4uU-8T-.js} +0 -0
- /package/bundled-test-harness/assets/{pascal-c8B45FOC.js → pascal-CGDuZzXi.js} +0 -0
- /package/bundled-test-harness/assets/{pascaligo-CCqwSqBv.js → pascaligo-eg02k4VJ.js} +0 -0
- /package/bundled-test-harness/assets/{path-CsS38UoK.js → path-Dxiz9G2t.js} +0 -0
- /package/bundled-test-harness/assets/{perl-JUICYbO2.js → perl-BiT-JJJw.js} +0 -0
- /package/bundled-test-harness/assets/{pgsql-aNRiL0Cg.js → pgsql-DAMjrVBF.js} +0 -0
- /package/bundled-test-harness/assets/{php-B0YZj_Vw.js → php-kOSUYQyc.js} +0 -0
- /package/bundled-test-harness/assets/{pla-D3Zb3KCn.js → pla-BShYV-HC.js} +0 -0
- /package/bundled-test-harness/assets/{postiats-ks1KABlA.js → postiats-9Xamd4W2.js} +0 -0
- /package/bundled-test-harness/assets/{powerquery-D35K_osc.js → powerquery-l2Nw525Q.js} +0 -0
- /package/bundled-test-harness/assets/{powershell-DXQo6KTk.js → powershell-B5rdEn86.js} +0 -0
- /package/bundled-test-harness/assets/{protobuf-CFDvn49_.js → protobuf-DjFcruCV.js} +0 -0
- /package/bundled-test-harness/assets/{pug-CGdWzJm1.js → pug-d79Nz4-Z.js} +0 -0
- /package/bundled-test-harness/assets/{python-BHLYjYlP.js → python-d8oxFZIM.js} +0 -0
- /package/bundled-test-harness/assets/{qsharp-BIq3i63T.js → qsharp-CeTlfxZW.js} +0 -0
- /package/bundled-test-harness/assets/{qunit-2hoQyeAZ.js → qunit-Cqwmt9Vl.js} +0 -0
- /package/bundled-test-harness/assets/{r-CBvzvDSA.js → r-BOu7JTro.js} +0 -0
- /package/bundled-test-harness/assets/{razor-JQ0RiIvo.js → razor-ZatoG_Is.js} +0 -0
- /package/bundled-test-harness/assets/{recent-files-cards-BQMviQb1.js → recent-files-cards-C3vIjaKb.js} +0 -0
- /package/bundled-test-harness/assets/{redis-BmSHTqTU.js → redis-DdXYPyQE.js} +0 -0
- /package/bundled-test-harness/assets/{redshift-B1NmQEH7.js → redshift-DswnW-YX.js} +0 -0
- /package/bundled-test-harness/assets/{render-component-g_fhz2dX.js → render-component-Bs21y6iv.js} +0 -0
- /package/bundled-test-harness/assets/{restructuredtext-Br9BtTbk.js → restructuredtext-C75vUmvX.js} +0 -0
- /package/bundled-test-harness/assets/{rough.esm-D8VnzNsL.js → rough.esm-B83ARgx6.js} +0 -0
- /package/bundled-test-harness/assets/{ruby-D9_-y1I3.js → ruby-D77950a-.js} +0 -0
- /package/bundled-test-harness/assets/{rust-1Jjr1EOs.js → rust-C_G4PKsG.js} +0 -0
- /package/bundled-test-harness/assets/{sb-X2JE4zEr.js → sb-Cz3P8_Gp.js} +0 -0
- /package/bundled-test-harness/assets/{scala-qFJERKkR.js → scala-DYqUg04P.js} +0 -0
- /package/bundled-test-harness/assets/{scheme-D-WJPStO.js → scheme-B31XEGu5.js} +0 -0
- /package/bundled-test-harness/assets/{scss-DysfZiXA.js → scss-CtvB8On5.js} +0 -0
- /package/bundled-test-harness/assets/{shell-C0Iu3NNJ.js → shell-C2QqpcPN.js} +0 -0
- /package/bundled-test-harness/assets/{solidity-Bato3Qrk.js → solidity-FHrhZFd-.js} +0 -0
- /package/bundled-test-harness/assets/{sophia-DI0cKdK8.js → sophia-Cxv5FOXb.js} +0 -0
- /package/bundled-test-harness/assets/{sparql-BTJMtwoD.js → sparql-CgGkGeQB.js} +0 -0
- /package/bundled-test-harness/assets/{sql-R6uHqFYU.js → sql-S6Dos2P0.js} +0 -0
- /package/bundled-test-harness/assets/{src-CdPyB7gY.js → src-CvuaVSsl.js} +0 -0
- /package/bundled-test-harness/assets/{st-CoyBvq37.js → st-Bfa7LAWp.js} +0 -0
- /package/bundled-test-harness/assets/{swift-Bj-haAlF.js → swift-BQD5Ef-A.js} +0 -0
- /package/bundled-test-harness/assets/{systemverilog-B-x1NEFI.js → systemverilog-DaNkPux4.js} +0 -0
- /package/bundled-test-harness/assets/{tcl-DAUdSQgz.js → tcl-gOPgCDyb.js} +0 -0
- /package/bundled-test-harness/assets/{test-support-BHjxBpDK.js → test-support-BEQX5x9U.js} +0 -0
- /package/bundled-test-harness/assets/{test-support-yKvYEh-u.js → test-support-BL4XKobD.js} +0 -0
- /package/bundled-test-harness/assets/{twig-B0sJ-GzS.js → twig-Bk4gPn5b.js} +0 -0
- /package/bundled-test-harness/assets/{typescript-DTMIM5Gl.js → typescript-pPYlxWzr.js} +0 -0
- /package/bundled-test-harness/assets/{typespec-6yo9VQxY.js → typespec-D9Zz743B.js} +0 -0
- /package/bundled-test-harness/assets/{vb-Bh2IfdtJ.js → vb-ziqHIsJV.js} +0 -0
- /package/bundled-test-harness/assets/{view-card-demo-U_AOj-RK.js → view-card-demo-CSIVYD3T.js} +0 -0
- /package/bundled-test-harness/assets/{wgsl-DsvJnCCt.js → wgsl-BXiwkiJL.js} +0 -0
- /package/bundled-test-harness/assets/{xml-CisPXcjD.js → xml-a_tUOik-.js} +0 -0
- /package/bundled-test-harness/assets/{yaml-DkHUoYI5.js → yaml-B3H8LDzK.js} +0 -0
|
@@ -0,0 +1,926 @@
|
|
|
1
|
+
import { s as __toESM } from "./chunk-CGdGNDIi.js";
|
|
2
|
+
import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime-CYyqkz5q-z3Y1hsJm.js";
|
|
3
|
+
import { En as APP_BOXEL_HAS_CONTINUATION_CONTENT_KEY, Mn as APP_BOXEL_REASONING_CONTENT_KEY, Nn as APP_BOXEL_RELOAD_BILLING_DATA_KEY, On as APP_BOXEL_MESSAGE_MSGTYPE, Zn as testRealmURL, vi as baseRealm, wn as APP_BOXEL_CONTINUATION_OF_CONTENT_KEY, yn as APP_BOXEL_COMMAND_REQUESTS_KEY } from "./runtime-common-C7uLt5dN.js";
|
|
4
|
+
import { d as format, n as subMinutes } from "./esm-CCOu76Mh.js";
|
|
5
|
+
import { $n as setComponentTemplate } from "./service-DJ87xpDt.js";
|
|
6
|
+
import { V as templateFactory } from "./index-DaCZcoCY-D2gI_aMw.js";
|
|
7
|
+
import { o as Component } from "./dist-CXaz7pMY.js";
|
|
8
|
+
import "./template-D3TMIrc1.js";
|
|
9
|
+
import "./template-factory-DMEv2kVd.js";
|
|
10
|
+
import { t as OperatorModeContainer } from "./container-C8gu0I0Q.js";
|
|
11
|
+
import { A as settled, I as waitUntil, a as find, d as click, l as triggerEvent, o as waitFor, s as fillIn } from "./dist-D1U_uSwt.js";
|
|
12
|
+
import { t as require_qunit } from "./qunit-Cqwmt9Vl.js";
|
|
13
|
+
import { r as getService } from "./dist-CY3T64Hs.js";
|
|
14
|
+
import { A as setupIntegrationTestRealm, E as setMonacoContent, M as setupOnSave, O as setupCardLogs, P as setupRealmServerEndpoints, b as getMonacoContent, dt as percySnapshot, et as setupOperatorModeStateCleanup, j as setupLocalIndexing, rt as setupRenderingTest, t as setupMockMatrix, w as realmConfigCardJSON } from "./mock-matrix-BhFWlMMr.js";
|
|
15
|
+
import { G as contains, I as StringField, Q as field, a as CardDef, b as FieldDef, d as Component$1, lt as linksTo, mt as setupBaseRealm, ut as linksToMany } from "./base-realm-DpSTsZxD.js";
|
|
16
|
+
import { n as renderComponent } from "./render-component-Bs21y6iv.js";
|
|
17
|
+
//#region tests/integration/components/ai-assistant-panel/d3d1dea835.css
|
|
18
|
+
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region tests/integration/components/ai-assistant-panel/general-test.gts
|
|
21
|
+
(0, import_qunit.module)("Integration | ai-assistant-panel | general", function(hooks) {
|
|
22
|
+
const realmName = "Operator Mode Workspace";
|
|
23
|
+
let loader;
|
|
24
|
+
let operatorModeStateService;
|
|
25
|
+
let localPersistenceService;
|
|
26
|
+
setupRenderingTest(hooks);
|
|
27
|
+
setupOperatorModeStateCleanup(hooks);
|
|
28
|
+
setupBaseRealm(hooks);
|
|
29
|
+
hooks.beforeEach(function() {
|
|
30
|
+
loader = getService("loader-service").loader;
|
|
31
|
+
});
|
|
32
|
+
setupLocalIndexing(hooks);
|
|
33
|
+
setupOnSave(hooks);
|
|
34
|
+
setupCardLogs(hooks, async () => await loader.import(`${baseRealm.url}card-api`));
|
|
35
|
+
let mockMatrixUtils = setupMockMatrix(hooks, {
|
|
36
|
+
loggedInAs: "@testuser:localhost",
|
|
37
|
+
activeRealms: [testRealmURL],
|
|
38
|
+
autostart: true,
|
|
39
|
+
now: (() => {
|
|
40
|
+
let clock = new Date(2024, 8, 19).getTime();
|
|
41
|
+
return () => clock += 10;
|
|
42
|
+
})()
|
|
43
|
+
});
|
|
44
|
+
let { createAndJoinRoom, simulateRemoteMessage, setReadReceipt, getRoomEvents } = mockMatrixUtils;
|
|
45
|
+
setupRealmServerEndpoints(hooks, [{
|
|
46
|
+
route: "_request-forward",
|
|
47
|
+
getResponse: async (req) => {
|
|
48
|
+
const body = await req.json();
|
|
49
|
+
if (body.url.includes("openrouter.ai/api/v1/chat/completions")) {
|
|
50
|
+
const requestBody = JSON.parse(body.requestBody);
|
|
51
|
+
if (requestBody.messages && requestBody.messages.some((msg) => msg.content && msg.content.includes("Please provide a concise summary"))) {
|
|
52
|
+
const conversationText = requestBody.messages.filter((msg) => msg.role === "user" && !msg.content.includes("Please provide a concise summary")).map((msg) => msg.content).join(" ");
|
|
53
|
+
let summary = "This conversation focused on general discussion.";
|
|
54
|
+
if (conversationText.includes("project")) summary = "This conversation focused on project help, specifically creating a new card for a person with name and age fields. The user requested assistance with card creation and field definition.";
|
|
55
|
+
else if (conversationText.includes("card") && conversationText.includes("file")) summary = "This conversation involved discussing a person card (Hassan) and a pet definition file. The user shared both a Person card and a pet.gts file, then asked for help understanding the structure.";
|
|
56
|
+
else if (conversationText.includes("error")) throw new Error("OpenRouter API error");
|
|
57
|
+
return new Response(JSON.stringify({ choices: [{ message: { content: summary } }] }), {
|
|
58
|
+
status: 200,
|
|
59
|
+
headers: { "Content-Type": "application/json" }
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return new Response(JSON.stringify({
|
|
64
|
+
success: true,
|
|
65
|
+
data: {
|
|
66
|
+
id: 123,
|
|
67
|
+
name: "test"
|
|
68
|
+
}
|
|
69
|
+
}), {
|
|
70
|
+
status: 200,
|
|
71
|
+
headers: { "Content-Type": "application/json" }
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}]);
|
|
75
|
+
let noop = () => {};
|
|
76
|
+
hooks.beforeEach(async function() {
|
|
77
|
+
operatorModeStateService = getService("operator-mode-state-service");
|
|
78
|
+
localPersistenceService = getService("local-persistence-service");
|
|
79
|
+
class Pet extends CardDef {
|
|
80
|
+
static displayName = "Pet";
|
|
81
|
+
static {
|
|
82
|
+
decorateFieldV2(this.prototype, "name", [field], function() {
|
|
83
|
+
return contains(StringField);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
#name = (initializeDeferredDecorator(this, "name"), void 0);
|
|
87
|
+
static {
|
|
88
|
+
decorateFieldV2(this.prototype, "cardTitle", [field], function() {
|
|
89
|
+
return contains(StringField, { computeVia: function() {
|
|
90
|
+
return this.name;
|
|
91
|
+
} });
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
#cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
|
|
95
|
+
static fitted = class Fitted extends Component$1 {
|
|
96
|
+
static {
|
|
97
|
+
setComponentTemplate(templateFactory({
|
|
98
|
+
"id": "HD9p7Ipj",
|
|
99
|
+
"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\"],[]]",
|
|
100
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
101
|
+
"isStrictMode": true
|
|
102
|
+
}), this);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
class Address extends FieldDef {
|
|
107
|
+
static displayName = "Address";
|
|
108
|
+
static {
|
|
109
|
+
decorateFieldV2(this.prototype, "city", [field], function() {
|
|
110
|
+
return contains(StringField);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
#city = (initializeDeferredDecorator(this, "city"), void 0);
|
|
114
|
+
static {
|
|
115
|
+
decorateFieldV2(this.prototype, "country", [field], function() {
|
|
116
|
+
return contains(StringField);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
#country = (initializeDeferredDecorator(this, "country"), void 0);
|
|
120
|
+
static embedded = class Embedded extends Component$1 {
|
|
121
|
+
static {
|
|
122
|
+
setComponentTemplate(templateFactory({
|
|
123
|
+
"id": "BoNoHGg7",
|
|
124
|
+
"block": "[[[10,0],[14,\"data-test-address\",\"\"],[12],[1,\"\\n \"],[10,\"h3\"],[15,\"data-test-city\",[30,1,[\"city\"]]],[12],[1,\"\\n \"],[8,[30,2,[\"city\"]],null,null,null],[1,\"\\n \"],[13],[1,\"\\n \"],[10,\"h3\"],[15,\"data-test-country\",[30,1,[\"country\"]]],[12],[1,\"\\n \"],[8,[30,2,[\"country\"]],null,null,null],[1,\"\\n \"],[13],[1,\"\\n\"],[13]],[\"@model\",\"@fields\"],[]]",
|
|
125
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
126
|
+
"isStrictMode": true
|
|
127
|
+
}), this);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
class Person extends CardDef {
|
|
132
|
+
static displayName = "Person";
|
|
133
|
+
static {
|
|
134
|
+
decorateFieldV2(this.prototype, "firstName", [field], function() {
|
|
135
|
+
return contains(StringField);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
#firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
|
|
139
|
+
static {
|
|
140
|
+
decorateFieldV2(this.prototype, "pet", [field], function() {
|
|
141
|
+
return linksTo(Pet);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
#pet = (initializeDeferredDecorator(this, "pet"), void 0);
|
|
145
|
+
static {
|
|
146
|
+
decorateFieldV2(this.prototype, "friends", [field], function() {
|
|
147
|
+
return linksToMany(Pet);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
#friends = (initializeDeferredDecorator(this, "friends"), void 0);
|
|
151
|
+
static {
|
|
152
|
+
decorateFieldV2(this.prototype, "firstLetterOfTheName", [field], function() {
|
|
153
|
+
return contains(StringField, { computeVia: function() {
|
|
154
|
+
return this.firstName[0];
|
|
155
|
+
} });
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
#firstLetterOfTheName = (initializeDeferredDecorator(this, "firstLetterOfTheName"), void 0);
|
|
159
|
+
static {
|
|
160
|
+
decorateFieldV2(this.prototype, "cardTitle", [field], function() {
|
|
161
|
+
return contains(StringField, { computeVia: function() {
|
|
162
|
+
return this.firstName;
|
|
163
|
+
} });
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
#cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
|
|
167
|
+
static {
|
|
168
|
+
decorateFieldV2(this.prototype, "address", [field], function() {
|
|
169
|
+
return contains(Address);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
#address = (initializeDeferredDecorator(this, "address"), void 0);
|
|
173
|
+
static isolated = class Isolated extends Component$1 {
|
|
174
|
+
static {
|
|
175
|
+
setComponentTemplate(templateFactory({
|
|
176
|
+
"id": "gI+rpdMU",
|
|
177
|
+
"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\"],[10,0],[14,\"data-test-addresses\",\"\"],[12],[1,\"Address: \"],[8,[30,2,[\"address\"]],null,null,null],[13]],[\"@model\",\"@fields\"],[]]",
|
|
178
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
179
|
+
"isStrictMode": true
|
|
180
|
+
}), this);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
let petMango = new Pet({ name: "Mango" });
|
|
185
|
+
await setupIntegrationTestRealm({
|
|
186
|
+
mockMatrixUtils,
|
|
187
|
+
contents: {
|
|
188
|
+
"pet.gts": { Pet },
|
|
189
|
+
"address.gts": { Address },
|
|
190
|
+
"person.gts": { Person },
|
|
191
|
+
"Pet/mango.json": petMango,
|
|
192
|
+
"Person/fadhlan.json": new Person({
|
|
193
|
+
firstName: "Fadhlan",
|
|
194
|
+
address: new Address({
|
|
195
|
+
city: "Bandung",
|
|
196
|
+
country: "Indonesia"
|
|
197
|
+
}),
|
|
198
|
+
pet: petMango
|
|
199
|
+
}),
|
|
200
|
+
"example-file.gts": `
|
|
201
|
+
@field name = contains(StringField);
|
|
202
|
+
`,
|
|
203
|
+
"realm.json": realmConfigCardJSON({ name: realmName })
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
function setCardInOperatorModeState(cardURL, format = "isolated") {
|
|
208
|
+
operatorModeStateService.restore({ stacks: cardURL ? [[{
|
|
209
|
+
id: cardURL,
|
|
210
|
+
format
|
|
211
|
+
}]] : [[]] });
|
|
212
|
+
}
|
|
213
|
+
async function openAiAssistant() {
|
|
214
|
+
await waitFor("[data-test-open-ai-assistant]");
|
|
215
|
+
await click("[data-test-open-ai-assistant]");
|
|
216
|
+
await waitFor("[data-test-room-settled]");
|
|
217
|
+
let roomId = document.querySelector("[data-test-room]")?.getAttribute("data-test-room");
|
|
218
|
+
if (!roomId) throw new Error("Expected a room ID");
|
|
219
|
+
return roomId;
|
|
220
|
+
}
|
|
221
|
+
async function renderAiAssistantPanel(id) {
|
|
222
|
+
setCardInOperatorModeState(id);
|
|
223
|
+
await renderComponent(class TestDriver extends Component {
|
|
224
|
+
static {
|
|
225
|
+
setComponentTemplate(templateFactory({
|
|
226
|
+
"id": "sKs3V6eX",
|
|
227
|
+
"block": "[[[8,[32,0],null,[[\"@onClose\"],[[32,1]]],null]],[],[]]",
|
|
228
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
229
|
+
"scope": () => [OperatorModeContainer, noop],
|
|
230
|
+
"isStrictMode": true
|
|
231
|
+
}), this);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
return await openAiAssistant();
|
|
235
|
+
}
|
|
236
|
+
(0, import_qunit.test)("when opening ai panel it opens the most recent room", async function(assert) {
|
|
237
|
+
try {
|
|
238
|
+
setCardInOperatorModeState(`${testRealmURL}Pet/mango`);
|
|
239
|
+
await renderComponent(class TestDriver extends Component {
|
|
240
|
+
static {
|
|
241
|
+
setComponentTemplate(templateFactory({
|
|
242
|
+
"id": "sKs3V6eX",
|
|
243
|
+
"block": "[[[8,[32,0],null,[[\"@onClose\"],[[32,1]]],null]],[],[]]",
|
|
244
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
245
|
+
"scope": () => [OperatorModeContainer, noop],
|
|
246
|
+
"isStrictMode": true
|
|
247
|
+
}), this);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
createAndJoinRoom({
|
|
251
|
+
sender: "@testuser:localhost",
|
|
252
|
+
name: "test room 0"
|
|
253
|
+
});
|
|
254
|
+
let room1Id = createAndJoinRoom({
|
|
255
|
+
sender: "@testuser:localhost",
|
|
256
|
+
name: "test room 1"
|
|
257
|
+
});
|
|
258
|
+
const room2Id = createAndJoinRoom({
|
|
259
|
+
sender: "@testuser:localhost",
|
|
260
|
+
name: "test room 2"
|
|
261
|
+
});
|
|
262
|
+
await settled();
|
|
263
|
+
await openAiAssistant();
|
|
264
|
+
await waitFor(`[data-room-settled]`);
|
|
265
|
+
assert.dom(`[data-test-room="${room2Id}"]`).exists("test room 2 is the most recently created room and it's opened initially");
|
|
266
|
+
await click("[data-test-past-sessions-button]");
|
|
267
|
+
await click(`[data-test-enter-room="${room1Id}"]`);
|
|
268
|
+
await click("[data-test-close-ai-assistant]");
|
|
269
|
+
await click("[data-test-open-ai-assistant]");
|
|
270
|
+
await waitFor(`[data-room-settled]`);
|
|
271
|
+
assert.dom(`[data-test-room="${room1Id}"]`).exists("test room 1 is the most recently selected room and it's opened initially");
|
|
272
|
+
await click("[data-test-close-ai-assistant]");
|
|
273
|
+
localPersistenceService.setCurrentRoomId("room-id-that-doesn't-exist-and-should-not-break-the-implementation");
|
|
274
|
+
await click("[data-test-open-ai-assistant]");
|
|
275
|
+
await waitFor(`[data-test-room="${room2Id}"]`);
|
|
276
|
+
assert.dom(`[data-test-room="${room2Id}"]`).exists("test room 2 is the most recently created room and it's opened initially");
|
|
277
|
+
} finally {
|
|
278
|
+
localPersistenceService.setCurrentRoomId(void 0);
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
(0, import_qunit.test)("it renders only new/updated messages", async function(assert) {
|
|
282
|
+
let roomId = await renderAiAssistantPanel();
|
|
283
|
+
simulateRemoteMessage(roomId, "@testuser:localhost", {
|
|
284
|
+
body: `question #0`,
|
|
285
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
286
|
+
format: "org.matrix.custom.html",
|
|
287
|
+
isStreamingFinished: true
|
|
288
|
+
});
|
|
289
|
+
let messageEventId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
290
|
+
body: `Thinking...`,
|
|
291
|
+
msgtype: "m.text",
|
|
292
|
+
format: "org.matrix.custom.html",
|
|
293
|
+
isStreamingFinished: false
|
|
294
|
+
});
|
|
295
|
+
let commandEventId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
296
|
+
body: `Thinking...`,
|
|
297
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
298
|
+
format: "org.matrix.custom.html",
|
|
299
|
+
isStreamingFinished: true
|
|
300
|
+
});
|
|
301
|
+
setReadReceipt(roomId, messageEventId, "@testuser:localhost");
|
|
302
|
+
setReadReceipt(roomId, commandEventId, "@testuser:localhost");
|
|
303
|
+
await renderComponent(class TestDriver extends Component {
|
|
304
|
+
static {
|
|
305
|
+
setComponentTemplate(templateFactory({
|
|
306
|
+
"id": "sKs3V6eX",
|
|
307
|
+
"block": "[[[8,[32,0],null,[[\"@onClose\"],[[32,1]]],null]],[],[]]",
|
|
308
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
309
|
+
"scope": () => [OperatorModeContainer, noop],
|
|
310
|
+
"isStrictMode": true
|
|
311
|
+
}), this);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
await waitFor("[data-test-message-idx=\"1\"]");
|
|
315
|
+
let instanceIds = Array.from(document.querySelectorAll("[data-test-boxel-message-instance-id]")).map((el) => el.getAttribute("data-test-boxel-message-instance-id"));
|
|
316
|
+
assert.strictEqual(instanceIds.length, 3);
|
|
317
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
318
|
+
body: `answer #0`,
|
|
319
|
+
msgtype: "m.text",
|
|
320
|
+
format: "org.matrix.custom.html",
|
|
321
|
+
isStreamingFinished: true,
|
|
322
|
+
"m.relates_to": {
|
|
323
|
+
event_id: messageEventId,
|
|
324
|
+
rel_type: "m.replace"
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
328
|
+
body: "Changing first name to Evie",
|
|
329
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
330
|
+
format: "org.matrix.custom.html",
|
|
331
|
+
"m.relates_to": {
|
|
332
|
+
event_id: commandEventId,
|
|
333
|
+
rel_type: "m.replace"
|
|
334
|
+
},
|
|
335
|
+
isStreamingFinished: true,
|
|
336
|
+
[APP_BOXEL_COMMAND_REQUESTS_KEY]: [{
|
|
337
|
+
name: "patchCardInstance",
|
|
338
|
+
arguments: { attributes: {
|
|
339
|
+
cardId: `${testRealmURL}Person/fadhlan`,
|
|
340
|
+
patch: { attributes: { firstName: "Evie" } }
|
|
341
|
+
} }
|
|
342
|
+
}]
|
|
343
|
+
});
|
|
344
|
+
let newInstanceIds = Array.from(document.querySelectorAll("[data-test-boxel-message-instance-id]")).map((el) => el.getAttribute("data-test-boxel-message-instance-id"));
|
|
345
|
+
assert.deepEqual(newInstanceIds, instanceIds);
|
|
346
|
+
});
|
|
347
|
+
(0, import_qunit.test)("it converts decorative star bullets into markdown lists", async function(assert) {
|
|
348
|
+
let roomId = await renderAiAssistantPanel();
|
|
349
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
350
|
+
body: "Here are 4 points for you:\n\n★ First point - You're currently at the workspace chooser, ready to select from your available workspaces\n★ Second point - You have 7 personal workspaces and 3 catalog workspaces available to explore\n★ Third point - To get started, you can navigate to any workspace and open a card to begin working\n★ Fourth point - I'm here to help you with card creation, editing, code generation, or any questions you have about Boxel\n\nIs there anything specific you'd like to do in one of your workspaces?",
|
|
351
|
+
msgtype: "m.text"
|
|
352
|
+
});
|
|
353
|
+
await waitFor(`[data-test-room="${roomId}"] [data-test-message-idx="0"] ul`);
|
|
354
|
+
assert.dom("[data-test-message-idx=\"0\"] ul li").exists({ count: 4 });
|
|
355
|
+
assert.dom("[data-test-message-idx=\"0\"] ul li:nth-child(1)").includesText("First point - You're currently at the workspace chooser, ready to select from your available workspaces");
|
|
356
|
+
assert.dom("[data-test-message-idx=\"0\"] ul li:nth-child(2)").includesText("Second point - You have 7 personal workspaces and 3 catalog workspaces available to explore");
|
|
357
|
+
assert.dom("[data-test-message-idx=\"0\"] ul li:nth-child(3)").includesText("Third point - To get started, you can navigate to any workspace and open a card to begin working");
|
|
358
|
+
assert.dom("[data-test-message-idx=\"0\"] ul li:nth-child(4)").includesText("Fourth point - I'm here to help you with card creation, editing, code generation, or any questions you have about Boxel");
|
|
359
|
+
assert.dom("[data-test-message-idx=\"0\"] ul li:nth-child(1)").includesText("★ First point");
|
|
360
|
+
});
|
|
361
|
+
(0, import_qunit.test)("it converts various decorative bullets in a single message", async function(assert) {
|
|
362
|
+
let roomId = await renderAiAssistantPanel();
|
|
363
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
364
|
+
body: "Decorative bullets:\n\n★ First milestone complete\n✅ Review workspace permissions\n➤ Share it with your team once ready\n❖ Investigate matrix connection\n◉ Update host fixtures",
|
|
365
|
+
msgtype: "m.text"
|
|
366
|
+
});
|
|
367
|
+
await waitFor(`[data-test-room="${roomId}"] [data-test-message-idx="0"] ul`);
|
|
368
|
+
let expectedItems = [
|
|
369
|
+
"★ First milestone complete",
|
|
370
|
+
"✅ Review workspace permissions",
|
|
371
|
+
"➤ Share it with your team once ready",
|
|
372
|
+
"❖ Investigate matrix connection",
|
|
373
|
+
"◉ Update host fixtures"
|
|
374
|
+
];
|
|
375
|
+
assert.dom("[data-test-message-idx=\"0\"] ul li").exists({ count: expectedItems.length });
|
|
376
|
+
expectedItems.forEach((text, idx) => {
|
|
377
|
+
assert.dom(`[data-test-message-idx="0"] ul li:nth-child(${idx + 1})`).includesText(text);
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
(0, import_qunit.test)("it displays the streaming indicator when ai bot message is in progress (streaming words)", async function(assert) {
|
|
381
|
+
let roomId = await renderAiAssistantPanel();
|
|
382
|
+
simulateRemoteMessage(roomId, "@matic:boxel", {
|
|
383
|
+
body: "Say one word.",
|
|
384
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
385
|
+
format: "org.matrix.custom.html"
|
|
386
|
+
});
|
|
387
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
388
|
+
body: "French.",
|
|
389
|
+
msgtype: "m.text",
|
|
390
|
+
format: "org.matrix.custom.html",
|
|
391
|
+
isStreamingFinished: true
|
|
392
|
+
});
|
|
393
|
+
simulateRemoteMessage(roomId, "@matic:boxel", {
|
|
394
|
+
body: "What is a french bulldog?",
|
|
395
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
396
|
+
format: "org.matrix.custom.html"
|
|
397
|
+
});
|
|
398
|
+
let partialEventId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
399
|
+
body: "Thinking...",
|
|
400
|
+
msgtype: "m.text",
|
|
401
|
+
format: "org.matrix.custom.html",
|
|
402
|
+
isStreamingFinished: false
|
|
403
|
+
}, { origin_server_ts: Date.now() });
|
|
404
|
+
let originalEventId = partialEventId;
|
|
405
|
+
await waitFor("[data-test-message-idx=\"3\"]");
|
|
406
|
+
assert.dom("[data-test-message-idx=\"1\"] [data-test-ai-avatar]").doesNotHaveClass("ai-avatar-animated", "Answer to my previous question is not in progress");
|
|
407
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-avatar]").hasClass("ai-avatar-animated", "Answer to my current question is in progress");
|
|
408
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-message-content]").hasText("Thinking...");
|
|
409
|
+
partialEventId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
410
|
+
body: "French bulldog is a",
|
|
411
|
+
msgtype: "m.text",
|
|
412
|
+
format: "org.matrix.custom.html",
|
|
413
|
+
isStreamingFinished: false,
|
|
414
|
+
"m.relates_to": {
|
|
415
|
+
rel_type: "m.replace",
|
|
416
|
+
event_id: originalEventId
|
|
417
|
+
}
|
|
418
|
+
}, { origin_server_ts: Date.now() });
|
|
419
|
+
await waitUntil(() => {
|
|
420
|
+
let el = document.querySelector("[data-test-message-idx=\"3\"] [data-test-ai-message-content]");
|
|
421
|
+
if (el) return el.innerText === "French bulldog is a";
|
|
422
|
+
else return false;
|
|
423
|
+
});
|
|
424
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-avatar]").hasClass("ai-avatar-animated", "Answer to my current question is in progress");
|
|
425
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-message-content]").hasText("French bulldog is a");
|
|
426
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
427
|
+
body: "French bulldog is a French breed",
|
|
428
|
+
msgtype: "m.text",
|
|
429
|
+
format: "org.matrix.custom.html",
|
|
430
|
+
isStreamingFinished: false,
|
|
431
|
+
"m.relates_to": {
|
|
432
|
+
rel_type: "m.replace",
|
|
433
|
+
event_id: originalEventId
|
|
434
|
+
}
|
|
435
|
+
}, { origin_server_ts: Date.now() });
|
|
436
|
+
await waitUntil(() => {
|
|
437
|
+
let el = document.querySelector("[data-test-message-idx=\"3\"] [data-test-ai-message-content]");
|
|
438
|
+
if (el) return el.innerText === "French bulldog is a French breed";
|
|
439
|
+
else return false;
|
|
440
|
+
});
|
|
441
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-avatar]").hasClass("ai-avatar-animated", "Answer to my current question is in progress");
|
|
442
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-message-content]").hasText("French bulldog is a French breed");
|
|
443
|
+
await click("[data-test-past-sessions-button]");
|
|
444
|
+
assert.dom(`[data-test-enter-room='${roomId}']`).includesText("Thinking");
|
|
445
|
+
assert.dom("[data-test-is-streaming]").exists();
|
|
446
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
447
|
+
body: "French bulldog is a French breed of companion dog or toy dog.",
|
|
448
|
+
msgtype: "m.text",
|
|
449
|
+
format: "org.matrix.custom.html",
|
|
450
|
+
isStreamingFinished: true,
|
|
451
|
+
"m.relates_to": {
|
|
452
|
+
rel_type: "m.replace",
|
|
453
|
+
event_id: originalEventId
|
|
454
|
+
}
|
|
455
|
+
}, { origin_server_ts: Date.now() });
|
|
456
|
+
await waitFor("[data-test-message-idx=\"3\"]");
|
|
457
|
+
await waitUntil(() => !document.querySelector(".ai-avatar-animated"));
|
|
458
|
+
assert.dom("[data-test-message-idx=\"1\"] [data-test-ai-avatar]").doesNotHaveClass("ai-avatar-animated", "Answer to my previous question is not in progress");
|
|
459
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-avatar]").doesNotHaveClass("ai-avatar-animated", "Answer to my last question is not in progress");
|
|
460
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-ai-message-content]").hasText("French bulldog is a French breed of companion dog or toy dog.");
|
|
461
|
+
assert.dom(`[data-test-enter-room='${roomId}']`).doesNotContainText("Thinking");
|
|
462
|
+
assert.dom("[data-test-is-streaming]").doesNotExist();
|
|
463
|
+
});
|
|
464
|
+
(0, import_qunit.test)("it can handle an error in a card attached to a matrix message", async function(assert) {
|
|
465
|
+
let roomId = await renderAiAssistantPanel();
|
|
466
|
+
let unreachableCardId = "http://this-is-not-a-real-card.com";
|
|
467
|
+
let canonicalUnreachableCardId = new URL(unreachableCardId).href;
|
|
468
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
469
|
+
body: "card with error",
|
|
470
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
471
|
+
data: JSON.stringify({ attachedCards: [{
|
|
472
|
+
sourceUrl: unreachableCardId,
|
|
473
|
+
url: unreachableCardId,
|
|
474
|
+
contentType: "text/plain"
|
|
475
|
+
}] }),
|
|
476
|
+
isStreamingFinished: true
|
|
477
|
+
});
|
|
478
|
+
await waitFor("[data-test-card-error]");
|
|
479
|
+
assert.dom("[data-test-card-error]").containsText(`This card could not be displayed because it hit a runtime error.`);
|
|
480
|
+
assert.dom(`[data-test-attached-card-error="${canonicalUnreachableCardId}"]`).exists("errored attached cards still render as pills");
|
|
481
|
+
await percySnapshot(assert);
|
|
482
|
+
});
|
|
483
|
+
(0, import_qunit.test)("it can handle an error during room creation", async function(assert) {
|
|
484
|
+
setCardInOperatorModeState();
|
|
485
|
+
await renderComponent(class TestDriver extends Component {
|
|
486
|
+
static {
|
|
487
|
+
setComponentTemplate(templateFactory({
|
|
488
|
+
"id": "vTu/YLO5",
|
|
489
|
+
"block": "[[[8,[32,0],[[24,\"data-scopedcss-ef7fb6dea7-e460861d12\",\"\"]],[[\"@onClose\"],[[32,1]]],null],[1,\"\\n\\n\"],[10,0],[14,0,\"invisible\"],[14,\"data-test-throw-room-error\",\"\"],[14,\"data-scopedcss-ef7fb6dea7-e460861d12\",\"\"],[12],[13],[1,\"\\n\"]],[],[]]",
|
|
490
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
491
|
+
"scope": () => [OperatorModeContainer, noop],
|
|
492
|
+
"isStrictMode": true
|
|
493
|
+
}), this);
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
await waitFor("[data-test-open-ai-assistant]");
|
|
497
|
+
await click("[data-test-open-ai-assistant]");
|
|
498
|
+
await waitFor("[data-test-new-session]");
|
|
499
|
+
assert.dom("[data-test-room-error]").exists();
|
|
500
|
+
assert.dom("[data-test-room]").doesNotExist();
|
|
501
|
+
assert.dom("[data-test-past-sessions-button]").isDisabled();
|
|
502
|
+
await percySnapshot("Integration | ai-assistant-panel | it can handle an error during room creation | error state");
|
|
503
|
+
document.querySelector("[data-test-throw-room-error]")?.remove();
|
|
504
|
+
await click("[data-test-room-error] > button");
|
|
505
|
+
await waitFor("[data-test-room]");
|
|
506
|
+
assert.dom("[data-test-room-error]").doesNotExist();
|
|
507
|
+
assert.dom("[data-test-past-sessions-button]").isEnabled();
|
|
508
|
+
await percySnapshot("Integration | ai-assistant-panel | it can handle an error during room creation | new room state");
|
|
509
|
+
});
|
|
510
|
+
(0, import_qunit.test)("sends read receipts only for bot messages", async function(assert) {
|
|
511
|
+
let roomId = await renderAiAssistantPanel();
|
|
512
|
+
simulateRemoteMessage(roomId, "@testuser:localhost", {
|
|
513
|
+
body: "Say one word.",
|
|
514
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
515
|
+
format: "org.matrix.custom.html"
|
|
516
|
+
});
|
|
517
|
+
await waitFor(`[data-room-settled]`);
|
|
518
|
+
let eventId2 = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
519
|
+
body: "Word.",
|
|
520
|
+
msgtype: "m.text",
|
|
521
|
+
format: "org.matrix.custom.html",
|
|
522
|
+
isStreamingFinished: true
|
|
523
|
+
});
|
|
524
|
+
assert.dom("[data-test-past-sessions-button] [data-test-has-active-sessions]").doesNotExist();
|
|
525
|
+
assert.dom(`[data-test-enter-room='${roomId}'] [data-test-is-streaming]`).doesNotExist();
|
|
526
|
+
let anotherRoomId = createAndJoinRoom({
|
|
527
|
+
sender: "@testuser:localhost",
|
|
528
|
+
name: "Another Room"
|
|
529
|
+
});
|
|
530
|
+
let eventId3 = simulateRemoteMessage(anotherRoomId, "@aibot:localhost", {
|
|
531
|
+
body: "I sent a message from the background.",
|
|
532
|
+
msgtype: "m.text",
|
|
533
|
+
format: "org.matrix.custom.html",
|
|
534
|
+
isStreamingFinished: true
|
|
535
|
+
}, { origin_server_ts: Date.now() });
|
|
536
|
+
await waitFor("[data-test-has-active-sessions]");
|
|
537
|
+
await click("[data-test-past-sessions-button]");
|
|
538
|
+
await click(`[data-test-enter-room="${anotherRoomId}"]`);
|
|
539
|
+
await waitFor("[data-test-message-idx=\"0\"]");
|
|
540
|
+
let matrixService = getService("matrix-service");
|
|
541
|
+
await waitUntil(() => matrixService.currentUserEventReadReceipts.has(eventId2) && matrixService.currentUserEventReadReceipts.has(eventId3));
|
|
542
|
+
assert.deepEqual(Array.from(matrixService.currentUserEventReadReceipts.keys()), [eventId2, eventId3]);
|
|
543
|
+
});
|
|
544
|
+
(0, import_qunit.test)("it offers to buy more credits when balance is low", async function(assert) {
|
|
545
|
+
let roomId = await renderAiAssistantPanel();
|
|
546
|
+
let billingService = getService("billing-service");
|
|
547
|
+
let attributes = {
|
|
548
|
+
creditsAvailableInPlanAllowance: 1,
|
|
549
|
+
extraCreditsAvailableInBalance: 2
|
|
550
|
+
};
|
|
551
|
+
billingService.fetchSubscriptionData = async () => {
|
|
552
|
+
return new Response(JSON.stringify({ data: { attributes } }));
|
|
553
|
+
};
|
|
554
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
555
|
+
body: "You need a minimum of 10 credits to continue using the AI bot. Please upgrade to a larger plan, or top up your account.",
|
|
556
|
+
msgtype: "m.text",
|
|
557
|
+
format: "org.matrix.custom.html",
|
|
558
|
+
isStreamingFinished: true,
|
|
559
|
+
errorMessage: "You need a minimum of 10 credits to continue using the AI bot. Please upgrade to a larger plan, or top up your account."
|
|
560
|
+
});
|
|
561
|
+
await waitFor("[data-test-message-idx=\"0\"]");
|
|
562
|
+
assert.dom("[data-test-alert-action-button=\"Buy More Credits\"]").exists();
|
|
563
|
+
assert.dom("[data-test-credits-added]").doesNotExist();
|
|
564
|
+
await click("[data-test-alert-action-button=\"Buy More Credits\"]");
|
|
565
|
+
assert.dom("[data-test-settings-modal]").exists("Profile Settings modal (which has credit buy links) is open");
|
|
566
|
+
await click("[data-test-close-modal]");
|
|
567
|
+
attributes.extraCreditsAvailableInBalance = 1e3;
|
|
568
|
+
await billingService.loadSubscriptionData();
|
|
569
|
+
await settled();
|
|
570
|
+
assert.dom("[data-test-alert-action-button=\"Retry\"]").exists("After adding credits, 'buy more credits' button is replaced with 'retry'");
|
|
571
|
+
assert.dom("[data-test-credits-added]").exists();
|
|
572
|
+
});
|
|
573
|
+
(0, import_qunit.test)("it reloads billing data for the latest flagged out-of-credits message", async function(assert) {
|
|
574
|
+
let roomId = await renderAiAssistantPanel();
|
|
575
|
+
let billingService = getService("billing-service");
|
|
576
|
+
let requestCount = 0;
|
|
577
|
+
billingService.fetchSubscriptionData = async () => {
|
|
578
|
+
requestCount++;
|
|
579
|
+
return new Response(JSON.stringify({ data: { attributes: requestCount === 1 ? {
|
|
580
|
+
creditsAvailableInPlanAllowance: 1,
|
|
581
|
+
extraCreditsAvailableInBalance: 2
|
|
582
|
+
} : {
|
|
583
|
+
creditsAvailableInPlanAllowance: 1,
|
|
584
|
+
extraCreditsAvailableInBalance: 1e3
|
|
585
|
+
} } }));
|
|
586
|
+
};
|
|
587
|
+
await billingService.loadSubscriptionData();
|
|
588
|
+
assert.strictEqual(billingService.availableCredits, 3);
|
|
589
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
590
|
+
body: "You need a minimum of 10 credits to continue using the AI bot. Please upgrade to a larger plan, or top up your account.",
|
|
591
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
592
|
+
format: "org.matrix.custom.html",
|
|
593
|
+
isStreamingFinished: true,
|
|
594
|
+
errorMessage: "You need a minimum of 10 credits to continue using the AI bot. Please upgrade to a larger plan, or top up your account.",
|
|
595
|
+
[APP_BOXEL_RELOAD_BILLING_DATA_KEY]: true
|
|
596
|
+
});
|
|
597
|
+
await waitUntil(() => requestCount === 2);
|
|
598
|
+
await waitUntil(() => billingService.availableCredits >= 10, { timeout: 2e3 });
|
|
599
|
+
assert.strictEqual(requestCount, 2, "billing data reloads exactly once");
|
|
600
|
+
assert.dom("[data-test-alert-action-button=\"Retry\"]").exists("retry is shown after the reload confirms credits are available");
|
|
601
|
+
assert.dom("[data-test-credits-added]").exists("credits added notice is shown after the reload");
|
|
602
|
+
assert.dom("[data-test-alert-action-button=\"Buy More Credits\"]").doesNotExist();
|
|
603
|
+
});
|
|
604
|
+
(0, import_qunit.test)("it can retry a message when receiving an error from the AI bot", async function(assert) {
|
|
605
|
+
let roomId = await renderAiAssistantPanel();
|
|
606
|
+
simulateRemoteMessage(roomId, "@testuser:localhost", {
|
|
607
|
+
body: "I have a feeling something will go wrong",
|
|
608
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
609
|
+
format: "org.matrix.custom.html"
|
|
610
|
+
});
|
|
611
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
612
|
+
body: "There was an error processing your request, please try again later",
|
|
613
|
+
msgtype: "m.text",
|
|
614
|
+
format: "org.matrix.custom.html",
|
|
615
|
+
isStreamingFinished: true,
|
|
616
|
+
errorMessage: "AI bot error"
|
|
617
|
+
});
|
|
618
|
+
simulateRemoteMessage(roomId, "@testuser:localhost", {
|
|
619
|
+
body: "I have a feeling something will go wrong",
|
|
620
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
621
|
+
format: "org.matrix.custom.html"
|
|
622
|
+
});
|
|
623
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
624
|
+
body: "There was an error processing your request, please try again later",
|
|
625
|
+
msgtype: "m.text",
|
|
626
|
+
format: "org.matrix.custom.html",
|
|
627
|
+
isStreamingFinished: true,
|
|
628
|
+
errorMessage: "AI bot error"
|
|
629
|
+
});
|
|
630
|
+
await waitFor("[data-test-message-idx=\"0\"]");
|
|
631
|
+
assert.dom("[data-test-message-idx=\"1\"]").containsText("There was an error processing your request, please try again later");
|
|
632
|
+
assert.dom("[data-test-message-idx=\"1\"] [data-test-alert-action-button=\"Retry\"]").doesNotExist("Only last errored message has a retry button");
|
|
633
|
+
assert.dom("[data-test-message-idx=\"3\"]").containsText("There was an error processing your request, please try again later");
|
|
634
|
+
assert.dom("[data-test-message-idx=\"3\"] [data-test-alert-action-button=\"Retry\"]").exists("Only last errored message has a retry button");
|
|
635
|
+
assert.dom("[data-test-message-idx=\"4\"]").doesNotExist();
|
|
636
|
+
await click("[data-test-alert-action-button=\"Retry\"]");
|
|
637
|
+
assert.dom("[data-test-message-idx=\"4\"]").exists("Retry message is sent to the AI bot");
|
|
638
|
+
assert.dom("[data-test-message-idx=\"4\"]").containsText("I have a feeling something will go wrong");
|
|
639
|
+
});
|
|
640
|
+
(0, import_qunit.test)("replacement message should use `created` from the oldest message", async function(assert) {
|
|
641
|
+
let roomId = await renderAiAssistantPanel(`${testRealmURL}Person/fadhlan`);
|
|
642
|
+
let firstMessageId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
643
|
+
body: "This is the first message",
|
|
644
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
645
|
+
format: "org.matrix.custom.html"
|
|
646
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 30).getTime() });
|
|
647
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
648
|
+
body: "Second message body",
|
|
649
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
650
|
+
format: "org.matrix.custom.html"
|
|
651
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 31).getTime() });
|
|
652
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
653
|
+
body: "First replacement message body",
|
|
654
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
655
|
+
format: "org.matrix.custom.html",
|
|
656
|
+
["m.relates_to"]: {
|
|
657
|
+
event_id: firstMessageId,
|
|
658
|
+
rel_type: "m.replace"
|
|
659
|
+
}
|
|
660
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 32).getTime() });
|
|
661
|
+
await waitFor("[data-test-message-idx=\"1\"]");
|
|
662
|
+
assert.dom("[data-test-message-idx=\"0\"]").containsText("Wednesday Jan 3, 2024, 12:30 PM First replacement message body");
|
|
663
|
+
assert.dom("[data-test-message-idx=\"1\"]").containsText("Wednesday Jan 3, 2024, 12:31 PM Second message body");
|
|
664
|
+
});
|
|
665
|
+
(0, import_qunit.test)("it displays a toast if there is an activity that was not seen by the user yet", async function(assert) {
|
|
666
|
+
setCardInOperatorModeState();
|
|
667
|
+
await renderComponent(class TestDriver extends Component {
|
|
668
|
+
static {
|
|
669
|
+
setComponentTemplate(templateFactory({
|
|
670
|
+
"id": "sKs3V6eX",
|
|
671
|
+
"block": "[[[8,[32,0],null,[[\"@onClose\"],[[32,1]]],null]],[],[]]",
|
|
672
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/components/ai-assistant-panel/general-test.gts",
|
|
673
|
+
"scope": () => [OperatorModeContainer, noop],
|
|
674
|
+
"isStrictMode": true
|
|
675
|
+
}), this);
|
|
676
|
+
}
|
|
677
|
+
});
|
|
678
|
+
await openAiAssistant();
|
|
679
|
+
await click("[data-test-close-ai-assistant]");
|
|
680
|
+
let anotherRoomId = createAndJoinRoom({
|
|
681
|
+
sender: "@testuser:localhost",
|
|
682
|
+
name: "Another Room"
|
|
683
|
+
});
|
|
684
|
+
simulateRemoteMessage(anotherRoomId, "@aibot:localhost", {
|
|
685
|
+
body: "A message that was sent sixteen minutes ago.",
|
|
686
|
+
msgtype: "m.text",
|
|
687
|
+
format: "org.matrix.custom.html",
|
|
688
|
+
isStreamingFinished: true
|
|
689
|
+
}, { origin_server_ts: subMinutes(/* @__PURE__ */ new Date(), 16).getTime() });
|
|
690
|
+
assert.dom("[data-test-ai-assistant-toast]").exists({ count: 0 });
|
|
691
|
+
let fourteenMinutesAgo = subMinutes(/* @__PURE__ */ new Date(), 14);
|
|
692
|
+
simulateRemoteMessage(anotherRoomId, "@aibot:localhost", {
|
|
693
|
+
body: "I sent a message from the background.",
|
|
694
|
+
msgtype: "m.text",
|
|
695
|
+
format: "org.matrix.custom.html",
|
|
696
|
+
isStreamingFinished: true
|
|
697
|
+
}, { origin_server_ts: fourteenMinutesAgo.getTime() });
|
|
698
|
+
await waitFor("[data-test-ai-assistant-toast]");
|
|
699
|
+
await triggerEvent("[data-test-ai-assistant-toast]", "mouseenter");
|
|
700
|
+
assert.dom("[data-test-ai-assistant-toast-header]").containsText(`${format(fourteenMinutesAgo, "dd.MM.yyyy, h:mm aa")}`);
|
|
701
|
+
await triggerEvent("[data-test-ai-assistant-toast]", "mouseleave");
|
|
702
|
+
await click("[data-test-ai-assistant-toast-button]");
|
|
703
|
+
assert.dom("[data-test-chat-title]").containsText("Another Room");
|
|
704
|
+
assert.dom("[data-test-message-idx=\"1\"] [data-test-ai-message-content]").containsText("I sent a message from the background.");
|
|
705
|
+
await click("[data-test-close-ai-assistant]");
|
|
706
|
+
simulateRemoteMessage(anotherRoomId, "@aibot:localhost", {
|
|
707
|
+
body: "Toasty!",
|
|
708
|
+
msgtype: "m.text",
|
|
709
|
+
format: "org.matrix.custom.html",
|
|
710
|
+
isStreamingFinished: true
|
|
711
|
+
}, { origin_server_ts: fourteenMinutesAgo.getTime() });
|
|
712
|
+
await waitFor("[data-test-ai-assistant-toast]");
|
|
713
|
+
assert.dom("[data-test-ai-assistant-toast]").exists();
|
|
714
|
+
await settled();
|
|
715
|
+
await waitFor("[data-test-close-toast]");
|
|
716
|
+
await click("[data-test-close-toast]");
|
|
717
|
+
await waitUntil(() => !document.querySelector("[data-test-ai-assistant-toast]"));
|
|
718
|
+
assert.dom("[data-test-ai-assistant-toast]").doesNotExist();
|
|
719
|
+
});
|
|
720
|
+
(0, import_qunit.test)("continuation events should be combined into one message that uses `created` from the oldest message", async function(assert) {
|
|
721
|
+
let roomId = await renderAiAssistantPanel(`${testRealmURL}Person/fadhlan`);
|
|
722
|
+
let firstMessageId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
723
|
+
body: "",
|
|
724
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
725
|
+
format: "org.matrix.custom.html",
|
|
726
|
+
isStreamingFinished: false,
|
|
727
|
+
[APP_BOXEL_REASONING_CONTENT_KEY]: "Here is some reasoning that"
|
|
728
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 30).getTime() });
|
|
729
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
730
|
+
body: "",
|
|
731
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
732
|
+
format: "org.matrix.custom.html",
|
|
733
|
+
isStreamingFinished: true,
|
|
734
|
+
[APP_BOXEL_REASONING_CONTENT_KEY]: "Here is some reasoning that I am doing to figure things out. It continues",
|
|
735
|
+
[APP_BOXEL_HAS_CONTINUATION_CONTENT_KEY]: true,
|
|
736
|
+
["m.relates_to"]: {
|
|
737
|
+
event_id: firstMessageId,
|
|
738
|
+
rel_type: "m.replace"
|
|
739
|
+
}
|
|
740
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 31).getTime() });
|
|
741
|
+
let secondMessageId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
742
|
+
body: "",
|
|
743
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
744
|
+
format: "org.matrix.custom.html",
|
|
745
|
+
isStreamingFinished: true,
|
|
746
|
+
[APP_BOXEL_REASONING_CONTENT_KEY]: " with some more reasoning. Hmmm...",
|
|
747
|
+
[APP_BOXEL_HAS_CONTINUATION_CONTENT_KEY]: true,
|
|
748
|
+
[APP_BOXEL_CONTINUATION_OF_CONTENT_KEY]: firstMessageId
|
|
749
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 32).getTime() });
|
|
750
|
+
await waitFor("[data-test-message-idx=\"0\"]");
|
|
751
|
+
await waitUntil(() => find("[data-test-message-idx=\"0\"]")?.innerText.includes("with some more reasoning"));
|
|
752
|
+
assert.dom("[data-test-message-idx=\"0\"]").containsText("Wednesday Jan 3, 2024, 12:30 PM Thinking... Here is some reasoning that I am doing to figure things out. It continues with some more reasoning. Hmmm...");
|
|
753
|
+
assert.dom("[data-test-message-idx=\"0\"] [data-test-ai-avatar]").hasClass("ai-avatar-animated", "Message is in progress");
|
|
754
|
+
let thirdMessageId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
755
|
+
body: "Now we are on to the body where ",
|
|
756
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
757
|
+
format: "org.matrix.custom.html",
|
|
758
|
+
isStreamingFinished: true,
|
|
759
|
+
[APP_BOXEL_REASONING_CONTENT_KEY]: "",
|
|
760
|
+
[APP_BOXEL_HAS_CONTINUATION_CONTENT_KEY]: true,
|
|
761
|
+
[APP_BOXEL_CONTINUATION_OF_CONTENT_KEY]: secondMessageId
|
|
762
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 33).getTime() });
|
|
763
|
+
let fourthMessageId = simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
764
|
+
body: "a thing can be done",
|
|
765
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
766
|
+
format: "org.matrix.custom.html",
|
|
767
|
+
isStreamingFinished: false,
|
|
768
|
+
[APP_BOXEL_REASONING_CONTENT_KEY]: "",
|
|
769
|
+
[APP_BOXEL_CONTINUATION_OF_CONTENT_KEY]: thirdMessageId
|
|
770
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 34).getTime() });
|
|
771
|
+
await waitUntil(() => find("[data-test-message-idx=\"0\"]").innerText.includes("a thing can be done"));
|
|
772
|
+
assert.dom("[data-test-message-idx=\"0\"]").containsText("Wednesday Jan 3, 2024, 12:30 PM Thinking... Here is some reasoning that I am doing to figure things out. It continues with some more reasoning. Hmmm... Now we are on to the body where a thing can be done");
|
|
773
|
+
assert.dom("[data-test-message-idx=\"0\"] [data-test-ai-avatar]").hasClass("ai-avatar-animated", "Message is in progress");
|
|
774
|
+
simulateRemoteMessage(roomId, "@aibot:localhost", {
|
|
775
|
+
body: "a thing can be done.",
|
|
776
|
+
msgtype: APP_BOXEL_MESSAGE_MSGTYPE,
|
|
777
|
+
format: "org.matrix.custom.html",
|
|
778
|
+
isStreamingFinished: true,
|
|
779
|
+
["m.relates_to"]: {
|
|
780
|
+
event_id: fourthMessageId,
|
|
781
|
+
rel_type: "m.replace"
|
|
782
|
+
},
|
|
783
|
+
[APP_BOXEL_REASONING_CONTENT_KEY]: "",
|
|
784
|
+
[APP_BOXEL_CONTINUATION_OF_CONTENT_KEY]: thirdMessageId
|
|
785
|
+
}, { origin_server_ts: new Date(2024, 0, 3, 12, 35).getTime() });
|
|
786
|
+
await waitUntil(() => find("[data-test-message-idx=\"0\"]").innerText.includes("a thing can be done."));
|
|
787
|
+
assert.dom("[data-test-message-idx=\"0\"]").containsText("Wednesday Jan 3, 2024, 12:30 PM Thinking... Here is some reasoning that I am doing to figure things out. It continues with some more reasoning. Hmmm... Now we are on to the body where a thing can be done.");
|
|
788
|
+
assert.dom("[data-test-message-idx=\"0\"] [data-test-ai-avatar]").doesNotHaveClass("ai-avatar-animated", "Message is in no longer in progress");
|
|
789
|
+
});
|
|
790
|
+
(0, import_qunit.test)("ensures cards are reuploaded only when content changes", async function(assert) {
|
|
791
|
+
let roomId = await renderAiAssistantPanel(`${testRealmURL}Person/fadhlan`);
|
|
792
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "First message with card");
|
|
793
|
+
await click("[data-test-send-message-btn]");
|
|
794
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Second message with same card");
|
|
795
|
+
await click("[data-test-send-message-btn]");
|
|
796
|
+
let messageEvents = getRoomEvents(roomId).filter((e) => e.type === "m.room.message");
|
|
797
|
+
let firstMessageEvent = messageEvents[0];
|
|
798
|
+
let secondMessageEvent = messageEvents[1];
|
|
799
|
+
let firstMessageData = firstMessageEvent.content.data ? JSON.parse(firstMessageEvent.content.data) : void 0;
|
|
800
|
+
let secondMessageData = secondMessageEvent.content.data ? JSON.parse(secondMessageEvent.content.data) : void 0;
|
|
801
|
+
assert.ok(firstMessageData?.attachedCards, "First message has attached cards");
|
|
802
|
+
assert.ok(secondMessageData?.attachedCards, "Second message has attached cards");
|
|
803
|
+
assert.strictEqual(firstMessageData.attachedCards[0].url, secondMessageData.attachedCards[0].url, "First and second messages use the same URL");
|
|
804
|
+
assert.strictEqual(firstMessageData.attachedCards[0].sourceUrl, secondMessageData.attachedCards[0].sourceUrl, "First and second messages have the same source URL");
|
|
805
|
+
await click("[data-test-edit-button]");
|
|
806
|
+
await fillIn("[data-test-field=\"firstName\"] input", "Updated Name");
|
|
807
|
+
await click("[data-test-edit-button]");
|
|
808
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Third message with modified card");
|
|
809
|
+
await click("[data-test-send-message-btn]");
|
|
810
|
+
messageEvents = getRoomEvents(roomId).filter((e) => e.type === "m.room.message");
|
|
811
|
+
let thirdMessageEvent = messageEvents[2];
|
|
812
|
+
let thirdMessageData = thirdMessageEvent.content.data ? JSON.parse(thirdMessageEvent.content.data) : void 0;
|
|
813
|
+
assert.ok(thirdMessageData?.attachedCards, "Third message has attached cards");
|
|
814
|
+
assert.notEqual(firstMessageData.attachedCards[0].url, thirdMessageData.attachedCards[0].url, "Third message uses a different URL after modification");
|
|
815
|
+
assert.strictEqual(firstMessageData.attachedCards[0].sourceUrl, thirdMessageData.attachedCards[0].sourceUrl, "Source URLs remain the same even after modification");
|
|
816
|
+
});
|
|
817
|
+
(0, import_qunit.test)("ensures files are reuploaded only when content changes", async function(assert) {
|
|
818
|
+
let roomId = await renderAiAssistantPanel();
|
|
819
|
+
await click("[data-test-submode-switcher] button");
|
|
820
|
+
await click("[data-test-boxel-menu-item-text=\"Code\"]");
|
|
821
|
+
await click("[data-test-file=\"example-file.gts\"]");
|
|
822
|
+
assert.dom("[data-test-attached-file]").exists({ count: 1 });
|
|
823
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "First message with file");
|
|
824
|
+
await click("[data-test-send-message-btn]");
|
|
825
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Second message with same file");
|
|
826
|
+
await click("[data-test-send-message-btn]");
|
|
827
|
+
let messageEvents = getRoomEvents(roomId).filter((e) => e.type === "m.room.message");
|
|
828
|
+
let firstMessageEvent = messageEvents[0];
|
|
829
|
+
let secondMessageEvent = messageEvents[1];
|
|
830
|
+
let firstMessageData = firstMessageEvent.content.data ? JSON.parse(firstMessageEvent.content.data) : void 0;
|
|
831
|
+
let secondMessageData = secondMessageEvent.content.data ? JSON.parse(secondMessageEvent.content.data) : void 0;
|
|
832
|
+
assert.ok(firstMessageData?.attachedFiles, "First message has attached files");
|
|
833
|
+
assert.ok(secondMessageData?.attachedFiles, "Second message has attached files");
|
|
834
|
+
assert.strictEqual(firstMessageData.attachedFiles[0].url, secondMessageData.attachedFiles[0].url, "First and second messages use the same URL");
|
|
835
|
+
assert.strictEqual(firstMessageData.attachedFiles[0].sourceUrl, secondMessageData.attachedFiles[0].sourceUrl, "First and second messages have the same source URL");
|
|
836
|
+
setMonacoContent(getMonacoContent().replace(`@field name = contains(StringField);`, `@field updatedName = contains(StringField);`));
|
|
837
|
+
await settled();
|
|
838
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Third message with modified file");
|
|
839
|
+
await click("[data-test-send-message-btn]");
|
|
840
|
+
await waitFor("[data-test-message-idx=\"2\"]");
|
|
841
|
+
messageEvents = getRoomEvents(roomId).filter((e) => e.type === "m.room.message");
|
|
842
|
+
let thirdMessageEvent = messageEvents[2];
|
|
843
|
+
let thirdMessageData = thirdMessageEvent.content.data ? JSON.parse(thirdMessageEvent.content.data) : void 0;
|
|
844
|
+
assert.ok(thirdMessageData?.attachedFiles, "Third message has attached files");
|
|
845
|
+
assert.notEqual(firstMessageData.attachedFiles[0].url, thirdMessageData.attachedFiles[0].url, "Third message uses a different URL after modification");
|
|
846
|
+
assert.strictEqual(firstMessageData.attachedFiles[0].sourceUrl, thirdMessageData.attachedFiles[0].sourceUrl, "Source URLs remain the same even after modification");
|
|
847
|
+
});
|
|
848
|
+
(0, import_qunit.test)("displays non-standard used LLMs in panel", async function(assert) {
|
|
849
|
+
let roomId = await renderAiAssistantPanel();
|
|
850
|
+
await getService("matrix-service").sendActiveLLMEvent(roomId, "non-standard-llm-1");
|
|
851
|
+
await waitUntil(() => find(`[data-test-llm-select-selected]`)?.textContent?.includes("non-standard-llm-1"));
|
|
852
|
+
await getService("matrix-service").sendActiveLLMEvent(roomId, "non-standard-llm-2");
|
|
853
|
+
await waitUntil(() => find(`[data-test-llm-select-selected]`)?.textContent?.includes("non-standard-llm-2"));
|
|
854
|
+
assert.dom(`[data-test-llm-select-selected]`).containsText("non-standard-llm-2", "Non-standard LLM is displayed in the panel");
|
|
855
|
+
await click(`[data-test-llm-select-selected]`);
|
|
856
|
+
assert.dom(".menu-content").containsText("non-standard-llm-1");
|
|
857
|
+
assert.dom(".menu-content").containsText("non-standard-llm-2");
|
|
858
|
+
});
|
|
859
|
+
(0, import_qunit.test)("new session settings menu - comprehensive functionality", async function(assert) {
|
|
860
|
+
await renderAiAssistantPanel();
|
|
861
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Test message");
|
|
862
|
+
await click("[data-test-send-message-btn]");
|
|
863
|
+
assert.dom("[data-test-new-session-settings-menu]").doesNotExist("Menu should not be visible initially");
|
|
864
|
+
await triggerEvent("[data-test-create-room-btn]", "mouseenter");
|
|
865
|
+
await waitFor("[data-test-tooltip-content]");
|
|
866
|
+
assert.dom("[data-test-tooltip-content]").hasText("New Session (Shift+Click for options)", "Tooltip shows correct text when menu is closed");
|
|
867
|
+
await click("[data-test-create-room-btn]", { shiftKey: true });
|
|
868
|
+
await waitFor("[data-test-new-session-settings-menu]");
|
|
869
|
+
await triggerEvent("[data-test-create-room-btn]", "mouseenter");
|
|
870
|
+
assert.dom("[data-test-tooltip-content]").hasText("Close New Session Settings", "Tooltip shows correct text when menu is open");
|
|
871
|
+
assert.dom("[data-test-new-session-settings-title]").hasText("New Session Options", "Menu title is displayed correctly");
|
|
872
|
+
assert.dom("[data-test-new-session-settings-option]").exists({ count: 3 }, "All three options are present");
|
|
873
|
+
assert.dom("[data-test-new-session-settings-label=\"Add Same Skills\"]").exists("First option is present");
|
|
874
|
+
assert.dom("[data-test-new-session-settings-label=\"Copy File History\"]").exists("Second option is present");
|
|
875
|
+
assert.dom("[data-test-new-session-settings-label=\"Summarize Current Session\"]").exists("Third option is present");
|
|
876
|
+
assert.dom("[data-test-new-session-settings-option].checked").doesNotExist("No checkboxes are initially checked");
|
|
877
|
+
await percySnapshot(assert);
|
|
878
|
+
await click("[data-test-new-session-settings-checkbox=\"Add Same Skills\"]");
|
|
879
|
+
assert.dom("[data-test-new-session-settings-option].checked").exists({ count: 1 }, "One checkbox should be checked");
|
|
880
|
+
await click("[data-test-new-session-settings-checkbox=\"Copy File History\"]");
|
|
881
|
+
assert.dom("[data-test-new-session-settings-option].checked").exists({ count: 2 }, "One checkboxes should be checked");
|
|
882
|
+
assert.dom("[data-test-new-session-settings-option].checked").exists({ count: 2 }, "Two checkboxes should be checked");
|
|
883
|
+
await click("[data-test-new-session-settings-checkbox=\"Add Same Skills\"]");
|
|
884
|
+
assert.dom("[data-test-new-session-settings-option].checked").exists({ count: 1 }, "One checkbox should be checked after unchecking");
|
|
885
|
+
assert.dom("[data-test-new-session-settings-close-button]").exists("Close button should be present");
|
|
886
|
+
await click("[data-test-new-session-settings-close-button]");
|
|
887
|
+
assert.dom("[data-test-new-session-settings-menu]").doesNotExist("Menu should be hidden after clicking close button");
|
|
888
|
+
await click("[data-test-create-room-btn]", { shiftKey: true });
|
|
889
|
+
await waitFor("[data-test-new-session-settings-menu]");
|
|
890
|
+
assert.dom("[data-test-new-session-settings-menu]").exists("Menu should be visible after Shift+Click again");
|
|
891
|
+
await click("[data-test-create-room-btn]");
|
|
892
|
+
assert.dom("[data-test-new-session-settings-menu]").doesNotExist("Menu shoud be hidden after clicking plus button");
|
|
893
|
+
await click("[data-test-create-room-btn]", { shiftKey: true });
|
|
894
|
+
await waitFor("[data-test-new-session-settings-menu]");
|
|
895
|
+
assert.dom("[data-test-new-session-settings-menu]").exists("Menu should be visible after Shift+Click again");
|
|
896
|
+
assert.dom("[data-test-new-session-settings-create-button]").hasText("Start New Session", "Create button should have correct text");
|
|
897
|
+
await click("[data-test-new-session-settings-create-button]");
|
|
898
|
+
assert.dom("[data-test-new-session-settings-menu]").doesNotExist("Menu should be hidden after clicking create button");
|
|
899
|
+
await waitFor("[data-test-room-settled]");
|
|
900
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Test message");
|
|
901
|
+
await click("[data-test-send-message-btn]");
|
|
902
|
+
await click("[data-test-create-room-btn]", { shiftKey: true });
|
|
903
|
+
await waitFor("[data-test-new-session-settings-menu]");
|
|
904
|
+
await click("[data-test-new-session-settings-checkbox=\"Add Same Skills\"]");
|
|
905
|
+
assert.dom("[data-test-new-session-settings-option].checked").exists({ count: 2 }, "Two checkboxes should be checked before creating");
|
|
906
|
+
await click("[data-test-new-session-settings-create-button]");
|
|
907
|
+
assert.dom("[data-test-new-session-settings-menu]").doesNotExist("Menu should be hidden after creating with options selected");
|
|
908
|
+
await waitFor("[data-test-room-settled]");
|
|
909
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Test message");
|
|
910
|
+
await click("[data-test-send-message-btn]");
|
|
911
|
+
await click("[data-test-create-room-btn]", { shiftKey: true });
|
|
912
|
+
await waitFor("[data-test-new-session-settings-menu]");
|
|
913
|
+
assert.dom("[data-test-new-session-settings-menu]").exists("Menu should be visible for click outside test");
|
|
914
|
+
await click("[data-test-boxel-input-id=\"ai-chat-input\"]");
|
|
915
|
+
assert.dom("[data-test-new-session-settings-menu]").doesNotExist("Menu should be hidden after clicking outside");
|
|
916
|
+
await click("[data-test-create-room-btn]");
|
|
917
|
+
assert.dom("[data-test-new-session-settings-menu]").doesNotExist("Menu should not open on normal click");
|
|
918
|
+
await waitFor("[data-test-room-settled]");
|
|
919
|
+
await fillIn("[data-test-boxel-input-id=\"ai-chat-input\"]", "Test message");
|
|
920
|
+
await click("[data-test-send-message-btn]");
|
|
921
|
+
await triggerEvent("[data-test-create-room-btn]", "mouseenter");
|
|
922
|
+
await waitFor("[data-test-tooltip-content]");
|
|
923
|
+
assert.dom("[data-test-tooltip-content]").hasText("New Session (Shift+Click for options)", "Tooltip shows correct text after normal click");
|
|
924
|
+
});
|
|
925
|
+
});
|
|
926
|
+
//#endregion
|