@soku-ai/cli 0.1.0-alpha.18 → 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/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/egress.d.ts.map +1 -1
- package/dist/commands/egress.js +66 -1
- 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/generated/capabilities.json +3535 -774
- package/dist/generated/changelog.json +784 -0
- package/dist/http/client.d.ts +2 -1
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +14 -5
- package/dist/http/client.js.map +1 -1
- package/dist/index.js +2 -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/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
- package/skills/soku/SKILL.md +61 -14
- package/skills/soku/agents/openai.yaml +4 -0
- package/skills/soku/references/ads-write.md +12 -6
- package/skills/soku/references/data-capabilities.md +22 -1
- package/skills/soku/references/egress-security.md +19 -0
- package/skills/soku/references/skills-updates.md +34 -3
package/dist/http/client.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare class ApiError extends Error {
|
|
|
21
21
|
readonly type: string;
|
|
22
22
|
readonly status: number;
|
|
23
23
|
readonly hint?: string | undefined;
|
|
24
|
-
|
|
24
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
25
|
+
constructor(type: string, message: string, status: number, hint?: string | undefined, details?: Record<string, unknown> | undefined);
|
|
25
26
|
}
|
|
26
27
|
export declare function apiRequest<T = unknown>(path: string, opts?: RequestOptions): Promise<T>;
|
|
27
28
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA;gFACgF;AAMhF,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,8EAA8E;AAC9E,qBAAa,QAAS,SAAQ,KAAK;IAE/B,QAAQ,CAAC,IAAI,EAAE,MAAM;IAErB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA;gFACgF;AAMhF,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,8EAA8E;AAC9E,qBAAa,QAAS,SAAQ,KAAK;IAE/B,QAAQ,CAAC,IAAI,EAAE,MAAM;IAErB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAJjC,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAK7C;AAED,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAyGjG"}
|
package/dist/http/client.js
CHANGED
|
@@ -8,11 +8,13 @@ export class ApiError extends Error {
|
|
|
8
8
|
type;
|
|
9
9
|
status;
|
|
10
10
|
hint;
|
|
11
|
-
|
|
11
|
+
details;
|
|
12
|
+
constructor(type, message, status, hint, details) {
|
|
12
13
|
super(message);
|
|
13
14
|
this.type = type;
|
|
14
15
|
this.status = status;
|
|
15
16
|
this.hint = hint;
|
|
17
|
+
this.details = details;
|
|
16
18
|
this.name = 'ApiError';
|
|
17
19
|
}
|
|
18
20
|
}
|
|
@@ -43,10 +45,10 @@ export async function apiRequest(path, opts = {}) {
|
|
|
43
45
|
const base = resolveApiBaseUrl(opts.apiBase);
|
|
44
46
|
// Status 0 marks a failure that never reached the server, so a caller
|
|
45
47
|
// classifying retriability sees "no answer" rather than a fabricated code.
|
|
46
|
-
const fail = (type, message, status, code, hint) => {
|
|
48
|
+
const fail = (type, message, status, code, hint, details) => {
|
|
47
49
|
if (opts.throwOnError)
|
|
48
|
-
throw new ApiError(type, message, status, hint);
|
|
49
|
-
return emitError(type, message, code, hint);
|
|
50
|
+
throw new ApiError(type, message, status, hint, details);
|
|
51
|
+
return emitError(type, message, code, hint, details);
|
|
50
52
|
};
|
|
51
53
|
let res;
|
|
52
54
|
try {
|
|
@@ -80,7 +82,7 @@ export async function apiRequest(path, opts = {}) {
|
|
|
80
82
|
return fail('not_found', describeError(parsed) ?? 'Not found.', res.status, ExitCode.NOT_FOUND);
|
|
81
83
|
}
|
|
82
84
|
if (res.status >= 400) {
|
|
83
|
-
return fail(describeCode(parsed) ?? 'request_failed', describeError(parsed) ?? `HTTP ${res.status}`, res.status, exitCodeForStatus(res.status), describeHint(parsed) ?? undefined);
|
|
85
|
+
return fail(describeCode(parsed) ?? 'request_failed', describeError(parsed) ?? `HTTP ${res.status}`, res.status, exitCodeForStatus(res.status), describeHint(parsed) ?? undefined, describeDetails(parsed));
|
|
84
86
|
}
|
|
85
87
|
return parsed;
|
|
86
88
|
}
|
|
@@ -127,6 +129,13 @@ function describeCode(parsed) {
|
|
|
127
129
|
return String(err.code);
|
|
128
130
|
return null;
|
|
129
131
|
}
|
|
132
|
+
function describeDetails(parsed) {
|
|
133
|
+
const detail = detailObject(parsed);
|
|
134
|
+
const value = responseSchemaError(detail)?.details ?? detail?.details ?? dispatcherErrorObject(parsed)?.details;
|
|
135
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
136
|
+
? value
|
|
137
|
+
: undefined;
|
|
138
|
+
}
|
|
130
139
|
function describeHint(parsed) {
|
|
131
140
|
const detail = detailObject(parsed);
|
|
132
141
|
const responseErr = responseSchemaError(detail);
|
package/dist/http/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA;gFACgF;AAEhF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAsB,MAAM,uBAAuB,CAAA;AAmB/E,8EAA8E;AAC9E,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEtB;IAEA;IACA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { registerContextCommands } from './commands/context.js';
|
|
|
11
11
|
import { registerEgressCommands } from './commands/egress.js';
|
|
12
12
|
import { registerFilesCommands } from './commands/files.js';
|
|
13
13
|
import { registerGeneratedCommands } from './commands/generated.js';
|
|
14
|
+
import { registerLiveSurfaceCommands } from './commands/live-surface.js';
|
|
14
15
|
import { registerMemoryCommands } from './commands/memory.js';
|
|
15
16
|
import { registerOrgCommands } from './commands/org.js';
|
|
16
17
|
import { registerReviewCommands } from './commands/review.js';
|
|
@@ -36,6 +37,7 @@ registerGeneratedCommands(program);
|
|
|
36
37
|
registerAdsCommands(program);
|
|
37
38
|
registerCallCommand(program);
|
|
38
39
|
registerEgressCommands(program);
|
|
40
|
+
registerLiveSurfaceCommands(program);
|
|
39
41
|
registerReviewCommands(program);
|
|
40
42
|
registerSeoHostingCommands(program);
|
|
41
43
|
registerContextCommands(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ export interface ErrorEnvelope {
|
|
|
20
20
|
type: string;
|
|
21
21
|
message: string;
|
|
22
22
|
hint?: string;
|
|
23
|
+
details?: Record<string, unknown>;
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
26
|
export declare function isTty(): boolean;
|
|
@@ -46,5 +47,5 @@ export declare function emitSuccess<T>(data: T, human?: (data: T) => string): ne
|
|
|
46
47
|
* the JSON results) but exit non-zero so scripts can detect the failures. */
|
|
47
48
|
export declare function emitSuccessExit<T>(data: T, code: ExitCodeValue, human?: (data: T) => string): never;
|
|
48
49
|
/** Print a structured error to stderr and exit with the given code. */
|
|
49
|
-
export declare function emitError(type: string, message: string, code?: ExitCodeValue, hint?: string): never;
|
|
50
|
+
export declare function emitError(type: string, message: string, code?: ExitCodeValue, hint?: string, details?: Record<string, unknown>): never;
|
|
50
51
|
//# sourceMappingURL=envelope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAClC,CAAA;CACF;AAED,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAMD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,WAAkB,CAAA;AAChD,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,WAAkB,CAAA;AAC/C,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,WAAmB,CAAA;AAClD,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,WAAmB,CAAA;AAChD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,WAAmB,CAAA;AAEjD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf;AAeD,+DAA+D;AAC/D,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAcrF;AAyFD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,KAAK,CAE1E;AAED;;6EAE6E;AAC7E,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,aAAa,EACnB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAC1B,KAAK,CASP;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,aAAgC,EACtC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,KAAK,CAaP"}
|
package/dist/output/envelope.js
CHANGED
|
@@ -166,7 +166,7 @@ export function emitSuccessExit(data, code, human) {
|
|
|
166
166
|
process.exit(code);
|
|
167
167
|
}
|
|
168
168
|
/** Print a structured error to stderr and exit with the given code. */
|
|
169
|
-
export function emitError(type, message, code = ExitCode.RUNTIME, hint) {
|
|
169
|
+
export function emitError(type, message, code = ExitCode.RUNTIME, hint, details) {
|
|
170
170
|
if (isTty()) {
|
|
171
171
|
let out = `${red('✖')} ${message}`;
|
|
172
172
|
if (hint)
|
|
@@ -176,7 +176,7 @@ export function emitError(type, message, code = ExitCode.RUNTIME, hint) {
|
|
|
176
176
|
else {
|
|
177
177
|
const envelope = {
|
|
178
178
|
ok: false,
|
|
179
|
-
error: { type, message, ...(hint ? { hint } : {}) },
|
|
179
|
+
error: { type, message, ...(hint ? { hint } : {}), ...(details ? { details } : {}) },
|
|
180
180
|
};
|
|
181
181
|
process.stderr.write(`${JSON.stringify(envelope)}\n`);
|
|
182
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,EAAE,EAAE,CAAC;IACL,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/output/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,EAAE,EAAE,CAAC;IACL,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;CACF,CAAA;AAcV,MAAM,UAAU,KAAK;IACnB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC;AAED,+EAA+E;AAC/E,SAAS,KAAK,CAAC,IAAY,EAAE,IAAY;IACvC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;AACvD,CAAC;AACD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AAC/C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AASjD,4CAA4C;AAC5C,MAAM,OAAO,GAAG,iBAAiB,CAAA;AACjC,4EAA4E;AAC5E,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAA;AACtC,CAAC;AACD,oEAAoE;AACpE,SAAS,UAAU,CAAC,CAAS,EAAE,KAAa;IAC1C,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,KAAK,CAAC,IAAoC,EAAE,OAAiB;IAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,CAAC,CAA0B,EAAE,CAAS,EAAU,EAAE;QAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,KAAe,EAAU,EAAE,CACvC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjF,OAAO,GAAG,MAAM,KAAK,IAAI,EAAE,CAAA;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,YAAY,CAAC,KAAgB;IACpC,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5C,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB;IACxC,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAK;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,MAAK;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAmB;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACrC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACzF,CAAA;IACD,OAAO,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC,CAAA;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5C,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAA;IAE/C,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,GAAG,KAAK,KAAK,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAA;QACvD,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,GAAG,KAAK,KAAK,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAA;QACnD,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAChH,OAAO,GAAG,KAAK,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAA;QAClD,CAAC;QACD,OAAO,GAAG,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAI,IAAO,EAAE,KAA2B;IACjE,OAAO,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AAClD,CAAC;AAED;;6EAE6E;AAC7E,MAAM,UAAU,eAAe,CAC7B,IAAO,EACP,IAAmB,EACnB,KAA2B;IAE3B,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;IACjE,CAAC;SAAM,IAAI,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,OAAe,EACf,OAAsB,QAAQ,CAAC,OAAO,EACtC,IAAa,EACb,OAAiC;IAEjC,IAAI,KAAK,EAAE,EAAE,CAAC;QACZ,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAA;QAClC,IAAI,IAAI;YAAE,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAkB;YAC9B,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SACrF,CAAA;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soku-ai/cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
4
|
-
"description": "Soku CLI
|
|
3
|
+
"version": "0.1.0-alpha.19",
|
|
4
|
+
"description": "Soku CLI \u2014 call Soku ads/GA4/PostHog data capabilities from any AI agent or shell.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "About Intelligence",
|
|
7
7
|
"homepage": "https://soku.ai/cli",
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
"test": "tsc -p tsconfig.test.json && mkdir -p .test-build/generated && cp src/generated/capabilities.json src/generated/changelog.json .test-build/generated/ && find .test-build -name '*.test.js' -print | sort | xargs node --test && node --test scripts/*.test.mjs",
|
|
45
45
|
"clean": "rm -rf dist .test-build",
|
|
46
46
|
"postinstall": "node postinstall.cjs",
|
|
47
|
-
"prepublishOnly": "pnpm run clean && pnpm run build"
|
|
47
|
+
"prepublishOnly": "pnpm run clean && pnpm run build",
|
|
48
|
+
"bundle:openai": "bash scripts/bundle-openai-plugin.sh"
|
|
48
49
|
},
|
|
49
50
|
"dependencies": {
|
|
50
51
|
"commander": "^12.1.0",
|
package/skills/soku/SKILL.md
CHANGED
|
@@ -3,24 +3,23 @@ name: soku
|
|
|
3
3
|
description: >-
|
|
4
4
|
Use when calling Soku CLI capabilities from a shell: auth, workspace
|
|
5
5
|
selection, ads/GA4/PostHog data reads, typed ads writes, SEO Hosting,
|
|
6
|
-
automations, Context Hub files,
|
|
7
|
-
|
|
6
|
+
automations, Context Hub files, temporary file publishing, brand skills and community skill purchases/publishing,
|
|
7
|
+
third-party egress,
|
|
8
8
|
review-gated writes, skill installation, or CLI updates.
|
|
9
9
|
license: MIT
|
|
10
|
-
metadata:
|
|
11
|
-
author: About Intelligence
|
|
12
|
-
version: "0.5"
|
|
13
|
-
# CLI release this skill was written against. `soku changelog --since <that
|
|
14
|
-
# version>` lists what moved if the installed CLI is newer.
|
|
15
|
-
cliVersion: "0.1.0-alpha.18"
|
|
16
10
|
---
|
|
17
11
|
|
|
18
12
|
# Soku CLI
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
Written against Soku CLI release 0.1.0-alpha.19. If `soku --version` reports a
|
|
15
|
+
newer release, run `soku changelog --since` that release before relying on
|
|
16
|
+
details here.
|
|
17
|
+
|
|
18
|
+
The `soku` CLI is the shell-native way for an AI agent to use Soku from your
|
|
19
|
+
coding agent or any terminal. It talks to Soku over `/api/cli/*`; the CLI path
|
|
20
|
+
needs no MCP host. Treat this file as the router. Load the relevant reference
|
|
21
|
+
file before acting on a detailed workflow. If you have no usable shell, skip to
|
|
22
|
+
"No Shell? Use the Soku MCP Connection".
|
|
24
23
|
|
|
25
24
|
## Reference Router
|
|
26
25
|
|
|
@@ -34,11 +33,56 @@ Read only the reference files needed for the user's task:
|
|
|
34
33
|
| SEO Hosting, automations, Context Hub files, temporary public file URLs | `references/seo-automation-files.md` |
|
|
35
34
|
| Third-party APIs through server-side credential injection; security rules | `references/egress-security.md` |
|
|
36
35
|
| Installing, updating, or removing Soku-managed local skills; finding out what an upgrade changed | `references/skills-updates.md` |
|
|
37
|
-
| Migrate context, project files, or workspaces from Claude into Soku | Run `soku skill install migrate-from-claude`, then read the installed `soku-migrate-from-claude` skill. |
|
|
38
36
|
|
|
39
37
|
For an installed business skill such as `soku-ads-report`, read that skill too.
|
|
40
38
|
Business skills carry their own "Running this skill with the Soku CLI" section.
|
|
41
39
|
|
|
40
|
+
## Prerequisite: The CLI Must Be Installed
|
|
41
|
+
|
|
42
|
+
This skill only describes the `soku` command; it does not contain it. Check
|
|
43
|
+
first:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
soku --version
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
If the command is missing, install it (Node.js 20 or newer is required) and
|
|
50
|
+
check again:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm i -g @soku-ai/cli
|
|
54
|
+
soku --version
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
If npm says `@soku-ai/cli` is not found, report that the official package is
|
|
58
|
+
unavailable. Do not invent an unofficial package name.
|
|
59
|
+
|
|
60
|
+
When this skill arrived as a marketplace plugin, the CLI may also have
|
|
61
|
+
installed its own copy under `~/.claude/skills/soku/`,
|
|
62
|
+
`~/.codex/skills/soku/`, or `~/.cursor/skills/soku/`. Both copies are the same
|
|
63
|
+
document at possibly different versions. The copy the CLI installed is refreshed
|
|
64
|
+
together with the binary, so when the two disagree, prefer that one, and treat
|
|
65
|
+
`soku --help` and `soku changelog` as the authority over either copy.
|
|
66
|
+
|
|
67
|
+
## No Shell? Use the Soku MCP Connection
|
|
68
|
+
|
|
69
|
+
Some hosts cannot run the CLI: Claude Cowork and claude.ai have no local shell,
|
|
70
|
+
and a sandboxed environment may block npm or `api.soku.ai`. For those hosts the
|
|
71
|
+
Claude Code plugin also registers Soku's remote MCP server (name `soku`,
|
|
72
|
+
`https://api.soku.ai/mcp`, OAuth). Rules for that path:
|
|
73
|
+
|
|
74
|
+
- Sign in through the host's MCP authentication, never by pasting a token: in
|
|
75
|
+
Claude Code run `/mcp` (or `claude mcp login soku` from a shell); in Cowork
|
|
76
|
+
approve the Soku connector when the host asks. Both open a Soku login page.
|
|
77
|
+
- The MCP tools cover brand-scoped reads, research and generation. Writes on
|
|
78
|
+
MCP are limited to what Soku Connect publishes (today the creatives canvas
|
|
79
|
+
operations); they are review-gated, and Soku returns a Live Surface link
|
|
80
|
+
where a human approves them. Hand that link to the user; do not try to
|
|
81
|
+
approve on their behalf. Ads and SEO Hosting writes are CLI-only.
|
|
82
|
+
- Local skill installation, Context Hub uploads from local files, memory and
|
|
83
|
+
`soku review approve` exist only on the CLI. When a shell is available and
|
|
84
|
+
`soku` can be installed, prefer the CLI.
|
|
85
|
+
|
|
42
86
|
## Default Flow
|
|
43
87
|
|
|
44
88
|
1. Check auth/workspace state:
|
|
@@ -92,12 +136,15 @@ soku <namespace> <action> --help
|
|
|
92
136
|
`soku egress -- curl ...` for covered third-party APIs.
|
|
93
137
|
- A human must authorize every review-gated write — but don't force a
|
|
94
138
|
copy-paste. If your harness prompts for explicit human confirmation before
|
|
95
|
-
each shell command (
|
|
139
|
+
each shell command (a per-command permission prompt), you MAY run
|
|
96
140
|
`soku review approve <id>` yourself after showing the user the diff/summary;
|
|
97
141
|
that confirmation prompt is the human gate. Never allowlist or auto-approve
|
|
98
142
|
`soku review approve`/`deny`, and never approve a write the user has not seen.
|
|
99
143
|
If your harness runs commands without per-command human confirmation, do NOT
|
|
100
144
|
self-approve — surface the `review_id` for the user to run.
|
|
145
|
+
- An ads write that names an existing campaign / ad set / ad group / ad must
|
|
146
|
+
read that object back first and quote its current name and literal id in
|
|
147
|
+
`--summary`; the server rejects a summary that omits a literal target id.
|
|
101
148
|
- Pass user values as separate argv elements. Do not build a shell command by
|
|
102
149
|
string-concatenating untrusted values.
|
|
103
150
|
- Do not scan local repo files, `AGENTS.md`, or `context/` folders for Soku
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Soku"
|
|
3
|
+
short_description: "The AI marketing agent for ads and creatives: analyze ad and analytics performance, audit spend, research competitors, publish SEO pages, and prepare campaign changes for your approval"
|
|
4
|
+
default_prompt: "Use $soku to set up the Soku CLI, sign in, pick my brand, and run a 30-day performance health check across my ad accounts and analytics."
|
|
@@ -114,12 +114,16 @@ soku ads meta creative create \
|
|
|
114
114
|
--summary "Create Meta dynamic creative"
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
-
Status controls exist at delivery levels
|
|
117
|
+
Status controls exist at delivery levels. A write that names an existing
|
|
118
|
+
campaign / ad set / ad must first read that object back (`soku ads meta
|
|
119
|
+
campaign get` / `adset get` / `ad get`, or the matching list command) and quote
|
|
120
|
+
its current name **and** literal id in `--summary`; the server rejects a summary
|
|
121
|
+
that omits a literal target id with `invalid_ads_payload`:
|
|
118
122
|
|
|
119
123
|
```bash
|
|
120
|
-
soku ads meta campaign activate --campaign-id <campaign_id> --account-id <meta_account_id> --summary "Activate campaign"
|
|
121
|
-
soku ads meta adset pause --adset-id <adset_id> --account-id <meta_account_id> --summary "Pause ad set"
|
|
122
|
-
soku ads meta ad pause --ad-id <ad_id> --account-id <meta_account_id> --summary "Pause ad"
|
|
124
|
+
soku ads meta campaign activate --campaign-id <campaign_id> --account-id <meta_account_id> --summary "Activate campaign 'Launch Test' (campaign_id <campaign_id>)"
|
|
125
|
+
soku ads meta adset pause --adset-id <adset_id> --account-id <meta_account_id> --summary "Pause ad set 'US Prospecting' (adset_id <adset_id>)"
|
|
126
|
+
soku ads meta ad pause --ad-id <ad_id> --account-id <meta_account_id> --summary "Pause ad 'Hero image ad' (ad_id <ad_id>)"
|
|
123
127
|
```
|
|
124
128
|
|
|
125
129
|
## Bulk Meta Create
|
|
@@ -223,8 +227,10 @@ soku review show <review_id>
|
|
|
223
227
|
```
|
|
224
228
|
|
|
225
229
|
As an agent, always show the review id and summary to the user first — a human
|
|
226
|
-
must authorize the write.
|
|
227
|
-
|
|
230
|
+
must authorize the write. Do not tell the user a change is applied or live until
|
|
231
|
+
`soku review show <review_id>` reports the execution result and the read-back
|
|
232
|
+
matches; approval alone is not execution. If your harness prompts for explicit human
|
|
233
|
+
confirmation before each shell command (a per-command permission prompt),
|
|
228
234
|
you MAY then run `soku review approve <id>` yourself: that prompt is the human
|
|
229
235
|
gate, so never allowlist or auto-approve it. If your harness auto-runs commands
|
|
230
236
|
without confirmation, do not self-approve — let the user run it. Approval is
|
|
@@ -31,7 +31,9 @@ soku ads query-multi-dimension \
|
|
|
31
31
|
Use `query-single-dimension` for CPA, ROAS, conversion group fan-out, or one
|
|
32
32
|
dimension. Use `query-multi-dimension` for raw multi-dimensional breakdowns.
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Platform support varies by action and rollout. Read the command help and
|
|
35
|
+
connected accounts; do not assume every reporting action supports every ads
|
|
36
|
+
platform. For example:
|
|
35
37
|
|
|
36
38
|
```bash
|
|
37
39
|
soku ads list-ad-accounts --platform chatgpt_ads
|
|
@@ -138,3 +140,22 @@ soku call posthog query --payload '{"project_id":"12345","tool":"execute-sql","a
|
|
|
138
140
|
```
|
|
139
141
|
|
|
140
142
|
Review-gated writes through `soku call` require `--summary`.
|
|
143
|
+
|
|
144
|
+
## Recently Added Integrations And Parameters
|
|
145
|
+
|
|
146
|
+
Discover the current command tree with `soku --help`. Recent data namespaces
|
|
147
|
+
include `admob`, `applovin_max`, `topon`, `cloudx`, `sensortower`, `thinkingdata`,
|
|
148
|
+
and Adjust API Token reporting (`adjust list-apps` / `adjust get-report`).
|
|
149
|
+
They still require the corresponding connected account, brand access, and
|
|
150
|
+
server rollout; command availability alone does not grant access. Soku-supplied
|
|
151
|
+
providers such as AIsa and BYOK egress providers are discovered with
|
|
152
|
+
`soku egress providers`, not a guessed data namespace.
|
|
153
|
+
|
|
154
|
+
Boolean flags support both explicit values: `--use-cache` sends true and
|
|
155
|
+
`--no-use-cache` sends false; omitting both leaves the server default intact.
|
|
156
|
+
For example, `soku thinkingdata query-metric --help` and
|
|
157
|
+
`soku applovin_max run-report --help` describe the relevant input flags.
|
|
158
|
+
|
|
159
|
+
Google `soku ads update-campaign` accepts `--tracking-url-template` and
|
|
160
|
+
`--final-url-suffix`. Omission preserves the current value; an explicitly empty
|
|
161
|
+
string clears it. The existing ads review and readback requirements still apply.
|
|
@@ -96,3 +96,22 @@ success envelope. Soku-level failures use the normal CLI error envelope.
|
|
|
96
96
|
- Pass user-provided values as separate argv elements.
|
|
97
97
|
- Treat `verification_uri`, signed URLs, review ids, and provider URLs as
|
|
98
98
|
opaque strings.
|
|
99
|
+
|
|
100
|
+
## Discover And Call Endpoint Cards
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
soku egress capabilities --provider adyntel --query linkedin
|
|
104
|
+
soku egress call adyntel linkedin_ads --args '{"company_domain":"example.com"}' --dry-run
|
|
105
|
+
soku egress call adyntel linkedin_ads --args @arguments.json --output result.json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
`capabilities` returns parameter contracts and quotes from the live server
|
|
109
|
+
registry. `call --dry-run` validates and binds arguments on the server, then
|
|
110
|
+
returns the request and `quote_usd_micros` without contacting the vendor or
|
|
111
|
+
incurring vendor charges. Review the quote and intended call with the user
|
|
112
|
+
before a paid execution. Removing `--dry-run` executes through the existing
|
|
113
|
+
metered egress proxy and streams the upstream response verbatim; `--output`
|
|
114
|
+
saves it to a file. Authentication stays server-side. A binding error stops
|
|
115
|
+
before execution. Raw `soku egress -- curl ...` remains available for endpoints
|
|
116
|
+
without published cards. Do not infer that an unlisted vendor is unsupported:
|
|
117
|
+
BYOK providers may be host-discoverable without priced endpoint cards.
|
|
@@ -107,6 +107,37 @@ binary that is running and needs no network call. It cannot speak for versions
|
|
|
107
107
|
older than its `historyStartsAt`; when `--since` reaches past that, the response
|
|
108
108
|
sets `truncated: true` and says so rather than implying nothing changed.
|
|
109
109
|
|
|
110
|
-
This skill
|
|
111
|
-
|
|
112
|
-
before relying on details in these reference files.
|
|
110
|
+
This skill records the CLI release it was written against in the line right
|
|
111
|
+
under its title. If the installed CLI is newer, run the command
|
|
112
|
+
above before relying on details in these reference files.
|
|
113
|
+
|
|
114
|
+
## Community Skills In The Active Brand
|
|
115
|
+
|
|
116
|
+
Local `soku skill install` installs a business skill into the calling agent.
|
|
117
|
+
`brand skill` manages skills in the active Soku brand instead. Official catalog
|
|
118
|
+
installs and community installs have separate commands:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
soku workspace status
|
|
122
|
+
soku brand skill community list --query "audit" --sort installs --limit 30 --offset 0
|
|
123
|
+
soku brand skill community install growth-audit
|
|
124
|
+
soku brand skill community install growth-audit --expected-price-credits 300
|
|
125
|
+
soku brand skill publish my-skill --categories analytics,ads --price-credits 300
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Browse first: the list includes price, entitlement, installed version, and
|
|
129
|
+
available updates. Only pass `--expected-price-credits` after the user agrees
|
|
130
|
+
to that skill's exact one-time price for the active organization. Without the
|
|
131
|
+
flag, a paid skill needing purchase returns `purchase_required`; already owned,
|
|
132
|
+
free, and publisher-entitled skills can install without a new purchase.
|
|
133
|
+
A changed price returns `conflict` with `error.details.code = price_changed` and
|
|
134
|
+
`error.details.price_credits`. Obtain agreement to the new price before retrying;
|
|
135
|
+
never automatically restate the server's price. Reinstall upgrades an existing
|
|
136
|
+
community copy. Read it first if the brand has local edits.
|
|
137
|
+
|
|
138
|
+
`publish` publishes an uploaded private skill. Omit `--price-credits` to retain
|
|
139
|
+
the listing price; use 0 for free or 100–20000 for paid. Publishing paid versions
|
|
140
|
+
requires a paid plan and review: inspect `skill.status` and
|
|
141
|
+
`skill.pending_version.review_status`, and never describe a pending version as
|
|
142
|
+
live. New versions require a version bump in SKILL.md. These mutations are not
|
|
143
|
+
ads review-gated and run immediately subject to server admission.
|