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