@soku-ai/cli 0.1.0-alpha.4 → 0.1.0-alpha.7

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 (52) hide show
  1. package/dist/commands/auth.js +1 -1
  2. package/dist/commands/auth.js.map +1 -1
  3. package/dist/commands/brand.d.ts.map +1 -1
  4. package/dist/commands/brand.js +57 -1
  5. package/dist/commands/brand.js.map +1 -1
  6. package/dist/commands/generated.d.ts +1 -1
  7. package/dist/commands/generated.d.ts.map +1 -1
  8. package/dist/commands/generated.js +16 -3
  9. package/dist/commands/generated.js.map +1 -1
  10. package/dist/commands/memory.d.ts +18 -0
  11. package/dist/commands/memory.d.ts.map +1 -0
  12. package/dist/commands/memory.js +70 -0
  13. package/dist/commands/memory.js.map +1 -0
  14. package/dist/commands/seo-hosting.d.ts +100 -0
  15. package/dist/commands/seo-hosting.d.ts.map +1 -0
  16. package/dist/commands/seo-hosting.js +489 -0
  17. package/dist/commands/seo-hosting.js.map +1 -0
  18. package/dist/commands/skill.d.ts +44 -10
  19. package/dist/commands/skill.d.ts.map +1 -1
  20. package/dist/commands/skill.js +77 -45
  21. package/dist/commands/skill.js.map +1 -1
  22. package/dist/commands/update.d.ts +23 -0
  23. package/dist/commands/update.d.ts.map +1 -0
  24. package/dist/commands/update.js +345 -0
  25. package/dist/commands/update.js.map +1 -0
  26. package/dist/commands/workspace.d.ts +4 -0
  27. package/dist/commands/workspace.d.ts.map +1 -0
  28. package/dist/commands/workspace.js +132 -0
  29. package/dist/commands/workspace.js.map +1 -0
  30. package/dist/config.d.ts +2 -2
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +2 -2
  33. package/dist/config.js.map +1 -1
  34. package/dist/generated/capabilities.json +208 -30
  35. package/dist/http/client.d.ts.map +1 -1
  36. package/dist/http/client.js +50 -14
  37. package/dist/http/client.js.map +1 -1
  38. package/dist/index.js +26 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/output/unwrap.d.ts.map +1 -1
  41. package/dist/output/unwrap.js +18 -1
  42. package/dist/output/unwrap.js.map +1 -1
  43. package/dist/skills/unzip.d.ts +1 -1
  44. package/dist/skills/unzip.js +1 -1
  45. package/dist/update-check.js +4 -4
  46. package/dist/update-check.js.map +1 -1
  47. package/dist/version.d.ts +1 -1
  48. package/dist/version.js +1 -1
  49. package/package.json +4 -2
  50. package/postinstall.cjs +85 -0
  51. package/skills/soku/SKILL.md +177 -16
  52. package/README.md +0 -109
