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 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/registry/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Registry HTTP client
3
+ */
4
+ import type { SearchOptions, SearchResult, SkillInfo, PublishOptions, PublishResult } from './types.js';
5
+ /**
6
+ * Default registry URL (placeholder - will be configured later)
7
+ */
8
+ export declare const DEFAULT_REGISTRY_URL = "https://registry.skillpkg.dev";
9
+ /**
10
+ * Client options
11
+ */
12
+ export interface ClientOptions {
13
+ registryUrl?: string;
14
+ timeout?: number;
15
+ retries?: number;
16
+ retryDelay?: number;
17
+ }
18
+ /**
19
+ * Registry client for communicating with skill registries
20
+ */
21
+ export declare class RegistryClient {
22
+ private readonly registryUrl;
23
+ private readonly timeout;
24
+ private readonly retries;
25
+ private readonly retryDelay;
26
+ constructor(options?: ClientOptions);
27
+ /**
28
+ * Search for skills in the registry
29
+ */
30
+ search(query: string, options?: SearchOptions): Promise<SearchResult>;
31
+ /**
32
+ * Get detailed information about a skill
33
+ */
34
+ getSkillInfo(name: string): Promise<SkillInfo>;
35
+ /**
36
+ * Get all versions of a skill
37
+ */
38
+ getVersions(name: string): Promise<SkillInfo['versions']>;
39
+ /**
40
+ * Download a skill tarball
41
+ */
42
+ download(name: string, version?: string): Promise<Buffer>;
43
+ /**
44
+ * Publish a skill to the registry
45
+ */
46
+ publish(tarball: Buffer, options?: PublishOptions): Promise<PublishResult>;
47
+ /**
48
+ * Unpublish a skill version from the registry
49
+ */
50
+ unpublish(name: string, version?: string): Promise<void>;
51
+ /**
52
+ * Check if the registry is reachable
53
+ */
54
+ ping(): Promise<boolean>;
55
+ /**
56
+ * Get registry URL
57
+ */
58
+ getRegistryUrl(): string;
59
+ /**
60
+ * Make an authenticated request to the registry
61
+ */
62
+ private request;
63
+ /**
64
+ * Fetch with retry logic
65
+ */
66
+ private fetchWithRetry;
67
+ /**
68
+ * Handle error responses
69
+ */
70
+ private handleErrorResponse;
71
+ /**
72
+ * Delay helper
73
+ */
74
+ private delay;
75
+ }
76
+ /**
77
+ * Create a new registry client
78
+ */
79
+ export declare function createRegistryClient(options?: ClientOptions): RegistryClient;
80
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,GAAE,aAAkB;IAOvC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB/E;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAKpD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAK/D;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAczE;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAmCzB;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B9D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAW9B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;YACW,OAAO;IAuBrB;;OAEG;YACW,cAAc;IA0C5B;;OAEG;YACW,mBAAmB;IAsCjC;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAE5E"}
@@ -0,0 +1,238 @@
1
+ import { RegistryError } from './types.js';
2
+ import { getToken } from './auth.js';
3
+ /**
4
+ * Default registry URL (placeholder - will be configured later)
5
+ */
6
+ export const DEFAULT_REGISTRY_URL = 'https://registry.skillpkg.dev';
7
+ /**
8
+ * Registry client for communicating with skill registries
9
+ */
10
+ export class RegistryClient {
11
+ registryUrl;
12
+ timeout;
13
+ retries;
14
+ retryDelay;
15
+ constructor(options = {}) {
16
+ this.registryUrl = options.registryUrl || DEFAULT_REGISTRY_URL;
17
+ this.timeout = options.timeout || 30000;
18
+ this.retries = options.retries || 3;
19
+ this.retryDelay = options.retryDelay || 1000;
20
+ }
21
+ /**
22
+ * Search for skills in the registry
23
+ */
24
+ async search(query, options = {}) {
25
+ const params = new URLSearchParams({
26
+ q: query,
27
+ page: String(options.page || 1),
28
+ limit: String(options.limit || 20),
29
+ });
30
+ if (options.sort) {
31
+ params.set('sort', options.sort);
32
+ }
33
+ if (options.order) {
34
+ params.set('order', options.order);
35
+ }
36
+ const response = await this.request(`/api/v1/skills?${params}`);
37
+ return response;
38
+ }
39
+ /**
40
+ * Get detailed information about a skill
41
+ */
42
+ async getSkillInfo(name) {
43
+ const response = await this.request(`/api/v1/skills/${encodeURIComponent(name)}`);
44
+ return response;
45
+ }
46
+ /**
47
+ * Get all versions of a skill
48
+ */
49
+ async getVersions(name) {
50
+ const info = await this.getSkillInfo(name);
51
+ return info.versions;
52
+ }
53
+ /**
54
+ * Download a skill tarball
55
+ */
56
+ async download(name, version = 'latest') {
57
+ const url = `${this.registryUrl}/api/v1/skills/${encodeURIComponent(name)}/${version}/download`;
58
+ const response = await this.fetchWithRetry(url, {
59
+ method: 'GET',
60
+ });
61
+ if (!response.ok) {
62
+ await this.handleErrorResponse(response);
63
+ }
64
+ const arrayBuffer = await response.arrayBuffer();
65
+ return Buffer.from(arrayBuffer);
66
+ }
67
+ /**
68
+ * Publish a skill to the registry
69
+ */
70
+ async publish(tarball, options = {}) {
71
+ const token = await getToken(this.registryUrl);
72
+ if (!token) {
73
+ throw new RegistryError('Authentication required. Run `skillpkg login` first.', 'AUTH_REQUIRED', 401);
74
+ }
75
+ const formData = new FormData();
76
+ formData.append('tarball', new Blob([tarball]), 'package.skillpkg');
77
+ if (options.access) {
78
+ formData.append('access', options.access);
79
+ }
80
+ if (options.tag) {
81
+ formData.append('tag', options.tag);
82
+ }
83
+ const response = await this.fetchWithRetry(`${this.registryUrl}/api/v1/publish`, {
84
+ method: 'POST',
85
+ headers: {
86
+ Authorization: `Bearer ${token}`,
87
+ },
88
+ body: formData,
89
+ });
90
+ if (!response.ok) {
91
+ await this.handleErrorResponse(response);
92
+ }
93
+ return (await response.json());
94
+ }
95
+ /**
96
+ * Unpublish a skill version from the registry
97
+ */
98
+ async unpublish(name, version) {
99
+ const token = await getToken(this.registryUrl);
100
+ if (!token) {
101
+ throw new RegistryError('Authentication required. Run `skillpkg login` first.', 'AUTH_REQUIRED', 401);
102
+ }
103
+ const url = version
104
+ ? `/api/v1/skills/${encodeURIComponent(name)}/${version}`
105
+ : `/api/v1/skills/${encodeURIComponent(name)}`;
106
+ const response = await this.fetchWithRetry(`${this.registryUrl}${url}`, {
107
+ method: 'DELETE',
108
+ headers: {
109
+ Authorization: `Bearer ${token}`,
110
+ },
111
+ });
112
+ if (!response.ok) {
113
+ await this.handleErrorResponse(response);
114
+ }
115
+ }
116
+ /**
117
+ * Check if the registry is reachable
118
+ */
119
+ async ping() {
120
+ try {
121
+ const response = await this.fetchWithRetry(`${this.registryUrl}/api/v1/health`, {
122
+ method: 'GET',
123
+ });
124
+ return response.ok;
125
+ }
126
+ catch {
127
+ return false;
128
+ }
129
+ }
130
+ /**
131
+ * Get registry URL
132
+ */
133
+ getRegistryUrl() {
134
+ return this.registryUrl;
135
+ }
136
+ /**
137
+ * Make an authenticated request to the registry
138
+ */
139
+ async request(path, options = {}) {
140
+ const token = await getToken(this.registryUrl);
141
+ const headers = {
142
+ 'Content-Type': 'application/json',
143
+ ...options.headers,
144
+ };
145
+ if (token) {
146
+ headers['Authorization'] = `Bearer ${token}`;
147
+ }
148
+ const response = await this.fetchWithRetry(`${this.registryUrl}${path}`, {
149
+ ...options,
150
+ headers,
151
+ });
152
+ if (!response.ok) {
153
+ await this.handleErrorResponse(response);
154
+ }
155
+ return response.json();
156
+ }
157
+ /**
158
+ * Fetch with retry logic
159
+ */
160
+ async fetchWithRetry(url, options) {
161
+ let lastError = null;
162
+ for (let attempt = 0; attempt < this.retries; attempt++) {
163
+ try {
164
+ const controller = new AbortController();
165
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
166
+ const response = await fetch(url, {
167
+ ...options,
168
+ signal: controller.signal,
169
+ });
170
+ clearTimeout(timeoutId);
171
+ return response;
172
+ }
173
+ catch (error) {
174
+ lastError = error;
175
+ // Don't retry on abort (timeout)
176
+ if (error.name === 'AbortError') {
177
+ throw new RegistryError(`Request timeout after ${this.timeout}ms`, 'TIMEOUT');
178
+ }
179
+ // Wait before retrying
180
+ if (attempt < this.retries - 1) {
181
+ await this.delay(this.retryDelay * (attempt + 1));
182
+ }
183
+ }
184
+ }
185
+ throw new RegistryError(`Network error after ${this.retries} retries: ${lastError?.message}`, 'NETWORK_ERROR');
186
+ }
187
+ /**
188
+ * Handle error responses
189
+ */
190
+ async handleErrorResponse(response) {
191
+ let message = `HTTP ${response.status}: ${response.statusText}`;
192
+ let code = 'HTTP_ERROR';
193
+ try {
194
+ const body = (await response.json());
195
+ if (body.message) {
196
+ message = body.message;
197
+ }
198
+ if (body.code) {
199
+ code = body.code;
200
+ }
201
+ }
202
+ catch {
203
+ // Ignore JSON parse errors
204
+ }
205
+ // Map common status codes to specific error codes
206
+ switch (response.status) {
207
+ case 401:
208
+ code = 'AUTH_REQUIRED';
209
+ break;
210
+ case 403:
211
+ code = 'AUTH_FAILED';
212
+ break;
213
+ case 404:
214
+ code = 'SKILL_NOT_IN_REGISTRY';
215
+ break;
216
+ case 409:
217
+ code = 'VERSION_EXISTS';
218
+ break;
219
+ case 429:
220
+ code = 'RATE_LIMITED';
221
+ break;
222
+ }
223
+ throw new RegistryError(message, code, response.status);
224
+ }
225
+ /**
226
+ * Delay helper
227
+ */
228
+ delay(ms) {
229
+ return new Promise((resolve) => setTimeout(resolve, ms));
230
+ }
231
+ }
232
+ /**
233
+ * Create a new registry client
234
+ */
235
+ export function createRegistryClient(options) {
236
+ return new RegistryClient(options);
237
+ }
238
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Registry module - public API
3
+ */
4
+ export type { SearchOptions, SearchResult, SearchResultItem, SkillInfo, VersionInfo, PublishOptions, PublishResult, } from './types.js';
5
+ export { RegistryError } from './types.js';
6
+ export { RegistryClient, createRegistryClient, DEFAULT_REGISTRY_URL, } from './client.js';
7
+ export type { ClientOptions } from './client.js';
8
+ export { getToken, setToken, removeToken, listTokens, isAuthenticated, getUsername, } from './auth.js';
9
+ export type { AuthToken } from './auth.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Registry module - public API
3
+ */
4
+ export { RegistryError } from './types.js';
5
+ // Client
6
+ export { RegistryClient, createRegistryClient, DEFAULT_REGISTRY_URL, } from './client.js';
7
+ // Auth
8
+ export { getToken, setToken, removeToken, listTokens, isAuthenticated, getUsername, } from './auth.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,SAAS;AACT,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO;AACP,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,WAAW,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Registry client types
3
+ */
4
+ /**
5
+ * Search options
6
+ */
7
+ export interface SearchOptions {
8
+ page?: number;
9
+ limit?: number;
10
+ sort?: 'relevance' | 'downloads' | 'updated' | 'name';
11
+ order?: 'asc' | 'desc';
12
+ }
13
+ /**
14
+ * Search result
15
+ */
16
+ export interface SearchResult {
17
+ query: string;
18
+ total: number;
19
+ page: number;
20
+ limit: number;
21
+ results: SearchResultItem[];
22
+ }
23
+ /**
24
+ * Individual search result item
25
+ */
26
+ export interface SearchResultItem {
27
+ name: string;
28
+ version: string;
29
+ description: string;
30
+ author?: string;
31
+ downloads: number;
32
+ updatedAt: string;
33
+ keywords?: string[];
34
+ }
35
+ /**
36
+ * Skill info from registry
37
+ */
38
+ export interface SkillInfo {
39
+ name: string;
40
+ description: string;
41
+ version: string;
42
+ author?: {
43
+ name: string;
44
+ email?: string;
45
+ url?: string;
46
+ };
47
+ repository?: string;
48
+ homepage?: string;
49
+ license?: string;
50
+ keywords?: string[];
51
+ downloads: {
52
+ total: number;
53
+ weekly: number;
54
+ monthly: number;
55
+ };
56
+ versions: VersionInfo[];
57
+ createdAt: string;
58
+ updatedAt: string;
59
+ }
60
+ /**
61
+ * Version info
62
+ */
63
+ export interface VersionInfo {
64
+ version: string;
65
+ publishedAt: string;
66
+ downloads: number;
67
+ deprecated?: boolean;
68
+ deprecationMessage?: string;
69
+ }
70
+ /**
71
+ * Publish options
72
+ */
73
+ export interface PublishOptions {
74
+ access?: 'public' | 'restricted';
75
+ tag?: string;
76
+ }
77
+ /**
78
+ * Publish result
79
+ */
80
+ export interface PublishResult {
81
+ name: string;
82
+ version: string;
83
+ publishedAt: string;
84
+ url: string;
85
+ }
86
+ /**
87
+ * Registry error
88
+ */
89
+ export declare class RegistryError extends Error {
90
+ readonly code: string;
91
+ readonly statusCode?: number | undefined;
92
+ constructor(message: string, code: string, statusCode?: number | undefined);
93
+ }
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IACtD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAID;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,MAAM;aACZ,UAAU,CAAC,EAAE,MAAM;gBAFnC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,YAAA;CAKtC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Registry client types
3
+ */
4
+ // Note: RegistryConfig is defined in ../types.ts
5
+ /**
6
+ * Registry error
7
+ */
8
+ export class RegistryError extends Error {
9
+ code;
10
+ statusCode;
11
+ constructor(message, code, statusCode) {
12
+ super(message);
13
+ this.code = code;
14
+ this.statusCode = statusCode;
15
+ this.name = 'RegistryError';
16
+ }
17
+ }
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2FH,iDAAiD;AAEjD;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IAHlB,YACE,OAAe,EACC,IAAY,EACZ,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ import type { Config } from '../types.js';
2
+ /**
3
+ * Default configuration
4
+ */
5
+ export declare function getDefaultConfig(): Config;
6
+ /**
7
+ * Load configuration from disk
8
+ */
9
+ export declare function loadConfig(storeDir: string): Promise<Config>;
10
+ /**
11
+ * Save configuration to disk
12
+ */
13
+ export declare function saveConfig(storeDir: string, config: Config): Promise<void>;
14
+ /**
15
+ * Get a specific config value
16
+ */
17
+ export declare function getConfigValue<K extends keyof Config>(storeDir: string, key: K): Promise<Config[K]>;
18
+ /**
19
+ * Set a specific config value
20
+ */
21
+ export declare function setConfigValue<K extends keyof Config>(storeDir: string, key: K, value: Config[K]): Promise<void>;
22
+ /**
23
+ * Update configuration with partial values
24
+ */
25
+ export declare function updateConfig(storeDir: string, updates: Partial<Config>): Promise<void>;
26
+ /**
27
+ * Reset configuration to defaults
28
+ */
29
+ export declare function resetConfig(storeDir: string): Promise<void>;
30
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAezC;AA+BD;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBlE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,MAAM,EACzD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,GACL,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAGpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,MAAM,EACzD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5F;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Configuration management (config.json)
3
+ */
4
+ import { readFile, writeFile, mkdir } from 'fs/promises';
5
+ import { existsSync } from 'fs';
6
+ import { dirname } from 'path';
7
+ import { getConfigPath } from './paths.js';
8
+ /**
9
+ * Default configuration
10
+ */
11
+ export function getDefaultConfig() {
12
+ return {
13
+ registry: 'https://registry.skillpkg.dev',
14
+ registries: {},
15
+ defaultPlatforms: ['claude-code', 'codex', 'copilot', 'cline'],
16
+ autoSync: true,
17
+ ui: {
18
+ port: 3737,
19
+ openBrowser: true,
20
+ },
21
+ mcp: {
22
+ enabled: true,
23
+ port: 3838,
24
+ },
25
+ };
26
+ }
27
+ /**
28
+ * Deep merge two Config objects
29
+ */
30
+ function deepMergeConfig(target, source) {
31
+ const result = { ...target };
32
+ // Merge top-level simple properties
33
+ if (source.registry !== undefined)
34
+ result.registry = source.registry;
35
+ if (source.autoSync !== undefined)
36
+ result.autoSync = source.autoSync;
37
+ if (source.defaultPlatforms !== undefined)
38
+ result.defaultPlatforms = source.defaultPlatforms;
39
+ // Merge registries object
40
+ if (source.registries !== undefined) {
41
+ result.registries = { ...target.registries, ...source.registries };
42
+ }
43
+ // Merge nested ui object
44
+ if (source.ui !== undefined) {
45
+ result.ui = { ...target.ui, ...source.ui };
46
+ }
47
+ // Merge nested mcp object
48
+ if (source.mcp !== undefined) {
49
+ result.mcp = { ...target.mcp, ...source.mcp };
50
+ }
51
+ return result;
52
+ }
53
+ /**
54
+ * Load configuration from disk
55
+ */
56
+ export async function loadConfig(storeDir) {
57
+ const configPath = getConfigPath(storeDir);
58
+ const defaultConfig = getDefaultConfig();
59
+ if (!existsSync(configPath)) {
60
+ return defaultConfig;
61
+ }
62
+ try {
63
+ const content = await readFile(configPath, 'utf-8');
64
+ const userConfig = JSON.parse(content);
65
+ // Merge with defaults
66
+ return deepMergeConfig(defaultConfig, userConfig);
67
+ }
68
+ catch {
69
+ // If file is corrupted, return defaults
70
+ return defaultConfig;
71
+ }
72
+ }
73
+ /**
74
+ * Save configuration to disk
75
+ */
76
+ export async function saveConfig(storeDir, config) {
77
+ const configPath = getConfigPath(storeDir);
78
+ // Ensure directory exists
79
+ await mkdir(dirname(configPath), { recursive: true });
80
+ const content = JSON.stringify(config, null, 2);
81
+ await writeFile(configPath, content, 'utf-8');
82
+ }
83
+ /**
84
+ * Get a specific config value
85
+ */
86
+ export async function getConfigValue(storeDir, key) {
87
+ const config = await loadConfig(storeDir);
88
+ return config[key];
89
+ }
90
+ /**
91
+ * Set a specific config value
92
+ */
93
+ export async function setConfigValue(storeDir, key, value) {
94
+ const config = await loadConfig(storeDir);
95
+ config[key] = value;
96
+ await saveConfig(storeDir, config);
97
+ }
98
+ /**
99
+ * Update configuration with partial values
100
+ */
101
+ export async function updateConfig(storeDir, updates) {
102
+ const config = await loadConfig(storeDir);
103
+ const updatedConfig = deepMergeConfig(config, updates);
104
+ await saveConfig(storeDir, updatedConfig);
105
+ }
106
+ /**
107
+ * Reset configuration to defaults
108
+ */
109
+ export async function resetConfig(storeDir) {
110
+ await saveConfig(storeDir, getDefaultConfig());
111
+ }
112
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,QAAQ,EAAE,+BAA+B;QACzC,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;QAC9D,QAAQ,EAAE,IAAI;QACd,EAAE,EAAE;YACF,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;SAClB;QACD,GAAG,EAAE;YACH,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;SACX;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAc,EAAE,MAAuB;IAC9D,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,oCAAoC;IACpC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACrE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACrE,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;QAAE,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE7F,0BAA0B;IAC1B,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACrE,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;QAE1D,sBAAsB;QACtB,OAAO,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,GAAM;IAEN,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,GAAM,EACN,KAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAwB;IAC3E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,MAAM,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACjD,CAAC"}