@beyondwork/docx-react-component 1.0.0 → 1.0.2

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 (560) hide show
  1. package/README.md +44 -104
  2. package/package.json +66 -15
  3. package/src/api/public-types.ts +1 -1
  4. package/src/compare/diff-engine.ts +530 -0
  5. package/src/compare/export-redlines.ts +162 -0
  6. package/src/compare/snapshot.ts +37 -0
  7. package/src/core/commands/index.ts +1 -1
  8. package/src/core/state/editor-state.ts +2 -2
  9. package/src/index.ts +45 -0
  10. package/src/legal/bookmarks.ts +196 -0
  11. package/src/legal/cross-references.ts +356 -0
  12. package/src/legal/defined-terms.ts +203 -0
  13. package/src/runtime/document-runtime.ts +3 -5
  14. package/src/runtime/table-commands.ts +4 -1
  15. package/src/runtime/table-schema.ts +17 -2
  16. package/src/runtime/virtualized-rendering.ts +258 -0
  17. package/src/ui/WordReviewEditor.tsx +256 -35
  18. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +2 -2
  19. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +16 -2
  20. package/.codex/config.toml +0 -5
  21. package/.corepack/v1/pnpm/10.30.3/.corepack +0 -1
  22. package/.corepack/v1/pnpm/10.30.3/LICENSE +0 -22
  23. package/.corepack/v1/pnpm/10.30.3/README.md +0 -240
  24. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +0 -6
  25. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +0 -5
  26. package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +0 -195400
  27. package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +0 -2
  28. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-arm64-2HJ4WGO6.node +0 -0
  29. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-x64-3G3H6IW4.node +0 -0
  30. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-arm64-msvc-Q6BARPPB.node +0 -0
  31. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-x64-msvc-J2TZHRQI.node +0 -0
  32. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.bash +0 -31
  33. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +0 -22
  34. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +0 -193
  35. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +0 -27
  36. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  37. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  38. package/.corepack/v1/pnpm/10.30.3/dist/worker.js +0 -10119
  39. package/.corepack/v1/pnpm/10.30.3/package.json +0 -192
  40. package/.cursor/mcp.json +0 -7
  41. package/.github/workflows/ci.yml +0 -35
  42. package/.mcp.json +0 -7
  43. package/.openclaw/workspace-state.json +0 -4
  44. package/.pnpmrc.json +0 -1
  45. package/.wave-launch.sh +0 -7
  46. package/.workspace-marker +0 -1
  47. package/AGENTS.md +0 -78
  48. package/CHANGELOG.md +0 -177
  49. package/DESIGN.md +0 -929
  50. package/HEARTBEAT.md +0 -7
  51. package/IDENTITY.md +0 -23
  52. package/SOUL.md +0 -36
  53. package/TOOLS.md +0 -40
  54. package/USER.md +0 -17
  55. package/docs/README.md +0 -107
  56. package/docs/agents/wave-cont-eval-role.md +0 -36
  57. package/docs/agents/wave-cont-qa-role.md +0 -52
  58. package/docs/agents/wave-deploy-verifier-role.md +0 -34
  59. package/docs/agents/wave-design-role.md +0 -47
  60. package/docs/agents/wave-documentation-role.md +0 -34
  61. package/docs/agents/wave-infra-role.md +0 -34
  62. package/docs/agents/wave-integration-role.md +0 -37
  63. package/docs/agents/wave-launcher-role.md +0 -41
  64. package/docs/agents/wave-orchestrator-role.md +0 -52
  65. package/docs/agents/wave-planner-role.md +0 -39
  66. package/docs/agents/wave-security-role.md +0 -40
  67. package/docs/architecture/docx/README.md +0 -10
  68. package/docs/architecture/future/README.md +0 -8
  69. package/docs/architecture/ooxml-upgrade-analysis.md +0 -134
  70. package/docs/architecture/platform/shared-openxml-editor-platform.md +0 -153
  71. package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +0 -187
  72. package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +0 -150
  73. package/docs/comment-redline-overview.md +0 -350
  74. package/docs/concepts/context7-vs-skills.md +0 -118
  75. package/docs/concepts/operating-modes.md +0 -91
  76. package/docs/concepts/runtime-agnostic-orchestration.md +0 -111
  77. package/docs/concepts/what-is-a-wave.md +0 -217
  78. package/docs/context7/bundles.json +0 -222
  79. package/docs/context7/planner-agent/README.md +0 -28
  80. package/docs/context7/planner-agent/manifest.json +0 -83
  81. package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +0 -3283
  82. package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +0 -1699
  83. package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +0 -2251
  84. package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +0 -1729
  85. package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +0 -3747
  86. package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +0 -1675
  87. package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +0 -1173
  88. package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +0 -5211
  89. package/docs/context7/planner-agent/topics/planning-and-orchestration.md +0 -24
  90. package/docs/evals/arm-templates/README.md +0 -13
  91. package/docs/evals/arm-templates/full-wave.json +0 -15
  92. package/docs/evals/arm-templates/single-agent.json +0 -15
  93. package/docs/evals/benchmark-catalog.json +0 -670
  94. package/docs/evals/cases/README.md +0 -47
  95. package/docs/evals/cases/wave-blackboard-inbox-targeting.json +0 -73
  96. package/docs/evals/cases/wave-contradiction-conflict.json +0 -104
  97. package/docs/evals/cases/wave-expert-routing-preservation.json +0 -69
  98. package/docs/evals/cases/wave-hidden-profile-private-evidence.json +0 -81
  99. package/docs/evals/cases/wave-premature-closure-guard.json +0 -71
  100. package/docs/evals/cases/wave-silo-cross-agent-state.json +0 -77
  101. package/docs/evals/cases/wave-simultaneous-lockstep.json +0 -92
  102. package/docs/evals/external-benchmarks.json +0 -85
  103. package/docs/evals/external-command-config.sample.json +0 -9
  104. package/docs/evals/external-command-config.swe-bench-pro.json +0 -8
  105. package/docs/evals/pilots/README.md +0 -47
  106. package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +0 -64
  107. package/docs/evals/pilots/swe-bench-pro-public-pilot.json +0 -111
  108. package/docs/evals/wave-benchmark-program.md +0 -302
  109. package/docs/guides/planner.md +0 -220
  110. package/docs/guides/recommendations-0.8.9.md +0 -133
  111. package/docs/guides/signal-wrappers.md +0 -165
  112. package/docs/guides/terminal-surfaces.md +0 -96
  113. package/docs/image copy.png +0 -0
  114. package/docs/image.png +0 -0
  115. package/docs/images/image.png +0 -0
  116. package/docs/legal-feedback-architecture.md +0 -498
  117. package/docs/plans/component-cutover-matrix.json +0 -1072
  118. package/docs/plans/component-cutover-matrix.md +0 -307
  119. package/docs/plans/context7-wave-orchestrator.md +0 -155
  120. package/docs/plans/current-state.md +0 -198
  121. package/docs/plans/docx/README.md +0 -9
  122. package/docs/plans/examples/wave-benchmark-improvement.md +0 -108
  123. package/docs/plans/examples/wave-example-live-proof.md +0 -435
  124. package/docs/plans/master-plan.md +0 -224
  125. package/docs/plans/migration.md +0 -538
  126. package/docs/plans/operations/README.md +0 -7
  127. package/docs/plans/operations/wave-10-word-certification.md +0 -87
  128. package/docs/plans/operations/wave-8-railway-staging.md +0 -153
  129. package/docs/plans/operations/wave-9-manual-certification.md +0 -73
  130. package/docs/plans/platform/README.md +0 -9
  131. package/docs/plans/reference/legal-checklist-coverage.md +0 -258
  132. package/docs/plans/wave-orchestrator.md +0 -423
  133. package/docs/plans/waves/README.md +0 -75
  134. package/docs/plans/waves/completed/wave-0.md +0 -195
  135. package/docs/plans/waves/completed/wave-1.md +0 -379
  136. package/docs/plans/waves/completed/wave-10.md +0 -670
  137. package/docs/plans/waves/completed/wave-11.md +0 -335
  138. package/docs/plans/waves/completed/wave-12.md +0 -417
  139. package/docs/plans/waves/completed/wave-13.md +0 -316
  140. package/docs/plans/waves/completed/wave-14.md +0 -319
  141. package/docs/plans/waves/completed/wave-15.md +0 -321
  142. package/docs/plans/waves/completed/wave-16.md +0 -316
  143. package/docs/plans/waves/completed/wave-17.md +0 -331
  144. package/docs/plans/waves/completed/wave-18.md +0 -328
  145. package/docs/plans/waves/completed/wave-2.md +0 -438
  146. package/docs/plans/waves/completed/wave-3.md +0 -435
  147. package/docs/plans/waves/completed/wave-4.md +0 -430
  148. package/docs/plans/waves/completed/wave-5.md +0 -430
  149. package/docs/plans/waves/completed/wave-6.md +0 -430
  150. package/docs/plans/waves/completed/wave-7.md +0 -526
  151. package/docs/plans/waves/completed/wave-8.md +0 -596
  152. package/docs/plans/waves/completed/wave-9.md +0 -552
  153. package/docs/plans/waves/deferred/README.md +0 -14
  154. package/docs/plans/waves/deferred/encrypted-intake-contracts.md +0 -282
  155. package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +0 -308
  156. package/docs/plans/waves/deferred/wave-encrypted-intake.md +0 -451
  157. package/docs/plans/waves/design/README.md +0 -5
  158. package/docs/plans/waves/design/wave-1-a1.md +0 -309
  159. package/docs/plans/waves/reviews/README.md +0 -5
  160. package/docs/plans/waves/reviews/wave-0-cont-qa.md +0 -151
  161. package/docs/plans/waves/reviews/wave-1-cont-qa.md +0 -46
  162. package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +0 -51
  163. package/docs/plans/waves/reviews/wave-10-cont-qa.md +0 -24
  164. package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +0 -46
  165. package/docs/plans/waves/reviews/wave-10-performance-signoff.md +0 -55
  166. package/docs/plans/waves/reviews/wave-10-regression-proof.md +0 -23
  167. package/docs/plans/waves/reviews/wave-10-release-audit.md +0 -31
  168. package/docs/plans/waves/reviews/wave-10-service-proof.md +0 -83
  169. package/docs/plans/waves/reviews/wave-10-word-certification.md +0 -31
  170. package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +0 -277
  171. package/docs/plans/waves/reviews/wave-18-cont-qa.md +0 -255
  172. package/docs/plans/waves/reviews/wave-18-parity-proof.md +0 -271
  173. package/docs/plans/waves/reviews/wave-19-cont-qa.md +0 -59
  174. package/docs/plans/waves/reviews/wave-2-cont-qa.md +0 -72
  175. package/docs/plans/waves/reviews/wave-20-cont-qa.md +0 -60
  176. package/docs/plans/waves/reviews/wave-25-cont-qa.md +0 -48
  177. package/docs/plans/waves/reviews/wave-28-cont-qa.md +0 -46
  178. package/docs/plans/waves/reviews/wave-29-cont-qa.md +0 -53
  179. package/docs/plans/waves/reviews/wave-3-cont-qa.md +0 -53
  180. package/docs/plans/waves/reviews/wave-3-core-proof.md +0 -77
  181. package/docs/plans/waves/reviews/wave-3-validator-proof.md +0 -73
  182. package/docs/plans/waves/reviews/wave-32-cont-qa.md +0 -43
  183. package/docs/plans/waves/reviews/wave-33-cont-qa.md +0 -526
  184. package/docs/plans/waves/reviews/wave-34-cont-qa.md +0 -100
  185. package/docs/plans/waves/reviews/wave-35-cont-qa.md +0 -145
  186. package/docs/plans/waves/reviews/wave-4-cont-qa.md +0 -47
  187. package/docs/plans/waves/reviews/wave-4-structure-proof.md +0 -69
  188. package/docs/plans/waves/reviews/wave-5-comment-proof.md +0 -158
  189. package/docs/plans/waves/reviews/wave-5-cont-qa.md +0 -68
  190. package/docs/plans/waves/reviews/wave-6-cont-qa.md +0 -416
  191. package/docs/plans/waves/reviews/wave-6-redline-proof.md +0 -130
  192. package/docs/plans/waves/reviews/wave-7-cont-qa.md +0 -82
  193. package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +0 -85
  194. package/docs/plans/waves/reviews/wave-7-preservation-proof.md +0 -119
  195. package/docs/plans/waves/reviews/wave-7-trust-ux.md +0 -87
  196. package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +0 -128
  197. package/docs/plans/waves/reviews/wave-8-cont-qa.md +0 -92
  198. package/docs/plans/waves/reviews/wave-8-live-proof.md +0 -140
  199. package/docs/plans/waves/reviews/wave-8-security.md +0 -47
  200. package/docs/plans/waves/reviews/wave-9-editor-embedding.md +0 -39
  201. package/docs/plans/waves/reviews/wave-9-fixture-runner.md +0 -56
  202. package/docs/plans/waves/reviews/wave-9-live-proof.md +0 -105
  203. package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +0 -152
  204. package/docs/plans/waves/specs/README.md +0 -5
  205. package/docs/plans/waves/specs/wave-1-component-boundaries.md +0 -322
  206. package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +0 -323
  207. package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +0 -339
  208. package/docs/plans/waves/specs/wave-1-runtime-contracts.md +0 -509
  209. package/docs/plans/waves/wave-19.md +0 -341
  210. package/docs/plans/waves/wave-20.md +0 -308
  211. package/docs/plans/waves/wave-21.md +0 -289
  212. package/docs/plans/waves/wave-22.md +0 -221
  213. package/docs/plans/waves/wave-23.md +0 -295
  214. package/docs/plans/waves/wave-24.md +0 -286
  215. package/docs/plans/waves/wave-25.md +0 -313
  216. package/docs/plans/waves/wave-26.md +0 -300
  217. package/docs/plans/waves/wave-27.md +0 -299
  218. package/docs/plans/waves/wave-28.md +0 -368
  219. package/docs/plans/waves/wave-29.md +0 -303
  220. package/docs/plans/waves/wave-30.md +0 -307
  221. package/docs/plans/waves/wave-31.md +0 -231
  222. package/docs/plans/waves/wave-32.md +0 -152
  223. package/docs/plans/waves/wave-33.md +0 -147
  224. package/docs/plans/waves/wave-34.md +0 -148
  225. package/docs/plans/waves/wave-35.md +0 -141
  226. package/docs/plans/waves/wave-36.md +0 -146
  227. package/docs/plans/xlsx/README.md +0 -14
  228. package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +0 -126
  229. package/docs/reference/cli-reference.md +0 -600
  230. package/docs/reference/coordination-and-closure.md +0 -487
  231. package/docs/reference/deep-research-report (15).md +0 -25
  232. package/docs/reference/docx/README.md +0 -10
  233. package/docs/reference/legal-checklist.md +0 -445
  234. package/docs/reference/live-proof-waves.md +0 -199
  235. package/docs/reference/ooxml-compliance.md +0 -129
  236. package/docs/reference/ooxml-feature-parity-matrix.md +0 -172
  237. package/docs/reference/platform/shared-ooxml-platform-guidance.md +0 -77
  238. package/docs/reference/prototype-agent-prompt-legal-fidelity.md +0 -155
  239. package/docs/reference/public-api.md +0 -456
  240. package/docs/reference/repository-guidance.md +0 -58
  241. package/docs/reference/runtime-config/README.md +0 -182
  242. package/docs/reference/runtime-config/claude.md +0 -110
  243. package/docs/reference/runtime-config/codex.md +0 -82
  244. package/docs/reference/runtime-config/opencode.md +0 -93
  245. package/docs/reference/sample-waves.md +0 -105
  246. package/docs/reference/skills.md +0 -237
  247. package/docs/reference/templates/AGENTS.md +0 -78
  248. package/docs/reference/templates/HEARTBEAT.md +0 -7
  249. package/docs/reference/templates/IDENTITY.md +0 -23
  250. package/docs/reference/templates/SOUL.md +0 -36
  251. package/docs/reference/templates/TOOLS.md +0 -40
  252. package/docs/reference/templates/USER.md +0 -17
  253. package/docs/reference/wave-control.md +0 -184
  254. package/docs/reference/wave-planning-lessons.md +0 -167
  255. package/docs/reference/word-review-editor-frontend-architecture.md +0 -479
  256. package/docs/reference/word-review-editor-ux-guide.md +0 -253
  257. package/docs/reference/xlsx/xlsx-ooxml-compliance.md +0 -137
  258. package/docs/research/agent-context-sources.md +0 -178
  259. package/docs/research/coordination-failure-review.md +0 -290
  260. package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +0 -2317
  261. package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +0 -219
  262. package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +0 -1112
  263. package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +0 -751
  264. package/docs/research/xlsx/raw/README.md +0 -13
  265. package/docs/roadmap.md +0 -174
  266. package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +0 -677
  267. package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +0 -274
  268. package/docs/xlsx-react/README.md +0 -38
  269. package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +0 -621
  270. package/docs/xlsx-react/canonical-workbook-model-and-commands.md +0 -948
  271. package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +0 -228
  272. package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +0 -809
  273. package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +0 -537
  274. package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +0 -520
  275. package/docs/xlsx-react/xlsx-editor-research-pack.md +0 -871
  276. package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +0 -436
  277. package/docs/xlsx-react/xlsx-ooxml-compliance.md +0 -320
  278. package/examples/README.md +0 -16
  279. package/memory/MEMORY.md +0 -24
  280. package/pnpm-workspace.yaml +0 -4
  281. package/scripts/check-no-authored-js.sh +0 -13
  282. package/scripts/context7-api-check.sh +0 -65
  283. package/scripts/context7-export-env.sh +0 -42
  284. package/scripts/run-context7-mcp.sh +0 -8
  285. package/scripts/run-workspace-tests.sh +0 -15
  286. package/scripts/start-wave-10-local.sh +0 -189
  287. package/scripts/wave-agent-attach.sh +0 -47
  288. package/scripts/wave-auto-answer.sh +0 -118
  289. package/scripts/wave-dashboard-attach.sh +0 -13
  290. package/scripts/wave-launch.sh +0 -273
  291. package/scripts/wave-overnight-supervisor.sh +0 -145
  292. package/scripts/wave-status.sh +0 -379
  293. package/scripts/wave-watch.sh +0 -231
  294. package/services/README.md +0 -17
  295. package/services/openxml-validator/Dockerfile +0 -29
  296. package/services/openxml-validator/OpenXmlValidator.Api.csproj +0 -12
  297. package/services/openxml-validator/Program.cs +0 -436
  298. package/services/openxml-validator/README.md +0 -152
  299. package/services/openxml-validator/railway.json +0 -16
  300. package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +0 -318
  301. package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +0 -1302
  302. package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +0 -546
  303. package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +0 -146
  304. package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +0 -2
  305. package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +0 -818
  306. package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +0 -229
  307. package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +0 -121
  308. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +0 -21
  309. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +0 -1
  310. package/services/react-word-editor/Dockerfile +0 -26
  311. package/services/react-word-editor/README.md +0 -254
  312. package/services/react-word-editor/app/api/certification/route.ts +0 -79
  313. package/services/react-word-editor/app/api/demo-sessions/route.ts +0 -109
  314. package/services/react-word-editor/app/api/deploy-health/route.ts +0 -23
  315. package/services/react-word-editor/app/api/exports/[exportId]/route.ts +0 -34
  316. package/services/react-word-editor/app/api/exports/route.ts +0 -81
  317. package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +0 -100
  318. package/services/react-word-editor/app/api/health/route.ts +0 -70
  319. package/services/react-word-editor/app/api/runs/[runId]/route.ts +0 -36
  320. package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +0 -85
  321. package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +0 -199
  322. package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +0 -45
  323. package/services/react-word-editor/app/api/uploads/route.ts +0 -70
  324. package/services/react-word-editor/app/api/validate/route.ts +0 -310
  325. package/services/react-word-editor/app/certification/[runId]/page.tsx +0 -14
  326. package/services/react-word-editor/app/certification/page.tsx +0 -32
  327. package/services/react-word-editor/app/dashboard/page.tsx +0 -7
  328. package/services/react-word-editor/app/demo/page.tsx +0 -30
  329. package/services/react-word-editor/app/demo/prototype-client.tsx +0 -1080
  330. package/services/react-word-editor/app/editor/[sessionId]/page.tsx +0 -33
  331. package/services/react-word-editor/app/fixtures/page.tsx +0 -7
  332. package/services/react-word-editor/app/globals.css +0 -121
  333. package/services/react-word-editor/app/layout.tsx +0 -32
  334. package/services/react-word-editor/app/page.tsx +0 -30
  335. package/services/react-word-editor/app/runs/[runId]/page.tsx +0 -34
  336. package/services/react-word-editor/app/wave-10-word-review/page.tsx +0 -7
  337. package/services/react-word-editor/components/harness-control-bar.tsx +0 -289
  338. package/services/react-word-editor/components/harness-editor-session-client.tsx +0 -1214
  339. package/services/react-word-editor/components/harness-workspace-page.tsx +0 -715
  340. package/services/react-word-editor/components/reduced-motion-toggle.tsx +0 -79
  341. package/services/react-word-editor/components/workspace-certification-panel.tsx +0 -307
  342. package/services/react-word-editor/lib/certification-bundle.ts +0 -796
  343. package/services/react-word-editor/lib/certification-store.ts +0 -661
  344. package/services/react-word-editor/lib/demo-fixtures.test.mjs +0 -195
  345. package/services/react-word-editor/lib/demo-fixtures.ts +0 -1519
  346. package/services/react-word-editor/lib/editor-session-summary.test.mjs +0 -68
  347. package/services/react-word-editor/lib/editor-session-summary.ts +0 -14
  348. package/services/react-word-editor/lib/editor-session.ts +0 -228
  349. package/services/react-word-editor/lib/exports-route.test.mjs +0 -32
  350. package/services/react-word-editor/lib/harness-client.ts +0 -347
  351. package/services/react-word-editor/lib/harness-config.json +0 -30
  352. package/services/react-word-editor/lib/harness-config.test.mjs +0 -31
  353. package/services/react-word-editor/lib/harness-config.ts +0 -21
  354. package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +0 -220
  355. package/services/react-word-editor/lib/harness-editor-datastore.ts +0 -161
  356. package/services/react-word-editor/lib/private-mode.test.mjs +0 -42
  357. package/services/react-word-editor/lib/private-mode.ts +0 -61
  358. package/services/react-word-editor/lib/regression-report.test.mjs +0 -352
  359. package/services/react-word-editor/lib/regression-report.ts +0 -896
  360. package/services/react-word-editor/lib/run-artifacts.ts +0 -934
  361. package/services/react-word-editor/lib/run-history.ts +0 -755
  362. package/services/react-word-editor/lib/scenario-artifacts.test.mjs +0 -41
  363. package/services/react-word-editor/lib/scenario-artifacts.ts +0 -44
  364. package/services/react-word-editor/lib/storage.ts +0 -953
  365. package/services/react-word-editor/lib/validator-client.test.mjs +0 -54
  366. package/services/react-word-editor/lib/validator-client.ts +0 -95
  367. package/services/react-word-editor/lib/workspace-navigation.ts +0 -79
  368. package/services/react-word-editor/middleware.ts +0 -35
  369. package/services/react-word-editor/next-env.d.ts +0 -6
  370. package/services/react-word-editor/next.config.mjs +0 -15
  371. package/services/react-word-editor/package.json +0 -38
  372. package/services/react-word-editor/postcss.config.mjs +0 -8
  373. package/services/react-word-editor/railway.json +0 -21
  374. package/services/react-word-editor/scripts/wave-10-certification.mjs +0 -101
  375. package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +0 -911
  376. package/services/react-word-editor/tsconfig.json +0 -39
  377. package/services/react-word-editor/tsconfig.tsbuildinfo +0 -1
  378. package/skills/README.md +0 -48
  379. package/skills/domain-docx-compatibility/SKILL.md +0 -44
  380. package/skills/domain-docx-compatibility/skill.json +0 -19
  381. package/skills/domain-editor-architecture/SKILL.md +0 -49
  382. package/skills/domain-editor-architecture/skill.json +0 -19
  383. package/skills/domain-legal-review/SKILL.md +0 -39
  384. package/skills/domain-legal-review/skill.json +0 -19
  385. package/skills/provider-aws/SKILL.md +0 -117
  386. package/skills/provider-aws/adapters/claude.md +0 -1
  387. package/skills/provider-aws/adapters/codex.md +0 -1
  388. package/skills/provider-aws/references/service-verification.md +0 -39
  389. package/skills/provider-aws/skill.json +0 -54
  390. package/skills/provider-custom-deploy/SKILL.md +0 -64
  391. package/skills/provider-custom-deploy/skill.json +0 -50
  392. package/skills/provider-docker-compose/SKILL.md +0 -96
  393. package/skills/provider-docker-compose/adapters/local.md +0 -1
  394. package/skills/provider-docker-compose/skill.json +0 -53
  395. package/skills/provider-github-release/SKILL.md +0 -121
  396. package/skills/provider-github-release/adapters/claude.md +0 -1
  397. package/skills/provider-github-release/adapters/codex.md +0 -1
  398. package/skills/provider-github-release/skill.json +0 -55
  399. package/skills/provider-kubernetes/SKILL.md +0 -143
  400. package/skills/provider-kubernetes/adapters/claude.md +0 -1
  401. package/skills/provider-kubernetes/adapters/codex.md +0 -1
  402. package/skills/provider-kubernetes/references/kubectl-patterns.md +0 -58
  403. package/skills/provider-kubernetes/skill.json +0 -52
  404. package/skills/provider-railway/SKILL.md +0 -123
  405. package/skills/provider-railway/adapters/claude.md +0 -1
  406. package/skills/provider-railway/adapters/codex.md +0 -1
  407. package/skills/provider-railway/adapters/local.md +0 -1
  408. package/skills/provider-railway/adapters/opencode.md +0 -1
  409. package/skills/provider-railway/references/verification-commands.md +0 -39
  410. package/skills/provider-railway/skill.json +0 -71
  411. package/skills/provider-ssh-manual/SKILL.md +0 -97
  412. package/skills/provider-ssh-manual/skill.json +0 -54
  413. package/skills/repo-coding-rules/SKILL.md +0 -55
  414. package/skills/repo-coding-rules/skill.json +0 -34
  415. package/skills/role-cont-eval/SKILL.md +0 -91
  416. package/skills/role-cont-eval/adapters/codex.md +0 -1
  417. package/skills/role-cont-eval/skill.json +0 -36
  418. package/skills/role-cont-qa/SKILL.md +0 -100
  419. package/skills/role-cont-qa/adapters/claude.md +0 -1
  420. package/skills/role-cont-qa/skill.json +0 -36
  421. package/skills/role-deploy/SKILL.md +0 -97
  422. package/skills/role-deploy/skill.json +0 -36
  423. package/skills/role-design/SKILL.md +0 -50
  424. package/skills/role-design/skill.json +0 -36
  425. package/skills/role-documentation/SKILL.md +0 -76
  426. package/skills/role-documentation/skill.json +0 -36
  427. package/skills/role-implementation/SKILL.md +0 -45
  428. package/skills/role-implementation/skill.json +0 -36
  429. package/skills/role-infra/SKILL.md +0 -81
  430. package/skills/role-infra/skill.json +0 -36
  431. package/skills/role-integration/SKILL.md +0 -91
  432. package/skills/role-integration/skill.json +0 -36
  433. package/skills/role-planner/SKILL.md +0 -39
  434. package/skills/role-planner/skill.json +0 -21
  435. package/skills/role-research/SKILL.md +0 -65
  436. package/skills/role-research/skill.json +0 -36
  437. package/skills/role-security/SKILL.md +0 -60
  438. package/skills/role-security/skill.json +0 -36
  439. package/skills/runtime-claude/SKILL.md +0 -66
  440. package/skills/runtime-claude/skill.json +0 -36
  441. package/skills/runtime-codex/SKILL.md +0 -58
  442. package/skills/runtime-codex/skill.json +0 -36
  443. package/skills/runtime-local/SKILL.md +0 -46
  444. package/skills/runtime-local/skill.json +0 -36
  445. package/skills/runtime-opencode/SKILL.md +0 -58
  446. package/skills/runtime-opencode/skill.json +0 -36
  447. package/skills/signal-hygiene/SKILL.md +0 -51
  448. package/skills/signal-hygiene/skill.json +0 -20
  449. package/skills/tui-design/SKILL.md +0 -77
  450. package/skills/tui-design/references/tui-design.md +0 -259
  451. package/skills/tui-design/skill.json +0 -36
  452. package/skills/wave-core/SKILL.md +0 -141
  453. package/skills/wave-core/references/marker-syntax.md +0 -70
  454. package/skills/wave-core/skill.json +0 -35
  455. package/test/README.md +0 -16
  456. package/test/core/formatting-commands.test.ts +0 -285
  457. package/test/core/image-commands.test.ts +0 -298
  458. package/test/core/mapping.test.ts +0 -186
  459. package/test/core/text-commands.test.ts +0 -176
  460. package/test/fixtures/docx/F01-basic-contract.docx +0 -0
  461. package/test/fixtures/docx/F01-basic-contract.md +0 -33
  462. package/test/fixtures/docx/F02-headings-styles.docx +0 -0
  463. package/test/fixtures/docx/F02-headings-styles.md +0 -33
  464. package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
  465. package/test/fixtures/docx/F03-legal-outline-numbering.md +0 -34
  466. package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
  467. package/test/fixtures/docx/F04-restart-numbering-schedules.md +0 -33
  468. package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
  469. package/test/fixtures/docx/F05-table-heavy-agreement.md +0 -34
  470. package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
  471. package/test/fixtures/docx/F06-merged-cells-signature-table.md +0 -34
  472. package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
  473. package/test/fixtures/docx/F07-inline-images-exhibit.md +0 -34
  474. package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
  475. package/test/fixtures/docx/F08-hyperlinks.md +0 -33
  476. package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
  477. package/test/fixtures/docx/F09-comments-single-paragraph.md +0 -33
  478. package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
  479. package/test/fixtures/docx/F10-threaded-comments-resolve.md +0 -33
  480. package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
  481. package/test/fixtures/docx/F11-redlines-basic.md +0 -33
  482. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
  483. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +0 -33
  484. package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
  485. package/test/fixtures/docx/F13-comments-on-deleted-text.md +0 -33
  486. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
  487. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +0 -33
  488. package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
  489. package/test/fixtures/docx/F15-sections-headers-footers.md +0 -33
  490. package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
  491. package/test/fixtures/docx/F16-footnotes-endnotes.md +0 -33
  492. package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
  493. package/test/fixtures/docx/F17-fields-and-toc.md +0 -33
  494. package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
  495. package/test/fixtures/docx/F18-content-controls-template.md +0 -33
  496. package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
  497. package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +0 -35
  498. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
  499. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +0 -33
  500. package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
  501. package/test/fixtures/docx/F21-malformed-broken-docx.md +0 -33
  502. package/test/fixtures/docx/README.md +0 -74
  503. package/test/fixtures/docx/certification-manifest.json +0 -104
  504. package/test/fixtures/docx/fixtures.manifest.json +0 -196
  505. package/test/fixtures/encrypted-docx/README.md +0 -27
  506. package/test/fixtures/encrypted-docx/certification-manifest.json +0 -9
  507. package/test/fixtures/encrypted-docx/fixtures.manifest.json +0 -47
  508. package/test/fixtures/scenarios/docx/README.md +0 -25
  509. package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
  510. package/test/fixtures/scenarios/docx/S01-sow-template.md +0 -30
  511. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.docx +0 -0
  512. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.md +0 -32
  513. package/test/fixtures/scenarios/docx/scenario-manifest.json +0 -53
  514. package/test/formats/xlsx/io/xlsx-import.test.ts +0 -766
  515. package/test/formats/xlsx/model/workbook.test.ts +0 -669
  516. package/test/helpers/dom-setup.ts +0 -124
  517. package/test/io/comment-roundtrip.test.ts +0 -272
  518. package/test/io/complex-content-roundtrip.test.ts +0 -632
  519. package/test/io/docx-compatibility-regression.test.ts +0 -199
  520. package/test/io/docx-session.test.ts +0 -1495
  521. package/test/io/footnotes-roundtrip.test.ts +0 -318
  522. package/test/io/headers-footers-roundtrip.test.ts +0 -547
  523. package/test/io/numbering-roundtrip.test.ts +0 -234
  524. package/test/io/package-reader.test.ts +0 -199
  525. package/test/io/paragraph-properties-roundtrip.test.ts +0 -129
  526. package/test/io/preserved-package-roundtrip.test.ts +0 -365
  527. package/test/io/property-completeness.test.ts +0 -292
  528. package/test/io/revision-roundtrip.test.ts +0 -347
  529. package/test/io/structural-blocks.test.ts +0 -202
  530. package/test/io/table-media-roundtrip.test.ts +0 -448
  531. package/test/io/table-properties-roundtrip.test.ts +0 -569
  532. package/test/io/table-roundtrip.test.ts +0 -302
  533. package/test/io/text-roundtrip.test.ts +0 -344
  534. package/test/model/canonical-document.test.ts +0 -285
  535. package/test/preservation/opaque-fragment-store.test.ts +0 -121
  536. package/test/preservation/package-preservation.test.ts +0 -395
  537. package/test/preservation/store.test.ts +0 -84
  538. package/test/review/comment-remapping.test.ts +0 -220
  539. package/test/review/comment-store.test.ts +0 -180
  540. package/test/review/move-revisions.test.ts +0 -143
  541. package/test/review/property-change-revisions.test.ts +0 -225
  542. package/test/review/revision-actions.test.ts +0 -330
  543. package/test/review/revision-store.test.ts +0 -193
  544. package/test/runtime/session-capabilities.test.ts +0 -260
  545. package/test/runtime/table-commands.test.ts +0 -356
  546. package/test/runtime/table-schema.test.ts +0 -221
  547. package/test/runtime/tracked-changes-toggle.test.ts +0 -107
  548. package/test/ui/comment-review-surface.test.tsx +0 -114
  549. package/test/ui/reduced-motion-toggle.test.tsx +0 -137
  550. package/test/ui/word-review-editor.imported-scenarios.test.tsx +0 -169
  551. package/test/ui/word-review-editor.interaction.test.tsx +0 -1198
  552. package/test/ui/word-review-editor.test.js +0 -188
  553. package/test/ui/word-review-editor.test.tsx +0 -280
  554. package/test/ui-tailwind/search-plugin.test.ts +0 -286
  555. package/test/validation/compatibility-engine.test.ts +0 -336
  556. package/test/validation/compatibility-report.test.ts +0 -189
  557. package/test/validation/low-priority-word-surfaces.test.ts +0 -282
  558. package/test/validation/malformed-doc.test.ts +0 -113
  559. package/test-results/.last-run.json +0 -4
  560. package/wave.config.json +0 -406
