@beyondwork/docx-react-component 1.0.0 → 1.0.1

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 (704) hide show
  1. package/dist/chunk-32W6IVQE.js +7725 -0
  2. package/dist/chunk-32W6IVQE.js.map +1 -0
  3. package/dist/index.cjs +23722 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +7 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.js +16011 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/public-types-DqCURAz8.d.cts +1152 -0
  10. package/dist/public-types-DqCURAz8.d.ts +1152 -0
  11. package/dist/tailwind.cjs +8295 -0
  12. package/dist/tailwind.cjs.map +1 -0
  13. package/dist/tailwind.d.cts +323 -0
  14. package/dist/tailwind.d.ts +323 -0
  15. package/dist/tailwind.js +553 -0
  16. package/dist/tailwind.js.map +1 -0
  17. package/package.json +52 -31
  18. package/.codex/config.toml +0 -5
  19. package/.corepack/v1/pnpm/10.30.3/.corepack +0 -1
  20. package/.corepack/v1/pnpm/10.30.3/LICENSE +0 -22
  21. package/.corepack/v1/pnpm/10.30.3/README.md +0 -240
  22. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +0 -6
  23. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +0 -5
  24. package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +0 -195400
  25. package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +0 -2
  26. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-arm64-2HJ4WGO6.node +0 -0
  27. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-x64-3G3H6IW4.node +0 -0
  28. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-arm64-msvc-Q6BARPPB.node +0 -0
  29. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-x64-msvc-J2TZHRQI.node +0 -0
  30. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.bash +0 -31
  31. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +0 -22
  32. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +0 -193
  33. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +0 -27
  34. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  35. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  36. package/.corepack/v1/pnpm/10.30.3/dist/worker.js +0 -10119
  37. package/.corepack/v1/pnpm/10.30.3/package.json +0 -192
  38. package/.cursor/mcp.json +0 -7
  39. package/.github/workflows/ci.yml +0 -35
  40. package/.mcp.json +0 -7
  41. package/.openclaw/workspace-state.json +0 -4
  42. package/.pnpmrc.json +0 -1
  43. package/.wave-launch.sh +0 -7
  44. package/.workspace-marker +0 -1
  45. package/AGENTS.md +0 -78
  46. package/CHANGELOG.md +0 -177
  47. package/DESIGN.md +0 -929
  48. package/HEARTBEAT.md +0 -7
  49. package/IDENTITY.md +0 -23
  50. package/SOUL.md +0 -36
  51. package/TOOLS.md +0 -40
  52. package/USER.md +0 -17
  53. package/docs/README.md +0 -107
  54. package/docs/agents/wave-cont-eval-role.md +0 -36
  55. package/docs/agents/wave-cont-qa-role.md +0 -52
  56. package/docs/agents/wave-deploy-verifier-role.md +0 -34
  57. package/docs/agents/wave-design-role.md +0 -47
  58. package/docs/agents/wave-documentation-role.md +0 -34
  59. package/docs/agents/wave-infra-role.md +0 -34
  60. package/docs/agents/wave-integration-role.md +0 -37
  61. package/docs/agents/wave-launcher-role.md +0 -41
  62. package/docs/agents/wave-orchestrator-role.md +0 -52
  63. package/docs/agents/wave-planner-role.md +0 -39
  64. package/docs/agents/wave-security-role.md +0 -40
  65. package/docs/architecture/docx/README.md +0 -10
  66. package/docs/architecture/future/README.md +0 -8
  67. package/docs/architecture/ooxml-upgrade-analysis.md +0 -134
  68. package/docs/architecture/platform/shared-openxml-editor-platform.md +0 -153
  69. package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +0 -187
  70. package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +0 -150
  71. package/docs/comment-redline-overview.md +0 -350
  72. package/docs/concepts/context7-vs-skills.md +0 -118
  73. package/docs/concepts/operating-modes.md +0 -91
  74. package/docs/concepts/runtime-agnostic-orchestration.md +0 -111
  75. package/docs/concepts/what-is-a-wave.md +0 -217
  76. package/docs/context7/bundles.json +0 -222
  77. package/docs/context7/planner-agent/README.md +0 -28
  78. package/docs/context7/planner-agent/manifest.json +0 -83
  79. package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +0 -3283
  80. package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +0 -1699
  81. package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +0 -2251
  82. package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +0 -1729
  83. package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +0 -3747
  84. package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +0 -1675
  85. package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +0 -1173
  86. package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +0 -5211
  87. package/docs/context7/planner-agent/topics/planning-and-orchestration.md +0 -24
  88. package/docs/evals/arm-templates/README.md +0 -13
  89. package/docs/evals/arm-templates/full-wave.json +0 -15
  90. package/docs/evals/arm-templates/single-agent.json +0 -15
  91. package/docs/evals/benchmark-catalog.json +0 -670
  92. package/docs/evals/cases/README.md +0 -47
  93. package/docs/evals/cases/wave-blackboard-inbox-targeting.json +0 -73
  94. package/docs/evals/cases/wave-contradiction-conflict.json +0 -104
  95. package/docs/evals/cases/wave-expert-routing-preservation.json +0 -69
  96. package/docs/evals/cases/wave-hidden-profile-private-evidence.json +0 -81
  97. package/docs/evals/cases/wave-premature-closure-guard.json +0 -71
  98. package/docs/evals/cases/wave-silo-cross-agent-state.json +0 -77
  99. package/docs/evals/cases/wave-simultaneous-lockstep.json +0 -92
  100. package/docs/evals/external-benchmarks.json +0 -85
  101. package/docs/evals/external-command-config.sample.json +0 -9
  102. package/docs/evals/external-command-config.swe-bench-pro.json +0 -8
  103. package/docs/evals/pilots/README.md +0 -47
  104. package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +0 -64
  105. package/docs/evals/pilots/swe-bench-pro-public-pilot.json +0 -111
  106. package/docs/evals/wave-benchmark-program.md +0 -302
  107. package/docs/guides/planner.md +0 -220
  108. package/docs/guides/recommendations-0.8.9.md +0 -133
  109. package/docs/guides/signal-wrappers.md +0 -165
  110. package/docs/guides/terminal-surfaces.md +0 -96
  111. package/docs/image copy.png +0 -0
  112. package/docs/image.png +0 -0
  113. package/docs/images/image.png +0 -0
  114. package/docs/legal-feedback-architecture.md +0 -498
  115. package/docs/plans/component-cutover-matrix.json +0 -1072
  116. package/docs/plans/component-cutover-matrix.md +0 -307
  117. package/docs/plans/context7-wave-orchestrator.md +0 -155
  118. package/docs/plans/current-state.md +0 -198
  119. package/docs/plans/docx/README.md +0 -9
  120. package/docs/plans/examples/wave-benchmark-improvement.md +0 -108
  121. package/docs/plans/examples/wave-example-live-proof.md +0 -435
  122. package/docs/plans/master-plan.md +0 -224
  123. package/docs/plans/migration.md +0 -538
  124. package/docs/plans/operations/README.md +0 -7
  125. package/docs/plans/operations/wave-10-word-certification.md +0 -87
  126. package/docs/plans/operations/wave-8-railway-staging.md +0 -153
  127. package/docs/plans/operations/wave-9-manual-certification.md +0 -73
  128. package/docs/plans/platform/README.md +0 -9
  129. package/docs/plans/reference/legal-checklist-coverage.md +0 -258
  130. package/docs/plans/wave-orchestrator.md +0 -423
  131. package/docs/plans/waves/README.md +0 -75
  132. package/docs/plans/waves/completed/wave-0.md +0 -195
  133. package/docs/plans/waves/completed/wave-1.md +0 -379
  134. package/docs/plans/waves/completed/wave-10.md +0 -670
  135. package/docs/plans/waves/completed/wave-11.md +0 -335
  136. package/docs/plans/waves/completed/wave-12.md +0 -417
  137. package/docs/plans/waves/completed/wave-13.md +0 -316
  138. package/docs/plans/waves/completed/wave-14.md +0 -319
  139. package/docs/plans/waves/completed/wave-15.md +0 -321
  140. package/docs/plans/waves/completed/wave-16.md +0 -316
  141. package/docs/plans/waves/completed/wave-17.md +0 -331
  142. package/docs/plans/waves/completed/wave-18.md +0 -328
  143. package/docs/plans/waves/completed/wave-2.md +0 -438
  144. package/docs/plans/waves/completed/wave-3.md +0 -435
  145. package/docs/plans/waves/completed/wave-4.md +0 -430
  146. package/docs/plans/waves/completed/wave-5.md +0 -430
  147. package/docs/plans/waves/completed/wave-6.md +0 -430
  148. package/docs/plans/waves/completed/wave-7.md +0 -526
  149. package/docs/plans/waves/completed/wave-8.md +0 -596
  150. package/docs/plans/waves/completed/wave-9.md +0 -552
  151. package/docs/plans/waves/deferred/README.md +0 -14
  152. package/docs/plans/waves/deferred/encrypted-intake-contracts.md +0 -282
  153. package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +0 -308
  154. package/docs/plans/waves/deferred/wave-encrypted-intake.md +0 -451
  155. package/docs/plans/waves/design/README.md +0 -5
  156. package/docs/plans/waves/design/wave-1-a1.md +0 -309
  157. package/docs/plans/waves/reviews/README.md +0 -5
  158. package/docs/plans/waves/reviews/wave-0-cont-qa.md +0 -151
  159. package/docs/plans/waves/reviews/wave-1-cont-qa.md +0 -46
  160. package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +0 -51
  161. package/docs/plans/waves/reviews/wave-10-cont-qa.md +0 -24
  162. package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +0 -46
  163. package/docs/plans/waves/reviews/wave-10-performance-signoff.md +0 -55
  164. package/docs/plans/waves/reviews/wave-10-regression-proof.md +0 -23
  165. package/docs/plans/waves/reviews/wave-10-release-audit.md +0 -31
  166. package/docs/plans/waves/reviews/wave-10-service-proof.md +0 -83
  167. package/docs/plans/waves/reviews/wave-10-word-certification.md +0 -31
  168. package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +0 -277
  169. package/docs/plans/waves/reviews/wave-18-cont-qa.md +0 -255
  170. package/docs/plans/waves/reviews/wave-18-parity-proof.md +0 -271
  171. package/docs/plans/waves/reviews/wave-19-cont-qa.md +0 -59
  172. package/docs/plans/waves/reviews/wave-2-cont-qa.md +0 -72
  173. package/docs/plans/waves/reviews/wave-20-cont-qa.md +0 -60
  174. package/docs/plans/waves/reviews/wave-25-cont-qa.md +0 -48
  175. package/docs/plans/waves/reviews/wave-28-cont-qa.md +0 -46
  176. package/docs/plans/waves/reviews/wave-29-cont-qa.md +0 -53
  177. package/docs/plans/waves/reviews/wave-3-cont-qa.md +0 -53
  178. package/docs/plans/waves/reviews/wave-3-core-proof.md +0 -77
  179. package/docs/plans/waves/reviews/wave-3-validator-proof.md +0 -73
  180. package/docs/plans/waves/reviews/wave-32-cont-qa.md +0 -43
  181. package/docs/plans/waves/reviews/wave-33-cont-qa.md +0 -526
  182. package/docs/plans/waves/reviews/wave-34-cont-qa.md +0 -100
  183. package/docs/plans/waves/reviews/wave-35-cont-qa.md +0 -145
  184. package/docs/plans/waves/reviews/wave-4-cont-qa.md +0 -47
  185. package/docs/plans/waves/reviews/wave-4-structure-proof.md +0 -69
  186. package/docs/plans/waves/reviews/wave-5-comment-proof.md +0 -158
  187. package/docs/plans/waves/reviews/wave-5-cont-qa.md +0 -68
  188. package/docs/plans/waves/reviews/wave-6-cont-qa.md +0 -416
  189. package/docs/plans/waves/reviews/wave-6-redline-proof.md +0 -130
  190. package/docs/plans/waves/reviews/wave-7-cont-qa.md +0 -82
  191. package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +0 -85
  192. package/docs/plans/waves/reviews/wave-7-preservation-proof.md +0 -119
  193. package/docs/plans/waves/reviews/wave-7-trust-ux.md +0 -87
  194. package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +0 -128
  195. package/docs/plans/waves/reviews/wave-8-cont-qa.md +0 -92
  196. package/docs/plans/waves/reviews/wave-8-live-proof.md +0 -140
  197. package/docs/plans/waves/reviews/wave-8-security.md +0 -47
  198. package/docs/plans/waves/reviews/wave-9-editor-embedding.md +0 -39
  199. package/docs/plans/waves/reviews/wave-9-fixture-runner.md +0 -56
  200. package/docs/plans/waves/reviews/wave-9-live-proof.md +0 -105
  201. package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +0 -152
  202. package/docs/plans/waves/specs/README.md +0 -5
  203. package/docs/plans/waves/specs/wave-1-component-boundaries.md +0 -322
  204. package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +0 -323
  205. package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +0 -339
  206. package/docs/plans/waves/specs/wave-1-runtime-contracts.md +0 -509
  207. package/docs/plans/waves/wave-19.md +0 -341
  208. package/docs/plans/waves/wave-20.md +0 -308
  209. package/docs/plans/waves/wave-21.md +0 -289
  210. package/docs/plans/waves/wave-22.md +0 -221
  211. package/docs/plans/waves/wave-23.md +0 -295
  212. package/docs/plans/waves/wave-24.md +0 -286
  213. package/docs/plans/waves/wave-25.md +0 -313
  214. package/docs/plans/waves/wave-26.md +0 -300
  215. package/docs/plans/waves/wave-27.md +0 -299
  216. package/docs/plans/waves/wave-28.md +0 -368
  217. package/docs/plans/waves/wave-29.md +0 -303
  218. package/docs/plans/waves/wave-30.md +0 -307
  219. package/docs/plans/waves/wave-31.md +0 -231
  220. package/docs/plans/waves/wave-32.md +0 -152
  221. package/docs/plans/waves/wave-33.md +0 -147
  222. package/docs/plans/waves/wave-34.md +0 -148
  223. package/docs/plans/waves/wave-35.md +0 -141
  224. package/docs/plans/waves/wave-36.md +0 -146
  225. package/docs/plans/xlsx/README.md +0 -14
  226. package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +0 -126
  227. package/docs/reference/cli-reference.md +0 -600
  228. package/docs/reference/coordination-and-closure.md +0 -487
  229. package/docs/reference/deep-research-report (15).md +0 -25
  230. package/docs/reference/docx/README.md +0 -10
  231. package/docs/reference/legal-checklist.md +0 -445
  232. package/docs/reference/live-proof-waves.md +0 -199
  233. package/docs/reference/ooxml-compliance.md +0 -129
  234. package/docs/reference/ooxml-feature-parity-matrix.md +0 -172
  235. package/docs/reference/platform/shared-ooxml-platform-guidance.md +0 -77
  236. package/docs/reference/prototype-agent-prompt-legal-fidelity.md +0 -155
  237. package/docs/reference/public-api.md +0 -456
  238. package/docs/reference/repository-guidance.md +0 -58
  239. package/docs/reference/runtime-config/README.md +0 -182
  240. package/docs/reference/runtime-config/claude.md +0 -110
  241. package/docs/reference/runtime-config/codex.md +0 -82
  242. package/docs/reference/runtime-config/opencode.md +0 -93
  243. package/docs/reference/sample-waves.md +0 -105
  244. package/docs/reference/skills.md +0 -237
  245. package/docs/reference/templates/AGENTS.md +0 -78
  246. package/docs/reference/templates/HEARTBEAT.md +0 -7
  247. package/docs/reference/templates/IDENTITY.md +0 -23
  248. package/docs/reference/templates/SOUL.md +0 -36
  249. package/docs/reference/templates/TOOLS.md +0 -40
  250. package/docs/reference/templates/USER.md +0 -17
  251. package/docs/reference/wave-control.md +0 -184
  252. package/docs/reference/wave-planning-lessons.md +0 -167
  253. package/docs/reference/word-review-editor-frontend-architecture.md +0 -479
  254. package/docs/reference/word-review-editor-ux-guide.md +0 -253
  255. package/docs/reference/xlsx/xlsx-ooxml-compliance.md +0 -137
  256. package/docs/research/agent-context-sources.md +0 -178
  257. package/docs/research/coordination-failure-review.md +0 -290
  258. package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +0 -2317
  259. package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +0 -219
  260. package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +0 -1112
  261. package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +0 -751
  262. package/docs/research/xlsx/raw/README.md +0 -13
  263. package/docs/roadmap.md +0 -174
  264. package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +0 -677
  265. package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +0 -274
  266. package/docs/xlsx-react/README.md +0 -38
  267. package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +0 -621
  268. package/docs/xlsx-react/canonical-workbook-model-and-commands.md +0 -948
  269. package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +0 -228
  270. package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +0 -809
  271. package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +0 -537
  272. package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +0 -520
  273. package/docs/xlsx-react/xlsx-editor-research-pack.md +0 -871
  274. package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +0 -436
  275. package/docs/xlsx-react/xlsx-ooxml-compliance.md +0 -320
  276. package/examples/README.md +0 -16
  277. package/memory/MEMORY.md +0 -24
  278. package/pnpm-workspace.yaml +0 -4
  279. package/scripts/check-no-authored-js.sh +0 -13
  280. package/scripts/context7-api-check.sh +0 -65
  281. package/scripts/context7-export-env.sh +0 -42
  282. package/scripts/run-context7-mcp.sh +0 -8
  283. package/scripts/run-workspace-tests.sh +0 -15
  284. package/scripts/start-wave-10-local.sh +0 -189
  285. package/scripts/wave-agent-attach.sh +0 -47
  286. package/scripts/wave-auto-answer.sh +0 -118
  287. package/scripts/wave-dashboard-attach.sh +0 -13
  288. package/scripts/wave-launch.sh +0 -273
  289. package/scripts/wave-overnight-supervisor.sh +0 -145
  290. package/scripts/wave-status.sh +0 -379
  291. package/scripts/wave-watch.sh +0 -231
  292. package/services/README.md +0 -17
  293. package/services/openxml-validator/Dockerfile +0 -29
  294. package/services/openxml-validator/OpenXmlValidator.Api.csproj +0 -12
  295. package/services/openxml-validator/Program.cs +0 -436
  296. package/services/openxml-validator/README.md +0 -152
  297. package/services/openxml-validator/railway.json +0 -16
  298. package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +0 -318
  299. package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +0 -1302
  300. package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +0 -546
  301. package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +0 -146
  302. package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +0 -2
  303. package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +0 -818
  304. package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +0 -229
  305. package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +0 -121
  306. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +0 -21
  307. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +0 -1
  308. package/services/react-word-editor/Dockerfile +0 -26
  309. package/services/react-word-editor/README.md +0 -254
  310. package/services/react-word-editor/app/api/certification/route.ts +0 -79
  311. package/services/react-word-editor/app/api/demo-sessions/route.ts +0 -109
  312. package/services/react-word-editor/app/api/deploy-health/route.ts +0 -23
  313. package/services/react-word-editor/app/api/exports/[exportId]/route.ts +0 -34
  314. package/services/react-word-editor/app/api/exports/route.ts +0 -81
  315. package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +0 -100
  316. package/services/react-word-editor/app/api/health/route.ts +0 -70
  317. package/services/react-word-editor/app/api/runs/[runId]/route.ts +0 -36
  318. package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +0 -85
  319. package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +0 -199
  320. package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +0 -45
  321. package/services/react-word-editor/app/api/uploads/route.ts +0 -70
  322. package/services/react-word-editor/app/api/validate/route.ts +0 -310
  323. package/services/react-word-editor/app/certification/[runId]/page.tsx +0 -14
  324. package/services/react-word-editor/app/certification/page.tsx +0 -32
  325. package/services/react-word-editor/app/dashboard/page.tsx +0 -7
  326. package/services/react-word-editor/app/demo/page.tsx +0 -30
  327. package/services/react-word-editor/app/demo/prototype-client.tsx +0 -1080
  328. package/services/react-word-editor/app/editor/[sessionId]/page.tsx +0 -33
  329. package/services/react-word-editor/app/fixtures/page.tsx +0 -7
  330. package/services/react-word-editor/app/globals.css +0 -121
  331. package/services/react-word-editor/app/layout.tsx +0 -32
  332. package/services/react-word-editor/app/page.tsx +0 -30
  333. package/services/react-word-editor/app/runs/[runId]/page.tsx +0 -34
  334. package/services/react-word-editor/app/wave-10-word-review/page.tsx +0 -7
  335. package/services/react-word-editor/components/harness-control-bar.tsx +0 -289
  336. package/services/react-word-editor/components/harness-editor-session-client.tsx +0 -1214
  337. package/services/react-word-editor/components/harness-workspace-page.tsx +0 -715
  338. package/services/react-word-editor/components/reduced-motion-toggle.tsx +0 -79
  339. package/services/react-word-editor/components/workspace-certification-panel.tsx +0 -307
  340. package/services/react-word-editor/lib/certification-bundle.ts +0 -796
  341. package/services/react-word-editor/lib/certification-store.ts +0 -661
  342. package/services/react-word-editor/lib/demo-fixtures.test.mjs +0 -195
  343. package/services/react-word-editor/lib/demo-fixtures.ts +0 -1519
  344. package/services/react-word-editor/lib/editor-session-summary.test.mjs +0 -68
  345. package/services/react-word-editor/lib/editor-session-summary.ts +0 -14
  346. package/services/react-word-editor/lib/editor-session.ts +0 -228
  347. package/services/react-word-editor/lib/exports-route.test.mjs +0 -32
  348. package/services/react-word-editor/lib/harness-client.ts +0 -347
  349. package/services/react-word-editor/lib/harness-config.json +0 -30
  350. package/services/react-word-editor/lib/harness-config.test.mjs +0 -31
  351. package/services/react-word-editor/lib/harness-config.ts +0 -21
  352. package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +0 -220
  353. package/services/react-word-editor/lib/harness-editor-datastore.ts +0 -161
  354. package/services/react-word-editor/lib/private-mode.test.mjs +0 -42
  355. package/services/react-word-editor/lib/private-mode.ts +0 -61
  356. package/services/react-word-editor/lib/regression-report.test.mjs +0 -352
  357. package/services/react-word-editor/lib/regression-report.ts +0 -896
  358. package/services/react-word-editor/lib/run-artifacts.ts +0 -934
  359. package/services/react-word-editor/lib/run-history.ts +0 -755
  360. package/services/react-word-editor/lib/scenario-artifacts.test.mjs +0 -41
  361. package/services/react-word-editor/lib/scenario-artifacts.ts +0 -44
  362. package/services/react-word-editor/lib/storage.ts +0 -953
  363. package/services/react-word-editor/lib/validator-client.test.mjs +0 -54
  364. package/services/react-word-editor/lib/validator-client.ts +0 -95
  365. package/services/react-word-editor/lib/workspace-navigation.ts +0 -79
  366. package/services/react-word-editor/middleware.ts +0 -35
  367. package/services/react-word-editor/next-env.d.ts +0 -6
  368. package/services/react-word-editor/next.config.mjs +0 -15
  369. package/services/react-word-editor/package.json +0 -38
  370. package/services/react-word-editor/postcss.config.mjs +0 -8
  371. package/services/react-word-editor/railway.json +0 -21
  372. package/services/react-word-editor/scripts/wave-10-certification.mjs +0 -101
  373. package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +0 -911
  374. package/services/react-word-editor/tsconfig.json +0 -39
  375. package/services/react-word-editor/tsconfig.tsbuildinfo +0 -1
  376. package/skills/README.md +0 -48
  377. package/skills/domain-docx-compatibility/SKILL.md +0 -44
  378. package/skills/domain-docx-compatibility/skill.json +0 -19
  379. package/skills/domain-editor-architecture/SKILL.md +0 -49
  380. package/skills/domain-editor-architecture/skill.json +0 -19
  381. package/skills/domain-legal-review/SKILL.md +0 -39
  382. package/skills/domain-legal-review/skill.json +0 -19
  383. package/skills/provider-aws/SKILL.md +0 -117
  384. package/skills/provider-aws/adapters/claude.md +0 -1
  385. package/skills/provider-aws/adapters/codex.md +0 -1
  386. package/skills/provider-aws/references/service-verification.md +0 -39
  387. package/skills/provider-aws/skill.json +0 -54
  388. package/skills/provider-custom-deploy/SKILL.md +0 -64
  389. package/skills/provider-custom-deploy/skill.json +0 -50
  390. package/skills/provider-docker-compose/SKILL.md +0 -96
  391. package/skills/provider-docker-compose/adapters/local.md +0 -1
  392. package/skills/provider-docker-compose/skill.json +0 -53
  393. package/skills/provider-github-release/SKILL.md +0 -121
  394. package/skills/provider-github-release/adapters/claude.md +0 -1
  395. package/skills/provider-github-release/adapters/codex.md +0 -1
  396. package/skills/provider-github-release/skill.json +0 -55
  397. package/skills/provider-kubernetes/SKILL.md +0 -143
  398. package/skills/provider-kubernetes/adapters/claude.md +0 -1
  399. package/skills/provider-kubernetes/adapters/codex.md +0 -1
  400. package/skills/provider-kubernetes/references/kubectl-patterns.md +0 -58
  401. package/skills/provider-kubernetes/skill.json +0 -52
  402. package/skills/provider-railway/SKILL.md +0 -123
  403. package/skills/provider-railway/adapters/claude.md +0 -1
  404. package/skills/provider-railway/adapters/codex.md +0 -1
  405. package/skills/provider-railway/adapters/local.md +0 -1
  406. package/skills/provider-railway/adapters/opencode.md +0 -1
  407. package/skills/provider-railway/references/verification-commands.md +0 -39
  408. package/skills/provider-railway/skill.json +0 -71
  409. package/skills/provider-ssh-manual/SKILL.md +0 -97
  410. package/skills/provider-ssh-manual/skill.json +0 -54
  411. package/skills/repo-coding-rules/SKILL.md +0 -55
  412. package/skills/repo-coding-rules/skill.json +0 -34
  413. package/skills/role-cont-eval/SKILL.md +0 -91
  414. package/skills/role-cont-eval/adapters/codex.md +0 -1
  415. package/skills/role-cont-eval/skill.json +0 -36
  416. package/skills/role-cont-qa/SKILL.md +0 -100
  417. package/skills/role-cont-qa/adapters/claude.md +0 -1
  418. package/skills/role-cont-qa/skill.json +0 -36
  419. package/skills/role-deploy/SKILL.md +0 -97
  420. package/skills/role-deploy/skill.json +0 -36
  421. package/skills/role-design/SKILL.md +0 -50
  422. package/skills/role-design/skill.json +0 -36
  423. package/skills/role-documentation/SKILL.md +0 -76
  424. package/skills/role-documentation/skill.json +0 -36
  425. package/skills/role-implementation/SKILL.md +0 -45
  426. package/skills/role-implementation/skill.json +0 -36
  427. package/skills/role-infra/SKILL.md +0 -81
  428. package/skills/role-infra/skill.json +0 -36
  429. package/skills/role-integration/SKILL.md +0 -91
  430. package/skills/role-integration/skill.json +0 -36
  431. package/skills/role-planner/SKILL.md +0 -39
  432. package/skills/role-planner/skill.json +0 -21
  433. package/skills/role-research/SKILL.md +0 -65
  434. package/skills/role-research/skill.json +0 -36
  435. package/skills/role-security/SKILL.md +0 -60
  436. package/skills/role-security/skill.json +0 -36
  437. package/skills/runtime-claude/SKILL.md +0 -66
  438. package/skills/runtime-claude/skill.json +0 -36
  439. package/skills/runtime-codex/SKILL.md +0 -58
  440. package/skills/runtime-codex/skill.json +0 -36
  441. package/skills/runtime-local/SKILL.md +0 -46
  442. package/skills/runtime-local/skill.json +0 -36
  443. package/skills/runtime-opencode/SKILL.md +0 -58
  444. package/skills/runtime-opencode/skill.json +0 -36
  445. package/skills/signal-hygiene/SKILL.md +0 -51
  446. package/skills/signal-hygiene/skill.json +0 -20
  447. package/skills/tui-design/SKILL.md +0 -77
  448. package/skills/tui-design/references/tui-design.md +0 -259
  449. package/skills/tui-design/skill.json +0 -36
  450. package/skills/wave-core/SKILL.md +0 -141
  451. package/skills/wave-core/references/marker-syntax.md +0 -70
  452. package/skills/wave-core/skill.json +0 -35
  453. package/src/README.md +0 -85
  454. package/src/api/README.md +0 -22
  455. package/src/api/public-types.ts +0 -525
  456. package/src/component-inventory.md +0 -99
  457. package/src/core/README.md +0 -10
  458. package/src/core/commands/README.md +0 -3
  459. package/src/core/commands/formatting-commands.ts +0 -161
  460. package/src/core/commands/image-commands.ts +0 -144
  461. package/src/core/commands/index.ts +0 -1013
  462. package/src/core/commands/list-commands.ts +0 -370
  463. package/src/core/commands/review-commands.ts +0 -108
  464. package/src/core/commands/text-commands.ts +0 -119
  465. package/src/core/schema/README.md +0 -3
  466. package/src/core/schema/text-schema.ts +0 -512
  467. package/src/core/selection/README.md +0 -3
  468. package/src/core/selection/mapping.ts +0 -238
  469. package/src/core/selection/review-anchors.ts +0 -94
  470. package/src/core/state/README.md +0 -3
  471. package/src/core/state/editor-state.ts +0 -580
  472. package/src/core/state/text-transaction.ts +0 -276
  473. package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
  474. package/src/formats/xlsx/io/parse-sheet.ts +0 -289
  475. package/src/formats/xlsx/io/parse-styles.ts +0 -57
  476. package/src/formats/xlsx/io/parse-workbook.ts +0 -75
  477. package/src/formats/xlsx/io/xlsx-session.ts +0 -306
  478. package/src/formats/xlsx/model/cell.ts +0 -189
  479. package/src/formats/xlsx/model/sheet.ts +0 -244
  480. package/src/formats/xlsx/model/styles.ts +0 -118
  481. package/src/formats/xlsx/model/workbook.ts +0 -449
  482. package/src/io/README.md +0 -10
  483. package/src/io/docx-session.ts +0 -1763
  484. package/src/io/export/README.md +0 -3
  485. package/src/io/export/export-session.ts +0 -165
  486. package/src/io/export/minimal-docx.ts +0 -115
  487. package/src/io/export/reattach-preserved-parts.ts +0 -54
  488. package/src/io/export/serialize-comments.ts +0 -876
  489. package/src/io/export/serialize-footnotes.ts +0 -217
  490. package/src/io/export/serialize-headers-footers.ts +0 -200
  491. package/src/io/export/serialize-main-document.ts +0 -982
  492. package/src/io/export/serialize-numbering.ts +0 -97
  493. package/src/io/export/serialize-revisions.ts +0 -389
  494. package/src/io/export/serialize-runtime-revisions.ts +0 -265
  495. package/src/io/export/serialize-tables.ts +0 -147
  496. package/src/io/export/split-review-boundaries.ts +0 -194
  497. package/src/io/normalize/README.md +0 -3
  498. package/src/io/normalize/normalize-text.ts +0 -437
  499. package/src/io/ooxml/README.md +0 -3
  500. package/src/io/ooxml/parse-comments.ts +0 -779
  501. package/src/io/ooxml/parse-complex-content.ts +0 -287
  502. package/src/io/ooxml/parse-fields.ts +0 -438
  503. package/src/io/ooxml/parse-footnotes.ts +0 -403
  504. package/src/io/ooxml/parse-headers-footers.ts +0 -483
  505. package/src/io/ooxml/parse-inline-media.ts +0 -431
  506. package/src/io/ooxml/parse-main-document.ts +0 -1846
  507. package/src/io/ooxml/parse-numbering.ts +0 -425
  508. package/src/io/ooxml/parse-revisions.ts +0 -658
  509. package/src/io/ooxml/parse-shapes.ts +0 -271
  510. package/src/io/ooxml/parse-tables.ts +0 -568
  511. package/src/io/ooxml/parse-theme.ts +0 -314
  512. package/src/io/ooxml/part-manifest.ts +0 -136
  513. package/src/io/ooxml/revision-boundaries.ts +0 -351
  514. package/src/io/opc/README.md +0 -3
  515. package/src/io/opc/corrupt-package.ts +0 -166
  516. package/src/io/opc/docx-package.ts +0 -74
  517. package/src/io/opc/package-reader.ts +0 -320
  518. package/src/io/opc/package-writer.ts +0 -273
  519. package/src/model/README.md +0 -3
  520. package/src/model/canonical-document.ts +0 -1911
  521. package/src/model/cds-1.0.0.ts +0 -196
  522. package/src/model/snapshot.ts +0 -393
  523. package/src/preservation/README.md +0 -3
  524. package/src/preservation/markup-compatibility.ts +0 -48
  525. package/src/preservation/opaque-fragment-store.ts +0 -89
  526. package/src/preservation/opaque-region.ts +0 -233
  527. package/src/preservation/package-preservation.ts +0 -120
  528. package/src/preservation/preserved-part-manifest.ts +0 -56
  529. package/src/preservation/relationship-retention.ts +0 -57
  530. package/src/preservation/store.ts +0 -185
  531. package/src/review/README.md +0 -16
  532. package/src/review/store/README.md +0 -3
  533. package/src/review/store/comment-anchors.ts +0 -70
  534. package/src/review/store/comment-remapping.ts +0 -154
  535. package/src/review/store/comment-store.ts +0 -331
  536. package/src/review/store/comment-thread.ts +0 -109
  537. package/src/review/store/revision-actions.ts +0 -394
  538. package/src/review/store/revision-store.ts +0 -303
  539. package/src/review/store/revision-types.ts +0 -168
  540. package/src/review/store/runtime-comment-store.ts +0 -43
  541. package/src/runtime/README.md +0 -3
  542. package/src/runtime/ai-action-policy.ts +0 -764
  543. package/src/runtime/document-runtime.ts +0 -969
  544. package/src/runtime/read-only-diagnostics-runtime.ts +0 -232
  545. package/src/runtime/review-runtime.ts +0 -44
  546. package/src/runtime/revision-runtime.ts +0 -107
  547. package/src/runtime/session-capabilities.ts +0 -138
  548. package/src/runtime/surface-projection.ts +0 -570
  549. package/src/runtime/table-commands.ts +0 -84
  550. package/src/runtime/table-schema.ts +0 -125
  551. package/src/ui/README.md +0 -30
  552. package/src/ui/WordReviewEditor.tsx +0 -1283
  553. package/src/ui/comments/README.md +0 -3
  554. package/src/ui/compatibility/README.md +0 -3
  555. package/src/ui/editor-surface/README.md +0 -3
  556. package/src/ui/headless/comment-decoration-model.ts +0 -124
  557. package/src/ui/headless/revision-decoration-model.ts +0 -128
  558. package/src/ui/headless/selection-helpers.ts +0 -34
  559. package/src/ui/headless/use-editor-keyboard.ts +0 -98
  560. package/src/ui/review/README.md +0 -3
  561. package/src/ui/shared/revision-filters.ts +0 -31
  562. package/src/ui/status/README.md +0 -3
  563. package/src/ui/theme/README.md +0 -3
  564. package/src/ui/toolbar/README.md +0 -3
  565. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -48
  566. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -44
  567. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
  568. package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
  569. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -139
  570. package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -98
  571. package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
  572. package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -452
  573. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -327
  574. package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -157
  575. package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
  576. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
  577. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -118
  578. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -52
  579. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
  580. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -215
  581. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
  582. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -108
  583. package/src/ui-tailwind/index.ts +0 -61
  584. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -276
  585. package/src/ui-tailwind/review/tw-health-panel.tsx +0 -120
  586. package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
  587. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
  588. package/src/ui-tailwind/status/tw-status-bar.tsx +0 -58
  589. package/src/ui-tailwind/theme/editor-theme.css +0 -190
  590. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -48
  591. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -231
  592. package/src/ui-tailwind/tw-review-workspace.tsx +0 -140
  593. package/src/validation/README.md +0 -3
  594. package/src/validation/compatibility-engine.ts +0 -317
  595. package/src/validation/compatibility-report.ts +0 -160
  596. package/src/validation/diagnostics.ts +0 -203
  597. package/src/validation/import-diagnostics.ts +0 -128
  598. package/src/validation/low-priority-word-surfaces.ts +0 -373
  599. package/test/README.md +0 -16
  600. package/test/core/formatting-commands.test.ts +0 -285
  601. package/test/core/image-commands.test.ts +0 -298
  602. package/test/core/mapping.test.ts +0 -186
  603. package/test/core/text-commands.test.ts +0 -176
  604. package/test/fixtures/docx/F01-basic-contract.docx +0 -0
  605. package/test/fixtures/docx/F01-basic-contract.md +0 -33
  606. package/test/fixtures/docx/F02-headings-styles.docx +0 -0
  607. package/test/fixtures/docx/F02-headings-styles.md +0 -33
  608. package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
  609. package/test/fixtures/docx/F03-legal-outline-numbering.md +0 -34
  610. package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
  611. package/test/fixtures/docx/F04-restart-numbering-schedules.md +0 -33
  612. package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
  613. package/test/fixtures/docx/F05-table-heavy-agreement.md +0 -34
  614. package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
  615. package/test/fixtures/docx/F06-merged-cells-signature-table.md +0 -34
  616. package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
  617. package/test/fixtures/docx/F07-inline-images-exhibit.md +0 -34
  618. package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
  619. package/test/fixtures/docx/F08-hyperlinks.md +0 -33
  620. package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
  621. package/test/fixtures/docx/F09-comments-single-paragraph.md +0 -33
  622. package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
  623. package/test/fixtures/docx/F10-threaded-comments-resolve.md +0 -33
  624. package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
  625. package/test/fixtures/docx/F11-redlines-basic.md +0 -33
  626. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
  627. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +0 -33
  628. package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
  629. package/test/fixtures/docx/F13-comments-on-deleted-text.md +0 -33
  630. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
  631. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +0 -33
  632. package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
  633. package/test/fixtures/docx/F15-sections-headers-footers.md +0 -33
  634. package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
  635. package/test/fixtures/docx/F16-footnotes-endnotes.md +0 -33
  636. package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
  637. package/test/fixtures/docx/F17-fields-and-toc.md +0 -33
  638. package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
  639. package/test/fixtures/docx/F18-content-controls-template.md +0 -33
  640. package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
  641. package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +0 -35
  642. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
  643. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +0 -33
  644. package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
  645. package/test/fixtures/docx/F21-malformed-broken-docx.md +0 -33
  646. package/test/fixtures/docx/README.md +0 -74
  647. package/test/fixtures/docx/certification-manifest.json +0 -104
  648. package/test/fixtures/docx/fixtures.manifest.json +0 -196
  649. package/test/fixtures/encrypted-docx/README.md +0 -27
  650. package/test/fixtures/encrypted-docx/certification-manifest.json +0 -9
  651. package/test/fixtures/encrypted-docx/fixtures.manifest.json +0 -47
  652. package/test/fixtures/scenarios/docx/README.md +0 -25
  653. package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
  654. package/test/fixtures/scenarios/docx/S01-sow-template.md +0 -30
  655. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.docx +0 -0
  656. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.md +0 -32
  657. package/test/fixtures/scenarios/docx/scenario-manifest.json +0 -53
  658. package/test/formats/xlsx/io/xlsx-import.test.ts +0 -766
  659. package/test/formats/xlsx/model/workbook.test.ts +0 -669
  660. package/test/helpers/dom-setup.ts +0 -124
  661. package/test/io/comment-roundtrip.test.ts +0 -272
  662. package/test/io/complex-content-roundtrip.test.ts +0 -632
  663. package/test/io/docx-compatibility-regression.test.ts +0 -199
  664. package/test/io/docx-session.test.ts +0 -1495
  665. package/test/io/footnotes-roundtrip.test.ts +0 -318
  666. package/test/io/headers-footers-roundtrip.test.ts +0 -547
  667. package/test/io/numbering-roundtrip.test.ts +0 -234
  668. package/test/io/package-reader.test.ts +0 -199
  669. package/test/io/paragraph-properties-roundtrip.test.ts +0 -129
  670. package/test/io/preserved-package-roundtrip.test.ts +0 -365
  671. package/test/io/property-completeness.test.ts +0 -292
  672. package/test/io/revision-roundtrip.test.ts +0 -347
  673. package/test/io/structural-blocks.test.ts +0 -202
  674. package/test/io/table-media-roundtrip.test.ts +0 -448
  675. package/test/io/table-properties-roundtrip.test.ts +0 -569
  676. package/test/io/table-roundtrip.test.ts +0 -302
  677. package/test/io/text-roundtrip.test.ts +0 -344
  678. package/test/model/canonical-document.test.ts +0 -285
  679. package/test/preservation/opaque-fragment-store.test.ts +0 -121
  680. package/test/preservation/package-preservation.test.ts +0 -395
  681. package/test/preservation/store.test.ts +0 -84
  682. package/test/review/comment-remapping.test.ts +0 -220
  683. package/test/review/comment-store.test.ts +0 -180
  684. package/test/review/move-revisions.test.ts +0 -143
  685. package/test/review/property-change-revisions.test.ts +0 -225
  686. package/test/review/revision-actions.test.ts +0 -330
  687. package/test/review/revision-store.test.ts +0 -193
  688. package/test/runtime/session-capabilities.test.ts +0 -260
  689. package/test/runtime/table-commands.test.ts +0 -356
  690. package/test/runtime/table-schema.test.ts +0 -221
  691. package/test/runtime/tracked-changes-toggle.test.ts +0 -107
  692. package/test/ui/comment-review-surface.test.tsx +0 -114
  693. package/test/ui/reduced-motion-toggle.test.tsx +0 -137
  694. package/test/ui/word-review-editor.imported-scenarios.test.tsx +0 -169
  695. package/test/ui/word-review-editor.interaction.test.tsx +0 -1198
  696. package/test/ui/word-review-editor.test.js +0 -188
  697. package/test/ui/word-review-editor.test.tsx +0 -280
  698. package/test/ui-tailwind/search-plugin.test.ts +0 -286
  699. package/test/validation/compatibility-engine.test.ts +0 -336
  700. package/test/validation/compatibility-report.test.ts +0 -189
  701. package/test/validation/low-priority-word-surfaces.test.ts +0 -282
  702. package/test/validation/malformed-doc.test.ts +0 -113
  703. package/test-results/.last-run.json +0 -4
  704. package/wave.config.json +0 -406
