@cardstack/boxel-cli 0.9.0-unstable.10 → 0.9.0-unstable.11

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 (118) hide show
  1. package/bundled-realms/base/command.gts +40 -24
  2. package/bundled-test-harness/assets/{add-workspace-JYBGLgLZ.js → add-workspace-1zRdl8zI.js} +1 -1
  3. package/bundled-test-harness/assets/{add-workspace-test-DRhnr1r8.js → add-workspace-test-D5iVse00.js} +1 -1
  4. package/bundled-test-harness/assets/{ai-module-creation-test-BJJhqeeA.js → ai-module-creation-test-GYiPd87c.js} +1 -1
  5. package/bundled-test-harness/assets/{app-BVQ3DVX4.js → app-CR7E2df0.js} +4 -4
  6. package/bundled-test-harness/assets/{binary-upload-dedupe-test-Bdmk8qpz.js → binary-upload-dedupe-test-mqTMTOGp.js} +1 -1
  7. package/bundled-test-harness/assets/{can-invoke-test-C3_ldZpl.js → can-invoke-test-B3LhMm5-.js} +1 -1
  8. package/bundled-test-harness/assets/{card-chooser-paging-test-C7BNPfWp.js → card-chooser-paging-test-6LwuAKTj.js} +1 -1
  9. package/bundled-test-harness/assets/{card-chooser-test-D8XNwCaW.js → card-chooser-test-CBvHX1BK.js} +1 -1
  10. package/bundled-test-harness/assets/{card-def-field-def-relationships-test-CuatVINU.js → card-def-field-def-relationships-test-DodLozx0.js} +1 -1
  11. package/bundled-test-harness/assets/{card-delete-test-DCmKEZ_Y.js → card-delete-test-BPde9vqy.js} +1 -1
  12. package/bundled-test-harness/assets/{check-correctness-test-B1bGWVSm.js → check-correctness-test-Ct2aB6aD.js} +1 -1
  13. package/bundled-test-harness/assets/{choreo-feature-reel-test-CGhD4996.js → choreo-feature-reel-test-Da7hUrQJ.js} +1 -1
  14. package/bundled-test-harness/assets/{choreo-gallery-BvL1V7P7.js → choreo-gallery-BKVGWFq7.js} +2 -2
  15. package/bundled-test-harness/assets/{choreo-gallery-build-order-test-vqxi2yVx.js → choreo-gallery-build-order-test-CJMITCCe.js} +1 -1
  16. package/bundled-test-harness/assets/{choreo-gallery-compositor-test-DhFRJae-.js → choreo-gallery-compositor-test-BVa9Ak-Q.js} +1 -1
  17. package/bundled-test-harness/assets/{choreo-gallery-cover-test-DmazsR0Z.js → choreo-gallery-cover-test-BFpC-W9i.js} +1 -1
  18. package/bundled-test-harness/assets/{choreo-gallery-crossing-stage-test-BipANF5u.js → choreo-gallery-crossing-stage-test-BpekNEib.js} +1 -1
  19. package/bundled-test-harness/assets/{choreo-gallery-demos-alive-test-CDAsZtl-.js → choreo-gallery-demos-alive-test-IOZo64_Z.js} +1 -1
  20. package/bundled-test-harness/assets/{choreo-gallery-drift-test-EBe6Yaqp.js → choreo-gallery-drift-test-BrPvqI7K.js} +1 -1
  21. package/bundled-test-harness/assets/{choreo-gallery-escort-test-Ceu7TwiV.js → choreo-gallery-escort-test-BgsIKJio.js} +1 -1
  22. package/bundled-test-harness/assets/{choreo-gallery-films-test-DrPpbW3l.js → choreo-gallery-films-test-Cnt3fSqM.js} +1 -1
  23. package/bundled-test-harness/assets/{choreo-gallery-filter-test-CvKk8l6z.js → choreo-gallery-filter-test-uPxHSrLd.js} +1 -1
  24. package/bundled-test-harness/assets/{choreo-gallery-fold-test-D8X4AXxh.js → choreo-gallery-fold-test-DBtUMaRe.js} +1 -1
  25. package/bundled-test-harness/assets/{choreo-gallery-guides-test-DWi_cZtu.js → choreo-gallery-guides-test-BDijbyEJ.js} +2 -2
  26. package/bundled-test-harness/assets/{choreo-gallery-hang-test-Djmr-Jwl.js → choreo-gallery-hang-test-Cfz_f7kq.js} +1 -1
  27. package/bundled-test-harness/assets/{choreo-gallery-highlight-test-hKhRmfbB.js → choreo-gallery-highlight-test-Bey3u2C9.js} +2 -2
  28. package/bundled-test-harness/assets/{choreo-gallery-inline-edit-test-DkjthGzn.js → choreo-gallery-inline-edit-test-DWsf_UFF.js} +1 -1
  29. package/bundled-test-harness/assets/{choreo-gallery-interruption-test-Cy11snG-.js → choreo-gallery-interruption-test-DxgnyIEX.js} +1 -1
  30. package/bundled-test-harness/assets/{choreo-gallery-lone-stack-test-Dv7sHo4c.js → choreo-gallery-lone-stack-test-CFONDgnZ.js} +1 -1
  31. package/bundled-test-harness/assets/{choreo-gallery-navigation-test-rXyVsieC.js → choreo-gallery-navigation-test-C3Gx2Wh7.js} +1 -1
  32. package/bundled-test-harness/assets/{choreo-gallery-playhead-transport-test-DtaCaSLQ.js → choreo-gallery-playhead-transport-test-CH7Jrjhu.js} +1 -1
  33. package/bundled-test-harness/assets/{choreo-gallery-poplayout-subtree-test-Ap4aNR41.js → choreo-gallery-poplayout-subtree-test-D_WzPJ0V.js} +1 -1
  34. package/bundled-test-harness/assets/{choreo-gallery-presence-modes-test-BhlW-Lne.js → choreo-gallery-presence-modes-test-Dg9Rjzo9.js} +1 -1
  35. package/bundled-test-harness/assets/{choreo-gallery-presentation-test-BCkTdHhb.js → choreo-gallery-presentation-test-BwgpOG4i.js} +1 -1
  36. package/bundled-test-harness/assets/{choreo-gallery-reduced-motion-test-C-i6VxrB.js → choreo-gallery-reduced-motion-test-Bb9vbXwc.js} +1 -1
  37. package/bundled-test-harness/assets/{choreo-gallery-sheet-standalone-test-YwYop8yo.js → choreo-gallery-sheet-standalone-test-wBtx6YOK.js} +1 -1
  38. package/bundled-test-harness/assets/{choreo-gallery-sheet-test-BxlTpsW6.js → choreo-gallery-sheet-test-Bgi58xOY.js} +1 -1
  39. package/bundled-test-harness/assets/{choreo-gallery-site-test-NgXU1y_2.js → choreo-gallery-site-test-0k39S_ID.js} +1 -1
  40. package/bundled-test-harness/assets/{choreo-gallery-stage-pQUMuoFC.js → choreo-gallery-stage-ZD1b6EcX.js} +1 -1
  41. package/bundled-test-harness/assets/{choreo-gallery-stage-keyboard-test-BBLXJf7u.js → choreo-gallery-stage-keyboard-test-CwYQ0uLO.js} +1 -1
  42. package/bundled-test-harness/assets/{choreo-gallery-stages-test-Bpt5h0Ci.js → choreo-gallery-stages-test-D9HzyH3W.js} +2 -2
  43. package/bundled-test-harness/assets/{choreo-gallery-subdivision-test-DezdmSrj.js → choreo-gallery-subdivision-test-Bqg4OA3x.js} +1 -1
  44. package/bundled-test-harness/assets/{choreo-gallery-table-plan-test-ClRyzZku.js → choreo-gallery-table-plan-test-kLIQjuGP.js} +1 -1
  45. package/bundled-test-harness/assets/{choreo-gallery-theater-test-eYpVLcPq.js → choreo-gallery-theater-test-hGflkP4v.js} +2 -2
  46. package/bundled-test-harness/assets/{choreo-gallery-tuning-test-BLgbgT-x.js → choreo-gallery-tuning-test-DXxSWyWx.js} +1 -1
  47. package/bundled-test-harness/assets/{choreo-gallery-widget-room-test-7sp5Unfj.js → choreo-gallery-widget-room-test-kDw1KEK8.js} +2 -2
  48. package/bundled-test-harness/assets/{choreo-gallery-wires-test-gaboWsGB.js → choreo-gallery-wires-test-Ci8pZpzw.js} +1 -1
  49. package/bundled-test-harness/assets/{codeblocks-test-BfrtgWFf.js → codeblocks-test-CVdMnOCp.js} +1 -1
  50. package/bundled-test-harness/assets/{codemirror-embed-toolbar-test-Bzke66Ms.js → codemirror-embed-toolbar-test-BssilSQu.js} +1 -1
  51. package/bundled-test-harness/assets/{compaction-test-vJF6rxRc.js → compaction-test-AMNVQVIq.js} +1 -1
  52. package/bundled-test-harness/assets/{container-Cg9tfMT-.js → container-aEzZntti.js} +5 -5
  53. package/bundled-test-harness/assets/{convert-to-class-name-test-GNx5er9G.js → convert-to-class-name-test-D8lm5X8q.js} +1 -1
  54. package/bundled-test-harness/assets/{create-file-modal-qd-wHuoI.js → create-file-modal-YsrXldcb.js} +1 -1
  55. package/bundled-test-harness/assets/{create-listing-modal-test-Dg53cvuG.js → create-listing-modal-test-43xjc0SV.js} +1 -1
  56. package/bundled-test-harness/assets/{credential-fields-test-CUiG7Iez.js → credential-fields-test-BFMDfkwH.js} +1 -1
  57. package/bundled-test-harness/assets/{debug-message-test-B_dvUaEc.js → debug-message-test-CfuhQ3QC.js} +1 -1
  58. package/bundled-test-harness/assets/{externals-BnJo838b.js → externals-wVTxNrdG.js} +1 -1
  59. package/bundled-test-harness/assets/{fallback-banner-live-delete-test-CnZFQWVp.js → fallback-banner-live-delete-test-CLbfPO0a.js} +1 -1
  60. package/bundled-test-harness/assets/{fallback-banner-test-DTlCNXTq.js → fallback-banner-test-9xbINj2Z.js} +1 -1
  61. package/bundled-test-harness/assets/{fallback-models-test-DjdqZpc6.js → fallback-models-test-DVQo2MxM.js} +1 -1
  62. package/bundled-test-harness/assets/{file-attachment-test-CX0j9bZz.js → file-attachment-test-CRKbikdE.js} +1 -1
  63. package/bundled-test-harness/assets/{general-test-7U7FOyZ1.js → general-test-lSgd8Ss0.js} +1 -1
  64. package/bundled-test-harness/assets/{index-query-engine-test-Ds1qxgEC.js → index-query-engine-test-BHRXNeAL.js} +1 -1
  65. package/bundled-test-harness/assets/{inspector-test-Ed3O5tuy.js → inspector-test-C6z8Un9M.js} +1 -1
  66. package/bundled-test-harness/assets/{instance-filter-matcher-test-D5X1y4EE.js → instance-filter-matcher-test-1Yg4VSaZ.js} +1 -1
  67. package/bundled-test-harness/assets/{main-CL6WYORU.js → main-Th6TkaXh.js} +1 -1
  68. package/bundled-test-harness/assets/{markdown-embed-chooser-modal-test-gW6Xfznw.js → markdown-embed-chooser-modal-test-Swm_1E9A.js} +1 -1
  69. package/bundled-test-harness/assets/{message-tool-test-BpSbgQ6j.js → message-tool-test-lzxIVYt5.js} +1 -1
  70. package/bundled-test-harness/assets/{modal-BwTd4bsz.js → modal-66tRI_Y_.js} +1 -1
  71. package/bundled-test-harness/assets/modal-container-CjnDLCtj.js +40 -0
  72. package/bundled-test-harness/assets/{model-cost-tier-test-CvyrJtBe.js → model-cost-tier-test-Dqd1Ww8g.js} +1 -1
  73. package/bundled-test-harness/assets/{operation-lowering-test-Dl-IR159.js → operation-lowering-test-BNFo0ZMa.js} +1 -1
  74. package/bundled-test-harness/assets/{operator-mode-card-chooser-test-DNB9UUeb.js → operator-mode-card-chooser-test-D3hTWkk0.js} +1 -1
  75. package/bundled-test-harness/assets/{operator-mode-links-test-a2ELMv7x.js → operator-mode-links-test-B6yda5il.js} +1 -1
  76. package/bundled-test-harness/assets/{operator-mode-test-BOILKxRt.js → operator-mode-test-wj2uYBuS.js} +1 -1
  77. package/bundled-test-harness/assets/{operator-mode-ui-test-DrYx32gG.js → operator-mode-ui-test-CO7CyFKM.js} +1 -1
  78. package/bundled-test-harness/assets/{overlay-menu-items-test-B15JkLWi.js → overlay-menu-items-test-C2GA814r.js} +1 -1
  79. package/bundled-test-harness/assets/{past-sessions-test-Db7VnDiY.js → past-sessions-test-CJyYYcCJ.js} +1 -1
  80. package/bundled-test-harness/assets/{permission-checking-realm-test-Bf9py4pK.js → permission-checking-realm-test-8dG7pbV2.js} +1 -1
  81. package/bundled-test-harness/assets/{profile-settings-modal-r1hvskUn.js → profile-settings-modal-BItESTfo.js} +1 -1
  82. package/bundled-test-harness/assets/{realm-config-policy-standing-test-BiJAwdmt.js → realm-config-policy-standing-test-CpvCRyQD.js} +1 -1
  83. package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-CGTMRnZC.js → realm-config-routing-rule-edit-test-hJ-6xFqS.js} +1 -1
  84. package/bundled-test-harness/assets/{realm-config-settings-test-CMvriHQ1.js → realm-config-settings-test-CJsbxe8c.js} +1 -1
  85. package/bundled-test-harness/assets/{reasoning-test-B4_QXPYj.js → reasoning-test-DZdScSB0.js} +1 -1
  86. package/bundled-test-harness/assets/{room-message-test-D0zWbBl2.js → room-message-test-C37ua8-g.js} +1 -1
  87. package/bundled-test-harness/assets/{run-realm-code-BCbAj6ZU.js → run-realm-code-WsTalbNy.js} +3 -1
  88. package/bundled-test-harness/assets/{run-realm-code-test-C1SstTFn.js → run-realm-code-test-BUEmsWe8.js} +9 -1
  89. package/bundled-test-harness/assets/{schema-generation-test-CPSyEnFn.js → schema-generation-test-DDnSXIhb.js} +1 -1
  90. package/bundled-test-harness/assets/{scrolling-test-8RITl4Yy.js → scrolling-test-B2X_cmFO.js} +1 -1
  91. package/bundled-test-harness/assets/{searchable-option-test-wy6MhR17.js → searchable-option-test-D8JVkmy0.js} +1 -1
  92. package/bundled-test-harness/assets/{sending-test-DECmMY11.js → sending-test-Dpz8twhM.js} +1 -1
  93. package/bundled-test-harness/assets/{skills-test-bnEF18f-.js → skills-test-ozjqNJg9.js} +1 -1
  94. package/bundled-test-harness/assets/{store-test-4HQ25OC9.js → store-test-BQ9i9Kr5.js} +39 -4
  95. package/bundled-test-harness/assets/{tests-4eXqEcYs.js → tests-CLX9KyWy.js} +450 -450
  96. package/bundled-test-harness/assets/{text-input-validator-test-DbbmKb6a.js → text-input-validator-test-Bst2QdAc.js} +1 -1
  97. package/bundled-test-harness/assets/{to-device-streaming-test-BFMz5Glx.js → to-device-streaming-test-CRPRebs2.js} +1 -1
  98. package/bundled-test-harness/assets/{token-usage-test-BEZ3LAKu.js → token-usage-test-BhABlxuQ.js} +1 -1
  99. package/bundled-test-harness/assets/{tools-D-uShEr3.js → tools-BIhB57BB.js} +1 -1
  100. package/bundled-test-harness/assets/{tools-test-DKOoqRwb.js → tools-test-26_cJBw_.js} +42 -22
  101. package/bundled-test-harness/assets/{workspace-chooser-Cu2Ytanf.js → workspace-chooser-BoxgLo8E.js} +2 -2
  102. package/bundled-test-harness/assets/{workspace-chooser-catalog-order-test-CvmdsPdO.js → workspace-chooser-catalog-order-test-CVmYeH4c.js} +1 -1
  103. package/bundled-test-harness/assets/{workspace-chooser-unreachable-notice-test-DQU5jnd9.js → workspace-chooser-unreachable-notice-test-CMRlJ4q2.js} +1 -1
  104. package/bundled-test-harness/assets/{workspace-delete-summary-test-CQGv5NBQ.js → workspace-delete-summary-test-Bw91K51c.js} +1 -1
  105. package/bundled-test-harness/assets/{workspace-UMec6T3x.js → workspace-rCACd5qW.js} +1 -1
  106. package/bundled-test-harness/assets/{workspace-test-X4Kzx0qN.js → workspace-test-B1wFPgPU.js} +23 -2
  107. package/bundled-test-harness/assets/{workspace-timestamp-labels-test-CSow2dI6.js → workspace-timestamp-labels-test-CvFFMtct.js} +1 -1
  108. package/bundled-test-harness/index.html +14 -14
  109. package/bundled-test-harness/tests/index.html +14 -14
  110. package/bundled-types/base/command.d.ts +1 -0
  111. package/bundled-types/host-app/components/modal-container.gts +1 -0
  112. package/bundled-types/host-app/tools/run-realm-code.ts +6 -2
  113. package/dist/index.js +269 -269
  114. package/package.json +1 -1
  115. package/src/commands/profile.ts +87 -19
  116. package/src/index.ts +13 -1
  117. package/src/lib/prompt.ts +54 -6
  118. package/bundled-test-harness/assets/modal-container-YpGh-tkA.js +0 -40
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
6
6
  import "./component-BJO47HTh.js";
