@deckflow/deckuse 1.2.1 → 1.3.0
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.
- package/README.es.md +342 -0
- package/README.fr.md +342 -0
- package/README.ja.md +342 -0
- package/README.ko.md +342 -0
- package/README.md +46 -8
- package/README.pt-BR.md +342 -0
- package/README.ru.md +342 -0
- package/README.zh-CN.md +367 -0
- package/assets/default.docx +0 -0
- package/assets/default.pptx +0 -0
- package/dist/bin.js +183 -19
- package/dist/bin.js.map +1 -1
- package/dist/core/adapter.d.ts +24 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +20 -0
- package/dist/core/adapter.js.map +1 -0
- package/dist/core/executor.d.ts +24 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/core/executor.js +65 -0
- package/dist/core/executor.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/length.d.ts +27 -0
- package/dist/core/length.d.ts.map +1 -0
- package/dist/core/length.js +63 -0
- package/dist/core/length.js.map +1 -0
- package/dist/core/measure.d.ts +24 -0
- package/dist/core/measure.d.ts.map +1 -0
- package/dist/core/measure.js +79 -0
- package/dist/core/measure.js.map +1 -0
- package/dist/core/not-implemented.d.ts +3 -0
- package/dist/core/not-implemented.d.ts.map +1 -0
- package/dist/core/not-implemented.js +12 -0
- package/dist/core/not-implemented.js.map +1 -0
- package/dist/core/schema.d.ts +3035 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +798 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/default-template.d.ts +8 -0
- package/dist/default-template.d.ts.map +1 -0
- package/dist/default-template.js +29 -0
- package/dist/default-template.js.map +1 -0
- package/dist/docx/adapter.d.ts +29 -0
- package/dist/docx/adapter.d.ts.map +1 -0
- package/dist/docx/adapter.js +442 -0
- package/dist/docx/adapter.js.map +1 -0
- package/dist/docx/addressing.d.ts +18 -0
- package/dist/docx/addressing.d.ts.map +1 -0
- package/dist/docx/addressing.js +111 -0
- package/dist/docx/addressing.js.map +1 -0
- package/dist/docx/blank.d.ts +4 -0
- package/dist/docx/blank.d.ts.map +1 -0
- package/dist/docx/blank.js +75 -0
- package/dist/docx/blank.js.map +1 -0
- package/dist/docx/index-sync.d.ts +7 -0
- package/dist/docx/index-sync.d.ts.map +1 -0
- package/dist/docx/index-sync.js +24 -0
- package/dist/docx/index-sync.js.map +1 -0
- package/dist/docx/index.d.ts +5 -0
- package/dist/docx/index.d.ts.map +1 -0
- package/dist/docx/index.js +4 -0
- package/dist/docx/index.js.map +1 -0
- package/dist/docx/indexer.d.ts +41 -0
- package/dist/docx/indexer.d.ts.map +1 -0
- package/dist/docx/indexer.js +353 -0
- package/dist/docx/indexer.js.map +1 -0
- package/dist/docx/mutations.d.ts +5 -0
- package/dist/docx/mutations.d.ts.map +1 -0
- package/dist/docx/mutations.js +311 -0
- package/dist/docx/mutations.js.map +1 -0
- package/dist/docx/paragraphs.d.ts +26 -0
- package/dist/docx/paragraphs.d.ts.map +1 -0
- package/dist/docx/paragraphs.js +314 -0
- package/dist/docx/paragraphs.js.map +1 -0
- package/dist/docx/properties.d.ts +23 -0
- package/dist/docx/properties.d.ts.map +1 -0
- package/dist/docx/properties.js +414 -0
- package/dist/docx/properties.js.map +1 -0
- package/dist/docx/tables.d.ts +4 -0
- package/dist/docx/tables.d.ts.map +1 -0
- package/dist/docx/tables.js +64 -0
- package/dist/docx/tables.js.map +1 -0
- package/dist/docx/text-spans.d.ts +25 -0
- package/dist/docx/text-spans.d.ts.map +1 -0
- package/dist/docx/text-spans.js +142 -0
- package/dist/docx/text-spans.js.map +1 -0
- package/dist/docx/types.d.ts +27 -0
- package/dist/docx/types.d.ts.map +1 -0
- package/dist/docx/types.js +2 -0
- package/dist/docx/types.js.map +1 -0
- package/dist/docx/workspace.d.ts +20 -0
- package/dist/docx/workspace.d.ts.map +1 -0
- package/dist/docx/workspace.js +145 -0
- package/dist/docx/workspace.js.map +1 -0
- package/dist/docx/xml.d.ts +18 -0
- package/dist/docx/xml.d.ts.map +1 -0
- package/dist/docx/xml.js +87 -0
- package/dist/docx/xml.js.map +1 -0
- package/dist/edition-config/index.d.ts +25 -0
- package/dist/edition-config/index.d.ts.map +1 -0
- package/dist/edition-config/index.js +22 -0
- package/dist/edition-config/index.js.map +1 -0
- package/dist/edition.d.ts +2 -2
- package/dist/edition.d.ts.map +1 -1
- package/dist/edition.js +1 -1
- package/dist/edition.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +124 -32
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/key/index.d.ts +2 -0
- package/dist/key/index.d.ts.map +1 -0
- package/dist/key/index.js +3 -0
- package/dist/key/index.js.map +1 -0
- package/dist/monitor-daemon.d.ts +21 -8
- package/dist/monitor-daemon.d.ts.map +1 -1
- package/dist/monitor-daemon.js +189 -51
- package/dist/monitor-daemon.js.map +1 -1
- package/dist/monitor-registry.d.ts +34 -0
- package/dist/monitor-registry.d.ts.map +1 -0
- package/dist/monitor-registry.js +191 -0
- package/dist/monitor-registry.js.map +1 -0
- package/dist/monitor.js +1 -1
- package/dist/monitor.js.map +1 -1
- package/dist/numbers/index.d.ts +2 -0
- package/dist/numbers/index.d.ts.map +1 -0
- package/dist/numbers/index.js +3 -0
- package/dist/numbers/index.js.map +1 -0
- package/dist/opc/index.d.ts +90 -0
- package/dist/opc/index.d.ts.map +1 -0
- package/dist/opc/index.js +569 -0
- package/dist/opc/index.js.map +1 -0
- package/dist/pptx/adapter.d.ts +167 -0
- package/dist/pptx/adapter.d.ts.map +1 -0
- package/dist/pptx/adapter.js +807 -0
- package/dist/pptx/adapter.js.map +1 -0
- package/dist/pptx/addressing.d.ts +45 -0
- package/dist/pptx/addressing.d.ts.map +1 -0
- package/dist/pptx/addressing.js +428 -0
- package/dist/pptx/addressing.js.map +1 -0
- package/dist/pptx/align.d.ts +24 -0
- package/dist/pptx/align.d.ts.map +1 -0
- package/dist/pptx/align.js +112 -0
- package/dist/pptx/align.js.map +1 -0
- package/dist/pptx/chart-classify.d.ts +10 -0
- package/dist/pptx/chart-classify.d.ts.map +1 -0
- package/dist/pptx/chart-classify.js +58 -0
- package/dist/pptx/chart-classify.js.map +1 -0
- package/dist/pptx/chart.d.ts +42 -0
- package/dist/pptx/chart.d.ts.map +1 -0
- package/dist/pptx/chart.js +614 -0
- package/dist/pptx/chart.js.map +1 -0
- package/dist/pptx/edition-extension.d.ts +25 -0
- package/dist/pptx/edition-extension.d.ts.map +1 -0
- package/dist/pptx/edition-extension.js +10 -0
- package/dist/pptx/edition-extension.js.map +1 -0
- package/dist/pptx/edition.d.ts +20 -0
- package/dist/pptx/edition.d.ts.map +1 -0
- package/dist/pptx/edition.js +69 -0
- package/dist/pptx/edition.js.map +1 -0
- package/dist/pptx/elements.d.ts +12 -0
- package/dist/pptx/elements.d.ts.map +1 -0
- package/dist/pptx/elements.js +224 -0
- package/dist/pptx/elements.js.map +1 -0
- package/dist/pptx/hyperlink.d.ts +7 -0
- package/dist/pptx/hyperlink.d.ts.map +1 -0
- package/dist/pptx/hyperlink.js +81 -0
- package/dist/pptx/hyperlink.js.map +1 -0
- package/dist/pptx/index-sync.d.ts +7 -0
- package/dist/pptx/index-sync.d.ts.map +1 -0
- package/dist/pptx/index-sync.js +24 -0
- package/dist/pptx/index-sync.js.map +1 -0
- package/dist/pptx/index.d.ts +10 -0
- package/dist/pptx/index.d.ts.map +1 -0
- package/dist/pptx/index.js +7 -0
- package/dist/pptx/index.js.map +1 -0
- package/dist/pptx/indexer.d.ts +19 -0
- package/dist/pptx/indexer.d.ts.map +1 -0
- package/dist/pptx/indexer.js +319 -0
- package/dist/pptx/indexer.js.map +1 -0
- package/dist/pptx/layout-ref.d.ts +41 -0
- package/dist/pptx/layout-ref.d.ts.map +1 -0
- package/dist/pptx/layout-ref.js +145 -0
- package/dist/pptx/layout-ref.js.map +1 -0
- package/dist/pptx/media.d.ts +15 -0
- package/dist/pptx/media.d.ts.map +1 -0
- package/dist/pptx/media.js +145 -0
- package/dist/pptx/media.js.map +1 -0
- package/dist/pptx/mutations.d.ts +11 -0
- package/dist/pptx/mutations.d.ts.map +1 -0
- package/dist/pptx/mutations.js +1111 -0
- package/dist/pptx/mutations.js.map +1 -0
- package/dist/pptx/picture.d.ts +25 -0
- package/dist/pptx/picture.d.ts.map +1 -0
- package/dist/pptx/picture.js +118 -0
- package/dist/pptx/picture.js.map +1 -0
- package/dist/pptx/placeholder-role.d.ts +19 -0
- package/dist/pptx/placeholder-role.d.ts.map +1 -0
- package/dist/pptx/placeholder-role.js +71 -0
- package/dist/pptx/placeholder-role.js.map +1 -0
- package/dist/pptx/properties.d.ts +13 -0
- package/dist/pptx/properties.d.ts.map +1 -0
- package/dist/pptx/properties.js +587 -0
- package/dist/pptx/properties.js.map +1 -0
- package/dist/pptx/resolve-properties.d.ts +17 -0
- package/dist/pptx/resolve-properties.d.ts.map +1 -0
- package/dist/pptx/resolve-properties.js +571 -0
- package/dist/pptx/resolve-properties.js.map +1 -0
- package/dist/pptx/slide-size.d.ts +9 -0
- package/dist/pptx/slide-size.d.ts.map +1 -0
- package/dist/pptx/slide-size.js +29 -0
- package/dist/pptx/slide-size.js.map +1 -0
- package/dist/pptx/slides.d.ts +15 -0
- package/dist/pptx/slides.d.ts.map +1 -0
- package/dist/pptx/slides.js +236 -0
- package/dist/pptx/slides.js.map +1 -0
- package/dist/pptx/table-measure.d.ts +43 -0
- package/dist/pptx/table-measure.d.ts.map +1 -0
- package/dist/pptx/table-measure.js +70 -0
- package/dist/pptx/table-measure.js.map +1 -0
- package/dist/pptx/table.d.ts +23 -0
- package/dist/pptx/table.d.ts.map +1 -0
- package/dist/pptx/table.js +529 -0
- package/dist/pptx/table.js.map +1 -0
- package/dist/pptx/types.d.ts +27 -0
- package/dist/pptx/types.d.ts.map +1 -0
- package/dist/pptx/types.js +2 -0
- package/dist/pptx/types.js.map +1 -0
- package/dist/pptx/workspace.d.ts +23 -0
- package/dist/pptx/workspace.d.ts.map +1 -0
- package/dist/pptx/workspace.js +148 -0
- package/dist/pptx/workspace.js.map +1 -0
- package/dist/pptx/xml.d.ts +67 -0
- package/dist/pptx/xml.d.ts.map +1 -0
- package/dist/pptx/xml.js +355 -0
- package/dist/pptx/xml.js.map +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +14 -2
- package/dist/render.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workspace/git.d.ts +7 -0
- package/dist/workspace/git.d.ts.map +1 -0
- package/dist/workspace/git.js +82 -0
- package/dist/workspace/git.js.map +1 -0
- package/dist/workspace/index.d.ts +7 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +7 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/lock.d.ts +3 -0
- package/dist/workspace/lock.d.ts.map +1 -0
- package/dist/workspace/lock.js +35 -0
- package/dist/workspace/lock.js.map +1 -0
- package/dist/workspace/metadata.d.ts +4 -0
- package/dist/workspace/metadata.d.ts.map +1 -0
- package/dist/workspace/metadata.js +21 -0
- package/dist/workspace/metadata.js.map +1 -0
- package/dist/workspace/operations.d.ts +14 -0
- package/dist/workspace/operations.d.ts.map +1 -0
- package/dist/workspace/operations.js +35 -0
- package/dist/workspace/operations.js.map +1 -0
- package/dist/workspace/paths.d.ts +11 -0
- package/dist/workspace/paths.d.ts.map +1 -0
- package/dist/workspace/paths.js +12 -0
- package/dist/workspace/paths.js.map +1 -0
- package/dist/workspace/revision.d.ts +6 -0
- package/dist/workspace/revision.d.ts.map +1 -0
- package/dist/workspace/revision.js +15 -0
- package/dist/workspace/revision.js.map +1 -0
- package/dist/xlsx/index.d.ts +2 -0
- package/dist/xlsx/index.d.ts.map +1 -0
- package/dist/xlsx/index.js +3 -0
- package/dist/xlsx/index.js.map +1 -0
- package/package.json +48 -27
- package/schema/command.schema.json +2399 -0
- package/dist/.tsbuildinfo +0 -1
package/README.es.md
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Deckuse
|
|
4
|
+
|
|
5
|
+
[](https://nodejs.org/)
|
|
6
|
+
[](https://pnpm.io/)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
[](#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).
|