@cardstack/boxel-cli 0.3.2-unstable.57 → 0.3.2-unstable.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/bundled-realms/base/Skill/catalog-listing.json +4 -4
  2. package/bundled-test-harness/assets/adapter-C8oDflNN.js +2 -0
  3. package/bundled-test-harness/assets/{add-field-to-card-definition-DfhKgXwU.js → add-field-to-card-definition-DIn1q610.js} +4 -4
  4. package/bundled-test-harness/assets/{add-field-to-card-definition-command-test-DZ5aHO5u.js → add-field-to-card-definition-command-test-Cs670972.js} +4 -4
  5. package/bundled-test-harness/assets/{add-workspace-CF8hudO-.js → add-workspace-2tmitSxr.js} +1 -1
  6. package/bundled-test-harness/assets/{add-workspace-test-Bsp2RzrC.js → add-workspace-test-BviDAUBK.js} +4 -4
  7. package/bundled-test-harness/assets/{ai-assistant-DhQ5Av3a.js → ai-assistant-B5fp2iOz.js} +6 -6
  8. package/bundled-test-harness/assets/{ai-assistant-test-B26Ldt2R.js → ai-assistant-test-jPV29jEw.js} +4 -4
  9. package/bundled-test-harness/assets/{ai-function-generation-test-DAs-k3E0.js → ai-function-generation-test-QRPcE9tQ.js} +2 -2
  10. package/bundled-test-harness/assets/{ai-module-creation-test-DCpXhgX9.js → ai-module-creation-test-DyuyfnkY.js} +4 -4
  11. package/bundled-test-harness/assets/{aibot-message-u1AS8TgO.js → aibot-message-Dwxp5hTW.js} +3 -3
  12. package/bundled-test-harness/assets/{app-DcsRpi3o.js → app-CgP2IpNG.js} +88 -95
  13. package/bundled-test-harness/assets/{apply-markdown-edit-EE9Dig7d.js → apply-markdown-edit-CT7UXlCm.js} +3 -3
  14. package/bundled-test-harness/assets/{apply-markdown-edit-test-CBS86j6J.js → apply-markdown-edit-test-C6bcaj3a.js} +4 -4
  15. package/bundled-test-harness/assets/{apply-search-replace-block--A0vAbcL.js → apply-search-replace-block-S2ZTkuTA.js} +2 -2
  16. package/bundled-test-harness/assets/{apply-search-replace-block-test-Dfl0NCGW.js → apply-search-replace-block-test-BSwC4J9g.js} +3 -3
  17. package/bundled-test-harness/assets/{auth-error-guard-D-J3k0XW.js → auth-error-guard-ChgYDxcf.js} +1 -1
  18. package/bundled-test-harness/assets/{auth-error-guard-test-BAniwx-L.js → auth-error-guard-test-Bvu8E7Wy.js} +2 -2
  19. package/bundled-test-harness/assets/{authed-fetch-BcnzoMtW.js → authed-fetch-D83Ohr_b.js} +1 -1
  20. package/bundled-test-harness/assets/{authed-fetch-test-MGmzZCvR.js → authed-fetch-test-CfF-IBHI.js} +5 -5
  21. package/bundled-test-harness/assets/{avif-image-def-test-DQpFGHxK.js → avif-image-def-test-B9L2z0nR.js} +2 -2
  22. package/bundled-test-harness/assets/{base-realm-DN9FnoVH.js → base-realm-43wjttN2.js} +1 -1
  23. package/bundled-test-harness/assets/{base-realm-BLFwclgP.js → base-realm-CJ5x9iyX.js} +1 -1
  24. package/bundled-test-harness/assets/{basic-test-DJafJYrR.js → basic-test-B64a5zCK.js} +2 -2
  25. package/bundled-test-harness/assets/{bfm-card-references-test-D8wgrXAi.js → bfm-card-references-test-cLQVLpth.js} +1 -1
  26. package/bundled-test-harness/assets/{binary-upload-dedupe-test-BxAvQQ_x.js → binary-upload-dedupe-test-By7Y1iQ3.js} +5 -5
  27. package/bundled-test-harness/assets/{bot-registration-test-qIW16T3W.js → bot-registration-test-DOjf0P1R.js} +5 -5
  28. package/bundled-test-harness/assets/{box-test-SQF1g3tI.js → box-test-Cd1-RcXg.js} +2 -2
  29. package/bundled-test-harness/assets/{brand-guide-attachments-test-E60jyMxm.js → brand-guide-attachments-test-DxRqP8fo.js} +4 -4
  30. package/bundled-test-harness/assets/{brand-guide-custom-css-test-jy-_JQ46.js → brand-guide-custom-css-test-DBpZiHzJ.js} +4 -4
  31. package/bundled-test-harness/assets/{brand-logo-mark-field-test-UOcZ4HQ7.js → brand-logo-mark-field-test-61k4e5Om.js} +4 -4
  32. package/bundled-test-harness/assets/{broken-link-template-test-gyzbZwiR.js → broken-link-template-test-A1P4flQ5.js} +2 -2
  33. package/bundled-test-harness/assets/{browser-queue-5NBIU7iB.js → browser-queue-CiAZHYMs.js} +2 -2
  34. package/bundled-test-harness/assets/{cached-fetch-test-Cw-5Vd4D.js → cached-fetch-test-ByQ-5OQI.js} +1 -1
  35. package/bundled-test-harness/assets/{can-read-realm-PLgMdr8o.js → can-read-realm-BTFZdy1x.js} +1 -1
  36. package/bundled-test-harness/assets/{can-read-realm-test-BreVMREJ.js → can-read-realm-test-VFLHJdEv.js} +5 -5
  37. package/bundled-test-harness/assets/{cancel-indexing-job-B5M2Ds06.js → cancel-indexing-job-kp_C8Xl-.js} +1 -1
  38. package/bundled-test-harness/assets/{cancel-indexing-job-test-BfE5StwQ.js → cancel-indexing-job-test-n3Os4ZaX.js} +5 -5
  39. package/bundled-test-harness/assets/{card-api-test-DyvKjxrW.js → card-api-test-DvNfLv3V.js} +4 -4
  40. package/bundled-test-harness/assets/{card-basics-test-CWfgRiAu.js → card-basics-test-CKzZuFdw.js} +5 -5
  41. package/bundled-test-harness/assets/{card-catalog-test-DYDlHFmr.js → card-catalog-test-JFvkVHED.js} +4 -4
  42. package/bundled-test-harness/assets/{card-copy-test-DVqpYVyy.js → card-copy-test-iwrFA72s.js} +4 -4
  43. package/bundled-test-harness/assets/{card-def-field-def-relationships-test-NhqiCH3n.js → card-def-field-def-relationships-test-D5s2RH5t.js} +5 -5
  44. package/bundled-test-harness/assets/{card-def-menu-items-test-CUMX4z7E.js → card-def-menu-items-test-XcmkT4NF.js} +2 -2
  45. package/bundled-test-harness/assets/{card-delete-test-B9uDbxXH.js → card-delete-test-jtAOHk1Y.js} +4 -4
  46. package/bundled-test-harness/assets/{card-directory-name-test-CrTvfxUK.js → card-directory-name-test-veQEp5FJ.js} +1 -1
  47. package/bundled-test-harness/assets/{card-error-detail-D5KZVMx1.js → card-error-detail-DHgMOVGe.js} +3 -3
  48. package/bundled-test-harness/assets/{card-playground-test-qw2VzkcC.js → card-playground-test-P7Ed0tO4.js} +3 -3
  49. package/bundled-test-harness/assets/{card-prerender-BLzXmZFI.js → card-prerender-DXG8cQEv.js} +5 -5
  50. package/bundled-test-harness/assets/{card-renderer-DYf5wKRG.js → card-renderer-D1areYZe.js} +1 -1
  51. package/bundled-test-harness/assets/{card-search-adorn-test-Zy3KLCXy.js → card-search-adorn-test-BX0-IJHB.js} +3 -3
  52. package/bundled-test-harness/assets/{card-search-query-builder-test-CFzY3Vo_.js → card-search-query-builder-test-D01uixke.js} +2 -2
  53. package/bundled-test-harness/assets/{card-search-selection-menu-test-BOUWbtSu.js → card-search-selection-menu-test-DMTeZFmW.js} +2 -2
  54. package/bundled-test-harness/assets/{card-service-DaexcI99.js → card-service-DSv98Ql7.js} +1 -1
  55. package/bundled-test-harness/assets/{check-correctness-DUitsZZH.js → check-correctness-BIfYUT39.js} +2 -2
  56. package/bundled-test-harness/assets/{check-correctness-test-DXILbQCc.js → check-correctness-test-D7QB1GTo.js} +6 -6
  57. package/bundled-test-harness/assets/{code-equality-assertion-2tVgNXpX.js → code-equality-assertion-C-2g5YGf.js} +2 -2
  58. package/bundled-test-harness/assets/{code-patches-test-Bo16nji_.js → code-patches-test-DaV4Mon_.js} +3 -3
  59. package/bundled-test-harness/assets/{code-patching-test-BAOMyP_X.js → code-patching-test-CcbWlImN.js} +2 -2
  60. package/bundled-test-harness/assets/{code-ref-test-DkH-Hg9w.js → code-ref-test-8Yj8gbww.js} +2 -2
  61. package/bundled-test-harness/assets/{code-semantics-service-test-DpPro60m.js → code-semantics-service-test-C3srTfDz.js} +1 -1
  62. package/bundled-test-harness/assets/{code-submode-test-BJKzfCnA.js → code-submode-test-BUhjvWtB.js} +3 -3
  63. package/bundled-test-harness/assets/{codeblocks-test-9HDQV8Tk.js → codeblocks-test-3zAp0_GA.js} +5 -5
  64. package/bundled-test-harness/assets/{codemirror-editor-test-CzGCCbkG.js → codemirror-editor-test-WojU4k2h.js} +1 -1
  65. package/bundled-test-harness/assets/{color-field-test-DNfSOpDL.js → color-field-test-yESUakoE.js} +3 -3
  66. package/bundled-test-harness/assets/{commands-K_bsu_Og.js → commands-CBDBujm_.js} +176 -986
  67. package/bundled-test-harness/assets/{commands-calling-test-BrbvuP2e.js → commands-calling-test-DJTl0EbL.js} +4 -4
  68. package/bundled-test-harness/assets/{commands-test-BTr6bsOn.js → commands-test-DW2gupNS.js} +9 -9
  69. package/bundled-test-harness/assets/{commands-test-JVW86un6.js → commands-test-DjLnuojW.js} +5 -5
  70. package/bundled-test-harness/assets/{computed-test-DRTA-65U.js → computed-test-0n5g8Ez5.js} +4 -4
  71. package/bundled-test-harness/assets/{container-CdKkJ4UR.js → container-D8y7fmir.js} +25 -25
  72. package/bundled-test-harness/assets/{convert-to-class-name-test-mNQiPfY2.js → convert-to-class-name-test-DSIflIV2.js} +1 -1
  73. package/bundled-test-harness/assets/{copy-and-edit-DjhRJze1.js → copy-and-edit-B8M2rwoL.js} +3 -3
  74. package/bundled-test-harness/assets/{copy-and-edit-test-C26Vx0mc.js → copy-and-edit-test-BuK1ZHr-.js} +4 -4
  75. package/bundled-test-harness/assets/{copy-card-VdjJuaCY.js → copy-card-JGCXNcjb.js} +1 -1
  76. package/bundled-test-harness/assets/{copy-card-test-DarxpxoR.js → copy-card-test-DnDC4_7J.js} +5 -5
  77. package/bundled-test-harness/assets/{copy-card-to-stack-DPflgmTL.js → copy-card-to-stack-Cnj8p8tc.js} +3 -3
  78. package/bundled-test-harness/assets/{copy-file-to-realm-test-Drd30dk6.js → copy-file-to-realm-test-CFd_3Iff.js} +3 -3
  79. package/bundled-test-harness/assets/{copy-source-BcR0va5z.js → copy-source-CSrG5lS7.js} +1 -1
  80. package/bundled-test-harness/assets/{copy-source-test-D0jFpi4w.js → copy-source-test-38yUGJor.js} +4 -4
  81. package/bundled-test-harness/assets/{create-ai-assistant-room-BP5kNTW7.js → create-ai-assistant-room-7LllE6Lq.js} +2 -2
  82. package/bundled-test-harness/assets/{create-file-modal-BjlBImt1.js → create-file-modal-_y7nscSl.js} +4 -4
  83. package/bundled-test-harness/assets/{create-file-test-DI43enJq.js → create-file-test-B2oem0-V.js} +2 -2
  84. package/bundled-test-harness/assets/{create-file-test-CoPnYED8.js → create-file-test-BHk00RtD.js} +2 -2
  85. package/bundled-test-harness/assets/{create-listing-modal-test-CAS43KMd.js → create-listing-modal-test-L-71-Uo2.js} +5 -5
  86. package/bundled-test-harness/assets/{create-listing-pr-request-BPLDcJgw.js → create-listing-pr-request-CZaLsHhE.js} +4 -4
  87. package/bundled-test-harness/assets/{create-listing-pr-request-test-CwIlzlfu.js → create-listing-pr-request-test-OGzk4Q2E.js} +5 -5
  88. package/bundled-test-harness/assets/{create-spec-test-CWtYAh8d.js → create-spec-test-BsM7VKuH.js} +4 -4
  89. package/bundled-test-harness/assets/{create-specs-HhFVojRg.js → create-specs-t7sWc_xt.js} +6 -6
  90. package/bundled-test-harness/assets/{csv-file-def-test-Di6EPsOu.js → csv-file-def-test-BhJalhE-.js} +2 -2
  91. package/bundled-test-harness/assets/{date-time-fields-test-Xl1mWopb.js → date-time-fields-test-Cs5T6Xk1.js} +3 -3
  92. package/bundled-test-harness/assets/{debounce-qj19N2vf.js → debounce-CwTDsmN-.js} +1 -1
  93. package/bundled-test-harness/assets/{debug-message-test-CvrpWGqM.js → debug-message-test-WlHe7pJF.js} +5 -5
  94. package/bundled-test-harness/assets/{diffing-test-BMMObLNW.js → diffing-test-DO54USSm.js} +1 -1
  95. package/bundled-test-harness/assets/{editor-test-C7G17Dk4.js → editor-test-DChC9LuR.js} +2 -2
  96. package/bundled-test-harness/assets/{email-field-test-CM8lBha1.js → email-field-test-DWIFSfZ-.js} +4 -4
  97. package/bundled-test-harness/assets/{enum-field-test-CHaO6N_F.js → enum-field-test-BUc6l4us.js} +4 -4
  98. package/bundled-test-harness/assets/{error-display-test-sO0QyguB.js → error-display-test-CHSE6h6Z.js} +2 -2
  99. package/bundled-test-harness/assets/{evaluate-module-bUPiIcDs.js → evaluate-module-C6_gzn5_.js} +1 -1
  100. package/bundled-test-harness/assets/{evaluate-module-test-DfnjIPLN.js → evaluate-module-test-Caa5n0B9.js} +3 -3
  101. package/bundled-test-harness/assets/{execute-atomic-operations-DwSarfVd.js → execute-atomic-operations-CC3N-5N4.js} +1 -1
  102. package/bundled-test-harness/assets/{execute-atomic-operations-test-BrkebMvJ.js → execute-atomic-operations-test-CT060oDk.js} +6 -6
  103. package/bundled-test-harness/assets/{externals-SS6OJwxu.js → externals-Do1fVZ4j.js} +2 -2
  104. package/bundled-test-harness/assets/{fallback-banner-test-CxswlAy1.js → fallback-banner-test-CmxysrDn.js} +5 -5
  105. package/bundled-test-harness/assets/{fallback-banner-test-BiQr1ZkY.js → fallback-banner-test-DJ4cO8PB.js} +1 -1
  106. package/bundled-test-harness/assets/{fallback-models-test-CnHb76im.js → fallback-models-test-r5upJFeA.js} +5 -5
  107. package/bundled-test-harness/assets/{fetch-card-json-DxiiGiFw.js → fetch-card-json-B-C1HlJO.js} +1 -1
  108. package/bundled-test-harness/assets/{fetch-card-json-test-B9s3ygQi.js → fetch-card-json-test-Di1wmvy5.js} +5 -5
  109. package/bundled-test-harness/assets/{fetcher-test-Byj1ySkx.js → fetcher-test-DjzNl_7F.js} +1 -1
  110. package/bundled-test-harness/assets/{field-configuration-test-98SGHHs3.js → field-configuration-test-C3vr-HhG.js} +4 -4
  111. package/bundled-test-harness/assets/{field-markdown-domain-test-cZLg8V4G.js → field-markdown-domain-test-DG2U4qIm.js} +4 -4
  112. package/bundled-test-harness/assets/{field-markdown-primitives-test-DNNlWeW2.js → field-markdown-primitives-test-Bay2v8nT.js} +3 -3
  113. package/bundled-test-harness/assets/{field-markdown-specialized-test-BNK65c-g.js → field-markdown-specialized-test-Bl0Sl4sc.js} +4 -4
  114. package/bundled-test-harness/assets/{field-playground-test-CzaQ2nm5.js → field-playground-test-Bcjfws4m.js} +3 -3
  115. package/bundled-test-harness/assets/{field-support-predicates-test-DCHJ4jVG.js → field-support-predicates-test-DYTqOGvv.js} +3 -3
  116. package/bundled-test-harness/assets/{field-test-helpers-BQf_mGjC.js → field-test-helpers-DYSfSGdh.js} +2 -2
  117. package/bundled-test-harness/assets/{file-CBX_fzjQ.js → file-Dkzzhwoy.js} +1 -1
  118. package/bundled-test-harness/assets/{file-attachment-test-8S_Am_sT.js → file-attachment-test-6ypDRDS7.js} +5 -5
  119. package/bundled-test-harness/assets/{file-chooser-test-DwyCe7A1.js → file-chooser-test-mtmcHTFP.js} +3 -3
  120. package/bundled-test-harness/assets/{file-def-attributes-extractor-KRDLPav1.js → file-def-attributes-extractor-DGMrcc_b.js} +1 -1
  121. package/bundled-test-harness/assets/{file-def-live-reload-test-Dy5nXWf8.js → file-def-live-reload-test-CX1-lOv6.js} +2 -2
  122. package/bundled-test-harness/assets/{file-def-manager-CC2L49rL.js → file-def-manager-DNHII2oj.js} +1 -1
  123. package/bundled-test-harness/assets/{file-def-manager-canonicalize-test-CDN4paGB.js → file-def-manager-canonicalize-test-i_7UVakF.js} +2 -2
  124. package/bundled-test-harness/assets/{file-def-menu-items-test-Cx-oynAB.js → file-def-menu-items-test-Dw458iku.js} +2 -2
  125. package/bundled-test-harness/assets/{file-def-navigation-test-hBA-P_K4.js → file-def-navigation-test-B3Ztr1Rd.js} +2 -2
  126. package/bundled-test-harness/assets/{file-def-serialization-test-CgzTp7-l.js → file-def-serialization-test-C_gV8AkU.js} +3 -3
  127. package/bundled-test-harness/assets/{file-def-test-1aOtf07s.js → file-def-test-vXXJmtxX.js} +2 -2
  128. package/bundled-test-harness/assets/{file-tree-test-By0I-LWa.js → file-tree-test-BJCiw9jm.js} +3 -3
  129. package/bundled-test-harness/assets/{flac-audio-def-test-B_U0BYqp.js → flac-audio-def-test-BX3SE1vW.js} +2 -2
  130. package/bundled-test-harness/assets/{formatted-aibot-message-test-DRggFVzN.js → formatted-aibot-message-test-DyqUz2nt.js} +4 -4
  131. package/bundled-test-harness/assets/{formatted-user-message-test-D0hCVV-p.js → formatted-user-message-test-aqAzqvBP.js} +1 -1
  132. package/bundled-test-harness/assets/{freestyle-test-BNWR5_tb.js → freestyle-test-CLRrZkAE.js} +1 -1
  133. package/bundled-test-harness/assets/{full-reindex-realm-jKZdNKYy.js → full-reindex-realm-DbD6GuJ5.js} +1 -1
  134. package/bundled-test-harness/assets/{full-reindex-realm-test-CvdTNv7H.js → full-reindex-realm-test-ClqPVQ0c.js} +5 -5
  135. package/bundled-test-harness/assets/{garbage-collection-test-BA_DevRy.js → garbage-collection-test-Ba2dD3qS.js} +4 -4
  136. package/bundled-test-harness/assets/{gc-card-store-CSykK7YD.js → gc-card-store-Cyaw1ZoD.js} +1 -1
  137. package/bundled-test-harness/assets/{general-test-DqXUp9Lj.js → general-test-D0zhs14K.js} +5 -5
  138. package/bundled-test-harness/assets/{generate-example-cards-VfsHLFeC.js → generate-example-cards-DSnMgnoE.js} +4 -4
  139. package/bundled-test-harness/assets/{generate-example-cards-one-shot-test-DICYWk96.js → generate-example-cards-one-shot-test-fSAdGJeT.js} +4 -4
  140. package/bundled-test-harness/assets/{get-available-realm-identifiers-DxAmtnsW.js → get-available-realm-identifiers-B_Bjav4V.js} +1 -1
  141. package/bundled-test-harness/assets/{get-available-realm-identifiers-test-D2fiOMAn.js → get-available-realm-identifiers-test-BXMUW65I.js} +5 -5
  142. package/bundled-test-harness/assets/{get-catalog-realm-identifiers-C4aO6u4l.js → get-catalog-realm-identifiers-Bd_kaIut.js} +1 -1
  143. package/bundled-test-harness/assets/{get-catalog-realm-identifiers-test-DuLrS_KE.js → get-catalog-realm-identifiers-test-DKEq6Zcq.js} +5 -5
  144. package/bundled-test-harness/assets/{get-default-writable-realm-2nH1mW2Y.js → get-default-writable-realm-DfHmEQ8g.js} +1 -1
  145. package/bundled-test-harness/assets/{get-default-writable-realm-test-B3Ab4veP.js → get-default-writable-realm-test-Dp4nBIRP.js} +5 -5
  146. package/bundled-test-harness/assets/{get-realm-of-resource-identifier-Bf7VL5Td.js → get-realm-of-resource-identifier-DR1Hzxmh.js} +2 -2
  147. package/bundled-test-harness/assets/{get-realm-of-resource-identifier-test-Db3KeI60.js → get-realm-of-resource-identifier-test-DYNnMgD-.js} +5 -5
  148. package/bundled-test-harness/assets/{get-relationship-membership-state-test-CnjYNJCL.js → get-relationship-membership-state-test-k9EUNWeq.js} +3 -3
  149. package/bundled-test-harness/assets/{get-type-refs-from-filter-test-BIHvwwfZ.js → get-type-refs-from-filter-test-BPuivF-v.js} +1 -1
  150. package/bundled-test-harness/assets/{get-user-system-card-BOOBnEqc.js → get-user-system-card-CSByuPXh.js} +1 -1
  151. package/bundled-test-harness/assets/{get-user-system-card-test-BDADm7_V.js → get-user-system-card-test-DSHv00O7.js} +5 -5
  152. package/bundled-test-harness/assets/{gif-image-def-test-n-mgX5hB.js → gif-image-def-test-LuDSr5Kz.js} +2 -2
  153. package/bundled-test-harness/assets/{gts-file-def-test-y7YGPABO.js → gts-file-def-test-bS3ML062.js} +2 -2
  154. package/bundled-test-harness/assets/{head-format-preview-test-DYvtL4hi.js → head-format-preview-test-B8IPh71E.js} +2 -2
  155. package/bundled-test-harness/assets/{helpers-CggYK0qv.js → helpers-D_JZYUOQ.js} +1 -1
  156. package/bundled-test-harness/assets/{helpers-DfbN22AQ.js → helpers-wSIq-bau.js} +4 -4
  157. package/bundled-test-harness/assets/{host-base-command-BGdgn4Q-.js → host-base-command-BMsZcn1D.js} +1 -1
  158. package/bundled-test-harness/assets/{host-mode-service-C_b8xNVT.js → host-mode-service-B4CEe5xJ.js} +1 -1
  159. package/bundled-test-harness/assets/{host-mode-test-DQvboQ87.js → host-mode-test-D44nXoQZ.js} +3 -3
  160. package/bundled-test-harness/assets/{host-submode-test-c1MsNS2b.js → host-submode-test-CefkXg9F.js} +3 -3
  161. package/bundled-test-harness/assets/{index-query-engine-test-eH_3mn90.js → index-query-engine-test-DJnDqmfK.js} +4 -4
  162. package/bundled-test-harness/assets/{index-writer-test-QByWRKMy.js → index-writer-test-BcrCMj37.js} +3 -3
  163. package/bundled-test-harness/assets/{inspector-test-B_Sm8pUM.js → inspector-test-D4iMBlbL.js} +2 -2
  164. package/bundled-test-harness/assets/{instance-filter-matcher-test-fzP4DEnI.js → instance-filter-matcher-test-CYT6N3hN.js} +4 -4
  165. package/bundled-test-harness/assets/{instantiate-card-B54BHVHk.js → instantiate-card-CJrMFAO_.js} +1 -1
  166. package/bundled-test-harness/assets/{instantiate-card-test-Db0XT9hX.js → instantiate-card-test-j1JS5lDe.js} +3 -3
  167. package/bundled-test-harness/assets/{interact-submode-creation-and-permissions-test-DL6Z036Q.js → interact-submode-creation-and-permissions-test-B-aXzOh6.js} +4 -4
  168. package/bundled-test-harness/assets/{interact-submode-setup-Duzpi-nO.js → interact-submode-setup-VMwOUl3u.js} +2 -2
  169. package/bundled-test-harness/assets/{interact-submode-test-D0XU9rs9.js → interact-submode-test-D5lNNXdq.js} +3 -3
  170. package/bundled-test-harness/assets/{invalidate-realm-identifiers-CYvEl7qB.js → invalidate-realm-identifiers-B_NYbRkp.js} +1 -1
  171. package/bundled-test-harness/assets/{invalidate-realm-identifiers-test-D8u2iQsm.js → invalidate-realm-identifiers-test-71Ze8eGV.js} +5 -5
  172. package/bundled-test-harness/assets/{invite-user-to-room-DIfcHmnZ.js → invite-user-to-room-By6L6O7g.js} +1 -1
  173. package/bundled-test-harness/assets/{invite-user-to-room-test-DAUx3CF_.js → invite-user-to-room-test-UfjsvwVp.js} +4 -4
  174. package/bundled-test-harness/assets/{isolated-render-BtFI3iLX.js → isolated-render-B0Uwpy0n.js} +1 -1
  175. package/bundled-test-harness/assets/{isolated-render-test-BKIY0Z-R.js → isolated-render-test-C2IL-Fz3.js} +2 -2
  176. package/bundled-test-harness/assets/{item-button-Cp_gpgDE.js → item-button-6g7XYj56.js} +3 -3
  177. package/bundled-test-harness/assets/{job-priority-header-test-DXH8n4cK.js → job-priority-header-test-C3FfKLPP.js} +2 -2
  178. package/bundled-test-harness/assets/{jpg-image-def-test-B9pYXUVH.js → jpg-image-def-test-BTBk9lk5.js} +2 -2
  179. package/bundled-test-harness/assets/{json-file-def-test-e--2bZ90.js → json-file-def-test-BpU_Eidn.js} +2 -2
  180. package/bundled-test-harness/assets/{linksto-broken-link-placeholder-test-DcxyxYLw.js → linksto-broken-link-placeholder-test-qZeqQ1gt.js} +4 -4
  181. package/bundled-test-harness/assets/{linksto-error-sentinel-test-CFHbZman.js → linksto-error-sentinel-test-BaV3I8Xx.js} +3 -3
  182. package/bundled-test-harness/assets/{linksto-many-broken-link-placeholder-test-DRUtCxRW.js → linksto-many-broken-link-placeholder-test-BvJi1vCb.js} +4 -4
  183. package/bundled-test-harness/assets/{linksto-many-per-slot-access-test-DmcpOYtI.js → linksto-many-per-slot-access-test-CK60Cugk.js} +3 -3
  184. package/bundled-test-harness/assets/{linksto-sentinel-roundtrip-test-De2WpcBM.js → linksto-sentinel-roundtrip-test-BWxdEO9D.js} +3 -3
  185. package/bundled-test-harness/assets/{linksto-singular-js-access-contract-test-BW2F4t11.js → linksto-singular-js-access-contract-test-CIsLhqR2.js} +3 -3
  186. package/bundled-test-harness/assets/{lint-and-fix-V56pAd1n.js → lint-and-fix-BMQ1syM6.js} +2 -2
  187. package/bundled-test-harness/assets/{live-prerendered-search-CJDEXx90.js → live-prerendered-search-jZe3I16p.js} +4 -4
  188. package/bundled-test-harness/assets/live-test-CF_R5WGr.js +2 -0
  189. package/bundled-test-harness/assets/{live-test-NY_7CFNs.js → live-test-jO7lXuyB.js} +7 -7
  190. package/bundled-test-harness/assets/{loader-icon-error-test-Ce84hpJz.js → loader-icon-error-test-N4JYZuTx.js} +1 -1
  191. package/bundled-test-harness/assets/{loader-parallel-prefetch-test-DpFZ_p-0.js → loader-parallel-prefetch-test-DteeG7mU.js} +2 -2
  192. package/bundled-test-harness/assets/{loader-retry-test-D0ED2P-U.js → loader-retry-test-DYVgpS_I.js} +1 -1
  193. package/bundled-test-harness/assets/{loader-test-D5fmU9Xr.js → loader-test-DLI8JIx-.js} +2 -2
  194. package/bundled-test-harness/assets/{loading-test-Bfsq9yyP.js → loading-test-D4ZBtRYf.js} +3 -3
  195. package/bundled-test-harness/assets/{m4a-audio-def-test-TwnddwIE.js → m4a-audio-def-test-BKqGO-CW.js} +2 -2
  196. package/bundled-test-harness/assets/{main-Bor2cxrd.js → main-BjBdsiQT.js} +1 -1
  197. package/bundled-test-harness/assets/{markdown-fallback-test-DGdixi-5.js → markdown-fallback-test-BBj80dZZ.js} +3 -3
  198. package/bundled-test-harness/assets/{markdown-file-def-test-BCuMd2tt.js → markdown-file-def-test-BnMF5rQF.js} +2 -2
  199. package/bundled-test-harness/assets/{markdown-helpers-test-Dn3M0V2T.js → markdown-helpers-test-DnuuSLfS.js} +2 -2
  200. package/bundled-test-harness/assets/{markdown-highlighting-test-CWvnSbdW.js → markdown-highlighting-test-CWRp2Rce.js} +3 -3
  201. package/bundled-test-harness/assets/{markdown-preview-test-DRhhjytd.js → markdown-preview-test-Bf5OqKGf.js} +4 -4
  202. package/bundled-test-harness/assets/{markdown-preview-EFDbxJUh.js → markdown-preview-yYHtwNeI.js} +2 -2
  203. package/bundled-test-harness/assets/{matrix-service-sliding-sync-test-BVXe_s0E.js → matrix-service-sliding-sync-test-CdEy3ASW.js} +3 -3
  204. package/bundled-test-harness/assets/{message-service-subscription-test-xk49SHWl.js → message-service-subscription-test-pGz_7rz3.js} +3 -3
  205. package/bundled-test-harness/assets/{mock-matrix-DNf0qi20.js → mock-matrix-D7JHfFtT.js} +1 -1
  206. package/bundled-test-harness/assets/{mock-matrix-B7-Yjk1q.js → mock-matrix-DqDbNhEj.js} +7 -7
  207. package/bundled-test-harness/assets/{module-syntax-Djv9Dl9A.js → module-syntax-nniSljxW.js} +1 -1
  208. package/bundled-test-harness/assets/{module-transpile-cache-test-BZucpTCB.js → module-transpile-cache-test-D0M-fPxs.js} +2 -2
  209. package/bundled-test-harness/assets/{mp3-audio-def-test-RK_LaVFM.js → mp3-audio-def-test-CxeRk1bl.js} +2 -2
  210. package/bundled-test-harness/assets/{number-field-test-DTBe27-g.js → number-field-test-gjAGDy6P.js} +3 -3
  211. package/bundled-test-harness/assets/{ogg-audio-def-test-MX84g6Gg.js → ogg-audio-def-test-B6Ww3Ixr.js} +2 -2
  212. package/bundled-test-harness/assets/{one-shot-llm-request-DygEVhwY.js → one-shot-llm-request-Cmtn_WRk.js} +5 -5
  213. package/bundled-test-harness/assets/{open-ai-assistant-room-DyI9Osk8.js → open-ai-assistant-room-DtydafHF.js} +1 -1
  214. package/bundled-test-harness/assets/{open-create-listing-modal-B_BmJftu.js → open-create-listing-modal-DFq_N8TO.js} +2 -2
  215. package/bundled-test-harness/assets/{open-create-listing-modal-test-6MyQhXSU.js → open-create-listing-modal-test-uN58T3rI.js} +4 -4
  216. package/bundled-test-harness/assets/{open-workspace-DkBqfXKN.js → open-workspace-DRfx-nzh.js} +1 -1
  217. package/bundled-test-harness/assets/{open-workspace-test-dsRMCj7i.js → open-workspace-test-DXVsvBFJ.js} +4 -4
  218. package/bundled-test-harness/assets/{operator-mode-acceptance-test-C5GXSsmz.js → operator-mode-acceptance-test-BxIq2xSS.js} +4 -4
  219. package/bundled-test-harness/assets/{operator-mode-card-catalog-test-DaKnyy41.js → operator-mode-card-catalog-test-xFYx9_ng.js} +5 -5
  220. package/bundled-test-harness/assets/{operator-mode-links-test-lnjsXbN1.js → operator-mode-links-test-qhXWmz-S.js} +5 -5
  221. package/bundled-test-harness/assets/{operator-mode-state-service-test-CEyCnXsp.js → operator-mode-state-service-test-BdA_uvaY.js} +2 -2
  222. package/bundled-test-harness/assets/{operator-mode-test-56NtKCnB.js → operator-mode-test-D3EyTwq3.js} +5 -5
  223. package/bundled-test-harness/assets/{operator-mode-ui-test-BrNtGTWI.js → operator-mode-ui-test-CSrk6Q0A.js} +5 -5
  224. package/bundled-test-harness/assets/{overlay-menu-items-test-B2xpBLe2.js → overlay-menu-items-test-CuqqLsQT.js} +4 -4
  225. package/bundled-test-harness/assets/{panel-FWXvJYHW.js → panel-C2rtbx32.js} +10 -10
  226. package/bundled-test-harness/assets/{past-sessions-test-C3owclyz.js → past-sessions-test-B9SCbbXz.js} +5 -5
  227. package/bundled-test-harness/assets/{patch-card-instance-DKSTQ2Eb.js → patch-card-instance-BgWqjUFi.js} +2 -2
  228. package/bundled-test-harness/assets/{patch-code-CSBFGIXZ.js → patch-code-BksUYDfB.js} +6 -6
  229. package/bundled-test-harness/assets/{patch-code-test-B2H2CGl2.js → patch-code-test-CcFr9pDb.js} +5 -5
  230. package/bundled-test-harness/assets/{patch-fields-M84xrupT.js → patch-fields-CnL9_mBJ.js} +2 -2
  231. package/bundled-test-harness/assets/{patch-fields-test-PSdSxQEB.js → patch-fields-test-BW1gzcJM.js} +4 -4
  232. package/bundled-test-harness/assets/{patch-instance-test-D6osmVEp.js → patch-instance-test-DKqA9gQ6.js} +4 -4
  233. package/bundled-test-harness/assets/{persist-module-inspector-view-C8j_zhAt.js → persist-module-inspector-view-DJJZQppZ.js} +1 -1
  234. package/bundled-test-harness/assets/{persist-module-inspector-view-test-CjOnNnXZ.js → persist-module-inspector-view-test-D1eKBUkt.js} +5 -5
  235. package/bundled-test-harness/assets/{phone-number-field-test-CydScvJz.js → phone-number-field-test-D1is5RWv.js} +4 -4
  236. package/bundled-test-harness/assets/{plan-install-test-BRHg4HjL.js → plan-install-test-DB-PrjPR.js} +1 -1
  237. package/bundled-test-harness/assets/{playground-Dx4gQbY3.js → playground-B0iQV7dU.js} +2 -2
  238. package/bundled-test-harness/assets/{png-image-def-test-Ddxb0URN.js → png-image-def-test-DnOsJGs6.js} +2 -2
  239. package/bundled-test-harness/assets/{prerender-fetch-headers-qvzyCKjm.js → prerender-fetch-headers-BIKTWBSv.js} +1 -1
  240. package/bundled-test-harness/assets/{prerender-file-extract-test-B1yHPkAJ.js → prerender-file-extract-test-DhOLozj2.js} +2 -2
  241. package/bundled-test-harness/assets/{prerender-html-test-CzH4x1kc.js → prerender-html-test-DKVhQZA9.js} +2 -2
  242. package/bundled-test-harness/assets/{prerender-meta-test-Ccw0DQlE.js → prerender-meta-test-CnRNyqSz.js} +2 -2
  243. package/bundled-test-harness/assets/{prerender-module-test-738ExYbY.js → prerender-module-test-D163QcrZ.js} +2 -2
  244. package/bundled-test-harness/assets/{prerendered-card-search-test-RYZzTGXj.js → prerendered-card-search-test-DX-8yabJ.js} +4 -4
  245. package/bundled-test-harness/assets/{preview-format-DsWxdEhq.js → preview-format-snitJHQF.js} +3 -3
  246. package/bundled-test-harness/assets/{preview-format-test-evn_uUJr.js → preview-format-test-H7bnpdlC.js} +4 -4
  247. package/bundled-test-harness/assets/{preview-test-BxdG0eHo.js → preview-test-B7u6uWJR.js} +4 -4
  248. package/bundled-test-harness/assets/{qs-test-DmA8Etoi.js → qs-test-COb0mre6.js} +1 -1
  249. package/bundled-test-harness/assets/{query-builder-CdZqyMwT.js → query-builder-QKqna_9C.js} +1 -1
  250. package/bundled-test-harness/assets/{query-field-barrier-test-DA1kcLR0.js → query-field-barrier-test-Cypj-MhK.js} +4 -4
  251. package/bundled-test-harness/assets/{query-field-error-sentinel-test-ByyEWqCo.js → query-field-error-sentinel-test-Dnqn8TdN.js} +4 -4
  252. package/bundled-test-harness/assets/{query-field-normalization-test-Bgbi_51u.js → query-field-normalization-test-B7D8SHBP.js} +1 -1
  253. package/bundled-test-harness/assets/{query-field-schema-test-Bsskmo54.js → query-field-schema-test-DIYY3-c8.js} +3 -3
  254. package/bundled-test-harness/assets/{query-fields-test-BE96Vi9g.js → query-fields-test-k-VBF9PE.js} +3 -3
  255. package/bundled-test-harness/assets/{queue-test-tiY1ywnP.js → queue-test-B_74vXZE.js} +3 -3
  256. package/bundled-test-harness/assets/{read-card-for-ai-assistant-CdcgayNl.js → read-card-for-ai-assistant-BfSsTYj2.js} +2 -2
  257. package/bundled-test-harness/assets/{read-card-for-ai-assistant-test-DqgidZgp.js → read-card-for-ai-assistant-test-SyL9F_La.js} +4 -4
  258. package/bundled-test-harness/assets/{read-file-for-ai-assistant-CRy_nsMY.js → read-file-for-ai-assistant-AEVCUknz.js} +1 -1
  259. package/bundled-test-harness/assets/{read-file-for-ai-assistant-test-2GNDAHYO.js → read-file-for-ai-assistant-test-nLPp49U2.js} +4 -4
  260. package/bundled-test-harness/assets/{read-source-BjarqWPc.js → read-source-C2sP8K8Z.js} +2 -2
  261. package/bundled-test-harness/assets/{read-source-test-J_0DA5-Z.js → read-source-test-DBELJkhN.js} +4 -4
  262. package/bundled-test-harness/assets/{read-text-file-DcNZ5WyP.js → read-text-file-CACAhnsS.js} +1 -1
  263. package/bundled-test-harness/assets/{read-text-file-test-DYXrQjjo.js → read-text-file-test-CP1JuWlX.js} +4 -4
  264. package/bundled-test-harness/assets/{realm-TrRQcvne.js → realm-Dr4iygv_.js} +2 -2
  265. package/bundled-test-harness/assets/{realm-field-test-DWk3eyM5.js → realm-field-test-Cice2mYk.js} +4 -4
  266. package/bundled-test-harness/assets/{realm-index-card-id-test-DGRfegwe.js → realm-index-card-id-test-BzpozdWc.js} +1 -1
  267. package/bundled-test-harness/assets/{realm-indexing-test-Dacd_v-o.js → realm-indexing-test-C0YSXziR.js} +4 -4
  268. package/bundled-test-harness/assets/{realm-paths-test-CmX-ohTC.js → realm-paths-test-DV_g07rF.js} +1 -1
  269. package/bundled-test-harness/assets/{realm-querying-test-PrFnam40.js → realm-querying-test-B526abM0.js} +2 -2
  270. package/bundled-test-harness/assets/{realm-test-BEC9kS2u.js → realm-test-D8UN5X-w.js} +4 -4
  271. package/bundled-test-harness/assets/{reasoning-test-CKUAM1PP.js → reasoning-test-ClIOvdkX.js} +5 -5
  272. package/bundled-test-harness/assets/{recent-files-test-BQnupf2h.js → recent-files-test-C2J_dJUD.js} +2 -2
  273. package/bundled-test-harness/assets/{reindex-realm-H_WSVV8S.js → reindex-realm-C6fVI3zx.js} +1 -1
  274. package/bundled-test-harness/assets/{reindex-realm-test-B_lAlgmN.js → reindex-realm-test-DMphy1g6.js} +5 -5
  275. package/bundled-test-harness/assets/{relationship-loading-state-test-KN_1YWsk.js → relationship-loading-state-test-BWrZdLlZ.js} +3 -3
  276. package/bundled-test-harness/assets/{render-component-D1hfd-Ye.js → render-component-BII_KnyK.js} +1 -1
  277. package/bundled-test-harness/assets/{render-component-UJivgB7-.js → render-component-g_fhz2dX.js} +1 -1
  278. package/bundled-test-harness/assets/{render-error-DhmbPkQe.js → render-error-BS8ObrlR.js} +1 -1
  279. package/bundled-test-harness/assets/{render-error-test-BFK0aacW.js → render-error-test-BUAJJlUi.js} +1 -1
  280. package/bundled-test-harness/assets/{render-service-DJTSpXwH.js → render-service-tD9jJXUM.js} +2 -2
  281. package/bundled-test-harness/assets/{render-service-test-DJ4-WSUt.js → render-service-test-BKkCjErY.js} +2 -2
  282. package/bundled-test-harness/assets/{rendered-markdown-CtDl90fb.js → rendered-markdown-ColekGTF.js} +2 -2
  283. package/bundled-test-harness/assets/{rendered-markdown-test-B6NIZ9CV.js → rendered-markdown-test-B4CWIo02.js} +4 -4
  284. package/bundled-test-harness/assets/{rich-markdown-field-test-1O22gpZe.js → rich-markdown-field-test-B5u6D3Nk.js} +4 -4
  285. package/bundled-test-harness/assets/{room-message-test-tTvTm3D2.js → room-message-test-0eJSqQfu.js} +4 -4
  286. package/bundled-test-harness/assets/{runtime-common-C4VFkqFL.js → runtime-common-C7uLt5dN.js} +1 -1
  287. package/bundled-test-harness/assets/{sanitize-module-list-B_rgb68b.js → sanitize-module-list-AEPGKeo5.js} +4 -4
  288. package/bundled-test-harness/assets/{sanitize-module-list-test-C7Lr24Go.js → sanitize-module-list-test-rH6OqjKh.js} +5 -5
  289. package/bundled-test-harness/assets/{save-card-BC8zB2ly.js → save-card-DTRPVUI4.js} +2 -2
  290. package/bundled-test-harness/assets/{schema-editor-test-Dptqev7u.js → schema-editor-test-DH4MLFCD.js} +3 -3
  291. package/bundled-test-harness/assets/{schema-generation-test-D2KWt7Pv.js → schema-generation-test-BZMkX7VA.js} +3 -3
  292. package/bundled-test-harness/assets/{scrolling-test-DLKscVU_.js → scrolling-test-CFTyLG8X.js} +6 -6
  293. package/bundled-test-harness/assets/{search-DWY9zh2s.js → search-CZA7dEFS.js} +1 -1
  294. package/bundled-test-harness/assets/{search-and-choose-DnPumZQn.js → search-and-choose-BeBlVt7F.js} +4 -4
  295. package/bundled-test-harness/assets/{search-and-choose-test-BN1veYUt.js → search-and-choose-test-CcbVyp4c.js} +5 -5
  296. package/bundled-test-harness/assets/{search-cache-key-CSNMyR3o.js → search-cache-key-DrGejP2z.js} +1 -1
  297. package/bundled-test-harness/assets/{search-cache-key-test-CiLIwrHc.js → search-cache-key-test-BYt46iNT.js} +1 -1
  298. package/bundled-test-harness/assets/search-cards-CJtCe5m9.js +2 -0
  299. package/bundled-test-harness/assets/{search-cards-9Q2YJt5w.js → search-cards-SZdPvkdH.js} +2 -2
  300. package/bundled-test-harness/assets/{search-command-test-CbgNNENx.js → search-command-test-BRIJPr54.js} +3 -3
  301. package/bundled-test-harness/assets/{search-correlation-id-test-D3kMjxyB.js → search-correlation-id-test-B298Tfux.js} +2 -2
  302. package/bundled-test-harness/assets/{search-data-tBubQy1V.js → search-data-DqLTfst9.js} +1 -1
  303. package/bundled-test-harness/assets/{search-data-test-CJPFgMgm.js → search-data-test-DHV2Fd4S.js} +5 -5
  304. package/bundled-test-harness/assets/{search-google-images--4TnEd5v.js → search-google-images-DNAUMy6E.js} +2 -2
  305. package/bundled-test-harness/assets/{search-google-images-test-Izl8K73I.js → search-google-images-test-CNrazllP.js} +4 -4
  306. package/bundled-test-harness/assets/{search-in-flight-key-mBwT-GaC.js → search-in-flight-key-CkNzMiOD.js} +1 -1
  307. package/bundled-test-harness/assets/{search-in-flight-key-test-hH6KJW_h.js → search-in-flight-key-test-Dy3bU2c1.js} +1 -1
  308. package/bundled-test-harness/assets/{search-replace-block-parsing-FmIF3zsm.js → search-replace-block-parsing-CNxbJ4s9.js} +1 -1
  309. package/bundled-test-harness/assets/{search-result-header-CqxT6aTO.js → search-result-header-UauOyqjs.js} +1 -1
  310. package/bundled-test-harness/assets/{search-test-DcrFvXwI.js → search-test-DL1-gD-G.js} +5 -5
  311. package/bundled-test-harness/assets/{send-ai-assistant-message-BuBd8Mx-.js → send-ai-assistant-message-DP_3ppA-.js} +2 -2
  312. package/bundled-test-harness/assets/{send-ai-assistant-message-test-DWXRa3Y-.js → send-ai-assistant-message-test-CyEkQ5pD.js} +4 -4
  313. package/bundled-test-harness/assets/{send-bot-trigger-event-Cg-bm0R3.js → send-bot-trigger-event-Bb1z75GO.js} +2 -2
  314. package/bundled-test-harness/assets/{send-bot-trigger-event-test-CYGIA6ym.js → send-bot-trigger-event-test-CAsK28m-.js} +4 -4
  315. package/bundled-test-harness/assets/{send-request-via-proxy-CYiIpEJW.js → send-request-via-proxy-BLX5A-HL.js} +1 -1
  316. package/bundled-test-harness/assets/{send-request-via-proxy-test-cpFVaT41.js → send-request-via-proxy-test-DpMlRvPv.js} +5 -5
  317. package/bundled-test-harness/assets/{sending-test-Buf-KS5F.js → sending-test-BOeGYcTU.js} +5 -5
  318. package/bundled-test-harness/assets/{serialization-test-DJAK7xTz.js → serialization-test-gY2QQVxS.js} +5 -5
  319. package/bundled-test-harness/assets/{set-user-system-card-pThrh9fY.js → set-user-system-card-Db6rI-Qt.js} +1 -1
  320. package/bundled-test-harness/assets/{set-user-system-card-test-CAlvXhB5.js → set-user-system-card-test-BE3y5GNK.js} +4 -4
  321. package/bundled-test-harness/assets/{setup-DWTRm6-M.js → setup-B8O9JQKq.js} +2 -2
  322. package/bundled-test-harness/assets/{setup-C1J8MUEX.js → setup-BMqGUBDK.js} +1 -1
  323. package/bundled-test-harness/assets/{show-card-BEv8y5hM.js → show-card-CVJLnzLa.js} +2 -2
  324. package/bundled-test-harness/assets/{show-card-test-Bl8Oe_gX.js → show-card-test-BfJNnWMy.js} +5 -5
  325. package/bundled-test-harness/assets/{show-file-BKi5V96q.js → show-file-CyRiY_6z.js} +2 -2
  326. package/bundled-test-harness/assets/{skills-test-CDEG5JeR.js → skills-test-CqhnZxBi.js} +6 -6
  327. package/bundled-test-harness/assets/{spec-test-jvPRUjMN.js → spec-test-BUKNn_1q.js} +4 -4
  328. package/bundled-test-harness/assets/{stack-item-D6iC0SmX.js → stack-item-Bn9IwoUX.js} +1 -1
  329. package/bundled-test-harness/assets/{store-Dxz_gmhp.js → store-Di6ANQV5.js} +8 -8
  330. package/bundled-test-harness/assets/{store-add-ByTnK3u8.js → store-add-DeDtbGwk.js} +1 -1
  331. package/bundled-test-harness/assets/{store-add-test-Bm4HrP9c.js → store-add-test-BR1M-IDR.js} +5 -5
  332. package/bundled-test-harness/assets/{store-test-Bj4IuwQu.js → store-test-DaqI-HRh.js} +6 -6
  333. package/bundled-test-harness/assets/{summarize-session-500WHol8.js → summarize-session-CqSvkuVZ.js} +2 -2
  334. package/bundled-test-harness/assets/{summarize-session-test-cRvpu5lJ.js → summarize-session-test-BMg54JGF.js} +5 -5
  335. package/bundled-test-harness/assets/{svg-image-def-test-DQ8Ql3EL.js → svg-image-def-test-xNyIKRPV.js} +2 -2
  336. package/bundled-test-harness/assets/{switch-submode-kOf_nFi3.js → switch-submode-BwkCfnCZ.js} +3 -3
  337. package/bundled-test-harness/assets/{switch-submode-test-C2Y4oqpm.js → switch-submode-test-BKvpODUD.js} +5 -5
  338. package/bundled-test-harness/assets/{tests-B6EJFQkW.js → tests-x4_eRjiT.js} +243 -243
  339. package/bundled-test-harness/assets/{text-file-def-test-B6-yCZvN.js → text-file-def-test-CsXiyVfI.js} +2 -2
  340. package/bundled-test-harness/assets/{text-input-validator-test-DLg_kvR2.js → text-input-validator-test-D4s_laO7.js} +5 -5
  341. package/bundled-test-harness/assets/{text-suggestion-BxrzygIw.js → text-suggestion-CFhIq7-u.js} +1 -1
  342. package/bundled-test-harness/assets/{text-suggestion-test-5KxZro39.js → text-suggestion-test-CkLf1xuS.js} +3 -3
  343. package/bundled-test-harness/assets/{theme-card-test-hb6jQ87w.js → theme-card-test-D-6L6OfD.js} +2 -2
  344. package/bundled-test-harness/assets/{transform-cards-CrMkw0yw.js → transform-cards-D-jCQJ4T.js} +5 -5
  345. package/bundled-test-harness/assets/{transform-cards-test-DkqQcVZp.js → transform-cards-test-CRZF2gqZ.js} +6 -6
  346. package/bundled-test-harness/assets/{ts-file-def-test-CI7L_bvT.js → ts-file-def-test-CDo6ojCf.js} +2 -2
  347. package/bundled-test-harness/assets/{unregister-bot-B2kj8JBx.js → unregister-bot-D7FI7Oro.js} +1 -1
  348. package/bundled-test-harness/assets/{update-room-skills-test-D9O4Kn29.js → update-room-skills-test-BnSgVFwT.js} +5 -5
  349. package/bundled-test-harness/assets/{url-test-BpgeOWil.js → url-test-CK-HB0qu.js} +1 -1
  350. package/bundled-test-harness/assets/{use-ai-assistant-test-BP46uIwZ.js → use-ai-assistant-test-BuJXEP8H.js} +5 -5
  351. package/bundled-test-harness/assets/{utils-Cy0QY7GC.js → utils-C7xS5xXC.js} +1 -1
  352. package/bundled-test-harness/assets/{validate-realm-BB87lhM0.js → validate-realm-BbA9USE1.js} +3 -3
  353. package/bundled-test-harness/assets/{validate-realm-test-BUqQjz2C.js → validate-realm-test-Cx7MOtS8.js} +5 -5
  354. package/bundled-test-harness/assets/{wav-audio-def-test-1TPCWe08.js → wav-audio-def-test-DIo2GzQL.js} +2 -2
  355. package/bundled-test-harness/assets/{webp-image-def-test-CVGCY-QM.js → webp-image-def-test-BQsV0_De.js} +2 -2
  356. package/bundled-test-harness/assets/{workspace-BryQJQE7.js → workspace-D0smc8vv.js} +1 -1
  357. package/bundled-test-harness/assets/{workspace-chooser-delete-test-CtyIvufo.js → workspace-chooser-delete-test-peDXmnQf.js} +2 -2
  358. package/bundled-test-harness/assets/{workspace-chooser-test-C49u0Z6H.js → workspace-chooser-test-DS2RtTEF.js} +3 -3
  359. package/bundled-test-harness/assets/{workspace-delete-multiple-test-SO2KO-Rz.js → workspace-delete-multiple-test-DTbjRSzN.js} +3 -3
  360. package/bundled-test-harness/assets/{workspace-delete-summary-test-DsHrKsgn.js → workspace-delete-summary-test-B--ink4m.js} +1 -1
  361. package/bundled-test-harness/assets/{write-binary-file-DU-i8suO.js → write-binary-file-B3j05J3o.js} +2 -2
  362. package/bundled-test-harness/assets/{write-binary-file-test-CFjBRsVy.js → write-binary-file-test-A3TQ5lFn.js} +4 -4
  363. package/bundled-test-harness/assets/{write-text-file-z03Li_VD.js → write-text-file-C5LYv8hi.js} +2 -2
  364. package/bundled-test-harness/assets/{write-text-file-test-D7wxiOYm.js → write-text-file-test-D_rjNDsT.js} +4 -4
  365. package/bundled-test-harness/index.html +108 -108
  366. package/bundled-test-harness/tests/index.html +111 -111
  367. package/bundled-types/host-app/commands/index.ts +0 -42
  368. package/bundled-types/host-app/commands/screenshot-card.ts +10 -5
  369. package/package.json +3 -1
  370. package/bundled-test-harness/assets/adapter-CYIVugqe.js +0 -2
  371. package/bundled-test-harness/assets/live-test-Ly6rXYrE.js +0 -2
  372. package/bundled-test-harness/assets/search-cards-CEkx06L6.js +0 -2
  373. package/bundled-types/host-app/commands/listing-action-init.ts +0 -105
  374. package/bundled-types/host-app/commands/listing-create.ts +0 -663
  375. package/bundled-types/host-app/commands/listing-generate-example.ts +0 -92
  376. package/bundled-types/host-app/commands/listing-install.ts +0 -241
  377. package/bundled-types/host-app/commands/listing-remix.ts +0 -149
  378. package/bundled-types/host-app/commands/listing-update-specs.ts +0 -116
  379. package/bundled-types/host-app/commands/listing-use.ts +0 -108
