@soku-ai/cli 0.1.0-alpha.3 → 0.1.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +33 -13
  2. package/dist/commands/brand.d.ts.map +1 -1
  3. package/dist/commands/brand.js +57 -1
  4. package/dist/commands/brand.js.map +1 -1
  5. package/dist/commands/generated.d.ts.map +1 -1
  6. package/dist/commands/generated.js +16 -3
  7. package/dist/commands/generated.js.map +1 -1
  8. package/dist/commands/memory.d.ts +18 -0
  9. package/dist/commands/memory.d.ts.map +1 -0
  10. package/dist/commands/memory.js +70 -0
  11. package/dist/commands/memory.js.map +1 -0
  12. package/dist/commands/skill.d.ts +44 -10
  13. package/dist/commands/skill.d.ts.map +1 -1
  14. package/dist/commands/skill.js +77 -45
  15. package/dist/commands/skill.js.map +1 -1
  16. package/dist/commands/update.d.ts +23 -0
  17. package/dist/commands/update.d.ts.map +1 -0
  18. package/dist/commands/update.js +345 -0
  19. package/dist/commands/update.js.map +1 -0
  20. package/dist/commands/workspace.d.ts +4 -0
  21. package/dist/commands/workspace.d.ts.map +1 -0
  22. package/dist/commands/workspace.js +132 -0
  23. package/dist/commands/workspace.js.map +1 -0
  24. package/dist/config.d.ts +2 -2
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js +2 -2
  27. package/dist/config.js.map +1 -1
  28. package/dist/generated/capabilities.json +1 -1
  29. package/dist/http/client.d.ts.map +1 -1
  30. package/dist/http/client.js +50 -14
  31. package/dist/http/client.js.map +1 -1
  32. package/dist/index.js +24 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/output/unwrap.d.ts.map +1 -1
  35. package/dist/output/unwrap.js +18 -1
  36. package/dist/output/unwrap.js.map +1 -1
  37. package/dist/skills/unzip.d.ts +1 -1
  38. package/dist/skills/unzip.js +1 -1
  39. package/dist/update-check.d.ts +0 -1
  40. package/dist/update-check.d.ts.map +1 -1
  41. package/dist/update-check.js +4 -54
  42. package/dist/update-check.js.map +1 -1
  43. package/dist/version.d.ts +1 -1
  44. package/dist/version.js +1 -1
  45. package/package.json +4 -2
  46. package/postinstall.cjs +85 -0
  47. package/skills/soku/SKILL.md +79 -9
package/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # @soku-ai/cli
2
2
 
3
- Call Soku ads/GA4 data capabilities from any shell or AI agent. It's the
4
- preferred surface for external agents equivalent to the hosted MCP server, but
5
- works without an MCP host.
3
+ Call Soku ads/GA4 data capabilities from any shell or AI agent. It is the
4
+ preferred surface for external agents and does not require an MCP host.
6
5
 
7
6
  ## Install
8
7
 
@@ -24,7 +23,8 @@ soku auth login # device-login in the browser
24
23
  soku org use <slug|id> # pick a workspace (id, slug, or name)
25
24
  soku brand use <slug|id>
26
25
  soku --help # discover namespaces (ads, ga4, …)
27
- soku update-check # check npm for a newer CLI release
26
+ soku update status # check CLI and installed skill updates
27
+ soku memory list # read current-brand memory context
28
28
  soku ads --help # actions in a namespace
29
29
  soku ads list-ad-accounts --platform google
