@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.
- package/AGENTS.md +317 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +7 -0
- package/README.md +185 -0
- package/dist/Provider.svelte +204 -0
- package/dist/Provider.svelte.d.ts +73 -0
- package/dist/Provider.svelte.d.ts.map +1 -0
- package/dist/__tests__/app-state.test.js +156 -0
- package/dist/__tests__/warm-clients.test.js +186 -0
- package/dist/browser-ai/adapters/llm/factory.d.ts +38 -0
- package/dist/browser-ai/adapters/llm/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/factory.js +91 -0
- package/dist/browser-ai/adapters/llm/index.d.ts +7 -0
- package/dist/browser-ai/adapters/llm/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/index.js +6 -0
- package/dist/browser-ai/adapters/llm/types.d.ts +182 -0
- package/dist/browser-ai/adapters/llm/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/types.js +43 -0
- package/dist/browser-ai/adapters/llm/webllm.d.ts +33 -0
- package/dist/browser-ai/adapters/llm/webllm.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/webllm.js +225 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts +31 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/browser-speech.js +217 -0
- package/dist/browser-ai/adapters/stt/factory.d.ts +49 -0
- package/dist/browser-ai/adapters/stt/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/factory.js +110 -0
- package/dist/browser-ai/adapters/stt/index.d.ts +9 -0
- package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/index.js +8 -0
- package/dist/browser-ai/adapters/stt/types.d.ts +154 -0
- package/dist/browser-ai/adapters/stt/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/types.js +4 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts +46 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.js +348 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts +51 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.js +380 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts +42 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.js +235 -0
- package/dist/browser-ai/adapters/tts/factory.d.ts +53 -0
- package/dist/browser-ai/adapters/tts/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/factory.js +92 -0
- package/dist/browser-ai/adapters/tts/index.d.ts +7 -0
- package/dist/browser-ai/adapters/tts/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/index.js +6 -0
- package/dist/browser-ai/adapters/tts/types.d.ts +140 -0
- package/dist/browser-ai/adapters/tts/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/types.js +4 -0
- package/dist/browser-ai/capabilities/detector.d.ts +38 -0
- package/dist/browser-ai/capabilities/detector.d.ts.map +1 -0
- package/dist/browser-ai/capabilities/detector.js +211 -0
- package/dist/browser-ai/core/errors.d.ts +62 -0
- package/dist/browser-ai/core/errors.d.ts.map +1 -0
- package/dist/browser-ai/core/errors.js +92 -0
- package/dist/browser-ai/core/index.d.ts +6 -0
- package/dist/browser-ai/core/index.d.ts.map +1 -0
- package/dist/browser-ai/core/index.js +5 -0
- package/dist/browser-ai/core/types.d.ts +115 -0
- package/dist/browser-ai/core/types.d.ts.map +1 -0
- package/dist/browser-ai/core/types.js +34 -0
- package/dist/browser-ai/index.d.ts +12 -0
- package/dist/browser-ai/index.d.ts.map +1 -0
- package/dist/browser-ai/index.js +16 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte +77 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts +16 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte +57 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts +15 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte +141 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts +15 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte +379 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts +9 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte +200 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts +16 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/index.d.ts +15 -0
- package/dist/browser-ai/svelte/index.d.ts.map +1 -0
- package/dist/browser-ai/svelte/index.js +28 -0
- package/dist/browser-ai/ui.d.ts +16 -0
- package/dist/browser-ai/ui.d.ts.map +1 -0
- package/dist/browser-ai/ui.js +67 -0
- package/dist/components/admin/AgentAdminPanel.svelte +111 -0
- package/dist/components/admin/AgentAdminPanel.svelte.d.ts +25 -0
- package/dist/components/admin/AgentAdminPanel.svelte.d.ts.map +1 -0
- package/dist/components/admin/AgentAdminTabs.svelte +280 -0
- package/dist/components/admin/AgentAdminTabs.svelte.d.ts +23 -0
- package/dist/components/admin/AgentAdminTabs.svelte.d.ts.map +1 -0
- package/dist/components/admin/AgentSettingsShell.svelte +257 -0
- package/dist/components/admin/AgentSettingsShell.svelte.d.ts +33 -0
- package/dist/components/admin/AgentSettingsShell.svelte.d.ts.map +1 -0
- package/dist/components/admin/index.d.ts +5 -0
- package/dist/components/admin/index.d.ts.map +1 -0
- package/dist/components/admin/index.js +6 -0
- package/dist/components/forms/AddressInput.svelte +500 -0
- package/dist/components/forms/AddressInput.svelte.d.ts +36 -0
- package/dist/components/forms/AddressInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/CheckboxInput.svelte +208 -0
- package/dist/components/forms/CheckboxInput.svelte.d.ts +20 -0
- package/dist/components/forms/CheckboxInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/DateRangeInput.svelte +628 -0
- package/dist/components/forms/DateRangeInput.svelte.d.ts +33 -0
- package/dist/components/forms/DateRangeInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/DateTimeInput.svelte +521 -0
- package/dist/components/forms/DateTimeInput.svelte.d.ts +24 -0
- package/dist/components/forms/DateTimeInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/FileUpload.svelte +358 -0
- package/dist/components/forms/FileUpload.svelte.d.ts +22 -0
- package/dist/components/forms/FileUpload.svelte.d.ts.map +1 -0
- package/dist/components/forms/Form.svelte +771 -0
- package/dist/components/forms/Form.svelte.d.ts +26 -0
- package/dist/components/forms/Form.svelte.d.ts.map +1 -0
- package/dist/components/forms/FormGroup.svelte +86 -0
- package/dist/components/forms/FormGroup.svelte.d.ts +13 -0
- package/dist/components/forms/FormGroup.svelte.d.ts.map +1 -0
- package/dist/components/forms/FormMicButton.svelte +179 -0
- package/dist/components/forms/FormMicButton.svelte.d.ts +10 -0
- package/dist/components/forms/FormMicButton.svelte.d.ts.map +1 -0
- package/dist/components/forms/Input.svelte +83 -0
- package/dist/components/forms/Input.svelte.d.ts +9 -0
- package/dist/components/forms/Input.svelte.d.ts.map +1 -0
- package/dist/components/forms/MeasurementInput.svelte +505 -0
- package/dist/components/forms/MeasurementInput.svelte.d.ts +35 -0
- package/dist/components/forms/MeasurementInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/MoneyInput.svelte +412 -0
- package/dist/components/forms/MoneyInput.svelte.d.ts +30 -0
- package/dist/components/forms/MoneyInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/NumberInput.svelte +310 -0
- package/dist/components/forms/NumberInput.svelte.d.ts +28 -0
- package/dist/components/forms/NumberInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/PhoneInput.svelte +530 -0
- package/dist/components/forms/PhoneInput.svelte.d.ts +22 -0
- package/dist/components/forms/PhoneInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/SearchInput.svelte +358 -0
- package/dist/components/forms/SearchInput.svelte.d.ts +33 -0
- package/dist/components/forms/SearchInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Select.svelte +83 -0
- package/dist/components/forms/Select.svelte.d.ts +11 -0
- package/dist/components/forms/Select.svelte.d.ts.map +1 -0
- package/dist/components/forms/SelectInput.svelte +254 -0
- package/dist/components/forms/SelectInput.svelte.d.ts +25 -0
- package/dist/components/forms/SelectInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/TextInput.svelte +415 -0
- package/dist/components/forms/TextInput.svelte.d.ts +26 -0
- package/dist/components/forms/TextInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Textarea.svelte +85 -0
- package/dist/components/forms/Textarea.svelte.d.ts +10 -0
- package/dist/components/forms/Textarea.svelte.d.ts.map +1 -0
- package/dist/components/forms/TextareaInput.svelte +386 -0
- package/dist/components/forms/TextareaInput.svelte.d.ts +26 -0
- package/dist/components/forms/TextareaInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Toggle.svelte +217 -0
- package/dist/components/forms/Toggle.svelte.d.ts +37 -0
- package/dist/components/forms/Toggle.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/AddressInput.behavior.test.js +122 -0
- package/dist/components/forms/__tests__/CheckboxInput.test.js +92 -0
- package/dist/components/forms/__tests__/DateRangeInput.behavior.test.js +135 -0
- package/dist/components/forms/__tests__/DateTimeInput.behavior.test.js +103 -0
- package/dist/components/forms/__tests__/FileUpload.test.js +90 -0
- package/dist/components/forms/__tests__/Form.behavior.test.js +137 -0
- package/dist/components/forms/__tests__/Form.test.js +58 -0
- package/dist/components/forms/__tests__/FormGroup.test.js +48 -0
- package/dist/components/forms/__tests__/FormMicButton.test.js +86 -0
- package/dist/components/forms/__tests__/Input.test.js +49 -0
- package/dist/components/forms/__tests__/MeasurementInput.behavior.test.js +129 -0
- package/dist/components/forms/__tests__/MoneyInput.behavior.test.js +124 -0
- package/dist/components/forms/__tests__/NumberInput.behavior.test.js +141 -0
- package/dist/components/forms/__tests__/PhoneInput.behavior.test.js +96 -0
- package/dist/components/forms/__tests__/SearchInput.test.js +79 -0
- package/dist/components/forms/__tests__/Select.test.js +37 -0
- package/dist/components/forms/__tests__/SelectInput.behavior.test.js +132 -0
- package/dist/components/forms/__tests__/TextInput.behavior.test.js +131 -0
- package/dist/components/forms/__tests__/Textarea.test.js +39 -0
- package/dist/components/forms/__tests__/TextareaInput.behavior.test.js +96 -0
- package/dist/components/forms/__tests__/Toggle.test.js +87 -0
- package/dist/components/forms/__tests__/composite-inputs-a11y.test.js +69 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte +16 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts +9 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte +33 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts +12 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/rich-inputs-a11y.test.js +87 -0
- package/dist/components/forms/index.d.ts +25 -0
- package/dist/components/forms/index.d.ts.map +1 -0
- package/dist/components/forms/index.js +25 -0
- package/dist/components/forms/types.d.ts +33 -0
- package/dist/components/forms/types.d.ts.map +1 -0
- package/dist/components/forms/types.js +4 -0
- package/dist/components/module/ModulePanel.svelte +134 -0
- package/dist/components/module/ModulePanel.svelte.d.ts +22 -0
- package/dist/components/module/ModulePanel.svelte.d.ts.map +1 -0
- package/dist/components/module/index.d.ts +5 -0
- package/dist/components/module/index.d.ts.map +1 -0
- package/dist/components/module/index.js +4 -0
- package/dist/components/workspace/Breadcrumbs.svelte +141 -0
- package/dist/components/workspace/Breadcrumbs.svelte.d.ts +21 -0
- package/dist/components/workspace/Breadcrumbs.svelte.d.ts.map +1 -0
- package/dist/components/workspace/NavTree.svelte +354 -0
- package/dist/components/workspace/NavTree.svelte.d.ts +45 -0
- package/dist/components/workspace/NavTree.svelte.d.ts.map +1 -0
- package/dist/components/workspace/README.md +34 -0
- package/dist/components/workspace/RoleShell.svelte +309 -0
- package/dist/components/workspace/RoleShell.svelte.d.ts +91 -0
- package/dist/components/workspace/RoleShell.svelte.d.ts.map +1 -0
- package/dist/components/workspace/WorkspaceShell.svelte +951 -0
- package/dist/components/workspace/WorkspaceShell.svelte.d.ts +112 -0
- package/dist/components/workspace/WorkspaceShell.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/RoleShell.test.js +772 -0
- package/dist/components/workspace/__tests__/WorkspaceShell.test.js +630 -0
- package/dist/components/workspace/__tests__/breadcrumbs-helpers.test.js +141 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte +45 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts +21 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/define-tools-dock.test.js +1010 -0
- package/dist/components/workspace/__tests__/harness.svelte +25 -0
- package/dist/components/workspace/__tests__/harness.svelte.d.ts +14 -0
- package/dist/components/workspace/__tests__/harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/index.test.js +37 -0
- package/dist/components/workspace/__tests__/manifest-nav-helpers.test.js +24 -0
- package/dist/components/workspace/__tests__/manifest-nav.test.js +599 -0
- package/dist/components/workspace/__tests__/nav-helpers.test.js +95 -0
- package/dist/components/workspace/__tests__/render-harness.svelte +66 -0
- package/dist/components/workspace/__tests__/render-harness.svelte.d.ts +32 -0
- package/dist/components/workspace/__tests__/render-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/render-tools-dock.test.js +243 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte +58 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts +16 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte +41 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts +13 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/test-icon.svelte +17 -0
- package/dist/components/workspace/__tests__/test-icon.svelte.d.ts +19 -0
- package/dist/components/workspace/__tests__/test-icon.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte +38 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts +22 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts +65 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.js +115 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts +15 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.js +7 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture.test.js +115 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte +9 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts +19 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/use-harness.svelte +23 -0
- package/dist/components/workspace/__tests__/use-harness.svelte.d.ts +8 -0
- package/dist/components/workspace/__tests__/use-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/use-tools-dock.test.js +33 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte +43 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts +11 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/breadcrumbs-helpers.d.ts +44 -0
- package/dist/components/workspace/breadcrumbs-helpers.d.ts.map +1 -0
- package/dist/components/workspace/breadcrumbs-helpers.js +88 -0
- package/dist/components/workspace/index.d.ts +16 -0
- package/dist/components/workspace/index.d.ts.map +1 -0
- package/dist/components/workspace/index.js +14 -0
- package/dist/components/workspace/manifest-nav.d.ts +200 -0
- package/dist/components/workspace/manifest-nav.d.ts.map +1 -0
- package/dist/components/workspace/manifest-nav.js +408 -0
- package/dist/components/workspace/nav-helpers.d.ts +36 -0
- package/dist/components/workspace/nav-helpers.d.ts.map +1 -0
- package/dist/components/workspace/nav-helpers.js +60 -0
- package/dist/components/workspace/server/__tests__/compose-availability.test.js +383 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts +78 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts.map +1 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.js +104 -0
- package/dist/components/workspace/server/compose-availability.d.ts +73 -0
- package/dist/components/workspace/server/compose-availability.d.ts.map +1 -0
- package/dist/components/workspace/server/compose-availability.js +114 -0
- package/dist/components/workspace/server/index.d.ts +13 -0
- package/dist/components/workspace/server/index.d.ts.map +1 -0
- package/dist/components/workspace/server/index.js +11 -0
- package/dist/components/workspace/server/types.d.ts +108 -0
- package/dist/components/workspace/server/types.d.ts.map +1 -0
- package/dist/components/workspace/server/types.js +11 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte +565 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts +14 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts +143 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.js +487 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.d.ts +41 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.js +50 -0
- package/dist/components/workspace/types.d.ts +372 -0
- package/dist/components/workspace/types.d.ts.map +1 -0
- package/dist/components/workspace/types.js +6 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/useAppState.svelte.d.ts +46 -0
- package/dist/hooks/useAppState.svelte.d.ts.map +1 -0
- package/dist/hooks/useAppState.svelte.js +59 -0
- package/dist/hooks/useAuth.svelte.d.ts +41 -0
- package/dist/hooks/useAuth.svelte.d.ts.map +1 -0
- package/dist/hooks/useAuth.svelte.js +43 -0
- package/dist/hooks/useLLM.svelte.d.ts +69 -0
- package/dist/hooks/useLLM.svelte.d.ts.map +1 -0
- package/dist/hooks/useLLM.svelte.js +85 -0
- package/dist/hooks/useSTT.svelte.d.ts +68 -0
- package/dist/hooks/useSTT.svelte.d.ts.map +1 -0
- package/dist/hooks/useSTT.svelte.js +97 -0
- package/dist/hooks/useSocket.svelte.d.ts +45 -0
- package/dist/hooks/useSocket.svelte.d.ts.map +1 -0
- package/dist/hooks/useSocket.svelte.js +54 -0
- package/dist/hooks/useTTS.svelte.d.ts +65 -0
- package/dist/hooks/useTTS.svelte.d.ts.map +1 -0
- package/dist/hooks/useTTS.svelte.js +93 -0
- package/dist/hooks/useTheme.d.ts +13 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +16 -0
- package/dist/i18n/__tests__/server.spec.js +50 -0
- package/dist/i18n/server.d.ts +47 -0
- package/dist/i18n/server.d.ts.map +1 -0
- package/dist/i18n/server.js +58 -0
- package/dist/i18n/strings.forms.d.ts +33 -0
- package/dist/i18n/strings.forms.d.ts.map +1 -0
- package/dist/i18n/strings.forms.js +54 -0
- package/dist/i18n/strings.workspace.d.ts +34 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -0
- package/dist/i18n/strings.workspace.js +40 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/state/__tests__/warm-clients.test.js +40 -0
- package/dist/state/app-state.d.ts +308 -0
- package/dist/state/app-state.d.ts.map +1 -0
- package/dist/state/app-state.js +64 -0
- package/dist/state/app-state.svelte.d.ts +196 -0
- package/dist/state/app-state.svelte.d.ts.map +1 -0
- package/dist/state/app-state.svelte.js +774 -0
- package/dist/state/context.d.ts +23 -0
- package/dist/state/context.d.ts.map +1 -0
- package/dist/state/context.js +32 -0
- package/dist/state/form-context.d.ts +59 -0
- package/dist/state/form-context.d.ts.map +1 -0
- package/dist/state/form-context.js +31 -0
- package/dist/state/form-group-context.d.ts +13 -0
- package/dist/state/form-group-context.d.ts.map +1 -0
- package/dist/state/form-group-context.js +28 -0
- package/dist/state/index.d.ts +9 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +8 -0
- package/dist/state/warm-clients.d.ts +136 -0
- package/dist/state/warm-clients.d.ts.map +1 -0
- package/dist/state/warm-clients.js +231 -0
- 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":"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"}
|
|
@@ -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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"}
|