@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.
- package/COLLABORATION_ROADMAP.md +26 -26
- package/README.md +46 -5
- package/dist/office-kernel.wasm +0 -0
- package/package.json +1 -1
package/COLLABORATION_ROADMAP.md
CHANGED
|
@@ -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
|
|
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`,
|
|
171
|
-
`document-comment-delete
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
|
392
|
-
Spreadsheet cell, Presentation scene-element, PDF
|
|
393
|
-
PDF redaction/page-operation review mutation surfaces
|
|
394
|
-
|
|
395
|
-
|
|
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.
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
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-
|
|
456
|
-
comment/reply/anchor/detached records
|
|
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
|
|
513
|
-
|
|
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
|
|
150
|
-
|
|
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,
|
|
1152
|
-
|
|
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/)
|
package/dist/office-kernel.wasm
CHANGED
|
Binary file
|