@bilig/workbook 0.67.14 → 0.68.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 CHANGED
@@ -102,7 +102,7 @@ The main API is intentionally small:
102
102
  - descriptions: `describeModel`, `describeRef`, `describePlan`, `describePlanResult`, `describeRuntimeRequirements`, `checkRuntimeRequirements`, `checkRuntimeAdapter`, `describeRunResult`
103
103
  - transport data: `isWorkbookRefData`, `toWorkbookRefData`, `collectWorkbookRefData`, `hydrateWorkbookRef`, `hydrateWorkbookRefs`, `toPlanData`, `isPlanData`, `checkPlanData`, `hydratePlanData`, `verifyPlanData`
104
104
  - runtime handoff: `runWorkbookPlan`, `runWorkbookAction`, `WorkbookRunAdapter`
105
- - feature handoff: `defineWorkbookFeaturePlugin`, `checkWorkbookFeaturePlugin`, `checkWorkbookCommandRequest`, `normalizeWorkbookCommandRequest`, `checkWorkbookCommandReceipt`, `normalizeWorkbookCommandReceipt`, `workbookCommandReceiptOpsMatch`
105
+ - feature handoff: `defineWorkbookFeaturePlugin`, `checkWorkbookFeaturePlugin`, `checkWorkbookCommandRequest`, `normalizeWorkbookCommandRequest`, `checkWorkbookCommandBundle`, `normalizeWorkbookCommandBundle`, `workbookCommandResultFor`, `checkWorkbookCommandReceipt`, `normalizeWorkbookCommandReceipt`, `workbookCommandReceiptOpsMatch`
106
106
  - low-level language: `WorkbookOp`, `WorkbookTxn`, `EngineOp`, `EngineOpBatch`, `isEngineOpBatch`
107
107
 
108
108
  Stable data helpers are exported for generic tool builders:
@@ -116,6 +116,7 @@ Stable data helpers are exported for generic tool builders:
116
116
  - `workbookRuntimeRequirementKinds`, `isWorkbookRuntimeRequirementKind`, `workbookRuntimeCapabilities`, `isWorkbookRuntimeCapability`, `checkRuntimeRequirements`
117
117
  - `workbookCommandCategories`, `isWorkbookCommandCategory`, `workbookCommandExecutionModes`, `isWorkbookCommandExecutionMode`, `workbookCommandReceiptStatuses`, `isWorkbookCommandReceiptStatus`
118
118
  - `workbookProjectionInterceptorPoints`, `isWorkbookProjectionInterceptorPoint`, `workbookUiContributionSlots`, `isWorkbookUiContributionSlot`, `checkWorkbookCommandRequest`
119
+ - `workbookCommandBundleCommandKinds`, `isWorkbookCommandBundleCommandKind`, `checkWorkbookCommandBundle`, `isWorkbookCommandBundle`, `workbookCommandResultFor`
119
120
  - `workbookRunErrorCodes`, `isWorkbookRunErrorCode`
120
121
 
121
122
  Model action manifests are frozen null-prototype maps. Consumers can use normal
@@ -133,6 +134,8 @@ triggering hidden getters.
133
134
  `planWorkbookAction` also validates that boundary before reading action metadata
134
135
  or running model code. Invalid manifests return a structured `invalid_model`
135
136
  failure instead of making the agent catch an accessor side effect.
137
+ `verifyModel` keeps the same behavior at whole-model scope: invalid manifests
138
+ return an invalid verdict with an `invalid_model` error and no actions.
136
139
 
137
140
  ## Selectors
138
141
 
@@ -168,7 +171,9 @@ For full action handoff, use `toPlanData(plan)` before JSON transport. A runtime
168
171
  can call `checkPlanData(data)` to get structured path-based issues before
169
172
  hydration, call `hydratePlanData(data)` to regain frozen refs and helper
170
173
  methods, or pass the data directly to `describeRuntimeRequirements(data)` and
171
- `runWorkbookPlan(data, adapter)`. Invalid transported action input and check
174
+ `runWorkbookPlan(data, adapter)`. `runWorkbookPlan` returns a failed result with
175
+ `invalid_plan_data` errors instead of throwing or calling `apply` when
176
+ transported plan data is malformed. Invalid transported action input and check
172
177
  proof keep nested JSON paths such as `input.rows[1]` and
173
178
  `checks[0].proof.when`, so an agent can repair the exact payload field before
