@vybestack/llxprt-code-settings 0.11.0 → 0.12.0-nightly.260910.2aac6841e

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 (65) hide show
  1. package/dist/src/__tests__/mediaSettings.issue3199.test.d.ts +6 -0
  2. package/dist/src/__tests__/mediaSettings.issue3199.test.js +71 -0
  3. package/dist/src/__tests__/mediaSettings.issue3199.test.js.map +1 -0
  4. package/dist/src/__tests__/settingsRegistry.interactiveTimeoutMs.test.d.ts +6 -0
  5. package/dist/src/__tests__/settingsRegistry.interactiveTimeoutMs.test.js +27 -0
  6. package/dist/src/__tests__/settingsRegistry.interactiveTimeoutMs.test.js.map +1 -0
  7. package/dist/src/__tests__/settingsRegistry.issue2642.test.d.ts +11 -0
  8. package/dist/src/__tests__/settingsRegistry.issue2642.test.js +104 -0
  9. package/dist/src/__tests__/settingsRegistry.issue2642.test.js.map +1 -0
  10. package/dist/src/__tests__/settingsRegistry.issue3255.test.js +2 -2
  11. package/dist/src/__tests__/settingsRegistry.issue3255.test.js.map +1 -1
  12. package/dist/src/index.d.ts +2 -2
  13. package/dist/src/index.js +2 -2
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/profiles/ProfileManager.d.ts +7 -0
  16. package/dist/src/profiles/ProfileManager.js +33 -11
  17. package/dist/src/profiles/ProfileManager.js.map +1 -1
  18. package/dist/src/profiles/__tests__/ProfileManager.test.js +2 -2
  19. package/dist/src/profiles/__tests__/ProfileManager.test.js.map +1 -1
  20. package/dist/src/profiles/__tests__/canonicalProfileRepair.outcomes.test.js +4 -1
  21. package/dist/src/profiles/__tests__/canonicalProfileRepair.outcomes.test.js.map +1 -1
  22. package/dist/src/profiles/__tests__/canonicalProfileRepair.test.js +19 -14
  23. package/dist/src/profiles/__tests__/canonicalProfileRepair.test.js.map +1 -1
  24. package/dist/src/profiles/__tests__/canonicalProfileRepair.testHelpers.d.ts +10 -0
  25. package/dist/src/profiles/__tests__/canonicalProfileRepair.testHelpers.js +29 -0
  26. package/dist/src/profiles/__tests__/canonicalProfileRepair.testHelpers.js.map +1 -1
  27. package/dist/src/profiles/__tests__/profileParser.issue2642.test.d.ts +13 -0
  28. package/dist/src/profiles/__tests__/profileParser.issue2642.test.js +290 -0
  29. package/dist/src/profiles/__tests__/profileParser.issue2642.test.js.map +1 -0
  30. package/dist/src/profiles/__tests__/profileStore.test.js +25 -12
  31. package/dist/src/profiles/__tests__/profileStore.test.js.map +1 -1
  32. package/dist/src/profiles/canonicalProfileRepair.js +24 -12
  33. package/dist/src/profiles/canonicalProfileRepair.js.map +1 -1
  34. package/dist/src/profiles/profileStore.js +4 -6
  35. package/dist/src/profiles/profileStore.js.map +1 -1
  36. package/dist/src/profiles/types.d.ts +9 -19
  37. package/dist/src/profiles/types.js.map +1 -1
  38. package/dist/src/settings/registry/registry-entries-1.js +101 -0
  39. package/dist/src/settings/registry/registry-entries-1.js.map +1 -1
  40. package/dist/src/settings/registry/registry-entries-2.js +101 -10
  41. package/dist/src/settings/registry/registry-entries-2.js.map +1 -1
  42. package/dist/src/settings/registry/registry-entries-3.js +196 -0
  43. package/dist/src/settings/registry/registry-entries-3.js.map +1 -1
  44. package/dist/src/settings/registry/registry-types.d.ts +21 -0
  45. package/dist/src/settings/registry/registry-types.js.map +1 -1
  46. package/dist/src/settings/settingsRegistry.d.ts +2 -0
  47. package/dist/src/settings/settingsRegistry.js +12 -0
  48. package/dist/src/settings/settingsRegistry.js.map +1 -1
  49. package/dist/src/settings/validation.d.ts +33 -0
  50. package/dist/src/settings/validation.js +49 -12
  51. package/dist/src/settings/validation.js.map +1 -1
  52. package/dist/src/storage/__tests__/Storage.test.js +13 -8
  53. package/dist/src/storage/__tests__/Storage.test.js.map +1 -1
  54. package/package.json +2 -2
  55. package/src/index.ts +7 -1
  56. package/src/profiles/ProfileManager.ts +39 -14
  57. package/src/profiles/canonicalProfileRepair.ts +27 -10
  58. package/src/profiles/profileStore.ts +4 -6
  59. package/src/profiles/types.ts +9 -21
  60. package/src/settings/registry/registry-entries-1.ts +101 -0
  61. package/src/settings/registry/registry-entries-2.ts +103 -10
  62. package/src/settings/registry/registry-entries-3.ts +220 -0
  63. package/src/settings/registry/registry-types.ts +32 -0
  64. package/src/settings/settingsRegistry.ts +18 -0
  65. package/src/settings/validation.ts +68 -15
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, expect, it } from 'bun:test';
7
+ import { getProfilePersistableKeys, getSettingSpec, validateSetting, } from '../settings/settingsRegistry.js';
8
+ const MEDIA_BUDGET_DEFAULTS = {
9
+ 'image-payload-budget-bytes': 15 * 1024 * 1024,
10
+ 'media-store-quota-bytes': 4 * 1024 * 1024 * 1024,
11
+ 'session-recording-queue-max-bytes': 16 * 1024 * 1024,
12
+ 'session-persistence-queue-max-bytes': 16 * 1024 * 1024,
13
+ };
14
+ describe('issue 3199 media settings', () => {
15
+ it('registers finite non-negative integer budgets with one profile-visible default', () => {
16
+ for (const [key, expectedDefault] of Object.entries(MEDIA_BUDGET_DEFAULTS)) {
17
+ expect(getSettingSpec(key)).toMatchObject({
18
+ key,
19
+ type: 'number',
20
+ default: expectedDefault,
21
+ persistToProfile: true,
22
+ });
23
+ expect(validateSetting(key, 0)).toStrictEqual({
24
+ success: true,
25
+ value: 0,
26
+ });
27
+ }
28
+ });
29
+ it('rejects malformed and non-finite media budgets without coercion', () => {
30
+ const malformedValues = [
31
+ -1,
32
+ 1.5,
33
+ Number.NaN,
34
+ Number.POSITIVE_INFINITY,
35
+ Number.MAX_SAFE_INTEGER + 1,
36
+ '1048576',
37
+ null,
38
+ ];
39
+ for (const key of Object.keys(MEDIA_BUDGET_DEFAULTS)) {
40
+ for (const value of malformedValues) {
41
+ expect(validateSetting(key, value).success).toBe(false);
42
+ }
43
+ }
44
+ });
45
+ it('persists every media policy and budget through the registry profile path', () => {
46
+ const persistable = new Set(getProfilePersistableKeys());
47
+ const mediaKeys = [
48
+ ...Object.keys(MEDIA_BUDGET_DEFAULTS),
49
+ 'provider-files',
50
+ 'provider-files-retention-ms',
51
+ 'provider-files-delete',
52
+ 'provider-files-zdr',
53
+ 'media.semantic-purge',
54
+ ];
55
+ for (const key of mediaKeys) {
56
+ expect(persistable.has(key)).toBe(true);
57
+ }
58
+ });
59
+ it('accepts only exact semantic purge modes', () => {
60
+ for (const mode of ['off', 'remove', 'summary']) {
61
+ expect(validateSetting('media.semantic-purge', mode)).toStrictEqual({
62
+ success: true,
63
+ value: mode,
64
+ });
65
+ }
66
+ for (const malformed of ['REMOVE', '', true, { mode: 'remove' }]) {
67
+ expect(validateSetting('media.semantic-purge', malformed).success).toBe(false);
68
+ }
69
+ });
70
+ });
71
+ //# sourceMappingURL=mediaSettings.issue3199.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaSettings.issue3199.test.js","sourceRoot":"","sources":["../../../src/__tests__/mediaSettings.issue3199.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, expect, it } from 'bun:test';
7
+ import { getSettingSpec, validateSetting, } from '../settings/settingsRegistry.js';
8
+ /**
9
+ * @plan PLAN-20260827-ISSUE2562.P03
10
+ * @requirement REQ-2562-4
11
+ */
12
+ describe('interactive authentication timeout registry setting', () => {
13
+ const key = 'auth.interactiveTimeoutMs';
14
+ it('registers the numeric setting with the session timeout default', () => {
15
+ const spec = getSettingSpec(key);
16
+ expect(spec).toBeDefined();
17
+ expect(spec?.type).toBe('number');
18
+ expect(spec?.default).toBe(1_200_000);
19
+ });
20
+ it('accepts numeric timeout values', () => {
21
+ expect(validateSetting(key, 45_000)).toStrictEqual({
22
+ success: true,
23
+ value: 45_000,
24
+ });
25
+ });
26
+ });
27
+ //# sourceMappingURL=settingsRegistry.interactiveTimeoutMs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsRegistry.interactiveTimeoutMs.test.js","sourceRoot":"","sources":["../../../src/__tests__/settingsRegistry.interactiveTimeoutMs.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAEzC;;;GAGG;AACH,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;IACnE,MAAM,GAAG,GAAG,2BAA2B,CAAC;IAExC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;YACjD,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Behavioral tests for the registry `owner` / `propagation` metadata (#2642).
3
+ *
4
+ * Every registry key must carry a non-empty `owner` and `propagation`, the
5
+ * owner values must fall within the documented union, and the application-owned
6
+ * cluster (emojifilter / dumponerror / dumpcontext) must be excluded from
7
+ * profile persistence while the new application-owned helpers agree.
8
+ *
9
+ * These are pure registry tests — no filesystem, no mocks.
10
+ */
11
+ export {};
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Behavioral tests for the registry `owner` / `propagation` metadata (#2642).
3
+ *
4
+ * Every registry key must carry a non-empty `owner` and `propagation`, the
5
+ * owner values must fall within the documented union, and the application-owned
6
+ * cluster (emojifilter / dumponerror / dumpcontext) must be excluded from
7
+ * profile persistence while the new application-owned helpers agree.
8
+ *
9
+ * These are pure registry tests — no filesystem, no mocks.
10
+ */
11
+ import { describe, it, expect } from 'bun:test';
12
+ import { SETTINGS_REGISTRY, getProfilePersistableKeys, getApplicationOwnedKeys, isApplicationOwnedKey, } from '../settings/settingsRegistry.js';
13
+ const ALLOWED_OWNERS = new Set([
14
+ 'application',
15
+ 'provider-connection',
16
+ 'model',
17
+ 'agent-policy',
18
+ ]);
19
+ const ALLOWED_PROPAGATION = new Set([
20
+ 'render-immediate',
21
+ 'next-turn',
22
+ 'service-reconfigure',
23
+ 'profile-transition',
24
+ 'restart-required',
25
+ ]);
26
+ // Key per owner that is part of the profile persistence surface.
27
+ const REPRESENTATIVE_KEYS = {
28
+ application: 'emojifilter',
29
+ 'provider-connection': 'auth-key',
30
+ model: 'reasoning.enabled',
31
+ 'agent-policy': 'tools.allowed',
32
+ };
33
+ describe('settings registry — owner / propagation metadata (#2642)', () => {
34
+ it('every registry entry has a non-empty owner and propagation', () => {
35
+ // Guard against a vacuous pass if the registry is ever empty or unloaded.
36
+ // Deliberately a non-empty check rather than a headcount: legitimate
37
+ // registry cleanup must not fail this contract test.
38
+ expect(SETTINGS_REGISTRY.length).toBeGreaterThan(0);
39
+ for (const spec of SETTINGS_REGISTRY) {
40
+ expect(spec.owner.length).toBeGreaterThan(0);
41
+ expect(spec.propagation.length).toBeGreaterThan(0);
42
+ expect(ALLOWED_OWNERS.has(spec.owner)).toBe(true);
43
+ expect(ALLOWED_PROPAGATION.has(spec.propagation)).toBe(true);
44
+ }
45
+ });
46
+ it('each representative key maps to its documented owner', () => {
47
+ const byKey = new Map(SETTINGS_REGISTRY.map((s) => [s.key, s.owner]));
48
+ for (const [owner, key] of Object.entries(REPRESENTATIVE_KEYS)) {
49
+ // `?? '(missing)'` keeps both sides `string` and gives a readable
50
+ // failure if a representative key is ever removed from the registry.
51
+ expect(byKey.get(key) ?? '(missing)').toBe(owner);
52
+ }
53
+ });
54
+ it('getApplicationOwnedKeys includes the application-owned keys', () => {
55
+ const appKeys = getApplicationOwnedKeys();
56
+ for (const key of ['emojifilter', 'dumponerror', 'dumpcontext']) {
57
+ expect(appKeys).toContain(key);
58
+ }
59
+ });
60
+ it('isApplicationOwnedKey is true for application keys and false for others', () => {
61
+ expect(isApplicationOwnedKey('emojifilter')).toBe(true);
62
+ expect(isApplicationOwnedKey('dumpcontext')).toBe(true);
63
+ expect(isApplicationOwnedKey('auth-key')).toBe(false);
64
+ expect(isApplicationOwnedKey('reasoning.enabled')).toBe(false);
65
+ });
66
+ it('application-owned keys are excluded from profile persistence', () => {
67
+ const keys = getProfilePersistableKeys();
68
+ const persistable = new Set(keys);
69
+ // Positive control: without this the exclusion assertions below would
70
+ // still pass if the persistable set were ever empty.
71
+ expect(keys.length).toBeGreaterThan(0);
72
+ expect(persistable.has('auth-key')).toBe(true);
73
+ for (const key of ['emojifilter', 'dumponerror', 'dumpcontext']) {
74
+ expect(persistable.has(key)).toBe(false);
75
+ }
76
+ });
77
+ it('the three application keys declare persistToProfile: false in the registry', () => {
78
+ // Asserting the registry data directly, not just the derived list: if
79
+ // getProfilePersistableKeys() ever excluded these for an unrelated reason
80
+ // the exclusion test above would still pass while the data stayed wrong.
81
+ for (const key of ['emojifilter', 'dumponerror', 'dumpcontext']) {
82
+ const spec = SETTINGS_REGISTRY.find((s) => s.key === key);
83
+ expect(spec).toBeDefined();
84
+ expect(spec?.owner).toBe('application');
85
+ expect(spec?.persistToProfile).toBe(false);
86
+ }
87
+ });
88
+ it('getProfilePersistableKeys matches exactly the specs flagged persistToProfile', () => {
89
+ // End-to-end contract: the derived list is the flag, nothing more.
90
+ const expected = SETTINGS_REGISTRY.filter((s) => s.persistToProfile).map((s) => s.key);
91
+ expect(getProfilePersistableKeys().sort()).toStrictEqual(expected.sort());
92
+ });
93
+ it('persistence follows the per-spec flag, not a blanket owner rule', () => {
94
+ // `token-usage-log` is application-owned but explicitly persists. A blanket
95
+ // `owner !== 'application'` filter would silently drop it and contradict
96
+ // its own spec.
97
+ const tokenUsageLog = SETTINGS_REGISTRY.find((s) => s.key === 'token-usage-log');
98
+ expect(tokenUsageLog).toBeDefined();
99
+ expect(tokenUsageLog?.owner).toBe('application');
100
+ expect(tokenUsageLog?.persistToProfile).toBe(true);
101
+ expect(getProfilePersistableKeys()).toContain('token-usage-log');
102
+ });
103
+ });
104
+ //# sourceMappingURL=settingsRegistry.issue2642.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsRegistry.issue2642.test.js","sourceRoot":"","sources":["../../../src/__tests__/settingsRegistry.issue2642.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,aAAa;IACb,qBAAqB;IACrB,OAAO;IACP,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,kBAAkB;IAClB,WAAW;IACX,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;CACnB,CAAC,CAAC;AAEH,iEAAiE;AACjE,MAAM,mBAAmB,GAGrB;IACF,WAAW,EAAE,aAAa;IAC1B,qBAAqB,EAAE,UAAU;IACjC,KAAK,EAAE,mBAAmB;IAC1B,cAAc,EAAE,eAAe;CAChC,CAAC;AAEF,QAAQ,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACxE,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,0EAA0E;QAC1E,qEAAqE;QACrE,qDAAqD;QACrD,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAEpD,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAC/C,CAAC;QACF,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC/D,kEAAkE;YAClE,qEAAqE;YACrE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,sEAAsE;QACtE,qDAAqD;QACrD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,sEAAsE;QACtE,0EAA0E;QAC1E,yEAAyE;QACzE,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,mEAAmE;QACnE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CACtE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CACb,CAAC;QACF,MAAM,CAAC,yBAAyB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,4EAA4E;QAC5E,yEAAyE;QACzE,gBAAgB;QAChB,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,iBAAiB,CACnC,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,yBAAyB,EAAE,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -167,12 +167,12 @@ describe('reasoning wire settings registry contract', () => {
167
167
  });
