clawdhub 0.0.1 → 0.0.4
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/bin/clawdhub.js +0 -0
- package/dist/cli/commands/auth.js +1 -1
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/delete.d.ts +11 -0
- package/dist/cli/commands/delete.js +65 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/delete.test.d.ts +1 -0
- package/dist/cli/commands/delete.test.js +52 -0
- package/dist/cli/commands/delete.test.js.map +1 -0
- package/dist/cli/commands/publish.js +1 -5
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/cli/commands/publish.test.js +23 -4
- package/dist/cli/commands/publish.test.js.map +1 -1
- package/dist/cli/commands/skills.js +1 -1
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +1 -0
- package/dist/cli/commands/sync.js +316 -123
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/sync.test.js +161 -25
- package/dist/cli/commands/sync.test.js.map +1 -1
- package/dist/cli/registry.js +23 -8
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli/registry.test.d.ts +1 -0
- package/dist/cli/registry.test.js +48 -0
- package/dist/cli/registry.test.js.map +1 -0
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli.js +28 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/discovery.js +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/http.d.ts +1 -1
- package/dist/http.js +1 -1
- package/dist/http.js.map +1 -1
- package/dist/http.test.js +1 -1
- package/dist/http.test.js.map +1 -1
- package/dist/schema/ark.d.ts +4 -0
- package/dist/schema/ark.js +26 -0
- package/dist/schema/ark.js.map +1 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.js +5 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/routes.d.ts +12 -0
- package/dist/schema/routes.js +13 -0
- package/dist/schema/routes.js.map +1 -0
- package/dist/schema/schemas.d.ts +151 -0
- package/dist/schema/schemas.js +118 -0
- package/dist/schema/schemas.js.map +1 -0
- package/dist/schema/textFiles.d.ts +5 -0
- package/dist/schema/textFiles.js +66 -0
- package/dist/schema/textFiles.js.map +1 -0
- package/dist/skills.d.ts +1 -1
- package/dist/skills.js +1 -1
- package/dist/skills.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,12 +2,22 @@
|
|
|
2
2
|
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
3
3
|
const mockIntro = vi.fn();
|
|
4
4
|
const mockOutro = vi.fn();
|
|
5
|
-
const
|
|
5
|
+
const mockLog = vi.fn();
|
|
6
|
+
const mockMultiselect = vi.fn(async (_args) => []);
|
|
7
|
+
let interactive = false;
|
|
8
|
+
const defaultFindSkillFolders = async (root) => {
|
|
9
|
+
if (!root.endsWith('/scan'))
|
|
10
|
+
return [];
|
|
11
|
+
return [
|
|
12
|
+
{ folder: '/scan/new-skill', slug: 'new-skill', displayName: 'New Skill' },
|
|
13
|
+
{ folder: '/scan/synced-skill', slug: 'synced-skill', displayName: 'Synced Skill' },
|
|
14
|
+
{ folder: '/scan/update-skill', slug: 'update-skill', displayName: 'Update Skill' },
|
|
15
|
+
];
|
|
16
|
+
};
|
|
6
17
|
vi.mock('@clack/prompts', () => ({
|
|
7
18
|
intro: (value) => mockIntro(value),
|
|
8
19
|
outro: (value) => mockOutro(value),
|
|
9
|
-
|
|
10
|
-
multiselect: vi.fn(async () => []),
|
|
20
|
+
multiselect: (args) => mockMultiselect(args),
|
|
11
21
|
text: vi.fn(async () => ''),
|
|
12
22
|
isCancel: () => false,
|
|
13
23
|
}));
|
|
@@ -30,18 +40,10 @@ vi.mock('../ui.js', () => ({
|
|
|
30
40
|
createSpinner: vi.fn(() => mockSpinner),
|
|
31
41
|
fail: (message) => mockFail(message),
|
|
32
42
|
formatError: (error) => (error instanceof Error ? error.message : String(error)),
|
|
33
|
-
isInteractive: () =>
|
|
43
|
+
isInteractive: () => interactive,
|
|
34
44
|
}));
|
|
35
45
|
vi.mock('../scanSkills.js', () => ({
|
|
36
|
-
findSkillFolders: vi.fn(
|
|
37
|
-
if (!root.endsWith('/scan'))
|
|
38
|
-
return [];
|
|
39
|
-
return [
|
|
40
|
-
{ folder: '/scan/new-skill', slug: 'new-skill', displayName: 'New Skill' },
|
|
41
|
-
{ folder: '/scan/synced-skill', slug: 'synced-skill', displayName: 'Synced Skill' },
|
|
42
|
-
{ folder: '/scan/update-skill', slug: 'update-skill', displayName: 'Update Skill' },
|
|
43
|
-
];
|
|
44
|
-
}),
|
|
46
|
+
findSkillFolders: vi.fn(defaultFindSkillFolders),
|
|
45
47
|
getFallbackSkillRoots: vi.fn(() => []),
|
|
46
48
|
}));
|
|
47
49
|
vi.mock('../../skills.js', async () => {
|
|
@@ -64,28 +66,31 @@ function makeOpts() {
|
|
|
64
66
|
dir: '/work/skills',
|
|
65
67
|
site: 'https://clawdhub.com',
|
|
66
68
|
registry: 'https://clawdhub.com',
|
|
69
|
+
registrySource: 'default',
|
|
67
70
|
};
|
|
68
71
|
}
|
|
69
|
-
afterEach(() => {
|
|
72
|
+
afterEach(async () => {
|
|
70
73
|
vi.clearAllMocks();
|
|
74
|
+
const { findSkillFolders } = await import('../scanSkills.js');
|
|
75
|
+
vi.mocked(findSkillFolders).mockImplementation(defaultFindSkillFolders);
|
|
76
|
+
});
|
|
77
|
+
vi.spyOn(console, 'log').mockImplementation((...args) => {
|
|
78
|
+
mockLog(args.map(String).join(' '));
|
|
71
79
|
});
|
|
72
80
|
describe('cmdSync', () => {
|
|
73
81
|
it('classifies skills as new/update/synced (dry-run, mocked HTTP)', async () => {
|
|
82
|
+
interactive = false;
|
|
74
83
|
mockApiRequest.mockImplementation(async (_registry, args) => {
|
|
75
84
|
if (args.path === '/api/cli/whoami')
|
|
76
85
|
return { user: { handle: 'steipete' } };
|
|
77
|
-
if (args.path
|
|
78
|
-
|
|
79
|
-
if (slug === 'new-skill')
|
|
80
|
-
return { latestVersion: undefined, skill: null };
|
|
81
|
-
if (slug === 'synced-skill')
|
|
82
|
-
return { latestVersion: { version: '1.2.3' }, skill: {} };
|
|
83
|
-
if (slug === 'update-skill')
|
|
84
|
-
return { latestVersion: { version: '1.0.0' }, skill: {} };
|
|
85
|
-
}
|
|
86
|
+
if (args.path === '/api/cli/telemetry/sync')
|
|
87
|
+
return { ok: true };
|
|
86
88
|
if (args.path.startsWith('/api/skill/resolve?')) {
|
|
87
89
|
const u = new URL(`https://x.test${args.path}`);
|
|
88
90
|
const slug = u.searchParams.get('slug');
|
|
91
|
+
if (slug === 'new-skill') {
|
|
92
|
+
throw new Error('Skill not found');
|
|
93
|
+
}
|
|
89
94
|
if (slug === 'synced-skill') {
|
|
90
95
|
return { match: { version: '1.2.3' }, latestVersion: { version: '1.2.3' } };
|
|
91
96
|
}
|
|
@@ -97,10 +102,141 @@ describe('cmdSync', () => {
|
|
|
97
102
|
});
|
|
98
103
|
await cmdSync(makeOpts(), { root: ['/scan'], all: true, dryRun: true }, true);
|
|
99
104
|
expect(mockCmdPublish).not.toHaveBeenCalled();
|
|
100
|
-
const
|
|
101
|
-
expect(
|
|
105
|
+
const output = mockLog.mock.calls.map((call) => String(call[0])).join('\n');
|
|
106
|
+
expect(output).toMatch(/Already synced/);
|
|
107
|
+
expect(output).toMatch(/synced-skill/);
|
|
102
108
|
const dryRunOutro = mockOutro.mock.calls.at(-1)?.[0];
|
|
103
109
|
expect(String(dryRunOutro)).toMatch(/Dry run: would upload 2 skill/);
|
|
104
110
|
});
|
|
111
|
+
it('prints bullet lists and selects all actionable by default', async () => {
|
|
112
|
+
interactive = true;
|
|
113
|
+
mockMultiselect.mockImplementation(async (args) => {
|
|
114
|
+
const { initialValues } = args;
|
|
115
|
+
return initialValues;
|
|
116
|
+
});
|
|
117
|
+
mockApiRequest.mockImplementation(async (_registry, args) => {
|
|
118
|
+
if (args.path === '/api/cli/whoami')
|
|
119
|
+
return { user: { handle: 'steipete' } };
|
|
120
|
+
if (args.path === '/api/cli/telemetry/sync')
|
|
121
|
+
return { ok: true };
|
|
122
|
+
if (args.path.startsWith('/api/skill/resolve?')) {
|
|
123
|
+
const u = new URL(`https://x.test${args.path}`);
|
|
124
|
+
const slug = u.searchParams.get('slug');
|
|
125
|
+
if (slug === 'new-skill') {
|
|
126
|
+
throw new Error('Skill not found');
|
|
127
|
+
}
|
|
128
|
+
if (slug === 'synced-skill') {
|
|
129
|
+
return { match: { version: '1.2.3' }, latestVersion: { version: '1.2.3' } };
|
|
130
|
+
}
|
|
131
|
+
if (slug === 'update-skill') {
|
|
132
|
+
return { match: null, latestVersion: { version: '1.0.0' } };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
throw new Error(`Unexpected apiRequest: ${args.path}`);
|
|
136
|
+
});
|
|
137
|
+
await cmdSync(makeOpts(), { root: ['/scan'], all: false, dryRun: false, bump: 'patch' }, true);
|
|
138
|
+
const output = mockLog.mock.calls.map((call) => String(call[0])).join('\n');
|
|
139
|
+
expect(output).toMatch(/To sync/);
|
|
140
|
+
expect(output).toMatch(/- new-skill/);
|
|
141
|
+
expect(output).toMatch(/- update-skill/);
|
|
142
|
+
expect(output).toMatch(/Already synced/);
|
|
143
|
+
expect(output).toMatch(/- synced-skill/);
|
|
144
|
+
const lastCall = mockMultiselect.mock.calls.at(-1);
|
|
145
|
+
const promptArgs = lastCall ? lastCall[0] : undefined;
|
|
146
|
+
expect(promptArgs?.initialValues.length).toBe(2);
|
|
147
|
+
expect(mockCmdPublish).toHaveBeenCalledTimes(2);
|
|
148
|
+
});
|
|
149
|
+
it('shows condensed synced list when nothing to sync', async () => {
|
|
150
|
+
interactive = false;
|
|
151
|
+
mockApiRequest.mockImplementation(async (_registry, args) => {
|
|
152
|
+
if (args.path === '/api/cli/whoami')
|
|
153
|
+
return { user: { handle: 'steipete' } };
|
|
154
|
+
if (args.path === '/api/cli/telemetry/sync')
|
|
155
|
+
return { ok: true };
|
|
156
|
+
if (args.path.startsWith('/api/skill/resolve?')) {
|
|
157
|
+
return { match: { version: '1.0.0' }, latestVersion: { version: '1.0.0' } };
|
|
158
|
+
}
|
|
159
|
+
throw new Error(`Unexpected apiRequest: ${args.path}`);
|
|
160
|
+
});
|
|
161
|
+
await cmdSync(makeOpts(), { root: ['/scan'], all: true, dryRun: false }, true);
|
|
162
|
+
const output = mockLog.mock.calls.map((call) => String(call[0])).join('\n');
|
|
163
|
+
expect(output).toMatch(/Already synced/);
|
|
164
|
+
expect(output).toMatch(/new-skill@1.0.0/);
|
|
165
|
+
expect(output).toMatch(/synced-skill@1.0.0/);
|
|
166
|
+
expect(output).not.toMatch(/\n-/);
|
|
167
|
+
const outro = mockOutro.mock.calls.at(-1)?.[0];
|
|
168
|
+
expect(String(outro)).toMatch(/Nothing to sync/);
|
|
169
|
+
});
|
|
170
|
+
it('dedupes duplicate slugs before publishing', async () => {
|
|
171
|
+
interactive = false;
|
|
172
|
+
const { findSkillFolders } = await import('../scanSkills.js');
|
|
173
|
+
vi.mocked(findSkillFolders).mockImplementation(async (root) => {
|
|
174
|
+
if (!root.endsWith('/scan'))
|
|
175
|
+
return [];
|
|
176
|
+
return [
|
|
177
|
+
{ folder: '/scan/dup-skill', slug: 'dup-skill', displayName: 'Dup Skill' },
|
|
178
|
+
{ folder: '/scan/dup-skill-copy', slug: 'dup-skill', displayName: 'Dup Skill' },
|
|
179
|
+
];
|
|
180
|
+
});
|
|
181
|
+
mockApiRequest.mockImplementation(async (_registry, args) => {
|
|
182
|
+
if (args.path === '/api/cli/whoami')
|
|
183
|
+
return { user: { handle: 'steipete' } };
|
|
184
|
+
if (args.path === '/api/cli/telemetry/sync')
|
|
185
|
+
return { ok: true };
|
|
186
|
+
if (args.path.startsWith('/api/skill/resolve?')) {
|
|
187
|
+
return { match: null, latestVersion: null };
|
|
188
|
+
}
|
|
189
|
+
throw new Error(`Unexpected apiRequest: ${args.path}`);
|
|
190
|
+
});
|
|
191
|
+
await cmdSync(makeOpts(), { root: ['/scan'], all: true, dryRun: false }, true);
|
|
192
|
+
expect(mockCmdPublish).toHaveBeenCalledTimes(1);
|
|
193
|
+
const output = mockLog.mock.calls.map((call) => String(call[0])).join('\n');
|
|
194
|
+
expect(output).toMatch(/Skipped duplicate slugs/);
|
|
195
|
+
expect(output).toMatch(/dup-skill/);
|
|
196
|
+
});
|
|
197
|
+
it('allows empty changelog for updates (interactive)', async () => {
|
|
198
|
+
interactive = true;
|
|
199
|
+
mockApiRequest.mockImplementation(async (_registry, args) => {
|
|
200
|
+
if (args.path === '/api/cli/whoami')
|
|
201
|
+
return { user: { handle: 'steipete' } };
|
|
202
|
+
if (args.path === '/api/cli/telemetry/sync')
|
|
203
|
+
return { ok: true };
|
|
204
|
+
if (args.path.startsWith('/api/skill/resolve?')) {
|
|
205
|
+
const u = new URL(`https://x.test${args.path}`);
|
|
206
|
+
const slug = u.searchParams.get('slug');
|
|
207
|
+
if (slug === 'new-skill') {
|
|
208
|
+
throw new Error('Skill not found');
|
|
209
|
+
}
|
|
210
|
+
if (slug === 'synced-skill') {
|
|
211
|
+
return { match: { version: '1.2.3' }, latestVersion: { version: '1.2.3' } };
|
|
212
|
+
}
|
|
213
|
+
if (slug === 'update-skill') {
|
|
214
|
+
return { match: null, latestVersion: { version: '1.0.0' } };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
throw new Error(`Unexpected apiRequest: ${args.path}`);
|
|
218
|
+
});
|
|
219
|
+
await cmdSync(makeOpts(), { root: ['/scan'], all: true, dryRun: false, bump: 'patch' }, true);
|
|
220
|
+
const calls = mockCmdPublish.mock.calls.map((call) => call[2]);
|
|
221
|
+
const update = calls.find((c) => c.slug === 'update-skill');
|
|
222
|
+
if (!update)
|
|
223
|
+
throw new Error('Missing update-skill publish');
|
|
224
|
+
expect(update.changelog).toBe('');
|
|
225
|
+
});
|
|
226
|
+
it('skips telemetry when CLAWDHUB_DISABLE_TELEMETRY is set', async () => {
|
|
227
|
+
interactive = false;
|
|
228
|
+
process.env.CLAWDHUB_DISABLE_TELEMETRY = '1';
|
|
229
|
+
mockApiRequest.mockImplementation(async (_registry, args) => {
|
|
230
|
+
if (args.path === '/api/cli/whoami')
|
|
231
|
+
return { user: { handle: 'steipete' } };
|
|
232
|
+
if (args.path.startsWith('/api/skill/resolve?')) {
|
|
233
|
+
return { match: { version: '1.0.0' }, latestVersion: { version: '1.0.0' } };
|
|
234
|
+
}
|
|
235
|
+
throw new Error(`Unexpected apiRequest: ${args.path}`);
|
|
236
|
+
});
|
|
237
|
+
await cmdSync(makeOpts(), { root: ['/scan'], all: true, dryRun: true }, true);
|
|
238
|
+
expect(mockApiRequest.mock.calls.some((call) => call[1]?.path === '/api/cli/telemetry/sync')).toBe(false);
|
|
239
|
+
delete process.env.CLAWDHUB_DISABLE_TELEMETRY;
|
|
240
|
+
});
|
|
105
241
|
});
|
|
106
242
|
//# sourceMappingURL=sync.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.test.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAG5D,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AACzB,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AACzB,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AACvB,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAe,EAAE,EAAE,CAAC,EAAc,CAAC,CAAA;AACxE,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB,MAAM,uBAAuB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,OAAO;QACL,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE;QAC1E,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;QACnF,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;KACpF,CAAA;AACH,CAAC,CAAA;AAED,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IAC1C,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IAC1C,WAAW,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;IACrD,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;CACtB,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;CAC1F,CAAC,CAAC,CAAA;AAEH,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,sBAAsB,CAAC,CAAA;AACjE,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,WAAW,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE;CACrC,CAAC,CAAC,CAAA;AAEH,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AAC9B,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,UAAU,EAAE,CAAC,QAAiB,EAAE,IAAa,EAAE,MAAgB,EAAE,EAAE,CACjE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;CACzC,CAAC,CAAC,CAAA;AAEH,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAe,EAAE,EAAE;IACzC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC,CAAC,CAAA;AACF,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;AACtE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACzB,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;IACvC,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC5C,WAAW,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzF,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW;CACjC,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC;IAChD,qBAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;CACvC,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAmC,iBAAiB,CAAC,CAAA;IACzF,OAAO;QACL,GAAG,MAAM;QACT,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE,CAAC;YAC7C,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;SACjE,CAAC;KACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AAC9B,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CAC5D,CAAC,CAAC,CAAA;AAEH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;AAE1C,SAAS,QAAQ;IACf,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,sBAAsB;QAChC,cAAc,EAAE,SAAS;KAC1B,CAAA;AACH,CAAC;AAED,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,EAAE,CAAC,aAAa,EAAE,CAAA;IAClB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC7D,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAA;AACzE,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE;IACtD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACrC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,WAAW,GAAG,KAAK,CAAA;QACnB,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAsB,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAA;YAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;YAChE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACvC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACpC,CAAC;gBACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;gBAC7E,CAAC;gBACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;gBAC7D,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;QAE7E,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAEtC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,WAAW,GAAG,IAAI,CAAA;QAClB,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAc,EAAE,EAAE;YAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,IAAmC,CAAA;YAC7D,OAAO,aAAa,CAAA;QACtB,CAAC,CAAC,CAAA;QACF,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAsB,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAA;YAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;YAChE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACvC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACpC,CAAC;gBACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;gBAC7E,CAAC;gBACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;gBAC7D,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;QAE9F,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAExC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAiC,CAAC,CAAC,CAAC,SAAS,CAAA;QACtF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,WAAW,GAAG,KAAK,CAAA;QACnB,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAsB,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAA;YAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;YAChE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAChD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;YAC7E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA;QAE9E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEjC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,WAAW,GAAG,KAAK,CAAA;QACnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC7D,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;YACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,EAAE,CAAA;YACtC,OAAO;gBACL,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE;gBAC1E,EAAE,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE;aAChF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAsB,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAA;YAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;YAChE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAChD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;YAC7C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA;QAE9E,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,WAAW,GAAG,IAAI,CAAA;QAClB,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAsB,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAA;YAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;YAChE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACvC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACpC,CAAC;gBACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;gBAC7E,CAAC;gBACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;gBAC7D,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;QAE7F,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACzC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAwC,CACzD,CAAA;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;QAC3D,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC5D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,WAAW,GAAG,KAAK,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,GAAG,CAAA;QAC5C,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAsB,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAA;YAC5E,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAChD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAA;YAC7E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7E,MAAM,CACJ,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,yBAAyB,CAAC,CACtF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/cli/registry.js
CHANGED
|
@@ -2,16 +2,20 @@ import { readGlobalConfig, writeGlobalConfig } from '../config.js';
|
|
|
2
2
|
import { discoverRegistryFromSite } from '../discovery.js';
|
|
3
3
|
export const DEFAULT_SITE = 'https://clawdhub.com';
|
|
4
4
|
export const DEFAULT_REGISTRY = 'https://clawdhub.com';
|
|
5
|
+
const LEGACY_REGISTRY_HOSTS = new Set(['auth.clawdhub.com']);
|
|
5
6
|
export async function resolveRegistry(opts) {
|
|
6
|
-
const
|
|
7
|
-
if (
|
|
8
|
-
return cfg.registry;
|
|
9
|
-
const explicit = opts.registry.trim();
|
|
10
|
-
if (explicit && explicit !== DEFAULT_REGISTRY)
|
|
7
|
+
const explicit = opts.registrySource !== 'default' ? opts.registry.trim() : '';
|
|
8
|
+
if (explicit)
|
|
11
9
|
return explicit;
|
|
12
10
|
const discovery = await discoverRegistryFromSite(opts.site).catch(() => null);
|
|
13
11
|
const discovered = discovery?.apiBase?.trim();
|
|
14
|
-
|
|
12
|
+
if (discovered)
|
|
13
|
+
return discovered;
|
|
14
|
+
const cfg = await readGlobalConfig();
|
|
15
|
+
const cached = cfg?.registry?.trim();
|
|
16
|
+
if (cached && !isLegacyRegistry(cached))
|
|
17
|
+
return cached;
|
|
18
|
+
return DEFAULT_REGISTRY;
|
|
15
19
|
}
|
|
16
20
|
export async function getRegistry(opts, params) {
|
|
17
21
|
const cache = params?.cache !== false;
|
|
@@ -19,9 +23,20 @@ export async function getRegistry(opts, params) {
|
|
|
19
23
|
if (!cache)
|
|
20
24
|
return registry;
|
|
21
25
|
const cfg = await readGlobalConfig();
|
|
22
|
-
|
|
26
|
+
const cached = cfg?.registry?.trim();
|
|
27
|
+
const shouldUpdate = !cached ||
|
|
28
|
+
isLegacyRegistry(cached) ||
|
|
29
|
+
(cached === DEFAULT_REGISTRY && registry !== DEFAULT_REGISTRY);
|
|
30
|
+
if (shouldUpdate)
|
|
23
31
|
await writeGlobalConfig({ registry, token: cfg?.token });
|
|
24
|
-
}
|
|
25
32
|
return registry;
|
|
26
33
|
}
|
|
34
|
+
function isLegacyRegistry(registry) {
|
|
35
|
+
try {
|
|
36
|
+
return LEGACY_REGISTRY_HOSTS.has(new URL(registry).hostname);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
27
42
|
//# sourceMappingURL=registry.js.map
|
package/dist/cli/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAG1D,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAA;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAG1D,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAA;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAA;AACtD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAA;AAE5D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAgB;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC7E,MAAM,UAAU,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IAEjC,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACpC,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IACtD,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,MAA4B;IAC9E,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,KAAK,KAAK,CAAA;IACrC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAA;IAC3B,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACpC,MAAM,YAAY,GAChB,CAAC,MAAM;QACP,gBAAgB,CAAC,MAAM,CAAC;QACxB,CAAC,MAAM,KAAK,gBAAgB,IAAI,QAAQ,KAAK,gBAAgB,CAAC,CAAA;IAChE,IAAI,YAAY;QAAE,MAAM,iBAAiB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1E,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* @vitest-environment node */
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
const readGlobalConfig = vi.fn();
|
|
4
|
+
const writeGlobalConfig = vi.fn();
|
|
5
|
+
const discoverRegistryFromSite = vi.fn();
|
|
6
|
+
vi.mock('../config.js', () => ({
|
|
7
|
+
readGlobalConfig: (...args) => readGlobalConfig(...args),
|
|
8
|
+
writeGlobalConfig: (...args) => writeGlobalConfig(...args),
|
|
9
|
+
}));
|
|
10
|
+
vi.mock('../discovery.js', () => ({
|
|
11
|
+
discoverRegistryFromSite: (...args) => discoverRegistryFromSite(...args),
|
|
12
|
+
}));
|
|
13
|
+
const { DEFAULT_REGISTRY, getRegistry, resolveRegistry } = await import('./registry');
|
|
14
|
+
function makeOpts(overrides = {}) {
|
|
15
|
+
return {
|
|
16
|
+
workdir: '/work',
|
|
17
|
+
dir: '/work/skills',
|
|
18
|
+
site: 'https://clawdhub.com',
|
|
19
|
+
registry: DEFAULT_REGISTRY,
|
|
20
|
+
registrySource: 'default',
|
|
21
|
+
...overrides,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
readGlobalConfig.mockReset();
|
|
26
|
+
writeGlobalConfig.mockReset();
|
|
27
|
+
discoverRegistryFromSite.mockReset();
|
|
28
|
+
});
|
|
29
|
+
describe('registry resolution', () => {
|
|
30
|
+
it('prefers explicit registry over discovery/cache', async () => {
|
|
31
|
+
readGlobalConfig.mockResolvedValue({ registry: 'https://auth.clawdhub.com' });
|
|
32
|
+
discoverRegistryFromSite.mockResolvedValue({ apiBase: 'https://clawdhub.com' });
|
|
33
|
+
const registry = await resolveRegistry(makeOpts({ registry: 'https://custom.example', registrySource: 'cli' }));
|
|
34
|
+
expect(registry).toBe('https://custom.example');
|
|
35
|
+
expect(discoverRegistryFromSite).not.toHaveBeenCalled();
|
|
36
|
+
});
|
|
37
|
+
it('ignores legacy registry and updates cache from discovery', async () => {
|
|
38
|
+
readGlobalConfig.mockResolvedValue({ registry: 'https://auth.clawdhub.com', token: 'tkn' });
|
|
39
|
+
discoverRegistryFromSite.mockResolvedValue({ apiBase: 'https://clawdhub.com' });
|
|
40
|
+
const registry = await getRegistry(makeOpts(), { cache: true });
|
|
41
|
+
expect(registry).toBe('https://clawdhub.com');
|
|
42
|
+
expect(writeGlobalConfig).toHaveBeenCalledWith({
|
|
43
|
+
registry: 'https://clawdhub.com',
|
|
44
|
+
token: 'tkn',
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/cli/registry.test.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAG7D,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AACjC,MAAM,wBAAwB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;AAExC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,gBAAgB,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IACnE,iBAAiB,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;CACtE,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,wBAAwB,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;CACpF,CAAC,CAAC,CAAA;AAEH,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;AAErF,SAAS,QAAQ,CAAC,YAAiC,EAAE;IACnD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,gBAAgB;QAC1B,cAAc,EAAE,SAAS;QACzB,GAAG,SAAS;KACb,CAAA;AACH,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,gBAAgB,CAAC,SAAS,EAAE,CAAA;IAC5B,iBAAiB,CAAC,SAAS,EAAE,CAAA;IAC7B,wBAAwB,CAAC,SAAS,EAAE,CAAA;AACtC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,CAAC,CAAA;QAC7E,wBAAwB,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAA;QAE/E,MAAM,QAAQ,GAAG,MAAM,eAAe,CACpC,QAAQ,CAAC,EAAE,QAAQ,EAAE,wBAAwB,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CACxE,CAAA;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAC/C,MAAM,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3F,wBAAwB,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAA;QAE/E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAC7C,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;YAC7C,QAAQ,EAAE,sBAAsB;YAChC,KAAK,EAAE,KAAK;SACb,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/cli/types.d.ts
CHANGED
package/dist/cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import { resolve } from 'node:path';
|
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import { getCliBuildLabel, getCliVersion } from './cli/buildInfo.js';
|
|
5
5
|
import { cmdLoginFlow, cmdLogout, cmdWhoami } from './cli/commands/auth.js';
|
|
6
|
+
import { cmdDeleteSkill, cmdUndeleteSkill } from './cli/commands/delete.js';
|
|
6
7
|
import { cmdPublish } from './cli/commands/publish.js';
|
|
7
8
|
import { cmdInstall, cmdList, cmdSearch, cmdUpdate } from './cli/commands/skills.js';
|
|
8
9
|
import { cmdSync } from './cli/commands/sync.js';
|
|
@@ -13,7 +14,7 @@ import { readGlobalConfig } from './config.js';
|
|
|
13
14
|
const program = new Command()
|
|
14
15
|
.name('clawdhub')
|
|
15
16
|
.description(`${styleTitle(`ClawdHub CLI ${getCliBuildLabel()}`)}\n${styleEnvBlock('install, update, search, and publish agent skills.')}`)
|
|
16
|
-
.version(getCliVersion(), '-V, --version', 'Show version')
|
|
17
|
+
.version(getCliVersion(), '-V, --cli-version', 'Show CLI version')
|
|
17
18
|
.option('--workdir <dir>', 'Working directory (default: cwd)')
|
|
18
19
|
.option('--dir <dir>', 'Skills directory (relative to workdir, default: skills)')
|
|
19
20
|
.option('--site <url>', 'Site base URL (for browser login)')
|
|
@@ -28,8 +29,9 @@ function resolveGlobalOpts() {
|
|
|
28
29
|
const workdir = resolve(raw.workdir ?? process.cwd());
|
|
29
30
|
const dir = resolve(workdir, raw.dir ?? 'skills');
|
|
30
31
|
const site = raw.site ?? process.env.CLAWDHUB_SITE ?? DEFAULT_SITE;
|
|
32
|
+
const registrySource = raw.registry ? 'cli' : process.env.CLAWDHUB_REGISTRY ? 'env' : 'default';
|
|
31
33
|
const registry = raw.registry ?? process.env.CLAWDHUB_REGISTRY ?? DEFAULT_REGISTRY;
|
|
32
|
-
return { workdir, dir, site, registry };
|
|
34
|
+
return { workdir, dir, site, registry, registrySource };
|
|
33
35
|
}
|
|
34
36
|
function isInputAllowed() {
|
|
35
37
|
const globalFlags = program.opts();
|
|
@@ -139,6 +141,24 @@ program
|
|
|
139
141
|
const opts = resolveGlobalOpts();
|
|
140
142
|
await cmdPublish(opts, folder, options);
|
|
141
143
|
});
|
|
144
|
+
program
|
|
145
|
+
.command('delete')
|
|
146
|
+
.description('Soft-delete a skill (owner/admin only)')
|
|
147
|
+
.argument('<slug>', 'Skill slug')
|
|
148
|
+
.option('--yes', 'Skip confirmation')
|
|
149
|
+
.action(async (slug, options) => {
|
|
150
|
+
const opts = resolveGlobalOpts();
|
|
151
|
+
await cmdDeleteSkill(opts, slug, options, isInputAllowed());
|
|
152
|
+
});
|
|
153
|
+
program
|
|
154
|
+
.command('undelete')
|
|
155
|
+
.description('Restore a soft-deleted skill (owner/admin only)')
|
|
156
|
+
.argument('<slug>', 'Skill slug')
|
|
157
|
+
.option('--yes', 'Skip confirmation')
|
|
158
|
+
.action(async (slug, options) => {
|
|
159
|
+
const opts = resolveGlobalOpts();
|
|
160
|
+
await cmdUndeleteSkill(opts, slug, options, isInputAllowed());
|
|
161
|
+
});
|
|
142
162
|
program
|
|
143
163
|
.command('sync')
|
|
144
164
|
.description('Scan local skills and publish new/updated ones')
|
|
@@ -148,11 +168,16 @@ program
|
|
|
148
168
|
.option('--bump <type>', 'Version bump for updates (patch|minor|major)', 'patch')
|
|
149
169
|
.option('--changelog <text>', 'Changelog to use for updates (non-interactive)')
|
|
150
170
|
.option('--tags <tags>', 'Comma-separated tags', 'latest')
|
|
171
|
+
.option('--concurrency <n>', 'Concurrent registry checks (default: 4)', '4')
|
|
151
172
|
.action(async (options) => {
|
|
152
173
|
const opts = resolveGlobalOpts();
|
|
153
174
|
const bump = String(options.bump ?? 'patch');
|
|
154
175
|
if (!['patch', 'minor', 'major'].includes(bump))
|
|
155
176
|
fail('--bump must be patch|minor|major');
|
|
177
|
+
const concurrencyRaw = Number(options.concurrency ?? 4);
|
|
178
|
+
const concurrency = Number.isFinite(concurrencyRaw) ? Math.round(concurrencyRaw) : 4;
|
|
179
|
+
if (concurrency < 1 || concurrency > 32)
|
|
180
|
+
fail('--concurrency must be between 1 and 32');
|
|
156
181
|
await cmdSync(opts, {
|
|
157
182
|
root: options.root,
|
|
158
183
|
all: options.all,
|
|
@@ -160,6 +185,7 @@ program
|
|
|
160
185
|
bump,
|
|
161
186
|
changelog: options.changelog,
|
|
162
187
|
tags: options.tags,
|
|
188
|
+
concurrency,
|
|
163
189
|
}, isInputAllowed());
|
|
164
190
|
});
|
|
165
191
|
program.action(async () => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACtF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CACV,GAAG,UAAU,CAAC,gBAAgB,gBAAgB,EAAE,EAAE,CAAC,KAAK,aAAa,CACnE,oDAAoD,CACrD,EAAE,CACJ;KACA,OAAO,CAAC,aAAa,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GlobalConfig } from '
|
|
1
|
+
import { type GlobalConfig } from './schema/index.js';
|
|
2
2
|
export declare function getGlobalConfigPath(): string;
|
|
3
3
|
export declare function readGlobalConfig(): Promise<GlobalConfig | null>;
|
|
4
4
|
export declare function writeGlobalConfig(config: GlobalConfig): Promise<void>;
|
package/dist/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, join, resolve } from 'node:path';
|
|
4
|
-
import { GlobalConfigSchema, parseArk } from '
|
|
4
|
+
import { GlobalConfigSchema, parseArk } from './schema/index.js';
|
|
5
5
|
export function getGlobalConfigPath() {
|
|
6
6
|
const override = process.env.CLAWDHUB_CONFIG_PATH?.trim();
|
|
7
7
|
if (override)
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAqB,kBAAkB,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAqB,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEnF,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAA;IACzD,IAAI,QAAQ;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IACtB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IAChF,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IACvC,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAA;QACnC,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAA;QACzC,OAAO,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAoB;IAC1D,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAA;IAClC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AACvE,CAAC"}
|
package/dist/discovery.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseArk, WellKnownConfigSchema } from '
|
|
1
|
+
import { parseArk, WellKnownConfigSchema } from './schema/index.js';
|
|
2
2
|
export async function discoverRegistryFromSite(siteUrl) {
|
|
3
3
|
const url = new URL('/.well-known/clawdhub.json', siteUrl);
|
|
4
4
|
const response = await fetch(url.toString(), {
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEnE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAe;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC3C,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAA;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IAC7B,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAY,CAAA;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAA;IACvE,MAAM,OAAO,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAA;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAA;AACH,CAAC"}
|
package/dist/http.d.ts
CHANGED
package/dist/http.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ApiRoutes, parseArk } from 'clawdhub-schema';
|
|
2
1
|
import pRetry, { AbortError } from 'p-retry';
|
|
2
|
+
import { ApiRoutes, parseArk } from './schema/index.js';
|
|
3
3
|
export async function apiRequest(registry, args, schema) {
|
|
4
4
|
const url = 'url' in args ? args.url : new URL(args.path, registry).toString();
|
|
5
5
|
const json = await pRetry(async () => {
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAYvD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAgB,EAChB,IAAiB,EACjB,MAAwB;IAExB,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC9E,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;QACtE,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAA;QAC9D,IAAI,IAAwB,CAAA;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;YAC5C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QACxC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,OAAO,GAAG,IAAI,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAA;YACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC;YACD,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAY,CAAA;IAC3C,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,EAAE,CACf,CAAA;IACD,IAAI,MAAM;QAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;IACzD,OAAO,IAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,IAAwC;IAC1F,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACjD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,IAAI,CAAC,OAAO;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/D,OAAO,MAAM,CACX,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAA;YACpF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC;YACD,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,EAAE,CACf,CAAA;AACH,CAAC"}
|
package/dist/http.test.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* @vitest-environment node */
|
|
2
|
-
import { ApiCliWhoamiResponseSchema } from 'clawdhub-schema';
|
|
3
2
|
import { describe, expect, it, vi } from 'vitest';
|
|
4
3
|
import { apiRequest, downloadZip } from './http';
|
|
4
|
+
import { ApiCliWhoamiResponseSchema } from './schema/index.js';
|
|
5
5
|
describe('apiRequest', () => {
|
|
6
6
|
it('adds bearer token and parses json', async () => {
|
|
7
7
|
const fetchMock = vi.fn().mockResolvedValue({
|
package/dist/http.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.test.js","sourceRoot":"","sources":["../src/http.test.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"http.test.js","sourceRoot":"","sources":["../src/http.test.ts"],"names":[],"mappings":"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"}
|