@a3s-lab/office 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -111,8 +111,8 @@ Redis/NATS fan-out plus a distributed writer/lock policy.
111
111
  Status: browser collaboration foundation, participant roster, remote
112
112
  selection/caret projection, participant navigation, durable review-only
113
113
  comment and suggestion modes, immutable suggestion-decision audit, and native
114
- text/options/bounded structural paragraph/comment mutations implemented; rich
115
- native mutation parity remains pending.
114
+ text/options/bounded structural paragraph/comment/suggestion mutations
115
+ implemented; rich native mutation parity remains pending.
116
116
 
117
117
  - TipTap is bound to `document.content` through
118
118
  `@tiptap/extension-collaboration`; StarterKit undo/redo is disabled and the
@@ -167,12 +167,15 @@ native mutation parity remains pending.
167
167
  without the additive roots remain readable, and a final decision clears
168
168
  local history that could otherwise resurrect the decided mark.
169
169
  - Rust, CLI, MCP, and A3S Code expose `document-comment-create`,
170
- `document-comment-reply`, `document-comment-set-resolved`, and
171
- `document-comment-delete`. Projection schema v2 returns attributable threads,
172
- replies, anchor text, paragraph/text identities, browser-compatible UTF-16
173
- offsets, resolution, and detached state. Native and browser fixtures cover
174
- restart, reordered delivery, stale anchor guards, idempotent retries,
175
- ownership failures, and cross-language convergence.
170
+ `document-comment-reply`, `document-comment-set-resolved`,
171
+ `document-comment-delete`, `document-suggestion-create`, and
172
+ `document-suggestion-decide`. Projection schema v3 returns attributable
173
+ comment threads, replies, anchor text, live suggestion identities and exact
174
+ placements, immutable final decisions, paragraph/text identities,
175
+ browser-compatible UTF-16 offsets, resolution, and detached state. Native and
176
+ browser fixtures cover restart, reordered delivery, stale guards, idempotent
177
+ retries, ownership/mode failures, atomic replacement decisions, and
178
+ cross-language convergence.
176
179
  - The A3S Boot backend permits `edit` content/review updates, semantically
177
180
  validated Document `comment` review-only updates, and semantically validated
178
181
  Document `suggest` proposal updates. Signed actor identity and display name
@@ -183,10 +186,6 @@ native mutation parity remains pending.
183
186
 
184
187
  Remaining:
185
188
 
186
- - Add closed typed native projection and mutation variants for creating
187
- Document suggestions and deciding them through CLI/MCP/A3S Code. The current
188
- typed native mutation set can synchronize the resulting Yjs state but does
189
- not originate these two workflows.
190
189
  - Prove concurrent full-table, list-restructure, section, comment, and revision
191
190
  workflows, plus DOCX import/export after merged edits.
192
191
  - Expand native convergence from bounded paragraph edits to complete table,
@@ -388,11 +387,11 @@ destructive actions remain attributable, reviewable, and non-retryable.
388
387
 
389
388
  Status: native Yrs replica store, resumable CLI/MCP event streams, `a3s code`
390
389
  projection, a host-injected live CLI transport session, authenticated browser
391
- suggestion-update authorization, and typed Markdown, Document content/comment,
392
- Spreadsheet cell, Presentation scene-element, PDF annotation/form-value, and
393
- PDF redaction/page-operation review mutation surfaces are implemented; typed
394
- native Document suggestion/decision mutations, the remaining format mutations,
395
- and native presence projection are pending.
390
+ suggestion-update authorization, and typed Markdown, Document
391
+ content/comment/suggestion, Spreadsheet cell, Presentation scene-element, PDF
392
+ annotation/form-value, and PDF redaction/page-operation review mutation surfaces
393
+ are implemented; the remaining format mutations and native presence projection
394
+ are pending.
396
395
 
397
396
  - Yrs `0.27.3` now uses 53-bit Yjs-compatible client IDs and exchanges standard
398
397
  Yjs v1 updates, state vectors, and y-sync `SyncStep1`/`Update` messages with
@@ -444,16 +443,18 @@ and native presence projection are pending.
444
443
  - Host-authenticated Document `suggest` transport updates are semantically
445
444
  checked in Yrs before commit: only attributed insertion/deletion/replacement
446
445
  proposals owned by the authenticated actor may be added or withdrawn, while
447
- canonical state and every non-suggestion root remain protected. This is a
448
- transport authorization path, not a `NativeOfficeCollaborationMutation`;
449
- `collab mutate`, `office_collaboration_mutate`, and projection v2 do not yet
450
- expose native typed suggestion creation or final-decision operations.
446
+ canonical state and every non-suggestion root remain protected.
447
+ `document-suggestion-create` exposes the same closed proposal contract to an
448
+ actor-scoped native `suggest` replica; `document-suggestion-decide` lets an
449
+ `edit` replica match and accept or reject one or more complete projected
450
+ identities atomically, then appends immutable browser-compatible decisions.
451
451
  - Rust `project`, `collab read`, and `office_collaboration_read` interpret the
