@solidnumber/cli 2.11.18 → 2.12.0

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 (51) hide show
  1. package/README.md +9 -1
  2. package/dist/client.d.ts +38 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +66 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/commands/apply.d.ts +18 -0
  7. package/dist/commands/apply.d.ts.map +1 -0
  8. package/dist/commands/apply.js +149 -0
  9. package/dist/commands/apply.js.map +1 -0
  10. package/dist/commands/context.d.ts.map +1 -1
  11. package/dist/commands/context.js +8 -0
  12. package/dist/commands/context.js.map +1 -1
  13. package/dist/commands/embed.d.ts +8 -0
  14. package/dist/commands/embed.d.ts.map +1 -0
  15. package/dist/commands/embed.js +103 -0
  16. package/dist/commands/embed.js.map +1 -0
  17. package/dist/commands/signal.d.ts +16 -1
  18. package/dist/commands/signal.d.ts.map +1 -1
  19. package/dist/commands/signal.js +126 -27
  20. package/dist/commands/signal.js.map +1 -1
  21. package/dist/index.js +20 -5
  22. package/dist/index.js.map +1 -1
  23. package/dist/lib/api-client.d.ts +20 -3
  24. package/dist/lib/api-client.d.ts.map +1 -1
  25. package/dist/lib/api-client.js +56 -7
  26. package/dist/lib/api-client.js.map +1 -1
  27. package/dist/lib/apply/engine.d.ts +87 -0
  28. package/dist/lib/apply/engine.d.ts.map +1 -0
  29. package/dist/lib/apply/engine.js +277 -0
  30. package/dist/lib/apply/engine.js.map +1 -0
  31. package/dist/lib/apply/registry.d.ts +33 -0
  32. package/dist/lib/apply/registry.d.ts.map +1 -0
  33. package/dist/lib/apply/registry.js +93 -0
  34. package/dist/lib/apply/registry.js.map +1 -0
  35. package/dist/lib/commerce-skill.d.ts +5 -0
  36. package/dist/lib/commerce-skill.d.ts.map +1 -0
  37. package/dist/lib/commerce-skill.js +111 -0
  38. package/dist/lib/commerce-skill.js.map +1 -0
  39. package/dist/lib/embed-snippets.d.ts +36 -0
  40. package/dist/lib/embed-snippets.d.ts.map +1 -0
  41. package/dist/lib/embed-snippets.js +137 -0
  42. package/dist/lib/embed-snippets.js.map +1 -0
  43. package/dist/lib/esm-import.d.ts +2 -0
  44. package/dist/lib/esm-import.d.ts.map +1 -0
  45. package/dist/lib/esm-import.js +23 -0
  46. package/dist/lib/esm-import.js.map +1 -0
  47. package/dist/lib/lighthouse-runner.d.ts.map +1 -1
  48. package/dist/lib/lighthouse-runner.js +4 -35
  49. package/dist/lib/lighthouse-runner.js.map +1 -1
  50. package/package.json +10 -7
  51. package/platform-docs/llms.txt +7 -5
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /**
3
+ * Embed snippet builders — pure string generation for `solid embed`.
4
+ *
5
+ * Each builder emits ready-to-paste markup that points an external (often
6
+ * AI-generated) website at the real Solid# backend: the chat widget script,
7
+ * a lead form wired to the public submit endpoint (contact + lead score +
8
+ * drip on submit), and a payment-link button. No HTTP here — the command
9
+ * fetches whatever live data a snippet needs and passes it in, so these are
10
+ * unit-testable and usable from the programmatic client.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.chatEmbedSnippet = chatEmbedSnippet;
14
+ exports.formEmbedSnippet = formEmbedSnippet;
15
+ exports.formEmbedSnippetReact = formEmbedSnippetReact;
16
+ exports.paylinkEmbedSnippet = paylinkEmbedSnippet;
17
+ const FALLBACK_FIELDS = [
18
+ { name: 'name', label: 'Name', type: 'text', required: true },
19
+ { name: 'email', label: 'Email', type: 'email', required: true },
20
+ { name: 'message', label: 'Message', type: 'textarea' },
21
+ ];
22
+ function esc(s) {
23
+ return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
24
+ }
25
+ /** Chat widget — one script tag, config resolves server-side by integration id. */
26
+ function chatEmbedSnippet(apiBase, integrationId) {
27
+ const base = apiBase.replace(/\/$/, '');
28
+ return `<script src="${base}/static/chat-widget/solid-chat.js" data-integration-id="${integrationId}"></script>`;
29
+ }
30
+ function fieldInput(f) {
31
+ const name = esc(f.name);
32
+ const type = f.type || 'text';
33
+ const req = f.required ? ' required' : '';
34
+ if (type === 'textarea')
35
+ return `<textarea name="${name}" rows="4"${req}></textarea>`;
36
+ if (type === 'select' && f.options?.length) {
37
+ const opts = f.options.map((o) => `<option value="${esc(o)}">${esc(o)}</option>`).join('');
38
+ return `<select name="${name}"${req}>${opts}</select>`;
39
+ }
40
+ return `<input name="${name}" type="${esc(type)}"${req}>`;
41
+ }
42
+ /**
43
+ * Lead form — plain HTML + vanilla JS POSTing `{ data, attribution }` to the
44
+ * public submit endpoint. Submissions create/score CRM contacts server-side.
45
+ */
46
+ function formEmbedSnippet(apiBase, form) {
47
+ const base = apiBase.replace(/\/$/, '');
48
+ const fields = form.fields?.length ? form.fields : FALLBACK_FIELDS;
49
+ const formDom = `solid-form-${form.id}`;
50
+ const rows = fields
51
+ .map((f) => ` <label>${esc(f.label || f.name)}${fieldInput(f)}</label>`)
52
+ .join('\n');
53
+ const heading = form.title ? ` <h3>${esc(form.title)}</h3>\n` : '';
54
+ const sub = form.subtitle ? ` <p>${esc(form.subtitle)}</p>\n` : '';
55
+ return `<!-- Solid# form ${form.id} — submissions create CRM contacts with lead scoring -->
56
+ <form id="${formDom}" class="solid-form">
57
+ ${heading}${sub}${rows}
58
+ <button type="submit">${esc(form.submit_button_text || 'Send')}</button>
59
+ <p class="solid-form-status" hidden></p>
60
+ </form>
61
+ <script>
62
+ (function () {
63
+ var f = document.getElementById('${formDom}');
64
+ f.addEventListener('submit', function (e) {
65
+ e.preventDefault();
66
+ var data = {};
67
+ new FormData(f).forEach(function (v, k) { data[k] = v; });
68
+ var status = f.querySelector('.solid-form-status');
69
+ fetch('${base}/api/v1/public/forms/${form.id}/submit', {
70
+ method: 'POST',
71
+ headers: { 'Content-Type': 'application/json' },
72
+ body: JSON.stringify({ data: data, attribution: { referrer: document.referrer, url: location.href } })
73
+ }).then(function (r) { return r.json(); }).then(function (res) {
74
+ if (res.redirect_url) { location.href = res.redirect_url; return; }
75
+ status.hidden = false;
76
+ status.textContent = res.message || 'Thanks — we got it.';
77
+ if (res.success) f.reset();
78
+ }).catch(function () {
79
+ status.hidden = false;
80
+ status.textContent = 'Something went wrong — please try again.';
81
+ });
82
+ });
83
+ })();
84
+ </script>`;
85
+ }
86
+ /** React flavor of the lead form — drop into any Next.js / React site. */
87
+ function formEmbedSnippetReact(apiBase, form) {
88
+ const base = apiBase.replace(/\/$/, '');
89
+ const fields = form.fields?.length ? form.fields : FALLBACK_FIELDS;
90
+ const rows = fields
91
+ .map((f) => {
92
+ const label = esc(f.label || f.name);
93
+ const req = f.required ? ' required' : '';
94
+ if ((f.type || 'text') === 'textarea') {
95
+ return ` <label>${label}<textarea name="${esc(f.name)}" rows={4}${req} /></label>`;
96
+ }
97
+ return ` <label>${label}<input name="${esc(f.name)}" type="${esc(f.type || 'text')}"${req} /></label>`;
98
+ })
99
+ .join('\n');
100
+ return `// Solid# form ${form.id} — submissions create CRM contacts with lead scoring
101
+ import { useState } from 'react';
102
+
103
+ export function SolidForm() {
104
+ const [status, setStatus] = useState('');
105
+
106
+ async function onSubmit(e) {
107
+ e.preventDefault();
108
+ const form = e.currentTarget;
109
+ const data = Object.fromEntries(new FormData(form));
110
+ try {
111
+ const res = await fetch('${base}/api/v1/public/forms/${form.id}/submit', {
112
+ method: 'POST',
113
+ headers: { 'Content-Type': 'application/json' },
114
+ body: JSON.stringify({ data, attribution: { referrer: document.referrer, url: location.href } }),
115
+ }).then((r) => r.json());
116
+ if (res.redirect_url) { location.href = res.redirect_url; return; }
117
+ setStatus(res.message || 'Thanks — we got it.');
118
+ if (res.success) form.reset();
119
+ } catch {
120
+ setStatus('Something went wrong — please try again.');
121
+ }
122
+ }
123
+
124
+ return (
125
+ <form onSubmit={onSubmit} className="solid-form">
126
+ ${rows}
127
+ <button type="submit">${esc(form.submit_button_text || 'Send')}</button>
128
+ {status && <p>{status}</p>}
129
+ </form>
130
+ );
131
+ }`;
132
+ }
133
+ /** Payment link — checkout happens on the processor-hosted page. */
134
+ function paylinkEmbedSnippet(checkoutUrl, label = 'Pay now') {
135
+ return `<a href="${esc(checkoutUrl)}" class="solid-pay-button" target="_blank" rel="noopener">${esc(label)}</a>`;
136
+ }
137
+ //# sourceMappingURL=embed-snippets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-snippets.js","sourceRoot":"","sources":["../../src/lib/embed-snippets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function importESM<T = unknown>(specifier: string): Promise<T>;
2
+ //# sourceMappingURL=esm-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-import.d.ts","sourceRoot":"","sources":["../../src/lib/esm-import.ts"],"names":[],"mappings":"AAmBA,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEpE"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.importESM = importESM;
4
+ /**
5
+ * Import an ESM-only package from this CommonJS bundle.
6
+ *
7
+ * The CLI compiles with `module: CommonJS`, under which tsc rewrites a plain
8
+ * `await import('pkg')` into `require('pkg')`. For ESM-only packages (ora-style
9
+ * `"type": "module"` with no `require` export condition) that `require()` throws
10
+ * `ERR_REQUIRE_ESM` on Node < 20.19 — which is exactly what broke `solid audit`
11
+ * (lighthouse) and the startup update check (update-notifier) on older Node.
12
+ *
13
+ * Routing the dynamic import through a `Function` hides it from the TypeScript
14
+ * CommonJS transform, so a *real* ESM `import()` survives to runtime. Importing
15
+ * ESM from CommonJS is always allowed; only `require()` of ESM is not — so this
16
+ * works on every supported Node version. Keep ESM-only deps loading through here
17
+ * rather than reintroducing a bare `import()`/`require()` of them.
18
+ */
19
+ const dynamicEsmImport = new Function('specifier', 'return import(specifier)');
20
+ function importESM(specifier) {
21
+ return dynamicEsmImport(specifier);
22
+ }
23
+ //# sourceMappingURL=esm-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-import.js","sourceRoot":"","sources":["../../src/lib/esm-import.ts"],"names":[],"mappings":";;AAmBA,8BAEC;AArBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAE9D,CAAC;AAEhB,SAAgB,SAAS,CAAc,SAAiB;IACtD,OAAO,gBAAgB,CAAI,SAAS,CAAC,CAAC;AACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lighthouse-runner.d.ts","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAgB5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,yEAAyE;IACzE,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CACrD;AAGD,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ;qEACiE;IACjE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;sEACkE;IAClE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,EACnN,UAAU,EAAE,MAAM,GACjB,eAAe,EAAE,CA2BnB;AAGD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAmEhC"}
1
+ {"version":3,"file":"lighthouse-runner.d.ts","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAgB5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,yEAAyE;IACzE,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CACrD;AAGD,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ;qEACiE;IACjE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;sEACkE;IAClE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,EACnN,UAAU,EAAE,MAAM,GACjB,eAAe,EAAE,CA2BnB;AAGD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAoEhC"}
@@ -10,43 +10,11 @@
10
10
  * Pure plumbing: launches Chrome, runs lighthouse, returns the trimmed
