@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.ja.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 は、コーディングエージェント向けのローカルファーストかつスキーマ駆動の Office 文書自動化エンジンです。文書をバージョン管理されたワークスペースとして開き、エージェントが構造を検査・対象指定し、明示的な JSON コマンドを適用、検証して新しい文書を出力できます。
15
+
16
+ 現在実装されている形式は PPTX と DOCX です。XLSX、Keynote、Numbers のアダプターは意図的に `FORMAT_NOT_IMPLEMENTED` を返します。これらはまだ編集対象としてサポートされていません。
17
+
18
+ 本リポジトリは**コミュニティ版**(`edition=community`)です。詳細は [docs/edition.md](docs/edition.md)。商用版は別リポジトリ `deckuse-commercial` にあります。
19
+
20
+ ## Agent Skill(まずインストール)
21
+
22
+ Deckuse はエージェント優先です。**CLI を使う前に Deckuse skill をインストールしてください**。workspace 優先のループ、バッチ `apply`、セマンティックアドレス、単位系、よく使うレシピが含まれており、README だけでは誤りやすいです。
23
+
24
+ - Skill: [`skills/deckuse/SKILL.md`](skills/deckuse/SKILL.md)
25
+ - Cursor(プロジェクト): `.cursor/skills/deckuse/` へコピーまたはシンボリックリンク
26
+ - Cursor(個人): `~/.cursor/skills/deckuse/` へコピーまたはシンボリックリンク
27
+
28
+ **CLI `deckuse >= 1.2.0`** が必要です。クイックリファレンス: [docs/agent-cookbook.md](docs/agent-cookbook.md)。
29
+
30
+ ## Deckuse を使う理由
31
+
32
+ Deckuse は既存のプレゼンテーションを作り直さずに変更できます。ソースファイルがない場合は、`deckuse new` で同梱の空白テンプレートからワークスペースを作成できます。ワークフローは視覚ではなく構造を重視して設計されています。
33
+
34
+ ```text
35
+ existing.pptx → init ─┐
36
+ ├→ list / get → set / add → validate → export
37
+ blank template → new ─┘
38
+ ```
39
+
40
+ Every successful write automatically commits a Git revision, updates `operations.jsonl`, and rebuilds `package.pptx`. Use `undo` to revert writes and `history` to inspect the operation log.
41
+
42
+ 未変更の XML と未知のパッケージ部品を可能な限り保持します。完全な PowerPoint レンダリング/レイアウトエンジンではありません。`monitor` でライブ HTML プレビュー、`render` で 1 枚を PNG 化できます。意味的な `diff` / `branch` は後続です。
43
+
44
+ ## インストール
45
+
46
+ 要件:Node.js 18 以降。
47
+
48
+ ```sh
49
+ npm install -g @deckflow/deckuse
50
+ ```
51
+
52
+ このコマンドは `deckuse` CLI をグローバルにインストールします。
53
+
54
+ ```sh
55
+ # プレゼンテーションから永続ワークスペースを作成します。
56
+ deckuse init input.pptx ./workspace --json
57
+
58
+ # または同梱の空白 16:9 テンプレートから開始(input.pptx 不要)。
59
+ deckuse new ./workspace --json
60
+
61
+ # インデックス済み文書を検査し、対象要素をクエリします。
62
+ deckuse inspect ./workspace --json
63
+ deckuse query ./workspace 'kind=textbox text=Quarter' --json
64
+ deckuse query ./workspace '*' --limit 500 --json
65
+
66
+ # 1 つの JSON コマンド、JSON 配列、または JSONL を適用します。
67
+ deckuse apply ./workspace --input operations.jsonl --json
68
+
69
+ # パッケージを検証してエクスポートします。
70
+ deckuse validate ./workspace --json
71
+ deckuse history ./workspace --json
72
+ deckuse undo ./workspace --steps 1 --json
73
+ ```
74
+
75
+ ## 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
+ コマンド結果は JSON として標準出力に書き込まれます。無効な引数または入力によるエラーは標準エラー出力に書き込まれます。終了コード `0` は成功、`1` はコマンド失敗、`2` は CLI の使用法または解析の失敗です。
80
+
81
+ ### セレクター
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
+ ## 一般的なエージェントのワークフロー
97
+
98
+ これらの例では、現在の PPTX 機能のみを使用します。Deckuse が推論、文案作成、または視覚的レビューを単独で実行すると主張するものではなく、エージェントが Deckuse のプリミティブを組み合わせて構成できるワークフローを説明します。
99
+
100
+ ### 1. プレゼンテーション全体で古い年度を更新する
101
+
102
+ **リクエスト:** 「すべての `FY2025` を `FY2026` に変更し、それ以外は変更しないでください。」
103
+
104
+ まず `query` で影響を受ける要素を確認し、その後リテラルな `replaceText` を実行してから、エクスポート前に検証します。
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
+ After the write completes, `./year-update/package.pptx` is rebuilt automatically as the latest snapshot.
121
+
122
+ レビュー用のクエリにより、変更対象を既知の出現箇所に限定できます。`replaceText` は承認済みの一括変更を実行し、無関係なオブジェクトはそのまま保持します。selector がない場合は、子孫テキストを集約する祖先コンテナではなく、最も具体的なインデックス済みテキストノードを更新します。
123
+
124
+ ### 2. 会社名または製品名を変更する
125
+
126
+ **リクエスト:** 「古い製品名を新しい製品名にすべて置き換えてください。」
127
+
128
+ これは同じく、安全な「レビューしてから置換する」パターンです。まず正確な旧名称を検索し、次にリテラルな値で `replaceText` を使用します。句読点やスペースなどの表記ゆれには、クエリ出力を確認した後にのみ正規表現による置換を使用してください。
129
+
130
+ ```json
131
+ {
132
+ "type": "replaceText",
133
+ "find": "Legacy Platform",
134
+ "replace": "Unified Platform"
135
+ }
136
+ ```
137
+
138
+ より限定的に変更するには、たとえばコマンドに `"selector": "slide=256"` を含め、1 枚のスライドだけを対象にできます。
139
+
140
+ ### 3. エージェント用にプレゼンテーションのアウトラインを抽出する
141
+
142
+ **リクエスト:** 「スライドのタイトルを一覧にして、この資料が扱う内容を要約してください。」
143
+
144
+ `inspect` を実行してインデックス化されたプレゼンテーション構造を取得し、その後テキストを持つオブジェクトをクエリします。呼び出し側のエージェントは、返されたオブジェクトをスライド ID ごとにグループ化し、名前・位置・テキストからタイトルらしいオブジェクトを特定して、抽出したテキストに基づき要約を生成できます。
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 は構造化されたソースデータを提供します。どのテキストがタイトルかを判断し、要約を書く責任を負うのは Deckuse ではなくエージェントです。
153
+
154
+ ### 4. 納品前のコンテンツ QA を実行する
155
+
156
+ **リクエスト:** 「この資料を送付する前に、古い顧客名、日付、製品名、URL、必須の免責事項テキストを見つけてください。」
157
+
158
+ 既知のリスクごとにクエリを実行し、返された参照を確認します。欠落の確認も同じです。必須テキストをクエリし、結果が空であればフラグを立てます。エージェントはプレゼンテーションを変更せずに QA レポートを作成することも、承認済みの修正に向けて対象を限定した `setText` / `replaceText` コマンドを準備することもできます。
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
+ これはコンテンツおよび構造の QA であり、視覚 QA ではありません。`render` / `monitor` はレビュー補助としてのみ使い、Deckuse は重なり検出やレイアウト品質判定は行いません。
167
+
168
+ ### 5. 1 枚のスライド上の 1 項目だけを変更する
169
+
170
+ **リクエスト:** 「スライド 7 のタイトルを `Enterprise Strategy` に変更し、それ以外は変更しないでください。」
171
+
172
+ まずそのスライドとタイトルテキストをクエリし、返された `ref` を取得して `setText` コマンドを送ります。`ref` により、曖昧なグローバル置換を防げます。
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
+ 要素 ID はプレゼンテーション固有の例です。この値をコピーするのではなく、必ず現在のワークスペースから返された ID を使用してください。
186
+
187
+ ### 6. タイトルの書式を標準化する
188
+
189
+ **リクエスト:** 「承認済みのすべてのタイトルを 28 pt にし、承認済みの書体を使用してください。」
190
+
191
+ クエリでタイトルオブジェクトを特定し、エージェントに返された参照をレビューまたはフィルタリングさせ、承認済みの各参照に対して `setProperties` を 1 回ずつ適用します。`setProperties` は一度に 1 つの参照を対象とし、セレクター自体は受け取りません。
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
+ 同じコマンドで `fill`、`stroke`(`border`、`outline`、`line` も可)、`textColor`、`italic`、`underline`、`name`、`hidden` を設定できます。不明なプロパティキーは `INVALID_COMMAND` で失敗します。
209
+
210
+ ### 7. オブジェクトのジオメトリを正確に調整する
211
+
212
+ **リクエスト:** 「承認済みの各タイトルを少し下に移動してください。」
213
+
214
+ 対象のタイトル参照をクエリして選択し、現在のジオメトリを検査してから、明示的な座標を持つ `setTransform` コマンドをオブジェクトごとに 1 件ずつ発行します。これは構造的なジオメトリ操作です。視覚的な検証なしに、自動レイアウト修正として説明しないでください。
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
+ 変換座標は OOXML EMU です。垂直位置だけを変更する場合は、検査済みオブジェクトの `x`、`width`、`height` を保持してください。
233
+
234
+ ### 8. 承認済みの営業資料をパーソナライズする
235
+
236
+ **リクエスト:** 「見込み顧客向けのバージョンを作成してください。顧客名と承認済みのアカウント固有文面を更新しますが、デザインは維持してください。」
237
+
238
+ 承認済みのマスターから、出力ごとに別々のワークスペースを作成します。プレースホルダーまたは既存の顧客テキストをクエリし、レビュー済みの置換だけを適用して検証し、自動更新される `package.pptx` を使用します。
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
+ ワークスペースを分離することで、ある顧客向けの編集が別の出力に混入するのを防ぎます。承認プロセスでエージェントに変更を許可されたオブジェクトだけを置換してください。
249
+
250
+ ### 9. 1 つのマスターから地域別または対象者別のバリアントを作成する
251
+
252
+ **リクエスト:** 「承認済みのプレゼンテーションから、地域別とエンタープライズ向けのバリアントを生成してください。」
253
+
254
+ 各バリアントについて、同じマスターから新しいワークスペースを初期化します。各バリアントには専用のコマンドファイルと出力パスを割り当てます。
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
+ これにより、単一の承認済みソース資料を維持しながら、明示的な変更セットから各バリアントを再現できます。
278
+
279
+ ### 10. コーディングエージェントに既存のプレゼンテーションを操作させる
280
+
281
+ **リクエスト:** 「この資料を検査し、依頼された編集を特定して実行し、修正済みの PPTX をエクスポートしてください。」
282
+
283
+ エージェントには次のループを与えます。ワークスペースを初期化し、対象を限定した変更ごとに事前に検査またはクエリを実行し、明示的な JSON コマンドを生成して適用し、パッケージを検証して再構築された `package.pptx` をエクスポートとして使用します。監査可能性が重要な場合は、コマンドファイルとコマンド結果をタスクと一緒に保存します。
284
+
285
+ Deckuse は、エージェントに安定した参照、セレクター、トランザクション、検証、および決定論的なエクスポート経路を提供します。タスクを解釈し、どの操作が適切かを判断するのはエージェントです。
286
+
287
+ ### `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
+ ## 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
+ ## 制限事項
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
+ ## 開発時のチェック
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).