7
7
  import { t as Component } from "./dist-CkA1rgqO.js";
8
8
  import "./template-factory-ds9s0u8l.js";
9
- import { t as OperatorModeContainer } from "./container-Cg9tfMT-.js";
9
+ import { t as OperatorModeContainer } from "./container-aEzZntti.js";
10
10
  import { T as settled, f as focus, r as typeIn, s as fillIn } from "./dist-BOAdzfkP.js";
11
11
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
12
12
  import { F as setupLocalIndexing, I as setupOnSave, L as setupRealmCacheTeardown, P as setupIntegrationTestRealm, Z as withCachedRealmSetup, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-BekwDdCN.js";
@@ -5,7 +5,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
5
5
  import "./component-BJO47HTh.js";
6
6
  import { t as Component } from "./dist-CkA1rgqO.js";
7
7
  import "./template-factory-ds9s0u8l.js";
8
- import { t as OperatorModeContainer } from "./container-Cg9tfMT-.js";
8
+ import { t as OperatorModeContainer } from "./container-aEzZntti.js";
9
9
  import { M as waitUntil, T as settled, d as click, o as waitFor } from "./dist-BOAdzfkP.js";
10
10
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
11
11
  import { D as realmConfigCardJSON, F as setupLocalIndexing, I as setupOnSave, L as setupRealmCacheTeardown, M as setupCardLogs, P as setupIntegrationTestRealm, Z as withCachedRealmSetup, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-BekwDdCN.js";
@@ -5,7 +5,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
5
5
  import "./component-BJO47HTh.js";
6
6
  import { t as Component } from "./dist-CkA1rgqO.js";
7
7
  import "./template-factory-ds9s0u8l.js";
8
- import { t as OperatorModeContainer } from "./container-Cg9tfMT-.js";
8
+ import { t as OperatorModeContainer } from "./container-aEzZntti.js";
9
9
  import { M as waitUntil, d as click, o as waitFor } from "./dist-BOAdzfkP.js";
10
10
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
11
11
  import { D as realmConfigCardJSON, F as setupLocalIndexing, I as setupOnSave, L as setupRealmCacheTeardown, M as setupCardLogs, P as setupIntegrationTestRealm, Z as withCachedRealmSetup, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-BekwDdCN.js";
@@ -47,7 +47,7 @@ import { n as execute_atomic_operations_exports, t as ExecuteAtomicOperationsToo
47
47
  import { n as fetch_card_json_exports, t as FetchCardJsonTool } from "./fetch-card-json-C64OunoA.js";
48
48
  import { n as full_reindex_realm_exports, t as FullReindexRealmTool } from "./full-reindex-realm-CxC7Vo2A.js";
49
49
  import { a as ONE_SHOT_SYSTEM_PROMPT, c as parseExamplePayloadFromOutput, i as generate_example_cards_exports, n as GenerateExampleCardsTool, o as buildAttachedFileURLs, r as createExampleInstanceFromPayload, s as buildExamplePrompt } from "./generate-example-cards-Qo9CMQ4b.js";
50
- import { a as imageExtension, i as generateImage, n as run_realm_code_exports, o as sourceImageDataUrl, t as RunRealmCodeTool } from "./run-realm-code-BCbAj6ZU.js";
50
+ import { a as imageExtension, i as generateImage, n as run_realm_code_exports, o as sourceImageDataUrl, t as RunRealmCodeTool } from "./run-realm-code-WsTalbNy.js";
51
51
  import { n as get_all_realm_metas_exports, t as GetAllRealmMetasTool } from "./get-all-realm-metas-s8xx-BM-.js";
52
52
  import { n as get_available_realm_identifiers_exports, t as GetAvailableRealmIdentifiersTool } from "./get-available-realm-identifiers-BXAkZByI.js";
53
53
  import { n as get_catalog_realm_identifiers_exports, t as GetCatalogRealmIdentifiersTool } from "./get-catalog-realm-identifiers-D-2RFr5h.js";
@@ -8,7 +8,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
8
8
  import "./component-BJO47HTh.js";
9
9
  import { t as Component } from "./dist-CkA1rgqO.js";
10
10
  import "./template-factory-ds9s0u8l.js";
11
- import { t as OperatorModeContainer } from "./container-Cg9tfMT-.js";
11
+ import { t as OperatorModeContainer } from "./container-aEzZntti.js";
12
12
  import { t as STOPPED_TOOL_CALL_REASON } from "./stop-D48HIpe6.js";
13
13
  import { M as waitUntil, T as settled, a as find, d as click, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
14
14
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
@@ -2719,20 +2719,8 @@ function registeredRealmPrefixes() {
2719
2719
  assert.dom(`[data-test-realm-code-file="${savedFile}"]`).containsText("saved", "the saved file is listed with its status");
2720
2720
  assert.dom("[data-test-boxel-tool-call-result]").doesNotContainText("done", "the script's own result stays out of the chat");
2721
2721
  });
2722
- (0, import_qunit.test)("a run-realm-code result says which card it opened, or why it could not", async function(assert) {
2723
- let roomId = await renderAiAssistantPanel();
2724
- let cardId = `${testRealmURL}Pet/mango`;
2725
- simulateToolResult(roomId, {
2726
- requestId: "run-realm-code-shown",
2727
- toolName: "run-realm-code",
2728
- resultDoc: baseCommandResultDoc("RunRealmCodeResult", {
2729
- files: [],
2730
- scriptResult: JSON.stringify({ show: "Pet/mango" }),
2731
- captures: [],
2732
- shownCard: cardId
2733
- })
2734
- });
2735
- simulateToolResult(roomId, {
2722
+ (0, import_qunit.test)("a run-realm-code result says why it could not show a card", async function(assert) {
2723
+ simulateToolResult(await renderAiAssistantPanel(), {
2736
2724
  requestId: "run-realm-code-not-shown",
2737
2725
  toolName: "run-realm-code",
2738
2726
  resultDoc: baseCommandResultDoc("RunRealmCodeResult", {
@@ -2743,10 +2731,9 @@ function registeredRealmPrefixes() {
2743
2731
  })
2744
2732
  });
2745
2733
  await waitFor("[data-test-realm-code-show-error]");
2746
- assert.dom("[data-test-realm-code-shown-card]").containsText(cardId, "the opened card is named");
2747
2734
  assert.dom("[data-test-realm-code-show-error]").containsText("The card was not shown", "the reason is shown");
2748
2735
  });
2749
- (0, import_qunit.test)("a run-realm-code result lists its UI actions", async function(assert) {
2736
+ (0, import_qunit.test)("a run-realm-code result lists its failed UI actions only", async function(assert) {
2750
2737
  simulateToolResult(await renderAiAssistantPanel(), {
2751
2738
  requestId: "run-realm-code-ui-actions",
2752
2739
  toolName: "run-realm-code",
@@ -2767,10 +2754,29 @@ function registeredRealmPrefixes() {
2767
2754
  })
2768
2755
  });
2769
2756
  await waitFor("[data-test-realm-code-ui-action=\"previewFormat\"]");
2770
- assert.dom("[data-test-realm-code-ui-action=\"openFile\"]").containsText("done", "a done action shows its status");
2757
+ assert.dom("[data-test-realm-code-ui-action=\"openFile\"]").doesNotExist("a done action is not listed");
2771
2758
  assert.dom("[data-test-realm-code-ui-action=\"previewFormat\"]").containsText("Card not found", "a failed action says why");
2772
2759
  });
2773
- (0, import_qunit.test)("a run-realm-code result that saved no files and took no captures stays out of the chat", async function(assert) {
2760
+ (0, import_qunit.test)("a run-realm-code result lists the workspaces it created and deleted", async function(assert) {
2761
+ let roomId = await renderAiAssistantPanel();
2762
+ let created = "http://test-realm/new-workspace/";
2763
+ let deleted = "http://test-realm/old-workspace/";
2764
+ simulateToolResult(roomId, {
2765
+ requestId: "run-realm-code-workspaces",
2766
+ toolName: "run-realm-code",
2767
+ resultDoc: baseCommandResultDoc("RunRealmCodeResult", {
2768
+ files: [],
2769
+ scriptResult: "",
2770
+ captures: [],
2771
+ createdWorkspaces: [created],
2772
+ deletedWorkspaces: [deleted]
2773
+ })
2774
+ });
2775
+ await waitFor("[data-test-realm-code-created-workspace]");
2776
+ assert.dom("[data-test-realm-code-created-workspace]").containsText(created, "the created workspace is listed");
2777
+ assert.dom("[data-test-realm-code-deleted-workspace]").containsText(deleted, "the deleted workspace is listed");
2778
+ });
2779
+ (0, import_qunit.test)("a run-realm-code result that wrote nothing and had no failure stays out of the chat", async function(assert) {
2774
2780
  let roomId = await renderAiAssistantPanel();
2775
2781
  let store = getService("store");
2776
2782
  let addWithoutPersisting = store.addWithoutPersisting.bind(store);
@@ -2786,14 +2792,28 @@ function registeredRealmPrefixes() {
2786
2792
  toolName: "run-realm-code",
2787
2793
  resultDoc: baseCommandResultDoc("RunRealmCodeResult", {
2788
2794
  files: [],
2789
- scriptResult: "the file contents",
2790
- captures: []
2795
+ scriptResult: JSON.stringify({ show: "Pet/mango" }),
2796
+ captures: [{
2797
+ name: "pet.gts (isolated).png",
2798
+ url: new URL("/_matrix/client/v1/media/download/localhost/read-only-capture", config.matrixURL).href,
2799
+ contentType: "image/png"
2800
+ }],
2801
+ shownCard: `${testRealmURL}Pet/mango`,
2802
+ uiActions: [{
2803
+ action: "switchSubmode",
2804
+ target: "code",
2805
+ status: "done"
2806
+ }, {
2807
+ action: "openFile",
2808
+ target: `${testRealmURL}pet.gts`,
2809
+ status: "done"
2810
+ }]
2791
2811
  })
2792
2812
  });
2793
2813
  await resultCardMade;
2794
2814
  await settled();
2795
2815
  assert.dom("[data-test-message-idx=\"0\"] [data-test-apply-state=\"applied\"]").exists("the tool row shows the call as applied");
2796
- assert.dom("[data-test-tool-result-container]").doesNotExist("the read-only run has no result card");
2816
+ assert.dom("[data-test-tool-result-container]").doesNotExist("a run that only read, captured, and opened things has no result card");
2797
2817
  });
2798
2818
  });
2799
2819
  //#endregion
@@ -26,8 +26,8 @@ import { r as provide } from "./dist-Ble0L9o7.js";
26
26
  import { t as catalogRealmURL } from "./utils-BoClFU2X.js";
27
27
  import { t as RealmURLTooltip } from "./realm-url-tooltip-B9kMfvMg.js";
28
28
  import { t as perform } from "./perform-g9ba6YNZ.js";
29
- import { c as IconComponent$11, o as WorkspaceLoadingIndicator, s as IconComponent$12, t as Workspace } from "./workspace-UMec6T3x.js";
30
- import { t as AddWorkspace } from "./add-workspace-JYBGLgLZ.js";
29
+ import { c as IconComponent$11, o as WorkspaceLoadingIndicator, s as IconComponent$12, t as Workspace } from "./workspace-rCACd5qW.js";
30
+ import { t as AddWorkspace } from "./add-workspace-1zRdl8zI.js";
31
31
  import { n as IconComponent$14, t as IconComponent$13 } from "./alert-triangle-C7tx0ryM.js";
32
32
  import { a as firstDefined, i as emit, n as resolveBusy, o as resolveSize, r as resolveDisabled, s as resolveTone, t as Button } from "./button-PKDCsv-a.js";
33
33
  //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/shapes.js
@@ -1,5 +1,5 @@
1
1
  import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
- import { n as leadWith } from "./workspace-chooser-Cu2Ytanf.js";
2
+ import { n as leadWith } from "./workspace-chooser-BoxgLo8E.js";
3
3
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
4
4
  //#region tests/unit/workspace-chooser-catalog-order-test.ts
5
5
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
@@ -9,7 +9,7 @@ import "./component-BJO47HTh.js";
9
9
  import { t as Component } from "./dist-CkA1rgqO.js";
10
10
  import "./template-factory-ds9s0u8l.js";
11
11
  import { T as settled } from "./dist-BOAdzfkP.js";
12
- import { t as WorkspaceChooser } from "./workspace-chooser-Cu2Ytanf.js";
12
+ import { t as WorkspaceChooser } from "./workspace-chooser-BoxgLo8E.js";
13
13
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
14
14
  import { F as setupLocalIndexing, P as setupIntegrationTestRealm, ft as setRealmAuthFailure, lt as setupRenderingTest, t as setupMockMatrix } from "./mock-matrix-BekwDdCN.js";
15
15
  import { r as getService } from "./dist-CPfIHBla.js";
@@ -1,5 +1,5 @@
1
1
  import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
- import { a as joinWithAnd, i as formatWorkspaceDeleteSummary } from "./workspace-UMec6T3x.js";
2
+ import { a as joinWithAnd, i as formatWorkspaceDeleteSummary } from "./workspace-rCACd5qW.js";
3
3
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
4
4
  //#region tests/unit/workspace-delete-summary-test.ts
5
5
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
@@ -20,7 +20,7 @@ import "./internals-BTorg710.js";
20
20
  import "./dist-DEVZvbin.js";
21
21
  import { a as realmURLDisplayText } from "./realm-utils-3UZrkJO5.js";
22
22
  import { o as skillsRealmURL, r as publishedRealmURLsFromInfo } from "./utils-BoClFU2X.js";
23
- import { t as ModalContainer } from "./modal-container-YpGh-tkA.js";
23
+ import { t as ModalContainer } from "./modal-container-CjnDLCtj.js";
24
24
  import { t as RealmURLTooltip } from "./realm-url-tooltip-B9kMfvMg.js";
25
25
  import { t as perform } from "./perform-g9ba6YNZ.js";
26
26
  import { t as IconComponent$11 } from "./refresh-cw-Cw7W_v15.js";
@@ -6,7 +6,7 @@ import { wt as setComponentTemplate } from "./cache-DtDz7X5V-Wn8jRDfL.js";
6
6
  import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
7
7
  import "./component-BJO47HTh.js";
8
8
  import "./template-factory-ds9s0u8l.js";
9
- import { M as waitUntil, a as find, c as triggerKeyEvent, d as click, k as visit, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
9
+ import { M as waitUntil, T as settled, a as find, c as triggerKeyEvent, d as click, k as visit, o as waitFor, s as fillIn, x as getSettledState } from "./dist-BOAdzfkP.js";
10
10
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
11
11
  import { D as realmConfigCardJSON, F as setupLocalIndexing, a as SYSTEM_CARD_FIXTURE_CONTENTS, ct as setupApplicationTest, j as setupAcceptanceTestRealm, pt as setupAuthEndpoints, t as setupMockMatrix, z as setupUserSubscription } from "./mock-matrix-BekwDdCN.js";
12
12
  import { r as getService } from "./dist-CPfIHBla.js";
@@ -259,8 +259,25 @@ var WORKSPACE_BUTTON = `[data-test-workspace-button="${WORKSPACE_NAME}"]`;
259
259
  function gridItemCount() {
260
260
  return document.querySelectorAll(GRID_ITEM).length;
261
261
  }
262
+ function describeLibrary() {
263
+ let ids = [...document.querySelectorAll(GRID_ITEM)].map((el) => (el.getAttribute("data-test-cards-grid-item") ?? "?").replace(testRealmURL, ""));
264
+ let page = document.querySelector(`${PAGINATION} [aria-current="page"]`)?.textContent?.trim() ?? "<no page controls>";
265
+ let loading = Boolean(document.querySelector(`${STACK} [data-test-card-list-loading]`));
266
+ let s = getSettledState();
267
+ return [
268
+ `grid items (${ids.length}): [${ids.join(", ")}]`,
269
+ `current page: ${page}`,
270
+ `loading state shown: ${loading}`,
271
+ `settled state: hasRunLoop=${s.hasRunLoop} hasPendingTimers=${s.hasPendingTimers} hasPendingWaiters=${s.hasPendingWaiters} hasPendingRequests=${s.hasPendingRequests} isRenderPending=${s.isRenderPending}`
272
+ ].join("; ");
273
+ }
262
274
  async function waitForGridItems(count) {
263
- await waitUntil(() => gridItemCount() === count, { timeoutMessage: `expected ${count} grid items, saw ${gridItemCount()}` });
275
+ let startedAt = Date.now();
276
+ try {
277
+ await waitUntil(() => gridItemCount() === count);
278
+ } catch {
279
+ throw new Error(`expected ${count} grid items, gave up after ${Date.now() - startedAt}ms; ${describeLibrary()}`);
280
+ }
264
281
  }
265
282
  (0, import_qunit.test)("a filter with more rows than a page steps through them page by page", async function(assert) {
266
283
  await openLibraryFilter("Note");
@@ -305,6 +322,10 @@ var WORKSPACE_BUTTON = `[data-test-workspace-button="${WORKSPACE_NAME}"]`;
305
322
  await click(`${PAGINATION} [aria-label="Next"]`);
306
323
  await waitForGridItems(NOTE_COUNT - PAGE_SIZE);
307
324
  for (let i = 6; i <= NOTE_COUNT; i++) await realm.delete(`${noteId(i)}.json`);
325
+ let deletedAt = Date.now();
326
+ await settled();
327
+ let settledAfterMs = Date.now() - deletedAt;
328
+ if (gridItemCount() !== PAGE_SIZE) console.warn(`[library-pages] settled ${settledAfterMs}ms after the deletions with the grid not yet on the last page; ${describeLibrary()}`);
308
329
  await waitForGridItems(PAGE_SIZE);
309
330
  assert.dom(`${GRID_ITEM}[data-test-cards-grid-item="${testRealmURL}${noteId(1)}"]`).exists("the grid shows the one page left");
310
331
  assert.dom(PAGINATION).doesNotExist("and offers no controls for a single page");
@@ -1,5 +1,5 @@
1
1
  import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
- import { n as formatRelativeTime, r as formatUpdatedTime } from "./workspace-UMec6T3x.js";
2
+ import { n as formatRelativeTime, r as formatUpdatedTime } from "./workspace-rCACd5qW.js";
3
3
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
4
4
  //#region tests/unit/workspace-timestamp-labels-test.ts
5
5
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
@@ -12,7 +12,7 @@
12
12
  boxelComponentL3, boxelComponentL4;
13
13
  </style>
14
14
 
15
- <meta name="@cardstack/host/config/environment" content="%7B%22modulePrefix%22%3A%22%40cardstack%2Fhost%22%2C%22environment%22%3A%22development%22%2C%22hostedEnvironment%22%3A%22local%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22history%22%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%220.0.0%2Ba793917b%22%7D%2C%22ember-cli-mirage%22%3A%7B%22enabled%22%3Afalse%7D%2C%22logLevels%22%3A%22*%3Dinfo%2Cmatrix%3Dinfo%2Crealm%3Aevents%3Ddebug%22%2C%22matrixURL%22%3A%22http%3A%2F%2Flocalhost%3A8008%22%2C%22matrixServerName%22%3A%22localhost%22%2C%22autoSaveDelayMs%22%3A500%2C%22monacoDebounceMs%22%3A500%2C%22monacoCursorDebounceMs%22%3A200%2C%22serverEchoDebounceMs%22%3A5000%2C%22loginMessageTimeoutMs%22%3A1000%2C%22minSaveTaskDurationMs%22%3A1000%2C%22cardRenderTimeout%22%3A30000%2C%22cardSizeLimitBytes%22%3A524288%2C%22fileSizeLimitBytes%22%3A5242880%2C%22audioSizeLimitBytes%22%3A20971520%2C%22videoSizeLimitBytes%22%3A52428800%2C%22iconsURL%22%3A%22http%3A%2F%2Flocalhost%3A4206%22%2C%22secureOriginURL%22%3A%22https%3A%2F%2Flocalhost%3A4208%2Fsecure%22%2C%22publishedRealmBoxelSpaceDomain%22%3A%22localhost%3A4201%22%2C%22publishedRealmBoxelSiteDomain%22%3A%22localhost%3A4201%22%2C%22hostsOwnAssets%22%3Atrue%2C%22hostRoutingMap%22%3A%5B%5D%2C%22realmServerURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2F%22%2C%22resolvedBaseRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22resolvedCatalogRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2F%22%2C%22resolvedSkillsRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22resolvedOpenRouterRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fopenrouter%2F%22%2C%22resolvedPretuiRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%2C%22resolvedTestRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4202%2Ftest%2F%22%2C%22featureFlags%22%3A%7B%7D%2C%22prefixRealmURLs%22%3A%7B%22%40cardstack%2Fbase%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22%40cardstack%2Fcatalog%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2F%22%2C%22%40cardstack%2Fskills%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22%40cardstack%2Fopenrouter%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fopenrouter%2F%22%2C%22%40cardstack%2Fpretui%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%7D%2C%22defaultSystemCardId%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2FSystemCard%2Fdefault%22%2C%22defaultFieldSpecId%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2FSpec%2Ffields%2Ffield%22%7D">
15
+ <meta name="@cardstack/host/config/environment" content="%7B%22modulePrefix%22%3A%22%40cardstack%2Fhost%22%2C%22environment%22%3A%22development%22%2C%22hostedEnvironment%22%3A%22local%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22history%22%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%220.0.0%2Bdce2eeaf%22%7D%2C%22ember-cli-mirage%22%3A%7B%22enabled%22%3Afalse%7D%2C%22logLevels%22%3A%22*%3Dinfo%2Cmatrix%3Dinfo%2Crealm%3Aevents%3Ddebug%22%2C%22matrixURL%22%3A%22http%3A%2F%2Flocalhost%3A8008%22%2C%22matrixServerName%22%3A%22localhost%22%2C%22autoSaveDelayMs%22%3A500%2C%22monacoDebounceMs%22%3A500%2C%22monacoCursorDebounceMs%22%3A200%2C%22serverEchoDebounceMs%22%3A5000%2C%22loginMessageTimeoutMs%22%3A1000%2C%22minSaveTaskDurationMs%22%3A1000%2C%22cardRenderTimeout%22%3A30000%2C%22cardSizeLimitBytes%22%3A524288%2C%22fileSizeLimitBytes%22%3A5242880%2C%22audioSizeLimitBytes%22%3A20971520%2C%22videoSizeLimitBytes%22%3A52428800%2C%22iconsURL%22%3A%22http%3A%2F%2Flocalhost%3A4206%22%2C%22secureOriginURL%22%3A%22https%3A%2F%2Flocalhost%3A4208%2Fsecure%22%2C%22publishedRealmBoxelSpaceDomain%22%3A%22localhost%3A4201%22%2C%22publishedRealmBoxelSiteDomain%22%3A%22localhost%3A4201%22%2C%22hostsOwnAssets%22%3Atrue%2C%22hostRoutingMap%22%3A%5B%5D%2C%22realmServerURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2F%22%2C%22resolvedBaseRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22resolvedCatalogRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2F%22%2C%22resolvedSkillsRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22resolvedOpenRouterRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fopenrouter%2F%22%2C%22resolvedPretuiRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%2C%22resolvedTestRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4202%2Ftest%2F%22%2C%22featureFlags%22%3A%7B%7D%2C%22prefixRealmURLs%22%3A%7B%22%40cardstack%2Fbase%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22%40cardstack%2Fcatalog%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2F%22%2C%22%40cardstack%2Fskills%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22%40cardstack%2Fopenrouter%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fopenrouter%2F%22%2C%22%40cardstack%2Fpretui%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%7D%2C%22defaultSystemCardId%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2FSystemCard%2Fdefault%22%2C%22defaultFieldSpecId%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2FSpec%2Ffields%2Ffield%22%7D">
16
16
 
17
17
  <script>
18
18
  // Resolve dynamic-import chunk URLs against the host's distURL rather
@@ -49,7 +49,7 @@
49
49
  <meta data-boxel-head-start="">
50
50
  <title>Boxel</title>
51
51
  <meta data-boxel-head-end="">
52
- <script type="module" crossorigin="" src="/assets/main-CL6WYORU.js"></script>
52
+ <script type="module" crossorigin="" src="/assets/main-Th6TkaXh.js"></script>
53
53
  <link rel="modulepreload" crossorigin="" href="/assets/chunk-Rp0pCe6z.js">
54
54
  <link rel="modulepreload" crossorigin="" href="/assets/preload-helper-CKDH5-7N.js">
55
55
  <link rel="modulepreload" crossorigin="" href="/assets/index-esm-CUymiD6S.js">
@@ -164,7 +164,7 @@
164
164
  <link rel="modulepreload" crossorigin="" href="/assets/set-active-llm-tVnpdXU4.js">
165
165
  <link rel="modulepreload" crossorigin="" href="/assets/show-file-DBGgZls2.js">
166
166
  <link rel="modulepreload" crossorigin="" href="/assets/update-room-skills-CR4AzfE1.js">
167
- <link rel="modulepreload" crossorigin="" href="/assets/run-realm-code-BCbAj6ZU.js">
167
+ <link rel="modulepreload" crossorigin="" href="/assets/run-realm-code-WsTalbNy.js">
168
168
  <link rel="modulepreload" crossorigin="" href="/assets/check-correctness-ChVCz7lq.js">
169
169
  <link rel="modulepreload" crossorigin="" href="/assets/send-ai-assistant-message-Dzag6qpH.js">
170
170
  <link rel="modulepreload" crossorigin="" href="/assets/read-source-B1aXSHg6.js">
@@ -245,8 +245,8 @@
245
245
  <link rel="modulepreload" crossorigin="" href="/assets/unpublish-realm-D6MGknxX.js">
246
246
  <link rel="modulepreload" crossorigin="" href="/assets/validate-realm-DLtQHJPK.js">
247
247
  <link rel="modulepreload" crossorigin="" href="/assets/view-visually-DYQAUTpM.js">
248
- <link rel="modulepreload" crossorigin="" href="/assets/tools-D-uShEr3.js">
249
- <link rel="modulepreload" crossorigin="" href="/assets/externals-BnJo838b.js">
248
+ <link rel="modulepreload" crossorigin="" href="/assets/tools-BIhB57BB.js">
249
+ <link rel="modulepreload" crossorigin="" href="/assets/externals-wVTxNrdG.js">
250
250
  <link rel="modulepreload" crossorigin="" href="/assets/render-service-DKSjlYgZ.js">
251
251
  <link rel="modulepreload" crossorigin="" href="/assets/buffer-DQZcL7h7.js">
252
252
  <link rel="modulepreload" crossorigin="" href="/assets/perform-g9ba6YNZ.js">
@@ -293,12 +293,12 @@
293
293
  <link rel="modulepreload" crossorigin="" href="/assets/realm-dropdown-39bbqOQ-.js">
294
294
  <link rel="modulepreload" crossorigin="" href="/assets/alert-triangle-C7tx0ryM.js">
295
295
  <link rel="modulepreload" crossorigin="" href="/assets/file-settings-k_hc7Ihc.js">
296
- <link rel="modulepreload" crossorigin="" href="/assets/modal-container-YpGh-tkA.js">
296
+ <link rel="modulepreload" crossorigin="" href="/assets/modal-container-CjnDLCtj.js">
297
297
  <link rel="modulepreload" crossorigin="" href="/assets/item-container-Bz_sEBsB.js">
298
- <link rel="modulepreload" crossorigin="" href="/assets/workspace-UMec6T3x.js">
299
- <link rel="modulepreload" crossorigin="" href="/assets/add-workspace-JYBGLgLZ.js">
298
+ <link rel="modulepreload" crossorigin="" href="/assets/workspace-rCACd5qW.js">
299
+ <link rel="modulepreload" crossorigin="" href="/assets/add-workspace-1zRdl8zI.js">
300
300
  <link rel="modulepreload" crossorigin="" href="/assets/button-PKDCsv-a.js">
301
- <link rel="modulepreload" crossorigin="" href="/assets/workspace-chooser-Cu2Ytanf.js">
301
+ <link rel="modulepreload" crossorigin="" href="/assets/workspace-chooser-BoxgLo8E.js">
302
302
  <link rel="modulepreload" crossorigin="" href="/assets/search-result-header-BSU710vm.js">
303
303
  <link rel="modulepreload" crossorigin="" href="/assets/pencil-DoW9durd.js">
304
304
  <link rel="modulepreload" crossorigin="" href="/assets/result-tile-B55rmtJz.js">
@@ -312,18 +312,18 @@
312
312
  <link rel="modulepreload" crossorigin="" href="/assets/mini-CwmmIgFz.js">
313
313
  <link rel="modulepreload" crossorigin="" href="/assets/trusted-message-origin-C7kiFszV.js">
314
314
  <link rel="modulepreload" crossorigin="" href="/assets/login-CJp8KV9r.js">
315
- <link rel="modulepreload" crossorigin="" href="/assets/profile-settings-modal-r1hvskUn.js">
315
+ <link rel="modulepreload" crossorigin="" href="/assets/profile-settings-modal-BItESTfo.js">
316
316
  <link rel="modulepreload" crossorigin="" href="/assets/file-tree-from-index-BMpypZUK.js">
317
317
  <link rel="modulepreload" crossorigin="" href="/assets/panel-BfrYQq6a.js">
318
318
  <link rel="modulepreload" crossorigin="" href="/assets/mini-Do0iLxFz.js">
319
319
  <link rel="modulepreload" crossorigin="" href="/assets/preview-3ZknC4s5.js">
320
320
  <link rel="modulepreload" crossorigin="" href="/assets/pane-1RfYtjWd.js">
321
- <link rel="modulepreload" crossorigin="" href="/assets/modal-BwTd4bsz.js">
321
+ <link rel="modulepreload" crossorigin="" href="/assets/modal-66tRI_Y_.js">
322
322
  <link rel="modulepreload" crossorigin="" href="/assets/account-switch-failed-CtQVVSVN.js">
323
323
  <link rel="modulepreload" crossorigin="" href="/assets/truncate-CWZBH91e.js">
324
324
  <link rel="modulepreload" crossorigin="" href="/assets/card-error-detail-C0Y5yUyh.js">
325
325
  <link rel="modulepreload" crossorigin="" href="/assets/card-error-CmXQlsAS.js">
326
- <link rel="modulepreload" crossorigin="" href="/assets/create-file-modal-qd-wHuoI.js">
326
+ <link rel="modulepreload" crossorigin="" href="/assets/create-file-modal-YsrXldcb.js">
327
327
  <link rel="modulepreload" crossorigin="" href="/assets/overlays-CMZM77go.js">
328
328
  <link rel="modulepreload" crossorigin="" href="/assets/rendered-markdown-C2Qzxs83.js">
329
329
  <link rel="modulepreload" crossorigin="" href="/assets/markdown-preview-DJFLTOWd.js">
@@ -334,7 +334,7 @@
334
334
  <link rel="modulepreload" crossorigin="" href="/assets/last-modified-date-oqmDyENj.js">
335
335
  <link rel="modulepreload" crossorigin="" href="/assets/boxel-formatter-CRWFXHNL.js">
336
336
  <link rel="modulepreload" crossorigin="" href="/assets/from-elsewhere-ChxbtsBa.js">
337
- <link rel="modulepreload" crossorigin="" href="/assets/container-Cg9tfMT-.js">
337
+ <link rel="modulepreload" crossorigin="" href="/assets/container-aEzZntti.js">
338
338
  <link rel="modulepreload" crossorigin="" href="/assets/browser-queue-dKdR5B6j.js">
339
339
  <link rel="modulepreload" crossorigin="" href="/assets/bundled-base-2icOkazR.js">
340
340
  <link rel="modulepreload" crossorigin="" href="/assets/cli-auth-loopback-NNHlT9em.js">
@@ -354,7 +354,7 @@
354
354
  <link rel="modulepreload" crossorigin="" href="/assets/card-service-BzeiOvyI.js">
355
355
  <link rel="modulepreload" crossorigin="" href="/assets/host-mode-service-CI0llN9l.js">
356
356
  <link rel="modulepreload" crossorigin="" href="/assets/render-diagnostics-CztktD_I.js">
357
- <link rel="modulepreload" crossorigin="" href="/assets/app-BVQ3DVX4.js">
357
+ <link rel="modulepreload" crossorigin="" href="/assets/app-CR7E2df0.js">
358
358
  <link rel="stylesheet" crossorigin="" href="/assets/components-ChXgqvAo.css">
359
359
  <link rel="stylesheet" crossorigin="" href="/assets/signed-capture-BzA7ETjL.css">
360
360
  <link rel="stylesheet" crossorigin="" href="/assets/submode-switcher-eD-kKcpB.css">
@@ -13,12 +13,12 @@
13
13
  boxelComponentL3, boxelComponentL4;
14
14
  </style>
15
15
 
16
- <meta name="@cardstack/host/config/environment" content="%7B%22modulePrefix%22%3A%22%40cardstack%2Fhost%22%2C%22environment%22%3A%22test%22%2C%22hostedEnvironment%22%3A%22local%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22none%22%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%220.0.0%2Ba793917b%22%2C%22LOG_ACTIVE_GENERATION%22%3Afalse%2C%22LOG_VIEW_LOOKUPS%22%3Afalse%2C%22rootElement%22%3A%22%23ember-testing%22%2C%22autoboot%22%3Afalse%7D%2C%22ember-cli-mirage%22%3A%7B%22enabled%22%3Afalse%7D%2C%22logLevels%22%3A%22*%3Dinfo%2Cmatrix%3Dinfo%2Crealm%3Aevents%3Ddebug%22%2C%22matrixURL%22%3A%22http%3A%2F%2Flocalhost%3A8008%22%2C%22matrixServerName%22%3A%22localhost%22%2C%22autoSaveDelayMs%22%3A0%2C%22monacoDebounceMs%22%3A0%2C%22monacoCursorDebounceMs%22%3A0%2C%22serverEchoDebounceMs%22%3A0%2C%22loginMessageTimeoutMs%22%3A0%2C%22minSaveTaskDurationMs%22%3A0%2C%22cardRenderTimeout%22%3A30000%2C%22cardSizeLimitBytes%22%3A524288%2C%22fileSizeLimitBytes%22%3A5242880%2C%22audioSizeLimitBytes%22%3A20971520%2C%22videoSizeLimitBytes%22%3A52428800%2C%22iconsURL%22%3A%22http%3A%2F%2Flocalhost%3A4206%22%2C%22secureOriginURL%22%3A%22https%3A%2F%2Flocalhost%3A4208%2Fsecure%22%2C%22publishedRealmBoxelSpaceDomain%22%3A%22localhost%3A4201%22%2C%22publishedRealmBoxelSiteDomain%22%3A%22localhost%3A4201%22%2C%22hostsOwnAssets%22%3Atrue%2C%22hostRoutingMap%22%3A%5B%5D%2C%22realmServerURL%22%3A%22http%3A%2F%2Ftest-realm%22%2C%22resolvedBaseRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22resolvedSkillsRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22resolvedPretuiRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%2C%22resolvedTestRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4202%2Ftest%2F%22%2C%22featureFlags%22%3A%7B%7D%2C%22prefixRealmURLs%22%3A%7B%22%40cardstack%2Fbase%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22%40cardstack%2Fcatalog%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2F%22%2C%22%40cardstack%2Fskills%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22%40cardstack%2Fopenrouter%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fopenrouter%2F%22%2C%22%40cardstack%2Fpretui%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%7D%2C%22sqlSchema%22%3A%22--%20This%20is%20auto-generated%20by%20packages%2Frealm-server%2Fscripts%2Fconvert-to-sqlite.ts%5Cn--%20Please%20don't%20directly%20modify%20this%20file%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20anonymous_grant_rate_limits%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20grant_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20client_ip%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20window_start%20NOT%20NULL%2C%5Cn%20%20%20window_seconds%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20count%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20expires_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20grant_id%2C%20client_ip%2C%20window_start%2C%20window_seconds%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20bot_commands%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20bot_id%20NOT%20NULL%2C%5Cn%20%20%20command%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20command_filter%20BLOB%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20bot_registrations%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20boxel_index%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20pristine_doc%20BLOB%2C%5Cn%20%20%20search_doc%20BLOB%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20deps%20BLOB%20DEFAULT%20'%5B%5D'%2C%5Cn%20%20%20types%20BLOB%2C%5Cn%20%20%20indexed_at%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20last_modified%2C%5Cn%20%20%20display_names%20BLOB%2C%5Cn%20%20%20resource_created_at%2C%5Cn%20%20%20icon_html%20TEXT%2C%5Cn%20%20%20has_error%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20host_shell_generation%20INTEGER%2C%5Cn%20%20%20source_content_hash%20TEXT%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%2C%20realm_url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20boxel_index_pending%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20pristine_doc%20BLOB%2C%5Cn%20%20%20search_doc%20BLOB%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20deps%20BLOB%20DEFAULT%20'%5B%5D'%2C%5Cn%20%20%20types%20BLOB%2C%5Cn%20%20%20indexed_at%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20last_modified%2C%5Cn%20%20%20display_names%20BLOB%2C%5Cn%20%20%20resource_created_at%2C%5Cn%20%20%20icon_html%20TEXT%2C%5Cn%20%20%20has_error%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20host_shell_generation%20INTEGER%2C%5Cn%20%20%20source_content_hash%20TEXT%2C%5Cn%20%20%20job_id%20INTEGER%2C%5Cn%20%20%20staging_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20staging_id%2C%20url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20incoming_webhooks%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20webhook_path%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20verification_type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20verification_config%20BLOB%20NOT%20NULL%2C%5Cn%20%20%20signing_secret%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20media_cache_ledger%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20capture_spec_hash%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20object_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_content_hash%20TEXT%2C%5Cn%20%20%20lane%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20content_type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20size_bytes%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20last_accessed_at%20NOT%20NULL%2C%5Cn%20%20%20width%20INTEGER%2C%5Cn%20%20%20height%20INTEGER%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20rendered_as%20TEXT%20DEFAULT%20''%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20source_url%2C%20capture_spec_hash%2C%20source_generation%2C%20rendered_as%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20module_transpile_cache%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20canonical_path%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20body%20TEXT%2C%5Cn%20%20%20headers%20BLOB%2C%5Cn%20%20%20dependency_keys%20BLOB%2C%5Cn%20%20%20generation%20DEFAULT%200%20NOT%20NULL%2C%5Cn%20%20%20created_at%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20canonical_path%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20modules%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20cache_scope%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20auth_user_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20resolved_realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20definitions%20BLOB%2C%5Cn%20%20%20deps%20BLOB%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20created_at%2C%5Cn%20%20%20file_alias%20TEXT%2C%5Cn%20%20%20url_hash%20TEXT%20GENERATED%20ALWAYS%20AS%20(url)%20STORED%20NOT%20NULL%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%2C%20cache_scope%2C%20auth_user_id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20prerendered_html%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20fitted_html%20BLOB%2C%5Cn%20%20%20embedded_html%20BLOB%2C%5Cn%20%20%20atom_html%20TEXT%2C%5Cn%20%20%20head_html%20TEXT%2C%5Cn%20%20%20isolated_html%20TEXT%2C%5Cn%20%20%20markdown%20TEXT%2C%5Cn%20%20%20deps%20BLOB%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20rendered_at%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20captures%20BLOB%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%2C%20realm_url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20prerendered_html_pending%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20fitted_html%20BLOB%2C%5Cn%20%20%20embedded_html%20BLOB%2C%5Cn%20%20%20atom_html%20TEXT%2C%5Cn%20%20%20head_html%20TEXT%2C%5Cn%20%20%20isolated_html%20TEXT%2C%5Cn%20%20%20markdown%20TEXT%2C%5Cn%20%20%20deps%20BLOB%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20rendered_at%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20captures%20BLOB%2C%5Cn%20%20%20job_id%20INTEGER%2C%5Cn%20%20%20staging_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20staging_id%2C%20url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20rate_limit_buckets%20(%5Cn%20%20%20bucket_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20tokens%20NOT%20NULL%2C%5Cn%20%20%20refilled_at%20NOT%20NULL%2C%5Cn%20%20%20expires_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20bucket_key%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20rate_limit_budgets%20(%5Cn%20%20%20budget_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20period%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20period_start%20NOT%20NULL%2C%5Cn%20%20%20count%20NOT%20NULL%2C%5Cn%20%20%20expires_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20budget_key%2C%20period%2C%20period_start%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_file_meta%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_path%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20content_hash%20TEXT%2C%5Cn%20%20%20content_size%20INTEGER%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20file_path%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_generations%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20current_generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20loader_epoch%20TEXT%20DEFAULT%20'0'%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_index_commits%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20base_generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20pass_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20job_id%20INTEGER%2C%5Cn%20%20%20urls%20BLOB%2C%5Cn%20%20%20render_only_urls%20BLOB%2C%5Cn%20%20%20full_realm%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20committed_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20generation%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_meta%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20value%20BLOB%20NOT%20NULL%2C%5Cn%20%20%20indexed_at%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20generation%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_metadata%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20show_as_catalog%20BOOLEAN%2C%5Cn%20%20%20publishable%20BOOLEAN%2C%5Cn%20%20%20created_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20archived_at%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_registry%20(%5Cn%20%20%20id%20DEFAULT%20(hex(randomblob(16)))%20NOT%20NULL%2C%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20kind%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20disk_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20owner_username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_url%20TEXT%2C%5Cn%20%20%20last_published_at%2C%5Cn%20%20%20pinned%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20created_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_type_generations%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20index_generation%20INTEGER%20DEFAULT%200%20NOT%20NULL%2C%5Cn%20%20%20html_generation%20INTEGER%20DEFAULT%200%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20type_key%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_user_permissions%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20read%20BOOLEAN%20NOT%20NULL%2C%5Cn%20%20%20write%20BOOLEAN%20NOT%20NULL%2C%5Cn%20%20%20realm_owner%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20username%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20scoped_css%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20hash%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20css%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20last_interned_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20hash%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20unlisted_realm_paths%20(%5Cn%20%20%20id%20DEFAULT%20(hex(randomblob(16)))%20NOT%20NULL%2C%5Cn%20%20%20source_realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20slug%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20owner_user_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20webhook_commands%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20incoming_webhook_id%20NOT%20NULL%2C%5Cn%20%20%20command%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20command_filter%20BLOB%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%22%2C%22defaultSystemCardId%22%3A%22http%3A%2F%2Ftest-realm%2Ftest%2FSystemCard%2Fdefault%22%2C%22defaultFieldSpecId%22%3A%22http%3A%2F%2Ftest-realm%2Ftest%2Ffields%2Ffield%22%7D">
16
+ <meta name="@cardstack/host/config/environment" content="%7B%22modulePrefix%22%3A%22%40cardstack%2Fhost%22%2C%22environment%22%3A%22test%22%2C%22hostedEnvironment%22%3A%22local%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22none%22%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%220.0.0%2Bdce2eeaf%22%2C%22LOG_ACTIVE_GENERATION%22%3Afalse%2C%22LOG_VIEW_LOOKUPS%22%3Afalse%2C%22rootElement%22%3A%22%23ember-testing%22%2C%22autoboot%22%3Afalse%7D%2C%22ember-cli-mirage%22%3A%7B%22enabled%22%3Afalse%7D%2C%22logLevels%22%3A%22*%3Dinfo%2Cmatrix%3Dinfo%2Crealm%3Aevents%3Ddebug%22%2C%22matrixURL%22%3A%22http%3A%2F%2Flocalhost%3A8008%22%2C%22matrixServerName%22%3A%22localhost%22%2C%22autoSaveDelayMs%22%3A0%2C%22monacoDebounceMs%22%3A0%2C%22monacoCursorDebounceMs%22%3A0%2C%22serverEchoDebounceMs%22%3A0%2C%22loginMessageTimeoutMs%22%3A0%2C%22minSaveTaskDurationMs%22%3A0%2C%22cardRenderTimeout%22%3A30000%2C%22cardSizeLimitBytes%22%3A524288%2C%22fileSizeLimitBytes%22%3A5242880%2C%22audioSizeLimitBytes%22%3A20971520%2C%22videoSizeLimitBytes%22%3A52428800%2C%22iconsURL%22%3A%22http%3A%2F%2Flocalhost%3A4206%22%2C%22secureOriginURL%22%3A%22https%3A%2F%2Flocalhost%3A4208%2Fsecure%22%2C%22publishedRealmBoxelSpaceDomain%22%3A%22localhost%3A4201%22%2C%22publishedRealmBoxelSiteDomain%22%3A%22localhost%3A4201%22%2C%22hostsOwnAssets%22%3Atrue%2C%22hostRoutingMap%22%3A%5B%5D%2C%22realmServerURL%22%3A%22http%3A%2F%2Ftest-realm%22%2C%22resolvedBaseRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22resolvedSkillsRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22resolvedPretuiRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%2C%22resolvedTestRealmURL%22%3A%22https%3A%2F%2Flocalhost%3A4202%2Ftest%2F%22%2C%22featureFlags%22%3A%7B%7D%2C%22prefixRealmURLs%22%3A%7B%22%40cardstack%2Fbase%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fbase%2F%22%2C%22%40cardstack%2Fcatalog%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fcatalog%2F%22%2C%22%40cardstack%2Fskills%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fskills%2F%22%2C%22%40cardstack%2Fopenrouter%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fopenrouter%2F%22%2C%22%40cardstack%2Fpretui%2F%22%3A%22https%3A%2F%2Flocalhost%3A4201%2Fpretui%2F%22%7D%2C%22sqlSchema%22%3A%22--%20This%20is%20auto-generated%20by%20packages%2Frealm-server%2Fscripts%2Fconvert-to-sqlite.ts%5Cn--%20Please%20don't%20directly%20modify%20this%20file%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20anonymous_grant_rate_limits%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20grant_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20client_ip%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20window_start%20NOT%20NULL%2C%5Cn%20%20%20window_seconds%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20count%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20expires_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20grant_id%2C%20client_ip%2C%20window_start%2C%20window_seconds%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20bot_commands%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20bot_id%20NOT%20NULL%2C%5Cn%20%20%20command%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20command_filter%20BLOB%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20bot_registrations%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20boxel_index%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20pristine_doc%20BLOB%2C%5Cn%20%20%20search_doc%20BLOB%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20deps%20BLOB%20DEFAULT%20'%5B%5D'%2C%5Cn%20%20%20types%20BLOB%2C%5Cn%20%20%20indexed_at%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20last_modified%2C%5Cn%20%20%20display_names%20BLOB%2C%5Cn%20%20%20resource_created_at%2C%5Cn%20%20%20icon_html%20TEXT%2C%5Cn%20%20%20has_error%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20host_shell_generation%20INTEGER%2C%5Cn%20%20%20source_content_hash%20TEXT%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%2C%20realm_url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20boxel_index_pending%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20pristine_doc%20BLOB%2C%5Cn%20%20%20search_doc%20BLOB%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20deps%20BLOB%20DEFAULT%20'%5B%5D'%2C%5Cn%20%20%20types%20BLOB%2C%5Cn%20%20%20indexed_at%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20last_modified%2C%5Cn%20%20%20display_names%20BLOB%2C%5Cn%20%20%20resource_created_at%2C%5Cn%20%20%20icon_html%20TEXT%2C%5Cn%20%20%20has_error%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20host_shell_generation%20INTEGER%2C%5Cn%20%20%20source_content_hash%20TEXT%2C%5Cn%20%20%20job_id%20INTEGER%2C%5Cn%20%20%20staging_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20staging_id%2C%20url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20incoming_webhooks%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20webhook_path%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20verification_type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20verification_config%20BLOB%20NOT%20NULL%2C%5Cn%20%20%20signing_secret%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20media_cache_ledger%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20capture_spec_hash%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20object_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_content_hash%20TEXT%2C%5Cn%20%20%20lane%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20content_type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20size_bytes%20NOT%20NULL%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20last_accessed_at%20NOT%20NULL%2C%5Cn%20%20%20width%20INTEGER%2C%5Cn%20%20%20height%20INTEGER%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20rendered_as%20TEXT%20DEFAULT%20''%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20source_url%2C%20capture_spec_hash%2C%20source_generation%2C%20rendered_as%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20module_transpile_cache%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20canonical_path%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20body%20TEXT%2C%5Cn%20%20%20headers%20BLOB%2C%5Cn%20%20%20dependency_keys%20BLOB%2C%5Cn%20%20%20generation%20DEFAULT%200%20NOT%20NULL%2C%5Cn%20%20%20created_at%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20canonical_path%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20modules%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20cache_scope%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20auth_user_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20resolved_realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20definitions%20BLOB%2C%5Cn%20%20%20deps%20BLOB%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20created_at%2C%5Cn%20%20%20file_alias%20TEXT%2C%5Cn%20%20%20url_hash%20TEXT%20GENERATED%20ALWAYS%20AS%20(url)%20STORED%20NOT%20NULL%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%2C%20cache_scope%2C%20auth_user_id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20prerendered_html%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20fitted_html%20BLOB%2C%5Cn%20%20%20embedded_html%20BLOB%2C%5Cn%20%20%20atom_html%20TEXT%2C%5Cn%20%20%20head_html%20TEXT%2C%5Cn%20%20%20isolated_html%20TEXT%2C%5Cn%20%20%20markdown%20TEXT%2C%5Cn%20%20%20deps%20BLOB%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20rendered_at%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20captures%20BLOB%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%2C%20realm_url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20prerendered_html_pending%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_alias%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20fitted_html%20BLOB%2C%5Cn%20%20%20embedded_html%20BLOB%2C%5Cn%20%20%20atom_html%20TEXT%2C%5Cn%20%20%20head_html%20TEXT%2C%5Cn%20%20%20isolated_html%20TEXT%2C%5Cn%20%20%20markdown%20TEXT%2C%5Cn%20%20%20deps%20BLOB%2C%5Cn%20%20%20last_known_good_deps%20BLOB%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20is_deleted%20BOOLEAN%2C%5Cn%20%20%20error_doc%20BLOB%2C%5Cn%20%20%20rendered_at%2C%5Cn%20%20%20diagnostics%20BLOB%2C%5Cn%20%20%20captures%20BLOB%2C%5Cn%20%20%20job_id%20INTEGER%2C%5Cn%20%20%20staging_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20staging_id%2C%20url%2C%20type%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20rate_limit_buckets%20(%5Cn%20%20%20bucket_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20tokens%20NOT%20NULL%2C%5Cn%20%20%20refilled_at%20NOT%20NULL%2C%5Cn%20%20%20expires_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20bucket_key%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20rate_limit_budgets%20(%5Cn%20%20%20budget_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20period%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20period_start%20NOT%20NULL%2C%5Cn%20%20%20count%20NOT%20NULL%2C%5Cn%20%20%20expires_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20budget_key%2C%20period%2C%20period_start%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_file_meta%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20file_path%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20content_hash%20TEXT%2C%5Cn%20%20%20content_size%20INTEGER%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20file_path%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_generations%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20current_generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20loader_epoch%20TEXT%20DEFAULT%20'0'%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_index_commits%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20base_generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20pass_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20job_id%20INTEGER%2C%5Cn%20%20%20urls%20BLOB%2C%5Cn%20%20%20render_only_urls%20BLOB%2C%5Cn%20%20%20full_realm%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20committed_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20generation%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_meta%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20generation%20INTEGER%20NOT%20NULL%2C%5Cn%20%20%20value%20BLOB%20NOT%20NULL%2C%5Cn%20%20%20indexed_at%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20generation%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_metadata%20(%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20show_as_catalog%20BOOLEAN%2C%5Cn%20%20%20publishable%20BOOLEAN%2C%5Cn%20%20%20created_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20archived_at%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20url%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_registry%20(%5Cn%20%20%20id%20DEFAULT%20(hex(randomblob(16)))%20NOT%20NULL%2C%5Cn%20%20%20url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20kind%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20disk_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20owner_username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20source_url%20TEXT%2C%5Cn%20%20%20last_published_at%2C%5Cn%20%20%20pinned%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20created_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_type_generations%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20type_key%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20index_generation%20INTEGER%20DEFAULT%200%20NOT%20NULL%2C%5Cn%20%20%20html_generation%20INTEGER%20DEFAULT%200%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20type_key%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20realm_user_permissions%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20username%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20read%20BOOLEAN%20NOT%20NULL%2C%5Cn%20%20%20write%20BOOLEAN%20NOT%20NULL%2C%5Cn%20%20%20realm_owner%20BOOLEAN%20DEFAULT%20false%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20username%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20scoped_css%20(%5Cn%20%20%20realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20hash%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20css%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20last_interned_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20realm_url%2C%20hash%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20unlisted_realm_paths%20(%5Cn%20%20%20id%20DEFAULT%20(hex(randomblob(16)))%20NOT%20NULL%2C%5Cn%20%20%20source_realm_url%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20slug%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20owner_user_id%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20created_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20DEFAULT%20CURRENT_TIMESTAMP%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%5Cn%5Cn%20CREATE%20TABLE%20IF%20NOT%20EXISTS%20webhook_commands%20(%5Cn%20%20%20id%20NOT%20NULL%2C%5Cn%20%20%20incoming_webhook_id%20NOT%20NULL%2C%5Cn%20%20%20command%20TEXT%20NOT%20NULL%2C%5Cn%20%20%20command_filter%20BLOB%2C%5Cn%20%20%20created_at%20NOT%20NULL%2C%5Cn%20%20%20updated_at%20NOT%20NULL%2C%5Cn%20%20%20PRIMARY%20KEY%20(%20id%20)%20%5Cn)%3B%22%2C%22defaultSystemCardId%22%3A%22http%3A%2F%2Ftest-realm%2Ftest%2FSystemCard%2Fdefault%22%2C%22defaultFieldSpecId%22%3A%22http%3A%2F%2Ftest-realm%2Ftest%2Ffields%2Ffield%22%7D">
17
17
 
18
18
  <link rel="stylesheet" href="/@embroider/virtual/app.css">
19
19
 
20
20
 
21
- <script type="module" crossorigin="" src="/assets/tests-4eXqEcYs.js"></script>
21
+ <script type="module" crossorigin="" src="/assets/tests-CLX9KyWy.js"></script>
22
22
  <link rel="modulepreload" crossorigin="" href="/assets/chunk-Rp0pCe6z.js">
23
23
  <link rel="modulepreload" crossorigin="" href="/assets/preload-helper-CKDH5-7N.js">
24
24
  <link rel="modulepreload" crossorigin="" href="/assets/index-esm-CUymiD6S.js">
@@ -133,7 +133,7 @@
133
133
  <link rel="modulepreload" crossorigin="" href="/assets/set-active-llm-tVnpdXU4.js">
134
134
  <link rel="modulepreload" crossorigin="" href="/assets/show-file-DBGgZls2.js">
135
135
  <link rel="modulepreload" crossorigin="" href="/assets/update-room-skills-CR4AzfE1.js">
136
- <link rel="modulepreload" crossorigin="" href="/assets/run-realm-code-BCbAj6ZU.js">
136
+ <link rel="modulepreload" crossorigin="" href="/assets/run-realm-code-WsTalbNy.js">
137
137
  <link rel="modulepreload" crossorigin="" href="/assets/check-correctness-ChVCz7lq.js">
138
138
  <link rel="modulepreload" crossorigin="" href="/assets/send-ai-assistant-message-Dzag6qpH.js">
139
139
  <link rel="modulepreload" crossorigin="" href="/assets/read-source-B1aXSHg6.js">
@@ -214,8 +214,8 @@
214
214
  <link rel="modulepreload" crossorigin="" href="/assets/unpublish-realm-D6MGknxX.js">
215
215
  <link rel="modulepreload" crossorigin="" href="/assets/validate-realm-DLtQHJPK.js">
216
216
  <link rel="modulepreload" crossorigin="" href="/assets/view-visually-DYQAUTpM.js">
217
- <link rel="modulepreload" crossorigin="" href="/assets/tools-D-uShEr3.js">
218
- <link rel="modulepreload" crossorigin="" href="/assets/externals-BnJo838b.js">
217
+ <link rel="modulepreload" crossorigin="" href="/assets/tools-BIhB57BB.js">
218
+ <link rel="modulepreload" crossorigin="" href="/assets/externals-wVTxNrdG.js">
219
219
  <link rel="modulepreload" crossorigin="" href="/assets/render-service-DKSjlYgZ.js">
220
220
  <link rel="modulepreload" crossorigin="" href="/assets/buffer-DQZcL7h7.js">
221
221
  <link rel="modulepreload" crossorigin="" href="/assets/perform-g9ba6YNZ.js">
@@ -262,12 +262,12 @@
262
262
  <link rel="modulepreload" crossorigin="" href="/assets/realm-dropdown-39bbqOQ-.js">
263
263
  <link rel="modulepreload" crossorigin="" href="/assets/alert-triangle-C7tx0ryM.js">
264
264
  <link rel="modulepreload" crossorigin="" href="/assets/file-settings-k_hc7Ihc.js">
265
- <link rel="modulepreload" crossorigin="" href="/assets/modal-container-YpGh-tkA.js">
265
+ <link rel="modulepreload" crossorigin="" href="/assets/modal-container-CjnDLCtj.js">
266
266
  <link rel="modulepreload" crossorigin="" href="/assets/item-container-Bz_sEBsB.js">
267
- <link rel="modulepreload" crossorigin="" href="/assets/workspace-UMec6T3x.js">
268
- <link rel="modulepreload" crossorigin="" href="/assets/add-workspace-JYBGLgLZ.js">
267
+ <link rel="modulepreload" crossorigin="" href="/assets/workspace-rCACd5qW.js">
268
+ <link rel="modulepreload" crossorigin="" href="/assets/add-workspace-1zRdl8zI.js">
269
269
  <link rel="modulepreload" crossorigin="" href="/assets/button-PKDCsv-a.js">
270
- <link rel="modulepreload" crossorigin="" href="/assets/workspace-chooser-Cu2Ytanf.js">
270
+ <link rel="modulepreload" crossorigin="" href="/assets/workspace-chooser-BoxgLo8E.js">
271
271
  <link rel="modulepreload" crossorigin="" href="/assets/search-result-header-BSU710vm.js">
272
272
  <link rel="modulepreload" crossorigin="" href="/assets/pencil-DoW9durd.js">
273
273
  <link rel="modulepreload" crossorigin="" href="/assets/result-tile-B55rmtJz.js">
@@ -281,18 +281,18 @@
281
281
  <link rel="modulepreload" crossorigin="" href="/assets/mini-CwmmIgFz.js">
282
282
  <link rel="modulepreload" crossorigin="" href="/assets/trusted-message-origin-C7kiFszV.js">
283
283
  <link rel="modulepreload" crossorigin="" href="/assets/login-CJp8KV9r.js">
284
- <link rel="modulepreload" crossorigin="" href="/assets/profile-settings-modal-r1hvskUn.js">
284
+ <link rel="modulepreload" crossorigin="" href="/assets/profile-settings-modal-BItESTfo.js">
285
285
  <link rel="modulepreload" crossorigin="" href="/assets/file-tree-from-index-BMpypZUK.js">
286
286
  <link rel="modulepreload" crossorigin="" href="/assets/panel-BfrYQq6a.js">
287
287
  <link rel="modulepreload" crossorigin="" href="/assets/mini-Do0iLxFz.js">
288
288
  <link rel="modulepreload" crossorigin="" href="/assets/preview-3ZknC4s5.js">
289
289
  <link rel="modulepreload" crossorigin="" href="/assets/pane-1RfYtjWd.js">
290
- <link rel="modulepreload" crossorigin="" href="/assets/modal-BwTd4bsz.js">
290
+ <link rel="modulepreload" crossorigin="" href="/assets/modal-66tRI_Y_.js">
291
291
  <link rel="modulepreload" crossorigin="" href="/assets/account-switch-failed-CtQVVSVN.js">
292
292
  <link rel="modulepreload" crossorigin="" href="/assets/truncate-CWZBH91e.js">
293
293
  <link rel="modulepreload" crossorigin="" href="/assets/card-error-detail-C0Y5yUyh.js">
294
294
  <link rel="modulepreload" crossorigin="" href="/assets/card-error-CmXQlsAS.js">
295
- <link rel="modulepreload" crossorigin="" href="/assets/create-file-modal-qd-wHuoI.js">
295
+ <link rel="modulepreload" crossorigin="" href="/assets/create-file-modal-YsrXldcb.js">
296
296
  <link rel="modulepreload" crossorigin="" href="/assets/overlays-CMZM77go.js">
297
297
  <link rel="modulepreload" crossorigin="" href="/assets/rendered-markdown-C2Qzxs83.js">
298
298
  <link rel="modulepreload" crossorigin="" href="/assets/markdown-preview-DJFLTOWd.js">
@@ -303,7 +303,7 @@
303
303
  <link rel="modulepreload" crossorigin="" href="/assets/last-modified-date-oqmDyENj.js">
304
304
  <link rel="modulepreload" crossorigin="" href="/assets/boxel-formatter-CRWFXHNL.js">
305
305
  <link rel="modulepreload" crossorigin="" href="/assets/from-elsewhere-ChxbtsBa.js">
306
- <link rel="modulepreload" crossorigin="" href="/assets/container-Cg9tfMT-.js">
306
+ <link rel="modulepreload" crossorigin="" href="/assets/container-aEzZntti.js">
307
307
  <link rel="modulepreload" crossorigin="" href="/assets/browser-queue-dKdR5B6j.js">
308
308
  <link rel="modulepreload" crossorigin="" href="/assets/bundled-base-2icOkazR.js">
309
309
  <link rel="modulepreload" crossorigin="" href="/assets/cli-auth-loopback-NNHlT9em.js">
@@ -323,7 +323,7 @@
323
323
  <link rel="modulepreload" crossorigin="" href="/assets/card-service-BzeiOvyI.js">
324
324
  <link rel="modulepreload" crossorigin="" href="/assets/host-mode-service-CI0llN9l.js">
325
325
  <link rel="modulepreload" crossorigin="" href="/assets/render-diagnostics-CztktD_I.js">
326
- <link rel="modulepreload" crossorigin="" href="/assets/app-BVQ3DVX4.js">
326
+ <link rel="modulepreload" crossorigin="" href="/assets/app-CR7E2df0.js">
327
327
  <link rel="modulepreload" crossorigin="" href="/assets/qunit-C-Foo4Nd.js">
328
328
  <link rel="modulepreload" crossorigin="" href="/assets/dist-CPfIHBla.js">
329
329
  <link rel="modulepreload" crossorigin="" href="/assets/dist-Ds4JDBNZ.js">
@@ -271,6 +271,7 @@ export declare class RunRealmCodeResult extends CardDef {
271
271
  roomChanges: string[];
272
272
  shownCard: string;
273
273
  showError: string;
274
+ get failedUiActions(): RealmCodeUiActionResult[];
274
275
  get [hasNothingToShow](): boolean;
275
276
  static embedded: any;
276
277
  }
@@ -62,6 +62,7 @@ export default class ModalContainer extends Component<Signature> {
62
62
  {{@cardContainerClass}}
63
63
  {{if (has-block "sidebar") "dialog-box--with-sidebar"}}'
64
64
  @displayBoundaries={{true}}
65
+ data-test-modal-container-box
65
66
  >
66
67
  {{#if (has-block 'sidebar')}}
67
68
  <section class='dialog-box__sidebar-header'></section>
@@ -1638,10 +1638,14 @@ function failureReport(session: RealmFsSession, error: unknown): string {
1638
1638
  log.debug(
1639
1639
  `run failed: saved=${saved.length} refusedAfterClose=${session.refusedAfterClose}: ${message}`,
1640
1640
  );
1641
+ // A thrown message is often a full sentence already; end it with one
1642
+ // period, not two.
1643
+ let trimmed = message.trimEnd();
1644
+ let sentence = /[.!?]$/.test(trimmed) ? trimmed : `${trimmed}.`;
1641
1645
  let report =
1642
1646
  saved.length > 0
1643
- ? `${message}. Files already saved by this run: ${saved.join(', ')}`
1644
- : `${message}. No file was saved.`;
1647
+ ? `${sentence} Files already saved by this run: ${saved.join(', ')}`
1648
+ : `${sentence} No file was saved.`;
1645
1649
  if (session.deleted.size > 0) {
1646
1650
  report += ` Files this run created and already deleted: ${[...session.deleted].join(', ')}`;
1647
1651
  }