@happyvertical/smrt-svelte 0.53.1 → 0.53.2

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 (254) hide show
  1. package/package.json +15 -15
  2. package/dist/__tests__/app-state.test.js +0 -156
  3. package/dist/__tests__/data-surface-bridge.test.js +0 -351
  4. package/dist/__tests__/provider-mode-harness.svelte +0 -14
  5. package/dist/__tests__/provider-mode-harness.svelte.d.ts +0 -11
  6. package/dist/__tests__/provider-mode-harness.svelte.d.ts.map +0 -1
  7. package/dist/__tests__/provider-mode-probe.svelte +0 -13
  8. package/dist/__tests__/provider-mode-probe.svelte.d.ts +0 -8
  9. package/dist/__tests__/provider-mode-probe.svelte.d.ts.map +0 -1
  10. package/dist/__tests__/provider-webmcp-harness.svelte +0 -14
  11. package/dist/__tests__/provider-webmcp-harness.svelte.d.ts +0 -8
  12. package/dist/__tests__/provider-webmcp-harness.svelte.d.ts.map +0 -1
  13. package/dist/__tests__/success-never-text.test.js +0 -100
  14. package/dist/__tests__/warm-clients.test.js +0 -186
  15. package/dist/browser-ai/adapters/llm/bitgpu-inference-backend.test.js +0 -464
  16. package/dist/browser-ai/adapters/llm/webllm-inference-backend.test.js +0 -646
  17. package/dist/browser-ai/adapters/stt/browser-speech.test.js +0 -113
  18. package/dist/browser-ai/adapters/stt/dictation-source.test.js +0 -52
  19. package/dist/browser-ai/svelte/components/__tests__/ModelStatusControl.test.js +0 -172
  20. package/dist/components/board/__tests__/Board.test.js +0 -498
  21. package/dist/components/board/__tests__/BoardSsrHarness.svelte +0 -30
  22. package/dist/components/board/__tests__/BoardSsrHarness.svelte.d.ts +0 -19
  23. package/dist/components/board/__tests__/BoardSsrHarness.svelte.d.ts.map +0 -1
  24. package/dist/components/forms/__tests__/AddressInput.behavior.test.js +0 -216
  25. package/dist/components/forms/__tests__/CheckboxInput.test.js +0 -92
  26. package/dist/components/forms/__tests__/DateRangeInput.behavior.test.js +0 -135
  27. package/dist/components/forms/__tests__/DateTimeInput.behavior.test.js +0 -113
  28. package/dist/components/forms/__tests__/FileUpload.error-alert.test.js +0 -37
  29. package/dist/components/forms/__tests__/FileUpload.native-form.test.js +0 -249
  30. package/dist/components/forms/__tests__/FileUpload.test.js +0 -90
  31. package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte +0 -24
  32. package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts +0 -10
  33. package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts.map +0 -1
  34. package/dist/components/forms/__tests__/Form.behavior.test.js +0 -137
  35. package/dist/components/forms/__tests__/Form.extraction.test.js +0 -68
  36. package/dist/components/forms/__tests__/Form.stt-error.test.js +0 -57
  37. package/dist/components/forms/__tests__/Form.test.js +0 -86
  38. package/dist/components/forms/__tests__/Form.ui-controls.test.js +0 -119
  39. package/dist/components/forms/__tests__/Form.webmcp.test.js +0 -2336
  40. package/dist/components/forms/__tests__/FormMicButton.test.js +0 -92
  41. package/dist/components/forms/__tests__/FormScope.test.js +0 -39
  42. package/dist/components/forms/__tests__/MeasurementInput.behavior.test.js +0 -129
  43. package/dist/components/forms/__tests__/MoneyInput.behavior.test.js +0 -124
  44. package/dist/components/forms/__tests__/NumberInput.behavior.test.js +0 -151
  45. package/dist/components/forms/__tests__/PhoneInput.behavior.test.js +0 -96
  46. package/dist/components/forms/__tests__/SearchInput.test.js +0 -79
  47. package/dist/components/forms/__tests__/SelectInput.behavior.test.js +0 -132
  48. package/dist/components/forms/__tests__/TextInput.behavior.test.js +0 -131
  49. package/dist/components/forms/__tests__/TextareaInput.behavior.test.js +0 -96
  50. package/dist/components/forms/__tests__/async-invalid-field.fixture.svelte +0 -30
  51. package/dist/components/forms/__tests__/async-invalid-field.fixture.svelte.d.ts +0 -7
  52. package/dist/components/forms/__tests__/async-invalid-field.fixture.svelte.d.ts.map +0 -1
  53. package/dist/components/forms/__tests__/async-validation-form.fixture.svelte +0 -19
  54. package/dist/components/forms/__tests__/async-validation-form.fixture.svelte.d.ts +0 -9
  55. package/dist/components/forms/__tests__/async-validation-form.fixture.svelte.d.ts.map +0 -1
  56. package/dist/components/forms/__tests__/async-validation-snapshot-form.fixture.svelte +0 -21
  57. package/dist/components/forms/__tests__/async-validation-snapshot-form.fixture.svelte.d.ts +0 -8
  58. package/dist/components/forms/__tests__/async-validation-snapshot-form.fixture.svelte.d.ts.map +0 -1
  59. package/dist/components/forms/__tests__/composite-inputs-a11y.test.js +0 -69
  60. package/dist/components/forms/__tests__/compound-registration-wrapper.fixture.svelte +0 -27
  61. package/dist/components/forms/__tests__/compound-registration-wrapper.fixture.svelte.d.ts +0 -9
  62. package/dist/components/forms/__tests__/compound-registration-wrapper.fixture.svelte.d.ts.map +0 -1
  63. package/dist/components/forms/__tests__/custom-registration-field.fixture.svelte +0 -48
  64. package/dist/components/forms/__tests__/custom-registration-field.fixture.svelte.d.ts +0 -10
  65. package/dist/components/forms/__tests__/custom-registration-field.fixture.svelte.d.ts.map +0 -1
  66. package/dist/components/forms/__tests__/form-extraction-values.fixture.svelte +0 -26
  67. package/dist/components/forms/__tests__/form-extraction-values.fixture.svelte.d.ts +0 -13
  68. package/dist/components/forms/__tests__/form-extraction-values.fixture.svelte.d.ts.map +0 -1
  69. package/dist/components/forms/__tests__/form-registration-lifecycle.fixture.svelte +0 -52
  70. package/dist/components/forms/__tests__/form-registration-lifecycle.fixture.svelte.d.ts +0 -16
  71. package/dist/components/forms/__tests__/form-registration-lifecycle.fixture.svelte.d.ts.map +0 -1
  72. package/dist/components/forms/__tests__/form-scope.fixture.svelte +0 -30
  73. package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts +0 -10
  74. package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts.map +0 -1
  75. package/dist/components/forms/__tests__/form-with-fields.fixture.svelte +0 -158
  76. package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts +0 -51
  77. package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts.map +0 -1
  78. package/dist/components/forms/__tests__/form-with-policy-field.fixture.svelte +0 -24
  79. package/dist/components/forms/__tests__/form-with-policy-field.fixture.svelte.d.ts +0 -11
  80. package/dist/components/forms/__tests__/form-with-policy-field.fixture.svelte.d.ts.map +0 -1
  81. package/dist/components/forms/__tests__/form-with-structured-fields.fixture.svelte +0 -105
  82. package/dist/components/forms/__tests__/form-with-structured-fields.fixture.svelte.d.ts +0 -42
  83. package/dist/components/forms/__tests__/form-with-structured-fields.fixture.svelte.d.ts.map +0 -1
  84. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte +0 -84
  85. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts +0 -14
  86. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts.map +0 -1
  87. package/dist/components/forms/__tests__/legacy-form-context.fixture.svelte +0 -44
  88. package/dist/components/forms/__tests__/legacy-form-context.fixture.svelte.d.ts +0 -9
  89. package/dist/components/forms/__tests__/legacy-form-context.fixture.svelte.d.ts.map +0 -1
  90. package/dist/components/forms/__tests__/mic-keyboard-a11y.test.js +0 -74
  91. package/dist/components/forms/__tests__/policy-field.fixture.svelte +0 -35
  92. package/dist/components/forms/__tests__/policy-field.fixture.svelte.d.ts +0 -8
  93. package/dist/components/forms/__tests__/policy-field.fixture.svelte.d.ts.map +0 -1
  94. package/dist/components/forms/__tests__/rich-inputs-a11y.test.js +0 -87
  95. package/dist/components/settings/__tests__/SettingsCatalog.test.js +0 -69
  96. package/dist/components/settings/__tests__/catalog.test.js +0 -46
  97. package/dist/components/workspace/__tests__/AdminShell.responsive.test.js +0 -597
  98. package/dist/components/workspace/__tests__/AdminShell.test.js +0 -572
  99. package/dist/components/workspace/__tests__/RoleShell.test.js +0 -772
  100. package/dist/components/workspace/__tests__/TenantNav.test.js +0 -208
  101. package/dist/components/workspace/__tests__/WorkspaceAccountMenu.test.js +0 -79
  102. package/dist/components/workspace/__tests__/WorkspaceShell.test.js +0 -630
  103. package/dist/components/workspace/__tests__/admin-shell-header-overflow.test.js +0 -25
  104. package/dist/components/workspace/__tests__/admin-shell-hotkeys.test.js +0 -34
  105. package/dist/components/workspace/__tests__/admin-shell-mobile.test.js +0 -217
  106. package/dist/components/workspace/__tests__/admin-shell-mutation-effect-harness.svelte +0 -52
  107. package/dist/components/workspace/__tests__/admin-shell-mutation-effect-harness.svelte.d.ts +0 -23
  108. package/dist/components/workspace/__tests__/admin-shell-mutation-effect-harness.svelte.d.ts.map +0 -1
  109. package/dist/components/workspace/__tests__/admin-shell-page-contracts.test.js +0 -30
  110. package/dist/components/workspace/__tests__/admin-shell-responsive-state.test.js +0 -184
  111. package/dist/components/workspace/__tests__/admin-shell-settings.test.js +0 -25
  112. package/dist/components/workspace/__tests__/admin-shell-state.test.js +0 -286
  113. package/dist/components/workspace/__tests__/admin-shell-theme-hooks.test.js +0 -36
  114. package/dist/components/workspace/__tests__/breadcrumbs-helpers.test.js +0 -141
  115. package/dist/components/workspace/__tests__/context-forwarding-harness.svelte +0 -45
  116. package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts +0 -21
  117. package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts.map +0 -1
  118. package/dist/components/workspace/__tests__/define-tools-dock.test.js +0 -1188
  119. package/dist/components/workspace/__tests__/harness.svelte +0 -25
  120. package/dist/components/workspace/__tests__/harness.svelte.d.ts +0 -14
  121. package/dist/components/workspace/__tests__/harness.svelte.d.ts.map +0 -1
  122. package/dist/components/workspace/__tests__/index.test.js +0 -28
  123. package/dist/components/workspace/__tests__/legacy-index.test.js +0 -9
  124. package/dist/components/workspace/__tests__/manifest-nav-helpers.test.js +0 -24
  125. package/dist/components/workspace/__tests__/manifest-nav.test.js +0 -599
  126. package/dist/components/workspace/__tests__/nav-helpers.test.js +0 -95
  127. package/dist/components/workspace/__tests__/render-harness.svelte +0 -66
  128. package/dist/components/workspace/__tests__/render-harness.svelte.d.ts +0 -32
  129. package/dist/components/workspace/__tests__/render-harness.svelte.d.ts.map +0 -1
  130. package/dist/components/workspace/__tests__/render-tools-dock.test.js +0 -260
  131. package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte +0 -58
  132. package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts +0 -16
  133. package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts.map +0 -1
  134. package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte +0 -41
  135. package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts +0 -13
  136. package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts.map +0 -1
  137. package/dist/components/workspace/__tests__/shell-chrome-components.test.js +0 -108
  138. package/dist/components/workspace/__tests__/system-feed.test.js +0 -327
  139. package/dist/components/workspace/__tests__/test-icon.svelte +0 -17
  140. package/dist/components/workspace/__tests__/test-icon.svelte.d.ts +0 -19
  141. package/dist/components/workspace/__tests__/test-icon.svelte.d.ts.map +0 -1
  142. package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte +0 -38
  143. package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts +0 -22
  144. package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts.map +0 -1
  145. package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts +0 -66
  146. package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts.map +0 -1
  147. package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.js +0 -115
  148. package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts +0 -15
  149. package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts.map +0 -1
  150. package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.js +0 -7
  151. package/dist/components/workspace/__tests__/typed-tool-fixture.test.js +0 -115
  152. package/dist/components/workspace/__tests__/use-harness-orphan.svelte +0 -9
  153. package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts +0 -19
  154. package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts.map +0 -1
  155. package/dist/components/workspace/__tests__/use-harness.svelte +0 -23
  156. package/dist/components/workspace/__tests__/use-harness.svelte.d.ts +0 -8
  157. package/dist/components/workspace/__tests__/use-harness.svelte.d.ts.map +0 -1
  158. package/dist/components/workspace/__tests__/use-tools-dock.test.js +0 -33
  159. package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte +0 -43
  160. package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts +0 -11
  161. package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts.map +0 -1
  162. package/dist/components/workspace/server/__tests__/compose-availability.test.js +0 -383
  163. package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts +0 -78
  164. package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts.map +0 -1
  165. package/dist/components/workspace/server/__tests__/typed-context-fixture.js +0 -104
  166. package/dist/hooks/__tests__/stt-consumer.fixture.svelte +0 -25
  167. package/dist/hooks/__tests__/stt-consumer.fixture.svelte.d.ts +0 -15
  168. package/dist/hooks/__tests__/stt-consumer.fixture.svelte.d.ts.map +0 -1
  169. package/dist/hooks/__tests__/stt-ownership-harness.svelte +0 -42
  170. package/dist/hooks/__tests__/stt-ownership-harness.svelte.d.ts +0 -20
  171. package/dist/hooks/__tests__/stt-ownership-harness.svelte.d.ts.map +0 -1
  172. package/dist/hooks/__tests__/useSTT-ownership.test.js +0 -102
  173. package/dist/i18n/__tests__/server.spec.js +0 -57
  174. package/dist/internal/logger.test.js +0 -54
  175. package/dist/provider-mode.test.js +0 -86
  176. package/dist/provider-webmcp.test.js +0 -244
  177. package/dist/state/__tests__/app-state-ai-lifecycle.test.js +0 -240
  178. package/dist/state/__tests__/warm-clients.test.js +0 -40
  179. package/dist/web/__tests__/activity-feed-harness.svelte +0 -32
  180. package/dist/web/__tests__/activity-feed-harness.svelte.d.ts +0 -18
  181. package/dist/web/__tests__/activity-feed-harness.svelte.d.ts.map +0 -1
  182. package/dist/web/__tests__/activity-feed.integration.svelte.test.js +0 -190
  183. package/dist/web/__tests__/activity-feed.svelte.test.js +0 -235
  184. package/dist/web/__tests__/assistant-dock.integration.svelte.test.js +0 -204
  185. package/dist/web/__tests__/data-surface-conformance.integration.svelte.test.js +0 -1392
  186. package/dist/web/__tests__/harness.svelte +0 -25
  187. package/dist/web/__tests__/harness.svelte.d.ts +0 -15
  188. package/dist/web/__tests__/harness.svelte.d.ts.map +0 -1
  189. package/dist/web/__tests__/list-data-surface.fixture.svelte +0 -59
  190. package/dist/web/__tests__/list-data-surface.fixture.svelte.d.ts +0 -14
  191. package/dist/web/__tests__/list-data-surface.fixture.svelte.d.ts.map +0 -1
  192. package/dist/web/__tests__/list-data-surface.svelte.test.js +0 -106
  193. package/dist/web/__tests__/list-data-surface.test.js +0 -651
  194. package/dist/web/__tests__/list-sort-surface.fixture.svelte +0 -41
  195. package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts +0 -15
  196. package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts.map +0 -1
  197. package/dist/web/__tests__/list-sort-surface.svelte.test.js +0 -59
  198. package/dist/web/__tests__/live-collection.svelte.test.js +0 -185
  199. package/dist/web/__tests__/provider-ui-registry.fixture.svelte +0 -43
  200. package/dist/web/__tests__/provider-ui-registry.fixture.svelte.d.ts +0 -13
  201. package/dist/web/__tests__/provider-ui-registry.fixture.svelte.d.ts.map +0 -1
  202. package/dist/web/__tests__/provider-ui-registry.test.js +0 -235
  203. package/dist/web/__tests__/remote-query-harness.svelte +0 -27
  204. package/dist/web/__tests__/remote-query-harness.svelte.d.ts +0 -11
  205. package/dist/web/__tests__/remote-query-harness.svelte.d.ts.map +0 -1
  206. package/dist/web/__tests__/remote-query.svelte.test.js +0 -101
  207. package/dist/web/__tests__/surfaces.child.fixture.svelte +0 -69
  208. package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts +0 -16
  209. package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts.map +0 -1
  210. package/dist/web/__tests__/surfaces.fixture.svelte +0 -26
  211. package/dist/web/__tests__/surfaces.fixture.svelte.d.ts +0 -18
  212. package/dist/web/__tests__/surfaces.fixture.svelte.d.ts.map +0 -1
  213. package/dist/web/__tests__/surfaces.svelte.test.js +0 -140
  214. package/dist/web/__tests__/update-available-harness.svelte +0 -46
  215. package/dist/web/__tests__/update-available-harness.svelte.d.ts +0 -22
  216. package/dist/web/__tests__/update-available-harness.svelte.d.ts.map +0 -1
  217. package/dist/web/__tests__/update-available.svelte.test.js +0 -137
  218. package/dist/web/__tests__/view-intent-provider.fixture.svelte +0 -28
  219. package/dist/web/__tests__/view-intent-provider.fixture.svelte.d.ts +0 -13
  220. package/dist/web/__tests__/view-intent-provider.fixture.svelte.d.ts.map +0 -1
  221. package/dist/web/__tests__/view-intent.fixture.svelte +0 -33
  222. package/dist/web/__tests__/view-intent.fixture.svelte.d.ts +0 -15
  223. package/dist/web/__tests__/view-intent.fixture.svelte.d.ts.map +0 -1
  224. package/dist/web/__tests__/view-intent.intents.d.ts +0 -14
  225. package/dist/web/__tests__/view-intent.intents.d.ts.map +0 -1
  226. package/dist/web/__tests__/view-intent.intents.js +0 -38
  227. package/dist/web/__tests__/view-intent.svelte.test.js +0 -244
  228. package/dist/web/__tests__/webmcp-composed.child.fixture.svelte +0 -73
  229. package/dist/web/__tests__/webmcp-composed.child.fixture.svelte.d.ts +0 -8
  230. package/dist/web/__tests__/webmcp-composed.child.fixture.svelte.d.ts.map +0 -1
  231. package/dist/web/__tests__/webmcp-composed.fixture.svelte +0 -52
  232. package/dist/web/__tests__/webmcp-composed.fixture.svelte.d.ts +0 -12
  233. package/dist/web/__tests__/webmcp-composed.fixture.svelte.d.ts.map +0 -1
  234. package/dist/web/__tests__/webmcp-composed.integration.svelte.test.js +0 -251
  235. package/dist/web/__tests__/webmcp-effects-reactivity.child.fixture.svelte +0 -16
  236. package/dist/web/__tests__/webmcp-effects-reactivity.child.fixture.svelte.d.ts +0 -19
  237. package/dist/web/__tests__/webmcp-effects-reactivity.child.fixture.svelte.d.ts.map +0 -1
  238. package/dist/web/__tests__/webmcp-effects-reactivity.fixture.svelte +0 -11
  239. package/dist/web/__tests__/webmcp-effects-reactivity.fixture.svelte.d.ts +0 -8
  240. package/dist/web/__tests__/webmcp-effects-reactivity.fixture.svelte.d.ts.map +0 -1
  241. package/dist/web/__tests__/webmcp-harness-reactive-samename.svelte +0 -20
  242. package/dist/web/__tests__/webmcp-harness-reactive-samename.svelte.d.ts +0 -7
  243. package/dist/web/__tests__/webmcp-harness-reactive-samename.svelte.d.ts.map +0 -1
  244. package/dist/web/__tests__/webmcp-harness-unannotated.svelte +0 -14
  245. package/dist/web/__tests__/webmcp-harness-unannotated.svelte.d.ts +0 -19
  246. package/dist/web/__tests__/webmcp-harness-unannotated.svelte.d.ts.map +0 -1
  247. package/dist/web/__tests__/webmcp-harness.svelte +0 -18
  248. package/dist/web/__tests__/webmcp-harness.svelte.d.ts +0 -7
  249. package/dist/web/__tests__/webmcp-harness.svelte.d.ts.map +0 -1
  250. package/dist/web/__tests__/webmcp-ssr.fixture.svelte +0 -13
  251. package/dist/web/__tests__/webmcp-ssr.fixture.svelte.d.ts +0 -19
  252. package/dist/web/__tests__/webmcp-ssr.fixture.svelte.d.ts.map +0 -1
  253. package/dist/web/__tests__/webmcp-ui.test.js +0 -723
  254. package/dist/web/__tests__/webmcp.test.js +0 -234
