@deckflow/deckuse 1.2.1 → 1.3.1

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 (282) hide show
  1. package/README.es.md +342 -0
  2. package/README.fr.md +342 -0
  3. package/README.ja.md +342 -0
  4. package/README.ko.md +342 -0
  5. package/README.md +60 -8
  6. package/README.pt-BR.md +342 -0
  7. package/README.ru.md +342 -0
  8. package/README.zh-CN.md +367 -0
  9. package/assets/default.docx +0 -0
  10. package/assets/default.pptx +0 -0
  11. package/dist/bin.js +188 -21
  12. package/dist/bin.js.map +1 -1
  13. package/dist/core/adapter.d.ts +24 -0
  14. package/dist/core/adapter.d.ts.map +1 -0
  15. package/dist/core/adapter.js +20 -0
  16. package/dist/core/adapter.js.map +1 -0
  17. package/dist/core/executor.d.ts +24 -0
  18. package/dist/core/executor.d.ts.map +1 -0
  19. package/dist/core/executor.js +65 -0
  20. package/dist/core/executor.js.map +1 -0
  21. package/dist/core/index.d.ts +7 -0
  22. package/dist/core/index.d.ts.map +1 -0
  23. package/dist/core/index.js +7 -0
  24. package/dist/core/index.js.map +1 -0
  25. package/dist/core/length.d.ts +27 -0
  26. package/dist/core/length.d.ts.map +1 -0
  27. package/dist/core/length.js +63 -0
  28. package/dist/core/length.js.map +1 -0
  29. package/dist/core/measure.d.ts +24 -0
  30. package/dist/core/measure.d.ts.map +1 -0
  31. package/dist/core/measure.js +79 -0
  32. package/dist/core/measure.js.map +1 -0
  33. package/dist/core/not-implemented.d.ts +3 -0
  34. package/dist/core/not-implemented.d.ts.map +1 -0
  35. package/dist/core/not-implemented.js +12 -0
  36. package/dist/core/not-implemented.js.map +1 -0
  37. package/dist/core/schema.d.ts +3065 -0
  38. package/dist/core/schema.d.ts.map +1 -0
  39. package/dist/core/schema.js +799 -0
  40. package/dist/core/schema.js.map +1 -0
  41. package/dist/default-template.d.ts +8 -0
  42. package/dist/default-template.d.ts.map +1 -0
  43. package/dist/default-template.js +29 -0
  44. package/dist/default-template.js.map +1 -0
  45. package/dist/docx/adapter.d.ts +29 -0
  46. package/dist/docx/adapter.d.ts.map +1 -0
  47. package/dist/docx/adapter.js +442 -0
  48. package/dist/docx/adapter.js.map +1 -0
  49. package/dist/docx/addressing.d.ts +18 -0
  50. package/dist/docx/addressing.d.ts.map +1 -0
  51. package/dist/docx/addressing.js +111 -0
  52. package/dist/docx/addressing.js.map +1 -0
  53. package/dist/docx/blank.d.ts +4 -0
  54. package/dist/docx/blank.d.ts.map +1 -0
  55. package/dist/docx/blank.js +75 -0
  56. package/dist/docx/blank.js.map +1 -0
  57. package/dist/docx/index-sync.d.ts +7 -0
  58. package/dist/docx/index-sync.d.ts.map +1 -0
  59. package/dist/docx/index-sync.js +24 -0
  60. package/dist/docx/index-sync.js.map +1 -0
  61. package/dist/docx/index.d.ts +5 -0
  62. package/dist/docx/index.d.ts.map +1 -0
  63. package/dist/docx/index.js +4 -0
  64. package/dist/docx/index.js.map +1 -0
  65. package/dist/docx/indexer.d.ts +41 -0
  66. package/dist/docx/indexer.d.ts.map +1 -0
  67. package/dist/docx/indexer.js +353 -0
  68. package/dist/docx/indexer.js.map +1 -0
  69. package/dist/docx/mutations.d.ts +5 -0
  70. package/dist/docx/mutations.d.ts.map +1 -0
  71. package/dist/docx/mutations.js +311 -0
  72. package/dist/docx/mutations.js.map +1 -0
  73. package/dist/docx/paragraphs.d.ts +26 -0
  74. package/dist/docx/paragraphs.d.ts.map +1 -0
  75. package/dist/docx/paragraphs.js +314 -0
  76. package/dist/docx/paragraphs.js.map +1 -0
  77. package/dist/docx/properties.d.ts +23 -0
  78. package/dist/docx/properties.d.ts.map +1 -0
  79. package/dist/docx/properties.js +414 -0
  80. package/dist/docx/properties.js.map +1 -0
  81. package/dist/docx/tables.d.ts +4 -0
  82. package/dist/docx/tables.d.ts.map +1 -0
  83. package/dist/docx/tables.js +64 -0
  84. package/dist/docx/tables.js.map +1 -0
  85. package/dist/docx/text-spans.d.ts +25 -0
  86. package/dist/docx/text-spans.d.ts.map +1 -0
  87. package/dist/docx/text-spans.js +142 -0
  88. package/dist/docx/text-spans.js.map +1 -0
  89. package/dist/docx/types.d.ts +27 -0
  90. package/dist/docx/types.d.ts.map +1 -0
  91. package/dist/docx/types.js +2 -0
  92. package/dist/docx/types.js.map +1 -0
  93. package/dist/docx/workspace.d.ts +20 -0
  94. package/dist/docx/workspace.d.ts.map +1 -0
  95. package/dist/docx/workspace.js +145 -0
  96. package/dist/docx/workspace.js.map +1 -0
  97. package/dist/docx/xml.d.ts +18 -0
  98. package/dist/docx/xml.d.ts.map +1 -0
  99. package/dist/docx/xml.js +87 -0
  100. package/dist/docx/xml.js.map +1 -0
  101. package/dist/edition-config/index.d.ts +25 -0
  102. package/dist/edition-config/index.d.ts.map +1 -0
  103. package/dist/edition-config/index.js +22 -0
  104. package/dist/edition-config/index.js.map +1 -0
  105. package/dist/edition.d.ts +2 -2
  106. package/dist/edition.d.ts.map +1 -1
  107. package/dist/edition.js +1 -1
  108. package/dist/edition.js.map +1 -1
  109. package/dist/help.d.ts.map +1 -1
  110. package/dist/help.js +124 -32
  111. package/dist/help.js.map +1 -1
  112. package/dist/index.d.ts +1 -1
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +6 -6
  115. package/dist/index.js.map +1 -1
  116. package/dist/key/index.d.ts +2 -0
  117. package/dist/key/index.d.ts.map +1 -0
  118. package/dist/key/index.js +3 -0
  119. package/dist/key/index.js.map +1 -0
  120. package/dist/monitor-daemon.d.ts +21 -8
  121. package/dist/monitor-daemon.d.ts.map +1 -1
  122. package/dist/monitor-daemon.js +189 -51
  123. package/dist/monitor-daemon.js.map +1 -1
  124. package/dist/monitor-registry.d.ts +34 -0
  125. package/dist/monitor-registry.d.ts.map +1 -0
  126. package/dist/monitor-registry.js +191 -0
  127. package/dist/monitor-registry.js.map +1 -0
  128. package/dist/monitor.d.ts.map +1 -1
  129. package/dist/monitor.js +2 -12
  130. package/dist/monitor.js.map +1 -1
  131. package/dist/numbers/index.d.ts +2 -0
  132. package/dist/numbers/index.d.ts.map +1 -0
  133. package/dist/numbers/index.js +3 -0
  134. package/dist/numbers/index.js.map +1 -0
  135. package/dist/opc/index.d.ts +96 -0
  136. package/dist/opc/index.d.ts.map +1 -0
  137. package/dist/opc/index.js +596 -0
  138. package/dist/opc/index.js.map +1 -0
  139. package/dist/pptx/adapter.d.ts +167 -0
  140. package/dist/pptx/adapter.d.ts.map +1 -0
  141. package/dist/pptx/adapter.js +841 -0
  142. package/dist/pptx/adapter.js.map +1 -0
  143. package/dist/pptx/addressing.d.ts +47 -0
  144. package/dist/pptx/addressing.d.ts.map +1 -0
  145. package/dist/pptx/addressing.js +481 -0
  146. package/dist/pptx/addressing.js.map +1 -0
  147. package/dist/pptx/align.d.ts +24 -0
  148. package/dist/pptx/align.d.ts.map +1 -0
  149. package/dist/pptx/align.js +112 -0
  150. package/dist/pptx/align.js.map +1 -0
  151. package/dist/pptx/chart-classify.d.ts +10 -0
  152. package/dist/pptx/chart-classify.d.ts.map +1 -0
  153. package/dist/pptx/chart-classify.js +58 -0
  154. package/dist/pptx/chart-classify.js.map +1 -0
  155. package/dist/pptx/chart.d.ts +42 -0
  156. package/dist/pptx/chart.d.ts.map +1 -0
  157. package/dist/pptx/chart.js +614 -0
  158. package/dist/pptx/chart.js.map +1 -0
  159. package/dist/pptx/edition-extension.d.ts +25 -0
  160. package/dist/pptx/edition-extension.d.ts.map +1 -0
  161. package/dist/pptx/edition-extension.js +10 -0
  162. package/dist/pptx/edition-extension.js.map +1 -0
  163. package/dist/pptx/edition.d.ts +20 -0
  164. package/dist/pptx/edition.d.ts.map +1 -0
  165. package/dist/pptx/edition.js +69 -0
  166. package/dist/pptx/edition.js.map +1 -0
  167. package/dist/pptx/elements.d.ts +12 -0
  168. package/dist/pptx/elements.d.ts.map +1 -0
  169. package/dist/pptx/elements.js +224 -0
  170. package/dist/pptx/elements.js.map +1 -0
  171. package/dist/pptx/hyperlink.d.ts +7 -0
  172. package/dist/pptx/hyperlink.d.ts.map +1 -0
  173. package/dist/pptx/hyperlink.js +81 -0
  174. package/dist/pptx/hyperlink.js.map +1 -0
  175. package/dist/pptx/index-sync.d.ts +7 -0
  176. package/dist/pptx/index-sync.d.ts.map +1 -0
  177. package/dist/pptx/index-sync.js +24 -0
  178. package/dist/pptx/index-sync.js.map +1 -0
  179. package/dist/pptx/index.d.ts +10 -0
  180. package/dist/pptx/index.d.ts.map +1 -0
  181. package/dist/pptx/index.js +7 -0
  182. package/dist/pptx/index.js.map +1 -0
  183. package/dist/pptx/indexer.d.ts +19 -0
  184. package/dist/pptx/indexer.d.ts.map +1 -0
  185. package/dist/pptx/indexer.js +320 -0
  186. package/dist/pptx/indexer.js.map +1 -0
  187. package/dist/pptx/layout-ref.d.ts +41 -0
  188. package/dist/pptx/layout-ref.d.ts.map +1 -0
  189. package/dist/pptx/layout-ref.js +145 -0
  190. package/dist/pptx/layout-ref.js.map +1 -0
  191. package/dist/pptx/media.d.ts +15 -0
  192. package/dist/pptx/media.d.ts.map +1 -0
  193. package/dist/pptx/media.js +145 -0
  194. package/dist/pptx/media.js.map +1 -0
  195. package/dist/pptx/mutations.d.ts +11 -0
  196. package/dist/pptx/mutations.d.ts.map +1 -0
  197. package/dist/pptx/mutations.js +1114 -0
  198. package/dist/pptx/mutations.js.map +1 -0
  199. package/dist/pptx/picture.d.ts +25 -0
  200. package/dist/pptx/picture.d.ts.map +1 -0
  201. package/dist/pptx/picture.js +118 -0
  202. package/dist/pptx/picture.js.map +1 -0
  203. package/dist/pptx/placeholder-role.d.ts +19 -0
  204. package/dist/pptx/placeholder-role.d.ts.map +1 -0
  205. package/dist/pptx/placeholder-role.js +71 -0
  206. package/dist/pptx/placeholder-role.js.map +1 -0
  207. package/dist/pptx/properties.d.ts +13 -0
  208. package/dist/pptx/properties.d.ts.map +1 -0
  209. package/dist/pptx/properties.js +587 -0
  210. package/dist/pptx/properties.js.map +1 -0
  211. package/dist/pptx/resolve-properties.d.ts +17 -0
  212. package/dist/pptx/resolve-properties.d.ts.map +1 -0
  213. package/dist/pptx/resolve-properties.js +623 -0
  214. package/dist/pptx/resolve-properties.js.map +1 -0
  215. package/dist/pptx/slide-size.d.ts +9 -0
  216. package/dist/pptx/slide-size.d.ts.map +1 -0
  217. package/dist/pptx/slide-size.js +29 -0
  218. package/dist/pptx/slide-size.js.map +1 -0
  219. package/dist/pptx/slides.d.ts +15 -0
  220. package/dist/pptx/slides.d.ts.map +1 -0
  221. package/dist/pptx/slides.js +247 -0
  222. package/dist/pptx/slides.js.map +1 -0
  223. package/dist/pptx/table-measure.d.ts +43 -0
  224. package/dist/pptx/table-measure.d.ts.map +1 -0
  225. package/dist/pptx/table-measure.js +70 -0
  226. package/dist/pptx/table-measure.js.map +1 -0
  227. package/dist/pptx/table.d.ts +26 -0
  228. package/dist/pptx/table.d.ts.map +1 -0
  229. package/dist/pptx/table.js +638 -0
  230. package/dist/pptx/table.js.map +1 -0
  231. package/dist/pptx/types.d.ts +27 -0
  232. package/dist/pptx/types.d.ts.map +1 -0
  233. package/dist/pptx/types.js +2 -0
  234. package/dist/pptx/types.js.map +1 -0
  235. package/dist/pptx/workspace.d.ts +23 -0
  236. package/dist/pptx/workspace.d.ts.map +1 -0
  237. package/dist/pptx/workspace.js +148 -0
  238. package/dist/pptx/workspace.js.map +1 -0
  239. package/dist/pptx/xml.d.ts +75 -0
  240. package/dist/pptx/xml.d.ts.map +1 -0
  241. package/dist/pptx/xml.js +390 -0
  242. package/dist/pptx/xml.js.map +1 -0
  243. package/dist/render.d.ts.map +1 -1
  244. package/dist/render.js +14 -2
  245. package/dist/render.js.map +1 -1
  246. package/dist/version.d.ts +1 -1
  247. package/dist/version.js +1 -1
  248. package/dist/workspace/git.d.ts +7 -0
  249. package/dist/workspace/git.d.ts.map +1 -0
  250. package/dist/workspace/git.js +119 -0
  251. package/dist/workspace/git.js.map +1 -0
  252. package/dist/workspace/index.d.ts +7 -0
  253. package/dist/workspace/index.d.ts.map +1 -0
  254. package/dist/workspace/index.js +7 -0
  255. package/dist/workspace/index.js.map +1 -0
  256. package/dist/workspace/lock.d.ts +5 -0
  257. package/dist/workspace/lock.d.ts.map +1 -0
  258. package/dist/workspace/lock.js +104 -0
  259. package/dist/workspace/lock.js.map +1 -0
  260. package/dist/workspace/metadata.d.ts +4 -0
  261. package/dist/workspace/metadata.d.ts.map +1 -0
  262. package/dist/workspace/metadata.js +21 -0
  263. package/dist/workspace/metadata.js.map +1 -0
  264. package/dist/workspace/operations.d.ts +14 -0
  265. package/dist/workspace/operations.d.ts.map +1 -0
  266. package/dist/workspace/operations.js +35 -0
  267. package/dist/workspace/operations.js.map +1 -0
  268. package/dist/workspace/paths.d.ts +11 -0
  269. package/dist/workspace/paths.d.ts.map +1 -0
  270. package/dist/workspace/paths.js +12 -0
  271. package/dist/workspace/paths.js.map +1 -0
  272. package/dist/workspace/revision.d.ts +6 -0
  273. package/dist/workspace/revision.d.ts.map +1 -0
  274. package/dist/workspace/revision.js +15 -0
  275. package/dist/workspace/revision.js.map +1 -0
  276. package/dist/xlsx/index.d.ts +2 -0
  277. package/dist/xlsx/index.d.ts.map +1 -0
  278. package/dist/xlsx/index.js +3 -0
  279. package/dist/xlsx/index.js.map +1 -0
  280. package/package.json +51 -27
  281. package/schema/command.schema.json +2405 -0
  282. package/dist/.tsbuildinfo +0 -1