@@ -1,320 +0,0 @@
1
- # XLSX OOXML Compliance
2
-
3
- This research paper is source material.
4
-
5
- Canonical repo-aligned planned doc:
6
-
7
- - `docs/reference/xlsx/xlsx-ooxml-compliance.md`
8
-
9
- ## Interpretation of the problem
10
-
11
- This document defines the **compatibility + validation stance** for a React-based, Excel-compatible spreadsheet editor that imports `.xlsx`, edits a **bounded v1 surface**, and exports `.xlsx` files that **reopen in recent Excel environments without repair prompts or silent loss of content that should have remained supported**.
12
-
13
- The framing assumes `.xlsx` is not “one XML file,” but an **OOXML/Open Packaging Conventions (OPC) package**: a ZIP-based container of **parts** (byte streams) with **content types** and an explicit **relationship graph**.
14
-
15
- The editor’s product contract is explicitly “runtime-first”: React is a **projection** of a runtime-owned canonical workbook state, and all edits flow via **commands → transactions → commit**, never by direct UI mutation (this is treated as a necessary architectural constraint for achieving reliable preservation and roundtrip behavior).
16
-
17
- ## Research plan
18
-
19
- Primary and near-primary sources were used to extract normative rules and to separate them from application behavior:
20
-
21
- Normative packaging rules for OPC (part naming, content types stream, relationship rules, encoding constraints) were taken from ECMA/OOXML OPC material and the published conformance rules (as rendered on c-rex).
22
-
23
- Normative markup compatibility (MCE) rules—including `mc:Ignorable`, `mc:MustUnderstand`, and `mc:AlternateContent` selection/processing requirements—were taken from the Markup Compatibility and Extensibility specification text.
24
-
25
- SpreadsheetML package structure and key parts/relationships (workbook, worksheets, shared strings, styles, calc chain, comments, tables, drawings/charts, pivots, external links) were taken from SpreadsheetML package structure and part definitions.
26
-
27
- To ground “Excel behavior is the final standard,” Excel’s documented repair workflow (“File Recovery mode” / “Open and Repair”) was used as an anchor for what constitutes P0 corruption in practice.
28
-
29
- For format-ecosystem reality (Strict vs Transitional), Library of Congress format descriptions were used to distinguish the intent of Strict vs the observed dominance of Transitional in real-world authoring.
30
-
31
- For CI/service validation tooling constraints, official Microsoft Learn documentation for the Open XML SDK’s `SpreadsheetDocument` and `OpenXmlValidator` APIs was used (permitted in CI/service, not suitable as the browser runtime transformation engine).
32
-
33
- ## Findings
34
-
35
- `.xlsx` is an OPC package with strict package-level rules that can’t be hand-waved. Parts have constrained **part name syntax** (leading `/`, no empty segments, no trailing `/`, etc.). The ZIP mapping stores part content type data in a special **Content Types stream at `"/[Content_Types].xml"`**, which is explicitly *not* a part name; bracket characters are chosen to violate part naming grammar.
36
-
37
- Relationships are first-class and have required properties: relationship IDs must be unique within a relationships part, relationship types are URIs, and targets are URI references resolved relative to the source part/package per OPC rules. OPC relationship parts also have special structure/naming conventions (package relationships live in `/_rels/.rels`; part relationships for `/a/b/c.xml` live in `/a/b/_rels/c.xml.rels`).
38
-
39
- Markup Compatibility & Extensibility matters in real Excel files. By default, non-understood namespaces are errors unless declared ignorable; ignorable namespaces must be ignored without error in that case. Alternate-content constructs require deterministic selection rules (`Choice` requires understood namespaces; optional `Fallback`; unselected branches are treated as if they do not exist). This becomes a preservation and validation problem because an editor must not “helpfully normalize” away MCE structures unless it has a proof-backed reason.
40
-
41
- SpreadsheetML is a multi-part graph. A SpreadsheetML package must contain a **package-relationship item** and **content-type item**, and its package relationship item must target exactly one **Workbook part**. The workbook references sheets, and each worksheet is a separate part referenced by relationship ID. Common “core” workbook adjunct parts are separate nodes: shared strings (exactly one, implicit from workbook), styles (at most one, implicit from workbook), and calc chain (optional, implicit from workbook).
42
-
43
- Many “features” are not inline decorations but their own part families: comments exist as worksheet-scoped comments parts; a comments part exists per worksheet that has comments, with defined content type and relationship type. Tables have their own table definition parts, implicitly related from the worksheet that contains the table. Images and charts are relationship-backed part graphs: drawings parts are related from a worksheet and contain layout for drawing elements; charts are separate chart parts related from drawings (and chartsheets involve their own sheet parts). Pivot tables include pivot table parts and pivot cache definition/records parts, with explicit and implicit links into workbook and pivot definitions—making them high-risk for “accidental breakage.” External references are represented with external link parts explicitly related from the workbook, and can include external targets.
44
-
45
- “Excel behavior is the final standard” is not rhetorical: Excel explicitly documents that when it detects a corrupted workbook it enters **File Recovery** and attempts repair; users can also invoke “Open and Repair,” and failure can cause loss of changes or extraction-only recovery. Therefore any compliance stance that does not gate on “no repair prompt” is not credible.
46
-
47
- Strict vs Transitional is a format reality you must choose consciously. The Strict variant is a subset with different namespaces and disallows some constructs (e.g., VML). The spec intent was that new documents would be Strict, but in practice most new files are produced as Transitional even if they don’t require Transitional-only features. That implies export defaults should be Transitional-first unless you can prove Strict output across modern Excel ecosystems.
48
-
49
- Open XML SDK (`SpreadsheetDocument`) models Excel documents as packages and provides `OpenXmlValidator` to validate packages against target file format versions. This is appropriate for CI/service validation, but it is not a browser-native transformation engine for a React editor.
50
-
51
- ## Recommended design / decisions
52
-
53
- Adopt a two-layer compliance model: **spec-level correctness** (OPC + SpreadsheetML + MCE rules) is required, but **application-level correctness in Excel** is the shipping standard. This document therefore defines “supported” as “supported-roundtrip in real Excel reopen,” not “we can emit XML that parses.”
54
-
55
- Declare `.xlsx` v1 export stance as **Transitional-first**, with `.xlsx Strict` treated as import-only or lock/preserve until proven; this matches observed ecosystem behavior where Transitional dominates.
56
-
57
- Treat the package as the unit of truth in the runtime, not “sheet XML documents.” The runtime must maintain: (a) a **content types manifest** compatible with OPC rules, (b) a **relationship graph** that can be validated independently, and (c) a **part inventory** that preserves unknown parts byte-for-byte whenever possible. This is non-negotiable if “unsupported but preservable content must never be silently dropped” is a real commitment.
58
-
59
- Make preservation explicit via a response model: for every import/export or edit transaction, unsupported surfaces must be categorized as **preserve**, **lock**, **warn**, **block**, or **fail**, and reported through a typed compatibility report. MCE provides a normative basis for when “unknown namespace” is ignorable vs fatal; your editor must use this rather than guesswork.
60
-
61
- Require proof-backed promotion: a feature cannot be labeled `supported-roundtrip` based on unit XML tests alone. Promotion requires: **package-backed import → runtime edit → export → reload**, plus **real Excel reopen evidence** (no repair prompt, no silent loss of content within the supported contract). Excel’s own documented repair workflow is the operational definition of “corruption.”
62
-
63
- Use Open XML SDK validation in CI/service only: `OpenXmlValidator.Validate(OpenXmlPackage)` is a strong “spec-level” tripwire and should be required for release gates, but the browser runtime should not depend on .NET package models to transform workbooks.
64
-
65
- ## Risks and open questions
66
-
67
- Preservation vs normalization is the main fault line. OPC package rules include MCE preprocessing and schema validity expectations (e.g., XML encoding limits, DTD prohibition, and additional constraints in the package model conformance rules). Any “pretty printer” or eager DOM rewrite strategy risks introducing invalid structures or losing ignorable-but-preservable content.
68
-
69
- Excel repair triggers are often “small” (a bad relationship target, illegal XML characters, a mismatched content type, a broken view structure), but the consequence is always the same: Excel enters repair/recovery mode and may discard pieces of the workbook. This is why “repair prompt = P0” must be a release gate.
70
-
71
- Formula and calc-related structures are deceptively risky. Cells can contain both `<f>` (formula) and `<v>` (cached result), and the workbook may contain `calcChain.xml` as an ordering of calculated cells; it is legal for `calcChain` to exist or not. Mishandling formulas (especially shared formulas, array formulas, dynamic arrays, and recalculation flags) can yield Excel behavior drift or repair.
72
-
73
- Protection has two layers and can easily produce “false edits.” Sheet protection is expressed at the sheet level, and cell-level protection is expressed via style protection attributes that only take effect when the sheet is protected. A v1 editor that ignores this will either let users edit “locked” surfaces (breaking host expectations) or accidentally strip protection (breaking preservation guarantees).
74
-
75
- Pivot tables, charts, drawings, and external links are part graphs, not inline features. The biggest risk is that benign-looking edits (sheet rename, row/column structural edits, moving ranges) can invalidate references across these graphs. Until there is proof-backed support, they must remain preserve-only with appropriate locks or blocks.
76
-
77
- Strict vs Transitional is a scope trap. Strict has different namespaces and constraints, and Transitional’s dominance means “Strict export” is not a v1 promise unless you can prove it in Excel reopen.
78
-
79
- ## Concrete deliverable in the requested format
80
-
81
- This section is the **repo-ready canonical policy** for `.xlsx` compatibility and validation. It is written as a normative contract (MUST/SHALL language). All terms below are for v1 unless explicitly marked otherwise.
82
-
83
- **Document identity**
84
-
85
- - Title: `XLSX OOXML Compliance`
86
- - Status: Canonical policy for `.xlsx` compatibility + validation stance.
87
- - Objective: Exported `.xlsx` MUST reopen in recent Excel environments **without repair prompts** and without silent loss of content within the supported contract.
88
-
89
- ### Compliance model
90
-
91
- **Normative baseline**
92
-
93
- - The editor is an OOXML producer/consumer at the package level. A SpreadsheetML package SHALL contain a package-relationship item and a content-type item and SHALL target exactly one Workbook part from its package relationships.
94
- - OPC rules govern part naming, content types, relationship construction, and ZIP mapping. Part names SHALL satisfy OPC part-name constraints.
95
- - The Content Types stream SHALL be stored at `"/[Content_Types].xml"` and SHALL NOT be treated as a part name.
96
- - Markup Compatibility & Extensibility (MCE) rules SHALL be respected during validation and when deciding whether unknown markup is ignorable vs fatal.
97
-
98
- **Two-layer correctness requirement**
99
-
100
- - Spec-level correctness is necessary but not sufficient: the exported package MUST satisfy OPC + SpreadsheetML structural requirements and pass automated validation gates.
101
- - Application-level correctness is the release standard: the exported file MUST reopen in real Excel environments without “Open and Repair” / File Recovery behavior for supported flows.
102
-
103
- **Format stance (Strict vs Transitional)**
104
-
105
- - v1 export stance: **Transitional-first** `.xlsx`.
106
- - `.xlsx Strict` handling: import MAY be accepted in v1, but MUST be treated as `preserve-only` + `lock` unless/until strict roundtrip is proven. This stance is based on the observed real-world dominance of Transitional authoring even when Strict would suffice.
107
-
108
- ### Feature class taxonomy
109
-
110
- Each feature is classified into one of the following **support classes**:
111
-
112
- - `supported-roundtrip`: import → runtime edit → export → reopen proof exists; semantics remain correct within the defined v1 contract.
113
- - `supported-import-only`: imported and preserved; UI edits are not allowed (or edits do not affect this feature); export preserves it.
114
- - `supported-export-only`: can be generated correctly, but import semantics are not relied upon.
115
- - `preserve-only`: editor does not claim semantic understanding; feature MUST survive unrelated edits by pass-through preservation rules.
116
- - `unsupported-fatal`: presence or mutation makes safe roundtrip impossible; editor MUST fail or block before producing a likely-corrupt workbook.
117
-
118
- This taxonomy is separate from the response model below; support class answers “what we claim,” response answers “what we do at runtime.”
119
-
120
- ### Package-first rules
121
-
122
- These rules apply to all builds and are required for any compatibility claim:
123
-
124
- **Package graph is the canonical import/export substrate**
125
-
126
- - The runtime MUST import the package as:
127
- - a part inventory (all ZIP items mapped to parts or “non-part items” like content types stream),
128
- - a content types manifest (driven by `"/[Content_Types].xml"`),
129
- - and a relationship graph (package relationships + part relationships).
130
- - UI-level models (grid, selection, formatting panels) MUST be projections of runtime state; UI MUST NOT own canonical workbook truth.
131
-
132
- **Preservation is package-scoped, not “we’ll keep some XML fields”**
133
-
134
- - Unknown parts MUST be preserved byte-for-byte when:
135
- - the part is not in the editor-owned v1 contract, and
136
- - the edit transaction does not require rewriting the part.
137
- This requirement exists because many Excel features are represented as separate parts (e.g., pivot caches, drawings, external links) and because Excel will repair/remove parts that become inconsistent.
138
-
139
- **Relationship integrity is non-negotiable**
140
-
141
- - Relationship IDs MUST remain unique per relationships part, relationship types SHALL remain valid URIs, and targets SHALL remain resolvable.
142
- - The product MUST NOT emit dangling relationships, broken targets, or mismatched content types; these are treated as P0 corruption risks due to Excel’s repair workflow.
143
-
144
- **MCE handling**
145
-
146
- - Unknown markup SHALL be treated as:
147
- - **ignorable** only when it is in a namespace listed in `mc:Ignorable` in scope; otherwise, unknown elements/attributes are errors by default.
148
- - **fatal** when `mc:MustUnderstand` requires a namespace the runtime does not understand.
149
- - `mc:AlternateContent` SHALL NOT be normalized away unless:
150
- - the runtime can reproduce correct selection semantics, and
151
- - preservation of unselected branches is guaranteed, and
152
- - Excel reopen tests show no regressions.
153
-
154
- ### Preserve / lock / warn / block / fail policy
155
-
156
- This policy is the required response model for all compatibility decisions. It applies both at import time and at mutation/commit time.
157
-
158
- **Preserve**
159
-
160
- - Meaning: Keep content exactly; do not expose editing UI; allow unrelated edits.
161
- - Requirements:
162
- - Preserve unknown parts and unknown markup in known parts where feasible without rewriting required structures.
163
- - Preserve required relationships and content types needed to keep the preserved content reachable.
164
-
165
- **Lock**
166
-
167
- - Meaning: Preserve content and enforce edit restrictions so mutations cannot invalidate preserved surfaces.
168
- - Use cases:
169
- - Protected sheets/cells: if sheet protection exists, the runtime MUST NOT allow mutations that violate the protection model it cannot fully enforce.
170
- - Pivot/Chart/Drawing graphs: lock structural edits (sheet rename, row/column structural operations) when those operations cannot be proven safe across the dependent relationship graphs.
171
-
172
- **Warn**
173
-
174
- - Meaning: Allow the operation but emit a structured warning describing risk and what might degrade.
175
- - Constraints:
176
- - Warn MUST be explicit to the host via a typed compatibility report.
177
- - Warn MUST NOT be used for any case likely to cause Excel repair prompt or silent supported-content loss.
178
-
179
- **Block**
180
-
181
- - Meaning: Operation is disallowed because it would invalidate preserved or supported content.
182
- - Examples:
183
- - Attempting to delete a sheet that is a dependency of external references or pivot caches without a safe rewrite plan.
184
- - Attempting to rewrite a part containing unknown-but-non-ignorable namespaces without MCE-correct processing.
185
-
186
- **Fail**
187
-
188
- - Meaning: Abort import/export or abort commit because safe output cannot be guaranteed.
189
- - Always fail when:
190
- - `mc:MustUnderstand` demands unknown namespaces.
191
- - The package violates OPC invariants (invalid part names, invalid content types stream, relationship rules violations) and cannot be repaired deterministically.
192
- - Export would likely trigger Excel repair workflow (P0 corruption risk).
193
-
194
- ### SDK/tooling policy
195
-
196
- **CI/service (allowed and required)**
197
-
198
- - CI MUST include Open XML SDK validation using `OpenXmlValidator.Validate(OpenXmlPackage)` on exported packages (targeting declared file format versions).
199
- - CI MAY open documents via Open XML SDK `SpreadsheetDocument` for structural assertions (part counts, relationship presence, etc.).
200
- - CI MUST run package-level checks independent of Open XML SDK (ZIP integrity, part inventory, content types consistency, relationship graph integrity). OPC defines these as first-class concerns.
201
- - Release certification MUST include real Excel reopen checks because Excel’s File Recovery / Open and Repair behavior is the real-world pass/fail line.
202
-
203
- **Browser runtime (explicitly not acceptable as transformation engine)**
204
-
205
- - Browser runtime MUST NOT depend on Open XML SDK as the transformation engine (it is a .NET package model and validator, not a browser-native engine). This is a policy constraint to keep the runtime deterministic, portable, and auditable in JS/TS while still leveraging SDK validation in CI/service.
206
- - Browser runtime MUST maintain its own package graph model to satisfy the preservation and transaction constraints in this policy.
207
-
208
- ### Release gates
209
-
210
- No feature may be claimed `supported-roundtrip` unless it passes all gates below:
211
-
212
- **Gate A: Package integrity**
213
-
214
- - Valid ZIP package.
215
- - Part inventory + content types stream consistent (`"/[Content_Types].xml"` present and correct).
216
- - Relationship graph integrity (no broken targets; IDs unique; types URIs).
217
-
218
- **Gate B: Spec validation**
219
-
220
- - Open XML SDK `OpenXmlValidator` reports zero errors for declared file format version targets (or explicit, reviewed allowlist for known validator limitations with preserved extension content).
221
- - MCE rules are respected (no non-ignorable unknown markup; no `MustUnderstand` failures).
222
-
223
- **Gate C: Package-backed roundtrip proof**
224
-
225
- - Import fixture → apply v1 edits → export → re-import exported package; semantic assertions pass for the feature.
226
- - Helper-level XML unit tests alone are explicitly insufficient for promotion.
227
-
228
- **Gate D: Real Excel reopen proof**
229
-
230
- - Export MUST reopen in recent Excel environments without invoking File Recovery / Open and Repair prompts for the supported flow.
231
- - A “re-save in Excel” stability check MUST show no catastrophic structural drift for supported-roundtrip features.
232
-
233
- **Gate E: Preservation proof**
234
-
235
- - Preserve-only fixtures MUST survive unrelated edits (no deletion of unknown parts, extension lists, external link parts, pivot cache parts, etc.).
236
-
237
- ### Fixture program
238
-
239
- The project SHALL maintain a permanent fixture corpus with metadata and automated runners.
240
-
241
- **Fixture sources**
242
-
243
- - Excel-authored `.xlsx` fixtures are primary (the “host standard”).
244
- - Additional fixtures should include non-Excel producers (to catch interoperability variance), but Excel reopen remains the pass/fail standard.
245
-
246
- **Fixture metadata (MUST exist per fixture)**
247
-
248
- - Fixture ID, origin, Excel version notes (if known), and feature tags mapped to the feature taxonomy.
249
- - Expected support class and expected response policy outcomes for risky operations (lock/block/warn/fail).
250
-
251
- **Minimum fixture categories (v1)**
252
-
253
- - Minimal workbook structure (workbook + at least one worksheet).
254
- - Cells with numbers/strings/formulas; includes shared strings and inline strings.
255
- - Styles-heavy workbook including number formats and protections.
256
- - Merge cells edge cases.
257
- - Comments/notes fixtures (worksheet comments part).
258
- - AutoFilter + table definition fixtures.
259
- - Conditional formatting + data validation fixtures.
260
- - Drawings + images + charts fixtures.
261
- - Pivot table + pivot cache fixtures.
262
- - External links fixtures.
263
- - MCE fixtures containing `mc:AlternateContent`, ignorable namespaces, and at least one `MustUnderstand` negative fixture.
264
-
265
- ### v1 feature classification
266
-
267
- This table defines the **explicit v1 contract** for common SpreadsheetML surfaces. “Supported-roundtrip” requires the release gates above; absent proof, default is conservative.
268
-
269
- | Feature surface | v1 support class | Default response policy | Notes (v1) |
270
- |---|---:|---:|---|
271
- | Sheets (workbook + worksheets) | supported-roundtrip | preserve | Workbook/worksheet relationships are foundational; required for any meaningful `.xlsx` support. |
272
- | Cells (values/types) | supported-roundtrip | preserve | Core cell structure (`<c>`, `<v>`, optional `<f>`, inline strings) is required. |
273
- | Styles (basic cellXfs, fonts/fills/borders/numFmts) | supported-roundtrip (subset) | warn | Styles are centralized in a styles part; v1 supports a declared subset only, remainder preserve-only. |
274
- | Formulas | supported-roundtrip (no eval) | warn | Store formula strings; Excel recalculates. Advanced formula constructs remain preserve-only until proven. |
275
- | Calc chain | preserve-only | preserve | `calcChain.xml` is optional; safest v1 stance is preserve unchanged (or drop only with explicit proof + Excel reopen notes). |
276
- | Merges | supported-roundtrip | preserve | Merge ranges are declared via `<mergeCells>/<mergeCell ref=...>`. |
277
- | Comments / Notes (legacy comments part) | preserve-only | lock | Comments are worksheet-scoped parts; v1 does not claim edit UI or anchor correctness yet. |
278
- | Filters (AutoFilter) | preserve-only | warn | AutoFilter is declarative and interacts with tables and defined names; preserve. |
279
- | Tables (table definition parts) | preserve-only | lock | Table definition is a distinct part related from the worksheet; structural edits around tables are risky. |
280
- | Named ranges (definedNames) | preserve-only | warn | Defined names participate in formulas, filters, and external references; preserve unless proven. |
281
- | Data validation | preserve-only | warn | Validation is defined as worksheet-level `<dataValidations>` structures; preserve without rewriting. |
282
- | Conditional formatting | preserve-only | warn | Rules often reference dxf styles and ranges; preserve without rewriting. |
283
- | Images (pictures/media) | preserve-only | lock | Images exist as relationship targets (image parts) and often flow through drawings graphs; preserve. |
284
- | Charts | preserve-only | lock | Charts are separate chart parts related from drawings; safe editing requires graph-aware constraints. |
285
- | Pivot tables | preserve-only | block | Pivot caches and definitions involve multiple dependent parts; v1 blocks structural mutations that can invalidate them. |
286
- | Macros | unsupported-fatal (for `.xlsx`) | fail | Macro-enabled structures belong to macro-enabled formats; `.xlsx` editor does not promise safe behavior here. |
287
- | Protection (sheet protection, cell lock/hidden) | preserve-only | lock | Protection is expressed at sheet and cell/style levels; v1 preserves and locks rather than pretending to enforce partially. |
288
- | External links | preserve-only | warn/block | External link parts are explicit workbook relationships; edits that change reference topology may be blocked. |
289
- | Unknown OOXML within known parts (unknown elements/attrs) | preserve-only or unsupported-fatal | preserve or fail | Determined by MCE: ignorable namespaces may be preserved/ignored; `MustUnderstand` is fatal if unknown. |
290
- | Unknown package parts (unknown content types / relationships) | preserve-only | preserve | Preserve byte streams + relationship graph + content types unless mutation requires rewrite; never silently drop. |
291
-
292
- ### Explicitly outside the active editor-owned v1 contract
293
-
294
- The following are outside the v1 “editor-owned” surface; they may exist in imported packages but are not claimed as editable in v1:
295
-
296
- - Editing of chart definitions, chart drawing shapes, and drawing anchors (preserve-only).
297
- - Editing of pivot tables or pivot cache structures (preserve-only; structural edits blocked).
298
- - Editing of table definitions, autoFilter definitions, conditional formatting rule logic, and data validation semantics (preserve-only).
299
- - Threaded comments / modern comment systems beyond the legacy comments part (not covered here; preserve-only at best).
300
- - Macro-enabled behaviors (unsupported-fatal for `.xlsx` contract).
301
- - Any MCE `MustUnderstand` namespace that the runtime does not explicitly implement (import must fail).
302
- - Any “Strict export” promise (until strict reopen proof exists).
303
-
304
- ## Sources
305
-
306
- ECMA-376 standard overview and part breakdown (OPC, MCE, etc.).
307
-
308
- OPC part naming and package model conformance requirements, including relationship constraints and XML processing constraints.
309
-
310
- OPC ZIP mapping and the normative location/meaning of `"/[Content_Types].xml"`.
311
-
312
- Markup Compatibility & Extensibility rules: ignorable namespaces, `MustUnderstand`, and `AlternateContent` selection.
313
-
314
- SpreadsheetML package structure and part definitions (workbook, worksheets, shared strings, styles, calc chain, comments, tables, drawings/charts, pivots, external links).
315
-
316
- Open XML SDK documentation for `SpreadsheetDocument` and `OpenXmlValidator` (CI/service validation stance).
317
-
318
- Excel “Open and Repair” / File Recovery documentation (host-level corruption semantics and reopen requirements).
319
-
320
- Format descriptions for XLSX Transitional and XLSX Strict (Strict vs Transitional reality).
@@ -1,16 +0,0 @@
1
- # Examples
2
-
3
- Host-app examples and integration demos for the eventual `<WordReviewEditor />` component belong here.
4
-
5
- Planned example surfaces:
6
-
7
- - simple host app using `initialDocx`
8
- - host app restoring from canonical snapshot
9
- - datastore-backed autosave integration
10
- - review-oriented host shell wiring comment and revision events
11
-
12
- Examples should demonstrate the public component contract without bypassing the runtime or treating the DOM as the source of truth.
13
-
14
- Wave 1 contract note:
15
-
16
- - Example apps should consume the public contracts frozen in `docs/reference/public-api.md` and the runtime/UI boundaries frozen in `docs/plans/waves/specs/wave-1-runtime-contracts.md`.
package/memory/MEMORY.md DELETED
@@ -1,24 +0,0 @@
1
- # Shared Fleet Memory
2
-
3
- ## Fleet Nodes
4
- - anarchy: workstation, RTX 5090, Arch Linux
5
- - ceobox: dev box, EPYC 7502P, Ubuntu 24.04
6
- - leapclaw-prod-01: gateway, Temporal, Qdrant, Hetzner
7
- - leapclaw-provider-01: Ollama, RTX 6000 Ada, Hetzner
8
- - Mac Studio: M1 Ultra, macOS
9
- - Blue Air: M4, macOS
10
-
11
- ## Active Projects
12
- - react-ooxml-office: docx/xlsx editor (365+ tests)
13
- - war-is-eternal: Warhammer 40K app (348 tests)
14
- - fabric: BW revenue platform
15
- - leapclaw-client: Rust TUI client
16
- - leapclaw-memory: this service
17
- - leapclaw-voice: Rust voice agent
18
- - leapclaw-wave: Rust wave orchestrator
19
-
20
- ## Key Credentials
21
- - SSH keys in ~/.ssh/ (never store actual keys here)
22
- - ceobox LUKS: passphrase at ~/.ssh/ceobox_luks_passphrase.txt
23
- - prod-01 LUKS: passphrase at ~/.ssh/hetzner_luks_passphrase.txt
24
-
@@ -1,4 +0,0 @@
1
- packages:
2
- - services/*
3
-
4
-
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- mapfile -t authored_js < <(find src -type f -name '*.js' | sort)
5
-
6
- if ((${#authored_js[@]} == 0)); then
7
- exit 0
8
- fi
9
-
10
- printf 'Unexpected committed JavaScript files under src/:\n' >&2
11
- printf ' %s\n' "${authored_js[@]}" >&2
12
- printf 'Authored source in src/ must stay TypeScript-only.\n' >&2
13
- exit 1
@@ -1,65 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- if [[ -z "${CONTEXT7_API_KEY:-}" ]]; then
5
- echo "context7-api-check: CONTEXT7_API_KEY is not set" >&2
6
- exit 1
7
- fi
8
-
9
- node <<'NODE'
10
- const fs = require('fs');
11
- const path = require('path');
12
-
13
- const apiKey = process.env.CONTEXT7_API_KEY || '';
14
- const repoRoot = process.cwd();
15
- const bundlePath = path.join(repoRoot, 'docs/context7/bundles.json');
16
- const payload = JSON.parse(fs.readFileSync(bundlePath, 'utf8'));
17
-
18
- const entries = [];
19
- for (const [bundleId, bundle] of Object.entries(payload.bundles || {})) {
20
- for (const library of bundle.libraries || []) {
21
- if (!library.libraryId) {
22
- throw new Error(
23
- `Bundle "${bundleId}" must pin exact Context7 libraryId values. Found libraryName=${JSON.stringify(library.libraryName || '')}.`,
24
- );
25
- }
26
- entries.push({
27
- bundleId,
28
- libraryId: String(library.libraryId),
29
- queryHint: String(library.queryHint || 'overview'),
30
- });
31
- }
32
- }
33
-
34
- const uniqueEntries = [...new Map(entries.map((entry) => [entry.libraryId, entry])).values()];
35
-
36
- async function validate(entry) {
37
- const url = new URL('https://context7.com/api/v2/context');
38
- url.searchParams.set('libraryId', entry.libraryId);
39
- url.searchParams.set('query', entry.queryHint);
40
- url.searchParams.set('type', 'txt');
41
- const response = await fetch(url, {
42
- headers: {
43
- Authorization: 'Bearer ' + apiKey,
44
- Accept: 'text/plain, application/json',
45
- },
46
- });
47
- const text = await response.text();
48
- if (!response.ok) {
49
- throw new Error(`Context7 ${entry.libraryId} failed (${response.status}): ${text.slice(0, 200)}`);
50
- }
51
- if (text.trim().length === 0) {
52
- throw new Error(`Context7 ${entry.libraryId} returned empty context.`);
53
- }
54
- console.log(`ok -- ${entry.libraryId} (${entry.bundleId})`);
55
- }
56
-
57
- (async () => {
58
- for (const entry of uniqueEntries) {
59
- await validate(entry);
60
- }
61
- })().catch((error) => {
62
- console.error(error instanceof Error ? error.message : String(error));
63
- process.exit(1);
64
- });
65
- NODE
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Load CONTEXT7_API_KEY from repo-root .env.local, then export it for child processes.
3
- #
4
- # Usage:
5
- # source scripts/context7-export-env.sh
6
- # bash scripts/context7-export-env.sh run <command> [args...]
7
-
8
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
9
- REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
10
- ENV_FILE="$REPO_ROOT/.env.local"
11
-
12
- if [[ -f "$ENV_FILE" ]]; then
13
- set -a
14
- # shellcheck disable=SC1090
15
- source "$ENV_FILE"
16
- set +a
17
- fi
18
-
19
- if [[ "${1:-}" == "run" ]]; then
20
- set -euo pipefail
21
- shift
22
- if [[ $# -lt 1 ]]; then
23
- echo "context7-export-env: run requires a command" >&2
24
- exit 1
25
- fi
26
- if [[ -z "${CONTEXT7_API_KEY:-}" ]]; then
27
- echo "context7-export-env: CONTEXT7_API_KEY is not set. Add it to ${ENV_FILE}." >&2
28
- exit 1
29
- fi
30
- export CONTEXT7_API_KEY
31
- exec "$@"
32
- fi
33
-
34
- if [[ "${BASH_SOURCE[0]:-}" == "${0:-}" ]]; then
35
- echo "Usage: source scripts/context7-export-env.sh" >&2
36
- echo " or: bash scripts/context7-export-env.sh run <command> [args...]" >&2
37
- exit 2
38
- fi
39
-
40
- if [[ -n "${CONTEXT7_API_KEY:-}" ]]; then
41
- export CONTEXT7_API_KEY
42
- fi
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
5
- REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
6
-
7
- exec bash "$REPO_ROOT/scripts/context7-export-env.sh" run \
8
- npx -y @upstash/context7-mcp@2.1.4
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5
- cd "$repo_root"
6
-
7
- bash scripts/check-no-authored-js.sh
8
-
9
- mapfile -t repo_tests < <(find test -type f \( -name '*.test.ts' -o -name '*.test.tsx' \) | sort)
10
-
11
- if ((${#repo_tests[@]} > 0)); then
12
- pnpm exec tsx --test "${repo_tests[@]}"
13
- fi
14
-
15
- pnpm --filter @docx-react-component/react-word-editor-harness test