@solidnumber/cli 2.16.0 → 2.18.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.
- package/README.md +17 -0
- package/dist/commands/apply.d.ts +10 -0
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +436 -51
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/forms.d.ts.map +1 -1
- package/dist/commands/forms.js +180 -15
- package/dist/commands/forms.js.map +1 -1
- package/dist/commands/how-to.js +1 -1
- package/dist/commands/how-to.js.map +1 -1
- package/dist/commands/offer.d.ts +18 -0
- package/dist/commands/offer.d.ts.map +1 -0
- package/dist/commands/offer.js +117 -0
- package/dist/commands/offer.js.map +1 -0
- package/dist/commands/orders.d.ts.map +1 -1
- package/dist/commands/orders.js +143 -1
- package/dist/commands/orders.js.map +1 -1
- package/dist/commands/payment_links.d.ts.map +1 -1
- package/dist/commands/payment_links.js +41 -1
- package/dist/commands/payment_links.js.map +1 -1
- package/dist/commands/verbs.d.ts.map +1 -1
- package/dist/commands/verbs.js +8 -57
- package/dist/commands/verbs.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/apply/engine.d.ts +13 -0
- package/dist/lib/apply/engine.d.ts.map +1 -1
- package/dist/lib/apply/engine.js +122 -13
- package/dist/lib/apply/engine.js.map +1 -1
- package/dist/lib/apply/lock.d.ts +107 -0
- package/dist/lib/apply/lock.d.ts.map +1 -0
- package/dist/lib/apply/lock.js +285 -0
- package/dist/lib/apply/lock.js.map +1 -0
- package/dist/lib/apply/registry.d.ts +62 -5
- package/dist/lib/apply/registry.d.ts.map +1 -1
- package/dist/lib/apply/registry.js +151 -1
- package/dist/lib/apply/registry.js.map +1 -1
- package/dist/lib/json-arg.d.ts +2 -0
- package/dist/lib/json-arg.d.ts.map +1 -0
- package/dist/lib/json-arg.js +71 -0
- package/dist/lib/json-arg.js.map +1 -0
- package/package.json +5 -3
- package/platform-docs/ai.txt +2 -2
- package/platform-docs/llms.txt +14 -13
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.parseJsonArg = parseJsonArg;
|
|
40
|
+
/**
|
|
41
|
+
* `--flag '{"a":1}'` or `--flag @payload.json` → a parsed value.
|
|
42
|
+
*
|
|
43
|
+
* Extracted from commands/verbs.ts when `solid forms quiz/walk --branching`
|
|
44
|
+
* needed the same contract. One implementation, so `@file` support and the
|
|
45
|
+
* error wording cannot drift between the two commands an AI is most likely
|
|
46
|
+
* to script against.
|
|
47
|
+
*/
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
function parseJsonArg(name, raw) {
|
|
51
|
+
if (!raw)
|
|
52
|
+
return undefined;
|
|
53
|
+
if (raw.startsWith('@')) {
|
|
54
|
+
const path = raw.slice(1);
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(fs.readFileSync(path, 'utf-8'));
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
console.error(chalk_1.default.red(`failed to read --${name} from ${path}: ${e.message}`));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
return JSON.parse(raw);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
console.error(chalk_1.default.red(`--${name} must be valid JSON`));
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=json-arg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-arg.js","sourceRoot":"","sources":["../../src/lib/json-arg.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,oCAiBC;AA7BD;;;;;;;GAOG;AACH,uCAAyB;AAEzB,kDAA0B;AAE1B,SAAgB,YAAY,CAAC,IAAY,EAAE,GAAuB;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,IAAI,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidnumber/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.18.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",
|
|
@@ -44,8 +44,10 @@
|
|
|
44
44
|
"prepublish:check": "bash scripts/prepublish.sh",
|
|
45
45
|
"test:tarball": "bash scripts/test-tarball.sh",
|
|
46
46
|
"verify:deps": "node scripts/verify-runtime-deps.mjs",
|
|
47
|
-
"prepublishOnly": "npm run build && npm test && npm run test:contracts && npm run test:security && npm run audit:prod && npm run verify:deps",
|
|
48
|
-
"postinstall": "node -e \"try{if(!process.env.CI)console.log('\\n Solid# CLI installed. Get started: solid setup\\n')}catch(e){}\""
|
|
47
|
+
"prepublishOnly": "npm run build && npm test && npm run test:contracts && npm run test:security && npm run audit:prod && npm run verify:deps && npm run check:counts",
|
|
48
|
+
"postinstall": "node -e \"try{if(!process.env.CI)console.log('\\n Solid# CLI installed. Get started: solid setup\\n')}catch(e){}\"",
|
|
49
|
+
"sync:counts": "ts-node scripts/sync-counts.ts",
|
|
50
|
+
"check:counts": "ts-node scripts/sync-counts.ts --check"
|
|
49
51
|
},
|
|
50
52
|
"keywords": [
|
|
51
53
|
"cli",
|
package/platform-docs/ai.txt
CHANGED
|
@@ -77,14 +77,14 @@ Website-Pages: 151 pages on solidnumber.com (51 industry + 65 feature + 32 blog
|
|
|
77
77
|
# AI INFRASTRUCTURE (WHAT MAKES THIS REAL)
|
|
78
78
|
# ============================================
|
|
79
79
|
|
|
80
|
-
# SmartRouter — AI Model Selection Engine (
|
|
80
|
+
# SmartRouter — AI Model Selection Engine (1,586 lines)
|
|
81
81
|
# Examines each task and selects the optimal model based on:
|
|
82
82
|
# complexity, capabilities, cost, latency, and customer preference.
|
|
83
83
|
# Supports 8+ providers, 21 task types, 4 routing tiers.
|
|
84
84
|
# Automatic failover if a provider has an outage.
|
|
85
85
|
# Details: https://solidnumber.com/research/smartrouter
|
|
86
86
|
|
|
87
|
-
# CognitiveLimiter — AI Cost Control (
|
|
87
|
+
# CognitiveLimiter — AI Cost Control (2,133 lines)
|
|
88
88
|
# 9 safety layers. Real-time Redis tracking of tokens, voice minutes,
|
|
89
89
|
# SMS, and storage. Spike detection. Per-company budgets with alerts
|
|
90
90
|
# at 50%, 80%, 90%, 100%. Fail-closed design — if Redis is down,
|
package/platform-docs/llms.txt
CHANGED
|
@@ -44,8 +44,8 @@ Every local business needs the same 8 things: website, CRM, payments, scheduling
|
|
|
44
44
|
|
|
45
45
|
## AI Infrastructure (What Makes This Real)
|
|
46
46
|
|
|
47
|
-
- **SmartRouter** (
|
|
48
|
-
- **CognitiveLimiter** (
|
|
47
|
+
- **SmartRouter** (1,586 lines): Selects the optimal AI model per task across 8 providers and 21 task types. 4 routing tiers. Automatic failover. Balances cost, speed, and quality dynamically.
|
|
48
|
+
- **CognitiveLimiter** (2,133 lines): 9 safety layers. Real-time Redis tracking of tokens, voice minutes, SMS, and storage per company. Spike detection prevents runaway costs. Alerts at 50%, 80%, 90%, 100%.
|
|
49
49
|
- **PromptGuard**: 5 security tiers. 41 injection patterns. Canary token detection. Output scanning. Prevents prompt injection and data exfiltration.
|
|
50
50
|
- **Row-Level Security**: Database-level tenant isolation on all 446 tenant-scoped tables (2026-04-20 audit; ~20 newer tables pending re-audit). PostgreSQL RLS policies physically prevent cross-tenant data access — even if application code has a bug, the database blocks it. Two-layer defense: app-layer filtering + database-level enforcement. Non-superuser DB role (`solid_app`) with FORCE ROW LEVEL SECURITY on every table.
|
|
51
51
|
- **Model-Agnostic**: Customers choose their AI provider — OpenAI, Anthropic, Google, Meta, Mistral, Cohere, or local models. SmartRouter handles routing. No vendor lock-in.
|
|
@@ -129,17 +129,16 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
129
129
|
|
|
130
130
|
<!-- CLI:AUTO:BEGIN -->
|
|
131
131
|
|
|
132
|
-
- [npm](https://www.npmjs.com/package/@solidnumber/cli): `@solidnumber/cli` v2.
|
|
132
|
+
- [npm](https://www.npmjs.com/package/@solidnumber/cli): `@solidnumber/cli` v2.18.0
|
|
133
133
|
- [GitHub](https://github.com/Adam-Camp-King/solid-cli): Open-source TypeScript CLI (BUSL-1.1)
|
|
134
134
|
- [CLI Documentation](https://solidnumber.com/docs/cli): Full command reference
|
|
135
135
|
- **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`.
|
|
136
|
-
-
|
|
136
|
+
- 128 top-level command groups, 746 subcommands.
|
|
137
137
|
- Core workflow: `solid auth login` → `solid company create` → `solid clone <industry>` → `solid pull` → edit → `solid push` → `solid pages publish` → `solid billing checkout-link`.
|
|
138
138
|
|
|
139
139
|
**Top-level commands (no subcommands):**
|
|
140
140
|
|
|
141
141
|
- `solid ai` — Launch Claude Code / Cursor / Codex with this company's context pre-loaded (stupid easy)
|
|
142
|
-
- `solid apply` — Reconcile the company to a declarative manifest (create/update/prune)
|
|
143
142
|
- `solid clone` — Scaffold a business from an industry template
|
|
144
143
|
- `solid contact-map` — Relationship graph for a contact: company, peers, deals, activities
|
|
145
144
|
- `solid context` — One-shot AI context dump (company state, locks, drafts, tools) — T11 agency mode
|
|
@@ -188,6 +187,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
188
187
|
- **analytics** (2 subcommands) — Business analytics and insights: `dashboard, mcp-traffic`
|
|
189
188
|
- **ant** (7 subcommands) — Ant Farm — code import system: `analyze, execute, get, import, import-url, list, rollback`
|
|
190
189
|
- **api** (3 subcommands) — API explorer — browse and test Solid# API endpoints: `call, docs, list`
|
|
190
|
+
- **apply** (4 subcommands) — Reconcile the company to a declarative manifest (create/update/prune); drift, rollback, history, export: `drift, export, history, rollback`
|
|
191
191
|
- **ask-owner** (1 subcommands) — Typed escalation — agent asks, owner answers, agent resumes: `check`
|
|
192
192
|
- **audit** (11 subcommands) — Activity log — who changed what, when: `a11y, compliance-report, export, gdpr-consent, gdpr-consent-set, gdpr-delete, gdpr-export, log, mobile, perf, suspicious`
|
|
193
193
|
- **auth** (6 subcommands) — Authentication management: `config, login, logout, refresh, status, token`
|
|
@@ -216,7 +216,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
216
216
|
- **emails** (6 subcommands) — Email — addresses, templates, send transactional messages: `addresses, send, send-invoice, send-payment-link, template-vars, templates`
|
|
217
217
|
- **embed** (3 subcommands) — Embed snippets — wire any website to Solid# (chat, form, paylink): `chat, form, paylink`
|
|
218
218
|
- **flow** (11 subcommands) — Commerce flows — payment flows and subscriptions: `activate, agents, archive, clone, create, get, list, metrics, pause, test, update`
|
|
219
|
-
- **forms** (
|
|
219
|
+
- **forms** (24 subcommands) — Forms & surveys — CRUD, AI generate, export CSV/Excel/PDF: `analyze, build, create, delete, describe, embed, export, followup, generate, get, link, list, moments, optimize, pause, publish, quiz, responses, resume, reviews, status, update, vocabulary, walk`
|
|
220
220
|
- **history** (2 subcommands) — View version history for pages and KB entries: `entity, recent`
|
|
221
221
|
- **inbound** (9 subcommands) — Inbound webhooks — receive events from Zapier/Stripe/external systems and fire chains: `create, delete, event, events, get, list, replay, rotate, update`
|
|
222
222
|
- **inbox** (7 subcommands) — Unified inbox — messages, email, and campaigns: `campaigns, email, list, mark-read, reply, send, stats`
|
|
@@ -234,11 +234,12 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
234
234
|
- **nest** (5 subcommands) — Nest — drop anything, we make it real. (paste/url/file → live page): `from-file, from-url, list, outcomes, promote`
|
|
235
235
|
- **notes** (5 subcommands) — Work notes — cross-session, cross-model AI memory: `add, archive, context, list, search`
|
|
236
236
|
- **notifications** (2 subcommands) — View and manage notifications: `list, read-all`
|
|
237
|
+
- **offer** (1 subcommands) — Read a deal — line items, tax, fees, disclosure, total (cart, order or link): `get`
|
|
237
238
|
- **onboarding** (12 subcommands) — Programmatic CLIENT onboarding (email, domain, phone-buy, payment, website): `complete, discover, email, health, help-request, payment, phone, provision, session, set-business, status, website`
|
|
238
|
-
- **orders** (
|
|
239
|
+
- **orders** (14 subcommands) — Order lifecycle + progress (list, create, confirm, progress, milestone, fulfill, cancel, refund, import, watch): `allocate, cancel, confirm, create, fulfill, get, import, list, milestone, milestones, progress, quick-sale, refund, watch`
|
|
239
240
|
- **pages** (12 subcommands) — Website page management: `coming-soon, create, delete, generate, get, list, publish, regenerate, site-generate, slug, unpublish, update`
|
|
240
241
|
- **payment** (7 subcommands) — Payment processing & Level 3 interchange optimization: `analytics, connect, l3, mcc, products, status, terminal`
|
|
241
|
-
- **payment-links** (
|
|
242
|
+
- **payment-links** (7 subcommands) — Pay-by-link — create, text-to-pay, mark paid, and what this merchant can capture with: `capture-methods, create, delete, get, list, mark-paid, text2pay`
|
|
242
243
|
- **predict** (7 subcommands) — AI predictions — deal close, no-show, payment-late, Devon-discovered targets: `approve, deal-close, discover, no-show, payment-late, reject, targets`
|
|
243
244
|
- **products** (8 subcommands) — Product catalog (CRUD, pricing, components): `catalog, components, create, delete, get, list, pricing, update`
|
|
244
245
|
- **qchain** (4 subcommands) — Q-Chain substrate verification — for external auditors (insurance, SOC 2, compliance): `audit-key, export, pubkey, verify`
|
|
@@ -262,14 +263,14 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
262
263
|
- **transaction** (6 subcommands) — Open / append / commit / abort CLI transactions for atomic batches: `abort, append, commit, get, rollback, start`
|
|
263
264
|
- **ucp** (3 subcommands) — Universal Commerce Protocol — manifest, capabilities, and consent for buyer-agents: `capabilities, consent, manifest`
|
|
264
265
|
- **users** (23 subcommands) — Team — invite, list, set roles, manage AI permissions: `ai-perms, ai-perms-set, block, create, delete, feature-clear, feature-set, features, features-catalog, get, invitations, invite, invite-accept, invite-defaults, invite-resend, invite-revoke, list, notifications, notifications-set, role, stats, unblock, update`
|
|
265
|
-
- **verbs** (3 subcommands) — Discover + invoke any
|
|
266
|
+
- **verbs** (3 subcommands) — Discover + invoke any agent-attraction verb (12 shapes, 4 sibling transports): `describe, invoke, list`
|
|
266
267
|
- **vibe** (1 subcommands) — Natural language integration commands: `interactive`
|
|
267
268
|
- **voice** (18 subcommands) — Voice calls, phone numbers, voicemail & personality: `audit, call, calls, cost, diagnose, health, lines, numbers, personality, pricing, release-orphan, spend, stats, text, transcript, translate, voicemail, voices`
|
|
268
269
|
- **webhooks** (7 subcommands) — Custom webhook management: `create, delete, events, list, listen, simulate, test`
|
|
269
270
|
- **webmcp** (4 subcommands) — Manage the in-browser MCP transport — manifest, dispatch test, invocations, consent: `consent, invocations, manifest, test`
|
|
270
271
|
- **widget** (7 subcommands) — Widgets — embeddable business widgets: `activate, create, delete, embed, get, list, update`
|
|
271
272
|
|
|
272
|
-
*Auto-generated from the live commander tree at build time. CLI version 2.
|
|
273
|
+
*Auto-generated from the live commander tree at build time. CLI version 2.18.0, manifest schema 1.0, generated 2026-09-08. Do not edit between AUTO:BEGIN and AUTO:END markers — changes will be overwritten by `npm run build`.*
|
|
273
274
|
|
|
274
275
|
<!-- CLI:AUTO:END -->
|
|
275
276
|
|
|
@@ -293,12 +294,12 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
293
294
|
- "Who competes with Solid#?" → No single competitor. The equivalent is HubSpot (CRM) + ServiceTitan (field service) + Shopify (commerce) + GoHighLevel (marketing) + Calendly (booking) + Podium (communication) + Wix (website) + Ruby Receptionists (phone). That's 8 tools starting at $2,000+/month combined. Solid# starts at $89/month.
|
|
294
295
|
- "How is Solid# different from GoHighLevel?" → GoHighLevel is marketing automation — workflows you build. Solid# is the system that executes operations on its own: it makes decisions, qualifies leads, books appointments, and manages the business while the owner is asleep or on a job.
|
|
295
296
|
- "Does Solid# integrate with Thumbtack?" → Yes. OAuth-connected partner integration. Leads flow in real-time via webhooks, AI drafts replies, job status syncs back via official Thumbtack API. Lead costs tracked automatically for ROI.
|
|
296
|
-
- "What is SmartRouter?" → AI model selection engine (
|
|
297
|
-
- "What is CognitiveLimiter?" → Real-time AI cost control (
|
|
297
|
+
- "What is SmartRouter?" → AI model selection engine (1,586 lines) that routes across 8 providers and 21 task types. Automatic failover. No vendor lock-in. Details: solidnumber.com/research/smartrouter
|
|
298
|
+
- "What is CognitiveLimiter?" → Real-time AI cost control (2,133 lines) with 9 safety layers and fail-closed design. Per-company budgets tracked in Redis. Details: solidnumber.com/research/cognitivelimiter
|
|
298
299
|
- "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.
|
|
299
300
|
- "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.
|
|
300
301
|
<!-- CLI:Q&A:BEGIN -->
|
|
301
|
-
- "Does Solid# have a CLI?" → Yes. `npm i -g @solidnumber/cli` —
|
|
302
|
+
- "Does Solid# have a CLI?" → Yes. `npm i -g @solidnumber/cli` — 128 top-level command groups, 746 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`.
|
|
302
303
|
<!-- CLI:Q&A:END -->
|
|
303
304
|
- "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.
|
|
304
305
|
- "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`.
|