@solidnumber/cli 2.16.0 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/commands/apply.d.ts +10 -0
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +436 -51
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/forms.d.ts.map +1 -1
- package/dist/commands/forms.js +180 -15
- package/dist/commands/forms.js.map +1 -1
- package/dist/commands/how-to.js +1 -1
- package/dist/commands/how-to.js.map +1 -1
- package/dist/commands/offer.d.ts +18 -0
- package/dist/commands/offer.d.ts.map +1 -0
- package/dist/commands/offer.js +117 -0
- package/dist/commands/offer.js.map +1 -0
- package/dist/commands/orders.d.ts.map +1 -1
- package/dist/commands/orders.js +143 -1
- package/dist/commands/orders.js.map +1 -1
- package/dist/commands/payment_links.d.ts.map +1 -1
- package/dist/commands/payment_links.js +41 -1
- package/dist/commands/payment_links.js.map +1 -1
- package/dist/commands/verbs.d.ts.map +1 -1
- package/dist/commands/verbs.js +8 -57
- package/dist/commands/verbs.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/apply/engine.d.ts +13 -0
- package/dist/lib/apply/engine.d.ts.map +1 -1
- package/dist/lib/apply/engine.js +122 -13
- package/dist/lib/apply/engine.js.map +1 -1
- package/dist/lib/apply/lock.d.ts +107 -0
- package/dist/lib/apply/lock.d.ts.map +1 -0
- package/dist/lib/apply/lock.js +285 -0
- package/dist/lib/apply/lock.js.map +1 -0
- package/dist/lib/apply/registry.d.ts +62 -5
- package/dist/lib/apply/registry.d.ts.map +1 -1
- package/dist/lib/apply/registry.js +151 -1
- package/dist/lib/apply/registry.js.map +1 -1
- package/dist/lib/json-arg.d.ts +2 -0
- package/dist/lib/json-arg.d.ts.map +1 -0
- package/dist/lib/json-arg.js +71 -0
- package/dist/lib/json-arg.js.map +1 -0
- package/package.json +5 -3
- package/platform-docs/ai.txt +2 -2
- package/platform-docs/llms.txt +14 -13
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MAX_RUNS = exports.LOCK_VERSION = void 0;
|
|
37
|
+
exports.lockKey = lockKey;
|
|
38
|
+
exports.lockPathFor = lockPathFor;
|
|
39
|
+
exports.specHash = specHash;
|
|
40
|
+
exports.emptyLock = emptyLock;
|
|
41
|
+
exports.readLock = readLock;
|
|
42
|
+
exports.writeLock = writeLock;
|
|
43
|
+
exports.newRunId = newRunId;
|
|
44
|
+
exports.mergeRun = mergeRun;
|
|
45
|
+
exports.classifyDrift = classifyDrift;
|
|
46
|
+
exports.isProductionDrift = isProductionDrift;
|
|
47
|
+
exports.buildRollbackPlan = buildRollbackPlan;
|
|
48
|
+
exports.shapeForExport = shapeForExport;
|
|
49
|
+
exports.toManifestYaml = toManifestYaml;
|
|
50
|
+
/**
|
|
51
|
+
* `solid apply` lockfile, drift classification, rollback plan and export shaping.
|
|
52
|
+
*
|
|
53
|
+
* The lock lives NEXT TO the manifest (`site.yaml` → `site.lock.json`) so it is
|
|
54
|
+
* committed with it. It records, per resource, the server id and the managed
|
|
55
|
+
* fields as they stood when apply last wrote them — which is what makes a
|
|
56
|
+
* three-way comparison possible:
|
|
57
|
+
*
|
|
58
|
+
* manifest (git) lock (last apply) live (production)
|
|
59
|
+
*
|
|
60
|
+
* and what `rollback` restores from: every run stores a pre-image (`before`)
|
|
61
|
+
* for each write it made.
|
|
62
|
+
*
|
|
63
|
+
* Everything in here that decides is pure (classifyDrift, buildRollbackPlan,
|
|
64
|
+
* shapeForExport, mergeRun); the two functions that touch disk are thin.
|
|
65
|
+
*/
|
|
66
|
+
const fs = __importStar(require("node:fs"));
|
|
67
|
+
const path = __importStar(require("node:path"));
|
|
68
|
+
const node_crypto_1 = require("node:crypto");
|
|
69
|
+
const registry_1 = require("./registry");
|
|
70
|
+
const engine_1 = require("./engine");
|
|
71
|
+
exports.LOCK_VERSION = 1;
|
|
72
|
+
exports.MAX_RUNS = 20;
|
|
73
|
+
function lockKey(kind, identity) { return `${kind}/${identity}`; }
|
|
74
|
+
function lockPathFor(manifestPath) {
|
|
75
|
+
const dir = path.dirname(manifestPath);
|
|
76
|
+
const base = path.basename(manifestPath).replace(/\.(ya?ml|json)$/i, '');
|
|
77
|
+
return path.join(dir, `${base}.lock.json`);
|
|
78
|
+
}
|
|
79
|
+
function specHash(spec) {
|
|
80
|
+
return (0, node_crypto_1.createHash)('sha256').update(stableStringify(spec)).digest('hex').slice(0, 16);
|
|
81
|
+
}
|
|
82
|
+
function stableStringify(v) {
|
|
83
|
+
if (v === null || typeof v !== 'object')
|
|
84
|
+
return JSON.stringify(v);
|
|
85
|
+
if (Array.isArray(v))
|
|
86
|
+
return `[${v.map(stableStringify).join(',')}]`;
|
|
87
|
+
const o = v;
|
|
88
|
+
return `{${Object.keys(o).sort().map((k) => `${JSON.stringify(k)}:${stableStringify(o[k])}`).join(',')}}`;
|
|
89
|
+
}
|
|
90
|
+
function emptyLock(companyId, manifestPath, cliVersion) {
|
|
91
|
+
return {
|
|
92
|
+
version: exports.LOCK_VERSION, company_id: companyId, manifest: path.basename(manifestPath),
|
|
93
|
+
applied_at: null, cli_version: cliVersion, resources: {}, runs: [],
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function readLock(lockPath) {
|
|
97
|
+
if (!fs.existsSync(lockPath))
|
|
98
|
+
return null;
|
|
99
|
+
const parsed = JSON.parse(fs.readFileSync(lockPath, 'utf8'));
|
|
100
|
+
if (parsed.version !== exports.LOCK_VERSION) {
|
|
101
|
+
throw new Error(`${path.basename(lockPath)} is lock version ${parsed.version}; this CLI writes version ${exports.LOCK_VERSION}`);
|
|
102
|
+
}
|
|
103
|
+
return parsed;
|
|
104
|
+
}
|
|
105
|
+
function writeLock(lockPath, lock) {
|
|
106
|
+
fs.writeFileSync(lockPath, JSON.stringify(lock, null, 2) + '\n');
|
|
107
|
+
}
|
|
108
|
+
function newRunId(now = new Date()) {
|
|
109
|
+
return now.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}Z$/, 'Z');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Fold an executed (non-dry-run) plan into the lock: resources that were
|
|
113
|
+
* created/updated/unchanged are recorded with the spec that now holds on the
|
|
114
|
+
* server; pruned ones are dropped; failed actions leave the lock untouched for
|
|
115
|
+
* that resource. Returns the new lock and the run record that was appended.
|
|
116
|
+
*/
|
|
117
|
+
function mergeRun(lock, results, opts) {
|
|
118
|
+
const now = opts.now ?? new Date();
|
|
119
|
+
const at = now.toISOString();
|
|
120
|
+
const resources = { ...lock.resources };
|
|
121
|
+
const actions = [];
|
|
122
|
+
for (const r of results) {
|
|
123
|
+
const key = lockKey(r.kind, r.identity);
|
|
124
|
+
if (r.status === 'failed')
|
|
125
|
+
continue;
|
|
126
|
+
if (r.action === 'noop') {
|
|
127
|
+
// Re-affirm: the server already matched the manifest. Record it so a
|
|
128
|
+
// later `drift` has a baseline even for resources apply never wrote.
|
|
129
|
+
if (r.spec || resources[key]) {
|
|
130
|
+
const spec = r.spec ?? resources[key].spec;
|
|
131
|
+
resources[key] = { kind: r.kind, identity: r.identity, id: r.id ?? resources[key]?.id, spec, spec_hash: specHash(spec), applied_at: resources[key]?.applied_at ?? at };
|
|
132
|
+
}
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (r.action === 'unsupported')
|
|
136
|
+
continue;
|
|
137
|
+
if (r.action === 'prune') {
|
|
138
|
+
delete resources[key];
|
|
139
|
+
actions.push({ kind: r.kind, identity: r.identity, action: 'prune', id: r.id, before: r.before ?? null, after: null });
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (r.action === 'create' || r.action === 'update') {
|
|
143
|
+
const spec = r.spec ?? {};
|
|
144
|
+
resources[key] = { kind: r.kind, identity: r.identity, id: r.id, spec, spec_hash: specHash(spec), applied_at: at };
|
|
145
|
+
actions.push({
|
|
146
|
+
kind: r.kind, identity: r.identity, action: r.action, id: r.id,
|
|
147
|
+
before: r.action === 'update' ? (r.before ?? null) : null, after: spec,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const run = { run_id: newRunId(now), at, cli_version: opts.cliVersion, kind: opts.kind ?? 'apply', actions };
|
|
152
|
+
if (opts.reverts)
|
|
153
|
+
run.reverts = opts.reverts;
|
|
154
|
+
const runs = [...lock.runs, run].slice(-exports.MAX_RUNS);
|
|
155
|
+
return { lock: { ...lock, applied_at: at, cli_version: opts.cliVersion, resources, runs }, run };
|
|
156
|
+
}
|
|
157
|
+
function classifyDrift(desired, lock, liveByKind) {
|
|
158
|
+
const out = [];
|
|
159
|
+
const declared = new Set();
|
|
160
|
+
for (const d of desired) {
|
|
161
|
+
const key = lockKey(d.kind, d.identity);
|
|
162
|
+
declared.add(key);
|
|
163
|
+
const live = liveByKind.get(d.kind);
|
|
164
|
+
const item = live?.items.find((i) => String(i[live.recon.identity]) === d.identity);
|
|
165
|
+
const locked = lock?.resources[key];
|
|
166
|
+
if (!item) {
|
|
167
|
+
out.push({ kind: d.kind, identity: d.identity, state: 'missing' });
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (!locked) {
|
|
171
|
+
out.push({ kind: d.kind, identity: d.identity, state: 'never_applied' });
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const fields = Array.from(new Set([...Object.keys(locked.spec), ...Object.keys(d.spec)]));
|
|
175
|
+
const live_diff = [];
|
|
176
|
+
const manifest_diff = [];
|
|
177
|
+
for (const f of fields) {
|
|
178
|
+
const lockV = locked.spec[f];
|
|
179
|
+
if (!(0, engine_1.valuesEqual)(lockV ?? null, item[f] ?? null))
|
|
180
|
+
live_diff.push({ field: f, lock: lockV ?? null, live: item[f] ?? null });
|
|
181
|
+
if (!(0, engine_1.valuesEqual)(lockV ?? null, d.spec[f] ?? null))
|
|
182
|
+
manifest_diff.push({ field: f, lock: lockV ?? null, manifest: d.spec[f] ?? null });
|
|
183
|
+
}
|
|
184
|
+
const state = live_diff.length && manifest_diff.length ? 'conflict'
|
|
185
|
+
: live_diff.length ? 'live_changed'
|
|
186
|
+
: manifest_diff.length ? 'manifest_changed'
|
|
187
|
+
: 'in_sync';
|
|
188
|
+
const e = { kind: d.kind, identity: d.identity, state };
|
|
189
|
+
if (live_diff.length)
|
|
190
|
+
e.live_diff = live_diff;
|
|
191
|
+
if (manifest_diff.length)
|
|
192
|
+
e.manifest_diff = manifest_diff;
|
|
193
|
+
out.push(e);
|
|
194
|
+
}
|
|
195
|
+
if (lock) {
|
|
196
|
+
for (const key of Object.keys(lock.resources)) {
|
|
197
|
+
if (!declared.has(key)) {
|
|
198
|
+
const r = lock.resources[key];
|
|
199
|
+
out.push({ kind: r.kind, identity: r.identity, state: 'removed_from_manifest' });
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return out;
|
|
204
|
+
}
|
|
205
|
+
/** States that mean production moved behind git's back. */
|
|
206
|
+
function isProductionDrift(e) {
|
|
207
|
+
return e.state === 'live_changed' || e.state === 'conflict';
|
|
208
|
+
}
|
|
209
|
+
// ── Rollback ─────────────────────────────────────────────────────────────────
|
|
210
|
+
/**
|
|
211
|
+
* Invert one run into a plan, most recent action first:
|
|
212
|
+
* update → update back to `before`
|
|
213
|
+
* create → prune the id it created
|
|
214
|
+
* prune → create from `before` (server-only fields stripped)
|
|
215
|
+
* Pure; the caller executes it with the ordinary engine.
|
|
216
|
+
*/
|
|
217
|
+
function buildRollbackPlan(run, reconFor) {
|
|
218
|
+
const actions = [];
|
|
219
|
+
const skipped = [];
|
|
220
|
+
for (const a of [...run.actions].reverse()) {
|
|
221
|
+
const recon = reconFor(a.kind);
|
|
222
|
+
if (!recon) {
|
|
223
|
+
skipped.push({ kind: a.kind, identity: a.identity, reason: 'unknown kind' });
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
if (a.action === 'update') {
|
|
227
|
+
if (!a.before) {
|
|
228
|
+
skipped.push({ kind: a.kind, identity: a.identity, reason: 'no pre-image recorded' });
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
if (recon.updateMethod === null) {
|
|
232
|
+
skipped.push({ kind: a.kind, identity: a.identity, reason: `${a.kind} is immutable` });
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
actions.push({ kind: a.kind, identity: a.identity, action: 'update', id: a.id, spec: a.before, changed: Object.keys(a.before), before: a.after ?? undefined });
|
|
236
|
+
}
|
|
237
|
+
else if (a.action === 'create') {
|
|
238
|
+
if (recon.prunable === false || recon.singleton) {
|
|
239
|
+
skipped.push({ kind: a.kind, identity: a.identity, reason: `${a.kind} is never deleted by apply` });
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (a.id === undefined || a.id === null) {
|
|
243
|
+
skipped.push({ kind: a.kind, identity: a.identity, reason: 'created id was not recorded' });
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
actions.push({ kind: a.kind, identity: a.identity, action: 'prune', id: a.id, before: a.after ?? undefined });
|
|
247
|
+
}
|
|
248
|
+
else if (a.action === 'prune') {
|
|
249
|
+
if (!a.before) {
|
|
250
|
+
skipped.push({ kind: a.kind, identity: a.identity, reason: 'no pre-image recorded' });
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
if (recon.create === null) {
|
|
254
|
+
skipped.push({ kind: a.kind, identity: a.identity, reason: `${a.kind} cannot be created by apply` });
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
actions.push({ kind: a.kind, identity: a.identity, action: 'create', spec: shapeForExport(recon, a.before) });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return { actions, skipped };
|
|
261
|
+
}
|
|
262
|
+
// ── Export ───────────────────────────────────────────────────────────────────
|
|
263
|
+
/** The manifest-worthy view of one live item: allow-listed fields, or everything minus read-only. */
|
|
264
|
+
function shapeForExport(recon, item) {
|
|
265
|
+
const fields = recon.exportFields ?? recon.managedFields;
|
|
266
|
+
const out = {};
|
|
267
|
+
if (!recon.singleton)
|
|
268
|
+
out[recon.identity] = item[recon.identity];
|
|
269
|
+
if (fields) {
|
|
270
|
+
for (const f of fields)
|
|
271
|
+
if (item[f] !== undefined)
|
|
272
|
+
out[f] = item[f];
|
|
273
|
+
return out;
|
|
274
|
+
}
|
|
275
|
+
for (const [k, v] of Object.entries(item)) {
|
|
276
|
+
if (registry_1.READ_ONLY_FIELDS.has(k) || k.endsWith('_at'))
|
|
277
|
+
continue;
|
|
278
|
+
out[k] = v;
|
|
279
|
+
}
|
|
280
|
+
return out;
|
|
281
|
+
}
|
|
282
|
+
function toManifestYaml(docs, yamlDump) {
|
|
283
|
+
return docs.map((d) => yamlDump({ kind: d.kind, ...d.spec }).trimEnd()).join('\n---\n') + '\n';
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=lock.js.map
|
|
@@ -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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-arg.d.ts","sourceRoot":"","sources":["../../src/lib/json-arg.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,CAiBvE"}
|