devchain-cli 0.9.0 → 0.9.2
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/dist/drizzle/0041_community_skill_sources.sql +12 -0
- package/dist/drizzle/0042_nice_flatman.sql +10 -0
- package/dist/drizzle/0043_majestic_starhawk.sql +10 -0
- package/dist/drizzle/meta/0041_snapshot.json +4102 -0
- package/dist/drizzle/meta/0042_snapshot.json +4171 -0
- package/dist/drizzle/meta/0043_snapshot.json +4231 -0
- package/dist/drizzle/meta/_journal.json +21 -0
- package/dist/server/modules/seeders/seeders/0003_seed_preseed_jeffallan_claude_skills.d.ts +3 -0
- package/dist/server/modules/seeders/seeders/0003_seed_preseed_jeffallan_claude_skills.js +41 -0
- package/dist/server/modules/seeders/seeders/0003_seed_preseed_jeffallan_claude_skills.js.map +1 -0
- package/dist/server/modules/seeders/seeders/0004_seed_disable_microsoft_source_default.d.ts +3 -0
- package/dist/server/modules/seeders/seeders/0004_seed_disable_microsoft_source_default.js +48 -0
- package/dist/server/modules/seeders/seeders/0004_seed_disable_microsoft_source_default.js.map +1 -0
- package/dist/server/modules/seeders/services/data-seeder.service.js +4 -0
- package/dist/server/modules/seeders/services/data-seeder.service.js.map +1 -1
- package/dist/server/modules/skills/adapters/community-skill-source.adapter.d.ts +11 -0
- package/dist/server/modules/skills/adapters/community-skill-source.adapter.js +181 -0
- package/dist/server/modules/skills/adapters/community-skill-source.adapter.js.map +1 -0
- package/dist/server/modules/skills/adapters/github-skill-source.base.d.ts +2 -5
- package/dist/server/modules/skills/adapters/github-skill-source.base.js +31 -100
- package/dist/server/modules/skills/adapters/github-skill-source.base.js.map +1 -1
- package/dist/server/modules/skills/adapters/local-skill-source.adapter.d.ts +16 -0
- package/dist/server/modules/skills/adapters/local-skill-source.adapter.js +265 -0
- package/dist/server/modules/skills/adapters/local-skill-source.adapter.js.map +1 -0
- package/dist/server/modules/skills/adapters/skill-parsing.utils.d.ts +32 -0
- package/dist/server/modules/skills/adapters/skill-parsing.utils.js +169 -0
- package/dist/server/modules/skills/adapters/skill-parsing.utils.js.map +1 -0
- package/dist/server/modules/skills/controllers/community-sources.controller.d.ts +12 -0
- package/dist/server/modules/skills/controllers/community-sources.controller.js +71 -0
- package/dist/server/modules/skills/controllers/community-sources.controller.js.map +1 -0
- package/dist/server/modules/skills/controllers/local-sources.controller.d.ts +12 -0
- package/dist/server/modules/skills/controllers/local-sources.controller.js +71 -0
- package/dist/server/modules/skills/controllers/local-sources.controller.js.map +1 -0
- package/dist/server/modules/skills/controllers/skills.controller.d.ts +11 -1
- package/dist/server/modules/skills/controllers/skills.controller.js +35 -3
- package/dist/server/modules/skills/controllers/skills.controller.js.map +1 -1
- package/dist/server/modules/skills/dtos/community-sources.dto.d.ts +100 -0
- package/dist/server/modules/skills/dtos/community-sources.dto.js +138 -0
- package/dist/server/modules/skills/dtos/community-sources.dto.js.map +1 -0
- package/dist/server/modules/skills/dtos/local-sources.dto.d.ts +42 -0
- package/dist/server/modules/skills/dtos/local-sources.dto.js +30 -0
- package/dist/server/modules/skills/dtos/local-sources.dto.js.map +1 -0
- package/dist/server/modules/skills/dtos/skill.dto.d.ts +16 -0
- package/dist/server/modules/skills/dtos/skill.dto.js +7 -1
- package/dist/server/modules/skills/dtos/skill.dto.js.map +1 -1
- package/dist/server/modules/skills/services/community-sources.service.d.ts +18 -0
- package/dist/server/modules/skills/services/community-sources.service.js +158 -0
- package/dist/server/modules/skills/services/community-sources.service.js.map +1 -0
- package/dist/server/modules/skills/services/local-sources.service.d.ts +20 -0
- package/dist/server/modules/skills/services/local-sources.service.js +206 -0
- package/dist/server/modules/skills/services/local-sources.service.js.map +1 -0
- package/dist/server/modules/skills/services/skill-source-registry.service.d.ts +20 -0
- package/dist/server/modules/skills/services/skill-source-registry.service.js +142 -0
- package/dist/server/modules/skills/services/skill-source-registry.service.js.map +1 -0
- package/dist/server/modules/skills/services/skill-sync.service.d.ts +7 -3
- package/dist/server/modules/skills/services/skill-sync.service.js +102 -11
- package/dist/server/modules/skills/services/skill-sync.service.js.map +1 -1
- package/dist/server/modules/skills/services/skills.service.d.ts +16 -4
- package/dist/server/modules/skills/services/skills.service.js +141 -36
- package/dist/server/modules/skills/services/skills.service.js.map +1 -1
- package/dist/server/modules/skills/skills.module.js +10 -1
- package/dist/server/modules/skills/skills.module.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +342 -0
- package/dist/server/modules/storage/db/schema.js +30 -1
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +18 -1
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/local-storage.service.d.ts +28 -1
- package/dist/server/modules/storage/local/local-storage.service.js +452 -2
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +20 -0
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/{ReviewDetailPage-D_-bS1MK.js → ReviewDetailPage-BvSckWKj.js} +1 -1
- package/dist/server/ui/assets/{ReviewsPage-BE1gxYlC.js → ReviewsPage-MKT-vv59.js} +1 -1
- package/dist/server/ui/assets/index-BtUq-Qxb.css +32 -0
- package/dist/server/ui/assets/{index-C094CE5I.js → index-kTb634Zp.js} +197 -197
- package/dist/server/ui/assets/{useReviewSubscription-Bs-17h-m.js → useReviewSubscription-Dc58i6Bk.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/package.json +8 -1
- package/dist/server/ui/assets/index-CbtpBUHu.css +0 -32
|
@@ -1,29 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
8
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
43
|
};
|
|
11
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
-
};
|
|
14
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
45
|
exports.SkillSyncService = void 0;
|
|
16
46
|
const common_1 = require("@nestjs/common");
|
|
47
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
48
|
+
const node_os_1 = require("node:os");
|
|
49
|
+
const node_path_1 = require("node:path");
|
|
17
50
|
const error_types_1 = require("../../../common/errors/error-types");
|
|
18
51
|
const logger_1 = require("../../../common/logging/logger");
|
|
19
52
|
const settings_service_1 = require("../../settings/services/settings.service");
|
|
20
|
-
const skill_source_adapter_1 = require("../adapters/skill-source.adapter");
|
|
21
53
|
const skill_category_service_1 = require("./skill-category.service");
|
|
54
|
+
const skill_source_registry_service_1 = require("./skill-source-registry.service");
|
|
22
55
|
const skills_service_1 = require("./skills.service");
|
|
23
56
|
const logger = (0, logger_1.createLogger)('SkillSyncService');
|
|
24
57
|
let SkillSyncService = class SkillSyncService {
|
|
25
|
-
constructor(
|
|
26
|
-
this.
|
|
58
|
+
constructor(skillSourceRegistry, skillsService, skillCategoryService, settingsService) {
|
|
59
|
+
this.skillSourceRegistry = skillSourceRegistry;
|
|
27
60
|
this.skillsService = skillsService;
|
|
28
61
|
this.skillCategoryService = skillCategoryService;
|
|
29
62
|
this.settingsService = settingsService;
|
|
@@ -40,9 +73,10 @@ let SkillSyncService = class SkillSyncService {
|
|
|
40
73
|
}
|
|
41
74
|
async syncAll() {
|
|
42
75
|
return this.withMutex(async () => {
|
|
76
|
+
const adapters = await this.skillSourceRegistry.getAdapters();
|
|
43
77
|
const sourceSettings = this.settingsService.getSkillSourcesEnabled();
|
|
44
|
-
const enabledAdapters =
|
|
45
|
-
for (const adapter of
|
|
78
|
+
const enabledAdapters = adapters.filter((adapter) => this.isSourceEnabled(adapter.sourceName, sourceSettings));
|
|
79
|
+
for (const adapter of adapters) {
|
|
46
80
|
if (!this.isSourceEnabled(adapter.sourceName, sourceSettings)) {
|
|
47
81
|
logger.info({ sourceName: adapter.sourceName }, 'Skill sync skipped because source is disabled');
|
|
48
82
|
}
|
|
@@ -67,7 +101,7 @@ let SkillSyncService = class SkillSyncService {
|
|
|
67
101
|
}
|
|
68
102
|
async syncSource(sourceName) {
|
|
69
103
|
const normalizedSourceName = sourceName.trim().toLowerCase();
|
|
70
|
-
const adapter = this.
|
|
104
|
+
const adapter = await this.skillSourceRegistry.getAdapterBySourceName(normalizedSourceName);
|
|
71
105
|
if (!adapter) {
|
|
72
106
|
throw new error_types_1.ValidationError(`Unknown skill source: ${normalizedSourceName}`, {
|
|
73
107
|
sourceName: normalizedSourceName,
|
|
@@ -180,6 +214,7 @@ let SkillSyncService = class SkillSyncService {
|
|
|
180
214
|
}
|
|
181
215
|
}
|
|
182
216
|
}
|
|
217
|
+
await this.cleanupStaleSkills(adapter.sourceName, syncContext, result);
|
|
183
218
|
}
|
|
184
219
|
finally {
|
|
185
220
|
try {
|
|
@@ -194,6 +229,36 @@ let SkillSyncService = class SkillSyncService {
|
|
|
194
229
|
}
|
|
195
230
|
return result;
|
|
196
231
|
}
|
|
232
|
+
async cleanupStaleSkills(sourceName, syncContext, result) {
|
|
233
|
+
const expectedSlugs = new Set(Array.from(syncContext.manifests.keys()).map((skillName) => this.buildSkillSlug(sourceName, skillName)));
|
|
234
|
+
const existingSkills = await this.skillsService.listSkillsBySource(sourceName);
|
|
235
|
+
for (const existingSkill of existingSkills) {
|
|
236
|
+
if (expectedSlugs.has(existingSkill.slug)) {
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
const wasDeleted = await this.skillsService.deleteSkillBySlug(existingSkill.slug);
|
|
241
|
+
if (!wasDeleted) {
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
result.removed += 1;
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
result.failed += 1;
|
|
248
|
+
result.errors.push({
|
|
249
|
+
sourceName,
|
|
250
|
+
skillSlug: existingSkill.slug,
|
|
251
|
+
message: error instanceof Error ? error.message : String(error),
|
|
252
|
+
});
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
const skillNameFromSlug = this.extractSkillNameFromSlug(existingSkill.slug, sourceName);
|
|
256
|
+
if (!skillNameFromSlug) {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
await this.deleteSyncedSkillDirectory(sourceName, skillNameFromSlug);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
197
262
|
async markSkillSyncError(params) {
|
|
198
263
|
try {
|
|
199
264
|
await this.skillsService.upsertSkill(params.skillSlug, {
|
|
@@ -226,6 +291,29 @@ let SkillSyncService = class SkillSyncService {
|
|
|
226
291
|
const normalizedSkill = skillName.trim().toLowerCase();
|
|
227
292
|
return `${normalizedSource}/${normalizedSkill}`;
|
|
228
293
|
}
|
|
294
|
+
extractSkillNameFromSlug(slug, sourceName) {
|
|
295
|
+
const normalizedSlug = slug.trim().toLowerCase();
|
|
296
|
+
const sourcePrefix = `${sourceName.trim().toLowerCase()}/`;
|
|
297
|
+
if (!normalizedSlug.startsWith(sourcePrefix)) {
|
|
298
|
+
return null;
|
|
299
|
+
}
|
|
300
|
+
const skillName = normalizedSlug.slice(sourcePrefix.length).trim();
|
|
301
|
+
return skillName.length > 0 ? skillName : null;
|
|
302
|
+
}
|
|
303
|
+
async deleteSyncedSkillDirectory(sourceName, skillName) {
|
|
304
|
+
const sourcePath = (0, node_path_1.join)((0, node_os_1.homedir)(), '.devchain', 'skills', sourceName.trim().toLowerCase(), skillName);
|
|
305
|
+
try {
|
|
306
|
+
await fs.rm(sourcePath, { recursive: true, force: true });
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
logger.warn({
|
|
310
|
+
sourceName,
|
|
311
|
+
skillName,
|
|
312
|
+
sourcePath,
|
|
313
|
+
error: error instanceof Error ? error.message : String(error),
|
|
314
|
+
}, 'Failed to cleanup stale synced skill files');
|
|
315
|
+
}
|
|
316
|
+
}
|
|
229
317
|
async getExistingSkill(slug) {
|
|
230
318
|
try {
|
|
231
319
|
return await this.skillsService.getSkillBySlug(slug);
|
|
@@ -242,6 +330,7 @@ let SkillSyncService = class SkillSyncService {
|
|
|
242
330
|
status: 'completed',
|
|
243
331
|
added: 0,
|
|
244
332
|
updated: 0,
|
|
333
|
+
removed: 0,
|
|
245
334
|
failed: 0,
|
|
246
335
|
unchanged: 0,
|
|
247
336
|
errors: [],
|
|
@@ -252,6 +341,7 @@ let SkillSyncService = class SkillSyncService {
|
|
|
252
341
|
status: 'already_running',
|
|
253
342
|
added: 0,
|
|
254
343
|
updated: 0,
|
|
344
|
+
removed: 0,
|
|
255
345
|
failed: 0,
|
|
256
346
|
unchanged: 0,
|
|
257
347
|
errors: [],
|
|
@@ -262,6 +352,7 @@ let SkillSyncService = class SkillSyncService {
|
|
|
262
352
|
status: 'completed',
|
|
263
353
|
added: left.added + right.added,
|
|
264
354
|
updated: left.updated + right.updated,
|
|
355
|
+
removed: left.removed + right.removed,
|
|
265
356
|
failed: left.failed + right.failed,
|
|
266
357
|
unchanged: left.unchanged + right.unchanged,
|
|
267
358
|
errors: [...left.errors, ...right.errors],
|
|
@@ -275,8 +366,8 @@ let SkillSyncService = class SkillSyncService {
|
|
|
275
366
|
exports.SkillSyncService = SkillSyncService;
|
|
276
367
|
exports.SkillSyncService = SkillSyncService = __decorate([
|
|
277
368
|
(0, common_1.Injectable)(),
|
|
278
|
-
|
|
279
|
-
|
|
369
|
+
__metadata("design:paramtypes", [skill_source_registry_service_1.SkillSourceRegistryService,
|
|
370
|
+
skills_service_1.SkillsService,
|
|
280
371
|
skill_category_service_1.SkillCategoryService,
|
|
281
372
|
settings_service_1.SettingsService])
|
|
282
373
|
], SkillSyncService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-sync.service.js","sourceRoot":"","sources":["../../../../src/modules/skills/services/skill-sync.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-sync.service.js","sourceRoot":"","sources":["../../../../src/modules/skills/services/skill-sync.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
|
|
|
2
2
|
import { SettingsService } from '../../settings/services/settings.service';
|
|
3
3
|
import type { ResolvedSkillSummary } from '../dtos/skill.dto';
|
|
4
4
|
import type { Skill, SkillStatus, SkillUsageLog as SkillUsageLogModel } from '../../storage/models/domain.models';
|
|
5
|
-
import {
|
|
5
|
+
import { SkillSourceRegistryService, type SkillSourceKind } from './skill-source-registry.service';
|
|
6
6
|
export interface ListSkillsOptions {
|
|
7
7
|
source?: string;
|
|
8
8
|
category?: string;
|
|
@@ -68,20 +68,24 @@ export interface SkillUsageLogListResult {
|
|
|
68
68
|
}
|
|
69
69
|
export interface SkillSourceMetadata {
|
|
70
70
|
name: string;
|
|
71
|
+
kind: SkillSourceKind;
|
|
71
72
|
enabled: boolean;
|
|
73
|
+
projectEnabled?: boolean;
|
|
72
74
|
repoUrl: string;
|
|
73
75
|
skillCount: number;
|
|
74
76
|
}
|
|
75
77
|
export declare class SkillsService {
|
|
76
78
|
private readonly db;
|
|
77
79
|
private readonly settingsService;
|
|
78
|
-
private readonly
|
|
79
|
-
constructor(db: BetterSQLite3Database, settingsService: SettingsService,
|
|
80
|
+
private readonly skillSourceRegistry;
|
|
81
|
+
constructor(db: BetterSQLite3Database, settingsService: SettingsService, skillSourceRegistry: SkillSourceRegistryService);
|
|
80
82
|
listSkills(options?: ListSkillsOptions): Promise<Skill[]>;
|
|
81
83
|
listAllForProject(projectId: string, options?: ListProjectSkillsOptions): Promise<ProjectSkill[]>;
|
|
82
84
|
listDiscoverable(projectId: string, options?: ListProjectSkillsOptions): Promise<Skill[]>;
|
|
83
85
|
getSkill(id: string): Promise<Skill>;
|
|
84
86
|
getSkillBySlug(slug: string): Promise<Skill>;
|
|
87
|
+
listSkillsBySource(sourceName: string): Promise<Skill[]>;
|
|
88
|
+
deleteSkillBySlug(slug: string): Promise<boolean>;
|
|
85
89
|
resolveSkillSummariesBySlugs(slugsToResolve: string[]): Promise<Record<string, ResolvedSkillSummary>>;
|
|
86
90
|
upsertSkill(slug: string, data: UpsertSkillData): Promise<Skill>;
|
|
87
91
|
disableSkill(projectId: string, skillId: string): Promise<void>;
|
|
@@ -89,11 +93,17 @@ export declare class SkillsService {
|
|
|
89
93
|
listDisabled(projectId: string): Promise<string[]>;
|
|
90
94
|
disableAll(projectId: string): Promise<number>;
|
|
91
95
|
enableAll(projectId: string): Promise<number>;
|
|
92
|
-
listSources(): Promise<SkillSourceMetadata[]>;
|
|
96
|
+
listSources(projectId?: string): Promise<SkillSourceMetadata[]>;
|
|
97
|
+
getReservedSourceNames(): string[];
|
|
93
98
|
setSourceEnabled(sourceName: string, enabled: boolean): Promise<{
|
|
94
99
|
name: string;
|
|
95
100
|
enabled: boolean;
|
|
96
101
|
}>;
|
|
102
|
+
setSourceProjectEnabled(sourceName: string, projectId: string, enabled: boolean): Promise<{
|
|
103
|
+
name: string;
|
|
104
|
+
projectId: string;
|
|
105
|
+
projectEnabled: boolean;
|
|
106
|
+
}>;
|
|
97
107
|
logUsage(skillId: string, skillSlug: string, projectId?: string | null, agentId?: string | null, agentNameSnapshot?: string | null): Promise<SkillUsageLogModel>;
|
|
98
108
|
getUsageStats(options?: SkillUsageStatsOptions): Promise<SkillUsageStat[]>;
|
|
99
109
|
listUsageLog(options?: SkillUsageLogOptions): Promise<SkillUsageLogListResult>;
|
|
@@ -110,6 +120,8 @@ export declare class SkillsService {
|
|
|
110
120
|
private combineConditions;
|
|
111
121
|
private getRegisteredSources;
|
|
112
122
|
private getEnabledSources;
|
|
123
|
+
private getEnabledSourcesForProject;
|
|
124
|
+
private getProjectSourceEnabledMap;
|
|
113
125
|
private isSourceEnabled;
|
|
114
126
|
private requireKnownSourceName;
|
|
115
127
|
private isUniqueConstraintError;
|
|
@@ -21,17 +21,17 @@ const logger_1 = require("../../../common/logging/logger");
|
|
|
21
21
|
const settings_service_1 = require("../../settings/services/settings.service");
|
|
22
22
|
const db_provider_1 = require("../../storage/db/db.provider");
|
|
23
23
|
const schema_1 = require("../../storage/db/schema");
|
|
24
|
-
const
|
|
24
|
+
const skill_source_registry_service_1 = require("./skill-source-registry.service");
|
|
25
25
|
const logger = (0, logger_1.createLogger)('SkillsService');
|
|
26
26
|
const VALID_SKILL_STATUSES = ['available', 'outdated', 'sync_error'];
|
|
27
27
|
let SkillsService = class SkillsService {
|
|
28
|
-
constructor(db, settingsService,
|
|
28
|
+
constructor(db, settingsService, skillSourceRegistry) {
|
|
29
29
|
this.db = db;
|
|
30
30
|
this.settingsService = settingsService;
|
|
31
|
-
this.
|
|
31
|
+
this.skillSourceRegistry = skillSourceRegistry;
|
|
32
32
|
}
|
|
33
33
|
async listSkills(options = {}) {
|
|
34
|
-
const enabledSources = this.getEnabledSources();
|
|
34
|
+
const enabledSources = await this.getEnabledSources();
|
|
35
35
|
if (enabledSources.length === 0) {
|
|
36
36
|
return [];
|
|
37
37
|
}
|
|
@@ -67,11 +67,11 @@ let SkillsService = class SkillsService {
|
|
|
67
67
|
return rows.map((row) => this.mapSkillRow(row));
|
|
68
68
|
}
|
|
69
69
|
async listAllForProject(projectId, options = {}) {
|
|
70
|
-
const
|
|
70
|
+
const normalizedProjectId = this.requireNonEmpty(projectId, 'projectId');
|
|
71
|
+
const enabledSources = await this.getEnabledSourcesForProject(normalizedProjectId);
|
|
71
72
|
if (enabledSources.length === 0) {
|
|
72
73
|
return [];
|
|
73
74
|
}
|
|
74
|
-
const normalizedProjectId = this.requireNonEmpty(projectId, 'projectId');
|
|
75
75
|
const query = this.db
|
|
76
76
|
.select({
|
|
77
77
|
skill: schema_1.skills,
|
|
@@ -92,11 +92,11 @@ let SkillsService = class SkillsService {
|
|
|
92
92
|
}));
|
|
93
93
|
}
|
|
94
94
|
async listDiscoverable(projectId, options = {}) {
|
|
95
|
-
const
|
|
95
|
+
const normalizedProjectId = this.requireNonEmpty(projectId, 'projectId');
|
|
96
|
+
const enabledSources = await this.getEnabledSourcesForProject(normalizedProjectId);
|
|
96
97
|
if (enabledSources.length === 0) {
|
|
97
98
|
return [];
|
|
98
99
|
}
|
|
99
|
-
const normalizedProjectId = this.requireNonEmpty(projectId, 'projectId');
|
|
100
100
|
const query = this.db
|
|
101
101
|
.select({ skill: schema_1.skills })
|
|
102
102
|
.from(schema_1.skills)
|
|
@@ -127,6 +127,28 @@ let SkillsService = class SkillsService {
|
|
|
127
127
|
}
|
|
128
128
|
return this.mapSkillRow(row[0]);
|
|
129
129
|
}
|
|
130
|
+
async listSkillsBySource(sourceName) {
|
|
131
|
+
const normalizedSourceName = this.requireNonEmpty(sourceName, 'sourceName').toLowerCase();
|
|
132
|
+
const rows = await this.db
|
|
133
|
+
.select()
|
|
134
|
+
.from(schema_1.skills)
|
|
135
|
+
.where((0, drizzle_orm_1.eq)(schema_1.skills.source, normalizedSourceName))
|
|
136
|
+
.orderBy((0, drizzle_orm_1.asc)(schema_1.skills.name), (0, drizzle_orm_1.asc)(schema_1.skills.slug));
|
|
137
|
+
return rows.map((row) => this.mapSkillRow(row));
|
|
138
|
+
}
|
|
139
|
+
async deleteSkillBySlug(slug) {
|
|
140
|
+
const normalizedSlug = this.requireNonEmpty(slug, 'slug').toLowerCase();
|
|
141
|
+
const existing = await this.db
|
|
142
|
+
.select({ id: schema_1.skills.id })
|
|
143
|
+
.from(schema_1.skills)
|
|
144
|
+
.where((0, drizzle_orm_1.eq)(schema_1.skills.slug, normalizedSlug))
|
|
145
|
+
.limit(1);
|
|
146
|
+
if (!existing[0]) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
await this.db.delete(schema_1.skills).where((0, drizzle_orm_1.eq)(schema_1.skills.slug, normalizedSlug));
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
130
152
|
async resolveSkillSummariesBySlugs(slugsToResolve) {
|
|
131
153
|
const uniqueSlugs = Array.from(new Set(slugsToResolve.map((slug) => this.requireNonEmpty(slug, 'slug').toLowerCase())));
|
|
132
154
|
if (uniqueSlugs.length === 0) {
|
|
@@ -295,7 +317,7 @@ let SkillsService = class SkillsService {
|
|
|
295
317
|
return rows.map((row) => row.skillId);
|
|
296
318
|
}
|
|
297
319
|
async disableAll(projectId) {
|
|
298
|
-
const enabledSources = this.getEnabledSources();
|
|
320
|
+
const enabledSources = await this.getEnabledSources();
|
|
299
321
|
if (enabledSources.length === 0) {
|
|
300
322
|
return 0;
|
|
301
323
|
}
|
|
@@ -328,7 +350,7 @@ let SkillsService = class SkillsService {
|
|
|
328
350
|
return rowsToInsert.length;
|
|
329
351
|
}
|
|
330
352
|
async enableAll(projectId) {
|
|
331
|
-
const enabledSources = this.getEnabledSources();
|
|
353
|
+
const enabledSources = await this.getEnabledSources();
|
|
332
354
|
if (enabledSources.length === 0) {
|
|
333
355
|
return 0;
|
|
334
356
|
}
|
|
@@ -347,25 +369,98 @@ let SkillsService = class SkillsService {
|
|
|
347
369
|
.where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_1.skillProjectDisabled.projectId, normalizedProjectId), (0, drizzle_orm_1.inArray)(schema_1.skillProjectDisabled.skillId, disabledSkillIds)));
|
|
348
370
|
return disabledRows.length;
|
|
349
371
|
}
|
|
350
|
-
async listSources() {
|
|
372
|
+
async listSources(projectId) {
|
|
351
373
|
const sourceRows = await this.db
|
|
352
374
|
.select({ source: schema_1.skills.source, skillCount: (0, drizzle_orm_1.count)() })
|
|
353
375
|
.from(schema_1.skills)
|
|
354
376
|
.groupBy(schema_1.skills.source);
|
|
355
377
|
const sourceCountMap = new Map(sourceRows.map((row) => [row.source.trim().toLowerCase(), Number(row.skillCount)]));
|
|
356
378
|
const sourceSettings = this.settingsService.getSkillSourcesEnabled();
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
379
|
+
const registeredSources = await this.getRegisteredSources();
|
|
380
|
+
const normalizedProjectId = projectId !== undefined ? this.requireNonEmpty(projectId, 'projectId') : undefined;
|
|
381
|
+
const projectSourceEnabledMap = normalizedProjectId
|
|
382
|
+
? await this.getProjectSourceEnabledMap(normalizedProjectId)
|
|
383
|
+
: null;
|
|
384
|
+
return registeredSources.map((source) => {
|
|
385
|
+
const globallyEnabled = this.isSourceEnabled(source.name, sourceSettings);
|
|
386
|
+
const base = {
|
|
387
|
+
name: source.name,
|
|
388
|
+
kind: source.kind,
|
|
389
|
+
enabled: globallyEnabled,
|
|
390
|
+
repoUrl: source.repoUrl,
|
|
391
|
+
skillCount: sourceCountMap.get(source.name) ?? 0,
|
|
392
|
+
};
|
|
393
|
+
if (!projectSourceEnabledMap) {
|
|
394
|
+
return base;
|
|
395
|
+
}
|
|
396
|
+
const projectSetting = projectSourceEnabledMap.get(source.name);
|
|
397
|
+
return {
|
|
398
|
+
...base,
|
|
399
|
+
projectEnabled: globallyEnabled && (projectSetting ?? true),
|
|
400
|
+
};
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
getReservedSourceNames() {
|
|
404
|
+
return this.skillSourceRegistry.getBuiltInSourceNames();
|
|
363
405
|
}
|
|
364
406
|
async setSourceEnabled(sourceName, enabled) {
|
|
365
|
-
const normalizedSourceName = this.requireKnownSourceName(sourceName);
|
|
407
|
+
const normalizedSourceName = await this.requireKnownSourceName(sourceName);
|
|
366
408
|
await this.settingsService.setSkillSourceEnabled(normalizedSourceName, enabled);
|
|
367
409
|
return { name: normalizedSourceName, enabled };
|
|
368
410
|
}
|
|
411
|
+
async setSourceProjectEnabled(sourceName, projectId, enabled) {
|
|
412
|
+
const normalizedSourceName = await this.requireKnownSourceName(sourceName);
|
|
413
|
+
const normalizedProjectId = this.requireNonEmpty(projectId, 'projectId');
|
|
414
|
+
const now = new Date().toISOString();
|
|
415
|
+
try {
|
|
416
|
+
const existing = await this.db
|
|
417
|
+
.select({ id: schema_1.sourceProjectEnabled.id })
|
|
418
|
+
.from(schema_1.sourceProjectEnabled)
|
|
419
|
+
.where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_1.sourceProjectEnabled.projectId, normalizedProjectId), (0, drizzle_orm_1.eq)(schema_1.sourceProjectEnabled.sourceName, normalizedSourceName)))
|
|
420
|
+
.limit(1);
|
|
421
|
+
if (existing[0]) {
|
|
422
|
+
await this.db
|
|
423
|
+
.update(schema_1.sourceProjectEnabled)
|
|
424
|
+
.set({ enabled })
|
|
425
|
+
.where((0, drizzle_orm_1.eq)(schema_1.sourceProjectEnabled.id, existing[0].id));
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
await this.db.insert(schema_1.sourceProjectEnabled).values({
|
|
429
|
+
id: (0, node_crypto_1.randomUUID)(),
|
|
430
|
+
projectId: normalizedProjectId,
|
|
431
|
+
sourceName: normalizedSourceName,
|
|
432
|
+
enabled,
|
|
433
|
+
createdAt: now,
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
if (this.isUniqueConstraintError(error)) {
|
|
439
|
+
await this.db
|
|
440
|
+
.update(schema_1.sourceProjectEnabled)
|
|
441
|
+
.set({ enabled })
|
|
442
|
+
.where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_1.sourceProjectEnabled.projectId, normalizedProjectId), (0, drizzle_orm_1.eq)(schema_1.sourceProjectEnabled.sourceName, normalizedSourceName)));
|
|
443
|
+
}
|
|
444
|
+
else if (this.isForeignKeyConstraintError(error)) {
|
|
445
|
+
throw new error_types_1.ValidationError('Cannot update source for unknown project.', {
|
|
446
|
+
projectId: normalizedProjectId,
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
throw new error_types_1.StorageError('Failed to update source enablement for project.', {
|
|
451
|
+
projectId: normalizedProjectId,
|
|
452
|
+
sourceName: normalizedSourceName,
|
|
453
|
+
enabled,
|
|
454
|
+
cause: error instanceof Error ? error.message : String(error),
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
return {
|
|
459
|
+
name: normalizedSourceName,
|
|
460
|
+
projectId: normalizedProjectId,
|
|
461
|
+
projectEnabled: enabled,
|
|
462
|
+
};
|
|
463
|
+
}
|
|
369
464
|
async logUsage(skillId, skillSlug, projectId, agentId, agentNameSnapshot) {
|
|
370
465
|
const normalizedSkillId = this.requireNonEmpty(skillId, 'skillId');
|
|
371
466
|
const normalizedSkillSlug = this.requireNonEmpty(skillSlug, 'skillSlug');
|
|
@@ -657,31 +752,41 @@ let SkillsService = class SkillsService {
|
|
|
657
752
|
}
|
|
658
753
|
return (0, drizzle_orm_1.and)(...conditions);
|
|
659
754
|
}
|
|
660
|
-
getRegisteredSources() {
|
|
661
|
-
|
|
662
|
-
for (const adapter of this.adapters) {
|
|
663
|
-
const normalizedName = adapter.sourceName.trim().toLowerCase();
|
|
664
|
-
if (!normalizedName || sourceMap.has(normalizedName)) {
|
|
665
|
-
continue;
|
|
666
|
-
}
|
|
667
|
-
sourceMap.set(normalizedName, adapter.repoUrl);
|
|
668
|
-
}
|
|
669
|
-
return Array.from(sourceMap.entries())
|
|
670
|
-
.map(([name, repoUrl]) => ({ name, repoUrl }))
|
|
671
|
-
.sort((left, right) => left.name.localeCompare(right.name));
|
|
755
|
+
async getRegisteredSources() {
|
|
756
|
+
return this.skillSourceRegistry.listRegisteredSources();
|
|
672
757
|
}
|
|
673
|
-
getEnabledSources() {
|
|
758
|
+
async getEnabledSources() {
|
|
674
759
|
const sourceSettings = this.settingsService.getSkillSourcesEnabled();
|
|
675
|
-
|
|
760
|
+
const registeredSources = await this.getRegisteredSources();
|
|
761
|
+
return registeredSources
|
|
676
762
|
.map((source) => source.name)
|
|
677
763
|
.filter((sourceName) => this.isSourceEnabled(sourceName, sourceSettings));
|
|
678
764
|
}
|
|
765
|
+
async getEnabledSourcesForProject(projectId) {
|
|
766
|
+
const enabledSources = await this.getEnabledSources();
|
|
767
|
+
if (enabledSources.length === 0) {
|
|
768
|
+
return [];
|
|
769
|
+
}
|
|
770
|
+
const projectSourceEnabledMap = await this.getProjectSourceEnabledMap(projectId);
|
|
771
|
+
return enabledSources.filter((sourceName) => projectSourceEnabledMap.get(sourceName) ?? true);
|
|
772
|
+
}
|
|
773
|
+
async getProjectSourceEnabledMap(projectId) {
|
|
774
|
+
const normalizedProjectId = this.requireNonEmpty(projectId, 'projectId');
|
|
775
|
+
const rows = await this.db
|
|
776
|
+
.select({
|
|
777
|
+
sourceName: schema_1.sourceProjectEnabled.sourceName,
|
|
778
|
+
enabled: schema_1.sourceProjectEnabled.enabled,
|
|
779
|
+
})
|
|
780
|
+
.from(schema_1.sourceProjectEnabled)
|
|
781
|
+
.where((0, drizzle_orm_1.eq)(schema_1.sourceProjectEnabled.projectId, normalizedProjectId));
|
|
782
|
+
return new Map(rows.map((row) => [row.sourceName.trim().toLowerCase(), Boolean(row.enabled)]));
|
|
783
|
+
}
|
|
679
784
|
isSourceEnabled(sourceName, sourceSettings) {
|
|
680
785
|
return sourceSettings[sourceName] !== false;
|
|
681
786
|
}
|
|
682
|
-
requireKnownSourceName(sourceName) {
|
|
787
|
+
async requireKnownSourceName(sourceName) {
|
|
683
788
|
const normalized = this.requireNonEmpty(sourceName, 'sourceName').toLowerCase();
|
|
684
|
-
const knownSources = new Set(this.getRegisteredSources().map((source) => source.name));
|
|
789
|
+
const knownSources = new Set((await this.getRegisteredSources()).map((source) => source.name));
|
|
685
790
|
if (!knownSources.has(normalized)) {
|
|
686
791
|
throw new error_types_1.ValidationError(`Unknown skill source: ${normalized}`, { sourceName: normalized });
|
|
687
792
|
}
|
|
@@ -725,7 +830,7 @@ exports.SkillsService = SkillsService;
|
|
|
725
830
|
exports.SkillsService = SkillsService = __decorate([
|
|
726
831
|
(0, common_1.Injectable)(),
|
|
727
832
|
__param(0, (0, common_1.Inject)(db_provider_1.DB_CONNECTION)),
|
|
728
|
-
|
|
729
|
-
|
|
833
|
+
__metadata("design:paramtypes", [Function, settings_service_1.SettingsService,
|
|
834
|
+
skill_source_registry_service_1.SkillSourceRegistryService])
|
|
730
835
|
], SkillsService);
|
|
731
836
|
//# sourceMappingURL=skills.service.js.map
|