@ansonlai/docx-redline-js 0.7.2 → 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.
Files changed (53) hide show
  1. package/AGENTS.md +15 -10
  2. package/ARCHITECTURE.md +30 -10
  3. package/CHANGELOG.md +539 -431
  4. package/README.md +331 -309
  5. package/adapters/xml-adapter.js +84 -56
  6. package/core/sha256.js +120 -0
  7. package/dist/docx-redline-js.esm.js +8982 -693
  8. package/dist/docx-redline-js.esm.js.map +4 -4
  9. package/dist/docx-redline-js.esm.min.js +102 -89
  10. package/dist/docx-redline-js.esm.min.js.map +4 -4
  11. package/dist/docx-redline.bundle.cjs +28305 -0
  12. package/dist/docx-redline.bundle.cjs.map +7 -0
  13. package/dist/docx-redline.bundle.js +28296 -0
  14. package/dist/docx-redline.bundle.js.map +7 -0
  15. package/docs/AGENT_FAST_START.md +2 -1
  16. package/docs/AGENT_KNOWLEDGE_BASE.md +480 -393
  17. package/docs/SKILL_AUTHORING.md +5 -2
  18. package/docs/TESTING.md +2 -1
  19. package/docs/schemas/document-operations.schema.json +29 -0
  20. package/document/docx-document.d.ts +39 -0
  21. package/document/docx-document.js +1010 -0
  22. package/document/zip-archive.js +258 -0
  23. package/engine/reconstruction-writer.js +18 -0
  24. package/index.d.ts +598 -531
  25. package/index.js +349 -340
  26. package/node/cli-help.js +5 -5
  27. package/node/cli.js +760 -754
  28. package/node/docx-document.js +11 -355
  29. package/node/index.d.ts +1 -1
  30. package/node/zip-archive.js +28 -38
  31. package/package.json +14 -11
  32. package/scripts/build.mjs +40 -5
  33. package/scripts/generate-word-comment-edge-case-fixture.ps1 +58 -0
  34. package/scripts/generate-word-comment-thread-fixture.ps1 +36 -0
  35. package/scripts/generate-word-header-footer-fixture.ps1 +32 -0
  36. package/scripts/generate-word-multi-section-fixture.ps1 +27 -0
  37. package/scripts/generate-word-package-integrity-cases.mjs +141 -0
  38. package/scripts/generate-word-thread-state-fixtures.ps1 +50 -0
  39. package/scripts/word-com-package-integrity.ps1 +98 -0
  40. package/services/batch-operation-orchestrator.js +262 -259
  41. package/services/comment-replies.js +96 -95
  42. package/services/comment-thread-parts.js +280 -0
  43. package/services/document-inspection.js +366 -365
  44. package/services/document-operation-applier.js +230 -202
  45. package/services/document-operation-contract.js +17 -2
  46. package/services/error-recovery.js +6 -0
  47. package/services/headers-footers.js +206 -0
  48. package/services/operation-batch-compiler.js +1 -0
  49. package/services/operation-preflight.js +231 -218
  50. package/services/package-parts.js +80 -0
  51. package/services/revision-token.js +11 -7
  52. package/services/standalone-docx-plumbing.js +631 -569
  53. package/services/standalone-operation-runner.d.ts +19 -3
@@ -37,8 +37,15 @@ export interface LocalizedReplacement {
37
37
  occurrence?: number;
38
38
  }
39
39
 
40
+ /** A header/footer part path from `inspect().headersFooters`, or a selector. */
41
+ export type HeaderFooterPartSelector =
42
+ | string
43
+ | { kind: 'header' | 'footer'; type?: 'default' | 'first' | 'even'; section?: number };
44
+
40
45
  export interface DocumentOperationBase {
41
46
  operationId?: string;
47
+ /** Target a header or footer instead of the body. Comments are not supported there. */
48
+ part?: HeaderFooterPartSelector;
42
49
  captureKey?: string;
43
50
  target?: string | ParagraphTargetDescriptor;
44
51
  targetRef?: number | string | null;
@@ -121,6 +128,14 @@ export interface CommentReplyDocumentOperation {
121
128
  date?: string;
122
129
  }
123
130
 
131
+ /** Resolves (or with `resolved: false`, reopens) the whole thread containing `commentId`. Body-only. */
132
+ export interface CommentResolveDocumentOperation {
133
+ type: 'comment_resolve';
134
+ operationId?: string;
135
+ commentId: number | string;
136
+ resolved?: boolean;
137
+ }
138
+
124
139
  export interface CharacterFormatProperties {
125
140
  bold?: boolean;
126
141
  italic?: boolean;
@@ -165,6 +180,7 @@ export type DocumentOperation =
165
180
  | DeleteDocumentOperation
166
181
  | CommentDocumentOperation
167
182
  | CommentReplyDocumentOperation
183
+ | CommentResolveDocumentOperation
168
184
  | HighlightDocumentOperation
169
185
  | CharacterFormatDocumentOperation
170
186
  | ParagraphFormatDocumentOperation;
@@ -272,7 +288,7 @@ export interface DocumentOperationResult {
272
288
  warnings?: string[];
273
289
  status?: RedlineStatus;
274
290
  error?: RedlineError;
275
- operationType: 'redline' | 'comment' | 'comment_reply' | 'highlight' | 'format' | 'paragraph-format';
291
+ operationType: 'redline' | 'comment' | 'comment_reply' | 'comment_resolve' | 'highlight' | 'format' | 'paragraph-format';
276
292
  authorUsed: string;
277
293
  resolvedBy?: string;
278
294
  resolvedTarget?: ResolvedDocumentTarget;
@@ -284,7 +300,7 @@ export interface DocumentOperationResult {
284
300
  export interface BatchOperationItemResult {
285
301
  index: number;
286
302
  type: string;
287
- operationType: 'redline' | 'comment' | 'comment_reply' | 'highlight' | 'format' | 'paragraph-format';
303
+ operationType: 'redline' | 'comment' | 'comment_reply' | 'comment_resolve' | 'highlight' | 'format' | 'paragraph-format';
288
304
  status: 'applied' | 'no_change' | 'error';
289
305
  authorUsed: string;
290
306
  resolvedBy?: string;
@@ -329,7 +345,7 @@ export interface MutationRetryPlan {
329
345
  export interface OperationPreflightItemResult {
330
346
  index: number;
331
347
  type: string;
332
- operationType: 'redline' | 'comment' | 'comment_reply' | 'highlight' | 'format' | 'paragraph-format';
348
+ operationType: 'redline' | 'comment' | 'comment_reply' | 'comment_resolve' | 'highlight' | 'format' | 'paragraph-format';
333
349
  status: 'ready' | 'deferred' | 'error';
334
350
  authorUsed: string;
335
351
  resolvedBy?: string;