@deckflow/deckuse 1.2.0 → 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 +401 -0
- 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.pt-BR.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 é um mecanismo local-first e orientado por esquema para automatização de documentos Office por agentes de código. Ele abre um documento em um espaço de trabalho versionado, permite que um agente inspecione e selecione sua estrutura, aplica comandos JSON explícitos, valida o resultado e exporta um novo documento.
|
|
15
|
+
|
|
16
|
+
PPTX e DOCX estão implementados. Os adaptadores XLSX, Keynote e Numbers retornam deliberadamente `FORMAT_NOT_IMPLEMENTED`; eles ainda não são destinos de edição suportados.
|
|
17
|
+
|
|
18
|
+
Este repositório é a **edição community** (`edition=community`). Veja [docs/edition.md](docs/edition.md). A edição comercial fica no repositório separado `deckuse-commercial`.
|
|
19
|
+
|
|
20
|
+
## Agent Skill (instale primeiro)
|
|
21
|
+
|
|
22
|
+
O Deckuse é feito para agentes. **Instale o skill do Deckuse antes de usar a CLI** — ele codifica o loop workspace-first, o `apply` em lote, endereços semânticos, unidades e receitas de alto valor.
|
|
23
|
+
|
|
24
|
+
- Skill: [`skills/deckuse/SKILL.md`](skills/deckuse/SKILL.md)
|
|
25
|
+
- Cursor (projeto): copie ou crie um symlink em `.cursor/skills/deckuse/`
|
|
26
|
+
- Cursor (pessoal): copie ou crie um symlink em `~/.cursor/skills/deckuse/`
|
|
27
|
+
|
|
28
|
+
Requer **CLI `deckuse >= 1.2.0`**. Referência rápida: [docs/agent-cookbook.md](docs/agent-cookbook.md).
|
|
29
|
+
|
|
30
|
+
## Por que usar o Deckuse
|
|
31
|
+
|
|
32
|
+
O Deckuse permite modificar uma apresentação existente sem recriá-la do zero. Sem arquivo de origem, `deckuse new` cria um espaço de trabalho a partir do modelo em branco incluso. O fluxo de trabalho prioriza deliberadamente a estrutura, e não o visual:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
existing.pptx → init ─┐
|
|
36
|
+
├→ list / get → set / add → validate → export
|
|
37
|
+
blank template → new ─┘
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Cada gravação bem-sucedida confirma automaticamente uma revisão Git, atualiza `operations.jsonl` e reconstrói `package.pptx`. Use `undo` para reverter gravações e `history` para consultar o registro de operações.
|
|
41
|
+
|
|
42
|
+
Ele preserva, sempre que possível, XML não modificado e partes desconhecidas do pacote. Não é um mecanismo completo de renderização do PowerPoint: use `monitor` para pré-visualização HTML ao vivo e `render` para capturar um slide em PNG. `diff` / `branch` semânticos permanecem adiados.
|
|
43
|
+
|
|
44
|
+
## Instalação
|
|
45
|
+
|
|
46
|
+
Requisitos: Node.js 18 ou posterior.
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
npm install -g @deckflow/deckuse
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Este comando instala globalmente a CLI `deckuse`.
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
# Criar um espaço de trabalho persistente a partir de uma apresentação.
|
|
56
|
+
deckuse init input.pptx ./workspace --json
|
|
57
|
+
|
|
58
|
+
# Ou começar pelo modelo em branco incluso (sem input.pptx).
|
|
59
|
+
deckuse new ./workspace --json
|
|
60
|
+
|
|
61
|
+
# Inspecionar o documento indexado e consultar elementos de destino.
|
|
62
|
+
deckuse inspect ./workspace --json
|
|
63
|
+
deckuse query ./workspace 'kind=textbox text=Quarter' --json
|
|
64
|
+
deckuse query ./workspace '*' --limit 500 --json
|
|
65
|
+
|
|
66
|
+
# Aplicar um comando JSON, uma matriz JSON ou JSONL.
|
|
67
|
+
deckuse apply ./workspace --input operations.jsonl --json
|
|
68
|
+
|
|
69
|
+
# Validar o pacote e exportar.
|
|
70
|
+
deckuse validate ./workspace --json
|
|
71
|
+
deckuse history ./workspace --json
|
|
72
|
+
deckuse undo ./workspace --steps 1 --json
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Fluxo de trabalho da 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
|
+
Os resultados dos comandos são gravados em JSON na saída padrão; erros de argumentos ou entrada inválidos são gravados na saída de erro. O status `0` indica sucesso, `1` indica falha de comando e `2` indica falha de uso ou análise da CLI.
|
|
80
|
+
|
|
81
|
+
### Seletores
|
|
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
|
+
## Fluxos de trabalho comuns para agentes
|
|
97
|
+
|
|
98
|
+
Estes exemplos usam apenas os recursos atuais de PPTX. Eles descrevem fluxos de trabalho que um agente pode compor a partir dos elementos básicos do Deckuse, sem afirmar que o Deckuse realiza de modo independente raciocínio, redação ou revisão visual.
|
|
99
|
+
|
|
100
|
+
### 1. Atualizar um ano desatualizado em toda uma apresentação
|
|
101
|
+
|
|
102
|
+
**Solicitação:** “Altere todas as referências a `FY2025` para `FY2026` e não mude mais nada.”
|
|
103
|
+
|
|
104
|
+
Primeiro, use `query` para revisar os elementos afetados; em seguida, execute um `replaceText` literal e valide 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
|
+
Quando a gravação termina, `./year-update/package.pptx` é reconstruído automaticamente como o instantâneo mais recente.
|
|
121
|
+
|
|
122
|
+
A consulta de revisão limita a alteração às ocorrências conhecidas; `replaceText` executa a mutação em massa aprovada, mantendo intactos os objetos não relacionados. Sem selector, ele atualiza os nós de texto indexados mais específicos em vez de contêineres ancestrais que agregam texto descendente.
|
|
123
|
+
|
|
124
|
+
### 2. Renomear uma empresa ou produto
|
|
125
|
+
|
|
126
|
+
**Solicitação:** “Substitua o nome antigo do produto pelo novo nome em todos os lugares.”
|
|
127
|
+
|
|
128
|
+
Este é o mesmo padrão seguro de revisar e substituir. Primeiro, pesquise o nome antigo exato; depois, use `replaceText` com um valor literal. Para variações como pontuação ou espaçamento, use uma substituição por expressão regular somente após verificar a saída da consulta.
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"type": "replaceText",
|
|
133
|
+
"find": "Legacy Platform",
|
|
134
|
+
"replace": "Unified Platform"
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Para uma alteração mais restrita, inclua um seletor no comando, por exemplo, `"selector": "slide=256"`, para que somente um slide possa ser afetado.
|
|
139
|
+
|
|
140
|
+
### 3. Extrair um esboço de apresentação para um agente
|
|
141
|
+
|
|
142
|
+
**Solicitação:** “Liste os títulos dos slides e resuma o que esta apresentação aborda.”
|
|
143
|
+
|
|
144
|
+
Execute `inspect` para recuperar a estrutura indexada da apresentação e, depois, consulte objetos que contenham texto. O agente que chama o Deckuse pode agrupar os objetos retornados por ID de slide, identificar objetos semelhantes a títulos por seus nomes, posições ou texto e gerar um resumo a partir do 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
|
+
O Deckuse fornece os dados-fonte estruturados. O agente, e não o Deckuse, é responsável por decidir qual texto é um título e por redigir o resumo.
|
|
153
|
+
|
|
154
|
+
### 4. Executar QA de conteúdo antes da entrega
|
|
155
|
+
|
|
156
|
+
**Solicitação:** “Encontre nomes antigos de clientes, datas, nomes de produtos, URLs e o texto obrigatório de aviso legal antes de enviar esta apresentação.”
|
|
157
|
+
|
|
158
|
+
Consulte cada risco conhecido e inspecione as referências retornadas. As verificações de ausência funcionam da mesma forma: consulte o texto obrigatório e sinalize um resultado vazio. Um agente pode gerar um relatório de QA sem modificar a apresentação ou preparar comandos `setText` / `replaceText` estritamente direcionados para correções aprovadas.
|
|
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
|
+
Trata-se de QA de conteúdo e estrutura, e não de QA visual. Use `render` / `monitor` apenas como ajuda de revisão; o Deckuse não detecta sobreposição nem avalia qualidade de layout.
|
|
167
|
+
|
|
168
|
+
### 5. Alterar exatamente um item em um slide
|
|
169
|
+
|
|
170
|
+
**Solicitação:** “No slide 7, altere o título para `Enterprise Strategy`; não altere mais nada.”
|
|
171
|
+
|
|
172
|
+
Primeiro, consulte esse slide e o texto do título; depois, use o `ref` retornado para enviar um comando `setText`. O `ref` evita uma substituição global ambígua.
|
|
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
|
+
Os IDs de elemento são exemplos específicos de uma apresentação. Sempre use um ID retornado pelo espaço de trabalho atual, em vez de copiar este valor.
|
|
186
|
+
|
|
187
|
+
### 6. Padronizar a tipografia dos títulos
|
|
188
|
+
|
|
189
|
+
**Solicitação:** “Defina todos os títulos aprovados como 28 pt e use a família tipográfica aprovada.”
|
|
190
|
+
|
|
191
|
+
Use uma consulta para identificar os objetos de título, faça o agente revisar ou filtrar as referências retornadas e aplique `setProperties` uma vez para cada referência aprovada. `setProperties` tem como alvo uma referência por vez; ele não aceita um seletor diretamente.
|
|
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
|
+
O mesmo comando pode definir `fill`, `stroke` (também `border`, `outline` ou `line`), `textColor`, `italic`, `underline`, `name` e `hidden`. Chaves de propriedade desconhecidas falham com `INVALID_COMMAND`.
|
|
209
|
+
|
|
210
|
+
### 7. Ajustar com precisão a geometria de um objeto
|
|
211
|
+
|
|
212
|
+
**Solicitação:** “Mova cada título aprovado um pouco mais para baixo.”
|
|
213
|
+
|
|
214
|
+
Consulte e selecione as referências dos títulos pretendidos, inspecione a geometria atual deles e emita um comando `setTransform` por objeto com coordenadas explícitas. Esta é uma operação estrutural de geometria; não a apresente como correção automática de layout sem validação 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
|
+
As coordenadas de transformação são EMUs do OOXML. Preserve `x`, `width` e `height` do objeto inspecionado quando alterar apenas sua posição vertical.
|
|
233
|
+
|
|
234
|
+
### 8. Personalizar uma apresentação de vendas aprovada
|
|
235
|
+
|
|
236
|
+
**Solicitação:** “Crie uma versão para um cliente em potencial. Atualize o nome do cliente e o texto aprovado específico da conta, mas preserve o design.”
|
|
237
|
+
|
|
238
|
+
Crie um espaço de trabalho separado para cada saída a partir do modelo mestre aprovado. Consulte os placeholders ou o texto existente do cliente, aplique apenas as substituições revisadas, valide e use o `package.pptx` atualizado automaticamente.
|
|
239
|
+
|
|
240
|
+
```sh
|
|
241
|
+
deckuse init approved-master.pptx ./customer-a --json
|
|
242
|
+
deckuse query ./customer-a 'text=Customer Name' --json
|
|
243
|
+
# Aplicar somente as substituições revisadas para este cliente.
|
|
244
|
+
deckuse apply ./customer-a --input customer-a.jsonl --json
|
|
245
|
+
deckuse validate ./customer-a --json
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Espaços de trabalho separados impedem que as edições de um cliente vazem para a saída de outro. Substitua apenas os objetos que o processo de aprovação permite que o agente modifique.
|
|
249
|
+
|
|
250
|
+
### 9. Produzir variantes regionais ou para públicos diferentes a partir de um único modelo mestre
|
|
251
|
+
|
|
252
|
+
**Solicitação:** “Gere variantes regionais e empresariais a partir da apresentação aprovada.”
|
|
253
|
+
|
|
254
|
+
Inicialize um novo espaço de trabalho a partir do mesmo modelo mestre para cada variante. Cada variante recebe seu próprio arquivo de comandos e caminho de saída.
|
|
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
|
+
Isso preserva uma única apresentação-fonte aprovada e, ao mesmo tempo, torna cada variante reproduzível a partir de um conjunto explícito de alterações.
|
|
278
|
+
|
|
279
|
+
### 10. Permitir que um agente de código opere uma apresentação existente
|
|
280
|
+
|
|
281
|
+
**Solicitação:** “Inspecione esta apresentação, identifique as edições solicitadas, realize-as e exporte um PPTX revisado.”
|
|
282
|
+
|
|
283
|
+
Forneça ao agente este ciclo: inicializar um espaço de trabalho, inspecionar ou consultar antes de cada alteração direcionada, gerar comandos JSON explícitos, aplicá-los, validar o pacote e usar o `package.pptx` reconstruído como exportação. Armazene o arquivo de comandos e os resultados dos comandos junto com a tarefa quando a auditabilidade for importante.
|
|
284
|
+
|
|
285
|
+
O Deckuse fornece ao agente referências estáveis, seletores, transações, validação e um caminho de exportação determinístico. O agente fornece a interpretação da tarefa e decide quais operações são adequadas.
|
|
286
|
+
|
|
287
|
+
### Exemplo 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
|
+
## Recursos 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
|
+
## Limitações
|
|
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
|
+
## Verificações de desenvolvimento
|
|
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).
|