@happyvertical/smrt-svelte 0.30.0

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 (357) hide show
  1. package/AGENTS.md +317 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +185 -0
  5. package/dist/Provider.svelte +204 -0
  6. package/dist/Provider.svelte.d.ts +73 -0
  7. package/dist/Provider.svelte.d.ts.map +1 -0
  8. package/dist/__tests__/app-state.test.js +156 -0
  9. package/dist/__tests__/warm-clients.test.js +186 -0
  10. package/dist/browser-ai/adapters/llm/factory.d.ts +38 -0
  11. package/dist/browser-ai/adapters/llm/factory.d.ts.map +1 -0
  12. package/dist/browser-ai/adapters/llm/factory.js +91 -0
  13. package/dist/browser-ai/adapters/llm/index.d.ts +7 -0
  14. package/dist/browser-ai/adapters/llm/index.d.ts.map +1 -0
  15. package/dist/browser-ai/adapters/llm/index.js +6 -0
  16. package/dist/browser-ai/adapters/llm/types.d.ts +182 -0
  17. package/dist/browser-ai/adapters/llm/types.d.ts.map +1 -0
  18. package/dist/browser-ai/adapters/llm/types.js +43 -0
  19. package/dist/browser-ai/adapters/llm/webllm.d.ts +33 -0
  20. package/dist/browser-ai/adapters/llm/webllm.d.ts.map +1 -0
  21. package/dist/browser-ai/adapters/llm/webllm.js +225 -0
  22. package/dist/browser-ai/adapters/stt/browser-speech.d.ts +31 -0
  23. package/dist/browser-ai/adapters/stt/browser-speech.d.ts.map +1 -0
  24. package/dist/browser-ai/adapters/stt/browser-speech.js +217 -0
  25. package/dist/browser-ai/adapters/stt/factory.d.ts +49 -0
  26. package/dist/browser-ai/adapters/stt/factory.d.ts.map +1 -0
  27. package/dist/browser-ai/adapters/stt/factory.js +110 -0
  28. package/dist/browser-ai/adapters/stt/index.d.ts +9 -0
  29. package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -0
  30. package/dist/browser-ai/adapters/stt/index.js +8 -0
  31. package/dist/browser-ai/adapters/stt/types.d.ts +154 -0
  32. package/dist/browser-ai/adapters/stt/types.d.ts.map +1 -0
  33. package/dist/browser-ai/adapters/stt/types.js +4 -0
  34. package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts +46 -0
  35. package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts.map +1 -0
  36. package/dist/browser-ai/adapters/stt/whisper-cpp.js +348 -0
  37. package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts +51 -0
  38. package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts.map +1 -0
  39. package/dist/browser-ai/adapters/stt/whisper-wasm.js +380 -0
  40. package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts +42 -0
  41. package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts.map +1 -0
  42. package/dist/browser-ai/adapters/tts/browser-synthesis.js +235 -0
  43. package/dist/browser-ai/adapters/tts/factory.d.ts +53 -0
  44. package/dist/browser-ai/adapters/tts/factory.d.ts.map +1 -0
  45. package/dist/browser-ai/adapters/tts/factory.js +92 -0
  46. package/dist/browser-ai/adapters/tts/index.d.ts +7 -0
  47. package/dist/browser-ai/adapters/tts/index.d.ts.map +1 -0
  48. package/dist/browser-ai/adapters/tts/index.js +6 -0
  49. package/dist/browser-ai/adapters/tts/types.d.ts +140 -0
  50. package/dist/browser-ai/adapters/tts/types.d.ts.map +1 -0
  51. package/dist/browser-ai/adapters/tts/types.js +4 -0
  52. package/dist/browser-ai/capabilities/detector.d.ts +38 -0
  53. package/dist/browser-ai/capabilities/detector.d.ts.map +1 -0
  54. package/dist/browser-ai/capabilities/detector.js +211 -0
  55. package/dist/browser-ai/core/errors.d.ts +62 -0
  56. package/dist/browser-ai/core/errors.d.ts.map +1 -0
  57. package/dist/browser-ai/core/errors.js +92 -0
  58. package/dist/browser-ai/core/index.d.ts +6 -0
  59. package/dist/browser-ai/core/index.d.ts.map +1 -0
  60. package/dist/browser-ai/core/index.js +5 -0
  61. package/dist/browser-ai/core/types.d.ts +115 -0
  62. package/dist/browser-ai/core/types.d.ts.map +1 -0
  63. package/dist/browser-ai/core/types.js +34 -0
  64. package/dist/browser-ai/index.d.ts +12 -0
  65. package/dist/browser-ai/index.d.ts.map +1 -0
  66. package/dist/browser-ai/index.js +16 -0
  67. package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte +77 -0
  68. package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts +16 -0
  69. package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts.map +1 -0
  70. package/dist/browser-ai/svelte/components/CapabilityGate.svelte +57 -0
  71. package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts +15 -0
  72. package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts.map +1 -0
  73. package/dist/browser-ai/svelte/components/DownloadProgress.svelte +141 -0
  74. package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts +15 -0
  75. package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts.map +1 -0
  76. package/dist/browser-ai/svelte/components/STTTest.svelte +379 -0
  77. package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts +9 -0
  78. package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts.map +1 -0
  79. package/dist/browser-ai/svelte/components/VoiceInput.svelte +200 -0
  80. package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts +16 -0
  81. package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts.map +1 -0
  82. package/dist/browser-ai/svelte/index.d.ts +15 -0
  83. package/dist/browser-ai/svelte/index.d.ts.map +1 -0
  84. package/dist/browser-ai/svelte/index.js +28 -0
  85. package/dist/browser-ai/ui.d.ts +16 -0
  86. package/dist/browser-ai/ui.d.ts.map +1 -0
  87. package/dist/browser-ai/ui.js +67 -0
  88. package/dist/components/admin/AgentAdminPanel.svelte +111 -0
  89. package/dist/components/admin/AgentAdminPanel.svelte.d.ts +25 -0
  90. package/dist/components/admin/AgentAdminPanel.svelte.d.ts.map +1 -0
  91. package/dist/components/admin/AgentAdminTabs.svelte +280 -0
  92. package/dist/components/admin/AgentAdminTabs.svelte.d.ts +23 -0
  93. package/dist/components/admin/AgentAdminTabs.svelte.d.ts.map +1 -0
  94. package/dist/components/admin/AgentSettingsShell.svelte +257 -0
  95. package/dist/components/admin/AgentSettingsShell.svelte.d.ts +33 -0
  96. package/dist/components/admin/AgentSettingsShell.svelte.d.ts.map +1 -0
  97. package/dist/components/admin/index.d.ts +5 -0
  98. package/dist/components/admin/index.d.ts.map +1 -0
  99. package/dist/components/admin/index.js +6 -0
  100. package/dist/components/forms/AddressInput.svelte +500 -0
  101. package/dist/components/forms/AddressInput.svelte.d.ts +36 -0
  102. package/dist/components/forms/AddressInput.svelte.d.ts.map +1 -0
  103. package/dist/components/forms/CheckboxInput.svelte +208 -0
  104. package/dist/components/forms/CheckboxInput.svelte.d.ts +20 -0
  105. package/dist/components/forms/CheckboxInput.svelte.d.ts.map +1 -0
  106. package/dist/components/forms/DateRangeInput.svelte +628 -0
  107. package/dist/components/forms/DateRangeInput.svelte.d.ts +33 -0
  108. package/dist/components/forms/DateRangeInput.svelte.d.ts.map +1 -0
  109. package/dist/components/forms/DateTimeInput.svelte +521 -0
  110. package/dist/components/forms/DateTimeInput.svelte.d.ts +24 -0
  111. package/dist/components/forms/DateTimeInput.svelte.d.ts.map +1 -0
  112. package/dist/components/forms/FileUpload.svelte +358 -0
  113. package/dist/components/forms/FileUpload.svelte.d.ts +22 -0
  114. package/dist/components/forms/FileUpload.svelte.d.ts.map +1 -0
  115. package/dist/components/forms/Form.svelte +771 -0
  116. package/dist/components/forms/Form.svelte.d.ts +26 -0
  117. package/dist/components/forms/Form.svelte.d.ts.map +1 -0
  118. package/dist/components/forms/FormGroup.svelte +86 -0
  119. package/dist/components/forms/FormGroup.svelte.d.ts +13 -0
  120. package/dist/components/forms/FormGroup.svelte.d.ts.map +1 -0
  121. package/dist/components/forms/FormMicButton.svelte +179 -0
  122. package/dist/components/forms/FormMicButton.svelte.d.ts +10 -0
  123. package/dist/components/forms/FormMicButton.svelte.d.ts.map +1 -0
  124. package/dist/components/forms/Input.svelte +83 -0
  125. package/dist/components/forms/Input.svelte.d.ts +9 -0
  126. package/dist/components/forms/Input.svelte.d.ts.map +1 -0
  127. package/dist/components/forms/MeasurementInput.svelte +505 -0
  128. package/dist/components/forms/MeasurementInput.svelte.d.ts +35 -0
  129. package/dist/components/forms/MeasurementInput.svelte.d.ts.map +1 -0
  130. package/dist/components/forms/MoneyInput.svelte +412 -0
  131. package/dist/components/forms/MoneyInput.svelte.d.ts +30 -0
  132. package/dist/components/forms/MoneyInput.svelte.d.ts.map +1 -0
  133. package/dist/components/forms/NumberInput.svelte +310 -0
  134. package/dist/components/forms/NumberInput.svelte.d.ts +28 -0
  135. package/dist/components/forms/NumberInput.svelte.d.ts.map +1 -0
  136. package/dist/components/forms/PhoneInput.svelte +530 -0
  137. package/dist/components/forms/PhoneInput.svelte.d.ts +22 -0
  138. package/dist/components/forms/PhoneInput.svelte.d.ts.map +1 -0
  139. package/dist/components/forms/SearchInput.svelte +358 -0
  140. package/dist/components/forms/SearchInput.svelte.d.ts +33 -0
  141. package/dist/components/forms/SearchInput.svelte.d.ts.map +1 -0
  142. package/dist/components/forms/Select.svelte +83 -0
  143. package/dist/components/forms/Select.svelte.d.ts +11 -0
  144. package/dist/components/forms/Select.svelte.d.ts.map +1 -0
  145. package/dist/components/forms/SelectInput.svelte +254 -0
  146. package/dist/components/forms/SelectInput.svelte.d.ts +25 -0
  147. package/dist/components/forms/SelectInput.svelte.d.ts.map +1 -0
  148. package/dist/components/forms/TextInput.svelte +415 -0
  149. package/dist/components/forms/TextInput.svelte.d.ts +26 -0
  150. package/dist/components/forms/TextInput.svelte.d.ts.map +1 -0
  151. package/dist/components/forms/Textarea.svelte +85 -0
  152. package/dist/components/forms/Textarea.svelte.d.ts +10 -0
  153. package/dist/components/forms/Textarea.svelte.d.ts.map +1 -0
  154. package/dist/components/forms/TextareaInput.svelte +386 -0
  155. package/dist/components/forms/TextareaInput.svelte.d.ts +26 -0
  156. package/dist/components/forms/TextareaInput.svelte.d.ts.map +1 -0
  157. package/dist/components/forms/Toggle.svelte +217 -0
  158. package/dist/components/forms/Toggle.svelte.d.ts +37 -0
  159. package/dist/components/forms/Toggle.svelte.d.ts.map +1 -0
  160. package/dist/components/forms/__tests__/AddressInput.behavior.test.js +122 -0
  161. package/dist/components/forms/__tests__/CheckboxInput.test.js +92 -0
  162. package/dist/components/forms/__tests__/DateRangeInput.behavior.test.js +135 -0
  163. package/dist/components/forms/__tests__/DateTimeInput.behavior.test.js +103 -0
  164. package/dist/components/forms/__tests__/FileUpload.test.js +90 -0
  165. package/dist/components/forms/__tests__/Form.behavior.test.js +137 -0
  166. package/dist/components/forms/__tests__/Form.test.js +58 -0
  167. package/dist/components/forms/__tests__/FormGroup.test.js +48 -0
  168. package/dist/components/forms/__tests__/FormMicButton.test.js +86 -0
  169. package/dist/components/forms/__tests__/Input.test.js +49 -0
  170. package/dist/components/forms/__tests__/MeasurementInput.behavior.test.js +129 -0
  171. package/dist/components/forms/__tests__/MoneyInput.behavior.test.js +124 -0
  172. package/dist/components/forms/__tests__/NumberInput.behavior.test.js +141 -0
  173. package/dist/components/forms/__tests__/PhoneInput.behavior.test.js +96 -0
  174. package/dist/components/forms/__tests__/SearchInput.test.js +79 -0
  175. package/dist/components/forms/__tests__/Select.test.js +37 -0
  176. package/dist/components/forms/__tests__/SelectInput.behavior.test.js +132 -0
  177. package/dist/components/forms/__tests__/TextInput.behavior.test.js +131 -0
  178. package/dist/components/forms/__tests__/Textarea.test.js +39 -0
  179. package/dist/components/forms/__tests__/TextareaInput.behavior.test.js +96 -0
  180. package/dist/components/forms/__tests__/Toggle.test.js +87 -0
  181. package/dist/components/forms/__tests__/composite-inputs-a11y.test.js +69 -0
  182. package/dist/components/forms/__tests__/form-group-input.fixture.svelte +16 -0
  183. package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts +9 -0
  184. package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts.map +1 -0
  185. package/dist/components/forms/__tests__/form-with-fields.fixture.svelte +33 -0
  186. package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts +12 -0
  187. package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts.map +1 -0
  188. package/dist/components/forms/__tests__/rich-inputs-a11y.test.js +87 -0
  189. package/dist/components/forms/index.d.ts +25 -0
  190. package/dist/components/forms/index.d.ts.map +1 -0
  191. package/dist/components/forms/index.js +25 -0
  192. package/dist/components/forms/types.d.ts +33 -0
  193. package/dist/components/forms/types.d.ts.map +1 -0
  194. package/dist/components/forms/types.js +4 -0
  195. package/dist/components/module/ModulePanel.svelte +134 -0
  196. package/dist/components/module/ModulePanel.svelte.d.ts +22 -0
  197. package/dist/components/module/ModulePanel.svelte.d.ts.map +1 -0
  198. package/dist/components/module/index.d.ts +5 -0
  199. package/dist/components/module/index.d.ts.map +1 -0
  200. package/dist/components/module/index.js +4 -0
  201. package/dist/components/workspace/Breadcrumbs.svelte +141 -0
  202. package/dist/components/workspace/Breadcrumbs.svelte.d.ts +21 -0
  203. package/dist/components/workspace/Breadcrumbs.svelte.d.ts.map +1 -0
  204. package/dist/components/workspace/NavTree.svelte +354 -0
  205. package/dist/components/workspace/NavTree.svelte.d.ts +45 -0
  206. package/dist/components/workspace/NavTree.svelte.d.ts.map +1 -0
  207. package/dist/components/workspace/README.md +34 -0
  208. package/dist/components/workspace/RoleShell.svelte +309 -0
  209. package/dist/components/workspace/RoleShell.svelte.d.ts +91 -0
  210. package/dist/components/workspace/RoleShell.svelte.d.ts.map +1 -0
  211. package/dist/components/workspace/WorkspaceShell.svelte +951 -0
  212. package/dist/components/workspace/WorkspaceShell.svelte.d.ts +112 -0
  213. package/dist/components/workspace/WorkspaceShell.svelte.d.ts.map +1 -0
  214. package/dist/components/workspace/__tests__/RoleShell.test.js +772 -0
  215. package/dist/components/workspace/__tests__/WorkspaceShell.test.js +630 -0
  216. package/dist/components/workspace/__tests__/breadcrumbs-helpers.test.js +141 -0
  217. package/dist/components/workspace/__tests__/context-forwarding-harness.svelte +45 -0
  218. package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts +21 -0
  219. package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts.map +1 -0
  220. package/dist/components/workspace/__tests__/define-tools-dock.test.js +1010 -0
  221. package/dist/components/workspace/__tests__/harness.svelte +25 -0
  222. package/dist/components/workspace/__tests__/harness.svelte.d.ts +14 -0
  223. package/dist/components/workspace/__tests__/harness.svelte.d.ts.map +1 -0
  224. package/dist/components/workspace/__tests__/index.test.js +37 -0
  225. package/dist/components/workspace/__tests__/manifest-nav-helpers.test.js +24 -0
  226. package/dist/components/workspace/__tests__/manifest-nav.test.js +599 -0
  227. package/dist/components/workspace/__tests__/nav-helpers.test.js +95 -0
  228. package/dist/components/workspace/__tests__/render-harness.svelte +66 -0
  229. package/dist/components/workspace/__tests__/render-harness.svelte.d.ts +32 -0
  230. package/dist/components/workspace/__tests__/render-harness.svelte.d.ts.map +1 -0
  231. package/dist/components/workspace/__tests__/render-tools-dock.test.js +243 -0
  232. package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte +58 -0
  233. package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts +16 -0
  234. package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts.map +1 -0
  235. package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte +41 -0
  236. package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts +13 -0
  237. package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts.map +1 -0
  238. package/dist/components/workspace/__tests__/test-icon.svelte +17 -0
  239. package/dist/components/workspace/__tests__/test-icon.svelte.d.ts +19 -0
  240. package/dist/components/workspace/__tests__/test-icon.svelte.d.ts.map +1 -0
  241. package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte +38 -0
  242. package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts +22 -0
  243. package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts.map +1 -0
  244. package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts +65 -0
  245. package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts.map +1 -0
  246. package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.js +115 -0
  247. package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts +15 -0
  248. package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts.map +1 -0
  249. package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.js +7 -0
  250. package/dist/components/workspace/__tests__/typed-tool-fixture.test.js +115 -0
  251. package/dist/components/workspace/__tests__/use-harness-orphan.svelte +9 -0
  252. package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts +19 -0
  253. package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts.map +1 -0
  254. package/dist/components/workspace/__tests__/use-harness.svelte +23 -0
  255. package/dist/components/workspace/__tests__/use-harness.svelte.d.ts +8 -0
  256. package/dist/components/workspace/__tests__/use-harness.svelte.d.ts.map +1 -0
  257. package/dist/components/workspace/__tests__/use-tools-dock.test.js +33 -0
  258. package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte +43 -0
  259. package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts +11 -0
  260. package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts.map +1 -0
  261. package/dist/components/workspace/breadcrumbs-helpers.d.ts +44 -0
  262. package/dist/components/workspace/breadcrumbs-helpers.d.ts.map +1 -0
  263. package/dist/components/workspace/breadcrumbs-helpers.js +88 -0
  264. package/dist/components/workspace/index.d.ts +16 -0
  265. package/dist/components/workspace/index.d.ts.map +1 -0
  266. package/dist/components/workspace/index.js +14 -0
  267. package/dist/components/workspace/manifest-nav.d.ts +200 -0
  268. package/dist/components/workspace/manifest-nav.d.ts.map +1 -0
  269. package/dist/components/workspace/manifest-nav.js +408 -0
  270. package/dist/components/workspace/nav-helpers.d.ts +36 -0
  271. package/dist/components/workspace/nav-helpers.d.ts.map +1 -0
  272. package/dist/components/workspace/nav-helpers.js +60 -0
  273. package/dist/components/workspace/server/__tests__/compose-availability.test.js +383 -0
  274. package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts +78 -0
  275. package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts.map +1 -0
  276. package/dist/components/workspace/server/__tests__/typed-context-fixture.js +104 -0
  277. package/dist/components/workspace/server/compose-availability.d.ts +73 -0
  278. package/dist/components/workspace/server/compose-availability.d.ts.map +1 -0
  279. package/dist/components/workspace/server/compose-availability.js +114 -0
  280. package/dist/components/workspace/server/index.d.ts +13 -0
  281. package/dist/components/workspace/server/index.d.ts.map +1 -0
  282. package/dist/components/workspace/server/index.js +11 -0
  283. package/dist/components/workspace/server/types.d.ts +108 -0
  284. package/dist/components/workspace/server/types.d.ts.map +1 -0
  285. package/dist/components/workspace/server/types.js +11 -0
  286. package/dist/components/workspace/tools-dock/ToolsDock.svelte +565 -0
  287. package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts +14 -0
  288. package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts.map +1 -0
  289. package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts +143 -0
  290. package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts.map +1 -0
  291. package/dist/components/workspace/tools-dock/define-tools-dock.svelte.js +487 -0
  292. package/dist/components/workspace/tools-dock/use-tools-dock.d.ts +41 -0
  293. package/dist/components/workspace/tools-dock/use-tools-dock.d.ts.map +1 -0
  294. package/dist/components/workspace/tools-dock/use-tools-dock.js +50 -0
  295. package/dist/components/workspace/types.d.ts +372 -0
  296. package/dist/components/workspace/types.d.ts.map +1 -0
  297. package/dist/components/workspace/types.js +6 -0
  298. package/dist/hooks/index.d.ts +11 -0
  299. package/dist/hooks/index.d.ts.map +1 -0
  300. package/dist/hooks/index.js +10 -0
  301. package/dist/hooks/useAppState.svelte.d.ts +46 -0
  302. package/dist/hooks/useAppState.svelte.d.ts.map +1 -0
  303. package/dist/hooks/useAppState.svelte.js +59 -0
  304. package/dist/hooks/useAuth.svelte.d.ts +41 -0
  305. package/dist/hooks/useAuth.svelte.d.ts.map +1 -0
  306. package/dist/hooks/useAuth.svelte.js +43 -0
  307. package/dist/hooks/useLLM.svelte.d.ts +69 -0
  308. package/dist/hooks/useLLM.svelte.d.ts.map +1 -0
  309. package/dist/hooks/useLLM.svelte.js +85 -0
  310. package/dist/hooks/useSTT.svelte.d.ts +68 -0
  311. package/dist/hooks/useSTT.svelte.d.ts.map +1 -0
  312. package/dist/hooks/useSTT.svelte.js +97 -0
  313. package/dist/hooks/useSocket.svelte.d.ts +45 -0
  314. package/dist/hooks/useSocket.svelte.d.ts.map +1 -0
  315. package/dist/hooks/useSocket.svelte.js +54 -0
  316. package/dist/hooks/useTTS.svelte.d.ts +65 -0
  317. package/dist/hooks/useTTS.svelte.d.ts.map +1 -0
  318. package/dist/hooks/useTTS.svelte.js +93 -0
  319. package/dist/hooks/useTheme.d.ts +13 -0
  320. package/dist/hooks/useTheme.d.ts.map +1 -0
  321. package/dist/hooks/useTheme.js +16 -0
  322. package/dist/i18n/__tests__/server.spec.js +50 -0
  323. package/dist/i18n/server.d.ts +47 -0
  324. package/dist/i18n/server.d.ts.map +1 -0
  325. package/dist/i18n/server.js +58 -0
  326. package/dist/i18n/strings.forms.d.ts +33 -0
  327. package/dist/i18n/strings.forms.d.ts.map +1 -0
  328. package/dist/i18n/strings.forms.js +54 -0
  329. package/dist/i18n/strings.workspace.d.ts +34 -0
  330. package/dist/i18n/strings.workspace.d.ts.map +1 -0
  331. package/dist/i18n/strings.workspace.js +40 -0
  332. package/dist/index.d.ts +18 -0
  333. package/dist/index.d.ts.map +1 -0
  334. package/dist/index.js +23 -0
  335. package/dist/state/__tests__/warm-clients.test.js +40 -0
  336. package/dist/state/app-state.d.ts +308 -0
  337. package/dist/state/app-state.d.ts.map +1 -0
  338. package/dist/state/app-state.js +64 -0
  339. package/dist/state/app-state.svelte.d.ts +196 -0
  340. package/dist/state/app-state.svelte.d.ts.map +1 -0
  341. package/dist/state/app-state.svelte.js +774 -0
  342. package/dist/state/context.d.ts +23 -0
  343. package/dist/state/context.d.ts.map +1 -0
  344. package/dist/state/context.js +32 -0
  345. package/dist/state/form-context.d.ts +59 -0
  346. package/dist/state/form-context.d.ts.map +1 -0
  347. package/dist/state/form-context.js +31 -0
  348. package/dist/state/form-group-context.d.ts +13 -0
  349. package/dist/state/form-group-context.d.ts.map +1 -0
  350. package/dist/state/form-group-context.js +28 -0
  351. package/dist/state/index.d.ts +9 -0
  352. package/dist/state/index.d.ts.map +1 -0
  353. package/dist/state/index.js +8 -0
  354. package/dist/state/warm-clients.d.ts +136 -0
  355. package/dist/state/warm-clients.d.ts.map +1 -0
  356. package/dist/state/warm-clients.js +231 -0
  357. package/package.json +137 -0