@@ -0,0 +1,489 @@
1
+ /** `soku seo-hosting` — manage SEO Hosting posts and domain connections. */
2
+ import { readFileSync } from 'node:fs';
3
+ import { apiRequest } from '../http/client.js';
4
+ import { bold, cyan, dim, emitError, emitSuccess, ExitCode, table } from '../output/envelope.js';
5
+ import { unwrapDispatch } from '../output/unwrap.js';
6
+ const CONNECTIONS_PATH = '/api/cli/seo-hosting/domain-connections';
7
+ const SEO_HOSTING_CALL_PATH = '/api/cli/call/seo_hosting';
8
+ const DEFAULT_SECTIONS = ['blog'];
9
+ const ALLOWED_SECTIONS = new Set(['blog', 'use-cases', 'alternatives']);
10
+ export class SeoHostingUsageError extends Error {
11
+ hint;
12
+ constructor(message, hint) {
13
+ super(message);
14
+ this.hint = hint;
15
+ }
16
+ }
17
+ export function domainConnectionPath(connectionId, suffix) {
18
+ if (!connectionId)
19
+ return CONNECTIONS_PATH;
20
+ const encoded = encodeURIComponent(connectionId);
21
+ return `${CONNECTIONS_PATH}/${encoded}${suffix ? `/${suffix}` : ''}`;
22
+ }
23
+ export function seoHostingCallPath(action) {
24
+ return `${SEO_HOSTING_CALL_PATH}/${encodeURIComponent(action)}`;
25
+ }
26
+ export function parseSections(raw) {
27
+ if (!raw || !raw.trim())
28
+ return [...DEFAULT_SECTIONS];
29
+ const sections = raw
30
+ .split(',')
31
+ .map((part) => part.trim())
32
+ .filter(Boolean);
33
+ const unknown = sections.filter((section) => !ALLOWED_SECTIONS.has(section));
34
+ if (unknown.length > 0) {
35
+ throw new SeoHostingUsageError(`Unsupported section: ${unknown.join(', ')}`, 'Allowed sections: blog, use-cases, alternatives.');
36
+ }
37
+ return [...new Set(sections)];
38
+ }
39
+ export function validateCloudflareTokenOptions(opts) {
40
+ const sources = [opts.cfTokenEnv, opts.cfTokenStdin].filter(Boolean);
41
+ if (sources.length !== 1) {
42
+ throw new SeoHostingUsageError('Provide exactly one Cloudflare token source.', 'Use --cf-token-env NAME or --cf-token-stdin.');
43
+ }
44
+ }
45
+ async function readAll(input) {
46
+ let out = '';
47
+ for await (const chunk of input)
48
+ out += chunk.toString();
49
+ return out;
50
+ }
51
+ export async function readCloudflareToken(opts) {
52
+ validateCloudflareTokenOptions(opts);
53
+ if (opts.cfTokenEnv) {
54
+ const token = process.env[opts.cfTokenEnv]?.trim();
55
+ if (!token) {
56
+ throw new SeoHostingUsageError(`Environment variable ${opts.cfTokenEnv} is empty or unset.`, `Export ${opts.cfTokenEnv} before running connect-worker.`);
57
+ }
58
+ return token;
59
+ }
60
+ const token = (await readAll(process.stdin)).trim();
61
+ if (!token) {
62
+ throw new SeoHostingUsageError('No Cloudflare token was received on stdin.', 'Pipe the token into the command, for example: printf %s "$CF_TOKEN" | soku seo-hosting connections connect-worker --cf-token-stdin ...');
63
+ }
64
+ return token;
65
+ }
66
+ export function workerProbeBlocker(probe, opts) {
67
+ if (!probe.is_cloudflare) {
68
+ const hint = probe.is_vercel
69
+ ? 'This hostname appears to be on Vercel. Use the Web OAuth flow until Vercel CLI support lands.'
70
+ : 'Cloudflare Worker routes require the hostname zone to be on Cloudflare.';
71
+ return new SeoHostingUsageError('Hostname is not using Cloudflare nameservers.', hint);
72
+ }
73
+ if (probe.conflicts.length > 0 && !opts.acceptConflicts) {
74
+ return new SeoHostingUsageError(`Mount paths already serve content: ${probe.conflicts.join(', ')}.`, 'Pass --accept-conflicts after confirming the SEO Hosting Worker may shadow those paths.');
75
+ }
76
+ if (probe.serves_next_assets && !opts.acceptNextAssetsWarning) {
77
+ return new SeoHostingUsageError('The hostname appears to serve its own Next.js assets.', 'Pass --accept-next-assets-warning after confirming /_next/static/* can be routed through the Worker.');
78
+ }
79
+ return null;
80
+ }
81
+ export async function callSeoHostingAction(action, payload = {}) {
82
+ const result = await apiRequest(seoHostingCallPath(action), {
83
+ method: 'POST',
84
+ workspace: true,
85
+ body: payload,
86
+ });
87
+ return unwrapDispatch(result);
88
+ }
89
+ export function parseSeoOverride(raw) {
90
+ if (!raw)
91
+ return undefined;
92
+ let parsed;
93
+ try {
94
+ parsed = JSON.parse(raw);
95
+ }
96
+ catch {
97
+ throw new SeoHostingUsageError('--seo must be valid JSON.');
98
+ }
99
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
100
+ throw new SeoHostingUsageError('--seo must be a JSON object.');
101
+ }
102
+ return parsed;
103
+ }
104
+ export async function readPostBody(opts, required) {
105
+ const sources = [opts.body !== undefined, opts.bodyFile, opts.bodyStdin].filter(Boolean);
106
+ if (sources.length > 1) {
107
+ throw new SeoHostingUsageError('Provide only one post body source.', 'Use --body, --body-file, or --body-stdin.');
108
+ }
109
+ if (sources.length === 0) {
110
+ if (required) {
111
+ throw new SeoHostingUsageError('Post body is required.', 'Use --body, --body-file, or --body-stdin.');
112
+ }
113
+ return undefined;
114
+ }
115
+ let body;
116
+ if (opts.bodyFile) {
117
+ try {
118
+ body = readFileSync(opts.bodyFile, 'utf8');
119
+ }
120
+ catch (err) {
121
+ throw new SeoHostingUsageError(`Could not read body file: ${opts.bodyFile}`, err.message);
122
+ }
123
+ }
124
+ else if (opts.bodyStdin) {
125
+ body = await readAll(process.stdin);
126
+ }
127
+ else {
128
+ body = opts.body ?? '';
129
+ }
130
+ if (!body.trim()) {
131
+ throw new SeoHostingUsageError('Post body cannot be empty.');
132
+ }
133
+ return body;
134
+ }
135
+ export async function buildPostCreatePayload(opts) {
136
+ const body = await readPostBody(opts, true);
137
+ const payload = {
138
+ title: opts.title,
139
+ body_markdown: body,
140
+ };
141
+ addString(payload, 'slug', opts.slug);
142
+ addString(payload, 'section', opts.section);
143
+ addString(payload, 'excerpt', opts.excerpt);
144
+ addString(payload, 'cover_image_url', opts.coverImageUrl);
145
+ addString(payload, 'author_name', opts.authorName);
146
+ const seo = parseSeoOverride(opts.seo);
147
+ if (seo)
148
+ payload.seo = seo;
149
+ return payload;
150
+ }
151
+ export async function buildPostUpdatePayload(postId, opts) {
152
+ const payload = { post_id: postId };
153
+ addString(payload, 'title', opts.title);
154
+ addString(payload, 'excerpt', opts.excerpt);
155
+ addString(payload, 'cover_image_url', opts.coverImageUrl);
156
+ addString(payload, 'author_name', opts.authorName);
157
+ const body = await readPostBody(opts, false);
158
+ if (body !== undefined)
159
+ payload.body_markdown = body;
160
+ const seo = parseSeoOverride(opts.seo);
161
+ if (seo)
162
+ payload.seo = seo;
163
+ if (Object.keys(payload).length === 1) {
164
+ throw new SeoHostingUsageError('No post fields were provided.', 'Pass --title, a body option, --excerpt, --cover-image-url, --author-name, or --seo.');
165
+ }
166
+ return payload;
167
+ }
168
+ function addString(payload, key, value) {
169
+ if (value !== undefined && value.trim())
170
+ payload[key] = value;
171
+ }
172
+ export function renderHostingStatus(status) {
173
+ const rows = [
174
+ `${bold('Configured')}: ${status.configured ? 'yes' : 'no'}`,
175
+ `${bold('Live')}: ${status.live ? 'yes' : 'no'}`,
176
+ `${bold('Public URLs')}: ${status.public_base_urls.length ? status.public_base_urls.join(', ') : dim('(none)')}`,
177
+ ];
178
+ if (status.connections.length > 0) {
179
+ rows.push('', bold('Connections'), renderConnectionSummaries(status.connections));
180
+ }
181
+ return rows.join('\n');
182
+ }
183
+ function renderConnectionSummaries(items) {
184
+ return table(items.map((item) => ({
185
+ hostname: item.hostname,
186
+ method: item.method,
187
+ status: item.status,
188
+ ssl: item.ssl_status,
189
+ sections: item.mounted_sections?.join(',') || '',
190
+ error: item.last_error || '',
191
+ })), [
192
+ { key: 'hostname', header: 'HOSTNAME' },
193
+ { key: 'method', header: 'METHOD' },
194
+ { key: 'status', header: 'STATUS' },
195
+ { key: 'ssl', header: 'SSL' },
196
+ { key: 'sections', header: 'SECTIONS' },
197
+ { key: 'error', header: 'ERROR' },
198
+ ]);
199
+ }
200
+ export function renderPosts(items) {
201
+ return table(items.map((item) => ({
202
+ id: item.id,
203
+ section: item.section,
204
+ slug: item.slug,
205
+ status: item.status,
206
+ title: item.title || '',
207
+ })), [
208
+ { key: 'id', header: 'ID' },
209
+ { key: 'section', header: 'SECTION' },
210
+ { key: 'slug', header: 'SLUG' },
211
+ { key: 'status', header: 'STATUS' },
212
+ { key: 'title', header: 'TITLE' },
213
+ ]);
214
+ }
215
+ export function renderPost(post) {
216
+ const rows = [
217
+ `${bold('ID')}: ${cyan(post.id)}`,
218
+ `${bold('Section')}: ${post.section}`,
219
+ `${bold('Slug')}: ${post.slug}`,
220
+ `${bold('Status')}: ${post.status}`,
221
+ ];
222
+ if (post.title)
223
+ rows.splice(1, 0, `${bold('Title')}: ${post.title}`);
224
+ if (post.url_path)
225
+ rows.push(`${bold('URL path')}: ${post.url_path}`);
226
+ if (post.excerpt)
227
+ rows.push(`${bold('Excerpt')}: ${post.excerpt}`);
228
+ if (post.author_name)
229
+ rows.push(`${bold('Author')}: ${post.author_name}`);
230
+ if (post.published_at)
231
+ rows.push(`${bold('Published')}: ${post.published_at}`);
232
+ if (post.body_markdown !== undefined) {
233
+ rows.push('', post.body_markdown.trim() || dim('(empty body)'));
234
+ }
235
+ return rows.join('\n');
236
+ }
237
+ export function renderConnections(items) {
238
+ return table(items.map((item) => ({
239
+ id: item.id,
240
+ hostname: item.hostname,
241
+ method: item.method,
242
+ status: item.status,
243
+ ssl: item.ssl_status,
244
+ sections: item.mounted_sections?.join(',') || '',
245
+ })), [
246
+ { key: 'id', header: 'ID' },
247
+ { key: 'hostname', header: 'HOSTNAME' },
248
+ { key: 'method', header: 'METHOD' },
249
+ { key: 'status', header: 'STATUS' },
250
+ { key: 'ssl', header: 'SSL' },
251
+ { key: 'sections', header: 'SECTIONS' },
252
+ ]);
253
+ }
254
+ export function renderConnection(connection) {
255
+ const rows = [
256
+ `${bold('ID')}: ${cyan(connection.id)}`,
257
+ `${bold('Hostname')}: ${connection.hostname}`,
258
+ `${bold('Method')}: ${connection.method}`,
259
+ `${bold('Status')}: ${connection.status}`,
260
+ `${bold('SSL')}: ${connection.ssl_status}`,
261
+ ];
262
+ if (connection.expected_cname_target) {
263
+ rows.push(`${bold('Expected CNAME')}: ${connection.expected_cname_target}`);
264
+ }
265
+ if (connection.mounted_sections?.length) {
266
+ rows.push(`${bold('Sections')}: ${connection.mounted_sections.join(', ')}`);
267
+ }
268
+ if (connection.last_error) {
269
+ rows.push(`${bold('Last error')}: ${connection.last_error}`);
270
+ }
271
+ return rows.join('\n');
272
+ }
273
+ export function renderWorkerProbe(probe) {
274
+ return [
275
+ `${bold('Cloudflare')}: ${probe.is_cloudflare ? 'yes' : 'no'}`,
276
+ `${bold('Vercel')}: ${probe.is_vercel ? 'yes' : 'no'}`,
277
+ `${bold('Conflicts')}: ${probe.conflicts.length ? probe.conflicts.join(', ') : dim('(none)')}`,
278
+ `${bold('Next.js assets')}: ${probe.serves_next_assets ? 'yes' : 'no'}`,
279
+ ].join('\n');
280
+ }
281
+ function usageError(error) {
282
+ if (error instanceof SeoHostingUsageError) {
283
+ emitError('usage', error.message, ExitCode.USAGE, error.hint);
284
+ }
285
+ throw error;
286
+ }
287
+ export function registerSeoHostingCommands(program) {
288
+ const seoHosting = program.command('seo-hosting').description('Manage SEO Hosting');
289
+ seoHosting
290
+ .command('status')
291
+ .description('Check whether the active brand has live SEO Hosting')
292
+ .action(async () => {
293
+ const data = await callSeoHostingAction('get_hosting_status');
294
+ emitSuccess(data, renderHostingStatus);
295
+ });
296
+ const posts = seoHosting.command('posts').description('Manage SEO Hosting posts');
297
+ posts
298
+ .command('list')
299
+ .description('List SEO Hosting posts for the active brand')
300
+ .option('--section <section>', 'Filter by section: blog, use-cases, alternatives')
301
+ .option('--status <status>', 'Filter by status: draft, published, archived')
302
+ .action(async (opts) => {
303
+ const payload = {};
304
+ addString(payload, 'section', opts.section);
305
+ addString(payload, 'status', opts.status);
306
+ const data = await callSeoHostingAction('list_posts', payload);
307
+ emitSuccess(data, (d) => renderPosts(d.items));
308
+ });
309
+ posts
310
+ .command('get <postId>')
311
+ .description('Read one SEO Hosting post including its Markdown body')
312
+ .action(async (postId) => {
313
+ const data = await callSeoHostingAction('get_post', { post_id: postId });
314
+ emitSuccess(data, renderPost);
315
+ });
316
+ posts
317
+ .command('create')
318
+ .description('Create a draft SEO Hosting post')
319
+ .requiredOption('--title <title>', 'Post title')
320
+ .option('--body <markdown>', 'Post body as Markdown')
321
+ .option('--body-file <path>', 'Read Markdown body from a file')
322
+ .option('--body-stdin', 'Read Markdown body from stdin')
323
+ .option('--slug <slug>', 'Optional URL slug; derived from title when omitted')
324
+ .option('--section <section>', 'Content section: blog, use-cases, alternatives')
325
+ .option('--excerpt <text>', 'Short excerpt')
326
+ .option('--cover-image-url <url>', 'Cover image URL')
327
+ .option('--author-name <name>', 'Display author name')
328
+ .option('--seo <json>', 'SEO overrides JSON object')
329
+ .action(async (opts) => {
330
+ let payload;
331
+ try {
332
+ payload = await buildPostCreatePayload(opts);
333
+ }
334
+ catch (err) {
335
+ usageError(err);
336
+ }
337
+ const data = await callSeoHostingAction('create_post', payload);
338
+ emitSuccess(data, renderPost);
339
+ });
340
+ posts
341
+ .command('update <postId>')
342
+ .description('Update a SEO Hosting post')
343
+ .option('--title <title>', 'New title')
344
+ .option('--body <markdown>', 'New body as Markdown')
345
+ .option('--body-file <path>', 'Read new Markdown body from a file')
346
+ .option('--body-stdin', 'Read new Markdown body from stdin')
347
+ .option('--excerpt <text>', 'New excerpt')
348
+ .option('--cover-image-url <url>', 'New cover image URL')
349
+ .option('--author-name <name>', 'New display author name')
350
+ .option('--seo <json>', 'SEO overrides JSON object')
351
+ .action(async (postId, opts) => {
352
+ let payload;
353
+ try {
354
+ payload = await buildPostUpdatePayload(postId, opts);
355
+ }
356
+ catch (err) {
357
+ usageError(err);
358
+ }
359
+ const data = await callSeoHostingAction('update_post', payload);
360
+ emitSuccess(data, renderPost);
361
+ });
362
+ posts
363
+ .command('publish <postId>')
364
+ .description('Publish a SEO Hosting post')
365
+ .action(async (postId) => {
366
+ const data = await callSeoHostingAction('publish_post', { post_id: postId });
367
+ emitSuccess(data, renderPost);
368
+ });
369
+ posts
370
+ .command('delete <postId>')
371
+ .description('Soft-delete a SEO Hosting post')
372
+ .option('--confirm', 'Confirm the delete')
373
+ .action(async (postId, opts) => {
374
+ if (!opts.confirm) {
375
+ emitError('confirmation_required', 'Delete requires explicit confirmation.', ExitCode.USAGE, 'Re-run with --confirm.');
376
+ }
377
+ const data = await callSeoHostingAction('delete_post', { post_id: postId });
378
+ emitSuccess(data, renderPost);
379
+ });
380
+ const connections = seoHosting
381
+ .command('connections')
382
+ .description('Manage SEO Hosting domain connections');
383
+ connections
384
+ .command('list')
385
+ .description('List domain connections for the active brand')
386
+ .action(async () => {
387
+ const data = await apiRequest(CONNECTIONS_PATH, {
388
+ workspace: true,
389
+ });
390
+ emitSuccess(data, (d) => renderConnections(d.items));
391
+ });
392
+ connections
393
+ .command('probe')
394
+ .description('Probe a hostname before Cloudflare Worker provisioning')
395
+ .requiredOption('--hostname <hostname>', 'Customer hostname, for example example.com')
396
+ .option('--sections <sections>', 'Comma-separated sections to mount', DEFAULT_SECTIONS.join(','))
397
+ .action(async (opts) => {
398
+ let sections;
399
+ try {
400
+ sections = parseSections(opts.sections);
401
+ }
402
+ catch (err) {
403
+ usageError(err);
404
+ }
405
+ const data = await apiRequest(`${CONNECTIONS_PATH}/worker/probe`, {
406
+ method: 'POST',
407
+ workspace: true,
408
+ body: { hostname: opts.hostname, sections },
409
+ });
410
+ emitSuccess(data, renderWorkerProbe);
411
+ });
412
+ connections
413
+ .command('connect-cname')
414
+ .description('Connect a CNAME SEO Hosting hostname')
415
+ .requiredOption('--hostname <hostname>', 'Customer hostname, for example blog.example.com')
416
+ .action(async (opts) => {
417
+ const data = await apiRequest(CONNECTIONS_PATH, {
418
+ method: 'POST',
419
+ workspace: true,
420
+ body: { hostname: opts.hostname },
421
+ });
422
+ emitSuccess(data, renderConnection);
423
+ });
424
+ connections
425
+ .command('connect-worker')
426
+ .description('Connect a Cloudflare Worker reverse proxy')
427
+ .requiredOption('--hostname <hostname>', 'Customer hostname, for example example.com')
428
+ .option('--sections <sections>', 'Comma-separated sections to mount', DEFAULT_SECTIONS.join(','))
429
+ .option('--cf-token-env <name>', 'Read the Cloudflare API token from this environment variable')
430
+ .option('--cf-token-stdin', 'Read the Cloudflare API token from stdin')
431
+ .option('--accept-conflicts', 'Allow SEO Hosting routes to shadow existing mounted paths')
432
+ .option('--accept-next-assets-warning', 'Allow /_next/static/* to route through the Worker')
433
+ .action(async (opts) => {
434
+ let sections;
435
+ try {
436
+ sections = parseSections(opts.sections);
437
+ validateCloudflareTokenOptions(opts);
438
+ }
439
+ catch (err) {
440
+ usageError(err);
441
+ }
442
+ const probe = await apiRequest(`${CONNECTIONS_PATH}/worker/probe`, {
443
+ method: 'POST',
444
+ workspace: true,
445
+ body: { hostname: opts.hostname, sections },
446
+ });
447
+ const blocker = workerProbeBlocker(probe, opts);
448
+ if (blocker)
449
+ usageError(blocker);
450
+ let token;
451
+ try {
452
+ token = await readCloudflareToken(opts);
453
+ }
454
+ catch (err) {
455
+ usageError(err);
456
+ }
457
+ const connection = await apiRequest(`${CONNECTIONS_PATH}/worker`, {
458
+ method: 'POST',
459
+ workspace: true,
460
+ body: { hostname: opts.hostname, sections, api_token: token },
461
+ });
462
+ emitSuccess({ connection, probe }, (d) => [renderConnection(d.connection), '', bold('Probe'), renderWorkerProbe(d.probe)].join('\n'));
463
+ });
464
+ connections
465
+ .command('verify <connectionId>')
466
+ .description('Run one verification pass')
467
+ .action(async (connectionId) => {
468
+ const data = await apiRequest(domainConnectionPath(connectionId, 'verify'), {
469
+ method: 'POST',
470
+ workspace: true,
471
+ });
472
+ emitSuccess(data, renderConnection);
473
+ });
474
+ connections
475
+ .command('disconnect <connectionId>')
476
+ .description('Disconnect a domain connection')
477
+ .option('--confirm', 'Confirm the disconnect')
478
+ .action(async (connectionId, opts) => {
479
+ if (!opts.confirm) {
480
+ emitError('confirmation_required', 'Disconnect requires explicit confirmation.', ExitCode.USAGE, 'Re-run with --confirm.');
481
+ }
482
+ const data = await apiRequest(domainConnectionPath(connectionId), {
483
+ method: 'DELETE',
484
+ workspace: true,
485
+ });
486
+ emitSuccess(data, renderConnection);
487
+ });
488
+ }
489
+ //# sourceMappingURL=seo-hosting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-hosting.js","sourceRoot":"","sources":["../../src/commands/seo-hosting.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,63 @@
1
1
  /** `soku skill` — discover and install Soku skills into an AI client.
2
2
  *
3
- * - `soku skill list` browse the public skill catalog (CDN)
3
+ * - `soku skill list` browse the public Soku skill catalog
4
4
  * - `soku skill install <slug...>` download + install business skills
5
5
  * - `soku skill install --all` install the whole catalog
6
6
  * - `soku skill install` (no slug) install just the bundled `soku` meta-skill
7
- * - `soku skill installed` / `remove` manage what's installed locally
7
+ * - `soku skill status` / `remove` manage what's installed locally
8
8
  *
9
- * Business skills are fetched as per-skill zips from a public CDN
10
- * (`cdn.soku.ai/skills/`), already translated to CLI-native at pack time. We
11
- * verify the sha256 from index.json, unzip safely, and drop each business skill
12
- * into `<skillsDir>/soku/<slug>/` with a top-level symlink
9
+ * Business skills are fetched as per-skill zips from the public Soku skill
10
+ * catalog, already translated to CLI-native at pack time. We verify the sha256
11
+ * from index.json, unzip safely, and drop each business skill into
12
+ * `<skillsDir>/soku/<slug>/` with a top-level symlink
13
13
  * `<skillsDir>/soku-<slug> -> soku/<slug>`. The bundled `soku` meta-skill (how
14
14
  * to drive the CLI) ships in the npm package and is installed as a prerequisite. */