452
452
  Office-owned browser schema inside Office rather than in a product host.
453
453
  Markdown returns its exact canonical source. Document returns bounded
454
454
  traversal-order paragraph records, stable `paragraphId`/`textId` pairs,
455
- structural ancestry, option fields, subordinate plain text, and projection-v2
456
- comment/reply/anchor/detached records together with the exact state vector.
455
+ structural ancestry, option fields, subordinate plain text, and projection-v3
456
+ comment/reply/anchor/detached records, live suggestions with exact placements,
457
+ and immutable final decisions together with the exact state vector.
457
458
  `document-replace-paragraph` uses those stable
458
459
  identities plus complete expected text to reject a stale same-paragraph
459
460
  browser/agent edit before writing, while unrelated changes can proceed
@@ -509,9 +510,8 @@ Remaining:
509
510
 
510
511
  - Extend typed format-model mutations to Spreadsheet and remaining Presentation
511
512
  structural/rich-text operations plus PDF signatures; deepen Document
512
- mutations to additional nested structures and add typed suggestion creation,
513
- suggestion projection, and tracked final-decision operations for native
514
- clients.
513
+ mutations to additional nested structures and complete table/list/section
514
+ revision workflows.
515
515
  - Project editor-visible presence and selection state while keeping Awareness
516
516
  ephemeral and outside native replica persistence.
517
517
 
package/README.md CHANGED
@@ -146,9 +146,9 @@ The images below are committed visual-regression baselines from the real
146
146
  also keep a durable Yrs replica, exchange standard Yjs v1 updates and state
147
147
  vectors, perform authorized typed Markdown, Document, Spreadsheet cell,
148
148
  Presentation scene-element and z-order, and PDF annotation, form-value, and
149
- review changes, including attributable Document selection comments and
150
- replies, retain browser/native actor attribution, and checkpoint without
151
- replacing a whole Office file.
149
+ review changes, including attributable Document selection comments, replies,
150
+ text suggestions, and atomic final decisions, retain browser/native actor
151
+ attribution, and checkpoint without replacing a whole Office file.
152
152
 
153
153
  ## Real-time collaboration
154
154
 
@@ -1075,6 +1075,33 @@ cargo run -p a3s-office-cli -- collab mutate .a3s/report-review.replica \
1075
1075
  --operation-id comment-45 \
1076
1076
  --mutation '{"type":"document-comment-create","commentId":"comment-1","paragraphId":"00000001","expectedTextId":"00000002","startUtf16":6,"endUtf16":12,"expectedText":"review","author":"Ada Reviewer","createdAt":"2026-08-17T00:00:00.000Z","text":"Clarify this review point."}' --json
1077
1077
 
1078
+ # Propose an atomic replacement from an actor-scoped suggest replica. Read
1079
+ # projection v3 immediately before writing and copy its exact paragraph/text
1080
+ # identity, UTF-16 selection, and selected text.
1081
+ cargo run -p a3s-office-cli -- collab join .a3s/report-suggest.replica \
1082
+ --artifact-id report --kind document --actor-id agent-7 \
1083
+ --actor-kind agent --mode suggest --operation-id suggestion-join-1 \
1084
+ --input browser.update --json
1085
+ cargo run -p a3s-office-cli -- collab read .a3s/report-suggest.replica --json
1086
+ cargo run -p a3s-office-cli -- collab mutate .a3s/report-suggest.replica \
1087
+ --artifact-id report --kind document --actor-id agent-7 --mode suggest \
1088
+ --operation-id suggestion-create-1 \
1089
+ --mutation '{"type":"document-suggestion-create","paragraphId":"00000001","expectedTextId":"00000002","startUtf16":6,"endUtf16":8,"expectedText":"😀","replacement":"reviewed","insertionId":"agent-7-insertion-1","deletionId":"agent-7-deletion-1","author":"A3S Agent","createdAt":"2026-08-17T11:00:00.000Z"}' --json
1090
+ cargo run -p a3s-office-cli -- collab diff .a3s/report-suggest.replica \
1091
+ --output agent-suggestion.update --json
1092
+
1093
+ # An edit replica accepts or rejects one or more complete projected suggestion
1094
+ # identities atomically and appends immutable actor-attributed decisions.
1095
+ cargo run -p a3s-office-cli -- collab join .a3s/report-editor.replica \
1096
+ --artifact-id report --kind document --actor-id editor-1 \
1097
+ --actor-kind human --mode edit --operation-id editor-join-1 \
1098
+ --input agent-suggestion.update --json
1099
+ cargo run -p a3s-office-cli -- collab read .a3s/report-editor.replica --json
1100
+ cargo run -p a3s-office-cli -- collab mutate .a3s/report-editor.replica \
1101
+ --artifact-id report --kind document --actor-id editor-1 --mode edit \
1102
+ --operation-id suggestion-accept-1 \
1103
+ --mutation '{"type":"document-suggestion-decide","suggestions":[{"id":"agent-7-deletion-1","kind":"deletion","expectedActorId":"agent-7","expectedAuthor":"A3S Agent","expectedCreatedAt":"2026-08-17T11:00:00.000Z","expectedText":"😀"},{"id":"agent-7-insertion-1","kind":"insertion","expectedActorId":"agent-7","expectedAuthor":"A3S Agent","expectedCreatedAt":"2026-08-17T11:00:00.000Z","expectedText":"reviewed"}],"decision":"accept","decidedBy":"Grace Editor","decidedAt":"2026-08-17T11:01:00.000Z"}' --json
1104
+
1078
1105
  # Recursively patch one Spreadsheet cell after matching the observed value.
