@wonderwhy-er/desktop-commander 0.2.37 → 0.2.39
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/README.md +290 -100
- package/dist/command-manager.js +6 -3
- package/dist/config-field-definitions.d.ts +41 -0
- package/dist/config-field-definitions.js +37 -0
- package/dist/config-manager.d.ts +2 -0
- package/dist/config-manager.js +22 -2
- package/dist/handlers/filesystem-handlers.d.ts +5 -0
- package/dist/handlers/filesystem-handlers.js +19 -12
- package/dist/remote-device/desktop-commander-integration.js +1 -1
- package/dist/remote-device/remote-channel.js +1 -1
- package/dist/search-manager.js +31 -38
- package/dist/server.js +11 -4
- package/dist/terminal-manager.js +4 -2
- package/dist/tools/config.d.ts +71 -0
- package/dist/tools/config.js +117 -2
- package/dist/tools/edit.js +34 -1
- package/dist/tools/filesystem.js +91 -3
- package/dist/tools/improved-process-tools.js +2 -1
- package/dist/tools/schemas.d.ts +3 -0
- package/dist/tools/schemas.js +1 -0
- package/dist/types.d.ts +0 -1
- package/dist/ui/config-editor/app.d.ts +43 -0
- package/dist/ui/config-editor/app.js +840 -0
- package/dist/ui/config-editor/array-modal.d.ts +19 -0
- package/dist/ui/config-editor/array-modal.js +185 -0
- package/dist/ui/config-editor/config-editor-runtime.js +150 -0
- package/dist/ui/config-editor/index.html +13 -0
- package/dist/ui/config-editor/main.js +2 -0
- package/dist/ui/config-editor/src/App.d.ts +43 -0
- package/dist/ui/config-editor/src/App.js +840 -0
- package/dist/ui/config-editor/src/array-modal.d.ts +19 -0
- package/dist/ui/config-editor/src/array-modal.js +185 -0
- package/dist/ui/config-editor/src/components/layout.d.ts +4 -0
- package/dist/ui/config-editor/src/components/layout.js +83 -0
- package/dist/ui/config-editor/src/components/toolbar.d.ts +1 -0
- package/dist/ui/config-editor/src/components/toolbar.js +21 -0
- package/dist/ui/config-editor/src/config-values.d.ts +6 -0
- package/dist/ui/config-editor/src/config-values.js +61 -0
- package/dist/ui/config-editor/src/contracts.d.ts +14 -0
- package/dist/ui/config-editor/src/contracts.js +3 -0
- package/dist/ui/config-editor/src/directory-browser.d.ts +6 -0
- package/dist/ui/config-editor/src/directory-browser.js +71 -0
- package/dist/ui/config-editor/src/layout.d.ts +5 -0
- package/dist/ui/config-editor/src/layout.js +90 -0
- package/dist/ui/config-editor/src/main.js +2 -0
- package/dist/ui/config-editor/src/parsing.d.ts +5 -0
- package/dist/ui/config-editor/src/parsing.js +50 -0
- package/dist/ui/config-editor/src/toolbar.d.ts +1 -0
- package/dist/ui/config-editor/src/toolbar.js +18 -0
- package/dist/ui/config-editor/src/types.d.ts +17 -0
- package/dist/ui/config-editor/src/types.js +3 -0
- package/dist/ui/config-editor/src/utils/config-values.d.ts +9 -0
- package/dist/ui/config-editor/src/utils/config-values.js +61 -0
- package/dist/ui/config-editor/src/utils/directory-browser.d.ts +31 -0
- package/dist/ui/config-editor/src/utils/directory-browser.js +201 -0
- package/dist/ui/config-editor/src/utils/parsing.d.ts +8 -0
- package/dist/ui/config-editor/src/utils/parsing.js +50 -0
- package/dist/ui/config-editor/styles.css +587 -0
- package/dist/ui/file-preview/app.d.ts +8 -0
- package/dist/ui/file-preview/app.js +2020 -0
- package/dist/ui/file-preview/components/code-viewer.d.ts +6 -0
- package/dist/ui/file-preview/components/code-viewer.js +73 -0
- package/dist/ui/file-preview/components/highlighting.d.ts +2 -0
- package/dist/ui/file-preview/components/highlighting.js +54 -0
- package/dist/ui/file-preview/components/html-renderer.d.ts +5 -0
- package/dist/ui/file-preview/components/html-renderer.js +47 -0
- package/dist/ui/file-preview/components/markdown-renderer.d.ts +1 -0
- package/dist/ui/file-preview/components/markdown-renderer.js +67 -0
- package/dist/ui/file-preview/components/toolbar.d.ts +6 -0
- package/dist/ui/file-preview/components/toolbar.js +75 -0
- package/dist/ui/file-preview/image-preview.d.ts +3 -0
- package/dist/ui/file-preview/image-preview.js +21 -0
- package/dist/ui/file-preview/main.js +5 -0
- package/dist/ui/file-preview/markdown/editor.d.ts +36 -0
- package/dist/ui/file-preview/markdown/editor.js +643 -0
- package/dist/ui/file-preview/markdown/linking.d.ts +9 -0
- package/dist/ui/file-preview/markdown/linking.js +210 -0
- package/dist/ui/file-preview/markdown/outline.d.ts +7 -0
- package/dist/ui/file-preview/markdown/outline.js +40 -0
- package/dist/ui/file-preview/markdown/preview.d.ts +8 -0
- package/dist/ui/file-preview/markdown/preview.js +33 -0
- package/dist/ui/file-preview/markdown/slugify.d.ts +3 -0
- package/dist/ui/file-preview/markdown/slugify.js +31 -0
- package/dist/ui/file-preview/markdown/toc.d.ts +11 -0
- package/dist/ui/file-preview/markdown/toc.js +75 -0
- package/dist/ui/file-preview/markdown/utils.d.ts +1 -0
- package/dist/ui/file-preview/markdown/utils.js +15 -0
- package/dist/ui/file-preview/markdown/workspace-controller.d.ts +25 -0
- package/dist/ui/file-preview/markdown/workspace-controller.js +40 -0
- package/dist/ui/file-preview/preview-runtime.js +399 -13969
- package/dist/ui/file-preview/shared/preview-file-types.d.ts +1 -1
- package/dist/ui/file-preview/shared/preview-file-types.js +3 -1
- package/dist/ui/file-preview/src/App.d.ts +4 -0
- package/dist/ui/file-preview/src/App.js +564 -0
- package/dist/ui/file-preview/src/components/CodeViewer.d.ts +6 -0
- package/dist/ui/file-preview/src/components/CodeViewer.js +60 -0
- package/dist/ui/file-preview/src/components/HtmlRenderer.d.ts +8 -0
- package/dist/ui/file-preview/src/components/HtmlRenderer.js +45 -0
- package/dist/ui/file-preview/src/components/MarkdownRenderer.d.ts +1 -0
- package/dist/ui/file-preview/src/components/MarkdownRenderer.js +15 -0
- package/dist/ui/file-preview/src/components/editor-toolbar.d.ts +15 -0
- package/dist/ui/file-preview/src/components/editor-toolbar.js +384 -0
- package/dist/ui/file-preview/src/components/html-renderer.d.ts +1 -5
- package/dist/ui/file-preview/src/components/html-renderer.js +11 -27
- package/dist/ui/file-preview/src/components/markdown-editor.d.ts +29 -0
- package/dist/ui/file-preview/src/components/markdown-editor.js +535 -0
- package/dist/ui/file-preview/src/components/markdown-renderer.js +47 -9
- package/dist/ui/file-preview/src/directory-controller.d.ts +8 -0
- package/dist/ui/file-preview/src/directory-controller.js +233 -0
- package/dist/ui/file-preview/src/document-layout.d.ts +20 -0
- package/dist/ui/file-preview/src/document-layout.js +109 -0
- package/dist/ui/file-preview/src/document-outline.d.ts +17 -0
- package/dist/ui/file-preview/src/document-outline.js +97 -0
- package/dist/ui/file-preview/src/document-workspace.d.ts +19 -0
- package/dist/ui/file-preview/src/document-workspace.js +33 -0
- package/dist/ui/file-preview/src/file-type-handlers.d.ts +10 -0
- package/dist/ui/file-preview/src/file-type-handlers.js +98 -0
- package/dist/ui/file-preview/src/host/external-actions.d.ts +19 -0
- package/dist/ui/file-preview/src/host/external-actions.js +94 -0
- package/dist/ui/file-preview/src/host/selection-context.d.ts +9 -0
- package/dist/ui/file-preview/src/host/selection-context.js +106 -0
- package/dist/ui/file-preview/src/markdown/block-merge.d.ts +25 -0
- package/dist/ui/file-preview/src/markdown/block-merge.js +86 -0
- package/dist/ui/file-preview/src/markdown/conflict-dialog.d.ts +40 -0
- package/dist/ui/file-preview/src/markdown/conflict-dialog.js +163 -0
- package/dist/ui/file-preview/src/markdown/controller.d.ts +38 -0
- package/dist/ui/file-preview/src/markdown/controller.js +921 -0
- package/dist/ui/file-preview/src/markdown/editor.d.ts +35 -0
- package/dist/ui/file-preview/src/markdown/editor.js +691 -0
- package/dist/ui/file-preview/src/markdown/link-modal.d.ts +13 -0
- package/dist/ui/file-preview/src/markdown/link-modal.js +213 -0
- package/dist/ui/file-preview/src/markdown/linking.d.ts +16 -0
- package/dist/ui/file-preview/src/markdown/linking.js +228 -0
- package/dist/ui/file-preview/src/markdown/outline.d.ts +2 -0
- package/dist/ui/file-preview/src/markdown/outline.js +16 -0
- package/dist/ui/file-preview/src/markdown/parser.d.ts +30 -0
- package/dist/ui/file-preview/src/markdown/parser.js +38 -0
- package/dist/ui/file-preview/src/markdown/preview.d.ts +1 -0
- package/dist/ui/file-preview/src/markdown/preview.js +20 -0
- package/dist/ui/file-preview/src/markdown/raw-editor.d.ts +8 -0
- package/dist/ui/file-preview/src/markdown/raw-editor.js +61 -0
- package/dist/ui/file-preview/src/markdown/selection-toolbar.d.ts +14 -0
- package/dist/ui/file-preview/src/markdown/selection-toolbar.js +128 -0
- package/dist/ui/file-preview/src/markdown/slugify.d.ts +3 -0
- package/dist/ui/file-preview/src/markdown/slugify.js +31 -0
- package/dist/ui/file-preview/src/markdown/toc.d.ts +11 -0
- package/dist/ui/file-preview/src/markdown/toc.js +75 -0
- package/dist/ui/file-preview/src/markdown/utils.d.ts +1 -0
- package/dist/ui/file-preview/src/markdown/utils.js +15 -0
- package/dist/ui/file-preview/src/markdown-workspace/editor.d.ts +36 -0
- package/dist/ui/file-preview/src/markdown-workspace/editor.js +643 -0
- package/dist/ui/file-preview/src/markdown-workspace/linking.d.ts +9 -0
- package/dist/ui/file-preview/src/markdown-workspace/linking.js +210 -0
- package/dist/ui/file-preview/src/markdown-workspace/outline.d.ts +7 -0
- package/dist/ui/file-preview/src/markdown-workspace/outline.js +40 -0
- package/dist/ui/file-preview/src/markdown-workspace/preview.d.ts +8 -0
- package/dist/ui/file-preview/src/markdown-workspace/preview.js +33 -0
- package/dist/ui/file-preview/src/markdown-workspace/slugify.d.ts +3 -0
- package/dist/ui/file-preview/src/markdown-workspace/slugify.js +31 -0
- package/dist/ui/file-preview/src/markdown-workspace/toc.d.ts +11 -0
- package/dist/ui/file-preview/src/markdown-workspace/toc.js +75 -0
- package/dist/ui/file-preview/src/markdown-workspace/utils.d.ts +1 -0
- package/dist/ui/file-preview/src/markdown-workspace/utils.js +15 -0
- package/dist/ui/file-preview/src/markdown-workspace/workspace-controller.d.ts +25 -0
- package/dist/ui/file-preview/src/markdown-workspace/workspace-controller.js +40 -0
- package/dist/ui/file-preview/src/model.d.ts +34 -0
- package/dist/ui/file-preview/src/panel-actions.d.ts +17 -0
- package/dist/ui/file-preview/src/panel-actions.js +182 -0
- package/dist/ui/file-preview/src/path-utils.d.ts +6 -0
- package/dist/ui/file-preview/src/path-utils.js +64 -0
- package/dist/ui/file-preview/src/payload-utils.d.ts +11 -0
- package/dist/ui/file-preview/src/payload-utils.js +94 -0
- package/dist/ui/file-preview/styles.css +1144 -277
- package/dist/ui/file-preview/types.d.ts +1 -0
- package/dist/ui/file-preview/types.js +1 -0
- package/dist/ui/resources.d.ts +7 -0
- package/dist/ui/resources.js +16 -2
- package/dist/ui/server-integration.d.ts +13 -0
- package/dist/ui/server-integration.js +31 -0
- package/dist/ui/shared/ToolHeader.d.ts +9 -0
- package/dist/ui/shared/ToolHeader.js +29 -0
- package/dist/ui/shared/app-bootstrap.d.ts +9 -0
- package/dist/ui/shared/app-bootstrap.js +15 -0
- package/dist/ui/shared/compact-row.d.ts +11 -0
- package/dist/ui/shared/compact-row.js +18 -0
- package/dist/ui/shared/guards.d.ts +1 -0
- package/dist/ui/shared/guards.js +3 -0
- package/dist/ui/shared/host-context.d.ts +15 -0
- package/dist/ui/shared/host-context.js +51 -0
- package/dist/ui/shared/host-lifecycle.d.ts +1 -0
- package/dist/ui/shared/host-lifecycle.js +8 -2
- package/dist/ui/shared/tool-bridge.d.ts +30 -0
- package/dist/ui/shared/tool-bridge.js +137 -0
- package/dist/ui/shared/tool-shell.d.ts +9 -0
- package/dist/ui/shared/tool-shell.js +46 -4
- package/dist/ui/shared/ui-event-tracker.d.ts +9 -0
- package/dist/ui/shared/ui-event-tracker.js +27 -0
- package/dist/ui/shared/widget-state.d.ts +6 -1
- package/dist/ui/shared/widget-state.js +102 -4
- package/dist/utils/capture.js +3 -3
- package/dist/utils/files/base.d.ts +2 -0
- package/dist/utils/open-browser.js +1 -1
- package/dist/utils/ui-call-context.d.ts +8 -0
- package/dist/utils/ui-call-context.js +72 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +13 -4
- package/dist/data/spec-kit-prompts.json +0 -123
- package/dist/handlers/node-handlers.d.ts +0 -6
- package/dist/handlers/node-handlers.js +0 -73
- package/dist/handlers/test-crash-handler.d.ts +0 -11
- package/dist/handlers/test-crash-handler.js +0 -26
- package/dist/http-index.d.ts +0 -45
- package/dist/http-index.js +0 -51
- package/dist/http-server-auto-tunnel.js +0 -667
- package/dist/http-server-named-tunnel.d.ts +0 -2
- package/dist/http-server-named-tunnel.js +0 -167
- package/dist/http-server-tunnel.d.ts +0 -2
- package/dist/http-server-tunnel.js +0 -111
- package/dist/http-server.d.ts +0 -2
- package/dist/http-server.js +0 -270
- package/dist/index-oauth.d.ts +0 -2
- package/dist/index-oauth.js +0 -201
- package/dist/oauth/auth-middleware.d.ts +0 -20
- package/dist/oauth/auth-middleware.js +0 -62
- package/dist/oauth/index.d.ts +0 -3
- package/dist/oauth/index.js +0 -3
- package/dist/oauth/oauth-manager.d.ts +0 -80
- package/dist/oauth/oauth-manager.js +0 -179
- package/dist/oauth/oauth-routes.d.ts +0 -3
- package/dist/oauth/oauth-routes.js +0 -377
- package/dist/oauth/provider.d.ts +0 -22
- package/dist/oauth/provider.js +0 -124
- package/dist/oauth/server.d.ts +0 -18
- package/dist/oauth/server.js +0 -160
- package/dist/oauth/types.d.ts +0 -54
- package/dist/oauth/types.js +0 -2
- package/dist/remote-device/templates/auth-success.d.ts +0 -1
- package/dist/remote-device/templates/auth-success.js +0 -30
- package/dist/setup.log +0 -275
- package/dist/test-setup.js +0 -14
- package/dist/tools/docx/builders/html-builder.d.ts +0 -17
- package/dist/tools/docx/builders/html-builder.js +0 -92
- package/dist/tools/docx/builders/image.d.ts +0 -14
- package/dist/tools/docx/builders/image.js +0 -84
- package/dist/tools/docx/builders/index.d.ts +0 -11
- package/dist/tools/docx/builders/index.js +0 -11
- package/dist/tools/docx/builders/markdown-builder.d.ts +0 -2
- package/dist/tools/docx/builders/markdown-builder.js +0 -260
- package/dist/tools/docx/builders/paragraph.d.ts +0 -12
- package/dist/tools/docx/builders/paragraph.js +0 -29
- package/dist/tools/docx/builders/table.d.ts +0 -10
- package/dist/tools/docx/builders/table.js +0 -138
- package/dist/tools/docx/builders/utils.d.ts +0 -5
- package/dist/tools/docx/builders/utils.js +0 -18
- package/dist/tools/docx/constants.d.ts +0 -32
- package/dist/tools/docx/constants.js +0 -61
- package/dist/tools/docx/converters/markdown-to-html.d.ts +0 -17
- package/dist/tools/docx/converters/markdown-to-html.js +0 -111
- package/dist/tools/docx/create.d.ts +0 -21
- package/dist/tools/docx/create.js +0 -386
- package/dist/tools/docx/dom.d.ts +0 -139
- package/dist/tools/docx/dom.js +0 -448
- package/dist/tools/docx/errors.d.ts +0 -28
- package/dist/tools/docx/errors.js +0 -48
- package/dist/tools/docx/extractors/images.d.ts +0 -14
- package/dist/tools/docx/extractors/images.js +0 -40
- package/dist/tools/docx/extractors/metadata.d.ts +0 -14
- package/dist/tools/docx/extractors/metadata.js +0 -64
- package/dist/tools/docx/extractors/sections.d.ts +0 -14
- package/dist/tools/docx/extractors/sections.js +0 -61
- package/dist/tools/docx/html.d.ts +0 -17
- package/dist/tools/docx/html.js +0 -111
- package/dist/tools/docx/index.d.ts +0 -10
- package/dist/tools/docx/index.js +0 -10
- package/dist/tools/docx/markdown.d.ts +0 -84
- package/dist/tools/docx/markdown.js +0 -507
- package/dist/tools/docx/modify.d.ts +0 -28
- package/dist/tools/docx/modify.js +0 -271
- package/dist/tools/docx/operations/handlers/index.d.ts +0 -39
- package/dist/tools/docx/operations/handlers/index.js +0 -152
- package/dist/tools/docx/operations/html-manipulator.d.ts +0 -24
- package/dist/tools/docx/operations/html-manipulator.js +0 -352
- package/dist/tools/docx/operations/index.d.ts +0 -14
- package/dist/tools/docx/operations/index.js +0 -61
- package/dist/tools/docx/operations/operation-handlers.d.ts +0 -3
- package/dist/tools/docx/operations/operation-handlers.js +0 -67
- package/dist/tools/docx/operations/preprocessor.d.ts +0 -14
- package/dist/tools/docx/operations/preprocessor.js +0 -44
- package/dist/tools/docx/operations/xml-replacer.d.ts +0 -9
- package/dist/tools/docx/operations/xml-replacer.js +0 -35
- package/dist/tools/docx/operations.d.ts +0 -13
- package/dist/tools/docx/operations.js +0 -13
- package/dist/tools/docx/ops/delete-paragraph-at-body-index.d.ts +0 -11
- package/dist/tools/docx/ops/delete-paragraph-at-body-index.js +0 -23
- package/dist/tools/docx/ops/header-replace-text-exact.d.ts +0 -13
- package/dist/tools/docx/ops/header-replace-text-exact.js +0 -55
- package/dist/tools/docx/ops/index.d.ts +0 -17
- package/dist/tools/docx/ops/index.js +0 -70
- package/dist/tools/docx/ops/insert-image-after-text.d.ts +0 -24
- package/dist/tools/docx/ops/insert-image-after-text.js +0 -128
- package/dist/tools/docx/ops/insert-paragraph-after-text.d.ts +0 -12
- package/dist/tools/docx/ops/insert-paragraph-after-text.js +0 -74
- package/dist/tools/docx/ops/insert-table-after-text.d.ts +0 -19
- package/dist/tools/docx/ops/insert-table-after-text.js +0 -57
- package/dist/tools/docx/ops/replace-hyperlink-url.d.ts +0 -12
- package/dist/tools/docx/ops/replace-hyperlink-url.js +0 -37
- package/dist/tools/docx/ops/replace-paragraph-at-body-index.d.ts +0 -9
- package/dist/tools/docx/ops/replace-paragraph-at-body-index.js +0 -25
- package/dist/tools/docx/ops/replace-paragraph-text-exact.d.ts +0 -21
- package/dist/tools/docx/ops/replace-paragraph-text-exact.js +0 -36
- package/dist/tools/docx/ops/replace-table-cell-text.d.ts +0 -25
- package/dist/tools/docx/ops/replace-table-cell-text.js +0 -85
- package/dist/tools/docx/ops/set-color-for-paragraph-exact.d.ts +0 -9
- package/dist/tools/docx/ops/set-color-for-paragraph-exact.js +0 -24
- package/dist/tools/docx/ops/set-color-for-style.d.ts +0 -13
- package/dist/tools/docx/ops/set-color-for-style.js +0 -31
- package/dist/tools/docx/ops/set-paragraph-style-at-body-index.d.ts +0 -8
- package/dist/tools/docx/ops/set-paragraph-style-at-body-index.js +0 -57
- package/dist/tools/docx/ops/table-set-cell-text.d.ts +0 -9
- package/dist/tools/docx/ops/table-set-cell-text.js +0 -40
- package/dist/tools/docx/parsers/image-extractor.d.ts +0 -18
- package/dist/tools/docx/parsers/image-extractor.js +0 -61
- package/dist/tools/docx/parsers/index.d.ts +0 -9
- package/dist/tools/docx/parsers/index.js +0 -9
- package/dist/tools/docx/parsers/paragraph-parser.d.ts +0 -2
- package/dist/tools/docx/parsers/paragraph-parser.js +0 -88
- package/dist/tools/docx/parsers/table-parser.d.ts +0 -9
- package/dist/tools/docx/parsers/table-parser.js +0 -72
- package/dist/tools/docx/parsers/xml-parser.d.ts +0 -25
- package/dist/tools/docx/parsers/xml-parser.js +0 -71
- package/dist/tools/docx/parsers/zip-reader.d.ts +0 -23
- package/dist/tools/docx/parsers/zip-reader.js +0 -52
- package/dist/tools/docx/read.d.ts +0 -27
- package/dist/tools/docx/read.js +0 -308
- package/dist/tools/docx/relationships.d.ts +0 -22
- package/dist/tools/docx/relationships.js +0 -76
- package/dist/tools/docx/structure.d.ts +0 -25
- package/dist/tools/docx/structure.js +0 -102
- package/dist/tools/docx/styled-html-parser.d.ts +0 -23
- package/dist/tools/docx/styled-html-parser.js +0 -1262
- package/dist/tools/docx/types.d.ts +0 -213
- package/dist/tools/docx/types.js +0 -5
- package/dist/tools/docx/utils/escaping.d.ts +0 -13
- package/dist/tools/docx/utils/escaping.js +0 -26
- package/dist/tools/docx/utils/images.d.ts +0 -9
- package/dist/tools/docx/utils/images.js +0 -26
- package/dist/tools/docx/utils/index.d.ts +0 -12
- package/dist/tools/docx/utils/index.js +0 -17
- package/dist/tools/docx/utils/markdown.d.ts +0 -13
- package/dist/tools/docx/utils/markdown.js +0 -32
- package/dist/tools/docx/utils/paths.d.ts +0 -15
- package/dist/tools/docx/utils/paths.js +0 -27
- package/dist/tools/docx/utils/versioning.d.ts +0 -25
- package/dist/tools/docx/utils/versioning.js +0 -55
- package/dist/tools/docx/utils.d.ts +0 -101
- package/dist/tools/docx/utils.js +0 -299
- package/dist/tools/docx/validate.d.ts +0 -33
- package/dist/tools/docx/validate.js +0 -49
- package/dist/tools/docx/validators.d.ts +0 -13
- package/dist/tools/docx/validators.js +0 -40
- package/dist/tools/docx/write.d.ts +0 -17
- package/dist/tools/docx/write.js +0 -88
- package/dist/tools/docx/xml-view-test.js +0 -63
- package/dist/tools/docx/xml-view.d.ts +0 -56
- package/dist/tools/docx/xml-view.js +0 -169
- package/dist/tools/docx/zip.d.ts +0 -21
- package/dist/tools/docx/zip.js +0 -35
- package/dist/tools/pdf-processor.js +0 -3
- package/dist/tools/search.d.ts +0 -32
- package/dist/tools/search.js +0 -202
- package/dist/ui/file-preview/src/app.d.ts +0 -4
- package/dist/ui/file-preview/src/app.js +0 -800
- package/dist/utils/crash-logger.d.ts +0 -18
- package/dist/utils/crash-logger.js +0 -44
- package/dist/utils/dedent.d.ts +0 -8
- package/dist/utils/dedent.js +0 -38
- /package/dist/{http-server-auto-tunnel.d.ts → ui/config-editor/main.d.ts} +0 -0
- /package/dist/{test-docx.d.ts → ui/config-editor/src/main.d.ts} +0 -0
- /package/dist/{tools/docx/xml-view-test.d.ts → ui/file-preview/main.d.ts} +0 -0
- /package/dist/ui/file-preview/src/components/{toolbar.d.ts → Toolbar.d.ts} +0 -0
- /package/dist/ui/file-preview/src/components/{toolbar.js → Toolbar.js} +0 -0
- /package/dist/{tools/pdf-processor.d.ts → ui/file-preview/src/model.js} +0 -0
package/dist/tools/edit.js
CHANGED
|
@@ -23,6 +23,8 @@ import path from 'path';
|
|
|
23
23
|
import { detectLineEnding, normalizeLineEndings } from '../utils/lineEndingHandler.js';
|
|
24
24
|
import { configManager } from '../config-manager.js';
|
|
25
25
|
import { fuzzySearchLogger } from '../utils/fuzzySearchLogger.js';
|
|
26
|
+
import { resolvePreviewFileType } from '../ui/file-preview/shared/preview-file-types.js';
|
|
27
|
+
import { resolveAbsolutePath } from '../handlers/filesystem-handlers.js';
|
|
26
28
|
/**
|
|
27
29
|
* Threshold for fuzzy matching - similarity must be at least this value to be considered
|
|
28
30
|
* (0-1 scale where 1 is perfect match and 0 is completely different)
|
|
@@ -155,11 +157,30 @@ RECOMMENDATION: For large search/replace operations, consider breaking them into
|
|
|
155
157
|
}
|
|
156
158
|
await writeFile(filePath, newContent);
|
|
157
159
|
capture('server_edit_block_exact_success', { fileExtension: fileExtension, expectedReplacements, hasWarning: warningMessage !== "" });
|
|
160
|
+
const resolvedEditPath = resolveAbsolutePath(filePath);
|
|
161
|
+
// Show a partial preview centered on the edited area
|
|
162
|
+
const newLines = newContent.split('\n');
|
|
163
|
+
const totalLines = newLines.length;
|
|
164
|
+
const changePos = content.indexOf(normalizedSearch);
|
|
165
|
+
const changeStartLine = changePos >= 0 ? newContent.substring(0, changePos).split('\n').length - 1 : 0;
|
|
166
|
+
const changeLineCount = block.replace.split('\n').length;
|
|
167
|
+
const contextLines = 10;
|
|
168
|
+
const previewStart = Math.max(0, changeStartLine - contextLines);
|
|
169
|
+
const previewEnd = Math.min(totalLines, changeStartLine + changeLineCount + contextLines);
|
|
170
|
+
const previewContent = newLines.slice(previewStart, previewEnd).join('\n');
|
|
171
|
+
const previewLineCount = previewEnd - previewStart;
|
|
172
|
+
const remaining = totalLines - previewEnd;
|
|
173
|
+
const statusLine = `[Reading ${previewLineCount} lines from ${previewStart === 0 ? 'start' : `line ${previewStart}`} (total: ${totalLines} lines, ${remaining} remaining)]\n\n`;
|
|
158
174
|
return {
|
|
159
175
|
content: [{
|
|
160
176
|
type: "text",
|
|
161
|
-
text:
|
|
177
|
+
text: `${statusLine}${previewContent}`
|
|
162
178
|
}],
|
|
179
|
+
structuredContent: {
|
|
180
|
+
fileName: path.basename(resolvedEditPath),
|
|
181
|
+
filePath: resolvedEditPath,
|
|
182
|
+
fileType: resolvePreviewFileType(resolvedEditPath),
|
|
183
|
+
},
|
|
163
184
|
};
|
|
164
185
|
}
|
|
165
186
|
// If exact match found but count doesn't match expected, inform the user
|
|
@@ -337,11 +358,17 @@ export async function handleEditBlock(args) {
|
|
|
337
358
|
try {
|
|
338
359
|
// parsed.range is guaranteed non-empty string by hasRange check above
|
|
339
360
|
await handler.editRange(validatedPath, parsed.range, content, parsed.options);
|
|
361
|
+
const resolvedRangePath = resolveAbsolutePath(parsed.file_path);
|
|
340
362
|
return {
|
|
341
363
|
content: [{
|
|
342
364
|
type: "text",
|
|
343
365
|
text: `Successfully updated range ${parsed.range} in ${parsed.file_path}`
|
|
344
366
|
}],
|
|
367
|
+
structuredContent: {
|
|
368
|
+
fileName: path.basename(resolvedRangePath),
|
|
369
|
+
filePath: resolvedRangePath,
|
|
370
|
+
fileType: resolvePreviewFileType(resolvedRangePath),
|
|
371
|
+
},
|
|
345
372
|
};
|
|
346
373
|
}
|
|
347
374
|
catch (error) {
|
|
@@ -366,11 +393,17 @@ export async function handleEditBlock(args) {
|
|
|
366
393
|
expected_replacements: parsed.expected_replacements,
|
|
367
394
|
});
|
|
368
395
|
if (result.success) {
|
|
396
|
+
const resolvedEditRangePath = resolveAbsolutePath(parsed.file_path);
|
|
369
397
|
return {
|
|
370
398
|
content: [{
|
|
371
399
|
type: "text",
|
|
372
400
|
text: `Successfully applied ${result.editsApplied} edit(s) to ${parsed.file_path}`
|
|
373
401
|
}],
|
|
402
|
+
structuredContent: {
|
|
403
|
+
fileName: path.basename(resolvedEditRangePath),
|
|
404
|
+
filePath: resolvedEditRangePath,
|
|
405
|
+
fileType: resolvePreviewFileType(resolvedEditRangePath),
|
|
406
|
+
},
|
|
374
407
|
};
|
|
375
408
|
}
|
|
376
409
|
const errorMsg = result.errors?.map(e => e.error).join('; ') || 'Unknown error';
|
package/dist/tools/filesystem.js
CHANGED
|
@@ -46,6 +46,45 @@ async function getDefaultReadLength() {
|
|
|
46
46
|
const config = await configManager.getConfig();
|
|
47
47
|
return config.fileReadLineLimit ?? 1000; // Default to 1000 lines if not set
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Returns a helpful error message when a file operation fails with a permission
|
|
51
|
+
* or timeout error.
|
|
52
|
+
*
|
|
53
|
+
* Lists all common causes without path-based detection — the AI receiving this
|
|
54
|
+
* error should inspect the path and inform the user which cause is most likely
|
|
55
|
+
* (e.g. cloud storage folder, network drive, system file, locked file, etc.)
|
|
56
|
+
*/
|
|
57
|
+
function buildPermissionError(filePath, errCode) {
|
|
58
|
+
const isMac = process.platform === 'darwin';
|
|
59
|
+
const isTimeout = errCode === 'ETIMEDOUT';
|
|
60
|
+
const lines = [
|
|
61
|
+
`Cannot read file — ${isTimeout ? 'operation timed out' : 'permission denied'} (${errCode}).`,
|
|
62
|
+
`Path: ${filePath}`,
|
|
63
|
+
``,
|
|
64
|
+
`[AI: based on the path above, determine which cause is most likely and explain it to the user.]`,
|
|
65
|
+
``,
|
|
66
|
+
`Possible causes and fixes:`,
|
|
67
|
+
` 1. File is in cloud storage (Google Drive / iCloud / Dropbox / OneDrive) but not downloaded locally.`,
|
|
68
|
+
` → Right-click the file and choose "Download Now", "Make Available Offline", or "Keep on This Device".`,
|
|
69
|
+
` 2. Cloud storage app is not running or not signed in.`,
|
|
70
|
+
` → Open your cloud storage app and make sure it is syncing.`,
|
|
71
|
+
` 3. File is on a network drive or virtual filesystem that is currently unavailable.`,
|
|
72
|
+
` → Check that the network share or drive is mounted and accessible.`,
|
|
73
|
+
` 4. File has restricted permissions (e.g. system file, locked by another process, or chmod 000).`,
|
|
74
|
+
` → Check file permissions or close any app that may have the file open.`,
|
|
75
|
+
` 5. The app does not have permission to access this location (macOS Full Disk Access).`,
|
|
76
|
+
];
|
|
77
|
+
if (isMac) {
|
|
78
|
+
lines.push(` → Go to System Settings → Privacy & Security → Full Disk Access and enable Claude.`);
|
|
79
|
+
lines.push(` → To open that pane directly, run in terminal:`);
|
|
80
|
+
lines.push(` open "x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles"`);
|
|
81
|
+
lines.push(` Then find "Claude" in the list and enable the toggle next to it.`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
lines.push(` → Check that the app has permission to access this file location.`);
|
|
85
|
+
}
|
|
86
|
+
return new Error(lines.join('\n'));
|
|
87
|
+
}
|
|
49
88
|
// Initialize allowed directories from configuration
|
|
50
89
|
async function getAllowedDirs() {
|
|
51
90
|
try {
|
|
@@ -307,6 +346,35 @@ export async function readFileFromDisk(filePath, options) {
|
|
|
307
346
|
const validPath = await validatePath(filePath);
|
|
308
347
|
// Get file extension for telemetry
|
|
309
348
|
const fileExtension = getFileExtension(validPath);
|
|
349
|
+
// Check if path is a directory — return listing instead of EISDIR error
|
|
350
|
+
try {
|
|
351
|
+
const stats = await fs.stat(validPath);
|
|
352
|
+
if (stats.isDirectory()) {
|
|
353
|
+
const dirListOp = async () => {
|
|
354
|
+
const entries = await listDirectory(validPath);
|
|
355
|
+
const listing = entries.join('\n');
|
|
356
|
+
return {
|
|
357
|
+
content: `This is a directory, not a file. Use the list_directory tool instead of read_file for directories.\n\n${listing}`,
|
|
358
|
+
mimeType: 'text/plain',
|
|
359
|
+
metadata: { isImage: false, isDirectory: true }
|
|
360
|
+
};
|
|
361
|
+
};
|
|
362
|
+
const dirResult = await withTimeout(dirListOp(), FILE_OPERATION_TIMEOUTS.FILE_READ, 'Directory listing fallback', null);
|
|
363
|
+
if (dirResult === null) {
|
|
364
|
+
throw new Error(`Directory listing timed out for: ${filePath}`);
|
|
365
|
+
}
|
|
366
|
+
return dirResult;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
// If stat itself failed, fall through to the read path which will produce a proper error.
|
|
371
|
+
// But if this was a directory-listing error, re-throw — don't let it fall into the file-read path.
|
|
372
|
+
const err = error;
|
|
373
|
+
if (err.message?.includes('Directory listing') || err.message?.includes('list_directory')) {
|
|
374
|
+
throw error;
|
|
375
|
+
}
|
|
376
|
+
// stat() failed (e.g. ENOENT) — fall through to the read path below
|
|
377
|
+
}
|
|
310
378
|
// Check file size before attempting to read
|
|
311
379
|
try {
|
|
312
380
|
const stats = await fs.stat(validPath);
|
|
@@ -357,7 +425,20 @@ export async function readFileFromDisk(filePath, options) {
|
|
|
357
425
|
};
|
|
358
426
|
};
|
|
359
427
|
// Execute with timeout
|
|
360
|
-
|
|
428
|
+
let result;
|
|
429
|
+
try {
|
|
430
|
+
result = await withTimeout(readOperation(), FILE_OPERATION_TIMEOUTS.FILE_READ, `Read file operation for ${filePath}`, null);
|
|
431
|
+
}
|
|
432
|
+
catch (error) {
|
|
433
|
+
const err = error;
|
|
434
|
+
// withTimeout rejects with a plain string "__ERROR__: ... timed out after N seconds"
|
|
435
|
+
// when defaultValue is null — it has no .code property, so check for that too.
|
|
436
|
+
const isWithTimeoutString = typeof error === 'string' && error.startsWith('__ERROR__:');
|
|
437
|
+
if (isWithTimeoutString || err.code === 'EPERM' || err.code === 'EACCES' || err.code === 'ETIMEDOUT') {
|
|
438
|
+
throw buildPermissionError(filePath, isWithTimeoutString ? 'ETIMEDOUT' : err.code);
|
|
439
|
+
}
|
|
440
|
+
throw error;
|
|
441
|
+
}
|
|
361
442
|
if (result == null) {
|
|
362
443
|
// Handles the impossible case where withTimeout resolves to null instead of throwing
|
|
363
444
|
throw new Error('Failed to read the file');
|
|
@@ -490,9 +571,16 @@ export async function listDirectory(dirPath, depth = 2) {
|
|
|
490
571
|
entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
491
572
|
}
|
|
492
573
|
catch (error) {
|
|
493
|
-
|
|
574
|
+
const err = error;
|
|
494
575
|
const displayPath = relativePath || path.basename(currentPath);
|
|
495
|
-
|
|
576
|
+
// Keep [DENIED] prefix so UI parser regex still matches.
|
|
577
|
+
// Append a hint for permission/timeout errors so user gets context.
|
|
578
|
+
if (err.code === 'EPERM' || err.code === 'EACCES' || err.code === 'ETIMEDOUT') {
|
|
579
|
+
results.push(`[DENIED] ${displayPath} — not accessible (permission denied, cloud-only file, or Full Disk Access not granted)`);
|
|
580
|
+
}
|
|
581
|
+
else {
|
|
582
|
+
results.push(`[DENIED] ${displayPath}`);
|
|
583
|
+
}
|
|
496
584
|
return;
|
|
497
585
|
}
|
|
498
586
|
// Apply filtering for nested directories (not top level)
|
|
@@ -27,7 +27,8 @@ async function executeNodeCode(code, timeout_ms = 30000) {
|
|
|
27
27
|
const result = await new Promise((resolve) => {
|
|
28
28
|
const proc = spawn(process.execPath, [tempFile], {
|
|
29
29
|
cwd: mcpRoot,
|
|
30
|
-
timeout: timeout_ms
|
|
30
|
+
timeout: timeout_ms,
|
|
31
|
+
windowsHide: true // Prevent visible console windows on Windows
|
|
31
32
|
});
|
|
32
33
|
let stdout = '';
|
|
33
34
|
let stderr = '';
|
package/dist/tools/schemas.d.ts
CHANGED
|
@@ -3,12 +3,15 @@ export declare const GetConfigArgsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny,
|
|
|
3
3
|
export declare const SetConfigValueArgsSchema: z.ZodObject<{
|
|
4
4
|
key: z.ZodString;
|
|
5
5
|
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodNull]>;
|
|
6
|
+
origin: z.ZodOptional<z.ZodEnum<["ui", "llm"]>>;
|
|
6
7
|
}, "strip", z.ZodTypeAny, {
|
|
7
8
|
value: string | number | boolean | string[] | null;
|
|
8
9
|
key: string;
|
|
10
|
+
origin?: "ui" | "llm" | undefined;
|
|
9
11
|
}, {
|
|
10
12
|
value: string | number | boolean | string[] | null;
|
|
11
13
|
key: string;
|
|
14
|
+
origin?: "ui" | "llm" | undefined;
|
|
12
15
|
}>;
|
|
13
16
|
export declare const ListProcessesArgsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
14
17
|
export declare const StartProcessArgsSchema: z.ZodObject<{
|
package/dist/tools/schemas.js
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface ConfigEntry {
|
|
2
|
+
key: string;
|
|
3
|
+
label?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
value: unknown;
|
|
6
|
+
valueType: 'string' | 'number' | 'boolean' | 'array' | 'null' | string;
|
|
7
|
+
editable: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ConfigEditorPayload {
|
|
10
|
+
config?: Record<string, unknown>;
|
|
11
|
+
uiHints?: {
|
|
12
|
+
availableShells?: string[];
|
|
13
|
+
};
|
|
14
|
+
entries: ConfigEntry[];
|
|
15
|
+
}
|
|
16
|
+
export interface ConfigEditorState {
|
|
17
|
+
payload: ConfigEditorPayload | null;
|
|
18
|
+
selectedKey: string | null;
|
|
19
|
+
draftValue: string;
|
|
20
|
+
}
|
|
21
|
+
export type TooltipTone = 'info' | 'error' | 'success';
|
|
22
|
+
export interface TooltipMessage {
|
|
23
|
+
message: string;
|
|
24
|
+
tone: TooltipTone;
|
|
25
|
+
}
|
|
26
|
+
export interface ApplyConfigResult {
|
|
27
|
+
ok: boolean;
|
|
28
|
+
tooltip?: TooltipMessage;
|
|
29
|
+
}
|
|
30
|
+
type ToolCall = (name: string, args?: Record<string, unknown>) => Promise<unknown>;
|
|
31
|
+
type TrackConfigUiEvent = (event: string, params?: Record<string, unknown>) => void;
|
|
32
|
+
declare function extractPayload(result: unknown): ConfigEditorPayload | null;
|
|
33
|
+
export declare function createConfigEditorController(callTool: ToolCall, trackConfigUiEvent?: TrackConfigUiEvent): {
|
|
34
|
+
state: ConfigEditorState;
|
|
35
|
+
callTool: ToolCall;
|
|
36
|
+
extractPayload: typeof extractPayload;
|
|
37
|
+
setPayload: (payload: ConfigEditorPayload | null) => void;
|
|
38
|
+
setSelection: (key: string) => void;
|
|
39
|
+
setDraftValue: (value: string) => void;
|
|
40
|
+
apply: () => Promise<ApplyConfigResult>;
|
|
41
|
+
};
|
|
42
|
+
export declare function bootstrapConfigEditorApp(): void;
|
|
43
|
+
export {};
|