@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,456 +0,0 @@
1
- # Public API
2
-
3
- This file defines the intended public API for the shipped docx React component.
4
-
5
- Within the broader `react-ooxml-office` repo story, this remains a format-specific contract:
6
-
7
- - it describes the current `docx` implementation only
8
- - it does not define a neutral multi-format editor API
9
- - future `xlsx` or other verticals should gain sibling API docs rather than silently widening `WordReviewEditor`
10
-
11
- ## Public Component
12
-
13
- ```tsx
14
- <WordReviewEditor />
15
- ```
16
-
17
- The repo standardizes on `WordReviewEditor` as the public name across docs, source, and services.
18
-
19
- Internal harness routes, Railway demo pages, certification dashboards, and other operator-facing surfaces are not part of the public component API. They may exercise the same runtime, but they are documentation, proof, or demo surfaces rather than shipped host contracts.
20
-
21
- ## Public Contracts
22
-
23
- The implementation should expose:
24
-
25
- - `WordReviewEditor`
26
- - `WordReviewEditorProps`
27
- - `WordReviewEditorRef`
28
- - `EditorUser`
29
- - `EditorDatastoreAdapter`
30
- - `PersistedEditorSnapshot`
31
- - `CompatibilityReport`
32
- - `EditorWarning`
33
- - `EditorError`
34
- - `WordReviewEditorEvent`
35
-
36
- The runtime-facing internal session type is `DocumentRuntime`. `WordEditor` is not a shipped public name.
37
-
38
- ## Usage Model
39
-
40
- The component is uncontrolled by default.
41
-
42
- Host responsibilities:
43
-
44
- - provide `documentId`
45
- - provide `currentUser`
46
- - provide exactly one initial source on first load: `initialDocx` or `initialSnapshot`
47
- - optionally provide a datastore adapter
48
- - optionally listen to events, warnings, and errors
49
-
50
- Runtime responsibilities:
51
-
52
- - own the live editing session
53
- - apply commands and transactions
54
- - manage undo and redo
55
- - manage comments and revisions
56
- - expose review-ready runtime snapshot projections for the document surface, comment sidebar, revision sidebar, and compatibility surfaces
57
- - provide export and compatibility reporting
58
-
59
- Controlled behavior is intentionally narrow:
60
-
61
- - hosts may replace the active document only through `externalDocumentRevision` plus `externalDocSource`
62
- - when the revision token changes, the editor tears down the current session and reloads the new source
63
- - hosts do not stream keystrokes or partial selections back into props
64
-
65
- ## Ref Surface
66
-
67
- The ref should support:
68
-
69
- - `focus()`
70
- - `blur()`
71
- - `undo()`
72
- - `redo()`
73
- - `addComment(...)`
74
- - `openComment(commentId)`
75
- - `resolveComment(commentId)`
76
- - `reopenComment(commentId)`
77
- - `addCommentReply(commentId, body)`
78
- - `editCommentBody(commentId, body)`
79
- - `acceptChange(changeId)`
80
- - `rejectChange(changeId)`
81
- - `acceptAllChanges()`
82
- - `rejectAllChanges()`
83
- - `exportDocx(options?)`
84
- - `getSnapshot()`
85
- - `getCompatibilityReport()`
86
- - `getWarnings()`
87
-
88
- The ref is a thin wrapper over the runtime. It does not expose DOM nodes or mutable canonical state.
89
-
90
- ## Props Surface
91
-
92
- ```ts
93
- type ExternalDocumentSource =
94
- | {
95
- kind: "docx";
96
- bytes: Uint8Array | ArrayBuffer;
97
- sourceLabel?: string;
98
- }
99
- | {
100
- kind: "snapshot";
101
- snapshot: PersistedEditorSnapshot;
102
- sourceLabel?: string;
103
- };
104
-
105
- interface WordReviewEditorProps {
106
- documentId: string;
107
- currentUser: EditorUser;
108
-
109
- initialDocx?: Uint8Array | ArrayBuffer;
110
- initialSnapshot?: PersistedEditorSnapshot;
111
- initialSourceLabel?: string;
112
-
113
- externalDocumentRevision?: string;
114
- externalDocSource?: ExternalDocumentSource;
115
-
116
- readOnly?: boolean;
117
- reviewMode?: "editing" | "review";
118
-
119
- // reviewMode behavior:
120
- // - "editing" (default in some contexts): Reduces review chrome. Review rail hidden by default. Editing controls primary.
121
- // - "review" (default): Review rail visible. Comments and changes are prominent.
122
- // - Both modes keep health/trust information reachable and fatal errors always visible.
123
- // - reviewMode does NOT control editing capability — use readOnly for that.
124
-
125
- markupDisplay?: "clean" | "simple" | "all";
126
- // markupDisplay is accepted for backward compatibility but is now
127
- // derived internally from the editor's view mode (canvas → clean,
128
- // document → all). The editor manages viewMode as internal state;
129
- // it is not a public prop on WordReviewEditorProps.
130
-
131
- datastore?: EditorDatastoreAdapter;
132
- autosave?: AutosaveConfig;
133
-
134
- onEvent?: (event: WordReviewEditorEvent) => void;
135
- onWarning?: (warning: EditorWarning) => void;
136
- onError?: (error: EditorError) => void;
137
- }
138
- ```
139
-
140
- Load rules:
141
-
142
- - provide exactly one of `initialDocx` or `initialSnapshot` for an explicit initial load
143
- - `externalDocumentRevision` plus `externalDocSource` is the only replace-on-change path
144
- - if the external revision token does not change, props do not mutate the live session
145
- - `initialDocx` now boots a real package-backed session, not a text-only fallback snapshot
146
- - malformed or unreadable package bytes fail closed into diagnostics/read-only mode with export blocked
147
-
148
- ## Planned AI Action Extension
149
-
150
- This contract is reserved for the post-v1 roadmap and is not part of the
151
- currently shipped public surface in `src/api/public-types.ts`.
152
-
153
- The intended shape is:
154
-
155
- - the host supplies the model access or action executor
156
- - the runtime packages canonical context such as selection, section bounds, anchors, comment threads, revisions, compatibility warnings, and edit capabilities
157
- - AI actions target bounded legal-review workflows rather than arbitrary document mutation
158
- - content-changing results come back as proposals or runtime command requests that must pass normal validation, compatibility, and export gates
159
- - the UI must present explicit review/confirmation affordances before applying content-changing proposals
160
-
161
- Illustrative direction:
162
-
163
- ```ts
164
- type PlannedWordReviewEditorAiAction =
165
- | "edit_selection"
166
- | "rewrite_section"
167
- | "summarize_comments"
168
- | "suggest_comment_response"
169
- | "resolve_comment_thread"
170
- | "apply_drafting_instruction"
171
- | "validate_and_export";
172
-
173
- interface PlannedWordReviewEditorAiRequest {
174
- action: PlannedWordReviewEditorAiAction;
175
- instruction?: string;
176
- selection?: SelectionSnapshot;
177
- anchor?: EditorAnchorProjection;
178
- commentIds?: string[];
179
- revisionIds?: string[];
180
- compatibility: CompatibilityReport;
181
- capabilities: {
182
- readOnly: boolean;
183
- canEdit: boolean;
184
- canExport: boolean;
185
- };
186
- }
187
-
188
- interface PlannedWordReviewEditorAiAdapter {
189
- runAction(
190
- request: PlannedWordReviewEditorAiRequest,
191
- ): Promise<
192
- | {
193
- kind: "proposal";
194
- summary: string;
195
- requiresConfirmation: true;
196
- }
197
- | {
198
- kind: "workflow";
199
- workflow: "validate_and_export";
200
- }
201
- | {
202
- kind: "rejected";
203
- reason: string;
204
- }
205
- >;
206
- }
207
- ```
208
-
209
- Guardrails for the planned surface:
210
-
211
- - no built-in model client ships inside `WordReviewEditor`
212
- - no direct DOM writes or direct canonical-state mutation from model output
213
- - no bypass around permissions, protected ranges, compatibility warnings, or export blockers
214
- - no implication that unsupported OOXML becomes editable just because an AI action exists
215
-
216
- ## Encrypted Source Handling
217
-
218
- The active component contract does not include editor-owned handling for password-to-open Office containers, and encrypted intake is not part of the active wave roadmap.
219
-
220
- Hosts must provide one of:
221
-
222
- - normal OPC `.docx` bytes through `initialDocx`
223
- - normal OPC `.docx` bytes through `externalDocSource.kind = "docx"`
224
- - a canonical snapshot
225
-
226
- If an upstream system accepts encrypted Office containers, it must decrypt or otherwise preprocess them before handing bytes to `WordReviewEditor`. Reintroducing editor-owned encrypted intake would require an explicit public-API revision rather than a silent expansion of the current load surface.
227
-
228
- ## Runtime Snapshot Direction
229
-
230
- The host-facing persisted snapshot is still `PersistedEditorSnapshot`.
231
-
232
- The live UI should render from `RuntimeRenderSnapshot`, not by reconstructing review state from persisted data during render. In particular:
233
-
234
- - the comment sidebar reads runtime-owned thread projections, detached/open/resolved counts, and the active thread id from `RuntimeRenderSnapshot.comments`
235
- - the tracked-change sidebar reads runtime-owned revision projections, actionability flags, and batch counts from `RuntimeRenderSnapshot.trackedChanges`
236
- - compatibility surfaces read explicit blocking reasons from `RuntimeRenderSnapshot.compatibility`
237
-
238
- Selectors may reshape those projections for presentation, but they must not invent a second source of live review truth.
239
-
240
- Current boundary note:
241
-
242
- - `SelectionSnapshot`, `EditorAnchorProjection`, and `EditorSurfaceSnapshot` still describe the current flat paragraph/opaque-block runtime.
243
- - Imported body-level tables remain preserve-only in the live editor path.
244
- - Future post-v1 waves must revise these contracts explicitly as new slices become `read-only projected`, `bounded editable`, or fully owned rather than silently widening the current public types.
245
-
246
- ## Event Surface
247
-
248
- The canonical host event stream is a discriminated union:
249
-
250
- ```ts
251
- type WordReviewEditorEvent =
252
- | {
253
- type: "ready";
254
- documentId: string;
255
- sessionId: string;
256
- source: "docx" | "snapshot" | "datastore" | "canonical";
257
- stats: DocumentStats;
258
- compatibility: CompatibilityReport;
259
- }
260
- | {
261
- type: "dirty_changed";
262
- documentId: string;
263
- isDirty: boolean;
264
- }
265
- | {
266
- type: "selection_changed";
267
- documentId: string;
268
- selection: SelectionSnapshot;
269
- }
270
- | {
271
- type: "comment_added";
272
- documentId: string;
273
- commentId: string;
274
- anchor: EditorAnchorProjection;
275
- }
276
- | {
277
- type: "comment_resolved";
278
- documentId: string;
279
- commentId: string;
280
- }
281
- | {
282
- type: "change_accepted";
283
- documentId: string;
284
- changeId: string;
285
- }
286
- | {
287
- type: "change_rejected";
288
- documentId: string;
289
- changeId: string;
290
- }
291
- | {
292
- type: "warning_added";
293
- documentId: string;
294
- warning: EditorWarning;
295
- }
296
- | {
297
- type: "warning_cleared";
298
- documentId: string;
299
- warningId: string;
300
- code: EditorWarning["code"];
301
- }
302
- | {
303
- type: "error";
304
- documentId: string;
305
- error: EditorError;
306
- }
307
- | {
308
- type: "autosave_state";
309
- documentId: string;
310
- state: AutosaveState;
311
- }
312
- | {
313
- type: "snapshot_saved";
314
- documentId: string;
315
- snapshot: PersistedEditorSnapshot;
316
- isAutosave: boolean;
317
- }
318
- | {
319
- type: "export_completed";
320
- documentId: string;
321
- result: ExportResult;
322
- };
323
- ```
324
-
325
- Event delivery rules:
326
-
327
- - each mounted runtime load emits exactly one `ready` event
328
- - hosts should treat `ready` as the authoritative session-start marker rather than inferring load completion from render timing
329
-
330
- Planned AI-event direction:
331
-
332
- - a future AI extension may add runtime-owned events such as `ai_action_started`, `ai_action_proposed`, `ai_action_applied`, and `ai_action_failed`
333
- - those events are not part of the current shipped `WordReviewEditorEvent` union and should not be exposed until the AI contract lands as a deliberate API revision
334
-
335
- ## Warnings And Errors
336
-
337
- ```ts
338
- type EditorAnchorProjection =
339
- | {
340
- kind: "range";
341
- from: number;
342
- to: number;
343
- assoc: {
344
- start: -1 | 1;
345
- end: -1 | 1;
346
- };
347
- }
348
- | {
349
- kind: "node";
350
- at: number;
351
- assoc: -1 | 1;
352
- }
353
- | {
354
- kind: "detached";
355
- lastKnownRange: {
356
- from: number;
357
- to: number;
358
- };
359
- reason: "deleted" | "invalidatedByStructureChange" | "importAmbiguity";
360
- };
361
-
362
- interface EditorWarning {
363
- warningId: string;
364
- code:
365
- | "unsupported_ooxml_preserved"
366
- | "unsupported_ooxml_locked"
367
- | "import_normalized"
368
- | "export_roundtrip_risk"
369
- | "comment_anchor_detached"
370
- | "revision_anchor_detached"
371
- | "large_document_degraded"
372
- | "font_substitution"
373
- | "image_missing";
374
- severity: "info" | "warning";
375
- message: string;
376
- source:
377
- | "import"
378
- | "runtime"
379
- | "review"
380
- | "preservation"
381
- | "validation"
382
- | "export";
383
- affectedAnchor?: EditorAnchorProjection;
384
- featureEntryId?: string;
385
- details?: Record<string, unknown>;
386
- }
387
-
388
- interface EditorError {
389
- errorId: string;
390
- code:
391
- | "import_failed"
392
- | "export_failed"
393
- | "package_corrupt"
394
- | "validation_failed"
395
- | "datastore_failed"
396
- | "internal_invariant";
397
- message: string;
398
- isFatal: boolean;
399
- source:
400
- | "import"
401
- | "runtime"
402
- | "validation"
403
- | "datastore"
404
- | "export";
405
- details?: Record<string, unknown>;
406
- }
407
- ```
408
-
409
- Range references are runtime-derived projections over canonical positions. DOM paths are not part of the public contract.
410
-
411
- ## Persistence Model
412
-
413
- The datastore adapter should support:
414
-
415
- - loading the latest snapshot or source document
416
- - saving fast JSON checkpoints
417
- - saving exported `.docx` artifacts
418
- - optional telemetry emission
419
-
420
- The persisted resume artifact is:
421
-
422
- ```ts
423
- interface PersistedEditorSnapshot {
424
- snapshotVersion: "persisted-editor-snapshot/1";
425
- schemaVersion: "cds/1.0.0";
426
- documentId: string;
427
- docId: string;
428
- createdAt: string;
429
- updatedAt: string;
430
- savedAt: string;
431
- editorBuild: string;
432
- canonicalDocument: CanonicalDocument;
433
- compatibility: CompatibilityReport;
434
- warningLog: EditorWarning[];
435
- }
436
-
437
- interface CompatibilityReport {
438
- reportVersion: "compatibility-report/1";
439
- generatedAt: string;
440
- blockExport: boolean;
441
- featureEntries: CompatibilityFeatureEntry[];
442
- warnings: EditorWarning[];
443
- errors: EditorError[];
444
- }
445
- ```
446
-
447
- Persistence rules:
448
-
449
- - `getSnapshot()` returns `PersistedEditorSnapshot`
450
- - loading a snapshot resumes canonical state without rerunning `.docx` import
451
- - render snapshots are internal runtime projections and are not a persistence contract
452
- - manual export first saves a non-autosave snapshot checkpoint through `datastore.saveSnapshot(...)`
453
- - if that manual checkpoint fails, export is rejected and `saveExport(...)` is not attempted
454
- - autosave timers are scoped to the current revision token, so a successful manual export checkpoint clears any pending autosave for the same revision
455
-
456
- The host does not stream keystrokes through props. Replace-on-change is the only supported controlled pattern.
@@ -1,58 +0,0 @@
1
- # Repository Guidance
2
-
3
- Use this page as the default in-repo guidance for product and architecture work.
4
-
5
- ## Defaults
6
-
7
- - Keep host-format fidelity as the top-level product invariant.
8
- - Treat runtime-owned structured state as the canonical source of truth.
9
- - Route all edits through commands and transactions; do not patch DOM state directly and call it authoritative.
10
- - Preserve unsupported but preservable OOXML whenever possible; never silently drop unknown content.
11
- - Keep file ownership explicit in plans, waves, and ad-hoc prompts.
12
- - Prefer small, reviewable changes over broad speculative rewrites.
13
- - Update impacted docs when interfaces, scope, component maturity, or proof expectations change.
14
- - Keep maturity docs aligned with real subsystem status rather than narrative progress.
15
- - Run the relevant validation commands or fixture checks for touched surfaces.
16
- - Treat external docs as non-canonical unless the task is explicitly about third-party APIs or OOXML behavior.
17
-
18
- ## Layered Repo Rules
19
-
20
- - The only shipped implementation today is the docx runtime behind `WordReviewEditor`.
21
- - Shared platform docs may broaden before the source tree does; do not misrepresent planned structure as landed code.
22
- - `xlsx` planning work should align to the shared OOXML platform doctrine without copying docx-specific UI or ProseMirror assumptions into spreadsheet architecture.
23
- - `pdf` may appear in repo-level planning, but it is not part of the first shared OOXML platform contract.
24
-
25
- ## Current Docx Rules
26
-
27
- - The current shipped editor is not a Word clone. Keep UI clean, contextual, and minimal.
28
- - The repo is still optimized around legal-review workflows in the landed docx runtime. Comments, redlines, lists, tables, and safe round-trip behavior matter more than cosmetic formatting breadth.
29
- - Follow `DESIGN.md` for current docx layout, token, and interaction decisions.
30
- - Default visual posture is calm, precise, and review-oriented.
31
- - Prefer canvas mode as the baseline review experience; page mode is optional and secondary.
32
- - Keep the document surface central. Toolbars, sidebars, and status surfaces should support it, not compete with it.
33
- - Separate canonical content, review state, preservation layer, UI state, and OOXML import or export boundaries.
34
- - The shipped editor runs in the main thread with no Web Workers.
35
- - The Microsoft Open XML SDK must not be pulled into the shipped React bundle. Use it only in CI or internal validation services.
36
-
37
- ## Validation Bias
38
-
39
- When making architecture decisions, prefer proofs that increase confidence in:
40
-
41
- - current docx import safety
42
- - current docx export safety
43
- - Word reopen compatibility for shipped flows
44
- - future Excel reopen compatibility for planned xlsx flows
45
- - anchor and range remapping stability
46
- - preservation of unsupported content
47
- - adherence to the token-driven design system when UI surfaces are touched
48
-
49
- ## Update These Docs When Behavior Changes
50
-
51
- - `docs/plans/master-plan.md`
52
- - `docs/plans/current-state.md`
53
- - `docs/roadmap.md`
54
- - `docs/plans/component-cutover-matrix.md`
55
- - `docs/plans/waves/README.md`
56
- - `docs/reference/public-api.md` when the shipped docx public behavior changes
57
- - `docs/reference/ooxml-compliance.md` for shipped docx compatibility changes
58
- - `docs/reference/xlsx/xlsx-ooxml-compliance.md` for planned xlsx contract changes
@@ -1,182 +0,0 @@
1
- # Runtime Configuration Reference
2
-
3
- This directory is the canonical reference for executor configuration in the packaged Wave release.
4
-
5
- Use it when you need the full supported surface for:
6
-
7
- - `wave.config.json`
8
- - `lanes.<lane>.executors`
9
- - `waveControl`
10
- - `executors.profiles.<profile>`
11
- - per-agent `### Executor` blocks inside a wave file
12
-
13
- ## Naming Conventions
14
-
15
- - `wave.config.json` uses camelCase keys such as `profileName`, `addDirs`, `settingsJson`, and `allowedHttpHookUrls`.
16
- - Wave markdown `### Executor` blocks use snake_case after the runtime prefix, such as `codex.profile_name`, `codex.add_dirs`, `claude.settings_json`, and `claude.allowed_http_hook_urls`.
17
-
18
- ## Resolution Order
19
-
20
- Executor id selection resolves in this order:
21
-
22
- 1. agent `### Executor` `id`
23
- 2. agent `### Executor` `profile` -> `executors.profiles.<profile>.id`
24
- 3. `lanes.<lane>.runtimePolicy.defaultExecutorByRole`
25
- 4. launcher `--executor`
26
- 5. `executors.default`
27
-
28
- Runtime settings resolve in layers:
29
-
30
- 1. `executors.<runtime>` global defaults
31
- 2. `lanes.<lane>.executors.<runtime>` lane overrides
32
- 3. `executors.profiles.<profile>` or `lanes.<lane>.executors.profiles.<profile>`
33
- 4. agent `### Executor`
34
-
35
- Merge behavior:
36
-
37
- - scalar values override from later layers
38
- - list values merge for profile plus agent resolution on top of the lane base
39
- - lane executor overrides replace the corresponding global runtime fields before profile and agent resolution
40
- - a lane profile with the same name as a global profile replaces that profile definition for the lane
41
-
42
- Skill settings resolve after executor selection, because runtime and deploy-kind skill attachment depend on the resolved executor id and the wave's default deploy environment kind. The starter layering order is:
43
-
44
- 1. `skills.base`
45
- 2. `lanes.<lane>.skills.base`
46
- 3. `skills.byRole[resolvedRole]`
47
- 4. `lanes.<lane>.skills.byRole[resolvedRole]`
48
- 5. `skills.byRuntime[resolvedExecutorId]`
49
- 6. `lanes.<lane>.skills.byRuntime[resolvedExecutorId]`
50
- 7. `skills.byDeployKind[defaultDeployEnvironmentKind]`
51
- 8. `lanes.<lane>.skills.byDeployKind[defaultDeployEnvironmentKind]`
52
- 9. agent `### Skills`
53
-
54
- Then Wave filters configured skills through each bundle's activation metadata. Explicit per-agent `### Skills` still force attachment even when activation metadata would not auto-match.
55
-
56
- When retry-time fallback changes the runtime, Wave recomputes the effective skill set and rewrites the executor overlay before relaunch.
57
-
58
- ## Common Fields
59
-
60
- These fields are shared across runtimes:
61
-
62
- | Surface | `wave.config.json` / profile key | Wave `### Executor` key | Notes |
63
- | --- | --- | --- | --- |
64
- | Executor id | `id` in profile only | `id` | Runtime id: `codex`, `claude`, `opencode`, `local` |
65
- | Profile selection | n/a | `profile` | Selects `executors.profiles.<name>` |
66
- | Model | `model` in profile, `executors.claude.model`, `executors.opencode.model` | `model` | Codex uses shared `model` from profile or agent only |
67
- | Fallbacks | `fallbacks` in profile | `fallbacks` | Runtime ids used for retry-time reassignment |
68
- | Tags | `tags` in profile | `tags` | Stored in resolved executor state for policy and traces |
69
- | Budget turns | `budget.turns` in profile | `budget.turns` | Advisory generic turn budget. Wave records it in resolved metadata, but only runtime-specific settings such as `claude.maxTurns` or `opencode.steps` emit hard turn-limit flags. It does not set a Codex turn limit. |
70
- | Budget minutes | `budget.minutes` in profile | `budget.minutes` | Primary wall-clock attempt budget |
71
-
72
- Practical guidance:
73
-
74
- - prefer `budget.minutes` for normal synthesis, integration, and closure work
75
- - use generic `budget.turns` as a planning hint, not a hard failure trigger
76
- - only set `claude.maxTurns` or `opencode.steps` when you deliberately want a hard ceiling for that runtime
77
- - see [../../guides/recommendations-0.8.9.md](../../guides/recommendations-0.8.9.md) for the recommended `0.8.9` operating stance that combines advisory turn budgets with softer non-proof coordination states
78
-
79
- ## Runtime Pages
80
-
81
- - [codex.md](./codex.md)
82
- - [claude.md](./claude.md)
83
- - [opencode.md](./opencode.md)
84
-
85
- ## Wave Control
86
-
87
- `wave.config.json` may also declare a `waveControl` block for local-first telemetry delivery.
88
-
89
- Supported top-level fields:
90
-
91
- | Key | Type | Default | Purpose |
92
- | --- | --- | --- | --- |
93
- | `enabled` | boolean | `true` | Master switch for local queueing and remote delivery |
94
- | `endpoint` | string | unset | Base URL for the Railway-hosted `services/wave-control` API |
95
- | `workspaceId` | string | derived from repo path | Stable workspace identity used across runs |
96
- | `projectId` | string | derived from `projectName` | Stable project/repo identity used for cross-workspace reporting and filtering |
97
- | `authTokenEnvVar` | string | `WAVE_CONTROL_AUTH_TOKEN` | Environment variable name holding the bearer token |
98
- | `reportMode` | string | `metadata-plus-selected` | `disabled`, `metadata-only`, `metadata-plus-selected`, or `full-artifact-upload` |
99
- | `uploadArtifactKinds` | string[] | selected proof/trace/benchmark kinds | Artifact classes eligible for body upload when an artifact's upload policy requests a body |
100
- | `requestTimeoutMs` | integer | `5000` | Per-batch network timeout |
101
- | `flushBatchSize` | integer | `25` | Max queued telemetry events flushed per batch |
102
- | `maxPendingEvents` | integer | `1000` | Cap for pending remote-delivery queue files; oldest pending uploads are dropped from the remote queue while the local `events.jsonl` stream remains authoritative |
103
- | `captureCoordinationRecords` | boolean | `true` | Emit `coordination_record` telemetry |
104
- | `captureControlPlaneEvents` | boolean | `true` | Emit `wave_run`, `attempt`, `proof_bundle`, and related control-plane events |
105
- | `captureTraceBundles` | boolean | `true` | Emit finalized trace-bundle artifacts and gate snapshots |
106
- | `captureBenchmarkRuns` | boolean | `true` | Emit `benchmark_run`, `benchmark_item`, `verification`, and `review` events |
107
-
108
- Lane overrides may refine the same keys under `lanes.<lane>.waveControl`.
109
-
110
- One-run override:
111
-
112
- - `wave launch --no-telemetry` disables Wave Control queueing and remote delivery for that launcher invocation without changing the repo config.
113
-
114
- Example:
115
-
116
- ```json
117
- {
118
- "waveControl": {
119
- "endpoint": "https://wave-control.up.railway.app/api/v1",
120
- "workspaceId": "wave-main",
121
- "projectId": "wave-orchestration",
122
- "reportMode": "metadata-plus-selected",
123
- "uploadArtifactKinds": [
124
- "trace-run-metadata",
125
- "trace-quality",
126
- "benchmark-results"
127
- ]
128
- }
129
- }
130
- ```
131
-
132
- Runtime-emitted Wave Control events also attach:
133
-
134
- - `orchestratorId` from the active launcher or resident orchestrator
135
- - `runtimeVersion` from the installed Wave package metadata
136
-
137
- Those fields are queryable in the `wave-control` service alongside `workspaceId`,
138
- `projectId`, `runKind`, `runId`, `lane`, and benchmark ids.
139
-
140
- See [../wave-control.md](../wave-control.md) for the event contract and upload-policy model.
141
-
142
- ## Generated Artifacts
143
-
144
- Wave writes runtime artifacts here:
145
-
146
- - live runs: `.tmp/<lane>-wave-launcher/executors/wave-<n>/<agent-slug>/`
147
- - dry-run previews: `.tmp/<lane>-wave-launcher/dry-run/executors/wave-<n>/<agent-slug>/`
148
-
149
- Common files:
150
-
151
- - `launch-preview.json`: resolved invocation lines, env vars, retry mode, and structured attempt/turn-limit metadata for both dry-run and live launches
152
- - `skills.resolved.md`: compact metadata-first skill catalog for the selected agent and runtime
153
- - `skills.expanded.md`: full canonical/debug skill payload with `SKILL.md` bodies and adapters
154
- - `skills.metadata.json`: resolved skill ids, activation metadata, permissions, hashes, and generated artifact paths
155
- - `<runtime>-skills.txt`: runtime-projected compact skill text used by the selected executor
156
- - `claude-system-prompt.txt`: generated Claude harness prompt overlay
157
- - `claude-settings.json`: generated Claude settings overlay when inline settings data is present
158
- - `opencode-agent-prompt.txt`: generated OpenCode harness prompt overlay
159
- - `opencode.json`: generated OpenCode runtime config overlay
160
- - `.tmp/<lane>-wave-launcher/control-plane/telemetry/events.jsonl`: local-first Wave Control event stream
161
- - `.tmp/<lane>-wave-launcher/control-plane/telemetry/pending/`: queued event batches awaiting remote delivery
162
- - `.tmp/<lane>-wave-launcher/control-plane/telemetry/delivery-state.json`: remote-delivery counters and last-error state
163
-
164
- Runtime-specific delivery:
165
-
166
- - Codex uses the compact catalog in the compiled prompt and attaches bundle directories through `--add-dir`.
167
- - Claude appends the compact catalog to the generated system-prompt overlay.
168
- - OpenCode injects the compact catalog into `opencode.json` and attaches `skill.json`, `SKILL.md`, the selected adapter, and recursive `references/**` files through `--file`.
169
- - Local keeps skills prompt-only.
170
-
171
- `launch-preview.json` also records the resolved skill metadata plus a `limits` section. For Claude and OpenCode, that section reports the runtime-specific turn ceiling when one was actually configured; when only generic `budget.turns` exists, the preview keeps it as advisory metadata and notes that Wave emitted no hard turn-limit flag. For Codex, it explicitly records that Wave emitted no turn-limit flag and that any effective ceiling may come from the selected Codex profile or upstream runtime. If a live Codex run later terminates with a visible `Reached max turns (N)` log line, Wave appends that observed ceiling back into the live `launch-preview.json` as runtime evidence rather than pretending Wave set it.
172
-
173
- ## Recommended Validation Path
174
-
175
- Use dry-run before relying on a new runtime configuration:
176
-
177
- ```bash
178
- pnpm exec wave doctor
179
- pnpm exec wave launch --lane main --dry-run --no-dashboard
180
- ```
181
-
182
- Then inspect the generated preview and overlay files under `.tmp/<lane>-wave-launcher/dry-run/executors/`.