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
|
@@ -288,6 +288,13 @@
|
|
|
288
288
|
"when": 1770843124203,
|
|
289
289
|
"tag": "0040_typical_mole_man",
|
|
290
290
|
"breakpoints": true
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"idx": 41,
|
|
294
|
+
"version": "6",
|
|
295
|
+
"when": 1770857026437,
|
|
296
|
+
"tag": "0041_community_skill_sources",
|
|
297
|
+
"breakpoints": true
|
|
291
298
|
}
|
|
292
299
|
]
|
|
293
|
-
}
|
|
300
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seedPreseedJeffallanClaudeSkillsSeeder = void 0;
|
|
4
|
+
exports.runSeedPreseedJeffallanClaudeSkills = runSeedPreseedJeffallanClaudeSkills;
|
|
5
|
+
const SEEDER_NAME = '0003_seed_preseed_jeffallan_claude_skills';
|
|
6
|
+
const SEEDER_VERSION = 1;
|
|
7
|
+
const DEFAULT_COMMUNITY_SOURCE = {
|
|
8
|
+
name: 'jeffallan',
|
|
9
|
+
repoOwner: 'Jeffallan',
|
|
10
|
+
repoName: 'claude-skills',
|
|
11
|
+
branch: 'main',
|
|
12
|
+
};
|
|
13
|
+
async function runSeedPreseedJeffallanClaudeSkills(ctx) {
|
|
14
|
+
const existing = await ctx.storage.getCommunitySkillSourceByName(DEFAULT_COMMUNITY_SOURCE.name);
|
|
15
|
+
if (existing) {
|
|
16
|
+
ctx.logger.info({
|
|
17
|
+
seederName: SEEDER_NAME,
|
|
18
|
+
seederVersion: SEEDER_VERSION,
|
|
19
|
+
created: 0,
|
|
20
|
+
skipped: 1,
|
|
21
|
+
existingSourceId: existing.id,
|
|
22
|
+
sourceName: existing.name,
|
|
23
|
+
}, 'Pre-seed jeffallan community source seeder completed');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const created = await ctx.storage.createCommunitySkillSource(DEFAULT_COMMUNITY_SOURCE);
|
|
27
|
+
ctx.logger.info({
|
|
28
|
+
seederName: SEEDER_NAME,
|
|
29
|
+
seederVersion: SEEDER_VERSION,
|
|
30
|
+
created: 1,
|
|
31
|
+
skipped: 0,
|
|
32
|
+
sourceId: created.id,
|
|
33
|
+
sourceName: created.name,
|
|
34
|
+
}, 'Pre-seed jeffallan community source seeder completed');
|
|
35
|
+
}
|
|
36
|
+
exports.seedPreseedJeffallanClaudeSkillsSeeder = {
|
|
37
|
+
name: SEEDER_NAME,
|
|
38
|
+
version: SEEDER_VERSION,
|
|
39
|
+
run: runSeedPreseedJeffallanClaudeSkills,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=0003_seed_preseed_jeffallan_claude_skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0003_seed_preseed_jeffallan_claude_skills.js","sourceRoot":"","sources":["../../../../src/modules/seeders/seeders/0003_seed_preseed_jeffallan_claude_skills.ts"],"names":[],"mappings":";;;AAaA,kFA6BC;AAvCD,MAAM,WAAW,GAAG,2CAA2C,CAAC;AAChE,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,wBAAwB,GAA+B;IAC3D,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,MAAM;CACf,CAAC;AAEK,KAAK,UAAU,mCAAmC,CAAC,GAAkB;IAC1E,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,6BAA6B,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAChG,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,IAAI,CACb;YACE,UAAU,EAAE,WAAW;YACvB,aAAa,EAAE,cAAc;YAC7B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,gBAAgB,EAAE,QAAQ,CAAC,EAAE;YAC7B,UAAU,EAAE,QAAQ,CAAC,IAAI;SAC1B,EACD,sDAAsD,CACvD,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;IACvF,GAAG,CAAC,MAAM,CAAC,IAAI,CACb;QACE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,OAAO,CAAC,EAAE;QACpB,UAAU,EAAE,OAAO,CAAC,IAAI;KACzB,EACD,sDAAsD,CACvD,CAAC;AACJ,CAAC;AAEY,QAAA,sCAAsC,GAAe;IAChE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,mCAAmC;CACzC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seedDisableMicrosoftSourceDefaultSeeder = void 0;
|
|
4
|
+
exports.runSeedDisableMicrosoftSourceDefault = runSeedDisableMicrosoftSourceDefault;
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const sqlite_raw_1 = require("../../storage/db/sqlite-raw");
|
|
7
|
+
const SEEDER_NAME = '0004_seed_disable_microsoft_source_default';
|
|
8
|
+
const SEEDER_VERSION = 1;
|
|
9
|
+
const SETTINGS_KEY = 'skills.sources';
|
|
10
|
+
const DEFAULT_SOURCE_SETTINGS = {
|
|
11
|
+
microsoft: false,
|
|
12
|
+
};
|
|
13
|
+
async function runSeedDisableMicrosoftSourceDefault(ctx) {
|
|
14
|
+
const sqlite = (0, sqlite_raw_1.getRawSqliteClient)(ctx.db);
|
|
15
|
+
const existing = sqlite.prepare('SELECT key FROM settings WHERE key = ?').get(SETTINGS_KEY);
|
|
16
|
+
if (existing) {
|
|
17
|
+
ctx.logger.info({
|
|
18
|
+
seederName: SEEDER_NAME,
|
|
19
|
+
seederVersion: SEEDER_VERSION,
|
|
20
|
+
created: 0,
|
|
21
|
+
skipped: 1,
|
|
22
|
+
reason: 'skills.sources already exists',
|
|
23
|
+
}, 'Disable-microsoft-default source seeder completed');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const now = new Date().toISOString();
|
|
27
|
+
sqlite
|
|
28
|
+
.prepare(`
|
|
29
|
+
INSERT INTO settings (id, key, value, created_at, updated_at)
|
|
30
|
+
VALUES (?, ?, ?, ?, ?)
|
|
31
|
+
ON CONFLICT(key) DO NOTHING
|
|
32
|
+
`)
|
|
33
|
+
.run((0, crypto_1.randomUUID)(), SETTINGS_KEY, JSON.stringify(DEFAULT_SOURCE_SETTINGS), now, now);
|
|
34
|
+
ctx.logger.info({
|
|
35
|
+
seederName: SEEDER_NAME,
|
|
36
|
+
seederVersion: SEEDER_VERSION,
|
|
37
|
+
created: 1,
|
|
38
|
+
skipped: 0,
|
|
39
|
+
key: SETTINGS_KEY,
|
|
40
|
+
value: DEFAULT_SOURCE_SETTINGS,
|
|
41
|
+
}, 'Disable-microsoft-default source seeder completed');
|
|
42
|
+
}
|
|
43
|
+
exports.seedDisableMicrosoftSourceDefaultSeeder = {
|
|
44
|
+
name: SEEDER_NAME,
|
|
45
|
+
version: SEEDER_VERSION,
|
|
46
|
+
run: runSeedDisableMicrosoftSourceDefault,
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=0004_seed_disable_microsoft_source_default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0004_seed_disable_microsoft_source_default.js","sourceRoot":"","sources":["../../../../src/modules/seeders/seeders/0004_seed_disable_microsoft_source_default.ts"],"names":[],"mappings":";;;AAYA,oFA0CC;AAtDD,mCAAoC;AACpC,4DAAiE;AAGjE,MAAM,WAAW,GAAG,4CAA4C,CAAC;AACjE,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAEtC,MAAM,uBAAuB,GAA4B;IACvD,SAAS,EAAE,KAAK;CACjB,CAAC;AAEK,KAAK,UAAU,oCAAoC,CAAC,GAAkB;IAC3E,MAAM,MAAM,GAAG,IAAA,+BAAkB,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,YAAY,CAE7E,CAAC;IAEd,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,IAAI,CACb;YACE,UAAU,EAAE,WAAW;YACvB,aAAa,EAAE,cAAc;YAC7B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,+BAA+B;SACxC,EACD,mDAAmD,CACpD,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM;SACH,OAAO,CACN;;;;OAIC,CACF;SACA,GAAG,CAAC,IAAA,mBAAU,GAAE,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEtF,GAAG,CAAC,MAAM,CAAC,IAAI,CACb;QACE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,uBAAuB;KAC/B,EACD,mDAAmD,CACpD,CAAC;AACJ,CAAC;AAEY,QAAA,uCAAuC,GAAe;IACjE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,oCAAoC;CAC1C,CAAC"}
|
|
@@ -22,11 +22,15 @@ const storage_interface_1 = require("../../storage/interfaces/storage.interface"
|
|
|
22
22
|
const watchers_service_1 = require("../../watchers/services/watchers.service");
|
|
23
23
|
const _0001_seed_compact_on_idle_watcher_1 = require("../seeders/0001_seed_compact_on_idle_watcher");
|
|
24
24
|
const _0002_seed_replace_permission_mode_plan_1 = require("../seeders/0002_seed_replace_permission_mode_plan");
|
|
25
|
+
const _0003_seed_preseed_jeffallan_claude_skills_1 = require("../seeders/0003_seed_preseed_jeffallan_claude_skills");
|
|
26
|
+
const _0004_seed_disable_microsoft_source_default_1 = require("../seeders/0004_seed_disable_microsoft_source_default");
|
|
25
27
|
exports.DATA_SEEDERS = 'DATA_SEEDERS';
|
|
26
28
|
const JOURNAL_KEY = 'seeders.journal';
|
|
27
29
|
exports.REGISTERED_DATA_SEEDERS = [
|
|
28
30
|
_0001_seed_compact_on_idle_watcher_1.seedCompactOnIdleWatcherSeeder,
|
|
29
31
|
_0002_seed_replace_permission_mode_plan_1.seedReplacePermissionModePlanSeeder,
|
|
32
|
+
_0003_seed_preseed_jeffallan_claude_skills_1.seedPreseedJeffallanClaudeSkillsSeeder,
|
|
33
|
+
_0004_seed_disable_microsoft_source_default_1.seedDisableMicrosoftSourceDefaultSeeder,
|
|
30
34
|
];
|
|
31
35
|
function isSeederJournalEntry(value) {
|
|
32
36
|
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-seeder.service.js","sourceRoot":"","sources":["../../../../src/modules/seeders/services/data-seeder.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,mCAAoC;AAGpC,2DAA8D;AAC9D,8DAA6D;AAC7D,4DAAiE;AACjE,kFAAkG;AAClG,+EAA2E;AAC3E,qGAA8F;AAC9F,+GAAwG;
|
|
1
|
+
{"version":3,"file":"data-seeder.service.js","sourceRoot":"","sources":["../../../../src/modules/seeders/services/data-seeder.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,mCAAoC;AAGpC,2DAA8D;AAC9D,8DAA6D;AAC7D,4DAAiE;AACjE,kFAAkG;AAClG,+EAA2E;AAC3E,qGAA8F;AAC9F,+GAAwG;AACxG,qHAA8G;AAC9G,uHAAgH;AAEnG,QAAA,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAezB,QAAA,uBAAuB,GAAiB;IACnD,mEAA8B;IAC9B,6EAAmC;IACnC,mFAAsC;IACtC,qFAAuC;CACxC,CAAC;AASF,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC;AACrF,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAI5B,YAC2B,OAAwC,EAChD,eAAgC,EAC1B,EAA0C,EAC3C,OAAsC;QAHlB,YAAO,GAAP,OAAO,CAAgB;QAChD,oBAAe,GAAf,eAAe,CAAiB;QACT,OAAE,GAAF,EAAE,CAAuB;QAC1B,YAAO,GAAP,OAAO,CAAc;QAP7C,WAAM,GAAG,IAAA,qBAAY,EAAC,mBAAmB,CAAC,CAAC;QAS1D,IAAI,CAAC,MAAM,GAAG,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,wCAAwC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1D,oDAAoD,CACrD,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACrC,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,aAAa,EAAE,MAAM,CAAC,OAAO;aAC9B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,GAAG,CAAC;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,MAAM,EAAE,YAAY;iBACrB,CAAC,CAAC;gBAEH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACrC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1D,8BAA8B,CAC/B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,EACjE,qDAAqD,CACtD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,WAAW,CAE9E,CAAC;QAEd,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACjF,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,4DAA4D,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,cAAc,CAAC,OAAsB;QAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM;aACR,OAAO,CACN;;;;;;OAMD,CACA;aACA,GAAG,CAAC,IAAA,mBAAU,GAAE,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;CACF,CAAA;AA1GY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,mCAAe,CAAC,CAAA;IAEvB,WAAA,IAAA,eAAM,EAAC,2BAAa,CAAC,CAAA;IACrB,WAAA,IAAA,eAAM,EAAC,oBAAY,CAAC,CAAA;6CAFa,kCAAe;GANxC,iBAAiB,CA0G7B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CommunitySkillSource } from '../../storage/models/domain.models';
|
|
2
|
+
import { GitHubSkillSourceBase } from './github-skill-source.base';
|
|
3
|
+
import type { SkillManifest, SkillSourceAdapter, SkillSourceSyncContext } from './skill-source.adapter';
|
|
4
|
+
export declare class CommunitySkillSourceAdapter extends GitHubSkillSourceBase implements SkillSourceAdapter {
|
|
5
|
+
constructor(source: CommunitySkillSource);
|
|
6
|
+
listSkills(): Promise<Map<string, SkillManifest>>;
|
|
7
|
+
createSyncContext(): Promise<SkillSourceSyncContext>;
|
|
8
|
+
private listSkillNamesFromExtractedRepo;
|
|
9
|
+
protected resolveSkillDirectory(extractedRepoRoot: string, skillName: string): Promise<string>;
|
|
10
|
+
private toSkillManifest;
|
|
11
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
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 __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CommunitySkillSourceAdapter = void 0;
|
|
37
|
+
const node_path_1 = require("node:path");
|
|
38
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
39
|
+
const error_types_1 = require("../../../common/errors/error-types");
|
|
40
|
+
const logger_1 = require("../../../common/logging/logger");
|
|
41
|
+
const github_skill_source_base_1 = require("./github-skill-source.base");
|
|
42
|
+
const logger = (0, logger_1.createLogger)('CommunitySkillSourceAdapter');
|
|
43
|
+
const SKILLS_DIRECTORY = 'skills';
|
|
44
|
+
class CommunitySkillSourceAdapter extends github_skill_source_base_1.GitHubSkillSourceBase {
|
|
45
|
+
constructor(source) {
|
|
46
|
+
super({
|
|
47
|
+
sourceName: source.name,
|
|
48
|
+
repoOwner: source.repoOwner,
|
|
49
|
+
repoName: source.repoName,
|
|
50
|
+
branch: source.branch,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async listSkills() {
|
|
54
|
+
const context = await this.createSyncContext();
|
|
55
|
+
try {
|
|
56
|
+
return new Map(context.manifests);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
await context.dispose();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async createSyncContext() {
|
|
63
|
+
const repoContext = await this.prepareExtractedRepository();
|
|
64
|
+
const manifests = new Map();
|
|
65
|
+
let disposed = false;
|
|
66
|
+
const dispose = async () => {
|
|
67
|
+
if (disposed) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
disposed = true;
|
|
71
|
+
await repoContext.dispose();
|
|
72
|
+
};
|
|
73
|
+
try {
|
|
74
|
+
const skillNames = await this.listSkillNamesFromExtractedRepo(repoContext.extractedRepoRoot);
|
|
75
|
+
for (const skillName of skillNames) {
|
|
76
|
+
try {
|
|
77
|
+
const skillDirectory = await this.resolveSkillDirectory(repoContext.extractedRepoRoot, skillName);
|
|
78
|
+
const parsedSkill = await this.parseSkillMarkdown(skillDirectory);
|
|
79
|
+
if (!parsedSkill) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
manifests.set(skillName, this.toSkillManifest(skillName, parsedSkill));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
logger.warn({
|
|
86
|
+
sourceName: this.sourceName,
|
|
87
|
+
skillName,
|
|
88
|
+
error: error instanceof Error ? error.message : String(error),
|
|
89
|
+
}, 'Failed processing community skill. Skipping.');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
manifests,
|
|
94
|
+
downloadSkill: async (skillName, targetPath) => this.downloadSkillFromExtractedRepo(skillName, targetPath, repoContext.extractedRepoRoot),
|
|
95
|
+
dispose,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
await dispose();
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async listSkillNamesFromExtractedRepo(extractedRepoRoot) {
|
|
104
|
+
const skillsRoot = (0, node_path_1.join)(extractedRepoRoot, SKILLS_DIRECTORY);
|
|
105
|
+
let entries;
|
|
106
|
+
try {
|
|
107
|
+
entries = await fs.readdir(skillsRoot, { withFileTypes: true });
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (error.code === 'ENOENT') {
|
|
111
|
+
throw new error_types_1.StorageError('Community skills directory not found in repository archive.', {
|
|
112
|
+
sourceName: this.sourceName,
|
|
113
|
+
skillsRoot,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
throw new error_types_1.StorageError('Failed reading community skills directory in archive.', {
|
|
117
|
+
sourceName: this.sourceName,
|
|
118
|
+
skillsRoot,
|
|
119
|
+
cause: error instanceof Error ? error.message : String(error),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return entries
|
|
123
|
+
.filter((entry) => entry.isDirectory() && !entry.name.startsWith('.'))
|
|
124
|
+
.map((entry) => entry.name)
|
|
125
|
+
.sort((left, right) => left.localeCompare(right));
|
|
126
|
+
}
|
|
127
|
+
async resolveSkillDirectory(extractedRepoRoot, skillName) {
|
|
128
|
+
const strictSkillsPath = (0, node_path_1.join)(extractedRepoRoot, SKILLS_DIRECTORY, skillName);
|
|
129
|
+
try {
|
|
130
|
+
const stats = await fs.stat(strictSkillsPath);
|
|
131
|
+
if (stats.isDirectory()) {
|
|
132
|
+
return strictSkillsPath;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (error.code !== 'ENOENT') {
|
|
137
|
+
throw new error_types_1.StorageError('Failed checking extracted community skill directory.', {
|
|
138
|
+
sourceName: this.sourceName,
|
|
139
|
+
skillName,
|
|
140
|
+
candidate: strictSkillsPath,
|
|
141
|
+
cause: error instanceof Error ? error.message : String(error),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
throw new error_types_1.StorageError('Skill directory was not found in extracted repository tarball.', {
|
|
146
|
+
sourceName: this.sourceName,
|
|
147
|
+
skillName,
|
|
148
|
+
extractedRepoRoot,
|
|
149
|
+
candidate: strictSkillsPath,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
toSkillManifest(skillName, parsedSkill) {
|
|
153
|
+
const frontmatter = parsedSkill.frontmatter;
|
|
154
|
+
const manifestName = this.pickString(frontmatter, ['name']) ?? skillName;
|
|
155
|
+
const displayName = this.pickString(frontmatter, ['displayName', 'display_name', 'title']);
|
|
156
|
+
const description = this.pickString(frontmatter, ['description', 'summary', 'shortDescription']) ??
|
|
157
|
+
`Skill instructions for ${skillName}`;
|
|
158
|
+
const shortDescription = this.pickString(frontmatter, [
|
|
159
|
+
'shortDescription',
|
|
160
|
+
'short_description',
|
|
161
|
+
'summary',
|
|
162
|
+
]);
|
|
163
|
+
const license = this.pickString(frontmatter, ['license']);
|
|
164
|
+
const compatibility = this.pickString(frontmatter, ['compatibility']);
|
|
165
|
+
const resources = this.pickStringArray(frontmatter, ['resources', 'references']);
|
|
166
|
+
return {
|
|
167
|
+
name: manifestName,
|
|
168
|
+
displayName,
|
|
169
|
+
description,
|
|
170
|
+
shortDescription,
|
|
171
|
+
license,
|
|
172
|
+
compatibility,
|
|
173
|
+
frontmatter,
|
|
174
|
+
instructionContent: parsedSkill.instructionContent,
|
|
175
|
+
resources,
|
|
176
|
+
sourceUrl: `${this.repoUrl}/tree/${encodeURIComponent(this.branch)}/${SKILLS_DIRECTORY}/${encodeURIComponent(skillName)}`,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.CommunitySkillSourceAdapter = CommunitySkillSourceAdapter;
|
|
181
|
+
//# sourceMappingURL=community-skill-source.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-skill-source.adapter.js","sourceRoot":"","sources":["../../../../src/modules/skills/adapters/community-skill-source.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type CommunitySourceResponseDto } from '../dtos/community-sources.dto';
|
|
2
|
+
import { CommunitySourcesService } from '../services/community-sources.service';
|
|
3
|
+
export declare class CommunitySourcesController {
|
|
4
|
+
private readonly communitySourcesService;
|
|
5
|
+
constructor(communitySourcesService: CommunitySourcesService);
|
|
6
|
+
listCommunitySources(): Promise<CommunitySourceResponseDto[]>;
|
|
7
|
+
createCommunitySource(body: unknown): Promise<CommunitySourceResponseDto>;
|
|
8
|
+
deleteCommunitySource(params: unknown): Promise<{
|
|
9
|
+
success: true;
|
|
10
|
+
}>;
|
|
11
|
+
private toResponse;
|
|
12
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
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.CommunitySourcesController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const logger_1 = require("../../../common/logging/logger");
|
|
18
|
+
const community_sources_dto_1 = require("../dtos/community-sources.dto");
|
|
19
|
+
const community_sources_service_1 = require("../services/community-sources.service");
|
|
20
|
+
const logger = (0, logger_1.createLogger)('CommunitySourcesController');
|
|
21
|
+
let CommunitySourcesController = class CommunitySourcesController {
|
|
22
|
+
constructor(communitySourcesService) {
|
|
23
|
+
this.communitySourcesService = communitySourcesService;
|
|
24
|
+
}
|
|
25
|
+
async listCommunitySources() {
|
|
26
|
+
logger.info('GET /api/skills/community-sources');
|
|
27
|
+
const sources = await this.communitySourcesService.listCommunitySources();
|
|
28
|
+
return sources.map((source) => this.toResponse(source));
|
|
29
|
+
}
|
|
30
|
+
async createCommunitySource(body) {
|
|
31
|
+
logger.info('POST /api/skills/community-sources');
|
|
32
|
+
const parsed = community_sources_dto_1.CreateCommunitySourceSchema.parse(body);
|
|
33
|
+
const created = await this.communitySourcesService.createCommunitySource(parsed);
|
|
34
|
+
return this.toResponse(created);
|
|
35
|
+
}
|
|
36
|
+
async deleteCommunitySource(params) {
|
|
37
|
+
logger.info('DELETE /api/skills/community-sources/:id');
|
|
38
|
+
const parsed = community_sources_dto_1.CommunitySourceDeleteParamsSchema.parse(params);
|
|
39
|
+
await this.communitySourcesService.deleteCommunitySource(parsed.id);
|
|
40
|
+
return { success: true };
|
|
41
|
+
}
|
|
42
|
+
toResponse(source) {
|
|
43
|
+
return community_sources_dto_1.CommunitySourceResponseSchema.parse(source);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.CommunitySourcesController = CommunitySourcesController;
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, common_1.Get)(),
|
|
49
|
+
__metadata("design:type", Function),
|
|
50
|
+
__metadata("design:paramtypes", []),
|
|
51
|
+
__metadata("design:returntype", Promise)
|
|
52
|
+
], CommunitySourcesController.prototype, "listCommunitySources", null);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, common_1.Post)(),
|
|
55
|
+
__param(0, (0, common_1.Body)()),
|
|
56
|
+
__metadata("design:type", Function),
|
|
57
|
+
__metadata("design:paramtypes", [Object]),
|
|
58
|
+
__metadata("design:returntype", Promise)
|
|
59
|
+
], CommunitySourcesController.prototype, "createCommunitySource", null);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, common_1.Delete)(':id'),
|
|
62
|
+
__param(0, (0, common_1.Param)()),
|
|
63
|
+
__metadata("design:type", Function),
|
|
64
|
+
__metadata("design:paramtypes", [Object]),
|
|
65
|
+
__metadata("design:returntype", Promise)
|
|
66
|
+
], CommunitySourcesController.prototype, "deleteCommunitySource", null);
|
|
67
|
+
exports.CommunitySourcesController = CommunitySourcesController = __decorate([
|
|
68
|
+
(0, common_1.Controller)('api/skills/community-sources'),
|
|
69
|
+
__metadata("design:paramtypes", [community_sources_service_1.CommunitySourcesService])
|
|
70
|
+
], CommunitySourcesController);
|
|
71
|
+
//# sourceMappingURL=community-sources.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-sources.controller.js","sourceRoot":"","sources":["../../../../src/modules/skills/controllers/community-sources.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4E;AAC5E,2DAA8D;AAE9D,yEAKuC;AACvC,qFAAgF;AAEhF,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,4BAA4B,CAAC,CAAC;AAGnD,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,YAA6B,uBAAgD;QAAhD,4BAAuB,GAAvB,uBAAuB,CAAyB;IAAG,CAAC;IAG3E,AAAN,KAAK,CAAC,oBAAoB;QACxB,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC;QAC1E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAGK,AAAN,KAAK,CAAC,qBAAqB,CAAS,IAAa;QAC/C,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,mDAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAGK,AAAN,KAAK,CAAC,qBAAqB,CAAU,MAAe;QAClD,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,yDAAiC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,UAAU,CAAC,MAA4B;QAC7C,OAAO,qDAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AA7BY,gEAA0B;AAI/B;IADL,IAAA,YAAG,GAAE;;;;sEAKL;AAGK;IADL,IAAA,aAAI,GAAE;IACsB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;uEAKlC;AAGK;IADL,IAAA,eAAM,EAAC,KAAK,CAAC;IACe,WAAA,IAAA,cAAK,GAAE,CAAA;;;;uEAKnC;qCAxBU,0BAA0B;IADtC,IAAA,mBAAU,EAAC,8BAA8B,CAAC;qCAEa,mDAAuB;GADlE,0BAA0B,CA6BtC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const CommunitySourceNameSchema: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
3
|
+
export declare const GitHubOwnerSchema: z.ZodEffects<z.ZodString, string, string>;
|
|
4
|
+
export declare const GitHubRepoSchema: z.ZodEffects<z.ZodString, string, string>;
|
|
5
|
+
export declare const BranchSchema: z.ZodDefault<z.ZodString>;
|
|
6
|
+
export interface ParsedGitHubRepo {
|
|
7
|
+
repoOwner: string;
|
|
8
|
+
repoName: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const parseGitHubRepoUrl: (url: string) => ParsedGitHubRepo;
|
|
11
|
+
export declare const CreateCommunitySourceSchema: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
|
|
12
|
+
name: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
13
|
+
repoOwner: z.ZodEffects<z.ZodString, string, string>;
|
|
14
|
+
repoName: z.ZodEffects<z.ZodString, string, string>;
|
|
15
|
+
branch: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
|
17
|
+
name: string;
|
|
18
|
+
repoOwner: string;
|
|
19
|
+
repoName: string;
|
|
20
|
+
branch?: string | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
name: string;
|
|
23
|
+
repoOwner: string;
|
|
24
|
+
repoName: string;
|
|
25
|
+
branch?: string | undefined;
|
|
26
|
+
}>, {
|
|
27
|
+
name: string;
|
|
28
|
+
repoOwner: string;
|
|
29
|
+
repoName: string;
|
|
30
|
+
branch: string;
|
|
31
|
+
}, {
|
|
32
|
+
name: string;
|
|
33
|
+
repoOwner: string;
|
|
34
|
+
repoName: string;
|
|
35
|
+
branch?: string | undefined;
|
|
36
|
+
}>, z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
37
|
+
name: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
38
|
+
url: z.ZodString;
|
|
39
|
+
branch: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
name: string;
|
|
42
|
+
url: string;
|
|
43
|
+
branch?: string | undefined;
|
|
44
|
+
}, {
|
|
45
|
+
name: string;
|
|
46
|
+
url: string;
|
|
47
|
+
branch?: string | undefined;
|
|
48
|
+
}>, {
|
|
49
|
+
name: string;
|
|
50
|
+
url: string;
|
|
51
|
+
branch?: string | undefined;
|
|
52
|
+
}, {
|
|
53
|
+
name: string;
|
|
54
|
+
url: string;
|
|
55
|
+
branch?: string | undefined;
|
|
56
|
+
}>, {
|
|
57
|
+
name: string;
|
|
58
|
+
repoOwner: string;
|
|
59
|
+
repoName: string;
|
|
60
|
+
branch: string;
|
|
61
|
+
}, {
|
|
62
|
+
name: string;
|
|
63
|
+
url: string;
|
|
64
|
+
branch?: string | undefined;
|
|
65
|
+
}>]>;
|
|
66
|
+
export declare const CommunitySourceResponseSchema: z.ZodObject<{
|
|
67
|
+
id: z.ZodString;
|
|
68
|
+
name: z.ZodString;
|
|
69
|
+
repoOwner: z.ZodString;
|
|
70
|
+
repoName: z.ZodString;
|
|
71
|
+
branch: z.ZodString;
|
|
72
|
+
createdAt: z.ZodString;
|
|
73
|
+
updatedAt: z.ZodString;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
id: string;
|
|
76
|
+
createdAt: string;
|
|
77
|
+
updatedAt: string;
|
|
78
|
+
name: string;
|
|
79
|
+
branch: string;
|
|
80
|
+
repoOwner: string;
|
|
81
|
+
repoName: string;
|
|
82
|
+
}, {
|
|
83
|
+
id: string;
|
|
84
|
+
createdAt: string;
|
|
85
|
+
updatedAt: string;
|
|
86
|
+
name: string;
|
|
87
|
+
branch: string;
|
|
88
|
+
repoOwner: string;
|
|
89
|
+
repoName: string;
|
|
90
|
+
}>;
|
|
91
|
+
export declare const CommunitySourceDeleteParamsSchema: z.ZodObject<{
|
|
92
|
+
id: z.ZodString;
|
|
93
|
+
}, "strip", z.ZodTypeAny, {
|
|
94
|
+
id: string;
|
|
95
|
+
}, {
|
|
96
|
+
id: string;
|
|
97
|
+
}>;
|
|
98
|
+
export type CreateCommunitySourceDto = z.infer<typeof CreateCommunitySourceSchema>;
|
|
99
|
+
export type CommunitySourceResponseDto = z.infer<typeof CommunitySourceResponseSchema>;
|
|
100
|
+
export type CommunitySourceDeleteParamsDto = z.infer<typeof CommunitySourceDeleteParamsSchema>;
|