@wonderwhy-er/desktop-commander 0.2.38 → 0.2.40

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 (263) 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 +9 -4
  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/config-editor-runtime.js +65 -14096
  12. package/dist/ui/config-editor/styles.css +2 -1
  13. package/dist/ui/file-preview/preview-runtime.js +435 -26533
  14. package/dist/ui/file-preview/shared/preview-file-types.d.ts +1 -1
  15. package/dist/ui/file-preview/src/app.d.ts +1 -5
  16. package/dist/ui/file-preview/src/app.js +384 -534
  17. package/dist/ui/file-preview/src/components/markdown-renderer.js +47 -9
  18. package/dist/ui/file-preview/src/directory-controller.d.ts +8 -0
  19. package/dist/ui/file-preview/src/directory-controller.js +233 -0
  20. package/dist/ui/file-preview/src/document-layout.d.ts +20 -0
  21. package/dist/ui/file-preview/src/document-layout.js +109 -0
  22. package/dist/ui/file-preview/src/document-outline.d.ts +17 -0
  23. package/dist/ui/file-preview/src/document-outline.js +97 -0
  24. package/dist/ui/file-preview/src/document-workspace.d.ts +19 -0
  25. package/dist/ui/file-preview/src/document-workspace.js +33 -0
  26. package/dist/ui/file-preview/src/file-type-handlers.d.ts +10 -0
  27. package/dist/ui/file-preview/src/file-type-handlers.js +98 -0
  28. package/dist/ui/file-preview/src/host/external-actions.d.ts +19 -0
  29. package/dist/ui/file-preview/src/host/external-actions.js +94 -0
  30. package/dist/ui/file-preview/src/host/selection-context.d.ts +9 -0
  31. package/dist/ui/file-preview/src/host/selection-context.js +106 -0
  32. package/dist/ui/file-preview/src/markdown/conflict-dialog.d.ts +40 -0
  33. package/dist/ui/file-preview/src/markdown/conflict-dialog.js +163 -0
  34. package/dist/ui/file-preview/src/markdown/controller.d.ts +44 -0
  35. package/dist/ui/file-preview/src/markdown/controller.js +1040 -0
  36. package/dist/ui/file-preview/src/markdown/editor.d.ts +131 -0
  37. package/dist/ui/file-preview/src/markdown/editor.js +1479 -0
  38. package/dist/ui/file-preview/src/markdown/linking.d.ts +16 -0
  39. package/dist/ui/file-preview/src/markdown/linking.js +228 -0
  40. package/dist/ui/file-preview/src/markdown/outline.d.ts +2 -0
  41. package/dist/ui/file-preview/src/markdown/outline.js +16 -0
  42. package/dist/ui/file-preview/src/markdown/parser.d.ts +30 -0
  43. package/dist/ui/file-preview/src/markdown/parser.js +38 -0
  44. package/dist/ui/file-preview/src/markdown/preview.d.ts +1 -0
  45. package/dist/ui/file-preview/src/markdown/preview.js +20 -0
  46. package/dist/ui/file-preview/src/markdown/slugify.d.ts +3 -0
  47. package/dist/ui/file-preview/src/markdown/slugify.js +31 -0
  48. package/dist/ui/file-preview/src/markdown/utils.d.ts +1 -0
  49. package/dist/ui/file-preview/src/markdown/utils.js +15 -0
  50. package/dist/ui/file-preview/src/model.d.ts +35 -0
  51. package/dist/ui/file-preview/src/panel-actions.d.ts +17 -0
  52. package/dist/ui/file-preview/src/panel-actions.js +182 -0
  53. package/dist/ui/file-preview/src/path-utils.d.ts +6 -0
  54. package/dist/ui/file-preview/src/path-utils.js +64 -0
  55. package/dist/ui/file-preview/src/payload-utils.d.ts +11 -0
  56. package/dist/ui/file-preview/src/payload-utils.js +94 -0
  57. package/dist/ui/file-preview/styles.css +1066 -233
  58. package/dist/ui/shared/widget-state.d.ts +6 -1
  59. package/dist/ui/shared/widget-state.js +102 -4
  60. package/dist/utils/capture.js +1 -1
  61. package/dist/utils/files/base.d.ts +2 -0
  62. package/dist/utils/open-browser.js +1 -1
  63. package/dist/utils/toolHistory.d.ts +13 -0
  64. package/dist/utils/toolHistory.js +65 -0
  65. package/dist/version.d.ts +1 -1
  66. package/dist/version.js +1 -1
  67. package/package.json +12 -1
  68. package/dist/data/spec-kit-prompts.json +0 -123
  69. package/dist/handlers/macos-control-handlers.d.ts +0 -16
  70. package/dist/handlers/macos-control-handlers.js +0 -81
  71. package/dist/handlers/node-handlers.d.ts +0 -6
  72. package/dist/handlers/node-handlers.js +0 -73
  73. package/dist/handlers/test-crash-handler.d.ts +0 -11
  74. package/dist/handlers/test-crash-handler.js +0 -26
  75. package/dist/http-index.d.ts +0 -45
  76. package/dist/http-index.js +0 -51
  77. package/dist/http-server-auto-tunnel.js +0 -667
  78. package/dist/http-server-named-tunnel.d.ts +0 -2
  79. package/dist/http-server-named-tunnel.js +0 -167
  80. package/dist/http-server-tunnel.d.ts +0 -2
  81. package/dist/http-server-tunnel.js +0 -111
  82. package/dist/http-server.d.ts +0 -2
  83. package/dist/http-server.js +0 -270
  84. package/dist/index-oauth.d.ts +0 -2
  85. package/dist/index-oauth.js +0 -201
  86. package/dist/lib.d.ts +0 -10
  87. package/dist/lib.js +0 -10
  88. package/dist/oauth/auth-middleware.d.ts +0 -20
  89. package/dist/oauth/auth-middleware.js +0 -62
  90. package/dist/oauth/index.d.ts +0 -3
  91. package/dist/oauth/index.js +0 -3
  92. package/dist/oauth/oauth-manager.d.ts +0 -80
  93. package/dist/oauth/oauth-manager.js +0 -179
  94. package/dist/oauth/oauth-routes.d.ts +0 -3
  95. package/dist/oauth/oauth-routes.js +0 -377
  96. package/dist/oauth/provider.d.ts +0 -22
  97. package/dist/oauth/provider.js +0 -124
  98. package/dist/oauth/server.d.ts +0 -18
  99. package/dist/oauth/server.js +0 -160
  100. package/dist/oauth/types.d.ts +0 -54
  101. package/dist/oauth/types.js +0 -2
  102. package/dist/remote-device/templates/auth-success.d.ts +0 -1
  103. package/dist/remote-device/templates/auth-success.js +0 -30
  104. package/dist/setup.log +0 -275
  105. package/dist/test-docx.d.ts +0 -1
  106. package/dist/test-setup.js +0 -14
  107. package/dist/tools/docx/builders/html-builder.d.ts +0 -17
  108. package/dist/tools/docx/builders/html-builder.js +0 -92
  109. package/dist/tools/docx/builders/image.d.ts +0 -14
  110. package/dist/tools/docx/builders/image.js +0 -84
  111. package/dist/tools/docx/builders/index.d.ts +0 -11
  112. package/dist/tools/docx/builders/index.js +0 -11
  113. package/dist/tools/docx/builders/markdown-builder.d.ts +0 -2
  114. package/dist/tools/docx/builders/markdown-builder.js +0 -260
  115. package/dist/tools/docx/builders/paragraph.d.ts +0 -12
  116. package/dist/tools/docx/builders/paragraph.js +0 -29
  117. package/dist/tools/docx/builders/table.d.ts +0 -10
  118. package/dist/tools/docx/builders/table.js +0 -138
  119. package/dist/tools/docx/builders/utils.d.ts +0 -5
  120. package/dist/tools/docx/builders/utils.js +0 -18
  121. package/dist/tools/docx/constants.d.ts +0 -32
  122. package/dist/tools/docx/constants.js +0 -61
  123. package/dist/tools/docx/converters/markdown-to-html.d.ts +0 -17
  124. package/dist/tools/docx/converters/markdown-to-html.js +0 -111
  125. package/dist/tools/docx/create.d.ts +0 -21
  126. package/dist/tools/docx/create.js +0 -386
  127. package/dist/tools/docx/dom.d.ts +0 -139
  128. package/dist/tools/docx/dom.js +0 -448
  129. package/dist/tools/docx/errors.d.ts +0 -28
  130. package/dist/tools/docx/errors.js +0 -48
  131. package/dist/tools/docx/extractors/images.d.ts +0 -14
  132. package/dist/tools/docx/extractors/images.js +0 -40
  133. package/dist/tools/docx/extractors/metadata.d.ts +0 -14
  134. package/dist/tools/docx/extractors/metadata.js +0 -64
  135. package/dist/tools/docx/extractors/sections.d.ts +0 -14
  136. package/dist/tools/docx/extractors/sections.js +0 -61
  137. package/dist/tools/docx/html.d.ts +0 -17
  138. package/dist/tools/docx/html.js +0 -111
  139. package/dist/tools/docx/index.d.ts +0 -10
  140. package/dist/tools/docx/index.js +0 -10
  141. package/dist/tools/docx/markdown.d.ts +0 -84
  142. package/dist/tools/docx/markdown.js +0 -507
  143. package/dist/tools/docx/modify.d.ts +0 -28
  144. package/dist/tools/docx/modify.js +0 -271
  145. package/dist/tools/docx/operations/handlers/index.d.ts +0 -39
  146. package/dist/tools/docx/operations/handlers/index.js +0 -152
  147. package/dist/tools/docx/operations/html-manipulator.d.ts +0 -24
  148. package/dist/tools/docx/operations/html-manipulator.js +0 -352
  149. package/dist/tools/docx/operations/index.d.ts +0 -14
  150. package/dist/tools/docx/operations/index.js +0 -61
  151. package/dist/tools/docx/operations/operation-handlers.d.ts +0 -3
  152. package/dist/tools/docx/operations/operation-handlers.js +0 -67
  153. package/dist/tools/docx/operations/preprocessor.d.ts +0 -14
  154. package/dist/tools/docx/operations/preprocessor.js +0 -44
  155. package/dist/tools/docx/operations/xml-replacer.d.ts +0 -9
  156. package/dist/tools/docx/operations/xml-replacer.js +0 -35
  157. package/dist/tools/docx/operations.d.ts +0 -13
  158. package/dist/tools/docx/operations.js +0 -13
  159. package/dist/tools/docx/ops/delete-paragraph-at-body-index.d.ts +0 -11
  160. package/dist/tools/docx/ops/delete-paragraph-at-body-index.js +0 -23
  161. package/dist/tools/docx/ops/header-replace-text-exact.d.ts +0 -13
  162. package/dist/tools/docx/ops/header-replace-text-exact.js +0 -55
  163. package/dist/tools/docx/ops/index.d.ts +0 -17
  164. package/dist/tools/docx/ops/index.js +0 -70
  165. package/dist/tools/docx/ops/insert-image-after-text.d.ts +0 -24
  166. package/dist/tools/docx/ops/insert-image-after-text.js +0 -128
  167. package/dist/tools/docx/ops/insert-paragraph-after-text.d.ts +0 -12
  168. package/dist/tools/docx/ops/insert-paragraph-after-text.js +0 -74
  169. package/dist/tools/docx/ops/insert-table-after-text.d.ts +0 -19
  170. package/dist/tools/docx/ops/insert-table-after-text.js +0 -57
  171. package/dist/tools/docx/ops/replace-hyperlink-url.d.ts +0 -12
  172. package/dist/tools/docx/ops/replace-hyperlink-url.js +0 -37
  173. package/dist/tools/docx/ops/replace-paragraph-at-body-index.d.ts +0 -9
  174. package/dist/tools/docx/ops/replace-paragraph-at-body-index.js +0 -25
  175. package/dist/tools/docx/ops/replace-paragraph-text-exact.d.ts +0 -21
  176. package/dist/tools/docx/ops/replace-paragraph-text-exact.js +0 -36
  177. package/dist/tools/docx/ops/replace-table-cell-text.d.ts +0 -25
  178. package/dist/tools/docx/ops/replace-table-cell-text.js +0 -85
  179. package/dist/tools/docx/ops/set-color-for-paragraph-exact.d.ts +0 -9
  180. package/dist/tools/docx/ops/set-color-for-paragraph-exact.js +0 -24
  181. package/dist/tools/docx/ops/set-color-for-style.d.ts +0 -13
  182. package/dist/tools/docx/ops/set-color-for-style.js +0 -31
  183. package/dist/tools/docx/ops/set-paragraph-style-at-body-index.d.ts +0 -8
  184. package/dist/tools/docx/ops/set-paragraph-style-at-body-index.js +0 -57
  185. package/dist/tools/docx/ops/table-set-cell-text.d.ts +0 -9
  186. package/dist/tools/docx/ops/table-set-cell-text.js +0 -40
  187. package/dist/tools/docx/parsers/image-extractor.d.ts +0 -18
  188. package/dist/tools/docx/parsers/image-extractor.js +0 -61
  189. package/dist/tools/docx/parsers/index.d.ts +0 -9
  190. package/dist/tools/docx/parsers/index.js +0 -9
  191. package/dist/tools/docx/parsers/paragraph-parser.d.ts +0 -2
  192. package/dist/tools/docx/parsers/paragraph-parser.js +0 -88
  193. package/dist/tools/docx/parsers/table-parser.d.ts +0 -9
  194. package/dist/tools/docx/parsers/table-parser.js +0 -72
  195. package/dist/tools/docx/parsers/xml-parser.d.ts +0 -25
  196. package/dist/tools/docx/parsers/xml-parser.js +0 -71
  197. package/dist/tools/docx/parsers/zip-reader.d.ts +0 -23
  198. package/dist/tools/docx/parsers/zip-reader.js +0 -52
  199. package/dist/tools/docx/read.d.ts +0 -27
  200. package/dist/tools/docx/read.js +0 -308
  201. package/dist/tools/docx/relationships.d.ts +0 -22
  202. package/dist/tools/docx/relationships.js +0 -76
  203. package/dist/tools/docx/structure.d.ts +0 -25
  204. package/dist/tools/docx/structure.js +0 -102
  205. package/dist/tools/docx/styled-html-parser.d.ts +0 -23
  206. package/dist/tools/docx/styled-html-parser.js +0 -1262
  207. package/dist/tools/docx/types.d.ts +0 -213
  208. package/dist/tools/docx/types.js +0 -5
  209. package/dist/tools/docx/utils/escaping.d.ts +0 -13
  210. package/dist/tools/docx/utils/escaping.js +0 -26
  211. package/dist/tools/docx/utils/images.d.ts +0 -9
  212. package/dist/tools/docx/utils/images.js +0 -26
  213. package/dist/tools/docx/utils/index.d.ts +0 -12
  214. package/dist/tools/docx/utils/index.js +0 -17
  215. package/dist/tools/docx/utils/markdown.d.ts +0 -13
  216. package/dist/tools/docx/utils/markdown.js +0 -32
  217. package/dist/tools/docx/utils/paths.d.ts +0 -15
  218. package/dist/tools/docx/utils/paths.js +0 -27
  219. package/dist/tools/docx/utils/versioning.d.ts +0 -25
  220. package/dist/tools/docx/utils/versioning.js +0 -55
  221. package/dist/tools/docx/utils.d.ts +0 -101
  222. package/dist/tools/docx/utils.js +0 -299
  223. package/dist/tools/docx/validate.d.ts +0 -33
  224. package/dist/tools/docx/validate.js +0 -49
  225. package/dist/tools/docx/validators.d.ts +0 -13
  226. package/dist/tools/docx/validators.js +0 -40
  227. package/dist/tools/docx/write.d.ts +0 -17
  228. package/dist/tools/docx/write.js +0 -88
  229. package/dist/tools/docx/xml-view-test.d.ts +0 -1
  230. package/dist/tools/docx/xml-view-test.js +0 -63
  231. package/dist/tools/docx/xml-view.d.ts +0 -56
  232. package/dist/tools/docx/xml-view.js +0 -169
  233. package/dist/tools/docx/zip.d.ts +0 -21
  234. package/dist/tools/docx/zip.js +0 -35
  235. package/dist/tools/macos-control/ax-adapter.d.ts +0 -55
  236. package/dist/tools/macos-control/ax-adapter.js +0 -438
  237. package/dist/tools/macos-control/cdp-adapter.d.ts +0 -23
  238. package/dist/tools/macos-control/cdp-adapter.js +0 -402
  239. package/dist/tools/macos-control/orchestrator.d.ts +0 -77
  240. package/dist/tools/macos-control/orchestrator.js +0 -136
  241. package/dist/tools/macos-control/role-aliases.d.ts +0 -5
  242. package/dist/tools/macos-control/role-aliases.js +0 -34
  243. package/dist/tools/macos-control/types.d.ts +0 -129
  244. package/dist/tools/macos-control/types.js +0 -1
  245. package/dist/tools/pdf-processor.d.ts +0 -1
  246. package/dist/tools/pdf-processor.js +0 -3
  247. package/dist/tools/search.d.ts +0 -32
  248. package/dist/tools/search.js +0 -202
  249. package/dist/ui/file-preview/src/components/toolbar.d.ts +0 -6
  250. package/dist/ui/file-preview/src/components/toolbar.js +0 -75
  251. package/dist/ui/shared/host-lifecycle.d.ts +0 -16
  252. package/dist/ui/shared/host-lifecycle.js +0 -35
  253. package/dist/ui/shared/rpc-client.d.ts +0 -14
  254. package/dist/ui/shared/rpc-client.js +0 -72
  255. package/dist/ui/shared/theme-adaptation.d.ts +0 -10
  256. package/dist/ui/shared/theme-adaptation.js +0 -118
  257. package/dist/ui/shared/tool-header.d.ts +0 -9
  258. package/dist/ui/shared/tool-header.js +0 -25
  259. package/dist/utils/crash-logger.d.ts +0 -18
  260. package/dist/utils/crash-logger.js +0 -44
  261. package/dist/utils/dedent.d.ts +0 -8
  262. package/dist/utils/dedent.js +0 -38
  263. /package/dist/{http-server-auto-tunnel.d.ts → ui/file-preview/src/model.js} +0 -0