@@ -1,92 +0,0 @@
1
- import { service } from '@ember/service';
2
-
3
- import { resolveAdoptsFrom } from '@cardstack/runtime-common/code-ref';
4
- import { realmURL } from '@cardstack/runtime-common/constants';
5
-
6
- import type { CardDef } from 'https://cardstack.com/base/card-api';
7
- import type * as BaseCommandModule from 'https://cardstack.com/base/command';
8
-
9
- import HostBaseCommand from '../lib/host-base-command';
10
-
11
- import { GenerateExampleCardsOneShotCommand } from './generate-example-cards';
12
- import GetDefaultWritableRealmCommand from './get-default-writable-realm';
13
-
14
- import type NetworkService from '../services/network';
15
-
16
- export default class ListingGenerateExampleCommand extends HostBaseCommand<
17
- typeof BaseCommandModule.GenerateListingExampleInput,
18
- typeof BaseCommandModule.CreateInstanceResult
19
- > {
20
- @service declare private network: NetworkService;
21
-
22
- static actionVerb = 'Generate Example';
23
- description = 'Generate a new example card for the listing and link it.';
24
-
25
- requireInputFields = ['listing', 'referenceExample'];
26
-
27
- async getInputType() {
28
- const commandModule = await this.loadCommandModule();
29
- const { GenerateListingExampleInput } = commandModule;
30
- return GenerateListingExampleInput;
31
- }
32
-
33
- protected async run(
34
- input: BaseCommandModule.GenerateListingExampleInput,
35
- ): Promise<BaseCommandModule.CreateInstanceResult> {
36
- const listing = input.listing as CardDef | undefined;
37
- if (!listing || !listing.id) {
38
- throw new Error('Listing card is required and must have an id');
39
- }
40
-
41
- const referenceExample = input.referenceExample as CardDef | undefined;
42
- if (!referenceExample) {
43
- throw new Error('Listing must include a reference example');
44
- }
45
-
46
- const codeRef = resolveAdoptsFrom(
47
- referenceExample,
48
- this.network.virtualNetwork,
49
- );
50
- if (!codeRef) {
51
- throw new Error(
52
- 'Unable to resolve card definition from reference example',
53
- );
54
- }
55
-
56
- const { realmIdentifier: defaultWritableRealmPath } =
57
- await new GetDefaultWritableRealmCommand(this.commandContext).execute();
58
- const targetRealm =
59
- input.realm ||
60
- (referenceExample as any)[realmURL]?.href ||
61
- listing[realmURL]?.href ||
62
- defaultWritableRealmPath ||
63
- undefined;
64
-
65
- const generator = new GenerateExampleCardsOneShotCommand(
66
- this.commandContext,
67
- );
68
-
69
- const result = await generator.execute({
70
- codeRef,
71
- realm: targetRealm,
72
- count: 1,
73
- exampleCard: referenceExample,
74
- });
75
- const createdExample = result.createdCard as CardDef | undefined;
76
- if (!createdExample) {
77
- throw new Error('Failed to create example card for listing');
78
- }
79
-
80
- this.linkListingExample(listing, createdExample);
81
- return result;
82
- }
83
-
84
- private linkListingExample(listing: CardDef, exampleCard: CardDef) {
85
- // TODO: autoSave should take over persisting this relationship; for now we only update the local instance.
86
- const currentExamples = Array.isArray((listing as any).examples)
87
- ? [...((listing as any).examples as CardDef[])]
88
- : [];
89
- currentExamples.push(exampleCard);
90
- (listing as any).examples = currentExamples;
91
- }
92
- }
@@ -1,241 +0,0 @@
1
- import { service } from '@ember/service';
2
-
3
- import {
4
- type ResolvedCodeRef,
5
- join,
6
- planModuleInstall,
7
- planInstanceInstall,
8
- PlanBuilder,
9
- extractRelationshipIds,
10
- type Relationship,
11
- type RealmResourceIdentifier,
12
- } from '@cardstack/runtime-common';
13
- import { logger } from '@cardstack/runtime-common';
14
- import type {
15
- ListingPathResolver,
16
- ModuleResource,
17
- LooseCardResource,
18
- } from '@cardstack/runtime-common';
19
- import type { Listing } from '@cardstack/runtime-common';
20
- import type { CopyInstanceMeta } from '@cardstack/runtime-common/catalog';
21
- import type { CopyModuleMeta } from '@cardstack/runtime-common/catalog';
22
-
23
- import type { CardDef } from 'https://cardstack.com/base/card-api';
24
- import type * as BaseCommandModule from 'https://cardstack.com/base/command';
25
-
26
- import HostBaseCommand from '../lib/host-base-command';
27
-
28
- import ExecuteAtomicOperationsCommand from './execute-atomic-operations';
29
- import FetchCardJsonCommand from './fetch-card-json';
30
- import GetCardCommand from './get-card';
31
- import ReadSourceCommand from './read-source';
32
- import SerializeCardCommand from './serialize-card';
33
- import ValidateRealmCommand from './validate-realm';
34
-
35
- import type NetworkService from '../services/network';
36
-
37
- const log = logger('catalog:install');
38
-
39
- export default class ListingInstallCommand extends HostBaseCommand<
40
- typeof BaseCommandModule.ListingInstallInput,
41
- typeof BaseCommandModule.ListingInstallResult
42
- > {
43
- @service declare private network: NetworkService;
44
-
45
- description =
46
- 'Install catalog listing with bringing them to code mode, and then remixing them via AI';
47
-
48
- async getInputType() {
49
- let commandModule = await this.loadCommandModule();
50
- const { ListingInstallInput } = commandModule;
51
- return ListingInstallInput;
52
- }
53
-
54
- requireInputFields = ['realm', 'listing'];
55
-
56
- protected async run(
57
- input: BaseCommandModule.ListingInstallInput,
58
- ): Promise<BaseCommandModule.ListingInstallResult> {
59
- let { realm, listing: listingInput } = input;
60
-
61
- let { realmIdentifier } = await new ValidateRealmCommand(
62
- this.commandContext,
63
- ).execute({ realmIdentifier: realm });
64
-
65
- // this is intentionally to type because base command cannot interpret Listing type from catalog
66
- const listing = listingInput as Listing;
67
-
68
- let examplesToInstall = listing.examples;
69
- if (listing.examples?.length) {
70
- examplesToInstall = await this.expandInstances(listing.examples);
71
- }
72
-
73
- // side-effects
74
- let exampleCardId: string | undefined;
75
- let selectedCodeRef: ResolvedCodeRef | undefined;
76
- let skillCardId: string | undefined;
77
-
78
- const builder = new PlanBuilder(
79
- realmIdentifier,
80
- listing,
81
- this.network.virtualNetwork,
82
- );
83
-
84
- let vn = this.network.virtualNetwork;
85
- builder
86
- .addIf(listing.specs?.length > 0, (resolver: ListingPathResolver) => {
87
- let r = planModuleInstall(listing.specs, resolver, vn);
88
- selectedCodeRef = r.modulesCopy[0].targetCodeRef;
89
- return r;
90
- })
91
- .addIf(examplesToInstall?.length > 0, (resolver: ListingPathResolver) => {
92
- let r = planInstanceInstall(examplesToInstall, resolver, vn);
93
- let firstInstance = r.instancesCopy[0];
94
- exampleCardId = join(realmIdentifier, firstInstance.lid);
95
- selectedCodeRef = firstInstance.targetCodeRef;
96
- return r;
97
- })
98
- .addIf(listing.skills?.length > 0, (resolver: ListingPathResolver) => {
99
- let r = planInstanceInstall(listing.skills, resolver, vn);
100
- skillCardId = join(realmIdentifier, r.instancesCopy[0].lid);
101
- return r;
102
- });
103
-
104
- const plan = builder.build();
105
-
106
- let sourceOperations = await Promise.all(
107
- plan.modulesToInstall.map(async (moduleMeta: CopyModuleMeta) => {
108
- let { sourceModule, targetModule } = moduleMeta;
109
- let { content } = await new ReadSourceCommand(
110
- this.commandContext,
111
- ).execute({ path: sourceModule });
112
- let moduleResource: ModuleResource = {
113
- type: 'source',
114
- attributes: { content },
115
- meta: {},
116
- };
117
- let href = targetModule + '.gts';
118
- return { op: 'add' as const, href, data: moduleResource };
119
- }),
120
- );
121
-
122
- let instanceOperations = await Promise.all(
123
- plan.instancesCopy.map(async (copyInstanceMeta: CopyInstanceMeta) => {
124
- let { sourceCard } = copyInstanceMeta;
125
- let { document: doc } = await new FetchCardJsonCommand(
126
- this.commandContext,
127
- ).execute({ cardIdentifier: sourceCard.id });
128
- if (!doc || !('data' in doc)) {
129
- throw new Error('We are only expecting single documents returned');
130
- }
131
- delete (doc as any).data.id;
132
- delete (doc as any).included;
133
- let cardResource: LooseCardResource = (doc as any)
134
- .data as LooseCardResource;
135
- let href = join(realmIdentifier, copyInstanceMeta.lid) + '.json';
136
- return { op: 'add' as const, href, data: cardResource };
137
- }),
138
- );
139
-
140
- const operations = [...sourceOperations, ...instanceOperations];
141
-
142
- let atomicResults;
143
- try {
144
- ({ results: atomicResults } = await new ExecuteAtomicOperationsCommand(
145
- this.commandContext,
146
- ).execute({ realmIdentifier, operations }));
147
- } catch (e: any) {
148
- if (
149
- typeof e?.message === 'string' &&
150
- e.message.includes('filter refers to a nonexistent type')
151
- ) {
152
- throw new Error(
153
- 'Please click "Update Specs" on the listing and make sure all specs are linked.',
154
- );
155
- }
156
- throw e;
157
- }
158
-
159
- let writtenFiles = (atomicResults as Array<Record<string, any>>)
160
- .map((r) => r.data?.id)
161
- .filter(Boolean);
162
- log.debug('=== Final Results ===');
163
- log.debug(JSON.stringify(writtenFiles, null, 2));
164
-
165
- let commandModule = await this.loadCommandModule();
166
- const { ListingInstallResult } = commandModule;
167
- return new ListingInstallResult({
168
- selectedCodeRef,
169
- exampleCardId,
170
- skillCardId,
171
- });
172
- }
173
-
174
- // Walk relationships by fetching linked cards and enqueueing their ids.
175
- private async expandInstances(instances: CardDef[]): Promise<CardDef[]> {
176
- let instancesById = new Map<RealmResourceIdentifier, CardDef>();
177
- let visited = new Set<RealmResourceIdentifier>();
178
- let queue: RealmResourceIdentifier[] = instances
179
- .map((instance) => instance.id)
180
- .filter((id): id is RealmResourceIdentifier => typeof id === 'string');
181
-
182
- // - Queue of ids to traverse; visited prevents duplicate relationship ids.
183
- // - Each loop extracts relationship ids and enqueues them, so we descend
184
- // through the relationship graph breadth-first.
185
- while (queue.length > 0) {
186
- let id = queue.shift();
187
- if (!id || visited.has(id)) {
188
- continue;
189
- }
190
- visited.add(id);
191
-
192
- let instance = (await new GetCardCommand(this.commandContext).execute({
193
- cardId: id,
194
- })) as CardDef;
195
- instancesById.set(instance.id ?? id, instance);
196
-
197
- let { json: serialized } = await new SerializeCardCommand(
198
- this.commandContext,
199
- ).execute({ cardId: id });
200
- let baseUrl: string = (serialized as any)?.data?.id ?? id;
201
- let relationships: Record<string, Relationship | Relationship[]> =
202
- (serialized as any)?.data?.relationships ?? {};
203
-
204
- let entries = Object.entries(relationships);
205
- log.debug(`Relationships for ${id}:`);
206
- if (entries.length === 0) {
207
- log.debug('[]');
208
- continue;
209
- }
210
- let summary = entries.map(([field, rel]) => {
211
- let rels = Array.isArray(rel) ? rel : [rel];
212
- return {
213
- field,
214
- relationships: rels.map((relationship) => ({
215
- links: relationship.links ?? null,
216
- data: relationship.data ?? null,
217
- })),
218
- };
219
- });
220
- log.debug(JSON.stringify(summary, null, 2));
221
-
222
- for (let rel of Object.values(relationships)) {
223
- let rels = Array.isArray(rel) ? rel : [rel];
224
- for (let relationship of rels) {
225
- let relatedIds = extractRelationshipIds(
226
- relationship,
227
- baseUrl,
228
- this.network.virtualNetwork,
229
- );
230
- for (let relatedId of relatedIds) {
231
- if (!visited.has(relatedId)) {
232
- queue.push(relatedId);
233
- }
234
- }
235
- }
236
- }
237
- }
238
-
239
- return [...instancesById.values()];
240
- }
241
- }
@@ -1,149 +0,0 @@
1
- import {
2
- isResolvedCodeRef,
3
- type ResolvedCodeRef,
4
- } from '@cardstack/runtime-common';
5
- import type { Listing } from '@cardstack/runtime-common';
6
- import { DEFAULT_CODING_LLM } from '@cardstack/runtime-common/matrix-constants';
7
-
8
- import type * as BaseCommandModule from 'https://cardstack.com/base/command';
9
-
10
- import HostBaseCommand from '../lib/host-base-command';
11
-
12
- import { skillCardURL, devSkillId, envSkillId } from '../lib/utils';
13
-
14
- import UseAiAssistantCommand from './ai-assistant';
15
- import ListingInstallCommand from './listing-install';
16
- import PersistModuleInspectorViewCommand from './persist-module-inspector-view';
17
- import SwitchSubmodeCommand from './switch-submode';
18
- import UpdateCodePathWithSelectionCommand from './update-code-path-with-selection';
19
- import UpdatePlaygroundSelectionCommand from './update-playground-selection';
20
- import ValidateRealmCommand from './validate-realm';
21
-
22
- export default class RemixCommand extends HostBaseCommand<
23
- typeof BaseCommandModule.ListingInstallInput
24
- > {
25
- static actionVerb = 'Remix';
26
-
27
- description =
28
- 'Install catalog listing with bringing them to code mode, and then remixing them via AI';
29
-
30
- async getInputType() {
31
- let commandModule = await this.loadCommandModule();
32
- const { ListingInstallInput } = commandModule;
33
- return ListingInstallInput;
34
- }
35
-
36
- requireInputFields = ['realm', 'listing'];
37
-
38
- private isThemeListing(listing: Listing): boolean {
39
- return listing?.constructor?.name === 'ThemeListing';
40
- }
41
-
42
- private async navigateView(options: {
43
- listing: Listing;
44
- selectedCodeRef?: ResolvedCodeRef;
45
- exampleCardId?: string;
46
- skillCardId?: string;
47
- }) {
48
- const { listing, selectedCodeRef, exampleCardId, skillCardId } = options;
49
-
50
- if (this.isThemeListing(listing)) {
51
- if (exampleCardId) {
52
- await new SwitchSubmodeCommand(this.commandContext).execute({
53
- submode: 'code',
54
- codePath: `${exampleCardId}.json`,
55
- });
56
- }
57
- return;
58
- }
59
-
60
- if (selectedCodeRef && isResolvedCodeRef(selectedCodeRef)) {
61
- const codePath = selectedCodeRef.module;
62
-
63
- if (exampleCardId) {
64
- const moduleId = [selectedCodeRef.module, selectedCodeRef.name].join(
65
- '/',
66
- );
67
- await new UpdatePlaygroundSelectionCommand(this.commandContext).execute(
68
- {
69
- moduleId: moduleId,
70
- cardId: exampleCardId,
71
- format: 'isolated',
72
- fieldIndex: undefined,
73
- },
74
- );
75
-
76
- await new PersistModuleInspectorViewCommand(
77
- this.commandContext,
78
- ).execute({
79
- codePath: codePath + '.gts',
80
- moduleInspectorView: 'preview',
81
- });
82
- }
83
-
84
- await new UpdateCodePathWithSelectionCommand(this.commandContext).execute(
85
- {
86
- codeRef: selectedCodeRef,
87
- localName: selectedCodeRef.name,
88
- fieldName: undefined,
89
- },
90
- );
91
- await new SwitchSubmodeCommand(this.commandContext).execute({
92
- submode: 'code',
93
- codePath: selectedCodeRef.module,
94
- });
95
- } else if ('skills' in listing) {
96
- // A listing can have more than one skill
97
- // The most optimum way for remixing is still to display only the first instance
98
- if (skillCardId) {
99
- await new SwitchSubmodeCommand(this.commandContext).execute({
100
- submode: 'code',
101
- codePath: skillCardId,
102
- });
103
- }
104
- }
105
- }
106
-
107
- protected async run(
108
- input: BaseCommandModule.ListingInstallInput,
109
- ): Promise<undefined> {
110
- let { realm, listing: listingInput } = input;
111
- let { realmIdentifier } = await new ValidateRealmCommand(
112
- this.commandContext,
113
- ).execute({ realmIdentifier: realm });
114
-
115
- // this is intentionally to type because base command cannot interpret Listing type from catalog
116
- const listing = listingInput as Listing;
117
-
118
- const { selectedCodeRef, exampleCardId, skillCardId } =
119
- await new ListingInstallCommand(this.commandContext).execute({
120
- realm: realmIdentifier,
121
- listing,
122
- });
123
- await this.navigateView({
124
- listing,
125
- selectedCodeRef,
126
- exampleCardId,
127
- skillCardId,
128
- });
129
-
130
- let prompt =
131
- 'Remix done! Please suggest two example prompts on how to edit this card.';
132
-
133
- const skillCardIds = [
134
- devSkillId,
135
- envSkillId,
136
- skillCardURL('source-code-editing'),
137
- skillCardURL('catalog-listing'),
138
- ];
139
- await new UseAiAssistantCommand(this.commandContext).execute({
140
- roomId: 'new',
141
- prompt,
142
- openRoom: true,
143
- roomName: `Remixing ${listing.name ?? 'Listing'} `,
144
- attachedCards: [listing],
145
- skillCardIds,
146
- llmModel: DEFAULT_CODING_LLM,
147
- });
148
- }
149
- }
@@ -1,116 +0,0 @@
1
- import { isCardInstance, SupportedMimeType } from '@cardstack/runtime-common';
2
-
3
- import { realmURL as realmURLSymbol } from '@cardstack/runtime-common';
4
-
5
- import type * as BaseCommandModule from 'https://cardstack.com/base/command';
6
- import type { Spec } from 'https://cardstack.com/base/spec';
7
-
8
- import HostBaseCommand from '../lib/host-base-command';
9
-
10
- import AuthedFetchCommand from './authed-fetch';
11
- import CreateSpecCommand from './create-specs';
12
- import SanitizeModuleListCommand from './sanitize-module-list';
13
-
14
- export default class ListingUpdateSpecsCommand extends HostBaseCommand<
15
- typeof BaseCommandModule.ListingUpdateSpecsInput,
16
- typeof BaseCommandModule.ListingUpdateSpecsResult
17
- > {
18
- static actionVerb = 'Update';
19
- description = 'Update listing specs based on example dependencies';
20
- requireInputFields = ['listing'];
21
-
22
- async getInputType() {
23
- const commandModule = await this.loadCommandModule();
24
- let { ListingUpdateSpecsInput } = commandModule;
25
- return ListingUpdateSpecsInput;
26
- }
27
-
28
- private async sanitizeDeps(deps: string[]): Promise<string[]> {
29
- const { moduleIdentifiers } = await new SanitizeModuleListCommand(
30
- this.commandContext,
31
- ).execute({ moduleIdentifiers: deps });
32
- return moduleIdentifiers;
33
- }
34
-
35
- protected async run(
36
- input: BaseCommandModule.ListingUpdateSpecsInput,
37
- ): Promise<BaseCommandModule.ListingUpdateSpecsResult> {
38
- const listing = input.listing;
39
- if (!listing) {
40
- throw new Error('listing is required');
41
- }
42
- if (!isCardInstance(listing)) {
43
- throw new Error('listing must be a valid card instance');
44
- }
45
-
46
- const targetRealm = (listing as any)?.[realmURLSymbol]?.href;
47
-
48
- if (!targetRealm) {
49
- throw new Error('targetRealm is required to update specs');
50
- }
51
-
52
- const exampleId = (listing as any).examples?.[0]?.id;
53
- if (!exampleId) {
54
- throw new Error('No example found in listing to derive specs from');
55
- }
56
-
57
- const { ok, body: jsonApiResponse } = await new AuthedFetchCommand(
58
- this.commandContext,
59
- ).execute({
60
- url: `${targetRealm}_dependencies?url=${encodeURIComponent(exampleId)}`,
61
- acceptHeader: SupportedMimeType.JSONAPI,
62
- });
63
- if (!ok) {
64
- throw new Error('Failed to fetch dependencies for listing');
65
- }
66
-
67
- // Extract dependencies from all entries in the JSONAPI response
68
- const deps: string[] = [];
69
- const responseData = (
70
- jsonApiResponse as {
71
- data?: Array<{ attributes?: { dependencies?: string[] } }>;
72
- }
73
- ).data;
74
- if (responseData && Array.isArray(responseData)) {
75
- for (const entry of responseData) {
76
- if (
77
- entry.attributes?.dependencies &&
78
- Array.isArray(entry.attributes.dependencies)
79
- ) {
80
- deps.push(...entry.attributes.dependencies);
81
- }
82
- }
83
- }
84
-
85
- const sanitizedDeps = await this.sanitizeDeps(deps);
86
- const commandModule = await this.loadCommandModule();
87
- if (!sanitizedDeps.length) {
88
- (listing as any).specs = [];
89
- return new commandModule.ListingUpdateSpecsResult({
90
- listing,
91
- specs: [],
92
- });
93
- }
94
-
95
- const createSpecCommand = new CreateSpecCommand(this.commandContext);
96
- const specResults = await Promise.all(
97
- sanitizedDeps.map((dep) =>
98
- createSpecCommand
99
- .execute({ module: dep, targetRealm, autoGenerateReadme: true })
100
- .catch((e) => {
101
- console.warn('Failed to create spec(s) for', dep, e);
102
- return undefined;
103
- }),
104
- ),
105
- );
106
-
107
- const specs: Spec[] = [];
108
- for (const res of specResults) {
109
- if (res?.specs) {
110
- specs.push(...res.specs);
111
- }
112
- }
113
- (listing as any).specs = specs;
114
- return new commandModule.ListingUpdateSpecsResult({ listing, specs });
115
- }
116
- }
@@ -1,108 +0,0 @@
1
- import { service } from '@ember/service';
2
-
3
- import {
4
- codeRefWithAbsoluteIdentifier,
5
- isResolvedCodeRef,
6
- loadCardDef,
7
- generateInstallFolderName,
8
- rri,
9
- } from '@cardstack/runtime-common';
10
-
11
- import type { Listing } from '@cardstack/runtime-common';
12
-
13
- import type * as CardAPI from 'https://cardstack.com/base/card-api';
14
- import type * as BaseCommandModule from 'https://cardstack.com/base/command';
15
-
16
- import type { Skill } from 'https://cardstack.com/base/skill';
17
-
18
- import HostBaseCommand from '../lib/host-base-command';
19
-
20
- import CopyCardToRealmCommand from './copy-card';
21
- import SaveCardCommand from './save-card';
22
- import ValidateRealmCommand from './validate-realm';
23
-
24
- import type NetworkService from '../services/network';
25
-
26
- export default class ListingUseCommand extends HostBaseCommand<
27
- typeof BaseCommandModule.ListingInstallInput
28
- > {
29
- @service declare private network: NetworkService;
30
-
31
- description = 'Catalog listing use command';
32
-
33
- async getInputType() {
34
- let commandModule = await this.loadCommandModule();
35
- const { ListingInstallInput } = commandModule;
36
- return ListingInstallInput;
37
- }
38
-
39
- requireInputFields = ['realm', 'listing'];
40
-
41
- protected async run(
42
- input: BaseCommandModule.ListingInstallInput,
43
- ): Promise<undefined> {
44
- let { realm, listing: listingInput } = input;
45
-
46
- const listing = listingInput as Listing;
47
-
48
- let { realmIdentifier } = await new ValidateRealmCommand(
49
- this.commandContext,
50
- ).execute({ realmIdentifier: realm });
51
-
52
- const specsToCopy = listing.specs ?? [];
53
- const specsWithoutFields = specsToCopy.filter(
54
- (spec) => spec.specType !== 'field',
55
- );
56
-
57
- const localDir = generateInstallFolderName(listing.name);
58
-
59
- for (const spec of specsWithoutFields) {
60
- if (spec.isComponent) {
61
- return;
62
- }
63
- let ref = codeRefWithAbsoluteIdentifier(
64
- spec.ref,
65
- rri(spec.id),
66
- undefined,
67
- this.network.virtualNetwork,
68
- );
69
- if (!isResolvedCodeRef(ref)) {
70
- throw new Error('ref is not a resolved code ref');
71
- }
72
- let Klass = await loadCardDef(ref, {
73
- loader: this.loaderService.loader,
74
- });
75
- let card = new Klass({}) as CardAPI.CardDef;
76
- await new SaveCardCommand(this.commandContext).execute({
77
- card,
78
- realm: realmIdentifier,
79
- localDir,
80
- });
81
- }
82
-
83
- if (listing.examples) {
84
- const sourceCards = (listing.examples as CardAPI.CardDef[]).map(
85
- (example) => example,
86
- );
87
- for (const card of sourceCards) {
88
- await new CopyCardToRealmCommand(this.commandContext).execute({
89
- sourceCard: card,
90
- targetRealm: realmIdentifier,
91
- localDir,
92
- });
93
- }
94
- }
95
-
96
- if ('skills' in listing && Array.isArray(listing.skills)) {
97
- await Promise.all(
98
- listing.skills.map((skill: Skill) =>
99
- new CopyCardToRealmCommand(this.commandContext).execute({
100
- sourceCard: skill,
101
- targetRealm: realmIdentifier,
102
- localDir,
103
- }),
104
- ),
105
- );
106
- }
107
- }
108
- }