skillpkg-core 0.1.0
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/adapters/base.d.ts +48 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +54 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude-code.d.ts +39 -0
- package/dist/adapters/claude-code.d.ts.map +1 -0
- package/dist/adapters/claude-code.js +172 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/cline.d.ts +43 -0
- package/dist/adapters/cline.d.ts.map +1 -0
- package/dist/adapters/cline.js +157 -0
- package/dist/adapters/cline.js.map +1 -0
- package/dist/adapters/codex.d.ts +31 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +117 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/copilot.d.ts +44 -0
- package/dist/adapters/copilot.d.ts.map +1 -0
- package/dist/adapters/copilot.js +183 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +13 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.d.ts +51 -0
- package/dist/adapters/manager.d.ts.map +1 -0
- package/dist/adapters/manager.js +147 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/adapters/types.d.ts +93 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/exporter/exporter.d.ts +54 -0
- package/dist/exporter/exporter.d.ts.map +1 -0
- package/dist/exporter/exporter.js +303 -0
- package/dist/exporter/exporter.js.map +1 -0
- package/dist/exporter/index.d.ts +6 -0
- package/dist/exporter/index.d.ts.map +1 -0
- package/dist/exporter/index.js +6 -0
- package/dist/exporter/index.js.map +1 -0
- package/dist/exporter/types.d.ts +38 -0
- package/dist/exporter/types.d.ts.map +1 -0
- package/dist/exporter/types.js +5 -0
- package/dist/exporter/types.js.map +1 -0
- package/dist/importer/importer.d.ts +37 -0
- package/dist/importer/importer.d.ts.map +1 -0
- package/dist/importer/importer.js +204 -0
- package/dist/importer/importer.js.map +1 -0
- package/dist/importer/index.d.ts +6 -0
- package/dist/importer/index.d.ts.map +1 -0
- package/dist/importer/index.js +6 -0
- package/dist/importer/index.js.map +1 -0
- package/dist/importer/types.d.ts +43 -0
- package/dist/importer/types.d.ts.map +1 -0
- package/dist/importer/types.js +2 -0
- package/dist/importer/types.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/index.d.ts +23 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +24 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/parser.d.ts +64 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +121 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/schema.d.ts +155 -0
- package/dist/parser/schema.d.ts.map +1 -0
- package/dist/parser/schema.js +147 -0
- package/dist/parser/schema.js.map +1 -0
- package/dist/parser/validator.d.ts +38 -0
- package/dist/parser/validator.d.ts.map +1 -0
- package/dist/parser/validator.js +125 -0
- package/dist/parser/validator.js.map +1 -0
- package/dist/registry/auth.d.ts +38 -0
- package/dist/registry/auth.d.ts.map +1 -0
- package/dist/registry/auth.js +142 -0
- package/dist/registry/auth.js.map +1 -0
- package/dist/registry/client.d.ts +80 -0
- package/dist/registry/client.d.ts.map +1 -0
- package/dist/registry/client.js +238 -0
- package/dist/registry/client.js.map +1 -0
- package/dist/registry/index.d.ts +10 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +9 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/types.d.ts +94 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +18 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/store/config.d.ts +30 -0
- package/dist/store/config.d.ts.map +1 -0
- package/dist/store/config.js +112 -0
- package/dist/store/config.js.map +1 -0
- package/dist/store/index.d.ts +21 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +24 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/manager.d.ts +113 -0
- package/dist/store/manager.d.ts.map +1 -0
- package/dist/store/manager.js +250 -0
- package/dist/store/manager.js.map +1 -0
- package/dist/store/paths.d.ts +37 -0
- package/dist/store/paths.d.ts.map +1 -0
- package/dist/store/paths.js +60 -0
- package/dist/store/paths.js.map +1 -0
- package/dist/store/registry.d.ts +34 -0
- package/dist/store/registry.d.ts.map +1 -0
- package/dist/store/registry.js +105 -0
- package/dist/store/registry.js.map +1 -0
- package/dist/types.d.ts +130 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store module - public API
|
|
3
|
+
*
|
|
4
|
+
* Provides local skill storage management.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { StoreManager, createGlobalStore } from '@skillpkg/core/store';
|
|
9
|
+
*
|
|
10
|
+
* const store = createGlobalStore();
|
|
11
|
+
* await store.init();
|
|
12
|
+
*
|
|
13
|
+
* const skills = await store.listSkills();
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { StoreManager, createGlobalStore, createLocalStore } from './manager.js';
|
|
17
|
+
export type { StoreOptions, SkillMeta } from './manager.js';
|
|
18
|
+
export { getGlobalDir, getLocalDir, getSkillsDir, getSkillDir, getSkillYamlPath, getRegistryPath, getConfigPath, getCredentialsPath, getCacheDir, } from './paths.js';
|
|
19
|
+
export { loadRegistry, saveRegistry, addSkillToRegistry, removeSkillFromRegistry, getSkillFromRegistry, listSkillsInRegistry, createEmptyRegistry, } from './registry.js';
|
|
20
|
+
export { loadConfig, saveConfig, getConfigValue, setConfigValue, updateConfig, resetConfig, getDefaultConfig, } from './config.js';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store module - public API
|
|
3
|
+
*
|
|
4
|
+
* Provides local skill storage management.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { StoreManager, createGlobalStore } from '@skillpkg/core/store';
|
|
9
|
+
*
|
|
10
|
+
* const store = createGlobalStore();
|
|
11
|
+
* await store.init();
|
|
12
|
+
*
|
|
13
|
+
* const skills = await store.listSkills();
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
// Main exports
|
|
17
|
+
export { StoreManager, createGlobalStore, createLocalStore } from './manager.js';
|
|
18
|
+
// Path utilities
|
|
19
|
+
export { getGlobalDir, getLocalDir, getSkillsDir, getSkillDir, getSkillYamlPath, getRegistryPath, getConfigPath, getCredentialsPath, getCacheDir, } from './paths.js';
|
|
20
|
+
// Registry operations
|
|
21
|
+
export { loadRegistry, saveRegistry, addSkillToRegistry, removeSkillFromRegistry, getSkillFromRegistry, listSkillsInRegistry, createEmptyRegistry, } from './registry.js';
|
|
22
|
+
// Config operations
|
|
23
|
+
export { loadConfig, saveConfig, getConfigValue, setConfigValue, updateConfig, resetConfig, getDefaultConfig, } from './config.js';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGjF,iBAAiB;AACjB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,sBAAsB;AACtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,oBAAoB;AACpB,OAAO,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { Skill, Registry, Config, SkillEntry } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Store options
|
|
4
|
+
*/
|
|
5
|
+
export interface StoreOptions {
|
|
6
|
+
/** Use global store (~/.skillpkg) instead of local */
|
|
7
|
+
global?: boolean;
|
|
8
|
+
/** Custom store path (overrides global option) */
|
|
9
|
+
storePath?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Skill metadata (without instructions)
|
|
13
|
+
*/
|
|
14
|
+
export interface SkillMeta {
|
|
15
|
+
name: string;
|
|
16
|
+
version: string;
|
|
17
|
+
description: string;
|
|
18
|
+
author?: string;
|
|
19
|
+
installedAt: string;
|
|
20
|
+
source: 'registry' | 'local' | 'import';
|
|
21
|
+
syncedPlatforms: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Store Manager class
|
|
25
|
+
*/
|
|
26
|
+
export declare class StoreManager {
|
|
27
|
+
private storeDir;
|
|
28
|
+
constructor(options?: StoreOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Get the store directory path
|
|
31
|
+
*/
|
|
32
|
+
getStoreDir(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Initialize the store directory structure
|
|
35
|
+
*/
|
|
36
|
+
init(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if the store is initialized
|
|
39
|
+
*/
|
|
40
|
+
isInitialized(): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Get a skill by name
|
|
43
|
+
*/
|
|
44
|
+
getSkill(name: string): Promise<Skill | null>;
|
|
45
|
+
/**
|
|
46
|
+
* List all installed skills (metadata only)
|
|
47
|
+
*/
|
|
48
|
+
listSkills(): Promise<SkillMeta[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Add a skill to the store
|
|
51
|
+
*/
|
|
52
|
+
addSkill(skill: Skill, options?: {
|
|
53
|
+
source?: 'registry' | 'local' | 'import';
|
|
54
|
+
sourceUrl?: string;
|
|
55
|
+
}): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Update an existing skill
|
|
58
|
+
*/
|
|
59
|
+
updateSkill(name: string, skill: Skill): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Remove a skill from the store
|
|
62
|
+
*/
|
|
63
|
+
removeSkill(name: string): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Check if a skill exists
|
|
66
|
+
*/
|
|
67
|
+
hasSkill(name: string): Promise<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Get skill entry from registry
|
|
70
|
+
*/
|
|
71
|
+
getSkillEntry(name: string): Promise<SkillEntry | null>;
|
|
72
|
+
/**
|
|
73
|
+
* Update synced platforms for a skill
|
|
74
|
+
*/
|
|
75
|
+
updateSyncedPlatforms(name: string, platforms: string[]): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Get the full registry
|
|
78
|
+
*/
|
|
79
|
+
getRegistry(): Promise<Registry>;
|
|
80
|
+
/**
|
|
81
|
+
* Save the registry
|
|
82
|
+
*/
|
|
83
|
+
saveRegistry(registry: Registry): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Get the configuration
|
|
86
|
+
*/
|
|
87
|
+
getConfig(): Promise<Config>;
|
|
88
|
+
/**
|
|
89
|
+
* Save the configuration
|
|
90
|
+
*/
|
|
91
|
+
saveConfig(config: Config): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Set a config value
|
|
94
|
+
*/
|
|
95
|
+
setConfigValue<K extends keyof Config>(key: K, value: Config[K]): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Get all skill names from the skills directory
|
|
98
|
+
*/
|
|
99
|
+
getSkillNames(): Promise<string[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Clean orphaned skills (in registry but not on disk)
|
|
102
|
+
*/
|
|
103
|
+
cleanOrphans(): Promise<string[]>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Create a global store manager
|
|
107
|
+
*/
|
|
108
|
+
export declare function createGlobalStore(): StoreManager;
|
|
109
|
+
/**
|
|
110
|
+
* Create a local store manager
|
|
111
|
+
*/
|
|
112
|
+
export declare function createLocalStore(projectPath?: string): StoreManager;
|
|
113
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/store/manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoBvE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,YAAiB;IAUtC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAMvC;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAqBnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAsBxC;;OAEG;IACG,QAAQ,CACZ,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7E,OAAO,CAAC,IAAI,CAAC;IAsBhB;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5D;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBjD;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9C;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI7D;;OAEG;IACG,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAItC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAWxC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAkBxC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAEhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,CAInE"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store Manager - manages skill storage
|
|
3
|
+
*/
|
|
4
|
+
import { mkdir, readFile, writeFile, rm, readdir } from 'fs/promises';
|
|
5
|
+
import { existsSync } from 'fs';
|
|
6
|
+
import { parse, stringify } from '../parser/index.js';
|
|
7
|
+
import { getGlobalDir, getLocalDir, getSkillsDir, getSkillDir, getSkillYamlPath, } from './paths.js';
|
|
8
|
+
import { loadRegistry, saveRegistry, addSkillToRegistry, removeSkillFromRegistry, getSkillFromRegistry, listSkillsInRegistry, updateSyncedPlatforms, } from './registry.js';
|
|
9
|
+
import { loadConfig, saveConfig } from './config.js';
|
|
10
|
+
/**
|
|
11
|
+
* Store Manager class
|
|
12
|
+
*/
|
|
13
|
+
export class StoreManager {
|
|
14
|
+
storeDir;
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
if (options.storePath) {
|
|
17
|
+
this.storeDir = options.storePath;
|
|
18
|
+
}
|
|
19
|
+
else if (options.global) {
|
|
20
|
+
this.storeDir = getGlobalDir();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.storeDir = getLocalDir();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the store directory path
|
|
28
|
+
*/
|
|
29
|
+
getStoreDir() {
|
|
30
|
+
return this.storeDir;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the store directory structure
|
|
34
|
+
*/
|
|
35
|
+
async init() {
|
|
36
|
+
const skillsDir = getSkillsDir(this.storeDir);
|
|
37
|
+
// Create directories
|
|
38
|
+
await mkdir(skillsDir, { recursive: true });
|
|
39
|
+
// Initialize config if not exists
|
|
40
|
+
const config = await loadConfig(this.storeDir);
|
|
41
|
+
await saveConfig(this.storeDir, config);
|
|
42
|
+
// Initialize registry if not exists
|
|
43
|
+
const registry = await loadRegistry(this.storeDir);
|
|
44
|
+
await saveRegistry(this.storeDir, registry);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if the store is initialized
|
|
48
|
+
*/
|
|
49
|
+
async isInitialized() {
|
|
50
|
+
return existsSync(this.storeDir) && existsSync(getSkillsDir(this.storeDir));
|
|
51
|
+
}
|
|
52
|
+
// ==================== Skill Operations ====================
|
|
53
|
+
/**
|
|
54
|
+
* Get a skill by name
|
|
55
|
+
*/
|
|
56
|
+
async getSkill(name) {
|
|
57
|
+
const skillPath = getSkillYamlPath(this.storeDir, name);
|
|
58
|
+
if (!existsSync(skillPath)) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const content = await readFile(skillPath, 'utf-8');
|
|
63
|
+
const result = parse(content);
|
|
64
|
+
if (!result.success || !result.data) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return result.data;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* List all installed skills (metadata only)
|
|
75
|
+
*/
|
|
76
|
+
async listSkills() {
|
|
77
|
+
const entries = await listSkillsInRegistry(this.storeDir);
|
|
78
|
+
const skills = [];
|
|
79
|
+
for (const entry of entries) {
|
|
80
|
+
const skill = await this.getSkill(entry.name);
|
|
81
|
+
if (skill) {
|
|
82
|
+
skills.push({
|
|
83
|
+
name: skill.name,
|
|
84
|
+
version: skill.version,
|
|
85
|
+
description: skill.description,
|
|
86
|
+
author: typeof skill.author === 'string' ? skill.author : skill.author?.name,
|
|
87
|
+
installedAt: entry.installedAt,
|
|
88
|
+
source: entry.source,
|
|
89
|
+
syncedPlatforms: entry.syncedPlatforms,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return skills;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Add a skill to the store
|
|
97
|
+
*/
|
|
98
|
+
async addSkill(skill, options = {}) {
|
|
99
|
+
const { source = 'local', sourceUrl } = options;
|
|
100
|
+
// Create skill directory
|
|
101
|
+
const skillDir = getSkillDir(this.storeDir, skill.name);
|
|
102
|
+
await mkdir(skillDir, { recursive: true });
|
|
103
|
+
// Write skill.yaml
|
|
104
|
+
const skillPath = getSkillYamlPath(this.storeDir, skill.name);
|
|
105
|
+
const content = stringify(skill);
|
|
106
|
+
await writeFile(skillPath, content, 'utf-8');
|
|
107
|
+
// Update registry
|
|
108
|
+
await addSkillToRegistry(this.storeDir, skill.name, {
|
|
109
|
+
version: skill.version,
|
|
110
|
+
installedAt: new Date().toISOString(),
|
|
111
|
+
source,
|
|
112
|
+
sourceUrl,
|
|
113
|
+
syncedPlatforms: [],
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Update an existing skill
|
|
118
|
+
*/
|
|
119
|
+
async updateSkill(name, skill) {
|
|
120
|
+
const existing = await this.getSkill(name);
|
|
121
|
+
if (!existing) {
|
|
122
|
+
throw new Error(`Skill not found: ${name}`);
|
|
123
|
+
}
|
|
124
|
+
// Get existing registry entry
|
|
125
|
+
const entry = await getSkillFromRegistry(this.storeDir, name);
|
|
126
|
+
// Write updated skill.yaml
|
|
127
|
+
const skillPath = getSkillYamlPath(this.storeDir, name);
|
|
128
|
+
const content = stringify(skill);
|
|
129
|
+
await writeFile(skillPath, content, 'utf-8');
|
|
130
|
+
// Update registry with new version
|
|
131
|
+
if (entry) {
|
|
132
|
+
await addSkillToRegistry(this.storeDir, name, {
|
|
133
|
+
...entry,
|
|
134
|
+
version: skill.version,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Remove a skill from the store
|
|
140
|
+
*/
|
|
141
|
+
async removeSkill(name) {
|
|
142
|
+
const skillDir = getSkillDir(this.storeDir, name);
|
|
143
|
+
if (!existsSync(skillDir)) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
// Remove skill directory
|
|
147
|
+
await rm(skillDir, { recursive: true });
|
|
148
|
+
// Remove from registry
|
|
149
|
+
await removeSkillFromRegistry(this.storeDir, name);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Check if a skill exists
|
|
154
|
+
*/
|
|
155
|
+
async hasSkill(name) {
|
|
156
|
+
const skill = await this.getSkill(name);
|
|
157
|
+
return skill !== null;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get skill entry from registry
|
|
161
|
+
*/
|
|
162
|
+
async getSkillEntry(name) {
|
|
163
|
+
return getSkillFromRegistry(this.storeDir, name);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Update synced platforms for a skill
|
|
167
|
+
*/
|
|
168
|
+
async updateSyncedPlatforms(name, platforms) {
|
|
169
|
+
await updateSyncedPlatforms(this.storeDir, name, platforms);
|
|
170
|
+
}
|
|
171
|
+
// ==================== Registry Operations ====================
|
|
172
|
+
/**
|
|
173
|
+
* Get the full registry
|
|
174
|
+
*/
|
|
175
|
+
async getRegistry() {
|
|
176
|
+
return loadRegistry(this.storeDir);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Save the registry
|
|
180
|
+
*/
|
|
181
|
+
async saveRegistry(registry) {
|
|
182
|
+
return saveRegistry(this.storeDir, registry);
|
|
183
|
+
}
|
|
184
|
+
// ==================== Config Operations ====================
|
|
185
|
+
/**
|
|
186
|
+
* Get the configuration
|
|
187
|
+
*/
|
|
188
|
+
async getConfig() {
|
|
189
|
+
return loadConfig(this.storeDir);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Save the configuration
|
|
193
|
+
*/
|
|
194
|
+
async saveConfig(config) {
|
|
195
|
+
return saveConfig(this.storeDir, config);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Set a config value
|
|
199
|
+
*/
|
|
200
|
+
async setConfigValue(key, value) {
|
|
201
|
+
const config = await this.getConfig();
|
|
202
|
+
config[key] = value;
|
|
203
|
+
await this.saveConfig(config);
|
|
204
|
+
}
|
|
205
|
+
// ==================== Utility Methods ====================
|
|
206
|
+
/**
|
|
207
|
+
* Get all skill names from the skills directory
|
|
208
|
+
*/
|
|
209
|
+
async getSkillNames() {
|
|
210
|
+
const skillsDir = getSkillsDir(this.storeDir);
|
|
211
|
+
if (!existsSync(skillsDir)) {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
const entries = await readdir(skillsDir, { withFileTypes: true });
|
|
215
|
+
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Clean orphaned skills (in registry but not on disk)
|
|
219
|
+
*/
|
|
220
|
+
async cleanOrphans() {
|
|
221
|
+
const registry = await this.getRegistry();
|
|
222
|
+
const diskSkills = await this.getSkillNames();
|
|
223
|
+
const orphans = [];
|
|
224
|
+
for (const name of Object.keys(registry.skills)) {
|
|
225
|
+
if (!diskSkills.includes(name)) {
|
|
226
|
+
orphans.push(name);
|
|
227
|
+
delete registry.skills[name];
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (orphans.length > 0) {
|
|
231
|
+
await this.saveRegistry(registry);
|
|
232
|
+
}
|
|
233
|
+
return orphans;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Create a global store manager
|
|
238
|
+
*/
|
|
239
|
+
export function createGlobalStore() {
|
|
240
|
+
return new StoreManager({ global: true });
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Create a local store manager
|
|
244
|
+
*/
|
|
245
|
+
export function createLocalStore(projectPath) {
|
|
246
|
+
return new StoreManager({
|
|
247
|
+
storePath: projectPath ? getLocalDir(projectPath) : undefined,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/store/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the global skillpkg directory (~/.skillpkg)
|
|
3
|
+
*/
|
|
4
|
+
export declare function getGlobalDir(): string;
|
|
5
|
+
/**
|
|
6
|
+
* Get the local skillpkg directory (./.skillpkg)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getLocalDir(projectPath?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Get the skills directory within a store
|
|
11
|
+
*/
|
|
12
|
+
export declare function getSkillsDir(storeDir: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get the path to a specific skill directory
|
|
15
|
+
*/
|
|
16
|
+
export declare function getSkillDir(storeDir: string, skillName: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Get the path to a skill.yaml file
|
|
19
|
+
*/
|
|
20
|
+
export declare function getSkillYamlPath(storeDir: string, skillName: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Get the registry.json path
|
|
23
|
+
*/
|
|
24
|
+
export declare function getRegistryPath(storeDir: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Get the config.json path
|
|
27
|
+
*/
|
|
28
|
+
export declare function getConfigPath(storeDir: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Get the credentials file path
|
|
31
|
+
*/
|
|
32
|
+
export declare function getCredentialsPath(storeDir: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get the cache directory path
|
|
35
|
+
*/
|
|
36
|
+
export declare function getCacheDir(storeDir: string): string;
|
|
37
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/store/paths.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path utilities for skillpkg store
|
|
3
|
+
*/
|
|
4
|
+
import { homedir } from 'os';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
/**
|
|
7
|
+
* Get the global skillpkg directory (~/.skillpkg)
|
|
8
|
+
*/
|
|
9
|
+
export function getGlobalDir() {
|
|
10
|
+
return join(homedir(), '.skillpkg');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get the local skillpkg directory (./.skillpkg)
|
|
14
|
+
*/
|
|
15
|
+
export function getLocalDir(projectPath = process.cwd()) {
|
|
16
|
+
return join(projectPath, '.skillpkg');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get the skills directory within a store
|
|
20
|
+
*/
|
|
21
|
+
export function getSkillsDir(storeDir) {
|
|
22
|
+
return join(storeDir, 'skills');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the path to a specific skill directory
|
|
26
|
+
*/
|
|
27
|
+
export function getSkillDir(storeDir, skillName) {
|
|
28
|
+
return join(getSkillsDir(storeDir), skillName);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the path to a skill.yaml file
|
|
32
|
+
*/
|
|
33
|
+
export function getSkillYamlPath(storeDir, skillName) {
|
|
34
|
+
return join(getSkillDir(storeDir, skillName), 'skill.yaml');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the registry.json path
|
|
38
|
+
*/
|
|
39
|
+
export function getRegistryPath(storeDir) {
|
|
40
|
+
return join(storeDir, 'registry.json');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get the config.json path
|
|
44
|
+
*/
|
|
45
|
+
export function getConfigPath(storeDir) {
|
|
46
|
+
return join(storeDir, 'config.json');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the credentials file path
|
|
50
|
+
*/
|
|
51
|
+
export function getCredentialsPath(storeDir) {
|
|
52
|
+
return join(storeDir, 'credentials.json');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the cache directory path
|
|
56
|
+
*/
|
|
57
|
+
export function getCacheDir(storeDir) {
|
|
58
|
+
return join(storeDir, 'cache');
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/store/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAC7D,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,SAAiB;IAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,SAAiB;IAClE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Registry, SkillEntry } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Default empty registry
|
|
4
|
+
*/
|
|
5
|
+
export declare function createEmptyRegistry(): Registry;
|
|
6
|
+
/**
|
|
7
|
+
* Load registry from disk
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadRegistry(storeDir: string): Promise<Registry>;
|
|
10
|
+
/**
|
|
11
|
+
* Save registry to disk (atomic write)
|
|
12
|
+
*/
|
|
13
|
+
export declare function saveRegistry(storeDir: string, registry: Registry): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Add or update a skill entry in the registry
|
|
16
|
+
*/
|
|
17
|
+
export declare function addSkillToRegistry(storeDir: string, skillName: string, entry: Omit<SkillEntry, 'name'>): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Remove a skill from the registry
|
|
20
|
+
*/
|
|
21
|
+
export declare function removeSkillFromRegistry(storeDir: string, skillName: string): Promise<boolean>;
|
|
22
|
+
/**
|
|
23
|
+
* Get a skill entry from the registry
|
|
24
|
+
*/
|
|
25
|
+
export declare function getSkillFromRegistry(storeDir: string, skillName: string): Promise<SkillEntry | null>;
|
|
26
|
+
/**
|
|
27
|
+
* List all skills in the registry
|
|
28
|
+
*/
|
|
29
|
+
export declare function listSkillsInRegistry(storeDir: string): Promise<SkillEntry[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Update synced platforms for a skill
|
|
32
|
+
*/
|
|
33
|
+
export declare function updateSyncedPlatforms(storeDir: string, skillName: string, platforms: string[]): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/store/registry.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGxD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,CAM9C;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqBtE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWnG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAG5B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGlF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|