@autonomee/gohub 0.8.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 (179) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +57 -0
  3. package/bin/clawdhub.js +2 -0
  4. package/bin/gohub.js +2 -0
  5. package/dist/browserAuth.d.ts +20 -0
  6. package/dist/browserAuth.js +156 -0
  7. package/dist/browserAuth.js.map +1 -0
  8. package/dist/browserAuth.test.d.ts +1 -0
  9. package/dist/browserAuth.test.js +83 -0
  10. package/dist/browserAuth.test.js.map +1 -0
  11. package/dist/cli/authToken.d.ts +2 -0
  12. package/dist/cli/authToken.js +13 -0
  13. package/dist/cli/authToken.js.map +1 -0
  14. package/dist/cli/autonomeeConfig.d.ts +1 -0
  15. package/dist/cli/autonomeeConfig.js +2 -0
  16. package/dist/cli/autonomeeConfig.js.map +1 -0
  17. package/dist/cli/buildInfo.d.ts +3 -0
  18. package/dist/cli/buildInfo.js +104 -0
  19. package/dist/cli/buildInfo.js.map +1 -0
  20. package/dist/cli/clawdbotConfig.d.ts +6 -0
  21. package/dist/cli/clawdbotConfig.js +155 -0
  22. package/dist/cli/clawdbotConfig.js.map +1 -0
  23. package/dist/cli/clawdbotConfig.test.d.ts +1 -0
  24. package/dist/cli/clawdbotConfig.test.js +199 -0
  25. package/dist/cli/clawdbotConfig.test.js.map +1 -0
  26. package/dist/cli/commands/auth.d.ts +9 -0
  27. package/dist/cli/commands/auth.js +74 -0
  28. package/dist/cli/commands/auth.js.map +1 -0
  29. package/dist/cli/commands/auth.test.d.ts +1 -0
  30. package/dist/cli/commands/auth.test.js +50 -0
  31. package/dist/cli/commands/auth.test.js.map +1 -0
  32. package/dist/cli/commands/delete.d.ts +28 -0
  33. package/dist/cli/commands/delete.js +94 -0
  34. package/dist/cli/commands/delete.js.map +1 -0
  35. package/dist/cli/commands/delete.test.d.ts +1 -0
  36. package/dist/cli/commands/delete.test.js +61 -0
  37. package/dist/cli/commands/delete.test.js.map +1 -0
  38. package/dist/cli/commands/inspect.d.ts +12 -0
  39. package/dist/cli/commands/inspect.js +281 -0
  40. package/dist/cli/commands/inspect.js.map +1 -0
  41. package/dist/cli/commands/inspect.test.d.ts +1 -0
  42. package/dist/cli/commands/inspect.test.js +151 -0
  43. package/dist/cli/commands/inspect.test.js.map +1 -0
  44. package/dist/cli/commands/moderation.d.ts +19 -0
  45. package/dist/cli/commands/moderation.js +161 -0
  46. package/dist/cli/commands/moderation.js.map +1 -0
  47. package/dist/cli/commands/moderation.test.d.ts +1 -0
  48. package/dist/cli/commands/moderation.test.js +147 -0
  49. package/dist/cli/commands/moderation.test.js.map +1 -0
  50. package/dist/cli/commands/ownership.d.ts +15 -0
  51. package/dist/cli/commands/ownership.js +76 -0
  52. package/dist/cli/commands/ownership.js.map +1 -0
  53. package/dist/cli/commands/ownership.test.d.ts +1 -0
  54. package/dist/cli/commands/ownership.test.js +68 -0
  55. package/dist/cli/commands/ownership.test.js.map +1 -0
  56. package/dist/cli/commands/publish.d.ts +9 -0
  57. package/dist/cli/commands/publish.js +85 -0
  58. package/dist/cli/commands/publish.js.map +1 -0
  59. package/dist/cli/commands/publish.test.d.ts +1 -0
  60. package/dist/cli/commands/publish.test.js +105 -0
  61. package/dist/cli/commands/publish.test.js.map +1 -0
  62. package/dist/cli/commands/skills.d.ts +26 -0
  63. package/dist/cli/commands/skills.js +394 -0
  64. package/dist/cli/commands/skills.js.map +1 -0
  65. package/dist/cli/commands/skills.test.d.ts +1 -0
  66. package/dist/cli/commands/skills.test.js +402 -0
  67. package/dist/cli/commands/skills.test.js.map +1 -0
  68. package/dist/cli/commands/star.d.ts +8 -0
  69. package/dist/cli/commands/star.js +31 -0
  70. package/dist/cli/commands/star.js.map +1 -0
  71. package/dist/cli/commands/sync.d.ts +3 -0
  72. package/dist/cli/commands/sync.js +157 -0
  73. package/dist/cli/commands/sync.js.map +1 -0
  74. package/dist/cli/commands/sync.test.d.ts +1 -0
  75. package/dist/cli/commands/sync.test.js +277 -0
  76. package/dist/cli/commands/sync.test.js.map +1 -0
  77. package/dist/cli/commands/syncHelpers.d.ts +76 -0
  78. package/dist/cli/commands/syncHelpers.js +350 -0
  79. package/dist/cli/commands/syncHelpers.js.map +1 -0
  80. package/dist/cli/commands/syncHelpers.test.d.ts +1 -0
  81. package/dist/cli/commands/syncHelpers.test.js +22 -0
  82. package/dist/cli/commands/syncHelpers.test.js.map +1 -0
  83. package/dist/cli/commands/syncTypes.d.ts +24 -0
  84. package/dist/cli/commands/syncTypes.js +2 -0
  85. package/dist/cli/commands/syncTypes.js.map +1 -0
  86. package/dist/cli/commands/transfer.d.ts +50 -0
  87. package/dist/cli/commands/transfer.js +131 -0
  88. package/dist/cli/commands/transfer.js.map +1 -0
  89. package/dist/cli/commands/transfer.test.d.ts +1 -0
  90. package/dist/cli/commands/transfer.test.js +90 -0
  91. package/dist/cli/commands/transfer.test.js.map +1 -0
  92. package/dist/cli/commands/unstar.d.ts +8 -0
  93. package/dist/cli/commands/unstar.js +31 -0
  94. package/dist/cli/commands/unstar.js.map +1 -0
  95. package/dist/cli/helpStyle.d.ts +13 -0
  96. package/dist/cli/helpStyle.js +38 -0
  97. package/dist/cli/helpStyle.js.map +1 -0
  98. package/dist/cli/registry.d.ts +7 -0
  99. package/dist/cli/registry.js +42 -0
  100. package/dist/cli/registry.js.map +1 -0
  101. package/dist/cli/registry.test.d.ts +1 -0
  102. package/dist/cli/registry.test.js +48 -0
  103. package/dist/cli/registry.test.js.map +1 -0
  104. package/dist/cli/scanSkills.d.ts +7 -0
  105. package/dist/cli/scanSkills.js +91 -0
  106. package/dist/cli/scanSkills.js.map +1 -0
  107. package/dist/cli/scanSkills.test.d.ts +1 -0
  108. package/dist/cli/scanSkills.test.js +62 -0
  109. package/dist/cli/scanSkills.test.js.map +1 -0
  110. package/dist/cli/slug.d.ts +2 -0
  111. package/dist/cli/slug.js +16 -0
  112. package/dist/cli/slug.js.map +1 -0
  113. package/dist/cli/types.d.ts +15 -0
  114. package/dist/cli/types.js +2 -0
  115. package/dist/cli/types.js.map +1 -0
  116. package/dist/cli/ui.d.ts +7 -0
  117. package/dist/cli/ui.js +82 -0
  118. package/dist/cli/ui.js.map +1 -0
  119. package/dist/cli/ui.test.d.ts +1 -0
  120. package/dist/cli/ui.test.js +45 -0
  121. package/dist/cli/ui.test.js.map +1 -0
  122. package/dist/cli.d.ts +2 -0
  123. package/dist/cli.js +419 -0
  124. package/dist/cli.js.map +1 -0
  125. package/dist/config.d.ts +4 -0
  126. package/dist/config.js +77 -0
  127. package/dist/config.js.map +1 -0
  128. package/dist/config.test.d.ts +1 -0
  129. package/dist/config.test.js +56 -0
  130. package/dist/config.test.js.map +1 -0
  131. package/dist/discovery.d.ts +5 -0
  132. package/dist/discovery.js +25 -0
  133. package/dist/discovery.js.map +1 -0
  134. package/dist/discovery.test.d.ts +1 -0
  135. package/dist/discovery.test.js +46 -0
  136. package/dist/discovery.test.js.map +1 -0
  137. package/dist/homedir.d.ts +7 -0
  138. package/dist/homedir.js +29 -0
  139. package/dist/homedir.js.map +1 -0
  140. package/dist/http.bun.test.d.ts +1 -0
  141. package/dist/http.bun.test.js +231 -0
  142. package/dist/http.bun.test.js.map +1 -0
  143. package/dist/http.d.ts +43 -0
  144. package/dist/http.js +498 -0
  145. package/dist/http.js.map +1 -0
  146. package/dist/http.test.d.ts +1 -0
  147. package/dist/http.test.js +322 -0
  148. package/dist/http.test.js.map +1 -0
  149. package/dist/schema/ark.d.ts +4 -0
  150. package/dist/schema/ark.js +26 -0
  151. package/dist/schema/ark.js.map +1 -0
  152. package/dist/schema/index.d.ts +6 -0
  153. package/dist/schema/index.js +6 -0
  154. package/dist/schema/index.js.map +1 -0
  155. package/dist/schema/license.d.ts +4 -0
  156. package/dist/schema/license.js +5 -0
  157. package/dist/schema/license.js.map +1 -0
  158. package/dist/schema/routes.d.ts +22 -0
  159. package/dist/schema/routes.js +23 -0
  160. package/dist/schema/routes.js.map +1 -0
  161. package/dist/schema/schemas.d.ts +353 -0
  162. package/dist/schema/schemas.js +318 -0
  163. package/dist/schema/schemas.js.map +1 -0
  164. package/dist/schema/textFiles.d.ts +5 -0
  165. package/dist/schema/textFiles.js +66 -0
  166. package/dist/schema/textFiles.js.map +1 -0
  167. package/dist/schema/textFiles.test.d.ts +1 -0
  168. package/dist/schema/textFiles.test.js +20 -0
  169. package/dist/schema/textFiles.test.js.map +1 -0
  170. package/dist/skills.d.ts +43 -0
  171. package/dist/skills.js +178 -0
  172. package/dist/skills.js.map +1 -0
  173. package/dist/skills.test.d.ts +1 -0
  174. package/dist/skills.test.js +147 -0
  175. package/dist/skills.test.js.map +1 -0
  176. package/dist/types.d.ts +7 -0
  177. package/dist/types.js +2 -0
  178. package/dist/types.js.map +1 -0
  179. package/package.json +41 -0
