@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/dist/verify.js ADDED
@@ -0,0 +1,439 @@
1
+ import { parseFormula } from '@bilig/formula';
2
+ import { describePlanResult, describeRef } from './describe.js';
3
+ import { isWorkbookOp } from './guards.js';
4
+ import { inspectModel, planWorkbookAction, } from './model.js';
5
+ import { getOwnActionInput, hasOwnActionInput, normalizeWorkbookActionInput } from './input.js';
6
+ export const workbookPlanIssueCodes = Object.freeze([
7
+ 'invalid_action_input',
8
+ 'duplicate_ref',
9
+ 'command_target_not_resolved',
10
+ 'formula_input_not_resolved',
11
+ 'invalid_formula',
12
+ 'change_target_not_resolved',
13
+ 'check_status_not_planned',
14
+ 'check_target_not_resolved',
15
+ 'check_ref_not_resolved',
16
+ 'check_expectation_input_not_resolved',
17
+ 'invalid_check_expectation_formula',
18
+ 'invalid_workbook_op',
19
+ 'op_target_mismatch',
20
+ 'missing_concrete_op',
21
+ 'missing_workbook_op',
22
+ ]);
23
+ export function isWorkbookPlanIssueCode(value) {
24
+ return typeof value === 'string' && workbookPlanIssueCodes.some((code) => code === value);
25
+ }
26
+ function refKey(ref) {
27
+ return `${ref.kind}:${ref.id}`;
28
+ }
29
+ function describeProblemRef(ref) {
30
+ return describeRef(ref);
31
+ }
32
+ function issue(input) {
33
+ return {
34
+ code: input.code,
35
+ message: input.message,
36
+ path: input.path,
37
+ ...(input.ref !== undefined ? { ref: describeProblemRef(input.ref) } : {}),
38
+ };
39
+ }
40
+ function concreteSingleCell(target) {
41
+ if (target.kind !== 'range') {
42
+ return null;
43
+ }
44
+ const range = target.range;
45
+ return range.startAddress === range.endAddress ? { sheetName: range.sheetName, address: range.startAddress } : null;
46
+ }
47
+ function expectedConcreteOp(command) {
48
+ if (command.kind === 'op') {
49
+ return null;
50
+ }
51
+ const target = concreteSingleCell(command.target);
52
+ if (target === null) {
53
+ return null;
54
+ }
55
+ switch (command.kind) {
56
+ case 'writeFormula':
57
+ return {
58
+ kind: 'setCellFormula',
59
+ sheetName: target.sheetName,
60
+ address: target.address,
61
+ formula: command.formula,
62
+ };
63
+ case 'writeValue':
64
+ return {
65
+ kind: 'setCellValue',
66
+ sheetName: target.sheetName,
67
+ address: target.address,
68
+ value: command.value,
69
+ };
70
+ case 'clear':
71
+ return {
72
+ kind: 'clearCell',
73
+ sheetName: target.sheetName,
74
+ address: target.address,
75
+ };
76
+ case 'format':
77
+ if (command.numberFormat === undefined) {
78
+ return null;
79
+ }
80
+ return {
81
+ kind: 'setCellFormat',
82
+ sheetName: target.sheetName,
83
+ address: target.address,
84
+ format: command.numberFormat,
85
+ };
86
+ }
87
+ }
88
+ function commandTarget(command) {
89
+ return command.target;
90
+ }
91
+ function opMatches(expected, actual) {
92
+ if (expected.kind !== actual.kind) {
93
+ return false;
94
+ }
95
+ switch (expected.kind) {
96
+ case 'setCellFormula':
97
+ return (actual.kind === 'setCellFormula' &&
98
+ actual.sheetName === expected.sheetName &&
99
+ actual.address === expected.address &&
100
+ actual.formula === expected.formula);
101
+ case 'setCellValue':
102
+ return (actual.kind === 'setCellValue' &&
103
+ actual.sheetName === expected.sheetName &&
104
+ actual.address === expected.address &&
105
+ actual.value === expected.value);
106
+ case 'setCellFormat':
107
+ return (actual.kind === 'setCellFormat' &&
108
+ actual.sheetName === expected.sheetName &&
109
+ actual.address === expected.address &&
110
+ actual.format === expected.format);
111
+ case 'clearCell':
112
+ return actual.kind === 'clearCell' && actual.sheetName === expected.sheetName && actual.address === expected.address;
113
+ default:
114
+ return false;
115
+ }
116
+ }
117
+ function canonicalJson(value) {
118
+ return JSON.stringify(canonicalValue(value));
119
+ }
120
+ function canonicalValue(value) {
121
+ if (Array.isArray(value)) {
122
+ return value.map(canonicalValue);
123
+ }
124
+ if (typeof value === 'object' && value !== null) {
125
+ return Object.fromEntries(Object.entries(value)
126
+ .toSorted(([left], [right]) => left.localeCompare(right))
127
+ .map(([key, entry]) => [key, canonicalValue(entry)]));
128
+ }
129
+ return value;
130
+ }
131
+ function workbookOpMatches(expected, actual) {
132
+ return canonicalJson(actual) === canonicalJson(expected);
133
+ }
134
+ function singleCellRange(sheetName, address) {
135
+ return {
136
+ sheetName,
137
+ startAddress: address,
138
+ endAddress: address,
139
+ };
140
+ }
141
+ function tableRange(table) {
142
+ return {
143
+ sheetName: table.sheetName,
144
+ startAddress: table.startAddress,
145
+ endAddress: table.endAddress,
146
+ };
147
+ }
148
+ function rangesEqual(left, right) {
149
+ return left.sheetName === right.sheetName && left.startAddress === right.startAddress && left.endAddress === right.endAddress;
150
+ }
151
+ function opTargetRange(op) {
152
+ if (op.kind === 'setCellValue' ||
153
+ op.kind === 'setCellFormula' ||
154
+ op.kind === 'setCellFormat' ||
155
+ op.kind === 'clearCell' ||
156
+ op.kind === 'deleteCommentThread' ||
157
+ op.kind === 'deleteNote' ||
158
+ op.kind === 'upsertCommentThread' ||
159
+ op.kind === 'upsertNote' ||
160
+ op.kind === 'upsertSpillRange' ||
161
+ op.kind === 'deleteSpillRange' ||
162
+ op.kind === 'upsertPivotTable' ||
163
+ op.kind === 'deletePivotTable' ||
164
+ op.kind === 'upsertChart' ||
165
+ op.kind === 'upsertImage' ||
166
+ op.kind === 'upsertShape') {
167
+ if (op.kind === 'upsertCommentThread') {
168
+ return singleCellRange(op.thread.sheetName, op.thread.address);
169
+ }
170
+ if (op.kind === 'upsertNote') {
171
+ return singleCellRange(op.note.sheetName, op.note.address);
172
+ }
173
+ if (op.kind === 'upsertChart') {
174
+ return singleCellRange(op.chart.sheetName, op.chart.address);
175
+ }
176
+ if (op.kind === 'upsertImage') {
177
+ return singleCellRange(op.image.sheetName, op.image.address);
178
+ }
179
+ if (op.kind === 'upsertShape') {
180
+ return singleCellRange(op.shape.sheetName, op.shape.address);
181
+ }
182
+ return singleCellRange(op.sheetName, op.address);
183
+ }
184
+ if (op.kind === 'mergeCells' || op.kind === 'unmergeCells' || op.kind === 'setStyleRange' || op.kind === 'setFormatRange') {
185
+ return op.range;
186
+ }
187
+ if (op.kind === 'setFilter' ||
188
+ op.kind === 'clearFilter' ||
189
+ op.kind === 'setSort' ||
190
+ op.kind === 'clearSort' ||
191
+ op.kind === 'clearDataValidation') {
192
+ return {
193
+ ...op.range,
194
+ sheetName: op.sheetName,
195
+ };
196
+ }
197
+ if (op.kind === 'setDataValidation') {
198
+ return op.validation.range;
199
+ }
200
+ if (op.kind === 'upsertConditionalFormat') {
201
+ return op.format.range;
202
+ }
203
+ if (op.kind === 'upsertRangeProtection') {
204
+ return op.protection.range;
205
+ }
206
+ if (op.kind === 'upsertTable') {
207
+ return tableRange(op.table);
208
+ }
209
+ return null;
210
+ }
211
+ function opTargetMismatch(op, target) {
212
+ if (target === undefined) {
213
+ return null;
214
+ }
215
+ const range = opTargetRange(op);
216
+ if (range === null) {
217
+ return null;
218
+ }
219
+ if (target.kind !== 'range') {
220
+ return `Low-level workbook op ${op.kind} targets ${range.sheetName}!${range.startAddress}:${range.endAddress}, but ${target.label} is not a range ref`;
221
+ }
222
+ if (!rangesEqual(range, target.range)) {
223
+ return `Low-level workbook op ${op.kind} targets ${range.sheetName}!${range.startAddress}:${range.endAddress}, but command target is ${target.label}`;
224
+ }
225
+ return null;
226
+ }
227
+ function errorMessage(error) {
228
+ return error instanceof Error ? error.message : String(error);
229
+ }
230
+ export function verifyPlan(plan) {
231
+ const issues = [];
232
+ const knownRefs = new Set();
233
+ if (hasOwnActionInput(plan)) {
234
+ try {
235
+ normalizeWorkbookActionInput(getOwnActionInput(plan));
236
+ }
237
+ catch (error) {
238
+ issues.push({
239
+ code: 'invalid_action_input',
240
+ path: 'input',
241
+ message: errorMessage(error),
242
+ });
243
+ }
244
+ }
245
+ plan.refsUsed.forEach((ref, index) => {
246
+ const key = refKey(ref);
247
+ if (knownRefs.has(key)) {
248
+ issues.push(issue({
249
+ code: 'duplicate_ref',
250
+ path: `refsUsed[${index}]`,
251
+ ref,
252
+ message: `${ref.label} appears more than once in refsUsed`,
253
+ }));
254
+ return;
255
+ }
256
+ knownRefs.add(key);
257
+ });
258
+ function hasRef(ref) {
259
+ return knownRefs.has(refKey(ref));
260
+ }
261
+ plan.commands.forEach((command, commandIndex) => {
262
+ const target = commandTarget(command);
263
+ if (target !== undefined && !hasRef(target)) {
264
+ issues.push(issue({
265
+ code: 'command_target_not_resolved',
266
+ path: `commands[${commandIndex}].target`,
267
+ ref: target,
268
+ message: `${target.label} is used as a command target but is missing from refsUsed`,
269
+ }));
270
+ }
271
+ if (command.kind === 'writeFormula') {
272
+ try {
273
+ parseFormula(command.formula);
274
+ }
275
+ catch (error) {
276
+ issues.push({
277
+ code: 'invalid_formula',
278
+ path: `commands[${commandIndex}].formula`,
279
+ message: `Formula for ${command.target.label} is not parseable: ${errorMessage(error)}`,
280
+ });
281
+ }
282
+ command.inputs.forEach((input, inputIndex) => {
283
+ if (!hasRef(input)) {
284
+ issues.push(issue({
285
+ code: 'formula_input_not_resolved',
286
+ path: `commands[${commandIndex}].inputs[${inputIndex}]`,
287
+ ref: input,
288
+ message: `${input.label} is used as a formula input but is missing from refsUsed`,
289
+ }));
290
+ }
291
+ });
292
+ }
293
+ if (command.kind === 'op') {
294
+ if (!isWorkbookOp(command.op)) {
295
+ issues.push({
296
+ code: 'invalid_workbook_op',
297
+ path: `commands[${commandIndex}].op`,
298
+ message: 'Low-level workbook op is not a valid WorkbookOp',
299
+ });
300
+ }
301
+ else {
302
+ const mismatch = opTargetMismatch(command.op, command.target);
303
+ if (mismatch !== null) {
304
+ issues.push(issue({
305
+ code: 'op_target_mismatch',
306
+ path: `commands[${commandIndex}].target`,
307
+ ...(command.target !== undefined ? { ref: command.target } : {}),
308
+ message: mismatch,
309
+ }));
310
+ }
311
+ if (!plan.ops.some((op) => workbookOpMatches(command.op, op))) {
312
+ issues.push({
313
+ code: 'missing_workbook_op',
314
+ path: `commands[${commandIndex}].op`,
315
+ message: `Low-level workbook op ${command.op.kind} is missing from plan ops`,
316
+ });
317
+ }
318
+ }
319
+ }
320
+ const expectedOp = expectedConcreteOp(command);
321
+ if (expectedOp !== null && !plan.ops.some((op) => opMatches(expectedOp, op))) {
322
+ const expectedTarget = commandTarget(command);
323
+ issues.push(issue({
324
+ code: 'missing_concrete_op',
325
+ path: `commands[${commandIndex}]`,
326
+ ...(expectedTarget !== undefined ? { ref: expectedTarget } : {}),
327
+ message: `${expectedTarget?.label ?? 'Command'} has no matching concrete workbook op`,
328
+ }));
329
+ }
330
+ });
331
+ plan.changed.forEach((change, changeIndex) => {
332
+ if (change.target !== undefined && !hasRef(change.target)) {
333
+ issues.push(issue({
334
+ code: 'change_target_not_resolved',
335
+ path: `changed[${changeIndex}].target`,
336
+ ref: change.target,
337
+ message: `${change.target.label} appears in changed but is missing from refsUsed`,
338
+ }));
339
+ }
340
+ });
341
+ plan.checks.forEach((check, checkIndex) => {
342
+ if (check.status !== 'planned') {
343
+ issues.push({
344
+ code: 'check_status_not_planned',
345
+ path: `checks[${checkIndex}].status`,
346
+ message: `${check.target?.label ?? check.kind} check ${check.kind} must start planned before runtime proof`,
347
+ });
348
+ }
349
+ if (check.target !== undefined && !hasRef(check.target)) {
350
+ issues.push(issue({
351
+ code: 'check_target_not_resolved',
352
+ path: `checks[${checkIndex}].target`,
353
+ ref: check.target,
354
+ message: `${check.target.label} appears in checks but is missing from refsUsed`,
355
+ }));
356
+ }
357
+ check.refs?.forEach((ref, refIndex) => {
358
+ if (!hasRef(ref)) {
359
+ issues.push(issue({
360
+ code: 'check_ref_not_resolved',
361
+ path: `checks[${checkIndex}].refs[${refIndex}]`,
362
+ ref,
363
+ message: `${ref.label} appears in checks but is missing from refsUsed`,
364
+ }));
365
+ }
366
+ });
367
+ if (check.expectation?.kind === 'formulaEquals') {
368
+ try {
369
+ parseFormula(check.expectation.formula);
370
+ }
371
+ catch (error) {
372
+ issues.push({
373
+ code: 'invalid_check_expectation_formula',
374
+ path: `checks[${checkIndex}].expectation.formula`,
375
+ message: `Formula expectation for ${check.target?.label ?? check.kind} is not parseable: ${errorMessage(error)}`,
376
+ });
377
+ }
378
+ check.expectation.inputs.forEach((input, inputIndex) => {
379
+ if (!hasRef(input)) {
380
+ issues.push(issue({
381
+ code: 'check_expectation_input_not_resolved',
382
+ path: `checks[${checkIndex}].expectation.inputs[${inputIndex}]`,
383
+ ref: input,
384
+ message: `${input.label} appears in a formula expectation but is missing from refsUsed`,
385
+ }));
386
+ }
387
+ });
388
+ }
389
+ if (check.expectation?.kind === 'formulasEqual') {
390
+ check.expectation.formulas.forEach((row, rowIndex) => {
391
+ row.forEach((formula, colIndex) => {
392
+ if (formula === null) {
393
+ return;
394
+ }
395
+ try {
396
+ parseFormula(formula);
397
+ }
398
+ catch (error) {
399
+ issues.push({
400
+ code: 'invalid_check_expectation_formula',
401
+ path: `checks[${checkIndex}].expectation.formulas[${rowIndex}][${colIndex}]`,
402
+ message: `Formula expectation for ${check.target?.label ?? check.kind} is not parseable: ${errorMessage(error)}`,
403
+ });
404
+ }
405
+ });
406
+ });
407
+ }
408
+ });
409
+ return {
410
+ status: issues.length === 0 ? 'valid' : 'invalid',
411
+ modelName: plan.modelName,
412
+ actionName: plan.actionName,
413
+ issues,
414
+ };
415
+ }
416
+ export function verifyModel(model, options = {}) {
417
+ const actions = inspectModel(model).actions.map((actionName) => {
418
+ const planning = planWorkbookAction(model, actionName, options.inputs?.[actionName]);
419
+ const describedPlanning = describePlanResult(planning);
420
+ if (planning.status === 'failed') {
421
+ return {
422
+ actionName,
423
+ planning: describedPlanning,
424
+ };
425
+ }
426
+ return {
427
+ actionName,
428
+ planning: describedPlanning,
429
+ verification: verifyPlan(planning.plan),
430
+ };
431
+ });
432
+ const isValid = actions.every((action) => action.planning.status === 'planned' && action.verification?.status === 'valid');
433
+ return {
434
+ status: isValid ? 'valid' : 'invalid',
435
+ modelName: model.name,
436
+ actions,
437
+ };
438
+ }
439
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@bilig/workbook",
3
+ "version": "0.42.0",
4
+ "description": "Agent-first workbook model API and transport-neutral workbook operation language for bilig.",
5
+ "keywords": [
6
+ "agent-first",
7
+ "bilig",
8
+ "models",
9
+ "spreadsheet",
10
+ "workbook"
11
+ ],
12
+ "homepage": "https://github.com/proompteng/bilig/tree/main/packages/workbook#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/proompteng/bilig/issues"
15
+ },
16
+ "license": "MIT",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/proompteng/bilig.git",
20
+ "directory": "packages/workbook"
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "README.md",
25
+ "LICENSE"
26
+ ],
27
+ "type": "module",
28
+ "sideEffects": false,
29
+ "main": "./dist/index.js",
30
+ "types": "./dist/index.d.ts",
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/index.d.ts",
34
+ "import": "./dist/index.js",
35
+ "default": "./dist/index.js"
36
+ }
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -b tsconfig.json",
43
+ "test": "cd ../.. && tsx scripts/run-vitest.ts --run packages/workbook/src/__tests__/guards.test.ts packages/workbook/src/__tests__/model-api.test.ts packages/workbook/src/__tests__/low-level-op-api.test.ts packages/workbook/src/__tests__/check-api.test.ts packages/workbook/src/__tests__/format-api.test.ts packages/workbook/src/__tests__/formula-api.test.ts packages/workbook/src/__tests__/action-input-api.test.ts packages/workbook/src/__tests__/action-metadata-api.test.ts packages/workbook/src/__tests__/run-api.test.ts packages/workbook/src/__tests__/requirements-api.test.ts"
44
+ },
45
+ "dependencies": {
46
+ "@bilig/formula": "0.42.0",
47
+ "@bilig/protocol": "0.42.0"
48
+ },
49
+ "engines": {
50
+ "node": ">=22.0.0"
51
+ }
52
+ }