1079
1106
  # Zero-based row/column coordinates follow the browser collaboration model.
1080
1107
  cargo run -p a3s-office-cli -- collab mutate .a3s/plan.replica \
@@ -1148,8 +1175,9 @@ suppression, without opening its own network provider. Native Rust `project`,
1148
1175
  Markdown source or an Office-owned bounded Document projection with stable
1149
1176
  paragraph/text identities, structural ancestry, option fields, subordinate
1150
1177
  plain text, durable comments, replies, resolution and detached state, exact
1151
- paragraph-local UTF-16 anchors, and the current state vector. Projection schema
1152
- version 2 is the contract for these review fields. Product hosts therefore do
1178
+ paragraph-local UTF-16 anchors, live suggestions with exact placements,
1179
+ immutable final decisions, and the current state vector. Projection schema
1180
+ version 3 is the contract for these review fields. Product hosts therefore do
1153
1181
  not need to interpret Office's private Yjs schema. Typed Markdown
1154
1182
  replace/splice operations use browser UTF-16 offsets. Document mutations edit
1155
1183
  ProseMirror `Y.XmlText` in place, rotate the affected Word `textId`, replace one
@@ -1206,6 +1234,18 @@ the thread as a detached review record. Browser and native comment changes
1206
1234
  share immutable claims and remain isolated from another participant's undo
1207
1235
  history.
1208
1236
 
1237
+ Document suggestion mutations use `document-suggestion-create` in an
1238
+ actor-scoped `suggest` replica and `document-suggestion-decide` in an `edit`
1239
+ replica. Creation matches a stable plain paragraph, its current text identity,
1240
+ an exact UTF-16 range, and selected text before writing an insertion, deletion,
1241
+ or atomic replacement proposal. Decisions match every projected suggestion
1242
+ identity and text in the batch, then accept or reject all of them in one
1243
+ transaction and append immutable browser-compatible audit records. Actor IDs
1244
+ come from replica manifests; authors and decision names must match the
1245
+ authenticated display names. Stable-ID retries are idempotent, while stale
1246
+ identities, overlapping proposals, incomplete replacement IDs, forged
1247
+ attribution, or conflicting final decisions fail without a durable update.
1248
+
1209
1249
  Read the [native engine design](docs/latest/en/native-office-engine.md), the
1210
1250
  complete [CLI reference](docs/latest/en/cli-reference.md), or the published
1211
1251
  [CLI and Skill guide](https://a3s-lab.github.io/Office/docs/automation/).
@@ -1269,6 +1309,7 @@ without hard-coded return URLs.
1269
1309
 
1270
1310
  - [Live Playground](https://a3s-lab.github.io/Office/)
1271
1311
  - [Documentation center](https://a3s-lab.github.io/Office/docs/)
1312
+ - [A3S Office 0.8.1 documentation](https://a3s-lab.github.io/Office/docs/0.8.1/)
1272
1313
  - [A3S Office 0.8.0 documentation](https://a3s-lab.github.io/Office/docs/0.8.0/)
1273
1314
  - [A3S Office 0.7.3 documentation](https://a3s-lab.github.io/Office/docs/0.7.3/)
1274
1315
  - [A3S Office 0.7.2 documentation](https://a3s-lab.github.io/Office/docs/0.7.2/)
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a3s-lab/office",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Open-source collaborative browser editors for documents, Markdown, spreadsheets, presentations, and PDFs.",
5
5
  "keywords": [
6
6
  "office",