@solidnumber/cli 2.18.0 → 2.20.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 +15 -0
- package/dist/commands/accounting.d.ts +10 -1
- package/dist/commands/accounting.d.ts.map +1 -1
- package/dist/commands/accounting.js +77 -52
- package/dist/commands/accounting.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +219 -10
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/ant.js +7 -21
- package/dist/commands/ant.js.map +1 -1
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +2 -3
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +14 -17
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/bids.d.ts.map +1 -1
- package/dist/commands/bids.js +4 -9
- package/dist/commands/bids.js.map +1 -1
- package/dist/commands/blog.js +12 -41
- package/dist/commands/blog.js.map +1 -1
- package/dist/commands/books.d.ts +24 -0
- package/dist/commands/books.d.ts.map +1 -0
- package/dist/commands/books.js +242 -0
- package/dist/commands/books.js.map +1 -0
- package/dist/commands/brand.js +11 -12
- package/dist/commands/brand.js.map +1 -1
- package/dist/commands/call.js +11 -0
- package/dist/commands/call.js.map +1 -1
- package/dist/commands/chains.d.ts.map +1 -1
- package/dist/commands/chains.js +16 -17
- package/dist/commands/chains.js.map +1 -1
- package/dist/commands/chat_widgets.d.ts.map +1 -1
- package/dist/commands/chat_widgets.js +5 -6
- package/dist/commands/chat_widgets.js.map +1 -1
- package/dist/commands/clone.d.ts.map +1 -1
- package/dist/commands/clone.js +12 -3
- package/dist/commands/clone.js.map +1 -1
- package/dist/commands/code.js +4 -8
- package/dist/commands/code.js.map +1 -1
- package/dist/commands/company.js +92 -59
- package/dist/commands/company.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +14 -3
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/connect.js +11 -27
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/crm.d.ts.map +1 -1
- package/dist/commands/crm.js +51 -64
- package/dist/commands/crm.js.map +1 -1
- package/dist/commands/demo.js +1 -1
- package/dist/commands/demo.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +5 -15
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/design.js +10 -6
- package/dist/commands/design.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +11 -17
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/dispatch_shortcuts.d.ts +7 -0
- package/dist/commands/dispatch_shortcuts.d.ts.map +1 -1
- package/dist/commands/dispatch_shortcuts.js +7 -3
- package/dist/commands/dispatch_shortcuts.js.map +1 -1
- package/dist/commands/docs.js +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/domains.js +1 -1
- package/dist/commands/domains.js.map +1 -1
- package/dist/commands/drafts.d.ts.map +1 -1
- package/dist/commands/drafts.js +2 -6
- package/dist/commands/drafts.js.map +1 -1
- package/dist/commands/droplet.d.ts.map +1 -1
- package/dist/commands/droplet.js +8 -0
- package/dist/commands/droplet.js.map +1 -1
- package/dist/commands/ecommerce.d.ts.map +1 -1
- package/dist/commands/ecommerce.js +32 -36
- package/dist/commands/ecommerce.js.map +1 -1
- package/dist/commands/emails.d.ts.map +1 -1
- package/dist/commands/emails.js +12 -13
- package/dist/commands/emails.js.map +1 -1
- package/dist/commands/embed.d.ts.map +1 -1
- package/dist/commands/embed.js +3 -4
- package/dist/commands/embed.js.map +1 -1
- package/dist/commands/flows.d.ts.map +1 -1
- package/dist/commands/flows.js +7 -21
- package/dist/commands/flows.js.map +1 -1
- package/dist/commands/forms.d.ts.map +1 -1
- package/dist/commands/forms.js +31 -32
- package/dist/commands/forms.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +7 -3
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +10 -25
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +1 -0
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/inbound.d.ts.map +1 -1
- package/dist/commands/inbound.js +9 -13
- package/dist/commands/inbound.js.map +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +15 -43
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/integrations.js +9 -27
- package/dist/commands/integrations.js.map +1 -1
- package/dist/commands/inventory.js +7 -21
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/kb.d.ts.map +1 -1
- package/dist/commands/kb.js +4 -10
- package/dist/commands/kb.js.map +1 -1
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +3 -7
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/landing.d.ts.map +1 -1
- package/dist/commands/landing.js +8 -9
- package/dist/commands/landing.js.map +1 -1
- package/dist/commands/leads.d.ts.map +1 -1
- package/dist/commands/leads.js +19 -23
- package/dist/commands/leads.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +1 -3
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/marketplace.d.ts.map +1 -1
- package/dist/commands/marketplace.js +10 -14
- package/dist/commands/marketplace.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +1 -3
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/nest.js +5 -11
- package/dist/commands/nest.js.map +1 -1
- package/dist/commands/notes.js +5 -10
- package/dist/commands/notes.js.map +1 -1
- package/dist/commands/offer.d.ts.map +1 -1
- package/dist/commands/offer.js +2 -5
- package/dist/commands/offer.js.map +1 -1
- package/dist/commands/onboarding.d.ts.map +1 -1
- package/dist/commands/onboarding.js +34 -38
- package/dist/commands/onboarding.js.map +1 -1
- package/dist/commands/orders.d.ts.map +1 -1
- package/dist/commands/orders.js +12 -16
- package/dist/commands/orders.js.map +1 -1
- package/dist/commands/pages.d.ts.map +1 -1
- package/dist/commands/pages.js +11 -30
- package/dist/commands/pages.js.map +1 -1
- package/dist/commands/payment_links.d.ts.map +1 -1
- package/dist/commands/payment_links.js +6 -7
- package/dist/commands/payment_links.js.map +1 -1
- package/dist/commands/products.d.ts.map +1 -1
- package/dist/commands/products.js +7 -11
- package/dist/commands/products.js.map +1 -1
- package/dist/commands/proposal.js +2 -2
- package/dist/commands/proposal.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +2 -6
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +5 -16
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +7 -3
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/sales.d.ts.map +1 -1
- package/dist/commands/sales.js +22 -27
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/schedule.js +10 -30
- package/dist/commands/schedule.js.map +1 -1
- package/dist/commands/schema.js +1 -1
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/seo.js +1 -0
- package/dist/commands/seo.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +1 -0
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/site.js +8 -21
- package/dist/commands/site.js.map +1 -1
- package/dist/commands/sites.js +1 -1
- package/dist/commands/sites.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -7
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/storage.d.ts.map +1 -1
- package/dist/commands/storage.js +17 -21
- package/dist/commands/storage.js.map +1 -1
- package/dist/commands/subscriptions.d.ts.map +1 -1
- package/dist/commands/subscriptions.js +6 -7
- package/dist/commands/subscriptions.js.map +1 -1
- package/dist/commands/switch.js +1 -1
- package/dist/commands/switch.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +2 -6
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/train.js +6 -6
- package/dist/commands/train.js.map +1 -1
- package/dist/commands/ucp.js +1 -1
- package/dist/commands/ucp.js.map +1 -1
- package/dist/commands/update.d.ts +22 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +197 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/users.d.ts.map +1 -1
- package/dist/commands/users.js +22 -26
- package/dist/commands/users.js.map +1 -1
- package/dist/commands/vibe.d.ts.map +1 -1
- package/dist/commands/vibe.js +5 -7
- package/dist/commands/vibe.js.map +1 -1
- package/dist/commands/voice.d.ts.map +1 -1
- package/dist/commands/voice.js +31 -35
- package/dist/commands/voice.js.map +1 -1
- package/dist/commands/webhooks-listen.d.ts.map +1 -1
- package/dist/commands/webhooks-listen.js +1 -0
- package/dist/commands/webhooks-listen.js.map +1 -1
- package/dist/commands/webhooks.js +1 -3
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/commands/webmcp.js +1 -1
- package/dist/commands/webmcp.js.map +1 -1
- package/dist/commands/widgets.js +6 -18
- package/dist/commands/widgets.js.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +68 -0
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +145 -10
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/command-kit.d.ts +29 -0
- package/dist/lib/command-kit.d.ts.map +1 -1
- package/dist/lib/command-kit.js +53 -1
- package/dist/lib/command-kit.js.map +1 -1
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +15 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/json-output.d.ts +25 -1
- package/dist/lib/json-output.d.ts.map +1 -1
- package/dist/lib/json-output.js +56 -0
- package/dist/lib/json-output.js.map +1 -1
- package/dist/lib/list-envelope.d.ts.map +1 -1
- package/dist/lib/list-envelope.js +24 -0
- package/dist/lib/list-envelope.js.map +1 -1
- package/package.json +2 -2
- package/platform-docs/llms.txt +11 -7
package/dist/lib/config.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ interface SolidConfig {
|
|
|
13
13
|
environment: 'production' | 'sandbox' | 'development';
|
|
14
14
|
access_token?: string;
|
|
15
15
|
refresh_token?: string;
|
|
16
|
+
agent_key?: string;
|
|
16
17
|
token_expires_at?: string;
|
|
17
18
|
user_id?: number;
|
|
18
19
|
user_email?: string;
|
|
@@ -32,6 +33,8 @@ declare class ConfigManager {
|
|
|
32
33
|
get accessToken(): string | undefined;
|
|
33
34
|
set accessToken(token: string | undefined);
|
|
34
35
|
get refreshToken(): string | undefined;
|
|
36
|
+
get agentKey(): string | undefined;
|
|
37
|
+
set agentKey(key: string | undefined);
|
|
35
38
|
set refreshToken(token: string | undefined);
|
|
36
39
|
get tokenExpiresAt(): Date | undefined;
|
|
37
40
|
set tokenExpiresAt(date: Date | undefined);
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B;AAKD,cAAM,aAAa;IACjB,OAAO,CAAC,IAAI,CAAc;;IAM1B,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,IAAI;IAQZ,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,EAGrB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAiBlC;IAED,IAAI,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAOnC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,EAG5D;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOxC;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOzC;IAED,IAAI,cAAc,IAAI,IAAI,GAAG,SAAS,CAGrC;IAED,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAOxC;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAOhC;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOtC;IAED,IAAI,SAAS,IAAI,WAAW,EAAE,GAAG,SAAS,CAEzC;IAED,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS,EAO5C;IAED,UAAU,IAAI,OAAO;IAsBrB,MAAM,IAAI,IAAI;IAWd,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAU9B,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B;AAKD,cAAM,aAAa;IACjB,OAAO,CAAC,IAAI,CAAc;;IAM1B,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,IAAI;IAQZ,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,EAGrB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAiBlC;IAED,IAAI,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAOnC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,EAG5D;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOxC;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IAKD,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAOnC;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOzC;IAED,IAAI,cAAc,IAAI,IAAI,GAAG,SAAS,CAGrC;IAED,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAOxC;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAOhC;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOtC;IAED,IAAI,SAAS,IAAI,WAAW,EAAE,GAAG,SAAS,CAEzC;IAED,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS,EAO5C;IAED,UAAU,IAAI,OAAO;IAsBrB,MAAM,IAAI,IAAI;IAWd,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAU9B,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
package/dist/lib/config.js
CHANGED
|
@@ -124,6 +124,21 @@ class ConfigManager {
|
|
|
124
124
|
get refreshToken() {
|
|
125
125
|
return this.data.refresh_token;
|
|
126
126
|
}
|
|
127
|
+
// SPRINT-AGENT-FIREWALL Phase 1 — the agent's own revocable key. Sent as
|
|
128
|
+
// X-Agent-Id on every request so the backend records WHICH agent acted.
|
|
129
|
+
// `SOLID_AGENT_KEY` in the environment wins over the stored value.
|
|
130
|
+
get agentKey() {
|
|
131
|
+
return process.env.SOLID_AGENT_KEY || this.data.agent_key;
|
|
132
|
+
}
|
|
133
|
+
set agentKey(key) {
|
|
134
|
+
if (key) {
|
|
135
|
+
this.data.agent_key = key;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
delete this.data.agent_key;
|
|
139
|
+
}
|
|
140
|
+
this.save();
|
|
141
|
+
}
|
|
127
142
|
set refreshToken(token) {
|
|
128
143
|
if (token) {
|
|
129
144
|
this.data.refresh_token = token;
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* 3. Program-level --json option
|
|
8
8
|
* 4. SOLID_JSON=1 env var
|
|
9
9
|
* 5. SOLID_NO_JSON=1 env var (explicit human override)
|
|
10
|
-
* 6.
|
|
10
|
+
* 6. explicit --format csv|tsv → NOT json (beats the inference in 7,
|
|
11
|
+
* loses to an explicit --json in 1-5)
|
|
12
|
+
* 7. **NEW:** auto-detect — when stdout is NOT a TTY (piped, redirected,
|
|
11
13
|
* called by an agent over MCP, run inside CI), default to JSON.
|
|
12
14
|
* Agents read structured output; humans read prose. The TTY signal
|
|
13
15
|
* is the cleanest discriminator and matches the convention modern
|
|
@@ -19,6 +21,14 @@
|
|
|
19
21
|
*/
|
|
20
22
|
import { Command } from 'commander';
|
|
21
23
|
export declare function setProgramJson(on: boolean): void;
|
|
24
|
+
/**
|
|
25
|
+
* True when the caller passed an explicit `--format csv` / `--format tsv`.
|
|
26
|
+
*
|
|
27
|
+
* Read from argv rather than command-kit's `getListFormat()` on purpose:
|
|
28
|
+
* command-kit imports this module, and a static import back would close
|
|
29
|
+
* an require() cycle at load time. `quietFromEnv()` reads argv the same way.
|
|
30
|
+
*/
|
|
31
|
+
export declare function explicitDelimitedFormat(): boolean;
|
|
22
32
|
/** True when stdout is not a TTY (pipe, redirect, agent, CI). */
|
|
23
33
|
export declare function isNonTty(): boolean;
|
|
24
34
|
/**
|
|
@@ -35,6 +45,20 @@ export declare function isNonTty(): boolean;
|
|
|
35
45
|
export declare function isJsonOutput(localOptions?: {
|
|
36
46
|
json?: boolean;
|
|
37
47
|
} | Record<string, unknown>): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Print a pretty JSON payload to stdout, normalizing the list envelope first.
|
|
50
|
+
*
|
|
51
|
+
* Use this instead of `console.log(JSON.stringify(x, null, 2))` whenever the
|
|
52
|
+
* payload is a fresh object the command built itself. The axios interceptor
|
|
53
|
+
* aliases .items/.total onto RESPONSE bodies, but a command that repackages
|
|
54
|
+
* them (`{ forms: rows }`, `{ sites }`) threw that away, so those lists spoke
|
|
55
|
+
* a private dialect. Non-destructive: the original key stays and .items,
|
|
56
|
+
* .total, .has_more join it. A no-op for anything not list-shaped.
|
|
57
|
+
*
|
|
58
|
+
* Deliberately keeps console.log as the write path (rather than
|
|
59
|
+
* process.stdout.write) so existing output assertions keep working.
|
|
60
|
+
*/
|
|
61
|
+
export declare function printJson(data: unknown): void;
|
|
38
62
|
/** Emit JSON to stdout (pretty-printed) and return true so caller can early-return. */
|
|
39
63
|
export declare function emitJson(data: unknown): true;
|
|
40
64
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAEhD;AASD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAajD;AAED,iEAAiE;AACjE,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAmBjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAQ7C;AAED,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAI5C;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAInE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAO/F"}
|
package/dist/lib/json-output.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setProgramJson = setProgramJson;
|
|
4
|
+
exports.explicitDelimitedFormat = explicitDelimitedFormat;
|
|
4
5
|
exports.isNonTty = isNonTty;
|
|
5
6
|
exports.isJsonOutput = isJsonOutput;
|
|
7
|
+
exports.printJson = printJson;
|
|
6
8
|
exports.emitJson = emitJson;
|
|
7
9
|
exports.activateProgramJsonIfRequested = activateProgramJsonIfRequested;
|
|
8
10
|
exports.mergeGlobalJson = mergeGlobalJson;
|
|
@@ -18,6 +20,30 @@ function explicitHumanOptOut(localOptions) {
|
|
|
18
20
|
return true;
|
|
19
21
|
return false;
|
|
20
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* True when the caller passed an explicit `--format csv` / `--format tsv`.
|
|
25
|
+
*
|
|
26
|
+
* Read from argv rather than command-kit's `getListFormat()` on purpose:
|
|
27
|
+
* command-kit imports this module, and a static import back would close
|
|
28
|
+
* an require() cycle at load time. `quietFromEnv()` reads argv the same way.
|
|
29
|
+
*/
|
|
30
|
+
function explicitDelimitedFormat() {
|
|
31
|
+
const argv = process.argv;
|
|
32
|
+
for (let i = 0; i < argv.length; i++) {
|
|
33
|
+
const a = argv[i];
|
|
34
|
+
if (a === '--format') {
|
|
35
|
+
const v = argv[i + 1];
|
|
36
|
+
if (v === 'csv' || v === 'tsv')
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
else if (a.startsWith('--format=')) {
|
|
40
|
+
const v = a.slice('--format='.length);
|
|
41
|
+
if (v === 'csv' || v === 'tsv')
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
21
47
|
/** True when stdout is not a TTY (pipe, redirect, agent, CI). */
|
|
22
48
|
function isNonTty() {
|
|
23
49
|
// process.stdout.isTTY is undefined when not a TTY, true when it is.
|
|
@@ -43,6 +69,13 @@ function isJsonOutput(localOptions) {
|
|
|
43
69
|
return true;
|
|
44
70
|
if (process.env.SOLID_JSON && /^(1|true|yes|on)$/i.test(process.env.SOLID_JSON))
|
|
45
71
|
return true;
|
|
72
|
+
// An explicit `--format csv|tsv` is a direct instruction about the output
|
|
73
|
+
// SHAPE, so it must beat the non-TTY *inference* below. Without this, the
|
|
74
|
+
// flag silently degraded to JSON the moment stdout was piped — i.e. for
|
|
75
|
+
// every script and every agent, the only callers who pass it. An explicit
|
|
76
|
+
// --json / SOLID_JSON still wins, because those are checked above.
|
|
77
|
+
if (explicitDelimitedFormat())
|
|
78
|
+
return false;
|
|
46
79
|
// Jest in-process — preserve the legacy human-mode default. JEST_WORKER_ID
|
|
47
80
|
// is set on every jest worker but does NOT propagate to subprocesses
|
|
48
81
|
// spawned via execSync/execFileSync that override env, which is exactly
|
|
@@ -54,6 +87,29 @@ function isJsonOutput(localOptions) {
|
|
|
54
87
|
return true;
|
|
55
88
|
return false;
|
|
56
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Print a pretty JSON payload to stdout, normalizing the list envelope first.
|
|
92
|
+
*
|
|
93
|
+
* Use this instead of `console.log(JSON.stringify(x, null, 2))` whenever the
|
|
94
|
+
* payload is a fresh object the command built itself. The axios interceptor
|
|
95
|
+
* aliases .items/.total onto RESPONSE bodies, but a command that repackages
|
|
96
|
+
* them (`{ forms: rows }`, `{ sites }`) threw that away, so those lists spoke
|
|
97
|
+
* a private dialect. Non-destructive: the original key stays and .items,
|
|
98
|
+
* .total, .has_more join it. A no-op for anything not list-shaped.
|
|
99
|
+
*
|
|
100
|
+
* Deliberately keeps console.log as the write path (rather than
|
|
101
|
+
* process.stdout.write) so existing output assertions keep working.
|
|
102
|
+
*/
|
|
103
|
+
function printJson(data) {
|
|
104
|
+
try {
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
106
|
+
require('./list-envelope').applyListEnvelope(data);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Normalization is additive and best-effort; never block the payload.
|
|
110
|
+
}
|
|
111
|
+
console.log(JSON.stringify(data, null, 2));
|
|
112
|
+
}
|
|
57
113
|
/** Emit JSON to stdout (pretty-printed) and return true so caller can early-return. */
|
|
58
114
|
function emitJson(data) {
|
|
59
115
|
process.stdout.write(JSON.stringify(data, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-envelope.d.ts","sourceRoot":"","sources":["../../src/lib/list-envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EA4B5C,CAAC;
|
|
1
|
+
{"version":3,"file":"list-envelope.d.ts","sourceRoot":"","sources":["../../src/lib/list-envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EA4B5C,CAAC;AAgBF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAGxE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,EACb,SAAS,GAAE,SAAS,MAAM,EAAoB,GAC7C,MAAM,GAAG,IAAI,CAoBf;AAsBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAuB9E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,IAAI,EAAE,CAAC,EACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GACtB,CAAC,CAoBH"}
|
|
@@ -64,6 +64,19 @@ exports.KNOWN_LIST_KEYS = [
|
|
|
64
64
|
'modules',
|
|
65
65
|
'domains',
|
|
66
66
|
];
|
|
67
|
+
/**
|
|
68
|
+
* Array-valued keys that are diagnostics channels, never the payload. Without
|
|
69
|
+
* this, a response like {status:'ok', errors:[]} would alias `errors` to
|
|
70
|
+
* `items` and an agent would read the error channel as the result set.
|
|
71
|
+
*/
|
|
72
|
+
const NON_LIST_ARRAY_KEYS = new Set([
|
|
73
|
+
'errors',
|
|
74
|
+
'warnings',
|
|
75
|
+
'messages',
|
|
76
|
+
'hints',
|
|
77
|
+
'notices',
|
|
78
|
+
'validation_errors',
|
|
79
|
+
]);
|
|
67
80
|
/** Truthy values for the SOLID_LEGACY_LIST_SHAPES opt-out. */
|
|
68
81
|
function legacyListShapesEnabled(env) {
|
|
69
82
|
const v = (env ?? process.env).SOLID_LEGACY_LIST_SHAPES;
|
|
@@ -82,6 +95,17 @@ function detectListKey(body, knownKeys = exports.KNOWN_LIST_KEYS) {
|
|
|
82
95
|
if (Array.isArray(record[k]))
|
|
83
96
|
return k;
|
|
84
97
|
}
|
|
98
|
+
// Fallback: exactly one array-valued property IS the list, whatever it's
|
|
99
|
+
// called. A hardcoded roster will always trail the API — `forms`,
|
|
100
|
+
// `submissions` and `deals` were all missing, so those commands silently
|
|
101
|
+
// stayed un-normalized and agents had to special-case them. Only applied
|
|
102
|
+
// for the default roster, so an explicit `knownKeys` argument still means
|
|
103
|
+
// "only these" (see the custom-key-list test).
|
|
104
|
+
if (knownKeys === exports.KNOWN_LIST_KEYS) {
|
|
105
|
+
const arrayKeys = Object.keys(record).filter((k) => Array.isArray(record[k]) && !NON_LIST_ARRAY_KEYS.has(k));
|
|
106
|
+
if (arrayKeys.length === 1)
|
|
107
|
+
return arrayKeys[0];
|
|
108
|
+
}
|
|
85
109
|
return null;
|
|
86
110
|
}
|
|
87
111
|
function safeNumber(v) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-envelope.js","sourceRoot":"","sources":["../../src/lib/list-envelope.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;
|
|
1
|
+
{"version":3,"file":"list-envelope.js","sourceRoot":"","sources":["../../src/lib/list-envelope.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidnumber/cli",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Be There
|
|
3
|
+
"version": "2.20.0",
|
|
4
|
+
"description": "Be There \u2014 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 \u2192 working business in 30 seconds.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
|
7
7
|
"bin": {
|
package/platform-docs/llms.txt
CHANGED
|
@@ -129,11 +129,11 @@ 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.20.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
|
+
- 132 top-level command groups, 773 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):**
|
|
@@ -175,6 +175,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
175
175
|
- `solid switch` — Switch active company
|
|
176
176
|
- `solid test` — Test agent responses with assertions
|
|
177
177
|
- `solid today` — Your daily brief: revenue, pipeline, urgent work, recommended actions
|
|
178
|
+
- `solid update` — Update the CLI to the latest release (knows npm, Homebrew and scoop)
|
|
178
179
|
- `solid version` — Print CLI version + capabilities (agent-friendly probe)
|
|
179
180
|
- `solid visual` — Open the Visual Canvas (Figma/Stitch-style page designer) in the browser
|
|
180
181
|
- `solid watch` — Watch local files and auto-push changes to production
|
|
@@ -182,8 +183,8 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
182
183
|
|
|
183
184
|
**Command groups (alphabetical):**
|
|
184
185
|
|
|
185
|
-
- **accounting** (
|
|
186
|
-
- **agent** (
|
|
186
|
+
- **accounting** (4 subcommands) — Optional mirror of your books into QuickBooks / Xero / FreshBooks (the books: `solid books`): `history, setup, status, sync`
|
|
187
|
+
- **agent** (31 subcommands) — Manage and interact with AI agents: `activity, adapters, call, capabilities, chat, clone, clones, dashboard, dispatch, grant, grants, identity, install, installed, list, memory, mission, profile, prompt, quarantine, reflect, release, reputation, revoke, risk, settings, soul, sync, telemetry, tools, uninstall`
|
|
187
188
|
- **analytics** (2 subcommands) — Business analytics and insights: `dashboard, mcp-traffic`
|
|
188
189
|
- **ant** (7 subcommands) — Ant Farm — code import system: `analyze, execute, get, import, import-url, list, rollback`
|
|
189
190
|
- **api** (3 subcommands) — API explorer — browse and test Solid# API endpoints: `call, docs, list`
|
|
@@ -194,13 +195,14 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
194
195
|
- **bids** (6 subcommands) — AI-drafted bids from photos (intake → analyze → approve): `approve, list, reanalyze, reject, show, upload`
|
|
195
196
|
- **billing** (16 subcommands) — Subscription, usage, and invoices: `charges, checkout-link, invoice, invoice-pdf, invoices, method-add, method-default, method-nickname, method-remove, methods, statement, status, subscription, trial, upgrade-trial, usage`
|
|
196
197
|
- **blog** (9 subcommands) — Blog posts & local SEO: `create, delete, generate, get, list, publish, seo, unpublish, update`
|
|
198
|
+
- **books** (1 subcommands) — The books — money in and out from Solid#'s own records (with or without an accounting system): `summary`
|
|
197
199
|
- **brand** (6 subcommands) — Brand Engine — brand identity management: `audit, create, export, get, set, update`
|
|
198
200
|
- **calendar** (1 subcommands) — Google Calendar event create (requires Google linked): `event`
|
|
199
201
|
- **call** (1 subcommands) — Call routing tools — simulate a caller through your phone tree: `simulate`
|
|
200
202
|
- **chains** (17 subcommands) — Agent chains — multi-step AI workflows (build, execute, approve): `activate, approve, archive, cancel, create, delete, execute, execution, executions, from-template, get, list, pause, pending-approvals, template, templates, update`
|
|
201
203
|
- **chat-widgets** (6 subcommands) — Chat widgets for external sites (CRUD + embed code): `create, delete, embed, get, list, update`
|
|
202
204
|
- **code** (4 subcommands) — Unified code surface — status, history, diff, rollback across all systems: `diff, history, rollback, status`
|
|
203
|
-
- **company** (
|
|
205
|
+
- **company** (12 subcommands) — Manage companies (agencies & multi-company developers): `create, create-for-client, current, info, invite, list, lock, lock-preset, lock-status, members, request-unlock, unlock`
|
|
204
206
|
- **completion** (2 subcommands) — Generate or install shell completion (reflects the live command tree): `install, uninstall`
|
|
205
207
|
- **connect** (11 subcommands) — Import external data into your Solid# business: `csv, docs, figma, github, history, list, notion, sheets, slack, status, wordpress`
|
|
206
208
|
- **crm** (4 subcommands) — CRM — contacts, deals, tasks, and pipeline: `contacts, dashboard, deals, tasks`
|
|
@@ -215,6 +217,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
215
217
|
- **ecommerce** (5 subcommands) — Storefront flow — carts, orders, shipping, reviews, abandoned carts: `abandoned, cart, orders, reviews, shipping`
|
|
216
218
|
- **emails** (6 subcommands) — Email — addresses, templates, send transactional messages: `addresses, send, send-invoice, send-payment-link, template-vars, templates`
|
|
217
219
|
- **embed** (3 subcommands) — Embed snippets — wire any website to Solid# (chat, form, paylink): `chat, form, paylink`
|
|
220
|
+
- **expenses** (8 subcommands) — Money out — expenses, bills, vendors: `aging, file, get, list, pay, summary, vendors, void`
|
|
218
221
|
- **flow** (11 subcommands) — Commerce flows — payment flows and subscriptions: `activate, agents, archive, clone, create, get, list, metrics, pause, test, update`
|
|
219
222
|
- **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
223
|
- **history** (2 subcommands) — View version history for pages and KB entries: `entity, recent`
|
|
@@ -224,6 +227,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
224
227
|
- **insights** (5 subcommands) — AI-generated conversation insights: `approve, list, reject, report, stats`
|
|
225
228
|
- **integrations** (10 subcommands) — Integration management: `catalog, create, deploy, disable, health, list, logs, rollback, test, validate`
|
|
226
229
|
- **inventory** (8 subcommands) — Inventory & stock management: `adjust, archive, create, get, import, list, unarchive, update`
|
|
230
|
+
- **invoices** (6 subcommands) — Money in — invoices, who owes you, recording payments: `aging, cancel, get, list, pay, summary`
|
|
227
231
|
- **kb** (5 subcommands) — Knowledge base management: `add, delete, list, search, update`
|
|
228
232
|
- **keys** (4 subcommands) — Issue and manage scoped API keys (agencies use this for client access): `create, list, revoke, rotate`
|
|
229
233
|
- **landing** (9 subcommands) — Landing pages — CRUD, templates, publish, analytics: `analytics, create, delete, get, list, publish, template-categories, templates, update`
|
|
@@ -270,7 +274,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
270
274
|
- **webmcp** (4 subcommands) — Manage the in-browser MCP transport — manifest, dispatch test, invocations, consent: `consent, invocations, manifest, test`
|
|
271
275
|
- **widget** (7 subcommands) — Widgets — embeddable business widgets: `activate, create, delete, embed, get, list, update`
|
|
272
276
|
|
|
273
|
-
*Auto-generated from the live commander tree at build time. CLI version 2.
|
|
277
|
+
*Auto-generated from the live commander tree at build time. CLI version 2.20.0, manifest schema 1.0, generated 2026-09-12. Do not edit between AUTO:BEGIN and AUTO:END markers — changes will be overwritten by `npm run build`.*
|
|
274
278
|
|
|
275
279
|
<!-- CLI:AUTO:END -->
|
|
276
280
|
|
|
@@ -299,7 +303,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
299
303
|
- "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.
|
|
300
304
|
- "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.
|
|
301
305
|
<!-- CLI:Q&A:BEGIN -->
|
|
302
|
-
- "Does Solid# have a CLI?" → Yes. `npm i -g @solidnumber/cli` —
|
|
306
|
+
- "Does Solid# have a CLI?" → Yes. `npm i -g @solidnumber/cli` — 132 top-level command groups, 773 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`.
|
|
303
307
|
<!-- CLI:Q&A:END -->
|
|
304
308
|
- "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.
|
|
305
309
|
- "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`.
|