@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.
Files changed (242) hide show
  1. package/README.md +15 -0
  2. package/dist/commands/accounting.d.ts +10 -1
  3. package/dist/commands/accounting.d.ts.map +1 -1
  4. package/dist/commands/accounting.js +77 -52
  5. package/dist/commands/accounting.js.map +1 -1
  6. package/dist/commands/agent.d.ts.map +1 -1
  7. package/dist/commands/agent.js +219 -10
  8. package/dist/commands/agent.js.map +1 -1
  9. package/dist/commands/ant.js +7 -21
  10. package/dist/commands/ant.js.map +1 -1
  11. package/dist/commands/api.d.ts.map +1 -1
  12. package/dist/commands/api.js +2 -3
  13. package/dist/commands/api.js.map +1 -1
  14. package/dist/commands/auth.d.ts.map +1 -1
  15. package/dist/commands/auth.js +14 -17
  16. package/dist/commands/auth.js.map +1 -1
  17. package/dist/commands/bids.d.ts.map +1 -1
  18. package/dist/commands/bids.js +4 -9
  19. package/dist/commands/bids.js.map +1 -1
  20. package/dist/commands/blog.js +12 -41
  21. package/dist/commands/blog.js.map +1 -1
  22. package/dist/commands/books.d.ts +24 -0
  23. package/dist/commands/books.d.ts.map +1 -0
  24. package/dist/commands/books.js +242 -0
  25. package/dist/commands/books.js.map +1 -0
  26. package/dist/commands/brand.js +11 -12
  27. package/dist/commands/brand.js.map +1 -1
  28. package/dist/commands/call.js +11 -0
  29. package/dist/commands/call.js.map +1 -1
  30. package/dist/commands/chains.d.ts.map +1 -1
  31. package/dist/commands/chains.js +16 -17
  32. package/dist/commands/chains.js.map +1 -1
  33. package/dist/commands/chat_widgets.d.ts.map +1 -1
  34. package/dist/commands/chat_widgets.js +5 -6
  35. package/dist/commands/chat_widgets.js.map +1 -1
  36. package/dist/commands/clone.d.ts.map +1 -1
  37. package/dist/commands/clone.js +12 -3
  38. package/dist/commands/clone.js.map +1 -1
  39. package/dist/commands/code.js +4 -8
  40. package/dist/commands/code.js.map +1 -1
  41. package/dist/commands/company.js +92 -59
  42. package/dist/commands/company.js.map +1 -1
  43. package/dist/commands/completion.d.ts.map +1 -1
  44. package/dist/commands/completion.js +14 -3
  45. package/dist/commands/completion.js.map +1 -1
  46. package/dist/commands/connect.js +11 -27
  47. package/dist/commands/connect.js.map +1 -1
  48. package/dist/commands/crm.d.ts.map +1 -1
  49. package/dist/commands/crm.js +51 -64
  50. package/dist/commands/crm.js.map +1 -1
  51. package/dist/commands/demo.js +1 -1
  52. package/dist/commands/demo.js.map +1 -1
  53. package/dist/commands/deploy.d.ts.map +1 -1
  54. package/dist/commands/deploy.js +5 -15
  55. package/dist/commands/deploy.js.map +1 -1
  56. package/dist/commands/design.js +10 -6
  57. package/dist/commands/design.js.map +1 -1
  58. package/dist/commands/dev.d.ts.map +1 -1
  59. package/dist/commands/dev.js +11 -17
  60. package/dist/commands/dev.js.map +1 -1
  61. package/dist/commands/dispatch_shortcuts.d.ts +7 -0
  62. package/dist/commands/dispatch_shortcuts.d.ts.map +1 -1
  63. package/dist/commands/dispatch_shortcuts.js +7 -3
  64. package/dist/commands/dispatch_shortcuts.js.map +1 -1
  65. package/dist/commands/docs.js +1 -1
  66. package/dist/commands/doctor.js +1 -1
  67. package/dist/commands/doctor.js.map +1 -1
  68. package/dist/commands/domains.js +1 -1
  69. package/dist/commands/domains.js.map +1 -1
  70. package/dist/commands/drafts.d.ts.map +1 -1
  71. package/dist/commands/drafts.js +2 -6
  72. package/dist/commands/drafts.js.map +1 -1
  73. package/dist/commands/droplet.d.ts.map +1 -1
  74. package/dist/commands/droplet.js +8 -0
  75. package/dist/commands/droplet.js.map +1 -1
  76. package/dist/commands/ecommerce.d.ts.map +1 -1
  77. package/dist/commands/ecommerce.js +32 -36
  78. package/dist/commands/ecommerce.js.map +1 -1
  79. package/dist/commands/emails.d.ts.map +1 -1
  80. package/dist/commands/emails.js +12 -13
  81. package/dist/commands/emails.js.map +1 -1
  82. package/dist/commands/embed.d.ts.map +1 -1
  83. package/dist/commands/embed.js +3 -4
  84. package/dist/commands/embed.js.map +1 -1
  85. package/dist/commands/flows.d.ts.map +1 -1
  86. package/dist/commands/flows.js +7 -21
  87. package/dist/commands/flows.js.map +1 -1
  88. package/dist/commands/forms.d.ts.map +1 -1
  89. package/dist/commands/forms.js +31 -32
  90. package/dist/commands/forms.js.map +1 -1
  91. package/dist/commands/health.d.ts.map +1 -1
  92. package/dist/commands/health.js +7 -3
  93. package/dist/commands/health.js.map +1 -1
  94. package/dist/commands/history.d.ts.map +1 -1
  95. package/dist/commands/history.js +10 -25
  96. package/dist/commands/history.js.map +1 -1
  97. package/dist/commands/import.d.ts.map +1 -1
  98. package/dist/commands/import.js +1 -0
  99. package/dist/commands/import.js.map +1 -1
  100. package/dist/commands/inbound.d.ts.map +1 -1
  101. package/dist/commands/inbound.js +9 -13
  102. package/dist/commands/inbound.js.map +1 -1
  103. package/dist/commands/inbox.d.ts.map +1 -1
  104. package/dist/commands/inbox.js +15 -43
  105. package/dist/commands/inbox.js.map +1 -1
  106. package/dist/commands/integrations.js +9 -27
  107. package/dist/commands/integrations.js.map +1 -1
  108. package/dist/commands/inventory.js +7 -21
  109. package/dist/commands/inventory.js.map +1 -1
  110. package/dist/commands/kb.d.ts.map +1 -1
  111. package/dist/commands/kb.js +4 -10
  112. package/dist/commands/kb.js.map +1 -1
  113. package/dist/commands/keys.d.ts.map +1 -1
  114. package/dist/commands/keys.js +3 -7
  115. package/dist/commands/keys.js.map +1 -1
  116. package/dist/commands/landing.d.ts.map +1 -1
  117. package/dist/commands/landing.js +8 -9
  118. package/dist/commands/landing.js.map +1 -1
  119. package/dist/commands/leads.d.ts.map +1 -1
  120. package/dist/commands/leads.js +19 -23
  121. package/dist/commands/leads.js.map +1 -1
  122. package/dist/commands/logs.d.ts.map +1 -1
  123. package/dist/commands/logs.js +1 -3
  124. package/dist/commands/logs.js.map +1 -1
  125. package/dist/commands/marketplace.d.ts.map +1 -1
  126. package/dist/commands/marketplace.js +10 -14
  127. package/dist/commands/marketplace.js.map +1 -1
  128. package/dist/commands/migrate.d.ts.map +1 -1
  129. package/dist/commands/migrate.js +1 -3
  130. package/dist/commands/migrate.js.map +1 -1
  131. package/dist/commands/nest.js +5 -11
  132. package/dist/commands/nest.js.map +1 -1
  133. package/dist/commands/notes.js +5 -10
  134. package/dist/commands/notes.js.map +1 -1
  135. package/dist/commands/offer.d.ts.map +1 -1
  136. package/dist/commands/offer.js +2 -5
  137. package/dist/commands/offer.js.map +1 -1
  138. package/dist/commands/onboarding.d.ts.map +1 -1
  139. package/dist/commands/onboarding.js +34 -38
  140. package/dist/commands/onboarding.js.map +1 -1
  141. package/dist/commands/orders.d.ts.map +1 -1
  142. package/dist/commands/orders.js +12 -16
  143. package/dist/commands/orders.js.map +1 -1
  144. package/dist/commands/pages.d.ts.map +1 -1
  145. package/dist/commands/pages.js +11 -30
  146. package/dist/commands/pages.js.map +1 -1
  147. package/dist/commands/payment_links.d.ts.map +1 -1
  148. package/dist/commands/payment_links.js +6 -7
  149. package/dist/commands/payment_links.js.map +1 -1
  150. package/dist/commands/products.d.ts.map +1 -1
  151. package/dist/commands/products.js +7 -11
  152. package/dist/commands/products.js.map +1 -1
  153. package/dist/commands/proposal.js +2 -2
  154. package/dist/commands/proposal.js.map +1 -1
  155. package/dist/commands/publish.d.ts.map +1 -1
  156. package/dist/commands/publish.js +2 -6
  157. package/dist/commands/publish.js.map +1 -1
  158. package/dist/commands/pull.d.ts.map +1 -1
  159. package/dist/commands/pull.js +5 -16
  160. package/dist/commands/pull.js.map +1 -1
  161. package/dist/commands/push.d.ts.map +1 -1
  162. package/dist/commands/push.js +7 -3
  163. package/dist/commands/push.js.map +1 -1
  164. package/dist/commands/sales.d.ts.map +1 -1
  165. package/dist/commands/sales.js +22 -27
  166. package/dist/commands/sales.js.map +1 -1
  167. package/dist/commands/schedule.js +10 -30
  168. package/dist/commands/schedule.js.map +1 -1
  169. package/dist/commands/schema.js +1 -1
  170. package/dist/commands/schema.js.map +1 -1
  171. package/dist/commands/seo.js +1 -0
  172. package/dist/commands/seo.js.map +1 -1
  173. package/dist/commands/serve.d.ts.map +1 -1
  174. package/dist/commands/serve.js +1 -0
  175. package/dist/commands/serve.js.map +1 -1
  176. package/dist/commands/site.js +8 -21
  177. package/dist/commands/site.js.map +1 -1
  178. package/dist/commands/sites.js +1 -1
  179. package/dist/commands/sites.js.map +1 -1
  180. package/dist/commands/status.d.ts.map +1 -1
  181. package/dist/commands/status.js +2 -7
  182. package/dist/commands/status.js.map +1 -1
  183. package/dist/commands/storage.d.ts.map +1 -1
  184. package/dist/commands/storage.js +17 -21
  185. package/dist/commands/storage.js.map +1 -1
  186. package/dist/commands/subscriptions.d.ts.map +1 -1
  187. package/dist/commands/subscriptions.js +6 -7
  188. package/dist/commands/subscriptions.js.map +1 -1
  189. package/dist/commands/switch.js +1 -1
  190. package/dist/commands/switch.js.map +1 -1
  191. package/dist/commands/test.d.ts.map +1 -1
  192. package/dist/commands/test.js +2 -6
  193. package/dist/commands/test.js.map +1 -1
  194. package/dist/commands/train.js +6 -6
  195. package/dist/commands/train.js.map +1 -1
  196. package/dist/commands/ucp.js +1 -1
  197. package/dist/commands/ucp.js.map +1 -1
  198. package/dist/commands/update.d.ts +22 -0
  199. package/dist/commands/update.d.ts.map +1 -0
  200. package/dist/commands/update.js +197 -0
  201. package/dist/commands/update.js.map +1 -0
  202. package/dist/commands/users.d.ts.map +1 -1
  203. package/dist/commands/users.js +22 -26
  204. package/dist/commands/users.js.map +1 -1
  205. package/dist/commands/vibe.d.ts.map +1 -1
  206. package/dist/commands/vibe.js +5 -7
  207. package/dist/commands/vibe.js.map +1 -1
  208. package/dist/commands/voice.d.ts.map +1 -1
  209. package/dist/commands/voice.js +31 -35
  210. package/dist/commands/voice.js.map +1 -1
  211. package/dist/commands/webhooks-listen.d.ts.map +1 -1
  212. package/dist/commands/webhooks-listen.js +1 -0
  213. package/dist/commands/webhooks-listen.js.map +1 -1
  214. package/dist/commands/webhooks.js +1 -3
  215. package/dist/commands/webhooks.js.map +1 -1
  216. package/dist/commands/webmcp.js +1 -1
  217. package/dist/commands/webmcp.js.map +1 -1
  218. package/dist/commands/widgets.js +6 -18
  219. package/dist/commands/widgets.js.map +1 -1
  220. package/dist/index.js +18 -0
  221. package/dist/index.js.map +1 -1
  222. package/dist/lib/api-client.d.ts +68 -0
  223. package/dist/lib/api-client.d.ts.map +1 -1
  224. package/dist/lib/api-client.js +145 -10
  225. package/dist/lib/api-client.js.map +1 -1
  226. package/dist/lib/command-kit.d.ts +29 -0
  227. package/dist/lib/command-kit.d.ts.map +1 -1
  228. package/dist/lib/command-kit.js +53 -1
  229. package/dist/lib/command-kit.js.map +1 -1
  230. package/dist/lib/config.d.ts +3 -0
  231. package/dist/lib/config.d.ts.map +1 -1
  232. package/dist/lib/config.js +15 -0
  233. package/dist/lib/config.js.map +1 -1
  234. package/dist/lib/json-output.d.ts +25 -1
  235. package/dist/lib/json-output.d.ts.map +1 -1
  236. package/dist/lib/json-output.js +56 -0
  237. package/dist/lib/json-output.js.map +1 -1
  238. package/dist/lib/list-envelope.d.ts.map +1 -1
  239. package/dist/lib/list-envelope.js +24 -0
  240. package/dist/lib/list-envelope.js.map +1 -1
  241. package/package.json +2 -2
  242. package/platform-docs/llms.txt +11 -7