15
15
  import { Command } from 'commander';
16
- interface ManifestRecord {
16
+ export declare const SOKU_META = "soku";
17
+ export declare const MANIFEST_FILE = ".soku-skills.json";
18
+ export type Agent = 'claude' | 'codex' | 'cursor';
19
+ export declare const AGENTS: Agent[];
20
+ export declare const PROJECT_DIRS: Record<Agent, string>;
21
+ export declare const GLOBAL_DIRS: Record<Agent, string>;
22
+ export interface IndexEntry {
23
+ slug: string;
24
+ name: string;
25
+ description: string;
26
+ category?: string | null;
27
+ version?: string | null;
28
+ providers?: string[];
29
+ tags?: string[];
30
+ zip: string;
31
+ sha256: string;
32
+ bytes: number;
33
+ }
34
+ export interface SkillIndex {
35
+ schema: number;
36
+ generated_at: string;
37
+ source_commit: string;
38
+ base_url: string;
39
+ count: number;
40
+ skills: IndexEntry[];
41
+ }
42
+ export interface ManifestRecord {
17
43
  version?: string | null;
18
44
  sha256: string;
19
45
  installed_at: string;
20
- source: 'cdn' | 'bundled';
46
+ source: 'catalog' | 'cdn' | 'bundled';
21
47
  }
22
- type Manifest = Record<string, ManifestRecord>;
48
+ export type Manifest = Record<string, ManifestRecord>;
49
+ export declare function baseDirFor(agent: Agent, global: boolean): string;
50
+ export declare function parseAgents(value: string): Agent[];
23
51
  /** A slug is safe to use as a path segment (no traversal/separators). Exported for tests. */
24
52
  export declare function isSafeSlug(slug: string): boolean;
53
+ export declare function manifestPath(baseDir: string): string;
25
54
  export declare function loadManifest(baseDir: string): Manifest;
26
55
  export declare function saveManifest(baseDir: string, manifest: Manifest): void;
56
+ export declare function agentSkillName(slug: string): string;
57
+ export declare function fetchIndex(base: string): Promise<SkillIndex>;
58
+ /** Copy the bundled `soku` meta-skill into a client dir without deleting child skills. */
59
+ export declare function installMetaSoku(baseDir: string): string;
60
+ /** Download, verify, unzip, and install one business skill. */
61
+ export declare function installBusinessSkill(baseDir: string, entry: IndexEntry, base: string): Promise<string>;
27
62
  export declare function registerSkillCommand(program: Command): void;
28
- export {};
29
63
  //# sourceMappingURL=skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;oFAaoF;AAQpF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6CnC,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAA;CAC1B;AAED,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AA6B9C,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAYD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMtD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQtE;AA4KD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8H3D"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;oFAaoF;AAQpF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,SAAS,SAAS,CAAA;AAC/B,eAAO,MAAM,aAAa,sBAAsB,CAAA;AAEhD,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEjD,eAAO,MAAM,MAAM,EAAE,KAAK,EAAkC,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAI9C,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAI7C,CAAA;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,CAAA;CACtC;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAYrD,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAIlD;AASD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAQD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMtD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQtE;AAcD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AA8CD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoBlE;AAeD,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED,+DAA+D;AAC/D,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2C5G;AAuDD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6H3D"}