package/README.es.md ADDED
@@ -0,0 +1,342 @@
1
+ <div align="center">
2
+
3
+ # Deckuse
4
+
5
+ [![Node.js 18+](https://img.shields.io/badge/Node.js-18%2B-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
6
+ [![pnpm 10](https://img.shields.io/badge/pnpm-10-F69220?logo=pnpm&logoColor=white)](https://pnpm.io/)
7
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
8
+ [![PPTX](https://img.shields.io/badge/Format-PPTX-B7472A?logo=microsoftpowerpoint&logoColor=white)](#pptx-capabilities)
9
+
10
+ [English](README.md) · [简体中文](README.zh-CN.md) · [Français](README.fr.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Русский](README.ru.md) · [Español](README.es.md) · [Português](README.pt-BR.md)
11
+
12
+ </div>
13
+
14
+ Deckuse es un motor local-first, basado en esquemas, para automatizar documentos Office mediante agentes de programación. Abre un documento en un espacio de trabajo versionado, permite al agente inspeccionar y seleccionar su estructura, aplica comandos JSON explícitos, valida el resultado y exporta un documento nuevo.
15
+
16
+ PPTX y DOCX son los formatos implementados. Los adaptadores de XLSX, Keynote y Numbers devuelven deliberadamente `FORMAT_NOT_IMPLEMENTED`; aún no son destinos de edición compatibles.
17
+
18
+ Este repositorio es la **edición community** (`edition=community`). Véase [docs/edition.md](docs/edition.md). La edición comercial está en el repositorio separado `deckuse-commercial`.
19
+
20
+ ## Agent Skill (instalar primero)
21
+
22
+ Deckuse está pensado para agentes. **Instala el skill de Deckuse antes de usar la CLI**: codifica el bucle workspace-first, el `apply` por lotes, las direcciones semánticas, las unidades y las recetas de alto valor.
23
+
24
+ - Skill: [`skills/deckuse/SKILL.md`](skills/deckuse/SKILL.md)
25
+ - Cursor (proyecto): copia o crea un enlace simbólico en `.cursor/skills/deckuse/`
26
+ - Cursor (personal): copia o crea un enlace simbólico en `~/.cursor/skills/deckuse/`
27
+
28
+ Requiere **CLI `deckuse >= 1.2.0`**. Referencia rápida: [docs/agent-cookbook.md](docs/agent-cookbook.md).
29
+
30
+ ## Por qué Deckuse
31
+
32
+ Deckuse permite modificar una presentación existente sin recrearla desde cero. Si no hay archivo de origen, `deckuse new` crea un espacio de trabajo desde la plantilla en blanco incluida. Su flujo de trabajo prioriza deliberadamente la estructura sobre lo visual:
33
+
34
+ ```text
35
+ existing.pptx → init ─┐
36
+ ├→ list / get → set / add → validate → export
37
+ blank template → new ─┘
38
+ ```
39
+
40
+ Cada escritura exitosa confirma automáticamente una revisión Git, actualiza `operations.jsonl` y reconstruye `package.pptx`. Usa `undo` para revertir escrituras y `history` para consultar el registro de operaciones.
41
+
42
+ Conserva el XML intacto y las partes desconocidas del paquete siempre que es posible. No es un motor de renderizado PowerPoint completo: use `monitor` para vista previa HTML en vivo y `render` para capturar una diapositiva a PNG. Los `diff` / `branch` semánticos siguen aplazados.
43
+
44
+ ## Instalación
45
+
46
+ Requisitos: Node.js 18 o posterior.
47
+
48
+ ```sh
49
+ npm install -g @deckflow/deckuse
50
+ ```
51
+
52
+ Este comando instala globalmente la CLI `deckuse`.
53
+
54
+ ```sh
55
+ # Crear un espacio de trabajo persistente desde una presentación.
56
+ deckuse init input.pptx ./workspace --json
57
+
58
+ # O empezar desde la plantilla en blanco incluida (no hace falta input.pptx).
59
+ deckuse new ./workspace --json
60
+
61
+ # Inspeccionar el documento indexado y consultar elementos objetivo.
62
+ deckuse inspect ./workspace --json
63
+ deckuse query ./workspace 'kind=textbox text=Quarter' --json
64
+ deckuse query ./workspace '*' --limit 500 --json
65
+
66
+ # Aplicar un comando JSON, una matriz JSON o JSONL.
67
+ deckuse apply ./workspace --input operations.jsonl --json
68
+
69
+ # Validar el espacio de trabajo, consultar el historial y deshacer escrituras.
70
+ deckuse validate ./workspace --json
71
+ deckuse history ./workspace --json
72
+ deckuse undo ./workspace --steps 1 --json
73
+ ```
74
+
75
+ ## Flujo de trabajo de la CLI
76
+
77
+ `apply` accepts a transaction file (`{ "operations": [...] }`), a single JSON mutation, a JSON array, or JSON Lines. One invocation can apply many write commands; multiple commands run as one atomic batch. Use `--input -` (the default) to read from standard input. Legacy ElementRef mutations remain supported. Commands passed to `apply` do not need `version`, `workspaceId`, or `transactionId`: the CLI supplies them.
78
+
79
+ Los resultados se escriben como JSON en la salida estándar; los errores por argumentos o entradas no válidos se escriben en la salida de error. El estado `0` indica éxito, `1` error de comando y `2` error de uso o análisis de la CLI.
80
+
81
+ ### Selectores
82
+
83
+ Prefer `search text` / `search shape` and `list` for Phase 1a inventory. `query` remains available for back-compat and accepts either a selector string or a structured selector in a command. Space-separated terms are combined with AND.
84
+
85
+ | Syntax | Meaning |
86
+ | -------------------------------------- | ---------------------------------------------------- |
87
+ | `*` or `all` | Match every indexed element. |
88
+ | `kind=textbox` | Match an element kind by case-insensitive substring. |
89
+ | `text=Quarter` | Match text that contains the literal value. |
90
+ | `text~=pattern` | Match text with a Unicode regular expression. |
91
+ | `hasText=true` | Match elements that contain text. |
92
+ | `slide=256`, `id=256:10`, `name=Title` | Filter by slide ID, element ID, or name. |
93
+
94
+ Query results provide stable element references. A reference includes a document ID and an element ID or structural path; array positions are not stable identifiers.
95
+
96
+ ## Flujos de trabajo habituales de agentes
97
+
98
+ Estos ejemplos utilizan únicamente las capacidades actuales de PPTX. Describen flujos de trabajo que un agente puede componer a partir de primitivas de Deckuse, sin afirmar que Deckuse realice de forma independiente razonamiento, redacción de textos ni revisión visual.
99
+
100
+ ### 1. Actualizar un año desactualizado en toda una presentación
101
+
102
+ **Solicitud:** «Cambia cada referencia a `FY2025` por `FY2026` y no modifiques nada más».
103
+
104
+ Primero usa `query` para revisar los elementos afectados; después realiza un `replaceText` literal y valida antes de exportar.
105
+
106
+ ```sh
107
+ deckuse init master.pptx ./year-update --json
108
+ deckuse query ./year-update 'text=FY2025' --limit 1000 --json
109
+ cat > year-update.json <<'EOF'
110
+ {
111
+ "type": "replaceText",
112
+ "find": "FY2025",
113
+ "replace": "FY2026"
114
+ }
115
+ EOF
116
+ deckuse apply ./year-update --input year-update.json --json
117
+ deckuse validate ./year-update --json
118
+ ```
119
+
120
+ Cuando termina la escritura, `./year-update/package.pptx` se reconstruye automáticamente como la instantánea más reciente.
121
+
122
+ La consulta de revisión limita el cambio a las apariciones conocidas; `replaceText` realiza la modificación masiva aprobada y deja intactos los objetos no relacionados. Sin selector, actualiza los nodos de texto indexados más específicos en lugar de contenedores ancestros que agregan texto descendiente.
123
+
124
+ ### 2. Renombrar una empresa o un producto
125
+
126
+ **Solicitud:** «Sustituye el nombre antiguo del producto por el nuevo en todas partes».
127
+
128
+ Es el mismo patrón seguro de revisar y sustituir. Busca primero el nombre antiguo exacto y luego usa `replaceText` con un valor literal. Para variaciones como puntuación o espaciado, utiliza una sustitución mediante expresión regular solo después de revisar el resultado de `query`.
129
+
130
+ ```json
131
+ {
132
+ "type": "replaceText",
133
+ "find": "Legacy Platform",
134
+ "replace": "Unified Platform"
135
+ }
136
+ ```
137
+
138
+ Para un cambio más restringido, incluye un selector en el comando, por ejemplo, `"selector": "slide=256"`, de modo que solo una diapositiva sea elegible.
139
+
140
+ ### 3. Extraer un esquema de presentación para un agente
141
+
142
+ **Solicitud:** «Enumera los títulos de las diapositivas y resume de qué trata esta presentación».
143
+
144
+ Ejecuta `inspect` para recuperar la estructura indexada de la presentación y luego consulta los objetos que contienen texto. El agente invocador puede agrupar los objetos devueltos por ID de diapositiva, identificar objetos semejantes a títulos por sus nombres, posiciones o texto, y generar un resumen a partir del texto extraído.
145
+
146
+ ```sh
147
+ deckuse init briefing.pptx ./outline --json
148
+ deckuse inspect ./outline --depth 2 --json
149
+ deckuse query ./outline 'hasText=true' --limit 10000 --json
150
+ ```
151
+
152
+ Deckuse proporciona los datos fuente estructurados. El agente, y no Deckuse, es responsable de decidir qué texto es un título y de redactar el resumen.
153
+
154
+ ### 4. Ejecutar QA de contenido antes de la entrega
155
+
156
+ **Solicitud:** «Antes de enviar esta presentación, busca nombres de clientes antiguos, fechas, nombres de productos, URL y el texto obligatorio de descargo de responsabilidad».
157
+
158
+ Consulta cada riesgo conocido e inspecciona las referencias devueltas. Las comprobaciones de ausencia funcionan igual: consulta el texto obligatorio y marca un resultado vacío. Un agente puede generar un informe de QA sin modificar la presentación, o preparar comandos `setText` / `replaceText` dirigidos de forma precisa para correcciones aprobadas.
159
+
160
+ ```sh
161
+ deckuse query ./workspace 'text=Customer A' --limit 1000 --json
162
+ deckuse query ./workspace 'text~=https?://' --limit 1000 --json
163
+ deckuse query ./workspace 'text=Required disclaimer' --limit 1000 --json
164
+ ```
165
+
166
+ Esto es QA de contenido y estructura, no QA visual. Use `render` / `monitor` solo como ayuda de revisión; Deckuse no detecta solapes ni juzga la calidad del diseño.
167
+
168
+ ### 5. Cambiar exactamente un elemento en una diapositiva
169
+
170
+ **Solicitud:** «En la diapositiva 7, cambia el título a `Enterprise Strategy`; no cambies nada más».
171
+
172
+ Primero consulta esa diapositiva y el texto del título; después toma el `ref` devuelto y envía un comando `setText`. El `ref` evita una sustitución global ambigua.
173
+
174
+ ```json
175
+ {
176
+ "type": "setText",
177
+ "ref": {
178
+ "documentId": "./workspace",
179
+ "elementId": "256:10"
180
+ },
181
+ "text": "Enterprise Strategy"
182
+ }
183
+ ```
184
+
185
+ Los ID de elemento son ejemplos específicos de una presentación. Usa siempre un ID devuelto por el espacio de trabajo actual en lugar de copiar este valor.
186
+
187
+ ### 6. Estandarizar la tipografía de los títulos
188
+
189
+ **Solicitud:** «Establece todos los títulos aprobados en 28 pt y usa la tipografía aprobada».
190
+
191
+ Usa una consulta para identificar objetos de título, haz que el agente revise o filtre las referencias devueltas y aplica `setProperties` una vez por cada referencia aprobada. `setProperties` se dirige a una referencia cada vez; no acepta un selector por sí mismo.
192
+
193
+ ```json
194
+ {
195
+ "type": "setProperties",
196
+ "ref": {
197
+ "documentId": "./workspace",
198
+ "elementId": "256:8"
199
+ },
200
+ "properties": {
201
+ "fontSize": 28,
202
+ "fontFamily": "Approved Sans",
203
+ "bold": true
204
+ }
205
+ }
206
+ ```
207
+
208
+ El mismo comando puede establecer `fill`, `stroke` (también `border`, `outline` o `line`), `textColor`, `italic`, `underline`, `name` y `hidden`. Las claves de propiedad desconocidas fallan con `INVALID_COMMAND`.
209
+
210
+ ### 7. Ajustar con precisión la geometría de un objeto
211
+
212
+ **Solicitud:** «Desplaza ligeramente hacia abajo todos los títulos aprobados».
213
+
214
+ Consulta y selecciona las referencias de título previstas, inspecciona su geometría actual y emite un comando `setTransform` por objeto con coordenadas explícitas. Se trata de una operación estructural de geometría; no la presentes como corrección automática del diseño sin validación visual.
215
+
216
+ ```json
217
+ {
218
+ "type": "setTransform",
219
+ "ref": {
220
+ "documentId": "./workspace",
221
+ "elementId": "256:8"
222
+ },
223
+ "transform": {
224
+ "x": 914400,
225
+ "y": 731520,
226
+ "width": 8229600,
227
+ "height": 685800
228
+ }
229
+ }
230
+ ```
231
+
232
+ Las coordenadas de transformación son EMU de OOXML. Conserva `x`, `width` y `height` del objeto inspeccionado si solo cambias su posición vertical.
233
+
234
+ ### 8. Personalizar una presentación comercial aprobada
235
+
236
+ **Solicitud:** «Crea una versión para un cliente potencial. Actualiza el nombre del cliente y el texto aprobado específico de la cuenta, pero conserva el diseño».
237
+
238
+ Crea un espacio de trabajo independiente para cada salida a partir del original aprobado. Consulta los marcadores de posición o el texto actual del cliente, aplica únicamente sustituciones revisadas, valida y usa el `package.pptx` actualizado automáticamente.
239
+
240
+ ```sh
241
+ deckuse init approved-master.pptx ./customer-a --json
242
+ deckuse query ./customer-a 'text=Customer Name' --json
243
+ # Apply reviewed replacements for this customer only.
244
+ deckuse apply ./customer-a --input customer-a.jsonl --json
245
+ deckuse validate ./customer-a --json
246
+ ```
247
+
248
+ Los espacios de trabajo independientes evitan que las modificaciones de un cliente se filtren a la salida de otro. Sustituye únicamente los objetos cuya modificación el proceso de aprobación permite al agente.
249
+
250
+ ### 9. Producir variantes regionales o para distintas audiencias desde un original
251
+
252
+ **Solicitud:** «Genera variantes regionales y empresariales a partir de la presentación aprobada».
253
+
254
+ Inicializa un espacio de trabajo nuevo desde el mismo original para cada variante. Cada variante recibe su propio archivo de comandos y ruta de salida.
255
+
256
+ Prefer `apply` with a JSON array, JSONL, or `{ "operations": [...] }`: multiple write commands in one invocation run as one atomic batch (if one fails, none persist). The protocol `batch` command form remains supported.
257
+
258
+ ```json
259
+ [
260
+ {
261
+ "type": "replaceText",
262
+ "find": "Default Message",
263
+ "replace": "Regional Message"
264
+ },
265
+ {
266
+ "type": "replaceText",
267
+ "find": "Default Offer",
268
+ "replace": "Enterprise Offer"
269
+ }
270
+ ]
271
+ ```
272
+
273
+ ```sh
274
+ deckuse apply ./regional --input regional.json --json
275
+ ```
276
+
277
+ Esto conserva una única presentación fuente aprobada y hace que cada variante sea reproducible a partir de un conjunto de cambios explícito.
278
+
279
+ ### 10. Permitir que un agente de programación opere una presentación existente
280
+
281
+ **Solicitud:** «Inspecciona esta presentación, identifica las modificaciones solicitadas, realízalas y exporta un PPTX revisado».
282
+
283
+ Proporciona al agente este ciclo: inicializar un espacio de trabajo, inspeccionar o consultar antes de cada cambio dirigido, generar comandos JSON explícitos, aplicarlos, validar el paquete y usar el `package.pptx` reconstruido como exportación. Cuando la auditabilidad sea importante, guarda el archivo de comandos y los resultados de los comandos junto con la tarea.
284
+
285
+ Deckuse proporciona al agente referencias estables, selectores, transacciones, validación y una ruta de exportación determinista. El agente aporta la interpretación de la tarea y decide qué operaciones son adecuadas.
286
+
287
+ ### Ejemplo de `setProperties`
288
+
289
+ ```json
290
+ {
291
+ "type": "setProperties",
292
+ "ref": { "documentId": "./workspace", "elementId": "256:8" },
293
+ "properties": {
294
+ "stroke": { "color": "0000FF", "width": 1.5 },
295
+ "fill": "none",
296
+ "textColor": "111111",
297
+ "fontSize": 18,
298
+ "fontFamily": "Approved Sans",
299
+ "bold": true
300
+ }
301
+ }
302
+ ```
303
+
304
+ `stroke` and `fill` accept a hexadecimal color string. Use `none`, `false`, or `null` for no stroke or fill. `stroke.width` is in points and defaults to `1`.
305
+
306
+ ## Capacidades de PPTX
307
+
308
+ - Persistent workspaces, revision-conflict detection, dry runs, atomic batches, and an operation log.
309
+ - `inspect`, `list`, `get`, `search`, and back-compat `query` / `getText`; stable references include slide ID, part URI, cNvPr ID, and ancestor path when available.
310
+ - `setText` and `replaceText`, including literal or regular-expression replacement in an optional selector scope. Without a selector, `replaceText` prefers leaf text nodes over ancestor containers that aggregate descendant text. Newlines in `setText` become separate paragraphs.
311
+ - `setTransform` for explicit object position, size, rotation, and flip changes.
312
+ - `setProperties` for common shape and text properties, including `paragraph.align`, `paragraph.level`, `bullet`, `fill` transparency, and `hyperlink`.
313
+ - Add, duplicate, remove, and rebind slides to another layout (`setSlideLayout` / `deckuse set slide-layout`); layout refs accept index, `layout:N`, `slide:N`, display name, or basename. Rebind updates the relationship only (does not edit layout parts). Duplicated slides clone mutable notes and chart parts while layouts and media can be shared safely.
314
+ - Add shapes/text boxes (optional `role` writes a `p:ph` placeholder), connectors, groups, pictures (from a file path or base64), tables, charts (cache-only), and embedded video/audio; duplicate or remove elements.
315
+ - `role` must be an OOXML placeholder type (`title`, `body`, `subTitle`, `ctrTitle`, …). Common aliases like `subtitle`→`subTitle` are normalized; non-OOXML labels (for example `card`) are rejected so PowerPoint does not prompt to repair.
316
+ - Address placeholders with `slide:N/placeholder:<type>` (for example `title`, `body`, `subTitle`, `ctrTitle`).
317
+ - `replacePicture` replaces a picture’s embedded media in place while retaining its element reference and layer order.
318
+ - Table-cell addressing by table ID, row, and column; table row/column insert and delete via `setProperties`; cell `fill`; speaker-note reading and text editing (notes parts are created automatically when writing `slide:N/notes` if missing).
319
+ - Create charts (`bar` / `column` / `line` / `pie`) and edit chart title, series-name, and cached values. When an embedded workbook exists, Deckuse emits `EMBEDDED_WORKBOOK_NOT_SYNCHRONIZED` rather than claiming that workbook data was updated. Advanced charts (other families, combo, ChartEx) are preserve-only in the community edition.
320
+ - List and resolve master, layout, and theme parts; community edition rejects writes to those parts (`UNSUPPORTED_CAPABILITY`). Master/layout editing is available in the commercial edition repository.
321
+ - `monitor` for live HTML preview and `render` for single-slide PNG screenshots (office2html + Playwright).
322
+ - Preservation of unknown parts and untouched nodes. ZIP files are recompressed, so fidelity is defined by uncompressed data for untouched entries rather than ZIP byte identity.
323
+
324
+ ## Limitaciones
325
+
326
+ - Deckuse does not implement the full PowerPoint DrawingML surface, animation editing, SmartArt editing, OLE editing, or macro editing.
327
+ - It is not a full PowerPoint rendering or layout engine. `monitor` and `render` provide HTML/PNG review aids only; do not rely on them to assess visual quality, detect overlap, or automatically improve slide design.
328
+ - Chart edits update OOXML chart caches only; embedded Excel workbooks are not rewritten.
329
+ - Duplicated slides clone notes and chart parts and reuse layouts, themes, and media. Complex custom XML extensions are retained but not edited semantically.
330
+ - `setText` and `replaceText` collapse multi-run text in the targeted node into one run while retaining the first run’s style.
331
+
332
+ ## Comprobaciones de desarrollo
333
+
334
+ ```sh
335
+ pnpm format:check
336
+ pnpm lint
337
+ pnpm typecheck
338
+ pnpm test
339
+ pnpm build
340
+ ```
341
+
342
+ For the complete canonical English documentation and command wording, see [README.md](README.md).