@@ -0,0 +1,350 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { realpath } from 'node:fs/promises';
3
+ import { resolve } from 'node:path';
4
+ import { resolveHome } from '../../homedir.js';
5
+ import { isCancel, multiselect } from '@clack/prompts';
6
+ import semver from 'semver';
7
+ import { apiRequest, downloadZip } from '../../http.js';
8
+ import { ApiCliTelemetrySyncResponseSchema, ApiRoutes, ApiV1SkillResolveResponseSchema, ApiV1SkillResponseSchema, ApiV1WhoamiResponseSchema, LegacyApiRoutes, } from '../../schema/index.js';
9
+ import { hashSkillZip } from '../../skills.js';
10
+ import { getRegistry } from '../registry.js';
11
+ import { findSkillFolders } from '../scanSkills.js';
12
+ import { fail, formatError } from '../ui.js';
13
+ export async function reportTelemetryIfEnabled(params) {
14
+ if (isTelemetryDisabled())
15
+ return;
16
+ const versionBySlug = new Map();
17
+ for (const candidate of params.candidates) {
18
+ versionBySlug.set(candidate.slug, candidate.matchVersion ?? null);
19
+ }
20
+ const roots = params.scan.roots.map((root) => ({
21
+ rootId: rootTelemetryId(root),
22
+ label: formatRootLabel(root),
23
+ skills: (params.scan.skillsByRoot[root] ?? []).map((skill) => ({
24
+ slug: skill.slug,
25
+ version: versionBySlug.get(skill.slug) ?? null,
26
+ })),
27
+ }));
28
+ try {
29
+ await apiRequest(params.registry, {
30
+ method: 'POST',
31
+ path: LegacyApiRoutes.cliTelemetrySync,
32
+ token: params.token,
33
+ body: { roots },
34
+ }, ApiCliTelemetrySyncResponseSchema);
35
+ }
36
+ catch {
37
+ // ignore telemetry failures
38
+ }
39
+ }
40
+ function isTelemetryDisabled() {
41
+ const raw = process.env.GOHUB_DISABLE_TELEMETRY ?? process.env.CLAWDHUB_DISABLE_TELEMETRY;
42
+ if (!raw)
43
+ return false;
44
+ return ['1', 'true', 'yes', 'on'].includes(raw.trim().toLowerCase());
45
+ }
46
+ export function buildScanRoots(opts, extraRoots) {
47
+ const roots = [opts.workdir, opts.dir, ...(extraRoots ?? [])];
48
+ return Array.from(new Set(roots.map((root) => resolve(root))));
49
+ }
50
+ export function normalizeConcurrency(value) {
51
+ const raw = typeof value === 'number' ? value : 4;
52
+ const rounded = Number.isFinite(raw) ? Math.round(raw) : 4;
53
+ return Math.min(32, Math.max(1, rounded));
54
+ }
55
+ export async function mapWithConcurrency(items, limit, fn) {
56
+ const results = Array.from({ length: items.length });
57
+ let nextIndex = 0;
58
+ const workerCount = Math.min(Math.max(1, limit), items.length || 1);
59
+ async function worker() {
60
+ while (true) {
61
+ const index = nextIndex;
62
+ nextIndex += 1;
63
+ if (index >= items.length)
64
+ return;
65
+ results[index] = await fn(items[index]);
66
+ }
67
+ }
68
+ await Promise.all(Array.from({ length: workerCount }, () => worker()));
69
+ return results;
70
+ }
71
+ export async function checkRegistrySyncState(registry, skill, resolveSupport, token) {
72
+ if (resolveSupport.value !== false) {
73
+ try {
74
+ const resolved = await apiRequest(registry, {
75
+ method: 'GET',
76
+ path: `${ApiRoutes.resolve}?slug=${encodeURIComponent(skill.slug)}&hash=${encodeURIComponent(skill.fingerprint)}`,
77
+ token,
78
+ }, ApiV1SkillResolveResponseSchema);
79
+ resolveSupport.value = true;
80
+ const latestVersion = resolved.latestVersion?.version ?? null;
81
+ const matchVersion = resolved.match?.version ?? null;
82
+ if (!latestVersion) {
83
+ return {
84
+ ...skill,
85
+ status: 'new',
86
+ matchVersion: null,
87
+ latestVersion: null,
88
+ };
89
+ }
90
+ return {
91
+ ...skill,
92
+ status: matchVersion ? 'synced' : 'update',
93
+ matchVersion,
94
+ latestVersion,
95
+ };
96
+ }
97
+ catch (error) {
98
+ const message = formatError(error);
99
+ if (/skill not found/i.test(message) || /HTTP 404/i.test(message)) {
100
+ resolveSupport.value = true;
101
+ return {
102
+ ...skill,
103
+ status: 'new',
104
+ matchVersion: null,
105
+ latestVersion: null,
106
+ };
107
+ }
108
+ if (/no matching routes found/i.test(message)) {
109
+ resolveSupport.value = false;
110
+ }
111
+ else {
112
+ throw error;
113
+ }
114
+ }
115
+ }
116
+ const meta = await apiRequest(registry, { method: 'GET', path: `${ApiRoutes.skills}/${encodeURIComponent(skill.slug)}`, token }, ApiV1SkillResponseSchema).catch(() => null);
117
+ const latestVersion = meta?.latestVersion?.version ?? null;
118
+ if (!latestVersion) {
119
+ return {
120
+ ...skill,
121
+ status: 'new',
122
+ matchVersion: null,
123
+ latestVersion: null,
124
+ };
125
+ }
126
+ const zip = await downloadZip(registry, { slug: skill.slug, version: latestVersion, token });
127
+ const remote = hashSkillZip(zip).fingerprint;
128
+ const matchVersion = remote === skill.fingerprint ? latestVersion : null;
129
+ return {
130
+ ...skill,
131
+ status: matchVersion ? 'synced' : 'update',
132
+ matchVersion,
133
+ latestVersion,
134
+ };
135
+ }
136
+ export async function scanRoots(roots) {
137
+ const result = await scanRootsWithLabels(roots);
138
+ return {
139
+ roots: result.roots,
140
+ skillsByRoot: result.skillsByRoot,
141
+ skills: result.skills,
142
+ rootsWithSkills: result.rootsWithSkills,
143
+ };
144
+ }
145
+ export async function scanRootsWithLabels(roots, labels) {
146
+ const all = [];
147
+ const rootsWithSkills = [];
148
+ const uniqueRoots = await dedupeRoots(roots);
149
+ const skillsByRoot = {};
150
+ const rootLabels = {};
151
+ for (const root of uniqueRoots) {
152
+ const found = await findSkillFolders(root);
153
+ skillsByRoot[root] = found;
154
+ if (found.length > 0)
155
+ rootsWithSkills.push(root);
156
+ all.push(...found);
157
+ if (labels?.[root])
158
+ rootLabels[root] = labels[root];
159
+ }
160
+ const byFolder = new Map();
161
+ for (const folder of all) {
162
+ byFolder.set(folder.folder, folder);
163
+ }
164
+ return {
165
+ roots: uniqueRoots,
166
+ skillsByRoot,
167
+ skills: Array.from(byFolder.values()),
168
+ rootsWithSkills,
169
+ rootLabels,
170
+ };
171
+ }
172
+ export function mergeScan(left, right) {
173
+ const mergedRoots = Array.from(new Set([...left.roots, ...right.roots]));
174
+ const skillsByRoot = {};
175
+ for (const root of mergedRoots) {
176
+ skillsByRoot[root] = right.skillsByRoot[root] ?? left.skillsByRoot[root] ?? [];
177
+ }
178
+ const rootLabels = { ...left.rootLabels, ...right.rootLabels };
179
+ const byFolder = new Map();
180
+ for (const entry of [...left.skills, ...right.skills]) {
181
+ byFolder.set(entry.folder, entry);
182
+ }
183
+ const skills = Array.from(byFolder.values());
184
+ const rootsWithSkills = mergedRoots.filter((root) => (skillsByRoot[root]?.length ?? 0) > 0);
185
+ return { roots: mergedRoots, skillsByRoot, skills, rootsWithSkills, rootLabels };
186
+ }
187
+ async function dedupeRoots(roots) {
188
+ const seen = new Set();
189
+ const unique = [];
190
+ for (const root of roots) {
191
+ const resolved = resolve(root);
192
+ const canonical = await realpath(resolved).catch(() => null);
193
+ const key = canonical ?? resolved;
194
+ if (seen.has(key))
195
+ continue;
196
+ seen.add(key);
197
+ unique.push(key);
198
+ }
199
+ return unique;
200
+ }
201
+ export async function selectToUpload(candidates, params) {
202
+ if (params.all || !params.allowPrompt)
203
+ return candidates;
204
+ const valueByKey = new Map();
205
+ const choices = candidates.map((candidate) => {
206
+ const key = candidate.folder;
207
+ valueByKey.set(key, candidate);
208
+ return {
209
+ value: key,
210
+ label: `${candidate.slug} ${formatActionableStatus(candidate, params.bump)}`,
211
+ hint: `${abbreviatePath(candidate.folder)} | ${candidate.fileCount} files`,
212
+ };
213
+ });
214
+ const picked = await multiselect({
215
+ message: 'Select skills to upload',
216
+ options: choices,
217
+ initialValues: choices.map((choice) => choice.value),
218
+ required: false,
219
+ });
220
+ if (isCancel(picked))
221
+ fail('Canceled');
222
+ const selected = picked.map((key) => valueByKey.get(String(key))).filter(Boolean);
223
+ return selected;
224
+ }
225
+ export async function resolvePublishMeta(skill, params) {
226
+ if (skill.status === 'new') {
227
+ return { publishVersion: '1.0.0', changelog: '' };
228
+ }
229
+ const latest = skill.latestVersion;
230
+ if (!latest)
231
+ fail(`Could not resolve latest version for ${skill.slug}`);
232
+ const publishVersion = semver.inc(latest, params.bump);
233
+ if (!publishVersion)
234
+ fail(`Could not bump version for ${skill.slug}`);
235
+ const fromFlag = params.changelogFlag?.trim();
236
+ if (fromFlag)
237
+ return { publishVersion, changelog: fromFlag };
238
+ return { publishVersion, changelog: '' };
239
+ }
240
+ export async function getRegistryWithAuth(opts, token) {
241
+ const registry = await getRegistry(opts, { cache: true });
242
+ await apiRequest(registry, { method: 'GET', path: ApiRoutes.whoami, token }, ApiV1WhoamiResponseSchema);
243
+ return registry;
244
+ }
245
+ export function formatList(values, max) {
246
+ if (values.length === 0)
247
+ return '';
248
+ const shown = values.map(abbreviatePath);
249
+ if (shown.length <= max)
250
+ return shown.join('\n');
251
+ const head = shown.slice(0, Math.max(1, max - 1));
252
+ const rest = values.length - head.length;
253
+ return [...head, `… +${rest} more`].join('\n');
254
+ }
255
+ export function printSection(title, body) {
256
+ const trimmed = body?.trim();
257
+ if (!trimmed) {
258
+ console.log(title);
259
+ return;
260
+ }
261
+ if (trimmed.includes('\n')) {
262
+ console.log(`\n${title}\n${trimmed}`);
263
+ return;
264
+ }
265
+ console.log(`${title}: ${trimmed}`);
266
+ }
267
+ function abbreviatePath(value) {
268
+ const home = resolveHome();
269
+ if (value.startsWith(home))
270
+ return `~${value.slice(home.length)}`;
271
+ return value;
272
+ }
273
+ function rootTelemetryId(value) {
274
+ return createHash('sha256').update(value).digest('hex');
275
+ }
276
+ function formatRootLabel(value) {
277
+ const home = resolveHome();
278
+ if (value === home)
279
+ return '~';
280
+ const normalized = value.replaceAll('\\', '/');
281
+ const normalizedHome = home.replaceAll('\\', '/');
282
+ const isHome = normalized === normalizedHome || normalized.startsWith(`${normalizedHome}/`);
283
+ const stripped = isHome ? normalized.slice(normalizedHome.length).replace(/^\//, '') : normalized;
284
+ const parts = stripped.split('/').filter(Boolean);
285
+ const tail = parts.slice(-2).join('/');
286
+ if (!tail)
287
+ return isHome ? '~' : '…';
288
+ return isHome ? `~/${tail}` : `…/${tail}`;
289
+ }
290
+ export function dedupeSkillsBySlug(skills) {
291
+ const bySlug = new Map();
292
+ for (const skill of skills) {
293
+ const existing = bySlug.get(skill.slug);
294
+ if (existing)
295
+ existing.push(skill);
296
+ else
297
+ bySlug.set(skill.slug, [skill]);
298
+ }
299
+ const unique = [];
300
+ const duplicates = [];
301
+ for (const [slug, entries] of bySlug.entries()) {
302
+ unique.push(entries[0]);
303
+ if (entries.length > 1)
304
+ duplicates.push(`${slug} (${entries.length})`);
305
+ }
306
+ return { skills: unique, duplicates };
307
+ }
308
+ export function formatActionableStatus(candidate, bump) {
309
+ if (candidate.status === 'new')
310
+ return 'NEW';
311
+ const latest = candidate.latestVersion;
312
+ const next = latest ? semver.inc(latest, bump) : null;
313
+ if (latest && next)
314
+ return `UPDATE ${latest} → ${next}`;
315
+ return 'UPDATE';
316
+ }
317
+ export function formatActionableLine(candidate, bump) {
318
+ return `${candidate.slug} ${formatActionableStatus(candidate, bump)} (${candidate.fileCount} files)`;
319
+ }
320
+ function formatSyncedLine(candidate) {
321
+ const version = candidate.matchVersion ?? candidate.latestVersion ?? 'unknown';
322
+ return `${candidate.slug} synced (${version})`;
323
+ }
324
+ export function formatSyncedSummary(candidate) {
325
+ const version = candidate.matchVersion ?? candidate.latestVersion;
326
+ return version ? `${candidate.slug}@${version}` : candidate.slug;
327
+ }
328
+ export function formatBulletList(lines, max) {
329
+ if (lines.length <= max)
330
+ return lines.map((line) => `- ${line}`).join('\n');
331
+ const head = lines.slice(0, max);
332
+ const rest = lines.length - head.length;
333
+ return [...head, `... +${rest} more`].map((line) => `- ${line}`).join('\n');
334
+ }
335
+ export function formatSyncedDisplay(synced) {
336
+ const lines = synced.map(formatSyncedLine);
337
+ if (lines.length <= 12)
338
+ return formatBulletList(lines, 12);
339
+ return formatCommaList(synced.map(formatSyncedSummary), 24);
340
+ }
341
+ export function formatCommaList(values, max) {
342
+ if (values.length === 0)
343
+ return '';
344
+ if (values.length <= max)
345
+ return values.join(', ');
346
+ const head = values.slice(0, Math.max(1, max - 1));
347
+ const rest = values.length - head.length;
348
+ return `${head.join(', ')}, ... +${rest} more`;
349
+ }
350
+ //# sourceMappingURL=syncHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncHelpers.js","sourceRoot":"","sources":["../../../src/cli/commands/syncHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ /* @vitest-environment node */
2
+ import { describe, expect, it, vi } from 'vitest';
3
+ vi.mock('../scanSkills.js', () => ({
4
+ findSkillFolders: vi.fn(async (root) => {
5
+ if (root.endsWith('/with-skill')) {
6
+ return [{ folder: `${root}/demo`, slug: 'demo', displayName: 'Demo' }];
7
+ }
8
+ return [];
9
+ }),
10
+ }));
11
+ const { scanRootsWithLabels } = await import('./syncHelpers.js');
12
+ describe('scanRootsWithLabels', () => {
13
+ it('attaches labels to roots with skills', async () => {
14
+ const roots = ['/tmp/with-skill', '/tmp/empty', '/tmp/with-skill'];
15
+ const labels = { '/tmp/with-skill': 'Agent: Work' };
16
+ const result = await scanRootsWithLabels(roots, labels);
17
+ expect(result.rootsWithSkills).toEqual(['/tmp/with-skill']);
18
+ expect(result.rootLabels).toEqual({ '/tmp/with-skill': 'Agent: Work' });
19
+ expect(result.skills.map((skill) => skill.slug)).toEqual(['demo']);
20
+ });
21
+ });
22
+ //# sourceMappingURL=syncHelpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncHelpers.test.js","sourceRoot":"","sources":["../../../src/cli/commands/syncHelpers.test.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;QACxE,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEhE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,KAAK,GAAG,CAAC,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAA;QAEnD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { SkillOrigin } from '../../skills.js';
2
+ import type { SkillFolder } from '../scanSkills.js';
3
+ export type SyncOptions = {
4
+ root?: string[];
5
+ all?: boolean;
6
+ dryRun?: boolean;
7
+ bump?: 'patch' | 'minor' | 'major';
8
+ changelog?: string;
9
+ tags?: string;
10
+ concurrency?: number;
11
+ };
12
+ export type Candidate = SkillFolder & {
13
+ fingerprint: string;
14
+ fileCount: number;
15
+ origin: SkillOrigin | null;
16
+ status: 'synced' | 'new' | 'update';
17
+ matchVersion: string | null;
18
+ latestVersion: string | null;
19
+ };
20
+ export type LocalSkill = SkillFolder & {
21
+ fingerprint: string;
22
+ fileCount: number;
23
+ origin: SkillOrigin | null;
24
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=syncTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncTypes.js","sourceRoot":"","sources":["../../../src/cli/commands/syncTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import type { GlobalOpts } from '../types.js';
2
+ type ConfirmOptions = {
3
+ yes?: boolean;
4
+ };
5
+ export declare function cmdTransferRequest(opts: GlobalOpts, slugArg: string, toHandleArg: string, options: ConfirmOptions & {
6
+ message?: string;
7
+ }, inputAllowed: boolean): Promise<{
8
+ ok: true;
9
+ transferId: string;
10
+ toUserHandle: string;
11
+ expiresAt: number;
12
+ } | undefined>;
13
+ export declare function cmdTransferList(opts: GlobalOpts, options: {
14
+ outgoing?: boolean;
15
+ }): Promise<{
16
+ transfers: {
17
+ _id: string;
18
+ skill: {
19
+ _id: string;
20
+ slug: string;
21
+ displayName: string;
22
+ };
23
+ requestedAt: number;
24
+ expiresAt: number;
25
+ fromUser?: {
26
+ _id: string;
27
+ handle: string | null;
28
+ displayName: string | null;
29
+ } | undefined;
30
+ toUser?: {
31
+ _id: string;
32
+ handle: string | null;
33
+ displayName: string | null;
34
+ } | undefined;
35
+ message?: string | undefined;
36
+ }[];
37
+ }>;
38
+ export declare function cmdTransferAccept(opts: GlobalOpts, slugArg: string, options: ConfirmOptions, inputAllowed: boolean): Promise<{
39
+ ok: true;
40
+ skillSlug?: string | undefined;
41
+ } | undefined>;
42
+ export declare function cmdTransferReject(opts: GlobalOpts, slugArg: string, options: ConfirmOptions, inputAllowed: boolean): Promise<{
43
+ ok: true;
44
+ skillSlug?: string | undefined;
45
+ } | undefined>;
46
+ export declare function cmdTransferCancel(opts: GlobalOpts, slugArg: string, options: ConfirmOptions, inputAllowed: boolean): Promise<{
47
+ ok: true;
48
+ skillSlug?: string | undefined;
49
+ } | undefined>;
50
+ export {};
@@ -0,0 +1,131 @@
1
+ import { apiRequest } from '../../http.js';
2
+ import { ApiRoutes, ApiV1TransferDecisionResponseSchema, ApiV1TransferListResponseSchema, ApiV1TransferRequestResponseSchema, parseArk, } from '../../schema/index.js';
3
+ import { requireAuthToken } from '../authToken.js';
4
+ import { getRegistry } from '../registry.js';
5
+ import { createSpinner, fail, formatError, isInteractive, promptConfirm } from '../ui.js';
6
+ const DECISION_SPECS = {
7
+ accept: {
8
+ verb: 'Accept',
9
+ progress: 'Accepting',
10
+ success: 'Transfer accepted',
11
+ action: 'accept',
12
+ },
13
+ reject: {
14
+ verb: 'Reject',
15
+ progress: 'Rejecting',
16
+ success: 'Transfer rejected',
17
+ action: 'reject',
18
+ },
19
+ cancel: {
20
+ verb: 'Cancel',
21
+ progress: 'Cancelling',
22
+ success: 'Transfer cancelled',
23
+ action: 'cancel',
24
+ },
25
+ };
26
+ function normalizeSlug(slugArg) {
27
+ const slug = slugArg.trim().toLowerCase();
28
+ if (!slug)
29
+ fail('Skill slug required');
30
+ return slug;
31
+ }
32
+ function canPrompt(inputAllowed) {
33
+ return isInteractive() && inputAllowed !== false;
34
+ }
35
+ async function requireYesOrConfirm(options, inputAllowed, prompt) {
36
+ if (options.yes)
37
+ return true;
38
+ if (!canPrompt(inputAllowed))
39
+ fail('Pass --yes (no input)');
40
+ return promptConfirm(prompt);
41
+ }
42
+ export async function cmdTransferRequest(opts, slugArg, toHandleArg, options, inputAllowed) {
43
+ const slug = normalizeSlug(slugArg);
44
+ const toHandle = toHandleArg.trim().replace(/^@+/, '').toLowerCase();
45
+ if (!toHandle)
46
+ fail('Recipient handle required (e.g., @username)');
47
+ const confirmed = await requireYesOrConfirm(options, inputAllowed, `Transfer ${slug} to @${toHandle}? Recipient must accept.`);
48
+ if (!confirmed)
49
+ return;
50
+ const token = await requireAuthToken();
51
+ const registry = await getRegistry(opts, { cache: true });
52
+ const spinner = createSpinner(`Requesting transfer of ${slug} to @${toHandle}`);
53
+ try {
54
+ const result = await apiRequest(registry, {
55
+ method: 'POST',
56
+ path: `${ApiRoutes.skills}/${encodeURIComponent(slug)}/transfer`,
57
+ token,
58
+ body: JSON.stringify({
59
+ toUserHandle: toHandle,
60
+ message: options.message,
61
+ }),
62
+ }, ApiV1TransferRequestResponseSchema);
63
+ const parsed = parseArk(ApiV1TransferRequestResponseSchema, result, 'Transfer request response');
64
+ spinner.succeed(`Transfer requested for ${slug} to @${parsed.toUserHandle}`);
65
+ return parsed;
66
+ }
67
+ catch (error) {
68
+ spinner.fail(formatError(error));
69
+ throw error;
70
+ }
71
+ }
72
+ export async function cmdTransferList(opts, options) {
73
+ const token = await requireAuthToken();
74
+ const registry = await getRegistry(opts, { cache: true });
75
+ const spinner = createSpinner('Fetching transfers');
76
+ try {
77
+ const path = options.outgoing ? `${ApiRoutes.transfers}/outgoing` : `${ApiRoutes.transfers}/incoming`;
78
+ const result = await apiRequest(registry, { method: 'GET', path, token }, ApiV1TransferListResponseSchema);
79
+ const parsed = parseArk(ApiV1TransferListResponseSchema, result, 'Transfer list response');
80
+ spinner.stop();
81
+ if (parsed.transfers.length === 0) {
82
+ console.log(options.outgoing ? 'No outgoing transfers.' : 'No incoming transfers.');
83
+ return parsed;
84
+ }
85
+ console.log(options.outgoing ? 'Outgoing transfers:' : 'Incoming transfers:');
86
+ for (const transfer of parsed.transfers) {
87
+ const otherHandle = options.outgoing ? transfer.toUser?.handle : transfer.fromUser?.handle;
88
+ const other = otherHandle ? `@${otherHandle.replace(/^@+/, '')}` : '(unknown user)';
89
+ const expiresInDays = Math.max(0, Math.ceil((transfer.expiresAt - Date.now()) / (24 * 60 * 60 * 1000)));
90
+ console.log(` ${transfer.skill.slug} -> ${other} (expires in ${expiresInDays}d)`);
91
+ }
92
+ return parsed;
93
+ }
94
+ catch (error) {
95
+ spinner.fail(formatError(error));
96
+ throw error;
97
+ }
98
+ }
99
+ async function runTransferDecision(opts, slugArg, options, inputAllowed, spec) {
100
+ const slug = normalizeSlug(slugArg);
101
+ const confirmed = await requireYesOrConfirm(options, inputAllowed, `${spec.verb} transfer of ${slug}?`);
102
+ if (!confirmed)
103
+ return;
104
+ const token = await requireAuthToken();
105
+ const registry = await getRegistry(opts, { cache: true });
106
+ const spinner = createSpinner(`${spec.progress} transfer of ${slug}`);
107
+ try {
108
+ const result = await apiRequest(registry, {
109
+ method: 'POST',
110
+ path: `${ApiRoutes.skills}/${encodeURIComponent(slug)}/transfer/${spec.action}`,
111
+ token,
112
+ }, ApiV1TransferDecisionResponseSchema);
113
+ const parsed = parseArk(ApiV1TransferDecisionResponseSchema, result, 'Transfer response');
114
+ spinner.succeed(`${spec.success} (${slug})`);
115
+ return parsed;
116
+ }
117
+ catch (error) {
118
+ spinner.fail(formatError(error));
119
+ throw error;
120
+ }
121
+ }
122
+ export function cmdTransferAccept(opts, slugArg, options, inputAllowed) {
123
+ return runTransferDecision(opts, slugArg, options, inputAllowed, DECISION_SPECS.accept);
124
+ }
125
+ export function cmdTransferReject(opts, slugArg, options, inputAllowed) {
126
+ return runTransferDecision(opts, slugArg, options, inputAllowed, DECISION_SPECS.reject);
127
+ }
128
+ export function cmdTransferCancel(opts, slugArg, options, inputAllowed) {
129
+ return runTransferDecision(opts, slugArg, options, inputAllowed, DECISION_SPECS.cancel);
130
+ }
131
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../src/cli/commands/transfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};