@@ -1,621 +0,0 @@
1
- # Agent / LLM Interaction Layer for DOCX and XLSX Editors
2
-
3
- ## Interpretation of the problem
4
-
5
- You’re building a **shared agent/LLM interaction layer** that can sit on top of two editors: a shipped React-based **Word review editor** and a planned React-based **Excel-compatible spreadsheet editor**. The goal is not “chat next to a document,” but a **deterministic, auditable, compatibility-honest** system that can: (a) answer questions, (b) propose edits, and (c) execute edits *only* via typed runtime commands—while preserving OpenXML fidelity and never silently dropping unsupported content.
6
-
7
- The key constraint is architectural: **React is a projection layer**. Canonical truth lives in the runtime; all editor mutations must flow through **commands → transactions → commit**, and rendering must consume snapshots from an external store subscription boundary.
8
-
9
- The key product constraint is fidelity: treat `.docx` and `.xlsx` as **OPC packages**—with parts, relationships, content types, and markup-compatibility rules—not as a handful of XML files. This implies that “unsupported but preservable” content must survive import → runtime edit → export, and exported artifacts must reopen in modern host apps without repair prompts.
10
-
11
- So the interaction layer must provide a shared mental model across DOCX (linear text + anchors + review artifacts) and XLSX (grid + formulas + ranges + sheet/workbook objects), **without collapsing both into the least-common-denominator**. It must also explicitly surface capability boundaries using the existing taxonomy (**supported-roundtrip / preserve-only / unsupported-fatal**) and the preserve/lock/warn/block/fail response model.
12
-
13
- ## Research plan
14
-
15
- The research focus is “implementation-ready,” so the plan prioritizes **existing runtime contracts** and **primary packaging semantics** before UI or prompting tactics.
16
-
17
- First, I grounded the shared agent design in the shipped Word editor’s frozen v1 contract: the runtime boundary, snapshot boundary, command execution model, warnings/errors/compatibility envelopes, and the UX/architecture constraints that govern how truth flows through the system.
18
-
19
- Second, I reviewed packaging and markup-compatibility fundamentals that matter directly for “preserve-only must not be dropped” and “host reopening is the final standard”: OPC relationships, conformance constraints on parts/relationships, plus Markup Compatibility and Extensibility (MCE) constructs like `mc:Ignorable` and `mc:AlternateContent` that affect how unknown namespaces and alternates must be handled.
20
-
21
- Third, I targeted strong implementation references for spreadsheet abstractions and review-like constructs (ranges, tables, named items, comments, pivot tables), using official **Office JavaScript API** documentation as a proxy for what “feels native” and what abstractions users expect when they say “this range,” “this table,” or “the comment on D12.”
22
-
23
- Finally, I derived a shared tool/command contract for agent ↔ runtime integration that (a) never allows direct mutation, (b) supports simulation/proposal/approval, (c) stays honest under preserve-only and blocked states, and (d) is testable with a fixture matrix and release gates consistent with the existing DOCX repo’s compliance stance (SDK validation is necessary but not sufficient; host behavior is authoritative).
24
-
25
- ## Findings
26
-
27
- The findings below separate (a) what your platform already commits to for DOCX and (b) what packaging/Excel-like object models imply for a shared agent layer.
28
-
29
- Your shipped DOCX editor runtime already defines the right shape for an agent layer
30
-
31
- The Word editor’s frozen contract is already architected like a “tool-execution runtime,” which is exactly what an agent layer needs.
32
-
33
- * **Single mutation authority:** one mounted editor session owns one runtime instance, and `DocumentRuntime` is the only mutation authority.
34
- * **External-store snapshots:** React renders from `RuntimeRenderSnapshot` via an external-store boundary; snapshots are projections and not persistence artifacts.
35
- * **Deterministic mutation pipeline:** “every mutating entry point routes through command → transaction → mapping → remap → commit → notify,” and subscriptions fire only after atomic commits.
36
- * **Typed command surface:** edits are expressed through a discriminated union `EditorCommand`, executed into an `EditorTransaction` with mapping and effects.
37
- * **Stable address model (anchors):** selections are integer positions mapped through edits; detached anchors remain inspectable instead of disappearing.
38
- * **Explicit trust surfaces:** warnings and errors are structured envelopes; compatibility is a separate report with the fixed feature taxonomy `supported-roundtrip / preserve-only / unsupported-fatal`, plus an explicit `blockExport` gate.
39
- * **Preserve/lock/warn/block/fail is a product stance, not a slogan:** unsupported but preservable content must be preserved; preserve-only regions are locked; warnings/blocks are explicit; malformed packages can fail-closed into diagnostics.
40
-
41
- This matters because an agent layer can treat the runtime as the executable substrate: “propose typed commands, simulate them, then commit them,” without ever touching DOM or OOXML directly.
42
-
43
- OPC and MCE are not optional if “preserve-only survives” is real
44
-
45
- Your internal compliance doc explicitly frames `.docx` as an OPC package and requires export to preserve ZIP integrity, required parts/relationships, content types, semantics, and preservable unsupported content. This aligns with foundational OPC norms: packages are sets of parts linked by relationships, intended to make links discoverable independent of content markup.
46
-
47
- Two packaging points are directly relevant to the agent layer’s “don’t silently break fidelity” contract:
48
-
49
- 1) **Relationships are first-class, not incidental.** OPC relationships exist precisely to allow discovery and linking “without looking at the part contents,” and to attach relationships without modifying signed/encrypted parts.
50
- 2) **Conformance constraints exist at the package layer.** OPC conformance rules include requirements on part names, relationship parts, relationship IDs, and targets. Violating these is how you end up with repairs or unreadable files.
51
-
52
- On markup compatibility: MCE defines how producers mark namespaces as ignorable and how consumers should behave in the presence of unknown namespaces. The `@Ignorable` attribute explicitly governs when unknown namespaces can be ignored without error. The `mc:AlternateContent` model is an explicit mechanism for forward compatibility—consumers choose the first matching `Choice` based on required namespaces, otherwise fallback.
53
-
54
- Why this matters for the agent layer: the agent must not propose edits that imply rewriting content across preserve-only boundaries, because those boundaries often exist specifically due to unknown namespaces/parts where safe semantics are not guaranteed. Your DOCX compliance stance makes this explicit: if you can’t support import → runtime edit → export → reopen without loss, the correct classification is preserve-only or unsupported-fatal, not “supported but flaky.”
55
-
56
- Spreadsheet interactions need native spreadsheet abstractions, not “text edits in cells”
57
-
58
- Microsoft’s official Excel JavaScript API docs are a strong reference for mental-model alignment: there is no “Cell” object; the core abstraction is `Range`, which can represent a single cell or a contiguous grid. This matters for agent design: “selection-aware” in spreadsheets is almost always “range-aware,” including things like “used range,” “table range,” “spill ranges,” etc.
59
-
60
- Key spreadsheet-level abstractions that show up repeatedly in official APIs and should be first-class in the agent model:
61
-
62
- * **Range**: values vs text vs formulas are different surfaces (`values`, `text`, `formulas`), and users talk about them distinctly.
63
- * **Tables**: tables have stable identity and provide distinct ranges (header, body, totals) and operations like convert-to-range.
64
- * **Named items (names / named ranges / named formulas)**: names are first-class objects at workbook/sheet scope and can point at a range or value; users refer to names naturally (“update the range called ExpensesHeader”).
65
- * **Comments as threads tied to a cell**: Excel comments are threaded discussions tied to an individual cell and tracked at workbook level.
66
- * **PivotTables exist as objects with refresh semantics**: even if preserve-only in v1, the agent model should “see” them as objects rather than opaque XML.
67
-
68
- So the shared agent model must include spreadsheet-native object handles (workbook/sheet/range/table/name/comment-thread), and it must treat formulas as a distinct semantic surface—not just strings in cells—because of cross-cell dependencies and calculation behavior.
69
-
70
- ## Recommended design / decisions
71
-
72
- This section is the concrete spec. It answers the ten required questions explicitly and calls out tradeoffs and failure modes.
73
-
74
- Shared mental model for agent interaction across both editors
75
-
76
- The shared mental model should be:
77
-
78
- **“The runtime is the only editor. The agent is a deterministic command author and explainer, operating on stable editor abstractions, producing explicit outcomes.”**
79
-
80
- More concretely:
81
-
82
- 1) The user speaks in natural language (“rewrite this paragraph,” “make this table consistent,” “explain this formula”).
83
- 2) The agent layer translates that into one of three intents: **Explain**, **Propose**, or **Execute**.
84
- 3) Any mutation intent becomes **typed commands** submitted to a runtime **transaction boundary**, never direct state mutation.
85
- 4) The system always returns an explicit action state: **explanation-only**, **simulated**, **proposed**, **applied**, plus **export-risk classification** derived from runtime compatibility/warnings.
86
- 5) Preserve-only and unsupported-fatal content are never rewritten silently; attempts to cross those boundaries produce explicit **lock/warn/block/fail** behavior.
87
-
88
- This mirrors the Word editor contract’s central principles (runtime authority, snapshot rendering, command-backed edits) while leaving room for spreadsheet-native objects.
89
-
90
- Editor abstractions the agent should target
91
-
92
- The agent should target a small set of **shared primitives** plus editor-specific specializations.
93
-
94
- Shared primitives (apply to both DOCX and XLSX):
95
-
96
- * **DocumentHandle**: `{ editorKind, documentId, sessionId, revisionToken }` (revisionToken is already a first-class runtime concept).
97
- * **SelectionHandle**: a discriminated union so “selection-aware” stays explicit:
98
- * DOCX: `{ kind: "docx-range", anchor: number, head: number, activeRange: EditorAnchorProjection }`
99
- * XLSX: `{ kind: "xlsx-range", sheetId, a1: "Sheet!A1:D10", areas?: [...] }` (support disjoint selections as `areas`, analogous to Excel’s RangeAreas).
100
- * **CompatibilitySurface**: `{ report: CompatibilityReport, warnings: EditorWarning[], fatalError?: EditorError }` using the existing taxonomy and export gate.
101
-
102
- Editor-specific abstractions (must be first-class, not “strings with tags”):
103
-
104
- For DOCX:
105
-
106
- * **StoryRange** / **AnchorProjection** (already defined).
107
- * **CommentThread** (Word comment threads) and **TrackedChangeEntry** (review actions accept/reject).
108
- * **OpaqueFragmentHandle** for preserve-only inline/block placeholders (already represented in surface segments/blocks as `opaque_inline` / `opaque_block`).
109
-
110
- For XLSX:
111
-
112
- * **Workbook**, **Worksheet**, **Range**, **Table**, **NamedItem**, **CommentThread**, **PivotTable** as addressable objects.
113
- * **FormulaRegion**: a derived abstraction grouping a range of formula cells that share structure (same R1C1 pattern, shared dependencies, spill parent, etc.). The Excel Range docs explicitly distinguish multiple formula representations (`formulas`, `formulasR1C1`, `hasSpill`).
114
- * **CellDataSurface**: values/text/formulas are distinct. The “set/get values vs formulas” documentation makes that explicit (values show computed values even when formulas exist; formulas show formula strings).
115
-
116
- Action classes and their execution constraints
117
-
118
- Instead of a vague “allowed/not allowed,” define action classes as **policy-driven** based on: (a) mutation vs read-only, (b) scope size, (c) crossing preserve-only boundaries, (d) export risk, and (e) whether the runtime can deterministically validate.
119
-
120
- The interaction layer should implement four execution classes:
121
-
122
- **Synchronous (auto-execute, no approval)**
123
- Read-only transforms and queries that do not mutate runtime state.
124
- * Examples: explain selection, summarize doc/sheet, list named ranges, enumerate comments, explain formula logic, locate dependencies, generate a checklist.
125
- * Failure mode: context insufficiency → request more structured context rather than guessing.
126
-
127
- **Proposal-only (must simulate; user must accept to apply)**
128
- Deterministic, bounded edits where simulation can produce a clear diff and compatibility impact.
129
- * DOCX: rewrite selected text, insert comment, propose tracked change acceptance/rejection suggestions (but don’t auto-accept), style normalization within supported features.
130
- * XLSX: set cell values/formulas in a bounded range, fill-down formulas, normalize number formats, create/update named items, add cell comments.
131
- * Failure mode: if simulation produces preserve-only boundary crossings or export-risk warnings, the proposal remains but is labeled export-risky or blocked depending on policy.
132
-
133
- **Approval-required (proposal + explicit “risk acknowledgement” even if supported)**
134
- Edits that are supported in principle but have known high-impact or non-local consequences.
135
- * Examples:
136
- * DOCX: accept-all / reject-all changes, large-scale transformations, anything touching many anchors.
137
- * XLSX: bulk refactors across sheets, mass formula rewrites, changes that modify table structure, pivot refresh/changes (even if later supported), operations that materially change calculation outcomes.
138
- * Failure mode: user must explicitly approve after seeing a diff summary + “what changed” + “what might break.”
139
-
140
- **Blocked in preserve-only or fatal states**
141
- Any action requiring semantic rewriting inside preserve-only regions or any session with unsupported-fatal states that prevent trustworthy preservation.
142
- * DOCX: opaque fragments are locked; attempts to rewrite inside must block or require a destructive “convert/downgrade” flow with explicit warning.
143
- * XLSX: treat preserve-only package parts (unknown extensions, pivot caches, macros, external connections, charts you can’t roundtrip, etc.) as locked boundaries; edits that require rewriting them are blocked. This is the direct spreadsheet analogue of the DOCX stance.
144
- * Unsupported-fatal: fail closed into read-only diagnostics (still allow explanation, but no mutation and usually no export).
145
-
146
- Common tool/command contract between the LLM layer and the editor runtime
147
-
148
- The contract must be explicit, typed, and deterministic. You already have strong precedent: `EditorCommand` is a discriminated union, executed into transactions, then committed.
149
-
150
- Build a *shared* agent contract in three layers:
151
-
152
- **Layer A: Agent intents (LLM-level)**
153
- High-level actions the model returns (or calls) that always map to deterministic runtime commands.
154
-
155
- **Layer B: Tool calls (agent orchestrator-level)**
156
- Fetching context slices, running simulations, applying transactions, creating audit artifacts.
157
-
158
- **Layer C: Runtime commands (editor-level)**
159
- The real mutation boundary: DOCX `EditorCommand` and XLSX `SpreadsheetCommand` (to be designed similarly).
160
-
161
- A minimal shared TypeScript-like contract (conceptual, repo-ready) looks like:
162
-
163
- ```ts
164
- // Shared: always included in every agent -> runtime request
165
- type AgentEnvelope = {
166
- agentSessionId: string;
167
- editorKind: "docx" | "xlsx";
168
- documentId: string;
169
- baseRevisionToken: string; // optimistic concurrency check
170
- mode: "explain" | "propose" | "execute";
171
- user: { userId: string; displayName: string };
172
- trace: { requestId: string; timestamp: string };
173
- };
174
-
175
- // Shared selection union
176
- type AgentSelection =
177
- | { kind: "docx"; anchor: number; head: number }
178
- | { kind: "xlsx"; sheetId: string; a1: string; areas?: Array<{ sheetId: string; a1: string }> };
179
-
180
- // Shared response state model (explicit trust surface)
181
- type AgentActionState =
182
- | "explanation_only"
183
- | "simulated"
184
- | "proposed_not_applied"
185
- | "applied"
186
- | "blocked"
187
- | "failed";
188
-
189
- // Shared compatibility posture (imports existing taxonomy)
190
- type AgentExportPosture =
191
- | { level: "safe"; blockExport: false }
192
- | { level: "risky"; blockExport: false; reasons: string[] } // warnings, preserve-only touched
193
- | { level: "blocked"; blockExport: true; reasons: string[] }; // unsupported-fatal or fatal errors
194
-
195
- // Shared "tool result" envelope
196
- type AgentToolResult<T> = {
197
- state: AgentActionState;
198
- exportPosture: AgentExportPosture;
199
- compatibility: CompatibilityReport; // existing shape
200
- warnings: EditorWarning[];
201
- error?: EditorError;
202
- payload?: T;
203
- };
204
- ```
205
-
206
- The key decision is that the LLM does **not** emit arbitrary patches; it emits either:
207
-
208
- * a request for more context slices, or
209
- * a set of **typed commands** (or a higher-level “action” that deterministically compiles to commands inside the runtime).
210
-
211
- This matches your repo’s non-negotiable: “All edits must flow through commands and transactions.”
212
-
213
- How editors should expose structured context without leaking raw OOXML into prompts
214
-
215
- The agent should never receive “the OOXML package.” Instead, create a **context slicing API** that serves *semantic projections* with strict size limits and explicit redaction.
216
-
217
- Design principle: **Context is pull-based, scoped, and typed.** The model gets an initial “index card” summary, then can request specific slices.
218
-
219
- Baseline context (always available):
220
-
221
- * **Runtime snapshot summary:** doc/workbook id, revision token, ready/dirty/readOnly, selection.
222
- * **Compatibility/report summary:** `blockExport`, preserve-only count, unsupported-fatal count, top warnings/errors.
223
- * **Selection neighborhood:**
224
- * DOCX: selected plain text + a small surrounding window; plus surface segments and any `opaque_*` tokens inside the selection.
225
- * XLSX: a rectangular grid sample with values/text/formulas for the selection (`values`, `text`, `formulas` are distinct surfaces).
226
-
227
- Optional context slices (agent can request explicitly):
228
-
229
- * **DOCX slices:** comments in selection, tracked changes in selection, document stats, headings outline, hyperlink list.
230
- * **XLSX slices:** named items, table definition metadata, table header/body ranges, comment threads for cells, pivot table metadata (even if preserve-only), dependency summary for a formula region.
231
- * **OOXML boundary descriptions (not raw XML):** a “preservation map” that describes which parts/regions are opaque and why (featureKey + message + affected anchor or range), matching the existing compatibility entry pattern.
232
-
233
- Critical security and product honesty point: for any slice that the agent did not fetch, the UI must not imply the agent “reviewed everything.” The trust surface should show “what the agent looked at” as a first-class artifact (see below).
234
-
235
- Handling “change this” when the target crosses supported and preserve-only boundaries
236
-
237
- This is the fidelity trap where products get dishonest. Implement an explicit boundary algorithm:
238
-
239
- 1) **Resolve target surface**: map “this” to a concrete selection handle (DOCX anchor range or XLSX range).
240
- 2) **Intersect with compatibility/preservation map**: identify whether the target intersects any preserve-only or unsupported-fatal feature entries or locked opaque fragments/cells.
241
- 3) **Compute required semantic operations**: does the requested change require rewriting preserve-only content or only supported surfaces around it? This must be conservative: if uncertain, treat as preserve-only.
242
- 4) **Return explicit response model** (never silent):
243
- * **preserve**: keep content untouched but proceed around it
244
- * **lock**: prevent direct edits inside
245
- * **warn**: require user acknowledgement for destructive boundary crossing
246
- * **block**: refuse operation if it would require unsupported semantic rewrite
247
- * **fail**: session-level failure for malformed/unpreservable states
248
-
249
- In agent UX terms, if the user says “change this” over a mixed region, the default behavior should be:
250
-
251
- * produce an explanation of what is editable vs locked,
252
- * propose a safe alternative that edits supported content only, and
253
- * if the user explicitly asks for destructive conversion, gate it behind a “warn + explicit approval + export-risky labeling” flow.
254
-
255
- What good UX looks like across both editors
256
-
257
- Your Word editor UX guide and frontend architecture already codify strong patterns: the editor surface is central; review rails are distinct; health surfaces explain preserve-only and fatal states; “trust” is not hidden.
258
-
259
- Build the agent UX as a **four-pane mental structure** that works in both editors:
260
-
261
- 1) **Conversation pane** (left rail or right rail section): user prompt + agent response + “what I used” citations (context slices).
262
- 2) **Explanation pane** (inline in conversation): reasoning and interpretation of the selection/range and constraints.
263
- 3) **Proposed changes pane** (diff view): deterministic, command-backed change list + preview.
264
- 4) **Trust/health pane** (always visible when needed): compatibility report deltas, preserve-only touched, export-risk posture. This maps to your existing “Health” tab concept.
265
-
266
- Specific UX patterns by feature:
267
-
268
- * **Inline suggestions (DOCX):** show suggestion chips anchored to ranges (existing anchor model), with accept/reject actions that call runtime commands.
269
- * **Inline suggestions (XLSX):** highlight affected cells/ranges; show a “diff table” with old/new values/formulas; allow accept/reject per change group. This aligns with range-centric Excel semantics.
270
- * **Rewrite proposals (DOCX):** show “before/after” text blocks plus a command list; never apply automatically by default.
271
- * **Formula explanations (XLSX):** show formula text, referenced ranges, and computed interpretation using `formulas` vs `values` distinction; present as explanation-only unless user explicitly asks to edit.
272
- * **Workbook summaries:** show sheet list, used-range summaries, table list, named item list, pivot table list (even if preserve-only), comment counts; keep it structured and navigable.
273
- * **Comments generated by the agent:** treat comments as first-class threads (DOCX and XLSX). Word already has explicit add/open/resolve flows. Excel comments are threads tied to a cell.
274
-
275
- Trust surface and explicit state labeling
276
-
277
- The trust surface must make it impossible for the user to confuse:
278
-
279
- * explanation-only,
280
- * simulated,
281
- * proposed-but-not-applied,
282
- * applied-to-canonical-state,
283
- * export-risky.
284
-
285
- The agent layer should present a standard “action badge” for every agent response, derived from `AgentActionState` + `AgentExportPosture`.
286
-
287
- Mapping to your existing system:
288
-
289
- * Export risk and blocks should be derived from the runtime’s compatibility report (including `blockExport` and `unsupported-fatal` entries).
290
- * Warning-backed risk should be derived from runtime warnings and preserve-only touches, not from model “confidence.”
291
- * For OOXML forward-compat concerns, surface MCE-related semantics as “preserve-only reason” rather than dumping XML. MCE explicitly defines ignorable namespaces and alternate content selection mechanics.
292
-
293
- Telemetry, audit trail, and replay model
294
-
295
- You already have a host-level datastore adapter that can log events (`logEvent?`) and persist snapshots/exports.
296
-
297
- The agent layer needs an **append-only audit log** with replay capability. The minimum viable audit record per agent action:
298
-
299
- * agentSessionId, requestId, timestamp
300
- * editorKind, documentId, baseRevisionToken
301
- * requested mode (explain/propose/execute)
302
- * context slices used (IDs + hashes + size)
303
- * model output (structured tool calls, not raw chain-of-thought)
304
- * simulation result (diff summary + compatibility delta + warnings)
305
- * user decision (accepted/rejected/edited)
306
- * applied commands (exact typed commands, in order)
307
- * resulting revisionToken + export posture
308
-
309
- Replay model:
310
-
311
- * Since canonical truth is stored as a `PersistedEditorSnapshot` and restored from canonical state without rerunning OOXML import, replay should be “load snapshot → apply recorded commands → verify revisionToken deltas.”
312
- * For DOCX, the runtime already produces deterministic commit boundaries and revision tokens.
313
- * For XLSX, the workbook runtime must adopt the same pattern (revisionToken increments per commit).
314
-
315
- Minimum viable shared architecture across both editors
316
-
317
- Make the agent layer a **shared platform module** with editor adapters. Do not bury agent behavior inside React components.
318
-
319
- A minimal architecture:
320
-
321
- * `agent-core/` (shared):
322
- * schemas: `AgentEnvelope`, `AgentSelection`, `AgentActionState`, `AgentExportPosture`
323
- * tool contract: context slice requests, proposal packaging, simulation/apply pipeline
324
- * policy engine: action class resolution + preserve/lock/warn/block/fail rules
325
- * audit/telemetry: event record builder, hashing, replay harness
326
-
327
- * `agent-docx-adapter/` (DOCX-specific):
328
- * context extraction from `RuntimeRenderSnapshot.surface`, comments, trackedChanges
329
- * command mapping to existing `EditorCommand` union
330
- * sandbox simulation via snapshot-clone runtime instantiation (see deliverables)
331
-
332
- * `agent-xlsx-adapter/` (XLSX-specific):
333
- * context extraction: selected range values/text/formulas; tables; named items; comments; pivot metadata
334
- * command mapping to `SpreadsheetCommand` union (new, DOCX-inspired)
335
- * sandbox simulation: workbook runtime clone from persisted snapshot (design requirement)
336
-
337
- * `agent-ui/` (shared React components):
338
- * conversation pane + context citation chips
339
- * proposal diff viewer (pluggable doc/range renderer)
340
- * trust badge + compatibility delta panel (reuses “Health” concept)
341
-
342
- This matches your repo guidance: keep content model, review model, preservation, UI state, import/export boundaries separate, and don’t use the Open XML SDK in the shipped runtime.
343
-
344
- ## Risks and open questions
345
-
346
- The honest risks here aren’t “LLMs make mistakes” (they do), but the product integrity traps where a system *appears* to work while quietly corrupting fidelity or trust.
347
-
348
- Determinism vs. model creativity
349
-
350
- If the LLM can emit arbitrary patches (text diffs, cell diffs) without a typed command contract, the system becomes untestable and non-deterministic. The contract must force the model into a small space of structured actions, even if that feels “less magical.”
351
-
352
- Simulation fidelity and performance
353
-
354
- Simulation by “clone runtime from snapshot, apply commands” is clean and keeps the live runtime pure, but it may be expensive for large documents/workbooks. Your Word editor currently runs in the main thread with no Web Workers. If XLSX follows that constraint, simulation must be bounded and possibly incremental.
355
-
356
- Spreadsheet scope creep
357
-
358
- Excel-compatible isn’t just cells: tables, named items, pivot tables, comments, charts, external connections, macros, conditional formatting, data validation, etc. Many of these will be preserve-only early. The agent design must be brutally honest: if an operation can’t be proven safe for import → edit → export → reopen, it stays preserve-only or unsupported-fatal.
359
-
360
- Crossing preserve-only boundaries
361
-
362
- The hardest UX is not blocking; it’s explaining clearly *why* something is locked and what alternatives exist without implying the system can “just handle it.” This must be standardized: a preserve-only boundary always yields explicit lock/warn/block behavior.
363
-
364
- Validation vs. real host behavior
365
-
366
- Open XML SDK validation is necessary but not sufficient; your repo says Word behavior is final, and SDK validation is not an authorization to “repair heuristics.” Even at the package level, conformant relationships/parts matter, but host apps still have quirks.
367
-
368
- Open questions to resolve before locking the spec into v1
369
-
370
- * Should the agent layer be allowed to “execute” by default in any mode, or should v1 be proposal-first with an opt-in “direct execution” switch per host? This affects trust posture and audit requirements.
371
- * How do you want to represent XLSX “detached anchors” analogues (e.g., a comment tied to a cell that gets deleted, or a named range whose target moves)? The Word model has explicit detached anchors; XLSX needs an equivalent if you want honest review trails.
372
- * What is the minimum spreadsheet command set that can be certified against “reopen in Excel without repair prompts” early? This dictates what the agent can safely do.
373
- * How will you surface MCE/unknown namespace issues in XLSX packages without showing XML? The compatibility report pattern can carry “featureKey + message + affected range,” but the importer must generate those consistently.
374
-
375
- ## Concrete deliverable in the requested format
376
-
377
- This section is a repo-ready deliverable: interaction model, command/tool interfaces, UX patterns, safety/trust rules, approval flows, implementation phases, open questions, and test/release gates.
378
-
379
- Interaction model
380
-
381
- Define a strict interaction loop with explicit runtime boundaries:
382
-
383
- 1) **Context hydration** (read-only): agent layer requests baseline context + selection slice.
384
- 2) **Classification**: agent decides whether the user asked for explain/propose/execute (default: propose for mutations).
385
- 3) **Plan output**: agent emits a structured `AgentPlan` and either requests more slices or emits commands.
386
- 4) **Simulation transaction**: run commands in sandbox runtime clone; generate diff + compatibility delta.
387
- 5) **Present**: show explanation + proposed changes + trust badge + risk posture.
388
- 6) **User decision**: accept/reject/edit the plan.
389
- 7) **Commit**: apply commands via live runtime dispatch in a single host-visible transaction group; emit audit log entry.
390
-
391
- Command/tool interface examples
392
-
393
- Define a minimal tool surface that the LLM can call (or that the orchestrator can call on its behalf). Keep it small.
394
-
395
- **Tool: `context.get`**
396
- Fetch structured context slices; must be explicit in scope.
397
-
398
- ```ts
399
- type ContextGetRequest =
400
- & AgentEnvelope
401
- & {
402
- selection?: AgentSelection;
403
- slices: Array<
404
- | { kind: "docx.selection_text"; maxChars: number; includeSurrounding?: number }
405
- | { kind: "docx.comments_in_selection" }
406
- | { kind: "docx.tracked_changes_in_selection" }
407
- | { kind: "xlsx.range_grid"; sheetId: string; a1: string; include: ("values"|"text"|"formulas")[]; maxCells: number }
408
- | { kind: "xlsx.tables_overlapping_range"; sheetId: string; a1: string }
409
- | { kind: "xlsx.named_items"; scope: "workbook"|"sheet"; sheetId?: string; maxItems: number }
410
- | { kind: "xlsx.comments_in_range"; sheetId: string; a1: string }
411
- | { kind: "compatibility.summary" }
412
- >;
413
- };
414
-
415
- type ContextGetResponse = AgentToolResult<{
416
- slices: Record<string, unknown>; // keyed by slice request ids
417
- redactions: Array<{ sliceId: string; reason: string }>;
418
- }>;
419
- ```
420
-
421
- Why this structure: it enforces “don’t leak the full package,” and it gives you a UI-native “what the agent saw” artifact for trust.
422
-
423
- **Tool: `changes.simulate`**
424
- Run a command batch against a sandbox runtime.
425
-
426
- ```ts
427
- type SimulateRequest =
428
- & AgentEnvelope
429
- & {
430
- selection?: AgentSelection;
431
- commands: Array<DocxEditorCommand | XlsxEditorCommand>;
432
- expectedEffects?: Array<"text_change"|"formula_change"|"format_change"|"comment_change">;
433
- limits: { maxChangedAtoms: number; maxRuntimeMs: number };
434
- };
435
-
436
- type SimulateResponse = AgentToolResult<{
437
- diff: {
438
- kind: "docx" | "xlsx";
439
- summary: string;
440
- atomsChanged: number;
441
- docx?: { before: string; after: string; affectedAnchors: Array<{ from: number; to: number }> };
442
- xlsx?: { cells: Array<{ a1: string; before: { value?: any; formula?: string }; after: { value?: any; formula?: string } }> };
443
- };
444
- commandDigest: string; // hash of normalized commands
445
- compatibilityDelta: {
446
- blockExportChanged: boolean;
447
- newWarnings: EditorWarning[];
448
- newFeatureEntries: CompatibilityFeatureEntry[];
449
- };
450
- }>;
451
- ```
452
-
453
- This bakes in two “honesty” properties: (a) simulation is distinct from apply, and (b) export posture is always computed from compatibility/warnings, not inferred.
454
-
455
- **Tool: `changes.apply`**
456
- Apply the exact simulated command batch to the live runtime, guarded by `baseRevisionToken`.
457
-
458
- ```ts
459
- type ApplyRequest =
460
- & AgentEnvelope
461
- & {
462
- commands: Array<DocxEditorCommand | XlsxEditorCommand>;
463
- commandDigest: string; // must match simulation
464
- approval: { approvedByUserId: string; approvedAt: string; rationale?: string };
465
- };
466
-
467
- type ApplyResponse = AgentToolResult<{
468
- committedRevisionToken: string;
469
- committedAt: string;
470
- undoBoundaryId?: string;
471
- }>;
472
- ```
473
-
474
- This enforces “what you apply must match what you showed.” It also supports optimistic concurrency: if the revision token changed, block and require re-simulation.
475
-
476
- DOCX command subset (existing)
477
-
478
- For DOCX, reuse `EditorCommand` and a constrained subset for agent use in v1; your runtime already supports dispatching these commands and producing deterministic commit boundaries.
479
-
480
- Examples the agent can output:
481
-
482
- ```ts
483
- // Replace selected text with new text (via the runtime's text command sequence)
484
- { type: "text.insert", text: "…" }
485
- { type: "text.delete-backward" }
486
-
487
- // Add a comment anchored to current selection
488
- { type: "comment.add", comment: { … } }
489
-
490
- // Open/resolve/reopen comment threads
491
- { type: "comment.open", commentId: "…" }
492
- { type: "comment.resolve", commentId: "…" }
493
- ```
494
-
495
- Note: the agent layer should prefer high-level “replace selection” compound actions that compile to a deterministic sequence of primitive commands, rather than letting the model freestyle multi-step editing. This is a product honesty measure: fewer degrees of freedom means fewer unexpected diffs.
496
-
497
- XLSX command subset (new; must mirror DOCX rigor)
498
-
499
- Design `XlsxEditorCommand` as a discriminated union parallel to `EditorCommand`, with explicit range semantics.
500
-
501
- Minimum v1 command surface (agent-safe):
502
-
503
- ```ts
504
- type XlsxEditorCommand =
505
- | { type: "selection.set"; selection: { sheetId: string; a1: string; areas?: Array<{sheetId:string;a1:string}> } }
506
- | { type: "range.setValues"; sheetId: string; a1: string; values: any[][] }
507
- | { type: "range.setFormulas"; sheetId: string; a1: string; formulas: string[][] }
508
- | { type: "range.clear"; sheetId: string; a1: string; mode: "values"|"formats"|"all" }
509
- | { type: "comment.add"; sheetId: string; cellA1: string; body: string }
510
- | { type: "comment.reply"; commentId: string; body: string }
511
- | { type: "namedItem.add"; scope: "workbook"|"sheet"; name: string; referenceA1: string; sheetId?: string }
512
- | { type: "table.convertToRange"; tableId: string }; // if/when supported
513
- ```
514
-
515
- This mirrors Excel’s own object model emphasis on ranges and avoids inventing a “cell mutation API” that doesn’t match user expectations.
516
-
517
- Safety/trust rules (non-negotiable)
518
-
519
- These rules are the spec-level guardrails that make the system honest:
520
-
521
- * The agent must never mutate state directly; it must propose or invoke typed runtime commands.
522
- * Any mutation must be simulatable; if you can’t simulate it deterministically, it cannot be auto-applied in v1.
523
- * Preserve-only regions are locked; agent edits inside them are blocked unless the user explicitly enters a destructive conversion flow (warn + risk acknowledgement).
524
- * Unsupported-fatal states fail closed: explanation-only allowed; mutation and export blocked.
525
- * Export posture must be derived from compatibility report + warnings + errors. Never infer from model confidence.
526
- * Open XML SDK is for CI/service validation, not shipped runtime transformations.
527
-
528
- Approval flows
529
-
530
- Implement two layers of approval:
531
-
532
- * **Proposal approval**: user accepts a proposed change set (single-step accept or per-change accept).
533
- * **Risk acknowledgement approval**: required when the simulation indicates any of:
534
- * preserve-only content touched,
535
- * new warnings of `export_roundtrip_risk` class,
536
- * any newly introduced compatibility feature entries that are not supported-roundtrip, or
537
- * operation crosses a policy threshold (too many atoms, too many sheets).
538
-
539
- The apply step must re-check `baseRevisionToken` and command digest to prevent stale approvals and “apply something different than what was shown.”
540
-
541
- Implementation phases
542
-
543
- Phase boundaries are defined by what can be certified safely.
544
-
545
- **Phase Alpha: shared agent scaffolding (DOCX only, explain-only)**
546
- Ship `agent-core` + DOCX adapter for context slices and explanations; no mutation. Use this to validate context slicing, trust UI, and audit logging.
547
-
548
- **Phase Beta: DOCX proposal mode (bounded text + comments)**
549
- Enable proposal + simulation + approval for: rewrite selected text, add comment, small formatting normalizations that are already supported-roundtrip. Gate apply behind simulation.
550
-
551
- **Phase Gamma: XLSX runtime + schema of commands + proposal mode for ranges**
552
- As soon as XLSX runtime exists, implement range context slices and a minimal `XlsxEditorCommand` set: set values/formulas, add comments, add named items. This matches Microsoft’s range-centric model and gives agent “real” spreadsheet capabilities early.
553
-
554
- **Phase Delta: cross-editor parity + shared trust UI + replay harness**
555
- Unify UI components, finalize audit schema, build replay runner that replays agent-applied commands from snapshots for both editors.
556
-
557
- Test matrix, fixture plan, and release gates
558
-
559
- Reuse the DOCX repo’s stance: fixtures + package integrity checks + Open XML SDK validation + preserve-only survival checks + host certification; SDK validation is necessary but not sufficient.
560
-
561
- For the agent layer, add two new fixture dimensions:
562
-
563
- * **A-dimension (agent action scripts):** deterministic sequences of tool calls and expected normalized command outputs.
564
- * **R-dimension (roundtrip evidence):** import → simulate → apply → export → reopen checks, including “no repair prompts” in real host environments.
565
-
566
- DOCX fixtures already have a defined corpus and gate. The agent layer should add scripted interactions per fixture (e.g., “summarize,” “rewrite paragraph 2,” “add comment,” “accept a change”), ensuring that in preserve-only fixtures, the agent correctly locks/blocks instead of attempting edits.
567
-
568
- For XLSX, define an analogous minimal v1 fixture corpus (example keys, not requirements):
569
-
570
- * X01: values + basic formatting (supported-roundtrip target)
571
- * X02: basic formulas + relative references (supported-roundtrip target)
572
- * X03: named ranges + named formulas (supported-roundtrip target)
573
- * X04: comments as threads (supported-roundtrip target)
574
- * X05: tables (likely preserve-only initially; still must survive)
575
- * X06: pivot tables (preserve-only early; must survive; edits blocked)
576
- * X07: unknown extensions / extLst / MCE content (preserve-only survival)
577
- * X08: malformed package states (unsupported-fatal; fail closed)
578
-
579
- Release gate for agent-enabled edits (both editors):
580
-
581
- * “Simulated diff matches applied diff” (command digest enforcement).
582
- * “No silent drops” (preserve-only survival check).
583
- * “Open XML SDK validation passes” as a necessary check (CI/service only).
584
- * “Host reopen without repair prompts” as the final gate.
585
-
586
- Open questions (deliverable reminders)
587
-
588
- * Do you want agent-generated spreadsheet “comments” to map to Excel threaded comments exclusively, or do you also support legacy notes? Microsoft’s docs focus on threaded comments as the comment object model.
589
- * Should the agent be allowed to propose pivot table mutations at all in v1, or must pivots be preserve-only with explanation-only? The official API treats pivots as objects with refresh semantics, but roundtrip fidelity is non-trivial.
590
- * For formulas, will the runtime provide an internal evaluator, or will it treat formulas as strings and rely on Excel recalculation on open? The Range docs distinguish formulas vs values; correctness expectations differ.
591
-
592
- ## Sources
593
-
594
- Repository primary sources (runtime, contracts, UX, compliance):
595
-
596
- * Runtime/host contract lock (WordReviewEditor): snapshot boundaries, command dispatch, compatibility report, events.
597
- * Document runtime implementation: command dispatch → transaction → commit, revision tokens, event emission.
598
- * Command model (`EditorCommand`, `EditorTransaction`, mapping/effects): typed mutation surface.
599
- * Public API types (`RuntimeRenderSnapshot`, warnings/errors, compatibility taxonomy, surface projections): shared data contracts.
600
- * Frontend architecture + UX guide: snapshot-driven UI, health/trust surfaces, review workflow patterns.
601
- * Repo guidance for agents and compliance stance: commands-only edits, preservation requirements, Open XML SDK policy.
602
-
603
- Primary/strong external references (packaging, MCE, spreadsheet abstractions):
604
-
605
- * OPC overview and mandatory structures described in a preservation-oriented reference (mandatory `[Content_Types].xml`, `_rels/`, etc.).
606
- * Markup Compatibility and Extensibility (MCE) overview and constructs (ignorable namespaces, process-content, must-understand).
607
- * ECMA/OOXML spec mirrors for OPC relationships and conformance constraints (relationships; package conformance requirements; MCE `Ignorable` + `AlternateContent` rules).
608
-
609
- Open XML SDK documentation (validation and packaging surfaces; CI/service only per your policy):
610
-
611
- * `OpenXmlValidator` documentation (validation surface; doesn’t replace host behavior).
612
- * Spreadsheet packaging type: `SpreadsheetDocument` as an `OpenXmlPackage`.
613
- * Markup compatibility processing settings in the SDK (`MarkupCompatibilityProcessSettings`, OpenSettings).
614
-
615
- Excel object model references (official Microsoft docs; informs spreadsheet-native abstractions):
616
-
617
- * Range-centric model (no Cell object; values/text/formulas distinction; getting ranges).
618
- * Excel comments as threaded discussions tied to a cell.
619
- * Excel tables as objects with ranges and identity.
620
- * Named items (defined names) and collections at workbook/sheet scope.
621
- * Pivot tables as first-class objects (useful even if preserve-only initially).