@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.
@@ -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;CACd;AAID,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAW/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"}
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"}
@@ -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({ client_id: CLIENT_ID, scope: opts.scope ?? 'data-infra' }),
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})`);
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/auth/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/auth/device.ts"],"names":[],"mappings":"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"}
@@ -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;AASnC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG3D"}
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"}
@@ -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({ signed_in: true, expires_in: outcome.token.expires_in, scope: outcome.token.scope }, () => `${green('✓')} Signed in ${dim(`(token valid ~${days} days)`)}\n ${dim('Next: soku org list')}`);
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":"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"}
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 posts and domain connections. */
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 HostingStatusResponse {
20
- configured: boolean;
19
+ interface HostingStatusDomain {
20
+ hostname: string;
21
+ method: string;
22
+ status: string;
21
23
  live: boolean;
22
- connections: Array<Pick<DomainConnection, 'method' | 'hostname' | 'status' | 'ssl_status' | 'mounted_sections' | 'last_error'>>;
23
- public_base_urls: string[];
24
+ url_contract: string;
25
+ served_sections: string[];
26
+ public_base_url: string;
24
27
  }
25
- interface SeoHostingPost {
26
- id: string;
27
- brand_id: string;
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?: string;
31
- excerpt?: string | null;
39
+ title: string;
40
+ description?: string | null;
32
41
  status: string;
33
- seo?: Record<string, unknown>;
34
- cover_image_url?: string | null;
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 PostBodyOptions {
57
- body?: string;
58
- bodyFile?: string;
59
- bodyStdin?: boolean;
70
+ interface HtmlBodyOptions {
71
+ html?: string;
72
+ htmlFile?: string;
73
+ htmlStdin?: boolean;
60
74
  }
61
- interface PostCreateOptions extends PostBodyOptions {
75
+ interface PagePutOptions extends HtmlBodyOptions {
76
+ section: string;
77
+ slug: string;
62
78
  title: string;
63
- slug?: string;
64
- section?: string;
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
- export declare function readPostBody(opts: PostBodyOptions, required: boolean): Promise<string | undefined>;
90
- export declare function buildPostCreatePayload(opts: PostCreateOptions): Promise<Record<string, unknown>>;
91
- export declare function buildPostUpdatePayload(postId: string, opts: PostUpdateOptions): Promise<Record<string, unknown>>;
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 renderPosts(items: SeoHostingPost[]): string;
94
- export declare function renderPost(post: SeoHostingPost): string;
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":"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"}
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 posts and domain connections. */
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
- export async function readPostBody(opts, required) {
105
- const sources = [opts.body !== undefined, opts.bodyFile, opts.bodyStdin].filter(Boolean);
106
- if (sources.length > 1) {
107
- throw new SeoHostingUsageError('Provide only one post body source.', 'Use --body, --body-file, or --body-stdin.');
108
- }
109
- if (sources.length === 0) {
110
- if (required) {
111
- throw new SeoHostingUsageError('Post body is required.', 'Use --body, --body-file, or --body-stdin.');
112
- }
113
- return undefined;
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 body;
116
- if (opts.bodyFile) {
112
+ let html;
113
+ if (opts.htmlFile) {
117
114
  try {
118
- body = readFileSync(opts.bodyFile, 'utf8');
115
+ html = readFileSync(opts.htmlFile, 'utf8');
119
116
  }
120
117
  catch (err) {
121
- throw new SeoHostingUsageError(`Could not read body file: ${opts.bodyFile}`, err.message);
118
+ throw new SeoHostingUsageError(`Could not read HTML file: ${opts.htmlFile}`, err.message);
122
119
  }
123
120
  }
124
- else if (opts.bodyStdin) {
125
- body = await readAll(process.stdin);
121
+ else if (opts.htmlStdin) {
122
+ html = await readAll(process.stdin);
126
123
  }
127
124
  else {
128
- body = opts.body ?? '';
125
+ html = opts.html ?? '';
129
126
  }
130
- if (!body.trim()) {
131
- throw new SeoHostingUsageError('Post body cannot be empty.');
127
+ if (!html.trim()) {
128
+ throw new SeoHostingUsageError('Page HTML cannot be empty.');
132
129
  }
133
- return body;
130
+ return html;
134
131
  }
135
- export async function buildPostCreatePayload(opts) {
136
- const body = await readPostBody(opts, true);
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
- body_markdown: body,
138
+ html,
140
139
  };
141
- addString(payload, 'slug', opts.slug);
142
- addString(payload, 'section', opts.section);
143
- addString(payload, 'excerpt', opts.excerpt);
144
- addString(payload, 'cover_image_url', opts.coverImageUrl);
145
- addString(payload, 'author_name', opts.authorName);
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('Configured')}: ${status.configured ? 'yes' : 'no'}`,
175
- `${bold('Live')}: ${status.live ? 'yes' : 'no'}`,
176
- `${bold('Public URLs')}: ${status.public_base_urls.length ? status.public_base_urls.join(', ') : dim('(none)')}`,
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.connections.length > 0) {
179
- rows.push('', bold('Connections'), renderConnectionSummaries(status.connections));
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 renderConnectionSummaries(items) {
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
- ssl: item.ssl_status,
189
- sections: item.mounted_sections?.join(',') || '',
190
- error: item.last_error || '',
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: 'ssl', header: 'SSL' },
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 renderPosts(items) {
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 renderPost(post) {
197
+ export function renderPage(page) {
216
198
  const rows = [
217
- `${bold('ID')}: ${cyan(post.id)}`,
218
- `${bold('Section')}: ${post.section}`,
219
- `${bold('Slug')}: ${post.slug}`,
220
- `${bold('Status')}: ${post.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 (post.title)
223
- rows.splice(1, 0, `${bold('Title')}: ${post.title}`);
224
- if (post.url_path)
225
- rows.push(`${bold('URL path')}: ${post.url_path}`);
226
- if (post.excerpt)
227
- rows.push(`${bold('Excerpt')}: ${post.excerpt}`);
228
- if (post.author_name)
229
- rows.push(`${bold('Author')}: ${post.author_name}`);
230
- if (post.published_at)
231
- rows.push(`${bold('Published')}: ${post.published_at}`);
232
- if (post.body_markdown !== undefined) {
233
- rows.push('', post.body_markdown.trim() || dim('(empty body)'));
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('Check whether the active brand has live SEO Hosting')
284
+ .description('Show this brand SEO Hosting setup: domains, live state, URL contract')
292
285
  .action(async () => {
293
- const data = await callSeoHostingAction('get_hosting_status');
286
+ const data = await callSeoHostingAction('get_status');
294
287
  emitSuccess(data, renderHostingStatus);
295
288
  });
296
- const posts = seoHosting.command('posts').description('Manage SEO Hosting posts');
297
- posts
289
+ const pages = seoHosting.command('pages').description('Manage SEO Hosting pages');
290
+ pages
298
291
  .command('list')
299
- .description('List SEO Hosting posts for the active brand')
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('list_posts', payload);
307
- emitSuccess(data, (d) => renderPosts(d.items));
308
- });
309
- posts
310
- .command('get <postId>')
311
- .description('Read one SEO Hosting post including its Markdown body')
312
- .action(async (postId) => {
313
- const data = await callSeoHostingAction('get_post', { post_id: postId });
314
- emitSuccess(data, renderPost);
299
+ const data = await callSeoHostingAction('list_pages', payload);
300
+ emitSuccess(data, (d) => renderPages(d.items));
315
301
  });
316
- posts
317
- .command('create')
318
- .description('Create a draft SEO Hosting post')
319
- .requiredOption('--title <title>', 'Post title')
320
- .option('--body <markdown>', 'Post body as Markdown')
321
- .option('--body-file <path>', 'Read Markdown body from a file')
322
- .option('--body-stdin', 'Read Markdown body from stdin')
323
- .option('--slug <slug>', 'Optional URL slug; derived from title when omitted')
324
- .option('--section <section>', 'Content section: blog, use-cases, alternatives')
325
- .option('--excerpt <text>', 'Short excerpt')
326
- .option('--cover-image-url <url>', 'Cover image URL')
327
- .option('--author-name <name>', 'Display author name')
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 buildPostCreatePayload(opts);
317
+ payload = await buildPagePutPayload(opts);
333
318
  }
334
319
  catch (err) {
335
320
  usageError(err);
336
321
  }
337
- const data = await callSeoHostingAction('create_post', payload);
338
- emitSuccess(data, renderPost);
322
+ const data = await callSeoHostingAction('put_page', payload);
323
+ emitSuccess(data, renderPage);
339
324
  });
340
- posts
341
- .command('update <postId>')
342
- .description('Update a SEO Hosting post')
343
- .option('--title <title>', 'New title')
344
- .option('--body <markdown>', 'New body as Markdown')
345
- .option('--body-file <path>', 'Read new Markdown body from a file')
346
- .option('--body-stdin', 'Read new Markdown body from stdin')
347
- .option('--excerpt <text>', 'New excerpt')
348
- .option('--cover-image-url <url>', 'New cover image URL')
349
- .option('--author-name <name>', 'New display author name')
350
- .option('--seo <json>', 'SEO overrides JSON object')
351
- .action(async (postId, opts) => {
352
- let payload;
353
- try {
354
- payload = await buildPostUpdatePayload(postId, opts);
355
- }
356
- catch (err) {
357
- usageError(err);
358
- }
359
- const data = await callSeoHostingAction('update_post', payload);
360
- emitSuccess(data, renderPost);
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
- posts
363
- .command('publish <postId>')
364
- .description('Publish a SEO Hosting post')
365
- .action(async (postId) => {
366
- const data = await callSeoHostingAction('publish_post', { post_id: postId });
367
- emitSuccess(data, renderPost);
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
- posts
370
- .command('delete <postId>')
371
- .description('Soft-delete a SEO Hosting post')
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 (postId, opts) => {
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('delete_post', { post_id: postId });
378
- emitSuccess(data, renderPost);
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":"AAAA,uFAAuF;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAIpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,gBAAgB,GAAG,yCAAyC,CAAA;AAClE,MAAM,WAAW,GAAG,6BAA6B,CAAA;AACjD,MAAM,qBAAqB,GAAG,2BAA2B,CAAA;AACzD,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAA;AACjC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;AA6GvE,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACP;IAAtC,YAAY,OAAe,EAAW,IAAa;QACjD,KAAK,CAAC,OAAO,CAAC,CAAA;QADsB,SAAI,GAAJ,IAAI,CAAS;IAEnD,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,YAAqB,EAAE,MAAe;IACzE,IAAI,CAAC,YAAY;QAAE,OAAO,gBAAgB,CAAA;IAC1C,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAA;IAChD,OAAO,GAAG,gBAAgB,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,GAAG,qBAAqB,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,GAAG;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,oBAAoB,CAC5B,wBAAwB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC5C,kDAAkD,CACnD,CAAA;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAA4B;IACzE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACpE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,oBAAoB,CAC5B,8CAA8C,EAC9C,8CAA8C,CAC/C,CAAA;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,KAAqC;IAC1D,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK;QAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;IACxD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA4B;IACpE,8BAA8B,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAA;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,oBAAoB,CAC5B,wBAAwB,IAAI,CAAC,UAAU,qBAAqB,EAC5D,UAAU,IAAI,CAAC,UAAU,iCAAiC,CAC3D,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,oBAAoB,CAC5B,4CAA4C,EAC5C,wIAAwI,CACzI,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAA0B,EAC1B,IAAuB;IAEvB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS;YAC1B,CAAC,CAAC,+FAA+F;YACjG,CAAC,CAAC,yEAAyE,CAAA;QAC7E,OAAO,IAAI,oBAAoB,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACxD,OAAO,IAAI,oBAAoB,CAC7B,sCAAsC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACnE,yFAAyF,CAC1F,CAAA;IACH,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC9D,OAAO,IAAI,oBAAoB,CAC7B,uDAAuD,EACvD,sGAAsG,CACvG,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,UAAmC,EAAE;IAErC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,OAAO;KACd,CAAC,CAAA;IACF,OAAO,cAAc,CAAC,MAAM,CAAM,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,oBAAoB,CAAC,2BAA2B,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,oBAAoB,CAAC,8BAA8B,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,MAAiC,CAAA;AAC1C,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAqB;IACtD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACxF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,oBAAoB,CAC5B,kCAAkC,EAClC,2CAA2C,CAC5C,CAAA;IACH,CAAC;IACD,IAAI,IAAY,CAAA;IAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,CAC5B,6BAA6B,IAAI,CAAC,QAAQ,EAAE,EAC3C,GAAa,CAAC,OAAO,CACvB,CAAA;QACH,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;IACxB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,oBAAoB,CAAC,4BAA4B,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAoB;IAEpB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI;KACL,CAAA;IACD,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACnD,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,GAAG;QAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAA;IAC1B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,OAAgC,EAAE,GAAW,EAAE,KAAc;IAC9E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA6B;IAC/D,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACpE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE;QACpD,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC,aAAa,EAAE;KACpD,CAAA;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACrE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA4B;IACvD,OAAO,KAAK,CACV,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC9B,QAAQ,EAAE,IAAI,CAAC,YAAY;QAC3B,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;KAC/C,CAAC,CAAC,EACH;QACE,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;QACvC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;QACnC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;QACnC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAC/B,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;QACvC,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;KACxC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAK,CACV,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,GAAG,EAAE,IAAI,CAAC,QAAQ;KACnB,CAAC,CAAC,EACH;QACE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;QACrC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAC/B,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;QACnC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QACjC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;KAC9B,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAoB;IAC7C,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;QACrC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACrC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;QACjC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;QACnC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;KACxC,CAAA;IACD,IAAI,IAAI,CAAC,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IAC9E,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrE,IAAI,IAAI,CAAC,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;IAC9E,IAAI,IAAI,CAAC,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QACtC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA0B;IAC1D,OAAO;QACL,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACpC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE;QAChC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,UAAU,QAAQ;KAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,OAAO,KAAK,CACV,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,UAAU;QACpB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;KACjD,CAAC,CAAC,EACH;QACE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAC3B,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;QACvC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;QACnC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;QACnC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAC7B,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;KACxC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAA4B;IAC3D,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;QACvC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE;QAC7C,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,MAAM,EAAE;QACzC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,MAAM,EAAE;QACzC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,UAAU,EAAE;KAC3C,CAAA;IACD,IAAI,UAAU,CAAC,qBAAqB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA0B;IAC1D,OAAO;QACL,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QAC9D,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACtD,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC9F,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;KACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC;IACD,MAAM,KAAK,CAAA;AACb,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAA;IAEnF,UAAU;SACP,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAwB,YAAY,CAAC,CAAA;QAC5E,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEJ,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAA;IAEjF,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,qBAAqB,EAAE,kDAAkD,CAAC;SACjF,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;SAC3E,MAAM,CAAC,KAAK,EAAE,IAA2C,EAAE,EAAE;QAC5D,MAAM,OAAO,GAA4B,EAAE,CAAA;QAC3C,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3C,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAmB,YAAY,EAAE,OAAO,CAAC,CAAA;QAChF,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,6DAA6D,CAAC;SAC1E,cAAc,CAAC,qBAAqB,EAAE,gDAAgD,CAAC;SACvF,cAAc,CAAC,eAAe,EAAE,2CAA2C,CAAC;SAC5E,cAAc,CAAC,iBAAiB,EAAE,YAAY,CAAC;SAC/C,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;SACjD,MAAM,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;SAClE,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;SAC3D,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;SAClD,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,CAAC;SACrE,MAAM,CAAC,cAAc,EAAE,2BAA2B,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;QACrC,IAAI,OAAgC,CAAA;QACpC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAiB,UAAU,EAAE,OAAO,CAAC,CAAA;QAC5E,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qEAAqE,CAAC;SAClF,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SACxD,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,IAAuC,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAiB,cAAc,EAAE;YACtE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SACxD,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,IAAuC,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAiB,gBAAgB,EAAE;YACxE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SACxD,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC;SAC5C,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,IAA0D,EAAE,EAAE;QAC3E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,CACP,uBAAuB,EACvB,wCAAwC,EACxC,QAAQ,CAAC,KAAK,EACd,wBAAwB,CACzB,CAAA;QACH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAA0B,aAAa,EAAE;YAC9E,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,YAAY,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,sDAAsD,CAAC;SACnE,cAAc,CAAC,eAAe,EAAE,sDAAsD,CAAC;SACvF,cAAc,CAAC,eAAe,EAAE,sBAAsB,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,IAAoC,EAAE,EAAE;QACrD,wEAAwE;QACxE,gFAAgF;QAChF,IAAI,KAAa,CAAA;QACjB,IAAI,CAAC;YACH,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CACR,IAAI,oBAAoB,CACtB,wBAAwB,IAAI,CAAC,IAAI,EAAE,EAClC,GAAa,CAAC,OAAO,CACvB,CACF,CAAA;QACH,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAsB,WAAW,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEJ,MAAM,WAAW,GAAG,UAAU;SAC3B,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,uCAAuC,CAAC,CAAA;IAEvD,WAAW;SACR,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,MAAM,UAAU,CAA+B,gBAAgB,EAAE;YAC5E,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEJ,WAAW;SACR,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wDAAwD,CAAC;SACrE,cAAc,CAAC,uBAAuB,EAAE,4CAA4C,CAAC;SACrF,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChG,MAAM,CAAC,KAAK,EAAE,IAA6C,EAAE,EAAE;QAC9D,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAsB,GAAG,gBAAgB,eAAe,EAAE;YACrF,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;SAC5C,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEJ,WAAW;SACR,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,sCAAsC,CAAC;SACnD,cAAc,CAAC,uBAAuB,EAAE,iDAAiD,CAAC;SAC1F,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAmB,gBAAgB,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAClC,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEJ,WAAW;SACR,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,2CAA2C,CAAC;SACxD,cAAc,CAAC,uBAAuB,EAAE,4CAA4C,CAAC;SACrF,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChG,MAAM,CAAC,uBAAuB,EAAE,8DAA8D,CAAC;SAC/F,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;SACtE,MAAM,CAAC,oBAAoB,EAAE,2DAA2D,CAAC;SACzF,MAAM,CAAC,8BAA8B,EAAE,mDAAmD,CAAC;SAC3F,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,8BAA8B,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,UAAU,CAAsB,GAAG,gBAAgB,eAAe,EAAE;YACtF,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;SAC5C,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC/C,IAAI,OAAO;YAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QAEhC,IAAI,KAAa,CAAA;QACjB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,UAAU,CAAmB,GAAG,gBAAgB,SAAS,EAAE;YAClF,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9D,CAAC,CAAA;QACF,WAAW,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CACvC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3F,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,WAAW;SACR,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,YAAoB,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAmB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE;YAC5F,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEJ,WAAW;SACR,OAAO,CAAC,2BAA2B,CAAC;SACpC,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,YAAoB,EAAE,IAA2B,EAAE,EAAE;QAClE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,CACP,uBAAuB,EACvB,4CAA4C,EAC5C,QAAQ,CAAC,KAAK,EACd,wBAAwB,CACzB,CAAA;QACH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAmB,oBAAoB,CAAC,YAAY,CAAC,EAAE;YAClF,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -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,CAkFjG"}
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"}
@@ -12,7 +12,10 @@ export async function apiRequest(path, opts = {}) {
12
12
  Authorization: `Bearer ${token}`,
13
13
  Accept: 'application/json',
14
14
  };
15
- if (opts.body !== undefined)
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 !== undefined ? JSON.stringify(opts.body) : undefined,
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
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":"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"}
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,yEAAyE,CAAC;KACtF,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvB,oBAAoB,CAAC,OAAO,CAAC,CAAA;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAA;AAClC,wBAAwB,CAAC,OAAO,CAAC,CAAA;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,yBAAyB,CAAC,OAAO,CAAC,CAAA;AAClC,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAC5B,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,oBAAoB,CAAC,OAAO,CAAC,CAAA;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAA;AAEnC,SAAS,YAAY,CAAC,OAAgB;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,IAAI,OAAO,GAAmB,OAAO,CAAA;IACrC,OAAO,OAAO,EAAE,CAAC;QACf,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACzB,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAA;IAClC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE;IAC9D,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;IACzC,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAM;IAC5D,MAAM,kBAAkB,EAAE,CAAA;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,EAAE,CAAC;QAC7C,MAAM,iBAAiB,EAAE,CAAA;IAC3B,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAM;IAC9B,MAAM,qBAAqB,EAAE,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,SAAS,CAAC,YAAY,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC7F,CAAC,CAAC,CAAA"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare const CLI_PACKAGE_NAME = "@soku-ai/cli";
2
- export declare const CLI_VERSION = "0.1.0-alpha.7";
2
+ export declare const CLI_VERSION = "0.1.0-alpha.9";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export const CLI_PACKAGE_NAME = '@soku-ai/cli';
2
- export const CLI_VERSION = '0.1.0-alpha.7';
2
+ export const CLI_VERSION = '0.1.0-alpha.9';
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@soku-ai/cli",
3
- "version": "0.1.0-alpha.7",
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": {
@@ -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 Hosting
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 HTTP. It
20
- is the preferred way for an agent to use Soku from any shell, with no MCP host
21
- required. Output is JSON on stdout; errors are a JSON envelope on stderr with a
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 `posts` commands for the same SEO Hosting content actions exposed to
203
- runtime agents through `seo_hosting/*`. These create and manage owned-media web
204
- pages on the brand's connected domain; they are not social posts.
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
- If `live` is false, do not create or publish posts yet; connect or fix a domain
213
- first. When hosting is live:
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 posts list --section blog --status draft
217
- soku seo-hosting posts get <post_id>
218
- soku seo-hosting posts create --title "How to ..." --section blog --body-file post.md
219
- soku seo-hosting posts update <post_id> --body-file revised.md
220
- soku seo-hosting posts publish <post_id>
221
- soku seo-hosting posts delete <post_id> --confirm
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
- `create` requires `--title` plus exactly one body source: `--body`,
225
- `--body-file`, or `--body-stdin`. Optional metadata flags are `--slug`,
226
- `--excerpt`, `--cover-image-url`, `--author-name`, and `--seo '<json object>'`.
227
- `update` supports mutable fields only; section and slug are intentionally not
228
- editable through the CLI.
229
-
230
- Writes run immediately (the same no-review behavior as the first-party
231
- `seo_hosting` data actions), so confirm intent with the user before publishing
232
- or deleting.
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