@beyondwork/docx-react-component 1.0.28 → 1.0.29
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/dist/canonical-document-BLEbzL2J.d.cts +844 -0
- package/dist/canonical-document-BLEbzL2J.d.ts +844 -0
- package/dist/chunk-2FJS5GZM.js +763 -0
- package/dist/chunk-2FJS5GZM.js.map +1 -0
- package/{src/core/commands/section-layout-commands.ts → dist/chunk-2OQBZS3F.js} +106 -340
- package/dist/chunk-2OQBZS3F.js.map +1 -0
- package/dist/chunk-2S7W4KFO.js +127 -0
- package/dist/chunk-2S7W4KFO.js.map +1 -0
- package/dist/chunk-2TG72QSW.js +3874 -0
- package/dist/chunk-2TG72QSW.js.map +1 -0
- package/{src/core/commands/table-structure-commands.ts → dist/chunk-36QNIZBO.js} +126 -315
- package/dist/chunk-36QNIZBO.js.map +1 -0
- package/dist/chunk-4AQOYAW4.js +3069 -0
- package/dist/chunk-4AQOYAW4.js.map +1 -0
- package/dist/chunk-4D5EWJ3P.js +77 -0
- package/dist/chunk-4D5EWJ3P.js.map +1 -0
- package/dist/chunk-5FN54NDH.js +2257 -0
- package/dist/chunk-5FN54NDH.js.map +1 -0
- package/dist/chunk-BOYGQYRQ.js +7306 -0
- package/dist/chunk-BOYGQYRQ.js.map +1 -0
- package/dist/chunk-CN3XMECL.js +212 -0
- package/dist/chunk-CN3XMECL.js.map +1 -0
- package/dist/chunk-EBI3BX6U.js +164 -0
- package/dist/chunk-EBI3BX6U.js.map +1 -0
- package/dist/chunk-EILUG3VB.js +1275 -0
- package/dist/chunk-EILUG3VB.js.map +1 -0
- package/dist/chunk-FUDY333O.js +70 -0
- package/dist/chunk-FUDY333O.js.map +1 -0
- package/dist/chunk-GBVOWFIK.js +1237 -0
- package/dist/chunk-GBVOWFIK.js.map +1 -0
- package/dist/chunk-H4TQ3H3Y.js +262 -0
- package/dist/chunk-H4TQ3H3Y.js.map +1 -0
- package/{src/core/commands/style-commands.ts → dist/chunk-JGB3IXZO.js} +40 -113
- package/dist/chunk-JGB3IXZO.js.map +1 -0
- package/dist/chunk-KD2QRQPY.js +4342 -0
- package/dist/chunk-KD2QRQPY.js.map +1 -0
- package/dist/chunk-KLMXQVYK.js +369 -0
- package/dist/chunk-KLMXQVYK.js.map +1 -0
- package/dist/chunk-KZUG5KFQ.js +214 -0
- package/dist/chunk-KZUG5KFQ.js.map +1 -0
- package/{src/core/state/text-transaction.ts → dist/chunk-QDAQ4CJU.js} +79 -236
- package/dist/chunk-QDAQ4CJU.js.map +1 -0
- package/{src/legal/bookmarks.ts → dist/chunk-RMH72RZI.js} +44 -130
- package/dist/chunk-RMH72RZI.js.map +1 -0
- package/dist/chunk-SWKWQZXM.js +117 -0
- package/dist/chunk-SWKWQZXM.js.map +1 -0
- package/{src/core/commands/formatting-commands.ts → dist/chunk-TJBP2K4T.js} +196 -536
- package/dist/chunk-TJBP2K4T.js.map +1 -0
- package/dist/chunk-TLCEAQDQ.js +542 -0
- package/dist/chunk-TLCEAQDQ.js.map +1 -0
- package/{src/core/commands/text-commands.ts → dist/chunk-UZXBISGO.js} +86 -142
- package/dist/chunk-UZXBISGO.js.map +1 -0
- package/dist/chunk-WGBAKP3Q.js +3220 -0
- package/dist/chunk-WGBAKP3Q.js.map +1 -0
- package/dist/compare/index.cjs +5475 -0
- package/dist/compare/index.cjs.map +1 -0
- package/dist/compare/index.d.cts +114 -0
- package/dist/compare/index.d.ts +114 -0
- package/dist/compare/index.js +731 -0
- package/dist/compare/index.js.map +1 -0
- package/dist/core/commands/formatting-commands.cjs +828 -0
- package/dist/core/commands/formatting-commands.cjs.map +1 -0
- package/dist/core/commands/formatting-commands.d.cts +63 -0
- package/dist/core/commands/formatting-commands.d.ts +63 -0
- package/dist/core/commands/formatting-commands.js +37 -0
- package/dist/core/commands/formatting-commands.js.map +1 -0
- package/dist/core/commands/image-commands.cjs +2023 -0
- package/dist/core/commands/image-commands.cjs.map +1 -0
- package/dist/core/commands/image-commands.d.cts +58 -0
- package/dist/core/commands/image-commands.d.ts +58 -0
- package/dist/core/commands/image-commands.js +18 -0
- package/dist/core/commands/image-commands.js.map +1 -0
- package/dist/core/commands/section-layout-commands.cjs +477 -0
- package/dist/core/commands/section-layout-commands.cjs.map +1 -0
- package/dist/core/commands/section-layout-commands.d.cts +62 -0
- package/dist/core/commands/section-layout-commands.d.ts +62 -0
- package/dist/core/commands/section-layout-commands.js +21 -0
- package/dist/core/commands/section-layout-commands.js.map +1 -0
- package/dist/core/commands/style-commands.cjs +214 -0
- package/dist/core/commands/style-commands.cjs.map +1 -0
- package/dist/core/commands/style-commands.d.cts +13 -0
- package/dist/core/commands/style-commands.d.ts +13 -0
- package/dist/core/commands/style-commands.js +9 -0
- package/dist/core/commands/style-commands.js.map +1 -0
- package/dist/core/commands/table-structure-commands.cjs +1883 -0
- package/dist/core/commands/table-structure-commands.cjs.map +1 -0
- package/dist/core/commands/table-structure-commands.d.cts +59 -0
- package/dist/core/commands/table-structure-commands.d.ts +59 -0
- package/dist/core/commands/table-structure-commands.js +12 -0
- package/dist/core/commands/table-structure-commands.js.map +1 -0
- package/dist/core/commands/text-commands.cjs +2391 -0
- package/dist/core/commands/text-commands.cjs.map +1 -0
- package/dist/core/commands/text-commands.d.cts +24 -0
- package/dist/core/commands/text-commands.d.ts +24 -0
- package/dist/core/commands/text-commands.js +28 -0
- package/dist/core/commands/text-commands.js.map +1 -0
- package/dist/core/selection/mapping.cjs +200 -0
- package/dist/core/selection/mapping.cjs.map +1 -0
- package/dist/core/selection/mapping.d.cts +2 -0
- package/dist/core/selection/mapping.d.ts +2 -0
- package/dist/core/selection/mapping.js +31 -0
- package/dist/core/selection/mapping.js.map +1 -0
- package/dist/core/state/editor-state.cjs +2278 -0
- package/dist/core/state/editor-state.cjs.map +1 -0
- package/dist/core/state/editor-state.d.cts +2 -0
- package/dist/core/state/editor-state.d.ts +2 -0
- package/dist/core/state/editor-state.js +26 -0
- package/dist/core/state/editor-state.js.map +1 -0
- package/dist/index.cjs +38553 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +15 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +7856 -0
- package/dist/index.js.map +1 -0
- package/dist/io/docx-session.cjs +16236 -0
- package/dist/io/docx-session.cjs.map +1 -0
- package/dist/io/docx-session.d.cts +21 -0
- package/dist/io/docx-session.d.ts +21 -0
- package/dist/io/docx-session.js +18 -0
- package/dist/io/docx-session.js.map +1 -0
- package/dist/legal/index.cjs +3900 -0
- package/dist/legal/index.cjs.map +1 -0
- package/dist/legal/index.d.cts +86 -0
- package/dist/legal/index.d.ts +86 -0
- package/dist/legal/index.js +616 -0
- package/dist/legal/index.js.map +1 -0
- package/dist/public-types-7ZL_94cz.d.ts +1573 -0
- package/dist/public-types-CeMaDueh.d.cts +1573 -0
- package/dist/public-types.cjs +19 -0
- package/dist/public-types.cjs.map +1 -0
- package/dist/public-types.d.cts +2 -0
- package/dist/public-types.d.ts +2 -0
- package/dist/public-types.js +1 -0
- package/dist/public-types.js.map +1 -0
- package/dist/runtime/document-runtime.cjs +11140 -0
- package/dist/runtime/document-runtime.cjs.map +1 -0
- package/dist/runtime/document-runtime.d.cts +231 -0
- package/dist/runtime/document-runtime.d.ts +231 -0
- package/dist/runtime/document-runtime.js +21 -0
- package/dist/runtime/document-runtime.js.map +1 -0
- package/dist/structural-helpers-CilgOVhh.d.cts +10 -0
- package/dist/structural-helpers-q0Gd-eBN.d.ts +10 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.cjs +313 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.cjs.map +1 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.d.cts +67 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.d.ts +67 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.js +23 -0
- package/dist/ui-tailwind/editor-surface/search-plugin.js.map +1 -0
- package/dist/ui-tailwind/index.cjs +4833 -0
- package/dist/ui-tailwind/index.cjs.map +1 -0
- package/dist/ui-tailwind/index.d.cts +617 -0
- package/dist/ui-tailwind/index.d.ts +617 -0
- package/dist/ui-tailwind/index.js +575 -0
- package/dist/ui-tailwind/index.js.map +1 -0
- package/package.json +61 -41
- package/src/README.md +0 -85
- package/src/api/README.md +0 -26
- package/src/api/public-types.ts +0 -1421
- package/src/api/session-state.ts +0 -60
- package/src/compare/diff-engine.ts +0 -623
- package/src/compare/export-redlines.ts +0 -280
- package/src/compare/index.ts +0 -25
- package/src/compare/snapshot.ts +0 -97
- package/src/component-inventory.md +0 -99
- package/src/core/README.md +0 -10
- package/src/core/commands/README.md +0 -3
- package/src/core/commands/image-commands.ts +0 -373
- package/src/core/commands/index.ts +0 -1757
- package/src/core/commands/list-commands.ts +0 -565
- package/src/core/commands/paragraph-layout-commands.ts +0 -339
- package/src/core/commands/review-commands.ts +0 -108
- package/src/core/commands/structural-helpers.ts +0 -309
- package/src/core/schema/README.md +0 -3
- package/src/core/schema/text-schema.ts +0 -516
- package/src/core/search/search-text.ts +0 -357
- package/src/core/selection/README.md +0 -3
- package/src/core/selection/mapping.ts +0 -289
- package/src/core/selection/review-anchors.ts +0 -183
- package/src/core/state/README.md +0 -3
- package/src/core/state/editor-state.ts +0 -892
- package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
- package/src/formats/xlsx/io/parse-sheet.ts +0 -459
- package/src/formats/xlsx/io/parse-styles.ts +0 -59
- package/src/formats/xlsx/io/parse-workbook.ts +0 -75
- package/src/formats/xlsx/io/serialize-shared-strings.ts +0 -72
- package/src/formats/xlsx/io/serialize-sheet.ts +0 -333
- package/src/formats/xlsx/io/serialize-styles.ts +0 -98
- package/src/formats/xlsx/io/serialize-workbook.ts +0 -429
- package/src/formats/xlsx/io/xlsx-session.ts +0 -314
- package/src/formats/xlsx/model/cell.ts +0 -189
- package/src/formats/xlsx/model/sheet.ts +0 -326
- package/src/formats/xlsx/model/styles.ts +0 -118
- package/src/formats/xlsx/model/workbook.ts +0 -453
- package/src/formats/xlsx/runtime/cell-commands.ts +0 -567
- package/src/formats/xlsx/runtime/sheet-commands.ts +0 -206
- package/src/formats/xlsx/runtime/workbook-runtime.ts +0 -177
- package/src/formats/xlsx/runtime/workbook-transaction.ts +0 -822
- package/src/index.ts +0 -101
- package/src/io/README.md +0 -10
- package/src/io/docx-session.ts +0 -2882
- package/src/io/export/README.md +0 -3
- package/src/io/export/export-session.ts +0 -220
- package/src/io/export/minimal-docx.ts +0 -115
- package/src/io/export/reattach-preserved-parts.ts +0 -54
- package/src/io/export/serialize-comments.ts +0 -947
- package/src/io/export/serialize-footnotes.ts +0 -399
- package/src/io/export/serialize-headers-footers.ts +0 -372
- package/src/io/export/serialize-main-document.ts +0 -1376
- package/src/io/export/serialize-numbering.ts +0 -118
- package/src/io/export/serialize-revisions.ts +0 -389
- package/src/io/export/serialize-runtime-revisions.ts +0 -269
- package/src/io/export/serialize-tables.ts +0 -174
- package/src/io/export/split-review-boundaries.ts +0 -356
- package/src/io/normalize/README.md +0 -3
- package/src/io/normalize/normalize-text.ts +0 -639
- package/src/io/ooxml/README.md +0 -3
- package/src/io/ooxml/highlight-colors.ts +0 -39
- package/src/io/ooxml/numbering-sentinels.ts +0 -44
- package/src/io/ooxml/parse-comments.ts +0 -846
- package/src/io/ooxml/parse-complex-content.ts +0 -287
- package/src/io/ooxml/parse-fields.ts +0 -834
- package/src/io/ooxml/parse-footnotes.ts +0 -896
- package/src/io/ooxml/parse-headers-footers.ts +0 -1169
- package/src/io/ooxml/parse-inline-media.ts +0 -461
- package/src/io/ooxml/parse-main-document.ts +0 -2877
- package/src/io/ooxml/parse-numbering.ts +0 -432
- package/src/io/ooxml/parse-revisions.ts +0 -931
- package/src/io/ooxml/parse-settings.ts +0 -184
- package/src/io/ooxml/parse-shapes.ts +0 -296
- package/src/io/ooxml/parse-styles.ts +0 -463
- package/src/io/ooxml/parse-tables.ts +0 -618
- package/src/io/ooxml/parse-theme.ts +0 -346
- package/src/io/ooxml/part-manifest.ts +0 -136
- package/src/io/ooxml/revision-boundaries.ts +0 -351
- package/src/io/opc/README.md +0 -3
- package/src/io/opc/corrupt-package.ts +0 -166
- package/src/io/opc/docx-package.ts +0 -74
- package/src/io/opc/package-reader.ts +0 -325
- package/src/io/opc/package-writer.ts +0 -273
- package/src/io/source-package-provenance.ts +0 -241
- package/src/legal/cross-references.ts +0 -414
- package/src/legal/defined-terms.ts +0 -203
- package/src/legal/index.ts +0 -32
- package/src/legal/signature-blocks.ts +0 -259
- package/src/model/README.md +0 -3
- package/src/model/canonical-document.ts +0 -2632
- package/src/model/cds-1.0.0.ts +0 -212
- package/src/model/snapshot.ts +0 -649
- package/src/preservation/README.md +0 -3
- package/src/preservation/markup-compatibility.ts +0 -48
- package/src/preservation/opaque-fragment-store.ts +0 -89
- package/src/preservation/opaque-region.ts +0 -233
- package/src/preservation/package-preservation.ts +0 -113
- package/src/preservation/preserved-part-manifest.ts +0 -56
- package/src/preservation/relationship-retention.ts +0 -57
- package/src/preservation/store.ts +0 -185
- package/src/review/README.md +0 -16
- package/src/review/store/README.md +0 -3
- package/src/review/store/comment-anchors.ts +0 -70
- package/src/review/store/comment-remapping.ts +0 -154
- package/src/review/store/comment-store.ts +0 -331
- package/src/review/store/comment-thread.ts +0 -109
- package/src/review/store/revision-actions.ts +0 -394
- package/src/review/store/revision-store.ts +0 -312
- package/src/review/store/revision-types.ts +0 -171
- package/src/review/store/runtime-comment-store.ts +0 -43
- package/src/runtime/README.md +0 -3
- package/src/runtime/ai-action-policy.ts +0 -764
- package/src/runtime/document-layout.ts +0 -332
- package/src/runtime/document-navigation.ts +0 -603
- package/src/runtime/document-runtime.ts +0 -3159
- package/src/runtime/document-search.ts +0 -145
- package/src/runtime/numbering-prefix.ts +0 -216
- package/src/runtime/page-layout-estimation.ts +0 -212
- package/src/runtime/read-only-diagnostics-runtime.ts +0 -241
- package/src/runtime/review-runtime.ts +0 -44
- package/src/runtime/revision-runtime.ts +0 -107
- package/src/runtime/session-capabilities.ts +0 -192
- package/src/runtime/story-context.ts +0 -164
- package/src/runtime/story-targeting.ts +0 -162
- package/src/runtime/surface-projection.ts +0 -1357
- package/src/runtime/table-commands.ts +0 -173
- package/src/runtime/table-schema.ts +0 -309
- package/src/runtime/view-state.ts +0 -477
- package/src/runtime/virtualized-rendering.ts +0 -258
- package/src/runtime/workflow-markup.ts +0 -353
- package/src/ui/README.md +0 -30
- package/src/ui/WordReviewEditor.tsx +0 -4086
- package/src/ui/browser-export.ts +0 -52
- package/src/ui/comments/README.md +0 -3
- package/src/ui/compatibility/README.md +0 -3
- package/src/ui/editor-command-bag.ts +0 -120
- package/src/ui/editor-runtime-boundary.ts +0 -1457
- package/src/ui/editor-shell-view.tsx +0 -142
- package/src/ui/editor-surface/README.md +0 -3
- package/src/ui/editor-surface-controller.tsx +0 -61
- package/src/ui/headless/comment-decoration-model.ts +0 -124
- package/src/ui/headless/preserve-editor-selection.ts +0 -5
- package/src/ui/headless/revision-decoration-model.ts +0 -128
- package/src/ui/headless/selection-helpers.ts +0 -54
- package/src/ui/headless/selection-toolbar-model.ts +0 -34
- package/src/ui/headless/use-editor-keyboard.ts +0 -103
- package/src/ui/review/README.md +0 -3
- package/src/ui/runtime-snapshot-selectors.ts +0 -197
- package/src/ui/shared/revision-filters.ts +0 -31
- package/src/ui/status/README.md +0 -3
- package/src/ui/theme/README.md +0 -3
- package/src/ui/toolbar/README.md +0 -3
- package/src/ui/workflow-surface-blocked-rails.ts +0 -94
- package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -64
- package/src/ui-tailwind/chrome/tw-image-context-toolbar.tsx +0 -129
- package/src/ui-tailwind/chrome/tw-layout-panel.tsx +0 -114
- package/src/ui-tailwind/chrome/tw-object-context-toolbar.tsx +0 -34
- package/src/ui-tailwind/chrome/tw-page-ruler.tsx +0 -386
- package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -186
- package/src/ui-tailwind/chrome/tw-suggestion-card.tsx +0 -139
- package/src/ui-tailwind/chrome/tw-table-context-toolbar.tsx +0 -128
- package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
- package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
- package/src/ui-tailwind/editor-surface/perf-probe.ts +0 -179
- package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -184
- package/src/ui-tailwind/editor-surface/pm-contextual-ui.ts +0 -31
- package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -427
- package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
- package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -876
- package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -504
- package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -168
- package/src/ui-tailwind/editor-surface/surface-build-keys.ts +0 -61
- package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
- package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
- package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -129
- package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -58
- package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
- package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -944
- package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -436
- package/src/ui-tailwind/index.ts +0 -62
- package/src/ui-tailwind/page-chrome-model.ts +0 -27
- package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -406
- package/src/ui-tailwind/review/tw-health-panel.tsx +0 -149
- package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
- package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
- package/src/ui-tailwind/status/tw-status-bar.tsx +0 -61
- package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -52
- package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -1064
- package/src/ui-tailwind/tw-review-workspace.tsx +0 -1417
- package/src/validation/README.md +0 -3
- package/src/validation/compatibility-engine.ts +0 -634
- package/src/validation/compatibility-report.ts +0 -161
- package/src/validation/diagnostics.ts +0 -204
- package/src/validation/docx-comment-proof.ts +0 -707
- package/src/validation/import-diagnostics.ts +0 -128
- package/src/validation/low-priority-word-surfaces.ts +0 -373
- /package/{src → dist}/ui-tailwind/theme/editor-theme.css +0 -0
|
@@ -1,764 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI Action Policy for Legal Document Editor
|
|
3
|
-
*
|
|
4
|
-
* This module defines the AI capability matrix and policy boundaries for the
|
|
5
|
-
* legal document review editor. It establishes clear boundaries between
|
|
6
|
-
* allowed AI actions, those requiring confirmation, blocked actions, and
|
|
7
|
-
* unsupported operations.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Categories of AI actions in the legal document context
|
|
12
|
-
*/
|
|
13
|
-
export type AIActionCategory =
|
|
14
|
-
| 'text-editing'
|
|
15
|
-
| 'content-generation'
|
|
16
|
-
| 'review-assistance'
|
|
17
|
-
| 'document-analysis'
|
|
18
|
-
| 'formatting-assistance'
|
|
19
|
-
| 'validation-assistance'
|
|
20
|
-
| 'workflow-automation'
|
|
21
|
-
| 'data-extraction'
|
|
22
|
-
| 'external-integration'
|
|
23
|
-
| 'system-modification';
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Specific AI actions within each category
|
|
27
|
-
*/
|
|
28
|
-
export type AIAction =
|
|
29
|
-
// Text editing actions
|
|
30
|
-
| 'edit_selection'
|
|
31
|
-
| 'rewrite_paragraph'
|
|
32
|
-
| 'fix_grammar'
|
|
33
|
-
| 'improve_clarity'
|
|
34
|
-
| 'adjust_tone'
|
|
35
|
-
|
|
36
|
-
// Content generation actions
|
|
37
|
-
| 'generate_text'
|
|
38
|
-
| 'expand_outline'
|
|
39
|
-
| 'create_summary'
|
|
40
|
-
| 'generate_boilerplate'
|
|
41
|
-
| 'draft_response'
|
|
42
|
-
|
|
43
|
-
// Review assistance actions
|
|
44
|
-
| 'suggest_comment_response'
|
|
45
|
-
| 'analyze_changes'
|
|
46
|
-
| 'resolve_comment_thread'
|
|
47
|
-
| 'identify_issues'
|
|
48
|
-
| 'check_consistency'
|
|
49
|
-
|
|
50
|
-
// Document analysis actions
|
|
51
|
-
| 'summarize_document'
|
|
52
|
-
| 'extract_key_points'
|
|
53
|
-
| 'identify_risks'
|
|
54
|
-
| 'find_defined_terms'
|
|
55
|
-
| 'analyze_structure'
|
|
56
|
-
|
|
57
|
-
// Formatting assistance actions
|
|
58
|
-
| 'fix_formatting'
|
|
59
|
-
| 'standardize_styles'
|
|
60
|
-
| 'apply_template'
|
|
61
|
-
| 'number_headings'
|
|
62
|
-
| 'create_toc'
|
|
63
|
-
|
|
64
|
-
// Validation assistance actions
|
|
65
|
-
| 'check_compliance'
|
|
66
|
-
| 'validate_citations'
|
|
67
|
-
| 'verify_cross_references'
|
|
68
|
-
| 'check_word_compatibility'
|
|
69
|
-
| 'run_spell_check'
|
|
70
|
-
|
|
71
|
-
// Workflow automation actions
|
|
72
|
-
| 'auto_accept_changes'
|
|
73
|
-
| 'batch_resolve_comments'
|
|
74
|
-
| 'apply_bulk_formatting'
|
|
75
|
-
| 'merge_documents'
|
|
76
|
-
| 'split_document'
|
|
77
|
-
|
|
78
|
-
// Data extraction actions
|
|
79
|
-
| 'extract_metadata'
|
|
80
|
-
| 'list_defined_terms'
|
|
81
|
-
| 'export_comments'
|
|
82
|
-
| 'generate_report'
|
|
83
|
-
| 'create_redline_summary'
|
|
84
|
-
|
|
85
|
-
// External integration actions
|
|
86
|
-
| 'lookup_external_data'
|
|
87
|
-
| 'verify_external_references'
|
|
88
|
-
| 'sync_with_external_system'
|
|
89
|
-
| 'fetch_template'
|
|
90
|
-
| 'send_for_approval'
|
|
91
|
-
|
|
92
|
-
// System modification actions
|
|
93
|
-
| 'modify_permissions'
|
|
94
|
-
| 'change_document_settings'
|
|
95
|
-
| 'alter_preservation_rules'
|
|
96
|
-
| 'bypass_compatibility_checks'
|
|
97
|
-
| 'override_security_policies';
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* AI action support levels
|
|
101
|
-
*/
|
|
102
|
-
export type AIActionSupport =
|
|
103
|
-
| 'allowed' // Action can proceed without confirmation
|
|
104
|
-
| 'confirmation-required' // Action requires explicit user confirmation
|
|
105
|
-
| 'blocked' // Action is blocked by policy
|
|
106
|
-
| 'unsupported'; // Action is not implemented
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Risk levels for AI actions
|
|
110
|
-
*/
|
|
111
|
-
export type AIActionRisk =
|
|
112
|
-
| 'low' // No significant risk to document integrity or workflow
|
|
113
|
-
| 'medium' // Some risk, requires careful handling
|
|
114
|
-
| 'high' // High risk of data loss or workflow disruption
|
|
115
|
-
| 'critical'; // Critical risk, could compromise document or security
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Policy for a specific AI action
|
|
119
|
-
*/
|
|
120
|
-
export interface AIActionPolicy {
|
|
121
|
-
action: AIAction;
|
|
122
|
-
category: AIActionCategory;
|
|
123
|
-
support: AIActionSupport;
|
|
124
|
-
risk: AIActionRisk;
|
|
125
|
-
rationale: string;
|
|
126
|
-
|
|
127
|
-
requirements: {
|
|
128
|
-
userConfirmation: boolean;
|
|
129
|
-
preserveOriginal: boolean;
|
|
130
|
-
validateOutput: boolean;
|
|
131
|
-
auditLog: boolean;
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
constraints: {
|
|
135
|
-
maxScope: 'selection' | 'paragraph' | 'section' | 'document';
|
|
136
|
-
preservedContentRespect: boolean;
|
|
137
|
-
compatibilityValidation: boolean;
|
|
138
|
-
undoSupport: boolean;
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
fallbackBehavior: 'fail-safe' | 'user-prompt' | 'degrade-gracefully' | 'block-entirely';
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Complete AI action policy matrix
|
|
146
|
-
*/
|
|
147
|
-
export const AI_ACTION_POLICIES: AIActionPolicy[] = [
|
|
148
|
-
// Text editing actions - generally allowed with appropriate safeguards
|
|
149
|
-
{
|
|
150
|
-
action: 'edit_selection',
|
|
151
|
-
category: 'text-editing',
|
|
152
|
-
support: 'confirmation-required',
|
|
153
|
-
risk: 'medium',
|
|
154
|
-
rationale: 'Text edits need user review to ensure they maintain legal accuracy and intent.',
|
|
155
|
-
requirements: {
|
|
156
|
-
userConfirmation: true,
|
|
157
|
-
preserveOriginal: true,
|
|
158
|
-
validateOutput: true,
|
|
159
|
-
auditLog: true
|
|
160
|
-
},
|
|
161
|
-
constraints: {
|
|
162
|
-
maxScope: 'selection',
|
|
163
|
-
preservedContentRespect: true,
|
|
164
|
-
compatibilityValidation: true,
|
|
165
|
-
undoSupport: true
|
|
166
|
-
},
|
|
167
|
-
fallbackBehavior: 'user-prompt'
|
|
168
|
-
},
|
|
169
|
-
|
|
170
|
-
{
|
|
171
|
-
action: 'rewrite_paragraph',
|
|
172
|
-
category: 'text-editing',
|
|
173
|
-
support: 'confirmation-required',
|
|
174
|
-
risk: 'medium',
|
|
175
|
-
rationale: 'Paragraph rewrites can significantly change meaning and require legal review.',
|
|
176
|
-
requirements: {
|
|
177
|
-
userConfirmation: true,
|
|
178
|
-
preserveOriginal: true,
|
|
179
|
-
validateOutput: true,
|
|
180
|
-
auditLog: true
|
|
181
|
-
},
|
|
182
|
-
constraints: {
|
|
183
|
-
maxScope: 'paragraph',
|
|
184
|
-
preservedContentRespect: true,
|
|
185
|
-
compatibilityValidation: true,
|
|
186
|
-
undoSupport: true
|
|
187
|
-
},
|
|
188
|
-
fallbackBehavior: 'user-prompt'
|
|
189
|
-
},
|
|
190
|
-
|
|
191
|
-
{
|
|
192
|
-
action: 'fix_grammar',
|
|
193
|
-
category: 'text-editing',
|
|
194
|
-
support: 'allowed',
|
|
195
|
-
risk: 'low',
|
|
196
|
-
rationale: 'Grammar fixes are low-risk mechanical corrections that improve document quality.',
|
|
197
|
-
requirements: {
|
|
198
|
-
userConfirmation: false,
|
|
199
|
-
preserveOriginal: false,
|
|
200
|
-
validateOutput: true,
|
|
201
|
-
auditLog: true
|
|
202
|
-
},
|
|
203
|
-
constraints: {
|
|
204
|
-
maxScope: 'selection',
|
|
205
|
-
preservedContentRespect: true,
|
|
206
|
-
compatibilityValidation: true,
|
|
207
|
-
undoSupport: true
|
|
208
|
-
},
|
|
209
|
-
fallbackBehavior: 'fail-safe'
|
|
210
|
-
},
|
|
211
|
-
|
|
212
|
-
// Content generation actions - require confirmation
|
|
213
|
-
{
|
|
214
|
-
action: 'generate_text',
|
|
215
|
-
category: 'content-generation',
|
|
216
|
-
support: 'confirmation-required',
|
|
217
|
-
risk: 'high',
|
|
218
|
-
rationale: 'Generated text must be reviewed for legal accuracy and appropriateness.',
|
|
219
|
-
requirements: {
|
|
220
|
-
userConfirmation: true,
|
|
221
|
-
preserveOriginal: true,
|
|
222
|
-
validateOutput: true,
|
|
223
|
-
auditLog: true
|
|
224
|
-
},
|
|
225
|
-
constraints: {
|
|
226
|
-
maxScope: 'selection',
|
|
227
|
-
preservedContentRespect: true,
|
|
228
|
-
compatibilityValidation: true,
|
|
229
|
-
undoSupport: true
|
|
230
|
-
},
|
|
231
|
-
fallbackBehavior: 'user-prompt'
|
|
232
|
-
},
|
|
233
|
-
|
|
234
|
-
{
|
|
235
|
-
action: 'create_summary',
|
|
236
|
-
category: 'content-generation',
|
|
237
|
-
support: 'allowed',
|
|
238
|
-
risk: 'low',
|
|
239
|
-
rationale: 'Summaries are analytical outputs that do not modify the source document.',
|
|
240
|
-
requirements: {
|
|
241
|
-
userConfirmation: false,
|
|
242
|
-
preserveOriginal: true,
|
|
243
|
-
validateOutput: false,
|
|
244
|
-
auditLog: true
|
|
245
|
-
},
|
|
246
|
-
constraints: {
|
|
247
|
-
maxScope: 'document',
|
|
248
|
-
preservedContentRespect: true,
|
|
249
|
-
compatibilityValidation: false,
|
|
250
|
-
undoSupport: false
|
|
251
|
-
},
|
|
252
|
-
fallbackBehavior: 'fail-safe'
|
|
253
|
-
},
|
|
254
|
-
|
|
255
|
-
// Review assistance actions - generally allowed
|
|
256
|
-
{
|
|
257
|
-
action: 'suggest_comment_response',
|
|
258
|
-
category: 'review-assistance',
|
|
259
|
-
support: 'allowed',
|
|
260
|
-
risk: 'low',
|
|
261
|
-
rationale: 'Comment response suggestions help workflow efficiency without modifying content.',
|
|
262
|
-
requirements: {
|
|
263
|
-
userConfirmation: false,
|
|
264
|
-
preserveOriginal: true,
|
|
265
|
-
validateOutput: false,
|
|
266
|
-
auditLog: true
|
|
267
|
-
},
|
|
268
|
-
constraints: {
|
|
269
|
-
maxScope: 'selection',
|
|
270
|
-
preservedContentRespect: true,
|
|
271
|
-
compatibilityValidation: false,
|
|
272
|
-
undoSupport: false
|
|
273
|
-
},
|
|
274
|
-
fallbackBehavior: 'fail-safe'
|
|
275
|
-
},
|
|
276
|
-
|
|
277
|
-
{
|
|
278
|
-
action: 'analyze_changes',
|
|
279
|
-
category: 'review-assistance',
|
|
280
|
-
support: 'allowed',
|
|
281
|
-
risk: 'low',
|
|
282
|
-
rationale: 'Change analysis provides insights without modifying document content.',
|
|
283
|
-
requirements: {
|
|
284
|
-
userConfirmation: false,
|
|
285
|
-
preserveOriginal: true,
|
|
286
|
-
validateOutput: false,
|
|
287
|
-
auditLog: true
|
|
288
|
-
},
|
|
289
|
-
constraints: {
|
|
290
|
-
maxScope: 'document',
|
|
291
|
-
preservedContentRespect: true,
|
|
292
|
-
compatibilityValidation: false,
|
|
293
|
-
undoSupport: false
|
|
294
|
-
},
|
|
295
|
-
fallbackBehavior: 'fail-safe'
|
|
296
|
-
},
|
|
297
|
-
|
|
298
|
-
// Document analysis actions - allowed as read-only operations
|
|
299
|
-
{
|
|
300
|
-
action: 'summarize_document',
|
|
301
|
-
category: 'document-analysis',
|
|
302
|
-
support: 'allowed',
|
|
303
|
-
risk: 'low',
|
|
304
|
-
rationale: 'Document summarization is a read-only analysis operation.',
|
|
305
|
-
requirements: {
|
|
306
|
-
userConfirmation: false,
|
|
307
|
-
preserveOriginal: true,
|
|
308
|
-
validateOutput: false,
|
|
309
|
-
auditLog: true
|
|
310
|
-
},
|
|
311
|
-
constraints: {
|
|
312
|
-
maxScope: 'document',
|
|
313
|
-
preservedContentRespect: true,
|
|
314
|
-
compatibilityValidation: false,
|
|
315
|
-
undoSupport: false
|
|
316
|
-
},
|
|
317
|
-
fallbackBehavior: 'fail-safe'
|
|
318
|
-
},
|
|
319
|
-
|
|
320
|
-
{
|
|
321
|
-
action: 'identify_risks',
|
|
322
|
-
category: 'document-analysis',
|
|
323
|
-
support: 'allowed',
|
|
324
|
-
risk: 'low',
|
|
325
|
-
rationale: 'Risk identification helps legal review without modifying content.',
|
|
326
|
-
requirements: {
|
|
327
|
-
userConfirmation: false,
|
|
328
|
-
preserveOriginal: true,
|
|
329
|
-
validateOutput: false,
|
|
330
|
-
auditLog: true
|
|
331
|
-
},
|
|
332
|
-
constraints: {
|
|
333
|
-
maxScope: 'document',
|
|
334
|
-
preservedContentRespect: true,
|
|
335
|
-
compatibilityValidation: false,
|
|
336
|
-
undoSupport: false
|
|
337
|
-
},
|
|
338
|
-
fallbackBehavior: 'fail-safe'
|
|
339
|
-
},
|
|
340
|
-
|
|
341
|
-
// Formatting assistance - confirmation required for changes
|
|
342
|
-
{
|
|
343
|
-
action: 'fix_formatting',
|
|
344
|
-
category: 'formatting-assistance',
|
|
345
|
-
support: 'confirmation-required',
|
|
346
|
-
risk: 'medium',
|
|
347
|
-
rationale: 'Formatting changes can affect document presentation and legal meaning.',
|
|
348
|
-
requirements: {
|
|
349
|
-
userConfirmation: true,
|
|
350
|
-
preserveOriginal: true,
|
|
351
|
-
validateOutput: true,
|
|
352
|
-
auditLog: true
|
|
353
|
-
},
|
|
354
|
-
constraints: {
|
|
355
|
-
maxScope: 'document',
|
|
356
|
-
preservedContentRespect: true,
|
|
357
|
-
compatibilityValidation: true,
|
|
358
|
-
undoSupport: true
|
|
359
|
-
},
|
|
360
|
-
fallbackBehavior: 'user-prompt'
|
|
361
|
-
},
|
|
362
|
-
|
|
363
|
-
// Validation assistance - allowed as analysis
|
|
364
|
-
{
|
|
365
|
-
action: 'check_compliance',
|
|
366
|
-
category: 'validation-assistance',
|
|
367
|
-
support: 'allowed',
|
|
368
|
-
risk: 'low',
|
|
369
|
-
rationale: 'Compliance checking provides analytical insights without modification.',
|
|
370
|
-
requirements: {
|
|
371
|
-
userConfirmation: false,
|
|
372
|
-
preserveOriginal: true,
|
|
373
|
-
validateOutput: false,
|
|
374
|
-
auditLog: true
|
|
375
|
-
},
|
|
376
|
-
constraints: {
|
|
377
|
-
maxScope: 'document',
|
|
378
|
-
preservedContentRespect: true,
|
|
379
|
-
compatibilityValidation: false,
|
|
380
|
-
undoSupport: false
|
|
381
|
-
},
|
|
382
|
-
fallbackBehavior: 'fail-safe'
|
|
383
|
-
},
|
|
384
|
-
|
|
385
|
-
{
|
|
386
|
-
action: 'check_word_compatibility',
|
|
387
|
-
category: 'validation-assistance',
|
|
388
|
-
support: 'allowed',
|
|
389
|
-
risk: 'low',
|
|
390
|
-
rationale: 'Compatibility checking aligns with the editor\'s Word-safe design goals.',
|
|
391
|
-
requirements: {
|
|
392
|
-
userConfirmation: false,
|
|
393
|
-
preserveOriginal: true,
|
|
394
|
-
validateOutput: false,
|
|
395
|
-
auditLog: true
|
|
396
|
-
},
|
|
397
|
-
constraints: {
|
|
398
|
-
maxScope: 'document',
|
|
399
|
-
preservedContentRespect: true,
|
|
400
|
-
compatibilityValidation: false,
|
|
401
|
-
undoSupport: false
|
|
402
|
-
},
|
|
403
|
-
fallbackBehavior: 'fail-safe'
|
|
404
|
-
},
|
|
405
|
-
|
|
406
|
-
// Workflow automation - blocked or requires confirmation
|
|
407
|
-
{
|
|
408
|
-
action: 'auto_accept_changes',
|
|
409
|
-
category: 'workflow-automation',
|
|
410
|
-
support: 'blocked',
|
|
411
|
-
risk: 'critical',
|
|
412
|
-
rationale: 'Automatic change acceptance bypasses necessary legal review processes.',
|
|
413
|
-
requirements: {
|
|
414
|
-
userConfirmation: false,
|
|
415
|
-
preserveOriginal: false,
|
|
416
|
-
validateOutput: false,
|
|
417
|
-
auditLog: true
|
|
418
|
-
},
|
|
419
|
-
constraints: {
|
|
420
|
-
maxScope: 'document',
|
|
421
|
-
preservedContentRespect: false,
|
|
422
|
-
compatibilityValidation: false,
|
|
423
|
-
undoSupport: false
|
|
424
|
-
},
|
|
425
|
-
fallbackBehavior: 'block-entirely'
|
|
426
|
-
},
|
|
427
|
-
|
|
428
|
-
{
|
|
429
|
-
action: 'batch_resolve_comments',
|
|
430
|
-
category: 'workflow-automation',
|
|
431
|
-
support: 'confirmation-required',
|
|
432
|
-
risk: 'high',
|
|
433
|
-
rationale: 'Batch comment resolution needs review to ensure all issues are properly addressed.',
|
|
434
|
-
requirements: {
|
|
435
|
-
userConfirmation: true,
|
|
436
|
-
preserveOriginal: true,
|
|
437
|
-
validateOutput: true,
|
|
438
|
-
auditLog: true
|
|
439
|
-
},
|
|
440
|
-
constraints: {
|
|
441
|
-
maxScope: 'document',
|
|
442
|
-
preservedContentRespect: true,
|
|
443
|
-
compatibilityValidation: true,
|
|
444
|
-
undoSupport: true
|
|
445
|
-
},
|
|
446
|
-
fallbackBehavior: 'user-prompt'
|
|
447
|
-
},
|
|
448
|
-
|
|
449
|
-
// External integration - blocked for security
|
|
450
|
-
{
|
|
451
|
-
action: 'lookup_external_data',
|
|
452
|
-
category: 'external-integration',
|
|
453
|
-
support: 'blocked',
|
|
454
|
-
risk: 'critical',
|
|
455
|
-
rationale: 'External data access poses security and privacy risks in legal workflows.',
|
|
456
|
-
requirements: {
|
|
457
|
-
userConfirmation: false,
|
|
458
|
-
preserveOriginal: false,
|
|
459
|
-
validateOutput: false,
|
|
460
|
-
auditLog: true
|
|
461
|
-
},
|
|
462
|
-
constraints: {
|
|
463
|
-
maxScope: 'document',
|
|
464
|
-
preservedContentRespect: false,
|
|
465
|
-
compatibilityValidation: false,
|
|
466
|
-
undoSupport: false
|
|
467
|
-
},
|
|
468
|
-
fallbackBehavior: 'block-entirely'
|
|
469
|
-
},
|
|
470
|
-
|
|
471
|
-
{
|
|
472
|
-
action: 'sync_with_external_system',
|
|
473
|
-
category: 'external-integration',
|
|
474
|
-
support: 'blocked',
|
|
475
|
-
risk: 'critical',
|
|
476
|
-
rationale: 'External system integration creates security vulnerabilities and data integrity risks.',
|
|
477
|
-
requirements: {
|
|
478
|
-
userConfirmation: false,
|
|
479
|
-
preserveOriginal: false,
|
|
480
|
-
validateOutput: false,
|
|
481
|
-
auditLog: true
|
|
482
|
-
},
|
|
483
|
-
constraints: {
|
|
484
|
-
maxScope: 'document',
|
|
485
|
-
preservedContentRespect: false,
|
|
486
|
-
compatibilityValidation: false,
|
|
487
|
-
undoSupport: false
|
|
488
|
-
},
|
|
489
|
-
fallbackBehavior: 'block-entirely'
|
|
490
|
-
},
|
|
491
|
-
|
|
492
|
-
// System modification - all blocked
|
|
493
|
-
{
|
|
494
|
-
action: 'modify_permissions',
|
|
495
|
-
category: 'system-modification',
|
|
496
|
-
support: 'blocked',
|
|
497
|
-
risk: 'critical',
|
|
498
|
-
rationale: 'Permission modifications compromise security and access control.',
|
|
499
|
-
requirements: {
|
|
500
|
-
userConfirmation: false,
|
|
501
|
-
preserveOriginal: false,
|
|
502
|
-
validateOutput: false,
|
|
503
|
-
auditLog: true
|
|
504
|
-
},
|
|
505
|
-
constraints: {
|
|
506
|
-
maxScope: 'document',
|
|
507
|
-
preservedContentRespect: false,
|
|
508
|
-
compatibilityValidation: false,
|
|
509
|
-
undoSupport: false
|
|
510
|
-
},
|
|
511
|
-
fallbackBehavior: 'block-entirely'
|
|
512
|
-
},
|
|
513
|
-
|
|
514
|
-
{
|
|
515
|
-
action: 'bypass_compatibility_checks',
|
|
516
|
-
category: 'system-modification',
|
|
517
|
-
support: 'blocked',
|
|
518
|
-
risk: 'critical',
|
|
519
|
-
rationale: 'Compatibility checks are essential for Word-safe round-trip behavior.',
|
|
520
|
-
requirements: {
|
|
521
|
-
userConfirmation: false,
|
|
522
|
-
preserveOriginal: false,
|
|
523
|
-
validateOutput: false,
|
|
524
|
-
auditLog: true
|
|
525
|
-
},
|
|
526
|
-
constraints: {
|
|
527
|
-
maxScope: 'document',
|
|
528
|
-
preservedContentRespect: false,
|
|
529
|
-
compatibilityValidation: false,
|
|
530
|
-
undoSupport: false
|
|
531
|
-
},
|
|
532
|
-
fallbackBehavior: 'block-entirely'
|
|
533
|
-
}
|
|
534
|
-
];
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* Get policy for a specific AI action
|
|
538
|
-
*/
|
|
539
|
-
export function getAIActionPolicy(action: AIAction): AIActionPolicy {
|
|
540
|
-
const policy = AI_ACTION_POLICIES.find(p => p.action === action);
|
|
541
|
-
if (!policy) {
|
|
542
|
-
// Default policy for unknown actions
|
|
543
|
-
return {
|
|
544
|
-
action,
|
|
545
|
-
category: 'system-modification',
|
|
546
|
-
support: 'unsupported',
|
|
547
|
-
risk: 'critical',
|
|
548
|
-
rationale: 'Unknown action - blocked by default for security.',
|
|
549
|
-
requirements: {
|
|
550
|
-
userConfirmation: false,
|
|
551
|
-
preserveOriginal: false,
|
|
552
|
-
validateOutput: false,
|
|
553
|
-
auditLog: true
|
|
554
|
-
},
|
|
555
|
-
constraints: {
|
|
556
|
-
maxScope: 'selection',
|
|
557
|
-
preservedContentRespect: true,
|
|
558
|
-
compatibilityValidation: true,
|
|
559
|
-
undoSupport: false
|
|
560
|
-
},
|
|
561
|
-
fallbackBehavior: 'block-entirely'
|
|
562
|
-
};
|
|
563
|
-
}
|
|
564
|
-
return policy;
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
/**
|
|
568
|
-
* Check if an AI action is allowed to proceed
|
|
569
|
-
*/
|
|
570
|
-
export function isAIActionAllowed(action: AIAction): boolean {
|
|
571
|
-
const policy = getAIActionPolicy(action);
|
|
572
|
-
return policy.support === 'allowed' || policy.support === 'confirmation-required';
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
/**
|
|
576
|
-
* Check if an AI action requires user confirmation
|
|
577
|
-
*/
|
|
578
|
-
export function requiresConfirmation(action: AIAction): boolean {
|
|
579
|
-
const policy = getAIActionPolicy(action);
|
|
580
|
-
return policy.support === 'confirmation-required' || policy.requirements.userConfirmation;
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
/**
|
|
584
|
-
* Get actions by support level
|
|
585
|
-
*/
|
|
586
|
-
export function getActionsBySupport(support: AIActionSupport): AIAction[] {
|
|
587
|
-
return AI_ACTION_POLICIES
|
|
588
|
-
.filter(policy => policy.support === support)
|
|
589
|
-
.map(policy => policy.action);
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
/**
|
|
593
|
-
* Get actions by risk level
|
|
594
|
-
*/
|
|
595
|
-
export function getActionsByRisk(risk: AIActionRisk): AIAction[] {
|
|
596
|
-
return AI_ACTION_POLICIES
|
|
597
|
-
.filter(policy => policy.risk === risk)
|
|
598
|
-
.map(policy => policy.action);
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/**
|
|
602
|
-
* Generate AI capability summary
|
|
603
|
-
*/
|
|
604
|
-
export interface AICapabilitySummary {
|
|
605
|
-
totalActions: number;
|
|
606
|
-
allowedActions: number;
|
|
607
|
-
confirmationRequiredActions: number;
|
|
608
|
-
blockedActions: number;
|
|
609
|
-
unsupportedActions: number;
|
|
610
|
-
|
|
611
|
-
lowRiskActions: number;
|
|
612
|
-
mediumRiskActions: number;
|
|
613
|
-
highRiskActions: number;
|
|
614
|
-
criticalRiskActions: number;
|
|
615
|
-
|
|
616
|
-
categoryCounts: Record<AIActionCategory, number>;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
/**
|
|
620
|
-
* Generate summary of AI capabilities and restrictions
|
|
621
|
-
*/
|
|
622
|
-
export function generateAICapabilitySummary(): AICapabilitySummary {
|
|
623
|
-
const policies = AI_ACTION_POLICIES;
|
|
624
|
-
|
|
625
|
-
const categoryCounts: Record<AIActionCategory, number> = {
|
|
626
|
-
'text-editing': 0,
|
|
627
|
-
'content-generation': 0,
|
|
628
|
-
'review-assistance': 0,
|
|
629
|
-
'document-analysis': 0,
|
|
630
|
-
'formatting-assistance': 0,
|
|
631
|
-
'validation-assistance': 0,
|
|
632
|
-
'workflow-automation': 0,
|
|
633
|
-
'data-extraction': 0,
|
|
634
|
-
'external-integration': 0,
|
|
635
|
-
'system-modification': 0
|
|
636
|
-
};
|
|
637
|
-
|
|
638
|
-
policies.forEach(policy => {
|
|
639
|
-
categoryCounts[policy.category]++;
|
|
640
|
-
});
|
|
641
|
-
|
|
642
|
-
return {
|
|
643
|
-
totalActions: policies.length,
|
|
644
|
-
allowedActions: policies.filter(p => p.support === 'allowed').length,
|
|
645
|
-
confirmationRequiredActions: policies.filter(p => p.support === 'confirmation-required').length,
|
|
646
|
-
blockedActions: policies.filter(p => p.support === 'blocked').length,
|
|
647
|
-
unsupportedActions: policies.filter(p => p.support === 'unsupported').length,
|
|
648
|
-
|
|
649
|
-
lowRiskActions: policies.filter(p => p.risk === 'low').length,
|
|
650
|
-
mediumRiskActions: policies.filter(p => p.risk === 'medium').length,
|
|
651
|
-
highRiskActions: policies.filter(p => p.risk === 'high').length,
|
|
652
|
-
criticalRiskActions: policies.filter(p => p.risk === 'critical').length,
|
|
653
|
-
|
|
654
|
-
categoryCounts
|
|
655
|
-
};
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
/**
|
|
659
|
-
* Context required for AI action execution
|
|
660
|
-
*/
|
|
661
|
-
export interface AIActionContext {
|
|
662
|
-
documentId: string;
|
|
663
|
-
userId: string;
|
|
664
|
-
selection?: {
|
|
665
|
-
from: number;
|
|
666
|
-
to: number;
|
|
667
|
-
text: string;
|
|
668
|
-
};
|
|
669
|
-
preservedContent: {
|
|
670
|
-
hasPreservedElements: boolean;
|
|
671
|
-
preservedTypes: string[];
|
|
672
|
-
};
|
|
673
|
-
compatibility: {
|
|
674
|
-
hasWarnings: boolean;
|
|
675
|
-
blockingIssues: string[];
|
|
676
|
-
};
|
|
677
|
-
permissions: {
|
|
678
|
-
canEdit: boolean;
|
|
679
|
-
canExport: boolean;
|
|
680
|
-
isReadOnly: boolean;
|
|
681
|
-
};
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
/**
|
|
685
|
-
* Validate AI action against context and policy
|
|
686
|
-
*/
|
|
687
|
-
export interface AIActionValidationResult {
|
|
688
|
-
allowed: boolean;
|
|
689
|
-
requiresConfirmation: boolean;
|
|
690
|
-
blockingReasons: string[];
|
|
691
|
-
warnings: string[];
|
|
692
|
-
contextConstraints: {
|
|
693
|
-
maxScope: 'selection' | 'paragraph' | 'section' | 'document';
|
|
694
|
-
mustPreserveContent: boolean;
|
|
695
|
-
requiresCompatibilityValidation: boolean;
|
|
696
|
-
};
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
/**
|
|
700
|
-
* Validate an AI action against the current context
|
|
701
|
-
*/
|
|
702
|
-
export function validateAIAction(
|
|
703
|
-
action: AIAction,
|
|
704
|
-
context: AIActionContext
|
|
705
|
-
): AIActionValidationResult {
|
|
706
|
-
const policy = getAIActionPolicy(action);
|
|
707
|
-
const result: AIActionValidationResult = {
|
|
708
|
-
allowed: true,
|
|
709
|
-
requiresConfirmation: policy.requirements.userConfirmation,
|
|
710
|
-
blockingReasons: [],
|
|
711
|
-
warnings: [],
|
|
712
|
-
contextConstraints: {
|
|
713
|
-
maxScope: policy.constraints.maxScope,
|
|
714
|
-
mustPreserveContent: policy.constraints.preservedContentRespect,
|
|
715
|
-
requiresCompatibilityValidation: policy.constraints.compatibilityValidation
|
|
716
|
-
}
|
|
717
|
-
};
|
|
718
|
-
|
|
719
|
-
// Check if action is blocked by policy
|
|
720
|
-
if (policy.support === 'blocked' || policy.support === 'unsupported') {
|
|
721
|
-
result.allowed = false;
|
|
722
|
-
result.blockingReasons.push(policy.rationale);
|
|
723
|
-
return result;
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
// Check read-only permissions
|
|
727
|
-
if (context.permissions.isReadOnly &&
|
|
728
|
-
(policy.category === 'text-editing' ||
|
|
729
|
-
policy.category === 'content-generation' ||
|
|
730
|
-
policy.category === 'formatting-assistance')) {
|
|
731
|
-
result.allowed = false;
|
|
732
|
-
result.blockingReasons.push('Document is in read-only mode');
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
// Check edit permissions for content-modifying actions
|
|
736
|
-
if (!context.permissions.canEdit &&
|
|
737
|
-
(policy.category === 'text-editing' ||
|
|
738
|
-
policy.category === 'content-generation' ||
|
|
739
|
-
policy.category === 'workflow-automation')) {
|
|
740
|
-
result.allowed = false;
|
|
741
|
-
result.blockingReasons.push('User does not have edit permissions');
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
// Check compatibility constraints
|
|
745
|
-
if (policy.constraints.compatibilityValidation &&
|
|
746
|
-
context.compatibility.blockingIssues.length > 0) {
|
|
747
|
-
result.allowed = false;
|
|
748
|
-
result.blockingReasons.push('Document has blocking compatibility issues');
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
// Check preserved content constraints
|
|
752
|
-
if (policy.constraints.preservedContentRespect &&
|
|
753
|
-
context.preservedContent.hasPreservedElements) {
|
|
754
|
-
result.warnings.push('Document contains preserved content that cannot be modified');
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
// Validate scope constraints
|
|
758
|
-
if (policy.constraints.maxScope === 'selection' && !context.selection) {
|
|
759
|
-
result.allowed = false;
|
|
760
|
-
result.blockingReasons.push('Action requires text selection');
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
return result;
|
|
764
|
-
}
|