@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.
Files changed (383) hide show
  1. package/README.md +290 -100
  2. package/dist/command-manager.js +6 -3
  3. package/dist/config-field-definitions.d.ts +41 -0
  4. package/dist/config-field-definitions.js +37 -0
  5. package/dist/config-manager.d.ts +2 -0
  6. package/dist/config-manager.js +22 -2
  7. package/dist/handlers/filesystem-handlers.d.ts +5 -0
  8. package/dist/handlers/filesystem-handlers.js +19 -12
  9. package/dist/remote-device/desktop-commander-integration.js +1 -1
  10. package/dist/remote-device/remote-channel.js +1 -1
  11. package/dist/search-manager.js +31 -38
  12. package/dist/server.js +11 -4
  13. package/dist/terminal-manager.js +4 -2
  14. package/dist/tools/config.d.ts +71 -0
  15. package/dist/tools/config.js +117 -2
  16. package/dist/tools/edit.js +34 -1
  17. package/dist/tools/filesystem.js +91 -3
  18. package/dist/tools/improved-process-tools.js +2 -1
  19. package/dist/tools/schemas.d.ts +3 -0
  20. package/dist/tools/schemas.js +1 -0
  21. package/dist/types.d.ts +0 -1
  22. package/dist/ui/config-editor/app.d.ts +43 -0
  23. package/dist/ui/config-editor/app.js +840 -0
  24. package/dist/ui/config-editor/array-modal.d.ts +19 -0
  25. package/dist/ui/config-editor/array-modal.js +185 -0
  26. package/dist/ui/config-editor/config-editor-runtime.js +150 -0
  27. package/dist/ui/config-editor/index.html +13 -0
  28. package/dist/ui/config-editor/main.js +2 -0
  29. package/dist/ui/config-editor/src/App.d.ts +43 -0
  30. package/dist/ui/config-editor/src/App.js +840 -0
  31. package/dist/ui/config-editor/src/array-modal.d.ts +19 -0
  32. package/dist/ui/config-editor/src/array-modal.js +185 -0
  33. package/dist/ui/config-editor/src/components/layout.d.ts +4 -0
  34. package/dist/ui/config-editor/src/components/layout.js +83 -0
  35. package/dist/ui/config-editor/src/components/toolbar.d.ts +1 -0
  36. package/dist/ui/config-editor/src/components/toolbar.js +21 -0
  37. package/dist/ui/config-editor/src/config-values.d.ts +6 -0
  38. package/dist/ui/config-editor/src/config-values.js +61 -0
  39. package/dist/ui/config-editor/src/contracts.d.ts +14 -0
  40. package/dist/ui/config-editor/src/contracts.js +3 -0
  41. package/dist/ui/config-editor/src/directory-browser.d.ts +6 -0
  42. package/dist/ui/config-editor/src/directory-browser.js +71 -0
  43. package/dist/ui/config-editor/src/layout.d.ts +5 -0
  44. package/dist/ui/config-editor/src/layout.js +90 -0
  45. package/dist/ui/config-editor/src/main.js +2 -0
  46. package/dist/ui/config-editor/src/parsing.d.ts +5 -0
  47. package/dist/ui/config-editor/src/parsing.js +50 -0
  48. package/dist/ui/config-editor/src/toolbar.d.ts +1 -0
  49. package/dist/ui/config-editor/src/toolbar.js +18 -0
  50. package/dist/ui/config-editor/src/types.d.ts +17 -0
  51. package/dist/ui/config-editor/src/types.js +3 -0
  52. package/dist/ui/config-editor/src/utils/config-values.d.ts +9 -0
  53. package/dist/ui/config-editor/src/utils/config-values.js +61 -0
  54. package/dist/ui/config-editor/src/utils/directory-browser.d.ts +31 -0
  55. package/dist/ui/config-editor/src/utils/directory-browser.js +201 -0
  56. package/dist/ui/config-editor/src/utils/parsing.d.ts +8 -0
  57. package/dist/ui/config-editor/src/utils/parsing.js +50 -0
  58. package/dist/ui/config-editor/styles.css +587 -0
  59. package/dist/ui/file-preview/app.d.ts +8 -0
  60. package/dist/ui/file-preview/app.js +2020 -0
  61. package/dist/ui/file-preview/components/code-viewer.d.ts +6 -0
  62. package/dist/ui/file-preview/components/code-viewer.js +73 -0
  63. package/dist/ui/file-preview/components/highlighting.d.ts +2 -0
  64. package/dist/ui/file-preview/components/highlighting.js +54 -0
  65. package/dist/ui/file-preview/components/html-renderer.d.ts +5 -0
  66. package/dist/ui/file-preview/components/html-renderer.js +47 -0
  67. package/dist/ui/file-preview/components/markdown-renderer.d.ts +1 -0
  68. package/dist/ui/file-preview/components/markdown-renderer.js +67 -0
  69. package/dist/ui/file-preview/components/toolbar.d.ts +6 -0
  70. package/dist/ui/file-preview/components/toolbar.js +75 -0
  71. package/dist/ui/file-preview/image-preview.d.ts +3 -0
  72. package/dist/ui/file-preview/image-preview.js +21 -0
  73. package/dist/ui/file-preview/main.js +5 -0
  74. package/dist/ui/file-preview/markdown/editor.d.ts +36 -0
  75. package/dist/ui/file-preview/markdown/editor.js +643 -0
  76. package/dist/ui/file-preview/markdown/linking.d.ts +9 -0
  77. package/dist/ui/file-preview/markdown/linking.js +210 -0
  78. package/dist/ui/file-preview/markdown/outline.d.ts +7 -0
  79. package/dist/ui/file-preview/markdown/outline.js +40 -0
  80. package/dist/ui/file-preview/markdown/preview.d.ts +8 -0
  81. package/dist/ui/file-preview/markdown/preview.js +33 -0
  82. package/dist/ui/file-preview/markdown/slugify.d.ts +3 -0
  83. package/dist/ui/file-preview/markdown/slugify.js +31 -0
  84. package/dist/ui/file-preview/markdown/toc.d.ts +11 -0
  85. package/dist/ui/file-preview/markdown/toc.js +75 -0
  86. package/dist/ui/file-preview/markdown/utils.d.ts +1 -0
  87. package/dist/ui/file-preview/markdown/utils.js +15 -0
  88. package/dist/ui/file-preview/markdown/workspace-controller.d.ts +25 -0
  89. package/dist/ui/file-preview/markdown/workspace-controller.js +40 -0
  90. package/dist/ui/file-preview/preview-runtime.js +399 -13969
  91. package/dist/ui/file-preview/shared/preview-file-types.d.ts +1 -1
  92. package/dist/ui/file-preview/shared/preview-file-types.js +3 -1
  93. package/dist/ui/file-preview/src/App.d.ts +4 -0
  94. package/dist/ui/file-preview/src/App.js +564 -0
  95. package/dist/ui/file-preview/src/components/CodeViewer.d.ts +6 -0
  96. package/dist/ui/file-preview/src/components/CodeViewer.js +60 -0
  97. package/dist/ui/file-preview/src/components/HtmlRenderer.d.ts +8 -0
  98. package/dist/ui/file-preview/src/components/HtmlRenderer.js +45 -0
  99. package/dist/ui/file-preview/src/components/MarkdownRenderer.d.ts +1 -0
  100. package/dist/ui/file-preview/src/components/MarkdownRenderer.js +15 -0
  101. package/dist/ui/file-preview/src/components/editor-toolbar.d.ts +15 -0
  102. package/dist/ui/file-preview/src/components/editor-toolbar.js +384 -0
  103. package/dist/ui/file-preview/src/components/html-renderer.d.ts +1 -5
  104. package/dist/ui/file-preview/src/components/html-renderer.js +11 -27
  105. package/dist/ui/file-preview/src/components/markdown-editor.d.ts +29 -0
  106. package/dist/ui/file-preview/src/components/markdown-editor.js +535 -0
  107. package/dist/ui/file-preview/src/components/markdown-renderer.js +47 -9
  108. package/dist/ui/file-preview/src/directory-controller.d.ts +8 -0
  109. package/dist/ui/file-preview/src/directory-controller.js +233 -0
  110. package/dist/ui/file-preview/src/document-layout.d.ts +20 -0
  111. package/dist/ui/file-preview/src/document-layout.js +109 -0
  112. package/dist/ui/file-preview/src/document-outline.d.ts +17 -0
  113. package/dist/ui/file-preview/src/document-outline.js +97 -0
  114. package/dist/ui/file-preview/src/document-workspace.d.ts +19 -0
  115. package/dist/ui/file-preview/src/document-workspace.js +33 -0
  116. package/dist/ui/file-preview/src/file-type-handlers.d.ts +10 -0
  117. package/dist/ui/file-preview/src/file-type-handlers.js +98 -0
  118. package/dist/ui/file-preview/src/host/external-actions.d.ts +19 -0
  119. package/dist/ui/file-preview/src/host/external-actions.js +94 -0
  120. package/dist/ui/file-preview/src/host/selection-context.d.ts +9 -0
  121. package/dist/ui/file-preview/src/host/selection-context.js +106 -0
  122. package/dist/ui/file-preview/src/markdown/block-merge.d.ts +25 -0
  123. package/dist/ui/file-preview/src/markdown/block-merge.js +86 -0
  124. package/dist/ui/file-preview/src/markdown/conflict-dialog.d.ts +40 -0
  125. package/dist/ui/file-preview/src/markdown/conflict-dialog.js +163 -0
  126. package/dist/ui/file-preview/src/markdown/controller.d.ts +38 -0
  127. package/dist/ui/file-preview/src/markdown/controller.js +921 -0
  128. package/dist/ui/file-preview/src/markdown/editor.d.ts +35 -0
  129. package/dist/ui/file-preview/src/markdown/editor.js +691 -0
  130. package/dist/ui/file-preview/src/markdown/link-modal.d.ts +13 -0
  131. package/dist/ui/file-preview/src/markdown/link-modal.js +213 -0
  132. package/dist/ui/file-preview/src/markdown/linking.d.ts +16 -0
  133. package/dist/ui/file-preview/src/markdown/linking.js +228 -0
  134. package/dist/ui/file-preview/src/markdown/outline.d.ts +2 -0
  135. package/dist/ui/file-preview/src/markdown/outline.js +16 -0
  136. package/dist/ui/file-preview/src/markdown/parser.d.ts +30 -0
  137. package/dist/ui/file-preview/src/markdown/parser.js +38 -0
  138. package/dist/ui/file-preview/src/markdown/preview.d.ts +1 -0
  139. package/dist/ui/file-preview/src/markdown/preview.js +20 -0
  140. package/dist/ui/file-preview/src/markdown/raw-editor.d.ts +8 -0
  141. package/dist/ui/file-preview/src/markdown/raw-editor.js +61 -0
  142. package/dist/ui/file-preview/src/markdown/selection-toolbar.d.ts +14 -0
  143. package/dist/ui/file-preview/src/markdown/selection-toolbar.js +128 -0
  144. package/dist/ui/file-preview/src/markdown/slugify.d.ts +3 -0
  145. package/dist/ui/file-preview/src/markdown/slugify.js +31 -0
  146. package/dist/ui/file-preview/src/markdown/toc.d.ts +11 -0
  147. package/dist/ui/file-preview/src/markdown/toc.js +75 -0
  148. package/dist/ui/file-preview/src/markdown/utils.d.ts +1 -0
  149. package/dist/ui/file-preview/src/markdown/utils.js +15 -0
  150. package/dist/ui/file-preview/src/markdown-workspace/editor.d.ts +36 -0
  151. package/dist/ui/file-preview/src/markdown-workspace/editor.js +643 -0
  152. package/dist/ui/file-preview/src/markdown-workspace/linking.d.ts +9 -0
  153. package/dist/ui/file-preview/src/markdown-workspace/linking.js +210 -0
  154. package/dist/ui/file-preview/src/markdown-workspace/outline.d.ts +7 -0
  155. package/dist/ui/file-preview/src/markdown-workspace/outline.js +40 -0
  156. package/dist/ui/file-preview/src/markdown-workspace/preview.d.ts +8 -0
  157. package/dist/ui/file-preview/src/markdown-workspace/preview.js +33 -0
  158. package/dist/ui/file-preview/src/markdown-workspace/slugify.d.ts +3 -0
  159. package/dist/ui/file-preview/src/markdown-workspace/slugify.js +31 -0
  160. package/dist/ui/file-preview/src/markdown-workspace/toc.d.ts +11 -0
  161. package/dist/ui/file-preview/src/markdown-workspace/toc.js +75 -0
  162. package/dist/ui/file-preview/src/markdown-workspace/utils.d.ts +1 -0
  163. package/dist/ui/file-preview/src/markdown-workspace/utils.js +15 -0
  164. package/dist/ui/file-preview/src/markdown-workspace/workspace-controller.d.ts +25 -0
  165. package/dist/ui/file-preview/src/markdown-workspace/workspace-controller.js +40 -0
  166. package/dist/ui/file-preview/src/model.d.ts +34 -0
  167. package/dist/ui/file-preview/src/panel-actions.d.ts +17 -0
  168. package/dist/ui/file-preview/src/panel-actions.js +182 -0
  169. package/dist/ui/file-preview/src/path-utils.d.ts +6 -0
  170. package/dist/ui/file-preview/src/path-utils.js +64 -0
  171. package/dist/ui/file-preview/src/payload-utils.d.ts +11 -0
  172. package/dist/ui/file-preview/src/payload-utils.js +94 -0
  173. package/dist/ui/file-preview/styles.css +1144 -277
  174. package/dist/ui/file-preview/types.d.ts +1 -0
  175. package/dist/ui/file-preview/types.js +1 -0
  176. package/dist/ui/resources.d.ts +7 -0
  177. package/dist/ui/resources.js +16 -2
  178. package/dist/ui/server-integration.d.ts +13 -0
  179. package/dist/ui/server-integration.js +31 -0
  180. package/dist/ui/shared/ToolHeader.d.ts +9 -0
  181. package/dist/ui/shared/ToolHeader.js +29 -0
  182. package/dist/ui/shared/app-bootstrap.d.ts +9 -0
  183. package/dist/ui/shared/app-bootstrap.js +15 -0
  184. package/dist/ui/shared/compact-row.d.ts +11 -0
  185. package/dist/ui/shared/compact-row.js +18 -0
  186. package/dist/ui/shared/guards.d.ts +1 -0
  187. package/dist/ui/shared/guards.js +3 -0
  188. package/dist/ui/shared/host-context.d.ts +15 -0
  189. package/dist/ui/shared/host-context.js +51 -0
  190. package/dist/ui/shared/host-lifecycle.d.ts +1 -0
  191. package/dist/ui/shared/host-lifecycle.js +8 -2
  192. package/dist/ui/shared/tool-bridge.d.ts +30 -0
  193. package/dist/ui/shared/tool-bridge.js +137 -0
  194. package/dist/ui/shared/tool-shell.d.ts +9 -0
  195. package/dist/ui/shared/tool-shell.js +46 -4
  196. package/dist/ui/shared/ui-event-tracker.d.ts +9 -0
  197. package/dist/ui/shared/ui-event-tracker.js +27 -0
  198. package/dist/ui/shared/widget-state.d.ts +6 -1
  199. package/dist/ui/shared/widget-state.js +102 -4
  200. package/dist/utils/capture.js +3 -3
  201. package/dist/utils/files/base.d.ts +2 -0
  202. package/dist/utils/open-browser.js +1 -1
  203. package/dist/utils/ui-call-context.d.ts +8 -0
  204. package/dist/utils/ui-call-context.js +72 -0
  205. package/dist/version.d.ts +1 -1
  206. package/dist/version.js +1 -1
  207. package/package.json +13 -4
  208. package/dist/data/spec-kit-prompts.json +0 -123
  209. package/dist/handlers/node-handlers.d.ts +0 -6
  210. package/dist/handlers/node-handlers.js +0 -73
  211. package/dist/handlers/test-crash-handler.d.ts +0 -11
  212. package/dist/handlers/test-crash-handler.js +0 -26
  213. package/dist/http-index.d.ts +0 -45
  214. package/dist/http-index.js +0 -51
  215. package/dist/http-server-auto-tunnel.js +0 -667
  216. package/dist/http-server-named-tunnel.d.ts +0 -2
  217. package/dist/http-server-named-tunnel.js +0 -167
  218. package/dist/http-server-tunnel.d.ts +0 -2
  219. package/dist/http-server-tunnel.js +0 -111
  220. package/dist/http-server.d.ts +0 -2
  221. package/dist/http-server.js +0 -270
  222. package/dist/index-oauth.d.ts +0 -2
  223. package/dist/index-oauth.js +0 -201
  224. package/dist/oauth/auth-middleware.d.ts +0 -20
  225. package/dist/oauth/auth-middleware.js +0 -62
  226. package/dist/oauth/index.d.ts +0 -3
  227. package/dist/oauth/index.js +0 -3
  228. package/dist/oauth/oauth-manager.d.ts +0 -80
  229. package/dist/oauth/oauth-manager.js +0 -179
  230. package/dist/oauth/oauth-routes.d.ts +0 -3
  231. package/dist/oauth/oauth-routes.js +0 -377
  232. package/dist/oauth/provider.d.ts +0 -22
  233. package/dist/oauth/provider.js +0 -124
  234. package/dist/oauth/server.d.ts +0 -18
  235. package/dist/oauth/server.js +0 -160
  236. package/dist/oauth/types.d.ts +0 -54
  237. package/dist/oauth/types.js +0 -2
  238. package/dist/remote-device/templates/auth-success.d.ts +0 -1
  239. package/dist/remote-device/templates/auth-success.js +0 -30
  240. package/dist/setup.log +0 -275
  241. package/dist/test-setup.js +0 -14
  242. package/dist/tools/docx/builders/html-builder.d.ts +0 -17
  243. package/dist/tools/docx/builders/html-builder.js +0 -92
  244. package/dist/tools/docx/builders/image.d.ts +0 -14
  245. package/dist/tools/docx/builders/image.js +0 -84
  246. package/dist/tools/docx/builders/index.d.ts +0 -11
  247. package/dist/tools/docx/builders/index.js +0 -11
  248. package/dist/tools/docx/builders/markdown-builder.d.ts +0 -2
  249. package/dist/tools/docx/builders/markdown-builder.js +0 -260
  250. package/dist/tools/docx/builders/paragraph.d.ts +0 -12
  251. package/dist/tools/docx/builders/paragraph.js +0 -29
  252. package/dist/tools/docx/builders/table.d.ts +0 -10
  253. package/dist/tools/docx/builders/table.js +0 -138
  254. package/dist/tools/docx/builders/utils.d.ts +0 -5
  255. package/dist/tools/docx/builders/utils.js +0 -18
  256. package/dist/tools/docx/constants.d.ts +0 -32
  257. package/dist/tools/docx/constants.js +0 -61
  258. package/dist/tools/docx/converters/markdown-to-html.d.ts +0 -17
  259. package/dist/tools/docx/converters/markdown-to-html.js +0 -111
  260. package/dist/tools/docx/create.d.ts +0 -21
  261. package/dist/tools/docx/create.js +0 -386
  262. package/dist/tools/docx/dom.d.ts +0 -139
  263. package/dist/tools/docx/dom.js +0 -448
  264. package/dist/tools/docx/errors.d.ts +0 -28
  265. package/dist/tools/docx/errors.js +0 -48
  266. package/dist/tools/docx/extractors/images.d.ts +0 -14
  267. package/dist/tools/docx/extractors/images.js +0 -40
  268. package/dist/tools/docx/extractors/metadata.d.ts +0 -14
  269. package/dist/tools/docx/extractors/metadata.js +0 -64
  270. package/dist/tools/docx/extractors/sections.d.ts +0 -14
  271. package/dist/tools/docx/extractors/sections.js +0 -61
  272. package/dist/tools/docx/html.d.ts +0 -17
  273. package/dist/tools/docx/html.js +0 -111
  274. package/dist/tools/docx/index.d.ts +0 -10
  275. package/dist/tools/docx/index.js +0 -10
  276. package/dist/tools/docx/markdown.d.ts +0 -84
  277. package/dist/tools/docx/markdown.js +0 -507
  278. package/dist/tools/docx/modify.d.ts +0 -28
  279. package/dist/tools/docx/modify.js +0 -271
  280. package/dist/tools/docx/operations/handlers/index.d.ts +0 -39
  281. package/dist/tools/docx/operations/handlers/index.js +0 -152
  282. package/dist/tools/docx/operations/html-manipulator.d.ts +0 -24
  283. package/dist/tools/docx/operations/html-manipulator.js +0 -352
  284. package/dist/tools/docx/operations/index.d.ts +0 -14
  285. package/dist/tools/docx/operations/index.js +0 -61
  286. package/dist/tools/docx/operations/operation-handlers.d.ts +0 -3
  287. package/dist/tools/docx/operations/operation-handlers.js +0 -67
  288. package/dist/tools/docx/operations/preprocessor.d.ts +0 -14
  289. package/dist/tools/docx/operations/preprocessor.js +0 -44
  290. package/dist/tools/docx/operations/xml-replacer.d.ts +0 -9
  291. package/dist/tools/docx/operations/xml-replacer.js +0 -35
  292. package/dist/tools/docx/operations.d.ts +0 -13
  293. package/dist/tools/docx/operations.js +0 -13
  294. package/dist/tools/docx/ops/delete-paragraph-at-body-index.d.ts +0 -11
  295. package/dist/tools/docx/ops/delete-paragraph-at-body-index.js +0 -23
  296. package/dist/tools/docx/ops/header-replace-text-exact.d.ts +0 -13
  297. package/dist/tools/docx/ops/header-replace-text-exact.js +0 -55
  298. package/dist/tools/docx/ops/index.d.ts +0 -17
  299. package/dist/tools/docx/ops/index.js +0 -70
  300. package/dist/tools/docx/ops/insert-image-after-text.d.ts +0 -24
  301. package/dist/tools/docx/ops/insert-image-after-text.js +0 -128
  302. package/dist/tools/docx/ops/insert-paragraph-after-text.d.ts +0 -12
  303. package/dist/tools/docx/ops/insert-paragraph-after-text.js +0 -74
  304. package/dist/tools/docx/ops/insert-table-after-text.d.ts +0 -19
  305. package/dist/tools/docx/ops/insert-table-after-text.js +0 -57
  306. package/dist/tools/docx/ops/replace-hyperlink-url.d.ts +0 -12
  307. package/dist/tools/docx/ops/replace-hyperlink-url.js +0 -37
  308. package/dist/tools/docx/ops/replace-paragraph-at-body-index.d.ts +0 -9
  309. package/dist/tools/docx/ops/replace-paragraph-at-body-index.js +0 -25
  310. package/dist/tools/docx/ops/replace-paragraph-text-exact.d.ts +0 -21
  311. package/dist/tools/docx/ops/replace-paragraph-text-exact.js +0 -36
  312. package/dist/tools/docx/ops/replace-table-cell-text.d.ts +0 -25
  313. package/dist/tools/docx/ops/replace-table-cell-text.js +0 -85
  314. package/dist/tools/docx/ops/set-color-for-paragraph-exact.d.ts +0 -9
  315. package/dist/tools/docx/ops/set-color-for-paragraph-exact.js +0 -24
  316. package/dist/tools/docx/ops/set-color-for-style.d.ts +0 -13
  317. package/dist/tools/docx/ops/set-color-for-style.js +0 -31
  318. package/dist/tools/docx/ops/set-paragraph-style-at-body-index.d.ts +0 -8
  319. package/dist/tools/docx/ops/set-paragraph-style-at-body-index.js +0 -57
  320. package/dist/tools/docx/ops/table-set-cell-text.d.ts +0 -9
  321. package/dist/tools/docx/ops/table-set-cell-text.js +0 -40
  322. package/dist/tools/docx/parsers/image-extractor.d.ts +0 -18
  323. package/dist/tools/docx/parsers/image-extractor.js +0 -61
  324. package/dist/tools/docx/parsers/index.d.ts +0 -9
  325. package/dist/tools/docx/parsers/index.js +0 -9
  326. package/dist/tools/docx/parsers/paragraph-parser.d.ts +0 -2
  327. package/dist/tools/docx/parsers/paragraph-parser.js +0 -88
  328. package/dist/tools/docx/parsers/table-parser.d.ts +0 -9
  329. package/dist/tools/docx/parsers/table-parser.js +0 -72
  330. package/dist/tools/docx/parsers/xml-parser.d.ts +0 -25
  331. package/dist/tools/docx/parsers/xml-parser.js +0 -71
  332. package/dist/tools/docx/parsers/zip-reader.d.ts +0 -23
  333. package/dist/tools/docx/parsers/zip-reader.js +0 -52
  334. package/dist/tools/docx/read.d.ts +0 -27
  335. package/dist/tools/docx/read.js +0 -308
  336. package/dist/tools/docx/relationships.d.ts +0 -22
  337. package/dist/tools/docx/relationships.js +0 -76
  338. package/dist/tools/docx/structure.d.ts +0 -25
  339. package/dist/tools/docx/structure.js +0 -102
  340. package/dist/tools/docx/styled-html-parser.d.ts +0 -23
  341. package/dist/tools/docx/styled-html-parser.js +0 -1262
  342. package/dist/tools/docx/types.d.ts +0 -213
  343. package/dist/tools/docx/types.js +0 -5
  344. package/dist/tools/docx/utils/escaping.d.ts +0 -13
  345. package/dist/tools/docx/utils/escaping.js +0 -26
  346. package/dist/tools/docx/utils/images.d.ts +0 -9
  347. package/dist/tools/docx/utils/images.js +0 -26
  348. package/dist/tools/docx/utils/index.d.ts +0 -12
  349. package/dist/tools/docx/utils/index.js +0 -17
  350. package/dist/tools/docx/utils/markdown.d.ts +0 -13
  351. package/dist/tools/docx/utils/markdown.js +0 -32
  352. package/dist/tools/docx/utils/paths.d.ts +0 -15
  353. package/dist/tools/docx/utils/paths.js +0 -27
  354. package/dist/tools/docx/utils/versioning.d.ts +0 -25
  355. package/dist/tools/docx/utils/versioning.js +0 -55
  356. package/dist/tools/docx/utils.d.ts +0 -101
  357. package/dist/tools/docx/utils.js +0 -299
  358. package/dist/tools/docx/validate.d.ts +0 -33
  359. package/dist/tools/docx/validate.js +0 -49
  360. package/dist/tools/docx/validators.d.ts +0 -13
  361. package/dist/tools/docx/validators.js +0 -40
  362. package/dist/tools/docx/write.d.ts +0 -17
  363. package/dist/tools/docx/write.js +0 -88
  364. package/dist/tools/docx/xml-view-test.js +0 -63
  365. package/dist/tools/docx/xml-view.d.ts +0 -56
  366. package/dist/tools/docx/xml-view.js +0 -169
  367. package/dist/tools/docx/zip.d.ts +0 -21
  368. package/dist/tools/docx/zip.js +0 -35
  369. package/dist/tools/pdf-processor.js +0 -3
  370. package/dist/tools/search.d.ts +0 -32
  371. package/dist/tools/search.js +0 -202
  372. package/dist/ui/file-preview/src/app.d.ts +0 -4
  373. package/dist/ui/file-preview/src/app.js +0 -800
  374. package/dist/utils/crash-logger.d.ts +0 -18
  375. package/dist/utils/crash-logger.js +0 -44
  376. package/dist/utils/dedent.d.ts +0 -8
  377. package/dist/utils/dedent.js +0 -38
  378. /package/dist/{http-server-auto-tunnel.d.ts → ui/config-editor/main.d.ts} +0 -0
  379. /package/dist/{test-docx.d.ts → ui/config-editor/src/main.d.ts} +0 -0
  380. /package/dist/{tools/docx/xml-view-test.d.ts → ui/file-preview/main.d.ts} +0 -0
  381. /package/dist/ui/file-preview/src/components/{toolbar.d.ts → Toolbar.d.ts} +0 -0
  382. /package/dist/ui/file-preview/src/components/{toolbar.js → Toolbar.js} +0 -0
  383. /package/dist/{tools/pdf-processor.d.ts → ui/file-preview/src/model.js} +0 -0
@@ -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: `Successfully applied ${expectedReplacements} edit${expectedReplacements > 1 ? 's' : ''} to ${filePath}${warningMessage}`
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';
@@ -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
- const result = await withTimeout(readOperation(), FILE_OPERATION_TIMEOUTS.FILE_READ, `Read file operation for ${filePath}`, null);
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
- // If we can't read this directory (permission denied), show as denied
574
+ const err = error;
494
575
  const displayPath = relativePath || path.basename(currentPath);
495
- results.push(`[DENIED] ${displayPath}`);
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 = '';
@@ -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<{
@@ -10,6 +10,7 @@ export const SetConfigValueArgsSchema = z.object({
10
10
  z.array(z.string()),
11
11
  z.null(),
12
12
  ]),
13
+ origin: z.enum(['ui', 'llm']).optional(),
13
14
  });
14
15
  // Empty schemas
15
16
  export const ListProcessesArgsSchema = z.object({});
package/dist/types.d.ts CHANGED
@@ -65,7 +65,6 @@ export interface FilePreviewStructuredContent {
65
65
  fileName: string;
66
66
  filePath: string;
67
67
  fileType: PreviewFileType;
68
- content: string;
69
68
  imageData?: string;
70
69
  mimeType?: string;
71
70
  }
@@ -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 {};