@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 +2 -2
- package/lib/browser/skill-service.d.ts +1 -1
- package/lib/browser/skill-service.d.ts.map +1 -1
- package/lib/browser/skill-service.js +19 -16
- package/lib/browser/skill-service.js.map +1 -1
- package/lib/browser/skill-service.spec.js +119 -26
- package/lib/browser/skill-service.spec.js.map +1 -1
- package/lib/common/ai-core-preferences.d.ts.map +1 -1
- package/lib/common/ai-core-preferences.js +2 -1
- package/lib/common/ai-core-preferences.js.map +1 -1
- package/lib/common/language-model.spec.js +65 -1
- package/lib/common/language-model.spec.js.map +1 -1
- package/lib/common/skill.d.ts +17 -4
- package/lib/common/skill.d.ts.map +1 -1
- package/lib/common/skill.js +18 -15
- package/lib/common/skill.js.map +1 -1
- package/package.json +9 -9
- package/src/browser/skill-service.spec.ts +147 -33
- package/src/browser/skill-service.ts +32 -31
- package/src/common/ai-core-preferences.ts +2 -1
- package/src/common/language-model.spec.ts +80 -1
- package/src/common/skill.ts +35 -17
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/` (
|
|
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
|
|
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":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAqC,MAAM,+BAA+B,CAAC;AACrG,OAAO,
|
|
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
|
|
132
|
+
const defaultSkillsDirs = await this.getDefaultSkillsDirectoryPaths();
|
|
133
133
|
const newWatchedDirectories = new Set();
|
|
134
134
|
const newParentWatchers = new Map();
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
await this.
|
|
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
|
-
|
|
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
|
|
159
|
+
async getDefaultSkillsDirectoryPaths() {
|
|
162
160
|
const configDirUri = await this.envVariablesServer.getConfigDirUri();
|
|
163
161
|
const configDir = new core_1.URI(configDirUri);
|
|
164
|
-
|
|
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":";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,4DAAwF;AACxF,sEAA+D;AAC/D,sCAAiF;AACjF,sDAAmD;AACnD,wEAA0E;AAC1E,6EAAyE;AAEzE,0DAAgE;AAChE,uEAAqG;AACrG,
|
|
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
|
|
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
|
-
'/
|
|
54
|
-
'/custom/skills2',
|
|
55
|
-
'/home/user/.theia/skills'
|
|
67
|
+
'/workspace/.agents/skills'
|
|
56
68
|
]);
|
|
57
69
|
});
|
|
58
|
-
it('works without workspace
|
|
59
|
-
const result = (0, skill_1.combineSkillDirectories)(
|
|
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
|
|
66
|
-
const result = (0, skill_1.combineSkillDirectories)(
|
|
67
|
-
(0, chai_1.expect)(result).to.deep.equal([
|
|
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
|
|
92
|
-
const result = (0, skill_1.combineSkillDirectories)('/workspace/.prompts/skills', ['/custom/skills'],
|
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"skill-service.spec.js","sourceRoot":"","sources":["../../src/browser/skill-service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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
|
|
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":";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;;;
|
|
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
|
|
1
|
+
{"version":3,"file":"language-model.spec.js","sourceRoot":"","sources":["../../src/common/language-model.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/common/skill.d.ts
CHANGED
|
@@ -64,9 +64,22 @@ export declare function parseSkillFile(content: string): {
|
|
|
64
64
|
content: string;
|
|
65
65
|
};
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
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
|
|
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,
|
|
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"}
|
package/lib/common/skill.js
CHANGED
|
@@ -129,23 +129,26 @@ function parseSkillFile(content) {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
132
|
-
* Combines skill directories with proper priority ordering.
|
|
133
|
-
* Workspace
|
|
134
|
-
* First
|
|
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(
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
-
|
|
147
|
-
allDirectories.push(defaultSkillsDir);
|
|
148
|
-
}
|
|
149
|
-
return allDirectories;
|
|
152
|
+
return result;
|
|
150
153
|
}
|
|
151
154
|
//# sourceMappingURL=skill.js.map
|
package/lib/common/skill.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/common/skill.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-core",
|
|
3
|
-
"version": "1.73.0-next.
|
|
3
|
+
"version": "1.73.0-next.20+f7f30c799",
|
|
4
4
|
"description": "Theia - AI Core",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.73.0-next.
|
|
7
|
-
"@theia/editor": "1.73.0-next.
|
|
8
|
-
"@theia/filesystem": "1.73.0-next.
|
|
9
|
-
"@theia/monaco": "1.73.0-next.
|
|
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.
|
|
12
|
-
"@theia/variable-resolver": "1.73.0-next.
|
|
13
|
-
"@theia/workspace": "1.73.0-next.
|
|
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": "
|
|
61
|
+
"gitHead": "f7f30c799bad3eeeb4daa01583a7083a9d58c26d"
|
|
62
62
|
}
|
|
@@ -55,94 +55,127 @@ describe('SkillService', () => {
|
|
|
55
55
|
});
|
|
56
56
|
|
|
57
57
|
describe('directory prioritization', () => {
|
|
58
|
-
it('workspace
|
|
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
|
-
'/
|
|
68
|
-
'/custom/skills2',
|
|
69
|
-
'/home/user/.theia/skills'
|
|
87
|
+
'/workspace/.agents/skills'
|
|
70
88
|
]);
|
|
71
89
|
});
|
|
72
90
|
|
|
73
|
-
it('works without workspace
|
|
91
|
+
it('works without workspace directories', () => {
|
|
74
92
|
const result = combineSkillDirectories(
|
|
75
|
-
|
|
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
|
|
104
|
+
it('works with only default directories', () => {
|
|
87
105
|
const result = combineSkillDirectories(
|
|
88
|
-
undefined,
|
|
89
106
|
[],
|
|
90
|
-
|
|
107
|
+
[],
|
|
108
|
+
['/home/user/.theia/skills', '/home/user/.agents/skills']
|
|
91
109
|
);
|
|
92
110
|
|
|
93
|
-
expect(result).to.deep.equal([
|
|
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
|
|
157
|
+
it('handles empty default directories', () => {
|
|
137
158
|
const result = combineSkillDirectories(
|
|
138
|
-
'/workspace/.prompts/skills',
|
|
159
|
+
['/workspace/.prompts/skills'],
|
|
139
160
|
['/custom/skills'],
|
|
140
|
-
|
|
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 {
|
|
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
|
|
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
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
newSkills,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
|
|
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
|
|
227
|
+
protected async getDefaultSkillsDirectoryPaths(): Promise<string[]> {
|
|
232
228
|
const configDirUri = await this.envVariablesServer.getConfigDirUri();
|
|
233
229
|
const configDir = new URI(configDirUri);
|
|
234
|
-
|
|
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
|
|
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
|
+
});
|
package/src/common/skill.ts
CHANGED
|
@@ -165,26 +165,44 @@ export function parseSkillFile(content: string): { metadata: SkillDescription |
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
/**
|
|
168
|
-
*
|
|
169
|
-
|
|
170
|
-
|
|
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
|
-
|
|
188
|
+
workspaceSkillsDirs: string[],
|
|
174
189
|
configuredDirectories: string[],
|
|
175
|
-
|
|
176
|
-
):
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
-
|
|
187
|
-
allDirectories.push(defaultSkillsDir);
|
|
188
|
-
}
|
|
189
|
-
return allDirectories;
|
|
207
|
+
return result;
|
|
190
208
|
}
|