@@ -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);
@@ -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"}
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
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. **NEW:** auto-detect when stdout is NOT a TTY (piped, redirected,
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;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAEhD;AASD,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,CAajG;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"}
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"}
@@ -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":";;AAuBA,wCAEC;AAUD,4BAGC;AAaD,oCAaC;AAGD,4BAIC;AAMD,wEAIC;AAOD,0CAOC;AA1ED,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,SAAgB,cAAc,CAAC,EAAW;IACxC,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,2DAA2D;AAC3D,SAAS,mBAAmB,CAAC,YAA2D;IACtF,IAAI,YAAY,IAAK,YAAoB,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IACnG,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iEAAiE;AACjE,SAAgB,QAAQ;IACtB,qEAAqE;IACrE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,YAAY,CAAC,YAA2D;IACtF,IAAI,YAAY,IAAK,YAAoB,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,mBAAmB,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,WAAW;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,2EAA2E;IAC3E,qEAAqE;IACrE,wEAAwE;IACxE,wBAAwB;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3D,yDAAyD;IACzD,IAAI,QAAQ,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uFAAuF;AACvF,SAAgB,QAAQ,CAAC,IAAa;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,8BAA8B,CAAC,IAAc;IAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAA+B,YAAe,EAAE,GAAa;IAC1F,IAAK,YAAoB,CAAC,IAAI;QAAE,OAAO,YAAY,CAAC;IACpD,MAAM,UAAU,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;IACvD,IAAI,WAAW,IAAI,UAAU,IAAI,YAAY,EAAE,EAAE,CAAC;QAChD,OAAO,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
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;AAEF,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,CAOf;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"}
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":"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"}
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.18.0",
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.",
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": {
@@ -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.18.0
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
- - 128 top-level command groups, 746 subcommands.
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** (3 subcommands) — Accounting sync QuickBooks, Xero: `history, status, sync`
186
- - **agent** (26 subcommands) — Manage and interact with AI agents: `activity, adapters, call, capabilities, chat, clone, clones, dashboard, dispatch, grant, grants, install, installed, list, memory, mission, profile, prompt, reflect, revoke, settings, soul, sync, telemetry, tools, uninstall`
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** (11 subcommands) — Manage companies (agencies & multi-company developers): `create, create-for-client, current, info, invite, list, lock, lock-status, members, request-unlock, unlock`
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.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`.*
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` — 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`.
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`.