174
179
  hydration. Plan-data guards only trust own payload fields; inherited
@@ -239,8 +244,9 @@ const adapter = {
239
244
  ```
240
245
 
241
246
  `runWorkbookPlan` accepts either a live plan or transported plan data and
242
- refuses to call `apply` if static plan verification fails or if the adapter is
243
- missing a required method. Use `checkRuntimeRequirements(data)` when runtime
247
+ refuses to call `apply` if transported plan data is invalid, static plan
248
+ verification fails, or the adapter is missing a required method. Use
249
+ `checkRuntimeRequirements(data)` when runtime
244
250
  requirements crossed a JSON boundary and an agent needs path-based diagnostics
245
251
  before trusting the handoff. Runtime requirement arrays and nested ref arrays
246
252
  must be own enumerable data entries; holes, non-enumerable entries, or
@@ -314,6 +320,16 @@ runtime. The exported command category, execution-mode, receipt-status,
314
320
  projection-point, and UI-slot lists let tool builders present and validate
315
321
  command contracts without importing a schema framework.
316
322
 
323
+ Use `checkWorkbookCommandBundle(data)` when an agent wants to hand a runtime a
324
+ single ordered set of command requests and low-level ops. A bundle must include
325
+ `targetRevision`, `idempotencyKey`, and non-empty `commands`. Each command uses
326
+ plain `kind: "request"` or `kind: "op"` data, keeps declared `touchedRanges`
327
+ canonical, and preserves command order after normalization. Mutation requests
328
+ and ops must say `destructive: true`, so broad edits are never implied by a
329
+ generic payload. `scope.maxTouchedCells` lets a caller reject oversized edits
330
+ before execution. The validator returns a `WorkbookCommandResult` with normalized
331
+ touched ranges and touched-cell count without importing `@bilig/core`.
332
+
317
333
  Use `checkWorkbookCommandReceipt(data)` before trusting runtime command evidence.
318
334
  It returns the same boring `{ status, issues }` shape for receipt fields such as
319
335
  `status`, `featureId`, `commandId`, `previewOps`, `appliedOps`, `undo`,
package/dist/check.d.ts CHANGED
@@ -19,7 +19,7 @@ export interface WorkbookCheckApi {
19
19
  readonly custom: (options: WorkbookCustomCheckOptions) => WorkbookCheckResult;
20
20
  }
21
21
  export type WorkbookBuiltInCheckKind = 'exists' | 'noFormulaErrors' | 'valueEquals' | 'formulaEquals';
22
- export declare const builtInWorkbookCheckKinds: readonly ("exists" | "noFormulaErrors" | "valueEquals" | "formulaEquals")[];
22
+ export declare const builtInWorkbookCheckKinds: readonly ("valueEquals" | "formulaEquals" | "exists" | "noFormulaErrors")[];
23
23
  export declare function isBuiltInWorkbookCheckKind(value: unknown): value is WorkbookBuiltInCheckKind;
24
24
  export declare function createWorkbookCheckResult(kind: string, target: WorkbookRef, message: string): WorkbookCheckResult;
25
25
  export declare function createWorkbookCustomCheck(options: WorkbookCustomCheckOptions): WorkbookCheckResult;
@@ -0,0 +1,58 @@
1
+ import type { CellRangeRef } from '@bilig/protocol';
2
+ import type { EngineOp } from './ops.js';
3
+ import { type WorkbookCommandRequest } from './features.js';
4
+ export type WorkbookCommandBundleCommandKind = 'request' | 'op';
5
+ export declare const workbookCommandBundleCommandKinds: readonly ["request", "op"];
6
+ export interface WorkbookCommandBundleScope {
7
+ readonly maxTouchedCells?: number;
8
+ }
9
+ export interface WorkbookCommandBundleCommandBase {
10
+ readonly id?: string;
11
+ readonly touchedRanges?: readonly CellRangeRef[];
12
+ readonly destructive?: boolean;
13
+ }
14
+ export interface WorkbookCommandBundleRequestCommand extends WorkbookCommandBundleCommandBase {
15
+ readonly kind: 'request';
16
+ readonly request: WorkbookCommandRequest;
17
+ }
18
+ export interface WorkbookCommandBundleOpCommand extends WorkbookCommandBundleCommandBase {
19
+ readonly kind: 'op';
20
+ readonly op: EngineOp;
21
+ }
22
+ export type WorkbookCommandBundleCommand = WorkbookCommandBundleRequestCommand | WorkbookCommandBundleOpCommand;
23
+ export interface WorkbookCommandBundle {
24
+ readonly id?: string;
25
+ readonly targetRevision: number;
26
+ readonly idempotencyKey: string;
27
+ readonly scope?: WorkbookCommandBundleScope;
28
+ readonly commands: readonly WorkbookCommandBundleCommand[];
29
+ }
30
+ export interface WorkbookCommandResult {
31
+ readonly status: 'accepted';
32
+ readonly bundleId?: string;
33
+ readonly targetRevision: number;
34
+ readonly idempotencyKey: string;
35
+ readonly commandCount: number;
36
+ readonly touchedRanges: readonly CellRangeRef[];
37
+ readonly touchedCellCount: number;
38
+ }
39
+ export type WorkbookCommandBundleIssueCode = 'invalid_bundle' | 'missing_target_revision' | 'invalid_target_revision' | 'missing_idempotency_key' | 'invalid_idempotency_key' | 'missing_commands' | 'unknown_command_kind' | 'invalid_command' | 'invalid_range' | 'destructive_not_confirmed' | 'too_many_touched_cells';
40
+ export interface WorkbookCommandBundleIssue {
41
+ readonly code: WorkbookCommandBundleIssueCode;
42
+ readonly path: string;
43
+ readonly message: string;
44
+ }
45
+ export type WorkbookCommandBundleCheckResult = {
46
+ readonly status: 'valid';
47
+ readonly bundle: WorkbookCommandBundle;
48
+ readonly result: WorkbookCommandResult;
49
+ readonly issues: readonly [];
50
+ } | {
51
+ readonly status: 'invalid';
52
+ readonly issues: readonly WorkbookCommandBundleIssue[];
53
+ };
54
+ export declare function isWorkbookCommandBundleCommandKind(value: unknown): value is WorkbookCommandBundleCommandKind;
55
+ export declare function checkWorkbookCommandBundle(value: unknown): WorkbookCommandBundleCheckResult;
56
+ export declare function normalizeWorkbookCommandBundle(value: unknown): WorkbookCommandBundle;
57
+ export declare function isWorkbookCommandBundle(value: unknown): value is WorkbookCommandBundle;
58
+ export declare function workbookCommandResultFor(bundle: WorkbookCommandBundle): WorkbookCommandResult;
@@ -0,0 +1,445 @@
1
+ import { formatAddress, parseCellAddress } from '@bilig/formula';
2
+ import { isWorkbookOp } from './guards.js';
3
+ import { checkWorkbookCommandRequest, normalizeWorkbookCommandRequest } from './features.js';
4
+ export const workbookCommandBundleCommandKinds = Object.freeze([
5
+ 'request',
6
+ 'op',
7
+ ]);
8
+ const WORKBOOK_COMMAND_BUNDLE_COMMAND_KIND_SET = new Set(workbookCommandBundleCommandKinds);
9
+ export function isWorkbookCommandBundleCommandKind(value) {
10
+ return typeof value === 'string' && WORKBOOK_COMMAND_BUNDLE_COMMAND_KIND_SET.has(value);
11
+ }
12
+ export function checkWorkbookCommandBundle(value) {
13
+ if (!isRecord(value)) {
14
+ return {
15
+ status: 'invalid',
16
+ issues: Object.freeze([commandBundleIssue('invalid_bundle', 'bundle', 'Workbook command bundle must be an object')]),
17
+ };
18
+ }
19
+ const accessorPath = firstAccessorPath(value, 'bundle');
20
+ if (accessorPath !== null) {
21
+ return {
22
+ status: 'invalid',
23
+ issues: Object.freeze([
24
+ commandBundleIssue('invalid_bundle', accessorPath, 'Workbook command bundle must contain only data properties'),
25
+ ]),
26
+ };
27
+ }
28
+ const issues = [];
29
+ pushOptionalStringIssue(issues, ownValue(value, 'id'), 'id', 'bundle id');
30
+ pushTargetRevisionIssue(issues, ownValue(value, 'targetRevision'));
31
+ pushIdempotencyKeyIssue(issues, ownValue(value, 'idempotencyKey'));
32
+ pushScopeIssues(issues, ownValue(value, 'scope'));
33
+ const commands = ownValue(value, 'commands');
34
+ if (!Array.isArray(commands) || commands.length === 0) {
35
+ issues.push(commandBundleIssue('missing_commands', 'commands', 'Workbook command bundle commands must be a non-empty array'));
36
+ }
37
+ else {
38
+ pushArrayDataIssues(issues, commands, 'commands', 'Workbook command bundle commands');
39
+ for (let index = 0; index < commands.length; index += 1) {
40
+ const command = arrayDataValue(commands, index);
41
+ if (command === undefined) {
42
+ continue;
43
+ }
44
+ pushCommandIssues(issues, command, `commands[${index}]`);
45
+ }
46
+ }
47
+ if (issues.length > 0) {
48
+ return {
49
+ status: 'invalid',
50
+ issues: Object.freeze(issues),
51
+ };
52
+ }
53
+ const normalized = normalizeWorkbookCommandBundleData(value);
54
+ const result = workbookCommandResultFor(normalized);
55
+ const maxTouchedCells = normalized.scope?.maxTouchedCells;
56
+ if (maxTouchedCells !== undefined && result.touchedCellCount > maxTouchedCells) {
57
+ return {
58
+ status: 'invalid',
59
+ issues: Object.freeze([
60
+ commandBundleIssue('too_many_touched_cells', 'scope.maxTouchedCells', `Workbook command bundle touches ${result.touchedCellCount} cells, exceeding scope.maxTouchedCells ${maxTouchedCells}`),
61
+ ]),
62
+ };
63
+ }
64
+ return {
65
+ status: 'valid',
66
+ bundle: normalized,
67
+ result,
68
+ issues: Object.freeze([]),
69
+ };
70
+ }
71
+ export function normalizeWorkbookCommandBundle(value) {
72
+ const check = checkWorkbookCommandBundle(value);
73
+ if (check.status === 'invalid') {
74
+ const [firstIssue] = check.issues;
75
+ throw new Error(firstIssue === undefined ? 'Workbook command bundle is invalid' : `Workbook command bundle is invalid: ${firstIssue.message}`);
76
+ }
77
+ return check.bundle;
78
+ }
79
+ export function isWorkbookCommandBundle(value) {
80
+ return checkWorkbookCommandBundle(value).status === 'valid';
81
+ }
82
+ export function workbookCommandResultFor(bundle) {
83
+ const touchedRanges = [];
84
+ let touchedCellCount = 0;
85
+ for (const command of bundle.commands) {
86
+ for (const range of command.touchedRanges ?? []) {
87
+ const normalized = normalizeRange(range, 'touchedRanges');
88
+ touchedRanges.push(normalized.range);
89
+ touchedCellCount += normalized.cellCount;
90
+ }
91
+ }
92
+ return Object.freeze({
93
+ status: 'accepted',
94
+ ...(bundle.id !== undefined ? { bundleId: bundle.id } : {}),
95
+ targetRevision: bundle.targetRevision,
96
+ idempotencyKey: bundle.idempotencyKey,
97
+ commandCount: bundle.commands.length,
98
+ touchedRanges: Object.freeze(touchedRanges),
99
+ touchedCellCount,
100
+ });
101
+ }
102
+ function pushCommandIssues(issues, value, path) {
103
+ if (!isRecord(value)) {
104
+ issues.push(commandBundleIssue('invalid_command', path, 'Workbook command bundle command must be an object'));
105
+ return;
106
+ }
107
+ pushOptionalStringIssue(issues, ownValue(value, 'id'), `${path}.id`, 'command id');
108
+ const kind = ownValue(value, 'kind');
109
+ if (!isWorkbookCommandBundleCommandKind(kind)) {
110
+ issues.push(commandBundleIssue('unknown_command_kind', `${path}.kind`, 'Workbook command bundle command kind is unknown'));
111
+ return;
112
+ }
113
+ const touchedRanges = ownValue(value, 'touchedRanges');
114
+ pushTouchedRangesIssues(issues, touchedRanges, `${path}.touchedRanges`);
115
+ const destructive = ownValue(value, 'destructive');
116
+ if (destructive !== undefined && typeof destructive !== 'boolean') {
117
+ issues.push(commandBundleIssue('invalid_command', `${path}.destructive`, 'Workbook command bundle command destructive flag must be boolean'));
118
+ }
119
+ if (kind === 'request') {
120
+ pushRequestCommandIssues(issues, value, path);
121
+ return;
122
+ }
123
+ pushOpCommandIssues(issues, value, path);
124
+ }
125
+ function pushRequestCommandIssues(issues, value, path) {
126
+ const request = ownValue(value, 'request');
127
+ const requestCheck = checkWorkbookCommandRequest(request);
128
+ if (requestCheck.status === 'invalid') {
129
+ requestCheck.issues.forEach((issue) => {
130
+ issues.push(commandBundleIssue('invalid_command', `${path}.request.${issue.path}`, issue.message));
131
+ });
132
+ return;
133
+ }
134
+ if (commandNeedsDestructiveConfirmation(requestCheck.request) && ownValue(value, 'destructive') !== true) {
135
+ issues.push(commandBundleIssue('destructive_not_confirmed', `${path}.destructive`, 'Workbook command bundle request mutates the workbook and must set destructive: true'));
136
+ }
137
+ }
138
+ function pushOpCommandIssues(issues, value, path) {
139
+ if (!isWorkbookOp(ownValue(value, 'op'))) {
140
+ issues.push(commandBundleIssue('invalid_command', `${path}.op`, 'Workbook command bundle op is invalid'));
141
+ }
142
+ if (ownValue(value, 'destructive') !== true) {
143
+ issues.push(commandBundleIssue('destructive_not_confirmed', `${path}.destructive`, 'Workbook command bundle op mutates the workbook and must set destructive: true'));
144
+ }
145
+ }
146
+ function commandNeedsDestructiveConfirmation(request) {
147
+ return request.category === 'mutation' || request.mode === 'apply' || request.mode === 'applyAndVerify';
148
+ }
149
+ function pushTouchedRangesIssues(issues, value, path) {
150
+ if (value === undefined) {
151
+ return;
152
+ }
153
+ if (!Array.isArray(value)) {
154
+ issues.push(commandBundleIssue('invalid_range', path, 'Workbook command bundle touched ranges must be an array'));
155
+ return;
156
+ }
157
+ pushArrayDataIssues(issues, value, path, 'Workbook command bundle touched ranges');
158
+ for (let index = 0; index < value.length; index += 1) {
159
+ const range = arrayDataValue(value, index);
160
+ if (range === undefined) {
161
+ continue;
162
+ }
163
+ try {
164
+ normalizeRange(range, `${path}[${index}]`);
165
+ }
166
+ catch (error) {
167
+ issues.push(commandBundleIssue('invalid_range', `${path}[${index}]`, errorMessage(error)));
168
+ }
169
+ }
170
+ }
171
+ function pushScopeIssues(issues, value) {
172
+ if (value === undefined) {
173
+ return;
174
+ }
175
+ if (!isRecord(value)) {
176
+ issues.push(commandBundleIssue('invalid_bundle', 'scope', 'Workbook command bundle scope must be an object'));
177
+ return;
178
+ }
179
+ const maxTouchedCells = ownValue(value, 'maxTouchedCells');
180
+ if (maxTouchedCells !== undefined && !isSafeNonNegativeInteger(maxTouchedCells)) {
181
+ issues.push(commandBundleIssue('invalid_bundle', 'scope.maxTouchedCells', 'Workbook command bundle maxTouchedCells must be a safe non-negative integer'));
182
+ }
183
+ }
184
+ function pushTargetRevisionIssue(issues, value) {
185
+ if (value === undefined) {
186
+ issues.push(commandBundleIssue('missing_target_revision', 'targetRevision', 'Workbook command bundle targetRevision is required'));
187
+ return;
188
+ }
189
+ if (!isSafeNonNegativeInteger(value)) {
190
+ issues.push(commandBundleIssue('invalid_target_revision', 'targetRevision', 'Workbook command bundle targetRevision must be a safe non-negative integer'));
191
+ }
192
+ }
193
+ function pushIdempotencyKeyIssue(issues, value) {
194
+ if (value === undefined) {
195
+ issues.push(commandBundleIssue('missing_idempotency_key', 'idempotencyKey', 'Workbook command bundle idempotencyKey is required'));
196
+ return;
197
+ }
198
+ if (typeof value !== 'string') {
199
+ issues.push(commandBundleIssue('invalid_idempotency_key', 'idempotencyKey', 'Workbook command bundle idempotencyKey must be a string'));
200
+ return;
201
+ }
202
+ pushNonEmptyExactStringIssue(issues, value, 'idempotencyKey', 'idempotencyKey', 'invalid_idempotency_key');
203
+ }
204
+ function pushOptionalStringIssue(issues, value, path, label) {
205
+ if (value === undefined) {
206
+ return;
207
+ }
208
+ if (typeof value !== 'string') {
209
+ issues.push(commandBundleIssue('invalid_bundle', path, `Workbook command bundle ${label} must be a string`));
210
+ return;
211
+ }
212
+ pushNonEmptyExactStringIssue(issues, value, path, label, 'invalid_bundle');
213
+ }
214
+ function pushNonEmptyExactStringIssue(issues, value, path, label, code) {
215
+ const normalized = value.trim();
216
+ if (normalized === '') {
217
+ issues.push(commandBundleIssue(code, path, `Workbook command bundle ${label} cannot be empty`));
218
+ return;
219
+ }
220
+ if (normalized !== value) {
221
+ issues.push(commandBundleIssue(code, path, `Workbook command bundle ${label} must not have leading or trailing whitespace`));
222
+ }
223
+ }
224
+ function pushArrayDataIssues(issues, value, path, label) {
225
+ const accessorPath = firstAccessorPath(value, path);
226
+ if (accessorPath !== null) {
227
+ issues.push(commandBundleIssue('invalid_bundle', accessorPath, `${label} must contain only data properties`));
228
+ return;
229
+ }
230
+ for (let index = 0; index < value.length; index += 1) {
231
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
232
+ if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {
233
+ issues.push(commandBundleIssue('invalid_bundle', `${path}[${index}]`, `${label} must contain only data properties`));
234
+ }
235
+ }
236
+ }
237
+ function normalizeWorkbookCommandBundleData(value) {
238
+ const id = ownValue(value, 'id');
239
+ const targetRevision = ownValue(value, 'targetRevision');
240
+ const idempotencyKey = ownValue(value, 'idempotencyKey');
241
+ const scope = ownValue(value, 'scope');
242
+ const maxTouchedCells = isRecord(scope) ? ownValue(scope, 'maxTouchedCells') : undefined;
243
+ const commands = ownValue(value, 'commands');
244
+ if (!isSafeNonNegativeInteger(targetRevision)) {
245
+ throw new Error('Workbook command bundle targetRevision is invalid');
246
+ }
247
+ if (typeof idempotencyKey !== 'string') {
248
+ throw new Error('Workbook command bundle idempotencyKey is invalid');
249
+ }
250
+ if (!Array.isArray(commands)) {
251
+ throw new Error('Workbook command bundle commands are invalid');
252
+ }
253
+ return Object.freeze({
254
+ ...(typeof id === 'string' ? { id } : {}),
255
+ targetRevision,
256
+ idempotencyKey,
257
+ ...(isSafeNonNegativeInteger(maxTouchedCells) ? { scope: Object.freeze({ maxTouchedCells }) } : {}),
258
+ commands: Object.freeze(commands.map((command, index) => normalizeCommand(command, index))),
259
+ });
260
+ }
261
+ function normalizeCommand(value, index) {
262
+ if (!isRecord(value)) {
263
+ throw new Error(`Workbook command bundle command ${index} is invalid`);
264
+ }
265
+ const id = ownValue(value, 'id');
266
+ const kind = ownValue(value, 'kind');
267
+ const touchedRanges = normalizeTouchedRanges(ownValue(value, 'touchedRanges'));
268
+ const destructive = ownValue(value, 'destructive');
269
+ const common = Object.freeze({
270
+ ...(typeof id === 'string' ? { id } : {}),
271
+ ...(touchedRanges.length > 0 ? { touchedRanges } : {}),
272
+ ...(destructive !== undefined ? { destructive: destructive === true } : {}),
273
+ });
274
+ if (kind === 'request') {
275
+ return Object.freeze({
276
+ ...common,
277
+ kind,
278
+ request: normalizeWorkbookCommandRequest(ownValue(value, 'request')),
279
+ });
280
+ }
281
+ return Object.freeze({
282
+ ...common,
283
+ kind: 'op',
284
+ op: normalizeOp(ownValue(value, 'op')),
285
+ });
286
+ }
287
+ function normalizeOp(value) {
288
+ if (!isWorkbookOp(value)) {
289
+ throw new Error('Workbook command bundle op is invalid');
290
+ }
291
+ const cloned = cloneData(value);
292
+ if (!isWorkbookOp(cloned)) {
293
+ throw new Error('Workbook command bundle op clone is invalid');
294
+ }
295
+ return freezeData(cloned);
296
+ }
297
+ function normalizeTouchedRanges(value) {
298
+ if (!Array.isArray(value)) {
299
+ return Object.freeze([]);
300
+ }
301
+ return Object.freeze(value.map((range, index) => normalizeRange(range, `touchedRanges[${index}]`).range));
302
+ }
303
+ function normalizeRange(value, path) {
304
+ if (!isRecord(value)) {
305
+ throw new Error(`Workbook command bundle ${path} must be an object`);
306
+ }
307
+ const sheetName = ownValue(value, 'sheetName');
308
+ const startAddress = ownValue(value, 'startAddress');
309
+ const endAddress = ownValue(value, 'endAddress');
310
+ if (typeof sheetName !== 'string' || typeof startAddress !== 'string' || typeof endAddress !== 'string') {
311
+ throw new Error(`Workbook command bundle ${path} must include sheetName, startAddress, and endAddress strings`);
312
+ }
313
+ const normalizedSheetName = normalizeExactString(sheetName, `${path}.sheetName`);
314
+ const start = normalizeCellAddress(startAddress, `${path}.startAddress`);
315
+ const end = normalizeCellAddress(endAddress, `${path}.endAddress`);
316
+ if (end.row < start.row || end.col < start.col) {
317
+ throw new Error(`Workbook command bundle ${path} endAddress must not be before startAddress`);
318
+ }
319
+ return {
320
+ range: Object.freeze({
321
+ sheetName: normalizedSheetName,
322
+ startAddress: start.text,
323
+ endAddress: end.text,
324
+ }),
325
+ cellCount: (end.row - start.row + 1) * (end.col - start.col + 1),
326
+ };
327
+ }
328
+ function normalizeCellAddress(value, path) {
329
+ try {
330
+ const parsed = parseCellAddress(value);
331
+ if (parsed.sheetName !== undefined) {
332
+ throw new Error('qualified');
333
+ }
334
+ return {
335
+ row: parsed.row,
336
+ col: parsed.col,
337
+ text: formatAddress(parsed.row, parsed.col),
338
+ };
339
+ }
340
+ catch {
341
+ throw new Error(`Workbook command bundle ${path} is invalid: ${value}`);
342
+ }
343
+ }
344
+ function normalizeExactString(value, path) {
345
+ const normalized = value.trim();
346
+ if (normalized === '') {
347
+ throw new Error(`Workbook command bundle ${path} cannot be empty`);
348
+ }
349
+ if (normalized !== value) {
350
+ throw new Error(`Workbook command bundle ${path} must not have leading or trailing whitespace`);
351
+ }
352
+ return normalized;
353
+ }
354
+ function commandBundleIssue(code, path, message) {
355
+ return Object.freeze({
356
+ code,
357
+ path,
358
+ message,
359
+ });
360
+ }
361
+ function arrayDataValue(value, index) {
362
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
363
+ return descriptor !== undefined && descriptor.enumerable && 'value' in descriptor ? descriptor.value : undefined;
364
+ }
365
+ function ownValue(value, key) {
366
+ return Object.getOwnPropertyDescriptor(value, key)?.value;
367
+ }
368
+ function isRecord(value) {
369
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
370
+ }
371
+ function isSafeNonNegativeInteger(value) {
372
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
373
+ }
374
+ function errorMessage(error) {
375
+ return error instanceof Error ? error.message : String(error);
376
+ }
377
+ function firstAccessorPath(value, path, seen = new WeakSet()) {
378
+ if (typeof value !== 'object' || value === null) {
379
+ return null;
380
+ }
381
+ if (seen.has(value)) {
382
+ return null;
383
+ }
384
+ seen.add(value);
385
+ for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(value))) {
386
+ const childPath = Array.isArray(value) && /^\d+$/.test(key) ? `${path}[${key}]` : `${path}.${key}`;
387
+ if (!('value' in descriptor)) {
388
+ return childPath;
389
+ }
390
+ const nestedPath = firstAccessorPath(descriptor.value, childPath, seen);
391
+ if (nestedPath !== null) {
392
+ return nestedPath;
393
+ }
394
+ }
395
+ return null;
396
+ }
397
+ function freezeData(value, seen = new WeakSet()) {
398
+ if (typeof value !== 'object' || value === null) {
399
+ return value;
400
+ }
401
+ if (seen.has(value)) {
402
+ return value;
403
+ }
404
+ seen.add(value);
405
+ Object.values(Object.getOwnPropertyDescriptors(value)).forEach((descriptor) => {
406
+ if ('value' in descriptor) {
407
+ freezeData(descriptor.value, seen);
408
+ }
409
+ });
410
+ return Object.freeze(value);
411
+ }
412
+ function cloneData(value, seen = new WeakMap()) {
413
+ if (typeof value !== 'object' || value === null) {
414
+ return value;
415
+ }
416
+ const existing = seen.get(value);
417
+ if (existing !== undefined) {
418
+ return existing;
419
+ }
420
+ if (Array.isArray(value)) {
421
+ const cloned = [];
422
+ seen.set(value, cloned);
423
+ for (let index = 0; index < value.length; index += 1) {
424
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
425
+ if (descriptor !== undefined && descriptor.enumerable && 'value' in descriptor) {
426
+ cloned[index] = cloneData(descriptor.value, seen);
427
+ }
428
+ }
429
+ return cloned;
430
+ }
431
+ const cloned = Object.create(Object.getPrototypeOf(value));
432
+ seen.set(value, cloned);
433
+ Object.entries(Object.getOwnPropertyDescriptors(value)).forEach(([key, descriptor]) => {
434
+ if (descriptor.enumerable && 'value' in descriptor) {
435
+ Object.defineProperty(cloned, key, {
436
+ configurable: true,
437
+ enumerable: true,
438
+ value: cloneData(descriptor.value, seen),
439
+ writable: true,
440
+ });
441
+ }
442
+ });
443
+ return cloned;
444
+ }
445
+ //# sourceMappingURL=command-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-bundle.js","sourceRoot":"","sources":["../src/command-bundle.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,5 +13,6 @@ export * from './result.js';
13
13
  export * from './requirements.js';
14
14
  export * from './features.js';
15
15
  export * from './feature-plugin.js';
16
+ export * from './command-bundle.js';
16
17
  export { checkPlanData, hydratePlanData, isPlanData, toPlanData } from './plan-data.js';
17
18
  export type { WorkbookExecutablePlan, WorkbookPlanData, WorkbookPlanDataCheckResult, WorkbookPlanDataIssue, WorkbookPlanDataIssueCode, WorkbookPlanDataRefs, } from './plan-data.js';
package/dist/index.js CHANGED
@@ -13,5 +13,6 @@ export * from './result.js';
13
13
  export * from './requirements.js';
14
14
  export * from './features.js';
15
15
  export * from './feature-plugin.js';
16
+ export * from './command-bundle.js';
16
17
  export { checkPlanData, hydratePlanData, isPlanData, toPlanData } from './plan-data.js';
17
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
package/dist/model.d.ts CHANGED
@@ -112,6 +112,7 @@ export type WorkbookActionPlanResult<Refs = unknown> = {
112
112
  readonly checks: readonly WorkbookCheckResult[];
113
113
  };
114
114
  export declare function defineModel<Refs, Actions extends WorkbookActionMap<Refs>>(config: WorkbookModelConfig<Refs, Actions>): WorkbookModel<Refs, Actions>;
115
- export declare function inspectModel<Refs, Actions extends WorkbookActionMap<Refs>>(model: WorkbookModel<Refs, Actions>): WorkbookModelInspection;
115
+ export declare function inspectModel(model: unknown): WorkbookModelInspection;
116
116
  export declare function planWorkbookAction<Refs, Actions extends WorkbookActionMap<Refs>>(model: WorkbookModel<Refs, Actions>, actionName: string, input?: WorkbookActionInput): WorkbookActionPlanResult<Refs>;
117
+ export declare function planWorkbookAction(model: unknown, actionName: string, input?: WorkbookActionInput): WorkbookActionPlanResult;
117
118
  export declare function buildWorkbookActionPlan<Refs, Actions extends WorkbookActionMap<Refs>, ActionName extends keyof Actions & string>(model: WorkbookModel<Refs, Actions>, actionName: ActionName, input?: WorkbookActionInput): WorkbookActionPlan<Refs>;