@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,210 @@
1
+ import { slugifyMarkdownHeading } from './slugify.js';
2
+ const WIKI_LINK_PATTERN = /\[\[([^\]|#]*)(?:#([^\]|]+))?(?:\|([^\]]+))?\]\]/g;
3
+ const FENCE_PATTERN = /^(`{3,}|~{3,})/;
4
+ function isWindowsAbsolutePath(value) {
5
+ return /^[A-Za-z]:[\\/]/.test(value);
6
+ }
7
+ function normalizePathSeparators(value) {
8
+ return value.replace(/\\/g, '/');
9
+ }
10
+ function normalizeFilePath(value) {
11
+ const normalized = normalizePathSeparators(value);
12
+ return normalized.replace(/\/+/g, '/');
13
+ }
14
+ function encodeLinkPath(pathValue) {
15
+ return encodeURI(normalizePathSeparators(pathValue));
16
+ }
17
+ function safeDecodeURIComponent(value) {
18
+ try {
19
+ return decodeURIComponent(value);
20
+ }
21
+ catch {
22
+ return value;
23
+ }
24
+ }
25
+ function parseWikiLink(rawHref) {
26
+ const match = rawHref.match(/^\[\[([^\]|#]*)(?:#([^\]|]+))?(?:\|([^\]]+))?\]\]$/);
27
+ if (!match) {
28
+ return null;
29
+ }
30
+ return {
31
+ path: (match[1] ?? '').trim(),
32
+ anchor: match[2]?.trim(),
33
+ alias: match[3]?.trim(),
34
+ };
35
+ }
36
+ function buildWikiDisplayText(link) {
37
+ if (link.alias && link.alias.length > 0) {
38
+ return link.alias;
39
+ }
40
+ if (link.path && link.anchor) {
41
+ return `${link.path}#${link.anchor}`;
42
+ }
43
+ if (link.path) {
44
+ return link.path;
45
+ }
46
+ return link.anchor ?? '';
47
+ }
48
+ function appendMarkdownExtension(pathValue) {
49
+ if (/\.[A-Za-z0-9_-]+$/.test(pathValue)) {
50
+ return pathValue;
51
+ }
52
+ return `${pathValue}.md`;
53
+ }
54
+ function buildWikiHref(link) {
55
+ if (!link.path) {
56
+ if (!link.anchor) {
57
+ return '#';
58
+ }
59
+ return `#${slugifyMarkdownHeading(link.anchor)}`;
60
+ }
61
+ const normalizedPath = appendMarkdownExtension(normalizePathSeparators(link.path));
62
+ const prefixedPath = normalizedPath.startsWith('./')
63
+ || normalizedPath.startsWith('../')
64
+ || normalizedPath.startsWith('/')
65
+ || isWindowsAbsolutePath(normalizedPath)
66
+ ? normalizedPath
67
+ : `./${normalizedPath}`;
68
+ const encodedPath = encodeLinkPath(prefixedPath);
69
+ if (!link.anchor) {
70
+ return encodedPath;
71
+ }
72
+ return `${encodedPath}#${slugifyMarkdownHeading(link.anchor)}`;
73
+ }
74
+ function replaceWikiLinksOutsideInlineCode(line) {
75
+ const segments = line.split(/(`[^`]*`)/g);
76
+ return segments.map((segment) => {
77
+ if (segment.startsWith('`') && segment.endsWith('`')) {
78
+ return segment;
79
+ }
80
+ return segment.replace(WIKI_LINK_PATTERN, (match) => {
81
+ const parsed = parseWikiLink(match);
82
+ if (!parsed) {
83
+ return match;
84
+ }
85
+ const displayText = buildWikiDisplayText(parsed);
86
+ const href = buildWikiHref(parsed);
87
+ return `[${displayText}](${href} "mcp-wiki:${encodeURIComponent(match)}")`;
88
+ });
89
+ }).join('');
90
+ }
91
+ function decodeAnchorFragment(fragment) {
92
+ if (!fragment || fragment.length === 0) {
93
+ return undefined;
94
+ }
95
+ return safeDecodeURIComponent(fragment);
96
+ }
97
+ function splitHref(rawHref) {
98
+ const hashIndex = rawHref.indexOf('#');
99
+ if (hashIndex === -1) {
100
+ return { pathPart: rawHref };
101
+ }
102
+ return {
103
+ pathPart: rawHref.slice(0, hashIndex),
104
+ anchorPart: rawHref.slice(hashIndex + 1),
105
+ };
106
+ }
107
+ function getDirectoryPath(filePath) {
108
+ const normalized = normalizeFilePath(filePath);
109
+ const lastSlashIndex = normalized.lastIndexOf('/');
110
+ if (lastSlashIndex < 0) {
111
+ return '.';
112
+ }
113
+ return lastSlashIndex === 0 ? '/' : normalized.slice(0, lastSlashIndex);
114
+ }
115
+ function toDirectoryFileUrl(directoryPath) {
116
+ const normalized = normalizeFilePath(directoryPath);
117
+ const withTrailingSlash = normalized.endsWith('/') ? normalized : `${normalized}/`;
118
+ if (isWindowsAbsolutePath(withTrailingSlash)) {
119
+ return new URL(`file:///${encodeLinkPath(withTrailingSlash)}`);
120
+ }
121
+ if (withTrailingSlash.startsWith('/')) {
122
+ return new URL(`file://${encodeLinkPath(withTrailingSlash)}`);
123
+ }
124
+ return new URL(`file:///${encodeLinkPath(withTrailingSlash)}`);
125
+ }
126
+ function fromFileUrl(url) {
127
+ const decodedPath = safeDecodeURIComponent(url.pathname);
128
+ if (/^\/[A-Za-z]:\//.test(decodedPath)) {
129
+ return decodedPath.slice(1);
130
+ }
131
+ return decodedPath;
132
+ }
133
+ function isExternalHref(rawHref) {
134
+ return /^[A-Za-z][A-Za-z0-9+.-]*:/.test(rawHref) && !isWindowsAbsolutePath(rawHref);
135
+ }
136
+ function resolveFileTargetPath(currentPath, rawPath) {
137
+ const normalizedRawPath = normalizePathSeparators(safeDecodeURIComponent(rawPath));
138
+ if (normalizedRawPath.startsWith('/') || isWindowsAbsolutePath(normalizedRawPath)) {
139
+ return normalizeFilePath(normalizedRawPath);
140
+ }
141
+ const baseDirectory = getDirectoryPath(currentPath);
142
+ if (baseDirectory === '.' && !normalizeFilePath(currentPath).includes('/')) {
143
+ return normalizeFilePath(normalizedRawPath);
144
+ }
145
+ const resolvedUrl = new URL(encodeURI(normalizedRawPath), toDirectoryFileUrl(baseDirectory));
146
+ return normalizeFilePath(fromFileUrl(resolvedUrl));
147
+ }
148
+ export function rewriteWikiLinks(source) {
149
+ const lines = source.split('\n');
150
+ let activeFence = null;
151
+ return lines.map((line) => {
152
+ const trimmedStart = line.trimStart();
153
+ const fenceMatch = trimmedStart.match(FENCE_PATTERN);
154
+ if (fenceMatch) {
155
+ const marker = fenceMatch[1];
156
+ if (!activeFence) {
157
+ activeFence = marker;
158
+ }
159
+ else if (marker[0] === activeFence[0] && marker.length >= activeFence.length) {
160
+ activeFence = null;
161
+ }
162
+ return line;
163
+ }
164
+ if (activeFence) {
165
+ return line;
166
+ }
167
+ return replaceWikiLinksOutsideInlineCode(line);
168
+ }).join('\n');
169
+ }
170
+ export function resolveMarkdownLink(currentPath, rawHref) {
171
+ const wikiLink = parseWikiLink(rawHref);
172
+ if (wikiLink) {
173
+ const href = buildWikiHref(wikiLink);
174
+ if (href.startsWith('#')) {
175
+ return {
176
+ kind: 'anchor',
177
+ href: rawHref,
178
+ anchor: decodeAnchorFragment(href.slice(1)),
179
+ };
180
+ }
181
+ const [pathPart, anchorPart] = href.split('#');
182
+ return {
183
+ kind: 'file',
184
+ href: rawHref,
185
+ targetPath: resolveFileTargetPath(currentPath, pathPart),
186
+ ...(anchorPart ? { anchor: decodeAnchorFragment(anchorPart) } : {}),
187
+ };
188
+ }
189
+ if (isExternalHref(rawHref)) {
190
+ return {
191
+ kind: 'external',
192
+ href: rawHref,
193
+ url: rawHref,
194
+ };
195
+ }
196
+ if (rawHref.startsWith('#')) {
197
+ return {
198
+ kind: 'anchor',
199
+ href: rawHref,
200
+ anchor: decodeAnchorFragment(rawHref.slice(1)),
201
+ };
202
+ }
203
+ const { pathPart, anchorPart } = splitHref(rawHref);
204
+ return {
205
+ kind: 'file',
206
+ href: rawHref,
207
+ targetPath: resolveFileTargetPath(currentPath, pathPart),
208
+ ...(anchorPart ? { anchor: decodeAnchorFragment(anchorPart) } : {}),
209
+ };
210
+ }
@@ -0,0 +1,7 @@
1
+ export interface MarkdownOutlineItem {
2
+ id: string;
3
+ text: string;
4
+ level: number;
5
+ line: number;
6
+ }
7
+ export declare function extractMarkdownOutline(source: string): MarkdownOutlineItem[];
@@ -0,0 +1,40 @@
1
+ // markdown-it is intentionally typed locally here to avoid maintaining ambient module declarations.
2
+ // @ts-expect-error markdown-it does not provide local TypeScript typings in this setup.
3
+ import MarkdownIt from 'markdown-it';
4
+ import { rewriteWikiLinks } from './linking.js';
5
+ import { createSlugTracker } from './slugify.js';
6
+ import { extractInlineText } from './utils.js';
7
+ const MarkdownItCtor = MarkdownIt;
8
+ const outlineParser = new MarkdownItCtor({
9
+ html: false,
10
+ linkify: true,
11
+ typographer: false,
12
+ });
13
+ export function extractMarkdownOutline(source) {
14
+ const tokens = outlineParser.parse(rewriteWikiLinks(source), {});
15
+ const nextSlug = createSlugTracker();
16
+ const outline = [];
17
+ for (let index = 0; index < tokens.length; index += 1) {
18
+ const token = tokens[index];
19
+ if (token.type !== 'heading_open' || typeof token.tag !== 'string') {
20
+ continue;
21
+ }
22
+ const level = Number.parseInt(token.tag.replace(/^h/i, ''), 10);
23
+ if (!Number.isFinite(level)) {
24
+ continue;
25
+ }
26
+ const inlineToken = tokens[index + 1];
27
+ const text = extractInlineText(inlineToken).trim();
28
+ if (!text) {
29
+ continue;
30
+ }
31
+ const lineMap = Array.isArray(token.map) ? token.map : undefined;
32
+ outline.push({
33
+ id: nextSlug(text),
34
+ text,
35
+ level,
36
+ line: Array.isArray(lineMap) && typeof lineMap[0] === 'number' ? lineMap[0] + 1 : outline.length + 1,
37
+ });
38
+ }
39
+ return outline;
40
+ }
@@ -0,0 +1,8 @@
1
+ import type { MarkdownOutlineItem } from './outline.js';
2
+ export declare function getRenderedMarkdownCopyText(content: string): string;
3
+ export declare function renderMarkdownWorkspacePreview(options: {
4
+ content: string;
5
+ outline: MarkdownOutlineItem[];
6
+ activeHeadingId?: string | null;
7
+ showToc?: boolean;
8
+ }): string;
@@ -0,0 +1,33 @@
1
+ import { renderMarkdown } from '../components/markdown-renderer.js';
2
+ import { renderMarkdownToc } from './toc.js';
3
+ export function getRenderedMarkdownCopyText(content) {
4
+ const html = renderMarkdown(content);
5
+ const normalizedHtml = html
6
+ .replace(/<\s*br\s*\/?>/gi, '\n')
7
+ .replace(/<\/p>/gi, '\n\n')
8
+ .replace(/<\/h[1-6]>/gi, '\n\n')
9
+ .replace(/<\/li>/gi, '\n')
10
+ .replace(/<li>/gi, '- ')
11
+ .replace(/<[^>]+>/g, '');
12
+ return normalizedHtml
13
+ .replace(/&nbsp;/g, ' ')
14
+ .replace(/&amp;/g, '&')
15
+ .replace(/&lt;/g, '<')
16
+ .replace(/&gt;/g, '>')
17
+ .replace(/&#39;/g, "'")
18
+ .replace(/&quot;/g, '"')
19
+ .replace(/\n{3,}/g, '\n\n')
20
+ .trim();
21
+ }
22
+ export function renderMarkdownWorkspacePreview(options) {
23
+ const tocHtml = options.showToc ? renderMarkdownToc(options.outline, options.activeHeadingId) : '';
24
+ const hasToc = tocHtml.length > 0;
25
+ return `
26
+ <div class="markdown-workspace markdown-workspace--preview${hasToc ? ' markdown-workspace--with-toc' : ''}">
27
+ ${tocHtml}
28
+ <section class="markdown-workspace-main">
29
+ <article class="markdown markdown-doc">${renderMarkdown(options.content)}</article>
30
+ </section>
31
+ </div>
32
+ `;
33
+ }
@@ -0,0 +1,3 @@
1
+ export type MarkdownSlugTracker = (text: string) => string;
2
+ export declare function slugifyMarkdownHeading(text: string): string;
3
+ export declare function createSlugTracker(): MarkdownSlugTracker;
@@ -0,0 +1,31 @@
1
+ function sanitizeSlugPart(text) {
2
+ const normalized = text
3
+ .normalize('NFKD')
4
+ .replace(/[\u0300-\u036f]/g, '')
5
+ .toLowerCase()
6
+ .trim()
7
+ .replace(/[^a-z0-9\s-]/g, ' ')
8
+ .replace(/\s+/g, '-')
9
+ .replace(/-+/g, '-')
10
+ .replace(/^-+|-+$/g, '');
11
+ return normalized.length > 0 ? normalized : 'section';
12
+ }
13
+ export function slugifyMarkdownHeading(text) {
14
+ return sanitizeSlugPart(text);
15
+ }
16
+ export function createSlugTracker() {
17
+ const counts = new Map();
18
+ const usedSlugs = new Set();
19
+ return (text) => {
20
+ const baseSlug = slugifyMarkdownHeading(text);
21
+ let nextCount = counts.get(baseSlug) ?? 1;
22
+ let nextSlug = nextCount === 1 ? baseSlug : `${baseSlug}-${nextCount}`;
23
+ while (usedSlugs.has(nextSlug)) {
24
+ nextCount += 1;
25
+ nextSlug = `${baseSlug}-${nextCount}`;
26
+ }
27
+ counts.set(baseSlug, nextCount + 1);
28
+ usedSlugs.add(nextSlug);
29
+ return nextSlug;
30
+ };
31
+ }
@@ -0,0 +1,11 @@
1
+ import type { MarkdownOutlineItem } from './outline.js';
2
+ export interface MarkdownTocHandle {
3
+ dispose: () => void;
4
+ }
5
+ export declare function renderMarkdownToc(outline: MarkdownOutlineItem[], activeHeadingId?: string | null): string;
6
+ export declare function attachMarkdownToc(options: {
7
+ shell: HTMLElement;
8
+ outline: MarkdownOutlineItem[];
9
+ scrollContainer: HTMLElement;
10
+ onSelect: (headingId: string) => void;
11
+ }): MarkdownTocHandle | null;
@@ -0,0 +1,75 @@
1
+ function escapeHtml(value) {
2
+ return value
3
+ .replace(/&/g, '&amp;')
4
+ .replace(/</g, '&lt;')
5
+ .replace(/>/g, '&gt;')
6
+ .replace(/"/g, '&quot;')
7
+ .replace(/'/g, '&#39;');
8
+ }
9
+ function setActiveItem(nav, activeId) {
10
+ const buttons = Array.from(nav.querySelectorAll('[data-toc-id]'));
11
+ buttons.forEach((button) => {
12
+ const isActive = button.dataset.tocId === activeId;
13
+ button.classList.toggle('is-active', isActive);
14
+ button.setAttribute('aria-current', isActive ? 'location' : 'false');
15
+ });
16
+ }
17
+ export function renderMarkdownToc(outline, activeHeadingId) {
18
+ if (outline.length === 0) {
19
+ return '';
20
+ }
21
+ const items = outline.map((item) => {
22
+ const activeClass = item.id === activeHeadingId ? ' is-active' : '';
23
+ return `<button class="markdown-toc-link${activeClass}" type="button" data-toc-id="${escapeHtml(item.id)}" data-level="${item.level}" aria-current="${item.id === activeHeadingId ? 'location' : 'false'}">${escapeHtml(item.text)}</button>`;
24
+ }).join('');
25
+ return `
26
+ <aside class="markdown-toc-shell" aria-label="Table of contents">
27
+ <div class="markdown-toc-title">Contents</div>
28
+ <nav class="markdown-toc-nav">${items}</nav>
29
+ </aside>
30
+ `;
31
+ }
32
+ export function attachMarkdownToc(options) {
33
+ const nav = options.shell.querySelector('.markdown-toc-nav');
34
+ if (!nav) {
35
+ return null;
36
+ }
37
+ const handleClick = (event) => {
38
+ const target = event.target;
39
+ const button = target?.closest('[data-toc-id]');
40
+ const headingId = button?.dataset.tocId;
41
+ if (!headingId) {
42
+ return;
43
+ }
44
+ options.onSelect(headingId);
45
+ setActiveItem(nav, headingId);
46
+ };
47
+ const updateActiveHeading = () => {
48
+ const headings = options.outline
49
+ .map((item) => {
50
+ const element = document.getElementById(item.id);
51
+ return element ? { item, element } : null;
52
+ })
53
+ .filter((entry) => entry !== null);
54
+ if (headings.length === 0) {
55
+ return;
56
+ }
57
+ const scrollTop = options.scrollContainer.scrollTop;
58
+ const nextActive = headings.reduce((activeId, current) => {
59
+ if (current.element.offsetTop - scrollTop <= 96) {
60
+ return current.item.id;
61
+ }
62
+ return activeId;
63
+ }, headings[0].item.id);
64
+ setActiveItem(nav, nextActive);
65
+ };
66
+ nav.addEventListener('click', handleClick);
67
+ options.scrollContainer.addEventListener('scroll', updateActiveHeading, { passive: true });
68
+ updateActiveHeading();
69
+ return {
70
+ dispose: () => {
71
+ nav.removeEventListener('click', handleClick);
72
+ options.scrollContainer.removeEventListener('scroll', updateActiveHeading);
73
+ },
74
+ };
75
+ }
@@ -0,0 +1 @@
1
+ export declare function extractInlineText(token: Record<string, unknown> | undefined): string;
@@ -0,0 +1,15 @@
1
+ export function extractInlineText(token) {
2
+ if (!token) {
3
+ return '';
4
+ }
5
+ const children = Array.isArray(token.children) ? token.children : [];
6
+ if (children.length === 0) {
7
+ return typeof token.content === 'string' ? token.content : '';
8
+ }
9
+ return children.map((child) => {
10
+ if (typeof child.content === 'string') {
11
+ return child.content;
12
+ }
13
+ return '';
14
+ }).join('');
15
+ }
@@ -0,0 +1,25 @@
1
+ export interface ReadRange {
2
+ fromLine: number;
3
+ toLine: number;
4
+ totalLines: number;
5
+ isPartial: boolean;
6
+ }
7
+ export declare function stripReadStatusLine(content: string): string;
8
+ export declare function parseReadRange(content: string): ReadRange | undefined;
9
+ export declare function getMarkdownEditAvailability(options: {
10
+ content: string;
11
+ }): {
12
+ canEdit: true;
13
+ } | {
14
+ canEdit: false;
15
+ reason: string;
16
+ };
17
+ export declare function getMarkdownFullscreenAvailability(options: {
18
+ availableDisplayModes?: string[];
19
+ }): {
20
+ canFullscreen: true;
21
+ } | {
22
+ canFullscreen: false;
23
+ reason: string;
24
+ };
25
+ export declare function shouldAutoLoadMarkdownOnEnterFullscreen(content: string): boolean;
@@ -0,0 +1,40 @@
1
+ export function stripReadStatusLine(content) {
2
+ return content.replace(/^\[Reading [^\]]+\]\r?\n(?:\r?\n)?/, '');
3
+ }
4
+ export function parseReadRange(content) {
5
+ const match = content.match(/^\[Reading (\d+) lines from (?:line )?(\d+|start) \(total: (\d+) lines/);
6
+ if (!match) {
7
+ return undefined;
8
+ }
9
+ const count = Number.parseInt(match[1], 10);
10
+ const fromLine = match[2] === 'start' ? 1 : Number.parseInt(match[2], 10);
11
+ const totalLines = Number.parseInt(match[3], 10);
12
+ return {
13
+ fromLine,
14
+ toLine: fromLine + count - 1,
15
+ totalLines,
16
+ isPartial: count < totalLines,
17
+ };
18
+ }
19
+ export function getMarkdownEditAvailability(options) {
20
+ const readRange = parseReadRange(options.content);
21
+ if (readRange?.isPartial) {
22
+ return {
23
+ canEdit: false,
24
+ reason: 'Load the full document before editing.',
25
+ };
26
+ }
27
+ return { canEdit: true };
28
+ }
29
+ export function getMarkdownFullscreenAvailability(options) {
30
+ if (!options.availableDisplayModes?.includes('fullscreen')) {
31
+ return {
32
+ canFullscreen: false,
33
+ reason: 'Fullscreen editing is unavailable in this host.',
34
+ };
35
+ }
36
+ return { canFullscreen: true };
37
+ }
38
+ export function shouldAutoLoadMarkdownOnEnterFullscreen(content) {
39
+ return parseReadRange(content)?.isPartial === true;
40
+ }
@@ -0,0 +1,34 @@
1
+ import type { DocumentOutlineItem } from './document-outline.js';
2
+ import type { FilePreviewStructuredContent } from '../../../types.js';
3
+ import type { MarkdownEditorView } from './markdown/editor.js';
4
+ export type RenderPayload = FilePreviewStructuredContent & {
5
+ content: string;
6
+ };
7
+ export interface MarkdownWorkspaceState {
8
+ filePath: string;
9
+ sourceContent: string;
10
+ fullDocumentContent: string;
11
+ draftContent: string;
12
+ outline: DocumentOutlineItem[];
13
+ mode: 'edit';
14
+ dirty: boolean;
15
+ activeHeadingId: string | null;
16
+ pendingAnchor: string | null;
17
+ notice: string | null;
18
+ error: string | null;
19
+ saving: boolean;
20
+ loadingDocument: boolean;
21
+ editorView: MarkdownEditorView;
22
+ editorScrollTop: number;
23
+ saveIndicator: 'idle' | 'saving' | 'saved';
24
+ fileDeleted: boolean;
25
+ }
26
+ export interface RenderBodyResult {
27
+ html: string;
28
+ notice?: string;
29
+ }
30
+ export interface FileTypeCapabilities {
31
+ supportsPreview: boolean;
32
+ canCopy: boolean;
33
+ canOpenInFolder: boolean;
34
+ }
@@ -0,0 +1,17 @@
1
+ import type { RenderPayload } from './model.js';
2
+ import type { MarkdownController } from './markdown/controller.js';
3
+ import type { HtmlPreviewMode } from './types.js';
4
+ export declare function attachPanelActions(options: {
5
+ container: HTMLElement;
6
+ payload: RenderPayload;
7
+ htmlMode: HtmlPreviewMode;
8
+ getIsExpanded: () => boolean;
9
+ callTool?: (name: string, args: Record<string, unknown>) => Promise<unknown | undefined>;
10
+ trackUiEvent?: (event: string, params?: Record<string, unknown>) => void;
11
+ getFileExtensionForAnalytics: (filePath: string) => string;
12
+ buildOpenInFolderCommand: (filePath: string) => string | undefined;
13
+ buildOpenInEditorCommand: (filePath: string) => string | undefined;
14
+ render: (payload?: RenderPayload, htmlMode?: HtmlPreviewMode, expandedState?: boolean) => void;
15
+ updateSaveStatus: (label: string, statusClass: string) => void;
16
+ markdownController: MarkdownController;
17
+ }): void;