@happyvertical/smrt-svelte 0.52.0 → 0.53.1
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/README.md +47 -0
- package/agents/components.md +8 -1
- package/dist/Provider.svelte +19 -15
- package/dist/Provider.svelte.d.ts +2 -2
- package/dist/Provider.svelte.d.ts.map +1 -1
- package/dist/__tests__/provider-mode-harness.svelte +14 -0
- package/dist/__tests__/provider-mode-harness.svelte.d.ts +11 -0
- package/dist/__tests__/provider-mode-harness.svelte.d.ts.map +1 -0
- package/dist/__tests__/provider-mode-probe.svelte +13 -0
- package/dist/__tests__/provider-mode-probe.svelte.d.ts +8 -0
- package/dist/__tests__/provider-mode-probe.svelte.d.ts.map +1 -0
- package/dist/components/forms/FileUpload.svelte +120 -16
- package/dist/components/forms/FileUpload.svelte.d.ts +7 -1
- package/dist/components/forms/FileUpload.svelte.d.ts.map +1 -1
- package/dist/components/forms/__tests__/FileUpload.native-form.test.js +249 -0
- package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte +24 -0
- package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts +10 -0
- package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/AdminShell.responsive.test.js +12 -1
- package/dist/components/workspace/__tests__/AdminShell.test.js +172 -1
- package/dist/components/workspace/__tests__/TenantNav.test.js +66 -0
- package/dist/components/workspace/__tests__/WorkspaceAccountMenu.test.js +6 -0
- package/dist/components/workspace/__tests__/admin-shell-state.test.js +25 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte +108 -26
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +2 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/TenantNav.svelte +70 -12
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts +8 -2
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte +16 -2
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts +2 -0
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/state.svelte.d.ts +2 -0
- package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/state.svelte.js +7 -0
- package/dist/components/workspace/admin-shell/types.d.ts +18 -1
- package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
- package/dist/components/workspace/index.d.ts +1 -1
- package/dist/components/workspace/index.d.ts.map +1 -1
- package/dist/i18n/strings.forms.d.ts +3 -0
- package/dist/i18n/strings.forms.d.ts.map +1 -1
- package/dist/i18n/strings.forms.js +3 -0
- package/dist/i18n/strings.workspace.d.ts +4 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -1
- package/dist/i18n/strings.workspace.js +4 -0
- package/dist/provider-mode.test.js +86 -0
- package/dist/state/app-state.svelte.d.ts.map +1 -1
- package/dist/state/app-state.svelte.js +8 -8
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@ export declare const M: {
|
|
|
8
8
|
readonly 'ui.date_time_input.mic_aria_label': "ui.date_time_input.mic_aria_label";
|
|
9
9
|
readonly 'ui.date_time_input.parsing': "ui.date_time_input.parsing";
|
|
10
10
|
readonly 'ui.file_upload.remove_file': "ui.file_upload.remove_file";
|
|
11
|
+
readonly 'ui.file_upload.required': "ui.file_upload.required";
|
|
12
|
+
readonly 'ui.file_upload.rejected_type': "ui.file_upload.rejected_type";
|
|
13
|
+
readonly 'ui.file_upload.exceeds_max_size': "ui.file_upload.exceeds_max_size";
|
|
11
14
|
readonly 'ui.form.extracting': "ui.form.extracting";
|
|
12
15
|
readonly 'ui.form.listening_status': "ui.form.listening_status";
|
|
13
16
|
readonly 'ui.form.listening_button': "ui.form.listening_button";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.forms.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.forms.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"strings.forms.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.forms.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEZ,CAAC"}
|
|
@@ -20,6 +20,9 @@ export const M = defineMessages({
|
|
|
20
20
|
'ui.date_time_input.parsing': 'Parsing date...',
|
|
21
21
|
// FileUpload
|
|
22
22
|
'ui.file_upload.remove_file': 'Remove {name}',
|
|
23
|
+
'ui.file_upload.required': 'Select a file to upload',
|
|
24
|
+
'ui.file_upload.rejected_type': '{count} file(s) rejected: type not allowed',
|
|
25
|
+
'ui.file_upload.exceeds_max_size': '{count} file(s) exceed the maximum size of {size}',
|
|
23
26
|
// Form
|
|
24
27
|
'ui.form.extracting': 'Extracting form fields…',
|
|
25
28
|
'ui.form.listening_status': 'Listening. Say "done" to finish.',
|
|
@@ -34,6 +34,10 @@ export declare const M: {
|
|
|
34
34
|
readonly 'ui.admin_shell.close_shortcuts': "ui.admin_shell.close_shortcuts";
|
|
35
35
|
readonly 'ui.admin_shell.shortcuts': "ui.admin_shell.shortcuts";
|
|
36
36
|
readonly 'ui.admin_shell.close': "ui.admin_shell.close";
|
|
37
|
+
readonly 'ui.admin_shell.home': "ui.admin_shell.home";
|
|
38
|
+
readonly 'ui.admin_shell.menu': "ui.admin_shell.menu";
|
|
39
|
+
readonly 'ui.admin_shell.expand_panel': "ui.admin_shell.expand_panel";
|
|
40
|
+
readonly 'ui.admin_shell.collapse_panel': "ui.admin_shell.collapse_panel";
|
|
37
41
|
readonly 'ui.admin_shell.close_panel': "ui.admin_shell.close_panel";
|
|
38
42
|
readonly 'ui.admin_shell.resize_panel': "ui.admin_shell.resize_panel";
|
|
39
43
|
readonly 'ui.shell_nav_toggle.collapse': "ui.shell_nav_toggle.collapse";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.workspace.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"strings.workspace.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GZ,CAAC"}
|
|
@@ -39,6 +39,10 @@ export const M = defineMessages({
|
|
|
39
39
|
'ui.admin_shell.close_shortcuts': 'Close shortcuts',
|
|
40
40
|
'ui.admin_shell.shortcuts': 'Shortcuts',
|
|
41
41
|
'ui.admin_shell.close': 'Close',
|
|
42
|
+
'ui.admin_shell.home': 'Home',
|
|
43
|
+
'ui.admin_shell.menu': 'Menu',
|
|
44
|
+
'ui.admin_shell.expand_panel': 'Expand {panel}',
|
|
45
|
+
'ui.admin_shell.collapse_panel': 'Collapse {panel}',
|
|
42
46
|
'ui.admin_shell.close_panel': 'Close {label}',
|
|
43
47
|
'ui.admin_shell.resize_panel': 'Resize {label}',
|
|
44
48
|
'ui.shell_nav_toggle.collapse': 'Collapse {label}',
|
|
@@ -0,0 +1,86 @@
|
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-state.svelte.d.ts","sourceRoot":"","sources":["../../src/state/app-state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EAEV,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,wBAAwB,CAAC;AAShC,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAE1B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AA6CxB;;GAEG;AACH,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,MAAM,CAA8C;IAG5D,OAAO,CAAC,OAAO,CAAwB;IAGvC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAuB;IAM9C,OAAO,CAAC,gBAAgB,CAAS;IAGjC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,iBAAiB,CAA8C;IAOvE,OAAO,CAAC,iBAAiB,CAAqC;IAC9D,OAAO,CAAC,iBAAiB,CAAqC;gBAElD,OAAO,GAAE,qBAA0B;IAK/C;;OAEG;IACH,IAAI,YAAY,IAAI,YAAY,GAAG,IAAI,CAEtC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,YAAY,CAAC,CAElC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC,CAExC;IAED;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"app-state.svelte.d.ts","sourceRoot":"","sources":["../../src/state/app-state.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,6 +116,13 @@ export class SmrtAppStateManager {
|
|
|
116
116
|
this._state.capabilities = capabilities;
|
|
117
117
|
// Notify callback
|
|
118
118
|
this.options.onCapabilitiesDetected?.(capabilities);
|
|
119
|
+
// Apply initial session if provided
|
|
120
|
+
if (this.options.session) {
|
|
121
|
+
this._state.session = {
|
|
122
|
+
...this._state.session,
|
|
123
|
+
...this.options.session,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
119
126
|
// Determine initial mode
|
|
120
127
|
if (this.options.initialMode) {
|
|
121
128
|
this._state.mode = this.options.initialMode;
|
|
@@ -123,19 +130,12 @@ export class SmrtAppStateManager {
|
|
|
123
130
|
}
|
|
124
131
|
else {
|
|
125
132
|
// Auto-detect based on capabilities and preferences
|
|
126
|
-
const autoEnable = this._state.session.preferences.autoEnableSmrt ??
|
|
133
|
+
const autoEnable = this._state.session.preferences.autoEnableSmrt ?? false;
|
|
127
134
|
if (autoEnable && canEnableSmrtMode(capabilities)) {
|
|
128
135
|
this._state.mode = 'smrt';
|
|
129
136
|
this._state.modeSource = 'auto';
|
|
130
137
|
}
|
|
131
138
|
}
|
|
132
|
-
// Apply initial session if provided
|
|
133
|
-
if (this.options.session) {
|
|
134
|
-
this._state.session = {
|
|
135
|
-
...this._state.session,
|
|
136
|
-
...this.options.session,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
139
|
this._state.initialized = true;
|
|
140
140
|
// Schedule AI preloading based on strategy
|
|
141
141
|
this.schedulePreload();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.53.1",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Svelte 5 components for SMRT user management - auth, users, tenants, roles, permissions, groups",
|
|
6
6
|
"type": "module",
|
|
@@ -126,12 +126,12 @@
|
|
|
126
126
|
"access": "public"
|
|
127
127
|
},
|
|
128
128
|
"dependencies": {
|
|
129
|
-
"@happyvertical/logger": "^0.
|
|
130
|
-
"@happyvertical/smrt-languages": "0.
|
|
131
|
-
"@happyvertical/smrt-mcp-apps": "0.
|
|
132
|
-
"@happyvertical/smrt-types": "0.
|
|
133
|
-
"@happyvertical/smrt-ui": "0.
|
|
134
|
-
"@happyvertical/smrt-web": "0.
|
|
129
|
+
"@happyvertical/logger": "^0.98.0",
|
|
130
|
+
"@happyvertical/smrt-languages": "0.53.1",
|
|
131
|
+
"@happyvertical/smrt-mcp-apps": "0.53.1",
|
|
132
|
+
"@happyvertical/smrt-types": "0.53.1",
|
|
133
|
+
"@happyvertical/smrt-ui": "0.53.1",
|
|
134
|
+
"@happyvertical/smrt-web": "0.53.1",
|
|
135
135
|
"@tanstack/db": "^0.6.14",
|
|
136
136
|
"@tanstack/svelte-db": "^0.1.91",
|
|
137
137
|
"esm-env": "^1.2.2"
|
|
@@ -166,14 +166,14 @@
|
|
|
166
166
|
}
|
|
167
167
|
},
|
|
168
168
|
"devDependencies": {
|
|
169
|
-
"@happyvertical/smrt-agents": "0.
|
|
170
|
-
"@happyvertical/smrt-chat": "0.
|
|
171
|
-
"@happyvertical/smrt-content": "0.
|
|
172
|
-
"@happyvertical/smrt-core": "0.
|
|
173
|
-
"@happyvertical/smrt-reports": "0.
|
|
174
|
-
"@happyvertical/smrt-scanner": "0.
|
|
175
|
-
"@happyvertical/smrt-tenancy": "0.
|
|
176
|
-
"@happyvertical/smrt-users": "0.
|
|
169
|
+
"@happyvertical/smrt-agents": "0.53.1",
|
|
170
|
+
"@happyvertical/smrt-chat": "0.53.1",
|
|
171
|
+
"@happyvertical/smrt-content": "0.53.1",
|
|
172
|
+
"@happyvertical/smrt-core": "0.53.1",
|
|
173
|
+
"@happyvertical/smrt-reports": "0.53.1",
|
|
174
|
+
"@happyvertical/smrt-scanner": "0.53.1",
|
|
175
|
+
"@happyvertical/smrt-tenancy": "0.53.1",
|
|
176
|
+
"@happyvertical/smrt-users": "0.53.1",
|
|
177
177
|
"@sveltejs/package": "^2.5.8",
|
|
178
178
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
179
179
|
"@testing-library/jest-dom": "^7.0.1",
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
"dev": "svelte-package -i src --watch",
|
|
193
193
|
"check": "pnpm exec svelte-check --tsconfig ./tsconfig.svelte.json",
|
|
194
194
|
"test": "pnpm run test:unit && pnpm run test:conformance",
|
|
195
|
-
"test:unit": "vitest run --exclude src/web/__tests__/data-surface-conformance.integration.svelte.test.ts && node --test scripts
|
|
195
|
+
"test:unit": "vitest run --exclude src/web/__tests__/data-surface-conformance.integration.svelte.test.ts && node --test scripts/*.test.mjs",
|
|
196
196
|
"test:conformance": "node scripts/ensure-conformance-build.mjs && SMRT_SVELTE_PUBLISHED_ENTRY=1 vitest run src/web/__tests__/data-surface-conformance.integration.svelte.test.ts",
|
|
197
197
|
"typecheck:conformance": "tsc --noEmit -p ./tsconfig.conformance.json",
|
|
198
198
|
"typecheck": "tsc --noEmit && pnpm run typecheck:conformance && node ../../scripts/svelte-check-a11y.mjs --tsconfig ./tsconfig.svelte.json",
|