@@ -1,169 +0,0 @@
1
- /**
2
- * DOCX XML View
3
- *
4
- * Exposes word/document.xml from a DOCX file as pretty-printed XML that can be
5
- * read with offset/length pagination and edited with find/replace, just like a
6
- * text file. All formatting is preserved because we operate on the actual XML.
7
- *
8
- * Round-trip: DOCX → unzip → pretty-print → edit → compact → repack → DOCX
9
- */
10
- import fs from 'fs/promises';
11
- import PizZip from 'pizzip';
12
- // ════════════════════════════════════════════════════════════════
13
- // XML pretty-print / compact
14
- // ════════════════════════════════════════════════════════════════
15
- /**
16
- * Pretty-print XML by splitting tags onto separate lines with indentation.
17
- *
18
- * Preserves content inside text nodes exactly. Self-closing tags, inline
19
- * open+close tags (e.g. <w:t>text</w:t>), and pure closing tags are all
20
- * handled so that compact→pretty→compact is lossless.
21
- */
22
- export function prettyPrintXml(xml) {
23
- // Split between adjacent tags: "><" → ">\n<"
24
- // But NOT inside text content — we only split where > is immediately followed by <
25
- const parts = xml.split(/(?<=>)(?=<)/);
26
- const lines = [];
27
- let depth = 0;
28
- for (const part of parts) {
29
- const trimmed = part.trim();
30
- if (!trimmed)
31
- continue;
32
- const isClosing = trimmed.startsWith('</');
33
- const isSelfClosing = trimmed.endsWith('/>');
34
- const isProcessingInstruction = trimmed.startsWith('<?');
35
- // Inline: opens and closes on same fragment, e.g. <w:t>foo</w:t>
36
- const isInline = !isClosing && !isSelfClosing && trimmed.includes('</');
37
- if (isClosing) {
38
- depth = Math.max(0, depth - 1);
39
- }
40
- lines.push(' '.repeat(depth) + trimmed);
41
- if (!isClosing && !isSelfClosing && !isInline && !isProcessingInstruction) {
42
- depth++;
43
- }
44
- }
45
- return lines.join('\n');
46
- }
47
- /**
48
- * Compact pretty-printed XML back to a single line.
49
- *
50
- * CRITICAL: Must not introduce or remove whitespace inside <w:t> text nodes
51
- * or break xml:space="preserve" semantics. We achieve this by only stripping
52
- * leading indentation (which we added) and joining lines. The original XML
53
- * had no newlines between tags, so this restores the original form.
54
- */
55
- export function compactXml(prettyXml) {
56
- const lines = prettyXml.split('\n');
57
- return lines.map(l => l.trimStart()).join('');
58
- }
59
- /**
60
- * Read the document.xml from a DOCX as pretty-printed, line-based XML.
61
- * Supports offset/length pagination just like text file reading.
62
- */
63
- export async function readDocxXml(filePath, offset = 0, length) {
64
- const buf = await fs.readFile(filePath);
65
- const zip = new PizZip(buf);
66
- const docFile = zip.file('word/document.xml');
67
- if (!docFile)
68
- throw new Error('Invalid DOCX: missing word/document.xml');
69
- const rawXml = docFile.asText();
70
- const pretty = prettyPrintXml(rawXml);
71
- const allLines = pretty.split('\n');
72
- const totalLines = allLines.length;
73
- // Apply pagination
74
- let startLine;
75
- let sliceLength;
76
- if (offset < 0) {
77
- // Negative offset = tail (last N lines)
78
- startLine = Math.max(0, totalLines + offset);
79
- sliceLength = totalLines - startLine;
80
- }
81
- else {
82
- startLine = offset;
83
- sliceLength = length ?? totalLines;
84
- }
85
- const slicedLines = allLines.slice(startLine, startLine + sliceLength);
86
- const content = slicedLines.join('\n');
87
- return {
88
- content,
89
- lineCount: totalLines,
90
- path: filePath,
91
- rawSize: rawXml.length,
92
- };
93
- }
94
- /**
95
- * Apply a find/replace edit to a DOCX file's XML and write a new DOCX.
96
- *
97
- * The edit operates on the pretty-printed XML so that line-based context
98
- * from read_file can be used directly as the search string. After editing,
99
- * the XML is compacted back and repacked into the DOCX zip.
100
- *
101
- * @returns result with status, match count, and output path
102
- */
103
- export async function editDocxXml(inputPath, outputPath, oldStr, newStr, expectedReplacements = 1) {
104
- // 1. Read + pretty-print
105
- const buf = await fs.readFile(inputPath);
106
- const zip = new PizZip(buf);
107
- const docFile = zip.file('word/document.xml');
108
- if (!docFile)
109
- throw new Error('Invalid DOCX: missing word/document.xml');
110
- const rawXml = docFile.asText();
111
- const pretty = prettyPrintXml(rawXml);
112
- // 2. Normalize the search string's indentation to match our pretty-print.
113
- // The caller might copy lines from read_file output which uses the same
114
- // indentation, but just in case, we also try trimStart normalization.
115
- let matchCount = countOccurrences(pretty, oldStr);
116
- if (matchCount === 0) {
117
- return {
118
- status: 'no_match',
119
- matchCount: 0,
120
- outputPath,
121
- message: `Search string not found in ${inputPath}`,
122
- };
123
- }
124
- if (matchCount !== expectedReplacements) {
125
- return {
126
- status: 'unexpected_count',
127
- matchCount,
128
- outputPath,
129
- message: `Expected ${expectedReplacements} occurrence(s) but found ${matchCount}. ` +
130
- `Add more surrounding context to make the search string unique, ` +
131
- `or set expected_replacements to ${matchCount} to replace all.`,
132
- };
133
- }
134
- // 3. Apply edit(s)
135
- let edited = pretty;
136
- if (expectedReplacements === 1) {
137
- const idx = edited.indexOf(oldStr);
138
- edited = edited.substring(0, idx) + newStr + edited.substring(idx + oldStr.length);
139
- }
140
- else {
141
- edited = edited.split(oldStr).join(newStr);
142
- }
143
- // 4. Compact + repack
144
- const compacted = compactXml(edited);
145
- zip.file('word/document.xml', compacted);
146
- const outBuf = zip.generate({
147
- type: 'nodebuffer',
148
- compression: 'DEFLATE',
149
- compressionOptions: { level: 6 },
150
- });
151
- await fs.writeFile(outputPath, outBuf);
152
- return {
153
- status: 'applied',
154
- matchCount,
155
- outputPath,
156
- };
157
- }
158
- // ════════════════════════════════════════════════════════════════
159
- // Helpers
160
- // ════════════════════════════════════════════════════════════════
161
- function countOccurrences(haystack, needle) {
162
- let count = 0;
163
- let pos = haystack.indexOf(needle);
164
- while (pos !== -1) {
165
- count++;
166
- pos = haystack.indexOf(needle, pos + 1);
167
- }
168
- return count;
169
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * DOCX ZIP I/O — Single Responsibility: file ↔ zip ↔ xml.
3
- *
4
- * Every other module depends on these three functions for disk I/O;
5
- * none of them touch the file system directly.
6
- */
7
- import PizZip from 'pizzip';
8
- /**
9
- * Read a .docx file from disk and return a PizZip instance.
10
- */
11
- export declare function loadDocxZip(filePath: string): Promise<PizZip>;
12
- /**
13
- * Extract the raw XML string from word/document.xml inside the zip.
14
- * Throws if the entry is missing.
15
- */
16
- export declare function getDocumentXml(zip: PizZip): string;
17
- /**
18
- * Replace word/document.xml in the zip with new XML,
19
- * then write the whole archive to outputPath.
20
- */
21
- export declare function saveDocxZip(zip: PizZip, newDocumentXml: string, outputPath: string): Promise<void>;
@@ -1,35 +0,0 @@
1
- /**
2
- * DOCX ZIP I/O — Single Responsibility: file ↔ zip ↔ xml.
3
- *
4
- * Every other module depends on these three functions for disk I/O;
5
- * none of them touch the file system directly.
6
- */
7
- import fs from 'fs/promises';
8
- import PizZip from 'pizzip';
9
- /**
10
- * Read a .docx file from disk and return a PizZip instance.
11
- */
12
- export async function loadDocxZip(filePath) {
13
- const buf = await fs.readFile(filePath);
14
- return new PizZip(buf);
15
- }
16
- /**
17
- * Extract the raw XML string from word/document.xml inside the zip.
18
- * Throws if the entry is missing.
19
- */
20
- export function getDocumentXml(zip) {
21
- const entry = zip.file('word/document.xml');
22
- if (!entry) {
23
- throw new Error('Invalid DOCX: missing word/document.xml');
24
- }
25
- return entry.asText();
26
- }
27
- /**
28
- * Replace word/document.xml in the zip with new XML,
29
- * then write the whole archive to outputPath.
30
- */
31
- export async function saveDocxZip(zip, newDocumentXml, outputPath) {
32
- zip.file('word/document.xml', newDocumentXml);
33
- const buf = zip.generate({ type: 'nodebuffer' });
34
- await fs.writeFile(outputPath, buf);
35
- }
@@ -1,55 +0,0 @@
1
- import { AxBatchCommand, AxBatchResult, AxAppInfo, AxElement, AxStatus, MacosControlResult } from './types.js';
2
- export declare class AxAdapter {
3
- private helperPathCache;
4
- private signatures;
5
- private resolveHelperPath;
6
- private runHelper;
7
- private rememberElements;
8
- private elementScore;
9
- private fallbackRefindElement;
10
- status(): Promise<MacosControlResult<AxStatus>>;
11
- listApps(): Promise<MacosControlResult<AxAppInfo[]>>;
12
- listElements(args: {
13
- scope?: 'top_window' | 'app' | 'all';
14
- app?: string;
15
- text?: string;
16
- role?: string;
17
- depth?: number;
18
- limit?: number;
19
- }): Promise<MacosControlResult<AxElement[]>>;
20
- find(args: {
21
- app: string;
22
- text?: string;
23
- role?: string;
24
- depth?: number;
25
- limit?: number;
26
- index?: number;
27
- }): Promise<MacosControlResult<AxElement[]>>;
28
- clickById(id: string, appHint?: string): Promise<MacosControlResult<Record<string, unknown>>>;
29
- typeText(text: string): Promise<MacosControlResult<Record<string, unknown>>>;
30
- pressKey(key: string, modifiers?: string[]): Promise<MacosControlResult<Record<string, unknown>>>;
31
- activate(app: string): Promise<MacosControlResult<Record<string, unknown>>>;
32
- waitFor(args: {
33
- app: string;
34
- text: string;
35
- role?: string;
36
- timeout_ms?: number;
37
- depth?: number;
38
- }): Promise<MacosControlResult<AxElement>>;
39
- getState(args: {
40
- app: string;
41
- text?: string;
42
- role?: string;
43
- depth?: number;
44
- limit?: number;
45
- index?: number;
46
- }): Promise<MacosControlResult<Record<string, unknown>>>;
47
- scroll(args: {
48
- x: number;
49
- y: number;
50
- direction?: 'up' | 'down';
51
- amount?: number;
52
- }): Promise<MacosControlResult<Record<string, unknown>>>;
53
- batch(commands: AxBatchCommand[], stopOnError: boolean): Promise<MacosControlResult<AxBatchResult>>;
54
- }
55
- export declare const axAdapter: AxAdapter;