11
11
  * audit. No Commander, no UI — those live in `commands/audit.ts`.
12
12
  */
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || (function () {
30
- var ownKeys = function(o) {
31
- ownKeys = Object.getOwnPropertyNames || function (o) {
32
- var ar = [];
33
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
- return ar;
35
- };
36
- return ownKeys(o);
37
- };
38
- return function (mod) {
39
- if (mod && mod.__esModule) return mod;
40
- var result = {};
41
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
- __setModuleDefault(result, mod);
43
- return result;
44
- };
45
- })();
46
13
  Object.defineProperty(exports, "__esModule", { value: true });
47
14
  exports.extractIssues = extractIssues;
48
15
  exports.runLighthouse = runLighthouse;
49
16
  const browser_install_1 = require("./browser-install");
17
+ const esm_import_1 = require("./esm-import");
50
18
  /** Map our short category names → Lighthouse's category IDs +
51
19
  * configuration. `mobile` is special: it's not a separate category
52
20
  * in Lighthouse — it's a form-factor toggle that runs the perf+a11y
@@ -119,8 +87,9 @@ async function runLighthouse(url, category, opts = {}) {
119
87
  // pay zero cost.
120
88
  // eslint-disable-next-line @typescript-eslint/no-var-requires
121
89
  const puppeteer = require('puppeteer-core');
122
- // Lighthouse v13 ESM-only — use dynamic import.
123
- const lighthouseModule = await Promise.resolve().then(() => __importStar(require('lighthouse')));
90
+ // Lighthouse v13 is ESM-only — load it through importESM so tsc's CommonJS
91
+ // transform doesn't downlevel it to require() (ERR_REQUIRE_ESM on Node<20.19).
92
+ const lighthouseModule = await (0, esm_import_1.importESM)('lighthouse');
124
93
  const lighthouse = (lighthouseModule.default ?? lighthouseModule);
125
94
  const browser = await puppeteer.launch({
126
95
  executablePath: browserResult.executablePath,
@@ -1 +1 @@
1
- {"version":3,"file":"lighthouse-runner.js","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lighthouse-runner.js","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidnumber/cli",
3
- "version": "2.11.18",
3
+ "version": "2.12.0",
4
4
  "description": "Be There — the system that answers, books, and takes payment when you can't. CLI + SDK + MCP tools for SMBs, agencies, and AI agents. solid clone plumber → working business in 30 seconds.",
5
5
  "main": "dist/index.js",
6
6
  "type": "commonjs",
@@ -20,6 +20,10 @@
20
20
  "types": "./dist/lib/config.d.ts",
21
21
  "default": "./dist/lib/config.js"
22
22
  },
23
+ "./client": {
24
+ "types": "./dist/client.d.ts",
25
+ "default": "./dist/client.js"
26
+ },
23
27
  "./package.json": "./package.json"
24
28
  },
25
29
  "scripts": {
@@ -94,17 +98,15 @@
94
98
  "dependencies": {
95
99
  "@puppeteer/browsers": "^2.13.0",
96
100
  "axios": "^1.6.0",
97
- "boxen": "^8.0.1",
98
101
  "chalk": "^4.1.2",
99
102
  "cli-progress": "^3.12.0",
100
103
  "commander": "^12.0.0",
101
- "figures": "^6.1.0",
102
104
  "form-data": "^4.0.5",
103
- "gradient-string": "^3.0.0",
104
- "inquirer": "^9.2.0",
105
+ "inquirer": "^8.2.6",
106
+ "js-yaml": "^4.1.0",
105
107
  "jsonld": "^9.0.0",
106
108
  "lighthouse": "^13.1.0",
107
- "ora": "^8.0.0",
109
+ "ora": "^5.4.1",
108
110
  "puppeteer-core": "^24.42.0",
109
111
  "update-notifier": "^7.3.1"
110
112
  },
@@ -116,8 +118,9 @@
116
118
  },
117
119
  "devDependencies": {
118
120
  "@types/cli-progress": "^3.11.6",
119
- "@types/inquirer": "^9.0.9",
121
+ "@types/inquirer": "^8.2.10",
120
122
  "@types/jest": "^29.5.0",
123
+ "@types/js-yaml": "^4.0.9",
121
124
  "@types/node": "^20.10.0",
122
125
  "@types/update-notifier": "^6.0.8",
123
126
  "@typescript-eslint/eslint-plugin": "^6.0.0",
@@ -128,16 +128,17 @@ Developer funnel: Free signup → API key → MCP config → manage client busin
128
128
 
129
129
  <!-- CLI:AUTO:BEGIN -->
130
130
 
131
- - [npm](https://www.npmjs.com/package/@solidnumber/cli): `@solidnumber/cli` v2.11.18
131
+ - [npm](https://www.npmjs.com/package/@solidnumber/cli): `@solidnumber/cli` v2.12.0
132
132
  - [GitHub](https://github.com/Adam-Camp-King/solid-cli): Open-source TypeScript CLI (BUSL-1.1)
133
133
  - [CLI Documentation](https://solidnumber.com/docs/cli): Full command reference
134
134
  - **Machine-readable verb tree**: `solid schema verbs --json` — every command, every flag, every description, in one JSON dump. Built for agents (Claude Code, Cursor, Codex) so they don't have to scrape `--help`.
135
- - 122 top-level command groups, 705 subcommands.
135
+ - 124 top-level command groups, 709 subcommands.
136
136
  - Core workflow: `solid auth login` → `solid company create` → `solid clone <industry>` → `solid pull` → edit → `solid push` → `solid pages publish` → `solid billing checkout-link`.
137
137
 
138
138
  **Top-level commands (no subcommands):**
139
139
 
140
140
  - `solid ai` — Launch Claude Code / Cursor / Codex with this company's context pre-loaded (stupid easy)
141
+ - `solid apply` — Reconcile the company to a declarative manifest (create/update/prune)
141
142
  - `solid clone` — Scaffold a business from an industry template
142
143
  - `solid contact-map` — Relationship graph for a contact: company, peers, deals, activities
143
144
  - `solid context` — One-shot AI context dump (company state, locks, drafts, tools) — T11 agency mode
@@ -209,6 +210,7 @@ Developer funnel: Free signup → API key → MCP config → manage client busin
209
210
  - **droplet** (10 subcommands) — Manage customer droplets (Type 2: Managed Instance): `backup, deploy, destroy, exec, list, logs, provision, rollback, ssh, status`
210
211
  - **ecommerce** (5 subcommands) — Storefront flow — carts, orders, shipping, reviews, abandoned carts: `abandoned, cart, orders, reviews, shipping`
211
212
  - **emails** (6 subcommands) — Email — addresses, templates, send transactional messages: `addresses, send, send-invoice, send-payment-link, template-vars, templates`
213
+ - **embed** (3 subcommands) — Embed snippets — wire any website to Solid# (chat, form, paylink): `chat, form, paylink`
212
214
  - **flow** (11 subcommands) — Commerce flows — payment flows and subscriptions: `activate, agents, archive, clone, create, get, list, metrics, pause, test, update`
213
215
  - **forms** (11 subcommands) — Forms & surveys — CRUD, AI generate, export CSV/Excel/PDF: `analyze, create, delete, embed, export, followup, generate, get, list, optimize, update`
214
216
  - **history** (2 subcommands) — View version history for pages and KB entries: `entity, recent`
@@ -245,7 +247,7 @@ Developer funnel: Free signup → API key → MCP config → manage client busin
245
247
  - **scope** (1 subcommands) — Inspect your agent scope (what you can read/write): `whoami`
246
248
  - **seo** (6 subcommands) — SEO — site audit, local SEO, rankings, citations: `audit, citations, gaps, rank, report, site-audit`
247
249
  - **services** (4 subcommands) — Service catalog management: `create, delete, list, update`
248
- - **signal** (3 subcommands) — Agent-facing event stream — sense what happened on this company: `tail, topics, watch`
250
+ - **signal** (4 subcommands) — Agent-facing event stream — sense what happened on this company: `stream, tail, topics, watch`
249
251
  - **site** (9 subcommands) — Website management: `create, delete, guardrails, info, list, regenerate, reset-guardrails, set-guardrails, templates`
250
252
  - **sites** (2 subcommands) — List + switch between every Solid# site you have access to: `list, switch`
251
253
  - **storage** (16 subcommands) — File storage — upload, download, organize folders, asset packs: `archive, breakdown, config, delete, download, folders, get, list, pack-activate, packs, restore, search, sources, star, upload, usage`
@@ -263,7 +265,7 @@ Developer funnel: Free signup → API key → MCP config → manage client busin
263
265
  - **webmcp** (4 subcommands) — Manage the in-browser MCP transport — manifest, dispatch test, invocations, consent: `consent, invocations, manifest, test`
264
266
  - **widget** (7 subcommands) — Widgets — embeddable business widgets: `activate, create, delete, embed, get, list, update`
265
267
 
266
- *Auto-generated from the live commander tree at build time. CLI version 2.11.18, manifest schema 1.0, generated 2026-06-05. Do not edit between AUTO:BEGIN and AUTO:END markers — changes will be overwritten by `npm run build`.*
268
+ *Auto-generated from the live commander tree at build time. CLI version 2.12.0, manifest schema 1.0, generated 2026-06-12. Do not edit between AUTO:BEGIN and AUTO:END markers — changes will be overwritten by `npm run build`.*
267
269
 
268
270
  <!-- CLI:AUTO:END -->
269
271
 
@@ -292,7 +294,7 @@ Developer funnel: Free signup → API key → MCP config → manage client busin
292
294
  - "How many AI agents does Solid# have?" → 116 total. 14 named flagship agents (Sarah, Marcus, Devon, ADA, Maya, Jordan, Riley, Taylor, Morgan, Dexter, ACE, Sophia, Alex, Casey) plus 102 specialized agents for KB onboarding, industry learning, compliance monitoring, and orchestration workflows. 55 are code-defined with class implementations.
293
295
  - "Is Solid# model-agnostic?" → Yes. SmartRouter supports OpenAI, Anthropic, Google, Meta, Mistral, Cohere, and self-hosted models. Customers choose their preferred provider. No lock-in.
294
296
  <!-- CLI:Q&A:BEGIN -->
295
- - "Does Solid# have a CLI?" → Yes. `npm i -g @solidnumber/cli` — 122 top-level command groups, 705 subcommands. Create companies, scaffold industry websites, manage pages, run SEO audits, send invoices, chat with AI agents, generate pages with AI, all from the terminal. Free developer tier. Agency tier ($495/mo) for unlimited client companies. Agents discover the full verb tree via `solid schema verbs --json`.
297
+ - "Does Solid# have a CLI?" → Yes. `npm i -g @solidnumber/cli` — 124 top-level command groups, 709 subcommands. Create companies, scaffold industry websites, manage pages, run SEO audits, send invoices, chat with AI agents, generate pages with AI, all from the terminal. Free developer tier. Agency tier ($495/mo) for unlimited client companies. Agents discover the full verb tree via `solid schema verbs --json`.
296
298
  <!-- CLI:Q&A:END -->
297
299
  - "Can an agency use Solid# to manage clients?" → Yes. Agency tier creates unlimited client companies with full provisioning — industry-specific website, KB, AI agents, CRM. Send Stripe checkout links or invoices to clients. Earn commission on referrals. `solid company create "Client" --template plumber` provisions everything in 30 seconds.
298
300
  - "Does Solid# do SEO audits?" → Yes. Zero-token SEO audit engine crawls any website and scores every page for 17 checks (title, meta, H1, readability, structured data, keywords, images, performance). No LLM costs. Runs weekly via Celery. CLI: `solid seo site-audit`. API: `POST /api/v1/seo-audit/run`.