devchain-cli 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/drizzle/0041_community_skill_sources.sql +12 -0
- package/dist/drizzle/meta/0041_snapshot.json +4102 -0
- package/dist/drizzle/meta/_journal.json +8 -1
- 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/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/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/services/community-sources.service.d.ts +11 -0
- package/dist/server/modules/skills/services/community-sources.service.js +99 -0
- package/dist/server/modules/skills/services/community-sources.service.js.map +1 -0
- package/dist/server/modules/skills/services/skill-source-registry.service.d.ts +9 -0
- package/dist/server/modules/skills/services/skill-source-registry.service.js +46 -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 +3 -3
- package/dist/server/modules/skills/services/skill-sync.service.js +9 -11
- package/dist/server/modules/skills/services/skill-sync.service.js.map +1 -1
- package/dist/server/modules/skills/services/skills.service.d.ts +3 -3
- package/dist/server/modules/skills/services/skills.service.js +21 -18
- package/dist/server/modules/skills/services/skills.service.js.map +1 -1
- package/dist/server/modules/skills/skills.module.js +7 -1
- package/dist/server/modules/skills/skills.module.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +140 -0
- package/dist/server/modules/storage/db/schema.js +12 -1
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +6 -1
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/local-storage.service.d.ts +11 -1
- package/dist/server/modules/storage/local/local-storage.service.js +159 -0
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +12 -0
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/{ReviewDetailPage-D_-bS1MK.js → ReviewDetailPage-D13dH7Wh.js} +1 -1
- package/dist/server/ui/assets/{ReviewsPage-BE1gxYlC.js → ReviewsPage-C98ST0lf.js} +1 -1
- package/dist/server/ui/assets/{index-C094CE5I.js → index-C8Dc1yQf.js} +175 -175
- package/dist/server/ui/assets/index-DZkJ40z9.css +32 -0
- package/dist/server/ui/assets/{useReviewSubscription-Bs-17h-m.js → useReviewSubscription-CmLuF45Z.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/package.json +4 -1
- package/dist/server/ui/assets/index-CbtpBUHu.css +0 -32
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommunitySourceDeleteParamsSchema = exports.CommunitySourceResponseSchema = exports.CreateCommunitySourceSchema = exports.parseGitHubRepoUrl = exports.BranchSchema = exports.GitHubRepoSchema = exports.GitHubOwnerSchema = exports.CommunitySourceNameSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const COMMUNITY_SOURCE_NAME_PATTERN = /^[a-z0-9-]+$/;
|
|
6
|
+
const GITHUB_NAME_PATTERN = /^[a-zA-Z0-9._-]+$/;
|
|
7
|
+
exports.CommunitySourceNameSchema = zod_1.z
|
|
8
|
+
.string()
|
|
9
|
+
.trim()
|
|
10
|
+
.min(1)
|
|
11
|
+
.max(64)
|
|
12
|
+
.transform((value) => value.toLowerCase())
|
|
13
|
+
.refine((value) => COMMUNITY_SOURCE_NAME_PATTERN.test(value), {
|
|
14
|
+
message: 'Source name must contain only lowercase letters, numbers, and hyphens.',
|
|
15
|
+
});
|
|
16
|
+
exports.GitHubOwnerSchema = zod_1.z
|
|
17
|
+
.string()
|
|
18
|
+
.trim()
|
|
19
|
+
.min(1)
|
|
20
|
+
.max(100)
|
|
21
|
+
.refine((value) => GITHUB_NAME_PATTERN.test(value), {
|
|
22
|
+
message: 'GitHub owner contains invalid characters.',
|
|
23
|
+
});
|
|
24
|
+
exports.GitHubRepoSchema = zod_1.z
|
|
25
|
+
.string()
|
|
26
|
+
.trim()
|
|
27
|
+
.min(1)
|
|
28
|
+
.max(100)
|
|
29
|
+
.refine((value) => GITHUB_NAME_PATTERN.test(value), {
|
|
30
|
+
message: 'GitHub repository contains invalid characters.',
|
|
31
|
+
});
|
|
32
|
+
exports.BranchSchema = zod_1.z.string().trim().min(1).max(200).default('main');
|
|
33
|
+
const tryParseGitHubRepoUrl = (url) => {
|
|
34
|
+
let parsedUrl;
|
|
35
|
+
try {
|
|
36
|
+
parsedUrl = new URL(url.trim());
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return { success: false, message: 'Invalid GitHub URL format.' };
|
|
40
|
+
}
|
|
41
|
+
const host = parsedUrl.hostname.toLowerCase();
|
|
42
|
+
if (host !== 'github.com' && host !== 'www.github.com') {
|
|
43
|
+
return { success: false, message: 'Only github.com URLs are supported.' };
|
|
44
|
+
}
|
|
45
|
+
const segments = parsedUrl.pathname
|
|
46
|
+
.split('/')
|
|
47
|
+
.map((segment) => segment.trim())
|
|
48
|
+
.filter((segment) => segment.length > 0);
|
|
49
|
+
if (segments.length < 2) {
|
|
50
|
+
return { success: false, message: 'GitHub URL must include owner and repository.' };
|
|
51
|
+
}
|
|
52
|
+
const repoOwner = segments[0];
|
|
53
|
+
const repoName = segments[1]?.replace(/\.git$/i, '') ?? '';
|
|
54
|
+
if (!repoOwner || !repoName) {
|
|
55
|
+
return { success: false, message: 'GitHub URL must include owner and repository.' };
|
|
56
|
+
}
|
|
57
|
+
if (!GITHUB_NAME_PATTERN.test(repoOwner) || !GITHUB_NAME_PATTERN.test(repoName)) {
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
message: 'GitHub owner or repository contains invalid characters.',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
success: true,
|
|
65
|
+
data: { repoOwner, repoName },
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
const parseGitHubRepoUrl = (url) => {
|
|
69
|
+
const parsed = tryParseGitHubRepoUrl(url);
|
|
70
|
+
if (!parsed.success) {
|
|
71
|
+
throw new Error(parsed.message);
|
|
72
|
+
}
|
|
73
|
+
return parsed.data;
|
|
74
|
+
};
|
|
75
|
+
exports.parseGitHubRepoUrl = parseGitHubRepoUrl;
|
|
76
|
+
const CreateCommunitySourceByRepoSchema = zod_1.z.object({
|
|
77
|
+
name: exports.CommunitySourceNameSchema,
|
|
78
|
+
repoOwner: exports.GitHubOwnerSchema,
|
|
79
|
+
repoName: exports.GitHubRepoSchema,
|
|
80
|
+
branch: exports.BranchSchema.optional(),
|
|
81
|
+
});
|
|
82
|
+
const CreateCommunitySourceByUrlSchema = zod_1.z
|
|
83
|
+
.object({
|
|
84
|
+
name: exports.CommunitySourceNameSchema,
|
|
85
|
+
url: zod_1.z.string().trim().url(),
|
|
86
|
+
branch: exports.BranchSchema.optional(),
|
|
87
|
+
})
|
|
88
|
+
.superRefine((value, ctx) => {
|
|
89
|
+
const parsed = tryParseGitHubRepoUrl(value.url);
|
|
90
|
+
if (parsed.success) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
ctx.addIssue({
|
|
94
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
95
|
+
path: ['url'],
|
|
96
|
+
message: parsed.message,
|
|
97
|
+
});
|
|
98
|
+
})
|
|
99
|
+
.transform((value, ctx) => {
|
|
100
|
+
const parsed = tryParseGitHubRepoUrl(value.url);
|
|
101
|
+
if (!parsed.success) {
|
|
102
|
+
ctx.addIssue({
|
|
103
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
104
|
+
path: ['url'],
|
|
105
|
+
message: parsed.message,
|
|
106
|
+
});
|
|
107
|
+
return zod_1.z.NEVER;
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
name: value.name,
|
|
111
|
+
repoOwner: parsed.data.repoOwner,
|
|
112
|
+
repoName: parsed.data.repoName,
|
|
113
|
+
branch: value.branch ?? 'main',
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
const CreateCommunitySourceByRepoNormalizedSchema = CreateCommunitySourceByRepoSchema.transform((value) => ({
|
|
117
|
+
name: value.name,
|
|
118
|
+
repoOwner: value.repoOwner,
|
|
119
|
+
repoName: value.repoName,
|
|
120
|
+
branch: value.branch ?? 'main',
|
|
121
|
+
}));
|
|
122
|
+
exports.CreateCommunitySourceSchema = zod_1.z.union([
|
|
123
|
+
CreateCommunitySourceByRepoNormalizedSchema,
|
|
124
|
+
CreateCommunitySourceByUrlSchema,
|
|
125
|
+
]);
|
|
126
|
+
exports.CommunitySourceResponseSchema = zod_1.z.object({
|
|
127
|
+
id: zod_1.z.string().uuid(),
|
|
128
|
+
name: zod_1.z.string(),
|
|
129
|
+
repoOwner: zod_1.z.string(),
|
|
130
|
+
repoName: zod_1.z.string(),
|
|
131
|
+
branch: zod_1.z.string(),
|
|
132
|
+
createdAt: zod_1.z.string(),
|
|
133
|
+
updatedAt: zod_1.z.string(),
|
|
134
|
+
});
|
|
135
|
+
exports.CommunitySourceDeleteParamsSchema = zod_1.z.object({
|
|
136
|
+
id: zod_1.z.string().uuid(),
|
|
137
|
+
});
|
|
138
|
+
//# sourceMappingURL=community-sources.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-sources.dto.js","sourceRoot":"","sources":["../../../../src/modules/skills/dtos/community-sources.dto.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,MAAM,6BAA6B,GAAG,cAAc,CAAC;AACrD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEnC,QAAA,yBAAyB,GAAG,OAAC;KACvC,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;KACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC5D,OAAO,EAAE,wEAAwE;CAClF,CAAC,CAAC;AAEQ,QAAA,iBAAiB,GAAG,OAAC;KAC/B,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAClD,OAAO,EAAE,2CAA2C;CACrD,CAAC,CAAC;AAEQ,QAAA,gBAAgB,GAAG,OAAC;KAC9B,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAClD,OAAO,EAAE,gDAAgD;CAC1D,CAAC,CAAC;AAEQ,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAmB9E,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAA0B,EAAE;IACpE,IAAI,SAAc,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ;SAChC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC;IACtF,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAE3D,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,yDAAyD;SACnE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;KAC9B,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAoB,EAAE;IAClE,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B;AAEF,MAAM,iCAAiC,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,iCAAyB;IAC/B,SAAS,EAAE,yBAAiB;IAC5B,QAAQ,EAAE,wBAAgB;IAC1B,MAAM,EAAE,oBAAY,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,OAAC;KACvC,MAAM,CAAC;IACN,IAAI,EAAE,iCAAyB;IAC/B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;IAC5B,MAAM,EAAE,oBAAY,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC;QACX,IAAI,EAAE,OAAC,CAAC,YAAY,CAAC,MAAM;QAC3B,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;AACL,CAAC,CAAC;KACD,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,OAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,OAAO,OAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAChC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;KAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,MAAM,2CAA2C,GAAG,iCAAiC,CAAC,SAAS,CAC7F,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;CAC/B,CAAC,CACH,CAAC;AAEW,QAAA,2BAA2B,GAAG,OAAC,CAAC,KAAK,CAAC;IACjD,2CAA2C;IAC3C,gCAAgC;CACjC,CAAC,CAAC;AAEU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEU,QAAA,iCAAiC,GAAG,OAAC,CAAC,MAAM,CAAC;IACxD,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CommunitySkillSource } from '../../storage/models/domain.models';
|
|
2
|
+
import { type StorageService } from '../../storage/interfaces/storage.interface';
|
|
3
|
+
import type { CreateCommunitySourceDto } from '../dtos/community-sources.dto';
|
|
4
|
+
export declare class CommunitySourcesService {
|
|
5
|
+
private readonly storage;
|
|
6
|
+
constructor(storage: StorageService);
|
|
7
|
+
listCommunitySources(): Promise<CommunitySkillSource[]>;
|
|
8
|
+
createCommunitySource(data: CreateCommunitySourceDto): Promise<CommunitySkillSource>;
|
|
9
|
+
deleteCommunitySource(id: string): Promise<void>;
|
|
10
|
+
private deleteSourceSkillsDirectory;
|
|
11
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
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
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
45
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.CommunitySourcesService = void 0;
|
|
49
|
+
const common_1 = require("@nestjs/common");
|
|
50
|
+
const node_os_1 = require("node:os");
|
|
51
|
+
const node_path_1 = require("node:path");
|
|
52
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
53
|
+
const error_types_1 = require("../../../common/errors/error-types");
|
|
54
|
+
const logger_1 = require("../../../common/logging/logger");
|
|
55
|
+
const storage_interface_1 = require("../../storage/interfaces/storage.interface");
|
|
56
|
+
const logger = (0, logger_1.createLogger)('CommunitySourcesService');
|
|
57
|
+
let CommunitySourcesService = class CommunitySourcesService {
|
|
58
|
+
constructor(storage) {
|
|
59
|
+
this.storage = storage;
|
|
60
|
+
}
|
|
61
|
+
async listCommunitySources() {
|
|
62
|
+
return this.storage.listCommunitySkillSources();
|
|
63
|
+
}
|
|
64
|
+
async createCommunitySource(data) {
|
|
65
|
+
return this.storage.createCommunitySkillSource({
|
|
66
|
+
name: data.name,
|
|
67
|
+
repoOwner: data.repoOwner,
|
|
68
|
+
repoName: data.repoName,
|
|
69
|
+
branch: data.branch,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async deleteCommunitySource(id) {
|
|
73
|
+
const source = await this.storage.getCommunitySkillSource(id);
|
|
74
|
+
await this.storage.deleteCommunitySkillSource(id);
|
|
75
|
+
await this.deleteSourceSkillsDirectory(source.name);
|
|
76
|
+
}
|
|
77
|
+
async deleteSourceSkillsDirectory(sourceName) {
|
|
78
|
+
const normalizedSourceName = sourceName.trim().toLowerCase();
|
|
79
|
+
const sourcePath = (0, node_path_1.join)((0, node_os_1.homedir)(), '.devchain', 'skills', normalizedSourceName);
|
|
80
|
+
try {
|
|
81
|
+
await fs.rm(sourcePath, { recursive: true, force: true });
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
throw new error_types_1.StorageError('Failed to delete community source local skills directory.', {
|
|
85
|
+
sourceName: normalizedSourceName,
|
|
86
|
+
sourcePath,
|
|
87
|
+
cause: error instanceof Error ? error.message : String(error),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
logger.info({ sourceName: normalizedSourceName, sourcePath }, 'Deleted local skills directory for community source');
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.CommunitySourcesService = CommunitySourcesService;
|
|
94
|
+
exports.CommunitySourcesService = CommunitySourcesService = __decorate([
|
|
95
|
+
(0, common_1.Injectable)(),
|
|
96
|
+
__param(0, (0, common_1.Inject)(storage_interface_1.STORAGE_SERVICE)),
|
|
97
|
+
__metadata("design:paramtypes", [Object])
|
|
98
|
+
], CommunitySourcesService);
|
|
99
|
+
//# sourceMappingURL=community-sources.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-sources.service.js","sourceRoot":"","sources":["../../../../src/modules/skills/services/community-sources.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAAkC;AAClC,yCAAiC;AACjC,qDAAuC;AACvC,oEAAkE;AAClE,2DAA8D;AAE9D,kFAAkG;AAGlG,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,yBAAyB,CAAC,CAAC;AAGhD,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAAsD,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAEjF,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAA8B;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,EAAU;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,UAAkB;QAC1D,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAEhF,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,0BAAY,CAAC,2DAA2D,EAAE;gBAClF,UAAU,EAAE,oBAAoB;gBAChC,UAAU;gBACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CACT,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAChD,qDAAqD,CACtD,CAAC;IACJ,CAAC;CACF,CAAA;AAzCY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,mCAAe,CAAC,CAAA;;GADzB,uBAAuB,CAyCnC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type SkillSourceAdapter } from '../adapters/skill-source.adapter';
|
|
2
|
+
import { type StorageService } from '../../storage/interfaces/storage.interface';
|
|
3
|
+
export declare class SkillSourceRegistryService {
|
|
4
|
+
private readonly builtInAdapters;
|
|
5
|
+
private readonly storage;
|
|
6
|
+
constructor(builtInAdapters: SkillSourceAdapter[], storage: StorageService);
|
|
7
|
+
getAdapters(): Promise<SkillSourceAdapter[]>;
|
|
8
|
+
getAdapterBySourceName(name: string): Promise<SkillSourceAdapter | null>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SkillSourceRegistryService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const community_skill_source_adapter_1 = require("../adapters/community-skill-source.adapter");
|
|
18
|
+
const skill_source_adapter_1 = require("../adapters/skill-source.adapter");
|
|
19
|
+
const storage_interface_1 = require("../../storage/interfaces/storage.interface");
|
|
20
|
+
let SkillSourceRegistryService = class SkillSourceRegistryService {
|
|
21
|
+
constructor(builtInAdapters, storage) {
|
|
22
|
+
this.builtInAdapters = builtInAdapters;
|
|
23
|
+
this.storage = storage;
|
|
24
|
+
}
|
|
25
|
+
async getAdapters() {
|
|
26
|
+
const communitySources = await this.storage.listCommunitySkillSources();
|
|
27
|
+
const communityAdapters = communitySources.map((source) => new community_skill_source_adapter_1.CommunitySkillSourceAdapter(source));
|
|
28
|
+
return [...this.builtInAdapters, ...communityAdapters];
|
|
29
|
+
}
|
|
30
|
+
async getAdapterBySourceName(name) {
|
|
31
|
+
const normalizedName = name.trim().toLowerCase();
|
|
32
|
+
if (!normalizedName) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const adapters = await this.getAdapters();
|
|
36
|
+
return (adapters.find((adapter) => adapter.sourceName.trim().toLowerCase() === normalizedName) ?? null);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.SkillSourceRegistryService = SkillSourceRegistryService;
|
|
40
|
+
exports.SkillSourceRegistryService = SkillSourceRegistryService = __decorate([
|
|
41
|
+
(0, common_1.Injectable)(),
|
|
42
|
+
__param(0, (0, common_1.Inject)(skill_source_adapter_1.SKILL_SOURCE_ADAPTERS)),
|
|
43
|
+
__param(1, (0, common_1.Inject)(storage_interface_1.STORAGE_SERVICE)),
|
|
44
|
+
__metadata("design:paramtypes", [Array, Object])
|
|
45
|
+
], SkillSourceRegistryService);
|
|
46
|
+
//# sourceMappingURL=skill-source-registry.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-source-registry.service.js","sourceRoot":"","sources":["../../../../src/modules/skills/services/skill-source-registry.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+FAAyF;AACzF,2EAAkG;AAClG,kFAAkG;AAG3F,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,YACkD,eAAqC,EAC3C,OAAuB;QADjB,oBAAe,GAAf,eAAe,CAAsB;QAC3C,YAAO,GAAP,OAAO,CAAgB;IAChE,CAAC;IAEJ,KAAK,CAAC,WAAW;QACf,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;QACxE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,GAAG,CAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,4DAA2B,CAAC,MAAM,CAAC,CACpD,CAAC;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,iBAAiB,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAY;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,CACL,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,IAAI,IAAI,CAC/F,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,4CAAqB,CAAC,CAAA;IAC7B,WAAA,IAAA,eAAM,EAAC,mCAAe,CAAC,CAAA;;GAHf,0BAA0B,CAyBtC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OnApplicationBootstrap } from '@nestjs/common';
|
|
2
2
|
import { SettingsService } from '../../settings/services/settings.service';
|
|
3
|
-
import { SkillSourceAdapter } from '../adapters/skill-source.adapter';
|
|
4
3
|
import { SkillCategoryService } from './skill-category.service';
|
|
4
|
+
import { SkillSourceRegistryService } from './skill-source-registry.service';
|
|
5
5
|
import { SkillsService } from './skills.service';
|
|
6
6
|
export interface SyncError {
|
|
7
7
|
sourceName: string;
|
|
@@ -17,12 +17,12 @@ export interface SyncResult {
|
|
|
17
17
|
errors: SyncError[];
|
|
18
18
|
}
|
|
19
19
|
export declare class SkillSyncService implements OnApplicationBootstrap {
|
|
20
|
-
private readonly
|
|
20
|
+
private readonly skillSourceRegistry;
|
|
21
21
|
private readonly skillsService;
|
|
22
22
|
private readonly skillCategoryService;
|
|
23
23
|
private readonly settingsService;
|
|
24
24
|
private syncInProgress;
|
|
25
|
-
constructor(
|
|
25
|
+
constructor(skillSourceRegistry: SkillSourceRegistryService, skillsService: SkillsService, skillCategoryService: SkillCategoryService, settingsService: SettingsService);
|
|
26
26
|
onApplicationBootstrap(): void;
|
|
27
27
|
syncAll(): Promise<SyncResult>;
|
|
28
28
|
syncSource(sourceName: string): Promise<SyncResult>;
|
|
@@ -8,22 +8,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.SkillSyncService = void 0;
|
|
16
13
|
const common_1 = require("@nestjs/common");
|
|
17
14
|
const error_types_1 = require("../../../common/errors/error-types");
|
|
18
15
|
const logger_1 = require("../../../common/logging/logger");
|
|
19
16
|
const settings_service_1 = require("../../settings/services/settings.service");
|
|
20
|
-
const skill_source_adapter_1 = require("../adapters/skill-source.adapter");
|
|
21
17
|
const skill_category_service_1 = require("./skill-category.service");
|
|
18
|
+
const skill_source_registry_service_1 = require("./skill-source-registry.service");
|
|
22
19
|
const skills_service_1 = require("./skills.service");
|
|
23
20
|
const logger = (0, logger_1.createLogger)('SkillSyncService');
|
|
24
21
|
let SkillSyncService = class SkillSyncService {
|
|
25
|
-
constructor(
|
|
26
|
-
this.
|
|
22
|
+
constructor(skillSourceRegistry, skillsService, skillCategoryService, settingsService) {
|
|
23
|
+
this.skillSourceRegistry = skillSourceRegistry;
|
|
27
24
|
this.skillsService = skillsService;
|
|
28
25
|
this.skillCategoryService = skillCategoryService;
|
|
29
26
|
this.settingsService = settingsService;
|
|
@@ -40,9 +37,10 @@ let SkillSyncService = class SkillSyncService {
|
|
|
40
37
|
}
|
|
41
38
|
async syncAll() {
|
|
42
39
|
return this.withMutex(async () => {
|
|
40
|
+
const adapters = await this.skillSourceRegistry.getAdapters();
|
|
43
41
|
const sourceSettings = this.settingsService.getSkillSourcesEnabled();
|
|
44
|
-
const enabledAdapters =
|
|
45
|
-
for (const adapter of
|
|
42
|
+
const enabledAdapters = adapters.filter((adapter) => this.isSourceEnabled(adapter.sourceName, sourceSettings));
|
|
43
|
+
for (const adapter of adapters) {
|
|
46
44
|
if (!this.isSourceEnabled(adapter.sourceName, sourceSettings)) {
|
|
47
45
|
logger.info({ sourceName: adapter.sourceName }, 'Skill sync skipped because source is disabled');
|
|
48
46
|
}
|
|
@@ -67,7 +65,7 @@ let SkillSyncService = class SkillSyncService {
|
|
|
67
65
|
}
|
|
68
66
|
async syncSource(sourceName) {
|
|
69
67
|
const normalizedSourceName = sourceName.trim().toLowerCase();
|
|
70
|
-
const adapter = this.
|
|
68
|
+
const adapter = await this.skillSourceRegistry.getAdapterBySourceName(normalizedSourceName);
|
|
71
69
|
if (!adapter) {
|
|
72
70
|
throw new error_types_1.ValidationError(`Unknown skill source: ${normalizedSourceName}`, {
|
|
73
71
|
sourceName: normalizedSourceName,
|
|
@@ -275,8 +273,8 @@ let SkillSyncService = class SkillSyncService {
|
|
|
275
273
|
exports.SkillSyncService = SkillSyncService;
|
|
276
274
|
exports.SkillSyncService = SkillSyncService = __decorate([
|
|
277
275
|
(0, common_1.Injectable)(),
|
|
278
|
-
|
|
279
|
-
|
|
276
|
+
__metadata("design:paramtypes", [skill_source_registry_service_1.SkillSourceRegistryService,
|
|
277
|
+
skills_service_1.SkillsService,
|
|
280
278
|
skill_category_service_1.SkillCategoryService,
|
|
281
279
|
settings_service_1.SettingsService])
|
|
282
280
|
], SkillSyncService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-sync.service.js","sourceRoot":"","sources":["../../../../src/modules/skills/services/skill-sync.service.ts"],"names":[],"mappings":"
|
|
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 } from './skill-source-registry.service';
|
|
6
6
|
export interface ListSkillsOptions {
|
|
7
7
|
source?: string;
|
|
8
8
|
category?: string;
|
|
@@ -75,8 +75,8 @@ export interface SkillSourceMetadata {
|
|
|
75
75
|
export declare class SkillsService {
|
|
76
76
|
private readonly db;
|
|
77
77
|
private readonly settingsService;
|
|
78
|
-
private readonly
|
|
79
|
-
constructor(db: BetterSQLite3Database, settingsService: SettingsService,
|
|
78
|
+
private readonly skillSourceRegistry;
|
|
79
|
+
constructor(db: BetterSQLite3Database, settingsService: SettingsService, skillSourceRegistry: SkillSourceRegistryService);
|
|
80
80
|
listSkills(options?: ListSkillsOptions): Promise<Skill[]>;
|
|
81
81
|
listAllForProject(projectId: string, options?: ListProjectSkillsOptions): Promise<ProjectSkill[]>;
|
|
82
82
|
listDiscoverable(projectId: string, options?: ListProjectSkillsOptions): Promise<Skill[]>;
|
|
@@ -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,7 +67,7 @@ let SkillsService = class SkillsService {
|
|
|
67
67
|
return rows.map((row) => this.mapSkillRow(row));
|
|
68
68
|
}
|
|
69
69
|
async listAllForProject(projectId, options = {}) {
|
|
70
|
-
const enabledSources = this.getEnabledSources();
|
|
70
|
+
const enabledSources = await this.getEnabledSources();
|
|
71
71
|
if (enabledSources.length === 0) {
|
|
72
72
|
return [];
|
|
73
73
|
}
|
|
@@ -92,7 +92,7 @@ let SkillsService = class SkillsService {
|
|
|
92
92
|
}));
|
|
93
93
|
}
|
|
94
94
|
async listDiscoverable(projectId, options = {}) {
|
|
95
|
-
const enabledSources = this.getEnabledSources();
|
|
95
|
+
const enabledSources = await this.getEnabledSources();
|
|
96
96
|
if (enabledSources.length === 0) {
|
|
97
97
|
return [];
|
|
98
98
|
}
|
|
@@ -295,7 +295,7 @@ let SkillsService = class SkillsService {
|
|
|
295
295
|
return rows.map((row) => row.skillId);
|
|
296
296
|
}
|
|
297
297
|
async disableAll(projectId) {
|
|
298
|
-
const enabledSources = this.getEnabledSources();
|
|
298
|
+
const enabledSources = await this.getEnabledSources();
|
|
299
299
|
if (enabledSources.length === 0) {
|
|
300
300
|
return 0;
|
|
301
301
|
}
|
|
@@ -328,7 +328,7 @@ let SkillsService = class SkillsService {
|
|
|
328
328
|
return rowsToInsert.length;
|
|
329
329
|
}
|
|
330
330
|
async enableAll(projectId) {
|
|
331
|
-
const enabledSources = this.getEnabledSources();
|
|
331
|
+
const enabledSources = await this.getEnabledSources();
|
|
332
332
|
if (enabledSources.length === 0) {
|
|
333
333
|
return 0;
|
|
334
334
|
}
|
|
@@ -354,7 +354,8 @@ let SkillsService = class SkillsService {
|
|
|
354
354
|
.groupBy(schema_1.skills.source);
|
|
355
355
|
const sourceCountMap = new Map(sourceRows.map((row) => [row.source.trim().toLowerCase(), Number(row.skillCount)]));
|
|
356
356
|
const sourceSettings = this.settingsService.getSkillSourcesEnabled();
|
|
357
|
-
|
|
357
|
+
const registeredSources = await this.getRegisteredSources();
|
|
358
|
+
return registeredSources.map((source) => ({
|
|
358
359
|
name: source.name,
|
|
359
360
|
enabled: this.isSourceEnabled(source.name, sourceSettings),
|
|
360
361
|
repoUrl: source.repoUrl,
|
|
@@ -362,7 +363,7 @@ let SkillsService = class SkillsService {
|
|
|
362
363
|
}));
|
|
363
364
|
}
|
|
364
365
|
async setSourceEnabled(sourceName, enabled) {
|
|
365
|
-
const normalizedSourceName = this.requireKnownSourceName(sourceName);
|
|
366
|
+
const normalizedSourceName = await this.requireKnownSourceName(sourceName);
|
|
366
367
|
await this.settingsService.setSkillSourceEnabled(normalizedSourceName, enabled);
|
|
367
368
|
return { name: normalizedSourceName, enabled };
|
|
368
369
|
}
|
|
@@ -657,9 +658,10 @@ let SkillsService = class SkillsService {
|
|
|
657
658
|
}
|
|
658
659
|
return (0, drizzle_orm_1.and)(...conditions);
|
|
659
660
|
}
|
|
660
|
-
getRegisteredSources() {
|
|
661
|
+
async getRegisteredSources() {
|
|
662
|
+
const adapters = await this.skillSourceRegistry.getAdapters();
|
|
661
663
|
const sourceMap = new Map();
|
|
662
|
-
for (const adapter of
|
|
664
|
+
for (const adapter of adapters) {
|
|
663
665
|
const normalizedName = adapter.sourceName.trim().toLowerCase();
|
|
664
666
|
if (!normalizedName || sourceMap.has(normalizedName)) {
|
|
665
667
|
continue;
|
|
@@ -670,18 +672,19 @@ let SkillsService = class SkillsService {
|
|
|
670
672
|
.map(([name, repoUrl]) => ({ name, repoUrl }))
|
|
671
673
|
.sort((left, right) => left.name.localeCompare(right.name));
|
|
672
674
|
}
|
|
673
|
-
getEnabledSources() {
|
|
675
|
+
async getEnabledSources() {
|
|
674
676
|
const sourceSettings = this.settingsService.getSkillSourcesEnabled();
|
|
675
|
-
|
|
677
|
+
const registeredSources = await this.getRegisteredSources();
|
|
678
|
+
return registeredSources
|
|
676
679
|
.map((source) => source.name)
|
|
677
680
|
.filter((sourceName) => this.isSourceEnabled(sourceName, sourceSettings));
|
|
678
681
|
}
|
|
679
682
|
isSourceEnabled(sourceName, sourceSettings) {
|
|
680
683
|
return sourceSettings[sourceName] !== false;
|
|
681
684
|
}
|
|
682
|
-
requireKnownSourceName(sourceName) {
|
|
685
|
+
async requireKnownSourceName(sourceName) {
|
|
683
686
|
const normalized = this.requireNonEmpty(sourceName, 'sourceName').toLowerCase();
|
|
684
|
-
const knownSources = new Set(this.getRegisteredSources().map((source) => source.name));
|
|
687
|
+
const knownSources = new Set((await this.getRegisteredSources()).map((source) => source.name));
|
|
685
688
|
if (!knownSources.has(normalized)) {
|
|
686
689
|
throw new error_types_1.ValidationError(`Unknown skill source: ${normalized}`, { sourceName: normalized });
|
|
687
690
|
}
|
|
@@ -725,7 +728,7 @@ exports.SkillsService = SkillsService;
|
|
|
725
728
|
exports.SkillsService = SkillsService = __decorate([
|
|
726
729
|
(0, common_1.Injectable)(),
|
|
727
730
|
__param(0, (0, common_1.Inject)(db_provider_1.DB_CONNECTION)),
|
|
728
|
-
|
|
729
|
-
|
|
731
|
+
__metadata("design:paramtypes", [Function, settings_service_1.SettingsService,
|
|
732
|
+
skill_source_registry_service_1.SkillSourceRegistryService])
|
|
730
733
|
], SkillsService);
|
|
731
734
|
//# sourceMappingURL=skills.service.js.map
|