@pixerate/editor 0.46.0 → 0.47.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.
Files changed (84) hide show
  1. package/THIRD_PARTY_NOTICES.md +20 -0
  2. package/dist/agent/index.cjs +20 -19
  3. package/dist/agent/index.cjs.map +1 -1
  4. package/dist/agent/index.d.cts +2 -2
  5. package/dist/agent/index.d.ts +2 -2
  6. package/dist/agent/index.js +4 -3
  7. package/dist/agent/index.js.map +1 -1
  8. package/dist/{builtins-DghNQbT-.d.ts → builtins-D2nMtw2W.d.ts} +1 -1
  9. package/dist/{builtins-CZW-aYKS.d.cts → builtins-xs7rK6ys.d.cts} +1 -1
  10. package/dist/chart/index.cjs +3965 -821
  11. package/dist/chart/index.cjs.map +1 -1
  12. package/dist/chart/index.d.cts +964 -240
  13. package/dist/chart/index.d.ts +964 -240
  14. package/dist/chart/index.js +3922 -778
  15. package/dist/chart/index.js.map +1 -1
  16. package/dist/{chunk-PQM5W7ZN.js → chunk-4FX5ACVG.js} +29 -2
  17. package/dist/{chunk-PQM5W7ZN.js.map → chunk-4FX5ACVG.js.map} +1 -1
  18. package/dist/{chunk-3RPOW4CS.js → chunk-5VXI5GED.js} +12 -10
  19. package/dist/{chunk-3RPOW4CS.js.map → chunk-5VXI5GED.js.map} +1 -1
  20. package/dist/{chunk-HHQ4XJWT.js → chunk-AMWXSYCI.js} +2 -2
  21. package/dist/{chunk-U7VGDSNY.cjs → chunk-BBRK6MOI.cjs} +101 -99
  22. package/dist/chunk-BBRK6MOI.cjs.map +1 -0
  23. package/dist/chunk-C3NWJE3K.js +1182 -0
  24. package/dist/chunk-C3NWJE3K.js.map +1 -0
  25. package/dist/{chunk-N4MLNJPO.cjs → chunk-H4PICYNL.cjs} +59 -12
  26. package/dist/chunk-H4PICYNL.cjs.map +1 -0
  27. package/dist/chunk-LYGEEDNR.cjs +1895 -0
  28. package/dist/chunk-LYGEEDNR.cjs.map +1 -0
  29. package/dist/chunk-NEOO6QJD.cjs +1182 -0
  30. package/dist/chunk-NEOO6QJD.cjs.map +1 -0
  31. package/dist/{chunk-Q25ZS4F7.js → chunk-PQFAHT5O.js} +53 -6
  32. package/dist/chunk-PQFAHT5O.js.map +1 -0
  33. package/dist/{chunk-ZRNHGAQT.js → chunk-REAGGLXS.js} +43 -1891
  34. package/dist/chunk-REAGGLXS.js.map +1 -0
  35. package/dist/{chunk-EFDCLENW.cjs → chunk-RIWPYSKU.cjs} +29 -2
  36. package/dist/chunk-RIWPYSKU.cjs.map +1 -0
  37. package/dist/{chunk-EWCOFSCQ.cjs → chunk-SQC26VQV.cjs} +252 -2100
  38. package/dist/chunk-SQC26VQV.cjs.map +1 -0
  39. package/dist/{chunk-K2LVZ4FA.cjs → chunk-XFYUFVAX.cjs} +3 -3
  40. package/dist/{chunk-K2LVZ4FA.cjs.map → chunk-XFYUFVAX.cjs.map} +1 -1
  41. package/dist/chunk-ZFBBVGCI.js +1895 -0
  42. package/dist/chunk-ZFBBVGCI.js.map +1 -0
  43. package/dist/commands/index.cjs +93 -11
  44. package/dist/commands/index.cjs.map +1 -1
  45. package/dist/commands/index.d.cts +9 -7
  46. package/dist/commands/index.d.ts +9 -7
  47. package/dist/commands/index.js +92 -10
  48. package/dist/commands/index.js.map +1 -1
  49. package/dist/extensions/index.cjs +3 -2
  50. package/dist/extensions/index.cjs.map +1 -1
  51. package/dist/extensions/index.d.cts +3 -2
  52. package/dist/extensions/index.d.ts +3 -2
  53. package/dist/extensions/index.js +2 -1
  54. package/dist/generation/index.cjs +2 -2
  55. package/dist/generation/index.js +1 -1
  56. package/dist/{index-jwJ_onWf.d.ts → index-CSUCQYAH.d.ts} +23 -2
  57. package/dist/{index-CfOQf70b.d.cts → index-QrqMmZ75.d.cts} +23 -2
  58. package/dist/index.cjs +12 -9
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.d.cts +9 -3
  61. package/dist/index.d.ts +9 -3
  62. package/dist/index.js +26 -23
  63. package/dist/index.js.map +1 -1
  64. package/dist/parameters/index.d.cts +1 -1
  65. package/dist/parameters/index.d.ts +1 -1
  66. package/dist/{registry-vz6HOiiy.d.cts → registry-CaR7LC6W.d.cts} +2 -0
  67. package/dist/{registry-BfVD-vVg.d.ts → registry-rVtFJjRM.d.ts} +2 -0
  68. package/dist/spreadsheet/index.cjs +5 -3
  69. package/dist/spreadsheet/index.cjs.map +1 -1
  70. package/dist/spreadsheet/index.js +24 -22
  71. package/dist/tools/index.cjs +3 -3
  72. package/dist/tools/index.js +2 -2
  73. package/dist/types-BVqWm3d1.d.cts +320 -0
  74. package/dist/types-BVqWm3d1.d.ts +320 -0
  75. package/dist/vector/index.d.cts +1 -1
  76. package/dist/vector/index.d.ts +1 -1
  77. package/package.json +3 -2
  78. package/dist/chunk-EFDCLENW.cjs.map +0 -1
  79. package/dist/chunk-EWCOFSCQ.cjs.map +0 -1
  80. package/dist/chunk-N4MLNJPO.cjs.map +0 -1
  81. package/dist/chunk-Q25ZS4F7.js.map +0 -1
  82. package/dist/chunk-U7VGDSNY.cjs.map +0 -1
  83. package/dist/chunk-ZRNHGAQT.js.map +0 -1
  84. /package/dist/{chunk-HHQ4XJWT.js.map → chunk-AMWXSYCI.js.map} +0 -0
