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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1058) hide show
  1. package/bundled-realms/pretui/components/doc-report.gts +2 -2
  2. package/bundled-realms/pretui/components/doc-report.usage.gts +3 -3
  3. package/bundled-realms/pretui/components/form-field.md +1 -1
  4. package/bundled-realms/pretui/components/icon-button.md +1 -1
  5. package/bundled-realms/pretui/components/popup.md +1 -1
  6. package/bundled-realms/pretui/components/switch.gts +13 -0
  7. package/bundled-realms/pretui/components/switch.md +5 -3
  8. package/bundled-realms/pretui/components/theme-frame.gts +49 -22
  9. package/bundled-realms/pretui/components/tooltip.gts +141 -42
  10. package/bundled-realms/pretui/components/tooltip.md +10 -12
  11. package/bundled-realms/pretui/components/tooltip.usage.gts +3 -5
  12. package/bundled-realms/pretui/docs/structure.md +1 -1
  13. package/bundled-realms/pretui/internal/overlay.gts +4 -2
  14. package/bundled-realms/pretui/pretui-css.gts +6 -2
  15. package/bundled-realms/pretui/theme-scoped-css.gts +262 -0
  16. package/bundled-test-harness/assets/account-switch-failed-test-DwAZq6Sc.js +45 -0
  17. package/bundled-test-harness/assets/adapter-C_6pnsx1.js +2 -0
  18. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-zMYtJWBv.js +112 -0
  19. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-CwhAV-Ow.js +130 -0
  20. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DNgclkGJ.js +46 -0
  21. package/bundled-test-harness/assets/ai-assistant-test-DGYFiRTb.js +2223 -0
  22. package/bundled-test-harness/assets/ai-function-generation-test-Dj6WzKkh.js +1176 -0
  23. package/bundled-test-harness/assets/ai-module-creation-test-C4zhhxaZ.js +151 -0
  24. package/bundled-test-harness/assets/aibot-message-BShcljQ9.js +1312 -0
  25. package/bundled-test-harness/assets/app-DiEYqT6T.js +14146 -0
  26. package/bundled-test-harness/assets/apply-markdown-edit-test-CPhfeg1i.js +230 -0
  27. package/bundled-test-harness/assets/ask-user-picker-NVRkhKwt.js +370 -0
  28. package/bundled-test-harness/assets/ask-user-picker-test-SsZqFm9W.js +39 -0
  29. package/bundled-test-harness/assets/assistant-transcript-test-DesuBCIB.js +57 -0
  30. package/bundled-test-harness/assets/audio-metadata-extractor-test-8JM6oZXG.js +1176 -0
  31. package/bundled-test-harness/assets/authed-fetch-test-yPTMe-9V.js +73 -0
  32. package/bundled-test-harness/assets/avif-image-def-test-Kyknj908.js +187 -0
  33. package/bundled-test-harness/assets/basic-test-D9OrrMaq.js +139 -0
  34. package/bundled-test-harness/assets/binary-upload-dedupe-test-C0RFmHma.js +308 -0
  35. package/bundled-test-harness/assets/bot-registration-test-Bk2lTaCW.js +97 -0
  36. package/bundled-test-harness/assets/box-test-BbV9sMyU.js +50 -0
  37. package/bundled-test-harness/assets/brand-guide-attachments-test-z4wTsKbI.js +84 -0
  38. package/bundled-test-harness/assets/brand-guide-custom-css-test-BlSJE8xo.js +196 -0
  39. package/bundled-test-harness/assets/brand-guide-edit-test-DJ1OQ6IB.js +140 -0
  40. package/bundled-test-harness/assets/brand-logo-mark-field-test-ux7eetkO.js +86 -0
  41. package/bundled-test-harness/assets/broken-link-template-test-CqB3MWyw.js +192 -0
  42. package/bundled-test-harness/assets/bundled-base-modules-test-B2oNLZSJ.js +54 -0
  43. package/bundled-test-harness/assets/bundled-base-oracle-test-DelPfFjn.js +37 -0
  44. package/bundled-test-harness/assets/buried-stack-item-scroll-test-Ixsl1tS0.js +236 -0
  45. package/bundled-test-harness/assets/button-BvYQm_A1.js +141 -0
  46. package/bundled-test-harness/assets/bxl-cyclic-graph-test-p23WCLRW.js +47 -0
  47. package/bundled-test-harness/assets/bxl-expression-test-CVTQYT_C.js +250 -0
  48. package/bundled-test-harness/assets/bxl-indexing-test-D_A7X2sr.js +212 -0
  49. package/bundled-test-harness/assets/bxl-platform-module-test-Cltfyybp.js +71 -0
  50. package/bundled-test-harness/assets/can-invoke-test-CVfE1l1V.js +455 -0
  51. package/bundled-test-harness/assets/can-read-realm-test-CIz6WX_K.js +56 -0
  52. package/bundled-test-harness/assets/cancel-indexing-job-test-0LlrOgYK.js +69 -0
  53. package/bundled-test-harness/assets/capture-test-diHIWmh0.js +360 -0
  54. package/bundled-test-harness/assets/card-api-test-Ci9b0ghP.js +198 -0
  55. package/bundled-test-harness/assets/card-basics-test-RKQoQWZD.js +5364 -0
  56. package/bundled-test-harness/assets/card-chooser-paging-test-BN21sDpP.js +235 -0
  57. package/bundled-test-harness/assets/card-chooser-test-C9jDiIgM.js +393 -0
  58. package/bundled-test-harness/assets/card-context-search-results-KmkXJbmC.js +30 -0
  59. package/bundled-test-harness/assets/card-context-search-results-test-CpMr8OlX.js +184 -0
  60. package/bundled-test-harness/assets/card-def-field-def-relationships-test-D_30xak6.js +562 -0
  61. package/bundled-test-harness/assets/card-def-menu-items-test-ohuHc0b4.js +228 -0
  62. package/bundled-test-harness/assets/card-delete-test-BlsD9Xw4.js +466 -0
  63. package/bundled-test-harness/assets/card-error-3q1o3i0e.js +72 -0
  64. package/bundled-test-harness/assets/card-error-awaiting-index-test-DPgYKfbF.js +53 -0
  65. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-CVfeJyjt.js +219 -0
  66. package/bundled-test-harness/assets/card-playground-test-D-7bi4PQ.js +1491 -0
  67. package/bundled-test-harness/assets/card-prerender-DemTfK_a.js +12939 -0
  68. package/bundled-test-harness/assets/card-thunk-error-test-DCBh1vRT.js +48 -0
  69. package/bundled-test-harness/assets/card-type-service-test-DXPrfVYk.js +161 -0
  70. package/bundled-test-harness/assets/check-correctness-test-DjE7r1X2.js +1093 -0
  71. package/bundled-test-harness/assets/check-domain-availability-test-U10xSKbY.js +98 -0
  72. package/bundled-test-harness/assets/chip-0r_r9SC8.js +44 -0
  73. package/bundled-test-harness/assets/choreo-CZUXQKjf.js +1110 -0
  74. package/bundled-test-harness/assets/choreo-D8RcLuoq.js +2 -0
  75. package/bundled-test-harness/assets/choreo-feature-reel-test-DRGloCAJ.js +155 -0
  76. package/bundled-test-harness/assets/choreo-gallery-build-order-test-BR-r7gaw.js +436 -0
  77. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CWRLfcNT.js +399 -0
  78. package/bundled-test-harness/assets/choreo-gallery-cover-test-BT05gNKC.js +214 -0
  79. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-WJ7FmjYi.js +133 -0
  80. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-C-yxdVT_.js +42 -0
  81. package/bundled-test-harness/assets/choreo-gallery-drift-test-HX1mK3od.js +620 -0
  82. package/bundled-test-harness/assets/choreo-gallery-escort-test-jZEVk_V4.js +187 -0
  83. package/bundled-test-harness/assets/choreo-gallery-films-test-DLDQzsxb.js +140 -0
  84. package/bundled-test-harness/assets/choreo-gallery-filter-test-BJv8KEeP.js +46 -0
  85. package/bundled-test-harness/assets/choreo-gallery-fold-test-BssKC8A8.js +180 -0
  86. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-DS41eNNV.js +114 -0
  87. package/bundled-test-harness/assets/choreo-gallery-guides-test-DTj7yEKp.js +321 -0
  88. package/bundled-test-harness/assets/choreo-gallery-hang-test-BqJLmeFF.js +426 -0
  89. package/bundled-test-harness/assets/choreo-gallery-highlight-test-B1Q7-ICm.js +60 -0
  90. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-7My9lVam.js +370 -0
  91. package/bundled-test-harness/assets/choreo-gallery-interruption-test-BlIAaGrw.js +176 -0
  92. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-C9NnYIP8.js +104 -0
  93. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CWzXkvbW.js +193 -0
  94. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-CwdiZWeI.js +111 -0
  95. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-D55fxwTn.js +127 -0
  96. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-D8Wxv0lb.js +100 -0
  97. package/bundled-test-harness/assets/choreo-gallery-presentation-test-BLoWfp6G.js +157 -0
  98. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-D5XxTBDS.js +145 -0
  99. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-DrHTTvss.js +89 -0
  100. package/bundled-test-harness/assets/choreo-gallery-sheet-test-BFVdnM_b.js +48 -0
  101. package/bundled-test-harness/assets/choreo-gallery-site-test-BhEBHdvI.js +237 -0
  102. package/bundled-test-harness/assets/choreo-gallery-stage-DcKKsdcu.js +256 -0
  103. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-Fcc6SC3F.js +102 -0
  104. package/bundled-test-harness/assets/choreo-gallery-stages-test-Cb-ADpxK.js +35 -0
  105. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-DMJ6C9FW.js +138 -0
  106. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CAjSUdLJ.js +144 -0
  107. package/bundled-test-harness/assets/choreo-gallery-theater-test-B-3IZMj9.js +252 -0
  108. package/bundled-test-harness/assets/choreo-gallery-tuning-test-BVxK5Ry_.js +95 -0
  109. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-uWBH1EKE.js +88 -0
  110. package/bundled-test-harness/assets/choreo-gallery-wires-test-Bo4Sd1Vn.js +148 -0
  111. package/bundled-test-harness/assets/client-telemetry-test-DFM4mML2.js +340 -0
  112. package/bundled-test-harness/assets/clip-DY6N6K67.js +92 -0
  113. package/bundled-test-harness/assets/clip-DzXoPdp-.js +2 -0
  114. package/bundled-test-harness/assets/code-block-DRE8KQZQ.js +502 -0
  115. package/bundled-test-harness/assets/code-ref-test-CDcqE8_C.js +163 -0
  116. package/bundled-test-harness/assets/code-submode-availability-test-DPTqZYYm.js +198 -0
  117. package/bundled-test-harness/assets/code-submode-test-AHV4mzJ4.js +1839 -0
  118. package/bundled-test-harness/assets/codeblocks-test-D6ijVvEL.js +418 -0
  119. package/bundled-test-harness/assets/codemirror-editor-test-BeAMVivu.js +1512 -0
  120. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bnb7_KUT.js +366 -0
  121. package/bundled-test-harness/assets/color-field-test-CR6gGEqE.js +212 -0
  122. package/bundled-test-harness/assets/compaction-test-CjEsY0uG.js +150 -0
  123. package/bundled-test-harness/assets/computed-test-DtyZGgdc.js +1320 -0
  124. package/bundled-test-harness/assets/container-BYGZImLU.css +5101 -0
  125. package/bundled-test-harness/assets/container-CBZZ8uFw.js +10925 -0
  126. package/bundled-test-harness/assets/content-preview-components-test-BztI4fz-.js +462 -0
  127. package/bundled-test-harness/assets/copy-and-edit-test-Cqw7kcur.js +292 -0
  128. package/bundled-test-harness/assets/copy-card-test-D5m3eVEH.js +218 -0
  129. package/bundled-test-harness/assets/copy-file-to-realm-test-FPY-6Ddm.js +148 -0
  130. package/bundled-test-harness/assets/copy-source-test-9pJD-qey.js +56 -0
  131. package/bundled-test-harness/assets/create-file-test-DjMf88u_.js +1086 -0
  132. package/bundled-test-harness/assets/create-file-test-XbgOqg38.js +464 -0
  133. package/bundled-test-harness/assets/create-listing-modal-test-De7b4vu3.js +273 -0
  134. package/bundled-test-harness/assets/create-listing-pr-request-test-CBtIV0Z8.js +117 -0
  135. package/bundled-test-harness/assets/create-spec-test-4xR0gM7E.js +256 -0
  136. package/bundled-test-harness/assets/create-submission-workflow-test-DQpWrpGT.js +132 -0
  137. package/bundled-test-harness/assets/create-workspace-test-BQAudgpS.js +104 -0
  138. package/bundled-test-harness/assets/credential-fields-test-DXKBdbZD.js +200 -0
  139. package/bundled-test-harness/assets/csv-file-def-test-Cnp4y834.js +102 -0
  140. package/bundled-test-harness/assets/dashboard-CmuOhIYC.js +3628 -0
  141. package/bundled-test-harness/assets/dashboard-CzN49x74.css +2400 -0
  142. package/bundled-test-harness/assets/dashboard-add-workspace-test-T32hWB-g.js +50 -0
  143. package/bundled-test-harness/assets/dashboard-agents-test-BN5maCgQ.js +334 -0
  144. package/bundled-test-harness/assets/dashboard-archive-test-BzwUte_Z.js +128 -0
  145. package/bundled-test-harness/assets/dashboard-delete-test-D2Gcp81V.js +163 -0
  146. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-BgKNIr35.js +71 -0
  147. package/bundled-test-harness/assets/dashboard-duplicate-test-D7JEWylc.js +222 -0
  148. package/bundled-test-harness/assets/dashboard-get-started-test-DOGPzGoA.js +374 -0
  149. package/bundled-test-harness/assets/dashboard-ir2bakJS.js +142 -0
  150. package/bundled-test-harness/assets/dashboard-pinned-cards-test-Bn_P9xJU.js +220 -0
  151. package/bundled-test-harness/assets/dashboard-publish-test-64sGQ0nG.js +70 -0
  152. package/bundled-test-harness/assets/dashboard-reindex-test-DJjYq1ct.js +115 -0
  153. package/bundled-test-harness/assets/dashboard-section-rail-test-ZkAhWu5V.js +169 -0
  154. package/bundled-test-harness/assets/dashboard-state-test-BbkpPB5L.js +162 -0
  155. package/bundled-test-harness/assets/dashboard-test-CBLdPrSt.js +545 -0
  156. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DFT3R1Zx.js +62 -0
  157. package/bundled-test-harness/assets/dashboard-workspace-test-DqBdCFo2.js +537 -0
  158. package/bundled-test-harness/assets/dashboard-workspaces-section-test-CH1HDfxR.js +410 -0
  159. package/bundled-test-harness/assets/data-file-def-preview-test-CNsZwQEJ.js +155 -0
  160. package/bundled-test-harness/assets/date-time-fields-test-CEFaZTnF.js +359 -0
  161. package/bundled-test-harness/assets/debug-message-test-Ck3BfFv3.js +117 -0
  162. package/bundled-test-harness/assets/declared-captures-test-C-0yPRU7.js +879 -0
  163. package/bundled-test-harness/assets/delete-workspace-test-CZOwGy78.js +102 -0
  164. package/bundled-test-harness/assets/diffing-test-BEKI905O.js +210 -0
  165. package/bundled-test-harness/assets/download-file-to-realm-test-C1kAGDll.js +119 -0
  166. package/bundled-test-harness/assets/editor-test-C9x5ZY6g.js +688 -0
  167. package/bundled-test-harness/assets/edits-D76-aanh.js +651 -0
  168. package/bundled-test-harness/assets/email-field-test-LGkrB_2B.js +75 -0
  169. package/bundled-test-harness/assets/enum-field-test-CPyV1J-m.js +935 -0
  170. package/bundled-test-harness/assets/error-display-test-bWuUtfIG.js +343 -0
  171. package/bundled-test-harness/assets/evaluate-module-test-CbS5h8t3.js +91 -0
  172. package/bundled-test-harness/assets/execute-atomic-operations-test-B4Kfco0k.js +113 -0
  173. package/bundled-test-harness/assets/externals-k-2ZBepK.js +4393 -0
  174. package/bundled-test-harness/assets/fallback-banner-live-delete-test-CuFiH1D8.js +207 -0
  175. package/bundled-test-harness/assets/fallback-banner-test-CqSRN7D8.js +225 -0
  176. package/bundled-test-harness/assets/fallback-banner-test-DQkrFE4-.js +53 -0
  177. package/bundled-test-harness/assets/fallback-models-test-BWekNxC0.js +161 -0
  178. package/bundled-test-harness/assets/fetch-card-json-test-DULUqUEu.js +61 -0
  179. package/bundled-test-harness/assets/field-configuration-test-BXZq28xa.js +551 -0
  180. package/bundled-test-harness/assets/field-markdown-domain-test-DdXCifs6.js +616 -0
  181. package/bundled-test-harness/assets/field-markdown-oversize-test-DouPPTHX.js +88 -0
  182. package/bundled-test-harness/assets/field-markdown-primitives-test-DSRGJeyl.js +365 -0
  183. package/bundled-test-harness/assets/field-markdown-specialized-test-DlTYLl_s.js +534 -0
  184. package/bundled-test-harness/assets/field-playground-test-NhS4VvoN.js +894 -0
  185. package/bundled-test-harness/assets/field-support-predicates-test-DWpyT1Qf.js +167 -0
  186. package/bundled-test-harness/assets/file-attachment-test-LwZf-BSY.js +796 -0
  187. package/bundled-test-harness/assets/file-chooser-panel-test-DuAqD9bn.js +153 -0
  188. package/bundled-test-harness/assets/file-chooser-test-CjaXXwpT.js +504 -0
  189. package/bundled-test-harness/assets/file-def-format-templates-test-BDs4OmHq.js +380 -0
  190. package/bundled-test-harness/assets/file-def-live-reload-test-BqTdnq-W.js +124 -0
  191. package/bundled-test-harness/assets/file-def-menu-items-test-DqdINXsD.js +138 -0
  192. package/bundled-test-harness/assets/file-def-navigation-test-BPGr0SQy.js +109 -0
  193. package/bundled-test-harness/assets/file-def-serialization-test-CvjW-FlC.js +89 -0
  194. package/bundled-test-harness/assets/file-def-test-C-Yv_NjS.js +216 -0
  195. package/bundled-test-harness/assets/file-preview-live-reload-test-MzwGwasU.js +310 -0
  196. package/bundled-test-harness/assets/file-resource-primitives-test-D3GmfqNs.js +255 -0
  197. package/bundled-test-harness/assets/file-tree-from-index-test-CfldnUgm.js +96 -0
  198. package/bundled-test-harness/assets/file-tree-test--0ZCPRe9.js +851 -0
  199. package/bundled-test-harness/assets/file-view-model-test-BDIAeBV8.js +346 -0
  200. package/bundled-test-harness/assets/filedef-export-shape-test-B2tgU404.js +61 -0
  201. package/bundled-test-harness/assets/film-Bf73ypzi.js +4074 -0
  202. package/bundled-test-harness/assets/film-C54lhaiU.js +2 -0
  203. package/bundled-test-harness/assets/film-DPcMEHYu.js +13 -0
  204. package/bundled-test-harness/assets/flac-audio-def-test-ByoXMoQ1.js +143 -0
  205. package/bundled-test-harness/assets/font-metadata-extractor-test-hawLTDTG.js +415 -0
  206. package/bundled-test-harness/assets/formatted-aibot-message-test-BahBj3x8.js +109 -0
  207. package/bundled-test-harness/assets/formatted-user-message-test-CodbrU3t.js +43 -0
  208. package/bundled-test-harness/assets/freestyle-test-faQhSciz.js +17 -0
  209. package/bundled-test-harness/assets/full-reindex-realm-test-CE5RJTIC.js +101 -0
  210. package/bundled-test-harness/assets/garbage-collection-test-v-3sev77.js +403 -0
  211. package/bundled-test-harness/assets/general-test-DKZPBtSb.js +923 -0
  212. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-CucWyrkH.js +65 -0
  213. package/bundled-test-harness/assets/generic-file-def-preview-test-_EDRsebi.js +71 -0
  214. package/bundled-test-harness/assets/get-available-realm-identifiers-test-CV023yek.js +47 -0
  215. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test--DOu3DyV.js +47 -0
  216. package/bundled-test-harness/assets/get-default-writable-realm-test-Bic8jl6R.js +54 -0
  217. package/bundled-test-harness/assets/get-published-realms-test-DrA5YcFN.js +71 -0
  218. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-jfU6SIWn.js +54 -0
  219. package/bundled-test-harness/assets/get-relationship-membership-state-test-Ccy2Z7MN.js +1308 -0
  220. package/bundled-test-harness/assets/get-user-system-card-test-Bmq2lmWv.js +67 -0
  221. package/bundled-test-harness/assets/gif-image-def-test-N1mMQC-X.js +188 -0
  222. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BkUDjiTs.js +160 -0
  223. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DsFWCzTs.js +74 -0
  224. package/bundled-test-harness/assets/gts-file-def-test-BL1jpQ9J.js +100 -0
  225. package/bundled-test-harness/assets/head-format-preview-test-BVCaPQqc.js +158 -0
  226. package/bundled-test-harness/assets/helpers-Ds68JxHe.js +5 -0
  227. package/bundled-test-harness/assets/host-mode-service-B4bisRdR.js +262 -0
  228. package/bundled-test-harness/assets/host-mode-test-BmkN2PCJ.js +831 -0
  229. package/bundled-test-harness/assets/host-submode-test-C6SxQ796.js +1392 -0
  230. package/bundled-test-harness/assets/html-component-test-CNQ9wF0Q.js +65 -0
  231. package/bundled-test-harness/assets/html-def-test-BcaCVVQq.js +160 -0
  232. package/bundled-test-harness/assets/html-meta-extractor-test-BU1hjkTp.js +60 -0
  233. package/bundled-test-harness/assets/hydratable-card-test-CX6MWiti.js +426 -0
  234. package/bundled-test-harness/assets/icon-button-C1zH38Nc.js +67 -0
  235. package/bundled-test-harness/assets/image-metadata-extractor-test-CakSBPZ_.js +1109 -0
  236. package/bundled-test-harness/assets/index-changes-test-D8RtgfyG.js +367 -0
  237. package/bundled-test-harness/assets/index-query-engine-test-BETfoYOK.js +2593 -0
  238. package/bundled-test-harness/assets/index-writer-test-B_bR2fjw.js +3040 -0
  239. package/bundled-test-harness/assets/inspector-test-BwPXJj1S.js +2058 -0
  240. package/bundled-test-harness/assets/instance-filter-matcher-test-BSVCg59b.js +788 -0
  241. package/bundled-test-harness/assets/instantiate-card-test-BVQhZjpq.js +164 -0
  242. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DzQLG41H.js +475 -0
  243. package/bundled-test-harness/assets/interact-submode-setup-C5bKXq73.js +566 -0
  244. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-Cd3dpjhB.js +99 -0
  245. package/bundled-test-harness/assets/invite-user-to-room-test-Brabz1tt.js +142 -0
  246. package/bundled-test-harness/assets/invoke-card-operation-test-C1Q1FUf4.js +333 -0
  247. package/bundled-test-harness/assets/isolated-render-test-BLJfS7BU.js +51 -0
  248. package/bundled-test-harness/assets/job-scoped-doc-cache-test-Bgv5woaB.js +181 -0
  249. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C_bB6KpR.js +103 -0
  250. package/bundled-test-harness/assets/jpg-image-def-test-gdLIKocD.js +697 -0
  251. package/bundled-test-harness/assets/json-file-def-test-CPYMRBY-.js +95 -0
  252. package/bundled-test-harness/assets/key-notices-badge-test-DemslfLw.js +155 -0
  253. package/bundled-test-harness/assets/key-readiness-test-5tq5JycL.js +190 -0
  254. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-BbhDZ2PH.js +398 -0
  255. package/bundled-test-harness/assets/linksto-error-sentinel-test-C2t7fFPi.js +238 -0
  256. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test--U_UvUty.js +354 -0
  257. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-Dj3Xy0ZF.js +303 -0
  258. package/bundled-test-harness/assets/linksto-sentinel-reload-test-D0dK4Jjs.js +197 -0
  259. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test---IYiXok.js +260 -0
  260. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CT04MhES.js +196 -0
  261. package/bundled-test-harness/assets/lint-and-fix-test-aadgx7rX.js +51 -0
  262. package/bundled-test-harness/assets/live-test-BGij_vuc.js +100 -0
  263. package/bundled-test-harness/assets/live-test-CppvValf.js +2 -0
  264. package/bundled-test-harness/assets/load-default-skills-test-Cp2m_ebp.js +74 -0
  265. package/bundled-test-harness/assets/loader-parallel-prefetch-test-vU_26Jqu.js +257 -0
  266. package/bundled-test-harness/assets/loader-test-CTaw8K_B.js +482 -0
  267. package/bundled-test-harness/assets/loading-test-DGGt4qZZ.js +63 -0
  268. package/bundled-test-harness/assets/m4a-audio-def-test-DAiReOXH.js +190 -0
  269. package/bundled-test-harness/assets/main-bXHwJ0CN.js +5 -0
  270. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIXq9FqR.js +470 -0
  271. package/bundled-test-harness/assets/markdown-embed-chooser-test-zFGh9WfP.js +334 -0
  272. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-Byn_WFwY.js +447 -0
  273. package/bundled-test-harness/assets/markdown-embed-preview-test-Y3iFMttg.js +368 -0
  274. package/bundled-test-harness/assets/markdown-fallback-test-Br1TPkLZ.js +316 -0
  275. package/bundled-test-harness/assets/markdown-file-def-test-Crm2MAnq.js +380 -0
  276. package/bundled-test-harness/assets/markdown-helpers-test-CZ9Vvywc.js +188 -0
  277. package/bundled-test-harness/assets/markdown-highlighting-test-CFMkoVDl.js +244 -0
  278. package/bundled-test-harness/assets/markdown-preview-lOh-MyqF.js +72 -0
  279. package/bundled-test-harness/assets/markdown-preview-test-B8w0fFIy.js +238 -0
  280. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-aH6HQly1.js +146 -0
  281. package/bundled-test-harness/assets/markdown-skill-search-test-CiNLQs-5.js +80 -0
  282. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-DaA8w1Jj.js +63 -0
  283. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-21GIlf55.js +300 -0
  284. package/bundled-test-harness/assets/matrix-service-personal-realm-test-jn9DUENm.js +125 -0
  285. package/bundled-test-harness/assets/matrix-service-realm-servers-test-eNZVJakl.js +55 -0
  286. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-Cabm8_dY.js +132 -0
  287. package/bundled-test-harness/assets/matrix-service-relogin-test-C77EFgjc.js +59 -0
  288. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-BgM0fPiO.js +35 -0
  289. package/bundled-test-harness/assets/menu-Cl50TSFe.js +3561 -0
  290. package/bundled-test-harness/assets/message-service-subscription-test-CfEqH2jP.js +110 -0
  291. package/bundled-test-harness/assets/message-service-test-DsTzH1In.js +144 -0
  292. package/bundled-test-harness/assets/message-tool-test-C5xVfTtj.js +33 -0
  293. package/bundled-test-harness/assets/midi-audio-def-test-goLRCNCZ.js +182 -0
  294. package/bundled-test-harness/assets/migrate-skill-test-yPCbVfxG.js +161 -0
  295. package/bundled-test-harness/assets/mini-YXjrY_tH.js +1404 -0
  296. package/bundled-test-harness/assets/mini-card-chooser-test-DrllikHB.js +272 -0
  297. package/bundled-test-harness/assets/mini-file-chooser-test-BfqayhmI.js +201 -0
  298. package/bundled-test-harness/assets/mock-matrix-C7BrPS6S.js +2 -0
  299. package/bundled-test-harness/assets/mock-matrix-FjsXmU7-.js +15107 -0
  300. package/bundled-test-harness/assets/modal-BgaZavcs.js +322 -0
  301. package/bundled-test-harness/assets/model-cost-tier-test-BGg-sJML.js +174 -0
  302. package/bundled-test-harness/assets/model-file-extract-test-CjEBupY5.js +206 -0
  303. package/bundled-test-harness/assets/module-transpile-cache-test-XW6DDsmz.js +67 -0
  304. package/bundled-test-harness/assets/monaco-test-DkoRuFiQ.js +100 -0
  305. package/bundled-test-harness/assets/mp3-audio-def-test-v369NNsQ.js +133 -0
  306. package/bundled-test-harness/assets/multiple-stacks-test-CJpYPWdM.js +208 -0
  307. package/bundled-test-harness/assets/nested-query-field-render-test-CfDrBcUN.js +249 -0
  308. package/bundled-test-harness/assets/no-stacks-test-MmsJeLpz.js +48 -0
  309. package/bundled-test-harness/assets/number-field-test-A7B2r0M5.js +184 -0
  310. package/bundled-test-harness/assets/office-file-def-test-BNRvFmCB.js +263 -0
  311. package/bundled-test-harness/assets/office-metadata-extractor-test-zlDoEIEp.js +218 -0
  312. package/bundled-test-harness/assets/office-poster-capture-test-DdFEaOxR.js +203 -0
  313. package/bundled-test-harness/assets/ogg-audio-def-test-kk91BzQY.js +196 -0
  314. package/bundled-test-harness/assets/open-create-listing-modal-test-D1Dl1pov.js +131 -0
  315. package/bundled-test-harness/assets/open-image-in-new-tab-test-DyCmdMyO.js +52 -0
  316. package/bundled-test-harness/assets/open-secure-window-test-dz1vPudF.js +253 -0
  317. package/bundled-test-harness/assets/open-workspace-test-BvTcskzP.js +46 -0
  318. package/bundled-test-harness/assets/operation-lowering-test-omU66bkJ.js +2957 -0
  319. package/bundled-test-harness/assets/operations-invocation-test-BMj42rQe.js +523 -0
  320. package/bundled-test-harness/assets/operations-optimistic-test-KJLyzT8v.js +203 -0
  321. package/bundled-test-harness/assets/operations-query-test-J3HcnaoK.js +459 -0
  322. package/bundled-test-harness/assets/operations-store-reconciliation-test-CkbGBMBQ.js +406 -0
  323. package/bundled-test-harness/assets/operations-test-C7zXXpRW.js +2518 -0
  324. package/bundled-test-harness/assets/operator-mode-acceptance-test-BPolI_RD.js +1195 -0
  325. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DjTQgizt.js +1036 -0
  326. package/bundled-test-harness/assets/operator-mode-links-test-DSEqy5Db.js +797 -0
  327. package/bundled-test-harness/assets/operator-mode-test-CB7BNDNE.js +696 -0
  328. package/bundled-test-harness/assets/operator-mode-ui-test-C1OhF1il.js +1045 -0
  329. package/bundled-test-harness/assets/overlay-D2rQi8lJ.js +427 -0
  330. package/bundled-test-harness/assets/overlay-menu-items-test-CPN31yBJ.js +331 -0
  331. package/bundled-test-harness/assets/overlays-B-qMEPhY.js +2 -0
  332. package/bundled-test-harness/assets/overlays-DSf2je0c.js +75 -0
  333. package/bundled-test-harness/assets/overlays-detached-element-test-C73nMXes.js +56 -0
  334. package/bundled-test-harness/assets/panel-DjrC7DxA.js +15124 -0
  335. package/bundled-test-harness/assets/past-sessions-test-BSIS2Hlq.js +321 -0
  336. package/bundled-test-harness/assets/patch-fields-test-Bp2IE0Jw.js +1014 -0
  337. package/bundled-test-harness/assets/patch-instance-test-DssuRGKP.js +348 -0
  338. package/bundled-test-harness/assets/pdf-file-def-test-Barj9ffD.js +111 -0
  339. package/bundled-test-harness/assets/pdf-metadata-extractor-test-B7KnXcIm.js +130 -0
  340. package/bundled-test-harness/assets/permission-checking-realm-test-BD4O0nen.js +306 -0
  341. package/bundled-test-harness/assets/persist-module-inspector-view-test-BIdbkdPr.js +60 -0
  342. package/bundled-test-harness/assets/persist-scroll-position-test-Bhb7wJiy.js +254 -0
  343. package/bundled-test-harness/assets/phone-number-field-test-C2yuCrXY.js +73 -0
  344. package/bundled-test-harness/assets/pill-menu-test-BIp91YXi.js +60 -0
  345. package/bundled-test-harness/assets/plate-CJq1veVA.js +41 -0
  346. package/bundled-test-harness/assets/plate-CwAvOUfL.js +2 -0
  347. package/bundled-test-harness/assets/player-Digk7omr.js +2 -0
  348. package/bundled-test-harness/assets/player-vsjosoN_.js +82 -0
  349. package/bundled-test-harness/assets/playground-B02e8uqB.js +58 -0
  350. package/bundled-test-harness/assets/plural-field-components-test-C1acuN-A.js +198 -0
  351. package/bundled-test-harness/assets/png-image-def-test-B9QeVo1f.js +266 -0
  352. package/bundled-test-harness/assets/policy-audit-confirmation-test-CeVquvc_.js +155 -0
  353. package/bundled-test-harness/assets/policy-scoped-search-test-SFPiIqR3.js +339 -0
  354. package/bundled-test-harness/assets/prerender-file-extract-test-HSJKAHyO.js +346 -0
  355. package/bundled-test-harness/assets/prerender-html-test-BTAcFCme.js +670 -0
  356. package/bundled-test-harness/assets/prerender-meta-test-Csyz2b21.js +614 -0
  357. package/bundled-test-harness/assets/prerender-module-test-DpTYAbmI.js +409 -0
  358. package/bundled-test-harness/assets/prerender-persistence-block-test-BhIt-7kK.js +124 -0
  359. package/bundled-test-harness/assets/prerender-pre-model-error-test-DxKPQKqx.js +61 -0
  360. package/bundled-test-harness/assets/prerender-serialize-cycle-test-C8V5YWQO.js +134 -0
  361. package/bundled-test-harness/assets/prerendered-html-read-test-Cq7JVGwg.js +191 -0
  362. package/bundled-test-harness/assets/pretui-components-test-Ducr9fLT.css +743 -0
  363. package/bundled-test-harness/assets/pretui-components-test-Hs0uyIUQ.js +992 -0
  364. package/bundled-test-harness/assets/pretui-primitives-CRs8NRm0.js +69 -0
  365. package/bundled-test-harness/assets/preview-format-test-cCqLrfdY.js +103 -0
  366. package/bundled-test-harness/assets/preview-test-BMqJSoR1.js +474 -0
  367. package/bundled-test-harness/assets/process-card-test-578tfDvr.js +94 -0
  368. package/bundled-test-harness/assets/profile-settings-modal-CVnNl7Yu.js +990 -0
  369. package/bundled-test-harness/assets/publish-realm-COoeWexp.js +82 -0
  370. package/bundled-test-harness/assets/publish-realm-test-a5nkx0Ov.js +210 -0
  371. package/bundled-test-harness/assets/query-field-barrier-test-qX3xVPfk.js +113 -0
  372. package/bundled-test-harness/assets/query-field-error-sentinel-test-V6JDPFLX.js +201 -0
  373. package/bundled-test-harness/assets/query-field-membership-status-test-CK7eDf-K.js +323 -0
  374. package/bundled-test-harness/assets/query-field-page-optin-test-B5YBHUvU.js +126 -0
  375. package/bundled-test-harness/assets/query-field-schema-test-D4SjOGlK.js +231 -0
  376. package/bundled-test-harness/assets/query-field-search-throttle-test-BVkm1-D8.js +154 -0
  377. package/bundled-test-harness/assets/query-field-stale-prerender-test-9g7hcD91.js +152 -0
  378. package/bundled-test-harness/assets/query-fields-test-CQYqhzpN.js +535 -0
  379. package/bundled-test-harness/assets/quick-look-test-CE0o6lJ4.js +139 -0
  380. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D0mJorwH.js +91 -0
  381. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-B_F_2GEB.js +45 -0
  382. package/bundled-test-harness/assets/read-source-test-BgJV4B4F.js +67 -0
  383. package/bundled-test-harness/assets/read-text-file-test-DaeLzg4u.js +124 -0
  384. package/bundled-test-harness/assets/realm-C_a9su1j.js +2858 -0
  385. package/bundled-test-harness/assets/realm-api-keys-D5USFOoS.js +2 -0
  386. package/bundled-test-harness/assets/realm-api-keys-m_VOcixC.js +578 -0
  387. package/bundled-test-harness/assets/realm-api-keys-test-BVs7f5Dz.js +109 -0
  388. package/bundled-test-harness/assets/realm-api-keys-test-C_uZnTmq.js +588 -0
  389. package/bundled-test-harness/assets/realm-config-m5eccPW8.js +833 -0
  390. package/bundled-test-harness/assets/realm-config-policy-standing-test-Ber-IXpc.js +290 -0
  391. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-3Xqt5VlM.js +274 -0
  392. package/bundled-test-harness/assets/realm-config-settings-test-CkalhbDF.js +187 -0
  393. package/bundled-test-harness/assets/realm-field-test-B_PUoqnk.js +100 -0
  394. package/bundled-test-harness/assets/realm-indexing-test-8iLjeV_e.js +4380 -0
  395. package/bundled-test-harness/assets/realm-policy-fitted-test-Bptvra0U.js +206 -0
  396. package/bundled-test-harness/assets/realm-policy-test-DwG0qqXE.js +1141 -0
  397. package/bundled-test-harness/assets/realm-querying-test-Dvw26A6Q.js +1067 -0
  398. package/bundled-test-harness/assets/realm-server-form-agnostic-test-DrXQH0UP.js +96 -0
  399. package/bundled-test-harness/assets/realm-server-subscriber-test-Dkj23vQK.js +46 -0
  400. package/bundled-test-harness/assets/realm-service-info-test-CdRlDhj-.js +67 -0
  401. package/bundled-test-harness/assets/realm-test-DGYN48Qx.js +2364 -0
  402. package/bundled-test-harness/assets/realm-token-refresh-test-CEWATL9h.js +153 -0
  403. package/bundled-test-harness/assets/realm-url-tooltip-test-8ZjTNPuy.js +78 -0
  404. package/bundled-test-harness/assets/reasoning-test-BV49AYg2.js +221 -0
  405. package/bundled-test-harness/assets/recent-files-test-Dc6L6Dm4.js +450 -0
  406. package/bundled-test-harness/assets/reindex-realm-test-CFRSt39u.js +117 -0
  407. package/bundled-test-harness/assets/relationship-loading-state-test-FKbtOFUr.js +290 -0
  408. package/bundled-test-harness/assets/remix-card-test-CKGC_Sgq.js +58 -0
  409. package/bundled-test-harness/assets/rendered-markdown-DXiDN91F.js +292 -0
  410. package/bundled-test-harness/assets/rendered-markdown-test-n3MlXmmu.js +587 -0
  411. package/bundled-test-harness/assets/resident-instance-reuse-test-BjdhE6CM.js +82 -0
  412. package/bundled-test-harness/assets/result-tile-o6dtjgX4.js +144 -0
  413. package/bundled-test-harness/assets/rich-markdown-field-test-VXr6l20h.js +1647 -0
  414. package/bundled-test-harness/assets/room-message-test-BrjJ2wMs.js +484 -0
  415. package/bundled-test-harness/assets/run-P_7TsreC.js +4017 -0
  416. package/bundled-test-harness/assets/run-realm-code-DsBUf1si.js +2964 -0
  417. package/bundled-test-harness/assets/run-realm-code-test-cS0DzaKo.js +3844 -0
  418. package/bundled-test-harness/assets/sanitize-module-list-test-CvuOOiUY.js +85 -0
  419. package/bundled-test-harness/assets/save-card-skip-index-wait-test-fpJ1eq32.js +89 -0
  420. package/bundled-test-harness/assets/schema-editor-test-NkKjCgyf.js +785 -0
  421. package/bundled-test-harness/assets/schema-generation-test-Dmg3lWl7.js +28 -0
  422. package/bundled-test-harness/assets/scrolling-test-B0GNYGYc.js +412 -0
  423. package/bundled-test-harness/assets/search-adorn-test-CZebk7_y.js +136 -0
  424. package/bundled-test-harness/assets/search-and-choose-test-Bd4NZUup.js +154 -0
  425. package/bundled-test-harness/assets/search-correlation-id-test-DXKlEO55.js +139 -0
  426. package/bundled-test-harness/assets/search-entries-result-test-QQawA8Fm.js +234 -0
  427. package/bundled-test-harness/assets/search-entries-test-3DlqGPQq.js +1486 -0
  428. package/bundled-test-harness/assets/search-entries-tool-test-D1TvDE9D.js +504 -0
  429. package/bundled-test-harness/assets/search-google-images-test-DqsoQGr1.js +166 -0
  430. package/bundled-test-harness/assets/search-results-DGrNaPxh.js +266 -0
  431. package/bundled-test-harness/assets/search-results-test-CqVHYNRt.js +578 -0
  432. package/bundled-test-harness/assets/search-selection-menu-test-D6bIjKiH.js +108 -0
  433. package/bundled-test-harness/assets/search-sheet-files-test-Bf37TQXo.js +126 -0
  434. package/bundled-test-harness/assets/search-sheet-persistence-test-CV4_XdxR.js +131 -0
  435. package/bundled-test-harness/assets/search-test-Dlb-wg3a.js +2249 -0
  436. package/bundled-test-harness/assets/search-tool-test-BJLgVMoL.js +156 -0
  437. package/bundled-test-harness/assets/searchable-option-test-CcbfMqIL.js +322 -0
  438. package/bundled-test-harness/assets/searchable-search-doc-test-yH9fLGNS.js +1271 -0
  439. package/bundled-test-harness/assets/section-rail-CNFCebtT.js +113 -0
  440. package/bundled-test-harness/assets/section-rail-test-KNJAWWl6.js +256 -0
  441. package/bundled-test-harness/assets/secure-sign-in-Dyljp0Th.js +174 -0
  442. package/bundled-test-harness/assets/secure-sign-in-test-QnqNuTP3.js +373 -0
  443. package/bundled-test-harness/assets/segmented-control-DxJdoJ4Z.js +173 -0
  444. package/bundled-test-harness/assets/select-BiQTg2ts.js +175 -0
  445. package/bundled-test-harness/assets/send-ai-assistant-message-test-CAn7M2dZ.js +52 -0
  446. package/bundled-test-harness/assets/send-bot-trigger-event-test-qBu5E_jy.js +56 -0
  447. package/bundled-test-harness/assets/send-request-via-proxy-test-CLuwLBq_.js +380 -0
  448. package/bundled-test-harness/assets/sending-test-H0AaBSgi.js +659 -0
  449. package/bundled-test-harness/assets/serialization-rri-form-audit-test-hMJukiKt.js +136 -0
  450. package/bundled-test-harness/assets/serialization-test-W5e3wKbz.js +8758 -0
  451. package/bundled-test-harness/assets/set-user-system-card-test-CjgWLkNV.js +59 -0
  452. package/bundled-test-harness/assets/setup-CssMNvui.js +772 -0
  453. package/bundled-test-harness/assets/setup-D8YXvK-p.js +2 -0
  454. package/bundled-test-harness/assets/shared-link-target-reuse-test-D42UO8DC.js +207 -0
  455. package/bundled-test-harness/assets/show-card-test-CHEaS514.js +365 -0
  456. package/bundled-test-harness/assets/signed-capture-link-test-BgEu0F-S.js +132 -0
  457. package/bundled-test-harness/assets/single-stack-test-DYcu_v7Z.js +652 -0
  458. package/bundled-test-harness/assets/skills-test-ChmKhADX.js +648 -0
  459. package/bundled-test-harness/assets/skip-boot-index-guard-test-BzRIncDN.js +46 -0
  460. package/bundled-test-harness/assets/spec-test-BYvFR6Xb.js +1077 -0
  461. package/bundled-test-harness/assets/spinner-Bx9x55NA.js +49 -0
  462. package/bundled-test-harness/assets/src-C1hYFgVl.js +216 -0
  463. package/bundled-test-harness/assets/src-CIlLx7Lu.js +5 -0
  464. package/bundled-test-harness/assets/stick-to-bottom-resize-test-DMHsAG0v.js +56 -0
  465. package/bundled-test-harness/assets/store-add-test-D_9IHQjZ.js +50 -0
  466. package/bundled-test-harness/assets/store-module-rebuild-test-BRGZoLRV.js +454 -0
  467. package/bundled-test-harness/assets/store-search-test-3G8JHuj2.js +175 -0
  468. package/bundled-test-harness/assets/store-test-BiKKDqqW.js +3672 -0
  469. package/bundled-test-harness/assets/structured-theme-test-11TNsgUW.js +377 -0
  470. package/bundled-test-harness/assets/summarize-session-test-CwzD_ZbD.js +172 -0
  471. package/bundled-test-harness/assets/svg-image-def-test-zV6aMK9q.js +167 -0
  472. package/bundled-test-harness/assets/switch-submode-test-DQU2cP5_.js +168 -0
  473. package/bundled-test-harness/assets/sync-openrouter-models-test-xrXVaC2H.js +97 -0
  474. package/bundled-test-harness/assets/test-support-BGl3rthw.js +3 -0
  475. package/bundled-test-harness/assets/test-support-BcBv__98.js +99 -0
  476. package/bundled-test-harness/assets/tests-CmM9imwB.js +3598 -0
  477. package/bundled-test-harness/assets/text-file-def-test-Cyq78UFY.js +94 -0
  478. package/bundled-test-harness/assets/text-input-validator-test-DBj7TaM_.js +156 -0
  479. package/bundled-test-harness/assets/text-suggestion-test-C4XAqWqY.js +340 -0
  480. package/bundled-test-harness/assets/theme-card-test-dVNz4tgU.js +621 -0
  481. package/bundled-test-harness/assets/theme-dashboard-nav-test-DYSn5pqo.js +196 -0
  482. package/bundled-test-harness/assets/theme-scheme-island-test-C1WpkfEP.js +264 -0
  483. package/bundled-test-harness/assets/theme-scoped-css-parity-test-BVluppsE.js +176 -0
  484. package/bundled-test-harness/assets/titles-DCvAhECF.js +52 -0
  485. package/bundled-test-harness/assets/titles-ZPeArtS1.js +2 -0
  486. package/bundled-test-harness/assets/to-device-streaming-test-BJ4J1cXe.js +163 -0
  487. package/bundled-test-harness/assets/token-usage-test-WUf4r4fQ.js +160 -0
  488. package/bundled-test-harness/assets/tools-J_Knr_W6.js +774 -0
  489. package/bundled-test-harness/assets/tools-calling-test-CfqZX0Ed.js +200 -0
  490. package/bundled-test-harness/assets/tools-test-B4x58ZmI.js +1624 -0
  491. package/bundled-test-harness/assets/tools-test-Cvau5219.js +3204 -0
  492. package/bundled-test-harness/assets/tooltip-B0rEgyMW.css +66 -0
  493. package/bundled-test-harness/assets/tooltip-DvUMUgVX.js +195 -0
  494. package/bundled-test-harness/assets/transform-cards-test-CYQbZeD9.js +341 -0
  495. package/bundled-test-harness/assets/ts-file-def-preview-test-m39f8Zio.js +95 -0
  496. package/bundled-test-harness/assets/ts-file-def-test-xIcL5xWe.js +92 -0
  497. package/bundled-test-harness/assets/ttf-font-def-test-ClQ2SzFF.js +206 -0
  498. package/bundled-test-harness/assets/turn-settling-test-DZoL2mRT.js +160 -0
  499. package/bundled-test-harness/assets/turn-summary-Bmt7ZxTS.js +1039 -0
  500. package/bundled-test-harness/assets/unpublish-realm-test-0ToTJczx.js +102 -0
  501. package/bundled-test-harness/assets/update-room-skills-test-o_j8NOUV.js +240 -0
  502. package/bundled-test-harness/assets/use-ai-assistant-test-D7HFpxKJ.js +384 -0
  503. package/bundled-test-harness/assets/user-message-BAOt1hS3.js +262 -0
  504. package/bundled-test-harness/assets/validate-realm-test-e3xIbNLB.js +67 -0
  505. package/bundled-test-harness/assets/video-metadata-extractor-test-D8naLSlg.js +520 -0
  506. package/bundled-test-harness/assets/view-visually-test-BuhGau5E.js +335 -0
  507. package/bundled-test-harness/assets/virtual-network-reset-test-CgaFNGPi.js +96 -0
  508. package/bundled-test-harness/assets/wav-audio-def-test-CWG_UdCh.js +160 -0
  509. package/bundled-test-harness/assets/webp-image-def-test-sN4yw8Zu.js +226 -0
  510. package/bundled-test-harness/assets/workspace-0LfPqbYB.js +445 -0
  511. package/bundled-test-harness/assets/workspace-a11y-test-DQxYDRAP.js +197 -0
  512. package/bundled-test-harness/assets/workspace-actions-jGJSfl8M.js +588 -0
  513. package/bundled-test-harness/assets/workspace-behavior-test-BnF-bmBN.js +338 -0
  514. package/bundled-test-harness/assets/workspace-delete-multiple-test-D-rxPDuT.js +212 -0
  515. package/bundled-test-harness/assets/workspace-delete-summary-test-C2-Mve5R.js +63 -0
  516. package/bundled-test-harness/assets/workspace-hosting-test-BvDKdlOb.js +138 -0
  517. package/bundled-test-harness/assets/workspace-indexing-test-B34T3kqD.js +71 -0
  518. package/bundled-test-harness/assets/workspace-test-CJivgv-m.js +51 -0
  519. package/bundled-test-harness/assets/workspace-test-CuSRpPnQ.js +385 -0
  520. package/bundled-test-harness/assets/workspace-timestamp-labels-test-aWgjdbCp.js +68 -0
  521. package/bundled-test-harness/assets/workspace-unit-test-DHMUf2KT.js +122 -0
  522. package/bundled-test-harness/assets/write-binary-file-test-P-hVQuin.js +124 -0
  523. package/bundled-test-harness/assets/write-text-file-test-fXvJueDd.js +191 -0
  524. package/bundled-test-harness/assets/zip-archive-test-C2P5CUSR.js +285 -0
  525. package/bundled-test-harness/assets/zip-file-def-test-BfJZAmGt.js +164 -0
  526. package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
  527. package/bundled-test-harness/index.html +48 -48
  528. package/bundled-test-harness/tests/index.html +50 -50
  529. package/bundled-types/boxel-ui/helpers/theme-scoped-css.ts +4 -0
  530. package/bundled-types/choreo/choreo.gts +58 -2
  531. package/bundled-types/choreo/compile.ts +5 -0
  532. package/bundled-types/choreo/layout-probe.ts +100 -0
  533. package/bundled-types/choreo/run.ts +99 -4
  534. package/bundled-types/host-app/components/operator-mode/dashboard/get-started.gts +152 -7
  535. package/bundled-types/host-app/components/operator-mode/dashboard/index.gts +2 -0
  536. package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +5 -3
  537. package/bundled-types/host-app/components/operator-mode/dashboard-modals/workspace-modals.gts +5 -22
  538. package/bundled-types/host-app/components/operator-mode/host-submode/publishing-realm-popover.gts +1 -1
  539. package/bundled-types/host-app/components/operator-mode/host-submode.gts +111 -37
  540. package/bundled-types/host-app/components/operator-mode/motion/stack-motion.gts +92 -33
  541. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +1 -0
  542. package/bundled-types/host-app/components/operator-mode/stack-item.gts +2 -2
  543. package/bundled-types/host-app/components/operator-mode/stack.gts +36 -25
  544. package/bundled-types/host-app/components/operator-mode/submode-layout.gts +2 -2
  545. package/bundled-types/host-app/lib/modal-focus-trap.ts +33 -0
  546. package/bundled-types/host-app/lib/workspace-actions.ts +21 -0
  547. package/bundled-types/host-app/services/host-mode-service.ts +39 -0
  548. package/bundled-types/host-app/services/realm.ts +14 -0
  549. package/bundled-types/host-tests/helpers/dashboard.ts +67 -0
  550. package/package.json +1 -1
  551. package/bundled-test-harness/assets/account-switch-failed-test-FytUFiPO.js +0 -45
  552. package/bundled-test-harness/assets/adapter-DvmPwSZv.js +0 -2
  553. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-DN525jiY.js +0 -112
  554. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-q3tKqVJQ.js +0 -130
  555. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DgeXcCyi.js +0 -46
  556. package/bundled-test-harness/assets/ai-assistant-test-lDIGPKFP.js +0 -2223
  557. package/bundled-test-harness/assets/ai-function-generation-test-D5GbLyvL.js +0 -1176
  558. package/bundled-test-harness/assets/ai-module-creation-test-I3-j2beD.js +0 -151
  559. package/bundled-test-harness/assets/aibot-message-Dmsjifs6.js +0 -1312
  560. package/bundled-test-harness/assets/app-BS9_-DhN.js +0 -14146
  561. package/bundled-test-harness/assets/apply-markdown-edit-test-4zlwt0Db.js +0 -230
  562. package/bundled-test-harness/assets/ask-user-picker-Dr-0qpNr.js +0 -370
  563. package/bundled-test-harness/assets/ask-user-picker-test-633AFdmS.js +0 -39
  564. package/bundled-test-harness/assets/assistant-transcript-test-BgRnLvMg.js +0 -57
  565. package/bundled-test-harness/assets/audio-metadata-extractor-test-4xsQqL-0.js +0 -1176
  566. package/bundled-test-harness/assets/authed-fetch-test-663mT5_N.js +0 -73
  567. package/bundled-test-harness/assets/avif-image-def-test-h01BPIJy.js +0 -187
  568. package/bundled-test-harness/assets/basic-test-DiD6T-8Q.js +0 -139
  569. package/bundled-test-harness/assets/binary-upload-dedupe-test-CkjMPO_e.js +0 -308
  570. package/bundled-test-harness/assets/bot-registration-test-CFZHpwdj.js +0 -97
  571. package/bundled-test-harness/assets/box-test-C3pSy5ED.js +0 -50
  572. package/bundled-test-harness/assets/brand-guide-attachments-test-EoC_u7Vc.js +0 -84
  573. package/bundled-test-harness/assets/brand-guide-custom-css-test-Dn3fvblr.js +0 -196
  574. package/bundled-test-harness/assets/brand-guide-edit-test-NeiT3MyK.js +0 -140
  575. package/bundled-test-harness/assets/brand-logo-mark-field-test-C2A1EnBB.js +0 -86
  576. package/bundled-test-harness/assets/broken-link-template-test-CWn6V5zZ.js +0 -192
  577. package/bundled-test-harness/assets/bundled-base-modules-test-D7mLzpsw.js +0 -54
  578. package/bundled-test-harness/assets/bundled-base-oracle-test-I7xCId_k.js +0 -37
  579. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DFBev0h-.js +0 -236
  580. package/bundled-test-harness/assets/button-BeSuhveJ.js +0 -207
  581. package/bundled-test-harness/assets/bxl-cyclic-graph-test-DPykwvvx.js +0 -47
  582. package/bundled-test-harness/assets/bxl-expression-test-LBWJiFb9.js +0 -250
  583. package/bundled-test-harness/assets/bxl-indexing-test-BuZmLk7y.js +0 -212
  584. package/bundled-test-harness/assets/bxl-platform-module-test-BNIvlkCM.js +0 -71
  585. package/bundled-test-harness/assets/can-invoke-test-t-bFIIeX.js +0 -455
  586. package/bundled-test-harness/assets/can-read-realm-test-2Q_MzRT9.js +0 -56
  587. package/bundled-test-harness/assets/cancel-indexing-job-test-QeYxEukn.js +0 -69
  588. package/bundled-test-harness/assets/capture-test-CJmJG8YR.js +0 -360
  589. package/bundled-test-harness/assets/card-api-test-B43I510H.js +0 -198
  590. package/bundled-test-harness/assets/card-basics-test-CBClzP2y.js +0 -5364
  591. package/bundled-test-harness/assets/card-chooser-paging-test-HEVzf6pR.js +0 -235
  592. package/bundled-test-harness/assets/card-chooser-test-GfjBRPFI.js +0 -393
  593. package/bundled-test-harness/assets/card-context-search-results-CoSr4EdS.js +0 -30
  594. package/bundled-test-harness/assets/card-context-search-results-test-BLMlZu9t.js +0 -184
  595. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DEBOzKan.js +0 -562
  596. package/bundled-test-harness/assets/card-def-menu-items-test-88_h8o0D.js +0 -228
  597. package/bundled-test-harness/assets/card-delete-test-DKom1phy.js +0 -466
  598. package/bundled-test-harness/assets/card-error-awaiting-index-test-DEwgFZMP.js +0 -53
  599. package/bundled-test-harness/assets/card-error-r6_cXst9.js +0 -72
  600. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-B7LiY15e.js +0 -219
  601. package/bundled-test-harness/assets/card-playground-test-CgyIJHui.js +0 -1491
  602. package/bundled-test-harness/assets/card-prerender-rPfzpIOU.js +0 -12939
  603. package/bundled-test-harness/assets/card-thunk-error-test-L0pvg4Ce.js +0 -48
  604. package/bundled-test-harness/assets/card-type-service-test-B2dhqxSD.js +0 -161
  605. package/bundled-test-harness/assets/check-correctness-test-DgqaLlCW.js +0 -1093
  606. package/bundled-test-harness/assets/check-domain-availability-test-B0hJHY5l.js +0 -98
  607. package/bundled-test-harness/assets/chip-D01NW3WH.js +0 -44
  608. package/bundled-test-harness/assets/choreo-D2Jl79RU.js +0 -1019
  609. package/bundled-test-harness/assets/choreo-_E8SOEe-.js +0 -2
  610. package/bundled-test-harness/assets/choreo-feature-reel-test-WLjsZDmS.js +0 -155
  611. package/bundled-test-harness/assets/choreo-gallery-build-order-test-6jnS8PsS.js +0 -436
  612. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CbUZsVB6.js +0 -399
  613. package/bundled-test-harness/assets/choreo-gallery-cover-test-CbvAStgk.js +0 -214
  614. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-tdjvUSa6.js +0 -133
  615. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-CsnM3hQK.js +0 -42
  616. package/bundled-test-harness/assets/choreo-gallery-drift-test-DG2LQTa7.js +0 -620
  617. package/bundled-test-harness/assets/choreo-gallery-escort-test-mn3-qXP1.js +0 -187
  618. package/bundled-test-harness/assets/choreo-gallery-films-test-BuktaC0D.js +0 -140
  619. package/bundled-test-harness/assets/choreo-gallery-filter-test-Dd-zpps0.js +0 -46
  620. package/bundled-test-harness/assets/choreo-gallery-fold-test-CWc1ijGc.js +0 -180
  621. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-tk2QmYPU.js +0 -114
  622. package/bundled-test-harness/assets/choreo-gallery-guides-test-DVbf1zM4.js +0 -321
  623. package/bundled-test-harness/assets/choreo-gallery-hang-test-B7EFp2dx.js +0 -426
  624. package/bundled-test-harness/assets/choreo-gallery-highlight-test-BFgbdesP.js +0 -60
  625. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-DJb8FC5R.js +0 -370
  626. package/bundled-test-harness/assets/choreo-gallery-interruption-test-DWyMXo5D.js +0 -176
  627. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-D3b8LsJ6.js +0 -104
  628. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CjjU6Rvn.js +0 -193
  629. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Le_h3QWU.js +0 -111
  630. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-Cp-DlWj4.js +0 -127
  631. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-DayS4GCJ.js +0 -100
  632. package/bundled-test-harness/assets/choreo-gallery-presentation-test-DeAfuFS7.js +0 -157
  633. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BgPWpggq.js +0 -145
  634. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-PzyoMNYv.js +0 -89
  635. package/bundled-test-harness/assets/choreo-gallery-sheet-test-CxaiNBkL.js +0 -48
  636. package/bundled-test-harness/assets/choreo-gallery-site-test-6xtSntS5.js +0 -237
  637. package/bundled-test-harness/assets/choreo-gallery-stage-E6Q5r-zU.js +0 -256
  638. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-C7aWMr9a.js +0 -102
  639. package/bundled-test-harness/assets/choreo-gallery-stages-test-CDWWgC61.js +0 -35
  640. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-Bkp15XJv.js +0 -138
  641. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CcGRi_3O.js +0 -144
  642. package/bundled-test-harness/assets/choreo-gallery-theater-test-Qph5pLT_.js +0 -252
  643. package/bundled-test-harness/assets/choreo-gallery-tuning-test-C4DhFLVA.js +0 -95
  644. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-LK493r1M.js +0 -88
  645. package/bundled-test-harness/assets/choreo-gallery-wires-test-B7SeUCc8.js +0 -148
  646. package/bundled-test-harness/assets/client-telemetry-test-DGmHzAFx.js +0 -340
  647. package/bundled-test-harness/assets/clip-BpYQPVz_.js +0 -2
  648. package/bundled-test-harness/assets/clip-CNaYbIwL.js +0 -92
  649. package/bundled-test-harness/assets/code-block-Cp2CJo5-.js +0 -502
  650. package/bundled-test-harness/assets/code-ref-test-C8JBHDb-.js +0 -163
  651. package/bundled-test-harness/assets/code-submode-availability-test-CzG1Tv6L.js +0 -198
  652. package/bundled-test-harness/assets/code-submode-test-BclVWjm5.js +0 -1839
  653. package/bundled-test-harness/assets/codeblocks-test-CmQlyxN7.js +0 -418
  654. package/bundled-test-harness/assets/codemirror-editor-test-B74H_yn8.js +0 -1512
  655. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bz6VEysU.js +0 -366
  656. package/bundled-test-harness/assets/color-field-test-DMCPQKIP.js +0 -212
  657. package/bundled-test-harness/assets/compaction-test-saQCLBrQ.js +0 -150
  658. package/bundled-test-harness/assets/computed-test-C05HliJC.js +0 -1320
  659. package/bundled-test-harness/assets/container-Cqcwrd-m.js +0 -10857
  660. package/bundled-test-harness/assets/container-h3Wc26qn.css +0 -5097
  661. package/bundled-test-harness/assets/content-preview-components-test-DZPj4_CU.js +0 -462
  662. package/bundled-test-harness/assets/copy-and-edit-test-DiXTQNTF.js +0 -292
  663. package/bundled-test-harness/assets/copy-card-test-ys7GquUY.js +0 -218
  664. package/bundled-test-harness/assets/copy-file-to-realm-test-Gn0Wn4vT.js +0 -148
  665. package/bundled-test-harness/assets/copy-source-test-BTLrOmPm.js +0 -56
  666. package/bundled-test-harness/assets/create-file-test-BCeIW-Rt.js +0 -464
  667. package/bundled-test-harness/assets/create-file-test-DbHQ5JsS.js +0 -1086
  668. package/bundled-test-harness/assets/create-listing-modal-test-CeHc4ter.js +0 -273
  669. package/bundled-test-harness/assets/create-listing-pr-request-test-DXbJNfMh.js +0 -117
  670. package/bundled-test-harness/assets/create-spec-test-BDIZoyHT.js +0 -256
  671. package/bundled-test-harness/assets/create-submission-workflow-test-Bix5J-3A.js +0 -132
  672. package/bundled-test-harness/assets/create-workspace-test-BmNnLHwC.js +0 -104
  673. package/bundled-test-harness/assets/credential-fields-test-NK1F4QWn.js +0 -200
  674. package/bundled-test-harness/assets/csv-file-def-test-BSfs4TTP.js +0 -102
  675. package/bundled-test-harness/assets/dashboard-C4T7ffKY.js +0 -3576
  676. package/bundled-test-harness/assets/dashboard-CFeHuP5-.js +0 -81
  677. package/bundled-test-harness/assets/dashboard-DQlpW-ux.css +0 -2392
  678. package/bundled-test-harness/assets/dashboard-add-workspace-test--rr6objf.js +0 -50
  679. package/bundled-test-harness/assets/dashboard-agents-test-D1y8H4xH.js +0 -334
  680. package/bundled-test-harness/assets/dashboard-archive-test-bN4EQaXv.js +0 -128
  681. package/bundled-test-harness/assets/dashboard-delete-test-BvsASb8B.js +0 -163
  682. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-DEsd5ZzZ.js +0 -71
  683. package/bundled-test-harness/assets/dashboard-duplicate-test-BnR0sTgB.js +0 -222
  684. package/bundled-test-harness/assets/dashboard-get-started-test-DG4uUXLv.js +0 -246
  685. package/bundled-test-harness/assets/dashboard-pinned-cards-test-AoGGVRAS.js +0 -220
  686. package/bundled-test-harness/assets/dashboard-reindex-test-BN9a96Xp.js +0 -115
  687. package/bundled-test-harness/assets/dashboard-section-rail-test-B3OT9V2T.js +0 -169
  688. package/bundled-test-harness/assets/dashboard-state-test-BY0Zqrmj.js +0 -162
  689. package/bundled-test-harness/assets/dashboard-test-C13oNpWt.js +0 -545
  690. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DZIV4x5j.js +0 -62
  691. package/bundled-test-harness/assets/dashboard-workspace-test-CBnOQViI.js +0 -537
  692. package/bundled-test-harness/assets/dashboard-workspaces-section-test-KU8ZVOYp.js +0 -396
  693. package/bundled-test-harness/assets/data-file-def-preview-test-CI5gcdtK.js +0 -155
  694. package/bundled-test-harness/assets/date-time-fields-test-D2CpR_Pb.js +0 -359
  695. package/bundled-test-harness/assets/debug-message-test-Df1kHesw.js +0 -117
  696. package/bundled-test-harness/assets/declared-captures-test-hQ43zuox.js +0 -879
  697. package/bundled-test-harness/assets/delete-workspace-test-BhfMKsix.js +0 -102
  698. package/bundled-test-harness/assets/diffing-test-CHRh55mC.js +0 -210
  699. package/bundled-test-harness/assets/download-file-to-realm-test-CC1HURCi.js +0 -119
  700. package/bundled-test-harness/assets/editor-test-DkeCv28f.js +0 -688
  701. package/bundled-test-harness/assets/edits-BSJqtUXM.js +0 -651
  702. package/bundled-test-harness/assets/email-field-test-DihK0suO.js +0 -75
  703. package/bundled-test-harness/assets/enum-field-test-Gja3bzt5.js +0 -935
  704. package/bundled-test-harness/assets/error-display-test-GhYZu7cp.js +0 -343
  705. package/bundled-test-harness/assets/evaluate-module-test-D_t4CiUq.js +0 -91
  706. package/bundled-test-harness/assets/execute-atomic-operations-test-xtou8Zeg.js +0 -113
  707. package/bundled-test-harness/assets/externals-B02-sD_L.js +0 -4393
  708. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DtxzNXdE.js +0 -207
  709. package/bundled-test-harness/assets/fallback-banner-test-BfmiQ_68.js +0 -53
  710. package/bundled-test-harness/assets/fallback-banner-test-DLtTdmvn.js +0 -225
  711. package/bundled-test-harness/assets/fallback-models-test-BxNJxhfd.js +0 -161
  712. package/bundled-test-harness/assets/fetch-card-json-test-DofKbzvC.js +0 -61
  713. package/bundled-test-harness/assets/field-configuration-test-SUoPaXWy.js +0 -551
  714. package/bundled-test-harness/assets/field-markdown-domain-test-BwtR0dPP.js +0 -616
  715. package/bundled-test-harness/assets/field-markdown-oversize-test-D8UJcBc3.js +0 -88
  716. package/bundled-test-harness/assets/field-markdown-primitives-test-D5_ZdoDO.js +0 -365
  717. package/bundled-test-harness/assets/field-markdown-specialized-test-Dpd5hs04.js +0 -534
  718. package/bundled-test-harness/assets/field-playground-test-CzhYzKGv.js +0 -894
  719. package/bundled-test-harness/assets/field-support-predicates-test-BSvVOFth.js +0 -167
  720. package/bundled-test-harness/assets/file-attachment-test-fM-yFedm.js +0 -796
  721. package/bundled-test-harness/assets/file-chooser-panel-test-CKj8YTdY.js +0 -153
  722. package/bundled-test-harness/assets/file-chooser-test-Bs8jFXqa.js +0 -504
  723. package/bundled-test-harness/assets/file-def-format-templates-test-CxrRoWoD.js +0 -380
  724. package/bundled-test-harness/assets/file-def-live-reload-test-X_8YEkve.js +0 -124
  725. package/bundled-test-harness/assets/file-def-menu-items-test-Dx879o_o.js +0 -138
  726. package/bundled-test-harness/assets/file-def-navigation-test-MMI_EEO1.js +0 -109
  727. package/bundled-test-harness/assets/file-def-serialization-test-B5lguBQD.js +0 -89
  728. package/bundled-test-harness/assets/file-def-test-Di9QWcrj.js +0 -216
  729. package/bundled-test-harness/assets/file-preview-live-reload-test-aqx93A7c.js +0 -310
  730. package/bundled-test-harness/assets/file-resource-primitives-test-a5abpcSB.js +0 -255
  731. package/bundled-test-harness/assets/file-tree-from-index-test-CnruGxJ8.js +0 -96
  732. package/bundled-test-harness/assets/file-tree-test-BCyWDdSE.js +0 -851
  733. package/bundled-test-harness/assets/file-view-model-test-BfpLa01Y.js +0 -346
  734. package/bundled-test-harness/assets/filedef-export-shape-test-CQ9XbrzS.js +0 -61
  735. package/bundled-test-harness/assets/film-CL1zj_bJ.js +0 -2
  736. package/bundled-test-harness/assets/film-Dq_quZ31.js +0 -13
  737. package/bundled-test-harness/assets/film-xbkQa060.js +0 -4074
  738. package/bundled-test-harness/assets/flac-audio-def-test-BmVp9dMx.js +0 -143
  739. package/bundled-test-harness/assets/focus-Dm4wkM72.js +0 -306
  740. package/bundled-test-harness/assets/font-metadata-extractor-test-OWEh9_MS.js +0 -415
  741. package/bundled-test-harness/assets/formatted-aibot-message-test-BpHsWpuV.js +0 -109
  742. package/bundled-test-harness/assets/formatted-user-message-test-DZW5TAr0.js +0 -43
  743. package/bundled-test-harness/assets/freestyle-test-D_uaPU_3.js +0 -17
  744. package/bundled-test-harness/assets/full-reindex-realm-test-C6vHL5kC.js +0 -101
  745. package/bundled-test-harness/assets/garbage-collection-test-D-Ao4t2n.js +0 -403
  746. package/bundled-test-harness/assets/general-test-PSGI8W0z.js +0 -923
  747. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-J-m-0E6W.js +0 -65
  748. package/bundled-test-harness/assets/generic-file-def-preview-test-BAsOhTYU.js +0 -71
  749. package/bundled-test-harness/assets/get-available-realm-identifiers-test-D5PBOr97.js +0 -47
  750. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-NM9UURHE.js +0 -47
  751. package/bundled-test-harness/assets/get-default-writable-realm-test-BxXc9a3J.js +0 -54
  752. package/bundled-test-harness/assets/get-published-realms-test-C8TJEc4-.js +0 -71
  753. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-Dt8CB6lS.js +0 -54
  754. package/bundled-test-harness/assets/get-relationship-membership-state-test-9_8x3myJ.js +0 -1308
  755. package/bundled-test-harness/assets/get-user-system-card-test-k0UO-uba.js +0 -67
  756. package/bundled-test-harness/assets/gif-image-def-test-BWrqPGDX.js +0 -188
  757. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BgG8QI9E.js +0 -160
  758. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-BKOvNyCN.js +0 -74
  759. package/bundled-test-harness/assets/gts-file-def-test-BCRHwDeZ.js +0 -100
  760. package/bundled-test-harness/assets/head-format-preview-test-DnfUhniI.js +0 -158
  761. package/bundled-test-harness/assets/helpers-DklkegO_.js +0 -5
  762. package/bundled-test-harness/assets/host-mode-service-vOfN0smp.js +0 -232
  763. package/bundled-test-harness/assets/host-mode-test-CCCJFz6_.js +0 -831
  764. package/bundled-test-harness/assets/host-submode-test-CtCfbuPA.js +0 -1342
  765. package/bundled-test-harness/assets/html-component-test-CWyhb5ZX.js +0 -65
  766. package/bundled-test-harness/assets/html-def-test-Cb8C2lUx.js +0 -160
  767. package/bundled-test-harness/assets/html-meta-extractor-test-BHT9Rtir.js +0 -60
  768. package/bundled-test-harness/assets/hydratable-card-test-DpgpdesD.js +0 -426
  769. package/bundled-test-harness/assets/icon-button-ABCGVF3C.js +0 -67
  770. package/bundled-test-harness/assets/image-metadata-extractor-test-ClhPTouq.js +0 -1109
  771. package/bundled-test-harness/assets/index-changes-test-CgnVr3LH.js +0 -367
  772. package/bundled-test-harness/assets/index-query-engine-test-CQTwju5_.js +0 -2593
  773. package/bundled-test-harness/assets/index-writer-test-IoVOoZT2.js +0 -3040
  774. package/bundled-test-harness/assets/inspector-test-BN2Ieb77.js +0 -2058
  775. package/bundled-test-harness/assets/instance-filter-matcher-test-Bq-_Sy89.js +0 -788
  776. package/bundled-test-harness/assets/instantiate-card-test-DEeDTzFV.js +0 -164
  777. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DP6kOyJS.js +0 -475
  778. package/bundled-test-harness/assets/interact-submode-setup-B0_cHqH-.js +0 -566
  779. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-9uUD91Pw.js +0 -99
  780. package/bundled-test-harness/assets/invite-user-to-room-test-CcDA45Ac.js +0 -142
  781. package/bundled-test-harness/assets/invoke-card-operation-test-DmUtgueM.js +0 -333
  782. package/bundled-test-harness/assets/isolated-render-test-B2eXNHu6.js +0 -51
  783. package/bundled-test-harness/assets/job-scoped-doc-cache-test-DF9D7cOc.js +0 -181
  784. package/bundled-test-harness/assets/job-scoped-instance-residency-test-CSS8xUU5.js +0 -103
  785. package/bundled-test-harness/assets/jpg-image-def-test-voECMTht.js +0 -697
  786. package/bundled-test-harness/assets/json-file-def-test-8Y4KLjUC.js +0 -95
  787. package/bundled-test-harness/assets/key-notices-badge-test-d1mYqx0e.js +0 -155
  788. package/bundled-test-harness/assets/key-readiness-test-BtCg7PCk.js +0 -190
  789. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CyCMbJnN.js +0 -398
  790. package/bundled-test-harness/assets/linksto-error-sentinel-test-BDW572-v.js +0 -238
  791. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-B4wM97hD.js +0 -354
  792. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-BhJmtJ0_.js +0 -303
  793. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BpBQ5V_i.js +0 -197
  794. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-pkBBl4e9.js +0 -260
  795. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-Bb6wjUdD.js +0 -196
  796. package/bundled-test-harness/assets/lint-and-fix-test-CcMLn-co.js +0 -51
  797. package/bundled-test-harness/assets/live-test-AyBnq7BX.js +0 -2
  798. package/bundled-test-harness/assets/live-test-CgnAcIDw.js +0 -100
  799. package/bundled-test-harness/assets/load-default-skills-test-BIOwtx0Y.js +0 -74
  800. package/bundled-test-harness/assets/loader-parallel-prefetch-test-D5_oRSER.js +0 -257
  801. package/bundled-test-harness/assets/loader-test-DSc_jR1c.js +0 -482
  802. package/bundled-test-harness/assets/loading-test-8pldx7S-.js +0 -63
  803. package/bundled-test-harness/assets/m4a-audio-def-test-BDI5apzM.js +0 -190
  804. package/bundled-test-harness/assets/main-5kHyCkdm.js +0 -5
  805. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-Wud0s7WZ.js +0 -470
  806. package/bundled-test-harness/assets/markdown-embed-chooser-test-DVzzS-0C.js +0 -334
  807. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B5W_iqsi.js +0 -447
  808. package/bundled-test-harness/assets/markdown-embed-preview-test-CZF_s0fB.js +0 -368
  809. package/bundled-test-harness/assets/markdown-fallback-test-fT6BS4W7.js +0 -316
  810. package/bundled-test-harness/assets/markdown-file-def-test-B1aTzazR.js +0 -380
  811. package/bundled-test-harness/assets/markdown-helpers-test-gNKZf7Mw.js +0 -188
  812. package/bundled-test-harness/assets/markdown-highlighting-test-Du5_CQmD.js +0 -244
  813. package/bundled-test-harness/assets/markdown-preview-h-_aJhRc.js +0 -72
  814. package/bundled-test-harness/assets/markdown-preview-test-DJvoVsXw.js +0 -238
  815. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-VwJi3Paj.js +0 -146
  816. package/bundled-test-harness/assets/markdown-skill-search-test-ysCdf0xM.js +0 -80
  817. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-K2JuMy36.js +0 -63
  818. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-CkdL_-os.js +0 -300
  819. package/bundled-test-harness/assets/matrix-service-personal-realm-test-Dy1DultK.js +0 -125
  820. package/bundled-test-harness/assets/matrix-service-realm-servers-test-DHDDKuEg.js +0 -55
  821. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-DcTbZpMl.js +0 -132
  822. package/bundled-test-harness/assets/matrix-service-relogin-test-D3NQktoa.js +0 -59
  823. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-6CAflWOA.js +0 -35
  824. package/bundled-test-harness/assets/menu-kUSaJIPq.js +0 -3562
  825. package/bundled-test-harness/assets/message-service-subscription-test-DaQdgDWi.js +0 -110
  826. package/bundled-test-harness/assets/message-service-test-BsGEgM_m.js +0 -144
  827. package/bundled-test-harness/assets/message-tool-test-BB_4kw1V.js +0 -33
  828. package/bundled-test-harness/assets/midi-audio-def-test-BbbkFjqf.js +0 -182
  829. package/bundled-test-harness/assets/migrate-skill-test-X9xImDuq.js +0 -161
  830. package/bundled-test-harness/assets/mini-AwF31elJ.js +0 -1404
  831. package/bundled-test-harness/assets/mini-card-chooser-test-BZtrEiWu.js +0 -272
  832. package/bundled-test-harness/assets/mini-file-chooser-test-MIHW3kCI.js +0 -201
  833. package/bundled-test-harness/assets/mock-matrix-Dd8k0DNa.js +0 -15107
  834. package/bundled-test-harness/assets/mock-matrix-DhPN_34j.js +0 -2
  835. package/bundled-test-harness/assets/modal-LTh3_oHK.js +0 -322
  836. package/bundled-test-harness/assets/model-cost-tier-test-h1IkU9mp.js +0 -174
  837. package/bundled-test-harness/assets/model-file-extract-test-ntSo0wZF.js +0 -206
  838. package/bundled-test-harness/assets/module-transpile-cache-test-CDeRaaeP.js +0 -67
  839. package/bundled-test-harness/assets/monaco-test-C0Fa744D.js +0 -100
  840. package/bundled-test-harness/assets/mp3-audio-def-test-B4j4qR9H.js +0 -133
  841. package/bundled-test-harness/assets/multiple-stacks-test-BhA25ywL.js +0 -208
  842. package/bundled-test-harness/assets/nested-query-field-render-test-S9Y8YNKB.js +0 -249
  843. package/bundled-test-harness/assets/no-stacks-test-B7VciWyg.js +0 -48
  844. package/bundled-test-harness/assets/number-field-test-CS74lDPN.js +0 -184
  845. package/bundled-test-harness/assets/office-file-def-test-2cKc1pmd.js +0 -263
  846. package/bundled-test-harness/assets/office-metadata-extractor-test-DC8Fo-OW.js +0 -218
  847. package/bundled-test-harness/assets/office-poster-capture-test-Ba0_5UrT.js +0 -203
  848. package/bundled-test-harness/assets/ogg-audio-def-test-CIPQ1d4w.js +0 -196
  849. package/bundled-test-harness/assets/open-create-listing-modal-test-bmQkY5Zl.js +0 -131
  850. package/bundled-test-harness/assets/open-image-in-new-tab-test-DBD7_vMH.js +0 -52
  851. package/bundled-test-harness/assets/open-secure-window-test-BgeuYAqz.js +0 -253
  852. package/bundled-test-harness/assets/open-workspace-test-DRHGljV0.js +0 -46
  853. package/bundled-test-harness/assets/operation-lowering-test-CH1c0pSH.js +0 -2957
  854. package/bundled-test-harness/assets/operations-invocation-test-B1YkCLrv.js +0 -523
  855. package/bundled-test-harness/assets/operations-optimistic-test-DAbtOwsC.js +0 -203
  856. package/bundled-test-harness/assets/operations-query-test-9p1ZIDe-.js +0 -459
  857. package/bundled-test-harness/assets/operations-store-reconciliation-test-D0EQh3w2.js +0 -406
  858. package/bundled-test-harness/assets/operations-test-BQhlrfe3.js +0 -2518
  859. package/bundled-test-harness/assets/operator-mode-acceptance-test-DtHnonEb.js +0 -1195
  860. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DQUxZxaq.js +0 -1036
  861. package/bundled-test-harness/assets/operator-mode-links-test-BJ26HllS.js +0 -797
  862. package/bundled-test-harness/assets/operator-mode-test-DIPDI0qt.js +0 -696
  863. package/bundled-test-harness/assets/operator-mode-ui-test-CfA-fAh4.js +0 -1045
  864. package/bundled-test-harness/assets/overlay-DecPh3nt.js +0 -123
  865. package/bundled-test-harness/assets/overlay-menu-items-test-C6XqjLtu.js +0 -331
  866. package/bundled-test-harness/assets/overlays-Ctp8ePzZ.js +0 -75
  867. package/bundled-test-harness/assets/overlays-CzWpSg5T.js +0 -2
  868. package/bundled-test-harness/assets/overlays-detached-element-test-DvL_8Bb5.js +0 -56
  869. package/bundled-test-harness/assets/panel-CImumikB.js +0 -15124
  870. package/bundled-test-harness/assets/past-sessions-test-N6riGN_I.js +0 -321
  871. package/bundled-test-harness/assets/patch-fields-test-D30_-KwQ.js +0 -1014
  872. package/bundled-test-harness/assets/patch-instance-test-C5rGscZq.js +0 -348
  873. package/bundled-test-harness/assets/pdf-file-def-test-DtiqGRvZ.js +0 -111
  874. package/bundled-test-harness/assets/pdf-metadata-extractor-test-FU02KmdV.js +0 -130
  875. package/bundled-test-harness/assets/permission-checking-realm-test-DqdNJDwU.js +0 -306
  876. package/bundled-test-harness/assets/persist-module-inspector-view-test-BHOAgPVy.js +0 -60
  877. package/bundled-test-harness/assets/persist-scroll-position-test-qtmS518r.js +0 -254
  878. package/bundled-test-harness/assets/phone-number-field-test-DhdaM7uL.js +0 -73
  879. package/bundled-test-harness/assets/pill-menu-test-C9Mrrepl.js +0 -60
  880. package/bundled-test-harness/assets/plate-9n-sXyCw.js +0 -41
  881. package/bundled-test-harness/assets/plate-BnZcAk-_.js +0 -2
  882. package/bundled-test-harness/assets/player-Cu5b4LEJ.js +0 -82
  883. package/bundled-test-harness/assets/player-unk2mkxV.js +0 -2
  884. package/bundled-test-harness/assets/playground-BwA8wFGK.js +0 -58
  885. package/bundled-test-harness/assets/plural-field-components-test-CFNQKETg.js +0 -198
  886. package/bundled-test-harness/assets/png-image-def-test-DG5Vhlqb.js +0 -266
  887. package/bundled-test-harness/assets/policy-audit-confirmation-test-yfKU47LR.js +0 -155
  888. package/bundled-test-harness/assets/policy-scoped-search-test-BjQRDYqR.js +0 -339
  889. package/bundled-test-harness/assets/prerender-file-extract-test-CEU4SaAZ.js +0 -346
  890. package/bundled-test-harness/assets/prerender-html-test-CGB3ClCS.js +0 -670
  891. package/bundled-test-harness/assets/prerender-meta-test-xqc4fW_0.js +0 -614
  892. package/bundled-test-harness/assets/prerender-module-test-CI1TmZw-.js +0 -409
  893. package/bundled-test-harness/assets/prerender-persistence-block-test-Da0dJO_N.js +0 -124
  894. package/bundled-test-harness/assets/prerender-pre-model-error-test-BVLyhk8R.js +0 -61
  895. package/bundled-test-harness/assets/prerender-serialize-cycle-test-glJFfxHU.js +0 -134
  896. package/bundled-test-harness/assets/prerendered-html-read-test-Mp4L0VHQ.js +0 -191
  897. package/bundled-test-harness/assets/pretui-components-test-BBpA9UnA.js +0 -991
  898. package/bundled-test-harness/assets/pretui-components-test-BqFq7rw_.css +0 -730
  899. package/bundled-test-harness/assets/preview-format-test-C55Bwcur.js +0 -103
  900. package/bundled-test-harness/assets/preview-test-CTAhRGU8.js +0 -474
  901. package/bundled-test-harness/assets/process-card-test-UjqpuxB7.js +0 -94
  902. package/bundled-test-harness/assets/profile-settings-modal-C8bCgTMK.js +0 -989
  903. package/bundled-test-harness/assets/publish-realm-ixUB4FPK.js +0 -82
  904. package/bundled-test-harness/assets/publish-realm-test-CrrsdL4W.js +0 -210
  905. package/bundled-test-harness/assets/query-field-barrier-test-DjivFE93.js +0 -113
  906. package/bundled-test-harness/assets/query-field-error-sentinel-test-0HwnV4Mw.js +0 -201
  907. package/bundled-test-harness/assets/query-field-membership-status-test-C8yTTBkc.js +0 -323
  908. package/bundled-test-harness/assets/query-field-page-optin-test-D4l_GcII.js +0 -126
  909. package/bundled-test-harness/assets/query-field-schema-test-DDbcNNm5.js +0 -231
  910. package/bundled-test-harness/assets/query-field-search-throttle-test-CXp50Ax0.js +0 -154
  911. package/bundled-test-harness/assets/query-field-stale-prerender-test-DErzt-Cv.js +0 -152
  912. package/bundled-test-harness/assets/query-fields-test-Dz67fdSl.js +0 -535
  913. package/bundled-test-harness/assets/quick-look-test-B1ijDsh_.js +0 -139
  914. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-DJxZ16H_.js +0 -91
  915. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-BoRQkZ8c.js +0 -45
  916. package/bundled-test-harness/assets/read-source-test-Bl-NjchO.js +0 -67
  917. package/bundled-test-harness/assets/read-text-file-test-CP37CZoo.js +0 -124
  918. package/bundled-test-harness/assets/realm-CaK5mkT-.js +0 -2852
  919. package/bundled-test-harness/assets/realm-api-keys-BNUFWbGR.js +0 -579
  920. package/bundled-test-harness/assets/realm-api-keys-CkshxhXC.js +0 -2
  921. package/bundled-test-harness/assets/realm-api-keys-test-BP8xifjn.js +0 -109
  922. package/bundled-test-harness/assets/realm-api-keys-test-CwdK9YXp.js +0 -588
  923. package/bundled-test-harness/assets/realm-config-iKwE3Htp.js +0 -833
  924. package/bundled-test-harness/assets/realm-config-policy-standing-test-BgVEIDnB.js +0 -290
  925. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-BoJoKzmX.js +0 -274
  926. package/bundled-test-harness/assets/realm-config-settings-test-Kxw-GHye.js +0 -187
  927. package/bundled-test-harness/assets/realm-field-test-CdGOxrFb.js +0 -100
  928. package/bundled-test-harness/assets/realm-indexing-test-CHtsBV2b.js +0 -4380
  929. package/bundled-test-harness/assets/realm-policy-fitted-test--DhNZSdC.js +0 -206
  930. package/bundled-test-harness/assets/realm-policy-test-D7714iVa.js +0 -1141
  931. package/bundled-test-harness/assets/realm-querying-test-Cj1ekZ0H.js +0 -1067
  932. package/bundled-test-harness/assets/realm-server-form-agnostic-test-CZFPNJfD.js +0 -96
  933. package/bundled-test-harness/assets/realm-server-subscriber-test-C86WmBp0.js +0 -46
  934. package/bundled-test-harness/assets/realm-service-info-test-CdgcwKDR.js +0 -67
  935. package/bundled-test-harness/assets/realm-test-DPoLsvKz.js +0 -2364
  936. package/bundled-test-harness/assets/realm-token-refresh-test-Ch35Siwi.js +0 -153
  937. package/bundled-test-harness/assets/realm-url-tooltip-test-x8xWOENK.js +0 -78
  938. package/bundled-test-harness/assets/reasoning-test-BxpE8Jvf.js +0 -221
  939. package/bundled-test-harness/assets/recent-files-test-DTmEzPLq.js +0 -450
  940. package/bundled-test-harness/assets/reindex-realm-test-BQ8KULn4.js +0 -117
  941. package/bundled-test-harness/assets/relationship-loading-state-test-BJoArPWf.js +0 -290
  942. package/bundled-test-harness/assets/remix-card-test-DsTA1KoG.js +0 -58
  943. package/bundled-test-harness/assets/rendered-markdown-DvukulDO.js +0 -292
  944. package/bundled-test-harness/assets/rendered-markdown-test-DxGptXSV.js +0 -587
  945. package/bundled-test-harness/assets/resident-instance-reuse-test-ZWnVu8uj.js +0 -82
  946. package/bundled-test-harness/assets/result-tile-CPyI6Vmv.js +0 -144
  947. package/bundled-test-harness/assets/rich-markdown-field-test-CdygoXIO.js +0 -1647
  948. package/bundled-test-harness/assets/room-message-test-D3NfMqH0.js +0 -484
  949. package/bundled-test-harness/assets/run-D_Px28eF.js +0 -3956
  950. package/bundled-test-harness/assets/run-realm-code-qWCZxmJ7.js +0 -2964
  951. package/bundled-test-harness/assets/run-realm-code-test-UzyeEJq6.js +0 -3844
  952. package/bundled-test-harness/assets/sanitize-module-list-test-Babq44bP.js +0 -85
  953. package/bundled-test-harness/assets/save-card-skip-index-wait-test-BcELXlQ_.js +0 -89
  954. package/bundled-test-harness/assets/schema-editor-test-CEvruZbt.js +0 -785
  955. package/bundled-test-harness/assets/schema-generation-test-hYAMdCrn.js +0 -28
  956. package/bundled-test-harness/assets/scrolling-test-DVIsh-_1.js +0 -412
  957. package/bundled-test-harness/assets/search-adorn-test-CkVhqFd0.js +0 -136
  958. package/bundled-test-harness/assets/search-and-choose-test-DUhOB3FV.js +0 -154
  959. package/bundled-test-harness/assets/search-correlation-id-test-Drn4r26N.js +0 -139
  960. package/bundled-test-harness/assets/search-entries-result-test-DTCRJ_wc.js +0 -234
  961. package/bundled-test-harness/assets/search-entries-test-CE0B47pw.js +0 -1486
  962. package/bundled-test-harness/assets/search-entries-tool-test-C4aG0ckM.js +0 -504
  963. package/bundled-test-harness/assets/search-google-images-test-LyhcB2f3.js +0 -166
  964. package/bundled-test-harness/assets/search-results-D4pSne0x.js +0 -266
  965. package/bundled-test-harness/assets/search-results-test-CRZHhqhn.js +0 -578
  966. package/bundled-test-harness/assets/search-selection-menu-test-B7Y3E_nj.js +0 -108
  967. package/bundled-test-harness/assets/search-sheet-files-test-C2y534g8.js +0 -126
  968. package/bundled-test-harness/assets/search-sheet-persistence-test-DePC59Bk.js +0 -131
  969. package/bundled-test-harness/assets/search-test-Dy8NxFkU.js +0 -2249
  970. package/bundled-test-harness/assets/search-tool-test-lctDaMH3.js +0 -156
  971. package/bundled-test-harness/assets/searchable-option-test-CE64M8oM.js +0 -322
  972. package/bundled-test-harness/assets/searchable-search-doc-test-C6u3mVvT.js +0 -1271
  973. package/bundled-test-harness/assets/section-rail-B_UQX00B.js +0 -113
  974. package/bundled-test-harness/assets/section-rail-test-DIda7MIw.js +0 -256
  975. package/bundled-test-harness/assets/secure-sign-in-CqqqfQG8.js +0 -174
  976. package/bundled-test-harness/assets/secure-sign-in-test-DimbVr_W.js +0 -373
  977. package/bundled-test-harness/assets/segmented-control-iePxSdTS.js +0 -173
  978. package/bundled-test-harness/assets/select-tNs6_xwW.js +0 -175
  979. package/bundled-test-harness/assets/send-ai-assistant-message-test-2GVrMF9Z.js +0 -52
  980. package/bundled-test-harness/assets/send-bot-trigger-event-test-B_3dKfGN.js +0 -56
  981. package/bundled-test-harness/assets/send-request-via-proxy-test-_clNWyYc.js +0 -380
  982. package/bundled-test-harness/assets/sending-test-DCPFXUVg.js +0 -659
  983. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BI0zCs8Y.js +0 -136
  984. package/bundled-test-harness/assets/serialization-test-bjdtVlZL.js +0 -8758
  985. package/bundled-test-harness/assets/set-user-system-card-test-BUv1vL08.js +0 -59
  986. package/bundled-test-harness/assets/setup-BW1mmC7C.js +0 -772
  987. package/bundled-test-harness/assets/setup-DsIcFT-T.js +0 -2
  988. package/bundled-test-harness/assets/shared-link-target-reuse-test-9NeJEjkb.js +0 -207
  989. package/bundled-test-harness/assets/show-card-test-mfyLwusD.js +0 -365
  990. package/bundled-test-harness/assets/signed-capture-link-test-BOtKNCAM.js +0 -132
  991. package/bundled-test-harness/assets/single-stack-test-B4MGjaLk.js +0 -652
  992. package/bundled-test-harness/assets/skills-test-BuP-Yzk1.js +0 -648
  993. package/bundled-test-harness/assets/skip-boot-index-guard-test-Cmrx2-K7.js +0 -46
  994. package/bundled-test-harness/assets/spec-test-BhZDdhVQ.js +0 -1077
  995. package/bundled-test-harness/assets/spinner-CpIBUG9m.js +0 -49
  996. package/bundled-test-harness/assets/src-DGHttmW-.js +0 -216
  997. package/bundled-test-harness/assets/src-DaNDSbp7.js +0 -5
  998. package/bundled-test-harness/assets/stick-to-bottom-resize-test-Dpy3OVum.js +0 -56
  999. package/bundled-test-harness/assets/store-add-test-_IYS8o74.js +0 -50
  1000. package/bundled-test-harness/assets/store-module-rebuild-test-B5VMaICy.js +0 -454
  1001. package/bundled-test-harness/assets/store-search-test-C2VZabrH.js +0 -175
  1002. package/bundled-test-harness/assets/store-test-D6PObxoD.js +0 -3672
  1003. package/bundled-test-harness/assets/structured-theme-test-BHjVeMf-.js +0 -377
  1004. package/bundled-test-harness/assets/summarize-session-test-BFtTuhe0.js +0 -172
  1005. package/bundled-test-harness/assets/svg-image-def-test-BL6lkWUX.js +0 -167
  1006. package/bundled-test-harness/assets/switch-submode-test-6Uv3bZMl.js +0 -168
  1007. package/bundled-test-harness/assets/sync-openrouter-models-test-Dp9E05tL.js +0 -97
  1008. package/bundled-test-harness/assets/test-support-DYm8XZ0E.js +0 -3
  1009. package/bundled-test-harness/assets/test-support-DfnhiIMV.js +0 -99
  1010. package/bundled-test-harness/assets/tests-CZk0Iag2.js +0 -3596
  1011. package/bundled-test-harness/assets/text-file-def-test-CHdC0yIU.js +0 -94
  1012. package/bundled-test-harness/assets/text-input-validator-test-B9ZR8XPU.js +0 -156
  1013. package/bundled-test-harness/assets/text-suggestion-test-CGLspKFQ.js +0 -340
  1014. package/bundled-test-harness/assets/theme-card-test-CXZvSEvG.js +0 -621
  1015. package/bundled-test-harness/assets/theme-dashboard-nav-test-CkEE0ILk.js +0 -196
  1016. package/bundled-test-harness/assets/theme-scheme-island-test-URXTjipF.js +0 -264
  1017. package/bundled-test-harness/assets/titles-C6enAdIv.js +0 -2
  1018. package/bundled-test-harness/assets/titles-Dft1HoUT.js +0 -52
  1019. package/bundled-test-harness/assets/to-device-streaming-test-D33ZOc9o.js +0 -163
  1020. package/bundled-test-harness/assets/token-usage-test-BHQlU4J4.js +0 -160
  1021. package/bundled-test-harness/assets/tools-CrudqfS3.js +0 -774
  1022. package/bundled-test-harness/assets/tools-calling-test-jo7IREau.js +0 -200
  1023. package/bundled-test-harness/assets/tools-test-D1wMfUa0.js +0 -1624
  1024. package/bundled-test-harness/assets/tools-test-Dn1LYsXp.js +0 -3204
  1025. package/bundled-test-harness/assets/tooltip-8Wyz4IIn.css +0 -68
  1026. package/bundled-test-harness/assets/tooltip-CqwLzRz5.js +0 -134
  1027. package/bundled-test-harness/assets/transform-cards-test-BPhwPFtp.js +0 -341
  1028. package/bundled-test-harness/assets/ts-file-def-preview-test-Bq3zTgw8.js +0 -95
  1029. package/bundled-test-harness/assets/ts-file-def-test-GLswMl7O.js +0 -92
  1030. package/bundled-test-harness/assets/ttf-font-def-test-DQulvUWs.js +0 -206
  1031. package/bundled-test-harness/assets/turn-settling-test-BspmOUQP.js +0 -160
  1032. package/bundled-test-harness/assets/turn-summary-9A8nvC0-.js +0 -1039
  1033. package/bundled-test-harness/assets/unpublish-realm-test-SkYPEhDz.js +0 -102
  1034. package/bundled-test-harness/assets/update-room-skills-test-cTxb-WU6.js +0 -240
  1035. package/bundled-test-harness/assets/use-ai-assistant-test-uaqW1T_A.js +0 -384
  1036. package/bundled-test-harness/assets/user-message-BudkIP-3.js +0 -262
  1037. package/bundled-test-harness/assets/validate-realm-test-DxrGgH9n.js +0 -67
  1038. package/bundled-test-harness/assets/video-metadata-extractor-test-B2pe-Iqa.js +0 -520
  1039. package/bundled-test-harness/assets/view-visually-test-PNon6fUo.js +0 -335
  1040. package/bundled-test-harness/assets/virtual-network-reset-test-uYJLaQHf.js +0 -96
  1041. package/bundled-test-harness/assets/wav-audio-def-test-F4OrFFR4.js +0 -160
  1042. package/bundled-test-harness/assets/webp-image-def-test-B0a_-Vya.js +0 -226
  1043. package/bundled-test-harness/assets/workspace-Cyftysy9.js +0 -440
  1044. package/bundled-test-harness/assets/workspace-a11y-test-sKiPDcbl.js +0 -197
  1045. package/bundled-test-harness/assets/workspace-actions-BuawjFmZ.js +0 -561
  1046. package/bundled-test-harness/assets/workspace-behavior-test-CKa-pb3T.js +0 -338
  1047. package/bundled-test-harness/assets/workspace-delete-multiple-test-Dt2weG5R.js +0 -212
  1048. package/bundled-test-harness/assets/workspace-delete-summary-test-CkqgFqZ8.js +0 -63
  1049. package/bundled-test-harness/assets/workspace-hosting-test-Ci7EEtHP.js +0 -138
  1050. package/bundled-test-harness/assets/workspace-indexing-test-BPVxxY6W.js +0 -71
  1051. package/bundled-test-harness/assets/workspace-test-CWr7vFbg.js +0 -385
  1052. package/bundled-test-harness/assets/workspace-test-INNpQovc.js +0 -51
  1053. package/bundled-test-harness/assets/workspace-timestamp-labels-test-CigQb5wr.js +0 -68
  1054. package/bundled-test-harness/assets/workspace-unit-test-BwVKpuXT.js +0 -122
  1055. package/bundled-test-harness/assets/write-binary-file-test-BKP3gv1k.js +0 -124
  1056. package/bundled-test-harness/assets/write-text-file-test-B6ijTKTa.js +0 -191
  1057. package/bundled-test-harness/assets/zip-archive-test-C-PBzkTn.js +0 -285
  1058. package/bundled-test-harness/assets/zip-file-def-test-FyCzJT-9.js +0 -164
