@theia/ai-core 1.73.0-next.2 → 1.73.0-next.20

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 CHANGED
@@ -23,9 +23,9 @@ Skills provide reusable instructions and domain knowledge for AI agents. A skill
23
23
 
24
24
  Skills are discovered from multiple locations, processed in priority order (first wins on duplicates):
25
25
 
26
- 1. **Workspace:** `.prompts/skills/` in the workspace root (project-specific skills)
26
+ 1. **Workspace:** `.prompts/skills/` and `.agents/skills/` in the workspace root (project-specific skills)
27
27
  2. **User-configured:** Directories listed in `ai-features.skills.skillDirectories` preference
28
- 3. **Global:** `~/.theia/skills/` (user defaults)
28
+ 3. **Global:** `~/.theia/skills/` (product configuration folder) and `~/.agents/skills/` (home directory)
29
29
 
30
30
  #### Skill Structure
31
31
 
@@ -38,7 +38,7 @@ export declare class DefaultSkillService implements SkillService {
38
38
  protected scheduleUpdate(): void;
39
39
  protected update(): Promise<void>;
40
40
  protected getWorkspaceSkillsDirectoryPaths(): string[];
41
- protected getDefaultSkillsDirectoryPath(): Promise<string>;
41
+ protected getDefaultSkillsDirectoryPaths(): Promise<string[]>;
42
42
  protected processSkillDirectoryWithParentWatching(directoryPath: string, skills: Map<string, Skill>, disposables: DisposableCollection, watchedDirectories: Set<string>, parentWatchers: Map<string, string>): Promise<void>;
43
43
  protected processConfiguredSkillDirectory(directoryPath: string, skills: Map<string, Skill>, disposables: DisposableCollection, watchedDirectories: Set<string>): Promise<void>;
44
44
  protected processExistingSkillDirectory(dirURI: URI, skills: Map<string, Skill>, disposables: DisposableCollection, watchedDirectories: Set<string>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-service.d.ts","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-service.d.ts","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":"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"}
@@ -129,21 +129,17 @@ let DefaultSkillService = class DefaultSkillService {
129
129
  const homePath = new core_1.URI(homeDirUri).path.fsPath();
130
130
  const configuredDirectories = (this.preferences[ai_core_preferences_1.PREFERENCE_NAME_SKILL_DIRECTORIES] ?? [])
131
131
  .map(dir => path_1.Path.untildify(dir, homePath));
132
- const defaultSkillsDir = await this.getDefaultSkillsDirectoryPath();
132
+ const defaultSkillsDirs = await this.getDefaultSkillsDirectoryPaths();
133
133
  const newWatchedDirectories = new Set();
134
134
  const newParentWatchers = new Map();
135
- for (const workspaceSkillsDir of workspaceSkillsDirs) {
136
- await this.processSkillDirectoryWithParentWatching(workspaceSkillsDir, newSkills, newDisposables, newWatchedDirectories, newParentWatchers);
137
- }
138
- for (const configuredDir of configuredDirectories) {
139
- const configuredDirUri = core_1.URI.fromFilePath(configuredDir).toString();
140
- if (!newWatchedDirectories.has(configuredDirUri)) {
141
- await this.processConfiguredSkillDirectory(configuredDir, newSkills, newDisposables, newWatchedDirectories);
135
+ const allDirectories = (0, skill_1.combineSkillDirectories)(workspaceSkillsDirs, configuredDirectories, defaultSkillsDirs);
136
+ for (const { path: directoryPath, tier } of allDirectories) {
137
+ if (tier === 'configured') {
138
+ await this.processConfiguredSkillDirectory(directoryPath, newSkills, newDisposables, newWatchedDirectories);
139
+ }
140
+ else {
141
+ await this.processSkillDirectoryWithParentWatching(directoryPath, newSkills, newDisposables, newWatchedDirectories, newParentWatchers);
142
142
  }
143
- }
144
- const defaultSkillsDirUri = core_1.URI.fromFilePath(defaultSkillsDir).toString();
145
- if (!newWatchedDirectories.has(defaultSkillsDirUri)) {
146
- await this.processSkillDirectoryWithParentWatching(defaultSkillsDir, newSkills, newDisposables, newWatchedDirectories, newParentWatchers);
147
143
  }
148
144
  if (newSkills.size > 0 && newSkills.size !== this.skills.size) {
149
145
  this.logger.info(`Loaded ${newSkills.size} skills`);
@@ -155,13 +151,20 @@ let DefaultSkillService = class DefaultSkillService {
155
151
  this.onSkillsChangedEmitter.fire();
156
152
  }
157
153
  getWorkspaceSkillsDirectoryPaths() {
158
- return this.workspaceService.tryGetRoots()
159
- .map(root => root.resource.resolve('.prompts/skills').path.fsPath());
154
+ return this.workspaceService.tryGetRoots().flatMap(root => [
155
+ root.resource.resolve('.prompts/skills').path.fsPath(),
156
+ root.resource.resolve('.agents/skills').path.fsPath()
157
+ ]);
160
158
  }
161
- async getDefaultSkillsDirectoryPath() {
159
+ async getDefaultSkillsDirectoryPaths() {
162
160
  const configDirUri = await this.envVariablesServer.getConfigDirUri();
163
161
  const configDir = new core_1.URI(configDirUri);
164
- return configDir.resolve('skills').path.fsPath();
162
+ const homeDirUri = await this.envVariablesServer.getHomeDirUri();
163
+ const homeDir = new core_1.URI(homeDirUri);
164
+ return [
165
+ configDir.resolve('skills').path.fsPath(),
166
+ homeDir.resolve('.agents/skills').path.fsPath()
167
+ ];
165
168
  }
166
169
  async processSkillDirectoryWithParentWatching(directoryPath, skills, disposables, watchedDirectories, parentWatchers) {
167
170
  const dirURI = core_1.URI.fromFilePath(directoryPath);
@@ -1 +1 @@
1
- {"version":3,"file":"skill-service.js","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-service.js","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":"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"}
@@ -46,53 +46,74 @@ describe('SkillService', () => {
46
46
  });
47
47
  });
48
48
  describe('directory prioritization', () => {
49
- it('workspace directory comes first when all directories provided', () => {
50
- const result = (0, skill_1.combineSkillDirectories)('/workspace/.prompts/skills', ['/custom/skills1', '/custom/skills2'], '/home/user/.theia/skills');
49
+ it('workspace directories come first when all directories provided', () => {
50
+ const result = (0, skill_1.combineSkillDirectories)(['/workspace/.prompts/skills', '/workspace/.agents/skills'], ['/custom/skills1', '/custom/skills2'], ['/home/user/.theia/skills', '/home/user/.agents/skills']);
51
51
  (0, chai_1.expect)(result).to.deep.equal([
52
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
53
+ { path: '/workspace/.agents/skills', tier: 'workspace' },
54
+ { path: '/custom/skills1', tier: 'configured' },
55
+ { path: '/custom/skills2', tier: 'configured' },
56
+ { path: '/home/user/.theia/skills', tier: 'default' },
57
+ { path: '/home/user/.agents/skills', tier: 'default' }
58
+ ]);
59
+ });
60
+ it('preserves the workspace-tier order: .prompts/skills wins over .agents/skills on duplicate skill names', () => {
61
+ // The `.prompts/skills` directory is intentionally listed first within the workspace tier
62
+ // because it is the Theia-explicit folder; users opting into it signal stronger intent than
63
+ // those relying on the generic `.agents/skills` convention.
64
+ const result = (0, skill_1.combineSkillDirectories)(['/workspace/.prompts/skills', '/workspace/.agents/skills'], [], []);
65
+ (0, chai_1.expect)(result.map(entry => entry.path)).to.deep.equal([
52
66
  '/workspace/.prompts/skills',
53
- '/custom/skills1',
54
- '/custom/skills2',
55
- '/home/user/.theia/skills'
67
+ '/workspace/.agents/skills'
56
68
  ]);
57
69
  });
58
- it('works without workspace directory', () => {
59
- const result = (0, skill_1.combineSkillDirectories)(undefined, ['/custom/skills'], '/home/user/.theia/skills');
70
+ it('works without workspace directories', () => {
71
+ const result = (0, skill_1.combineSkillDirectories)([], ['/custom/skills'], ['/home/user/.theia/skills']);
60
72
  (0, chai_1.expect)(result).to.deep.equal([
61
- '/custom/skills',
62
- '/home/user/.theia/skills'
73
+ { path: '/custom/skills', tier: 'configured' },
74
+ { path: '/home/user/.theia/skills', tier: 'default' }
63
75
  ]);
64
76
  });
65
- it('works with only default directory', () => {
66
- const result = (0, skill_1.combineSkillDirectories)(undefined, [], '/home/user/.theia/skills');
67
- (0, chai_1.expect)(result).to.deep.equal(['/home/user/.theia/skills']);
77
+ it('works with only default directories', () => {
78
+ const result = (0, skill_1.combineSkillDirectories)([], [], ['/home/user/.theia/skills', '/home/user/.agents/skills']);
79
+ (0, chai_1.expect)(result).to.deep.equal([
80
+ { path: '/home/user/.theia/skills', tier: 'default' },
81
+ { path: '/home/user/.agents/skills', tier: 'default' }
82
+ ]);
68
83
  });
69
84
  it('deduplicates workspace directory if also in configured', () => {
70
- const result = (0, skill_1.combineSkillDirectories)('/workspace/.prompts/skills', ['/workspace/.prompts/skills', '/custom/skills'], '/home/user/.theia/skills');
85
+ const result = (0, skill_1.combineSkillDirectories)(['/workspace/.prompts/skills'], ['/workspace/.prompts/skills', '/custom/skills'], ['/home/user/.theia/skills']);
71
86
  (0, chai_1.expect)(result).to.deep.equal([
72
- '/workspace/.prompts/skills',
73
- '/custom/skills',
74
- '/home/user/.theia/skills'
87
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
88
+ { path: '/custom/skills', tier: 'configured' },
89
+ { path: '/home/user/.theia/skills', tier: 'default' }
75
90
  ]);
76
91
  });
77
92
  it('deduplicates default directory if also in configured', () => {
78
- const result = (0, skill_1.combineSkillDirectories)('/workspace/.prompts/skills', ['/home/user/.theia/skills'], '/home/user/.theia/skills');
93
+ const result = (0, skill_1.combineSkillDirectories)(['/workspace/.prompts/skills'], ['/home/user/.theia/skills'], ['/home/user/.theia/skills']);
79
94
  (0, chai_1.expect)(result).to.deep.equal([
80
- '/workspace/.prompts/skills',
81
- '/home/user/.theia/skills'
95
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
96
+ { path: '/home/user/.theia/skills', tier: 'configured' }
82
97
  ]);
83
98
  });
84
99
  it('handles empty configured directories', () => {
85
- const result = (0, skill_1.combineSkillDirectories)('/workspace/.prompts/skills', [], '/home/user/.theia/skills');
100
+ const result = (0, skill_1.combineSkillDirectories)(['/workspace/.prompts/skills'], [], ['/home/user/.theia/skills']);
86
101
  (0, chai_1.expect)(result).to.deep.equal([
87
- '/workspace/.prompts/skills',
88
- '/home/user/.theia/skills'
102
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
103
+ { path: '/home/user/.theia/skills', tier: 'default' }
89
104
  ]);
90
105
  });
91
- it('handles undefined default directory', () => {
92
- const result = (0, skill_1.combineSkillDirectories)('/workspace/.prompts/skills', ['/custom/skills'], undefined);
106
+ it('handles empty default directories', () => {
107
+ const result = (0, skill_1.combineSkillDirectories)(['/workspace/.prompts/skills'], ['/custom/skills'], []);
93
108
  (0, chai_1.expect)(result).to.deep.equal([
94
- '/workspace/.prompts/skills',
95
- '/custom/skills'
109
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
110
+ { path: '/custom/skills', tier: 'configured' }
111
+ ]);
112
+ });
113
+ it('deduplicates duplicate workspace directories', () => {
114
+ const result = (0, skill_1.combineSkillDirectories)(['/workspace/.prompts/skills', '/workspace/.prompts/skills'], [], []);
115
+ (0, chai_1.expect)(result).to.deep.equal([
116
+ { path: '/workspace/.prompts/skills', tier: 'workspace' }
96
117
  ]);
97
118
  });
98
119
  });
@@ -362,6 +383,78 @@ Test skill content`
362
383
  (0, chai_1.expect)(skills).to.have.length(1);
363
384
  (0, chai_1.expect)(skills[0].name).to.equal('test-skill');
364
385
  });
386
+ it('prefers a workspace `.prompts/skills` skill over a same-named `.agents/skills` skill in the same root', async () => {
387
+ const service = createService();
388
+ workspaceServiceMock.tryGetRoots.returns([
389
+ { resource: core_1.URI.fromFilePath('/workspace') }
390
+ ]);
391
+ // Stub default skill directories as non-existent to keep focus on workspace behavior.
392
+ fileServiceMock.exists
393
+ .withArgs(sinon.match((uri) => uri.path.toString() === '/home/testuser/.theia-ide/skills'))
394
+ .resolves(false);
395
+ fileServiceMock.exists
396
+ .withArgs(sinon.match((uri) => uri.path.toString() === '/home/testuser/.theia-ide'))
397
+ .resolves(false);
398
+ fileServiceMock.exists
399
+ .withArgs(sinon.match((uri) => uri.path.toString() === '/home/testuser/.agents/skills'))
400
+ .resolves(false);
401
+ fileServiceMock.exists
402
+ .withArgs(sinon.match((uri) => uri.path.toString() === '/home/testuser/.agents'))
403
+ .resolves(false);
404
+ // Both workspace skill directories exist and contain a `dup-skill` directory.
405
+ const promptsSkillDir = '/workspace/.prompts/skills';
406
+ const agentsSkillDir = '/workspace/.agents/skills';
407
+ fileServiceMock.exists
408
+ .withArgs(sinon.match((uri) => uri.path.toString() === promptsSkillDir))
409
+ .resolves(true);
410
+ fileServiceMock.exists
411
+ .withArgs(sinon.match((uri) => uri.path.toString() === agentsSkillDir))
412
+ .resolves(true);
413
+ fileServiceMock.resolve
414
+ .withArgs(sinon.match((uri) => uri.path.toString() === promptsSkillDir))
415
+ .resolves({
416
+ children: [{
417
+ isDirectory: true,
418
+ name: 'dup-skill',
419
+ resource: core_1.URI.fromFilePath(`${promptsSkillDir}/dup-skill`)
420
+ }]
421
+ });
422
+ fileServiceMock.resolve
423
+ .withArgs(sinon.match((uri) => uri.path.toString() === agentsSkillDir))
424
+ .resolves({
425
+ children: [{
426
+ isDirectory: true,
427
+ name: 'dup-skill',
428
+ resource: core_1.URI.fromFilePath(`${agentsSkillDir}/dup-skill`)
429
+ }]
430
+ });
431
+ // Each tier provides its own SKILL.md so we can distinguish them by location.
432
+ fileServiceMock.exists
433
+ .withArgs(sinon.match((uri) => uri.path.toString() === `${promptsSkillDir}/dup-skill/SKILL.md`))
434
+ .resolves(true);
435
+ fileServiceMock.exists
436
+ .withArgs(sinon.match((uri) => uri.path.toString() === `${agentsSkillDir}/dup-skill/SKILL.md`))
437
+ .resolves(true);
438
+ fileServiceMock.read
439
+ .withArgs(sinon.match((uri) => uri.path.toString() === `${promptsSkillDir}/dup-skill/SKILL.md`))
440
+ .resolves({
441
+ value: '---\nname: dup-skill\ndescription: from prompts\n---\nFrom prompts'
442
+ });
443
+ fileServiceMock.read
444
+ .withArgs(sinon.match((uri) => uri.path.toString() === `${agentsSkillDir}/dup-skill/SKILL.md`))
445
+ .resolves({
446
+ value: '---\nname: dup-skill\ndescription: from agents\n---\nFrom agents'
447
+ });
448
+ service.init();
449
+ await workspaceServiceMock.ready;
450
+ await new Promise(resolve => setTimeout(resolve, 10));
451
+ const skill = service.getSkill('dup-skill');
452
+ (0, chai_1.expect)(skill, 'dup-skill should be discovered').to.not.be.undefined;
453
+ (0, chai_1.expect)(skill.description).to.equal('from prompts');
454
+ (0, chai_1.expect)(skill.location).to.equal(new path_1.Path(`${promptsSkillDir}/dup-skill/SKILL.md`).fsPath());
455
+ // The second occurrence is reported (not silently swallowed) via a warning.
456
+ (0, chai_1.expect)(loggerWarnSpy.calledWith(sinon.match(/Duplicate skill found.*dup-skill/))).to.be.true;
457
+ });
365
458
  });
366
459
  });
367
460
  //# sourceMappingURL=skill-service.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-service.spec.js","sourceRoot":"","sources":["../../src/browser/skill-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,8DAAiE;AACjE,MAAM,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;AAEnC,uHAAiH;AACjH,wEAAiC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE1C,+BAA8B;AAC9B,+BAA+B;AAC/B,2CAA0E;AAC1E,sDAAmD;AACnD,sCAAwE;AAExE,mDAAsD;AAEtD,YAAY,EAAE,CAAC;AAEf,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAC;YAClC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;YAEhF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;YAEjF,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC3B,uBAAuB;gBACvB,8BAA8B;gBAC9B,gBAAgB;aACnB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,qBAAqB,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAE3E,yCAAyC;YACzC,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACrE,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,4BAA4B,EAC5B,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EACtC,0BAA0B,CAC7B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,4BAA4B;gBAC5B,iBAAiB;gBACjB,iBAAiB;gBACjB,0BAA0B;aAC7B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,SAAS,EACT,CAAC,gBAAgB,CAAC,EAClB,0BAA0B,CAC7B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,gBAAgB;gBAChB,0BAA0B;aAC7B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,SAAS,EACT,EAAE,EACF,0BAA0B,CAC7B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,4BAA4B,EAC5B,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,EAChD,0BAA0B,CAC7B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,4BAA4B;gBAC5B,gBAAgB;gBAChB,0BAA0B;aAC7B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,4BAA4B,EAC5B,CAAC,0BAA0B,CAAC,EAC5B,0BAA0B,CAC7B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,4BAA4B;gBAC5B,0BAA0B;aAC7B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,4BAA4B,EAC5B,EAAE,EACF,0BAA0B,CAC7B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,4BAA4B;gBAC5B,0BAA0B;aAC7B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,4BAA4B,EAC5B,CAAC,gBAAgB,CAAC,EAClB,SAAS,CACZ,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,4BAA4B;gBAC5B,gBAAgB;aACnB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC5C,MAAM,WAAW,GAAG;;;;;;;;;;;2BAWL,CAAC;YAEhB,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;;2BAEjB,CAAC,CAAC;YACjB,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnF,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACpE,MAAM,WAAW,GAAG,gCAAgC,CAAC;YAErD,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAClE,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAC/C,MAAM,WAAW,GAAG;;cAElB,CAAC;YAEH,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,WAAW,GAAG;;;;cAIlB,CAAC;YAEH,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,WAAW,GAAG;;;;QAIxB,CAAC;YAEG,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACxD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjE,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACvD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAClC,MAAM,WAAW,GAAG;;;;;;;QAOxB,CAAC;YAEG,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC1D,MAAM,WAAW,GAAG;;;;;;;;OAQzB,CAAC;YAEI,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAClD,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,WAAW,GAAG;;;;CAI/B,CAAC;YAEU,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACxD,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACvC,8DAA8D;QAC9D,IAAI,eAAoB,CAAC;QACzB,IAAI,aAA8B,CAAC;QACnC,IAAI,aAA8B,CAAC;QACnC,8DAA8D;QAC9D,IAAI,sBAA2B,CAAC;QAChC,8DAA8D;QAC9D,IAAI,oBAAyB,CAAC;QAC9B,8DAA8D;QAC9D,IAAI,eAAoB,CAAC;QACzB,IAAI,kBAA6C,CAAC;QAClD,8DAA8D;QAC9D,IAAI,wBAAsC,CAAC;QAE3C,SAAS,aAAa;YAClB,MAAM,OAAO,GAAG,IAAI,mCAAmB,EAAE,CAAC;YACzC,OAA+C,CAAC,WAAW,GAAG,eAAe,CAAC;YAC9E,OAA+C,CAAC,WAAW,GAAG,eAAe,CAAC;YAC/E,MAAM,UAAU,GAAY,KAAK,CAAC,kBAAkB,CAAC,aAAM,CAAC,CAAC;YAC7D,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC;YAChC,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC;YAC/B,OAA0C,CAAC,MAAM,GAAG,UAAU,CAAC;YAC/D,OAAsD,CAAC,kBAAkB,GAAG,sBAAsB,CAAC;YACnG,OAAoD,CAAC,gBAAgB,GAAG,oBAAoB,CAAC;YAC9F,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,UAAU,CAAC,GAAG,EAAE;YACZ,kBAAkB,GAAG,IAAI,cAAO,EAAoB,CAAC;YACrD,wBAAwB,GAAG,IAAI,cAAO,EAAE,CAAC;YAEzC,eAAe,GAAG;gBACd,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;gBACpB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAU,CAAC,IAAI,CAAC;gBAC5C,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;gBAClB,gBAAgB,EAAE,CAAC,QAAuC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;aACpG,CAAC;YAEF,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAE7B,sBAAsB,GAAG;gBACrB,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAC7D,eAAe,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;aAC7E,CAAC;YAEF,oBAAoB,GAAG;gBACnB,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;gBACxB,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,kBAAkB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAU,CAAC,IAAI,CAAC;aAC5D,CAAC;YAEF,eAAe,GAAG;gBACd,qCAAqC,EAAE,EAAE;gBACzC,mBAAmB,EAAE,wBAAwB,CAAC,KAAK;aACtD,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACX,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC7B,wBAAwB,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,2DAA2D;YAC3D,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,2BAA2B,CAAC,CAAC;iBACxF,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,8BAA8B;YAC7B,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,qCAAqC;YACrC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,qCAAqC;YACrC,IAAA,aAAM,EAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CACnC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,2BAA2B,CAAC,EAC9E,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAClD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAEd,wCAAwC;YACxC,IAAA,aAAM,EAAC,aAAa,CAAC,UAAU,CAC3B,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CACvE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,6CAA6C;YAC7C,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEvC,8BAA8B;YAC7B,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,qDAAqD;YACrD,IAAA,aAAM,EAAC,aAAa,CAAC,UAAU,CAC3B,KAAK,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAChF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,iDAAiD;YAChD,eAA2C,CAAC,qCAAqC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAErH,iEAAiE;YACjE,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,OAAO;iBAClB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAEhC,sCAAsC;YACtC,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,4BAA4B,CAAC,CAAC;iBACzF,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErB,8BAA8B;YAC7B,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,iEAAiE;YACjE,IAAA,aAAM,EAAC,aAAa,CAAC,UAAU,CAC3B,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAC5D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,6DAA6D;YAC7D,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,2BAA2B,CAAC,CAAC;iBACxF,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,sCAAsC;YACrC,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,6BAA6B;YAC7B,IAAA,aAAM,EAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAE9C,2DAA2D;YAC3D,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,OAAO;iBAClB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC;gBACN,QAAQ,EAAE,CAAC;wBACP,WAAW,EAAE,IAAI;wBACjB,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,UAAG,CAAC,YAAY,CAAC,6CAA6C,CAAC;qBAC5E,CAAC;aACL,CAAC,CAAC;YACP,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,sDAAsD,CAAC,CAAC;iBACnH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,IAAI;iBACf,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,sDAAsD,CAAC,CAAC;iBACnH,QAAQ,CAAC;gBACN,KAAK,EAAE;;;;mBAIR;aACF,CAAC,CAAC;YAEP,2DAA2D;YAC3D,kBAAkB,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,CAAC;wBACN,IAAI,EAAE,CAAC,EAAE,uBAAuB;wBAChC,QAAQ,EAAE,UAAG,CAAC,YAAY,CAAC,kCAAkC,CAAC;qBACjE,CAAC;gBACF,UAAU,EAAE,EAAE;aACc,CAAC,CAAC;YAElC,wCAAwC;YACxC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,0BAA0B;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YACnC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"skill-service.spec.js","sourceRoot":"","sources":["../../src/browser/skill-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,8DAAiE;AACjE,MAAM,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;AAEnC,uHAAiH;AACjH,wEAAiC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE1C,+BAA8B;AAC9B,+BAA+B;AAC/B,2CAA0E;AAC1E,sDAAmD;AACnD,sCAAwE;AAExE,mDAAsD;AAEtD,YAAY,EAAE,CAAC;AAEf,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAC;YAClC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;YAEhF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;YAEjF,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC3B,uBAAuB;gBACvB,8BAA8B;gBAC9B,gBAAgB;aACnB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,qBAAqB,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAE3E,yCAAyC;YACzC,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACtE,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,CAAC,4BAA4B,EAAE,2BAA2B,CAAC,EAC3D,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EACtC,CAAC,0BAA0B,EAAE,2BAA2B,CAAC,CAC5D,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE;gBACzD,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,WAAW,EAAE;gBACxD,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC/C,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC/C,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;gBACrD,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,SAAS,EAAE;aACzD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uGAAuG,EAAE,GAAG,EAAE;YAC7G,0FAA0F;YAC1F,4FAA4F;YAC5F,4DAA4D;YAC5D,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,CAAC,4BAA4B,EAAE,2BAA2B,CAAC,EAC3D,EAAE,EACF,EAAE,CACL,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClD,4BAA4B;gBAC5B,2BAA2B;aAC9B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,EAAE,EACF,CAAC,gBAAgB,CAAC,EAClB,CAAC,0BAA0B,CAAC,CAC/B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC9C,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;aACxD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,EAAE,EACF,EAAE,EACF,CAAC,0BAA0B,EAAE,2BAA2B,CAAC,CAC5D,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;gBACrD,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,SAAS,EAAE;aACzD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,CAAC,4BAA4B,CAAC,EAC9B,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,EAChD,CAAC,0BAA0B,CAAC,CAC/B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE;gBACzD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE;gBAC9C,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;aACxD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,CAAC,4BAA4B,CAAC,EAC9B,CAAC,0BAA0B,CAAC,EAC5B,CAAC,0BAA0B,CAAC,CAC/B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE;gBACzD,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,YAAY,EAAE;aAC3D,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,CAAC,4BAA4B,CAAC,EAC9B,EAAE,EACF,CAAC,0BAA0B,CAAC,CAC/B,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE;gBACzD,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;aACxD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,CAAC,4BAA4B,CAAC,EAC9B,CAAC,gBAAgB,CAAC,EAClB,EAAE,CACL,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE;gBACzD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE;aACjD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAClC,CAAC,4BAA4B,EAAE,4BAA4B,CAAC,EAC5D,EAAE,EACF,EAAE,CACL,CAAC;YAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE;aAC5D,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC5C,MAAM,WAAW,GAAG;;;;;;;;;;;2BAWL,CAAC;YAEhB,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;;2BAEjB,CAAC,CAAC;YACjB,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnF,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACpE,MAAM,WAAW,GAAG,gCAAgC,CAAC;YAErD,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAClE,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAC/C,MAAM,WAAW,GAAG;;cAElB,CAAC;YAEH,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,WAAW,GAAG;;;;cAIlB,CAAC;YAEH,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,WAAW,GAAG;;;;QAIxB,CAAC;YAEG,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACxD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjE,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACvD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAClC,MAAM,WAAW,GAAG;;;;;;;QAOxB,CAAC;YAEG,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC1D,MAAM,WAAW,GAAG;;;;;;;;OAQzB,CAAC;YAEI,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAClD,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,WAAW,GAAG;;;;CAI/B,CAAC;YAEU,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;YAE3C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACxD,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACvC,8DAA8D;QAC9D,IAAI,eAAoB,CAAC;QACzB,IAAI,aAA8B,CAAC;QACnC,IAAI,aAA8B,CAAC;QACnC,8DAA8D;QAC9D,IAAI,sBAA2B,CAAC;QAChC,8DAA8D;QAC9D,IAAI,oBAAyB,CAAC;QAC9B,8DAA8D;QAC9D,IAAI,eAAoB,CAAC;QACzB,IAAI,kBAA6C,CAAC;QAClD,8DAA8D;QAC9D,IAAI,wBAAsC,CAAC;QAE3C,SAAS,aAAa;YAClB,MAAM,OAAO,GAAG,IAAI,mCAAmB,EAAE,CAAC;YACzC,OAA+C,CAAC,WAAW,GAAG,eAAe,CAAC;YAC9E,OAA+C,CAAC,WAAW,GAAG,eAAe,CAAC;YAC/E,MAAM,UAAU,GAAY,KAAK,CAAC,kBAAkB,CAAC,aAAM,CAAC,CAAC;YAC7D,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC;YAChC,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC;YAC/B,OAA0C,CAAC,MAAM,GAAG,UAAU,CAAC;YAC/D,OAAsD,CAAC,kBAAkB,GAAG,sBAAsB,CAAC;YACnG,OAAoD,CAAC,gBAAgB,GAAG,oBAAoB,CAAC;YAC9F,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,UAAU,CAAC,GAAG,EAAE;YACZ,kBAAkB,GAAG,IAAI,cAAO,EAAoB,CAAC;YACrD,wBAAwB,GAAG,IAAI,cAAO,EAAE,CAAC;YAEzC,eAAe,GAAG;gBACd,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;gBACpB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAU,CAAC,IAAI,CAAC;gBAC5C,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;gBAClB,gBAAgB,EAAE,CAAC,QAAuC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;aACpG,CAAC;YAEF,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAE7B,sBAAsB,GAAG;gBACrB,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAC7D,eAAe,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;aAC7E,CAAC;YAEF,oBAAoB,GAAG;gBACnB,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;gBACxB,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,kBAAkB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAU,CAAC,IAAI,CAAC;aAC5D,CAAC;YAEF,eAAe,GAAG;gBACd,qCAAqC,EAAE,EAAE;gBACzC,mBAAmB,EAAE,wBAAwB,CAAC,KAAK;aACtD,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACX,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC7B,wBAAwB,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,2DAA2D;YAC3D,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,2BAA2B,CAAC,CAAC;iBACxF,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,8BAA8B;YAC7B,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,qCAAqC;YACrC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,qCAAqC;YACrC,IAAA,aAAM,EAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CACnC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,2BAA2B,CAAC,EAC9E,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAClD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAEd,wCAAwC;YACxC,IAAA,aAAM,EAAC,aAAa,CAAC,UAAU,CAC3B,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CACvE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,6CAA6C;YAC7C,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEvC,8BAA8B;YAC7B,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,qDAAqD;YACrD,IAAA,aAAM,EAAC,aAAa,CAAC,UAAU,CAC3B,KAAK,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAChF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,iDAAiD;YAChD,eAA2C,CAAC,qCAAqC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAErH,iEAAiE;YACjE,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,OAAO;iBAClB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAEhC,sCAAsC;YACtC,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,4BAA4B,CAAC,CAAC;iBACzF,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErB,8BAA8B;YAC7B,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,iEAAiE;YACjE,IAAA,aAAM,EAAC,aAAa,CAAC,UAAU,CAC3B,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAC5D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,6DAA6D;YAC7D,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,2BAA2B,CAAC,CAAC;iBACxF,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,sCAAsC;YACrC,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,6BAA6B;YAC7B,IAAA,aAAM,EAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAE9C,2DAA2D;YAC3D,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,OAAO;iBAClB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC;gBACN,QAAQ,EAAE,CAAC;wBACP,WAAW,EAAE,IAAI;wBACjB,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,UAAG,CAAC,YAAY,CAAC,6CAA6C,CAAC;qBAC5E,CAAC;aACL,CAAC,CAAC;YACP,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,sDAAsD,CAAC,CAAC;iBACnH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,IAAI;iBACf,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,sDAAsD,CAAC,CAAC;iBACnH,QAAQ,CAAC;gBACN,KAAK,EAAE;;;;mBAIR;aACF,CAAC,CAAC;YAEP,2DAA2D;YAC3D,kBAAkB,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,CAAC;wBACN,IAAI,EAAE,CAAC,EAAE,uBAAuB;wBAChC,QAAQ,EAAE,UAAG,CAAC,YAAY,CAAC,kCAAkC,CAAC;qBACjE,CAAC;gBACF,UAAU,EAAE,EAAE;aACc,CAAC,CAAC;YAElC,wCAAwC;YACxC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,0BAA0B;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YACnC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uGAAuG,EAAE,KAAK,IAAI,EAAE;YACnH,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC;gBACrC,EAAE,QAAQ,EAAE,UAAG,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;aAC/C,CAAC,CAAC;YAEH,sFAAsF;YACtF,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,kCAAkC,CAAC,CAAC;iBAC/F,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,2BAA2B,CAAC,CAAC;iBACxF,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,+BAA+B,CAAC,CAAC;iBAC5F,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,wBAAwB,CAAC,CAAC;iBACrF,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErB,8EAA8E;YAC9E,MAAM,eAAe,GAAG,4BAA4B,CAAC;YACrD,MAAM,cAAc,GAAG,2BAA2B,CAAC;YACnD,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,eAAe,CAAC,CAAC;iBAC5E,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,cAAc,CAAC,CAAC;iBAC3E,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,OAAO;iBAClB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,eAAe,CAAC,CAAC;iBAC5E,QAAQ,CAAC;gBACN,QAAQ,EAAE,CAAC;wBACP,WAAW,EAAE,IAAI;wBACjB,IAAI,EAAE,WAAW;wBACjB,QAAQ,EAAE,UAAG,CAAC,YAAY,CAAC,GAAG,eAAe,YAAY,CAAC;qBAC7D,CAAC;aACL,CAAC,CAAC;YACP,eAAe,CAAC,OAAO;iBAClB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,cAAc,CAAC,CAAC;iBAC3E,QAAQ,CAAC;gBACN,QAAQ,EAAE,CAAC;wBACP,WAAW,EAAE,IAAI;wBACjB,IAAI,EAAE,WAAW;wBACjB,QAAQ,EAAE,UAAG,CAAC,YAAY,CAAC,GAAG,cAAc,YAAY,CAAC;qBAC5D,CAAC;aACL,CAAC,CAAC;YAEP,8EAA8E;YAC9E,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,eAAe,qBAAqB,CAAC,CAAC;iBACpG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,MAAM;iBACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,cAAc,qBAAqB,CAAC,CAAC;iBACnG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,eAAe,CAAC,IAAI;iBACf,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,eAAe,qBAAqB,CAAC,CAAC;iBACpG,QAAQ,CAAC;gBACN,KAAK,EAAE,oEAAoE;aAC9E,CAAC,CAAC;YACP,eAAe,CAAC,IAAI;iBACf,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,cAAc,qBAAqB,CAAC,CAAC;iBACnG,QAAQ,CAAC;gBACN,KAAK,EAAE,kEAAkE;aAC5E,CAAC,CAAC;YAEN,OAA2C,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,oBAAoB,CAAC,KAAK,CAAC;YACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAEtD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAA,aAAM,EAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YACpE,IAAA,aAAM,EAAC,KAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACpD,IAAA,aAAM,EAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,WAAI,CAAC,GAAG,eAAe,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7F,4EAA4E;YAC5E,IAAA,aAAM,EAAC,aAAa,CAAC,UAAU,CAC3B,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAClD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-core-preferences.d.ts","sourceRoot":"","sources":["../../src/common/ai-core-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAKH,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAExF,eAAO,MAAM,yBAAyB,QAAiE,CAAC;AACxG,eAAO,MAAM,gCAAgC,sDAAsD,CAAC;AACpG,eAAO,MAAM,gCAAgC,8CAA8C,CAAC;AAC5F,eAAO,MAAM,yBAAyB,mCAAmC,CAAC;AAC1E,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,yCAAyC,sCAAsC,CAAC;AAC7F,eAAO,MAAM,iCAAiC,wCAAwC,CAAC;AAEvF,eAAO,MAAM,iCAAiC,qCAAqC,CAAC;AAEpF,eAAO,MAAM,sBAAsB,EAAE,gBA+LpC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAChC,CAAC,gCAAgC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,CAAC,gCAAgC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IACtE,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;IACzE,CAAC,2BAA2B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,CAAC,yCAAyC,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1E,CAAC,iCAAiC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,cAAc,CAAC,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,KAAK;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAErE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAKjE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,GAAI,SAAS,cAAc,EAAE,QAAQ,KAAK,KAAG,MA0CrF,CAAC"}
1
+ {"version":3,"file":"ai-core-preferences.d.ts","sourceRoot":"","sources":["../../src/common/ai-core-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAKH,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAExF,eAAO,MAAM,yBAAyB,QAAiE,CAAC;AACxG,eAAO,MAAM,gCAAgC,sDAAsD,CAAC;AACpG,eAAO,MAAM,gCAAgC,8CAA8C,CAAC;AAC5F,eAAO,MAAM,yBAAyB,mCAAmC,CAAC;AAC1E,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,yCAAyC,sCAAsC,CAAC;AAC7F,eAAO,MAAM,iCAAiC,wCAAwC,CAAC;AAEvF,eAAO,MAAM,iCAAiC,qCAAqC,CAAC;AAEpF,eAAO,MAAM,sBAAsB,EAAE,gBAgMpC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAChC,CAAC,gCAAgC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,CAAC,gCAAgC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IACtE,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;IACzE,CAAC,2BAA2B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,CAAC,yCAAyC,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1E,CAAC,iCAAiC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,cAAc,CAAC,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,KAAK;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAErE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAKjE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,GAAI,SAAS,cAAc,EAAE,QAAQ,KAAK,KAAG,MA0CrF,CAAC"}
@@ -126,7 +126,8 @@ exports.aiCorePreferenceSchema = {
126
126
  },
127
127
  [exports.PREFERENCE_NAME_SKILL_DIRECTORIES]: {
128
128
  description: core_1.nls.localize('theia/ai/core/skillDirectories/description', 'Additional directories containing skill definitions (SKILL.md files). Skills provide reusable instructions that can be referenced by AI agents. ' +
129
- 'The .prompts/skills directory in your workspace and the skills directory in your product\'s configuration folder are always included.'),
129
+ 'The .prompts/skills and .agents/skills directories in your workspace, the .agents/skills directory in your home directory, ' +
130
+ 'and the skills directory in your product\'s configuration folder are always included.'),
130
131
  type: 'array',
131
132
  items: {
132
133
  type: 'string'
@@ -1 +1 @@
1
- {"version":3,"file":"ai-core-preferences.js","sourceRoot":"","sources":["../../src/common/ai-core-preferences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-core-preferences.js","sourceRoot":"","sources":["../../src/common/ai-core-preferences.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,8 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const language_model_1 = require("./language-model");
19
18
  const chai_1 = require("chai");
19
+ const language_model_1 = require("./language-model");
20
20
  describe('isModelMatching', () => {
21
21
  it('returns false with one of two parameter mismatches', () => {
22
22
  (0, chai_1.expect)((0, language_model_1.isModelMatching)({
@@ -59,4 +59,68 @@ describe('isModelMatching', () => {
59
59
  })).eql(true);
60
60
  });
61
61
  });
62
+ describe('isToolCallContent', () => {
63
+ it('accepts a well-formed ToolCallContent with a text item', () => {
64
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({ content: [{ type: 'text', text: 'hello' }] })).to.be.true;
65
+ });
66
+ it('accepts an empty content array', () => {
67
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({ content: [] })).to.be.true;
68
+ });
69
+ it('accepts content with mixed item types', () => {
70
+ const value = {
71
+ content: [
72
+ { type: 'text', text: 'hello' },
73
+ { type: 'image', mimeType: 'image/png', base64data: 'abc' },
74
+ { type: 'error', data: 'boom' }
75
+ ]
76
+ };
77
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)(value)).to.be.true;
78
+ });
79
+ it('rejects undefined', () => {
80
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)(undefined)).to.be.false;
81
+ });
82
+ it('rejects null', () => {
83
+ // eslint-disable-next-line no-null/no-null
84
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)(null)).to.be.false;
85
+ });
86
+ it('rejects primitive values', () => {
87
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)('not an object')).to.be.false;
88
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)(42)).to.be.false;
89
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)(true)).to.be.false;
90
+ });
91
+ it('rejects objects without a content key', () => {
92
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({ files: [] })).to.be.false;
93
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({})).to.be.false;
94
+ });
95
+ // Regression: this is the exact shape that triggered the chat-flicker bug.
96
+ // `getWorkspaceFileList` echoes workspace entry names into the result keys,
97
+ // and a workspace containing a directory literally named `content` produces
98
+ // an object where `content` is a plain string, not a ToolCallContentResult
99
+ // array.
100
+ it('rejects an object whose content is a string (regression)', () => {
101
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({ content: 'directory' })).to.be.false;
102
+ });
103
+ it('rejects an object whose content is a nested object', () => {
104
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({ content: { nested: true } })).to.be.false;
105
+ });
106
+ it('rejects an object whose content is a number', () => {
107
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({ content: 42 })).to.be.false;
108
+ });
109
+ it('rejects an object whose content is null', () => {
110
+ // eslint-disable-next-line no-null/no-null
111
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)({ content: null })).to.be.false;
112
+ });
113
+ it('rejects a top-level array (no content key)', () => {
114
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)([{ type: 'text', text: 'hello' }])).to.be.false;
115
+ });
116
+ it('rejects a directory-listing-shaped object containing a "content" entry (regression)', () => {
117
+ const value = {
118
+ '.devcontainer': 'directory',
119
+ 'config.yaml': 'file',
120
+ 'content': 'directory',
121
+ 'go.mod': 'file'
122
+ };
123
+ (0, chai_1.expect)((0, language_model_1.isToolCallContent)(value)).to.be.false;
124
+ });
125
+ });
62
126
  //# sourceMappingURL=language-model.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"language-model.spec.js","sourceRoot":"","sources":["../../src/common/language-model.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,qDAAyF;AACzF,+BAA8B;AAE9B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC1D,IAAA,aAAM,EACF,IAAA,gCAAe,EACY;YACnB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;SAChB,EACc;YACX,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;SAChB,CACJ,CACJ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,IAAA,aAAM,EACF,IAAA,gCAAe,EACY;YACnB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;SAChB,EACc;YACX,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;SAChB,CACJ,CACJ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,IAAA,aAAM,EACF,IAAA,gCAAe,EACY;YACnB,IAAI,EAAE,QAAQ;SACjB,EACc;YACX,IAAI,EAAE,QAAQ;SACjB,CACJ,CACJ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,IAAA,aAAM,EACF,IAAA,gCAAe,EACY;YACnB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;SAChB,EACc;YACX,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;SAChB,CACJ,CACJ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC3D,IAAA,aAAM,EACF,IAAA,gCAAe,EACY,EAAE,EACV;YACX,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;SAChB,CACJ,CACJ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"language-model.spec.js","sourceRoot":"","sources":["../../src/common/language-model.spec.ts"],"names":[],"mappings":"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"}
@@ -64,9 +64,22 @@ export declare function parseSkillFile(content: string): {
64
64
  content: string;
65
65
  };
66
66
  /**
67
- * Combines skill directories with proper priority ordering.
68
- * Workspace directory has highest priority, followed by configured directories, then default.
69
- * First directory wins on duplicates.
67
+ * Provenance tier of a skill directory, used to dispatch tier-specific processing.
70
68
  */
71
- export declare function combineSkillDirectories(workspaceSkillsDir: string | undefined, configuredDirectories: string[], defaultSkillsDir: string | undefined): string[];
69
+ export type SkillDirectoryTier = 'workspace' | 'configured' | 'default';
70
+ /**
71
+ * A skill directory paired with the tier it originates from.
72
+ */
73
+ export interface SkillDirectoryEntry {
74
+ /** Absolute filesystem path to the skill directory */
75
+ path: string;
76
+ /** Tier the directory belongs to */
77
+ tier: SkillDirectoryTier;
78
+ }
79
+ /**
80
+ * Combines skill directories with proper priority ordering and provenance.
81
+ * Workspace directories have highest priority, followed by configured directories, then defaults.
82
+ * First occurrence of a path wins on duplicates; later occurrences (regardless of tier) are dropped.
83
+ */
84
+ export declare function combineSkillDirectories(workspaceSkillsDirs: string[], configuredDirectories: string[], defaultSkillsDirs: string[]): SkillDirectoryEntry[];
72
85
  //# sourceMappingURL=skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/common/skill.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,eAAO,MAAM,eAAe,aAAa,CAAC;AAc1C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IAEb,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,yBAAiB,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,SAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAU5D;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAExE;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,gBAAgB;IAC3C,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvG;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0B3G;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,kBAAkB,EAAE,MAAM,GAAG,SAAS,EACtC,qBAAqB,EAAE,MAAM,EAAE,EAC/B,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACrC,MAAM,EAAE,CAcV"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/common/skill.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,eAAO,MAAM,eAAe,aAAa,CAAC;AAc1C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IAEb,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,yBAAiB,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,SAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAU5D;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAExE;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,gBAAgB;IAC3C,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvG;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0B3G;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,mBAAmB,EAAE,MAAM,EAAE,EAC7B,qBAAqB,EAAE,MAAM,EAAE,EAC/B,iBAAiB,EAAE,MAAM,EAAE,GAC5B,mBAAmB,EAAE,CAiBvB"}
@@ -129,23 +129,26 @@ function parseSkillFile(content) {
129
129
  }
130
130
  }
131
131
  /**
132
- * Combines skill directories with proper priority ordering.
133
- * Workspace directory has highest priority, followed by configured directories, then default.
134
- * First directory wins on duplicates.
132
+ * Combines skill directories with proper priority ordering and provenance.
133
+ * Workspace directories have highest priority, followed by configured directories, then defaults.
134
+ * First occurrence of a path wins on duplicates; later occurrences (regardless of tier) are dropped.
135
135
  */
136
- function combineSkillDirectories(workspaceSkillsDir, configuredDirectories, defaultSkillsDir) {
137
- const allDirectories = [];
138
- if (workspaceSkillsDir) {
139
- allDirectories.push(workspaceSkillsDir);
140
- }
141
- for (const dir of configuredDirectories) {
142
- if (!allDirectories.includes(dir)) {
143
- allDirectories.push(dir);
136
+ function combineSkillDirectories(workspaceSkillsDirs, configuredDirectories, defaultSkillsDirs) {
137
+ const seen = new Set();
138
+ const result = [];
139
+ const tiers = [
140
+ { dirs: workspaceSkillsDirs, tier: 'workspace' },
141
+ { dirs: configuredDirectories, tier: 'configured' },
142
+ { dirs: defaultSkillsDirs, tier: 'default' }
143
+ ];
144
+ for (const { dirs, tier } of tiers) {
145
+ for (const dir of dirs) {
146
+ if (!seen.has(dir)) {
147
+ seen.add(dir);
148
+ result.push({ path: dir, tier });
149
+ }
144
150
  }
145
151
  }
146
- if (defaultSkillsDir && !allDirectories.includes(defaultSkillsDir)) {
147
- allDirectories.push(defaultSkillsDir);
148
- }
149
- return allDirectories;
152
+ return result;
150
153
  }
151
154
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/common/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/common/skill.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAqFhF,4CAEC;AASD,4DAqBC;AAOD,wCA0BC;AAsBD,0DAqBC;AA/LD,qCAA+B;AAE/B;;GAEG;AACU,QAAA,eAAe,GAAG,UAAU,CAAC;AAE1C;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAEpD;;GAEG;AACH,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAyBpC,IAAiB,gBAAgB,CAuBhC;AAvBD,WAAiB,gBAAgB;IAC7B;;;OAGG;IACH,SAAgB,EAAE,CAAC,KAAc;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,2CAA2C;QAC3C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC;IAC/E,CAAC;IAVe,mBAAE,KAUjB,CAAA;IAED;;OAEG;IACH,SAAgB,MAAM,CAAC,CAAmB,EAAE,CAAmB;QAC3D,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;IAC7B,CAAC;IAFe,uBAAM,SAErB,CAAA;AACL,CAAC,EAvBgB,gBAAgB,gCAAhB,gBAAgB,QAuBhC;AAUD;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,WAA6B,EAAE,aAAqB;IACzF,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACJ,IAAI,WAAW,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,eAAe,WAAW,CAAC,IAAI,gCAAgC,aAAa,oBAAoB,CAAC,CAAC;QAClH,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,eAAe,WAAW,CAAC,IAAI,6DAA6D,CAAC,CAAC;QAC9G,CAAC;IACL,CAAC;IAED,IAAI,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,+CAA+C,sBAAsB,aAAa,CAAC,CAAC;IACpG,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC1C,MAAM,gBAAgB,GAAG,yCAAyC,CAAC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAA,cAAI,EAAC,WAAW,CAAC,CAAC;QAErC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;AACL,CAAC;AAiBD;;;;GAIG;AACH,SAAgB,uBAAuB,CACnC,mBAA6B,EAC7B,qBAA+B,EAC/B,iBAA2B;IAE3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,KAAK,GAAwD;QAC/D,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE;QAChD,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE;QACnD,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE;KAC/C,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@theia/ai-core",
3
- "version": "1.73.0-next.2+8ed51a5e94d",
3
+ "version": "1.73.0-next.20+f7f30c799",
4
4
  "description": "Theia - AI Core",
5
5
  "dependencies": {
6
- "@theia/core": "1.73.0-next.2+8ed51a5e94d",
7
- "@theia/editor": "1.73.0-next.2+8ed51a5e94d",
8
- "@theia/filesystem": "1.73.0-next.2+8ed51a5e94d",
9
- "@theia/monaco": "1.73.0-next.2+8ed51a5e94d",
6
+ "@theia/core": "1.73.0-next.20+f7f30c799",
7
+ "@theia/editor": "1.73.0-next.20+f7f30c799",
8
+ "@theia/filesystem": "1.73.0-next.20+f7f30c799",
9
+ "@theia/monaco": "1.73.0-next.20+f7f30c799",
10
10
  "@theia/monaco-editor-core": "1.108.201",
11
- "@theia/output": "1.73.0-next.2+8ed51a5e94d",
12
- "@theia/variable-resolver": "1.73.0-next.2+8ed51a5e94d",
13
- "@theia/workspace": "1.73.0-next.2+8ed51a5e94d",
11
+ "@theia/output": "1.73.0-next.20+f7f30c799",
12
+ "@theia/variable-resolver": "1.73.0-next.20+f7f30c799",
13
+ "@theia/workspace": "1.73.0-next.20+f7f30c799",
14
14
  "@types/js-yaml": "^4.0.9",
15
15
  "fast-deep-equal": "^3.1.3",
16
16
  "js-yaml": "^4.1.1",
@@ -58,5 +58,5 @@
58
58
  "nyc": {
59
59
  "extends": "../../configs/nyc.json"
60
60
  },
61
- "gitHead": "8ed51a5e94d15a6003725683a14773c6f8d64ac6"
61
+ "gitHead": "f7f30c799bad3eeeb4daa01583a7083a9d58c26d"
62
62
  }
@@ -55,94 +55,127 @@ describe('SkillService', () => {
55
55
  });
56
56
 
57
57
  describe('directory prioritization', () => {
58
- it('workspace directory comes first when all directories provided', () => {
58
+ it('workspace directories come first when all directories provided', () => {
59
59
  const result = combineSkillDirectories(
60
- '/workspace/.prompts/skills',
60
+ ['/workspace/.prompts/skills', '/workspace/.agents/skills'],
61
61
  ['/custom/skills1', '/custom/skills2'],
62
- '/home/user/.theia/skills'
62
+ ['/home/user/.theia/skills', '/home/user/.agents/skills']
63
63
  );
64
64
 
65
65
  expect(result).to.deep.equal([
66
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
67
+ { path: '/workspace/.agents/skills', tier: 'workspace' },
68
+ { path: '/custom/skills1', tier: 'configured' },
69
+ { path: '/custom/skills2', tier: 'configured' },
70
+ { path: '/home/user/.theia/skills', tier: 'default' },
71
+ { path: '/home/user/.agents/skills', tier: 'default' }
72
+ ]);
73
+ });
74
+
75
+ it('preserves the workspace-tier order: .prompts/skills wins over .agents/skills on duplicate skill names', () => {
76
+ // The `.prompts/skills` directory is intentionally listed first within the workspace tier
77
+ // because it is the Theia-explicit folder; users opting into it signal stronger intent than
78
+ // those relying on the generic `.agents/skills` convention.
79
+ const result = combineSkillDirectories(
80
+ ['/workspace/.prompts/skills', '/workspace/.agents/skills'],
81
+ [],
82
+ []
83
+ );
84
+
85
+ expect(result.map(entry => entry.path)).to.deep.equal([
66
86
  '/workspace/.prompts/skills',
67
- '/custom/skills1',
68
- '/custom/skills2',
69
- '/home/user/.theia/skills'
87
+ '/workspace/.agents/skills'
70
88
  ]);
71
89
  });
72
90
 
73
- it('works without workspace directory', () => {
91
+ it('works without workspace directories', () => {
74
92
  const result = combineSkillDirectories(
75
- undefined,
93
+ [],
76
94
  ['/custom/skills'],
77
- '/home/user/.theia/skills'
95
+ ['/home/user/.theia/skills']
78
96
  );
79
97
 
80
98
  expect(result).to.deep.equal([
81
- '/custom/skills',
82
- '/home/user/.theia/skills'
99
+ { path: '/custom/skills', tier: 'configured' },
100
+ { path: '/home/user/.theia/skills', tier: 'default' }
83
101
  ]);
84
102
  });
85
103
 
86
- it('works with only default directory', () => {
104
+ it('works with only default directories', () => {
87
105
  const result = combineSkillDirectories(
88
- undefined,
89
106
  [],
90
- '/home/user/.theia/skills'
107
+ [],
108
+ ['/home/user/.theia/skills', '/home/user/.agents/skills']
91
109
  );
92
110
 
93
- expect(result).to.deep.equal(['/home/user/.theia/skills']);
111
+ expect(result).to.deep.equal([
112
+ { path: '/home/user/.theia/skills', tier: 'default' },
113
+ { path: '/home/user/.agents/skills', tier: 'default' }
114
+ ]);
94
115
  });
95
116
 
96
117
  it('deduplicates workspace directory if also in configured', () => {
97
118
  const result = combineSkillDirectories(
98
- '/workspace/.prompts/skills',
119
+ ['/workspace/.prompts/skills'],
99
120
  ['/workspace/.prompts/skills', '/custom/skills'],
100
- '/home/user/.theia/skills'
121
+ ['/home/user/.theia/skills']
101
122
  );
102
123
 
103
124
  expect(result).to.deep.equal([
104
- '/workspace/.prompts/skills',
105
- '/custom/skills',
106
- '/home/user/.theia/skills'
125
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
126
+ { path: '/custom/skills', tier: 'configured' },
127
+ { path: '/home/user/.theia/skills', tier: 'default' }
107
128
  ]);
108
129
  });
109
130
 
110
131
  it('deduplicates default directory if also in configured', () => {
111
132
  const result = combineSkillDirectories(
112
- '/workspace/.prompts/skills',
133
+ ['/workspace/.prompts/skills'],
113
134
  ['/home/user/.theia/skills'],
114
- '/home/user/.theia/skills'
135
+ ['/home/user/.theia/skills']
115
136
  );
116
137
 
117
138
  expect(result).to.deep.equal([
118
- '/workspace/.prompts/skills',
119
- '/home/user/.theia/skills'
139
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
140
+ { path: '/home/user/.theia/skills', tier: 'configured' }
120
141
  ]);
121
142
  });
122
143
 
123
144
  it('handles empty configured directories', () => {
124
145
  const result = combineSkillDirectories(
125
- '/workspace/.prompts/skills',
146
+ ['/workspace/.prompts/skills'],
126
147
  [],
127
- '/home/user/.theia/skills'
148
+ ['/home/user/.theia/skills']
128
149
  );
129
150
 
130
151
  expect(result).to.deep.equal([
131
- '/workspace/.prompts/skills',
132
- '/home/user/.theia/skills'
152
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
153
+ { path: '/home/user/.theia/skills', tier: 'default' }
133
154
  ]);
134
155
  });
135
156
 
136
- it('handles undefined default directory', () => {
157
+ it('handles empty default directories', () => {
137
158
  const result = combineSkillDirectories(
138
- '/workspace/.prompts/skills',
159
+ ['/workspace/.prompts/skills'],
139
160
  ['/custom/skills'],
140
- undefined
161
+ []
141
162
  );
142
163
 
143
164
  expect(result).to.deep.equal([
144
- '/workspace/.prompts/skills',
145
- '/custom/skills'
165
+ { path: '/workspace/.prompts/skills', tier: 'workspace' },
166
+ { path: '/custom/skills', tier: 'configured' }
167
+ ]);
168
+ });
169
+
170
+ it('deduplicates duplicate workspace directories', () => {
171
+ const result = combineSkillDirectories(
172
+ ['/workspace/.prompts/skills', '/workspace/.prompts/skills'],
173
+ [],
174
+ []
175
+ );
176
+
177
+ expect(result).to.deep.equal([
178
+ { path: '/workspace/.prompts/skills', tier: 'workspace' }
146
179
  ]);
147
180
  });
148
181
  });
@@ -477,5 +510,86 @@ Test skill content`
477
510
  expect(skills).to.have.length(1);
478
511
  expect(skills[0].name).to.equal('test-skill');
479
512
  });
513
+
514
+ it('prefers a workspace `.prompts/skills` skill over a same-named `.agents/skills` skill in the same root', async () => {
515
+ const service = createService();
516
+
517
+ workspaceServiceMock.tryGetRoots.returns([
518
+ { resource: URI.fromFilePath('/workspace') }
519
+ ]);
520
+
521
+ // Stub default skill directories as non-existent to keep focus on workspace behavior.
522
+ fileServiceMock.exists
523
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === '/home/testuser/.theia-ide/skills'))
524
+ .resolves(false);
525
+ fileServiceMock.exists
526
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === '/home/testuser/.theia-ide'))
527
+ .resolves(false);
528
+ fileServiceMock.exists
529
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === '/home/testuser/.agents/skills'))
530
+ .resolves(false);
531
+ fileServiceMock.exists
532
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === '/home/testuser/.agents'))
533
+ .resolves(false);
534
+
535
+ // Both workspace skill directories exist and contain a `dup-skill` directory.
536
+ const promptsSkillDir = '/workspace/.prompts/skills';
537
+ const agentsSkillDir = '/workspace/.agents/skills';
538
+ fileServiceMock.exists
539
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === promptsSkillDir))
540
+ .resolves(true);
541
+ fileServiceMock.exists
542
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === agentsSkillDir))
543
+ .resolves(true);
544
+ fileServiceMock.resolve
545
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === promptsSkillDir))
546
+ .resolves({
547
+ children: [{
548
+ isDirectory: true,
549
+ name: 'dup-skill',
550
+ resource: URI.fromFilePath(`${promptsSkillDir}/dup-skill`)
551
+ }]
552
+ });
553
+ fileServiceMock.resolve
554
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === agentsSkillDir))
555
+ .resolves({
556
+ children: [{
557
+ isDirectory: true,
558
+ name: 'dup-skill',
559
+ resource: URI.fromFilePath(`${agentsSkillDir}/dup-skill`)
560
+ }]
561
+ });
562
+
563
+ // Each tier provides its own SKILL.md so we can distinguish them by location.
564
+ fileServiceMock.exists
565
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === `${promptsSkillDir}/dup-skill/SKILL.md`))
566
+ .resolves(true);
567
+ fileServiceMock.exists
568
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === `${agentsSkillDir}/dup-skill/SKILL.md`))
569
+ .resolves(true);
570
+ fileServiceMock.read
571
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === `${promptsSkillDir}/dup-skill/SKILL.md`))
572
+ .resolves({
573
+ value: '---\nname: dup-skill\ndescription: from prompts\n---\nFrom prompts'
574
+ });
575
+ fileServiceMock.read
576
+ .withArgs(sinon.match((uri: URI) => uri.path.toString() === `${agentsSkillDir}/dup-skill/SKILL.md`))
577
+ .resolves({
578
+ value: '---\nname: dup-skill\ndescription: from agents\n---\nFrom agents'
579
+ });
580
+
581
+ (service as unknown as { init: () => void }).init();
582
+ await workspaceServiceMock.ready;
583
+ await new Promise(resolve => setTimeout(resolve, 10));
584
+
585
+ const skill = service.getSkill('dup-skill');
586
+ expect(skill, 'dup-skill should be discovered').to.not.be.undefined;
587
+ expect(skill!.description).to.equal('from prompts');
588
+ expect(skill!.location).to.equal(new Path(`${promptsSkillDir}/dup-skill/SKILL.md`).fsPath());
589
+ // The second occurrence is reported (not silently swallowed) via a warning.
590
+ expect(loggerWarnSpy.calledWith(
591
+ sinon.match(/Duplicate skill found.*dup-skill/)
592
+ )).to.be.true;
593
+ });
480
594
  });
