@soku-ai/cli 0.1.0-alpha.17 → 0.1.0-alpha.19
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/README.md +33 -22
- package/dist/commands/auth.d.ts +1 -3
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +18 -3
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/automation.d.ts +46 -0
- package/dist/commands/automation.d.ts.map +1 -1
- package/dist/commands/automation.js +150 -0
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/brand-skill.d.ts +23 -0
- package/dist/commands/brand-skill.d.ts.map +1 -1
- package/dist/commands/brand-skill.js +82 -0
- package/dist/commands/brand-skill.js.map +1 -1
- package/dist/commands/changelog.d.ts +79 -0
- package/dist/commands/changelog.d.ts.map +1 -0
- package/dist/commands/changelog.js +123 -0
- package/dist/commands/changelog.js.map +1 -0
- package/dist/commands/context.d.ts +54 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +362 -43
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/egress.d.ts +49 -1
- package/dist/commands/egress.d.ts.map +1 -1
- package/dist/commands/egress.js +287 -33
- package/dist/commands/egress.js.map +1 -1
- package/dist/commands/generated.d.ts +8 -3
- package/dist/commands/generated.d.ts.map +1 -1
- package/dist/commands/generated.js +10 -3
- package/dist/commands/generated.js.map +1 -1
- package/dist/commands/live-surface.d.ts +15 -0
- package/dist/commands/live-surface.d.ts.map +1 -0
- package/dist/commands/live-surface.js +96 -0
- package/dist/commands/live-surface.js.map +1 -0
- package/dist/commands/workspace.d.ts +13 -0
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +34 -7
- package/dist/commands/workspace.js.map +1 -1
- package/dist/generated/capabilities.json +7710 -2318
- package/dist/generated/changelog.json +2232 -0
- package/dist/http/client.d.ts +17 -0
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +34 -5
- package/dist/http/client.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/output/envelope.d.ts +2 -1
- package/dist/output/envelope.d.ts.map +1 -1
- package/dist/output/envelope.js +2 -2
- package/dist/output/envelope.js.map +1 -1
- package/dist/upload-journal.d.ts +46 -0
- package/dist/upload-journal.d.ts.map +1 -0
- package/dist/upload-journal.js +102 -0
- package/dist/upload-journal.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -5
- package/skills/soku/SKILL.md +74 -12
- package/skills/soku/agents/openai.yaml +4 -0
- package/skills/soku/references/ads-write.md +12 -6
- package/skills/soku/references/auth-workspace.md +27 -12
- package/skills/soku/references/data-capabilities.md +22 -1
- package/skills/soku/references/egress-security.md +63 -0
- package/skills/soku/references/seo-automation-files.md +67 -3
- package/skills/soku/references/skills-updates.md +54 -0
package/dist/commands/egress.js
CHANGED
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
* failures (auth, allowlist, billing) become a CLI error envelope.
|
|
10
10
|
*/
|
|
11
11
|
import { randomUUID } from 'node:crypto';
|
|
12
|
-
import { readFileSync } from 'node:fs';
|
|
12
|
+
import { createWriteStream, readFileSync } from 'node:fs';
|
|
13
13
|
import { Readable } from 'node:stream';
|
|
14
14
|
import { pipeline } from 'node:stream/promises';
|
|
15
|
+
import { InvalidArgumentError } from 'commander';
|
|
15
16
|
import { clearToken, loadToken } from '../auth/store.js';
|
|
16
17
|
import { loadConfig, resolveApiBaseUrl } from '../config.js';
|
|
17
18
|
import { apiRequest } from '../http/client.js';
|
|
@@ -19,73 +20,264 @@ import { cyan, dim, emitError, emitSuccess, ExitCode, table } from '../output/en
|
|
|
19
20
|
// A header value carrying only an auth scheme word (or nothing) — the result of
|
|
20
21
|
// `-H "Authorization: Bearer $X"` when `$X` is unset. Not a real credential.
|
|
21
22
|
const PLACEHOLDER_AUTH = /^\s*(bearer|token|key|basic)?\s*$/i;
|
|
23
|
+
export class CurlUsageError extends Error {
|
|
24
|
+
hint;
|
|
25
|
+
constructor(message, hint) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.hint = hint;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
22
30
|
function readData(value) {
|
|
31
|
+
// `@-` means stdin, which is how the published Gemini skills feed a heredoc
|
|
32
|
+
// JSON body. `readFileSync('-')` looked for a file literally named `-`.
|
|
33
|
+
if (value === '@-')
|
|
34
|
+
return readFileSync(0);
|
|
23
35
|
if (value.startsWith('@'))
|
|
24
36
|
return readFileSync(value.slice(1));
|
|
25
37
|
return Buffer.from(value);
|
|
26
38
|
}
|
|
27
|
-
/**
|
|
39
|
+
/** Encode exactly as curl's `--data-urlencode` does.
|
|
40
|
+
*
|
|
41
|
+
* Measured against curl 8.7.1 rather than assumed, because two details are easy
|
|
42
|
+
* to get wrong and both change the bytes the upstream receives:
|
|
43
|
+
*
|
|
44
|
+
* - a space becomes `+`, NOT `%20` — this is form encoding, not RFC 3986
|
|
45
|
+
* - hex digits are LOWERCASE (`%2c`), where `encodeURIComponent` emits `%2C`
|
|
46
|
+
*
|
|
47
|
+
* Unreserved characters (`A-Za-z0-9-._~`) pass through; everything else is
|
|
48
|
+
* percent-encoded per UTF-8 byte. Matching curl is the point: the whole promise
|
|
49
|
+
* of `soku egress` is that prefixing an existing skill's curl changes nothing
|
|
50
|
+
* about the request that reaches the third party.
|
|
51
|
+
*/
|
|
52
|
+
export function curlEscape(value) {
|
|
53
|
+
let out = '';
|
|
54
|
+
for (const byte of Buffer.from(value, 'utf8')) {
|
|
55
|
+
const ch = String.fromCharCode(byte);
|
|
56
|
+
if (/[A-Za-z0-9\-._~]/.test(ch))
|
|
57
|
+
out += ch;
|
|
58
|
+
else if (ch === ' ')
|
|
59
|
+
out += '+';
|
|
60
|
+
else
|
|
61
|
+
out += `%${byte.toString(16).padStart(2, '0')}`;
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
/** Build one `--data-urlencode` segment, following curl's four forms.
|
|
66
|
+
*
|
|
67
|
+
* content -> encoded content, no name
|
|
68
|
+
* =content -> encoded content, no name (leading `=` dropped)
|
|
69
|
+
* name=content -> `name=` kept literal, content encoded
|
|
70
|
+
* @file -> encoded file bytes, no name
|
|
71
|
+
* name@file -> `name=` kept literal, encoded file bytes
|
|
72
|
+
*
|
|
73
|
+
* Whichever of `=` or `@` appears first decides the form, matching curl.
|
|
74
|
+
*/
|
|
75
|
+
export function buildUrlEncodedSegment(spec, readFile = (path) => readFileSync(path, 'utf8')) {
|
|
76
|
+
const eq = spec.indexOf('=');
|
|
77
|
+
const at = spec.indexOf('@');
|
|
78
|
+
if (eq !== -1 && (at === -1 || eq < at)) {
|
|
79
|
+
const name = spec.slice(0, eq);
|
|
80
|
+
const content = spec.slice(eq + 1);
|
|
81
|
+
return name ? `${name}=${curlEscape(content)}` : curlEscape(content);
|
|
82
|
+
}
|
|
83
|
+
if (at !== -1) {
|
|
84
|
+
const name = spec.slice(0, at);
|
|
85
|
+
const path = spec.slice(at + 1);
|
|
86
|
+
let content;
|
|
87
|
+
try {
|
|
88
|
+
content = path === '-' ? readFileSync(0, 'utf8') : readFile(path);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
throw new CurlUsageError(`--data-urlencode could not read file: ${path} (${err.message})`);
|
|
92
|
+
}
|
|
93
|
+
return name ? `${name}=${curlEscape(content)}` : curlEscape(content);
|
|
94
|
+
}
|
|
95
|
+
return curlEscape(spec);
|
|
96
|
+
}
|
|
97
|
+
/** Short flags that take no value, so `-sSL` can be split into `-s -S -L`. */
|
|
98
|
+
const NO_VALUE_SHORT = new Set(['s', 'S', 'i', 'v', 'k', 'f', 'L', 'G', 'I', 'g', 'j', '#']);
|
|
99
|
+
/** Flags accepted and deliberately ignored, with no value to consume.
|
|
100
|
+
*
|
|
101
|
+
* Every one of these shapes curl's LOCAL behaviour — stderr noise, TLS
|
|
102
|
+
* strictness, redirect handling, exit-code policy — and cannot change the
|
|
103
|
+
* `{method, url, headers, body}` this command forwards. Ignoring them is
|
|
104
|
+
* therefore not silent data loss; dropping a flag that WOULD change the request
|
|
105
|
+
* is, which is why anything not listed here is now an error.
|
|
106
|
+
*/
|
|
107
|
+
const IGNORED_NO_VALUE = new Set([
|
|
108
|
+
'-s', '--silent',
|
|
109
|
+
'-S', '--show-error',
|
|
110
|
+
'-i', '--include',
|
|
111
|
+
'-v', '--verbose',
|
|
112
|
+
'-k', '--insecure',
|
|
113
|
+
'-f', '--fail', '--fail-with-body', '--fail-early',
|
|
114
|
+
'-L', '--location', '--location-trusted',
|
|
115
|
+
'--compressed',
|
|
116
|
+
'--no-progress-meter',
|
|
117
|
+
'-#', '--progress-bar',
|
|
118
|
+
'--retry-all-errors', '--retry-connrefused',
|
|
119
|
+
'-g', '--globoff',
|
|
120
|
+
'-j', '--junk-session-cookies',
|
|
121
|
+
'--no-keepalive',
|
|
122
|
+
'--tcp-nodelay',
|
|
123
|
+
]);
|
|
124
|
+
/** Accepted-and-ignored flags that consume one value.
|
|
125
|
+
*
|
|
126
|
+
* Consuming the value is the point: an unconsumed value becomes a stray token,
|
|
127
|
+
* which is exactly how `--data-urlencode country=us` used to lose its argument.
|
|
128
|
+
*/
|
|
129
|
+
const IGNORED_WITH_VALUE = new Set([
|
|
130
|
+
'-m', '--max-time',
|
|
131
|
+
'--connect-timeout',
|
|
132
|
+
'--retry', '--retry-delay', '--retry-max-time',
|
|
133
|
+
'--limit-rate',
|
|
134
|
+
'-w', '--write-out',
|
|
135
|
+
'--resolve',
|
|
136
|
+
'--max-redirs',
|
|
137
|
+
'--noproxy',
|
|
138
|
+
'-D', '--dump-header',
|
|
139
|
+
]);
|
|
140
|
+
/** Long options that consume one value, and so also accept `--flag=value`. */
|
|
141
|
+
const LONG_WITH_VALUE = new Set([
|
|
142
|
+
'--request', '--header',
|
|
143
|
+
'--data', '--data-raw', '--data-ascii', '--data-binary', '--data-urlencode',
|
|
144
|
+
'--url', '--output',
|
|
145
|
+
...[...IGNORED_WITH_VALUE].filter((f) => f.startsWith('--')),
|
|
146
|
+
]);
|
|
147
|
+
/** Expand a bundled short-flag token (`-sSL`) into its parts.
|
|
148
|
+
*
|
|
149
|
+
* Only bundles made entirely of no-value short flags expand; anything else is
|
|
150
|
+
* rejected rather than guessed at, because a bundle ending in a value-taking
|
|
151
|
+
* flag (`-so out.json`) would otherwise silently mis-assign the value.
|
|
152
|
+
*/
|
|
153
|
+
export function expandShortBundle(token) {
|
|
154
|
+
if (!/^-[A-Za-z#]{2,}$/.test(token))
|
|
155
|
+
return null;
|
|
156
|
+
const letters = token.slice(1).split('');
|
|
157
|
+
if (!letters.every((c) => NO_VALUE_SHORT.has(c)))
|
|
158
|
+
return null;
|
|
159
|
+
return letters.map((c) => `-${c}`);
|
|
160
|
+
}
|
|
161
|
+
/** Extract method / url / headers / body from a curl-style token list. Pure.
|
|
162
|
+
*
|
|
163
|
+
* Anything this parser does not understand is now an error. The previous
|
|
164
|
+
* behaviour — skip the flag, and do not consume its value — meant an
|
|
165
|
+
* unsupported flag vanished, its value was dropped as a stray token, and the
|
|
166
|
+
* request went out anyway with parameters missing. The upstream then answered
|
|
167
|
+
* about the first thing it noticed missing, which sent every investigation in
|
|
168
|
+
* the wrong direction.
|
|
169
|
+
*/
|
|
28
170
|
export function parseCurl(tokens) {
|
|
29
171
|
const headers = {};
|
|
30
172
|
let method;
|
|
31
173
|
let url;
|
|
32
|
-
let
|
|
174
|
+
let output;
|
|
33
175
|
let getMode = false;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
176
|
+
// Every data flag appends here, and the parts join with `&`, matching curl.
|
|
177
|
+
// Assigning instead (the old behaviour) meant `-d a=1 -d b=2` sent only b=2.
|
|
178
|
+
const dataParts = [];
|
|
179
|
+
const expanded = [];
|
|
180
|
+
const start = tokens[0] === 'curl' ? 1 : 0;
|
|
181
|
+
for (let i = start; i < tokens.length; i++) {
|
|
182
|
+
const bundle = expandShortBundle(tokens[i]);
|
|
183
|
+
if (bundle)
|
|
184
|
+
expanded.push(...bundle);
|
|
185
|
+
else
|
|
186
|
+
expanded.push(tokens[i]);
|
|
187
|
+
}
|
|
188
|
+
for (let i = 0; i < expanded.length; i++) {
|
|
189
|
+
let t = expanded[i];
|
|
190
|
+
// curl also accepts the glued `--flag=value` form. Un-glue only here, in
|
|
191
|
+
// option position, and only for long options we know take a value — so a
|
|
192
|
+
// VALUE that merely looks like one (`--data '--url=x'`) stays literal, and
|
|
193
|
+
// an unknown glued option still fails as unsupported instead of becoming
|
|
194
|
+
// the URL. Splits on the first `=`, so `--header=X: a=b` keeps `a=b`.
|
|
195
|
+
let inline;
|
|
196
|
+
const eq = t.indexOf('=');
|
|
197
|
+
if (t.startsWith('--') && eq > 2 && LONG_WITH_VALUE.has(t.slice(0, eq))) {
|
|
198
|
+
inline = t.slice(eq + 1);
|
|
199
|
+
t = t.slice(0, eq);
|
|
200
|
+
}
|
|
201
|
+
const requireValue = (flag) => {
|
|
202
|
+
if (inline !== undefined)
|
|
203
|
+
return inline;
|
|
204
|
+
const v = expanded[++i];
|
|
205
|
+
if (v === undefined)
|
|
206
|
+
throw new CurlUsageError(`${flag} expects a value.`);
|
|
207
|
+
return v;
|
|
208
|
+
};
|
|
37
209
|
switch (t) {
|
|
38
210
|
case '-X':
|
|
39
211
|
case '--request':
|
|
40
|
-
method =
|
|
212
|
+
method = requireValue(t).toUpperCase();
|
|
213
|
+
break;
|
|
214
|
+
case '-I':
|
|
215
|
+
case '--head':
|
|
216
|
+
method = 'HEAD';
|
|
41
217
|
break;
|
|
42
218
|
case '-H':
|
|
43
219
|
case '--header': {
|
|
44
|
-
const h =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
headers[h.slice(0, idx).trim().toLowerCase()] = h.slice(idx + 1).trim();
|
|
49
|
-
}
|
|
220
|
+
const h = requireValue(t);
|
|
221
|
+
const idx = h.indexOf(':');
|
|
222
|
+
if (idx > 0)
|
|
223
|
+
headers[h.slice(0, idx).trim().toLowerCase()] = h.slice(idx + 1).trim();
|
|
50
224
|
break;
|
|
51
225
|
}
|
|
52
226
|
case '-d':
|
|
53
227
|
case '--data':
|
|
54
228
|
case '--data-raw':
|
|
55
229
|
case '--data-ascii':
|
|
56
|
-
case '--data-binary':
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
230
|
+
case '--data-binary':
|
|
231
|
+
dataParts.push(readData(requireValue(t)).toString());
|
|
232
|
+
break;
|
|
233
|
+
case '--data-urlencode':
|
|
234
|
+
dataParts.push(buildUrlEncodedSegment(requireValue(t)));
|
|
60
235
|
break;
|
|
61
|
-
}
|
|
62
236
|
case '-G':
|
|
63
237
|
case '--get':
|
|
64
238
|
getMode = true;
|
|
65
239
|
break;
|
|
66
240
|
case '--url':
|
|
67
|
-
url =
|
|
241
|
+
url = requireValue(t);
|
|
68
242
|
break;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
// Unknown flags are skipped; we do not consume their value, so a few
|
|
73
|
-
// exotic curl flags may leak a token — the documented subset is
|
|
74
|
-
// -X/-H/-d/--data*/-G/--url + the URL.
|
|
243
|
+
case '-o':
|
|
244
|
+
case '--output':
|
|
245
|
+
output = requireValue(t);
|
|
75
246
|
break;
|
|
247
|
+
default: {
|
|
248
|
+
if (IGNORED_NO_VALUE.has(t))
|
|
249
|
+
break;
|
|
250
|
+
if (IGNORED_WITH_VALUE.has(t)) {
|
|
251
|
+
requireValue(t);
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
if (t.startsWith('-')) {
|
|
255
|
+
throw new CurlUsageError(`Unsupported curl flag: ${t}`, 'soku egress forwards {method, url, headers, body}. Supported: ' +
|
|
256
|
+
'-X/--request, -I/--head, -H/--header, -d/--data(-raw|-ascii|-binary), ' +
|
|
257
|
+
'--data-urlencode, -G/--get, --url, -o/--output. ' +
|
|
258
|
+
'Rewrite the request without this flag, or open an issue to add it.');
|
|
259
|
+
}
|
|
260
|
+
if (url !== undefined) {
|
|
261
|
+
throw new CurlUsageError(`Unexpected argument: ${t}`, 'Only one URL is supported; a stray argument usually means a flag before it was misspelled.');
|
|
262
|
+
}
|
|
263
|
+
url = t;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
76
266
|
}
|
|
77
267
|
}
|
|
268
|
+
const data = dataParts.join('&');
|
|
269
|
+
let body = data ? Buffer.from(data) : undefined;
|
|
78
270
|
if (!method)
|
|
79
271
|
method = body ? 'POST' : 'GET';
|
|
80
272
|
if (getMode && body && url) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
url =
|
|
273
|
+
// Append the already-encoded query verbatim. Round-tripping it through
|
|
274
|
+
// URLSearchParams would re-encode it, changing the exact bytes curl would
|
|
275
|
+
// have sent (uppercase hex, and `%2A` where curl writes `%2a`).
|
|
276
|
+
url = `${url}${url.includes('?') ? '&' : '?'}${data}`;
|
|
85
277
|
body = undefined;
|
|
86
278
|
method = 'GET';
|
|
87
279
|
}
|
|
88
|
-
return { method, url, headers, body };
|
|
280
|
+
return { method, url, headers, body, output };
|
|
89
281
|
}
|
|
90
282
|
/** Drop empty / bare-scheme auth headers so the server injects the real key
|
|
91
283
|
* (an empty `Authorization: Bearer ` would otherwise be treated as BYO). */
|
|
@@ -117,6 +309,10 @@ function egressErrorExit(status, type, message) {
|
|
|
117
309
|
: ExitCode.RUNTIME;
|
|
118
310
|
return emitError(type, message, code);
|
|
119
311
|
}
|
|
312
|
+
/** Where the upstream body goes: the `-o` file, or stdout when none was given. */
|
|
313
|
+
export function responseSink(output) {
|
|
314
|
+
return output ? createWriteStream(output) : process.stdout;
|
|
315
|
+
}
|
|
120
316
|
async function runEgress(parsed) {
|
|
121
317
|
if (!parsed.url) {
|
|
122
318
|
emitError('usage', 'No URL found in the egress request.', ExitCode.USAGE, 'Usage: soku egress -- curl <url>');
|
|
@@ -160,12 +356,29 @@ async function runEgress(parsed) {
|
|
|
160
356
|
const message = String(errObj.message ?? `Egress failed (HTTP ${res.status}).`);
|
|
161
357
|
egressErrorExit(res.status, type, message);
|
|
162
358
|
}
|
|
163
|
-
// Passthrough: stream the upstream body to
|
|
359
|
+
// Passthrough: stream the upstream body verbatim — to the `-o` file when the
|
|
360
|
+
// caller asked for one, otherwise stdout. Skills that download binary assets
|
|
361
|
+
// (a rendered screenshot, say) pass `-o`, and dropping it would put the bytes
|
|
362
|
+
// on stdout while the next step went looking for a file that never appeared.
|
|
164
363
|
if (res.body) {
|
|
165
|
-
|
|
364
|
+
const source = Readable.fromWeb(res.body);
|
|
365
|
+
await pipeline(source, responseSink(parsed.output));
|
|
166
366
|
}
|
|
167
367
|
process.exit(ExitCode.OK);
|
|
168
368
|
}
|
|
369
|
+
function parseCapabilityArguments(raw) {
|
|
370
|
+
let value;
|
|
371
|
+
try {
|
|
372
|
+
value = JSON.parse(raw.startsWith('@') ? readFileSync(raw.slice(1), 'utf8') : raw);
|
|
373
|
+
}
|
|
374
|
+
catch {
|
|
375
|
+
throw new InvalidArgumentError('Expected a JSON object or @path to a JSON file.');
|
|
376
|
+
}
|
|
377
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
378
|
+
throw new InvalidArgumentError('Capability arguments must be a JSON object.');
|
|
379
|
+
}
|
|
380
|
+
return value;
|
|
381
|
+
}
|
|
169
382
|
export function registerEgressCommands(program) {
|
|
170
383
|
const egress = program
|
|
171
384
|
.command('egress')
|
|
@@ -173,7 +386,48 @@ export function registerEgressCommands(program) {
|
|
|
173
386
|
.argument('[request...]', 'the third-party request, e.g. `-- curl -H "..." https://host/path`')
|
|
174
387
|
.allowUnknownOption()
|
|
175
388
|
.action(async (request) => {
|
|
176
|
-
|
|
389
|
+
let parsed;
|
|
390
|
+
try {
|
|
391
|
+
parsed = parseCurl(request);
|
|
392
|
+
}
|
|
393
|
+
catch (err) {
|
|
394
|
+
if (err instanceof CurlUsageError) {
|
|
395
|
+
emitError('usage', err.message, ExitCode.USAGE, err.hint);
|
|
396
|
+
}
|
|
397
|
+
throw err;
|
|
398
|
+
}
|
|
399
|
+
await runEgress(parsed);
|
|
400
|
+
});
|
|
401
|
+
egress.command('capabilities')
|
|
402
|
+
.description('Discover vendor endpoint parameter contracts and quotes')
|
|
403
|
+
.option('--provider <id>', 'Filter by exact provider ID')
|
|
404
|
+
.option('--query <text>', 'Search capability slug, title, and summary')
|
|
405
|
+
.action(async (opts) => {
|
|
406
|
+
const data = await apiRequest('/api/cli/egress/capabilities', { workspace: true });
|
|
407
|
+
const query = opts.query?.toLowerCase();
|
|
408
|
+
const capabilities = data.capabilities.filter((card) => (!opts.provider || card.provider === opts.provider) &&
|
|
409
|
+
(!query || `${card.slug} ${card.title} ${card.summary}`.toLowerCase().includes(query)));
|
|
410
|
+
emitSuccess({ capabilities, count: capabilities.length });
|
|
411
|
+
});
|
|
412
|
+
egress.command('call <provider> <capability>')
|
|
413
|
+
.description('Bind capability arguments on the server and execute through metered egress')
|
|
414
|
+
.option('--args <json-or-file>', 'JSON argument object, or @path to a JSON file', parseCapabilityArguments, {})
|
|
415
|
+
.option('--dry-run', 'Return the bound request and quote without calling or charging the vendor')
|
|
416
|
+
.option('-o, --output <file>', 'Write the upstream response body to this file')
|
|
417
|
+
.action(async (provider, capability, opts) => {
|
|
418
|
+
const bound = await apiRequest(`/api/cli/egress/capabilities/${encodeURIComponent(provider)}/${encodeURIComponent(capability)}/request`, { method: 'POST', workspace: true, body: { arguments: opts.args } });
|
|
419
|
+
if (opts.dryRun)
|
|
420
|
+
emitSuccess(bound);
|
|
421
|
+
const hasBody = bound.body !== null && bound.body !== undefined;
|
|
422
|
+
const headers = { ...bound.headers };
|
|
423
|
+
if (hasBody && !Object.keys(headers).some((name) => name.toLowerCase() === 'content-type')) {
|
|
424
|
+
headers['content-type'] = 'application/json';
|
|
425
|
+
}
|
|
426
|
+
await runEgress({
|
|
427
|
+
method: bound.method, url: bound.url, headers,
|
|
428
|
+
body: hasBody ? Buffer.from(JSON.stringify(bound.body)) : undefined,
|
|
429
|
+
output: opts.output,
|
|
430
|
+
});
|
|
177
431
|
});
|
|
178
432
|
egress
|
|
179
433
|
.command('providers')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"egress.js","sourceRoot":"","sources":["../../src/commands/egress.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"egress.js","sourceRoot":"","sources":["../../src/commands/egress.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
*
|
|
3
3
|
* The manifest (`src/generated/capabilities.json`, produced by
|
|
4
4
|
* `scripts/gen_cli_capabilities.py`) is an offline snapshot of the backend
|
|
5
|
-
* ActionSpec registry's full CLI surface — read + write + risk
|
|
6
|
-
* every granted resource. It is generated in-process (no live API / auth), and
|
|
5
|
+
* ActionSpec registry's full CLI surface — read + write + risk + generate
|
|
6
|
+
* actions across every granted resource. It is generated in-process (no live API / auth), and
|
|
7
7
|
* a CI guard (`tests/unit/test_cli_capability_manifest_sync.py`) fails if it
|
|
8
8
|
* drifts from the registry. Each action becomes a sub-command under its
|
|
9
9
|
* namespace (e.g. `soku ads query-single-dimension`), with one flag per input
|
|
@@ -20,13 +20,18 @@ export interface ManifestParam {
|
|
|
20
20
|
description: string;
|
|
21
21
|
example?: unknown;
|
|
22
22
|
}
|
|
23
|
+
/** Mirrors the backend registry's `Mode` literal. `generate` runs a paid model
|
|
24
|
+
* at a vendor and changes nothing in any customer system: not a write (no
|
|
25
|
+
* state), not a read (costs money). The registry forbids review-gating it, so
|
|
26
|
+
* the `--summary` injection below keys off `requires_review`, never `mode`. */
|
|
27
|
+
export type ManifestMode = 'read' | 'write' | 'risk' | 'generate';
|
|
23
28
|
export interface ManifestAction {
|
|
24
29
|
id: string;
|
|
25
30
|
namespace: string;
|
|
26
31
|
action: string;
|
|
27
32
|
description: string;
|
|
28
33
|
long_description: string | null;
|
|
29
|
-
mode:
|
|
34
|
+
mode: ManifestMode;
|
|
30
35
|
platforms: string[];
|
|
31
36
|
requires_review: boolean;
|
|
32
37
|
freshness_kind: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;+EAG+E;AAC/E,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAA;AAEjE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,IAAI,EAAE,YAAY,CAAA;IAClB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,aAAa,EAAE,CAAA;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAmDD;kEACkE;AAClE,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,KAAK,CAAC,CAMhB;AAED;;;;;oBAKoB;AACpB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAwBxE;AAyBD,sEAAsE;AACtE,wBAAgB,YAAY,IAAI,kBAAkB,CAGjD;AAED,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,YAAiB,GACtB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CA+EtB;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAKhE"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
*
|
|
3
3
|
* The manifest (`src/generated/capabilities.json`, produced by
|
|
4
4
|
* `scripts/gen_cli_capabilities.py`) is an offline snapshot of the backend
|
|
5
|
-
* ActionSpec registry's full CLI surface — read + write + risk
|
|
6
|
-
* every granted resource. It is generated in-process (no live API / auth), and
|
|
5
|
+
* ActionSpec registry's full CLI surface — read + write + risk + generate
|
|
6
|
+
* actions across every granted resource. It is generated in-process (no live API / auth), and
|
|
7
7
|
* a CI guard (`tests/unit/test_cli_capability_manifest_sync.py`) fails if it
|
|
8
8
|
* drifts from the registry. Each action becomes a sub-command under its
|
|
9
9
|
* namespace (e.g. `soku ads query-single-dimension`), with one flag per input
|
|
@@ -55,6 +55,9 @@ function modeBadge(spec) {
|
|
|
55
55
|
? '[write] proposes a review; approve with `soku review approve <id>`'
|
|
56
56
|
: '[write] executes immediately';
|
|
57
57
|
}
|
|
58
|
+
if (spec.mode === 'generate') {
|
|
59
|
+
return '[generate] runs a paid model and returns new content; changes nothing in customer systems; executes immediately';
|
|
60
|
+
}
|
|
58
61
|
return '';
|
|
59
62
|
}
|
|
60
63
|
/** POST a data action and emit its result. Shared by the generated commands and
|
|
@@ -151,7 +154,11 @@ export function buildGeneratedCommands(program, manifest, opts = {}) {
|
|
|
151
154
|
const flag = `--${toKebab(param.name)}`;
|
|
152
155
|
const desc = param.description || param.name;
|
|
153
156
|
if (param.type === 'boolean') {
|
|
154
|
-
|
|
157
|
+
if (param.required)
|
|
158
|
+
cmd.requiredOption(flag, desc);
|
|
159
|
+
else
|
|
160
|
+
cmd.option(flag, desc);
|
|
161
|
+
cmd.option(`--no-${toKebab(param.name)}`, `Set ${param.name} to false`);
|
|
155
162
|
continue;
|
|
156
163
|
}
|
|
157
164
|
const valueFlag = `${flag} <value>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** `soku live open | list | revoke | rotate-credential`
|
|
2
|
+
*
|
|
3
|
+
* A live surface is a link you hand to a person. They open it in their own
|
|
4
|
+
* browser and watch the resource change as you work on it, edit it themselves,
|
|
5
|
+
* and clear the writes that need a human.
|
|
6
|
+
*
|
|
7
|
+
* The approval credential is printed once, by `open` and `rotate-credential`,
|
|
8
|
+
* and never appears in the URL. That separation is the whole point: a link
|
|
9
|
+
* travels — forwarded, pasted, screenshotted — and a credential travelling with
|
|
10
|
+
* it would prove nothing while looking like proof. What gets recorded as
|
|
11
|
+
* "who approved this" depends on it.
|
|
12
|
+
*/
|
|
13
|
+
import { Command } from 'commander';
|
|
14
|
+
export declare function registerLiveSurfaceCommands(program: Command): void;
|
|
15
|
+
//# sourceMappingURL=live-surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-surface.d.ts","sourceRoot":"","sources":["../../src/commands/live-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBnC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsGlE"}
|