@ecsplico/editor 0.0.0-stage → 1.0.0
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/LICENSE +21 -0
- package/README.md +233 -2
- package/dist/code/CodeSurface.d.ts +24 -0
- package/dist/code/CodeSurface.js +57 -0
- package/dist/code/CodeSurface.js.map +1 -0
- package/dist/code/CodeSurface.vue.d.ts +29 -0
- package/dist/code/CodeSurface2.js +75 -0
- package/dist/code/CodeSurface2.js.map +1 -0
- package/dist/code/chrome-theme.js +76 -0
- package/dist/code/chrome-theme.js.map +1 -0
- package/dist/code/compartments.js +19 -0
- package/dist/code/compartments.js.map +1 -0
- package/dist/code/editor-factory.d.ts +41 -0
- package/dist/code/editor-factory.js +126 -0
- package/dist/code/editor-factory.js.map +1 -0
- package/dist/code/format-json.d.ts +27 -0
- package/dist/code/format-json.js +94 -0
- package/dist/code/format-json.js.map +1 -0
- package/dist/code/highlight-style.js +118 -0
- package/dist/code/highlight-style.js.map +1 -0
- package/dist/code/index.d.ts +6 -0
- package/dist/code/index.js +6 -0
- package/dist/code/jsonl-language.d.ts +6 -0
- package/dist/code/jsonl-language.js +33 -0
- package/dist/code/jsonl-language.js.map +1 -0
- package/dist/code/kind.d.ts +15 -0
- package/dist/code/kind.js +142 -0
- package/dist/code/kind.js.map +1 -0
- package/dist/code/lang-registry.d.ts +31 -0
- package/dist/code/lang-registry.js +54 -0
- package/dist/code/lang-registry.js.map +1 -0
- package/dist/code/react.d.ts +2 -0
- package/dist/code/react.js +1 -0
- package/dist/code/vue.d.ts +2 -0
- package/dist/code/vue.js +1 -0
- package/dist/core/abilities.d.ts +32 -0
- package/dist/core/abilities.js +160 -0
- package/dist/core/abilities.js.map +1 -0
- package/dist/core/block-convert.d.ts +59 -0
- package/dist/core/block-convert.js +164 -0
- package/dist/core/block-convert.js.map +1 -0
- package/dist/core/block-drag.d.ts +12 -0
- package/dist/core/block-drag.js +62 -0
- package/dist/core/block-drag.js.map +1 -0
- package/dist/core/block-flash.d.ts +19 -0
- package/dist/core/block-flash.js +66 -0
- package/dist/core/block-flash.js.map +1 -0
- package/dist/core/context.d.ts +63 -0
- package/dist/core/context.js +108 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/convert.d.ts +96 -0
- package/dist/core/convert.js +241 -0
- package/dist/core/convert.js.map +1 -0
- package/dist/core/core-feature.d.ts +17 -0
- package/dist/core/core-feature.js +100 -0
- package/dist/core/core-feature.js.map +1 -0
- package/dist/core/define-editor.d.ts +23 -0
- package/dist/core/define-editor.js +110 -0
- package/dist/core/define-editor.js.map +1 -0
- package/dist/core/doc-anchors.d.ts +67 -0
- package/dist/core/doc-anchors.js +112 -0
- package/dist/core/doc-anchors.js.map +1 -0
- package/dist/core/document-markdown.d.ts +13 -0
- package/dist/core/document-markdown.js +31 -0
- package/dist/core/document-markdown.js.map +1 -0
- package/dist/core/download.d.ts +5 -0
- package/dist/core/download.js +16 -0
- package/dist/core/download.js.map +1 -0
- package/dist/core/editor-ui.d.ts +45 -0
- package/dist/core/editor-ui.js +38 -0
- package/dist/core/editor-ui.js.map +1 -0
- package/dist/core/extension-points.d.ts +64 -0
- package/dist/core/feature-context.d.ts +32 -0
- package/dist/core/feature-context.js +46 -0
- package/dist/core/feature-context.js.map +1 -0
- package/dist/core/feature.d.ts +234 -0
- package/dist/core/feature.js +13 -0
- package/dist/core/feature.js.map +1 -0
- package/dist/core/fences.d.ts +16 -0
- package/dist/core/fences.js +105 -0
- package/dist/core/fences.js.map +1 -0
- package/dist/core/fetch-error.d.ts +5 -0
- package/dist/core/fetch-error.js +11 -0
- package/dist/core/fetch-error.js.map +1 -0
- package/dist/core/index.d.ts +28 -0
- package/dist/core/index.js +27 -0
- package/dist/core/metadata-types.d.ts +27 -0
- package/dist/core/metadata-types.js +10 -0
- package/dist/core/metadata-types.js.map +1 -0
- package/dist/core/metadata.d.ts +39 -0
- package/dist/core/metadata.js +76 -0
- package/dist/core/metadata.js.map +1 -0
- package/dist/core/notify.d.ts +31 -0
- package/dist/core/notify.js +7 -0
- package/dist/core/notify.js.map +1 -0
- package/dist/core/pipeline.d.ts +52 -0
- package/dist/core/pipeline.js +78 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/schema/abilities.d.ts +55 -0
- package/dist/core/schema/abilities.js +113 -0
- package/dist/core/schema/abilities.js.map +1 -0
- package/dist/core/schema/block-ids.d.ts +29 -0
- package/dist/core/schema/block-ids.js +134 -0
- package/dist/core/schema/block-ids.js.map +1 -0
- package/dist/core/schema/hex-color.d.ts +5 -0
- package/dist/core/schema/hex-color.js +7 -0
- package/dist/core/schema/hex-color.js.map +1 -0
- package/dist/core/schema/index.d.ts +21 -0
- package/dist/core/schema/index.js +33 -0
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/schema/mark-flags.d.ts +12 -0
- package/dist/core/schema/node-flags.d.ts +23 -0
- package/dist/core/schema/node-flags.js +34 -0
- package/dist/core/schema/node-flags.js.map +1 -0
- package/dist/core/schema/opaque-fence.d.ts +11 -0
- package/dist/core/schema/opaque-fence.js +57 -0
- package/dist/core/schema/opaque-fence.js.map +1 -0
- package/dist/core/schema/strike.d.ts +4 -0
- package/dist/core/schema/strike.js +9 -0
- package/dist/core/schema/strike.js.map +1 -0
- package/dist/core/selection-range.d.ts +13 -0
- package/dist/core/selection-range.js +28 -0
- package/dist/core/selection-range.js.map +1 -0
- package/dist/core/slash.d.ts +24 -0
- package/dist/core/slash.js +60 -0
- package/dist/core/slash.js.map +1 -0
- package/dist/core/store.d.ts +22 -0
- package/dist/core/store.js +61 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/suggestion-popup.d.ts +63 -0
- package/dist/core/suggestion-popup.js +57 -0
- package/dist/core/suggestion-popup.js.map +1 -0
- package/dist/core/tag-name.js +11 -0
- package/dist/core/tag-name.js.map +1 -0
- package/dist/core/toolbar-items.d.ts +10 -0
- package/dist/core/toolbar-items.js +206 -0
- package/dist/core/toolbar-items.js.map +1 -0
- package/dist/core/toolbar.d.ts +74 -0
- package/dist/core/toolbar.js +45 -0
- package/dist/core/toolbar.js.map +1 -0
- package/dist/document/DocumentSurface.d.ts +38 -0
- package/dist/document/DocumentSurface.js +44 -0
- package/dist/document/DocumentSurface.js.map +1 -0
- package/dist/document/DocumentSurface.vue.d.ts +56 -0
- package/dist/document/DocumentSurface2.js +71 -0
- package/dist/document/DocumentSurface2.js.map +1 -0
- package/dist/document/react.d.ts +2 -0
- package/dist/document/react.js +1 -0
- package/dist/document/vue.d.ts +2 -0
- package/dist/document/vue.js +1 -0
- package/dist/features/ai/agent-op-review.d.ts +69 -0
- package/dist/features/ai/agent-op-review.js +182 -0
- package/dist/features/ai/agent-op-review.js.map +1 -0
- package/dist/features/ai/agent-ops.d.ts +15 -0
- package/dist/features/ai/agent-ops.js +228 -0
- package/dist/features/ai/agent-ops.js.map +1 -0
- package/dist/features/ai/ai-apply.d.ts +76 -0
- package/dist/features/ai/ai-apply.js +193 -0
- package/dist/features/ai/ai-apply.js.map +1 -0
- package/dist/features/ai/ai-menu.d.ts +38 -0
- package/dist/features/ai/ai-menu.js +20 -0
- package/dist/features/ai/ai-menu.js.map +1 -0
- package/dist/features/ai/ai-review.d.ts +136 -0
- package/dist/features/ai/ai-review.js +543 -0
- package/dist/features/ai/ai-review.js.map +1 -0
- package/dist/features/ai/ai-selection-highlight.d.ts +21 -0
- package/dist/features/ai/ai-selection-highlight.js +44 -0
- package/dist/features/ai/ai-selection-highlight.js.map +1 -0
- package/dist/features/ai/ai-sse.d.ts +28 -0
- package/dist/features/ai/ai-sse.js +82 -0
- package/dist/features/ai/ai-sse.js.map +1 -0
- package/dist/features/ai/assistant.d.ts +53 -0
- package/dist/features/ai/assistant.js +82 -0
- package/dist/features/ai/assistant.js.map +1 -0
- package/dist/features/ai/block-actions.d.ts +20 -0
- package/dist/features/ai/block-actions.js +55 -0
- package/dist/features/ai/block-actions.js.map +1 -0
- package/dist/features/ai/components/AiReviewBar.js +145 -0
- package/dist/features/ai/components/AiReviewBar.js.map +1 -0
- package/dist/features/ai/components/AiReviewBar.vue.d.ts +15 -0
- package/dist/features/ai/components/AiSelectionMenu.js +519 -0
- package/dist/features/ai/components/AiSelectionMenu.js.map +1 -0
- package/dist/features/ai/components/AiSelectionMenu.vue.d.ts +17 -0
- package/dist/features/ai/components/AiSidebar.js +378 -0
- package/dist/features/ai/components/AiSidebar.js.map +1 -0
- package/dist/features/ai/components/AiSidebar.vue.d.ts +26 -0
- package/dist/features/ai/components/DocumentChatAnswer.js +67 -0
- package/dist/features/ai/components/DocumentChatAnswer.js.map +1 -0
- package/dist/features/ai/components/DocumentChatAnswer.vue.d.ts +13 -0
- package/dist/features/ai/components/DocumentChatOps.js +113 -0
- package/dist/features/ai/components/DocumentChatOps.js.map +1 -0
- package/dist/features/ai/components/DocumentChatOps.vue.d.ts +27 -0
- package/dist/features/ai/components/ModelQuickSwitch.js +84 -0
- package/dist/features/ai/components/ModelQuickSwitch.js.map +1 -0
- package/dist/features/ai/components/ModelQuickSwitch.vue.d.ts +23 -0
- package/dist/features/ai/components/SettingsAiTab.js +88 -0
- package/dist/features/ai/components/SettingsAiTab.js.map +1 -0
- package/dist/features/ai/components/SettingsAiTab.vue.d.ts +6 -0
- package/dist/features/ai/components/SettingsModelProfiles.js +260 -0
- package/dist/features/ai/components/SettingsModelProfiles.js.map +1 -0
- package/dist/features/ai/components/SettingsModelProfiles.vue.d.ts +6 -0
- package/dist/features/ai/document-chat-model.d.ts +88 -0
- package/dist/features/ai/document-chat-model.js +190 -0
- package/dist/features/ai/document-chat-model.js.map +1 -0
- package/dist/features/ai/document-chat.d.ts +17 -0
- package/dist/features/ai/document-chat.js +112 -0
- package/dist/features/ai/document-chat.js.map +1 -0
- package/dist/features/ai/feature.d.ts +25 -0
- package/dist/features/ai/feature.js +89 -0
- package/dist/features/ai/feature.js.map +1 -0
- package/dist/features/ai/ghost-autocomplete.d.ts +47 -0
- package/dist/features/ai/ghost-autocomplete.js +204 -0
- package/dist/features/ai/ghost-autocomplete.js.map +1 -0
- package/dist/features/ai/index.d.ts +24 -0
- package/dist/features/ai/index.js +23 -0
- package/dist/features/ai/model-profiles.d.ts +36 -0
- package/dist/features/ai/model-profiles.js +111 -0
- package/dist/features/ai/model-profiles.js.map +1 -0
- package/dist/features/ai/preview-extensions.js +14 -0
- package/dist/features/ai/preview-extensions.js.map +1 -0
- package/dist/features/ai/protocol/agent-ops.d.ts +120 -0
- package/dist/features/ai/protocol/agent-ops.js +298 -0
- package/dist/features/ai/protocol/agent-ops.js.map +1 -0
- package/dist/features/ai/protocol/chat.d.ts +57 -0
- package/dist/features/ai/protocol/chat.js +146 -0
- package/dist/features/ai/protocol/chat.js.map +1 -0
- package/dist/features/ai/protocol/complete.d.ts +21 -0
- package/dist/features/ai/protocol/complete.js +81 -0
- package/dist/features/ai/protocol/complete.js.map +1 -0
- package/dist/features/ai/protocol/index.d.ts +7 -0
- package/dist/features/ai/protocol/index.js +7 -0
- package/dist/features/ai/protocol/models.d.ts +48 -0
- package/dist/features/ai/protocol/models.js +41 -0
- package/dist/features/ai/protocol/models.js.map +1 -0
- package/dist/features/ai/protocol/schemas.d.ts +36 -0
- package/dist/features/ai/protocol/schemas.js +40 -0
- package/dist/features/ai/protocol/schemas.js.map +1 -0
- package/dist/features/ai/protocol/tasks.d.ts +107 -0
- package/dist/features/ai/protocol/tasks.js +227 -0
- package/dist/features/ai/protocol/tasks.js.map +1 -0
- package/dist/features/ai/rate-limit.d.ts +9 -0
- package/dist/features/ai/rate-limit.js +20 -0
- package/dist/features/ai/rate-limit.js.map +1 -0
- package/dist/features/ai/react/AiReviewBar.d.ts +12 -0
- package/dist/features/ai/react/AiReviewBar.js +156 -0
- package/dist/features/ai/react/AiReviewBar.js.map +1 -0
- package/dist/features/ai/react/AiSelectionMenu.d.ts +14 -0
- package/dist/features/ai/react/AiSelectionMenu.js +513 -0
- package/dist/features/ai/react/AiSelectionMenu.js.map +1 -0
- package/dist/features/ai/react/AiSidebar.d.ts +19 -0
- package/dist/features/ai/react/AiSidebar.js +339 -0
- package/dist/features/ai/react/AiSidebar.js.map +1 -0
- package/dist/features/ai/react/DocumentChatAnswer.d.ts +10 -0
- package/dist/features/ai/react/DocumentChatAnswer.js +70 -0
- package/dist/features/ai/react/DocumentChatAnswer.js.map +1 -0
- package/dist/features/ai/react/DocumentChatOps.d.ts +19 -0
- package/dist/features/ai/react/DocumentChatOps.js +111 -0
- package/dist/features/ai/react/DocumentChatOps.js.map +1 -0
- package/dist/features/ai/react/ModelQuickSwitch.d.ts +19 -0
- package/dist/features/ai/react/ModelQuickSwitch.js +89 -0
- package/dist/features/ai/react/ModelQuickSwitch.js.map +1 -0
- package/dist/features/ai/react/SettingsAiTab.d.ts +5 -0
- package/dist/features/ai/react/SettingsAiTab.js +103 -0
- package/dist/features/ai/react/SettingsAiTab.js.map +1 -0
- package/dist/features/ai/react/SettingsModelProfiles.d.ts +8 -0
- package/dist/features/ai/react/SettingsModelProfiles.js +318 -0
- package/dist/features/ai/react/SettingsModelProfiles.js.map +1 -0
- package/dist/features/ai/react/use-ai-assistant.d.ts +22 -0
- package/dist/features/ai/react/use-ai-assistant.js +36 -0
- package/dist/features/ai/react/use-ai-assistant.js.map +1 -0
- package/dist/features/ai/react/use-document-chat.d.ts +32 -0
- package/dist/features/ai/react/use-document-chat.js +43 -0
- package/dist/features/ai/react/use-document-chat.js.map +1 -0
- package/dist/features/ai/react/use-model-profiles.d.ts +20 -0
- package/dist/features/ai/react/use-model-profiles.js +33 -0
- package/dist/features/ai/react/use-model-profiles.js.map +1 -0
- package/dist/features/ai/react.d.ts +23 -0
- package/dist/features/ai/react.js +28 -0
- package/dist/features/ai/react.js.map +1 -0
- package/dist/features/ai/sidebar-flow.d.ts +61 -0
- package/dist/features/ai/sidebar-flow.js +125 -0
- package/dist/features/ai/sidebar-flow.js.map +1 -0
- package/dist/features/ai/use-ai-assistant.d.ts +22 -0
- package/dist/features/ai/use-ai-assistant.js +39 -0
- package/dist/features/ai/use-ai-assistant.js.map +1 -0
- package/dist/features/ai/use-document-chat.d.ts +33 -0
- package/dist/features/ai/use-document-chat.js +45 -0
- package/dist/features/ai/use-document-chat.js.map +1 -0
- package/dist/features/ai/use-model-profiles.d.ts +23 -0
- package/dist/features/ai/use-model-profiles.js +50 -0
- package/dist/features/ai/use-model-profiles.js.map +1 -0
- package/dist/features/ai/vue.d.ts +21 -0
- package/dist/features/ai/vue.js +28 -0
- package/dist/features/ai/vue.js.map +1 -0
- package/dist/features/authors/attribution.d.ts +36 -0
- package/dist/features/authors/attribution.js +94 -0
- package/dist/features/authors/attribution.js.map +1 -0
- package/dist/features/authors/author-color-styles.d.ts +12 -0
- package/dist/features/authors/author-color-styles.js +24 -0
- package/dist/features/authors/author-color-styles.js.map +1 -0
- package/dist/features/authors/components/AuthorColorsButton.js +50 -0
- package/dist/features/authors/components/AuthorColorsButton.js.map +1 -0
- package/dist/features/authors/components/AuthorColorsButton.vue.d.ts +11 -0
- package/dist/features/authors/components/AuthorColorsPanel.js +72 -0
- package/dist/features/authors/components/AuthorColorsPanel.js.map +1 -0
- package/dist/features/authors/components/AuthorColorsPanel.vue.d.ts +11 -0
- package/dist/features/authors/components/SettingsAuthorsTab.js +49 -0
- package/dist/features/authors/components/SettingsAuthorsTab.js.map +1 -0
- package/dist/features/authors/components/SettingsAuthorsTab.vue.d.ts +6 -0
- package/dist/features/authors/feature.d.ts +22 -0
- package/dist/features/authors/feature.js +47 -0
- package/dist/features/authors/feature.js.map +1 -0
- package/dist/features/authors/index.d.ts +7 -0
- package/dist/features/authors/index.js +6 -0
- package/dist/features/authors/react/AuthorColorsButton.d.ts +8 -0
- package/dist/features/authors/react/AuthorColorsButton.js +41 -0
- package/dist/features/authors/react/AuthorColorsButton.js.map +1 -0
- package/dist/features/authors/react/AuthorColorsPanel.d.ts +8 -0
- package/dist/features/authors/react/AuthorColorsPanel.js +125 -0
- package/dist/features/authors/react/AuthorColorsPanel.js.map +1 -0
- package/dist/features/authors/react/SettingsAuthorsTab.d.ts +5 -0
- package/dist/features/authors/react/SettingsAuthorsTab.js +92 -0
- package/dist/features/authors/react/SettingsAuthorsTab.js.map +1 -0
- package/dist/features/authors/react.d.ts +11 -0
- package/dist/features/authors/react.js +16 -0
- package/dist/features/authors/react.js.map +1 -0
- package/dist/features/authors/schema.d.ts +22 -0
- package/dist/features/authors/schema.js +70 -0
- package/dist/features/authors/schema.js.map +1 -0
- package/dist/features/authors/vue.d.ts +10 -0
- package/dist/features/authors/vue.js +16 -0
- package/dist/features/authors/vue.js.map +1 -0
- package/dist/features/block-ui/block-actions.d.ts +17 -0
- package/dist/features/block-ui/block-actions.js +37 -0
- package/dist/features/block-ui/block-actions.js.map +1 -0
- package/dist/features/block-ui/components/BlockActionsOverlay.js +142 -0
- package/dist/features/block-ui/components/BlockActionsOverlay.js.map +1 -0
- package/dist/features/block-ui/components/BlockActionsOverlay.vue.d.ts +25 -0
- package/dist/features/block-ui/components/BlockHandles.js +113 -0
- package/dist/features/block-ui/components/BlockHandles.js.map +1 -0
- package/dist/features/block-ui/components/BlockUi.js +181 -0
- package/dist/features/block-ui/components/BlockUi.js.map +1 -0
- package/dist/features/block-ui/components/BlockUi.vue.d.ts +17 -0
- package/dist/features/block-ui/feature.d.ts +21 -0
- package/dist/features/block-ui/feature.js +23 -0
- package/dist/features/block-ui/feature.js.map +1 -0
- package/dist/features/block-ui/handle-geometry.js +52 -0
- package/dist/features/block-ui/handle-geometry.js.map +1 -0
- package/dist/features/block-ui/index.d.ts +3 -0
- package/dist/features/block-ui/index.js +3 -0
- package/dist/features/block-ui/react/BlockActionsOverlay.d.ts +19 -0
- package/dist/features/block-ui/react/BlockActionsOverlay.js +142 -0
- package/dist/features/block-ui/react/BlockActionsOverlay.js.map +1 -0
- package/dist/features/block-ui/react/BlockHandles.d.ts +15 -0
- package/dist/features/block-ui/react/BlockHandles.js +104 -0
- package/dist/features/block-ui/react/BlockHandles.js.map +1 -0
- package/dist/features/block-ui/react/BlockUi.d.ts +14 -0
- package/dist/features/block-ui/react/BlockUi.js +174 -0
- package/dist/features/block-ui/react/BlockUi.js.map +1 -0
- package/dist/features/block-ui/react.d.ts +11 -0
- package/dist/features/block-ui/react.js +13 -0
- package/dist/features/block-ui/react.js.map +1 -0
- package/dist/features/block-ui/vue.d.ts +9 -0
- package/dist/features/block-ui/vue.js +12 -0
- package/dist/features/block-ui/vue.js.map +1 -0
- package/dist/features/collab/anchor-resolver.d.ts +7 -0
- package/dist/features/collab/anchor-resolver.js +92 -0
- package/dist/features/collab/anchor-resolver.js.map +1 -0
- package/dist/features/collab/feature.d.ts +22 -0
- package/dist/features/collab/feature.js +36 -0
- package/dist/features/collab/feature.js.map +1 -0
- package/dist/features/collab/index.d.ts +3 -0
- package/dist/features/collab/index.js +3 -0
- package/dist/features/collab/react.d.ts +7 -0
- package/dist/features/collab/react.js +10 -0
- package/dist/features/collab/react.js.map +1 -0
- package/dist/features/collab/vue.d.ts +6 -0
- package/dist/features/collab/vue.js +37 -0
- package/dist/features/collab/vue.js.map +1 -0
- package/dist/features/comments/comments-plugin.d.ts +71 -0
- package/dist/features/comments/comments-plugin.js +185 -0
- package/dist/features/comments/comments-plugin.js.map +1 -0
- package/dist/features/comments/components/CommentBubble.js +54 -0
- package/dist/features/comments/components/CommentBubble.js.map +1 -0
- package/dist/features/comments/components/CommentBubble.vue.d.ts +14 -0
- package/dist/features/comments/components/CommentComposer.js +87 -0
- package/dist/features/comments/components/CommentComposer.js.map +1 -0
- package/dist/features/comments/components/CommentComposer.vue.d.ts +21 -0
- package/dist/features/comments/components/CommentThreadView.js +255 -0
- package/dist/features/comments/components/CommentThreadView.js.map +1 -0
- package/dist/features/comments/components/CommentThreadView.vue.d.ts +29 -0
- package/dist/features/comments/components/CommentsListMenu.js +134 -0
- package/dist/features/comments/components/CommentsListMenu.js.map +1 -0
- package/dist/features/comments/components/CommentsListMenu.vue.d.ts +10 -0
- package/dist/features/comments/components/CommentsMargin.js +291 -0
- package/dist/features/comments/components/CommentsMargin.js.map +1 -0
- package/dist/features/comments/components/CommentsMargin.vue.d.ts +16 -0
- package/dist/features/comments/components/CommentsOverlay.js +39 -0
- package/dist/features/comments/components/CommentsOverlay.js.map +1 -0
- package/dist/features/comments/components/CommentsPopover.js +124 -0
- package/dist/features/comments/components/CommentsPopover.js.map +1 -0
- package/dist/features/comments/components/CommentsPopover.vue.d.ts +10 -0
- package/dist/features/comments/components/CommentsToolbarButton.js +61 -0
- package/dist/features/comments/components/CommentsToolbarButton.js.map +1 -0
- package/dist/features/comments/components/SettingsCommentsTab.js +46 -0
- package/dist/features/comments/components/SettingsCommentsTab.js.map +1 -0
- package/dist/features/comments/components/SettingsCommentsTab.vue.d.ts +6 -0
- package/dist/features/comments/feature.d.ts +39 -0
- package/dist/features/comments/feature.js +128 -0
- package/dist/features/comments/feature.js.map +1 -0
- package/dist/features/comments/index.d.ts +6 -0
- package/dist/features/comments/index.js +6 -0
- package/dist/features/comments/model.d.ts +87 -0
- package/dist/features/comments/model.js +390 -0
- package/dist/features/comments/model.js.map +1 -0
- package/dist/features/comments/react/CommentAvatar.js +24 -0
- package/dist/features/comments/react/CommentAvatar.js.map +1 -0
- package/dist/features/comments/react/CommentBubble.d.ts +11 -0
- package/dist/features/comments/react/CommentBubble.js +43 -0
- package/dist/features/comments/react/CommentBubble.js.map +1 -0
- package/dist/features/comments/react/CommentComposer.d.ts +15 -0
- package/dist/features/comments/react/CommentComposer.js +69 -0
- package/dist/features/comments/react/CommentComposer.js.map +1 -0
- package/dist/features/comments/react/CommentThreadView.d.ts +24 -0
- package/dist/features/comments/react/CommentThreadView.js +249 -0
- package/dist/features/comments/react/CommentThreadView.js.map +1 -0
- package/dist/features/comments/react/CommentsListMenu.d.ts +8 -0
- package/dist/features/comments/react/CommentsListMenu.js +115 -0
- package/dist/features/comments/react/CommentsListMenu.js.map +1 -0
- package/dist/features/comments/react/CommentsMargin.d.ts +16 -0
- package/dist/features/comments/react/CommentsMargin.js +294 -0
- package/dist/features/comments/react/CommentsMargin.js.map +1 -0
- package/dist/features/comments/react/CommentsOverlay.d.ts +11 -0
- package/dist/features/comments/react/CommentsOverlay.js +52 -0
- package/dist/features/comments/react/CommentsOverlay.js.map +1 -0
- package/dist/features/comments/react/CommentsPopover.d.ts +15 -0
- package/dist/features/comments/react/CommentsPopover.js +107 -0
- package/dist/features/comments/react/CommentsPopover.js.map +1 -0
- package/dist/features/comments/react/CommentsToolbarButton.d.ts +12 -0
- package/dist/features/comments/react/CommentsToolbarButton.js +52 -0
- package/dist/features/comments/react/CommentsToolbarButton.js.map +1 -0
- package/dist/features/comments/react/SettingsCommentsTab.d.ts +5 -0
- package/dist/features/comments/react/SettingsCommentsTab.js +77 -0
- package/dist/features/comments/react/SettingsCommentsTab.js.map +1 -0
- package/dist/features/comments/react/use-comments.d.ts +17 -0
- package/dist/features/comments/react/use-comments.js +37 -0
- package/dist/features/comments/react/use-comments.js.map +1 -0
- package/dist/features/comments/react.d.ts +23 -0
- package/dist/features/comments/react.js +28 -0
- package/dist/features/comments/react.js.map +1 -0
- package/dist/features/comments/schema.d.ts +51 -0
- package/dist/features/comments/schema.js +41 -0
- package/dist/features/comments/schema.js.map +1 -0
- package/dist/features/comments/shortcuts.js +34 -0
- package/dist/features/comments/shortcuts.js.map +1 -0
- package/dist/features/comments/use-comments.d.ts +37 -0
- package/dist/features/comments/use-comments.js +45 -0
- package/dist/features/comments/use-comments.js.map +1 -0
- package/dist/features/comments/vue.d.ts +20 -0
- package/dist/features/comments/vue.js +28 -0
- package/dist/features/comments/vue.js.map +1 -0
- package/dist/features/composites/ai-brief.d.ts +31 -0
- package/dist/features/composites/ai-brief.js +56 -0
- package/dist/features/composites/ai-brief.js.map +1 -0
- package/dist/features/composites/anchors.d.ts +47 -0
- package/dist/features/composites/anchors.js +137 -0
- package/dist/features/composites/anchors.js.map +1 -0
- package/dist/features/composites/components/CompositeChrome.js +243 -0
- package/dist/features/composites/components/CompositeChrome.js.map +1 -0
- package/dist/features/composites/components/CompositeChrome.vue.d.ts +19 -0
- package/dist/features/composites/components/CompositeDetails.js +158 -0
- package/dist/features/composites/components/CompositeDetails.js.map +1 -0
- package/dist/features/composites/components/CompositeDetails.vue.d.ts +19 -0
- package/dist/features/composites/components/CompositeFieldEditor.js +114 -0
- package/dist/features/composites/components/CompositeFieldEditor.js.map +1 -0
- package/dist/features/composites/components/CompositeFieldEditor.vue.d.ts +23 -0
- package/dist/features/composites/components/CompositeInspector.js +439 -0
- package/dist/features/composites/components/CompositeInspector.js.map +1 -0
- package/dist/features/composites/components/CompositeInspector.vue.d.ts +32 -0
- package/dist/features/composites/components/CompositeStatusMenu.js +51 -0
- package/dist/features/composites/components/CompositeStatusMenu.js.map +1 -0
- package/dist/features/composites/components/CompositeStatusMenu.vue.d.ts +28 -0
- package/dist/features/composites/components/CompositeSummaryEditor.js +79 -0
- package/dist/features/composites/components/CompositeSummaryEditor.js.map +1 -0
- package/dist/features/composites/components/CompositeSummaryEditor.vue.d.ts +18 -0
- package/dist/features/composites/components/CompositeTable.js +348 -0
- package/dist/features/composites/components/CompositeTable.js.map +1 -0
- package/dist/features/composites/components/CompositeTable.vue.d.ts +15 -0
- package/dist/features/composites/components/CompositeTagsEditor.js +95 -0
- package/dist/features/composites/components/CompositeTagsEditor.js.map +1 -0
- package/dist/features/composites/components/CompositeTagsEditor.vue.d.ts +13 -0
- package/dist/features/composites/components/CompositeView.js +46 -0
- package/dist/features/composites/components/CompositeView.js.map +1 -0
- package/dist/features/composites/components/CompositeView.vue.d.ts +96 -0
- package/dist/features/composites/components/SettingsEditingTab.js +119 -0
- package/dist/features/composites/components/SettingsEditingTab.js.map +1 -0
- package/dist/features/composites/components/SettingsEditingTab.vue.d.ts +11 -0
- package/dist/features/composites/convert.d.ts +24 -0
- package/dist/features/composites/convert.js +145 -0
- package/dist/features/composites/convert.js.map +1 -0
- package/dist/features/composites/editing-settings-keys.js +47 -0
- package/dist/features/composites/editing-settings-keys.js.map +1 -0
- package/dist/features/composites/feature.d.ts +30 -0
- package/dist/features/composites/feature.js +305 -0
- package/dist/features/composites/feature.js.map +1 -0
- package/dist/features/composites/fences.d.ts +20 -0
- package/dist/features/composites/fences.js +86 -0
- package/dist/features/composites/fences.js.map +1 -0
- package/dist/features/composites/heading-composites.d.ts +36 -0
- package/dist/features/composites/heading-composites.js +140 -0
- package/dist/features/composites/heading-composites.js.map +1 -0
- package/dist/features/composites/index.d.ts +20 -0
- package/dist/features/composites/index.js +20 -0
- package/dist/features/composites/kinds.d.ts +49 -0
- package/dist/features/composites/kinds.js +131 -0
- package/dist/features/composites/kinds.js.map +1 -0
- package/dist/features/composites/legacy.d.ts +8 -0
- package/dist/features/composites/legacy.js +25 -0
- package/dist/features/composites/legacy.js.map +1 -0
- package/dist/features/composites/markdown-export.d.ts +17 -0
- package/dist/features/composites/markdown-export.js +49 -0
- package/dist/features/composites/markdown-export.js.map +1 -0
- package/dist/features/composites/meta-display.js +46 -0
- package/dist/features/composites/meta-display.js.map +1 -0
- package/dist/features/composites/node-views.d.ts +17 -0
- package/dist/features/composites/node-views.js +18 -0
- package/dist/features/composites/node-views.js.map +1 -0
- package/dist/features/composites/nodes.d.ts +56 -0
- package/dist/features/composites/nodes.js +480 -0
- package/dist/features/composites/nodes.js.map +1 -0
- package/dist/features/composites/outline.d.ts +35 -0
- package/dist/features/composites/outline.js +69 -0
- package/dist/features/composites/outline.js.map +1 -0
- package/dist/features/composites/react/CompositeChrome.d.ts +16 -0
- package/dist/features/composites/react/CompositeChrome.js +234 -0
- package/dist/features/composites/react/CompositeChrome.js.map +1 -0
- package/dist/features/composites/react/CompositeDetails.d.ts +16 -0
- package/dist/features/composites/react/CompositeDetails.js +149 -0
- package/dist/features/composites/react/CompositeDetails.js.map +1 -0
- package/dist/features/composites/react/CompositeFieldEditor.d.ts +18 -0
- package/dist/features/composites/react/CompositeFieldEditor.js +131 -0
- package/dist/features/composites/react/CompositeFieldEditor.js.map +1 -0
- package/dist/features/composites/react/CompositeInspector.d.ts +23 -0
- package/dist/features/composites/react/CompositeInspector.js +506 -0
- package/dist/features/composites/react/CompositeInspector.js.map +1 -0
- package/dist/features/composites/react/CompositeStatusMenu.d.ts +15 -0
- package/dist/features/composites/react/CompositeStatusMenu.js +36 -0
- package/dist/features/composites/react/CompositeStatusMenu.js.map +1 -0
- package/dist/features/composites/react/CompositeSummaryEditor.d.ts +15 -0
- package/dist/features/composites/react/CompositeSummaryEditor.js +85 -0
- package/dist/features/composites/react/CompositeSummaryEditor.js.map +1 -0
- package/dist/features/composites/react/CompositeTable.d.ts +11 -0
- package/dist/features/composites/react/CompositeTable.js +342 -0
- package/dist/features/composites/react/CompositeTable.js.map +1 -0
- package/dist/features/composites/react/CompositeTagsEditor.d.ts +10 -0
- package/dist/features/composites/react/CompositeTagsEditor.js +122 -0
- package/dist/features/composites/react/CompositeTagsEditor.js.map +1 -0
- package/dist/features/composites/react/CompositeView.d.ts +6 -0
- package/dist/features/composites/react/CompositeView.js +30 -0
- package/dist/features/composites/react/CompositeView.js.map +1 -0
- package/dist/features/composites/react/SettingsEditingTab.d.ts +8 -0
- package/dist/features/composites/react/SettingsEditingTab.js +153 -0
- package/dist/features/composites/react/SettingsEditingTab.js.map +1 -0
- package/dist/features/composites/react/use-composite-anchors.d.ts +17 -0
- package/dist/features/composites/react/use-composite-anchors.js +46 -0
- package/dist/features/composites/react/use-composite-anchors.js.map +1 -0
- package/dist/features/composites/react/use-composite-rows.d.ts +11 -0
- package/dist/features/composites/react/use-composite-rows.js +26 -0
- package/dist/features/composites/react/use-composite-rows.js.map +1 -0
- package/dist/features/composites/react.d.ts +24 -0
- package/dist/features/composites/react.js +30 -0
- package/dist/features/composites/react.js.map +1 -0
- package/dist/features/composites/rows-model.d.ts +38 -0
- package/dist/features/composites/rows-model.js +92 -0
- package/dist/features/composites/rows-model.js.map +1 -0
- package/dist/features/composites/rows.d.ts +76 -0
- package/dist/features/composites/rows.js +159 -0
- package/dist/features/composites/rows.js.map +1 -0
- package/dist/features/composites/schema.d.ts +21 -0
- package/dist/features/composites/schema.js +26 -0
- package/dist/features/composites/schema.js.map +1 -0
- package/dist/features/composites/structure-mode.d.ts +11 -0
- package/dist/features/composites/structure-mode.js +16 -0
- package/dist/features/composites/structure-mode.js.map +1 -0
- package/dist/features/composites/structure.d.ts +19 -0
- package/dist/features/composites/structure.js +19 -0
- package/dist/features/composites/structure.js.map +1 -0
- package/dist/features/composites/table-model.js +117 -0
- package/dist/features/composites/table-model.js.map +1 -0
- package/dist/features/composites/tree-root.d.ts +11 -0
- package/dist/features/composites/tree-root.js +16 -0
- package/dist/features/composites/tree-root.js.map +1 -0
- package/dist/features/composites/use-composite-anchors.d.ts +18 -0
- package/dist/features/composites/use-composite-anchors.js +42 -0
- package/dist/features/composites/use-composite-anchors.js.map +1 -0
- package/dist/features/composites/use-composite-rows.d.ts +25 -0
- package/dist/features/composites/use-composite-rows.js +28 -0
- package/dist/features/composites/use-composite-rows.js.map +1 -0
- package/dist/features/composites/vue.d.ts +23 -0
- package/dist/features/composites/vue.js +30 -0
- package/dist/features/composites/vue.js.map +1 -0
- package/dist/features/media/assets.d.ts +30 -0
- package/dist/features/media/assets.js +26 -0
- package/dist/features/media/assets.js.map +1 -0
- package/dist/features/media/audio-recorder.d.ts +25 -0
- package/dist/features/media/audio-recorder.js +123 -0
- package/dist/features/media/audio-recorder.js.map +1 -0
- package/dist/features/media/components/AudioRecorderModal.js +152 -0
- package/dist/features/media/components/AudioRecorderModal.js.map +1 -0
- package/dist/features/media/components/AudioRecorderModal.vue.d.ts +15 -0
- package/dist/features/media/components/AudioView.js +46 -0
- package/dist/features/media/components/AudioView.js.map +1 -0
- package/dist/features/media/components/FileView.js +73 -0
- package/dist/features/media/components/FileView.js.map +1 -0
- package/dist/features/media/components/VideoView.js +47 -0
- package/dist/features/media/components/VideoView.js.map +1 -0
- package/dist/features/media/feature.d.ts +22 -0
- package/dist/features/media/feature.js +101 -0
- package/dist/features/media/feature.js.map +1 -0
- package/dist/features/media/file-import.d.ts +21 -0
- package/dist/features/media/file-import.js +76 -0
- package/dist/features/media/file-import.js.map +1 -0
- package/dist/features/media/index.d.ts +7 -0
- package/dist/features/media/index.js +7 -0
- package/dist/features/media/node-views.d.ts +28 -0
- package/dist/features/media/node-views.js +28 -0
- package/dist/features/media/node-views.js.map +1 -0
- package/dist/features/media/react/AudioRecorderModal.d.ts +12 -0
- package/dist/features/media/react/AudioRecorderModal.js +147 -0
- package/dist/features/media/react/AudioRecorderModal.js.map +1 -0
- package/dist/features/media/react/AudioView.js +32 -0
- package/dist/features/media/react/AudioView.js.map +1 -0
- package/dist/features/media/react/FileView.js +61 -0
- package/dist/features/media/react/FileView.js.map +1 -0
- package/dist/features/media/react/TitleField.js +30 -0
- package/dist/features/media/react/TitleField.js.map +1 -0
- package/dist/features/media/react/VideoView.js +33 -0
- package/dist/features/media/react/VideoView.js.map +1 -0
- package/dist/features/media/react/use-audio-recorder.d.ts +11 -0
- package/dist/features/media/react/use-audio-recorder.js +21 -0
- package/dist/features/media/react/use-audio-recorder.js.map +1 -0
- package/dist/features/media/react.d.ts +19 -0
- package/dist/features/media/react.js +37 -0
- package/dist/features/media/react.js.map +1 -0
- package/dist/features/media/schema.d.ts +59 -0
- package/dist/features/media/schema.js +194 -0
- package/dist/features/media/schema.js.map +1 -0
- package/dist/features/media/upload.d.ts +41 -0
- package/dist/features/media/upload.js +106 -0
- package/dist/features/media/upload.js.map +1 -0
- package/dist/features/media/use-audio-recorder.d.ts +12 -0
- package/dist/features/media/use-audio-recorder.js +21 -0
- package/dist/features/media/use-audio-recorder.js.map +1 -0
- package/dist/features/media/vue.d.ts +19 -0
- package/dist/features/media/vue.js +35 -0
- package/dist/features/media/vue.js.map +1 -0
- package/dist/features/mentions/index.d.ts +22 -0
- package/dist/features/mentions/index.js +34 -0
- package/dist/features/mentions/index.js.map +1 -0
- package/dist/features/mentions/mention-suggestion.d.ts +11 -0
- package/dist/features/mentions/mention-suggestion.js +34 -0
- package/dist/features/mentions/mention-suggestion.js.map +1 -0
- package/dist/features/mentions/mention-text.d.ts +18 -0
- package/dist/features/mentions/mention-text.js +75 -0
- package/dist/features/mentions/mention-text.js.map +1 -0
- package/dist/features/mentions/mention.d.ts +20 -0
- package/dist/features/mentions/mention.js +33 -0
- package/dist/features/mentions/mention.js.map +1 -0
- package/dist/features/mentions/metadata-defaults.d.ts +8 -0
- package/dist/features/mentions/metadata-defaults.js +30 -0
- package/dist/features/mentions/metadata-defaults.js.map +1 -0
- package/dist/features/mentions/normalize.d.ts +10 -0
- package/dist/features/mentions/normalize.js +31 -0
- package/dist/features/mentions/normalize.js.map +1 -0
- package/dist/features/mentions/schema.d.ts +10 -0
- package/dist/features/mentions/schema.js +10 -0
- package/dist/features/mentions/schema.js.map +1 -0
- package/dist/features/mentions/tag-suggestion.d.ts +11 -0
- package/dist/features/mentions/tag-suggestion.js +45 -0
- package/dist/features/mentions/tag-suggestion.js.map +1 -0
- package/dist/features/mentions/tag.d.ts +43 -0
- package/dist/features/mentions/tag.js +155 -0
- package/dist/features/mentions/tag.js.map +1 -0
- package/dist/features/tables/feature.d.ts +14 -0
- package/dist/features/tables/feature.js +100 -0
- package/dist/features/tables/feature.js.map +1 -0
- package/dist/features/tables/index.d.ts +3 -0
- package/dist/features/tables/index.js +3 -0
- package/dist/features/tables/schema.d.ts +6 -0
- package/dist/features/tables/schema.js +27 -0
- package/dist/features/tables/schema.js.map +1 -0
- package/dist/features/themes/components/SettingsAppearanceTab.js +227 -0
- package/dist/features/themes/components/SettingsAppearanceTab.js.map +1 -0
- package/dist/features/themes/components/SettingsAppearanceTab.vue.d.ts +6 -0
- package/dist/features/themes/feature.d.ts +24 -0
- package/dist/features/themes/feature.js +25 -0
- package/dist/features/themes/feature.js.map +1 -0
- package/dist/features/themes/index.d.ts +6 -0
- package/dist/features/themes/index.js +6 -0
- package/dist/features/themes/react/SettingsAppearanceTab.d.ts +5 -0
- package/dist/features/themes/react/SettingsAppearanceTab.js +221 -0
- package/dist/features/themes/react/SettingsAppearanceTab.js.map +1 -0
- package/dist/features/themes/react.d.ts +13 -0
- package/dist/features/themes/react.js +15 -0
- package/dist/features/themes/react.js.map +1 -0
- package/dist/features/themes/schema.d.ts +21 -0
- package/dist/features/themes/schema.js +16 -0
- package/dist/features/themes/schema.js.map +1 -0
- package/dist/features/themes/scope-css.d.ts +5 -0
- package/dist/features/themes/scope-css.js +142 -0
- package/dist/features/themes/scope-css.js.map +1 -0
- package/dist/features/themes/theme-runtime.d.ts +14 -0
- package/dist/features/themes/theme-runtime.js +147 -0
- package/dist/features/themes/theme-runtime.js.map +1 -0
- package/dist/features/themes/vue.d.ts +13 -0
- package/dist/features/themes/vue.js +29 -0
- package/dist/features/themes/vue.js.map +1 -0
- package/dist/features/transcript/TranscriptSegmentView.js +169 -0
- package/dist/features/transcript/TranscriptSegmentView.js.map +1 -0
- package/dist/features/transcript/TranscriptSegmentView.vue.d.ts +96 -0
- package/dist/features/transcript/convert.d.ts +11 -0
- package/dist/features/transcript/convert.js +40 -0
- package/dist/features/transcript/convert.js.map +1 -0
- package/dist/features/transcript/feature.d.ts +25 -0
- package/dist/features/transcript/feature.js +59 -0
- package/dist/features/transcript/feature.js.map +1 -0
- package/dist/features/transcript/index.d.ts +7 -0
- package/dist/features/transcript/index.js +7 -0
- package/dist/features/transcript/react/TranscriptSegmentView.d.ts +6 -0
- package/dist/features/transcript/react/TranscriptSegmentView.js +155 -0
- package/dist/features/transcript/react/TranscriptSegmentView.js.map +1 -0
- package/dist/features/transcript/react.d.ts +9 -0
- package/dist/features/transcript/react.js +12 -0
- package/dist/features/transcript/react.js.map +1 -0
- package/dist/features/transcript/schema.d.ts +9 -0
- package/dist/features/transcript/schema.js +9 -0
- package/dist/features/transcript/schema.js.map +1 -0
- package/dist/features/transcript/segment-node.d.ts +21 -0
- package/dist/features/transcript/segment-node.js +113 -0
- package/dist/features/transcript/segment-node.js.map +1 -0
- package/dist/features/transcript/segment.d.ts +10 -0
- package/dist/features/transcript/segment.js +26 -0
- package/dist/features/transcript/segment.js.map +1 -0
- package/dist/features/transcript/speakers.d.ts +8 -0
- package/dist/features/transcript/speakers.js +22 -0
- package/dist/features/transcript/speakers.js.map +1 -0
- package/dist/features/transcript/vue.d.ts +8 -0
- package/dist/features/transcript/vue.js +12 -0
- package/dist/features/transcript/vue.js.map +1 -0
- package/dist/i18n/de/ai.js +168 -0
- package/dist/i18n/de/ai.js.map +1 -0
- package/dist/i18n/de/authors.js +21 -0
- package/dist/i18n/de/authors.js.map +1 -0
- package/dist/i18n/de/block.js +16 -0
- package/dist/i18n/de/block.js.map +1 -0
- package/dist/i18n/de/comments.js +35 -0
- package/dist/i18n/de/comments.js.map +1 -0
- package/dist/i18n/de/common.js +11 -0
- package/dist/i18n/de/common.js.map +1 -0
- package/dist/i18n/de/composites.js +147 -0
- package/dist/i18n/de/composites.js.map +1 -0
- package/dist/i18n/de/integrations.js +42 -0
- package/dist/i18n/de/integrations.js.map +1 -0
- package/dist/i18n/de/markdown.js +16 -0
- package/dist/i18n/de/markdown.js.map +1 -0
- package/dist/i18n/de/media.js +27 -0
- package/dist/i18n/de/media.js.map +1 -0
- package/dist/i18n/de/mentions.js +10 -0
- package/dist/i18n/de/mentions.js.map +1 -0
- package/dist/i18n/de/outline.js +9 -0
- package/dist/i18n/de/outline.js.map +1 -0
- package/dist/i18n/de/settings.js +12 -0
- package/dist/i18n/de/settings.js.map +1 -0
- package/dist/i18n/de/tables.js +15 -0
- package/dist/i18n/de/tables.js.map +1 -0
- package/dist/i18n/de/themes.js +26 -0
- package/dist/i18n/de/themes.js.map +1 -0
- package/dist/i18n/de/toolbar.js +22 -0
- package/dist/i18n/de/toolbar.js.map +1 -0
- package/dist/i18n/de/transcript.js +10 -0
- package/dist/i18n/de/transcript.js.map +1 -0
- package/dist/i18n/de/tree.js +31 -0
- package/dist/i18n/de/tree.js.map +1 -0
- package/dist/i18n/de.d.ts +503 -0
- package/dist/i18n/de.js +42 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en/ai.js +168 -0
- package/dist/i18n/en/ai.js.map +1 -0
- package/dist/i18n/en/authors.js +21 -0
- package/dist/i18n/en/authors.js.map +1 -0
- package/dist/i18n/en/block.js +16 -0
- package/dist/i18n/en/block.js.map +1 -0
- package/dist/i18n/en/comments.js +35 -0
- package/dist/i18n/en/comments.js.map +1 -0
- package/dist/i18n/en/common.js +11 -0
- package/dist/i18n/en/common.js.map +1 -0
- package/dist/i18n/en/composites.js +145 -0
- package/dist/i18n/en/composites.js.map +1 -0
- package/dist/i18n/en/integrations.js +42 -0
- package/dist/i18n/en/integrations.js.map +1 -0
- package/dist/i18n/en/markdown.js +16 -0
- package/dist/i18n/en/markdown.js.map +1 -0
- package/dist/i18n/en/media.js +27 -0
- package/dist/i18n/en/media.js.map +1 -0
- package/dist/i18n/en/mentions.js +10 -0
- package/dist/i18n/en/mentions.js.map +1 -0
- package/dist/i18n/en/outline.js +9 -0
- package/dist/i18n/en/outline.js.map +1 -0
- package/dist/i18n/en/settings.js +12 -0
- package/dist/i18n/en/settings.js.map +1 -0
- package/dist/i18n/en/tables.js +15 -0
- package/dist/i18n/en/tables.js.map +1 -0
- package/dist/i18n/en/themes.js +26 -0
- package/dist/i18n/en/themes.js.map +1 -0
- package/dist/i18n/en/toolbar.js +22 -0
- package/dist/i18n/en/toolbar.js.map +1 -0
- package/dist/i18n/en/transcript.js +10 -0
- package/dist/i18n/en/transcript.js.map +1 -0
- package/dist/i18n/en/tree.js +31 -0
- package/dist/i18n/en/tree.js.map +1 -0
- package/dist/i18n/en.js +42 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +24 -0
- package/dist/i18n/index.js +31 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +0 -0
- package/dist/integrations/composite-ai/composite-fill.d.ts +17 -0
- package/dist/integrations/composite-ai/composite-fill.js +129 -0
- package/dist/integrations/composite-ai/composite-fill.js.map +1 -0
- package/dist/integrations/composite-ai/composite-summary.d.ts +28 -0
- package/dist/integrations/composite-ai/composite-summary.js +143 -0
- package/dist/integrations/composite-ai/composite-summary.js.map +1 -0
- package/dist/integrations/composite-ai/document-transcribe.d.ts +14 -0
- package/dist/integrations/composite-ai/document-transcribe.js +89 -0
- package/dist/integrations/composite-ai/document-transcribe.js.map +1 -0
- package/dist/integrations/composite-ai/index.d.ts +22 -0
- package/dist/integrations/composite-ai/index.js +80 -0
- package/dist/integrations/composite-ai/index.js.map +1 -0
- package/dist/integrations/composite-media/index.d.ts +19 -0
- package/dist/integrations/composite-media/index.js +72 -0
- package/dist/integrations/composite-media/index.js.map +1 -0
- package/dist/integrations/transcript-ai/index.d.ts +16 -0
- package/dist/integrations/transcript-ai/index.js +63 -0
- package/dist/integrations/transcript-ai/index.js.map +1 -0
- package/dist/integrations/transcript-ai/protocol.d.ts +68 -0
- package/dist/integrations/transcript-ai/protocol.js +132 -0
- package/dist/integrations/transcript-ai/protocol.js.map +1 -0
- package/dist/integrations/transcript-ai/transcript-cleanup.d.ts +35 -0
- package/dist/integrations/transcript-ai/transcript-cleanup.js +169 -0
- package/dist/integrations/transcript-ai/transcript-cleanup.js.map +1 -0
- package/dist/markdown/MarkdownSurface.d.ts +25 -0
- package/dist/markdown/MarkdownSurface.js +93 -0
- package/dist/markdown/MarkdownSurface.js.map +1 -0
- package/dist/markdown/MarkdownSurface.vue.d.ts +76 -0
- package/dist/markdown/MarkdownSurface2.js +237 -0
- package/dist/markdown/MarkdownSurface2.js.map +1 -0
- package/dist/markdown/clipboard.d.ts +17 -0
- package/dist/markdown/clipboard.js +125 -0
- package/dist/markdown/clipboard.js.map +1 -0
- package/dist/markdown/document.d.ts +36 -0
- package/dist/markdown/document.js +100 -0
- package/dist/markdown/document.js.map +1 -0
- package/dist/markdown/frontmatter.d.ts +18 -0
- package/dist/markdown/frontmatter.js +32 -0
- package/dist/markdown/frontmatter.js.map +1 -0
- package/dist/markdown/index.d.ts +6 -0
- package/dist/markdown/index.js +6 -0
- package/dist/markdown/policy.d.ts +34 -0
- package/dist/markdown/policy.js +78 -0
- package/dist/markdown/policy.js.map +1 -0
- package/dist/markdown/react.d.ts +2 -0
- package/dist/markdown/react.js +1 -0
- package/dist/markdown/source-mode.d.ts +49 -0
- package/dist/markdown/source-mode.js +86 -0
- package/dist/markdown/source-mode.js.map +1 -0
- package/dist/markdown/vue.d.ts +2 -0
- package/dist/markdown/vue.js +1 -0
- package/dist/nuxt/module.d.ts +68 -0
- package/dist/nuxt/module.js +103 -0
- package/dist/nuxt/module.js.map +1 -0
- package/dist/nuxt/runtime/install-context.d.ts +17 -0
- package/dist/nuxt/runtime/install-context.js +26 -0
- package/dist/nuxt/runtime/install-context.js.map +1 -0
- package/dist/nuxt/runtime/plugins/editor-context-nuxt-ui.client.ts +8 -0
- package/dist/nuxt/runtime/plugins/editor-context-primevue.client.ts +8 -0
- package/dist/nuxt/runtime/server/api/ai/chat.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/chat.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/chat.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/complete.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/complete.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/complete.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/generate.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/generate.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/generate.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/models.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/models.get.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/models.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/transcribe.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/transcribe.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/transcribe.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js +8 -0
- package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id].post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/settings.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/settings.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/settings.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/settings.put.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/settings.put.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/settings.put.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/tags.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/tags.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/tags.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.get.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.post.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.post.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/themes/index.post.js.map +1 -0
- package/dist/nuxt/runtime/server/api/editor/users.get.d.ts +5 -0
- package/dist/nuxt/runtime/server/api/editor/users.get.js +8 -0
- package/dist/nuxt/runtime/server/api/editor/users.get.js.map +1 -0
- package/dist/nuxt/runtime/server/plugins/collab.d.ts +5 -0
- package/dist/nuxt/runtime/server/plugins/collab.js +10 -0
- package/dist/nuxt/runtime/server/plugins/collab.js.map +1 -0
- package/dist/nuxt/runtime/server/plugins/editor-server.d.ts +5 -0
- package/dist/nuxt/runtime/server/plugins/editor-server.js +20 -0
- package/dist/nuxt/runtime/server/plugins/editor-server.js.map +1 -0
- package/dist/nuxt/runtime/server/routes/collab/[id].d.ts +5 -0
- package/dist/nuxt/runtime/server/routes/collab/[id].js +35 -0
- package/dist/nuxt/runtime/server/routes/collab/[id].js.map +1 -0
- package/dist/nuxt/runtime/server/utils/editor-route.d.ts +11 -0
- package/dist/nuxt/runtime/server/utils/editor-route.js +49 -0
- package/dist/nuxt/runtime/server/utils/editor-route.js.map +1 -0
- package/dist/outline/EditorOutline.js +124 -0
- package/dist/outline/EditorOutline.js.map +1 -0
- package/dist/outline/EditorOutline.vue.d.ts +15 -0
- package/dist/outline/heading-outline.d.ts +26 -0
- package/dist/outline/heading-outline.js +46 -0
- package/dist/outline/heading-outline.js.map +1 -0
- package/dist/outline/index.d.ts +2 -0
- package/dist/outline/index.js +1 -0
- package/dist/outline/react/EditorOutline.d.ts +12 -0
- package/dist/outline/react/EditorOutline.js +112 -0
- package/dist/outline/react/EditorOutline.js.map +1 -0
- package/dist/outline/react.d.ts +2 -0
- package/dist/outline/react.js +1 -0
- package/dist/outline/vue.d.ts +2 -0
- package/dist/outline/vue.js +1 -0
- package/dist/presets/advanced.d.ts +33 -0
- package/dist/presets/advanced.js +50 -0
- package/dist/presets/advanced.js.map +1 -0
- package/dist/presets/simple.d.ts +9 -0
- package/dist/presets/simple.js +12 -0
- package/dist/presets/simple.js.map +1 -0
- package/dist/react/AdvancedEditor.d.ts +23 -0
- package/dist/react/AdvancedEditor.js +24 -0
- package/dist/react/AdvancedEditor.js.map +1 -0
- package/dist/react/EditorSettingsModal.d.ts +14 -0
- package/dist/react/EditorSettingsModal.js +40 -0
- package/dist/react/EditorSettingsModal.js.map +1 -0
- package/dist/react/EditorSettingsPanel.d.ts +18 -0
- package/dist/react/EditorSettingsPanel.js +40 -0
- package/dist/react/EditorSettingsPanel.js.map +1 -0
- package/dist/react/EditorSurface.d.ts +61 -0
- package/dist/react/EditorSurface.js +277 -0
- package/dist/react/EditorSurface.js.map +1 -0
- package/dist/react/EditorToolbar.d.ts +15 -0
- package/dist/react/EditorToolbar.js +182 -0
- package/dist/react/EditorToolbar.js.map +1 -0
- package/dist/react/Icon.d.ts +13 -0
- package/dist/react/Icon.js +19 -0
- package/dist/react/Icon.js.map +1 -0
- package/dist/react/SettingsSection.d.ts +10 -0
- package/dist/react/SettingsSection.js +22 -0
- package/dist/react/SettingsSection.js.map +1 -0
- package/dist/react/SimpleEditor.d.ts +27 -0
- package/dist/react/SimpleEditor.js +22 -0
- package/dist/react/SimpleEditor.js.map +1 -0
- package/dist/react/advanced-preset.d.ts +11 -0
- package/dist/react/advanced-preset.js +31 -0
- package/dist/react/advanced-preset.js.map +1 -0
- package/dist/react/advanced.d.ts +4 -0
- package/dist/react/advanced.js +3 -0
- package/dist/react/context.d.ts +12 -0
- package/dist/react/context.js +21 -0
- package/dist/react/context.js.map +1 -0
- package/dist/react/editor-ui.d.ts +14 -0
- package/dist/react/editor-ui.js +20 -0
- package/dist/react/editor-ui.js.map +1 -0
- package/dist/react/index.d.ts +17 -0
- package/dist/react/index.js +17 -0
- package/dist/react/notify.d.ts +6 -0
- package/dist/react/notify.js +25 -0
- package/dist/react/notify.js.map +1 -0
- package/dist/react/settings.d.ts +17 -0
- package/dist/react/settings.js +27 -0
- package/dist/react/settings.js.map +1 -0
- package/dist/react/simple.d.ts +2 -0
- package/dist/react/simple.js +1 -0
- package/dist/react/styles/advanced.css +18 -0
- package/dist/react/styles/themes-bridge.css +26 -0
- package/dist/react/styles/ui-vars.css +20 -0
- package/dist/react/suggestion-renderer.d.ts +12 -0
- package/dist/react/suggestion-renderer.js +90 -0
- package/dist/react/suggestion-renderer.js.map +1 -0
- package/dist/react/ui/alert.js +38 -0
- package/dist/react/ui/alert.js.map +1 -0
- package/dist/react/ui/avatar.js +24 -0
- package/dist/react/ui/avatar.js.map +1 -0
- package/dist/react/ui/badge.js +30 -0
- package/dist/react/ui/badge.js.map +1 -0
- package/dist/react/ui/button.js +50 -0
- package/dist/react/ui/button.js.map +1 -0
- package/dist/react/ui/collapsible.js +19 -0
- package/dist/react/ui/collapsible.js.map +1 -0
- package/dist/react/ui/command.js +47 -0
- package/dist/react/ui/command.js.map +1 -0
- package/dist/react/ui/dialog.js +88 -0
- package/dist/react/ui/dialog.js.map +1 -0
- package/dist/react/ui/dropdown-menu.js +70 -0
- package/dist/react/ui/dropdown-menu.js.map +1 -0
- package/dist/react/ui/input-group.js +57 -0
- package/dist/react/ui/input-group.js.map +1 -0
- package/dist/react/ui/input.js +16 -0
- package/dist/react/ui/input.js.map +1 -0
- package/dist/react/ui/label.js +17 -0
- package/dist/react/ui/label.js.map +1 -0
- package/dist/react/ui/popover.js +36 -0
- package/dist/react/ui/popover.js.map +1 -0
- package/dist/react/ui/radio-group.js +29 -0
- package/dist/react/ui/radio-group.js.map +1 -0
- package/dist/react/ui/select.js +88 -0
- package/dist/react/ui/select.js.map +1 -0
- package/dist/react/ui/separator.js +18 -0
- package/dist/react/ui/separator.js.map +1 -0
- package/dist/react/ui/switch.js +21 -0
- package/dist/react/ui/switch.js.map +1 -0
- package/dist/react/ui/table.js +44 -0
- package/dist/react/ui/table.js.map +1 -0
- package/dist/react/ui/tabs.js +41 -0
- package/dist/react/ui/tabs.js.map +1 -0
- package/dist/react/ui/textarea.js +15 -0
- package/dist/react/ui/textarea.js.map +1 -0
- package/dist/react/ui/tooltip.js +37 -0
- package/dist/react/ui/tooltip.js.map +1 -0
- package/dist/react/ui/utils.d.ts +5 -0
- package/dist/react/ui/utils.js +10 -0
- package/dist/react/ui/utils.js.map +1 -0
- package/dist/react/use-editor-i18n.d.ts +12 -0
- package/dist/react/use-editor-i18n.js +17 -0
- package/dist/react/use-editor-i18n.js.map +1 -0
- package/dist/react/use-notifier.d.ts +11 -0
- package/dist/react/use-notifier.js +25 -0
- package/dist/react/use-notifier.js.map +1 -0
- package/dist/react/use-store.d.ts +6 -0
- package/dist/react/use-store.js +10 -0
- package/dist/react/use-store.js.map +1 -0
- package/dist/schema/advanced.d.ts +14 -0
- package/dist/schema/advanced.js +43 -0
- package/dist/schema/advanced.js.map +1 -0
- package/dist/schema/simple.d.ts +10 -0
- package/dist/schema/simple.js +13 -0
- package/dist/schema/simple.js.map +1 -0
- package/dist/server/adapter.d.ts +101 -0
- package/dist/server/ai.d.ts +101 -0
- package/dist/server/ai.js +105 -0
- package/dist/server/ai.js.map +1 -0
- package/dist/server/collab-state.d.ts +16 -0
- package/dist/server/collab-state.js +43 -0
- package/dist/server/collab-state.js.map +1 -0
- package/dist/server/collab.d.ts +68 -0
- package/dist/server/collab.js +187 -0
- package/dist/server/collab.js.map +1 -0
- package/dist/server/errors.d.ts +17 -0
- package/dist/server/errors.js +26 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/handlers/ai.d.ts +223 -0
- package/dist/server/handlers/ai.js +422 -0
- package/dist/server/handlers/ai.js.map +1 -0
- package/dist/server/handlers/context.d.ts +64 -0
- package/dist/server/handlers/context.js +85 -0
- package/dist/server/handlers/context.js.map +1 -0
- package/dist/server/handlers/editor.d.ts +107 -0
- package/dist/server/handlers/editor.js +241 -0
- package/dist/server/handlers/editor.js.map +1 -0
- package/dist/server/handlers/index.d.ts +4 -0
- package/dist/server/handlers/index.js +4 -0
- package/dist/server/host.d.ts +61 -0
- package/dist/server/host.js +105 -0
- package/dist/server/host.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.js +7 -0
- package/dist/server/node.d.ts +24 -0
- package/dist/server/node.js +54 -0
- package/dist/server/node.js.map +1 -0
- package/dist/server/rate-limit.d.ts +22 -0
- package/dist/server/rate-limit.js +34 -0
- package/dist/server/rate-limit.js.map +1 -0
- package/dist/settings/index.d.ts +110 -0
- package/dist/settings/index.js +114 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/values.d.ts +35 -0
- package/dist/settings/values.js +41 -0
- package/dist/settings/values.js.map +1 -0
- package/dist/styles/ai.css +77 -0
- package/dist/styles/authors.css +18 -0
- package/dist/styles/block-ui.css +16 -0
- package/dist/styles/collab.css +26 -0
- package/dist/styles/comments.css +11 -0
- package/dist/styles/composites.css +56 -0
- package/dist/styles/core.css +99 -0
- package/dist/styles/media.css +8 -0
- package/dist/styles/mentions.css +24 -0
- package/dist/styles/tables.css +25 -0
- package/dist/styles/themes.css +622 -0
- package/dist/styles/tokens.css +29 -0
- package/dist/styles/transcript.css +13 -0
- package/dist/tree/DocumentTree.js +595 -0
- package/dist/tree/DocumentTree.js.map +1 -0
- package/dist/tree/DocumentTree.vue.d.ts +36 -0
- package/dist/tree/folder-paths.js +11 -0
- package/dist/tree/folder-paths.js.map +1 -0
- package/dist/tree/index.d.ts +4 -0
- package/dist/tree/index.js +1 -0
- package/dist/tree/react/DocumentTree.d.ts +24 -0
- package/dist/tree/react/DocumentTree.js +579 -0
- package/dist/tree/react/DocumentTree.js.map +1 -0
- package/dist/tree/react/use-tree-view.d.ts +14 -0
- package/dist/tree/react/use-tree-view.js +21 -0
- package/dist/tree/react/use-tree-view.js.map +1 -0
- package/dist/tree/react.d.ts +3 -0
- package/dist/tree/react.js +3 -0
- package/dist/tree/store.d.ts +45 -0
- package/dist/tree/tree-items.js +221 -0
- package/dist/tree/tree-items.js.map +1 -0
- package/dist/tree/tree-view-model.d.ts +29 -0
- package/dist/tree/tree-view-model.js +71 -0
- package/dist/tree/tree-view-model.js.map +1 -0
- package/dist/tree/tree-view.d.ts +15 -0
- package/dist/tree/tree-view.js +21 -0
- package/dist/tree/tree-view.js.map +1 -0
- package/dist/tree/types.d.ts +23 -0
- package/dist/tree/types.js +0 -0
- package/dist/tree/vue.d.ts +3 -0
- package/dist/tree/vue.js +3 -0
- package/dist/vue/AdvancedEditor.js +100 -0
- package/dist/vue/AdvancedEditor.js.map +1 -0
- package/dist/vue/AdvancedEditor.vue.d.ts +71 -0
- package/dist/vue/SimpleEditor.js +61 -0
- package/dist/vue/SimpleEditor.js.map +1 -0
- package/dist/vue/SimpleEditor.vue.d.ts +36 -0
- package/dist/vue/advanced-preset.d.ts +13 -0
- package/dist/vue/advanced-preset.js +33 -0
- package/dist/vue/advanced-preset.js.map +1 -0
- package/dist/vue/advanced.d.ts +3 -0
- package/dist/vue/advanced.js +3 -0
- package/dist/vue/components/EditorSettingsModal.js +69 -0
- package/dist/vue/components/EditorSettingsModal.js.map +1 -0
- package/dist/vue/components/EditorSettingsModal.vue.d.ts +24 -0
- package/dist/vue/components/EditorSettingsPanel.js +58 -0
- package/dist/vue/components/EditorSettingsPanel.js.map +1 -0
- package/dist/vue/components/EditorSettingsPanel.vue.d.ts +29 -0
- package/dist/vue/components/EditorSurface.js +229 -0
- package/dist/vue/components/EditorSurface.js.map +1 -0
- package/dist/vue/components/EditorSurface.vue.d.ts +68 -0
- package/dist/vue/components/EditorToolbar.js +189 -0
- package/dist/vue/components/EditorToolbar.js.map +1 -0
- package/dist/vue/components/EditorToolbar.vue.d.ts +17 -0
- package/dist/vue/components/SettingsSection.js +26 -0
- package/dist/vue/components/SettingsSection.js.map +1 -0
- package/dist/vue/components/SettingsSection.vue.d.ts +21 -0
- package/dist/vue/components/SuggestionList.js +91 -0
- package/dist/vue/components/SuggestionList.js.map +1 -0
- package/dist/vue/components/SuggestionList.vue.d.ts +19 -0
- package/dist/vue/context.d.ts +24 -0
- package/dist/vue/context.js +41 -0
- package/dist/vue/context.js.map +1 -0
- package/dist/vue/index.d.ts +26 -0
- package/dist/vue/index.js +16 -0
- package/dist/vue/kit/index.d.ts +3 -0
- package/dist/vue/kit/index.js +1 -0
- package/dist/vue/kit/nuxt-ui.css +24 -0
- package/dist/vue/kit/nuxt-ui.d.ts +31 -0
- package/dist/vue/kit/nuxt-ui.js +101 -0
- package/dist/vue/kit/nuxt-ui.js.map +1 -0
- package/dist/vue/kit/primevue/Alert.js +49 -0
- package/dist/vue/kit/primevue/Alert.js.map +1 -0
- package/dist/vue/kit/primevue/Avatar.js +54 -0
- package/dist/vue/kit/primevue/Avatar.js.map +1 -0
- package/dist/vue/kit/primevue/Badge.js +41 -0
- package/dist/vue/kit/primevue/Badge.js.map +1 -0
- package/dist/vue/kit/primevue/Button.js +112 -0
- package/dist/vue/kit/primevue/Button.js.map +1 -0
- package/dist/vue/kit/primevue/Chip.js +38 -0
- package/dist/vue/kit/primevue/Chip.js.map +1 -0
- package/dist/vue/kit/primevue/DropdownMenu.js +98 -0
- package/dist/vue/kit/primevue/DropdownMenu.js.map +1 -0
- package/dist/vue/kit/primevue/FieldGroup.js +22 -0
- package/dist/vue/kit/primevue/FieldGroup.js.map +1 -0
- package/dist/vue/kit/primevue/FormField.js +56 -0
- package/dist/vue/kit/primevue/FormField.js.map +1 -0
- package/dist/vue/kit/primevue/Icon.js +23 -0
- package/dist/vue/kit/primevue/Icon.js.map +1 -0
- package/dist/vue/kit/primevue/Input.js +96 -0
- package/dist/vue/kit/primevue/Input.js.map +1 -0
- package/dist/vue/kit/primevue/InputMenu.js +122 -0
- package/dist/vue/kit/primevue/InputMenu.js.map +1 -0
- package/dist/vue/kit/primevue/Modal.js +59 -0
- package/dist/vue/kit/primevue/Modal.js.map +1 -0
- package/dist/vue/kit/primevue/Popover.js +135 -0
- package/dist/vue/kit/primevue/Popover.js.map +1 -0
- package/dist/vue/kit/primevue/RadioGroup.js +58 -0
- package/dist/vue/kit/primevue/RadioGroup.js.map +1 -0
- package/dist/vue/kit/primevue/Select.js +68 -0
- package/dist/vue/kit/primevue/Select.js.map +1 -0
- package/dist/vue/kit/primevue/SelectMenu.js +94 -0
- package/dist/vue/kit/primevue/SelectMenu.js.map +1 -0
- package/dist/vue/kit/primevue/Separator.js +16 -0
- package/dist/vue/kit/primevue/Separator.js.map +1 -0
- package/dist/vue/kit/primevue/Switch.js +46 -0
- package/dist/vue/kit/primevue/Switch.js.map +1 -0
- package/dist/vue/kit/primevue/Table.js +54 -0
- package/dist/vue/kit/primevue/Table.js.map +1 -0
- package/dist/vue/kit/primevue/Tabs.js +49 -0
- package/dist/vue/kit/primevue/Tabs.js.map +1 -0
- package/dist/vue/kit/primevue/Textarea.js +55 -0
- package/dist/vue/kit/primevue/Textarea.js.map +1 -0
- package/dist/vue/kit/primevue/Tooltip.js +43 -0
- package/dist/vue/kit/primevue/Tooltip.js.map +1 -0
- package/dist/vue/kit/primevue/Tree.js +75 -0
- package/dist/vue/kit/primevue/Tree.js.map +1 -0
- package/dist/vue/kit/primevue/select-options.js +55 -0
- package/dist/vue/kit/primevue/select-options.js.map +1 -0
- package/dist/vue/kit/primevue/shared.js +49 -0
- package/dist/vue/kit/primevue/shared.js.map +1 -0
- package/dist/vue/kit/primevue/trigger.js +25 -0
- package/dist/vue/kit/primevue/trigger.js.map +1 -0
- package/dist/vue/kit/primevue.css +86 -0
- package/dist/vue/kit/primevue.d.ts +33 -0
- package/dist/vue/kit/primevue.js +96 -0
- package/dist/vue/kit/primevue.js.map +1 -0
- package/dist/vue/kit/types.d.ts +370 -0
- package/dist/vue/kit/use-ui-kit.d.ts +12 -0
- package/dist/vue/kit/use-ui-kit.js +17 -0
- package/dist/vue/kit/use-ui-kit.js.map +1 -0
- package/dist/vue/notify.d.ts +12 -0
- package/dist/vue/notify.js +27 -0
- package/dist/vue/notify.js.map +1 -0
- package/dist/vue/settings.d.ts +16 -0
- package/dist/vue/settings.js +64 -0
- package/dist/vue/settings.js.map +1 -0
- package/dist/vue/simple.d.ts +2 -0
- package/dist/vue/simple.js +1 -0
- package/dist/vue/store-ref.d.ts +20 -0
- package/dist/vue/store-ref.js +59 -0
- package/dist/vue/store-ref.js.map +1 -0
- package/dist/vue/suggestion-renderer.d.ts +6 -0
- package/dist/vue/suggestion-renderer.js +20 -0
- package/dist/vue/suggestion-renderer.js.map +1 -0
- package/dist/vue/use-editor-i18n.d.ts +12 -0
- package/dist/vue/use-editor-i18n.js +17 -0
- package/dist/vue/use-editor-i18n.js.map +1 -0
- package/dist/vue/use-editor-ui.d.ts +15 -0
- package/dist/vue/use-editor-ui.js +23 -0
- package/dist/vue/use-editor-ui.js.map +1 -0
- package/dist/vue/use-notifier.d.ts +11 -0
- package/dist/vue/use-notifier.js +19 -0
- package/dist/vue/use-notifier.js.map +1 -0
- package/docs/extending.md +538 -0
- package/docs/integration.md +537 -0
- package/docs/llms.md +375 -0
- package/docs/usage.md +1071 -0
- package/package.json +634 -4
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { kindOf, languageOf } from "../code/kind.js";
|
|
2
|
+
import _sfc_main$1 from "../code/CodeSurface2.js";
|
|
3
|
+
import _sfc_main$2 from "../markdown/MarkdownSurface2.js";
|
|
4
|
+
import { computed, createBlock, createSlots, defineComponent, guardReactiveProps, mergeProps, normalizeProps, openBlock, renderList, renderSlot, withCtx } from "vue";
|
|
5
|
+
//#region src/document/DocumentSurface.vue
|
|
6
|
+
const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
7
|
+
__name: "DocumentSurface",
|
|
8
|
+
props: {
|
|
9
|
+
path: {},
|
|
10
|
+
modelValue: { default: "" },
|
|
11
|
+
mime: {},
|
|
12
|
+
editable: {
|
|
13
|
+
type: Boolean,
|
|
14
|
+
default: true
|
|
15
|
+
},
|
|
16
|
+
language: {},
|
|
17
|
+
wordWrap: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: true
|
|
20
|
+
},
|
|
21
|
+
markdown: {}
|
|
22
|
+
},
|
|
23
|
+
emits: [
|
|
24
|
+
"update:modelValue",
|
|
25
|
+
"save",
|
|
26
|
+
"ready"
|
|
27
|
+
],
|
|
28
|
+
setup(__props, { emit: __emit }) {
|
|
29
|
+
const props = __props;
|
|
30
|
+
const emit = __emit;
|
|
31
|
+
const kind = computed(() => kindOf(props.path, props.mime));
|
|
32
|
+
const language = computed(() => props.language ?? languageOf(props.path));
|
|
33
|
+
return (_ctx, _cache) => {
|
|
34
|
+
return kind.value === "markdown" ? (openBlock(), createBlock(_sfc_main$2, mergeProps({ key: 0 }, __props.markdown, {
|
|
35
|
+
"model-value": __props.modelValue,
|
|
36
|
+
editable: __props.editable,
|
|
37
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = (text) => emit("update:modelValue", text)),
|
|
38
|
+
onReady: _cache[1] || (_cache[1] = (editor) => emit("ready", {
|
|
39
|
+
kind: "markdown",
|
|
40
|
+
editor
|
|
41
|
+
}))
|
|
42
|
+
}), createSlots({ _: 2 }, [renderList(_ctx.$slots, (_, name) => {
|
|
43
|
+
return {
|
|
44
|
+
name,
|
|
45
|
+
fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotProps ?? {})))])
|
|
46
|
+
};
|
|
47
|
+
})]), 1040, ["model-value", "editable"])) : kind.value === "code" ? (openBlock(), createBlock(_sfc_main$1, {
|
|
48
|
+
key: 1,
|
|
49
|
+
"model-value": __props.modelValue,
|
|
50
|
+
editable: __props.editable,
|
|
51
|
+
language: language.value,
|
|
52
|
+
"word-wrap": __props.wordWrap,
|
|
53
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = (text) => emit("update:modelValue", text)),
|
|
54
|
+
onSave: _cache[3] || (_cache[3] = (text) => emit("save", text)),
|
|
55
|
+
onReady: _cache[4] || (_cache[4] = (view) => emit("ready", {
|
|
56
|
+
kind: "code",
|
|
57
|
+
view
|
|
58
|
+
}))
|
|
59
|
+
}, null, 8, [
|
|
60
|
+
"model-value",
|
|
61
|
+
"editable",
|
|
62
|
+
"language",
|
|
63
|
+
"word-wrap"
|
|
64
|
+
])) : renderSlot(_ctx.$slots, "binary", { path: __props.path }, void 0, void 0, 2);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
//#endregion
|
|
69
|
+
export { _sfc_main as default };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=DocumentSurface2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentSurface2.js","names":["$slots","_openBlock","_createBlock","MarkdownSurface","_mergeProps","_createSlots","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","CodeSurface"],"sources":["../../src/document/DocumentSurface.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor } from '@tiptap/vue-3'\nimport type { EditorView } from '@codemirror/view'\nimport { computed } from 'vue'\nimport CodeSurface from '../code/CodeSurface.vue'\nimport { type DocumentKind, kindOf, languageOf } from '../code/kind'\nimport MarkdownSurface from '../markdown/MarkdownSurface.vue'\n\ntype MarkdownProps = Omit<InstanceType<typeof MarkdownSurface>['$props'], 'modelValue' | 'editable' | 'onReady' | 'onUpdate:modelValue'>\n\n/** Which surface was mounted and its editor, for the `ready` event. */\nexport type DocumentSurfaceTarget = { kind: 'markdown', editor: Editor } | { kind: 'code', view: EditorView }\n\nconst props = withDefaults(defineProps<{\n /** The document's path; its extension (and `mime`) decides the surface (`kindOf`) and the code language (`languageOf`). */\n path: string\n /** The document text. */\n modelValue?: string\n mime?: string\n editable?: boolean\n /** Code surface only: the language id, overriding the one the path implies. */\n language?: string\n /** Code surface only. */\n wordWrap?: boolean\n /** The Markdown surface's own props (`preset` at least), used when `path` is a Markdown file. */\n markdown: MarkdownProps\n}>(), { modelValue: '', editable: true, wordWrap: true })\n\nconst emit = defineEmits<{\n 'update:modelValue': [text: string]\n /** Mod-S in the code surface, with the current text. */\n 'save': [text: string]\n 'ready': [target: DocumentSurfaceTarget]\n}>()\n\nconst kind = computed<DocumentKind>(() => kindOf(props.path, props.mime))\nconst language = computed(() => props.language ?? languageOf(props.path))\n</script>\n\n<template>\n <MarkdownSurface\n v-if=\"kind === 'markdown'\"\n v-bind=\"markdown\"\n :model-value=\"modelValue\"\n :editable=\"editable\"\n @update:model-value=\"text => emit('update:modelValue', text)\"\n @ready=\"editor => emit('ready', { kind: 'markdown', editor })\"\n >\n <template v-for=\"(_, name) in $slots\" :key=\"name\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps ?? {}\" />\n </template>\n </MarkdownSurface>\n <CodeSurface\n v-else-if=\"kind === 'code'\"\n :model-value=\"modelValue\"\n :editable=\"editable\"\n :language=\"language\"\n :word-wrap=\"wordWrap\"\n @update:model-value=\"text => emit('update:modelValue', text)\"\n @save=\"text => emit('save', text)\"\n @ready=\"view => emit('ready', { kind: 'code', view })\"\n />\n <slot v-else name=\"binary\" :path=\"path\" />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAed,MAAM,OAAO;EAOb,MAAM,OAAO,eAA6B,OAAO,MAAM,MAAM,MAAM,IAAI,CAAC;EACxE,MAAM,WAAW,eAAe,MAAM,YAAY,WAAW,MAAM,IAAI,CAAC;;GAK9D,OAAA,KAAA,UAAI,cADZC,UAAA,GAAAC,YAWkBC,aAXlBC,WAWkB,EAAA,KAAA,EAAA,GATR,QAAA,UAAQ;IACf,eAAa,QAAA;IACb,UAAU,QAAA;IACV,uBAAkB,OAAA,OAAA,OAAA,MAAE,SAAQ,KAAI,qBAAsB,IAAI;IAC1D,SAAK,OAAA,OAAA,OAAA,MAAE,WAAU,KAAI,SAAA;KAAA,MAAA;KAA8B;IAAM,CAAA;GAE5BJ,CAAAA,GAAAA,YAAAA,EAAAA,GAAAA,EAAAA,GAAAA,CAAAA,WAAAA,KAAAA,SAAZ,GAAG,SAAI;;KAA0B;KACjD,IAAAO,SADyD,cAAS,CAClEC,WAA8C,KAAA,QAAjC,MAAIC,eAAAC,mBAAU,aAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;GAI3B,CAAA,CAAA,CAAA,GAAA,MAAA,CAAA,eAAA,UAAA,CAAA,KAAA,KAAA,UAAI,UADjBT,UAAA,GAAAC,YASES,aAAA;;IAPC,eAAa,QAAA;IACb,UAAU,QAAA;IACV,UAAU,SAAA;IACV,aAAW,QAAA;IACX,uBAAkB,OAAA,OAAA,OAAA,MAAE,SAAQ,KAAI,qBAAsB,IAAI;IAC1D,QAAI,OAAA,OAAA,OAAA,MAAE,SAAQ,KAAI,QAAS,IAAI;IAC/B,SAAK,OAAA,OAAA,OAAA,MAAE,SAAQ,KAAI,SAAA;KAAA,MAAA;KAA0B;IAAI,CAAA;;;;;;GAEpD,CAAA,KAAAH,WAA0C,KAAA,QAAA,UAAA,EAAd,MAAM,QAAA,KAAI,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DocumentSurface } from "./DocumentSurface.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DocumentSurface } from "./DocumentSurface2.js";
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Translate } from "../../i18n/index.js";
|
|
2
|
+
import { Notifier } from "../../core/notify.js";
|
|
3
|
+
import { ReadonlyStore } from "../../core/store.js";
|
|
4
|
+
import { AiReviewOutcome } from "./ai-review.js";
|
|
5
|
+
import { AgentOp, AgentOpFeedback, AgentOpOutcome } from "./protocol/agent-ops.js";
|
|
6
|
+
import "./protocol/index.js";
|
|
7
|
+
import { AgentScope } from "./agent-ops.js";
|
|
8
|
+
import { Editor } from "@tiptap/core";
|
|
9
|
+
//#region src/features/ai/agent-op-review.d.ts
|
|
10
|
+
/** Client state of a proposed operation: its outcome so far, the target's text, its review hunks. */
|
|
11
|
+
export interface AgentOpState {
|
|
12
|
+
outcome: AgentOpOutcome;
|
|
13
|
+
snippet: string;
|
|
14
|
+
hunks: string[];
|
|
15
|
+
decided: Record<AiReviewOutcome, number>;
|
|
16
|
+
/** Its final outcome went to the model with a user message. */
|
|
17
|
+
reported: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Snapshot of the proposed operations; every change replaces `ops` (never mutated in place). */
|
|
20
|
+
export interface AgentOpReviewState {
|
|
21
|
+
/** Operation states by operation id. */
|
|
22
|
+
ops: Readonly<Record<string, AgentOpState>>;
|
|
23
|
+
}
|
|
24
|
+
export interface AgentOpReviewOptions {
|
|
25
|
+
/** Receives the notice of a decision that could not be applied because the text changed underneath. */
|
|
26
|
+
notify: Notifier;
|
|
27
|
+
/** The app's translator (`EditorContext.t`): that notice and the snippets of the operations' target blocks. */
|
|
28
|
+
t: Translate;
|
|
29
|
+
}
|
|
30
|
+
export interface AgentOpReview {
|
|
31
|
+
state: ReadonlyStore<AgentOpReviewState>;
|
|
32
|
+
/**
|
|
33
|
+
* Opens the in-document review of `ops`: every operation is checked against `scope` (the selected blocks; null:
|
|
34
|
+
* the whole document) and the document as it is now. Returns the outcome of each operation, in order: `pending`
|
|
35
|
+
* while it waits for the user's decision, otherwise why nothing is shown (`blocked`, `missing`, `unchanged`,
|
|
36
|
+
* `overlap`, `empty`). Operation IDs (`op`) must be unique within this review.
|
|
37
|
+
*/
|
|
38
|
+
propose: (editor: Editor, ops: AgentOp[], scope: AgentScope | null) => AgentOpOutcome[];
|
|
39
|
+
/** Accepts or rejects the open hunks of operation `id`. */
|
|
40
|
+
decide: (editor: Editor, id: string, accept: boolean) => void;
|
|
41
|
+
/** Scrolls to operation `op`: its first open hunk (selected for accept/reject), else its target block. */
|
|
42
|
+
reveal: (editor: Editor, op: AgentOp) => boolean;
|
|
43
|
+
/**
|
|
44
|
+
* What the user decided since the last call: every operation whose outcome the model has not heard yet (open ones
|
|
45
|
+
* too, as `pending`). Operations with a final outcome count as reported afterwards, so the next call omits them.
|
|
46
|
+
*/
|
|
47
|
+
feedback: () => AgentOpFeedback[];
|
|
48
|
+
/** Like `feedback`, but reports nothing as heard: for a transport that marks the operations only once its message went out (`markReported`). */
|
|
49
|
+
unreported: () => AgentOpFeedback[];
|
|
50
|
+
/** Marks the operations `ids` as heard by the model; unknown IDs and operations that are still pending are left alone. */
|
|
51
|
+
markReported: (ids: readonly string[]) => void;
|
|
52
|
+
/** The number the next operation ID of a conversation-wide sequence (`op1`, `op2`, …) starts at; never reset. */
|
|
53
|
+
nextOp: () => number;
|
|
54
|
+
/** Advances `nextOp` past `count` operations that were given IDs. */
|
|
55
|
+
advanceOp: (count: number) => void;
|
|
56
|
+
/** Forgets every operation state and feedback; reviews still open in an editor stay open and their decisions are ignored from now on. */
|
|
57
|
+
reset: () => void;
|
|
58
|
+
/** Rejects the reviews still open in `editor` that this one started, then forgets everything (`reset`). */
|
|
59
|
+
end: (editor: Editor) => void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The review of agent edit operations, framework free: the chat's own transport and a host's (an agent working
|
|
63
|
+
* elsewhere that proposes edits through an action) drive it the same way. `propose` shows the operations as in-document
|
|
64
|
+
* hunks the user accepts or rejects (AiReviewBar); `state` follows the decisions; `feedback` reads them back.
|
|
65
|
+
* Client only: needs the `AiReview` extension in the editor.
|
|
66
|
+
*/
|
|
67
|
+
export declare function createAgentOpReview({ notify, t }: AgentOpReviewOptions): AgentOpReview;
|
|
68
|
+
//#endregion
|
|
69
|
+
//# sourceMappingURL=agent-op-review.d.ts.map
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { createStore } from "../../core/store.js";
|
|
2
|
+
import { releaseRanges } from "../../core/doc-anchors.js";
|
|
3
|
+
import { agentOpTarget } from "./protocol/agent-ops.js";
|
|
4
|
+
import { agentOpChange, agentOpSnippet } from "./agent-ops.js";
|
|
5
|
+
import { acceptAiReview, aiReviewKey, rejectAiReview, setActiveAiReviewHunk, startAiReview } from "./ai-review.js";
|
|
6
|
+
//#region src/features/ai/agent-op-review.ts
|
|
7
|
+
/** The state without operations; shared so an emptied review and an emptied chat hold the identical object. */
|
|
8
|
+
const NO_AGENT_OPS = Object.freeze({});
|
|
9
|
+
/**
|
|
10
|
+
* The review of agent edit operations, framework free: the chat's own transport and a host's (an agent working
|
|
11
|
+
* elsewhere that proposes edits through an action) drive it the same way. `propose` shows the operations as in-document
|
|
12
|
+
* hunks the user accepts or rejects (AiReviewBar); `state` follows the decisions; `feedback` reads them back.
|
|
13
|
+
* Client only: needs the `AiReview` extension in the editor.
|
|
14
|
+
*/
|
|
15
|
+
function createAgentOpReview({ notify, t }) {
|
|
16
|
+
const store = createStore({ ops: NO_AGENT_OPS });
|
|
17
|
+
const targets = /* @__PURE__ */ new Map();
|
|
18
|
+
const open = /* @__PURE__ */ new Set();
|
|
19
|
+
let nextOp = 1;
|
|
20
|
+
const patch = (ops) => store.set({ ops });
|
|
21
|
+
function onDecision(decisions) {
|
|
22
|
+
const ops = { ...store.get().ops };
|
|
23
|
+
for (const { changeId, outcome } of decisions) {
|
|
24
|
+
const current = ops[changeId];
|
|
25
|
+
if (!current) continue;
|
|
26
|
+
const decided = {
|
|
27
|
+
...current.decided,
|
|
28
|
+
[outcome]: current.decided[outcome] + 1
|
|
29
|
+
};
|
|
30
|
+
const { accepted, rejected, invalid } = decided;
|
|
31
|
+
const state = {
|
|
32
|
+
...current,
|
|
33
|
+
decided
|
|
34
|
+
};
|
|
35
|
+
if (accepted + rejected + invalid >= state.hunks.length) {
|
|
36
|
+
const kinds = [
|
|
37
|
+
"accepted",
|
|
38
|
+
"rejected",
|
|
39
|
+
"invalid"
|
|
40
|
+
].filter((kind) => decided[kind] > 0);
|
|
41
|
+
state.outcome = kinds.length === 1 ? kinds[0] : "partial";
|
|
42
|
+
}
|
|
43
|
+
ops[changeId] = state;
|
|
44
|
+
if (outcome === "invalid") notify({
|
|
45
|
+
id: "ai-review-invalid",
|
|
46
|
+
title: t("ai.op.invalid.title"),
|
|
47
|
+
description: t("ai.op.invalid.description"),
|
|
48
|
+
kind: "info"
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
patch(ops);
|
|
52
|
+
}
|
|
53
|
+
function propose(editor, proposed, scope) {
|
|
54
|
+
const allowed = scope ? new Set(scope.ids) : null;
|
|
55
|
+
const changes = [];
|
|
56
|
+
const states = {};
|
|
57
|
+
for (const op of proposed) {
|
|
58
|
+
const change = agentOpChange(editor, op, allowed);
|
|
59
|
+
states[op.op] = {
|
|
60
|
+
outcome: typeof change === "string" ? change : "pending",
|
|
61
|
+
snippet: agentOpSnippet(editor.state.doc, op, t),
|
|
62
|
+
hunks: [],
|
|
63
|
+
decided: {
|
|
64
|
+
accepted: 0,
|
|
65
|
+
rejected: 0,
|
|
66
|
+
invalid: 0
|
|
67
|
+
},
|
|
68
|
+
reported: false
|
|
69
|
+
};
|
|
70
|
+
targets.set(op.op, {
|
|
71
|
+
type: op.type,
|
|
72
|
+
target: agentOpTarget(op)
|
|
73
|
+
});
|
|
74
|
+
if (typeof change !== "string") changes.push(change);
|
|
75
|
+
}
|
|
76
|
+
patch({
|
|
77
|
+
...store.get().ops,
|
|
78
|
+
...states
|
|
79
|
+
});
|
|
80
|
+
if (changes.length) {
|
|
81
|
+
let started;
|
|
82
|
+
const review = startAiReview(editor, changes, {
|
|
83
|
+
onDecision,
|
|
84
|
+
onDone: () => {
|
|
85
|
+
if (started) open.delete(started);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
started = review;
|
|
89
|
+
if (review.hunks) open.add(review);
|
|
90
|
+
releaseRanges(editor, changes.map((c) => c.kind === "insert" ? c.at : c.range));
|
|
91
|
+
const ops = { ...store.get().ops };
|
|
92
|
+
for (const { id, reason } of review.skipped) if (ops[id]) ops[id] = {
|
|
93
|
+
...ops[id],
|
|
94
|
+
outcome: reason
|
|
95
|
+
};
|
|
96
|
+
for (const hunk of aiReviewKey.getState(editor.state)?.hunks ?? []) {
|
|
97
|
+
const state = hunk.reviewId === review.id ? ops[hunk.changeId] : void 0;
|
|
98
|
+
if (state) ops[hunk.changeId] = {
|
|
99
|
+
...state,
|
|
100
|
+
hunks: [...state.hunks, hunk.id]
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
patch(ops);
|
|
104
|
+
}
|
|
105
|
+
const { ops } = store.get();
|
|
106
|
+
return proposed.map((op) => ops[op.op].outcome);
|
|
107
|
+
}
|
|
108
|
+
function decide(editor, id, accept) {
|
|
109
|
+
const hunks = store.get().ops[id]?.hunks;
|
|
110
|
+
if (!hunks?.length) return;
|
|
111
|
+
if (accept) acceptAiReview(editor, hunks);
|
|
112
|
+
else rejectAiReview(editor, hunks);
|
|
113
|
+
}
|
|
114
|
+
function reveal(editor, op) {
|
|
115
|
+
const hunks = store.get().ops[op.op]?.hunks;
|
|
116
|
+
const pending = aiReviewKey.getState(editor.state)?.hunks.find((hunk) => hunks?.includes(hunk.id));
|
|
117
|
+
if (pending) {
|
|
118
|
+
setActiveAiReviewHunk(editor.view, pending.id);
|
|
119
|
+
editor.view.dom.querySelector(`[data-ai-hunk="${pending.id}"]`)?.scrollIntoView({
|
|
120
|
+
block: "center",
|
|
121
|
+
behavior: "smooth"
|
|
122
|
+
});
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
const target = agentOpTarget(op);
|
|
126
|
+
return target !== null && editor.commands.revealBlock(target);
|
|
127
|
+
}
|
|
128
|
+
/** Operations whose final outcome the model has not heard yet (open ones too, as „noch nicht entschieden“), in proposal order. */
|
|
129
|
+
function unreported() {
|
|
130
|
+
return Object.entries(store.get().ops).flatMap(([op, state]) => {
|
|
131
|
+
const known = targets.get(op);
|
|
132
|
+
return known && !state.reported ? [{
|
|
133
|
+
op,
|
|
134
|
+
...known,
|
|
135
|
+
outcome: state.outcome
|
|
136
|
+
}] : [];
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
function markReported(ids) {
|
|
140
|
+
const { ops } = store.get();
|
|
141
|
+
if (!ids.some((id) => ops[id] && ops[id].outcome !== "pending")) return;
|
|
142
|
+
const next = { ...ops };
|
|
143
|
+
for (const id of ids) if (next[id] && next[id].outcome !== "pending") next[id] = {
|
|
144
|
+
...next[id],
|
|
145
|
+
reported: true
|
|
146
|
+
};
|
|
147
|
+
patch(next);
|
|
148
|
+
}
|
|
149
|
+
function feedback() {
|
|
150
|
+
const heard = unreported();
|
|
151
|
+
markReported(heard.map(({ op }) => op));
|
|
152
|
+
return heard;
|
|
153
|
+
}
|
|
154
|
+
function reset() {
|
|
155
|
+
targets.clear();
|
|
156
|
+
open.clear();
|
|
157
|
+
patch(NO_AGENT_OPS);
|
|
158
|
+
}
|
|
159
|
+
function end(editor) {
|
|
160
|
+
if (!editor.isDestroyed) for (const review of [...open]) review.cancel();
|
|
161
|
+
reset();
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
state: store,
|
|
165
|
+
propose,
|
|
166
|
+
decide,
|
|
167
|
+
reveal,
|
|
168
|
+
feedback,
|
|
169
|
+
unreported,
|
|
170
|
+
markReported,
|
|
171
|
+
nextOp: () => nextOp,
|
|
172
|
+
advanceOp: (count) => {
|
|
173
|
+
nextOp += count;
|
|
174
|
+
},
|
|
175
|
+
reset,
|
|
176
|
+
end
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//#endregion
|
|
180
|
+
export { NO_AGENT_OPS, createAgentOpReview };
|
|
181
|
+
|
|
182
|
+
//# sourceMappingURL=agent-op-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-op-review.js","names":[],"sources":["../../../src/features/ai/agent-op-review.ts"],"sourcesContent":["import type { Editor } from '@tiptap/core'\nimport { releaseRanges } from '../../core'\nimport type { Notifier } from '../../core/notify'\nimport { createStore, type ReadonlyStore } from '../../core/store'\nimport type { Translate } from '../../i18n'\nimport { type AgentScope, agentOpChange, agentOpSnippet } from './agent-ops'\nimport { type AiReviewChange, type AiReviewDecision, type AiReviewHandle, type AiReviewOutcome, acceptAiReview, aiReviewKey, rejectAiReview, setActiveAiReviewHunk, startAiReview } from './ai-review'\nimport { type AgentOp, type AgentOpFeedback, type AgentOpOutcome, agentOpTarget } from './protocol'\n\n/** Client state of a proposed operation: its outcome so far, the target's text, its review hunks. */\nexport interface AgentOpState {\n outcome: AgentOpOutcome\n snippet: string\n hunks: string[]\n decided: Record<AiReviewOutcome, number>\n /** Its final outcome went to the model with a user message. */\n reported: boolean\n}\n\n/** Snapshot of the proposed operations; every change replaces `ops` (never mutated in place). */\nexport interface AgentOpReviewState {\n /** Operation states by operation id. */\n ops: Readonly<Record<string, AgentOpState>>\n}\n\nexport interface AgentOpReviewOptions {\n /** Receives the notice of a decision that could not be applied because the text changed underneath. */\n notify: Notifier\n /** The app's translator (`EditorContext.t`): that notice and the snippets of the operations' target blocks. */\n t: Translate\n}\n\nexport interface AgentOpReview {\n state: ReadonlyStore<AgentOpReviewState>\n /**\n * Opens the in-document review of `ops`: every operation is checked against `scope` (the selected blocks; null:\n * the whole document) and the document as it is now. Returns the outcome of each operation, in order: `pending`\n * while it waits for the user's decision, otherwise why nothing is shown (`blocked`, `missing`, `unchanged`,\n * `overlap`, `empty`). Operation IDs (`op`) must be unique within this review.\n */\n propose: (editor: Editor, ops: AgentOp[], scope: AgentScope | null) => AgentOpOutcome[]\n /** Accepts or rejects the open hunks of operation `id`. */\n decide: (editor: Editor, id: string, accept: boolean) => void\n /** Scrolls to operation `op`: its first open hunk (selected for accept/reject), else its target block. */\n reveal: (editor: Editor, op: AgentOp) => boolean\n /**\n * What the user decided since the last call: every operation whose outcome the model has not heard yet (open ones\n * too, as `pending`). Operations with a final outcome count as reported afterwards, so the next call omits them.\n */\n feedback: () => AgentOpFeedback[]\n /** Like `feedback`, but reports nothing as heard: for a transport that marks the operations only once its message went out (`markReported`). */\n unreported: () => AgentOpFeedback[]\n /** Marks the operations `ids` as heard by the model; unknown IDs and operations that are still pending are left alone. */\n markReported: (ids: readonly string[]) => void\n /** The number the next operation ID of a conversation-wide sequence (`op1`, `op2`, …) starts at; never reset. */\n nextOp: () => number\n /** Advances `nextOp` past `count` operations that were given IDs. */\n advanceOp: (count: number) => void\n /** Forgets every operation state and feedback; reviews still open in an editor stay open and their decisions are ignored from now on. */\n reset: () => void\n /** Rejects the reviews still open in `editor` that this one started, then forgets everything (`reset`). */\n end: (editor: Editor) => void\n}\n\n/** The state without operations; shared so an emptied review and an emptied chat hold the identical object. */\nexport const NO_AGENT_OPS: AgentOpReviewState['ops'] = Object.freeze({})\n\n/**\n * The review of agent edit operations, framework free: the chat's own transport and a host's (an agent working\n * elsewhere that proposes edits through an action) drive it the same way. `propose` shows the operations as in-document\n * hunks the user accepts or rejects (AiReviewBar); `state` follows the decisions; `feedback` reads them back.\n * Client only: needs the `AiReview` extension in the editor.\n */\nexport function createAgentOpReview({ notify, t }: AgentOpReviewOptions): AgentOpReview {\n const store = createStore<AgentOpReviewState>({ ops: NO_AGENT_OPS })\n // What `AgentOpFeedback` names beyond the state: the operation's type and target block.\n const targets = new Map<string, Pick<AgentOpFeedback, 'type' | 'target'>>()\n const open = new Set<AiReviewHandle>()\n // Never reset, so operation IDs stay unique even for reviews still open from an earlier conversation.\n let nextOp = 1\n\n const patch = (ops: Readonly<Record<string, AgentOpState>>) => store.set({ ops })\n\n function onDecision(decisions: AiReviewDecision[]) {\n const ops = { ...store.get().ops }\n for (const { changeId, outcome } of decisions) {\n const current = ops[changeId]\n if (!current) continue // from a conversation that was reset\n const decided = { ...current.decided, [outcome]: current.decided[outcome] + 1 }\n const { accepted, rejected, invalid } = decided\n const state: AgentOpState = { ...current, decided }\n if (accepted + rejected + invalid >= state.hunks.length) {\n const kinds = (['accepted', 'rejected', 'invalid'] as const).filter(kind => decided[kind] > 0)\n state.outcome = kinds.length === 1 ? kinds[0]! : 'partial'\n }\n ops[changeId] = state\n if (outcome === 'invalid') notify({ id: 'ai-review-invalid', title: t('ai.op.invalid.title'), description: t('ai.op.invalid.description'), kind: 'info' })\n }\n patch(ops)\n }\n\n function propose(editor: Editor, proposed: AgentOp[], scope: AgentScope | null): AgentOpOutcome[] {\n const allowed = scope ? new Set(scope.ids) : null\n const changes: AiReviewChange[] = []\n const states: Record<string, AgentOpState> = {}\n for (const op of proposed) {\n const change = agentOpChange(editor, op, allowed)\n states[op.op] = {\n outcome: typeof change === 'string' ? change : 'pending',\n snippet: agentOpSnippet(editor.state.doc, op, t),\n hunks: [],\n decided: { accepted: 0, rejected: 0, invalid: 0 },\n reported: false,\n }\n targets.set(op.op, { type: op.type, target: agentOpTarget(op) })\n if (typeof change !== 'string') changes.push(change)\n }\n // The states are published before the review starts: it may report decisions synchronously.\n patch({ ...store.get().ops, ...states })\n if (changes.length) {\n let started: AiReviewHandle | undefined\n const review = startAiReview(editor, changes, {\n onDecision,\n onDone: () => { if (started) open.delete(started) },\n })\n started = review\n if (review.hunks) open.add(review)\n // The review keeps anchors of its own.\n releaseRanges(editor, changes.map(c => c.kind === 'insert' ? c.at : c.range))\n const ops = { ...store.get().ops }\n for (const { id, reason } of review.skipped) {\n if (ops[id]) ops[id] = { ...ops[id], outcome: reason }\n }\n for (const hunk of aiReviewKey.getState(editor.state)?.hunks ?? []) {\n const state = hunk.reviewId === review.id ? ops[hunk.changeId] : undefined\n if (state) ops[hunk.changeId] = { ...state, hunks: [...state.hunks, hunk.id] }\n }\n patch(ops)\n }\n const { ops } = store.get()\n return proposed.map(op => ops[op.op]!.outcome)\n }\n\n function decide(editor: Editor, id: string, accept: boolean) {\n const hunks = store.get().ops[id]?.hunks\n if (!hunks?.length) return\n if (accept) acceptAiReview(editor, hunks)\n else rejectAiReview(editor, hunks)\n }\n\n function reveal(editor: Editor, op: AgentOp): boolean {\n const hunks = store.get().ops[op.op]?.hunks\n const pending = aiReviewKey.getState(editor.state)?.hunks.find(hunk => hunks?.includes(hunk.id))\n if (pending) {\n setActiveAiReviewHunk(editor.view, pending.id)\n editor.view.dom.querySelector(`[data-ai-hunk=\"${pending.id}\"]`)?.scrollIntoView({ block: 'center', behavior: 'smooth' })\n return true\n }\n const target = agentOpTarget(op)\n return target !== null && editor.commands.revealBlock(target)\n }\n\n /** Operations whose final outcome the model has not heard yet (open ones too, as „noch nicht entschieden“), in proposal order. */\n function unreported(): AgentOpFeedback[] {\n return Object.entries(store.get().ops).flatMap(([op, state]) => {\n const known = targets.get(op)\n return known && !state.reported ? [{ op, ...known, outcome: state.outcome }] : []\n })\n }\n\n function markReported(ids: readonly string[]) {\n const { ops } = store.get()\n if (!ids.some(id => ops[id] && ops[id].outcome !== 'pending')) return\n const next = { ...ops }\n for (const id of ids) {\n if (next[id] && next[id].outcome !== 'pending') next[id] = { ...next[id], reported: true }\n }\n patch(next)\n }\n\n function feedback(): AgentOpFeedback[] {\n const heard = unreported()\n markReported(heard.map(({ op }) => op))\n return heard\n }\n\n function reset() {\n targets.clear()\n open.clear()\n patch(NO_AGENT_OPS)\n }\n\n function end(editor: Editor) {\n if (!editor.isDestroyed) for (const review of [...open]) review.cancel()\n reset()\n }\n\n return { state: store, propose, decide, reveal, feedback, unreported, markReported, nextOp: () => nextOp, advanceOp: (count) => { nextOp += count }, reset, end }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "./ai-review.js";
|
|
2
|
+
import "./protocol/index.js";
|
|
3
|
+
import { Editor } from "@tiptap/core";
|
|
4
|
+
import { EditorState } from "@tiptap/pm/state";
|
|
5
|
+
import { Node as Node$1 } from "@tiptap/pm/model";
|
|
6
|
+
//#region src/features/ai/agent-ops.d.ts
|
|
7
|
+
/** Edit scope of a non-empty selection: the top-level blocks it touches, and every block ID inside them. */
|
|
8
|
+
export interface AgentScope {
|
|
9
|
+
blocks: number;
|
|
10
|
+
ids: string[];
|
|
11
|
+
}
|
|
12
|
+
/** The scope chat edits are limited to: the top-level blocks the selection touches; null without a selection (whole document). */
|
|
13
|
+
export declare function selectionScope(state: EditorState): AgentScope | null;
|
|
14
|
+
//#endregion
|
|
15
|
+
//# sourceMappingURL=agent-ops.d.ts.map
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { blockIdOf, findBlockById } from "../../core/schema/block-ids.js";
|
|
2
|
+
import { isBlockContainer, isChromeNode } from "../../core/schema/node-flags.js";
|
|
3
|
+
import { isWrapperBlock } from "../../core/convert.js";
|
|
4
|
+
import { conversionsOf, parseBlocks } from "../../core/pipeline.js";
|
|
5
|
+
import { blockConversion, parseConversionTarget } from "../../core/block-convert.js";
|
|
6
|
+
import { captureRange } from "../../core/doc-anchors.js";
|
|
7
|
+
import { selectionRange } from "../../core/selection-range.js";
|
|
8
|
+
import { agentOpTarget } from "./protocol/agent-ops.js";
|
|
9
|
+
import { Fragment } from "@tiptap/pm/model";
|
|
10
|
+
//#region src/features/ai/agent-ops.ts
|
|
11
|
+
/** The scope chat edits are limited to: the top-level blocks the selection touches; null without a selection (whole document). */
|
|
12
|
+
function selectionScope(state) {
|
|
13
|
+
if (state.selection.empty) return null;
|
|
14
|
+
const { from, to } = selectionRange(state);
|
|
15
|
+
const ids = [];
|
|
16
|
+
let blocks = 0;
|
|
17
|
+
state.doc.forEach((node, offset) => {
|
|
18
|
+
if (offset >= to || offset + node.nodeSize <= from) return;
|
|
19
|
+
blocks++;
|
|
20
|
+
const own = blockIdOf(node);
|
|
21
|
+
if (own) ids.push(own);
|
|
22
|
+
node.descendants((child) => {
|
|
23
|
+
const id = blockIdOf(child);
|
|
24
|
+
if (id) ids.push(id);
|
|
25
|
+
return !child.isTextblock;
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
blocks,
|
|
30
|
+
ids
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Catalog keys of how the chat shows an outcome: the badge label and the badge's hover text. */
|
|
34
|
+
const AGENT_OP_OUTCOME_KEYS = {
|
|
35
|
+
pending: {
|
|
36
|
+
badge: "ai.opBadge.pending",
|
|
37
|
+
hover: "ai.opTitle.pending"
|
|
38
|
+
},
|
|
39
|
+
accepted: {
|
|
40
|
+
badge: "ai.opBadge.accepted",
|
|
41
|
+
hover: "ai.opTitle.accepted"
|
|
42
|
+
},
|
|
43
|
+
rejected: {
|
|
44
|
+
badge: "ai.opBadge.rejected",
|
|
45
|
+
hover: "ai.opTitle.rejected"
|
|
46
|
+
},
|
|
47
|
+
partial: {
|
|
48
|
+
badge: "ai.opBadge.partial",
|
|
49
|
+
hover: "ai.opTitle.partial"
|
|
50
|
+
},
|
|
51
|
+
invalid: {
|
|
52
|
+
badge: "ai.opBadge.invalid",
|
|
53
|
+
hover: "ai.opTitle.invalid"
|
|
54
|
+
},
|
|
55
|
+
unchanged: {
|
|
56
|
+
badge: "ai.opBadge.unchanged",
|
|
57
|
+
hover: "ai.opTitle.unchanged"
|
|
58
|
+
},
|
|
59
|
+
missing: {
|
|
60
|
+
badge: "ai.opBadge.missing",
|
|
61
|
+
hover: "ai.opTitle.missing"
|
|
62
|
+
},
|
|
63
|
+
overlap: {
|
|
64
|
+
badge: "ai.opBadge.overlap",
|
|
65
|
+
hover: "ai.opTitle.overlap"
|
|
66
|
+
},
|
|
67
|
+
empty: {
|
|
68
|
+
badge: "ai.opBadge.empty",
|
|
69
|
+
hover: "ai.opTitle.empty"
|
|
70
|
+
},
|
|
71
|
+
blocked: {
|
|
72
|
+
badge: "ai.opBadge.blocked",
|
|
73
|
+
hover: "ai.opTitle.blocked"
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/** Catalog keys of the snippets of text-less media blocks. */
|
|
77
|
+
const MEDIA_BLOCK_KEYS = {
|
|
78
|
+
image: "ai.op.snippet.image",
|
|
79
|
+
audio: "ai.op.snippet.audio",
|
|
80
|
+
video: "ai.op.snippet.video",
|
|
81
|
+
file: "ai.op.snippet.file"
|
|
82
|
+
};
|
|
83
|
+
/** Short text of the block an operation targets, for the chat („Dokumentanfang“ for an insertion at the start). */
|
|
84
|
+
function agentOpSnippet(doc, op, t) {
|
|
85
|
+
const target = agentOpTarget(op);
|
|
86
|
+
if (target === null) return t("ai.op.snippet.documentStart");
|
|
87
|
+
const node = findBlockById(doc, target)?.node;
|
|
88
|
+
if (!node) return t("ai.op.snippet.missing");
|
|
89
|
+
const text = node.textContent.replace(/\s+/g, " ").trim();
|
|
90
|
+
if (!text) return t(MEDIA_BLOCK_KEYS[node.type.name] ?? "ai.op.snippet.emptyBlock");
|
|
91
|
+
return text.length > 60 ? `${text.slice(0, 60)}…` : text;
|
|
92
|
+
}
|
|
93
|
+
/** List and quote markers the model may echo from the document lines (`- `, `1. `, `> `) at the start of each line. */
|
|
94
|
+
const LINE_PREFIX = /^(?:[ \t]*(?:[-*+]|\d+[.)])[ \t]+|[ \t]*>[ \t]?)+/gm;
|
|
95
|
+
/**
|
|
96
|
+
* The review change of an operation, re-checked against the scope the request was sent with (`allowed`, null: whole
|
|
97
|
+
* document): 'blocked' when it points outside, 'missing' when its block is gone, 'unchanged' for a conversion that
|
|
98
|
+
* changes nothing or is impossible there.
|
|
99
|
+
* - update: a single paragraph, or a single block of the same type and attributes (a speaker line of the same
|
|
100
|
+
* speaker), is diffed within the block's content, so the block keeps its type and speaker; anything else (another
|
|
101
|
+
* speaker's `**Name:**`, several blocks, a different block type) replaces the whole block. On a composite, a
|
|
102
|
+
* `::: kind` fence (exactly one composite) replaces the whole composite, anything else only its body.
|
|
103
|
+
* - delete: the block, or the smallest list item, list or quote around it that would be invalid without it.
|
|
104
|
+
* - add: after the target's block in the document, in a composite body or in the body of a host block holding blocks
|
|
105
|
+
* (a callout); a list of the same type after a list item goes after that item, a host block of the same type after
|
|
106
|
+
* one of its body blocks after that whole block.
|
|
107
|
+
* - convert: the block (a heading becoming a composite with its group) replaced by `convertBlockTo`'s result.
|
|
108
|
+
*/
|
|
109
|
+
function agentOpChange(editor, op, allowed) {
|
|
110
|
+
const target = agentOpTarget(op);
|
|
111
|
+
if (allowed && (target === null || !allowed.has(target))) return "blocked";
|
|
112
|
+
const { state } = editor;
|
|
113
|
+
const { doc, schema } = state;
|
|
114
|
+
if (op.type === "add" && target === null) return {
|
|
115
|
+
id: op.op,
|
|
116
|
+
kind: "insert",
|
|
117
|
+
at: captureRange(editor, {
|
|
118
|
+
from: 0,
|
|
119
|
+
to: 0
|
|
120
|
+
}),
|
|
121
|
+
markdown: op.markdown
|
|
122
|
+
};
|
|
123
|
+
const found = target === null ? null : findBlockById(doc, target);
|
|
124
|
+
if (!found) return "missing";
|
|
125
|
+
const { node, pos } = found;
|
|
126
|
+
const $pos = doc.resolve(pos);
|
|
127
|
+
if (op.type === "add") {
|
|
128
|
+
const firstType = parseBlocks(editor, op.markdown).blocks[0]?.type;
|
|
129
|
+
const holdsBody = (n) => isBlockContainer(n) || isWrapperBlock(n);
|
|
130
|
+
let container = $pos.depth;
|
|
131
|
+
while (container > 0 && !holdsBody($pos.node(container))) container--;
|
|
132
|
+
let at = container === $pos.depth ? pos + node.nodeSize : $pos.after(container + 1);
|
|
133
|
+
if (container > 0 && isWrapperBlock($pos.node(container)) && $pos.node(container).type.name === firstType) at = $pos.after(container);
|
|
134
|
+
for (let depth = $pos.depth; depth > 0; depth--) {
|
|
135
|
+
if ($pos.node(depth).type.name !== "listItem") continue;
|
|
136
|
+
if ($pos.node(depth - 1).type.name === firstType) at = $pos.after(depth);
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
id: op.op,
|
|
141
|
+
kind: "insert",
|
|
142
|
+
at: captureRange(editor, {
|
|
143
|
+
from: at,
|
|
144
|
+
to: at
|
|
145
|
+
}),
|
|
146
|
+
markdown: op.markdown
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
if (op.type === "delete") {
|
|
150
|
+
let from = pos;
|
|
151
|
+
let to = pos + node.nodeSize;
|
|
152
|
+
for (let $from = $pos; $from.depth > 0; $from = doc.resolve(from)) {
|
|
153
|
+
const parent = $from.parent;
|
|
154
|
+
const start = $from.start();
|
|
155
|
+
if (parent.type.validContent(parent.content.cut(0, from - start).append(parent.content.cut(to - start)))) break;
|
|
156
|
+
from = $from.before();
|
|
157
|
+
to = $from.after();
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
id: op.op,
|
|
161
|
+
kind: "delete",
|
|
162
|
+
range: captureRange(editor, {
|
|
163
|
+
from,
|
|
164
|
+
to
|
|
165
|
+
})
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
if (op.type === "convert") {
|
|
169
|
+
const providers = conversionsOf(editor);
|
|
170
|
+
const to = parseConversionTarget(providers, op.to);
|
|
171
|
+
const conversion = to && blockConversion(providers, state, $pos, to);
|
|
172
|
+
if (!conversion) return "unchanged";
|
|
173
|
+
return {
|
|
174
|
+
id: op.op,
|
|
175
|
+
kind: "blocks",
|
|
176
|
+
range: captureRange(editor, conversion),
|
|
177
|
+
blocks: Fragment.from(conversion.blocks)
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
const whole = {
|
|
181
|
+
from: pos,
|
|
182
|
+
to: pos + node.nodeSize
|
|
183
|
+
};
|
|
184
|
+
if (isBlockContainer(node)) {
|
|
185
|
+
const { blocks } = parseBlocks(editor, op.markdown);
|
|
186
|
+
if (blocks.length === 1 && blocks[0].type === node.type.name) return {
|
|
187
|
+
id: op.op,
|
|
188
|
+
range: captureRange(editor, whole),
|
|
189
|
+
markdown: op.markdown
|
|
190
|
+
};
|
|
191
|
+
let body = pos + 1;
|
|
192
|
+
node.forEach((child) => {
|
|
193
|
+
if (isChromeNode(child)) body += child.nodeSize;
|
|
194
|
+
});
|
|
195
|
+
return {
|
|
196
|
+
id: op.op,
|
|
197
|
+
range: captureRange(editor, {
|
|
198
|
+
from: body,
|
|
199
|
+
to: pos + node.nodeSize - 1
|
|
200
|
+
}),
|
|
201
|
+
markdown: op.markdown
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
if (!node.isTextblock) return {
|
|
205
|
+
id: op.op,
|
|
206
|
+
range: captureRange(editor, whole),
|
|
207
|
+
markdown: op.markdown
|
|
208
|
+
};
|
|
209
|
+
let marked = false;
|
|
210
|
+
for (let depth = $pos.depth; depth > 0 && !marked; depth--) marked = ["listItem", "blockquote"].includes($pos.node(depth).type.name);
|
|
211
|
+
const markdown = marked ? op.markdown.replace(LINE_PREFIX, "") : op.markdown;
|
|
212
|
+
const { blocks } = parseBlocks(editor, markdown);
|
|
213
|
+
const result = blocks.length === 1 ? schema.nodeFromJSON(blocks[0]) : null;
|
|
214
|
+
const sameKind = result?.type === node.type && Object.keys(node.attrs).every((name) => name === "id" || result.attrs[name] === node.attrs[name]);
|
|
215
|
+
const range = node.content.size > 0 && (sameKind || result?.type.name === "paragraph") ? {
|
|
216
|
+
from: pos + 1,
|
|
217
|
+
to: pos + 1 + node.content.size
|
|
218
|
+
} : whole;
|
|
219
|
+
return {
|
|
220
|
+
id: op.op,
|
|
221
|
+
range: captureRange(editor, range),
|
|
222
|
+
markdown
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
//#endregion
|
|
226
|
+
export { AGENT_OP_OUTCOME_KEYS, agentOpChange, agentOpSnippet, selectionScope };
|
|
227
|
+
|
|
228
|
+
//# sourceMappingURL=agent-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ops.js","names":[],"sources":["../../../src/features/ai/agent-ops.ts"],"sourcesContent":["import type { Editor } from '@tiptap/core'\nimport { Fragment, type Node as PMNode } from '@tiptap/pm/model'\nimport type { EditorState } from '@tiptap/pm/state'\nimport { blockConversion, captureRange, conversionsOf, isWrapperBlock, parseBlocks, parseConversionTarget, selectionRange } from '../../core'\nimport { BLOCK_ID_ATTR, blockIdOf, findBlockById, isBlockContainer, isChromeNode } from '../../core/schema'\nimport type { MessageKey, Translate } from '../../i18n'\nimport type { AiReviewChange } from './ai-review'\nimport { type AgentOp, type AgentOpOutcome, agentOpTarget } from './protocol'\n\n/** Edit scope of a non-empty selection: the top-level blocks it touches, and every block ID inside them. */\nexport interface AgentScope { blocks: number, ids: string[] }\n\n/** The scope chat edits are limited to: the top-level blocks the selection touches; null without a selection (whole document). */\nexport function selectionScope(state: EditorState): AgentScope | null {\n if (state.selection.empty) return null\n const { from, to } = selectionRange(state)\n const ids: string[] = []\n let blocks = 0\n state.doc.forEach((node, offset) => {\n if (offset >= to || offset + node.nodeSize <= from) return\n blocks++\n const own = blockIdOf(node)\n if (own) ids.push(own)\n node.descendants((child) => {\n const id = blockIdOf(child)\n if (id) ids.push(id)\n return !child.isTextblock\n })\n })\n return { blocks, ids }\n}\n\n/** Catalog keys of how the chat shows an outcome: the badge label and the badge's hover text. */\nexport const AGENT_OP_OUTCOME_KEYS: Record<AgentOpOutcome, { badge: MessageKey, hover: MessageKey }> = {\n pending: { badge: 'ai.opBadge.pending', hover: 'ai.opTitle.pending' },\n accepted: { badge: 'ai.opBadge.accepted', hover: 'ai.opTitle.accepted' },\n rejected: { badge: 'ai.opBadge.rejected', hover: 'ai.opTitle.rejected' },\n partial: { badge: 'ai.opBadge.partial', hover: 'ai.opTitle.partial' },\n invalid: { badge: 'ai.opBadge.invalid', hover: 'ai.opTitle.invalid' },\n unchanged: { badge: 'ai.opBadge.unchanged', hover: 'ai.opTitle.unchanged' },\n missing: { badge: 'ai.opBadge.missing', hover: 'ai.opTitle.missing' },\n overlap: { badge: 'ai.opBadge.overlap', hover: 'ai.opTitle.overlap' },\n empty: { badge: 'ai.opBadge.empty', hover: 'ai.opTitle.empty' },\n blocked: { badge: 'ai.opBadge.blocked', hover: 'ai.opTitle.blocked' },\n}\n\n/** Catalog keys of the snippets of text-less media blocks. */\nconst MEDIA_BLOCK_KEYS: Record<string, MessageKey> = { image: 'ai.op.snippet.image', audio: 'ai.op.snippet.audio', video: 'ai.op.snippet.video', file: 'ai.op.snippet.file' }\n\n/** Short text of the block an operation targets, for the chat („Dokumentanfang“ for an insertion at the start). */\nexport function agentOpSnippet(doc: PMNode, op: AgentOp, t: Translate): string {\n const target = agentOpTarget(op)\n if (target === null) return t('ai.op.snippet.documentStart')\n const node = findBlockById(doc, target)?.node\n if (!node) return t('ai.op.snippet.missing')\n const text = node.textContent.replace(/\\s+/g, ' ').trim()\n if (!text) return t(MEDIA_BLOCK_KEYS[node.type.name] ?? 'ai.op.snippet.emptyBlock')\n return text.length > 60 ? `${text.slice(0, 60)}…` : text\n}\n\n/** List and quote markers the model may echo from the document lines (`- `, `1. `, `> `) at the start of each line. */\nconst LINE_PREFIX = /^(?:[ \\t]*(?:[-*+]|\\d+[.)])[ \\t]+|[ \\t]*>[ \\t]?)+/gm\n\n/**\n * The review change of an operation, re-checked against the scope the request was sent with (`allowed`, null: whole\n * document): 'blocked' when it points outside, 'missing' when its block is gone, 'unchanged' for a conversion that\n * changes nothing or is impossible there.\n * - update: a single paragraph, or a single block of the same type and attributes (a speaker line of the same\n * speaker), is diffed within the block's content, so the block keeps its type and speaker; anything else (another\n * speaker's `**Name:**`, several blocks, a different block type) replaces the whole block. On a composite, a\n * `::: kind` fence (exactly one composite) replaces the whole composite, anything else only its body.\n * - delete: the block, or the smallest list item, list or quote around it that would be invalid without it.\n * - add: after the target's block in the document, in a composite body or in the body of a host block holding blocks\n * (a callout); a list of the same type after a list item goes after that item, a host block of the same type after\n * one of its body blocks after that whole block.\n * - convert: the block (a heading becoming a composite with its group) replaced by `convertBlockTo`'s result.\n */\nexport function agentOpChange(editor: Editor, op: AgentOp, allowed: ReadonlySet<string> | null): AiReviewChange | 'blocked' | 'missing' | 'unchanged' {\n const target = agentOpTarget(op)\n if (allowed && (target === null || !allowed.has(target))) return 'blocked'\n const { state } = editor\n const { doc, schema } = state\n\n if (op.type === 'add' && target === null) return { id: op.op, kind: 'insert', at: captureRange(editor, { from: 0, to: 0 }), markdown: op.markdown }\n const found = target === null ? null : findBlockById(doc, target)\n if (!found) return 'missing'\n const { node, pos } = found\n const $pos = doc.resolve(pos)\n\n if (op.type === 'add') {\n const firstType = parseBlocks(editor, op.markdown).blocks[0]?.type\n // After the block around the target that sits in the document, in a composite body or in a host block that holds\n // blocks (a callout), so an insertion after a body block stays inside its wrapper, unless it adds a wrapper of the\n // same type (then after the whole wrapper). Lists and quotes insert after the whole list or quote.\n const holdsBody = (n: PMNode) => isBlockContainer(n) || isWrapperBlock(n)\n let container = $pos.depth\n while (container > 0 && !holdsBody($pos.node(container))) container--\n let at = container === $pos.depth ? pos + node.nodeSize : $pos.after(container + 1)\n if (container > 0 && isWrapperBlock($pos.node(container)) && $pos.node(container).type.name === firstType) at = $pos.after(container)\n for (let depth = $pos.depth; depth > 0; depth--) {\n if ($pos.node(depth).type.name !== 'listItem') continue\n if ($pos.node(depth - 1).type.name === firstType) at = $pos.after(depth)\n break\n }\n return { id: op.op, kind: 'insert', at: captureRange(editor, { from: at, to: at }), markdown: op.markdown }\n }\n\n if (op.type === 'delete') {\n let from = pos\n let to = pos + node.nodeSize\n for (let $from = $pos; $from.depth > 0; $from = doc.resolve(from)) {\n const parent = $from.parent\n const start = $from.start()\n if (parent.type.validContent(parent.content.cut(0, from - start).append(parent.content.cut(to - start)))) break\n from = $from.before()\n to = $from.after()\n }\n return { id: op.op, kind: 'delete', range: captureRange(editor, { from, to }) }\n }\n\n if (op.type === 'convert') {\n const providers = conversionsOf(editor)\n const to = parseConversionTarget(providers, op.to)\n const conversion = to && blockConversion(providers, state, $pos, to)\n if (!conversion) return 'unchanged'\n return { id: op.op, kind: 'blocks', range: captureRange(editor, conversion), blocks: Fragment.from(conversion.blocks) }\n }\n\n const whole = { from: pos, to: pos + node.nodeSize }\n if (isBlockContainer(node)) {\n const { blocks } = parseBlocks(editor, op.markdown)\n if (blocks.length === 1 && blocks[0]!.type === node.type.name) return { id: op.op, range: captureRange(editor, whole), markdown: op.markdown }\n let body = pos + 1\n node.forEach((child) => {\n if (isChromeNode(child)) body += child.nodeSize\n })\n return { id: op.op, range: captureRange(editor, { from: body, to: pos + node.nodeSize - 1 }), markdown: op.markdown }\n }\n if (!node.isTextblock) return { id: op.op, range: captureRange(editor, whole), markdown: op.markdown }\n // Lines of blocks in lists and quotes carry their markers, which the model may echo; composite bodies carry none (a\n // fence the model writes there keeps its `> description` and list items).\n let marked = false\n for (let depth = $pos.depth; depth > 0 && !marked; depth--) marked = ['listItem', 'blockquote'].includes($pos.node(depth).type.name)\n const markdown = marked ? op.markdown.replace(LINE_PREFIX, '') : op.markdown\n const { blocks } = parseBlocks(editor, markdown)\n const result = blocks.length === 1 ? schema.nodeFromJSON(blocks[0]!) : null\n const sameKind = result?.type === node.type && Object.keys(node.attrs).every(name => name === BLOCK_ID_ATTR || result.attrs[name] === node.attrs[name])\n const inside = node.content.size > 0 && (sameKind || result?.type.name === 'paragraph')\n const range = inside ? { from: pos + 1, to: pos + 1 + node.content.size } : whole\n return { id: op.op, range: captureRange(editor, range), markdown }\n}\n"],"mappings":"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"}
|