481
595
  });
@@ -23,7 +23,14 @@ import { FileService } from '@theia/filesystem/lib/browser/file-service';
23
23
  import { FileChangesEvent, FileChangeType } from '@theia/filesystem/lib/common/files';
24
24
  import { WorkspaceService } from '@theia/workspace/lib/browser';
25
25
  import { AICorePreferences, PREFERENCE_NAME_SKILL_DIRECTORIES } from '../common/ai-core-preferences';
26
- import { Skill, SkillDescription, SKILL_FILE_NAME, validateSkillDescription, parseSkillFile } from '../common/skill';
26
+ import {
27
+ Skill,
28
+ SkillDescription,
29
+ SKILL_FILE_NAME,
30
+ validateSkillDescription,
31
+ parseSkillFile,
32
+ combineSkillDirectories
33
+ } from '../common/skill';
27
34
 
28
35
  /** Debounce delay for coalescing rapid file system events */
29
36
  const UPDATE_DEBOUNCE_MS = 50;
@@ -178,39 +185,26 @@ export class DefaultSkillService implements SkillService {
178
185
 
179
186
  const configuredDirectories = (this.preferences[PREFERENCE_NAME_SKILL_DIRECTORIES] ?? [])
180
187
  .map(dir => Path.untildify(dir, homePath));
181
- const defaultSkillsDir = await this.getDefaultSkillsDirectoryPath();
188
+ const defaultSkillsDirs = await this.getDefaultSkillsDirectoryPaths();
182
189
 
183
190
  const newWatchedDirectories = new Set<string>();
184
191
  const newParentWatchers = new Map<string, string>();
185
192
 
186
- for (const workspaceSkillsDir of workspaceSkillsDirs) {
187
- await this.processSkillDirectoryWithParentWatching(
188
- workspaceSkillsDir,
189
- newSkills,
190
- newDisposables,
191
- newWatchedDirectories,
192
- newParentWatchers
193
- );
194
- }
195
-
196
- for (const configuredDir of configuredDirectories) {
197
- const configuredDirUri = URI.fromFilePath(configuredDir).toString();
198
- if (!newWatchedDirectories.has(configuredDirUri)) {
199
- await this.processConfiguredSkillDirectory(configuredDir, newSkills, newDisposables, newWatchedDirectories);
193
+ const allDirectories = combineSkillDirectories(workspaceSkillsDirs, configuredDirectories, defaultSkillsDirs);
194
+ for (const { path: directoryPath, tier } of allDirectories) {
195
+ if (tier === 'configured') {
196
+ await this.processConfiguredSkillDirectory(directoryPath, newSkills, newDisposables, newWatchedDirectories);
197
+ } else {
198
+ await this.processSkillDirectoryWithParentWatching(
199
+ directoryPath,
200
+ newSkills,
201
+ newDisposables,
202
+ newWatchedDirectories,
203
+ newParentWatchers
204
+ );
200
205
  }
201
206
  }
202
207
 
203
- const defaultSkillsDirUri = URI.fromFilePath(defaultSkillsDir).toString();
204
- if (!newWatchedDirectories.has(defaultSkillsDirUri)) {
205
- await this.processSkillDirectoryWithParentWatching(
206
- defaultSkillsDir,
207
- newSkills,
208
- newDisposables,
209
- newWatchedDirectories,
210
- newParentWatchers
211
- );
212
- }
213
-
214
208
  if (newSkills.size > 0 && newSkills.size !== this.skills.size) {
215
209
  this.logger.info(`Loaded ${newSkills.size} skills`);
216
210
  }
@@ -224,14 +218,21 @@ export class DefaultSkillService implements SkillService {
224
218
  }
225
219
 
226
220
  protected getWorkspaceSkillsDirectoryPaths(): string[] {
227
- return this.workspaceService.tryGetRoots()
228
- .map(root => root.resource.resolve('.prompts/skills').path.fsPath());
221
+ return this.workspaceService.tryGetRoots().flatMap(root => [
222
+ root.resource.resolve('.prompts/skills').path.fsPath(),
223
+ root.resource.resolve('.agents/skills').path.fsPath()
224
+ ]);
229
225
  }
230
226
 
231
- protected async getDefaultSkillsDirectoryPath(): Promise<string> {
227
+ protected async getDefaultSkillsDirectoryPaths(): Promise<string[]> {
232
228
  const configDirUri = await this.envVariablesServer.getConfigDirUri();
233
229
  const configDir = new URI(configDirUri);
234
- return configDir.resolve('skills').path.fsPath();
230
+ const homeDirUri = await this.envVariablesServer.getHomeDirUri();
231
+ const homeDir = new URI(homeDirUri);
232
+ return [
233
+ configDir.resolve('skills').path.fsPath(),
234
+ homeDir.resolve('.agents/skills').path.fsPath()
235
+ ];
235
236
  }
236
237
 
237
238
  protected async processSkillDirectoryWithParentWatching(
@@ -143,7 +143,8 @@ export const aiCorePreferenceSchema: PreferenceSchema = {
143
143
  [PREFERENCE_NAME_SKILL_DIRECTORIES]: {
144
144
  description: nls.localize('theia/ai/core/skillDirectories/description',
145
145
  'Additional directories containing skill definitions (SKILL.md files). Skills provide reusable instructions that can be referenced by AI agents. ' +
146
- 'The .prompts/skills directory in your workspace and the skills directory in your product\'s configuration folder are always included.'),
146
+ 'The .prompts/skills and .agents/skills directories in your workspace, the .agents/skills directory in your home directory, ' +
147
+ 'and the skills directory in your product\'s configuration folder are always included.'),
147
148
  type: 'array',
148
149
  items: {
149
150
  type: 'string'
@@ -14,8 +14,8 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { isModelMatching, LanguageModel, LanguageModelSelector } from './language-model';
18
17
  import { expect } from 'chai';
18
+ import { isModelMatching, isToolCallContent, LanguageModel, LanguageModelSelector } from './language-model';
19
19
 
20
20
  describe('isModelMatching', () => {
21
21
  it('returns false with one of two parameter mismatches', () => {
@@ -84,3 +84,82 @@ describe('isModelMatching', () => {
84
84
  ).eql(true);
85
85
  });
86
86
  });
87
+
88
+ describe('isToolCallContent', () => {
89
+
90
+ it('accepts a well-formed ToolCallContent with a text item', () => {
91
+ expect(isToolCallContent({ content: [{ type: 'text', text: 'hello' }] })).to.be.true;
92
+ });
93
+
94
+ it('accepts an empty content array', () => {
95
+ expect(isToolCallContent({ content: [] })).to.be.true;
96
+ });
97
+
98
+ it('accepts content with mixed item types', () => {
99
+ const value = {
100
+ content: [
101
+ { type: 'text', text: 'hello' },
102
+ { type: 'image', mimeType: 'image/png', base64data: 'abc' },
103
+ { type: 'error', data: 'boom' }
104
+ ]
105
+ };
106
+ expect(isToolCallContent(value)).to.be.true;
107
+ });
108
+
109
+ it('rejects undefined', () => {
110
+ expect(isToolCallContent(undefined)).to.be.false;
111
+ });
112
+
113
+ it('rejects null', () => {
114
+ // eslint-disable-next-line no-null/no-null
115
+ expect(isToolCallContent(null)).to.be.false;
116
+ });
117
+
118
+ it('rejects primitive values', () => {
119
+ expect(isToolCallContent('not an object')).to.be.false;
120
+ expect(isToolCallContent(42)).to.be.false;
121
+ expect(isToolCallContent(true)).to.be.false;
122
+ });
123
+
124
+ it('rejects objects without a content key', () => {
125
+ expect(isToolCallContent({ files: [] })).to.be.false;
126
+ expect(isToolCallContent({})).to.be.false;
127
+ });
128
+
129
+ // Regression: this is the exact shape that triggered the chat-flicker bug.
130
+ // `getWorkspaceFileList` echoes workspace entry names into the result keys,
131
+ // and a workspace containing a directory literally named `content` produces
132
+ // an object where `content` is a plain string, not a ToolCallContentResult
133
+ // array.
134
+ it('rejects an object whose content is a string (regression)', () => {
135
+ expect(isToolCallContent({ content: 'directory' })).to.be.false;
136
+ });
137
+
138
+ it('rejects an object whose content is a nested object', () => {
139
+ expect(isToolCallContent({ content: { nested: true } })).to.be.false;
140
+ });
141
+
142
+ it('rejects an object whose content is a number', () => {
143
+ expect(isToolCallContent({ content: 42 })).to.be.false;
144
+ });
145
+
146
+ it('rejects an object whose content is null', () => {
147
+ // eslint-disable-next-line no-null/no-null
148
+ expect(isToolCallContent({ content: null })).to.be.false;
149
+ });
150
+
151
+ it('rejects a top-level array (no content key)', () => {
152
+ expect(isToolCallContent([{ type: 'text', text: 'hello' }])).to.be.false;
153
+ });
154
+
155
+ it('rejects a directory-listing-shaped object containing a "content" entry (regression)', () => {
156
+ const value = {
157
+ '.devcontainer': 'directory',
158
+ 'config.yaml': 'file',
159
+ 'content': 'directory',
160
+ 'go.mod': 'file'
161
+ };
162
+ expect(isToolCallContent(value)).to.be.false;
163
+ });
164
+
165
+ });
@@ -165,26 +165,44 @@ export function parseSkillFile(content: string): { metadata: SkillDescription |
165
165
  }
166
166
 
167
167
  /**
168
- * Combines skill directories with proper priority ordering.
169
- * Workspace directory has highest priority, followed by configured directories, then default.
170
- * First directory wins on duplicates.
168
+ * Provenance tier of a skill directory, used to dispatch tier-specific processing.
169
+ */
170
+ export type SkillDirectoryTier = 'workspace' | 'configured' | 'default';
171
+
172
+ /**
173
+ * A skill directory paired with the tier it originates from.
174
+ */
175
+ export interface SkillDirectoryEntry {
176
+ /** Absolute filesystem path to the skill directory */
177
+ path: string;
178
+ /** Tier the directory belongs to */
179
+ tier: SkillDirectoryTier;
180
+ }
181
+
182
+ /**
183
+ * Combines skill directories with proper priority ordering and provenance.
184
+ * Workspace directories have highest priority, followed by configured directories, then defaults.
185
+ * First occurrence of a path wins on duplicates; later occurrences (regardless of tier) are dropped.
171
186
  */
172
187
  export function combineSkillDirectories(
173
- workspaceSkillsDir: string | undefined,
188
+ workspaceSkillsDirs: string[],
174
189
  configuredDirectories: string[],
175
- defaultSkillsDir: string | undefined
176
- ): string[] {
177
- const allDirectories: string[] = [];
178
- if (workspaceSkillsDir) {
179
- allDirectories.push(workspaceSkillsDir);
180
- }
181
- for (const dir of configuredDirectories) {
182
- if (!allDirectories.includes(dir)) {
183
- allDirectories.push(dir);
190
+ defaultSkillsDirs: string[]
191
+ ): SkillDirectoryEntry[] {
192
+ const seen = new Set<string>();
193
+ const result: SkillDirectoryEntry[] = [];
194
+ const tiers: Array<{ dirs: string[]; tier: SkillDirectoryTier }> = [
195
+ { dirs: workspaceSkillsDirs, tier: 'workspace' },
196
+ { dirs: configuredDirectories, tier: 'configured' },
197
+ { dirs: defaultSkillsDirs, tier: 'default' }
198
+ ];
199
+ for (const { dirs, tier } of tiers) {
200
+ for (const dir of dirs) {
201
+ if (!seen.has(dir)) {
202
+ seen.add(dir);
203
+ result.push({ path: dir, tier });
204
+ }
184
205
  }
185
206
  }
186
- if (defaultSkillsDir && !allDirectories.includes(defaultSkillsDir)) {
187
- allDirectories.push(defaultSkillsDir);
188
- }
189
- return allDirectories;
207
+ return result;
190
208
  }