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 @@
|
|
|
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":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAYpE;;GAEG;AACH,MAAM,OAAO,cAAc;IACR,WAAW,CAAS;IACpB,OAAO,CAAS;IAChB,OAAO,CAAS;IAChB,UAAU,CAAS;IAEpC,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAyB,EAAE;QACrD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,CAAC,EAAE,KAAK;YACR,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;YAC/B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAChE,OAAO,QAAwB,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,QAAqB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,UAAkB,QAAQ;QACrD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,IAAI,OAAO,WAAW,CAAC;QAChG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YAC9C,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,OAAe,EACf,UAA0B,EAAE;QAE5B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,aAAa,CACrB,sDAAsD,EACtD,eAAe,EACf,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAEpE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,iBAAiB,EAAE;YAC/E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAgB;QAC5C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,aAAa,CACrB,sDAAsD,EACtD,eAAe,EACf,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,OAAO;YACjB,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;YACzD,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,EAAE;YACtE,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,gBAAgB,EAAE;gBAC9E,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,UAAuB,EAAE;QAC3D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,GAAI,OAAO,CAAC,OAAkC;SAC/C,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,EAAE;YACvE,GAAG,OAAO;YACV,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAC1B,GAAW,EACX,OAAoB;QAEpB,IAAI,SAAS,GAAiB,IAAI,CAAC;QAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAErE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAChC,GAAG,OAAO;oBACV,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAc,CAAC;gBAE3B,iCAAiC;gBACjC,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC3C,MAAM,IAAI,aAAa,CACrB,yBAAyB,IAAI,CAAC,OAAO,IAAI,EACzC,SAAS,CACV,CAAC;gBACJ,CAAC;gBAED,uBAAuB;gBACvB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,aAAa,CACrB,uBAAuB,IAAI,CAAC,OAAO,aAAa,SAAS,EAAE,OAAO,EAAE,EACpE,eAAe,CAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,QAAkB;QAClD,IAAI,OAAO,GAAG,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QAChE,IAAI,IAAI,GAAG,YAAY,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwC,CAAC;YAC5E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;QAED,kDAAkD;QAClD,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,GAAG;gBACN,IAAI,GAAG,eAAe,CAAC;gBACvB,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,GAAG,aAAa,CAAC;gBACrB,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,GAAG,uBAAuB,CAAC;gBAC/B,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,GAAG,gBAAgB,CAAC;gBACxB,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,GAAG,cAAc,CAAC;gBACtB,MAAM;QACV,CAAC;QAED,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAuB;IAC1D,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -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":"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"}
|