@@ -1 +0,0 @@
1
- {"version":3,"file":"stt-ownership-harness.svelte.d.ts","sourceRoot":"","sources":["../../../src/hooks/__tests__/stt-ownership-harness.svelte.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,UAAU,KAAK;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAiCD,QAAA,MAAM,mBAAmB,2CAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
@@ -1,102 +0,0 @@
1
- /**
2
- * R4 regression (T2 #1403): useSTT()/useTTS() attach onDestroy to the
3
- * Provider-level *singleton* manager. Before the fix, unmounting ANY hook
4
- * consumer that found the manager listening would call stopListening() —
5
- * aborting a recording another consumer had started. The fix tracks per-hook
6
- * ownership: a consumer only stops the singleton if it started the session.
7
- */
8
- import { render } from '@testing-library/svelte';
9
- import { tick } from 'svelte';
10
- import { describe, expect, it, vi } from 'vitest';
11
- import Harness from './stt-ownership-harness.svelte';
12
- /**
13
- * Minimal fake manager exposing only what useSTT touches. `isListening`
14
- * flips true once any consumer calls startListening().
15
- */
16
- function makeFakeManager() {
17
- const listening = { value: false };
18
- const startListening = vi.fn(async () => {
19
- listening.value = true;
20
- });
21
- const stopListening = vi.fn(async () => {
22
- listening.value = false;
23
- });
24
- const manager = {
25
- startListening,
26
- stopListening,
27
- initializeSTT: vi.fn(async () => ({})),
28
- get state() {
29
- return {
30
- ai: {
31
- stt: {
32
- get isListening() {
33
- return listening.value;
34
- },
35
- },
36
- },
37
- };
38
- },
39
- };
40
- return { manager, startListening, stopListening, listening };
41
- }
42
- describe('useSTT per-hook ownership (R4)', () => {
43
- it("unmounting a non-owning consumer does not stop another consumer's recording", async () => {
44
- const { manager, startListening, stopListening } = makeFakeManager();
45
- let sttA;
46
- const { rerender, unmount } = render(Harness, {
47
- props: {
48
- manager,
49
- showA: true,
50
- showB: true,
51
- onReadyA: (s) => {
52
- sttA = s;
53
- },
54
- },
55
- });
56
- // Consumer A starts the shared listening session.
57
- await sttA?.start();
58
- await tick();
59
- expect(startListening).toHaveBeenCalledTimes(1);
60
- // Unmount consumer B (which never started). It must NOT stop A's session.
61
- await rerender({ manager, showA: true, showB: false });
62
- await tick();
63
- expect(stopListening).not.toHaveBeenCalled();
64
- // Now unmount everything: the owning consumer A stops its own session.
65
- unmount();
66
- await tick();
67
- expect(stopListening).toHaveBeenCalledTimes(1);
68
- });
69
- it('an owning consumer stops the session it started on unmount', async () => {
70
- const { manager, startListening, stopListening } = makeFakeManager();
71
- let sttA;
72
- const { unmount } = render(Harness, {
73
- props: {
74
- manager,
75
- showA: true,
76
- showB: false,
77
- onReadyA: (s) => {
78
- sttA = s;
79
- },
80
- },
81
- });
82
- await sttA?.start();
83
- await tick();
84
- expect(startListening).toHaveBeenCalledTimes(1);
85
- unmount();
86
- await tick();
87
- expect(stopListening).toHaveBeenCalledTimes(1);
88
- });
89
- it('a consumer that never started does not stop a session on unmount', async () => {
90
- const { manager, stopListening, listening } = makeFakeManager();
91
- // Simulate the singleton already listening (started elsewhere).
92
- listening.value = true;
93
- const { unmount } = render(Harness, {
94
- props: { manager, showA: true, showB: false },
95
- });
96
- await tick();
97
- // Consumer A never called start(); unmounting must leave the session alone.
98
- unmount();
99
- await tick();
100
- expect(stopListening).not.toHaveBeenCalled();
101
- });
102
- });
@@ -1,57 +0,0 @@
1
- /**
2
- * Integration coverage for the server snapshot builder (S13 #1418): it seeds the
3
- * languages registry from smrt-svelte's English defaults and resolves them into
4
- * a template dictionary the client renders synchronously. Exercises the real
5
- * `@happyvertical/smrt-languages` resolver (no DB → code-default layer only).
6
- *
7
- * `server.ts` imports the languages package root, whose `__smrt-register__`
8
- * manifest side-effect throws under vitest's source-alias (it resolves
9
- * `manifest.json` via the dev-server URL, not a file). That manifest is the
10
- * ObjectRegistry's, unrelated to string resolution (which uses the separate
11
- * LanguageRegistry), so we record-not-throw via SMRT_STRICT_REGISTRY=false set
12
- * before a dynamic import of the module under test.
13
- */
14
- import { afterEach, beforeAll, describe, expect, it, vi } from 'vitest';
15
- let buildI18nSnapshot;
16
- let defineMessages;
17
- let clearRegisteredMessages;
18
- beforeAll(async () => {
19
- vi.stubEnv('SMRT_STRICT_REGISTRY', 'false');
20
- ({ buildI18nSnapshot } = await import('../server.js'));
21
- ({ defineMessages, clearRegisteredMessages } = await import('@happyvertical/smrt-ui/i18n'));
22
- });
23
- afterEach(() => {
24
- clearRegisteredMessages();
25
- });
26
- describe('buildI18nSnapshot', () => {
27
- it('resolves registered English defaults into a template dictionary', async () => {
28
- defineMessages({
29
- 'ui.snapshot_test.empty': 'No data available',
30
- 'ui.snapshot_test.range': 'Showing {count} of {total}',
31
- });
32
- const snapshot = await buildI18nSnapshot({ locale: 'en' });
33
- expect(snapshot.locale).toBe('en');
34
- expect(snapshot.messages['ui.snapshot_test.empty']).toBe('No data available');
35
- // Templates are shipped un-rendered; the client interpolates at call time.
36
- expect(snapshot.messages['ui.snapshot_test.range']).toBe('Showing {count} of {total}');
37
- });
38
- it('honors an explicit key subset', async () => {
39
- defineMessages({
40
- 'ui.snapshot_test.a': 'Alpha',
41
- 'ui.snapshot_test.b': 'Beta',
42
- });
43
- const snapshot = await buildI18nSnapshot({
44
- locale: 'en',
45
- keys: ['ui.snapshot_test.a'],
46
- });
47
- expect(snapshot.messages['ui.snapshot_test.a']).toBe('Alpha');
48
- expect(snapshot.messages['ui.snapshot_test.b']).toBeUndefined();
49
- });
50
- it('includes Board defaults when only the server snapshot entrypoint is imported', async () => {
51
- const snapshot = await buildI18nSnapshot({
52
- locale: 'en',
53
- keys: ['ui.board.move_failed'],
54
- });
55
- expect(snapshot.messages['ui.board.move_failed']).toBe('Could not move {card}. The board was restored.');
56
- });
57
- });
@@ -1,54 +0,0 @@
1
- /**
2
- * Regression coverage for the "process is not defined" hydration killer.
3
- *
4
- * `internal/logger` is browser-reachable through Provider and the form
5
- * components, and `@happyvertical/logger`'s `createLogger()` eagerly reads
6
- * `process.env` (HAVE_LOGGER_LEVEL). Constructing the logger at module scope
7
- * therefore threw during Vite dev pre-bundle evaluation in browsers and killed
8
- * client-side hydration for every consuming app.
9
- *
10
- * vite-node's module runner itself needs `process.platform` to load inline
11
- * modules, so the test cannot delete `process` outright the way a real browser
12
- * lacks it. Stubbing it to an object without a usable `env` reproduces the
13
- * same failure mode: the pre-fix module init still blows up at import time
14
- * (`Object.keys(process.env)`), and the fixed guard must route to the plain
15
- * console logger.
16
- */
17
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
18
- describe('internal/logger', () => {
19
- beforeEach(() => {
20
- vi.resetModules();
21
- });
22
- afterEach(() => {
23
- vi.unstubAllGlobals();
24
- vi.restoreAllMocks();
25
- });
26
- it('imports and logs without a usable process.env (browser)', async () => {
27
- vi.stubGlobal('process', {});
28
- const { logger } = await import('./logger.js');
29
- const warn = vi.spyOn(console, 'warn').mockImplementation(() => { });
30
- logger.warn('mic permission denied');
31
- expect(warn).toHaveBeenCalledTimes(1);
32
- expect(warn.mock.calls[0][0]).toContain('mic permission denied');
33
- });
34
- it('filters below the warn level in the browser fallback', async () => {
35
- vi.stubGlobal('process', {});
36
- const { logger } = await import('./logger.js');
37
- const debug = vi.spyOn(console, 'debug').mockImplementation(() => { });
38
- const info = vi.spyOn(console, 'info').mockImplementation(() => { });
39
- const error = vi.spyOn(console, 'error').mockImplementation(() => { });
40
- logger.debug('below threshold');
41
- logger.info('below threshold');
42
- logger.error('stt init failed');
43
- expect(debug).not.toHaveBeenCalled();
44
- expect(info).not.toHaveBeenCalled();
45
- expect(error).toHaveBeenCalledTimes(1);
46
- });
47
- it('logs through the env-aware logger when process exists (node/SSR)', async () => {
48
- const { logger } = await import('./logger.js');
49
- const warn = vi.spyOn(console, 'warn').mockImplementation(() => { });
50
- logger.warn('stt init failed', { adapter: 'whisper-cpp' });
51
- expect(warn).toHaveBeenCalledTimes(1);
52
- expect(warn.mock.calls[0][0]).toContain('stt init failed');
53
- });
54
- });
@@ -1,86 +0,0 @@
1
- import { render, screen, waitFor } from '@testing-library/svelte';
2
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
- import Harness from './__tests__/provider-mode-harness.svelte';
4
- import { createAppState, SmrtAppStateManager, } from './state/app-state.svelte.js';
5
- let initializationModes;
6
- let manager;
7
- const capture = (state) => {
8
- manager = state;
9
- };
10
- beforeEach(() => {
11
- initializationModes = [];
12
- vi.stubGlobal('SpeechRecognition', class {
13
- });
14
- const initialize = SmrtAppStateManager.prototype.initialize;
15
- vi.spyOn(SmrtAppStateManager.prototype, 'initialize').mockImplementation(function () {
16
- const result = initialize.call(this);
17
- // Inspect the real initialization boundary before a later reactive effect
18
- // can hide a transient auto-enabled mode.
19
- initializationModes.push(this.state.mode);
20
- return result;
21
- });
22
- vi.spyOn(SmrtAppStateManager.prototype, 'initializeSTT').mockResolvedValue({});
23
- });
24
- afterEach(() => {
25
- vi.restoreAllMocks();
26
- vi.unstubAllGlobals();
27
- });
28
- describe('Provider voice opt-in', () => {
29
- it('keeps defaults in standard mode even with speech capabilities', async () => {
30
- render(Harness, { props: { capture } });
31
- await waitFor(() => expect(manager.state.initialized).toBe(true));
32
- expect(manager.state.capabilities?.stt.browserSpeechAPI).toBe(true);
33
- expect(manager.state.mode).toBe('default');
34
- expect(initializationModes).toEqual(['default']);
35
- expect(manager.initializeSTT).not.toHaveBeenCalled();
36
- });
37
- it('honors explicit default before initialization despite auto-detection opt-in', async () => {
38
- render(Harness, {
39
- props: { capture, mode: 'default', autoEnableSmrt: true },
40
- });
41
- await waitFor(() => expect(manager.state.initialized).toBe(true));
42
- expect(initializationModes).toEqual(['default']);
43
- expect(manager.state.modeSource).toBe('explicit');
44
- expect(manager.initializeSTT).not.toHaveBeenCalled();
45
- });
46
- it('preserves explicit smrt mode and reactive mode updates', async () => {
47
- const view = render(Harness, { props: { capture, mode: 'smrt' } });
48
- await waitFor(() => expect(manager.state.initialized).toBe(true));
49
- expect(initializationModes).toEqual(['smrt']);
50
- expect(manager.state.modeSource).toBe('explicit');
51
- await view.rerender({ capture, mode: 'default' });
52
- expect(screen.getByRole('status', { name: 'App mode' })).toHaveTextContent('default');
53
- });
54
- it('retains auto-detection behind the explicit flag', async () => {
55
- render(Harness, { props: { capture, autoEnableSmrt: true } });
56
- await waitFor(() => expect(manager.state.initialized).toBe(true));
57
- expect(manager.state.mode).toBe('smrt');
58
- expect(manager.state.modeSource).toBe('auto');
59
- });
60
- it('does not auto-enable when capabilities are unavailable', async () => {
61
- vi.stubGlobal('SpeechRecognition', undefined);
62
- const capability = await import('./browser-ai/capabilities/detector.js');
63
- vi.spyOn(capability, 'canEnableSmrtMode').mockReturnValue(false);
64
- render(Harness, { props: { capture, autoEnableSmrt: true } });
65
- await waitFor(() => expect(manager.state.initialized).toBe(true));
66
- expect(manager.state.mode).toBe('default');
67
- });
68
- it('standalone state also requires explicit opt-in and respects initial session preferences', async () => {
69
- const standard = createAppState();
70
- await standard.initialize();
71
- expect(standard.state.mode).toBe('default');
72
- const auto = createAppState({
73
- session: { preferences: { autoEnableSmrt: true } },
74
- });
75
- await auto.initialize();
76
- expect(auto.state.mode).toBe('smrt');
77
- const explicit = createAppState({
78
- initialMode: 'default',
79
- session: { preferences: { autoEnableSmrt: true } },
80
- });
81
- await explicit.initialize();
82
- expect(explicit.state.mode).toBe('default');
83
- expect(explicit.state.modeSource).toBe('explicit');
84
- await Promise.all([standard.dispose(), auto.dispose(), explicit.dispose()]);
85
- });
86
- });
@@ -1,244 +0,0 @@
1
- import { render, waitFor } from '@testing-library/svelte';
2
- import { beforeEach, describe, expect, it, vi } from 'vitest';
3
- import { logger } from './internal/logger.js';
4
- const { registerWebMcpTools } = vi.hoisted(() => ({
5
- registerWebMcpTools: vi.fn(),
6
- }));
7
- vi.mock('@happyvertical/smrt-web', async (importOriginal) => {
8
- const actual = await importOriginal();
9
- return {
10
- ...actual,
11
- registerWebMcpTools: (...args) => {
12
- registerWebMcpTools(...args);
13
- return actual.registerWebMcpTools(...args);
14
- },
15
- };
16
- });
17
- import Harness from './__tests__/provider-webmcp-harness.svelte';
18
- describe('Provider WebMCP policy', () => {
19
- beforeEach(() => {
20
- registerWebMcpTools.mockClear();
21
- document.modelContext = undefined;
22
- });
23
- it('passes the same exposure policy to the framework-agnostic registrar', async () => {
24
- const filter = vi.fn(() => true);
25
- const filterTool = vi.fn(() => true);
26
- const resolveFetchers = vi.fn();
27
- const resolveToolFetchers = vi.fn();
28
- const definitions = [];
29
- render(Harness, {
30
- props: {
31
- webmcp: {
32
- definitions,
33
- effects: ['read', 'write'],
34
- namespace: 'workspace',
35
- maxTools: 12,
36
- basePath: '/api/v2',
37
- scope: 'tenant-a',
38
- filter,
39
- filterTool,
40
- resolveFetchers,
41
- resolveToolFetchers,
42
- },
43
- },
44
- });
45
- await waitFor(() => expect(registerWebMcpTools).toHaveBeenCalledOnce());
46
- expect(registerWebMcpTools).toHaveBeenCalledWith(definitions, {
47
- client: undefined,
48
- basePath: '/api/v2',
49
- fetchFn: undefined,
50
- scope: 'tenant-a',
51
- filter,
52
- filterTool,
53
- resolveFetchers,
54
- resolveToolFetchers,
55
- effects: ['read', 'write'],
56
- namespace: 'workspace',
57
- maxTools: 12,
58
- });
59
- });
60
- it('registers the same real tool set as direct registration', async () => {
61
- const definitions = [
62
- {
63
- name: 'reports',
64
- objectRef: '@test/smrt-svelte:Report',
65
- className: 'Report',
66
- endpoint: '/reports',
67
- idField: 'id',
68
- actions: ['list', 'create'],
69
- fields: {},
70
- toolDescriptors: [
71
- {
72
- action: 'list',
73
- name: 'report_list',
74
- description: 'List reports',
75
- inputSchema: { type: 'object' },
76
- readOnly: true,
77
- effect: 'read',
78
- idempotent: true,
79
- openWorld: false,
80
- },
81
- {
82
- action: 'create',
83
- name: 'report_create',
84
- description: 'Create a report',
85
- inputSchema: { type: 'object' },
86
- readOnly: false,
87
- effect: 'write',
88
- idempotent: false,
89
- openWorld: false,
90
- },
91
- ],
92
- },
93
- {
94
- collection: 'audits',
95
- objectRef: '@test/smrt-svelte:Audit',
96
- className: 'Audit',
97
- endpoint: '/audits',
98
- idField: 'id',
99
- idType: 'uuid',
100
- relationships: [],
101
- action: 'get',
102
- name: 'audit_get',
103
- description: 'Get an audit record',
104
- inputSchema: { type: 'object' },
105
- readOnly: true,
106
- effect: 'read',
107
- idempotent: true,
108
- openWorld: false,
109
- route: { method: 'GET', scope: 'item', path: [] },
110
- },
111
- ];
112
- const resolveFetchers = (definition) => {
113
- definition.actions.length = 0;
114
- return {
115
- list: async () => [],
116
- create: async (data) => data,
117
- };
118
- };
119
- const resolveToolFetchers = (definition) => {
120
- definition.action = 'delete';
121
- return { get: async () => ({ id: 'a1' }) };
122
- };
123
- const policy = {
124
- definitions,
125
- effects: ['read', 'write'],
126
- namespace: 'workspace',
127
- maxTools: 4,
128
- filter: () => true,
129
- filterTool: (tool) => tool.collection === 'audits',
130
- resolveFetchers: vi.fn(resolveFetchers),
131
- resolveToolFetchers: vi.fn(resolveToolFetchers),
132
- };
133
- const captured = [];
134
- const installRegistry = () => {
135
- captured.length = 0;
136
- document.modelContext = {
137
- async registerTool(tool) {
138
- captured.push({ name: tool.name, annotations: tool.annotations });
139
- },
140
- };
141
- };
142
- installRegistry();
143
- const { registerWebMcpTools: directRegister } = await vi.importActual('@happyvertical/smrt-web');
144
- directRegister(definitions, policy);
145
- const direct = structuredClone(captured);
146
- installRegistry();
147
- render(Harness, { props: { webmcp: policy } });
148
- await waitFor(() => expect(registerWebMcpTools).toHaveBeenCalledOnce());
149
- expect(captured).toEqual(direct);
150
- expect(captured.map((tool) => tool.name)).toEqual([
151
- 'workspace_report_list',
152
- 'workspace_report_create',
153
- 'workspace_audit_get',
154
- ]);
155
- expect(policy.resolveFetchers).toHaveBeenCalledTimes(2);
156
- expect(policy.resolveToolFetchers).toHaveBeenCalledTimes(2);
157
- });
158
- it('defaults generated data tools to read-only exposure', async () => {
159
- const captured = [];
160
- document.modelContext = {
161
- async registerTool(tool) {
162
- captured.push(tool.name);
163
- },
164
- };
165
- const definitions = [
166
- {
167
- name: 'reports',
168
- objectRef: '@test/smrt-svelte:Report',
169
- className: 'Report',
170
- endpoint: '/reports',
171
- idField: 'id',
172
- actions: ['list', 'create'],
173
- fields: {},
174
- toolDescriptors: [
175
- {
176
- action: 'list',
177
- name: 'report_list',
178
- description: 'List reports',
179
- inputSchema: { type: 'object' },
180
- readOnly: true,
181
- effect: 'read',
182
- idempotent: true,
183
- openWorld: false,
184
- },
185
- {
186
- action: 'create',
187
- name: 'report_create',
188
- description: 'Create a report',
189
- inputSchema: { type: 'object' },
190
- readOnly: false,
191
- effect: 'write',
192
- idempotent: false,
193
- openWorld: false,
194
- },
195
- ],
196
- },
197
- ];
198
- render(Harness, { props: { webmcp: { definitions } } });
199
- await waitFor(() => expect(registerWebMcpTools).toHaveBeenCalledOnce());
200
- expect(captured).toEqual(['report_list']);
201
- });
202
- it('reports rejected generated data-tool policies without an unhandled rejection', async () => {
203
- const warn = vi.spyOn(logger, 'warn').mockImplementation(() => { });
204
- document.modelContext = { registerTool: vi.fn() };
205
- render(Harness, {
206
- props: { webmcp: { definitions: [], maxTools: -1 } },
207
- });
208
- await waitFor(() => expect(warn).toHaveBeenCalledWith('Provider: WebMCP data tool registration rejected', {
209
- error: expect.objectContaining({
210
- message: 'WebMCP maxTools must be a non-negative safe integer',
211
- }),
212
- }));
213
- });
214
- it('reports asynchronous browser registration rejection', async () => {
215
- const warn = vi.spyOn(logger, 'warn').mockImplementation(() => { });
216
- document.modelContext = {
217
- registerTool: () => Promise.reject(new Error('browser rejected tool')),
218
- };
219
- const definitions = [
220
- {
221
- collection: 'audits',
222
- objectRef: '@test/smrt-svelte:Audit',
223
- className: 'Audit',
224
- endpoint: '/audits',
225
- idField: 'id',
226
- idType: 'uuid',
227
- relationships: [],
228
- action: 'get',
229
- name: 'audit_get',
230
- description: 'Get an audit record',
231
- inputSchema: { type: 'object' },
232
- readOnly: true,
233
- effect: 'read',
234
- idempotent: true,
235
- openWorld: false,
236
- route: { method: 'GET', scope: 'item', path: [] },
237
- },
238
- ];
239
- render(Harness, { props: { webmcp: { definitions } } });
240
- await waitFor(() => expect(warn).toHaveBeenCalledWith('Provider: WebMCP data tool registration rejected', {
241
- error: expect.objectContaining({ message: 'browser rejected tool' }),
242
- }));
243
- });
244
- });