@bilig/workbook 0.42.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/LICENSE +1 -0
- package/README.md +346 -0
- package/dist/check.d.ts +26 -0
- package/dist/check.js +158 -0
- package/dist/check.js.map +1 -0
- package/dist/describe.d.ts +153 -0
- package/dist/describe.js +210 -0
- package/dist/describe.js.map +1 -0
- package/dist/find.d.ts +99 -0
- package/dist/find.js +353 -0
- package/dist/find.js.map +1 -0
- package/dist/formula.d.ts +25 -0
- package/dist/formula.js +135 -0
- package/dist/formula.js.map +1 -0
- package/dist/guards.d.ts +5 -0
- package/dist/guards.js +659 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/input.d.ts +22 -0
- package/dist/input.js +231 -0
- package/dist/input.js.map +1 -0
- package/dist/model.d.ts +116 -0
- package/dist/model.js +331 -0
- package/dist/model.js.map +1 -0
- package/dist/ops.d.ts +283 -0
- package/dist/ops.js +2 -0
- package/dist/ops.js.map +1 -0
- package/dist/readback.d.ts +35 -0
- package/dist/readback.js +232 -0
- package/dist/readback.js.map +1 -0
- package/dist/requirements.d.ts +34 -0
- package/dist/requirements.js +223 -0
- package/dist/requirements.js.map +1 -0
- package/dist/result.d.ts +63 -0
- package/dist/result.js +39 -0
- package/dist/result.js.map +1 -0
- package/dist/run.d.ts +21 -0
- package/dist/run.js +514 -0
- package/dist/run.js.map +1 -0
- package/dist/verify.d.ts +33 -0
- package/dist/verify.js +439 -0
- package/dist/verify.js.map +1 -0
- package/package.json +52 -0
package/dist/run.js
ADDED
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
import { isLiteralInput } from '@bilig/protocol';
|
|
2
|
+
import { isWorkbookRef } from './find.js';
|
|
3
|
+
import { isWorkbookOp } from './guards.js';
|
|
4
|
+
import { planWorkbookAction } from './model.js';
|
|
5
|
+
import { verifyWorkbookReadbacks } from './readback.js';
|
|
6
|
+
import { isWorkbookRunErrorCode, } from './result.js';
|
|
7
|
+
import { verifyPlan } from './verify.js';
|
|
8
|
+
function errorMessage(error) {
|
|
9
|
+
return error instanceof Error ? error.message : String(error);
|
|
10
|
+
}
|
|
11
|
+
function runError(code, message) {
|
|
12
|
+
return {
|
|
13
|
+
code,
|
|
14
|
+
message,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function runtimeResultError(message, path = 'runtime') {
|
|
18
|
+
return {
|
|
19
|
+
code: 'invalid_runtime_result',
|
|
20
|
+
message,
|
|
21
|
+
path,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function planIssueError(issue) {
|
|
25
|
+
return {
|
|
26
|
+
code: issue.code,
|
|
27
|
+
message: issue.message,
|
|
28
|
+
path: issue.path,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function readbackIssueError(issue) {
|
|
32
|
+
return {
|
|
33
|
+
code: issue.code,
|
|
34
|
+
message: issue.message,
|
|
35
|
+
...(issue.path !== undefined ? { path: issue.path } : {}),
|
|
36
|
+
...(issue.target !== undefined ? { target: issue.target } : {}),
|
|
37
|
+
check: issue.check,
|
|
38
|
+
...(issue.expected !== undefined ? { expected: issue.expected } : {}),
|
|
39
|
+
...(issue.actual !== undefined ? { actual: issue.actual } : {}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function appliedSummary(preview) {
|
|
43
|
+
if (preview === undefined) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
opCount: preview.materializedOps.length,
|
|
48
|
+
ops: preview.materializedOps,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function readbackTargets(checks) {
|
|
52
|
+
const targets = [];
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
checks.forEach((check) => {
|
|
55
|
+
if (check.expectation === undefined || check.target === undefined) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const key = `${check.target.kind}:${check.target.id}`;
|
|
59
|
+
if (seen.has(key)) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
seen.add(key);
|
|
63
|
+
targets.push(check.target);
|
|
64
|
+
});
|
|
65
|
+
return targets;
|
|
66
|
+
}
|
|
67
|
+
function failedFromPlanIssues(plan) {
|
|
68
|
+
const verification = verifyPlan(plan);
|
|
69
|
+
if (verification.status === 'valid') {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
status: 'failed',
|
|
74
|
+
errors: verification.issues.map(planIssueError),
|
|
75
|
+
checks: plan.checks,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function failedApplyResult(plan, result) {
|
|
79
|
+
return {
|
|
80
|
+
status: 'failed',
|
|
81
|
+
errors: result.errors !== undefined && result.errors.length > 0
|
|
82
|
+
? result.errors
|
|
83
|
+
: [runError('apply_failed', `Workbook action ${plan.modelName}.${plan.actionName} failed to apply`)],
|
|
84
|
+
checks: plan.checks,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function checkLabel(check) {
|
|
88
|
+
return check.target?.label ?? check.kind;
|
|
89
|
+
}
|
|
90
|
+
function canonicalJson(value) {
|
|
91
|
+
return JSON.stringify(canonicalValue(value));
|
|
92
|
+
}
|
|
93
|
+
function canonicalValue(value) {
|
|
94
|
+
if (Array.isArray(value)) {
|
|
95
|
+
return value.map(canonicalValue);
|
|
96
|
+
}
|
|
97
|
+
if (typeof value === 'object' && value !== null) {
|
|
98
|
+
return Object.fromEntries(Object.entries(value)
|
|
99
|
+
.toSorted(([left], [right]) => left.localeCompare(right))
|
|
100
|
+
.map(([key, entry]) => [key, canonicalValue(entry)]));
|
|
101
|
+
}
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
function checkContract(check) {
|
|
105
|
+
return {
|
|
106
|
+
kind: check.kind,
|
|
107
|
+
...(check.target !== undefined ? { target: check.target } : {}),
|
|
108
|
+
...(check.refs !== undefined ? { refs: check.refs } : {}),
|
|
109
|
+
message: check.message,
|
|
110
|
+
...(check.expectation !== undefined ? { expectation: check.expectation } : {}),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function cloneCheck(check) {
|
|
114
|
+
return {
|
|
115
|
+
status: check.status,
|
|
116
|
+
kind: check.kind,
|
|
117
|
+
...(check.target !== undefined ? { target: check.target } : {}),
|
|
118
|
+
...(check.refs !== undefined ? { refs: check.refs } : {}),
|
|
119
|
+
message: check.message,
|
|
120
|
+
...(check.expectation !== undefined ? { expectation: check.expectation } : {}),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function checkContractMatches(expectedContract, actual) {
|
|
124
|
+
return expectedContract === canonicalJson(checkContract(actual));
|
|
125
|
+
}
|
|
126
|
+
function isCheckStatus(value) {
|
|
127
|
+
return value === 'planned' || value === 'passed' || value === 'failed';
|
|
128
|
+
}
|
|
129
|
+
function isRecord(value) {
|
|
130
|
+
return typeof value === 'object' && value !== null;
|
|
131
|
+
}
|
|
132
|
+
function isStringOrNull(value) {
|
|
133
|
+
return typeof value === 'string' || value === null;
|
|
134
|
+
}
|
|
135
|
+
function isRectangularMatrix(value) {
|
|
136
|
+
const width = value[0]?.length;
|
|
137
|
+
return value.every((row) => row.length === width);
|
|
138
|
+
}
|
|
139
|
+
function isLiteralMatrix(value) {
|
|
140
|
+
return (Array.isArray(value) &&
|
|
141
|
+
value.every((row) => Array.isArray(row) && row.every((entry) => isLiteralInput(entry))) &&
|
|
142
|
+
isRectangularMatrix(value));
|
|
143
|
+
}
|
|
144
|
+
function isFormulaMatrix(value) {
|
|
145
|
+
return Array.isArray(value) && value.every((row) => Array.isArray(row) && row.every(isStringOrNull)) && isRectangularMatrix(value);
|
|
146
|
+
}
|
|
147
|
+
function normalizedCellReadback(value) {
|
|
148
|
+
if (!isRecord(value) || typeof value['sheetName'] !== 'string' || typeof value['address'] !== 'string') {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
const cell = {
|
|
152
|
+
sheetName: value['sheetName'],
|
|
153
|
+
address: value['address'],
|
|
154
|
+
};
|
|
155
|
+
if (value['value'] !== undefined) {
|
|
156
|
+
if (!isLiteralInput(value['value'])) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
cell.value = value['value'];
|
|
160
|
+
}
|
|
161
|
+
if (value['formula'] !== undefined) {
|
|
162
|
+
if (!isStringOrNull(value['formula'])) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
cell.formula = value['formula'];
|
|
166
|
+
}
|
|
167
|
+
return cell;
|
|
168
|
+
}
|
|
169
|
+
function isPreviewRequirement(value) {
|
|
170
|
+
return (isRecord(value) &&
|
|
171
|
+
(value['kind'] === 'apply' || value['kind'] === 'read' || value['kind'] === 'verify') &&
|
|
172
|
+
typeof value['capability'] === 'string' &&
|
|
173
|
+
typeof value['path'] === 'string' &&
|
|
174
|
+
typeof value['message'] === 'string');
|
|
175
|
+
}
|
|
176
|
+
function isRunError(value) {
|
|
177
|
+
return isRecord(value) && isWorkbookRunErrorCode(value['code']) && typeof value['message'] === 'string';
|
|
178
|
+
}
|
|
179
|
+
function validatePreviewResult(value, plan) {
|
|
180
|
+
if (!isRecord(value)) {
|
|
181
|
+
return runtimeResultError('Runtime preview must return an object', 'preview');
|
|
182
|
+
}
|
|
183
|
+
if (value['modelName'] !== plan.modelName) {
|
|
184
|
+
return runtimeResultError(`Runtime preview returned modelName ${String(value['modelName'])} for ${plan.modelName}`, 'preview.modelName');
|
|
185
|
+
}
|
|
186
|
+
if (value['actionName'] !== plan.actionName) {
|
|
187
|
+
return runtimeResultError(`Runtime preview returned actionName ${String(value['actionName'])} for ${plan.actionName}`, 'preview.actionName');
|
|
188
|
+
}
|
|
189
|
+
if (!Array.isArray(value['requirements'])) {
|
|
190
|
+
return runtimeResultError('Runtime preview requirements must be an array', 'preview.requirements');
|
|
191
|
+
}
|
|
192
|
+
const requirements = value['requirements'];
|
|
193
|
+
if (!requirements.every(isPreviewRequirement)) {
|
|
194
|
+
return runtimeResultError('Runtime preview requirements must be runtime requirement objects', 'preview.requirements');
|
|
195
|
+
}
|
|
196
|
+
const materializedOps = value['materializedOps'];
|
|
197
|
+
if (!Array.isArray(materializedOps) || !materializedOps.every(isWorkbookOp)) {
|
|
198
|
+
return runtimeResultError('Runtime preview materializedOps must be a WorkbookOp array', 'preview.materializedOps');
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
modelName: plan.modelName,
|
|
202
|
+
actionName: plan.actionName,
|
|
203
|
+
requirements,
|
|
204
|
+
materializedOps,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function validateApplyResult(value) {
|
|
208
|
+
if (!isRecord(value)) {
|
|
209
|
+
return runtimeResultError('Runtime apply must return an object', 'apply');
|
|
210
|
+
}
|
|
211
|
+
if (value['status'] !== 'applied' && value['status'] !== 'failed') {
|
|
212
|
+
return runtimeResultError('Runtime apply status must be applied or failed', 'apply.status');
|
|
213
|
+
}
|
|
214
|
+
const errors = value['errors'];
|
|
215
|
+
if (errors !== undefined && (!Array.isArray(errors) || !errors.every(isRunError))) {
|
|
216
|
+
return runtimeResultError('Runtime apply errors must be WorkbookRunError objects', 'apply.errors');
|
|
217
|
+
}
|
|
218
|
+
const undo = value['undo'];
|
|
219
|
+
let undoRef;
|
|
220
|
+
if (undo !== undefined) {
|
|
221
|
+
if (!isRecord(undo) || typeof undo['id'] !== 'string') {
|
|
222
|
+
return runtimeResultError('Runtime apply undo must include an id', 'apply.undo');
|
|
223
|
+
}
|
|
224
|
+
if (undo['ops'] !== undefined && (!Array.isArray(undo['ops']) || !undo['ops'].every(isWorkbookOp))) {
|
|
225
|
+
return runtimeResultError('Runtime apply undo ops must be a WorkbookOp array', 'apply.undo.ops');
|
|
226
|
+
}
|
|
227
|
+
undoRef = {
|
|
228
|
+
id: undo['id'],
|
|
229
|
+
...(undo['ops'] !== undefined ? { ops: undo['ops'] } : {}),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
status: value['status'],
|
|
234
|
+
...(errors !== undefined ? { errors } : {}),
|
|
235
|
+
...(undoRef !== undefined ? { undo: undoRef } : {}),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function validateReadbacks(value) {
|
|
239
|
+
if (!Array.isArray(value)) {
|
|
240
|
+
return runtimeResultError('Runtime read must return a readback array', 'read');
|
|
241
|
+
}
|
|
242
|
+
const readbacks = [];
|
|
243
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
244
|
+
const entry = value[index];
|
|
245
|
+
const path = `read[${index.toString()}]`;
|
|
246
|
+
if (!isRecord(entry)) {
|
|
247
|
+
return runtimeResultError('Runtime readback must be an object', path);
|
|
248
|
+
}
|
|
249
|
+
if (!isWorkbookRef(entry['target'])) {
|
|
250
|
+
return runtimeResultError('Runtime readback target must be a WorkbookRef', `${path}.target`);
|
|
251
|
+
}
|
|
252
|
+
const readback = {
|
|
253
|
+
target: entry['target'],
|
|
254
|
+
};
|
|
255
|
+
if (entry['value'] !== undefined && !isLiteralInput(entry['value'])) {
|
|
256
|
+
return runtimeResultError('Runtime readback value must be a literal input', `${path}.value`);
|
|
257
|
+
}
|
|
258
|
+
if (entry['value'] !== undefined) {
|
|
259
|
+
readback.value = entry['value'];
|
|
260
|
+
}
|
|
261
|
+
if (entry['formula'] !== undefined && !isStringOrNull(entry['formula'])) {
|
|
262
|
+
return runtimeResultError('Runtime readback formula must be a string or null', `${path}.formula`);
|
|
263
|
+
}
|
|
264
|
+
if (entry['formula'] !== undefined) {
|
|
265
|
+
readback.formula = entry['formula'];
|
|
266
|
+
}
|
|
267
|
+
if (entry['values'] !== undefined && !isLiteralMatrix(entry['values'])) {
|
|
268
|
+
return runtimeResultError('Runtime readback values must be an array of literal rows', `${path}.values`);
|
|
269
|
+
}
|
|
270
|
+
if (entry['values'] !== undefined) {
|
|
271
|
+
readback.values = entry['values'];
|
|
272
|
+
}
|
|
273
|
+
if (entry['formulas'] !== undefined && !isFormulaMatrix(entry['formulas'])) {
|
|
274
|
+
return runtimeResultError('Runtime readback formulas must be an array of string/null rows', `${path}.formulas`);
|
|
275
|
+
}
|
|
276
|
+
if (entry['formulas'] !== undefined) {
|
|
277
|
+
readback.formulas = entry['formulas'];
|
|
278
|
+
}
|
|
279
|
+
if (entry['cells'] !== undefined) {
|
|
280
|
+
if (!Array.isArray(entry['cells'])) {
|
|
281
|
+
return runtimeResultError('Runtime readback cells must be cell readback objects', `${path}.cells`);
|
|
282
|
+
}
|
|
283
|
+
const cells = [];
|
|
284
|
+
for (let cellIndex = 0; cellIndex < entry['cells'].length; cellIndex += 1) {
|
|
285
|
+
const cell = normalizedCellReadback(entry['cells'][cellIndex]);
|
|
286
|
+
if (cell === null) {
|
|
287
|
+
return runtimeResultError('Runtime readback cells must be cell readback objects', `${path}.cells`);
|
|
288
|
+
}
|
|
289
|
+
cells.push(cell);
|
|
290
|
+
}
|
|
291
|
+
readback.cells = cells;
|
|
292
|
+
}
|
|
293
|
+
readbacks.push(readback);
|
|
294
|
+
}
|
|
295
|
+
return readbacks;
|
|
296
|
+
}
|
|
297
|
+
function isWorkbookCheckResult(value) {
|
|
298
|
+
return isRecord(value) && isCheckStatus(value['status']) && typeof value['kind'] === 'string' && typeof value['message'] === 'string';
|
|
299
|
+
}
|
|
300
|
+
function validateVerifiedChecks(originalContracts, originalKinds, verified) {
|
|
301
|
+
if (!Array.isArray(verified)) {
|
|
302
|
+
return {
|
|
303
|
+
status: 'invalid',
|
|
304
|
+
error: runError('invalid_check_verification', 'Check verifier did not return a check array'),
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
if (verified.length !== originalContracts.length) {
|
|
308
|
+
return {
|
|
309
|
+
status: 'invalid',
|
|
310
|
+
error: runError('invalid_check_verification', `Check verifier returned ${String(verified.length)} checks for ${String(originalContracts.length)} planned checks`),
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
const verifiedChecks = [];
|
|
314
|
+
for (let index = 0; index < originalContracts.length; index += 1) {
|
|
315
|
+
const expectedContract = originalContracts[index];
|
|
316
|
+
const expectedKind = originalKinds[index] ?? 'check';
|
|
317
|
+
const actual = verified[index];
|
|
318
|
+
if (expectedContract === undefined || !isRecord(actual)) {
|
|
319
|
+
return {
|
|
320
|
+
status: 'invalid',
|
|
321
|
+
error: runError('invalid_check_verification', `Check verifier returned an invalid check at index ${String(index)}`),
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
if (!isCheckStatus(actual['status'])) {
|
|
325
|
+
return {
|
|
326
|
+
status: 'invalid',
|
|
327
|
+
error: runError('invalid_check_verification', `Check verifier returned an invalid status at index ${String(index)}`),
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
if (!isWorkbookCheckResult(actual)) {
|
|
331
|
+
return {
|
|
332
|
+
status: 'invalid',
|
|
333
|
+
error: runError('invalid_check_verification', `Check verifier returned an invalid check at index ${String(index)}`),
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
if (!checkContractMatches(expectedContract, actual)) {
|
|
337
|
+
return {
|
|
338
|
+
status: 'invalid',
|
|
339
|
+
error: runError('invalid_check_verification', `Check verifier changed the check contract at index ${String(index)} for ${expectedKind}`),
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
verifiedChecks.push(actual);
|
|
343
|
+
}
|
|
344
|
+
return {
|
|
345
|
+
status: 'valid',
|
|
346
|
+
checks: verifiedChecks,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
async function verifyChecksWithAdapter(checks, plan, adapter) {
|
|
350
|
+
if (adapter.verifyChecks === undefined) {
|
|
351
|
+
return { checks, errors: [] };
|
|
352
|
+
}
|
|
353
|
+
const originalChecks = checks.map(cloneCheck);
|
|
354
|
+
const originalContracts = originalChecks.map((check) => canonicalJson(checkContract(check)));
|
|
355
|
+
const originalKinds = originalChecks.map((check) => check.kind);
|
|
356
|
+
const verifierInput = originalChecks.map(cloneCheck);
|
|
357
|
+
let verified;
|
|
358
|
+
try {
|
|
359
|
+
verified = await adapter.verifyChecks(verifierInput, plan);
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
return {
|
|
363
|
+
checks: originalChecks,
|
|
364
|
+
errors: [runError('check_verification_failed', errorMessage(error))],
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
const validation = validateVerifiedChecks(originalContracts, originalKinds, verified);
|
|
368
|
+
if (validation.status === 'invalid') {
|
|
369
|
+
return {
|
|
370
|
+
checks: originalChecks,
|
|
371
|
+
errors: [validation.error],
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
const verifiedChecks = validation.checks;
|
|
375
|
+
const failedChecks = verifiedChecks.filter((check) => check.status === 'failed');
|
|
376
|
+
if (failedChecks.length > 0) {
|
|
377
|
+
return {
|
|
378
|
+
checks: verifiedChecks,
|
|
379
|
+
errors: failedChecks.map((check) => runError('check_failed', `${check.target?.label ?? check.kind} failed check ${check.kind}: ${check.message}`)),
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
return { checks: verifiedChecks, errors: [] };
|
|
383
|
+
}
|
|
384
|
+
function unverifiedCheckErrors(checks) {
|
|
385
|
+
return checks
|
|
386
|
+
.filter((check) => check.status === 'planned')
|
|
387
|
+
.map((check) => runError('check_not_verified', `${checkLabel(check)} did not verify check ${check.kind}: ${check.message}`));
|
|
388
|
+
}
|
|
389
|
+
export async function runWorkbookPlan(plan, adapter) {
|
|
390
|
+
const invalidPlan = failedFromPlanIssues(plan);
|
|
391
|
+
if (invalidPlan !== null) {
|
|
392
|
+
return invalidPlan;
|
|
393
|
+
}
|
|
394
|
+
let preview;
|
|
395
|
+
if (adapter.preview !== undefined) {
|
|
396
|
+
try {
|
|
397
|
+
const previewResult = validatePreviewResult(await adapter.preview(plan), plan);
|
|
398
|
+
if ('code' in previewResult) {
|
|
399
|
+
return {
|
|
400
|
+
status: 'failed',
|
|
401
|
+
errors: [previewResult],
|
|
402
|
+
checks: plan.checks,
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
preview = previewResult;
|
|
406
|
+
}
|
|
407
|
+
catch (error) {
|
|
408
|
+
return {
|
|
409
|
+
status: 'failed',
|
|
410
|
+
errors: [runError('runtime_rejected', errorMessage(error))],
|
|
411
|
+
checks: plan.checks,
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
let applyResult;
|
|
416
|
+
try {
|
|
417
|
+
const rawApplyResult = validateApplyResult(await adapter.apply(plan));
|
|
418
|
+
if ('code' in rawApplyResult) {
|
|
419
|
+
return {
|
|
420
|
+
status: 'failed',
|
|
421
|
+
errors: [rawApplyResult],
|
|
422
|
+
checks: plan.checks,
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
applyResult = rawApplyResult;
|
|
426
|
+
}
|
|
427
|
+
catch (error) {
|
|
428
|
+
return {
|
|
429
|
+
status: 'failed',
|
|
430
|
+
errors: [runError('apply_failed', errorMessage(error))],
|
|
431
|
+
checks: plan.checks,
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
if (applyResult.status === 'failed') {
|
|
435
|
+
return failedApplyResult(plan, applyResult);
|
|
436
|
+
}
|
|
437
|
+
let checks = plan.checks;
|
|
438
|
+
const targets = readbackTargets(checks);
|
|
439
|
+
if (targets.length > 0) {
|
|
440
|
+
if (adapter.read === undefined) {
|
|
441
|
+
const readbackVerification = verifyWorkbookReadbacks(checks, []);
|
|
442
|
+
return {
|
|
443
|
+
status: 'failed',
|
|
444
|
+
errors: readbackVerification.issues.map(readbackIssueError),
|
|
445
|
+
checks: readbackVerification.checks,
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
let readbacks;
|
|
449
|
+
try {
|
|
450
|
+
const rawReadbacks = validateReadbacks(await adapter.read(targets, plan));
|
|
451
|
+
if ('code' in rawReadbacks) {
|
|
452
|
+
return {
|
|
453
|
+
status: 'failed',
|
|
454
|
+
errors: [rawReadbacks],
|
|
455
|
+
checks,
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
readbacks = rawReadbacks;
|
|
459
|
+
}
|
|
460
|
+
catch (error) {
|
|
461
|
+
return {
|
|
462
|
+
status: 'failed',
|
|
463
|
+
errors: [runError('readback_failed', errorMessage(error))],
|
|
464
|
+
checks,
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
const readbackVerification = verifyWorkbookReadbacks(checks, readbacks);
|
|
468
|
+
checks = readbackVerification.checks;
|
|
469
|
+
if (readbackVerification.status === 'failed') {
|
|
470
|
+
return {
|
|
471
|
+
status: 'failed',
|
|
472
|
+
errors: readbackVerification.issues.map(readbackIssueError),
|
|
473
|
+
checks,
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
const checkVerification = await verifyChecksWithAdapter(checks, plan, adapter);
|
|
478
|
+
checks = checkVerification.checks;
|
|
479
|
+
if (checkVerification.errors.length > 0) {
|
|
480
|
+
return {
|
|
481
|
+
status: 'failed',
|
|
482
|
+
errors: checkVerification.errors,
|
|
483
|
+
checks,
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
const unverifiedErrors = unverifiedCheckErrors(checks);
|
|
487
|
+
if (unverifiedErrors.length > 0) {
|
|
488
|
+
return {
|
|
489
|
+
status: 'failed',
|
|
490
|
+
errors: unverifiedErrors,
|
|
491
|
+
checks,
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
const applied = appliedSummary(preview);
|
|
495
|
+
return {
|
|
496
|
+
status: 'done',
|
|
497
|
+
changed: plan.changed,
|
|
498
|
+
checks,
|
|
499
|
+
...(applyResult.undo !== undefined ? { undo: applyResult.undo } : {}),
|
|
500
|
+
...(applied !== undefined ? { applied } : {}),
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
export async function runWorkbookAction(model, actionName, adapter, input) {
|
|
504
|
+
const result = planWorkbookAction(model, actionName, input);
|
|
505
|
+
if (result.status === 'failed') {
|
|
506
|
+
return {
|
|
507
|
+
status: 'failed',
|
|
508
|
+
errors: result.errors,
|
|
509
|
+
checks: result.checks,
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
return runWorkbookPlan(result.plan, adapter);
|
|
513
|
+
}
|
|
514
|
+
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/dist/verify.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type WorkbookActionPlanResultDescription, type WorkbookRefDescription } from './describe.js';
|
|
2
|
+
import { type WorkbookActionMap, type WorkbookActionPlan, type WorkbookModel } from './model.js';
|
|
3
|
+
import { type WorkbookActionInput } from './input.js';
|
|
4
|
+
export type WorkbookPlanIssueCode = 'invalid_action_input' | 'duplicate_ref' | 'command_target_not_resolved' | 'formula_input_not_resolved' | 'invalid_formula' | 'change_target_not_resolved' | 'check_status_not_planned' | 'check_target_not_resolved' | 'check_ref_not_resolved' | 'check_expectation_input_not_resolved' | 'invalid_check_expectation_formula' | 'invalid_workbook_op' | 'op_target_mismatch' | 'missing_concrete_op' | 'missing_workbook_op';
|
|
5
|
+
export declare const workbookPlanIssueCodes: readonly ("invalid_action_input" | "duplicate_ref" | "command_target_not_resolved" | "formula_input_not_resolved" | "invalid_formula" | "change_target_not_resolved" | "check_status_not_planned" | "check_target_not_resolved" | "check_ref_not_resolved" | "check_expectation_input_not_resolved" | "invalid_check_expectation_formula" | "invalid_workbook_op" | "op_target_mismatch" | "missing_concrete_op" | "missing_workbook_op")[];
|
|
6
|
+
export declare function isWorkbookPlanIssueCode(value: unknown): value is WorkbookPlanIssueCode;
|
|
7
|
+
export interface WorkbookPlanIssue {
|
|
8
|
+
readonly code: WorkbookPlanIssueCode;
|
|
9
|
+
readonly message: string;
|
|
10
|
+
readonly path: string;
|
|
11
|
+
readonly ref?: WorkbookRefDescription;
|
|
12
|
+
}
|
|
13
|
+
export interface WorkbookPlanVerification {
|
|
14
|
+
readonly status: 'valid' | 'invalid';
|
|
15
|
+
readonly modelName: string;
|
|
16
|
+
readonly actionName: string;
|
|
17
|
+
readonly issues: readonly WorkbookPlanIssue[];
|
|
18
|
+
}
|
|
19
|
+
export interface WorkbookModelActionVerification {
|
|
20
|
+
readonly actionName: string;
|
|
21
|
+
readonly planning: WorkbookActionPlanResultDescription;
|
|
22
|
+
readonly verification?: WorkbookPlanVerification;
|
|
23
|
+
}
|
|
24
|
+
export interface WorkbookModelVerification {
|
|
25
|
+
readonly status: 'valid' | 'invalid';
|
|
26
|
+
readonly modelName: string;
|
|
27
|
+
readonly actions: readonly WorkbookModelActionVerification[];
|
|
28
|
+
}
|
|
29
|
+
export interface WorkbookModelVerificationOptions {
|
|
30
|
+
readonly inputs?: Partial<Record<string, WorkbookActionInput>>;
|
|
31
|
+
}
|
|
32
|
+
export declare function verifyPlan<Refs>(plan: WorkbookActionPlan<Refs>): WorkbookPlanVerification;
|
|
33
|
+
export declare function verifyModel<Refs, Actions extends WorkbookActionMap<Refs>>(model: WorkbookModel<Refs, Actions>, options?: WorkbookModelVerificationOptions): WorkbookModelVerification;
|