@@ -1,2518 +0,0 @@
1
- import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
- import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
3
- import { na as DEFINITION_FREE_BASE_OPERATIONS } from "./runtime-common-BTaLJEw-.js";
4
- import "./card-operations-CzugytHO.js";
5
- import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
6
- import { F as setupLocalIndexing, M as setupCardLogs, lt as setupRenderingTest, t as setupMockMatrix } from "./mock-matrix-Dd8k0DNa.js";
7
- import { r as getService } from "./dist-CPfIHBla.js";
8
- import { a as CardDef, d as FileDef, l as FieldDef, n as BaseDef } from "./card-api-Cc8uZunB.js";
9
- import "./file-api-BsT3Q6C9.js";
10
- import { t as string_default } from "./string-5IAMEUit.js";
11
- import { t as DateField } from "./date-DTBQL-Hc.js";
12
- //#region tests/integration/operations-test.ts
13
- var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
14
- var loader;
15
- var operation;
16
- var getOperations;
17
- var getDeclaredOperations;
18
- var params;
19
- var actor;
20
- var instance;
21
- var realmConfig;
22
- var card;
23
- var bxl;
24
- var linkTo;
25
- function implied(base) {
26
- return { base };
27
- }
28
- (0, import_qunit.module)("Integration | operations", function(hooks) {
29
- setupRenderingTest(hooks);
30
- setupCardLogs(hooks, async () => await loader.import("@cardstack/base/card-api"));
31
- setupLocalIndexing(hooks);
32
- setupMockMatrix(hooks);
33
- hooks.beforeEach(async function() {
34
- loader = getService("loader-service").loader;
35
- ({operation, getOperations, getDeclaredOperations, params, actor, instance, realmConfig, card, bxl, linkTo} = await loader.import("@cardstack/base/operations"));
36
- });
37
- (0, import_qunit.test)("getOperations merges declarations up the prototype chain, subclass winning per name", function(assert) {
38
- class Report extends CardDef {
39
- static {
40
- decorateFieldV2(this, "addComment", [operation], function() {
41
- return {
42
- base: "transform",
43
- params: { body: string_default },
44
- append: {
45
- to: "comments",
46
- value: {
47
- body: params("body"),
48
- postedBy: actor()
49
- }
50
- }
51
- };
52
- });
53
- }
54
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
55
- static {
56
- decorateFieldV2(this, "escalate", [operation], function() {
57
- return {
58
- base: "transform",
59
- transformations: bxl`.status = "escalated";`
60
- };
61
- });
62
- }
63
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
64
- }
65
- class ExternalReport extends Report {
66
- static {
67
- decorateFieldV2(this, "escalate", [operation], function() {
68
- return {
69
- base: "transform",
70
- params: { reason: string_default },
71
- set: {
72
- status: "escalated",
73
- escalationReason: params("reason")
74
- }
75
- };
76
- });
77
- }
78
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
79
- static {
80
- decorateFieldV2(this, "listMine", [operation], function() {
81
- return {
82
- base: "query",
83
- query: { filter: {
84
- on: () => ExternalReport,
85
- eq: { author: actor() }
86
- } }
87
- };
88
- });
89
- }
90
- #listMine = (initializeDeferredDecorator(this, "listMine"), void 0);
91
- }
92
- assert.deepEqual(Object.keys(getDeclaredOperations(Report)).sort(), ["addComment", "escalate"], "a class sees the operations it declares");
93
- assert.deepEqual(Object.keys(getDeclaredOperations(ExternalReport)).sort(), [
94
- "addComment",
95
- "escalate",
96
- "listMine"
97
- ], "a subclass sees its own operations and the ones it inherits");
98
- assert.deepEqual(Object.keys(getOperations(ExternalReport)).sort(), [
99
- "addComment",
100
- "appendContainsMany",
101
- "create",
102
- "delete",
103
- "escalate",
104
- "listMine",
105
- "query",
106
- "read",
107
- "readSource",
108
- "transform",
109
- "update"
110
- ], "and reads them alongside the base operations its def type carries");
111
- assert.deepEqual(getDeclaredOperations(Report).escalate, {
112
- base: "transform",
113
- transformations: { $bxl: ".status = \"escalated\";" }
114
- }, "the ancestor keeps its own declaration");
115
- let overridden = getOperations(ExternalReport).escalate;
116
- assert.deepEqual(Object.keys(overridden.params ?? {}), ["reason"], "the subclass declaration replaces the inherited one of the same name");
117
- assert.deepEqual(JSON.parse(JSON.stringify(overridden.set)), {
118
- status: "escalated",
119
- escalationReason: {
120
- $ref: "params",
121
- key: "reason"
122
- }
123
- }, "the overriding declaration is the one that comes back");
124
- assert.deepEqual(Object.keys(getOperations(new ExternalReport())).sort(), Object.keys(getOperations(ExternalReport)).sort(), "an instance reads the same operations as its class");
125
- assert.strictEqual(getOperations(new ExternalReport()).escalate, getOperations(ExternalReport).escalate, "and reads the very declarations the class holds");
126
- });
127
- (0, import_qunit.test)("the base operations a def type carries come back without being declared", function(assert) {
128
- assert.deepEqual(getOperations(CardDef), {
129
- read: implied("read"),
130
- readSource: implied("readSource"),
131
- create: implied("create"),
132
- update: implied("update"),
133
- delete: implied("delete"),
134
- query: implied("query"),
135
- transform: implied("transform"),
136
- appendContainsMany: implied("appendContainsMany")
137
- }, "a card def carries every base operation, implied by the def type");
138
- assert.deepEqual(Object.keys(getDeclaredOperations(CardDef)), [], "none of which is written in author code");
139
- assert.deepEqual(getOperations(FileDef), {
140
- read: implied("read"),
141
- readSource: implied("readSource"),
142
- update: implied("update"),
143
- appendLine: implied("appendLine")
144
- }, "a file's metadata is read-only, so what a file def carries beyond its two reads are the two writes that work on its bytes");
145
- assert.deepEqual(getOperations(FieldDef), {}, "a field has no URL, so nothing is invocable on one");
146
- class Report extends CardDef {
147
- static {
148
- decorateFieldV2(this, "read", [operation], function() {
149
- return {
150
- base: "read",
151
- output: {
152
- title: true,
153
- comments: true
154
- }
155
- };
156
- });
157
- }
158
- #read = (initializeDeferredDecorator(this, "read"), void 0);
159
- }
160
- assert.deepEqual(JSON.parse(JSON.stringify(getOperations(Report).read)), {
161
- base: "read",
162
- output: {
163
- title: true,
164
- comments: true
165
- }
166
- }, "the declaration takes the place of the base operation it names");
167
- assert.deepEqual(Object.keys(getOperations(Report)).sort(), [
168
- "appendContainsMany",
169
- "create",
170
- "delete",
171
- "query",
172
- "read",
173
- "readSource",
174
- "transform",
175
- "update"
176
- ], "and adds no name, because it is that base operation");
177
- class Archivable extends CardDef {
178
- static {
179
- decorateFieldV2(this, "delete", [operation], function() {
180
- return {
181
- base: "transform",
182
- set: { archived: true }
183
- };
184
- });
185
- }
186
- #delete = (initializeDeferredDecorator(this, "delete"), void 0);
187
- }
188
- assert.deepEqual(JSON.parse(JSON.stringify(getOperations(Archivable).delete)), {
189
- base: "transform",
190
- set: { archived: true }
191
- }, "a delete declared on transform is a soft delete");
192
- assert.deepEqual(Object.keys(getOperations(Archivable)).sort(), [
193
- "appendContainsMany",
194
- "create",
195
- "delete",
196
- "query",
197
- "read",
198
- "readSource",
199
- "transform",
200
- "update"
201
- ], "which stands in for the removal rather than beside it");
202
- });
203
- (0, import_qunit.test)("typed references are JSON-serializable markers", function(assert) {
204
- class ClassroomActivity extends CardDef {}
205
- class Classroom extends CardDef {
206
- static {
207
- decorateFieldV2(this, "createActivity", [operation], function() {
208
- return {
209
- base: "create",
210
- of: ClassroomActivity,
211
- params: {
212
- title: string_default,
213
- dueOn: DateField
214
- },
215
- fill: {
216
- title: params("title"),
217
- dueOn: params("dueOn"),
218
- postedBy: actor(),
219
- classroom: instance("id"),
220
- room: realmConfig("defaultRoom"),
221
- settings: realmConfig()
222
- }
223
- };
224
- });
225
- }
226
- #createActivity = (initializeDeferredDecorator(this, "createActivity"), void 0);
227
- static {
228
- decorateFieldV2(this, "addActivity", [operation], function() {
229
- return {
230
- base: "transform",
231
- params: { activity: linkTo(ClassroomActivity) },
232
- append: {
233
- to: "activities",
234
- value: card(params("activity"))
235
- }
236
- };
237
- });
238
- }
239
- #addActivity = (initializeDeferredDecorator(this, "addActivity"), void 0);
240
- static {
241
- decorateFieldV2(this, "addOwner", [operation], function() {
242
- return {
243
- base: "transform",
244
- assert: {
245
- unique: "owners",
246
- by: instance("id"),
247
- message: "This classroom already owns itself"
248
- },
249
- append: {
250
- to: "owners",
251
- value: card("https://example.test/people/1")
252
- }
253
- };
254
- });
255
- }
256
- #addOwner = (initializeDeferredDecorator(this, "addOwner"), void 0);
257
- }
258
- let declarations = getOperations(Classroom);
259
- let createActivity = declarations.createActivity;
260
- let addActivity = declarations.addActivity;
261
- let addOwner = declarations.addOwner;
262
- assert.deepEqual(JSON.parse(JSON.stringify(createActivity.fill)), {
263
- title: {
264
- $ref: "params",
265
- key: "title"
266
- },
267
- dueOn: {
268
- $ref: "params",
269
- key: "dueOn"
270
- },
271
- postedBy: { $ref: "actor" },
272
- classroom: {
273
- $ref: "instance",
274
- key: "id"
275
- },
276
- room: {
277
- $ref: "realmConfig",
278
- key: "defaultRoom"
279
- },
280
- settings: { $ref: "realmConfig" }
281
- }, "every accessor reference survives JSON round-tripping, with and without a key");
282
- assert.strictEqual(createActivity.of, ClassroomActivity, "a create carries the class it creates");
283
- assert.deepEqual(JSON.parse(JSON.stringify(addActivity.append)), {
284
- to: "activities",
285
- value: {
286
- $ref: "card",
287
- value: {
288
- $ref: "params",
289
- key: "activity"
290
- }
291
- }
292
- }, "a card reference carries the reference that resolves to the card");
293
- assert.deepEqual(JSON.parse(JSON.stringify(addOwner.assert)), {
294
- unique: "owners",
295
- by: {
296
- $ref: "instance",
297
- key: "id"
298
- },
299
- message: "This classroom already owns itself"
300
- }, "an assertion keys its uniqueness check on a reference");
301
- assert.deepEqual(JSON.parse(JSON.stringify(bxl`assert(.status == "open"; "not open");`)), { $bxl: "assert(.status == \"open\"; \"not open\");" }, "a raw program is a marker carrying its source");
302
- });
303
- (0, import_qunit.test)("the bxl tag rejects interpolation", function(assert) {
304
- let fieldName = "status";
305
- assert.throws(() => bxl`.${fieldName} = "escalated";`, /does not interpolate values/, "a program reads the operation context through builtins, not spliced text");
306
- });
307
- (0, import_qunit.test)("the decorator rejects a target that is not a card definition", function(assert) {
308
- assert.throws(() => {
309
- class NotADef {
310
- static {
311
- decorateFieldV2(this, "addComment", [operation], function() {
312
- return { base: "read" };
313
- });
314
- }
315
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
316
- }
317
- return NotADef;
318
- }, /can only be used on static properties of classes that extend BaseDef/, "a plain class cannot carry operations");
319
- });
320
- (0, import_qunit.test)("the decorator rejects a symbol operation name", function(assert) {
321
- assert.throws(() => {
322
- class Report extends CardDef {
323
- static {
324
- decorateFieldV2(this, Symbol.for("cardstack-test-operation"), [operation], function() {
325
- return { base: "read" };
326
- });
327
- }
328
- #_ = (initializeDeferredDecorator(this, Symbol.for("cardstack-test-operation")), void 0);
329
- }
330
- return Report;
331
- }, /only supports string operation names, not symbols/, "an operation is addressed by name on the wire, so it needs a string");
332
- });
333
- (0, import_qunit.test)("the decorator rejects a declaration that is not an object", function(assert) {
334
- assert.throws(() => {
335
- class Report extends CardDef {
336
- static {
337
- decorateFieldV2(this, "addComment", [operation], function() {
338
- return "transform";
339
- });
340
- }
341
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
342
- }
343
- return Report;
344
- }, /must be a declaration object/, "a declaration is plain data, not a value of some other kind");
345
- assert.throws(() => {
346
- class Report extends CardDef {
347
- static {
348
- decorateFieldV2(this, "addComment", [operation]);
349
- }
350
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
351
- }
352
- return Report;
353
- }, /must be assigned a declaration object/, "an operation with no declaration names no behavior at all");
354
- });
355
- (0, import_qunit.test)("a field cannot declare operations", function(assert) {
356
- assert.throws(() => {
357
- class Comment extends FieldDef {
358
- static {
359
- decorateFieldV2(this, "addReply", [operation], function() {
360
- return { base: "read" };
361
- });
362
- }
363
- #addReply = (initializeDeferredDecorator(this, "addReply"), void 0);
364
- }
365
- return Comment;
366
- }, /a field has no URL of its own/, "field data is reached through the operations of the card that contains it");
367
- });
368
- (0, import_qunit.test)("a file definition declares reads and the writes that work on its bytes", function(assert) {
369
- class LogFile extends FileDef {
370
- static {
371
- decorateFieldV2(this, "readRedacted", [operation], function() {
372
- return {
373
- base: "read",
374
- output: { name: true }
375
- };
376
- });
377
- }
378
- #readRedacted = (initializeDeferredDecorator(this, "readRedacted"), void 0);
379
- static {
380
- decorateFieldV2(this, "record", [operation], function() {
381
- return {
382
- base: "appendLine",
383
- params: { line: string_default }
384
- };
385
- });
386
- }
387
- #record = (initializeDeferredDecorator(this, "record"), void 0);
388
- static {
389
- decorateFieldV2(this, "replace", [operation], function() {
390
- return { base: "update" };
391
- });
392
- }
393
- #replace = (initializeDeferredDecorator(this, "replace"), void 0);
394
- }
395
- assert.deepEqual(Object.keys(getDeclaredOperations(LogFile)).sort(), [
396
- "readRedacted",
397
- "record",
398
- "replace"
399
- ], "each is declarable on a file definition");
400
- assert.strictEqual(getOperations(LogFile).record, LogFile.record, "and an author-declared one comes back from the read every consumer dispatches from, as the declaration itself");
401
- assert.deepEqual(Object.keys(getOperations(LogFile)).sort(), [
402
- "appendLine",
403
- "read",
404
- "readRedacted",
405
- "readSource",
406
- "record",
407
- "replace",
408
- "update"
409
- ], "beside every base operation the def type carries — a declaration under a name of its own adds to them rather than standing in for one");
410
- assert.throws(() => {
411
- class Mutable extends FileDef {
412
- static {
413
- decorateFieldV2(this, "rename", [operation], function() {
414
- return {
415
- base: "transform",
416
- set: { name: "renamed" }
417
- };
418
- });
419
- }
420
- #rename = (initializeDeferredDecorator(this, "rename"), void 0);
421
- }
422
- return Mutable;
423
- }, /carries only "read", "readSource", "update", "appendLine"/, "file metadata is content-derived, so there is no JSON:API document to transform");
424
- assert.throws(() => {
425
- class Bare extends FileDef {
426
- static {
427
- decorateFieldV2(this, "record", [operation], function() {
428
- return { base: "appendLine" };
429
- });
430
- }
431
- #record = (initializeDeferredDecorator(this, "record"), void 0);
432
- }
433
- return Bare;
434
- }, /declares a `line` param — or an `input` program that produces one/, "an append with no line to append would be refused at every invocation");
435
- assert.throws(() => {
436
- class Linked extends FileDef {
437
- static {
438
- decorateFieldV2(this, "record", [operation], function() {
439
- return {
440
- base: "appendLine",
441
- params: { line: linkTo(CardDef) }
442
- };
443
- });
444
- }
445
- #record = (initializeDeferredDecorator(this, "record"), void 0);
446
- }
447
- return Linked;
448
- }, /`params.line` is the text a line holds/, "a link is a card identity, and what goes into a text file is text");
449
- });
450
- (0, import_qunit.test)("a card definition carries every behavior but the one that appends a line", function(assert) {
451
- assert.throws(() => {
452
- class Ledger extends CardDef {
453
- static {
454
- decorateFieldV2(this, "record", [operation], function() {
455
- return {
456
- base: "appendLine",
457
- params: { line: string_default }
458
- };
459
- });
460
- }
461
- #record = (initializeDeferredDecorator(this, "record"), void 0);
462
- }
463
- return Ledger;
464
- }, /carries only "read", "readSource", "create", "update", "delete", "query", "transform", "appendContainsMany"/, "a card's stored bytes are a JSON:API document, and a line appended to one is no longer a card");
465
- });
466
- (0, import_qunit.test)("an appendContainsMany names the fields it appends to and the item for each", function(assert) {
467
- class EventLog extends CardDef {
468
- static {
469
- decorateFieldV2(this, "log", [operation], function() {
470
- return {
471
- base: "appendContainsMany",
472
- params: { body: string_default },
473
- field: "events",
474
- item: {
475
- body: params("body"),
476
- at: actor()
477
- }
478
- };
479
- });
480
- }
481
- #log = (initializeDeferredDecorator(this, "log"), void 0);
482
- static {
483
- decorateFieldV2(this, "logBoth", [operation], function() {
484
- return {
485
- base: "appendContainsMany",
486
- params: {
487
- body: string_default,
488
- label: string_default
489
- },
490
- fields: {
491
- events: { body: params("body") },
492
- labels: params("label")
493
- }
494
- };
495
- });
496
- }
497
- #logBoth = (initializeDeferredDecorator(this, "logBoth"), void 0);
498
- }
499
- assert.deepEqual(Object.keys(getDeclaredOperations(EventLog)).sort(), ["log", "logBoth"], "both spellings are declarations");
500
- let rejected = [
501
- [
502
- "both spellings at once",
503
- () => {
504
- class Both extends CardDef {
505
- static {
506
- decorateFieldV2(this, "log", [operation], function() {
507
- return {
508
- base: "appendContainsMany",
509
- field: "events",
510
- item: { body: "x" },
511
- fields: { events: { body: "y" } }
512
- };
513
- });
514
- }
515
- #log = (initializeDeferredDecorator(this, "log"), void 0);
516
- }
517
- return Both;
518
- },
519
- /names one field with its `item`, or several under `fields` — not both/
520
- ],
521
- [
522
- "neither spelling",
523
- () => {
524
- class Neither extends CardDef {
525
- static {
526
- decorateFieldV2(this, "log", [operation], function() {
527
- return { base: "appendContainsMany" };
528
- });
529
- }
530
- #log = (initializeDeferredDecorator(this, "log"), void 0);
531
- }
532
- return Neither;
533
- },
534
- /needs `field` and `item`, or `fields`/
535
- ],
536
- [
537
- "a field with no item",
538
- () => {
539
- class NoItem extends CardDef {
540
- static {
541
- decorateFieldV2(this, "log", [operation], function() {
542
- return {
543
- base: "appendContainsMany",
544
- field: "events"
545
- };
546
- });
547
- }
548
- #log = (initializeDeferredDecorator(this, "log"), void 0);
549
- }
550
- return NoItem;
551
- },
552
- /needs an `item` to append to "events"/
553
- ],
554
- [
555
- "an empty fields map",
556
- () => {
557
- class Empty extends CardDef {
558
- static {
559
- decorateFieldV2(this, "log", [operation], function() {
560
- return {
561
- base: "appendContainsMany",
562
- fields: {}
563
- };
564
- });
565
- }
566
- #log = (initializeDeferredDecorator(this, "log"), void 0);
567
- }
568
- return Empty;
569
- },
570
- /`fields` must be an object mapping each `containsMany` field/
571
- ]
572
- ];
573
- for (let [name, build, pattern] of rejected) assert.throws(build, pattern, `${name} is refused`);
574
- });
575
- (0, import_qunit.test)("an appendContainsMany under its own name may name nothing, and is then the built-in", function(assert) {
576
- class Journal extends CardDef {
577
- static {
578
- decorateFieldV2(this, "appendContainsMany", [operation], function() {
579
- return {
580
- base: "appendContainsMany",
581
- nonGrantable: true
582
- };
583
- });
584
- }
585
- #appendContainsMany = (initializeDeferredDecorator(this, "appendContainsMany"), void 0);
586
- }
587
- assert.deepEqual(JSON.parse(JSON.stringify(getDeclaredOperations(Journal).appendContainsMany)), {
588
- base: "appendContainsMany",
589
- nonGrantable: true
590
- }, "a def can mark the built-in append without changing what it appends");
591
- assert.throws(() => {
592
- class Named extends CardDef {
593
- static {
594
- decorateFieldV2(this, "log", [operation], function() {
595
- return {
596
- base: "appendContainsMany",
597
- nonGrantable: true
598
- };
599
- });
600
- }
601
- #log = (initializeDeferredDecorator(this, "log"), void 0);
602
- }
603
- return Named;
604
- }, /needs `field` and `item`, or `fields`/, "under any other name an append that names nothing is refused");
605
- });
606
- (0, import_qunit.test)("nonGrantable is a boolean any declaration may carry", function(assert) {
607
- class Ledger extends CardDef {
608
- static {
609
- decorateFieldV2(this, "seal", [operation], function() {
610
- return {
611
- base: "transform",
612
- set: { status: "sealed" },
613
- nonGrantable: true
614
- };
615
- });
616
- }
617
- #seal = (initializeDeferredDecorator(this, "seal"), void 0);
618
- static {
619
- decorateFieldV2(this, "update", [operation], function() {
620
- return {
621
- base: "update",
622
- nonGrantable: true
623
- };
624
- });
625
- }
626
- #update = (initializeDeferredDecorator(this, "update"), void 0);
627
- }
628
- assert.deepEqual(Object.keys(getDeclaredOperations(Ledger)).sort(), ["seal", "update"], "a named operation and a built-in both carry it");
629
- assert.throws(() => {
630
- class Loose extends CardDef {
631
- static {
632
- decorateFieldV2(this, "seal", [operation], function() {
633
- return {
634
- base: "transform",
635
- set: { status: "sealed" },
636
- nonGrantable: "yes"
637
- };
638
- });
639
- }
640
- #seal = (initializeDeferredDecorator(this, "seal"), void 0);
641
- }
642
- return Loose;
643
- }, /`nonGrantable` must be a boolean/);
644
- });
645
- (0, import_qunit.test)("label is a short line of plain text any declaration may carry", function(assert) {
646
- class Inbox extends CardDef {
647
- static {
648
- decorateFieldV2(this, "archive", [operation], function() {
649
- return {
650
- base: "transform",
651
- label: "Archive this inbox",
652
- set: { status: "archived" }
653
- };
654
- });
655
- }
656
- #archive = (initializeDeferredDecorator(this, "archive"), void 0);
657
- static {
658
- decorateFieldV2(this, "listOpen", [operation], function() {
659
- return {
660
- base: "query",
661
- label: "List open inboxes",
662
- query: { filter: {
663
- on: () => Inbox,
664
- eq: { status: "open" }
665
- } }
666
- };
667
- });
668
- }
669
- #listOpen = (initializeDeferredDecorator(this, "listOpen"), void 0);
670
- static {
671
- decorateFieldV2(this, "update", [operation], function() {
672
- return {
673
- base: "update",
674
- label: "Edit this inbox"
675
- };
676
- });
677
- }
678
- #update = (initializeDeferredDecorator(this, "update"), void 0);
679
- }
680
- class LogFile extends FileDef {
681
- static {
682
- decorateFieldV2(this, "record", [operation], function() {
683
- return {
684
- base: "appendLine",
685
- label: "Add a line to the log",
686
- params: { line: string_default }
687
- };
688
- });
689
- }
690
- #record = (initializeDeferredDecorator(this, "record"), void 0);
691
- }
692
- assert.deepEqual(Object.fromEntries(Object.entries({
693
- ...getDeclaredOperations(Inbox),
694
- ...getDeclaredOperations(LogFile)
695
- }).map(([name, declaration]) => [name, declaration.label])), {
696
- archive: "Archive this inbox",
697
- listOpen: "List open inboxes",
698
- update: "Edit this inbox",
699
- record: "Add a line to the log"
700
- }, "a named operation, a saved search, a built-in and a file operation all carry one");
701
- let refused = [
702
- [
703
- "an empty label",
704
- "",
705
- /a label must not be empty/
706
- ],
707
- [
708
- "a blank label",
709
- " ",
710
- /a label must not be empty/
711
- ],
712
- [
713
- "a label over 80 characters",
714
- "x".repeat(81),
715
- /a label must be at most 80 characters, and this one is 81/
716
- ],
717
- [
718
- "a label with markup",
719
- "Archive <b>now</b>",
720
- /without markup/
721
- ],
722
- [
723
- "a label with a line break",
724
- "Archive\nthis inbox",
725
- /without line breaks/
726
- ],
727
- [
728
- "a label with a tab",
729
- "Archive this inbox",
730
- /without line breaks/
731
- ],
732
- [
733
- "a label that is not a string",
734
- 42,
735
- /a label must be a string/
736
- ]
737
- ];
738
- for (let [what, label, pattern] of refused) assert.throws(() => {
739
- class Loose extends CardDef {
740
- static {
741
- decorateFieldV2(this, "update", [operation], function() {
742
- return {
743
- base: "update",
744
- label
745
- };
746
- });
747
- }
748
- #update = (initializeDeferredDecorator(this, "update"), void 0);
749
- }
750
- return Loose;
751
- }, pattern, `${what} is refused`);
752
- class AtTheLimit extends CardDef {
753
- static {
754
- decorateFieldV2(this, "update", [operation], function() {
755
- return {
756
- base: "update",
757
- label: "x".repeat(80)
758
- };
759
- });
760
- }
761
- #update = (initializeDeferredDecorator(this, "update"), void 0);
762
- }
763
- assert.strictEqual(getDeclaredOperations(AtTheLimit).update.label, "x".repeat(80), "a label of exactly 80 characters is accepted");
764
- });
765
- (0, import_qunit.test)("an explain is carried only where a card declares one, and is never grantable", function(assert) {
766
- class Plain extends CardDef {}
767
- assert.false("explain" in getOperations(Plain), "no card carries an explain it did not declare");
768
- class Policy extends CardDef {
769
- static {
770
- decorateFieldV2(this, "explain", [operation], function() {
771
- return {
772
- base: "explain",
773
- params: {
774
- actor: string_default,
775
- target: string_default,
776
- operation: string_default
777
- },
778
- nonGrantable: true
779
- };
780
- });
781
- }
782
- #explain = (initializeDeferredDecorator(this, "explain"), void 0);
783
- }
784
- assert.strictEqual(getOperations(Policy).explain?.base, "explain", "a card that declares one carries it under the name it declared");
785
- let rejected = [
786
- [
787
- "an explain that leaves the flag off",
788
- () => {
789
- class Open extends CardDef {
790
- static {
791
- decorateFieldV2(this, "explain", [operation], function() {
792
- return { base: "explain" };
793
- });
794
- }
795
- #explain = (initializeDeferredDecorator(this, "explain"), void 0);
796
- }
797
- return Open;
798
- },
799
- /declare it with `nonGrantable: true`/
800
- ],
801
- [
802
- "an explain that carries a program",
803
- () => {
804
- class Scripted extends CardDef {
805
- static {
806
- decorateFieldV2(this, "explain", [operation], function() {
807
- return {
808
- base: "explain",
809
- nonGrantable: true,
810
- transformations: bxl`.status = "x";`
811
- };
812
- });
813
- }
814
- #explain = (initializeDeferredDecorator(this, "explain"), void 0);
815
- }
816
- return Scripted;
817
- },
818
- /so it carries no `transformations`/
819
- ],
820
- [
821
- "an explain that reshapes its answer",
822
- () => {
823
- class Projected extends CardDef {
824
- static {
825
- decorateFieldV2(this, "explain", [operation], function() {
826
- return {
827
- base: "explain",
828
- nonGrantable: true,
829
- output: { decision: bxl`.decision` }
830
- };
831
- });
832
- }
833
- #explain = (initializeDeferredDecorator(this, "explain"), void 0);
834
- }
835
- return Projected;
836
- },
837
- /carries no `output` to reshape it/
838
- ],
839
- [
840
- "an explain that rewrites its question",
841
- () => {
842
- class Rewritten extends CardDef {
843
- static {
844
- decorateFieldV2(this, "explain", [operation], function() {
845
- return {
846
- base: "explain",
847
- nonGrantable: true,
848
- input: bxl`.`
849
- };
850
- });
851
- }
852
- #explain = (initializeDeferredDecorator(this, "explain"), void 0);
853
- }
854
- return Rewritten;
855
- },
856
- /carries no `input` to rewrite it/
857
- ],
858
- [
859
- "an explain on a file def",
860
- () => {
861
- class LogFile extends FileDef {
862
- static {
863
- decorateFieldV2(this, "explain", [operation], function() {
864
- return {
865
- base: "explain",
866
- nonGrantable: true
867
- };
868
- });
869
- }
870
- #explain = (initializeDeferredDecorator(this, "explain"), void 0);
871
- }
872
- return LogFile;
873
- },
874
- /cannot declare a "explain" operation/
875
- ]
876
- ];
877
- for (let [name, build, pattern] of rejected) assert.throws(build, pattern, `${name} is refused`);
878
- });
879
- (0, import_qunit.test)("a validate is carried only where a card declares one, and is never grantable", function(assert) {
880
- class Plain extends CardDef {}
881
- assert.false("validate" in getOperations(Plain), "no card carries a validate it did not declare");
882
- class Policy extends CardDef {
883
- static {
884
- decorateFieldV2(this, "validate", [operation], function() {
885
- return {
886
- base: "validate",
887
- nonGrantable: true
888
- };
889
- });
890
- }
891
- #validate = (initializeDeferredDecorator(this, "validate"), void 0);
892
- }
893
- assert.strictEqual(getOperations(Policy).validate?.base, "validate", "a card that declares one carries it under the name it declared");
894
- let rejected = [
895
- [
896
- "a validate that leaves the flag off",
897
- () => {
898
- class Open extends CardDef {
899
- static {
900
- decorateFieldV2(this, "validate", [operation], function() {
901
- return { base: "validate" };
902
- });
903
- }
904
- #validate = (initializeDeferredDecorator(this, "validate"), void 0);
905
- }
906
- return Open;
907
- },
908
- /declare it with `nonGrantable: true`/
909
- ],
910
- [
911
- "a validate that carries a program",
912
- () => {
913
- class Scripted extends CardDef {
914
- static {
915
- decorateFieldV2(this, "validate", [operation], function() {
916
- return {
917
- base: "validate",
918
- nonGrantable: true,
919
- transformations: bxl`.status = "x";`
920
- };
921
- });
922
- }
923
- #validate = (initializeDeferredDecorator(this, "validate"), void 0);
924
- }
925
- return Scripted;
926
- },
927
- /so it carries no `transformations`/
928
- ],
929
- [
930
- "a validate that reshapes its answer",
931
- () => {
932
- class Projected extends CardDef {
933
- static {
934
- decorateFieldV2(this, "validate", [operation], function() {
935
- return {
936
- base: "validate",
937
- nonGrantable: true,
938
- output: { issues: bxl`.issues` }
939
- };
940
- });
941
- }
942
- #validate = (initializeDeferredDecorator(this, "validate"), void 0);
943
- }
944
- return Projected;
945
- },
946
- /carries no `output` to reshape it/
947
- ],
948
- [
949
- "a validate that takes params",
950
- () => {
951
- class WithParams extends CardDef {
952
- static {
953
- decorateFieldV2(this, "validate", [operation], function() {
954
- return {
955
- base: "validate",
956
- nonGrantable: true,
957
- params: { realm: string_default }
958
- };
959
- });
960
- }
961
- #validate = (initializeDeferredDecorator(this, "validate"), void 0);
962
- }
963
- return WithParams;
964
- },
965
- /takes no payload.*so it carries no `params`/
966
- ],
967
- [
968
- "a validate that takes an input",
969
- () => {
970
- class WithInput extends CardDef {
971
- static {
972
- decorateFieldV2(this, "validate", [operation], function() {
973
- return {
974
- base: "validate",
975
- nonGrantable: true,
976
- input: bxl`{ strict: true }`
977
- };
978
- });
979
- }
980
- #validate = (initializeDeferredDecorator(this, "validate"), void 0);
981
- }
982
- return WithInput;
983
- },
984
- /takes no payload.*so it carries no `input`/
985
- ],
986
- [
987
- "a validate on a file def",
988
- () => {
989
- class LogFile extends FileDef {
990
- static {
991
- decorateFieldV2(this, "validate", [operation], function() {
992
- return {
993
- base: "validate",
994
- nonGrantable: true
995
- };
996
- });
997
- }
998
- #validate = (initializeDeferredDecorator(this, "validate"), void 0);
999
- }
1000
- return LogFile;
1001
- },
1002
- /cannot declare a "validate" operation/
1003
- ]
1004
- ];
1005
- for (let [name, build, pattern] of rejected) assert.throws(build, pattern, `${name} is refused`);
1006
- });
1007
- (0, import_qunit.test)("a declaration that runs no program carries no raw one", function(assert) {
1008
- let rejected = [
1009
- ["appendContainsMany", () => {
1010
- class Ledger extends CardDef {
1011
- static {
1012
- decorateFieldV2(this, "log", [operation], function() {
1013
- return {
1014
- base: "appendContainsMany",
1015
- transformations: bxl`.status = "logged";`
1016
- };
1017
- });
1018
- }
1019
- #log = (initializeDeferredDecorator(this, "log"), void 0);
1020
- }
1021
- return Ledger;
1022
- }],
1023
- ["appendLine", () => {
1024
- class LogFile extends FileDef {
1025
- static {
1026
- decorateFieldV2(this, "record", [operation], function() {
1027
- return {
1028
- base: "appendLine",
1029
- params: { line: string_default },
1030
- transformations: bxl`.name = "x";`
1031
- };
1032
- });
1033
- }
1034
- #record = (initializeDeferredDecorator(this, "record"), void 0);
1035
- }
1036
- return LogFile;
1037
- }],
1038
- ["update on a file def", () => {
1039
- class Replaceable extends FileDef {
1040
- static {
1041
- decorateFieldV2(this, "replace", [operation], function() {
1042
- return {
1043
- base: "update",
1044
- transformations: bxl`.name = "x";`
1045
- };
1046
- });
1047
- }
1048
- #replace = (initializeDeferredDecorator(this, "replace"), void 0);
1049
- }
1050
- return Replaceable;
1051
- }]
1052
- ];
1053
- for (let [name, build] of rejected) assert.throws(build, /so it carries no `transformations`/, `${name} runs no program over a document`);
1054
- });
1055
- (0, import_qunit.test)("a stored-bytes read takes no declaration at all", function(assert) {
1056
- for (let Def of [CardDef, FileDef]) assert.throws(() => {
1057
- class Exported extends Def {
1058
- static {
1059
- decorateFieldV2(this, "exportBytes", [operation], function() {
1060
- return { base: "readSource" };
1061
- });
1062
- }
1063
- #exportBytes = (initializeDeferredDecorator(this, "exportBytes"), void 0);
1064
- }
1065
- return Exported;
1066
- }, /serves the bytes stored at the def's URL/, `a ${Def.name} cannot build an operation on a stored-bytes read`);
1067
- assert.throws(() => {
1068
- class Redacted extends CardDef {
1069
- static {
1070
- decorateFieldV2(this, "readSource", [operation], function() {
1071
- return {
1072
- base: "readSource",
1073
- output: { redacted: true }
1074
- };
1075
- });
1076
- }
1077
- #readSource = (initializeDeferredDecorator(this, "readSource"), void 0);
1078
- }
1079
- return Redacted;
1080
- }, /reserved operation name/, "and it cannot be specialized under its own name either");
1081
- assert.throws(() => {
1082
- class Sneaky extends CardDef {
1083
- static {
1084
- decorateFieldV2(this, "readSource", [operation], function() {
1085
- return {
1086
- base: "read",
1087
- output: { redacted: true }
1088
- };
1089
- });
1090
- }
1091
- #readSource = (initializeDeferredDecorator(this, "readSource"), void 0);
1092
- }
1093
- return Sneaky;
1094
- }, /reserved operation name/, "a declaration cannot take the name by building on another base");
1095
- });
1096
- (0, import_qunit.test)("a saved search may not be named `query`", function(assert) {
1097
- assert.throws(() => {
1098
- class Listing extends CardDef {
1099
- static {
1100
- decorateFieldV2(this, "query", [operation], function() {
1101
- return {
1102
- base: "query",
1103
- query: { filter: { type: () => Listing } }
1104
- };
1105
- });
1106
- }
1107
- #query = (initializeDeferredDecorator(this, "query"), void 0);
1108
- }
1109
- return Listing;
1110
- }, /"query" is a reserved operation name/);
1111
- });
1112
- (0, import_qunit.test)("the decorator refuses every name the realm answers definition-free", function(assert) {
1113
- assert.ok(DEFINITION_FREE_BASE_OPERATIONS.length > 0, "the list is non-empty, so the loop below asserts something");
1114
- let applyOperation = operation;
1115
- for (let name of DEFINITION_FREE_BASE_OPERATIONS) assert.throws(() => {
1116
- class Shadow extends CardDef {}
1117
- applyOperation(Shadow, name, { initializer: () => ({ base: "read" }) });
1118
- return Shadow;
1119
- }, /reserved operation name/, `${name} is refused as a declaration name`);
1120
- });
1121
- (0, import_qunit.test)("the decorator rejects an operation name that is already a static", function(assert) {
1122
- assert.throws(() => {
1123
- class Report extends CardDef {
1124
- static {
1125
- decorateFieldV2(this, "displayName", [operation], function() {
1126
- return { base: "read" };
1127
- });
1128
- }
1129
- #displayName = (initializeDeferredDecorator(this, "displayName"), void 0);
1130
- }
1131
- return Report;
1132
- }, /already resolves on this class/, "an operation name that shadows a system static is refused");
1133
- assert.throws(() => {
1134
- class Report extends CardDef {
1135
- static {
1136
- decorateFieldV2(this, "toString", [operation], function() {
1137
- return { base: "read" };
1138
- });
1139
- }
1140
- #toString = (initializeDeferredDecorator(this, "toString"), void 0);
1141
- }
1142
- return Report;
1143
- }, /already resolves on this class/, "nor one that shadows something every class inherits");
1144
- assert.throws(() => {
1145
- class Report extends CardDef {
1146
- static {
1147
- decorateFieldV2(this, "__proto__", [operation], function() {
1148
- return { base: "read" };
1149
- });
1150
- }
1151
- #__proto__ = (initializeDeferredDecorator(this, "__proto__"), void 0);
1152
- }
1153
- return Report;
1154
- }, /already resolves on this class/, "and least of all a name that would reset a prototype instead of keying a map");
1155
- class Report extends CardDef {
1156
- static {
1157
- decorateFieldV2(this, "addComment", [operation], function() {
1158
- return {
1159
- base: "transform",
1160
- params: { body: string_default },
1161
- append: {
1162
- to: "comments",
1163
- value: { body: params("body") }
1164
- }
1165
- };
1166
- });
1167
- }
1168
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1169
- }
1170
- assert.deepEqual(Object.keys(getDeclaredOperations(Report)), ["addComment"], "a rejected name leaves the store working");
1171
- for (let inherited of [
1172
- "toString",
1173
- "constructor",
1174
- "__proto__",
1175
- "valueOf",
1176
- "hasOwnProperty"
1177
- ]) {
1178
- assert.false(inherited in getOperations(Report), `a name-keyed record does not answer for ${inherited}`);
1179
- assert.false(inherited in getDeclaredOperations(Report), `nor does the declared-only record answer for ${inherited}`);
1180
- }
1181
- assert.true("addComment" in getOperations(Report), "while still answering for the operations it holds");
1182
- assert.true("read" in getOperations(Report), "and for the base operations its def type carries");
1183
- });
1184
- (0, import_qunit.test)("the decorator installs the declaration on the class", function(assert) {
1185
- class Report extends CardDef {
1186
- static {
1187
- decorateFieldV2(this, "addComment", [operation], function() {
1188
- return {
1189
- base: "transform",
1190
- params: { body: string_default },
1191
- append: {
1192
- to: "comments",
1193
- value: { body: params("body") }
1194
- }
1195
- };
1196
- });
1197
- }
1198
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1199
- }
1200
- assert.strictEqual(Report.addComment, getDeclaredOperations(Report).addComment, "the class carries the very declaration the reader returns");
1201
- });
1202
- (0, import_qunit.test)("the decorator validates the declaration against its base operation", function(assert) {
1203
- assert.throws(() => {
1204
- class Report extends CardDef {
1205
- static {
1206
- decorateFieldV2(this, "addComment", [operation], function() {
1207
- return { base: "append" };
1208
- });
1209
- }
1210
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1211
- }
1212
- return Report;
1213
- }, /must name the built-in behavior/, "a declaration builds on one of the built-in behaviors");
1214
- assert.throws(() => {
1215
- class Report extends CardDef {
1216
- static {
1217
- decorateFieldV2(this, "addComment", [operation], function() {
1218
- return {
1219
- base: "read",
1220
- append: {
1221
- to: "comments",
1222
- value: "hello"
1223
- }
1224
- };
1225
- });
1226
- }
1227
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1228
- }
1229
- return Report;
1230
- }, /"append" is not a valid key for a "read" operation/, "a clause is only legal on the base that can express it");
1231
- assert.throws(() => {
1232
- class Report extends CardDef {
1233
- static {
1234
- decorateFieldV2(this, "createComment", [operation], function() {
1235
- return {
1236
- base: "create",
1237
- fill: { body: "x" }
1238
- };
1239
- });
1240
- }
1241
- #createComment = (initializeDeferredDecorator(this, "createComment"), void 0);
1242
- }
1243
- return Report;
1244
- }, /a "create" operation needs/, "a create names the type it creates");
1245
- assert.throws(() => {
1246
- class Report extends CardDef {
1247
- static {
1248
- decorateFieldV2(this, "createComment", [operation], function() {
1249
- return {
1250
- base: "create",
1251
- of: () => Report,
1252
- links: "none"
1253
- };
1254
- });
1255
- }
1256
- #createComment = (initializeDeferredDecorator(this, "createComment"), void 0);
1257
- }
1258
- return Report;
1259
- }, /"links" is not a valid key for a "create" operation/, "only a read or a query carries a link graph to narrow");
1260
- assert.throws(() => {
1261
- class Report extends CardDef {
1262
- static {
1263
- decorateFieldV2(this, "summary", [operation], function() {
1264
- return {
1265
- base: "read",
1266
- links: "some"
1267
- };
1268
- });
1269
- }
1270
- #summary = (initializeDeferredDecorator(this, "summary"), void 0);
1271
- }
1272
- return Report;
1273
- }, /`links` must name how much of the card's link graph this read carries/, "and it names one of the strategies a read applies");
1274
- assert.throws(() => {
1275
- class Report extends CardDef {
1276
- static {
1277
- decorateFieldV2(this, "read", [operation], function() {
1278
- return {
1279
- base: "read",
1280
- links: "none"
1281
- };
1282
- });
1283
- }
1284
- #read = (initializeDeferredDecorator(this, "read"), void 0);
1285
- }
1286
- return Report;
1287
- }, /this read carries — one of "full", "ids"\. .*"ids" narrows a read/, "a read may not withhold its links from the host that edits the card");
1288
- class Gradebook extends CardDef {
1289
- static {
1290
- decorateFieldV2(this, "listAll", [operation], function() {
1291
- return {
1292
- base: "query",
1293
- query: { filter: { type: () => Gradebook } },
1294
- links: "none"
1295
- };
1296
- });
1297
- }
1298
- #listAll = (initializeDeferredDecorator(this, "listAll"), void 0);
1299
- }
1300
- assert.strictEqual(getDeclaredOperations(Gradebook).listAll.links, "none", "while a query may");
1301
- assert.throws(() => {
1302
- class Report extends CardDef {
1303
- static {
1304
- decorateFieldV2(this, "listAll", [operation], function() {
1305
- return {
1306
- base: "query",
1307
- query: { filter: { type: () => Report } },
1308
- links: "some"
1309
- };
1310
- });
1311
- }
1312
- #listAll = (initializeDeferredDecorator(this, "listAll"), void 0);
1313
- }
1314
- return Report;
1315
- }, /`links` must name how much of the card's link graph each of this query's results carries/, "a query names one of the same three");
1316
- class Roster extends CardDef {
1317
- static {
1318
- decorateFieldV2(this, "listAll", [operation], function() {
1319
- return {
1320
- base: "query",
1321
- query: { filter: { type: () => Roster } },
1322
- links: "ids"
1323
- };
1324
- });
1325
- }
1326
- #listAll = (initializeDeferredDecorator(this, "listAll"), void 0);
1327
- }
1328
- assert.strictEqual(getDeclaredOperations(Roster).listAll.links, "ids", "and a query that names one is declared with it");
1329
- assert.throws(() => {
1330
- class Report extends CardDef {
1331
- static {
1332
- decorateFieldV2(this, "rename", [operation], function() {
1333
- return {
1334
- base: "transform",
1335
- set: { title: "Renamed" },
1336
- html: { embedded: "unshareable" }
1337
- };
1338
- });
1339
- }
1340
- #rename = (initializeDeferredDecorator(this, "rename"), void 0);
1341
- }
1342
- return Report;
1343
- }, /"html" is not a valid key for a "transform" operation/, "only a read or a query serves prerendered HTML to withhold");
1344
- assert.throws(() => {
1345
- class Report extends CardDef {
1346
- static {
1347
- decorateFieldV2(this, "summary", [operation], function() {
1348
- return {
1349
- base: "read",
1350
- html: { edit: "unshareable" }
1351
- };
1352
- });
1353
- }
1354
- #summary = (initializeDeferredDecorator(this, "summary"), void 0);
1355
- }
1356
- return Report;
1357
- }, /`html` names "edit", which is not a prerendered format/, "it names prerendered formats");
1358
- assert.throws(() => {
1359
- class Report extends CardDef {
1360
- static {
1361
- decorateFieldV2(this, "summary", [operation], function() {
1362
- return {
1363
- base: "read",
1364
- html: { embedded: "hidden" }
1365
- };
1366
- });
1367
- }
1368
- #summary = (initializeDeferredDecorator(this, "summary"), void 0);
1369
- }
1370
- return Report;
1371
- }, /`html.embedded` must say whether the format's prerendered HTML is served/, "each shareable or unshareable");
1372
- assert.throws(() => {
1373
- class Report extends CardDef {
1374
- static {
1375
- decorateFieldV2(this, "listAll", [operation], function() {
1376
- return {
1377
- base: "query",
1378
- query: { filter: { type: () => Report } },
1379
- html: ["embedded"]
1380
- };
1381
- });
1382
- }
1383
- #listAll = (initializeDeferredDecorator(this, "listAll"), void 0);
1384
- }
1385
- return Report;
1386
- }, /`html` must be an object naming which prerendered formats this query's results are served data-only for/, "by format");
1387
- class Classroom extends CardDef {
1388
- static {
1389
- decorateFieldV2(this, "read", [operation], function() {
1390
- return {
1391
- base: "read",
1392
- html: { embedded: "unshareable" }
1393
- };
1394
- });
1395
- }
1396
- #read = (initializeDeferredDecorator(this, "read"), void 0);
1397
- static {
1398
- decorateFieldV2(this, "listAll", [operation], function() {
1399
- return {
1400
- base: "query",
1401
- query: { filter: { type: () => Classroom } },
1402
- html: {
1403
- fitted: "unshareable",
1404
- isolated: "shareable"
1405
- }
1406
- };
1407
- });
1408
- }
1409
- #listAll = (initializeDeferredDecorator(this, "listAll"), void 0);
1410
- }
1411
- assert.deepEqual(getDeclaredOperations(Classroom).read.html, { embedded: "unshareable" }, "a read that names formats is declared with them");
1412
- assert.deepEqual(getDeclaredOperations(Classroom).listAll.html, {
1413
- fitted: "unshareable",
1414
- isolated: "shareable"
1415
- }, "and so is a query");
1416
- assert.throws(() => {
1417
- class Report extends CardDef {
1418
- static {
1419
- decorateFieldV2(this, "escalate", [operation], function() {
1420
- return {
1421
- base: "transform",
1422
- set: { status: "escalated" },
1423
- transformations: bxl`.status = "escalated";`
1424
- };
1425
- });
1426
- }
1427
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
1428
- }
1429
- return Report;
1430
- }, /either with clauses .* or with a raw/, "the declarative clauses and a raw program are alternatives");
1431
- assert.throws(() => {
1432
- class Report extends CardDef {
1433
- static {
1434
- decorateFieldV2(this, "escalate", [operation], function() {
1435
- return {
1436
- base: "transform",
1437
- transformations: ".status = \"escalated\";"
1438
- };
1439
- });
1440
- }
1441
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
1442
- }
1443
- return Report;
1444
- }, /must be a program written with the bxl tag/, "a raw program comes from the bxl tag, not a bare string");
1445
- assert.throws(() => {
1446
- class Report extends CardDef {
1447
- static {
1448
- decorateFieldV2(this, "listMine", [operation], function() {
1449
- return { base: "query" };
1450
- });
1451
- }
1452
- #listMine = (initializeDeferredDecorator(this, "listMine"), void 0);
1453
- }
1454
- return Report;
1455
- }, /a "query" operation needs/, "a named query is the query it saves");
1456
- assert.throws(() => {
1457
- class Report extends CardDef {
1458
- static {
1459
- decorateFieldV2(this, "addComment", [operation], function() {
1460
- return {
1461
- base: "transform",
1462
- append: {
1463
- to: "comments",
1464
- value: "hello",
1465
- into: "comments"
1466
- }
1467
- };
1468
- });
1469
- }
1470
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1471
- }
1472
- return Report;
1473
- }, /"into" is not a valid key/, "a clause accepts only the keys it is made of");
1474
- assert.throws(() => {
1475
- class Report extends CardDef {
1476
- static {
1477
- decorateFieldV2(this, "addComment", [operation], function() {
1478
- return {
1479
- base: "transform",
1480
- append: {
1481
- to: "comments",
1482
- value: { body: { $ref: "payload" } }
1483
- }
1484
- };
1485
- });
1486
- }
1487
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1488
- }
1489
- return Report;
1490
- }, /is not a typed reference/, "a reference comes from one of the reference constructors");
1491
- });
1492
- (0, import_qunit.test)("a param is typed by a field class, and nothing else", function(assert) {
1493
- assert.throws(() => {
1494
- class Report extends CardDef {
1495
- static {
1496
- decorateFieldV2(this, "addComment", [operation], function() {
1497
- return {
1498
- base: "transform",
1499
- params: { author: CardDef },
1500
- append: {
1501
- to: "comments",
1502
- value: { author: params("author") }
1503
- }
1504
- };
1505
- });
1506
- }
1507
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1508
- }
1509
- return Report;
1510
- }, /a card or file identity is a linkTo/, "a card class types a link param, which is what linkTo declares");
1511
- assert.throws(() => {
1512
- class Report extends CardDef {
1513
- static {
1514
- decorateFieldV2(this, "addComment", [operation], function() {
1515
- return {
1516
- base: "transform",
1517
- params: { body: () => string_default },
1518
- append: {
1519
- to: "comments",
1520
- value: { body: params("body") }
1521
- }
1522
- };
1523
- });
1524
- }
1525
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
1526
- }
1527
- return Report;
1528
- }, /param "body" must be a field class or linkTo/, "a scalar param takes the field class itself, not a thunk");
1529
- });
1530
- (0, import_qunit.test)("a declaration carries only what survives as data", function(assert) {
1531
- for (let [value, pattern, message] of [
1532
- [
1533
- () => "escalated",
1534
- /is a function; a declaration is data/,
1535
- "a function would never reach the realm"
1536
- ],
1537
- [
1538
- /* @__PURE__ */ new Date(),
1539
- /is a Date instance/,
1540
- "a date would flatten to a string"
1541
- ],
1542
- [
1543
- /* @__PURE__ */ new Map(),
1544
- /is a Map instance/,
1545
- "a map would flatten to an empty object"
1546
- ],
1547
- [
1548
- void 0,
1549
- /omit an optional key rather than declaring it as undefined/,
1550
- "an undefined value would be dropped"
1551
- ],
1552
- [
1553
- 1n,
1554
- /is a bigint/,
1555
- "a bigint cannot be serialized at all"
1556
- ]
1557
- ]) assert.throws(() => {
1558
- class Report extends CardDef {
1559
- static {
1560
- decorateFieldV2(this, "escalate", [operation], function() {
1561
- return {
1562
- base: "transform",
1563
- set: { status: value }
1564
- };
1565
- });
1566
- }
1567
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
1568
- }
1569
- return Report;
1570
- }, pattern, message);
1571
- class Activity extends CardDef {}
1572
- class Classroom extends CardDef {
1573
- static {
1574
- decorateFieldV2(this, "createActivity", [operation], function() {
1575
- return {
1576
- base: "create",
1577
- of: Activity,
1578
- params: { title: string_default },
1579
- fill: { title: params("title") }
1580
- };
1581
- });
1582
- }
1583
- #createActivity = (initializeDeferredDecorator(this, "createActivity"), void 0);
1584
- static {
1585
- decorateFieldV2(this, "listActivities", [operation], function() {
1586
- return {
1587
- base: "query",
1588
- query: { filter: {
1589
- on: Activity,
1590
- eq: { classroom: instance("id") }
1591
- } }
1592
- };
1593
- });
1594
- }
1595
- #listActivities = (initializeDeferredDecorator(this, "listActivities"), void 0);
1596
- }
1597
- let declarations = getOperations(Classroom);
1598
- assert.strictEqual(declarations.createActivity.of, Activity, "a create names the class it creates");
1599
- assert.strictEqual(declarations.listActivities.query.filter.on, Activity, "and a query names the class it filters on");
1600
- });
1601
- (0, import_qunit.test)("a def class is legal only where a slot names a type", function(assert) {
1602
- class Activity extends CardDef {}
1603
- class Classroom extends CardDef {
1604
- static {
1605
- decorateFieldV2(this, "listActivities", [operation], function() {
1606
- return {
1607
- base: "query",
1608
- query: { filter: { any: [{
1609
- on: () => Activity,
1610
- eq: { status: "open" }
1611
- }] } }
1612
- };
1613
- });
1614
- }
1615
- #listActivities = (initializeDeferredDecorator(this, "listActivities"), void 0);
1616
- static {
1617
- decorateFieldV2(this, "makeActivity", [operation], function() {
1618
- return {
1619
- base: "create",
1620
- of: Activity,
1621
- params: { title: string_default },
1622
- transformations: bxl`.title = params("title");`
1623
- };
1624
- });
1625
- }
1626
- #makeActivity = (initializeDeferredDecorator(this, "makeActivity"), void 0);
1627
- }
1628
- let declarations = getDeclaredOperations(Classroom);
1629
- assert.strictEqual(declarations.makeActivity.of, Activity, "a program-driven create still names what it creates");
1630
- assert.strictEqual(typeof declarations.listActivities.query.filter.any[0].on, "function", "and a nested filter still names its type");
1631
- assert.throws(() => {
1632
- class Report extends CardDef {
1633
- static {
1634
- decorateFieldV2(this, "listSome", [operation], function() {
1635
- return {
1636
- base: "query",
1637
- query: { filter: {
1638
- on: Activity,
1639
- eq: { owner: () => 1 }
1640
- } }
1641
- };
1642
- });
1643
- }
1644
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1645
- }
1646
- return Report;
1647
- }, /is a function; a declaration is data/, "but a function anywhere else in a query would lower to nothing");
1648
- assert.throws(() => {
1649
- class Report extends CardDef {
1650
- static {
1651
- decorateFieldV2(this, "makeOne", [operation], function() {
1652
- return {
1653
- base: "create",
1654
- of: string_default
1655
- };
1656
- });
1657
- }
1658
- #makeOne = (initializeDeferredDecorator(this, "makeOne"), void 0);
1659
- }
1660
- return Report;
1661
- }, /must be a card class/, "and only a card can be created");
1662
- assert.throws(() => linkTo(string_default), /card or file class/, "while a link points at something that has a URL");
1663
- });
1664
- (0, import_qunit.test)("a shared value is checked in every slot it appears", function(assert) {
1665
- assert.throws(() => {
1666
- let shared = { on: CardDef };
1667
- class Report extends CardDef {
1668
- static {
1669
- decorateFieldV2(this, "listSome", [operation], function() {
1670
- return {
1671
- base: "query",
1672
- query: { filter: shared },
1673
- output: { leak: shared }
1674
- };
1675
- });
1676
- }
1677
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1678
- }
1679
- return Report;
1680
- }, /is a function; a declaration is data/, "validation does not memoize, so it cannot depend on key order");
1681
- });
1682
- (0, import_qunit.test)("a declaration must be a tree of finite values", function(assert) {
1683
- assert.throws(() => {
1684
- let value = { body: "x" };
1685
- value.self = value;
1686
- class Report extends CardDef {
1687
- static {
1688
- decorateFieldV2(this, "escalate", [operation], function() {
1689
- return {
1690
- base: "transform",
1691
- set: value
1692
- };
1693
- });
1694
- }
1695
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
1696
- }
1697
- return Report;
1698
- }, /refers back to a value that contains it/, "a cycle would throw when the declaration is serialized, far from here");
1699
- assert.throws(() => {
1700
- class Report extends CardDef {
1701
- static {
1702
- decorateFieldV2(this, "escalate", [operation], function() {
1703
- return {
1704
- base: "transform",
1705
- set: { score: NaN }
1706
- };
1707
- });
1708
- }
1709
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
1710
- }
1711
- return Report;
1712
- }, /serializes as null/, "and a non-finite number would quietly become null");
1713
- });
1714
- (0, import_qunit.test)("a marker carries only its own key", function(assert) {
1715
- assert.throws(() => {
1716
- class Report extends CardDef {
1717
- static {
1718
- decorateFieldV2(this, "escalate", [operation], function() {
1719
- return {
1720
- base: "transform",
1721
- transformations: {
1722
- $bxl: ".a = 1;",
1723
- hook: () => 1
1724
- }
1725
- };
1726
- });
1727
- }
1728
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
1729
- }
1730
- return Report;
1731
- }, /is not a valid key/, "a program marker is not a place to smuggle a value past the walk");
1732
- assert.throws(() => {
1733
- class Report extends CardDef {
1734
- static {
1735
- decorateFieldV2(this, "addActivity", [operation], function() {
1736
- return {
1737
- base: "transform",
1738
- params: { activity: {
1739
- $linkTo: CardDef,
1740
- junk: 1
1741
- } },
1742
- append: {
1743
- to: "activities",
1744
- value: card(params("activity"))
1745
- }
1746
- };
1747
- });
1748
- }
1749
- #addActivity = (initializeDeferredDecorator(this, "addActivity"), void 0);
1750
- }
1751
- return Report;
1752
- }, /is not a valid key/, "nor is a link param, which the reference walk skips");
1753
- });
1754
- (0, import_qunit.test)("a named query is checked for the shape a search needs", function(assert) {
1755
- assert.throws(() => {
1756
- class Report extends CardDef {
1757
- static {
1758
- decorateFieldV2(this, "listSome", [operation], function() {
1759
- return {
1760
- base: "query",
1761
- query: {}
1762
- };
1763
- });
1764
- }
1765
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1766
- }
1767
- return Report;
1768
- }, /at least one of/, "a query with no query names no search");
1769
- assert.throws(() => {
1770
- class Report extends CardDef {
1771
- static {
1772
- decorateFieldV2(this, "listSome", [operation], function() {
1773
- return {
1774
- base: "query",
1775
- query: {
1776
- filter: { type: CardDef },
1777
- page: { size: 0 }
1778
- }
1779
- };
1780
- });
1781
- }
1782
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1783
- }
1784
- return Report;
1785
- }, /must be a positive integer/, "a page size is a count");
1786
- assert.throws(() => {
1787
- class Report extends CardDef {
1788
- static {
1789
- decorateFieldV2(this, "listSome", [operation], function() {
1790
- return {
1791
- base: "query",
1792
- query: {
1793
- filter: { type: CardDef },
1794
- realms: "https://x/"
1795
- }
1796
- };
1797
- });
1798
- }
1799
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1800
- }
1801
- return Report;
1802
- }, /non-empty array of realm URLs/, "and realms is the fan-out list, not one realm");
1803
- });
1804
- (0, import_qunit.test)("a query names a type only where the filter grammar has one", function(assert) {
1805
- class Activity extends CardDef {}
1806
- class Classroom extends CardDef {
1807
- static {
1808
- decorateFieldV2(this, "listAll", [operation], function() {
1809
- return {
1810
- base: "query",
1811
- query: {
1812
- filter: { any: [{ type: Activity }, { not: { type: Activity } }] },
1813
- sort: [{
1814
- by: "title",
1815
- on: Activity
1816
- }]
1817
- }
1818
- };
1819
- });
1820
- }
1821
- #listAll = (initializeDeferredDecorator(this, "listAll"), void 0);
1822
- static {
1823
- decorateFieldV2(this, "listOpen", [operation], function() {
1824
- return {
1825
- base: "query",
1826
- query: { filter: {
1827
- on: Activity,
1828
- eq: { status: "open" }
1829
- } }
1830
- };
1831
- });
1832
- }
1833
- #listOpen = (initializeDeferredDecorator(this, "listOpen"), void 0);
1834
- static {
1835
- decorateFieldV2(this, "listEvery", [operation], function() {
1836
- return {
1837
- base: "query",
1838
- query: { filter: { every: [{
1839
- on: Activity,
1840
- eq: { status: "open" }
1841
- }, {
1842
- on: Activity,
1843
- range: { views: { gt: 10 } }
1844
- }] } }
1845
- };
1846
- });
1847
- }
1848
- #listEvery = (initializeDeferredDecorator(this, "listEvery"), void 0);
1849
- static {
1850
- decorateFieldV2(this, "listRecent", [operation], function() {
1851
- return {
1852
- base: "query",
1853
- query: { filter: {
1854
- on: Activity,
1855
- range: { on: { gt: 1 } }
1856
- } }
1857
- };
1858
- });
1859
- }
1860
- #listRecent = (initializeDeferredDecorator(this, "listRecent"), void 0);
1861
- }
1862
- let declarations = getDeclaredOperations(Classroom);
1863
- let queryOf = (name) => declarations[name].query;
1864
- assert.strictEqual(queryOf("listAll").filter.any[0].type, Activity, "a pure card-type filter names the class itself");
1865
- assert.strictEqual(queryOf("listEvery").filter.every[0].on, Activity, "and `every` holds filter nodes the same way `any` does");
1866
- assert.strictEqual(queryOf("listAll").sort[0].on, Activity, "and so does a sort entry");
1867
- assert.deepEqual(JSON.parse(JSON.stringify(queryOf("listRecent").filter.range)), { on: { gt: 1 } }, "a field named `on` under a predicate is data, not a type slot");
1868
- assert.throws(() => {
1869
- class Report extends CardDef {
1870
- static {
1871
- decorateFieldV2(this, "listSome", [operation], function() {
1872
- return {
1873
- base: "query",
1874
- query: { filter: { eq: {
1875
- on: Activity,
1876
- status: "open"
1877
- } } }
1878
- };
1879
- });
1880
- }
1881
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1882
- }
1883
- return Report;
1884
- }, /`query.filter.eq.on` is a function/, "a class under a predicate would lower to nothing and match everything");
1885
- assert.throws(() => {
1886
- class Report extends CardDef {
1887
- static {
1888
- decorateFieldV2(this, "listSome", [operation], function() {
1889
- return {
1890
- base: "query",
1891
- query: { filter: {
1892
- on: string_default,
1893
- eq: { a: 1 }
1894
- } }
1895
- };
1896
- });
1897
- }
1898
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1899
- }
1900
- return Report;
1901
- }, /must be a card or file class/, "and a type slot names something that has a type of its own");
1902
- });
1903
- (0, import_qunit.test)("a declaration pins the page the realm implements", function(assert) {
1904
- class Activity extends CardDef {}
1905
- class Report extends CardDef {
1906
- static {
1907
- decorateFieldV2(this, "listRecent", [operation], function() {
1908
- return {
1909
- base: "query",
1910
- query: {
1911
- filter: { type: Activity },
1912
- page: {
1913
- size: 20,
1914
- number: 1
1915
- }
1916
- }
1917
- };
1918
- });
1919
- }
1920
- #listRecent = (initializeDeferredDecorator(this, "listRecent"), void 0);
1921
- }
1922
- assert.deepEqual(JSON.parse(JSON.stringify(getDeclaredOperations(Report).listRecent.query?.page)), {
1923
- size: 20,
1924
- number: 1
1925
- }, "a page is a length and a 0-based offset, which is how the realm pages");
1926
- });
1927
- (0, import_qunit.test)("a declared query is checked against the realm grammar itself", function(assert) {
1928
- class Activity extends CardDef {}
1929
- class Report extends CardDef {
1930
- static {
1931
- decorateFieldV2(this, "search", [operation], function() {
1932
- return {
1933
- base: "query",
1934
- params: { term: string_default },
1935
- query: {
1936
- filter: { type: Activity },
1937
- queryString: params("term")
1938
- }
1939
- };
1940
- });
1941
- }
1942
- #search = (initializeDeferredDecorator(this, "search"), void 0);
1943
- }
1944
- assert.strictEqual(getDeclaredOperations(Report).search.query.queryString.$ref, "params", "a query carrying a reference is left to the placement rule");
1945
- assert.throws(() => {
1946
- class Listing extends CardDef {
1947
- static {
1948
- decorateFieldV2(this, "listSome", [operation], function() {
1949
- return {
1950
- base: "query",
1951
- query: { filter: { any: [{ on: Activity }] } }
1952
- };
1953
- });
1954
- }
1955
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1956
- }
1957
- return Listing;
1958
- }, /is not a query the realm accepts/, "a filter node with no predicate is not a filter");
1959
- assert.throws(() => {
1960
- class Listing extends CardDef {
1961
- static {
1962
- decorateFieldV2(this, "listSome", [operation], function() {
1963
- return {
1964
- base: "query",
1965
- query: {
1966
- filter: { type: Activity },
1967
- sort: [{ by: "title" }]
1968
- }
1969
- };
1970
- });
1971
- }
1972
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1973
- }
1974
- return Listing;
1975
- }, /is not a query the realm accepts/, "and a sort by a card field names the type it is rooted in");
1976
- assert.throws(() => {
1977
- class Listing extends CardDef {
1978
- static {
1979
- decorateFieldV2(this, "listSome", [operation], function() {
1980
- return {
1981
- base: "query",
1982
- query: {
1983
- filter: { type: Activity },
1984
- queryString: 42
1985
- }
1986
- };
1987
- });
1988
- }
1989
- #listSome = (initializeDeferredDecorator(this, "listSome"), void 0);
1990
- }
1991
- return Listing;
1992
- }, /`query.queryString` must be a search term/, "a full-text term is a string, or a reference to one");
1993
- });
1994
- (0, import_qunit.test)("a create names what it creates whichever form its work takes", function(assert) {
1995
- assert.throws(() => {
1996
- class Report extends CardDef {
1997
- static {
1998
- decorateFieldV2(this, "makeOne", [operation], function() {
1999
- return {
2000
- base: "create",
2001
- transformations: bxl`.title = "x";`
2002
- };
2003
- });
2004
- }
2005
- #makeOne = (initializeDeferredDecorator(this, "makeOne"), void 0);
2006
- }
2007
- return Report;
2008
- }, /needs `of` to name what it creates/, "a program computes fields without saying what kind of card to create");
2009
- });
2010
- (0, import_qunit.test)("a marker is identified by a key of its own", function(assert) {
2011
- assert.throws(() => {
2012
- class Report extends CardDef {
2013
- static {
2014
- decorateFieldV2(this, "escalate", [operation], function() {
2015
- return {
2016
- base: "transform",
2017
- set: { author: Object.create({ $ref: "actor" }) }
2018
- };
2019
- });
2020
- }
2021
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
2022
- }
2023
- return Report;
2024
- }, /a declaration carries plain objects, arrays and primitives/, "a reference reached through a prototype is not a reference");
2025
- assert.throws(() => {
2026
- let reference = { $ref: "card" };
2027
- reference.value = reference;
2028
- class Report extends CardDef {
2029
- static {
2030
- decorateFieldV2(this, "escalate", [operation], function() {
2031
- return {
2032
- base: "transform",
2033
- set: { owner: reference }
2034
- };
2035
- });
2036
- }
2037
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
2038
- }
2039
- return Report;
2040
- }, /refers back to a value that contains it/, "and a reference that contains itself is refused, not recursed into");
2041
- assert.throws(() => {
2042
- class Report extends CardDef {
2043
- static {
2044
- decorateFieldV2(this, "addComment", [operation], function() {
2045
- return {
2046
- base: "transform",
2047
- params: { body: string_default },
2048
- append: {
2049
- to: "comments",
2050
- value: { body: {
2051
- $ref: "params",
2052
- key: "body",
2053
- extra: 1
2054
- } }
2055
- }
2056
- };
2057
- });
2058
- }
2059
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
2060
- }
2061
- return Report;
2062
- }, /"extra" is not a valid key/, "a reference marker carries only what its constructor puts there");
2063
- assert.throws(() => {
2064
- class Report extends CardDef {
2065
- static {
2066
- decorateFieldV2(this, "addActivity", [operation], function() {
2067
- return {
2068
- base: "transform",
2069
- params: { activity: { $linkTo: string_default } },
2070
- append: {
2071
- to: "activities",
2072
- value: card(params("activity"))
2073
- }
2074
- };
2075
- });
2076
- }
2077
- #addActivity = (initializeDeferredDecorator(this, "addActivity"), void 0);
2078
- }
2079
- return Report;
2080
- }, /links to a card or file class/, "a hand-written link marker is held to what linkTo requires");
2081
- });
2082
- (0, import_qunit.test)("the bxl tag reports being called as a function", function(assert) {
2083
- assert.throws(() => bxl([".a = 1;"]), /template tag/, "every reference constructor says what it wanted");
2084
- });
2085
- (0, import_qunit.test)("every declaration guard reports what it wanted", function(assert) {
2086
- let rejected = [
2087
- [
2088
- "optimistic",
2089
- {
2090
- base: "read",
2091
- optimistic: "yes"
2092
- },
2093
- /`optimistic` must be a boolean/
2094
- ],
2095
- [
2096
- "input",
2097
- {
2098
- base: "read",
2099
- input: ".a = 1;"
2100
- },
2101
- /`input` must be a program written with the bxl tag/
2102
- ],
2103
- [
2104
- "output",
2105
- {
2106
- base: "read",
2107
- output: "title"
2108
- },
2109
- /`output` must be a projection object or a bxl program/
2110
- ],
2111
- [
2112
- "append not an object",
2113
- {
2114
- base: "transform",
2115
- append: "comments"
2116
- },
2117
- /`append` must be an object naming the field/
2118
- ],
2119
- [
2120
- "append.to empty",
2121
- {
2122
- base: "transform",
2123
- append: {
2124
- to: "",
2125
- value: 1
2126
- }
2127
- },
2128
- /`append.to` must name the collection field/
2129
- ],
2130
- [
2131
- "append with no value",
2132
- {
2133
- base: "transform",
2134
- append: { to: "comments" }
2135
- },
2136
- /`append` must carry a `value` to append/
2137
- ],
2138
- [
2139
- "assert not an object",
2140
- {
2141
- base: "transform",
2142
- assert: "unique"
2143
- },
2144
- /`assert` must be an object naming the collection/
2145
- ],
2146
- [
2147
- "assert.unique empty",
2148
- {
2149
- base: "transform",
2150
- assert: {
2151
- unique: "",
2152
- by: 1
2153
- }
2154
- },
2155
- /`assert.unique` must name the collection field/
2156
- ],
2157
- [
2158
- "assert with no by",
2159
- {
2160
- base: "transform",
2161
- assert: { unique: "owners" }
2162
- },
2163
- /`assert` must carry a `by` value/
2164
- ],
2165
- [
2166
- "assert.message",
2167
- {
2168
- base: "transform",
2169
- assert: {
2170
- unique: "o",
2171
- by: 1,
2172
- message: 2
2173
- }
2174
- },
2175
- /`assert.message` must be a string/
2176
- ],
2177
- [
2178
- "set empty",
2179
- {
2180
- base: "transform",
2181
- set: {}
2182
- },
2183
- /`set` must be an object mapping field names to values/
2184
- ],
2185
- [
2186
- "fill empty",
2187
- {
2188
- base: "create",
2189
- of: CardDef,
2190
- fill: {}
2191
- },
2192
- /`fill` must be an object mapping field names to values/
2193
- ],
2194
- [
2195
- "of not a function",
2196
- {
2197
- base: "create",
2198
- of: "Activity"
2199
- },
2200
- /`of` must be the card class to create/
2201
- ],
2202
- [
2203
- "query not an object",
2204
- {
2205
- base: "query",
2206
- query: "everything"
2207
- },
2208
- /`query` must be an object with at least one of/
2209
- ],
2210
- [
2211
- "query with an unknown key",
2212
- {
2213
- base: "query",
2214
- query: {
2215
- filter: { type: CardDef },
2216
- junk: 1
2217
- }
2218
- },
2219
- /"junk" is not a valid key for `query`/
2220
- ],
2221
- [
2222
- "query.page not an object",
2223
- {
2224
- base: "query",
2225
- query: {
2226
- filter: { type: CardDef },
2227
- page: 10
2228
- }
2229
- },
2230
- /`query.page` must be an object/
2231
- ],
2232
- [
2233
- "query.page with no size",
2234
- {
2235
- base: "query",
2236
- query: {
2237
- filter: { type: CardDef },
2238
- page: { number: 1 }
2239
- }
2240
- },
2241
- /`query.page.size` must be a positive integer/
2242
- ],
2243
- [
2244
- "query.page.number below zero",
2245
- {
2246
- base: "query",
2247
- query: {
2248
- filter: { type: CardDef },
2249
- page: {
2250
- size: 10,
2251
- number: -1
2252
- }
2253
- }
2254
- },
2255
- /`query.page.number` must be a whole number/
2256
- ],
2257
- [
2258
- "cursor is not a page key",
2259
- {
2260
- base: "query",
2261
- query: {
2262
- filter: { type: CardDef },
2263
- page: {
2264
- size: 10,
2265
- cursor: "x"
2266
- }
2267
- }
2268
- },
2269
- /"cursor" is not a valid key for `query.page`/
2270
- ],
2271
- [
2272
- "a params reference with a non-string key",
2273
- {
2274
- base: "transform",
2275
- params: { body: string_default },
2276
- set: { x: {
2277
- $ref: "params",
2278
- key: 1
2279
- } }
2280
- },
2281
- /must name a param/
2282
- ],
2283
- [
2284
- "an actor reference carrying a key",
2285
- {
2286
- base: "transform",
2287
- set: { x: {
2288
- $ref: "actor",
2289
- key: "id"
2290
- } }
2291
- },
2292
- /carries a key; actor\(\) is the caller's user id and has no members to read/
2293
- ],
2294
- [
2295
- "an instance reference with an empty key",
2296
- {
2297
- base: "transform",
2298
- set: { x: {
2299
- $ref: "instance",
2300
- key: ""
2301
- } }
2302
- },
2303
- /must name a member, or none at all/
2304
- ],
2305
- [
2306
- "a card reference wrapping the caller",
2307
- {
2308
- base: "transform",
2309
- set: { x: {
2310
- $ref: "card",
2311
- value: { $ref: "actor" }
2312
- } }
2313
- },
2314
- /`actor\(\)` is the caller's user id rather than a card/
2315
- ],
2316
- [
2317
- "a card reference with a non-reference value",
2318
- {
2319
- base: "transform",
2320
- set: { x: {
2321
- $ref: "card",
2322
- value: 1
2323
- } }
2324
- },
2325
- /must carry a card URL or a reference to one/
2326
- ]
2327
- ];
2328
- for (let [name, declaration, pattern] of rejected) assert.throws(() => {
2329
- class Report extends CardDef {
2330
- static {
2331
- decorateFieldV2(this, "candidate", [operation], function() {
2332
- return declaration;
2333
- });
2334
- }
2335
- #candidate = (initializeDeferredDecorator(this, "candidate"), void 0);
2336
- }
2337
- return Report;
2338
- }, pattern, `a declaration is refused for ${name}`);
2339
- });
2340
- (0, import_qunit.test)("the caller is typed as a user id, not as a card", function(assert) {
2341
- let keyed = () => actor("id");
2342
- let wrapped = () => card(actor());
2343
- assert.throws(keyed, /takes no argument/);
2344
- assert.throws(wrapped, /rather than a card/);
2345
- assert.deepEqual(actor(), { $ref: "actor" }, "the one form it does have carries nothing but its kind");
2346
- });
2347
- (0, import_qunit.test)("every reference constructor reports what it wanted", function(assert) {
2348
- let rejected = [
2349
- [
2350
- "params with no name",
2351
- () => params(""),
2352
- /takes the name of a param declared/
2353
- ],
2354
- [
2355
- "params with a non-string",
2356
- () => params(1),
2357
- /takes the name of a param declared/
2358
- ],
2359
- [
2360
- "card with no URL",
2361
- () => card(""),
2362
- /takes a card URL or a typed reference to one/
2363
- ],
2364
- [
2365
- "card with a non-reference",
2366
- () => card(1),
2367
- /takes a card URL or a typed reference to one/
2368
- ],
2369
- [
2370
- "linkTo with a non-class",
2371
- () => linkTo("Activity"),
2372
- /takes a card class/
2373
- ],
2374
- [
2375
- "actor with an argument",
2376
- () => actor("id"),
2377
- /actor\(\) takes no argument; it is the caller's user id/
2378
- ],
2379
- [
2380
- "card wrapping the caller",
2381
- () => card(actor()),
2382
- /`actor\(\)` is the caller's user id rather than a card/
2383
- ],
2384
- [
2385
- "instance with a non-string key",
2386
- () => instance(1),
2387
- /takes the name of a member to read, or no argument at all/
2388
- ],
2389
- [
2390
- "realmConfig with an empty key",
2391
- () => realmConfig(""),
2392
- /takes the name of a member to read, or no argument at all/
2393
- ]
2394
- ];
2395
- for (let [name, build, pattern] of rejected) assert.throws(build, pattern, `${name} is refused`);
2396
- });
2397
- (0, import_qunit.test)("a def with no mutation surface carries only its reads", function(assert) {
2398
- class Bare extends BaseDef {}
2399
- assert.deepEqual(getOperations(Bare), {
2400
- read: implied("read"),
2401
- readSource: implied("readSource")
2402
- }, "the two reads are what every addressable def shares");
2403
- assert.throws(() => {
2404
- class Mutable extends BaseDef {
2405
- static {
2406
- decorateFieldV2(this, "escalate", [operation], function() {
2407
- return {
2408
- base: "transform",
2409
- set: { status: "escalated" }
2410
- };
2411
- });
2412
- }
2413
- #escalate = (initializeDeferredDecorator(this, "escalate"), void 0);
2414
- }
2415
- return Mutable;
2416
- }, /carries only "read", "readSource"/, "and a def that carries no mutation base cannot declare one");
2417
- });
2418
- (0, import_qunit.test)("getOperations rejects a target that is not a card definition", function(assert) {
2419
- assert.throws(() => getDeclaredOperations({}), /getDeclaredOperations\(\) takes a class that extends BaseDef/, "each reader names itself in its own error");
2420
- assert.throws(() => getOperations({}), /getOperations\(\) takes a class that extends BaseDef/, "operations hang off a definition, so a plain object reads none");
2421
- });
2422
- (0, import_qunit.test)("a params reference must name a declared param", function(assert) {
2423
- assert.throws(() => {
2424
- class Report extends CardDef {
2425
- static {
2426
- decorateFieldV2(this, "addComment", [operation], function() {
2427
- return {
2428
- base: "transform",
2429
- params: { body: string_default },
2430
- append: {
2431
- to: "comments",
2432
- value: { body: params("title") }
2433
- }
2434
- };
2435
- });
2436
- }
2437
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
2438
- }
2439
- return Report;
2440
- }, /references the param "title"/, "the declared schema is the single source for what the payload carries");
2441
- assert.throws(() => {
2442
- class Report extends CardDef {
2443
- static {
2444
- decorateFieldV2(this, "addComment", [operation], function() {
2445
- return {
2446
- base: "transform",
2447
- params: { body: "string" },
2448
- append: {
2449
- to: "comments",
2450
- value: { body: params("body") }
2451
- }
2452
- };
2453
- });
2454
- }
2455
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
2456
- }
2457
- return Report;
2458
- }, /param "body" must be a field class or linkTo/, "a param names the field class that types it");
2459
- });
2460
- (0, import_qunit.test)("the declared params schema types the operation payload", function(assert) {
2461
- class ClassroomActivity extends CardDef {}
2462
- let addActivity = {
2463
- base: "transform",
2464
- params: {
2465
- note: string_default,
2466
- activity: linkTo(ClassroomActivity)
2467
- },
2468
- append: {
2469
- to: "activities",
2470
- value: card(params("activity"))
2471
- }
2472
- };
2473
- let bodyReference = params("body");
2474
- class Report extends CardDef {
2475
- static {
2476
- decorateFieldV2(this, "addComment", [operation], function() {
2477
- return {
2478
- base: "transform",
2479
- params: { body: string_default },
2480
- append: {
2481
- to: "comments",
2482
- value: { body: params("body") }
2483
- }
2484
- };
2485
- });
2486
- }
2487
- #addComment = (initializeDeferredDecorator(this, "addComment"), void 0);
2488
- }
2489
- class Themed extends CardDef {
2490
- static theme = {
2491
- base: "dark",
2492
- accent: "#fff"
2493
- };
2494
- static {
2495
- decorateFieldV2(this, "ping", [operation], function() {
2496
- return { base: "read" };
2497
- });
2498
- }
2499
- #ping = (initializeDeferredDecorator(this, "ping"), void 0);
2500
- }
2501
- assert.deepEqual(Object.keys(getDeclaredOperations(Themed)), ["ping"], "and the reader agrees with the type at run time");
2502
- class Classroom extends CardDef {
2503
- static {
2504
- decorateFieldV2(this, "addActivity", [operation], function() {
2505
- return addActivity;
2506
- });
2507
- }
2508
- #addActivity = (initializeDeferredDecorator(this, "addActivity"), void 0);
2509
- }
2510
- assert.deepEqual(Object.keys(getDeclaredOperations(Classroom).addActivity.params ?? {}), ["note", "activity"], "a scalar param and a link param sit in the same schema");
2511
- assert.deepEqual(bodyReference, {
2512
- $ref: "params",
2513
- key: "body"
2514
- }, "the key a reference names is carried in the marker and in its type");
2515
- assert.deepEqual(Object.keys(getDeclaredOperations(Report)), ["addComment"], "a declaration written against the exported types is recorded like any other");
2516
- });
2517
- });
2518
- //#endregion