@@ -30,12 +30,15 @@ reproduced at the end of this file. Paths are relative to each source repository
30
30
  © 2026 ArtCraft Team and the DeckCraft contributors.
31
31
 
32
32
  - `crates/geom/src/morph.rs` (`contours`: every segment as a cubic, lines with handles at thirds; `align`: contours paired in order, one without a partner meeting a point at the same place relative to the other outline's box (`place`); `turn`: a closed contour restarted at another anchor; `match_pair`: the closed side of a pair turned, open paired with closed) → `subpathToMorphContour`, `turnMorphContour` and `correspondMorphContours` in `packages/core/src/vector/blend.ts`; anchors are inserted by arc length rather than split evenly per curve, and the winding of closed shapes follows their areas (effectcraft) instead of a cost comparison; test cases re-expressed → `packages/core/tests/vector-blend.test.ts`
33
+ - `crates/pptx/src/read/chart.rs` (DrawingML chart reading: group → type mapping, secondary value axis by axis id and position rather than file order, cached and literal data, data-label number-format precedence, point fills) → `chartFromOoxml` in `packages/core/src/chart/ooxml.ts`
33
34
 
34
35
  ## designcraft
35
36
 
36
37
  © 2026 ArtCraft Team and the DesignCraft contributors.
37
38
 
38
39
  - `crates/tools/src/snap.rs` (`pass_dimensions`: a resized or created object's side matches another object's width or height in its own frame, nearest within the zone, when nothing else snapped on that axis) → `VectorSnapTargets.snapScale` / `matchSize` in `packages/core/src/vector/snap.ts`
40
+ - `crates/color/src/cms/mod.rs` (`simulate_cvd`: Machado–Oliveira–Fernandes 2009 colour-vision matrices in linear RGB) → `simulateChartVision` and `checkChartColors` in `packages/core/src/chart/color.ts`
41
+ - `crates/mcp/src/tools.rs` (`key`: keys through the real keyboard path) → `press_chart_key` in `packages/core/src/chart/tools.ts`
39
42
 
40
43
  ## effectcraft
41
44
 
@@ -46,6 +49,7 @@ reproduced at the end of this file. Paths are relative to each source repository
46
49
  - `crates/path/src/ops.rs` (`trim` / `trim_individually` with `trim_intervals` and `Measured::append`: start / end percentages swapped when reversed, an offset in degrees wrapping round, a piece that starts where the last ended continuing it; `pucker_bloat`; `round_corners`; `offset` with copies at `amount · (i + 1 + copy_offset)`; `twist` with subdivided segments and handles mapped through the warp's derivative; `resample` and `emit` (corner bisectors, smooth handles as a fraction of the pieces); `zigzag`; `WiggleParams`, `splitmix`, `hash`, the Catmull-Rom `noise` and `wiggle`; `MergeMode` and `merge`) → `trimPaths`, `trimPathsIndividually`, `puckerBloatPaths`, `offsetPaths`, `twistPaths`, `zigzagPaths`, `wigglePaths` and `mergePaths` in `packages/core/src/vector/pathEffects.ts`; arc lengths come from our `segmentLength` / `trimSegments`, offsets from `offsetPath`, booleans from `pathBoolean`, and Round Corners (`roundCornerPaths`) uses our live-corner maths (a true radius) instead of the port's setback arc; the wiggle's time is a plain parameter; test cases from `crates/path/src/ops/tests.rs` re-expressed → `packages/core/tests/vector-effects.test.ts`
47
50
  - `crates/render/src/shapes.rs` (the module's stacking rule — an operator acts on every path above it in its group, nested groups included, and operators below a repeater act on its copies; the `"repeater"` branch of `collect()`: copy i transformed by `translate(position·k) · rotate(rotation·k) · scale^k` about the anchor with `k = i + offset`, opacity ramped from start to end, a fractional count fading the last copy, below / above composite order; Merge Paths painting with the paint below it) → `applyVectorEffects` / `vectorAppearanceShapes` in `packages/core/src/vector/appearance.ts` and `vectorRepeaterCopies` / `repeatPaths` in `packages/core/src/vector/pathEffects.ts`; effects live on path and group nodes rather than as items among paints, each shape painted in its source path's style (merged results in the bottom one's), and the repeater's anchor is an offset from the middle of the shapes' bounds
48
51
  - `crates/render/src/shapes.rs` (`GradientRamp::new` / `t`: a radial gradient's focal point and t measured along the ray from it to the circle, the same as SVG `fx` / `fy`) → `vectorGradientFocalParam` in `packages/core/src/vector/gradient.ts`, generalised to SVG's focal circle (`fr`); test cases re-expressed → `packages/core/tests/vector-gradient.test.ts`
52
+ - `crates/ui-egui/src/panels/graph.rs` and `graph_tools.rs` (value range frozen while a key is dragged, Shift locks to the axis moved most, `snap_px` nearest candidate within a few screen pixels) → `startChartPointDrag` and `snapChartDragValue` in `packages/core/src/chart/interaction.ts`
49
53
 
50
54
  ## figcraft
51
55
 
@@ -89,6 +93,9 @@ reproduced at the end of this file. Paths are relative to each source repository
89
93
  - `crates/project/src/keyframe.rs` (`Keyframe`, `Param::value_at` segment evaluation and hold, `set_at` inheriting the previous interpolation, `remove_keyframe_at` keeping the last value, `toggle_animation` keeping the value at a time, temporal influence easing, `cubic_bezier_y_for_x` Newton + bisection solver) → `packages/core/src/canvas/animation/{easing,model,evaluate,edit}.ts`
90
94
  - `crates/engine/src/keyframe_move.rs` (`move_many`: one common delta across lanes clamped to the movement range, remove-all-originals-then-insert, validation without partial edits, at most 4096 keys) → `moveKeyframes` / `scaleKeyframes` in `packages/core/src/canvas/animation/edit.ts`, keyframe drags in `packages/core/src/canvas/animation/controller.ts`
91
95
  - `crates/project/src/keyframe.rs` tests, `crates/engine/src/keyframe_move.rs` tests and `crates/ui-egui/tests/keyframes_ui.rs` (group move and undo as one step, snapping within a screen-space threshold, Escape cancelling a drag preview; test cases re-expressed) → `packages/core/tests/canvas-animation.test.ts`, `packages/react/tests/canvas-animation.test.tsx`, `packages/svelte/tests/canvas/canvas-animation.test.ts`
96
+ - `crates/ui-egui/src/panels/timeline.rs` (`ruler_steps`: the first step on a ladder that keeps labels apart) → `chartDateLabels` in `packages/core/src/chart/date.ts`, with calendar units
97
+ - `crates/scopes/src/summary.rs` (numeric summaries for agents that check visuals without looking) → `summarizeChart` in `packages/core/src/chart/summary.ts`
98
+ - `crates/golden` (committed reference renders with a regenerate mode) → `packages/core/tests/chart-golden.test.ts`
92
99
 
93
100
  ## gridcraft
94
101
 
@@ -113,6 +120,13 @@ reproduced at the end of this file. Paths are relative to each source repository
113
120
  `TEXT()` result) come from Apache POI's `test-data/spreadsheet/NumberFormatApproxTests.xlsx`, as collected in
114
121
  GridCraft. Apache POI is © The Apache Software Foundation, licensed under the Apache License, Version 2.0
115
122
  (https://www.apache.org/licenses/LICENSE-2.0).
123
+ - `crates/chart/src/trend.rs` (least-squares trendlines on transformed data, polynomial normal equations on centred / scaled x, Gaussian elimination, fixed intercept with uncentred R², equation text, moving average, legend names) → `packages/core/src/chart/trend.ts`; test cases re-expressed → `packages/core/tests/chart-features.test.ts`
124
+ - `crates/chart/src/render.rs` (`histogram` binning, `quantile` and `box_whisker`, `squarify` treemap, `waterfall`, `funnel`, `radar`, `decimate`, marker de-duplication, `clip_segment`, label colour by fill, legend height cap, `finalize`) → `packages/core/src/chart/stats.ts`, `layout-families.ts`, `layout-cartesian.ts` and `layout.ts`
125
+ - `crates/chart/src/resolve.rs` (palette tint cycle after the base colours) → `cyclePaletteColor` in `packages/core/src/chart/color.ts`
126
+ - `crates/chart/src/sparkline.rs` → `layoutSparkline` in `packages/core/src/chart/sparkline.ts`
127
+ - `crates/engine/src/cmd/insert.rs` (`series_from_range`, `scatter_x_from_first`, `recommend_charts`) → `packages/core/src/chart/recommend.ts`
128
+ - `crates/engine/src/cmd/extra.rs` (`chart.quickLayout`, `chart.changeColors`) → `packages/core/src/chart/presets.ts`
129
+ - `crates/xlsx/src/chartex.rs` (chartex parts for waterfall, funnel, treemap, histogram and box charts) → `chartFromOoxml` in `packages/core/src/chart/ooxml.ts`
116
130
 
117
131
  ## lightcraft
118
132
 
@@ -124,6 +138,8 @@ GridCraft. Apache POI is © The Apache Software Foundation, licensed under the A
124
138
  - `crates/pipeline/src/local.rs` (relative white balance with neutral-luminance normalisation) → `packages/core/src/image-editor/color.ts`
125
139
  - `crates/develop/src/settings.rs` and `docs/process-versions.md` (process version semantics) → `packages/core/src/image-editor/color.ts`
126
140
  - `crates/develop/src/controls.rs` (`ControlSpec` table: id, label, section, range, default, step, decimals, track style; clamping) → `packages/core/src/image-editor/controls.ts`
141
+ - `crates/ui-egui/src/tests_curve.rs` (Alt moves a point a tenth as far) → `ChartDragMoveOptions.fine` in `packages/core/src/chart/interaction.ts`
142
+ - `crates/mcp/src/tools.rs` (`pointer_gesture` in normalized coordinates) → `drag_chart_point` in `packages/core/src/chart/tools.ts`
127
143
 
128
144
  ## pdfcraft
129
145
 
@@ -205,6 +221,9 @@ GridCraft. Apache POI is © The Apache Software Foundation, licensed under the A
205
221
  - `crates/svg/src/import/spread.rs` (`expand`, `whole_period`, `mirror`: `reflect` and `repeat` emulated by repeating the stops over the periods the painted area needs, every other one mirrored for reflect, capped at 64) → `periodicVectorGradientStops` / `expandVectorGradientSpread` in `packages/core/src/vector/gradient.ts`, used where SVG has no spread mode for the style (reflected gradients that pad or repeat); import keeps `spreadMethod` as the gradient's `spread`; test cases re-expressed → `packages/core/tests/vector-gradient.test.ts`
206
222
  - `crates/effects/src/stroke/gradient.rs` (gradients along and across a stroke: ribs through the flattened path on the bisectors of gentle turns, square ribs and a fill in the corner's colour at sharp ones, slices between ribs painted with the part of the gradient between them — along — or from the stroke's left edge to its right — across — clipped to the stroke) → `vectorStrokeGradientDefs` in `packages/core/src/vector/gradientStroke.ts`, written as a `<pattern>` of slices the stroke paints through (no clip); a sharp corner gets one patch instead of a fan of ribs
207
223
  - `crates/tools/src/xform/gradient.rs` (the Gradient tool's annotator: a bar from the start to the end handle with stop chips below it and midpoint diamonds above, a radial's extent ellipse with its aspect handle and focal point; click the bar to add a stop, drag a stop along it or off it to delete it; Shift constrains the vector) → `packages/core/src/vector/gradientTool.ts` and the `gradient` tool in `packages/core/src/vector/controller.ts`
224
+ - `crates/mcp/src/tools.rs` (`command_batch`: `$N.path` result references, atomic batches with a label; `render_preview`) → `run_commands` in `packages/core/src/commands/agentTools.ts` and `render_chart` in `packages/core/src/chart/tools.ts`
225
+ - `crates/testkit/src/strategies.rs` and `invariants.rs` (random command sequences with junk values, invariants, undo-all / redo-all) → `packages/core/tests/chart-property.test.ts`
226
+ - `crates/svg/src/export.rs` (`<title>` and `<desc>` in exported SVG) → `chartSceneToSvg` in `packages/core/src/chart/svg.ts`
208
227
 
209
228
  ## wordcraft
210
229
 
@@ -230,6 +249,7 @@ GridCraft. Apache POI is © The Apache Software Foundation, licensed under the A
230
249
  - `crates/docx/src/read/mod.rs` (`read_comments`: comments keyed by the `w14:paraId` of their last paragraph, `commentEx` parents and `done`) and `crates/docx/src/read/story.rs` (tracked insertions, deletions and named move ranges) → `packages/core/src/import/docx.ts`
231
250
  - Test cases from `crates/docx/tests/privacy.rs` (`remove_personal_information_and_dates_on_save`: the two-commenter fixture, no names or initials in any part, "Author" / "A"), `crates/docx/tests/roundtrip.rs` and `crates/docx/tests/fixtures.rs` (comments, replies, tracked changes and moves surviving a save and reload), re-expressed → `packages/core/tests/docx-export.test.ts`
232
251
  - `crates/engine/src/cmd/ink_shape.rs` (`recognise`, `ellipse_rms`, `snap_square`, `corners`, `turning`, `rdp`, `upright`, `MIN_SIZE`, `MAX_CORNERS`) → `recognizeInkShape` in `packages/core/src/vector/ink.ts`; its test cases re-expressed → `packages/core/tests/vector-path-edit.test.ts`
252
+ - `crates/docx/src/chart_spec.rs` (a chart is editable only when it regenerates without loss) → `ChartOoxmlReadResult.lossless` and the DOCX chart import in `packages/core/src/import/docx.ts`
233
253
 
234
254
  ## MIT License
235
255
 
@@ -27,13 +27,13 @@
27
27
 
28
28
 
29
29
 
30
- var _chunkK2LVZ4FAcjs = require('../chunk-K2LVZ4FA.cjs');
30
+ var _chunkXFYUFVAXcjs = require('../chunk-XFYUFVAX.cjs');
31
31
 
32
32
 
33
33
  var _chunkHXDMZQTDcjs = require('../chunk-HXDMZQTD.cjs');
34
34
 
35
35
 
36
- var _chunkEFDCLENWcjs = require('../chunk-EFDCLENW.cjs');
36
+ var _chunkRIWPYSKUcjs = require('../chunk-RIWPYSKU.cjs');
37
37
 
38
38
 
39
39
 
@@ -50,11 +50,12 @@ var _chunkJ3R2OWOEcjs = require('../chunk-J3R2OWOE.cjs');
50
50
  var _chunk66IMF6ODcjs = require('../chunk-66IMF6OD.cjs');
51
51
  require('../chunk-BVP3TSLH.cjs');
52
52
  require('../chunk-IFHKKVXH.cjs');
53
+ require('../chunk-SQC26VQV.cjs');
53
54
 
54
55
 
55
56
 
56
57
 
57
- var _chunkEWCOFSCQcjs = require('../chunk-EWCOFSCQ.cjs');
58
+ var _chunkLYGEEDNRcjs = require('../chunk-LYGEEDNR.cjs');
58
59
 
59
60
 
60
61
 
@@ -739,12 +740,12 @@ var CELL_REF_REGEX = /^\$?([A-Za-z]{1,3})\$?(\d{1,7})$/;
739
740
  function parseCell(ref) {
740
741
  const match = CELL_REF_REGEX.exec(ref.trim());
741
742
  if (!match) throw new Error(`Invalid cell reference "${ref}". Use A1 notation, e.g. "B3".`);
742
- return { col: _chunkEWCOFSCQcjs.colNameToIndex.call(void 0, match[1].toUpperCase()), row: parseInt(match[2], 10) - 1 };
743
+ return { col: _chunkLYGEEDNRcjs.colNameToIndex.call(void 0, match[1].toUpperCase()), row: parseInt(match[2], 10) - 1 };
743
744
  }
744
745
  var COLUMN_REGEX = /^[A-Za-z]{1,3}$/;
745
746
  function parseColumn(name) {
746
747
  if (!COLUMN_REGEX.test(name.trim())) throw new Error(`Invalid column "${name}". Use a letter name, e.g. "C".`);
747
- return _chunkEWCOFSCQcjs.colNameToIndex.call(void 0, name.trim().toUpperCase());
748
+ return _chunkLYGEEDNRcjs.colNameToIndex.call(void 0, name.trim().toUpperCase());
748
749
  }
749
750
  var CELL_INPUT = { type: ["string", "number", "boolean", "null"] };
750
751
  function createSpreadsheetToolProvider(controller, options) {
@@ -793,14 +794,14 @@ function createSpreadsheetToolProvider(controller, options) {
793
794
  const cell = controller.getCell(found.rowDef.id, found.colDef.id);
794
795
  valueRow.push(_nullishCoalesce(cell.error, () => ( cell.value)));
795
796
  rawRow.push(cell.raw);
796
- const error = _nullishCoalesce(cell.error, () => ( (_chunkEWCOFSCQcjs.isFormulaError.call(void 0, cell.value) ? cell.value : void 0)));
797
- if (error) errors.push({ cell: `${_chunkEWCOFSCQcjs.indexToColName.call(void 0, c)}${r + 1}`, error });
797
+ const error = _nullishCoalesce(cell.error, () => ( (_chunkLYGEEDNRcjs.isFormulaError.call(void 0, cell.value) ? cell.value : void 0)));
798
+ if (error) errors.push({ cell: `${_chunkLYGEEDNRcjs.indexToColName.call(void 0, c)}${r + 1}`, error });
798
799
  }
799
800
  values.push(valueRow);
800
801
  raw.push(rawRow);
801
802
  }
802
803
  return {
803
- range: values.length && values[0].length ? `${_chunkEWCOFSCQcjs.indexToColName.call(void 0, c0)}${r0 + 1}:${_chunkEWCOFSCQcjs.indexToColName.call(void 0, c1)}${r1 + 1}` : null,
804
+ range: values.length && values[0].length ? `${_chunkLYGEEDNRcjs.indexToColName.call(void 0, c0)}${r0 + 1}:${_chunkLYGEEDNRcjs.indexToColName.call(void 0, c1)}${r1 + 1}` : null,
804
805
  values,
805
806
  raw,
806
807
  errors,
@@ -879,7 +880,7 @@ function createSpreadsheetToolProvider(controller, options) {
879
880
  const readOnly = [];
880
881
  rows.forEach(
881
882
  (line, r) => line.forEach((_, c) => {
882
- if (isReadOnly(row + r, col + c)) readOnly.push(`${_chunkEWCOFSCQcjs.indexToColName.call(void 0, col + c)}${row + r + 1}`);
883
+ if (isReadOnly(row + r, col + c)) readOnly.push(`${_chunkLYGEEDNRcjs.indexToColName.call(void 0, col + c)}${row + r + 1}`);
883
884
  })
884
885
  );
885
886
  if (readOnly.length) throw new Error(`Read-only cells: ${readOnly.slice(0, 20).join(", ")}. Nothing was written.`);
@@ -888,19 +889,19 @@ function createSpreadsheetToolProvider(controller, options) {
888
889
  { startRow: row, startCol: col }
889
890
  );
890
891
  const width = Math.max(0, ...rows.map((line) => line.length));
891
- const end = `${_chunkEWCOFSCQcjs.indexToColName.call(void 0, col + Math.max(width, 1) - 1)}${row + rows.length}`;
892
+ const end = `${_chunkLYGEEDNRcjs.indexToColName.call(void 0, col + Math.max(width, 1) - 1)}${row + rows.length}`;
892
893
  const errors = [];
893
894
  rows.forEach(
894
895
  (line, r) => line.forEach((_, c) => {
895
896
  const found = lookup(row + r, col + c);
896
897
  if (!found) return;
897
898
  const cell = controller.getCell(found.rowDef.id, found.colDef.id);
898
- const error = _nullishCoalesce(cell.error, () => ( (_chunkEWCOFSCQcjs.isFormulaError.call(void 0, cell.value) ? cell.value : void 0)));
899
- if (error) errors.push({ cell: `${_chunkEWCOFSCQcjs.indexToColName.call(void 0, col + c)}${row + r + 1}`, error: String(error) });
899
+ const error = _nullishCoalesce(cell.error, () => ( (_chunkLYGEEDNRcjs.isFormulaError.call(void 0, cell.value) ? cell.value : void 0)));
900
+ if (error) errors.push({ cell: `${_chunkLYGEEDNRcjs.indexToColName.call(void 0, col + c)}${row + r + 1}`, error: String(error) });
900
901
  })
901
902
  );
902
903
  return {
903
- range: `${_chunkEWCOFSCQcjs.indexToColName.call(void 0, col)}${row + 1}:${end}`,
904
+ range: `${_chunkLYGEEDNRcjs.indexToColName.call(void 0, col)}${row + 1}:${end}`,
904
905
  written: rows.reduce((n, line) => n + line.length, 0),
905
906
  errors,
906
907
  sheet: { rows: controller.document.rows.length, columns: controller.document.columns.length }
@@ -956,7 +957,7 @@ function createSpreadsheetToolProvider(controller, options) {
956
957
  const index = parseColumn(before);
957
958
  if (index > controller.document.columns.length) throw new Error(`Column ${before} is past the end of the sheet (${controller.document.columns.length} columns).`);
958
959
  for (let i = 0; i < count; i++) controller.insertColumn(index);
959
- return { inserted: count, columns: `${_chunkEWCOFSCQcjs.indexToColName.call(void 0, index)}:${_chunkEWCOFSCQcjs.indexToColName.call(void 0, index + count - 1)}`, sheet: sheetSize() };
960
+ return { inserted: count, columns: `${_chunkLYGEEDNRcjs.indexToColName.call(void 0, index)}:${_chunkLYGEEDNRcjs.indexToColName.call(void 0, index + count - 1)}`, sheet: sheetSize() };
960
961
  }
961
962
  );
962
963
  const deleteColumns = structural(
@@ -981,7 +982,7 @@ function createSpreadsheetToolProvider(controller, options) {
981
982
  };
982
983
  }
983
984
  function missingArgumentsMessage(name, args) {
984
- const required = _chunkK2LVZ4FAcjs.EDIT_OPERATION_REQUIRED_ARGUMENTS[name][args.operation];
985
+ const required = _chunkXFYUFVAXcjs.EDIT_OPERATION_REQUIRED_ARGUMENTS[name][args.operation];
985
986
  if (!required) return `Unknown operation "${args.operation}".`;
986
987
  const missing = required.filter(
987
988
  (key) => key === "id" ? args.id === void 0 && _optionalChain([args, 'access', _16 => _16.node, 'optionalAccess', _17 => _17.id]) === void 0 : args[key] === void 0
@@ -1018,10 +1019,10 @@ function createEditorMcpToolProvider(options) {
1018
1019
  };
1019
1020
  const canvas = _nullishCoalesce(_optionalChain([options, 'access', _18 => _18.surfaces, 'optionalAccess', _19 => _19.canvas]), () => ( true));
1020
1021
  const prompt = _nullishCoalesce(_optionalChain([options, 'access', _20 => _20.surfaces, 'optionalAccess', _21 => _21.prompt]), () => ( true));
1021
- const editTools = options.toolStyle === "combined" ? [...canvas ? [_chunkK2LVZ4FAcjs.MCP_TOOL_EDIT_CANVAS] : [], ...prompt ? [_chunkK2LVZ4FAcjs.MCP_TOOL_EDIT_PROMPT] : []] : [...canvas ? _chunkK2LVZ4FAcjs.EDITOR_CANVAS_TOOLS : [], ...prompt ? _chunkK2LVZ4FAcjs.EDITOR_PROMPT_TOOLS : []];
1022
+ const editTools = options.toolStyle === "combined" ? [...canvas ? [_chunkXFYUFVAXcjs.MCP_TOOL_EDIT_CANVAS] : [], ...prompt ? [_chunkXFYUFVAXcjs.MCP_TOOL_EDIT_PROMPT] : []] : [...canvas ? _chunkXFYUFVAXcjs.EDITOR_CANVAS_TOOLS : [], ...prompt ? _chunkXFYUFVAXcjs.EDITOR_PROMPT_TOOLS : []];
1022
1023
  const tools = [
1023
1024
  {
1024
- ..._chunkK2LVZ4FAcjs.MCP_TOOL_GET_EDITOR_STATE,
1025
+ ..._chunkXFYUFVAXcjs.MCP_TOOL_GET_EDITOR_STATE,
1025
1026
  handler: ({ includeDocument = true, includeCanvas = true }) => {
1026
1027
  const snapshot = options.getSnapshot();
1027
1028
  return {
@@ -1035,7 +1036,7 @@ function createEditorMcpToolProvider(options) {
1035
1036
  if (options.captureView) {
1036
1037
  const capture = options.captureView;
1037
1038
  tools.push({
1038
- ..._chunkK2LVZ4FAcjs.MCP_TOOL_VIEW_EDITOR,
1039
+ ..._chunkXFYUFVAXcjs.MCP_TOOL_VIEW_EDITOR,
1039
1040
  handler: async (args) => {
1040
1041
  const image = await capture(args);
1041
1042
  return { content: [{ type: "image", data: image.data, mimeType: image.mimeType }] };
@@ -1279,5 +1280,5 @@ function createCanvasComponentToolProvider(controller, options = { id: "canvas-c
1279
1280
 
1280
1281
 
1281
1282
 
1282
- exports.EDITOR_CANVAS_TOOLS = _chunkK2LVZ4FAcjs.EDITOR_CANVAS_TOOLS; exports.EDITOR_MCP_TOOLS = _chunkK2LVZ4FAcjs.EDITOR_MCP_TOOLS; exports.EDITOR_PROMPT_TOOLS = _chunkK2LVZ4FAcjs.EDITOR_PROMPT_TOOLS; exports.EDIT_OPERATION_REQUIRED_ARGUMENTS = _chunkK2LVZ4FAcjs.EDIT_OPERATION_REQUIRED_ARGUMENTS; exports.EXPORT_EXCLUDED_SELECTORS = _chunkK2LVZ4FAcjs.EXPORT_EXCLUDED_SELECTORS; exports.JSON_RPC_ERRORS = _chunkK2LVZ4FAcjs.JSON_RPC_ERRORS; exports.MCP_PROTOCOL_VERSIONS = _chunkK2LVZ4FAcjs.MCP_PROTOCOL_VERSIONS; exports.MCP_TOOL_CANVAS_ADD_NODE = _chunkK2LVZ4FAcjs.MCP_TOOL_CANVAS_ADD_NODE; exports.MCP_TOOL_CANVAS_CONNECT = _chunkK2LVZ4FAcjs.MCP_TOOL_CANVAS_CONNECT; exports.MCP_TOOL_CANVAS_HIGHLIGHT = _chunkK2LVZ4FAcjs.MCP_TOOL_CANVAS_HIGHLIGHT; exports.MCP_TOOL_CANVAS_LAYOUT = _chunkK2LVZ4FAcjs.MCP_TOOL_CANVAS_LAYOUT; exports.MCP_TOOL_CANVAS_REMOVE_NODES = _chunkK2LVZ4FAcjs.MCP_TOOL_CANVAS_REMOVE_NODES; exports.MCP_TOOL_CANVAS_SELECT = _chunkK2LVZ4FAcjs.MCP_TOOL_CANVAS_SELECT; exports.MCP_TOOL_CANVAS_UPDATE_NODE = _chunkK2LVZ4FAcjs.MCP_TOOL_CANVAS_UPDATE_NODE; exports.MCP_TOOL_EDIT_CANVAS = _chunkK2LVZ4FAcjs.MCP_TOOL_EDIT_CANVAS; exports.MCP_TOOL_EDIT_PROMPT = _chunkK2LVZ4FAcjs.MCP_TOOL_EDIT_PROMPT; exports.MCP_TOOL_GET_EDITOR_STATE = _chunkK2LVZ4FAcjs.MCP_TOOL_GET_EDITOR_STATE; exports.MCP_TOOL_PROMPT_INSERT_TEXT = _chunkK2LVZ4FAcjs.MCP_TOOL_PROMPT_INSERT_TEXT; exports.MCP_TOOL_PROMPT_REPLACE_RANGE = _chunkK2LVZ4FAcjs.MCP_TOOL_PROMPT_REPLACE_RANGE; exports.MCP_TOOL_PROMPT_SELECT = _chunkK2LVZ4FAcjs.MCP_TOOL_PROMPT_SELECT; exports.MCP_TOOL_PROMPT_SET_VARIABLE = _chunkK2LVZ4FAcjs.MCP_TOOL_PROMPT_SET_VARIABLE; exports.MCP_TOOL_VIEW_EDITOR = _chunkK2LVZ4FAcjs.MCP_TOOL_VIEW_EDITOR; exports.TOOL_NAMESPACE_SEPARATOR = _chunkK2LVZ4FAcjs.TOOL_NAMESPACE_SEPARATOR; exports.ToolRegistry = _chunkK2LVZ4FAcjs.ToolRegistry; exports.ToolRegistryError = _chunkK2LVZ4FAcjs.ToolRegistryError; exports.createCanvasComponentToolProvider = createCanvasComponentToolProvider; exports.createEditorMcpToolProvider = createEditorMcpToolProvider; exports.createMcpServer = _chunkK2LVZ4FAcjs.createMcpServer; exports.createRichTextToolProvider = createRichTextToolProvider; exports.createSpreadsheetToolProvider = createSpreadsheetToolProvider; exports.createToolRegistry = _chunkK2LVZ4FAcjs.createToolRegistry; exports.normalizeSide = normalizeSide; exports.planAgentCommand = planAgentCommand; exports.planToolCall = planToolCall; exports.toToolResult = _chunkK2LVZ4FAcjs.toToolResult; exports.toolCallToAgentCommand = toolCallToAgentCommand; exports.validateAgentCommand = validateAgentCommand; exports.validateJsonSchema = _chunkEFDCLENWcjs.validateJsonSchema;
1283
+ exports.EDITOR_CANVAS_TOOLS = _chunkXFYUFVAXcjs.EDITOR_CANVAS_TOOLS; exports.EDITOR_MCP_TOOLS = _chunkXFYUFVAXcjs.EDITOR_MCP_TOOLS; exports.EDITOR_PROMPT_TOOLS = _chunkXFYUFVAXcjs.EDITOR_PROMPT_TOOLS; exports.EDIT_OPERATION_REQUIRED_ARGUMENTS = _chunkXFYUFVAXcjs.EDIT_OPERATION_REQUIRED_ARGUMENTS; exports.EXPORT_EXCLUDED_SELECTORS = _chunkXFYUFVAXcjs.EXPORT_EXCLUDED_SELECTORS; exports.JSON_RPC_ERRORS = _chunkXFYUFVAXcjs.JSON_RPC_ERRORS; exports.MCP_PROTOCOL_VERSIONS = _chunkXFYUFVAXcjs.MCP_PROTOCOL_VERSIONS; exports.MCP_TOOL_CANVAS_ADD_NODE = _chunkXFYUFVAXcjs.MCP_TOOL_CANVAS_ADD_NODE; exports.MCP_TOOL_CANVAS_CONNECT = _chunkXFYUFVAXcjs.MCP_TOOL_CANVAS_CONNECT; exports.MCP_TOOL_CANVAS_HIGHLIGHT = _chunkXFYUFVAXcjs.MCP_TOOL_CANVAS_HIGHLIGHT; exports.MCP_TOOL_CANVAS_LAYOUT = _chunkXFYUFVAXcjs.MCP_TOOL_CANVAS_LAYOUT; exports.MCP_TOOL_CANVAS_REMOVE_NODES = _chunkXFYUFVAXcjs.MCP_TOOL_CANVAS_REMOVE_NODES; exports.MCP_TOOL_CANVAS_SELECT = _chunkXFYUFVAXcjs.MCP_TOOL_CANVAS_SELECT; exports.MCP_TOOL_CANVAS_UPDATE_NODE = _chunkXFYUFVAXcjs.MCP_TOOL_CANVAS_UPDATE_NODE; exports.MCP_TOOL_EDIT_CANVAS = _chunkXFYUFVAXcjs.MCP_TOOL_EDIT_CANVAS; exports.MCP_TOOL_EDIT_PROMPT = _chunkXFYUFVAXcjs.MCP_TOOL_EDIT_PROMPT; exports.MCP_TOOL_GET_EDITOR_STATE = _chunkXFYUFVAXcjs.MCP_TOOL_GET_EDITOR_STATE; exports.MCP_TOOL_PROMPT_INSERT_TEXT = _chunkXFYUFVAXcjs.MCP_TOOL_PROMPT_INSERT_TEXT; exports.MCP_TOOL_PROMPT_REPLACE_RANGE = _chunkXFYUFVAXcjs.MCP_TOOL_PROMPT_REPLACE_RANGE; exports.MCP_TOOL_PROMPT_SELECT = _chunkXFYUFVAXcjs.MCP_TOOL_PROMPT_SELECT; exports.MCP_TOOL_PROMPT_SET_VARIABLE = _chunkXFYUFVAXcjs.MCP_TOOL_PROMPT_SET_VARIABLE; exports.MCP_TOOL_VIEW_EDITOR = _chunkXFYUFVAXcjs.MCP_TOOL_VIEW_EDITOR; exports.TOOL_NAMESPACE_SEPARATOR = _chunkXFYUFVAXcjs.TOOL_NAMESPACE_SEPARATOR; exports.ToolRegistry = _chunkXFYUFVAXcjs.ToolRegistry; exports.ToolRegistryError = _chunkXFYUFVAXcjs.ToolRegistryError; exports.createCanvasComponentToolProvider = createCanvasComponentToolProvider; exports.createEditorMcpToolProvider = createEditorMcpToolProvider; exports.createMcpServer = _chunkXFYUFVAXcjs.createMcpServer; exports.createRichTextToolProvider = createRichTextToolProvider; exports.createSpreadsheetToolProvider = createSpreadsheetToolProvider; exports.createToolRegistry = _chunkXFYUFVAXcjs.createToolRegistry; exports.normalizeSide = normalizeSide; exports.planAgentCommand = planAgentCommand; exports.planToolCall = planToolCall; exports.toToolResult = _chunkXFYUFVAXcjs.toToolResult; exports.toolCallToAgentCommand = toolCallToAgentCommand; exports.validateAgentCommand = validateAgentCommand; exports.validateJsonSchema = _chunkRIWPYSKUcjs.validateJsonSchema;
1283
1284
  //# sourceMappingURL=index.cjs.map