168
168
  it('declares exactly the effort wire formats this test accepts', () => {
169
169
  const spec = getSettingSpec('reasoning.effortWireFormat');
170
- expect(new Set(spec?.enumValues)).toEqual(new Set(EFFORT_WIRE_FORMATS));
170
+ expect(new Set(spec?.enumValues)).toStrictEqual(new Set(EFFORT_WIRE_FORMATS));
171
171
  expect(spec?.enumValues?.length).toBe(EFFORT_WIRE_FORMATS.length);
172
172
  });
173
173
  it('declares exactly the enabled wire formats this test accepts', () => {
174
174
  const spec = getSettingSpec('reasoning.enabledWireFormat');
175
- expect(new Set(spec?.enumValues)).toEqual(new Set(ENABLED_WIRE_FORMATS));
175
+ expect(new Set(spec?.enumValues)).toStrictEqual(new Set(ENABLED_WIRE_FORMATS));
176
176
  expect(spec?.enumValues?.length).toBe(ENABLED_WIRE_FORMATS.length);
177
177
  });
178
178
  it('registers all four settings as profile-persistable model behavior', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"settingsRegistry.issue3255.test.js","sourceRoot":"","sources":["../../../src/__tests__/settingsRegistry.issue3255.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settingsRegistry.issue3255.test.js","sourceRoot":"","sources":["../../../src/__tests__/settingsRegistry.issue3255.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export { SettingsService } from './settings/SettingsService.js';
8
8
  export type { SettingsServiceInit } from './settings/SettingsService.js';
9
- export { resolveAlias, getSettingSpec, normalizeSetting, separateSettings, validateSetting, parseSetting, getProfilePersistableKeys, getSettingHelp, getCompletionOptions, getAllSettingKeys, getValidationHelp, getAutocompleteSuggestions, getProtectedSettingKeys, getProviderConfigKeys, getDirectSettingSpecs, getInternalSettingKeys, isInternalSettingKey, isSessionScopedSettingKey, getSessionScopedSettingKeys, assertSessionScopedKey, redactSensitiveValues, isSensitiveSettingKey, REDACTED_VALUE, SETTINGS_REGISTRY, } from './settings/settingsRegistry.js';
9
+ export { resolveAlias, getSettingSpec, normalizeSetting, separateSettings, validateSetting, parseSetting, getProfilePersistableKeys, getSettingHelp, getCompletionOptions, getAllSettingKeys, getValidationHelp, getAutocompleteSuggestions, getProtectedSettingKeys, getProviderConfigKeys, getDirectSettingSpecs, getApplicationOwnedKeys, isApplicationOwnedKey, getInternalSettingKeys, isInternalSettingKey, isSessionScopedSettingKey, getSessionScopedSettingKeys, assertSessionScopedKey, redactSensitiveValues, isSensitiveSettingKey, REDACTED_VALUE, SETTINGS_REGISTRY, } from './settings/settingsRegistry.js';
10
10
  export { isStrictNumericString } from './settings/numericString.js';
11
11
  export type { ValidationResult, SettingSpec, SeparatedSettings, DirectSettingSpec, } from './settings/settingsRegistry.js';
12
12
  export { getSettingsService, registerSettingsService, resetSettingsService, } from './settings/settingsServiceInstance.js';
@@ -15,7 +15,7 @@ export { withProfilesLockSync, writeProfileFile, } from './profiles/profileStore
15
15
  export type { ProfileWriteMode, ProfileWriteResult, } from './profiles/profileStore.js';
16
16
  export { repairCanonicalProfiles, CORRUPT_PROVIDER, } from './profiles/canonicalProfileRepair.js';
17
17
  export type { CanonicalRepairOutcome, CanonicalRepairResult, } from './profiles/canonicalProfileRepair.js';
18
- export { parseProfile } from './settings/validation.js';
18
+ export { parseProfile, parseProfileJson, MIN_LOAD_BALANCER_MEMBERS, } from './settings/validation.js';
19
19
  export type { Profile, StandardProfile, LoadBalancerProfile, ModelParams, EphemeralSettings, ProfileEphemeralSettings, ReasoningEffort, ReasoningEffortWireFormat, ReasoningEnabledWireFormat, ReasoningEffortMap, ReasoningEnabledMap, AuthConfig, } from './profiles/types.js';
20
20
  export { AuthConfigSchema, isLoadBalancerProfile, isStandardProfile, hasAuthConfig, isOAuthProfile, } from './profiles/types.js';
21
21
  export { Storage } from './storage/Storage.js';
package/dist/src/index.js CHANGED
@@ -7,7 +7,7 @@
7
7
  export { SettingsService } from './settings/SettingsService.js';
8
8
  // SessionSettingsOverlay is intentionally NOT exported: it is an internal
9
9
  // implementation detail owned by SettingsService.
10
- export { resolveAlias, getSettingSpec, normalizeSetting, separateSettings, validateSetting, parseSetting, getProfilePersistableKeys, getSettingHelp, getCompletionOptions, getAllSettingKeys, getValidationHelp, getAutocompleteSuggestions, getProtectedSettingKeys, getProviderConfigKeys, getDirectSettingSpecs, getInternalSettingKeys, isInternalSettingKey, isSessionScopedSettingKey, getSessionScopedSettingKeys, assertSessionScopedKey, redactSensitiveValues, isSensitiveSettingKey, REDACTED_VALUE, SETTINGS_REGISTRY, } from './settings/settingsRegistry.js';
10
+ export { resolveAlias, getSettingSpec, normalizeSetting, separateSettings, validateSetting, parseSetting, getProfilePersistableKeys, getSettingHelp, getCompletionOptions, getAllSettingKeys, getValidationHelp, getAutocompleteSuggestions, getProtectedSettingKeys, getProviderConfigKeys, getDirectSettingSpecs, getApplicationOwnedKeys, isApplicationOwnedKey, getInternalSettingKeys, isInternalSettingKey, isSessionScopedSettingKey, getSessionScopedSettingKeys, assertSessionScopedKey, redactSensitiveValues, isSensitiveSettingKey, REDACTED_VALUE, SETTINGS_REGISTRY, } from './settings/settingsRegistry.js';
11
11
  export { isStrictNumericString } from './settings/numericString.js';
12
12
  export { getSettingsService, registerSettingsService, resetSettingsService, } from './settings/settingsServiceInstance.js';
13
13
  export { ProfileManager } from './profiles/ProfileManager.js';
@@ -18,7 +18,7 @@ export { ProfileManager } from './profiles/ProfileManager.js';
18
18
  // coordinate with ProfileManager writes.
19
19
  export { withProfilesLockSync, writeProfileFile, } from './profiles/profileStore.js';
20
20
  export { repairCanonicalProfiles, CORRUPT_PROVIDER, } from './profiles/canonicalProfileRepair.js';
21
- export { parseProfile } from './settings/validation.js';
21
+ export { parseProfile, parseProfileJson, MIN_LOAD_BALANCER_MEMBERS, } from './settings/validation.js';
22
22
  export { AuthConfigSchema, isLoadBalancerProfile, isStandardProfile, hasAuthConfig, isOAuthProfile, } from './profiles/types.js';
23
23
  export { Storage } from './storage/Storage.js';
24
24
  export { LLXPRT_DIR, AGENTS_DIR, PROVIDER_ACCOUNTS_FILENAME, OAUTH_FILE, } from './storage/Storage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,0EAA0E;AAC1E,kDAAkD;AAElD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAQpE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,yCAAyC;AACzC,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,sCAAsC,CAAC;AAK9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAexD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,UAAU,EACV,0BAA0B,EAC1B,UAAU,GACX,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,0EAA0E;AAC1E,kDAAkD;AAElD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAQpE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,yCAAyC;AACzC,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,sCAAsC,CAAC;AAK9C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAelC,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,UAAU,EACV,0BAA0B,EAC1B,UAAU,GACX,MAAM,sBAAsB,CAAC"}
@@ -44,6 +44,13 @@ export declare class ProfileManager {
44
44
  * @param profile The profile configuration to save
45
45
  */
46
46
  saveProfile(profileName: string, profile: PersistableProfile): Promise<void>;
47
+ /**
48
+ * Parse raw profile file content through the single shared parse boundary
49
+ * so load/reference/scan paths produce identical results. Malformed JSON
50
+ * and prototype-pollution documents surface as typed parse errors before any
51
+ * schema validation.
52
+ */
53
+ private static parseProfileContent;
47
54
  saveLoadBalancerProfile(name: string, profile: unknown): Promise<void>;
48
55
  /**
49
56
  * Validate that a load-balancer profile's references are valid.
@@ -7,7 +7,7 @@
7
7
  * Settings-owned: uses settings-owned profile types, not core imports.
8
8
  */
9
9
  import { isLoadBalancerProfile } from './types.js';
10
- import { isPlainObject, parseLoadBalancerProfile, parseProfile, parsePromptCaching, } from '../settings/validation.js';
10
+ import { isPlainObject, parseLoadBalancerProfile, parseProfile, parseProfileJson, parsePromptCaching, } from '../settings/validation.js';
11
11
  import fs from 'fs/promises';
12
12
  import path from 'path';
13
13
  import { Storage } from '@vybestack/llxprt-code-storage';
@@ -21,9 +21,6 @@ function optionalNumber(value) {
21
21
  function optionalString(value) {
22
22
  return typeof value === 'string' ? value : undefined;
23
23
  }
24
- function optionalBoolean(value) {
25
- return typeof value === 'boolean' ? value : undefined;
26
- }
27
24
  function referencedProfileIsLoadBalancer(profile) {
28
25
  return isPlainObject(profile) && profile.type === 'loadbalancer';
29
26
  }
@@ -53,6 +50,30 @@ export class ProfileManager {
53
50
  async saveProfile(profileName, profile) {
54
51
  await writeProfileFile(this.profilesDir, profileName, JSON.stringify(profile, null, 2), 'overwrite');
55
52
  }
53
+ /**
54
+ * Parse raw profile file content through the single shared parse boundary
55
+ * so load/reference/scan paths produce identical results. Malformed JSON
56
+ * and prototype-pollution documents surface as typed parse errors before any
57
+ * schema validation.
58
+ */
59
+ static parseProfileContent(content) {
60
+ const parsed = parseProfileJson(content);
61
+ if (parsed.kind === 'invalid-json') {
62
+ // Chain the original parse error so position information
63
+ // ("Unexpected token } ... at position 42") is not lost.
64
+ throw new SyntaxError('profile JSON is malformed', {
65
+ cause: parsed.error,
66
+ });
67
+ }
68
+ if (parsed.kind === 'unsafe') {
69
+ // Also a SyntaxError, so loadProfile's "Profile 'X' is corrupted"
70
+ // wrapping applies uniformly. Throwing a plain Error here made
71
+ // prototype-pollution surface as a raw message without the profile name
72
+ // while malformed JSON got the friendly one.
73
+ throw new SyntaxError(parsed.error.message, { cause: parsed.error });
74
+ }
75
+ return parsed.value;
76
+ }
56
77
  async saveLoadBalancerProfile(name, profile) {
57
78
  const loadBalancerProfile = parseLoadBalancerProfile(name, profile);
58
79
  const availableProfiles = await this.listProfiles();
@@ -62,7 +83,7 @@ export class ProfileManager {
62
83
  }
63
84
  const referencedProfilePath = path.join(this.profilesDir, `${referencedProfile}.json`);
64
85
  const referencedContent = await fs.readFile(referencedProfilePath, 'utf8');
65
- const referencedProfileData = JSON.parse(referencedContent);
86
+ const referencedProfileData = ProfileManager.parseProfileContent(referencedContent);
66
87
  if (referencedProfileIsLoadBalancer(referencedProfileData)) {
67
88
  throw new Error(`LoadBalancer profile '${name}' cannot reference another LoadBalancer profile '${referencedProfile}'`);
68
89
  }
@@ -83,7 +104,7 @@ export class ProfileManager {
83
104
  }
84
105
  const referencedProfilePath = path.join(this.profilesDir, `${referencedProfile}.json`);
85
106
  const referencedContent = await fs.readFile(referencedProfilePath, 'utf8');
86
- const referencedProfileData = JSON.parse(referencedContent);
107
+ const referencedProfileData = ProfileManager.parseProfileContent(referencedContent);
87
108
  if (referencedProfileIsLoadBalancer(referencedProfileData)) {
88
109
  throw new Error(`LoadBalancer profile '${profileName}' cannot reference another LoadBalancer profile '${referencedProfile}'`);
89
110
  }
@@ -98,7 +119,7 @@ export class ProfileManager {
98
119
  const filePath = path.join(this.profilesDir, `${profileName}.json`);
99
120
  try {
100
121
  const content = await fs.readFile(filePath, 'utf8');
101
- const parsed = JSON.parse(content);
122
+ const parsed = ProfileManager.parseProfileContent(content);
102
123
  const profile = isPlainObject(parsed) && parsed.type === 'loadbalancer'
103
124
  ? parseLoadBalancerProfile(profileName, parsed)
104
125
  : parseProfile(parsed);
@@ -112,7 +133,10 @@ export class ProfileManager {
112
133
  throw new Error(`Profile '${profileName}' not found`);
113
134
  }
114
135
  if (error instanceof SyntaxError) {
115
- throw new Error(`Profile '${profileName}' is corrupted`);
136
+ // Name the profile AND say why. Malformed JSON and dangerous-key
137
+ // documents both arrive here as SyntaxError, and "corrupted" alone
138
+ // does not tell the user which problem their file has.
139
+ throw new Error(`Profile '${profileName}' is corrupted: ${error.message}`, { cause: error });
116
140
  }
117
141
  if (error instanceof Error &&
118
142
  error.message === 'missing required fields') {
@@ -149,7 +173,7 @@ export class ProfileManager {
149
173
  try {
150
174
  const filePath = path.join(this.profilesDir, `${name}.json`);
151
175
  const content = await fs.readFile(filePath, 'utf8');
152
- const parsed = JSON.parse(content);
176
+ const parsed = ProfileManager.parseProfileContent(content);
153
177
  if (isPlainObject(parsed) &&
154
178
  parsed.type === 'loadbalancer' &&
155
179
  Array.isArray(parsed.profiles) &&
@@ -222,7 +246,6 @@ export class ProfileManager {
222
246
  'auth-key': optionalString(providerSettings['auth-key']),
223
247
  'auth-keyfile': optionalString(providerSettings['auth-keyfile']),
224
248
  'prompt-caching': parsePromptCaching(providerSettings['prompt-caching']),
225
- 'include-folder-structure': optionalBoolean(providerSettings['include-folder-structure']),
226
249
  'tool-format': optionalString(providerSettings.toolFormat),
227
250
  },
228
251
  };
@@ -267,7 +290,6 @@ export class ProfileManager {
267
290
  'auth-key': profile.ephemeralSettings['auth-key'],
268
291
  'auth-keyfile': profile.ephemeralSettings['auth-keyfile'],
269
292
  'prompt-caching': profile.ephemeralSettings['prompt-caching'],
270
- 'include-folder-structure': profile.ephemeralSettings['include-folder-structure'],
271
293
  toolFormat: profile.ephemeralSettings['tool-format'],
272
294
  },
273
295
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileManager.js","sourceRoot":"","sources":["../../../src/profiles/ProfileManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAwBxE,SAAS,eAAe,CAAC,KAAc,EAAE,QAAgB;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAgB;IACvD,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC;AACnE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,WAAW,CAAS;IAE5B;;OAEG;IACH,YAAY,WAAoB;QAC9B,IAAI,CAAC,WAAW;YACd,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;gBAC7C,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,WAAmB,EACnB,OAA2B;QAE3B,MAAM,gBAAgB,CACpB,IAAI,CAAC,WAAW,EAChB,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAChC,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,IAAY,EAAE,OAAgB;QAC1D,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEpE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpD,KAAK,MAAM,iBAAiB,IAAI,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,sCAAsC,iBAAiB,GAAG,CACxF,CAAC;YACJ,CAAC;YAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CACrC,IAAI,CAAC,WAAW,EAChB,GAAG,iBAAiB,OAAO,CAC5B,CAAC;YACF,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,QAAQ,CACzC,qBAAqB,EACrB,MAAM,CACP,CAAC;YACF,MAAM,qBAAqB,GAAY,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAErE,IAAI,+BAA+B,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,oDAAoD,iBAAiB,GAAG,CACtG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtD,MAAM,gBAAgB,CACpB,IAAI,CAAC,WAAW,EAChB,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAC5C,WAAW,CACZ,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,8BAA8B,CAC1C,WAAmB,EACnB,OAA4B;QAE5B,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE3E,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpD,KAAK,MAAM,iBAAiB,IAAI,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,sCAAsC,iBAAiB,GAAG,CAC/F,CAAC;YACJ,CAAC;YAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CACrC,IAAI,CAAC,WAAW,EAChB,GAAG,iBAAiB,OAAO,CAC5B,CAAC;YACF,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,QAAQ,CACzC,qBAAqB,EACrB,MAAM,CACP,CAAC;YACF,MAAM,qBAAqB,GAAY,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAErE,IAAI,+BAA+B,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,oDAAoD,iBAAiB,GAAG,CAC7G,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,WAAmB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,OAAO,GACX,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;gBACrD,CAAC,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC;gBAC/C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE3B,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,gBAAgB,CAAC,CAAC;YAC3D,CAAC;YACD,IACE,KAAK,YAAY,KAAK;gBACtB,KAAK,CAAC,OAAO,KAAK,yBAAyB,EAC3C,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,YAAY,WAAW,uCAAuC,CAC/D,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEjD,MAAM,YAAY,GAAG,KAAK;iBACvB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEpC,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,4BAA4B,CACxC,WAAmB;QAEnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,KAAK;aACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC;aACtC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5C,IACE,aAAa,CAAC,MAAM,CAAC;oBACrB,MAAM,CAAC,IAAI,KAAK,cAAc;oBAC9B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAC9B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEL,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CACvC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CACxC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QACzE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,oDAAoD,WAAW,CAAC,IAAI,CACvG,IAAI,CACL,EAAE,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,eAA2C;QAE3C,IAAI,OAAO,eAAe,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAE9D,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;QACrD,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAY;YACvB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;YACzD,WAAW,EAAE;gBACX,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBACzD,UAAU,EAAE,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC;aACjC;YACvB,iBAAiB,EAAE;gBACjB,UAAU,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACxD,UAAU,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACxD,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBAChE,gBAAgB,EAAE,kBAAkB,CAClC,gBAAgB,CAAC,gBAAgB,CAAC,CACnC;gBACD,0BAA0B,EAAE,eAAe,CACzC,gBAAgB,CAAC,0BAA0B,CAAC,CAC7C;gBACD,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC;aAC/B;SAC9B,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;YAC7D,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC/D,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC;QAC1D,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;QAC5D,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;QAE5D,IAAI,OAAO,eAAe,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAChE,eAAe,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,4BAA4B,CAAC,OAAgB;QAKnD,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,aAAuB,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,OAAO;YACL,eAAe,EAAE,OAAO,CAAC,QAAQ;YACjC,SAAS,EAAE;gBACT,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAClB,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW;oBAC5C,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,UAAU;oBACzC,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBACjD,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBACjD,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC;oBACzD,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;oBAC7D,0BAA0B,EACxB,OAAO,CAAC,iBAAiB,CAAC,0BAA0B,CAAC;oBACvD,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC;iBACrD;aACF;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,aAAa;aACxB;SACF,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,YAEC,EACD,eAA2C;QAE3C,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;YACxB,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjE,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnE,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,OAAgB,EAChB,eAA2C;QAE3C,MAAM,aAAa,GAAG;YACpB,mBAAmB;YACnB,4BAA4B;YAC5B,6BAA6B;YAC7B,kBAAkB;YAClB,4BAA4B;YAC5B,kBAAkB;YAClB,qBAAqB;YACrB,qBAAqB;SACb,CAAC;QAEX,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;gBACxE,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,eAA2C;QAE3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,kDAAkD,CACvF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,OAAwB,EACxB,eAA2C;QAE3C,MAAM,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,OAAO,eAAe,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAChE,eAAe,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,OAAO,eAAe,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,eAAe,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"ProfileManager.js","sourceRoot":"","sources":["../../../src/profiles/ProfileManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAwBxE,SAAS,eAAe,CAAC,KAAc,EAAE,QAAgB;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAgB;IACvD,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC;AACnE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,WAAW,CAAS;IAE5B;;OAEG;IACH,YAAY,WAAoB;QAC9B,IAAI,CAAC,WAAW;YACd,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;gBAC7C,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,WAAmB,EACnB,OAA2B;QAE3B,MAAM,gBAAgB,CACpB,IAAI,CAAC,WAAW,EAChB,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAChC,WAAW,CACZ,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,mBAAmB,CAAC,OAAe;QAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,yDAAyD;YACzD,yDAAyD;YACzD,MAAM,IAAI,WAAW,CAAC,2BAA2B,EAAE;gBACjD,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,kEAAkE;YAClE,+DAA+D;YAC/D,wEAAwE;YACxE,6CAA6C;YAC7C,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,IAAY,EAAE,OAAgB;QAC1D,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEpE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpD,KAAK,MAAM,iBAAiB,IAAI,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,sCAAsC,iBAAiB,GAAG,CACxF,CAAC;YACJ,CAAC;YAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CACrC,IAAI,CAAC,WAAW,EAChB,GAAG,iBAAiB,OAAO,CAC5B,CAAC;YACF,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,QAAQ,CACzC,qBAAqB,EACrB,MAAM,CACP,CAAC;YACF,MAAM,qBAAqB,GACzB,cAAc,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAExD,IAAI,+BAA+B,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,oDAAoD,iBAAiB,GAAG,CACtG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtD,MAAM,gBAAgB,CACpB,IAAI,CAAC,WAAW,EAChB,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAC5C,WAAW,CACZ,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,8BAA8B,CAC1C,WAAmB,EACnB,OAA4B;QAE5B,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE3E,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpD,KAAK,MAAM,iBAAiB,IAAI,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,sCAAsC,iBAAiB,GAAG,CAC/F,CAAC;YACJ,CAAC;YAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CACrC,IAAI,CAAC,WAAW,EAChB,GAAG,iBAAiB,OAAO,CAC5B,CAAC;YACF,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,QAAQ,CACzC,qBAAqB,EACrB,MAAM,CACP,CAAC;YACF,MAAM,qBAAqB,GACzB,cAAc,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAExD,IAAI,+BAA+B,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,oDAAoD,iBAAiB,GAAG,CAC7G,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,WAAmB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,OAAO,GACX,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;gBACrD,CAAC,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC;gBAC/C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE3B,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,iEAAiE;gBACjE,mEAAmE;gBACnE,uDAAuD;gBACvD,MAAM,IAAI,KAAK,CACb,YAAY,WAAW,mBAAmB,KAAK,CAAC,OAAO,EAAE,EACzD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;YACD,IACE,KAAK,YAAY,KAAK;gBACtB,KAAK,CAAC,OAAO,KAAK,yBAAyB,EAC3C,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,YAAY,WAAW,uCAAuC,CAC/D,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEjD,MAAM,YAAY,GAAG,KAAK;iBACvB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEpC,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,4BAA4B,CACxC,WAAmB;QAEnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,KAAK;aACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC;aACtC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC3D,IACE,aAAa,CAAC,MAAM,CAAC;oBACrB,MAAM,CAAC,IAAI,KAAK,cAAc;oBAC9B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAC9B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEL,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CACvC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CACxC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QACzE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,oDAAoD,WAAW,CAAC,IAAI,CACvG,IAAI,CACL,EAAE,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,eAA2C;QAE3C,IAAI,OAAO,eAAe,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAE9D,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;QACrD,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAY;YACvB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;YACzD,WAAW,EAAE;gBACX,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBACzD,UAAU,EAAE,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC;aACjC;YACvB,iBAAiB,EAAE;gBACjB,UAAU,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACxD,UAAU,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACxD,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBAChE,gBAAgB,EAAE,kBAAkB,CAClC,gBAAgB,CAAC,gBAAgB,CAAC,CACnC;gBACD,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC;aAC/B;SAC9B,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;YAC7D,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC/D,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC;QAC1D,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;QAC5D,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;QAE5D,IAAI,OAAO,eAAe,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAChE,eAAe,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,4BAA4B,CAAC,OAAgB;QAKnD,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,aAAuB,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,OAAO;YACL,eAAe,EAAE,OAAO,CAAC,QAAQ;YACjC,SAAS,EAAE;gBACT,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAClB,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW;oBAC5C,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,UAAU;oBACzC,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBACjD,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBACjD,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC;oBACzD,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;oBAC7D,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC;iBACrD;aACF;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,aAAa;aACxB;SACF,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,YAEC,EACD,eAA2C;QAE3C,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;YACxB,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjE,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnE,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,OAAgB,EAChB,eAA2C;QAE3C,MAAM,aAAa,GAAG;YACpB,mBAAmB;YACnB,4BAA4B;YAC5B,6BAA6B;YAC7B,kBAAkB;YAClB,4BAA4B;YAC5B,kBAAkB;YAClB,qBAAqB;YACrB,qBAAqB;SACb,CAAC;QAEX,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;gBACxE,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,eAA2C;QAE3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,kDAAkD,CACvF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,OAAwB,EACxB,eAA2C;QAE3C,MAAM,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,OAAO,eAAe,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAChE,eAAe,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,OAAO,eAAe,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,eAAe,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -573,12 +573,12 @@ describe('ProfileManager — parse boundary rejects unsafe object shapes', () =>
573
573
  modelParams: { constructor: { prototype: { polluted: true } } },
574
574
  ephemeralSettings: {},
575
575
  }), 'utf8');
576
- await expect(pm.loadProfile('polluted-modelparams')).rejects.toThrow('missing required fields');
576
+ await expect(pm.loadProfile('polluted-modelparams')).rejects.toThrow('dangerous fields');
577
577
  });
578
578
  it('rejects prototype-pollution keys in standard profile ephemeralSettings', async () => {
579
579
  const filePath = path.join(tempDir, 'polluted-ephemeral.json');
580
580
  await fs.writeFile(filePath, '{"version":1,"provider":"openai","model":"gpt-4","modelParams":{},"ephemeralSettings":{"__proto__":{"polluted":true}}}', 'utf8');
581
- await expect(pm.loadProfile('polluted-ephemeral')).rejects.toThrow('missing required fields');
581
+ await expect(pm.loadProfile('polluted-ephemeral')).rejects.toThrow('dangerous fields');
582
582
  });
583
583
  });
584
584
  describe('ProfileManager — saveLoadBalancerProfile type discriminant validation', () => {