30
30
  ```
@@ -81,17 +81,37 @@ removed.
81
81
 
82
82
  ## Updates
83
83
 
84
- `soku update-check` queries the npm registry for `@soku-ai/cli@latest` and tells
85
- the user whether `npm i -g @soku-ai/cli` should be re-run. The CLI also performs a
86
- TTY-only advisory check at most once every 24 hours, cached in
87
- `~/.soku/update-check.json`. Set `SOKU_NO_UPDATE_CHECK=1` to disable the
88
- background notice.
84
+ `soku update status` queries the npm registry for `@soku-ai/cli@latest` and
85
+ compares installed Soku-managed skills against the public skill catalog.
86
+ `soku update skills` refreshes the bundled `soku` meta-skill plus already
87
+ installed business skills. `soku update cli` runs `npm i -g @soku-ai/cli`.
88
+
89
+ The CLI also performs an advisory check on every command invocation, writing
90
+ update notices to stderr only. There is no update-check cache; set
91
+ `SOKU_NO_UPDATE_CHECK=1` to disable the background notice. The legacy
92
+ `soku update-check` command still exists as a hidden compatibility alias.
93
+
94
+ ## Release
95
+
96
+ Release publishing is handled by `.github/workflows/publish-soku-cli.yml`.
97
+
98
+ 1. Bump both `apps/cli/package.json` and `apps/cli/src/version.ts`.
99
+ 2. Run `pnpm --filter @soku-ai/cli test` and `pnpm --filter @soku-ai/cli build`.
100
+ 3. Use workflow dispatch with `dry_run=true` to verify packaging.
101
+ 4. After the PR is merged, push a tag named `soku-ai-cli-v<version>`.
102
+
103
+ The workflow verifies that the tag matches the package version, checks that the
104
+ version is not already on npm, runs `npm pack --dry-run`, then publishes with
105
+ `npm publish --access public --tag latest` via npm Trusted Publishing.
106
+ The publish workflow upgrades npm to the Trusted Publishing compatible runtime
107
+ before calling `npm publish`.
89
108
 
90
109
  ## Environment variables
91
110
 
92
111
  Production is the default: API calls go to `https://api.soku.ai`, and skills are
93
- downloaded from `https://cdn.soku.ai/skills`. Local and staging endpoints are
94
- environment-only overrides so a dev session cannot poison `~/.soku/config.json`.
112
+ downloaded from `https://api.soku.ai/api/cli/skills`. Local and staging
113
+ endpoints are environment-only overrides so a dev session cannot poison
114
+ `~/.soku/config.json`.
95
115
 
96
116
  ```bash
97
117
  SOKU_API_BASE=http://localhost:15386 soku auth status
@@ -104,6 +124,6 @@ SOKU_SKILLS_URL=http://127.0.0.1:18080 soku skill list
104
124
  | `SOKU_API_BASE` | Per-command API base URL override; default is `https://api.soku.ai` |
105
125
  | `SOKU_ORG_ID` / `SOKU_BRAND_ID` | One-off workspace override |
106
126
  | `SOKU_NO_KEYCHAIN` | Skip the OS keychain; use the 0600 file |
107
- | `SOKU_NO_UPDATE_CHECK` | Disable the TTY-only update notice |
108
- | `SOKU_SKILLS_URL` | Per-command skill catalog/CDN override |
127
+ | `SOKU_NO_UPDATE_CHECK` | Disable the background update notice |
128
+ | `SOKU_SKILLS_URL` | Per-command skill catalog override |
109
129
  | `ALL_PROXY` | Proxy for outbound HTTPS |
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/commands/brand.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF5D"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/commands/brand.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwJ5D"}
@@ -28,10 +28,56 @@ export function registerBrandCommands(program) {
28
28
  { key: 'id', header: 'ID' },
29
29
  ]));
30
30
  });
31
+ brand
32
+ .command('find <query>')
33
+ .description('Search accessible brands across all organizations')
34
+ .option('--limit <n>', 'Maximum candidates to show', '20')
35
+ .action(async (query, opts) => {
36
+ const limit = Number(opts.limit);
37
+ if (!Number.isFinite(limit) || limit < 1) {
38
+ emitError('usage', '--limit must be a positive number.', ExitCode.USAGE);
39
+ }
40
+ const data = await apiRequest(`/api/cli/brands/search?q=${encodeURIComponent(query)}&limit=${encodeURIComponent(String(limit))}`);
41
+ emitSuccess(data, (d) => table(d.brands.map((b) => ({
42
+ name: b.name,
43
+ slug: b.slug,
44
+ org: b.org_slug || b.org_name || b.org_id,
45
+ id: b.id,
46
+ })), [
47
+ { key: 'name', header: 'NAME' },
48
+ { key: 'slug', header: 'SLUG' },
49
+ { key: 'org', header: 'ORG' },
50
+ { key: 'id', header: 'ID' },
51
+ ]));
52
+ });
31
53
  brand
