Skip to content

feat(office): add transactional XLSX create and batch#173

Draft
bobzhang wants to merge 10 commits into
agent/office-x2-xlsx-readfrom
agent/office-x3-xlsx-batch
Draft

feat(office): add transactional XLSX create and batch#173
bobzhang wants to merge 10 commits into
agent/office-x2-xlsx-readfrom
agent/office-x3-xlsx-batch

Conversation

@bobzhang

Copy link
Copy Markdown
Collaborator

Summary

  • add a reusable async fresh-package transaction with bounded validation and atomic publication
  • add strict resource-accounted xlsx.batch/1 plans and a shared transactional XLSX mutation SDK
  • expose canonical office create xlsx and office batch commands with versioned JSON results, capability discovery, and stable errors
  • reuse the strict plan parser in the legacy XLSX CLI
  • cover native/Wasm behavior, Cram CLI flows, and Microsoft DocumentFormat.OpenXml validity

Why

This closes the X3 parity gap with OfficeCLI while keeping mutation safety, limits, and publication semantics in one future-proof transaction boundary. It uses moonbitlang/async throughout and introduces no C stubs.

Impact

Agents can now create validated XLSX packages and apply bounded multi-operation scripts atomically. Creation is no-replace by default, separate batch outputs require explicit overwrite, dry runs perform full validation, zero-op in-place batches preserve source bytes, and changed batches report full-workbook rewrite preservation evidence.

This is stacked on #172 (agent/office-x2-xlsx-read) so the PR diff contains only X3. Merge #172 first, then retarget this PR to main.

Validation

  • moon info && moon fmt (source clean; known moon.pkg formatter migration restored)
  • moon check
  • moon check --target wasm
  • moon test --target native — 4,938 passed
  • moon test --target wasm — 4,284 passed
  • focused batch/Office/XLSX native, Wasm, and JS suites
  • Office CLI Cram — 127 passed
  • Microsoft DocumentFormat.OpenXml SDK acceptance — passed
  • native and Wasm CLI create/batch/readback smoke tests

Closes #162

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant