@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
@@ -0,0 +1,182 @@
1
+ import { parseReadRange, stripReadStatusLine } from './document-workspace.js';
2
+ import { extractToolText } from './payload-utils.js';
3
+ export function attachPanelActions(options) {
4
+ const queryById = (id) => (options.container.querySelector(`#${id}`));
5
+ const fallbackCopy = (text) => {
6
+ const textArea = document.createElement('textarea');
7
+ textArea.value = text;
8
+ textArea.setAttribute('readonly', '');
9
+ textArea.style.position = 'fixed';
10
+ textArea.style.top = '-9999px';
11
+ document.body.appendChild(textArea);
12
+ textArea.select();
13
+ const success = document.execCommand('copy');
14
+ document.body.removeChild(textArea);
15
+ return success;
16
+ };
17
+ const setButtonState = (button, label, fallbackLabel, revertMs) => {
18
+ button.setAttribute('title', label);
19
+ button.setAttribute('aria-label', label);
20
+ button.textContent = label;
21
+ if (revertMs) {
22
+ setTimeout(() => {
23
+ button.textContent = fallbackLabel;
24
+ button.setAttribute('title', fallbackLabel);
25
+ button.setAttribute('aria-label', fallbackLabel);
26
+ }, revertMs);
27
+ }
28
+ };
29
+ const setIconButtonState = (button, label, fallbackLabel, revertMs) => {
30
+ button.setAttribute('title', label);
31
+ button.setAttribute('aria-label', label);
32
+ button.dataset.status = label;
33
+ if (revertMs) {
34
+ setTimeout(() => {
35
+ button.setAttribute('title', fallbackLabel);
36
+ button.setAttribute('aria-label', fallbackLabel);
37
+ delete button.dataset.status;
38
+ }, revertMs);
39
+ }
40
+ };
41
+ const copyTextData = async (text) => {
42
+ try {
43
+ if (navigator.clipboard?.writeText) {
44
+ await navigator.clipboard.writeText(text);
45
+ return true;
46
+ }
47
+ return fallbackCopy(text);
48
+ }
49
+ catch {
50
+ return fallbackCopy(text);
51
+ }
52
+ };
53
+ const fileExtension = options.getFileExtensionForAnalytics(options.payload.filePath);
54
+ const copyButton = queryById('copy-source');
55
+ copyButton?.addEventListener('click', async () => {
56
+ options.trackUiEvent?.('copy_clicked', {
57
+ file_type: options.payload.fileType,
58
+ file_extension: fileExtension,
59
+ });
60
+ const copied = await copyTextData(stripReadStatusLine(options.payload.content));
61
+ setButtonState(copyButton, copied ? 'Copied!' : 'Copy failed', 'Copy', 1500);
62
+ });
63
+ const activeCopyButton = queryById('copy-active-markdown');
64
+ activeCopyButton?.addEventListener('click', async () => {
65
+ const textToCopy = options.markdownController.getCopyText(options.payload);
66
+ if (!textToCopy) {
67
+ return;
68
+ }
69
+ const copied = await copyTextData(textToCopy);
70
+ if (copied) {
71
+ options.updateSaveStatus('Copied', 'saved');
72
+ window.setTimeout(() => options.updateSaveStatus('', ''), 1500);
73
+ }
74
+ setIconButtonState(activeCopyButton, copied ? 'Copied!' : 'Copy failed', 'Copy', 1500);
75
+ });
76
+ const toggleButton = queryById('toggle-html-mode');
77
+ toggleButton?.addEventListener('click', () => {
78
+ const nextMode = options.htmlMode === 'rendered' ? 'source' : 'rendered';
79
+ options.trackUiEvent?.('html_view_toggled', {
80
+ file_type: options.payload.fileType,
81
+ file_extension: fileExtension,
82
+ });
83
+ options.render(options.payload, nextMode, options.getIsExpanded());
84
+ });
85
+ const openFolderButton = queryById('open-in-folder');
86
+ if (openFolderButton) {
87
+ const command = options.buildOpenInFolderCommand(options.payload.filePath);
88
+ if (!command) {
89
+ openFolderButton.disabled = true;
90
+ }
91
+ else {
92
+ openFolderButton.addEventListener('click', async () => {
93
+ options.trackUiEvent?.('open_in_folder', {
94
+ file_type: options.payload.fileType,
95
+ file_extension: fileExtension,
96
+ });
97
+ try {
98
+ await options.callTool?.('start_process', { command, timeout_ms: 12000 });
99
+ }
100
+ catch {
101
+ // Keep UI stable if opening folder fails.
102
+ }
103
+ });
104
+ }
105
+ }
106
+ const openEditorButton = queryById('open-in-editor');
107
+ if (openEditorButton) {
108
+ const command = options.buildOpenInEditorCommand(options.payload.filePath);
109
+ if (!command) {
110
+ openEditorButton.disabled = true;
111
+ }
112
+ else {
113
+ openEditorButton.addEventListener('click', async () => {
114
+ options.trackUiEvent?.('open_in_editor', {
115
+ file_type: options.payload.fileType,
116
+ file_extension: fileExtension,
117
+ });
118
+ try {
119
+ await options.callTool?.('start_process', { command, timeout_ms: 12000 });
120
+ }
121
+ catch {
122
+ // Keep UI stable if opening editor fails.
123
+ }
124
+ });
125
+ }
126
+ }
127
+ const beforeBtn = queryById('load-before');
128
+ const afterBtn = queryById('load-after');
129
+ if (!beforeBtn && !afterBtn) {
130
+ return;
131
+ }
132
+ const range = parseReadRange(options.payload.content);
133
+ if (!range?.isPartial) {
134
+ return;
135
+ }
136
+ const currentContent = stripReadStatusLine(options.payload.content);
137
+ const loadLines = async (button, direction) => {
138
+ const originalText = button.textContent;
139
+ button.textContent = 'Loading…';
140
+ button.disabled = true;
141
+ options.trackUiEvent?.(direction === 'before' ? 'load_lines_before' : 'load_lines_after', {
142
+ file_type: options.payload.fileType,
143
+ file_extension: fileExtension,
144
+ });
145
+ try {
146
+ const readArgs = direction === 'before'
147
+ ? { path: options.payload.filePath, offset: 0, length: range.fromLine - 1 }
148
+ : { path: options.payload.filePath, offset: range.toLine };
149
+ const result = await options.callTool?.('read_file', readArgs);
150
+ const newText = extractToolText(result);
151
+ if (newText && typeof newText === 'string') {
152
+ const cleanNew = stripReadStatusLine(newText);
153
+ const merged = direction === 'before'
154
+ ? `${cleanNew}${cleanNew.endsWith('\n') ? '' : '\n'}${currentContent}`
155
+ : `${currentContent}${currentContent.endsWith('\n') ? '' : '\n'}${cleanNew}`;
156
+ const newFrom = direction === 'before' ? 1 : range.fromLine;
157
+ const newTo = direction === 'after' ? range.totalLines : range.toLine;
158
+ const lineCount = newTo - newFrom + 1;
159
+ const remaining = range.totalLines - newTo;
160
+ const isStillPartial = newFrom > 1 || newTo < range.totalLines;
161
+ const statusLine = isStillPartial
162
+ ? `[Reading ${lineCount} lines from ${newFrom === 1 ? 'start' : `line ${newFrom}`} (total: ${range.totalLines} lines, ${remaining} remaining)]\n`
163
+ : '';
164
+ options.render({
165
+ ...options.payload,
166
+ content: statusLine + merged,
167
+ }, options.htmlMode, options.getIsExpanded());
168
+ return;
169
+ }
170
+ }
171
+ catch {
172
+ // Fall through to button reset.
173
+ }
174
+ button.textContent = 'Failed to load';
175
+ setTimeout(() => {
176
+ button.textContent = originalText;
177
+ button.disabled = false;
178
+ }, 2000);
179
+ };
180
+ beforeBtn?.addEventListener('click', () => void loadLines(beforeBtn, 'before'));
181
+ afterBtn?.addEventListener('click', () => void loadLines(afterBtn, 'after'));
182
+ }
@@ -0,0 +1,6 @@
1
+ export declare function isWindowsAbsolutePath(value: string): boolean;
2
+ export declare function normalizePathSeparators(value: string): string;
3
+ export declare function normalizeFilePath(value: string): string;
4
+ export declare function getParentDirectory(filePath: string): string;
5
+ export declare function getAncestorDirectories(filePath: string): string[];
6
+ export declare function toPosixRelativePath(fromDirectory: string, targetPath: string): string;
@@ -0,0 +1,64 @@
1
+ export function isWindowsAbsolutePath(value) {
2
+ return /^[A-Za-z]:[\\/]/.test(value);
3
+ }
4
+ export function normalizePathSeparators(value) {
5
+ return value.replace(/\\/g, '/');
6
+ }
7
+ export function normalizeFilePath(value) {
8
+ const normalized = normalizePathSeparators(value);
9
+ return normalized.replace(/\/+/g, '/');
10
+ }
11
+ function getPathRoot(value) {
12
+ const normalized = normalizeFilePath(value);
13
+ if (isWindowsAbsolutePath(normalized)) {
14
+ return normalized.slice(0, 3);
15
+ }
16
+ return normalized.startsWith('/') ? '/' : '';
17
+ }
18
+ function getPathSegments(value) {
19
+ const normalized = normalizeFilePath(value);
20
+ const root = getPathRoot(normalized);
21
+ return normalized.slice(root.length).split('/').filter(Boolean);
22
+ }
23
+ export function getParentDirectory(filePath) {
24
+ const root = getPathRoot(filePath);
25
+ const segments = getPathSegments(filePath);
26
+ if (segments.length <= 1) {
27
+ return root || '.';
28
+ }
29
+ return `${root}${segments.slice(0, -1).join('/')}`;
30
+ }
31
+ export function getAncestorDirectories(filePath) {
32
+ const root = getPathRoot(filePath);
33
+ const segments = getPathSegments(filePath);
34
+ const ancestors = [];
35
+ for (let index = segments.length - 1; index >= 1; index -= 1) {
36
+ const ancestor = `${root}${segments.slice(0, index).join('/')}`;
37
+ ancestors.push(ancestor || '.');
38
+ }
39
+ if (root && ancestors[ancestors.length - 1] !== root) {
40
+ ancestors.push(root);
41
+ }
42
+ return ancestors;
43
+ }
44
+ export function toPosixRelativePath(fromDirectory, targetPath) {
45
+ const normalizedFrom = normalizeFilePath(fromDirectory);
46
+ const normalizedTarget = normalizeFilePath(targetPath);
47
+ const fromRoot = getPathRoot(normalizedFrom);
48
+ const targetRoot = getPathRoot(normalizedTarget);
49
+ if (fromRoot !== targetRoot) {
50
+ return normalizedTarget;
51
+ }
52
+ const fromParts = getPathSegments(normalizedFrom);
53
+ const targetParts = getPathSegments(normalizedTarget);
54
+ let shared = 0;
55
+ while (shared < fromParts.length
56
+ && shared < targetParts.length
57
+ && fromParts[shared] === targetParts[shared]) {
58
+ shared += 1;
59
+ }
60
+ const up = new Array(Math.max(fromParts.length - shared, 0)).fill('..');
61
+ const down = targetParts.slice(shared);
62
+ const joined = [...up, ...down].join('/');
63
+ return joined.length > 0 ? joined : '.';
64
+ }
@@ -0,0 +1,11 @@
1
+ import type { FilePreviewStructuredContent } from '../../../types.js';
2
+ import type { RenderPayload } from './model.js';
3
+ export declare function getFileExtensionForAnalytics(filePath: string): string;
4
+ export declare function isPreviewStructuredContent(value: unknown): value is FilePreviewStructuredContent;
5
+ export declare function buildRenderPayload(meta: FilePreviewStructuredContent, text: string): RenderPayload;
6
+ export declare function extractToolText(value: unknown): string | undefined;
7
+ export declare function extractRenderPayload(value: unknown): RenderPayload | undefined;
8
+ export declare function assertSuccessfulEditBlockResult(result: unknown): void;
9
+ export declare function isLikelyUrl(filePath: string): boolean;
10
+ export declare function buildBreadcrumb(filePath: string): string;
11
+ export declare function countContentLines(content: string): number;
@@ -0,0 +1,94 @@
1
+ import { escapeHtml } from './components/highlighting.js';
2
+ import { stripReadStatusLine } from './document-workspace.js';
3
+ function isObjectRecord(value) {
4
+ return typeof value === 'object' && value !== null;
5
+ }
6
+ export function getFileExtensionForAnalytics(filePath) {
7
+ const normalizedPath = filePath.trim().replace(/\\/g, '/');
8
+ const fileName = normalizedPath.split('/').pop() ?? normalizedPath;
9
+ const dotIndex = fileName.lastIndexOf('.');
10
+ if (dotIndex <= 0 || dotIndex === fileName.length - 1) {
11
+ return 'none';
12
+ }
13
+ return fileName.slice(dotIndex + 1).toLowerCase();
14
+ }
15
+ export function isPreviewStructuredContent(value) {
16
+ if (!isObjectRecord(value)) {
17
+ return false;
18
+ }
19
+ return (typeof value.fileName === 'string' &&
20
+ typeof value.filePath === 'string' &&
21
+ typeof value.fileType === 'string');
22
+ }
23
+ export function buildRenderPayload(meta, text) {
24
+ return { ...meta, content: text };
25
+ }
26
+ export function extractToolText(value) {
27
+ if (!isObjectRecord(value)) {
28
+ return undefined;
29
+ }
30
+ const content = value.content;
31
+ if (!Array.isArray(content)) {
32
+ return undefined;
33
+ }
34
+ for (const item of content) {
35
+ if (!isObjectRecord(item)) {
36
+ continue;
37
+ }
38
+ if (item.type === 'text' && typeof item.text === 'string' && item.text.trim().length > 0) {
39
+ return item.text;
40
+ }
41
+ }
42
+ return undefined;
43
+ }
44
+ export function extractRenderPayload(value) {
45
+ if (!isObjectRecord(value)) {
46
+ return undefined;
47
+ }
48
+ const meta = isPreviewStructuredContent(value.structuredContent)
49
+ ? value.structuredContent
50
+ : isPreviewStructuredContent(value)
51
+ ? value
52
+ : null;
53
+ if (!meta)
54
+ return undefined;
55
+ const text = extractToolText(value) ?? extractToolText(value.structuredContent) ?? '';
56
+ return buildRenderPayload(meta, text);
57
+ }
58
+ export function assertSuccessfulEditBlockResult(result) {
59
+ if (!isObjectRecord(result)) {
60
+ throw new Error('edit_block did not return a valid result.');
61
+ }
62
+ if (result.isError === true) {
63
+ const message = extractToolText(result) ?? '';
64
+ throw new Error(message || 'edit_block failed.');
65
+ }
66
+ // edit_block uses soft-failure returns (no isError flag) for cases the LLM
67
+ // is meant to recover from — "Search content not found", "Expected N
68
+ // occurrences but found M", fuzzy-match-too-close-to-ignore, etc. These
69
+ // look like success to a naive client. A real success always carries
70
+ // structuredContent (see src/tools/edit.ts — the write path attaches
71
+ // fileName/filePath/fileType); absence means the edit did not land.
72
+ // Throwing here routes soft failures through saveDocument's catch, which
73
+ // reloads disk, preserves the user's draft, and surfaces the server's
74
+ // message to the user.
75
+ if (!isObjectRecord(result.structuredContent)) {
76
+ const message = extractToolText(result) ?? '';
77
+ throw new Error(message || 'edit_block did not confirm success.');
78
+ }
79
+ }
80
+ export function isLikelyUrl(filePath) {
81
+ return /^https?:\/\//i.test(filePath);
82
+ }
83
+ export function buildBreadcrumb(filePath) {
84
+ const normalized = filePath.replace(/\\/g, '/');
85
+ const parts = normalized.split('/').filter(Boolean);
86
+ return parts.map((part) => escapeHtml(part)).join(' <span class="breadcrumb-sep">›</span> ');
87
+ }
88
+ export function countContentLines(content) {
89
+ const cleaned = stripReadStatusLine(content);
90
+ if (cleaned === '')
91
+ return 0;
92
+ const lines = cleaned.split('\n');
93
+ return lines[lines.length - 1] === '' ? lines.length - 1 : lines.length;
94
+ }