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.
Files changed (117) hide show
  1. package/dist/adapters/base.d.ts +48 -0
  2. package/dist/adapters/base.d.ts.map +1 -0
  3. package/dist/adapters/base.js +54 -0
  4. package/dist/adapters/base.js.map +1 -0
  5. package/dist/adapters/claude-code.d.ts +39 -0
  6. package/dist/adapters/claude-code.d.ts.map +1 -0
  7. package/dist/adapters/claude-code.js +172 -0
  8. package/dist/adapters/claude-code.js.map +1 -0
  9. package/dist/adapters/cline.d.ts +43 -0
  10. package/dist/adapters/cline.d.ts.map +1 -0
  11. package/dist/adapters/cline.js +157 -0
  12. package/dist/adapters/cline.js.map +1 -0
  13. package/dist/adapters/codex.d.ts +31 -0
  14. package/dist/adapters/codex.d.ts.map +1 -0
  15. package/dist/adapters/codex.js +117 -0
  16. package/dist/adapters/codex.js.map +1 -0
  17. package/dist/adapters/copilot.d.ts +44 -0
  18. package/dist/adapters/copilot.d.ts.map +1 -0
  19. package/dist/adapters/copilot.js +183 -0
  20. package/dist/adapters/copilot.js.map +1 -0
  21. package/dist/adapters/index.d.ts +11 -0
  22. package/dist/adapters/index.d.ts.map +1 -0
  23. package/dist/adapters/index.js +13 -0
  24. package/dist/adapters/index.js.map +1 -0
  25. package/dist/adapters/manager.d.ts +51 -0
  26. package/dist/adapters/manager.d.ts.map +1 -0
  27. package/dist/adapters/manager.js +147 -0
  28. package/dist/adapters/manager.js.map +1 -0
  29. package/dist/adapters/types.d.ts +93 -0
  30. package/dist/adapters/types.d.ts.map +1 -0
  31. package/dist/adapters/types.js +2 -0
  32. package/dist/adapters/types.js.map +1 -0
  33. package/dist/exporter/exporter.d.ts +54 -0
  34. package/dist/exporter/exporter.d.ts.map +1 -0
  35. package/dist/exporter/exporter.js +303 -0
  36. package/dist/exporter/exporter.js.map +1 -0
  37. package/dist/exporter/index.d.ts +6 -0
  38. package/dist/exporter/index.d.ts.map +1 -0
  39. package/dist/exporter/index.js +6 -0
  40. package/dist/exporter/index.js.map +1 -0
  41. package/dist/exporter/types.d.ts +38 -0
  42. package/dist/exporter/types.d.ts.map +1 -0
  43. package/dist/exporter/types.js +5 -0
  44. package/dist/exporter/types.js.map +1 -0
  45. package/dist/importer/importer.d.ts +37 -0
  46. package/dist/importer/importer.d.ts.map +1 -0
  47. package/dist/importer/importer.js +204 -0
  48. package/dist/importer/importer.js.map +1 -0
  49. package/dist/importer/index.d.ts +6 -0
  50. package/dist/importer/index.d.ts.map +1 -0
  51. package/dist/importer/index.js +6 -0
  52. package/dist/importer/index.js.map +1 -0
  53. package/dist/importer/types.d.ts +43 -0
  54. package/dist/importer/types.d.ts.map +1 -0
  55. package/dist/importer/types.js +2 -0
  56. package/dist/importer/types.js.map +1 -0
  57. package/dist/index.d.ts +14 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +21 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/parser/index.d.ts +23 -0
  62. package/dist/parser/index.d.ts.map +1 -0
  63. package/dist/parser/index.js +24 -0
  64. package/dist/parser/index.js.map +1 -0
  65. package/dist/parser/parser.d.ts +64 -0
  66. package/dist/parser/parser.d.ts.map +1 -0
  67. package/dist/parser/parser.js +121 -0
  68. package/dist/parser/parser.js.map +1 -0
  69. package/dist/parser/schema.d.ts +155 -0
  70. package/dist/parser/schema.d.ts.map +1 -0
  71. package/dist/parser/schema.js +147 -0
  72. package/dist/parser/schema.js.map +1 -0
  73. package/dist/parser/validator.d.ts +38 -0
  74. package/dist/parser/validator.d.ts.map +1 -0
  75. package/dist/parser/validator.js +125 -0
  76. package/dist/parser/validator.js.map +1 -0
  77. package/dist/registry/auth.d.ts +38 -0
  78. package/dist/registry/auth.d.ts.map +1 -0
  79. package/dist/registry/auth.js +142 -0
  80. package/dist/registry/auth.js.map +1 -0
  81. package/dist/registry/client.d.ts +80 -0
  82. package/dist/registry/client.d.ts.map +1 -0
  83. package/dist/registry/client.js +238 -0
  84. package/dist/registry/client.js.map +1 -0
  85. package/dist/registry/index.d.ts +10 -0
  86. package/dist/registry/index.d.ts.map +1 -0
  87. package/dist/registry/index.js +9 -0
  88. package/dist/registry/index.js.map +1 -0
  89. package/dist/registry/types.d.ts +94 -0
  90. package/dist/registry/types.d.ts.map +1 -0
  91. package/dist/registry/types.js +18 -0
  92. package/dist/registry/types.js.map +1 -0
  93. package/dist/store/config.d.ts +30 -0
  94. package/dist/store/config.d.ts.map +1 -0
  95. package/dist/store/config.js +112 -0
  96. package/dist/store/config.js.map +1 -0
  97. package/dist/store/index.d.ts +21 -0
  98. package/dist/store/index.d.ts.map +1 -0
  99. package/dist/store/index.js +24 -0
  100. package/dist/store/index.js.map +1 -0
  101. package/dist/store/manager.d.ts +113 -0
  102. package/dist/store/manager.d.ts.map +1 -0
  103. package/dist/store/manager.js +250 -0
  104. package/dist/store/manager.js.map +1 -0
  105. package/dist/store/paths.d.ts +37 -0
  106. package/dist/store/paths.d.ts.map +1 -0
  107. package/dist/store/paths.js +60 -0
  108. package/dist/store/paths.js.map +1 -0
  109. package/dist/store/registry.d.ts +34 -0
  110. package/dist/store/registry.d.ts.map +1 -0
  111. package/dist/store/registry.js +105 -0
  112. package/dist/store/registry.js.map +1 -0
  113. package/dist/types.d.ts +130 -0
  114. package/dist/types.d.ts.map +1 -0
  115. package/dist/types.js +8 -0
  116. package/dist/types.js.map +1 -0
  117. 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"}