@@ -0,0 +1,308 @@
1
+ /**
2
+ * App state types and initial state
3
+ *
4
+ * Framework-agnostic state shape - Svelte bindings are in app-state.svelte.ts
5
+ */
6
+ import type { User } from '@happyvertical/smrt-types';
7
+ import type { BrowserAICapabilities, DownloadProgressInfo, InitState, LLMAdapter, STTAdapter, TTSAdapter } from '../browser-ai/index.js';
8
+ export type { User } from '@happyvertical/smrt-types';
9
+ /**
10
+ * App mode determines which features are enabled
11
+ * - 'default': Standard components, no AI features
12
+ * - 'smrt': AI-enhanced features enabled
13
+ */
14
+ export type AppMode = 'default' | 'smrt';
15
+ /**
16
+ * How the current mode was determined
17
+ */
18
+ export type ModeSource = 'explicit' | 'auto' | 'toggled';
19
+ /**
20
+ * User preferences for AI features
21
+ */
22
+ export interface UserPreferences {
23
+ /** Preferred STT backend */
24
+ preferredSTT?: 'browser-speech' | 'whisper-cpp' | 'whisper-wasm';
25
+ /** Preferred LLM backend */
26
+ preferredLLM?: 'webllm' | 'transformers-llm';
27
+ /** Default LLM model */
28
+ defaultLLMModel?: string;
29
+ /** Auto-enable smrt mode when available */
30
+ autoEnableSmrt?: boolean;
31
+ }
32
+ /**
33
+ * When to preload AI models
34
+ *
35
+ * - 'none': Don't preload, initialize on first use
36
+ * - 'eager': Preload immediately when SmrtProvider mounts
37
+ * - 'idle': Preload during browser idle time (requestIdleCallback)
38
+ * - 'on-visible': Preload when a SMRT component becomes visible
39
+ */
40
+ export type AIPreloadStrategy = 'none' | 'eager' | 'idle' | 'on-visible';
41
+ /**
42
+ * STT adapter configuration
43
+ */
44
+ export interface STTConfig {
45
+ /** Which STT backend to use */
46
+ type: 'browser-speech' | 'whisper-cpp' | 'whisper-wasm';
47
+ /** Whisper model to use (for whisper-cpp/whisper-wasm) */
48
+ model?: string;
49
+ /** Whether to enable this adapter */
50
+ enabled?: boolean;
51
+ /**
52
+ * Allow loading models from local /models/ path.
53
+ * When false (default), models load from HuggingFace Hub CDN.
54
+ */
55
+ allowLocalModels?: boolean;
56
+ }
57
+ /**
58
+ * TTS adapter configuration
59
+ */
60
+ export interface TTSConfig {
61
+ /** Which TTS backend to use */
62
+ type: 'browser-synthesis';
63
+ /** Preferred voice name */
64
+ voice?: string;
65
+ /** Whether to enable this adapter */
66
+ enabled?: boolean;
67
+ }
68
+ /**
69
+ * LLM adapter configuration
70
+ */
71
+ export interface LLMConfig {
72
+ /** Which LLM backend to use */
73
+ type: 'webllm' | 'transformers-llm';
74
+ /** Model to load */
75
+ model?: string;
76
+ /** Whether to enable this adapter */
77
+ enabled?: boolean;
78
+ }
79
+ /**
80
+ * Complete AI configuration for SmrtProvider.
81
+ *
82
+ * Configures preloading strategy and which AI adapters to initialize.
83
+ * Uses a warm client cache to persist adapters across navigation.
84
+ *
85
+ * @example
86
+ * ```svelte
87
+ * <SmrtProvider
88
+ * ai={{
89
+ * preload: 'idle',
90
+ * stt: { type: 'whisper-cpp', model: 'tiny.en' },
91
+ * tts: { type: 'browser-synthesis' },
92
+ * llm: { type: 'webllm', model: 'Llama-3.1-8B-Instruct' },
93
+ * showLoadingOverlay: true,
94
+ * loadingMessage: 'Preparing AI...'
95
+ * }}
96
+ * >
97
+ * ```
98
+ */
99
+ export interface AIConfig {
100
+ /**
101
+ * When to preload models.
102
+ * - 'none': Don't preload, initialize on first use
103
+ * - 'eager': Preload immediately when SmrtProvider mounts
104
+ * - 'idle': Preload during browser idle time (recommended)
105
+ * - 'on-visible': Preload when a SMRT AI component becomes visible
106
+ * @default 'idle'
107
+ */
108
+ preload?: AIPreloadStrategy;
109
+ /** STT (Speech-to-Text) configuration */
110
+ stt?: STTConfig;
111
+ /** TTS (Text-to-Speech) configuration */
112
+ tts?: TTSConfig;
113
+ /** LLM (Large Language Model) configuration */
114
+ llm?: LLMConfig;
115
+ /**
116
+ * Show a loading overlay while models download.
117
+ * The overlay shows progress and can be dismissed.
118
+ * @default true
119
+ */
120
+ showLoadingOverlay?: boolean;
121
+ /** Custom message to show in the loading overlay */
122
+ loadingMessage?: string;
123
+ }
124
+ /**
125
+ * Overall AI loading state for the loading overlay
126
+ */
127
+ export type AILoadingPhase = 'idle' | 'checking' | 'downloading' | 'initializing' | 'ready' | 'error';
128
+ /**
129
+ * AI loading state details
130
+ */
131
+ export interface AILoadingState {
132
+ /** Current loading phase */
133
+ phase: AILoadingPhase;
134
+ /** What's currently loading (e.g., 'whisper-cpp', 'webllm') */
135
+ currentAdapter: string | null;
136
+ /** Overall progress percentage (0-100) */
137
+ overallProgress: number;
138
+ /** Human-readable status message */
139
+ message: string;
140
+ /** Adapters that have been loaded */
141
+ loaded: string[];
142
+ /** Adapters that failed to load */
143
+ failed: string[];
144
+ /** Error if phase is 'error' */
145
+ error: Error | null;
146
+ }
147
+ /**
148
+ * User session information
149
+ */
150
+ export interface UserSession {
151
+ /** The smrt-users User object (null if not authenticated) */
152
+ user: User | null;
153
+ /** Whether user is authenticated (derived from user !== null) */
154
+ isAuthenticated: boolean;
155
+ /** Resolved permissions (from PermissionResolver) */
156
+ permissions: string[];
157
+ /** User preferences for AI features */
158
+ preferences: UserPreferences;
159
+ }
160
+ /**
161
+ * STT adapter state
162
+ */
163
+ export interface STTState {
164
+ /** The adapter instance */
165
+ adapter: STTAdapter | null;
166
+ /** Initialization state */
167
+ initState: InitState;
168
+ /** Download progress if initializing */
169
+ downloadProgress: DownloadProgressInfo | null;
170
+ /** Whether currently listening */
171
+ isListening: boolean;
172
+ /** Last final transcribed text */
173
+ lastResult: string;
174
+ /** Current interim result (updates during speech) */
175
+ interimResult: string;
176
+ /** Last error */
177
+ error: Error | null;
178
+ }
179
+ /**
180
+ * TTS adapter state
181
+ */
182
+ export interface TTSState {
183
+ /** The adapter instance */
184
+ adapter: TTSAdapter | null;
185
+ /** Initialization state */
186
+ initState: InitState;
187
+ /** Download progress if initializing */
188
+ downloadProgress: DownloadProgressInfo | null;
189
+ /** Whether currently speaking */
190
+ isSpeaking: boolean;
191
+ /** Whether paused */
192
+ isPaused: boolean;
193
+ /** Last error */
194
+ error: Error | null;
195
+ }
196
+ /**
197
+ * LLM adapter state
198
+ */
199
+ export interface LLMState {
200
+ /** The adapter instance */
201
+ adapter: LLMAdapter | null;
202
+ /** Initialization state */
203
+ initState: InitState;
204
+ /** Download progress if initializing */
205
+ downloadProgress: DownloadProgressInfo | null;
206
+ /** Currently loaded model */
207
+ currentModel: string | null;
208
+ /** Whether currently generating */
209
+ isGenerating: boolean;
210
+ /** Last error */
211
+ error: Error | null;
212
+ }
213
+ /**
214
+ * All AI adapter states
215
+ */
216
+ export interface AIState {
217
+ stt: STTState;
218
+ tts: TTSState;
219
+ llm: LLMState;
220
+ }
221
+ /**
222
+ * WebSocket connection status
223
+ */
224
+ export type SocketStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';
225
+ /**
226
+ * WebSocket reconnection settings
227
+ */
228
+ export interface SocketReconnectConfig {
229
+ /** Whether to automatically reconnect on disconnect (default: true) */
230
+ enabled?: boolean;
231
+ /** Maximum number of reconnection attempts (default: 5) */
232
+ maxAttempts?: number;
233
+ /** Base delay in ms for exponential backoff (default: 1000) */
234
+ baseDelay?: number;
235
+ }
236
+ /**
237
+ * WebSocket configuration
238
+ */
239
+ export interface SocketConfig {
240
+ /** WebSocket URL (wss:// or ws://) */
241
+ url: string;
242
+ /** Reconnection settings */
243
+ reconnect?: SocketReconnectConfig;
244
+ /** Called when connection opens */
245
+ onOpen?: () => void;
246
+ /** Called when a message is received */
247
+ onMessage?: (data: unknown) => void;
248
+ /** Called when connection closes */
249
+ onClose?: (event: CloseEvent) => void;
250
+ /** Called on connection error */
251
+ onError?: (event: Event) => void;
252
+ }
253
+ /**
254
+ * WebSocket connection state
255
+ */
256
+ export interface SocketState {
257
+ /** Current connection status */
258
+ status: SocketStatus;
259
+ /** Number of reconnection attempts made */
260
+ reconnectAttempts: number;
261
+ /** Last connection error */
262
+ lastError: Event | null;
263
+ }
264
+ /**
265
+ * Complete app state shape
266
+ */
267
+ export interface SmrtAppState {
268
+ /** Current app mode */
269
+ mode: AppMode;
270
+ /** How mode was determined */
271
+ modeSource: ModeSource;
272
+ /** User session */
273
+ session: UserSession;
274
+ /** Detected browser capabilities */
275
+ capabilities: BrowserAICapabilities | null;
276
+ /** AI adapter states */
277
+ ai: AIState;
278
+ /** AI loading state (for preload/overlay) */
279
+ aiLoading: AILoadingState;
280
+ /** WebSocket connection state */
281
+ socket: SocketState;
282
+ /** Global error */
283
+ error: Error | null;
284
+ /** Whether state has been initialized */
285
+ initialized: boolean;
286
+ }
287
+ /**
288
+ * Create initial app state
289
+ */
290
+ export declare function createInitialState(): SmrtAppState;
291
+ /**
292
+ * Options for creating app state
293
+ */
294
+ export interface CreateAppStateOptions {
295
+ /** Initial mode (overrides auto-detection) */
296
+ initialMode?: AppMode;
297
+ /** Initial session data */
298
+ session?: Partial<UserSession>;
299
+ /** AI preloading and warm client configuration */
300
+ ai?: AIConfig;
301
+ /** Callback when capabilities are detected */
302
+ onCapabilitiesDetected?: (caps: BrowserAICapabilities) => void;
303
+ /** Callback when mode changes */
304
+ onModeChange?: (mode: AppMode, source: ModeSource) => void;
305
+ /** Callback when AI loading state changes */
306
+ onAILoadingChange?: (state: AILoadingState) => void;
307
+ }
308
+ //# sourceMappingURL=app-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-state.d.ts","sourceRoot":"","sources":["../../src/state/app-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,wBAAwB,CAAC;AAKhC,YAAY,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,YAAY,CAAC,EAAE,gBAAgB,GAAG,aAAa,GAAG,cAAc,CAAC;IACjE,4BAA4B;IAC5B,YAAY,CAAC,EAAE,QAAQ,GAAG,kBAAkB,CAAC;IAC7C,wBAAwB;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,IAAI,EAAE,gBAAgB,GAAG,aAAa,GAAG,cAAc,CAAC;IACxD,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,IAAI,EAAE,QAAQ,GAAG,kBAAkB,CAAC;IACpC,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,yCAAyC;IACzC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,yCAAyC;IACzC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,UAAU,GACV,aAAa,GACb,cAAc,GACd,OAAO,GACP,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,KAAK,EAAE,cAAc,CAAC;IACtB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mCAAmC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gCAAgC;IAChC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,iEAAiE;IACjE,eAAe,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uCAAuC;IACvC,WAAW,EAAE,eAAe,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2BAA2B;IAC3B,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,2BAA2B;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,wCAAwC;IACxC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2BAA2B;IAC3B,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,2BAA2B;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,wCAAwC;IACxC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2BAA2B;IAC3B,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,2BAA2B;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,wCAAwC;IACxC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,6BAA6B;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,YAAY,GACZ,WAAW,GACX,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,wCAAwC;IACxC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,8BAA8B;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,oCAAoC;IACpC,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC3C,wBAAwB;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,6CAA6C;IAC7C,SAAS,EAAE,cAAc,CAAC;IAC1B,iCAAiC;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,mBAAmB;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAuDjD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,kDAAkD;IAClD,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,8CAA8C;IAC9C,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/D,iCAAiC;IACjC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3D,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACrD"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * App state types and initial state
3
+ *
4
+ * Framework-agnostic state shape - Svelte bindings are in app-state.svelte.ts
5
+ */
6
+ /**
7
+ * Create initial app state
8
+ */
9
+ export function createInitialState() {
10
+ return {
11
+ mode: 'default',
12
+ modeSource: 'auto',
13
+ session: {
14
+ user: null,
15
+ isAuthenticated: false,
16
+ permissions: [],
17
+ preferences: {},
18
+ },
19
+ capabilities: null,
20
+ ai: {
21
+ stt: {
22
+ adapter: null,
23
+ initState: 'uninitialized',
24
+ downloadProgress: null,
25
+ isListening: false,
26
+ lastResult: '',
27
+ interimResult: '',
28
+ error: null,
29
+ },
30
+ tts: {
31
+ adapter: null,
32
+ initState: 'uninitialized',
33
+ downloadProgress: null,
34
+ isSpeaking: false,
35
+ isPaused: false,
36
+ error: null,
37
+ },
38
+ llm: {
39
+ adapter: null,
40
+ initState: 'uninitialized',
41
+ downloadProgress: null,
42
+ currentModel: null,
43
+ isGenerating: false,
44
+ error: null,
45
+ },
46
+ },
47
+ aiLoading: {
48
+ phase: 'idle',
49
+ currentAdapter: null,
50
+ overallProgress: 0,
51
+ message: '',
52
+ loaded: [],
53
+ failed: [],
54
+ error: null,
55
+ },
56
+ socket: {
57
+ status: 'disconnected',
58
+ reconnectAttempts: 0,
59
+ lastError: null,
60
+ },
61
+ error: null,
62
+ initialized: false,
63
+ };
64
+ }
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Svelte 5 reactive app state
3
+ *
4
+ * Uses runes ($state, $derived) for reactivity.
5
+ * This is the Svelte-specific binding layer on top of app-state.ts
6
+ */
7
+ import { type GetLLMOptions, type GetSTTOptions, type GetTTSOptions, type LLMAdapter, type STTAdapter, type TTSAdapter, type TTSOptions } from '../browser-ai/index.js';
8
+ import { type AIConfig, type AILoadingState, type AppMode, type CreateAppStateOptions, type ModeSource, type SmrtAppState, type SocketConfig, type User, type UserSession } from './app-state.js';
9
+ /**
10
+ * Reactive app state manager for Svelte 5
11
+ */
12
+ export declare class SmrtAppStateManager {
13
+ private _state;
14
+ private options;
15
+ private _aiConfig;
16
+ private _preloadScheduled;
17
+ private _idleCallbackId;
18
+ private _socket;
19
+ private _socketConfig;
20
+ private _reconnectTimeout;
21
+ private _subscribedSTTAdapters;
22
+ private _subscribedTTSAdapters;
23
+ constructor(options?: CreateAppStateOptions);
24
+ /**
25
+ * Get the current socket configuration (for reconnection)
26
+ */
27
+ get socketConfig(): SocketConfig | null;
28
+ /**
29
+ * Get the current state (readonly)
30
+ */
31
+ get state(): Readonly<SmrtAppState>;
32
+ /**
33
+ * Get the current AI configuration
34
+ */
35
+ get aiConfig(): AIConfig | null;
36
+ /**
37
+ * Get the current AI loading state
38
+ */
39
+ get aiLoading(): Readonly<AILoadingState>;
40
+ /**
41
+ * Initialize the app state
42
+ * Detects capabilities and sets initial mode
43
+ * Note: This is a no-op during SSR as browser-ai requires browser environment
44
+ */
45
+ initialize(): Promise<void>;
46
+ /**
47
+ * Set or update AI configuration
48
+ */
49
+ setAIConfig(config: AIConfig): void;
50
+ /**
51
+ * Schedule preloading based on the configured strategy
52
+ */
53
+ private schedulePreload;
54
+ /**
55
+ * Trigger preloading (called by components for 'on-visible' strategy)
56
+ */
57
+ triggerPreload(): void;
58
+ /**
59
+ * Execute the preloading of configured adapters
60
+ */
61
+ private executePreload;
62
+ /**
63
+ * Update the AI loading state
64
+ */
65
+ private updateLoadingState;
66
+ /**
67
+ * Set the app mode
68
+ */
69
+ setMode(mode: AppMode, source?: ModeSource): void;
70
+ /**
71
+ * Toggle between default and smrt modes
72
+ */
73
+ toggleMode(): void;
74
+ /**
75
+ * Update user session
76
+ */
77
+ updateSession(session: Partial<UserSession>): void;
78
+ /**
79
+ * Set user permissions
80
+ */
81
+ setPermissions(permissions: string[]): void;
82
+ /**
83
+ * Check if user has a permission
84
+ */
85
+ hasPermission(permission: string): boolean;
86
+ /**
87
+ * Check if user has all permissions
88
+ */
89
+ hasAllPermissions(permissions: string[]): boolean;
90
+ /**
91
+ * Check if user has any of the permissions
92
+ */
93
+ hasAnyPermission(permissions: string[]): boolean;
94
+ /**
95
+ * Set the current user and permissions
96
+ * Called by SmrtProvider when user prop changes
97
+ */
98
+ setUser(user: User | null, permissions?: string[]): void;
99
+ /**
100
+ * Connect to a WebSocket server
101
+ */
102
+ connectSocket(config: SocketConfig): void;
103
+ /**
104
+ * Disconnect from the WebSocket server
105
+ */
106
+ disconnectSocket(): void;
107
+ /**
108
+ * Send a message through the WebSocket
109
+ */
110
+ sendMessage(data: unknown): void;
111
+ /**
112
+ * Schedule a reconnection attempt with exponential backoff
113
+ */
114
+ private scheduleReconnect;
115
+ /**
116
+ * Initialize STT adapter
117
+ * Uses warm client cache to avoid re-downloading models
118
+ */
119
+ initializeSTT(options?: GetSTTOptions): Promise<STTAdapter>;
120
+ /**
121
+ * Subscribe to STT adapter events
122
+ * Only subscribes once per adapter instance to prevent duplicate listeners
123
+ */
124
+ private subscribeToSTTEvents;
125
+ /**
126
+ * Start STT listening
127
+ */
128
+ startListening(options?: Parameters<STTAdapter['start']>[0]): Promise<void>;
129
+ /**
130
+ * Stop STT listening
131
+ */
132
+ stopListening(): Promise<void>;
133
+ /**
134
+ * Initialize TTS adapter
135
+ * Uses warm client cache to avoid re-initialization
136
+ */
137
+ initializeTTS(options?: GetTTSOptions): Promise<TTSAdapter>;
138
+ /**
139
+ * Subscribe to TTS adapter events
140
+ * Only subscribes once per adapter instance to prevent duplicate listeners
141
+ */
142
+ private subscribeToTTSEvents;
143
+ /**
144
+ * Speak text using TTS
145
+ */
146
+ speak(text: string, options?: TTSOptions): Promise<void>;
147
+ /**
148
+ * Stop TTS speech
149
+ */
150
+ stopSpeaking(): void;
151
+ /**
152
+ * Pause TTS speech
153
+ */
154
+ pauseSpeaking(): void;
155
+ /**
156
+ * Resume TTS speech
157
+ */
158
+ resumeSpeaking(): void;
159
+ /**
160
+ * Get available TTS voices
161
+ */
162
+ getTTSVoices(): import("../browser-ai/index.js").TTSVoice[];
163
+ /**
164
+ * Initialize LLM adapter
165
+ * Uses warm client cache to avoid re-downloading models
166
+ */
167
+ initializeLLM(modelId?: string, options?: GetLLMOptions): Promise<LLMAdapter>;
168
+ /**
169
+ * Send a message to the LLM
170
+ */
171
+ chat(text: string, options?: {
172
+ systemPrompt?: string;
173
+ onToken?: (token: string) => void;
174
+ }): Promise<string>;
175
+ /**
176
+ * Unload LLM model to free memory
177
+ */
178
+ unloadLLM(): Promise<void>;
179
+ /**
180
+ * Dispose of all resources
181
+ */
182
+ dispose(): Promise<void>;
183
+ /**
184
+ * Check if AI is ready to use (all configured adapters loaded)
185
+ */
186
+ get isAIReady(): boolean;
187
+ /**
188
+ * Check if AI is currently loading
189
+ */
190
+ get isAILoading(): boolean;
191
+ }
192
+ /**
193
+ * Create a new reactive app state manager
194
+ */
195
+ export declare function createAppState(options?: CreateAppStateOptions): SmrtAppStateManager;
196
+ //# sourceMappingURL=app-state.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-state.svelte.d.ts","sourceRoot":"","sources":["../../src/state/app-state.svelte.ts"],"names":[],"mappings":"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"}