@soku-ai/cli 0.1.0-alpha.7 → 0.1.0-alpha.9
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/dist/auth/device.d.ts +9 -0
- package/dist/auth/device.d.ts.map +1 -1
- package/dist/auth/device.js +6 -1
- package/dist/auth/device.js.map +1 -1
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +19 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/seo-hosting.d.ts +45 -38
- package/dist/commands/seo-hosting.d.ts.map +1 -1
- package/dist/commands/seo-hosting.js +149 -139
- package/dist/commands/seo-hosting.js.map +1 -1
- package/dist/generated/capabilities.json +83 -0
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +9 -2
- package/dist/http/client.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.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 +57 -27
package/dist/auth/device.d.ts
CHANGED
|
@@ -12,6 +12,15 @@ export interface TokenResult {
|
|
|
12
12
|
token_type: string;
|
|
13
13
|
expires_in: number;
|
|
14
14
|
scope: string;
|
|
15
|
+
workspace?: TokenWorkspace;
|
|
16
|
+
}
|
|
17
|
+
export interface TokenWorkspace {
|
|
18
|
+
organization_id: string;
|
|
19
|
+
brand_id: string;
|
|
20
|
+
organization_name?: string | null;
|
|
21
|
+
organization_slug?: string | null;
|
|
22
|
+
brand_name?: string | null;
|
|
23
|
+
brand_slug?: string | null;
|
|
15
24
|
}
|
|
16
25
|
export declare function requestDeviceCode(opts: {
|
|
17
26
|
apiBase?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/auth/device.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAI5C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,yBAAyB,EAAE,MAAM,CAAA;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/auth/device.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAI5C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,yBAAyB,EAAE,MAAM,CAAA;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,cAAc,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAKD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAe/B;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA;AAEzB,iFAAiF;AACjF,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,GAAG,OAAO,CAAC,WAAW,CAAC,CA6CvB"}
|
package/dist/auth/device.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/** RFC 8628 device authorization client. */
|
|
2
2
|
import { resolveApiBaseUrl } from '../config.js';
|
|
3
3
|
const CLIENT_ID = 'soku-cli';
|
|
4
|
+
const WORKSPACE_SELECTION_CAPABILITY = 'workspace_selection_v1';
|
|
4
5
|
export async function requestDeviceCode(opts) {
|
|
5
6
|
const base = resolveApiBaseUrl(opts.apiBase);
|
|
6
7
|
const res = await fetch(`${base}/api/device/code`, {
|
|
7
8
|
method: 'POST',
|
|
8
9
|
headers: { 'Content-Type': 'application/json' },
|
|
9
|
-
body: JSON.stringify({
|
|
10
|
+
body: JSON.stringify({
|
|
11
|
+
client_id: CLIENT_ID,
|
|
12
|
+
scope: opts.scope ?? 'data-infra',
|
|
13
|
+
client_capabilities: [WORKSPACE_SELECTION_CAPABILITY],
|
|
14
|
+
}),
|
|
10
15
|
});
|
|
11
16
|
if (!res.ok) {
|
|
12
17
|
throw new Error(`Failed to start device authorization (HTTP ${res.status})`);
|
package/dist/auth/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/auth/device.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/auth/device.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/auth.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/** `soku auth login | status | logout` */
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
+
import { type TokenWorkspace } from '../auth/device.js';
|
|
3
4
|
export declare function registerAuthCommands(program: Command): void;
|
|
5
|
+
export declare function storeTokenWorkspace(workspace: TokenWorkspace | undefined): boolean;
|
|
4
6
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAA;AAM1B,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG3D;AAsCD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAOlF"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** `soku auth login | status | logout` */
|
|
2
2
|
import open from 'open';
|
|
3
3
|
import qrcode from 'qrcode-terminal';
|
|
4
|
-
import { pollForToken, requestDeviceCode } from '../auth/device.js';
|
|
4
|
+
import { pollForToken, requestDeviceCode, } from '../auth/device.js';
|
|
5
5
|
import { clearToken, loadToken, saveToken } from '../auth/store.js';
|
|
6
|
+
import { updateConfig } from '../config.js';
|
|
6
7
|
import { apiRequest } from '../http/client.js';
|
|
7
8
|
import { cyan, dim, emitError, emitSuccess, ExitCode, green } from '../output/envelope.js';
|
|
8
9
|
export function registerAuthCommands(program) {
|
|
@@ -97,7 +98,23 @@ async function pollAndStore(opts) {
|
|
|
97
98
|
emitError('expired', 'The login request expired before approval.', ExitCode.AUTH, 'Run `soku auth login` again.');
|
|
98
99
|
}
|
|
99
100
|
await saveToken(outcome.token.access_token);
|
|
101
|
+
const workspaceConfigured = storeTokenWorkspace(outcome.token.workspace);
|
|
100
102
|
const days = Math.round(outcome.token.expires_in / 86400);
|
|
101
|
-
emitSuccess({
|
|
103
|
+
emitSuccess({
|
|
104
|
+
signed_in: true,
|
|
105
|
+
expires_in: outcome.token.expires_in,
|
|
106
|
+
scope: outcome.token.scope,
|
|
107
|
+
workspace_configured: workspaceConfigured,
|
|
108
|
+
workspace: outcome.token.workspace ?? null,
|
|
109
|
+
}, () => `${green('✓')} Signed in ${dim(`(token valid ~${days} days)`)}\n ${dim(workspaceConfigured ? 'Next: soku resources list' : 'Next: soku org list')}`);
|
|
110
|
+
}
|
|
111
|
+
export function storeTokenWorkspace(workspace) {
|
|
112
|
+
if (!workspace?.organization_id || !workspace?.brand_id)
|
|
113
|
+
return false;
|
|
114
|
+
updateConfig({
|
|
115
|
+
activeOrgId: workspace.organization_id,
|
|
116
|
+
activeBrandId: workspace.brand_id,
|
|
117
|
+
});
|
|
118
|
+
return true;
|
|
102
119
|
}
|
|
103
120
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAG1C,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,MAAM,MAAM,iBAAiB,CAAA;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAG1C,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,MAAM,MAAM,iBAAiB,CAAA;AAEpC,OAAO,EACL,YAAY,EACZ,iBAAiB,GAGlB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE1F,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAA;IAElF,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;SACvD,MAAM,CACL,sBAAsB,EACtB,iGAAiG,EACjG,YAAY,CACb;SACA,MAAM,CAAC,WAAW,EAAE,kEAAkE,CAAC;SACvF,MAAM,CAAC,sBAAsB,EAAE,+CAA+C,CAAC;SAC/E,MAAM,CAAC,MAAM,EAAE,0CAA0C,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,0EAA0E;QAC1E,0BAA0B;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,YAAY,CAAC;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,GAAG;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,IAAI,IAAyB,CAAA;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,oBAAoB,EAAG,GAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC3E,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,0EAA0E;YAC1E,uEAAuE;YACvE,WAAW,CAAC;gBACV,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;gBACzD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,iCAAiC,IAAI,CAAC,WAAW,EAAE;aAC1D,EAAE,CAAC,CAAC,EAAE,EAAE,CACP;gBACE,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB;gBAC7B,WAAW,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE;gBAC9C,WAAW,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;gBAC9B,iBAAiB,CAAC,CAAC,UAAU,GAAG;gBAChC,EAAE;gBACF,GAAG,CAAC,8BAA8B,CAAC;gBACnC,KAAK,CAAC,CAAC,IAAI,EAAE;aACd,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAA;QACH,CAAC;QAED,4BAA4B;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+BAA+B,IAAI,CAAC,gBAAgB,4BAA4B,IAAI,CAAC,SAAS,MAAM,CACrG,CAAA;QACD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAClE,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAEnD,MAAM,YAAY,CAAC;YACjB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAA;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAA;QAC3F,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,UAAU,CAA2C,aAAa,CAAC,CAAA;QACpF,WAAW,CACT,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAC3F,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,UAAU,EAAE,CAAA;QAClB,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACN,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAK3B;IACC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,SAAS,CAAC,eAAe,EAAE,2BAA2B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,SAAS,CACP,SAAS,EACT,4CAA4C,EAC5C,QAAQ,CAAC,IAAI,EACb,8BAA8B,CAC/B,CAAA;IACH,CAAC;IACD,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAC3C,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAA;IACzD,WAAW,CACT;QACE,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;QAC1B,oBAAoB,EAAE,mBAAmB;QACzC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI;KAC3C,EACD,GAAG,EAAE,CACH,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,iBAAiB,IAAI,QAAQ,CAAC,OAAO,GAAG,CACrE,mBAAmB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,qBAAqB,CAC1E,EAAE,CACN,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAqC;IACvE,IAAI,CAAC,SAAS,EAAE,eAAe,IAAI,CAAC,SAAS,EAAE,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrE,YAAY,CAAC;QACX,WAAW,EAAE,SAAS,CAAC,eAAe;QACtC,aAAa,EAAE,SAAS,CAAC,QAAQ;KAClC,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** `soku seo-hosting` — manage SEO Hosting
|
|
1
|
+
/** `soku seo-hosting` — manage file-based SEO Hosting pages and domain connections. */
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
export interface DomainConnection {
|
|
4
4
|
id: string;
|
|
@@ -16,28 +16,42 @@ export interface DomainConnection {
|
|
|
16
16
|
created_at?: string | null;
|
|
17
17
|
cf_verification_data?: Record<string, unknown> | null;
|
|
18
18
|
}
|
|
19
|
-
interface
|
|
20
|
-
|
|
19
|
+
interface HostingStatusDomain {
|
|
20
|
+
hostname: string;
|
|
21
|
+
method: string;
|
|
22
|
+
status: string;
|
|
21
23
|
live: boolean;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
url_contract: string;
|
|
25
|
+
served_sections: string[];
|
|
26
|
+
public_base_url: string;
|
|
24
27
|
}
|
|
25
|
-
interface
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
interface HostingStatusResponse {
|
|
29
|
+
domains: HostingStatusDomain[];
|
|
30
|
+
allowed_sections: string[];
|
|
31
|
+
asset_cdn_base_url: string;
|
|
32
|
+
workspace_dir: string;
|
|
33
|
+
note: string;
|
|
34
|
+
}
|
|
35
|
+
/** A file-based SEO page (no markdown body — the document IS the HTML file). */
|
|
36
|
+
interface SeoHostingPage {
|
|
28
37
|
section: string;
|
|
29
38
|
slug: string;
|
|
30
|
-
title
|
|
31
|
-
|
|
39
|
+
title: string;
|
|
40
|
+
description?: string | null;
|
|
32
41
|
status: string;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
author_name?: string | null;
|
|
36
|
-
url_path?: string;
|
|
37
|
-
body_markdown?: string;
|
|
42
|
+
template?: string | null;
|
|
43
|
+
url_path: string;
|
|
38
44
|
published_at?: string | null;
|
|
39
|
-
created_at?: string | null;
|
|
40
45
|
updated_at?: string | null;
|
|
46
|
+
public_url?: string | null;
|
|
47
|
+
served?: boolean;
|
|
48
|
+
/** Advisory dead-internal-link warnings from publish (do not block publishing). */
|
|
49
|
+
link_warnings?: string[];
|
|
50
|
+
}
|
|
51
|
+
interface AssetUploadResponse {
|
|
52
|
+
url: string;
|
|
53
|
+
path: string;
|
|
54
|
+
size_bytes: number;
|
|
41
55
|
}
|
|
42
56
|
export interface WorkerProbeResponse {
|
|
43
57
|
is_cloudflare: boolean;
|
|
@@ -53,25 +67,17 @@ interface CloudflareTokenOptions {
|
|
|
53
67
|
cfTokenEnv?: string;
|
|
54
68
|
cfTokenStdin?: boolean;
|
|
55
69
|
}
|
|
56
|
-
interface
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
70
|
+
interface HtmlBodyOptions {
|
|
71
|
+
html?: string;
|
|
72
|
+
htmlFile?: string;
|
|
73
|
+
htmlStdin?: boolean;
|
|
60
74
|
}
|
|
61
|
-
interface
|
|
75
|
+
interface PagePutOptions extends HtmlBodyOptions {
|
|
76
|
+
section: string;
|
|
77
|
+
slug: string;
|
|
62
78
|
title: string;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
excerpt?: string;
|
|
66
|
-
coverImageUrl?: string;
|
|
67
|
-
authorName?: string;
|
|
68
|
-
seo?: string;
|
|
69
|
-
}
|
|
70
|
-
interface PostUpdateOptions extends PostBodyOptions {
|
|
71
|
-
title?: string;
|
|
72
|
-
excerpt?: string;
|
|
73
|
-
coverImageUrl?: string;
|
|
74
|
-
authorName?: string;
|
|
79
|
+
description?: string;
|
|
80
|
+
template?: string;
|
|
75
81
|
seo?: string;
|
|
76
82
|
}
|
|
77
83
|
export declare class SeoHostingUsageError extends Error {
|
|
@@ -86,12 +92,13 @@ export declare function readCloudflareToken(opts: CloudflareTokenOptions): Promi
|
|
|
86
92
|
export declare function workerProbeBlocker(probe: WorkerProbeResponse, opts: WorkerRiskOptions): SeoHostingUsageError | null;
|
|
87
93
|
export declare function callSeoHostingAction<T>(action: string, payload?: Record<string, unknown>): Promise<T>;
|
|
88
94
|
export declare function parseSeoOverride(raw?: string): Record<string, unknown> | undefined;
|
|
89
|
-
|
|
90
|
-
export declare function
|
|
91
|
-
export declare function
|
|
95
|
+
/** Read the page HTML from exactly one of --html / --html-file / --html-stdin. */
|
|
96
|
+
export declare function readHtmlBody(opts: HtmlBodyOptions): Promise<string>;
|
|
97
|
+
export declare function buildPagePutPayload(opts: PagePutOptions): Promise<Record<string, unknown>>;
|
|
92
98
|
export declare function renderHostingStatus(status: HostingStatusResponse): string;
|
|
93
|
-
export declare function
|
|
94
|
-
export declare function
|
|
99
|
+
export declare function renderPages(items: SeoHostingPage[]): string;
|
|
100
|
+
export declare function renderPage(page: SeoHostingPage): string;
|
|
101
|
+
export declare function renderAssetUpload(asset: AssetUploadResponse): string;
|
|
95
102
|
export declare function renderConnections(items: DomainConnection[]): string;
|
|
96
103
|
export declare function renderConnection(connection: DomainConnection): string;
|
|
97
104
|
export declare function renderWorkerProbe(probe: WorkerProbeResponse): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo-hosting.d.ts","sourceRoot":"","sources":["../../src/commands/seo-hosting.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"seo-hosting.d.ts","sourceRoot":"","sources":["../../src/commands/seo-hosting.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
/** `soku seo-hosting` — manage SEO Hosting
|
|
1
|
+
/** `soku seo-hosting` — manage file-based SEO Hosting pages and domain connections. */
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { basename } from 'node:path';
|
|
3
4
|
import { apiRequest } from '../http/client.js';
|
|
4
5
|
import { bold, cyan, dim, emitError, emitSuccess, ExitCode, table } from '../output/envelope.js';
|
|
5
6
|
import { unwrapDispatch } from '../output/unwrap.js';
|
|
6
7
|
const CONNECTIONS_PATH = '/api/cli/seo-hosting/domain-connections';
|
|
8
|
+
const ASSETS_PATH = '/api/cli/seo-hosting/assets';
|
|
7
9
|
const SEO_HOSTING_CALL_PATH = '/api/cli/call/seo_hosting';
|
|
8
10
|
const DEFAULT_SECTIONS = ['blog'];
|
|
9
11
|
const ALLOWED_SECTIONS = new Set(['blog', 'use-cases', 'alternatives']);
|
|
@@ -101,139 +103,130 @@ export function parseSeoOverride(raw) {
|
|
|
101
103
|
}
|
|
102
104
|
return parsed;
|
|
103
105
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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;
|
|
106
|
+
/** Read the page HTML from exactly one of --html / --html-file / --html-stdin. */
|
|
107
|
+
export async function readHtmlBody(opts) {
|
|
108
|
+
const sources = [opts.html !== undefined, opts.htmlFile, opts.htmlStdin].filter(Boolean);
|
|
109
|
+
if (sources.length !== 1) {
|
|
110
|
+
throw new SeoHostingUsageError('Provide exactly one HTML source.', 'Use --html, --html-file, or --html-stdin.');
|
|
114
111
|
}
|
|
115
|
-
let
|
|
116
|
-
if (opts.
|
|
112
|
+
let html;
|
|
113
|
+
if (opts.htmlFile) {
|
|
117
114
|
try {
|
|
118
|
-
|
|
115
|
+
html = readFileSync(opts.htmlFile, 'utf8');
|
|
119
116
|
}
|
|
120
117
|
catch (err) {
|
|
121
|
-
throw new SeoHostingUsageError(`Could not read
|
|
118
|
+
throw new SeoHostingUsageError(`Could not read HTML file: ${opts.htmlFile}`, err.message);
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
|
-
else if (opts.
|
|
125
|
-
|
|
121
|
+
else if (opts.htmlStdin) {
|
|
122
|
+
html = await readAll(process.stdin);
|
|
126
123
|
}
|
|
127
124
|
else {
|
|
128
|
-
|
|
125
|
+
html = opts.html ?? '';
|
|
129
126
|
}
|
|
130
|
-
if (!
|
|
131
|
-
throw new SeoHostingUsageError('
|
|
127
|
+
if (!html.trim()) {
|
|
128
|
+
throw new SeoHostingUsageError('Page HTML cannot be empty.');
|
|
132
129
|
}
|
|
133
|
-
return
|
|
130
|
+
return html;
|
|
134
131
|
}
|
|
135
|
-
export async function
|
|
136
|
-
const
|
|
132
|
+
export async function buildPagePutPayload(opts) {
|
|
133
|
+
const html = await readHtmlBody(opts);
|
|
137
134
|
const payload = {
|
|
135
|
+
section: opts.section,
|
|
136
|
+
slug: opts.slug,
|
|
138
137
|
title: opts.title,
|
|
139
|
-
|
|
138
|
+
html,
|
|
140
139
|
};
|
|
141
|
-
addString(payload, '
|
|
142
|
-
addString(payload, '
|
|
143
|
-
addString(payload, 'excerpt', opts.excerpt);
|
|
144
|
-
addString(payload, 'cover_image_url', opts.coverImageUrl);
|
|
145
|
-
addString(payload, 'author_name', opts.authorName);
|
|
140
|
+
addString(payload, 'description', opts.description);
|
|
141
|
+
addString(payload, 'template', opts.template);
|
|
146
142
|
const seo = parseSeoOverride(opts.seo);
|
|
147
143
|
if (seo)
|
|
148
144
|
payload.seo = seo;
|
|
149
145
|
return payload;
|
|
150
146
|
}
|
|
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
147
|
function addString(payload, key, value) {
|
|
169
148
|
if (value !== undefined && value.trim())
|
|
170
149
|
payload[key] = value;
|
|
171
150
|
}
|
|
172
151
|
export function renderHostingStatus(status) {
|
|
173
152
|
const rows = [
|
|
174
|
-
`${bold('
|
|
175
|
-
`${bold('
|
|
176
|
-
`${bold('
|
|
153
|
+
`${bold('Allowed sections')}: ${status.allowed_sections.join(', ')}`,
|
|
154
|
+
`${bold('Asset CDN')}: ${status.asset_cdn_base_url}`,
|
|
155
|
+
`${bold('Workspace dir')}: ${status.workspace_dir}`,
|
|
177
156
|
];
|
|
178
|
-
if (status.
|
|
179
|
-
rows.push('', bold('
|
|
157
|
+
if (status.domains.length > 0) {
|
|
158
|
+
rows.push('', bold('Domains'), renderStatusDomains(status.domains));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
rows.push('', dim('No domain connections yet.'));
|
|
180
162
|
}
|
|
181
163
|
return rows.join('\n');
|
|
182
164
|
}
|
|
183
|
-
function
|
|
165
|
+
function renderStatusDomains(items) {
|
|
184
166
|
return table(items.map((item) => ({
|
|
185
167
|
hostname: item.hostname,
|
|
186
168
|
method: item.method,
|
|
187
169
|
status: item.status,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
170
|
+
live: item.live ? 'yes' : 'no',
|
|
171
|
+
contract: item.url_contract,
|
|
172
|
+
sections: item.served_sections.join(',') || '',
|
|
191
173
|
})), [
|
|
192
174
|
{ key: 'hostname', header: 'HOSTNAME' },
|
|
193
175
|
{ key: 'method', header: 'METHOD' },
|
|
194
176
|
{ key: 'status', header: 'STATUS' },
|
|
195
|
-
{ key: '
|
|
177
|
+
{ key: 'live', header: 'LIVE' },
|
|
178
|
+
{ key: 'contract', header: 'CONTRACT' },
|
|
196
179
|
{ key: 'sections', header: 'SECTIONS' },
|
|
197
|
-
{ key: 'error', header: 'ERROR' },
|
|
198
180
|
]);
|
|
199
181
|
}
|
|
200
|
-
export function
|
|
182
|
+
export function renderPages(items) {
|
|
201
183
|
return table(items.map((item) => ({
|
|
202
|
-
id: item.id,
|
|
203
184
|
section: item.section,
|
|
204
185
|
slug: item.slug,
|
|
205
186
|
status: item.status,
|
|
206
187
|
title: item.title || '',
|
|
188
|
+
url: item.url_path,
|
|
207
189
|
})), [
|
|
208
|
-
{ key: 'id', header: 'ID' },
|
|
209
190
|
{ key: 'section', header: 'SECTION' },
|
|
210
191
|
{ key: 'slug', header: 'SLUG' },
|
|
211
192
|
{ key: 'status', header: 'STATUS' },
|
|
212
193
|
{ key: 'title', header: 'TITLE' },
|
|
194
|
+
{ key: 'url', header: 'URL' },
|
|
213
195
|
]);
|
|
214
196
|
}
|
|
215
|
-
export function
|
|
197
|
+
export function renderPage(page) {
|
|
216
198
|
const rows = [
|
|
217
|
-
`${bold('
|
|
218
|
-
`${bold('
|
|
219
|
-
`${bold('
|
|
220
|
-
`${bold('Status')}: ${
|
|
199
|
+
`${bold('Section')}: ${page.section}`,
|
|
200
|
+
`${bold('Slug')}: ${cyan(page.slug)}`,
|
|
201
|
+
`${bold('Title')}: ${page.title}`,
|
|
202
|
+
`${bold('Status')}: ${page.status}`,
|
|
203
|
+
`${bold('URL path')}: ${page.url_path}`,
|
|
221
204
|
];
|
|
222
|
-
if (
|
|
223
|
-
rows.
|
|
224
|
-
if (
|
|
225
|
-
rows.push(`${bold('
|
|
226
|
-
if (
|
|
227
|
-
rows.push(`${bold('
|
|
228
|
-
if (
|
|
229
|
-
rows.push(`${bold('
|
|
230
|
-
if (
|
|
231
|
-
rows.push(`${bold('
|
|
232
|
-
|
|
233
|
-
|
|
205
|
+
if (page.description)
|
|
206
|
+
rows.push(`${bold('Description')}: ${page.description}`);
|
|
207
|
+
if (page.template)
|
|
208
|
+
rows.push(`${bold('Template')}: ${page.template}`);
|
|
209
|
+
if (page.published_at)
|
|
210
|
+
rows.push(`${bold('Published')}: ${page.published_at}`);
|
|
211
|
+
if (page.public_url)
|
|
212
|
+
rows.push(`${bold('Public URL')}: ${page.public_url}`);
|
|
213
|
+
if (page.served !== undefined) {
|
|
214
|
+
rows.push(`${bold('Served')}: ${page.served ? 'yes' : 'no'}`);
|
|
215
|
+
}
|
|
216
|
+
if (page.link_warnings && page.link_warnings.length > 0) {
|
|
217
|
+
rows.push(`${bold('Link warnings')}:`);
|
|
218
|
+
for (const w of page.link_warnings)
|
|
219
|
+
rows.push(` - ${w}`);
|
|
234
220
|
}
|
|
235
221
|
return rows.join('\n');
|
|
236
222
|
}
|
|
223
|
+
export function renderAssetUpload(asset) {
|
|
224
|
+
return [
|
|
225
|
+
`${bold('URL')}: ${cyan(asset.url)}`,
|
|
226
|
+
`${bold('Path')}: ${asset.path}`,
|
|
227
|
+
`${bold('Size')}: ${asset.size_bytes} bytes`,
|
|
228
|
+
].join('\n');
|
|
229
|
+
}
|
|
237
230
|
export function renderConnections(items) {
|
|
238
231
|
return table(items.map((item) => ({
|
|
239
232
|
id: item.id,
|
|
@@ -288,94 +281,111 @@ export function registerSeoHostingCommands(program) {
|
|
|
288
281
|
const seoHosting = program.command('seo-hosting').description('Manage SEO Hosting');
|
|
289
282
|
seoHosting
|
|
290
283
|
.command('status')
|
|
291
|
-
.description('
|
|
284
|
+
.description('Show this brand SEO Hosting setup: domains, live state, URL contract')
|
|
292
285
|
.action(async () => {
|
|
293
|
-
const data = await callSeoHostingAction('
|
|
286
|
+
const data = await callSeoHostingAction('get_status');
|
|
294
287
|
emitSuccess(data, renderHostingStatus);
|
|
295
288
|
});
|
|
296
|
-
const
|
|
297
|
-
|
|
289
|
+
const pages = seoHosting.command('pages').description('Manage SEO Hosting pages');
|
|
290
|
+
pages
|
|
298
291
|
.command('list')
|
|
299
|
-
.description('List SEO Hosting
|
|
292
|
+
.description('List file-based SEO Hosting pages for the active brand')
|
|
300
293
|
.option('--section <section>', 'Filter by section: blog, use-cases, alternatives')
|
|
301
294
|
.option('--status <status>', 'Filter by status: draft, published, archived')
|
|
302
295
|
.action(async (opts) => {
|
|
303
296
|
const payload = {};
|
|
304
297
|
addString(payload, 'section', opts.section);
|
|
305
298
|
addString(payload, 'status', opts.status);
|
|
306
|
-
const data = await callSeoHostingAction('
|
|
307
|
-
emitSuccess(data, (d) =>
|
|
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);
|
|
299
|
+
const data = await callSeoHostingAction('list_pages', payload);
|
|
300
|
+
emitSuccess(data, (d) => renderPages(d.items));
|
|
315
301
|
});
|
|
316
|
-
|
|
317
|
-
.command('
|
|
318
|
-
.description('Create a draft
|
|
319
|
-
.requiredOption('--
|
|
320
|
-
.
|
|
321
|
-
.
|
|
322
|
-
.option('--
|
|
323
|
-
.option('--
|
|
324
|
-
.option('--
|
|
325
|
-
.option('--
|
|
326
|
-
.option('--
|
|
327
|
-
.option('--author-name <name>', 'Display author name')
|
|
302
|
+
pages
|
|
303
|
+
.command('put')
|
|
304
|
+
.description('Create or overwrite a page (as draft) from an HTML document')
|
|
305
|
+
.requiredOption('--section <section>', 'Content section: blog, use-cases, alternatives')
|
|
306
|
+
.requiredOption('--slug <slug>', 'Page slug (folder name under the section)')
|
|
307
|
+
.requiredOption('--title <title>', 'Page title')
|
|
308
|
+
.option('--html <html>', 'The full HTML document')
|
|
309
|
+
.option('--html-file <path>', 'Read the HTML document from a file')
|
|
310
|
+
.option('--html-stdin', 'Read the HTML document from stdin')
|
|
311
|
+
.option('--description <text>', 'Meta description')
|
|
312
|
+
.option('--template <name>', 'Template name this page was built from')
|
|
328
313
|
.option('--seo <json>', 'SEO overrides JSON object')
|
|
329
314
|
.action(async (opts) => {
|
|
330
315
|
let payload;
|
|
331
316
|
try {
|
|
332
|
-
payload = await
|
|
317
|
+
payload = await buildPagePutPayload(opts);
|
|
333
318
|
}
|
|
334
319
|
catch (err) {
|
|
335
320
|
usageError(err);
|
|
336
321
|
}
|
|
337
|
-
const data = await callSeoHostingAction('
|
|
338
|
-
emitSuccess(data,
|
|
322
|
+
const data = await callSeoHostingAction('put_page', payload);
|
|
323
|
+
emitSuccess(data, renderPage);
|
|
339
324
|
});
|
|
340
|
-
|
|
341
|
-
.command('
|
|
342
|
-
.description('
|
|
343
|
-
.
|
|
344
|
-
.
|
|
345
|
-
.
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
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);
|
|
325
|
+
pages
|
|
326
|
+
.command('publish')
|
|
327
|
+
.description('Validate and publish a page (makes it live once the domain is live)')
|
|
328
|
+
.requiredOption('--section <section>', 'Content section')
|
|
329
|
+
.requiredOption('--slug <slug>', 'Page slug')
|
|
330
|
+
.action(async (opts) => {
|
|
331
|
+
const data = await callSeoHostingAction('publish_page', {
|
|
332
|
+
section: opts.section,
|
|
333
|
+
slug: opts.slug,
|
|
334
|
+
});
|
|
335
|
+
emitSuccess(data, renderPage);
|
|
361
336
|
});
|
|
362
|
-
|
|
363
|
-
.command('
|
|
364
|
-
.description('
|
|
365
|
-
.
|
|
366
|
-
|
|
367
|
-
|
|
337
|
+
pages
|
|
338
|
+
.command('unpublish')
|
|
339
|
+
.description('Unpublish a page (back to draft; stops serving)')
|
|
340
|
+
.requiredOption('--section <section>', 'Content section')
|
|
341
|
+
.requiredOption('--slug <slug>', 'Page slug')
|
|
342
|
+
.action(async (opts) => {
|
|
343
|
+
const data = await callSeoHostingAction('unpublish_page', {
|
|
344
|
+
section: opts.section,
|
|
345
|
+
slug: opts.slug,
|
|
346
|
+
});
|
|
347
|
+
emitSuccess(data, renderPage);
|
|
368
348
|
});
|
|
369
|
-
|
|
370
|
-
.command('delete
|
|
371
|
-
.description('
|
|
349
|
+
pages
|
|
350
|
+
.command('delete')
|
|
351
|
+
.description('Delete a page folder (index.html + page.json)')
|
|
352
|
+
.requiredOption('--section <section>', 'Content section')
|
|
353
|
+
.requiredOption('--slug <slug>', 'Page slug')
|
|
372
354
|
.option('--confirm', 'Confirm the delete')
|
|
373
|
-
.action(async (
|
|
355
|
+
.action(async (opts) => {
|
|
374
356
|
if (!opts.confirm) {
|
|
375
357
|
emitError('confirmation_required', 'Delete requires explicit confirmation.', ExitCode.USAGE, 'Re-run with --confirm.');
|
|
376
358
|
}
|
|
377
|
-
const data = await callSeoHostingAction('
|
|
378
|
-
|
|
359
|
+
const data = await callSeoHostingAction('delete_page', {
|
|
360
|
+
section: opts.section,
|
|
361
|
+
slug: opts.slug,
|
|
362
|
+
});
|
|
363
|
+
emitSuccess(data, (d) => `Deleted ${d.section}/${d.slug} (${d.removed_objects} objects).`);
|
|
364
|
+
});
|
|
365
|
+
pages
|
|
366
|
+
.command('upload-asset')
|
|
367
|
+
.description('Upload an image / theme.css / font to the public CDN')
|
|
368
|
+
.requiredOption('--path <path>', "Relative CDN asset path, e.g. 'blog/{slug}/hero.png'")
|
|
369
|
+
.requiredOption('--file <path>', 'Local file to upload')
|
|
370
|
+
.action(async (opts) => {
|
|
371
|
+
// Direct multipart upload (no base64): stream the file to the CLI asset
|
|
372
|
+
// endpoint, which reuses the same AssetPublisher validation as the data action.
|
|
373
|
+
let bytes;
|
|
374
|
+
try {
|
|
375
|
+
bytes = readFileSync(opts.file);
|
|
376
|
+
}
|
|
377
|
+
catch (err) {
|
|
378
|
+
usageError(new SeoHostingUsageError(`Could not read file: ${opts.file}`, err.message));
|
|
379
|
+
}
|
|
380
|
+
const form = new FormData();
|
|
381
|
+
form.append('path', opts.path);
|
|
382
|
+
form.append('file', new Blob([bytes]), basename(opts.file));
|
|
383
|
+
const data = await apiRequest(ASSETS_PATH, {
|
|
384
|
+
method: 'POST',
|
|
385
|
+
workspace: true,
|
|
386
|
+
body: form,
|
|
387
|
+
});
|
|
388
|
+
emitSuccess(data, renderAssetUpload);
|
|
379
389
|
});
|
|
380
390
|
const connections = seoHosting
|
|
381
391
|
.command('connections')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo-hosting.js","sourceRoot":"","sources":["../../src/commands/seo-hosting.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seo-hosting.js","sourceRoot":"","sources":["../../src/commands/seo-hosting.ts"],"names":[],"mappings":"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"}
|
|
@@ -943,6 +943,89 @@
|
|
|
943
943
|
"action:ga4/list_properties",
|
|
944
944
|
"action:ga4/get_property_overview"
|
|
945
945
|
]
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
"id": "action:posthog/list_projects",
|
|
949
|
+
"namespace": "posthog",
|
|
950
|
+
"action": "list_projects",
|
|
951
|
+
"description": "List the PostHog projects this brand can query.",
|
|
952
|
+
"long_description": "Returns the PostHog projects granted to the current brand (project_id + name). START HERE for any PostHog task: every other posthog action requires one of these project_ids. Do NOT ask the user for a project id \u2014 this action is the source of truth. (Upstream PostHog project listing is org-wide and not available.)",
|
|
953
|
+
"mode": "read",
|
|
954
|
+
"priority": "normal",
|
|
955
|
+
"requires_review": false,
|
|
956
|
+
"freshness_kind": "realtime",
|
|
957
|
+
"input_params": [],
|
|
958
|
+
"output_shape": "data.rows[].{project_id, name}",
|
|
959
|
+
"see_also": []
|
|
960
|
+
},
|
|
961
|
+
{
|
|
962
|
+
"id": "action:posthog/list_tools",
|
|
963
|
+
"namespace": "posthog",
|
|
964
|
+
"action": "list_tools",
|
|
965
|
+
"description": "List the PostHog analytics tools available for a project.",
|
|
966
|
+
"long_description": "Returns the live PostHog MCP tool catalog for one granted project, each annotated with `requires_review`. The default response is a slim catalog without input schemas. Pass `tool` to fetch one exact tool's full input schema before calling `posthog/query`. Tools with `requires_review=true` (writes, or anything not on our read-only allowlist) must go through `posthog/request_change`, not `posthog/query`.",
|
|
967
|
+
"mode": "read",
|
|
968
|
+
"priority": "normal",
|
|
969
|
+
"requires_review": false,
|
|
970
|
+
"freshness_kind": "realtime",
|
|
971
|
+
"input_params": [
|
|
972
|
+
{
|
|
973
|
+
"name": "project_id",
|
|
974
|
+
"type": "string",
|
|
975
|
+
"required": false,
|
|
976
|
+
"description": "PostHog project id (from posthog/list_projects).",
|
|
977
|
+
"example": "12345"
|
|
978
|
+
},
|
|
979
|
+
{
|
|
980
|
+
"name": "tool",
|
|
981
|
+
"type": "string",
|
|
982
|
+
"required": false,
|
|
983
|
+
"description": "Exact PostHog tool name; when provided, returns that tool's full input schema.",
|
|
984
|
+
"example": "insight-query"
|
|
985
|
+
}
|
|
986
|
+
],
|
|
987
|
+
"output_shape": "data.project_id, data.tools[].{name, description, requires_review[, input_schema when tool is provided]}",
|
|
988
|
+
"see_also": []
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"id": "action:posthog/query",
|
|
992
|
+
"namespace": "posthog",
|
|
993
|
+
"action": "query",
|
|
994
|
+
"description": "Run a read-only PostHog analytics tool (trends, funnels, HogQL, etc.).",
|
|
995
|
+
"long_description": "Forwards a read-only PostHog tool call for one granted project. Common tools: `insight-query` (trends / funnels / retention), `execute-sql` (HogQL \u2014 read-only, validated), `read-data-schema` (use before writing HogQL to get real field names). Get the project_id from `posthog/list_projects` (never ask the user for it). Only allowlisted read tools are accepted here; a write or unvetted tool returns `requires_review` \u2014 call `posthog/request_change` for those. The response echoes which project was queried.",
|
|
996
|
+
"mode": "read",
|
|
997
|
+
"priority": "normal",
|
|
998
|
+
"requires_review": false,
|
|
999
|
+
"freshness_kind": "realtime",
|
|
1000
|
+
"input_params": [
|
|
1001
|
+
{
|
|
1002
|
+
"name": "project_id",
|
|
1003
|
+
"type": "string",
|
|
1004
|
+
"required": true,
|
|
1005
|
+
"description": "PostHog project id (from posthog/list_projects).",
|
|
1006
|
+
"example": "12345"
|
|
1007
|
+
},
|
|
1008
|
+
{
|
|
1009
|
+
"name": "tool",
|
|
1010
|
+
"type": "string",
|
|
1011
|
+
"required": true,
|
|
1012
|
+
"description": "Exact PostHog tool name from posthog/list_tools.",
|
|
1013
|
+
"example": "insight-query"
|
|
1014
|
+
},
|
|
1015
|
+
{
|
|
1016
|
+
"name": "arguments",
|
|
1017
|
+
"type": "object",
|
|
1018
|
+
"required": false,
|
|
1019
|
+
"description": "Tool arguments object per the tool's input schema.",
|
|
1020
|
+
"example": {
|
|
1021
|
+
"query": {
|
|
1022
|
+
"kind": "TrendsQuery"
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
],
|
|
1027
|
+
"output_shape": "data.{project_id, tool, is_error, content[], structured, truncated}",
|
|
1028
|
+
"see_also": []
|
|
946
1029
|
}
|
|
947
1030
|
]
|
|
948
1031
|
}
|
|
@@ -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;CACjB;AAED,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,
|
|
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;CACjB;AAED,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CA0FjG"}
|
package/dist/http/client.js
CHANGED
|
@@ -12,7 +12,10 @@ export async function apiRequest(path, opts = {}) {
|
|
|
12
12
|
Authorization: `Bearer ${token}`,
|
|
13
13
|
Accept: 'application/json',
|
|
14
14
|
};
|
|
15
|
-
|
|
15
|
+
// FormData (multipart, e.g. asset upload) sets its own Content-Type with the
|
|
16
|
+
// boundary — leave it unset so fetch fills it in; JSON bodies are stringified.
|
|
17
|
+
const isFormData = opts.body instanceof FormData;
|
|
18
|
+
if (opts.body !== undefined && !isFormData)
|
|
16
19
|
headers['Content-Type'] = 'application/json';
|
|
17
20
|
if (opts.workspace) {
|
|
18
21
|
const cfg = loadConfig();
|
|
@@ -30,7 +33,11 @@ export async function apiRequest(path, opts = {}) {
|
|
|
30
33
|
res = await fetch(`${base}${path}`, {
|
|
31
34
|
method: opts.method ?? 'GET',
|
|
32
35
|
headers,
|
|
33
|
-
body: opts.body
|
|
36
|
+
body: opts.body === undefined
|
|
37
|
+
? undefined
|
|
38
|
+
: isFormData
|
|
39
|
+
? opts.body
|
|
40
|
+
: JSON.stringify(opts.body),
|
|
34
41
|
});
|
|
35
42
|
}
|
|
36
43
|
catch (err) {
|
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;AAU/E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAc,IAAY,EAAE,OAAuB,EAAE;IACnF,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAA;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,SAAS,CACP,mBAAmB,EACnB,wBAAwB,EACxB,QAAQ,CAAC,IAAI,EACb,4CAA4C,CAC7C,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,KAAK,EAAE;QAChC,MAAM,EAAE,kBAAkB;KAC3B,CAAA;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import { CLI_VERSION } from './version.js';
|
|
|
20
20
|
const program = new Command();
|
|
21
21
|
program
|
|
22
22
|
.name('soku')
|
|
23
|
-
.description('Call Soku ads/GA4 data capabilities from any AI agent or shell.')
|
|
23
|
+
.description('Call Soku ads/GA4/PostHog data capabilities from any AI agent or shell.')
|
|
24
24
|
.version(CLI_VERSION);
|
|
25
25
|
registerAuthCommands(program);
|
|
26
26
|
registerOrgCommands(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,4BAA4B;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACvG,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
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 — call Soku ads/GA4 data capabilities from any AI agent or shell.",
|
|
3
|
+
"version": "0.1.0-alpha.9",
|
|
4
|
+
"description": "Soku CLI — call Soku ads/GA4/PostHog data capabilities from any AI agent or shell.",
|
|
5
5
|
"license": "Proprietary",
|
|
6
6
|
"author": "Soku",
|
|
7
7
|
"homepage": "https://soku.ai/cli",
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"ai-agent",
|
|
20
20
|
"marketing-analytics",
|
|
21
21
|
"google-ads",
|
|
22
|
-
"ga4"
|
|
22
|
+
"ga4",
|
|
23
|
+
"posthog"
|
|
23
24
|
],
|
|
24
25
|
"type": "module",
|
|
25
26
|
"bin": {
|
package/skills/soku/SKILL.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: soku
|
|
3
3
|
description: >-
|
|
4
|
-
Use when calling Soku ads/GA4 marketing-data capabilities or SEO
|
|
5
|
-
domain connections from the shell —
|
|
4
|
+
Use when calling Soku ads/GA4/PostHog marketing-data capabilities or SEO
|
|
5
|
+
Hosting domain connections from the shell —
|
|
6
6
|
running `soku auth login`, switching org/brand with `soku org use` /
|
|
7
7
|
`soku brand use`, discovering capabilities, calling a data action, routing a
|
|
8
8
|
third-party API call (Ahrefs/DataForSEO/Firecrawl/Gemini/…) through
|
|
@@ -16,10 +16,10 @@ metadata:
|
|
|
16
16
|
|
|
17
17
|
# Soku CLI
|
|
18
18
|
|
|
19
|
-
The `soku` CLI calls Soku's ads, GA4, and SEO Hosting capabilities over
|
|
20
|
-
is the preferred way for an agent to use Soku from any shell, with no
|
|
21
|
-
required. Output is JSON on stdout; errors are a JSON envelope on
|
|
22
|
-
semantic exit code.
|
|
19
|
+
The `soku` CLI calls Soku's ads, GA4, PostHog, and SEO Hosting capabilities over
|
|
20
|
+
HTTP. It is the preferred way for an agent to use Soku from any shell, with no
|
|
21
|
+
MCP host required. Output is JSON on stdout; errors are a JSON envelope on
|
|
22
|
+
stderr with a semantic exit code.
|
|
23
23
|
|
|
24
24
|
## Output & exit codes
|
|
25
25
|
|
|
@@ -128,8 +128,9 @@ inspect them with `--help` — never guess action names or flags.
|
|
|
128
128
|
|
|
129
129
|
```bash
|
|
130
130
|
soku resources list # what's granted (e.g. data-infra, seo-hosting)
|
|
131
|
-
soku --help # namespaces: ads, ga4, …
|
|
131
|
+
soku --help # namespaces: ads, ga4, posthog, …
|
|
132
132
|
soku ads --help # actions in the ads namespace
|
|
133
|
+
soku posthog --help # customer PostHog read actions
|
|
133
134
|
soku ads query-single-dimension --help # flags, types, and usage for one action
|
|
134
135
|
|
|
135
136
|
soku ads list-ad-accounts --platform google
|
|
@@ -167,6 +168,29 @@ Do not write full `SELECT ... FROM ...` GAQL SQL. `gaql-search` takes structured
|
|
|
167
168
|
server translates those into real GAQL. For the same action through the raw
|
|
168
169
|
escape hatch, use snake_case: `soku call ads gaql_search --payload '{...}'`.
|
|
169
170
|
|
|
171
|
+
### PostHog customer analytics
|
|
172
|
+
|
|
173
|
+
PostHog data uses the same backend MCP forwarding gateway as the sandbox agent.
|
|
174
|
+
Start by listing the current brand's granted projects, then inspect the live
|
|
175
|
+
tool menu, then run an allowlisted read tool. Do not ask the user for a project
|
|
176
|
+
id before listing projects.
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
soku posthog list-projects
|
|
180
|
+
soku posthog list-tools --project-id 12345
|
|
181
|
+
soku posthog query --project-id 12345 --tool execute-sql \
|
|
182
|
+
--arguments '{"query":"SELECT count() FROM events WHERE event = '\''$pageview'\''"}'
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Use `read-data-schema` before writing HogQL if field names are unclear:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
soku posthog query --project-id 12345 --tool read-data-schema --arguments '{}'
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
The CLI default read surface does not expose `posthog/request_change`; writes and
|
|
192
|
+
unvetted PostHog MCP tools remain outside the generated command tree.
|
|
193
|
+
|
|
170
194
|
### Raw escape hatch
|
|
171
195
|
|
|
172
196
|
`soku call <namespace> <action>` runs any action by its raw (snake_case) name
|
|
@@ -176,6 +200,7 @@ a newer action than this CLI version ships:
|
|
|
176
200
|
```bash
|
|
177
201
|
soku call ads list_ad_accounts -p platform=google
|
|
178
202
|
soku call ads query_single_dimension --payload '{"account_id":"123","dimension":"campaign"}'
|
|
203
|
+
soku call posthog query --payload '{"project_id":"12345","tool":"execute-sql","arguments":{"query":"SELECT count() FROM events"}}'
|
|
179
204
|
```
|
|
180
205
|
|
|
181
206
|
## SEO Hosting domain connections
|
|
@@ -199,9 +224,11 @@ soku brand use <slug|id>
|
|
|
199
224
|
|
|
200
225
|
### Posts
|
|
201
226
|
|
|
202
|
-
Use typed `
|
|
203
|
-
runtime agents through `seo_hosting/*`.
|
|
204
|
-
|
|
227
|
+
Use typed `pages` commands for the same SEO Hosting content actions exposed to
|
|
228
|
+
runtime agents through `seo_hosting/*`. SEO Hosting pages are **complete HTML
|
|
229
|
+
documents** (not Markdown) served as owned-media web pages on the brand's
|
|
230
|
+
connected domain; they are identified by `section` + `slug` (there are no post
|
|
231
|
+
ids). They are not social posts.
|
|
205
232
|
|
|
206
233
|
Always check status first:
|
|
207
234
|
|
|
@@ -209,27 +236,30 @@ Always check status first:
|
|
|
209
236
|
soku seo-hosting status
|
|
210
237
|
```
|
|
211
238
|
|
|
212
|
-
|
|
213
|
-
|
|
239
|
+
`status` shows each connected domain, whether it is `live`, and which sections it
|
|
240
|
+
serves. If no domain is live, do not publish yet; connect or fix a domain first.
|
|
241
|
+
When hosting is live:
|
|
214
242
|
|
|
215
243
|
```bash
|
|
216
|
-
soku seo-hosting
|
|
217
|
-
soku seo-hosting
|
|
218
|
-
soku seo-hosting
|
|
219
|
-
soku seo-hosting
|
|
220
|
-
soku seo-hosting
|
|
221
|
-
soku seo-hosting
|
|
244
|
+
soku seo-hosting pages list --section blog --status draft
|
|
245
|
+
soku seo-hosting pages put --section blog --slug how-to --title "How to ..." --html-file page.html
|
|
246
|
+
soku seo-hosting pages publish --section blog --slug how-to
|
|
247
|
+
soku seo-hosting pages unpublish --section blog --slug how-to
|
|
248
|
+
soku seo-hosting pages delete --section blog --slug how-to --confirm
|
|
249
|
+
soku seo-hosting pages upload-asset --path blog/how-to/hero.png --file ./hero.png
|
|
222
250
|
```
|
|
223
251
|
|
|
224
|
-
`
|
|
225
|
-
`--
|
|
226
|
-
`--
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
252
|
+
`put` creates or overwrites a page as a **draft** and requires `--section`,
|
|
253
|
+
`--slug`, `--title`, and exactly one HTML source: `--html`, `--html-file`, or
|
|
254
|
+
`--html-stdin`. Optional metadata flags are `--description`, `--template`, and
|
|
255
|
+
`--seo '<json object>'`. Reference images / CSS / fonts by the absolute URL
|
|
256
|
+
returned from `pages upload-asset` (no custom JavaScript — HTML + CSS only).
|
|
257
|
+
|
|
258
|
+
`publish` runs the validation gate (no `<script>` / inline JS) and
|
|
259
|
+
makes the page live once a domain serves its section; it also prints advisory
|
|
260
|
+
`Link warnings` for dead internal links (these do not block publishing — fix the
|
|
261
|
+
links and re-publish). `unpublish` reverts it to draft. Writes run immediately
|
|
262
|
+
(no-review), so confirm intent with the user before publishing or deleting.
|
|
233
263
|
|
|
234
264
|
### Domain connections
|
|
235
265
|
|