32
54
  .command('use <brand>')
33
55
  .description('Set the active brand (accepts id, slug, or name)')
34
- .action(async (ref) => {
56
+ .option('--any-org', 'Search all accessible organizations and set org+brand together')
57
+ .action(async (ref, opts) => {
58
+ if (opts.anyOrg) {
59
+ const { brands } = await apiRequest(`/api/cli/brands/search?q=${encodeURIComponent(ref)}&limit=20`);
60
+ const res = resolveSearchMatch(brands, ref);
61
+ if (res.kind === 'none') {
62
+ emitError('not_found', `No accessible brand matching "${ref}".`, ExitCode.NOT_FOUND, 'Run `soku workspace resolve <brand>` to see candidates.');
63
+ }
64
+ if (res.kind === 'ambiguous') {
65
+ const candidates = res.matches
66
+ .map((b) => `${b.slug} (${b.org_slug || b.org_name || b.org_id})`)
67
+ .join(', ');
68
+ emitError('ambiguous', `"${ref}" matches ${res.matches.length} brands.`, ExitCode.USAGE, `Use an exact slug or id: ${candidates}`);
69
+ }
70
+ const match = res.item;
71
+ updateConfig({ activeOrgId: match.org_id, activeBrandId: match.id });
72
+ emitSuccess({
73
+ active_org_id: match.org_id,
74
+ active_brand_id: match.id,
75
+ name: match.name,
76
+ org_name: match.org_name,
77
+ org_slug: match.org_slug,
78
+ }, (d) => `${green('✓')} Active workspace: ${cyan(d.org_slug || d.org_name || d.active_org_id)} / ${cyan(d.name)} ${dim(`(${d.active_brand_id})`)}\n ${dim('Next: soku resources list')}`);
79
+ return;
80
+ }
35
81
  const cfg = loadConfig();
36
82
  if (!cfg.activeOrgId) {
37
83
  emitError('no_org', 'Select an organization first.', ExitCode.USAGE, 'Run `soku org use <slug|id>`.');
@@ -50,4 +96,14 @@ export function registerBrandCommands(program) {
50
96
  emitSuccess({ active_org_id: cfg.activeOrgId, active_brand_id: match.id, name: match.name }, (d) => `${green('✓')} Active brand: ${cyan(d.name)} ${dim(`(${d.active_brand_id})`)}\n ${dim('Next: soku --help (data commands under each namespace)')}`);
51
97
  });
52
98
  }
99
+ function resolveSearchMatch(brands, ref) {
100
+ const exact = matchRef(brands, ref);
101
+ if (exact.kind !== 'none')
102
+ return exact;
103
+ if (brands.length === 1)
104
+ return { kind: 'match', item: brands[0] };
105
+ if (brands.length > 1)
106
+ return { kind: 'ambiguous', matches: brands };
107
+ return { kind: 'none' };
108
+ }
53
109
  //# sourceMappingURL=brand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/commands/brand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/commands/brand.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,aAAa,EAAE,CAAA;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAmCD,sEAAsE;AACtE,wBAAgB,YAAY,IAAI,kBAAkB,CAGjD;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAmD3F;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEhE"}
1
+ {"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,aAAa,EAAE,CAAA;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAmDD,sEAAsE;AACtE,wBAAgB,YAAY,IAAI,kBAAkB,CAGjD;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAkD3F;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEhE"}
@@ -41,6 +41,21 @@ function parseNumberFlag(param, raw) {
41
41
  }
42
42
  return n;
43
43
  }
44
+ function actionHelpSuffix(spec) {
45
+ const typedName = `${spec.namespace} ${toKebab(spec.action)}`;
46
+ const rawName = `${spec.namespace} ${spec.action}`;
47
+ const naming = `Typed CLI command: soku ${typedName}\nRaw call action: soku call ${rawName}`;
48
+ if (spec.namespace === 'ads' && spec.action === 'gaql_search') {
49
+ return [
50
+ 'FALLBACK WARNING:',
51
+ 'Prefer cached ads analytics first: `soku ads list-dimensions`, then `soku ads query-single-dimension` or `soku ads query-multi-dimension`.',
52
+ 'Use GAQL only for Google-native fields or segment combinations not covered by cached query actions. If fields are unknown, run `soku ads get-resource-metadata` before this command.',
53
+ '',
54
+ naming,
55
+ ].join('\n');
56
+ }
57
+ return naming;
58
+ }
44
59
  /** Load the committed manifest shipped alongside the compiled CLI. */
45
60
  export function loadManifest() {
46
61
  const path = fileURLToPath(new URL('../generated/capabilities.json', import.meta.url));
@@ -59,9 +74,7 @@ export function buildGeneratedCommands(program, manifest) {
59
74
  };
60
75
  for (const spec of manifest.actions) {
61
76
  const cmd = groupFor(spec.namespace).command(toKebab(spec.action));
62
- cmd.description(spec.description);
63
- if (spec.long_description)
64
- cmd.addHelpText('after', `\n${spec.long_description}`);
77
+ cmd.description([spec.description, spec.long_description, actionHelpSuffix(spec)].filter(Boolean).join('\n\n'));
65
78
  for (const param of spec.input_params) {
66
79
  const flag = `--${toKebab(param.name)}`;
67
80
  const desc = param.description || param.name;
@@ -1 +1 @@
1
- {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AA6BpD,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AACxE,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,uEAAuE;IACvE,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,CAAA;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,GAAW;IAC/C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IACtF,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,GAAW;IACjD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACrB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IACpF,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAuB,CAAA;AACrE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,QAA4B;IACnF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAA;IACzC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAW,EAAE;QAC9C,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,GAAG,SAAS,oBAAoB,CAAC,CAAA;YAChF,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC9B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAClE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,IAAI,IAAI,CAAC,gBAAgB;YAAE,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAEjF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAA;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACtB,SAAQ;YACV,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,IAAI,UAAU,CAAA;YACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7C,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;oBACxB,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC/C,CAAC,CAAC,SAAS,CAAA;YACf,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,MAAM;oBAAE,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;;oBAClD,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM;oBAAE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;;oBAC1C,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAA6B,EAAE,EAAE;YACjD,MAAM,OAAO,GAA4B,EAAE,CAAA;YAC3C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gBACvC,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;YACtD,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EACxF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CACnD,CAAA;YACD,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;AACjD,CAAC"}
1
+ {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/commands/generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** `soku memory` — read memory entries scoped to the active brand. */
2
+ import { Command } from 'commander';
3
+ export type MemoryType = 'user' | 'feedback' | 'reference' | 'task' | 'reflection';
4
+ export interface MemoryEntry {
5
+ type: MemoryType;
6
+ name: string;
7
+ description: string;
8
+ content: string;
9
+ updated_at: string;
10
+ }
11
+ export declare function memoryListPath(opts: {
12
+ type?: string;
13
+ query?: string;
14
+ }): string;
15
+ export declare function renderMemoryEntries(entries: MemoryEntry[]): string;
16
+ export declare function renderMemoryEntry(entry: MemoryEntry): string;
17
+ export declare function registerMemoryCommands(program: Command): void;
18
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,CAAA;AAElF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB;AAcD,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAM9E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAiBlE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAM5D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqC7D"}
@@ -0,0 +1,70 @@
1
+ /** `soku memory` — read memory entries scoped to the active brand. */
2
+ import { apiRequest } from '../http/client.js';
3
+ import { bold, dim, emitSuccess, table } from '../output/envelope.js';
4
+ export function memoryListPath(opts) {
5
+ const params = new URLSearchParams();
6
+ if (opts.type)
7
+ params.set('type', opts.type);
8
+ if (opts.query)
9
+ params.set('q', opts.query);
10
+ const query = params.toString();
11
+ return `/api/cli/memory${query ? `?${query}` : ''}`;
12
+ }
13
+ export function renderMemoryEntries(entries) {
14
+ return table(entries.map((entry) => ({
15
+ type: entry.type,
16
+ name: entry.name,
17
+ description: entry.description,
18
+ updated: entry.updated_at,
19
+ preview: compactPreview(entry.content),
20
+ })), [
21
+ { key: 'type', header: 'TYPE' },
22
+ { key: 'name', header: 'NAME' },
23
+ { key: 'description', header: 'DESCRIPTION' },
24
+ { key: 'updated', header: 'UPDATED' },
25
+ { key: 'preview', header: 'PREVIEW' },
26
+ ]);
27
+ }
28
+ export function renderMemoryEntry(entry) {
29
+ const header = `${bold('Memory')}: ${entry.type}/${entry.name}`;
30
+ const description = entry.description ? `\n${bold('Description')}: ${entry.description}` : '';
31
+ const updated = entry.updated_at ? `\n${bold('Updated')}: ${entry.updated_at}` : '';
32
+ const body = entry.content.trim() || dim('(empty)');
33
+ return `${header}${description}${updated}\n\n${body}`;
34
+ }
35
+ export function registerMemoryCommands(program) {
36
+ const memory = program
37
+ .command('memory')
38
+ .description('Read memory entries for the active brand workspace');
39
+ memory
40
+ .command('list')
41
+ .description('List current-brand memory entries with content previews')
42
+ .option('--type <type>', 'Filter by memory type: user, feedback, reference, task, reflection')
43
+ .option('-q, --query <text>', 'Search name, description, or content')
44
+ .action(async (opts) => {
45
+ const data = await apiRequest(memoryListPath(opts), { workspace: true });
46
+ emitSuccess(data, (d) => renderMemoryEntries(d.entries));
47
+ });
48
+ memory
49
+ .command('search <query>')
50
+ .description('Search current-brand memory entries')
51
+ .option('--type <type>', 'Filter by memory type: user, feedback, reference, task, reflection')
52
+ .action(async (query, opts) => {
53
+ const data = await apiRequest(memoryListPath({ type: opts.type, query }), { workspace: true });
54
+ emitSuccess(data, (d) => renderMemoryEntries(d.entries));
55
+ });
56
+ memory
57
+ .command('get <type> <name>')
58
+ .description('Read one full current-brand memory entry')
59
+ .action(async (type, name) => {
60
+ const data = await apiRequest(`/api/cli/memory/${encodeURIComponent(type)}/${encodeURIComponent(name)}`, { workspace: true });
61
+ emitSuccess(data, (d) => renderMemoryEntry(d.entry));
62
+ });
63
+ }
64
+ function compactPreview(content) {
65
+ const normalized = content.replace(/\s+/g, ' ').trim();
66
+ if (!normalized)
67
+ return '';
68
+ return normalized.length > 120 ? `${normalized.slice(0, 117)}...` : normalized;
69
+ }
70
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,63 @@
1
1
  /** `soku skill` — discover and install Soku skills into an AI client.
2
2
  *
3
- * - `soku skill list` browse the public skill catalog (CDN)
3
+ * - `soku skill list` browse the public Soku skill catalog
4
4
  * - `soku skill install <slug...>` download + install business skills
5
5
  * - `soku skill install --all` install the whole catalog
6
6
  * - `soku skill install` (no slug) install just the bundled `soku` meta-skill
7
- * - `soku skill installed` / `remove` manage what's installed locally
7
+ * - `soku skill status` / `remove` manage what's installed locally
8
8
  *
9
- * Business skills are fetched as per-skill zips from a public CDN
10
- * (`cdn.soku.ai/skills/`), already translated to CLI-native at pack time. We
11
- * verify the sha256 from index.json, unzip safely, and drop each business skill
12
- * into `<skillsDir>/soku/<slug>/` with a top-level symlink
9
+ * Business skills are fetched as per-skill zips from the public Soku skill
10
+ * catalog, already translated to CLI-native at pack time. We verify the sha256
11
+ * from index.json, unzip safely, and drop each business skill into
12
+ * `<skillsDir>/soku/<slug>/` with a top-level symlink
13
13
  * `<skillsDir>/soku-<slug> -> soku/<slug>`. The bundled `soku` meta-skill (how
14
14
  * to drive the CLI) ships in the npm package and is installed as a prerequisite. */
15
15
  import { Command } from 'commander';
16
- interface ManifestRecord {
16
+ export declare const SOKU_META = "soku";
17
+ export declare const MANIFEST_FILE = ".soku-skills.json";
18
+ export type Agent = 'claude' | 'codex' | 'cursor';
19
+ export declare const AGENTS: Agent[];
20
+ export declare const PROJECT_DIRS: Record<Agent, string>;
21
+ export declare const GLOBAL_DIRS: Record<Agent, string>;
22
+ export interface IndexEntry {
23
+ slug: string;
24
+ name: string;
25
+ description: string;
26
+ category?: string | null;
27
+ version?: string | null;
28
+ providers?: string[];
29
+ tags?: string[];
30
+ zip: string;
31
+ sha256: string;
32
+ bytes: number;
33
+ }
34
+ export interface SkillIndex {
35
+ schema: number;
36
+ generated_at: string;
37
+ source_commit: string;
38
+ base_url: string;
39
+ count: number;
40
+ skills: IndexEntry[];
41
+ }
42
+ export interface ManifestRecord {
17
43
  version?: string | null;
18
44
  sha256: string;
19
45
  installed_at: string;
20
- source: 'cdn' | 'bundled';
46
+ source: 'catalog' | 'cdn' | 'bundled';
21
47
  }
22
- type Manifest = Record<string, ManifestRecord>;
48
+ export type Manifest = Record<string, ManifestRecord>;
49
+ export declare function baseDirFor(agent: Agent, global: boolean): string;
50
+ export declare function parseAgents(value: string): Agent[];
23
51
  /** A slug is safe to use as a path segment (no traversal/separators). Exported for tests. */
24
52
  export declare function isSafeSlug(slug: string): boolean;
53
+ export declare function manifestPath(baseDir: string): string;
25
54
  export declare function loadManifest(baseDir: string): Manifest;
26
55
  export declare function saveManifest(baseDir: string, manifest: Manifest): void;
56
+ export declare function agentSkillName(slug: string): string;
57
+ export declare function fetchIndex(base: string): Promise<SkillIndex>;
58
+ /** Copy the bundled `soku` meta-skill into a client dir without deleting child skills. */
59
+ export declare function installMetaSoku(baseDir: string): string;
60
+ /** Download, verify, unzip, and install one business skill. */
61
+ export declare function installBusinessSkill(baseDir: string, entry: IndexEntry, base: string): Promise<string>;
27
62
  export declare function registerSkillCommand(program: Command): void;
28
- export {};
29
63
  //# sourceMappingURL=skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;oFAaoF;AAQpF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6CnC,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAA;CAC1B;AAED,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AA6B9C,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAYD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMtD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQtE;AA4KD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8H3D"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;oFAaoF;AAQpF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,SAAS,SAAS,CAAA;AAC/B,eAAO,MAAM,aAAa,sBAAsB,CAAA;AAEhD,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEjD,eAAO,MAAM,MAAM,EAAE,KAAK,EAAkC,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAI9C,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAI7C,CAAA;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,CAAA;CACtC;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAYrD,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAIlD;AASD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAQD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMtD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQtE;AAcD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AA8CD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoBlE;AAeD,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED,+DAA+D;AAC/D,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2C5G;AAuDD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6H3D"}