@solidnumber/cli 2.17.0 → 2.19.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.js +214 -0
- package/dist/commands/agent.js.map +1 -1
- 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/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/call.js +11 -0
- package/dist/commands/call.js.map +1 -1
- package/dist/commands/company.js +84 -22
- package/dist/commands/company.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 +2 -0
- package/dist/commands/dispatch_shortcuts.js.map +1 -1
- package/dist/commands/how-to.js +1 -1
- package/dist/commands/how-to.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/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +43 -0
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +39 -0
- package/dist/lib/api-client.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/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/package.json +1 -1
- package/platform-docs/ai.txt +2 -2
- package/platform-docs/llms.txt +16 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/lib/apply/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,27 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Endpoints below are taken verbatim from the matching CLI command files
|
|
7
7
|
* (commands/products.ts, crm.ts, webhooks.ts, pages.ts, site.ts, domains.ts,
|
|
8
|
-
* forms.ts / lib/api-client.ts) so they track the real API.
|
|
8
|
+
* forms.ts, agent.ts, voice.ts / lib/api-client.ts) so they track the real API.
|
|
9
9
|
* A kind with `updateMethod: null` is immutable (create/delete only) — on
|
|
10
10
|
* drift the engine reports it rather than silently mutating.
|
|
11
|
+
*
|
|
12
|
+
* Two kinds are CONFIGURE-ONLY (`create: null`, `prunable: false`):
|
|
13
|
+
* - `agent` — agents are provisioned from the registry, never by a
|
|
14
|
+
* manifest, and never deleted (pause with is_enabled: false).
|
|
15
|
+
* - `voice_line` — a phone number is bought and released by explicit
|
|
16
|
+
* commands that cost money and cut service; apply only
|
|
17
|
+
* reconciles how an existing line behaves.
|
|
18
|
+
* Both declare `managedFields`: the manifest may only carry fields the list
|
|
19
|
+
* endpoint reads back, so "unchanged" is a real comparison and never a
|
|
20
|
+
* write-only field that plans as drift forever.
|
|
11
21
|
*/
|
|
22
|
+
export interface UpdateRoute {
|
|
23
|
+
/** Spec fields this endpoint owns. */
|
|
24
|
+
fields: string[];
|
|
25
|
+
method: 'patch' | 'put';
|
|
26
|
+
/** Path template; `{id}` is substituted. */
|
|
27
|
+
path: string;
|
|
28
|
+
}
|
|
12
29
|
export interface Reconciler {
|
|
13
30
|
/** Manifest `kind` this entry handles. */
|
|
14
31
|
kind: string;
|
|
@@ -16,17 +33,57 @@ export interface Reconciler {
|
|
|
16
33
|
identity: string;
|
|
17
34
|
/** GET collection (list current state). */
|
|
18
35
|
list: string;
|
|
19
|
-
/** POST collection (create). */
|
|
20
|
-
create: string;
|
|
21
|
-
/**
|
|
22
|
-
|
|
36
|
+
/** POST collection (create), or null when apply must never create this kind. */
|
|
37
|
+
create: string | null;
|
|
38
|
+
/** Shown on the plan when a declared resource is missing and `create` is null. */
|
|
39
|
+
createReason?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Path template for one item; `{id}` is substituted. Used for update/delete.
|
|
42
|
+
* ⛔ null when the kind has no in-place update route at all — a kind with
|
|
43
|
+
* `updateMethod: null` has nothing to address, and the type said `string`
|
|
44
|
+
* while updateMethod already said `| null`, so the two disagreed.
|
|
45
|
+
*/
|
|
46
|
+
itemPath: string | null;
|
|
23
47
|
/** HTTP verb for an in-place update, or null when the resource is immutable. */
|
|
24
48
|
updateMethod: 'patch' | 'put' | null;
|
|
49
|
+
/**
|
|
50
|
+
* Shown on the plan instead of the generic "delete and recreate" when
|
|
51
|
+
* updateMethod is null. ⛔ Required for anything where deleting IS the
|
|
52
|
+
* dangerous act: telling someone to delete and recreate a live payment
|
|
53
|
+
* processor connection to change a field is advice that takes payments down.
|
|
54
|
+
*/
|
|
55
|
+
updateReason?: string;
|
|
56
|
+
/**
|
|
57
|
+
* When set, an update is split across these routes by field — only routes
|
|
58
|
+
* owning at least one CHANGED field are called. For kinds whose settings
|
|
59
|
+
* live behind several endpoints (an agent's autonomy, pause state, model).
|
|
60
|
+
*/
|
|
61
|
+
updateRoutes?: UpdateRoute[];
|
|
25
62
|
/** Field on a fetched server item that holds its id (default `id`). */
|
|
26
63
|
idField: string;
|
|
27
64
|
/** Key in the list response holding the array, when not auto-detectable. */
|
|
28
65
|
listKey?: string;
|
|
66
|
+
/** false = `--prune` never deletes this kind (default true). */
|
|
67
|
+
prunable?: boolean;
|
|
68
|
+
/** The only spec fields accepted for this kind (identity is always allowed). */
|
|
69
|
+
managedFields?: string[];
|
|
70
|
+
/** Read-side field → write-side body, for fields the API names differently on write. */
|
|
71
|
+
writeMap?: Record<string, (value: unknown) => Record<string, unknown>>;
|
|
72
|
+
/**
|
|
73
|
+
* One-per-company resource (brand). `list` returns the single object (under
|
|
74
|
+
* `listKey`) or null; identity is the constant `kind` name; `itemPath` has no
|
|
75
|
+
* `{id}`; `--prune` never applies.
|
|
76
|
+
*/
|
|
77
|
+
singleton?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Fields `solid apply export` writes for this kind. Defaults to
|
|
80
|
+
* `managedFields`, else every server field minus the read-only set
|
|
81
|
+
* (id, company_id, timestamps, stats).
|
|
82
|
+
*/
|
|
83
|
+
exportFields?: string[];
|
|
29
84
|
}
|
|
85
|
+
/** Server-side fields that never belong in a manifest. */
|
|
86
|
+
export declare const READ_ONLY_FIELDS: Set<string>;
|
|
30
87
|
export declare const RECONCILERS: Record<string, Reconciler>;
|
|
31
88
|
export declare function reconcilerFor(kind: string): Reconciler | undefined;
|
|
32
89
|
export declare function knownKinds(): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/apply/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/apply/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gFAAgF;IAChF,YAAY,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IACrC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,aAG3B,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAiOlD,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RECONCILERS = void 0;
|
|
3
|
+
exports.RECONCILERS = exports.READ_ONLY_FIELDS = void 0;
|
|
4
4
|
exports.reconcilerFor = reconcilerFor;
|
|
5
5
|
exports.knownKinds = knownKinds;
|
|
6
|
+
/** Server-side fields that never belong in a manifest. */
|
|
7
|
+
exports.READ_ONLY_FIELDS = new Set([
|
|
8
|
+
'id', 'company_id', 'tenant_company_id', 'created_at', 'updated_at', 'deleted_at',
|
|
9
|
+
'last_active_at', 'stats', 'slug_history', 'version', 'current_version',
|
|
10
|
+
]);
|
|
6
11
|
exports.RECONCILERS = {
|
|
7
12
|
product: {
|
|
8
13
|
kind: 'product',
|
|
@@ -83,6 +88,151 @@ exports.RECONCILERS = {
|
|
|
83
88
|
idField: 'id',
|
|
84
89
|
listKey: 'surveys',
|
|
85
90
|
},
|
|
91
|
+
kb: {
|
|
92
|
+
kind: 'kb',
|
|
93
|
+
identity: 'title',
|
|
94
|
+
list: '/api/v1/kb/company?limit=500',
|
|
95
|
+
create: '/api/v1/kb/company',
|
|
96
|
+
itemPath: '/api/v1/kb/company/{id}',
|
|
97
|
+
updateMethod: 'put',
|
|
98
|
+
idField: 'id',
|
|
99
|
+
listKey: 'results',
|
|
100
|
+
exportFields: ['title', 'category', 'subcategory', 'content', 'tags', 'keywords', 'priority'],
|
|
101
|
+
},
|
|
102
|
+
service: {
|
|
103
|
+
kind: 'service',
|
|
104
|
+
identity: 'title',
|
|
105
|
+
list: '/api/v1/services/catalog?limit=200',
|
|
106
|
+
create: '/api/v1/services/catalog',
|
|
107
|
+
itemPath: '/api/v1/services/catalog/{id}',
|
|
108
|
+
updateMethod: 'put',
|
|
109
|
+
idField: 'id',
|
|
110
|
+
listKey: 'items',
|
|
111
|
+
exportFields: [
|
|
112
|
+
'title', 'description', 'category', 'subcategory', 'price', 'currency', 'taxable',
|
|
113
|
+
'default_duration_min', 'buffer_before_min', 'buffer_after_min', 'capacity_per_slot',
|
|
114
|
+
'requires_on_site', 'service_area_miles', 'visible_online', 'active', 'tags_csv',
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
brand: {
|
|
118
|
+
kind: 'brand',
|
|
119
|
+
identity: 'brand',
|
|
120
|
+
list: '/api/v1/cli/brand',
|
|
121
|
+
create: '/api/v1/cli/brand',
|
|
122
|
+
itemPath: '/api/v1/cli/brand',
|
|
123
|
+
updateMethod: 'put',
|
|
124
|
+
idField: 'id',
|
|
125
|
+
listKey: 'brand',
|
|
126
|
+
singleton: true,
|
|
127
|
+
prunable: false,
|
|
128
|
+
managedFields: ['name', 'design', 'voice', 'rules'],
|
|
129
|
+
},
|
|
130
|
+
agent: {
|
|
131
|
+
kind: 'agent',
|
|
132
|
+
identity: 'agent_type',
|
|
133
|
+
// include_disabled — a paused agent is still declared state, not a missing one.
|
|
134
|
+
list: '/api/v1/agents?include_disabled=true',
|
|
135
|
+
create: null,
|
|
136
|
+
createReason: 'agents are provisioned from the registry, not a manifest — run `solid agent sync`',
|
|
137
|
+
itemPath: '/api/v1/agents/{id}',
|
|
138
|
+
updateMethod: 'put',
|
|
139
|
+
updateRoutes: [
|
|
140
|
+
{ fields: ['autonomy_level'], method: 'patch', path: '/api/v1/agents/{id}/autonomy' },
|
|
141
|
+
{ fields: ['is_enabled'], method: 'patch', path: '/api/v1/agents/{id}/toggle' },
|
|
142
|
+
{ fields: ['llm_model_override', 'llm_provider_id', 'voice_enabled'], method: 'put', path: '/api/v1/agents/{id}' },
|
|
143
|
+
],
|
|
144
|
+
idField: 'id',
|
|
145
|
+
listKey: 'agents',
|
|
146
|
+
prunable: false,
|
|
147
|
+
managedFields: ['autonomy_level', 'is_enabled', 'llm_model_override', 'llm_provider_id', 'voice_enabled'],
|
|
148
|
+
},
|
|
149
|
+
// ⛔ THE THREE KINDS `solid apply` COULD NOT REACH. A manifest that declares
|
|
150
|
+
// agents, a site and phone numbers but cannot declare what the business is
|
|
151
|
+
// ALLOWED to do, which flows run, or which processor takes the money is not
|
|
152
|
+
// "the complete tenant" — it is the parts that happened to have reconcilers.
|
|
153
|
+
//
|
|
154
|
+
// Each is backed by real routes, verified before it was added here. Where a
|
|
155
|
+
// route genuinely does not exist (nothing updates a connected processor in
|
|
156
|
+
// place) the reconciler says so in createReason rather than pretending.
|
|
157
|
+
capability: {
|
|
158
|
+
kind: 'capability',
|
|
159
|
+
identity: 'name',
|
|
160
|
+
// include_inactive — a switched-off capability is declared state, not absence.
|
|
161
|
+
list: '/api/v1/capabilities?include_inactive=true',
|
|
162
|
+
create: '/api/v1/capabilities',
|
|
163
|
+
itemPath: '/api/v1/capabilities/{id}',
|
|
164
|
+
updateMethod: 'put',
|
|
165
|
+
idField: 'id',
|
|
166
|
+
listKey: 'capabilities',
|
|
167
|
+
prunable: false,
|
|
168
|
+
managedFields: ['name', 'category', 'capability_type', 'description', 'is_active'],
|
|
169
|
+
},
|
|
170
|
+
flow: {
|
|
171
|
+
kind: 'flow',
|
|
172
|
+
identity: 'name',
|
|
173
|
+
list: '/api/v1/cli/flows',
|
|
174
|
+
create: '/api/v1/cli/flows',
|
|
175
|
+
itemPath: '/api/v1/cli/flows/{id}',
|
|
176
|
+
updateMethod: 'patch',
|
|
177
|
+
// ⛔ Status is not a PATCH field. Activating a flow starts it running, so it
|
|
178
|
+
// has its own routes and its own consequence — the same reason `apply` will
|
|
179
|
+
// not provision a phone number.
|
|
180
|
+
updateRoutes: [
|
|
181
|
+
{ fields: ['name', 'commerce_type', 'config', 'product_name'], method: 'patch', path: '/api/v1/cli/flows/{id}' },
|
|
182
|
+
],
|
|
183
|
+
idField: 'id',
|
|
184
|
+
listKey: 'flows',
|
|
185
|
+
prunable: false,
|
|
186
|
+
managedFields: ['name', 'commerce_type', 'config', 'product_name'],
|
|
187
|
+
},
|
|
188
|
+
processor: {
|
|
189
|
+
kind: 'processor',
|
|
190
|
+
identity: 'processor',
|
|
191
|
+
list: '/api/v1/processors/connected',
|
|
192
|
+
create: '/api/v1/processors/connect',
|
|
193
|
+
// ⛔ There is no route that edits a connected processor in place, and there
|
|
194
|
+
// should not be one that `apply` drives: rotating live payment credentials
|
|
195
|
+
// from a manifest is not a reconcile, it is an outage waiting for a typo.
|
|
196
|
+
// Drift is REPORTED and left alone.
|
|
197
|
+
itemPath: null,
|
|
198
|
+
updateMethod: null,
|
|
199
|
+
updateReason: 'a connected processor is never edited by apply — reconnect it with `solid processor connect`',
|
|
200
|
+
idField: 'id',
|
|
201
|
+
listKey: 'processors',
|
|
202
|
+
prunable: false,
|
|
203
|
+
// Only the identity is managed, so a changed key shows as drift and nothing
|
|
204
|
+
// silently rewrites it.
|
|
205
|
+
managedFields: ['processor', 'environment', 'is_default'],
|
|
206
|
+
},
|
|
207
|
+
voice_line: {
|
|
208
|
+
kind: 'voice_line',
|
|
209
|
+
identity: 'phone_number',
|
|
210
|
+
list: '/api/v1/voice/phone-numbers',
|
|
211
|
+
create: null,
|
|
212
|
+
createReason: 'apply never provisions a number (that buys one) — use `solid voice numbers add`',
|
|
213
|
+
itemPath: '/api/v1/voice/phone-numbers/{id}',
|
|
214
|
+
updateMethod: 'patch',
|
|
215
|
+
updateRoutes: [
|
|
216
|
+
{ fields: ['routing_mode'], method: 'patch', path: '/api/v1/phone/settings/{id}' },
|
|
217
|
+
{
|
|
218
|
+
fields: [
|
|
219
|
+
'agent_id', 'greeting_message', 'voice_config', 'business_hours',
|
|
220
|
+
'voicemail_enabled', 'translate_mode', 'target_lang', 'is_active',
|
|
221
|
+
],
|
|
222
|
+
method: 'patch',
|
|
223
|
+
path: '/api/v1/voice/phone-numbers/{id}',
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
idField: 'id',
|
|
227
|
+
listKey: 'phone_numbers',
|
|
228
|
+
prunable: false,
|
|
229
|
+
managedFields: [
|
|
230
|
+
'routing_mode', 'agent_id', 'greeting_message', 'voice_config', 'business_hours',
|
|
231
|
+
'voicemail_enabled', 'translate_mode', 'target_lang', 'is_active',
|
|
232
|
+
],
|
|
233
|
+
// The list reads `is_active`; the PATCH writes `status`.
|
|
234
|
+
writeMap: { is_active: (v) => ({ status: v ? 'active' : 'inactive' }) },
|
|
235
|
+
},
|
|
86
236
|
};
|
|
87
237
|
function reconcilerFor(kind) {
|
|
88
238
|
return exports.RECONCILERS[kind] || exports.RECONCILERS[kind.toLowerCase()];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/lib/apply/registry.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/lib/apply/registry.ts"],"names":[],"mappings":"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"}
|
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":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAqBzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,MAAM,aAAa;IACT,IAAI,CAAc;IAE1B;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAClD,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACnG,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC/E,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3E,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,CAAC,GAAW;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,SAAS;QACX,gEAAgE;QAChE,kEAAkE;QAClE,mEAAmE;QACnE,qEAAqE;QACrE,sCAAsC;QACtC,gEAAgE;QAChE,iEAAiE;QACjE,8CAA8C;QAC9C,KAAK,MAAM,MAAM,IAAI,CAAC,wBAAwB,EAAE,kBAAkB,CAAU,EAAE,CAAC;YAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;oBAAE,OAAO,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS,CAAC,EAAsB;QAClC,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW,CAAC,GAA6C;QAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAChC,CAAC;IAED,IAAI,WAAW,CAAC,KAAyB;QACvC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IACjC,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,mEAAmE;IACnE,IAAI,QAAQ;QACV,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5D,CAAC;IAED,IAAI,QAAQ,CAAC,GAAuB;QAClC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,KAAyB;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,cAAc;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IAED,IAAI,cAAc,CAAC,IAAsB;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,CAAC,EAAsB;QAC/B,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS,CAAC,KAAyB;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS,CAAC,IAA+B;QAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,UAAU;QACR,6DAA6D;QAC7D,iEAAiE;QACjE,mEAAmE;QACnE,6DAA6D;QAC7D,+DAA+D;QAC/D,0DAA0D;QAC1D,EAAE;QACF,8CAA8C;QAC9C,qCAAqC;QACrC,yCAAyC;QACzC,gCAAgC;QAChC,8CAA8C;QAC9C,gDAAgD;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAyC;YAC3D,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,UAAU,EAAE,IAAI,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;QAClF,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF;AAEY,QAAA,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidnumber/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.19.0",
|
|
4
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",
|
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.19.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):**
|
|
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
|
|
@@ -176,6 +175,7 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
176
175
|
- `solid switch` — Switch active company
|
|
177
176
|
- `solid test` — Test agent responses with assertions
|
|
178
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)
|
|
179
179
|
- `solid version` — Print CLI version + capabilities (agent-friendly probe)
|
|
180
180
|
- `solid visual` — Open the Visual Canvas (Figma/Stitch-style page designer) in the browser
|
|
181
181
|
- `solid watch` — Watch local files and auto-push changes to production
|
|
@@ -183,24 +183,26 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
183
183
|
|
|
184
184
|
**Command groups (alphabetical):**
|
|
185
185
|
|
|
186
|
-
- **accounting** (
|
|
187
|
-
- **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`
|
|
188
188
|
- **analytics** (2 subcommands) — Business analytics and insights: `dashboard, mcp-traffic`
|
|
189
189
|
- **ant** (7 subcommands) — Ant Farm — code import system: `analyze, execute, get, import, import-url, list, rollback`
|
|
190
190
|
- **api** (3 subcommands) — API explorer — browse and test Solid# API endpoints: `call, docs, list`
|
|
191
|
+
- **apply** (4 subcommands) — Reconcile the company to a declarative manifest (create/update/prune); drift, rollback, history, export: `drift, export, history, rollback`
|
|
191
192
|
- **ask-owner** (1 subcommands) — Typed escalation — agent asks, owner answers, agent resumes: `check`
|
|
192
193
|
- **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
194
|
- **auth** (6 subcommands) — Authentication management: `config, login, logout, refresh, status, token`
|
|
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.19.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
|
|
|
@@ -294,12 +298,12 @@ Developer funnel: Free signup → connect the curated connector (OAuth) → mana
|
|
|
294
298
|
- "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.
|
|
295
299
|
- "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.
|
|
296
300
|
- "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.
|
|
297
|
-
- "What is SmartRouter?" → AI model selection engine (
|
|
298
|
-
- "What is CognitiveLimiter?" → Real-time AI cost control (
|
|
301
|
+
- "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
|
|
302
|
+
- "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
|
|
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`.
|