@mseep/open-computer-use 1.0.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.
Files changed (769) hide show
  1. package/.coderabbit.yaml +25 -0
  2. package/.dockerignore +95 -0
  3. package/.env.example +137 -0
  4. package/.githooks/pre-commit +68 -0
  5. package/.github/CODEOWNERS +125 -0
  6. package/.github/ISSUE_TEMPLATE/adr-proposal.md +41 -0
  7. package/.github/ISSUE_TEMPLATE/bug-report.md +49 -0
  8. package/.github/ISSUE_TEMPLATE/component-proposal.md +38 -0
  9. package/.github/ISSUE_TEMPLATE/config.yml +15 -0
  10. package/.github/ISSUE_TEMPLATE/dependency-proposal.md +59 -0
  11. package/.github/ISSUE_TEMPLATE/feature_request.md +15 -0
  12. package/.github/ISSUE_TEMPLATE/nfr-proposal.md +44 -0
  13. package/.github/PULL_REQUEST_TEMPLATE.md +15 -0
  14. package/.github/codeql/codeql-config.yml +11 -0
  15. package/.github/codeql/extensions/security-models/python-sanitizers.model.yml +17 -0
  16. package/.github/codeql/extensions/security-models/qlpack.yml +7 -0
  17. package/.github/dependabot.yml +23 -0
  18. package/.github/security-exceptions.yml +23 -0
  19. package/.github/workflows/build.yml +420 -0
  20. package/.github/workflows/codeql.yml +33 -0
  21. package/.github/workflows/contracts-lint.yml +90 -0
  22. package/.github/workflows/docs-lint.yml +151 -0
  23. package/.github/workflows/helm.yml +131 -0
  24. package/.github/workflows/identity-lint.yml +30 -0
  25. package/.github/workflows/release-chart.yml +177 -0
  26. package/.github/workflows/release.yml +95 -0
  27. package/.github/workflows/security.yml +332 -0
  28. package/.github/workflows/stale.yml +31 -0
  29. package/.github/workflows/supply-chain.yml +242 -0
  30. package/.gitleaks.toml +53 -0
  31. package/.markdownlint.yaml +51 -0
  32. package/.semgrepignore +85 -0
  33. package/.vale/styles/Architecture/ap13-data-class-substrate.yml +12 -0
  34. package/.vale/styles/Architecture/banned-phrases.yml +23 -0
  35. package/.vale/styles/Architecture/banned-vocab.yml +23 -0
  36. package/.vale/styles/Architecture/marketing-tone.yml +19 -0
  37. package/.vale.ini +18 -0
  38. package/CHANGELOG.md +411 -0
  39. package/CLAUDE.md +218 -0
  40. package/CONTRIBUTING.md +82 -0
  41. package/Dockerfile +676 -0
  42. package/LICENSE +98 -0
  43. package/LICENSE-APACHE +202 -0
  44. package/LICENSE-MIT +21 -0
  45. package/NOTICE +36 -0
  46. package/README.md +516 -0
  47. package/SECURITY.md +45 -0
  48. package/THIRD-PARTY-LICENSES.md +14 -0
  49. package/apt-packages.txt +108 -0
  50. package/computer-use-server/.dockerignore +13 -0
  51. package/computer-use-server/Dockerfile +44 -0
  52. package/computer-use-server/README.md +84 -0
  53. package/computer-use-server/app.py +1544 -0
  54. package/computer-use-server/bin/list-subagent-models +449 -0
  55. package/computer-use-server/cli-defaults/README.md +31 -0
  56. package/computer-use-server/cli-defaults/codex.json +7 -0
  57. package/computer-use-server/cli-defaults/opencode.json +18 -0
  58. package/computer-use-server/cli_adapters/__init__.py +46 -0
  59. package/computer-use-server/cli_adapters/claude.py +163 -0
  60. package/computer-use-server/cli_adapters/codex.py +163 -0
  61. package/computer-use-server/cli_adapters/opencode.py +169 -0
  62. package/computer-use-server/cli_adapters/result.py +34 -0
  63. package/computer-use-server/cli_runtime.py +316 -0
  64. package/computer-use-server/context_vars.py +24 -0
  65. package/computer-use-server/docker_manager.py +1100 -0
  66. package/computer-use-server/docs_html.py +12 -0
  67. package/computer-use-server/mcp_resources.py +170 -0
  68. package/computer-use-server/mcp_tools.py +1430 -0
  69. package/computer-use-server/requirements.txt +17 -0
  70. package/computer-use-server/security.py +50 -0
  71. package/computer-use-server/skill_manager.py +664 -0
  72. package/computer-use-server/static/browser-viewer.js +445 -0
  73. package/computer-use-server/static/chart.umd.js +14 -0
  74. package/computer-use-server/static/docs.html +203 -0
  75. package/computer-use-server/static/github-dark.min.css +10 -0
  76. package/computer-use-server/static/github.min.css +10 -0
  77. package/computer-use-server/static/highlight.min.js +1213 -0
  78. package/computer-use-server/static/highlightjs-line-numbers.min.js +1 -0
  79. package/computer-use-server/static/icons.js +74 -0
  80. package/computer-use-server/static/jszip.min.js +13 -0
  81. package/computer-use-server/static/katex/auto-render.min.js +1 -0
  82. package/computer-use-server/static/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  83. package/computer-use-server/static/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  84. package/computer-use-server/static/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  85. package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  86. package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  87. package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  88. package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  89. package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  90. package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  91. package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  92. package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  93. package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  94. package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  95. package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  96. package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  97. package/computer-use-server/static/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  98. package/computer-use-server/static/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  99. package/computer-use-server/static/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  100. package/computer-use-server/static/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  101. package/computer-use-server/static/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  102. package/computer-use-server/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  103. package/computer-use-server/static/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  104. package/computer-use-server/static/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  105. package/computer-use-server/static/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  106. package/computer-use-server/static/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  107. package/computer-use-server/static/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  108. package/computer-use-server/static/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  109. package/computer-use-server/static/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  110. package/computer-use-server/static/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  111. package/computer-use-server/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  112. package/computer-use-server/static/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  113. package/computer-use-server/static/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  114. package/computer-use-server/static/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  115. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  116. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  117. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  118. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  119. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  120. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  121. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  122. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  123. package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  124. package/computer-use-server/static/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  125. package/computer-use-server/static/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  126. package/computer-use-server/static/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  127. package/computer-use-server/static/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  128. package/computer-use-server/static/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  129. package/computer-use-server/static/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  130. package/computer-use-server/static/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  131. package/computer-use-server/static/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  132. package/computer-use-server/static/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  133. package/computer-use-server/static/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  134. package/computer-use-server/static/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  135. package/computer-use-server/static/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  136. package/computer-use-server/static/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  137. package/computer-use-server/static/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  138. package/computer-use-server/static/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  139. package/computer-use-server/static/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  140. package/computer-use-server/static/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  141. package/computer-use-server/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  142. package/computer-use-server/static/katex/katex.min.css +1 -0
  143. package/computer-use-server/static/katex/katex.min.js +1 -0
  144. package/computer-use-server/static/locale.js +242 -0
  145. package/computer-use-server/static/mammoth.browser.min.js +21 -0
  146. package/computer-use-server/static/marked.min.js +6 -0
  147. package/computer-use-server/static/mermaid.min.js +2811 -0
  148. package/computer-use-server/static/pdf.min.js +22 -0
  149. package/computer-use-server/static/pdf.worker.min.js +22 -0
  150. package/computer-use-server/static/pptxviewjs.min.js +1 -0
  151. package/computer-use-server/static/preact-htm.min.js +1 -0
  152. package/computer-use-server/static/preview.css +1030 -0
  153. package/computer-use-server/static/preview.js +1522 -0
  154. package/computer-use-server/static/xlsx.full.min.js +22 -0
  155. package/computer-use-server/static/xterm-addon-fit.min.js +2 -0
  156. package/computer-use-server/static/xterm-addon-web-links.min.js +2 -0
  157. package/computer-use-server/static/xterm.css +218 -0
  158. package/computer-use-server/static/xterm.min.js +2 -0
  159. package/computer-use-server/system_prompt.py +761 -0
  160. package/computer-use-server/uploads.py +82 -0
  161. package/contracts/README.md +53 -0
  162. package/contracts/audit/audit-fanin.asyncapi.yaml +407 -0
  163. package/contracts/exec/exec-channel.schema.json +240 -0
  164. package/contracts/mcp/2025-06-18/ocu-constraints.schema.json +178 -0
  165. package/contracts/storage/file-artifact-api.schema.json +390 -0
  166. package/contracts/storage/file-ops.schema.json +217 -0
  167. package/contracts/storage/mount-config.schema.json +197 -0
  168. package/cron/Dockerfile +15 -0
  169. package/cron/cleanup-quick.sh +21 -0
  170. package/cron/cleanup.sh +127 -0
  171. package/data/outputs/.gitkeep +0 -0
  172. package/data/uploads/.gitkeep +0 -0
  173. package/docker-compose.test.yml +54 -0
  174. package/docker-compose.webui.yml +77 -0
  175. package/docker-compose.yml +96 -0
  176. package/docs/CLOUD.md +29 -0
  177. package/docs/COMPARISON.md +128 -0
  178. package/docs/DOCKER.md +469 -0
  179. package/docs/DYNAMIC-SKILLS.md +77 -0
  180. package/docs/FEATURES.md +100 -0
  181. package/docs/INSTALL.md +111 -0
  182. package/docs/KNOWN-BUGS.md +86 -0
  183. package/docs/MCP.md +320 -0
  184. package/docs/SCREENSHOTS.md +39 -0
  185. package/docs/SKILLS-USER-GUIDE.md +86 -0
  186. package/docs/SKILLS.md +483 -0
  187. package/docs/TERMINAL-TAB.md +56 -0
  188. package/docs/architecture/02-trust-boundaries.md +224 -0
  189. package/docs/architecture/03-c4-context.md +61 -0
  190. package/docs/architecture/04-bounded-contexts.md +119 -0
  191. package/docs/architecture/05-c4-container.md +88 -0
  192. package/docs/architecture/06-threat-model.md +172 -0
  193. package/docs/architecture/08-contracts.md +105 -0
  194. package/docs/architecture/MANIFESTO.md +38 -0
  195. package/docs/architecture/PROCESS.md +64 -0
  196. package/docs/architecture/README.md +37 -0
  197. package/docs/architecture/adr/0000-template.md +65 -0
  198. package/docs/architecture/adr/0001-layer-0-gate-legacy-exclusion.md +75 -0
  199. package/docs/architecture/adr/0002-session-view-descriptor.md +57 -0
  200. package/docs/architecture/adr/0003-sandbox-runtime-tier-ladder.md +63 -0
  201. package/docs/architecture/adr/0004-operator-authentication-substrate.md +63 -0
  202. package/docs/architecture/adr/0005-egress-credential-delivery-envoy-sds.md +62 -0
  203. package/docs/architecture/adr/0006-egress-forward-proxy-substrate.md +65 -0
  204. package/docs/architecture/adr/0007-egress-auth-mechanism.md +72 -0
  205. package/docs/architecture/adr/0008-session-egress-attribution.md +59 -0
  206. package/docs/architecture/adr/0009-audit-pipeline-pluggable-by-contract.md +76 -0
  207. package/docs/architecture/adr/0010-storage-backend-pluggable-adapter.md +60 -0
  208. package/docs/architecture/adr/0011-storage-egress-lane.md +67 -0
  209. package/docs/architecture/adr/0012-implementation-language.md +67 -0
  210. package/docs/architecture/adr/0020-sandbox-image-provisioning.md +82 -0
  211. package/docs/architecture/adr/README.md +53 -0
  212. package/docs/architecture/compliance/.gitkeep +0 -0
  213. package/docs/architecture/components/00-overview.md +42 -0
  214. package/docs/architecture/components/0000-template.md +50 -0
  215. package/docs/architecture/components/01-mcp-gateway.md +80 -0
  216. package/docs/architecture/components/02-control-operator-api.md +80 -0
  217. package/docs/architecture/components/04-storage-broker.md +104 -0
  218. package/docs/architecture/components/05-session-sandbox.md +93 -0
  219. package/docs/architecture/components/06-egress-trust-edge.md +95 -0
  220. package/docs/architecture/components/07-audit-pipeline.md +110 -0
  221. package/docs/architecture/diagrams/.gitkeep +0 -0
  222. package/docs/architecture/diagrams/02-trust-boundaries.mmd +111 -0
  223. package/docs/architecture/diagrams/06-threat-model.mmd +41 -0
  224. package/docs/architecture/diagrams/08-contracts.mmd +47 -0
  225. package/docs/architecture/diagrams/c4-container.mmd +59 -0
  226. package/docs/architecture/diagrams/c4-context.mmd +46 -0
  227. package/docs/architecture/glossary.md +172 -0
  228. package/docs/architecture/manifesto/.gitkeep +0 -0
  229. package/docs/architecture/manifesto/01-audience-and-buyer.md +57 -0
  230. package/docs/architecture/manifesto/02-nfrs.md +325 -0
  231. package/docs/architecture/manifesto/03-non-negotiables.md +35 -0
  232. package/docs/architecture/manifesto/04-non-goals.md +23 -0
  233. package/docs/architecture/manifesto/05-licensing-posture.md +61 -0
  234. package/docs/architecture/manifesto/06-starter-mode-policy.md +49 -0
  235. package/docs/architecture/manifesto/07-governance.md +60 -0
  236. package/docs/architecture/primitives-backlog.md +51 -0
  237. package/docs/architecture.svg +117 -0
  238. package/docs/claude-code-gateway.md +173 -0
  239. package/docs/cli-config-templates.md +240 -0
  240. package/docs/data-flow.svg +72 -0
  241. package/docs/demo-landing-page.gif +0 -0
  242. package/docs/demo-qwen-trending.gif +0 -0
  243. package/docs/dynamic-skills.svg +77 -0
  244. package/docs/file-flow.svg +126 -0
  245. package/docs/future-architecture/README.md +152 -0
  246. package/docs/future-architecture/adr/0001-control-plane-language-go.md +80 -0
  247. package/docs/future-architecture/adr/0002-guest-agent-language-go.md +84 -0
  248. package/docs/future-architecture/adr/0003-docker-poc-first-then-k8s.md +37 -0
  249. package/docs/future-architecture/adr/0004-pluggable-runtime-via-runtimeclass.md +34 -0
  250. package/docs/future-architecture/adr/0005-mcp-as-control-plane-gateway.md +34 -0
  251. package/docs/future-architecture/adr/0006-no-agpl-no-bsl-dependencies.md +41 -0
  252. package/docs/future-architecture/adr/0007-superseded-by-future-architecture.md +37 -0
  253. package/docs/future-architecture/adr/0008-internal-grpc-external-rest-mcp.md +106 -0
  254. package/docs/future-architecture/adr/0009-external-protocol-dialects.md +94 -0
  255. package/docs/future-architecture/adr/0010-lambda-as-inspiration-not-runtime.md +86 -0
  256. package/docs/future-architecture/adr/0011-kata-as-first-class-dind-runtime.md +84 -0
  257. package/docs/future-architecture/antipatterns.md +552 -0
  258. package/docs/future-architecture/architecture/01-layers.md +109 -0
  259. package/docs/future-architecture/architecture/02-layer4-control-plane.md +122 -0
  260. package/docs/future-architecture/architecture/03-layer3-providers.md +174 -0
  261. package/docs/future-architecture/architecture/04-layer2-runtimes.md +114 -0
  262. package/docs/future-architecture/architecture/04b-credential-broker.md +153 -0
  263. package/docs/future-architecture/architecture/05-layer1-guest-agent.md +138 -0
  264. package/docs/future-architecture/architecture/06-storage.md +134 -0
  265. package/docs/future-architecture/architecture/07-security.md +194 -0
  266. package/docs/future-architecture/architecture/08-networking.md +149 -0
  267. package/docs/future-architecture/architecture/09-templates.md +122 -0
  268. package/docs/future-architecture/architecture/10-observability.md +121 -0
  269. package/docs/future-architecture/design-notes.md +72 -0
  270. package/docs/future-architecture/gaps.md +281 -0
  271. package/docs/future-architecture/phase-template.md +123 -0
  272. package/docs/future-architecture/references.md +225 -0
  273. package/docs/future-architecture/research/01-kata-containers.md +100 -0
  274. package/docs/future-architecture/research/02-e2b-infra.md +133 -0
  275. package/docs/future-architecture/research/03-coder.md +115 -0
  276. package/docs/future-architecture/research/04-cloud-hypervisor.md +99 -0
  277. package/docs/future-architecture/research/05-firecracker.md +114 -0
  278. package/docs/future-architecture/research/06-agent-sandbox.md +142 -0
  279. package/docs/future-architecture/research/07-chromedp.md +78 -0
  280. package/docs/future-architecture/research/08-microsandbox.md +78 -0
  281. package/docs/future-architecture/research/09-agentbox.md +135 -0
  282. package/docs/future-architecture/research/10-sysbox.md +100 -0
  283. package/docs/future-architecture/research/11-firecracker-containerd.md +93 -0
  284. package/docs/future-architecture/research/12-docker-socket-proxy.md +59 -0
  285. package/docs/future-architecture/research/14-e2b-desktop-and-surf.md +107 -0
  286. package/docs/future-architecture/research/18-open-webui-terminals-observed.md +135 -0
  287. package/docs/future-architecture/research/bank-buyer.md +96 -0
  288. package/docs/future-architecture/research/enthusiast-audience.md +106 -0
  289. package/docs/future-architecture/research/proof-uipath-anthropic-2026-05.md +76 -0
  290. package/docs/future-architecture/research/widemoat-thesis-advisor.md +124 -0
  291. package/docs/future-architecture/roadmap.md +438 -0
  292. package/docs/kata-runtime.md +267 -0
  293. package/docs/kubernetes.md +86 -0
  294. package/docs/logo.png +0 -0
  295. package/docs/multi-cli.md +161 -0
  296. package/docs/openwebui-filter.md +134 -0
  297. package/docs/roadmap/implementation-roadmap.md +104 -0
  298. package/docs/sandbox-contents.svg +229 -0
  299. package/docs/screenshots/01-create-document.png +0 -0
  300. package/docs/screenshots/02-file-preview.png +0 -0
  301. package/docs/screenshots/03-browser-viewer.png +0 -0
  302. package/docs/screenshots/04-sub-agent-terminal.png +0 -0
  303. package/docs/screenshots/05-chat-overview.png +0 -0
  304. package/docs/screenshots/06-sub-agent-dashboard.png +0 -0
  305. package/docs/screenshots/07-frontend-design-skill.png +0 -0
  306. package/docs/screenshots/08-pptx-skill.png +0 -0
  307. package/docs/screenshots/09-skill-creator.png +0 -0
  308. package/docs/screenshots/10-data-chart.png +0 -0
  309. package/docs/shared-browser.svg +102 -0
  310. package/docs/system-prompt.md +113 -0
  311. package/docs/terminal-flow.svg +69 -0
  312. package/examples/helm/README.md +20 -0
  313. package/examples/helm/standalone/values.yaml +49 -0
  314. package/examples/helm/with-open-webui/README.md +99 -0
  315. package/examples/helm/with-open-webui/values-computer-use.yaml +32 -0
  316. package/examples/helm/with-open-webui/values-open-webui.yaml +67 -0
  317. package/fonts/NotoEmoji-Regular.ttf +0 -0
  318. package/helm/computer-use-server/.helmignore +17 -0
  319. package/helm/computer-use-server/Chart.yaml +32 -0
  320. package/helm/computer-use-server/README.md +211 -0
  321. package/helm/computer-use-server/templates/NOTES.txt +66 -0
  322. package/helm/computer-use-server/templates/_helpers.tpl +115 -0
  323. package/helm/computer-use-server/templates/configmap-dind-init.yaml +82 -0
  324. package/helm/computer-use-server/templates/configmap.yaml +18 -0
  325. package/helm/computer-use-server/templates/deployment.yaml +248 -0
  326. package/helm/computer-use-server/templates/ingress.yaml +38 -0
  327. package/helm/computer-use-server/templates/networkpolicy.yaml +50 -0
  328. package/helm/computer-use-server/templates/pdb.yaml +16 -0
  329. package/helm/computer-use-server/templates/pvc-data.yaml +20 -0
  330. package/helm/computer-use-server/templates/pvc-skills-cache.yaml +20 -0
  331. package/helm/computer-use-server/templates/pvc-user-data.yaml +20 -0
  332. package/helm/computer-use-server/templates/pvc-var-lib-docker.yaml +27 -0
  333. package/helm/computer-use-server/templates/secret.yaml +23 -0
  334. package/helm/computer-use-server/templates/service.yaml +22 -0
  335. package/helm/computer-use-server/templates/serviceaccount.yaml +15 -0
  336. package/helm/computer-use-server/templates/tests/test-health.yaml +23 -0
  337. package/helm/computer-use-server/values.schema.json +183 -0
  338. package/helm/computer-use-server/values.yaml +297 -0
  339. package/lychee.toml +36 -0
  340. package/openwebui/Dockerfile +52 -0
  341. package/openwebui/README.md +38 -0
  342. package/openwebui/functions/README.md +48 -0
  343. package/openwebui/functions/computer_link_filter.py +487 -0
  344. package/openwebui/init.sh +305 -0
  345. package/openwebui/patches/README.md +44 -0
  346. package/openwebui/patches/fix_artifacts_auto_show.py +441 -0
  347. package/openwebui/patches/fix_attached_files_position.py +87 -0
  348. package/openwebui/patches/fix_large_tool_args.py +156 -0
  349. package/openwebui/patches/fix_large_tool_results.py +289 -0
  350. package/openwebui/patches/fix_preview_url_detection.py +230 -0
  351. package/openwebui/patches/fix_skip_embedding_chat_files.py +229 -0
  352. package/openwebui/patches/fix_skip_rag_files_native_fc.py +100 -0
  353. package/openwebui/patches/fix_tool_loop_errors.py +510 -0
  354. package/package.json +39 -0
  355. package/requirements.txt +112 -0
  356. package/scripts/check-config.sh +141 -0
  357. package/scripts/docs-lint/ai-slop-detector.sh +202 -0
  358. package/scripts/docs-lint/architecture-tree-whitelist.sh +131 -0
  359. package/scripts/docs-lint/ascii-diagram-detector.sh +58 -0
  360. package/scripts/docs-lint/front-matter-validator.sh +97 -0
  361. package/scripts/docs-lint/gitignored-ref-detector.sh +122 -0
  362. package/scripts/docs-lint/identity-email-detector.sh +48 -0
  363. package/scripts/docs-lint/test-linters.sh +354 -0
  364. package/scripts/docs-lint/wc-budget.sh +61 -0
  365. package/scripts/githooks/pre-push +75 -0
  366. package/server.json +13 -0
  367. package/settings-wrapper/Dockerfile +9 -0
  368. package/settings-wrapper/README.md +119 -0
  369. package/settings-wrapper/app.py +113 -0
  370. package/settings-wrapper/requirements.txt +2 -0
  371. package/settings-wrapper/skills.json +25 -0
  372. package/skills/README.md +46 -0
  373. package/skills/examples/algorithmic-art/SKILL.md +405 -0
  374. package/skills/examples/algorithmic-art/templates/generator_template.js +223 -0
  375. package/skills/examples/algorithmic-art/templates/viewer.html +601 -0
  376. package/skills/examples/artifacts-builder/SKILL.md +74 -0
  377. package/skills/examples/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  378. package/skills/examples/artifacts-builder/scripts/init-artifact.sh +322 -0
  379. package/skills/examples/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  380. package/skills/examples/canvas-design/LICENSE.txt +202 -0
  381. package/skills/examples/canvas-design/SKILL.md +130 -0
  382. package/skills/examples/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  383. package/skills/examples/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  384. package/skills/examples/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  385. package/skills/examples/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  386. package/skills/examples/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  387. package/skills/examples/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  388. package/skills/examples/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  389. package/skills/examples/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  390. package/skills/examples/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  391. package/skills/examples/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  392. package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  393. package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  394. package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  395. package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  396. package/skills/examples/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  397. package/skills/examples/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  398. package/skills/examples/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  399. package/skills/examples/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  400. package/skills/examples/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  401. package/skills/examples/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  402. package/skills/examples/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  403. package/skills/examples/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  404. package/skills/examples/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  405. package/skills/examples/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  406. package/skills/examples/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  407. package/skills/examples/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  408. package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  409. package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  410. package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  411. package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  412. package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  413. package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  414. package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  415. package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  416. package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  417. package/skills/examples/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  418. package/skills/examples/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  419. package/skills/examples/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  420. package/skills/examples/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  421. package/skills/examples/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  422. package/skills/examples/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  423. package/skills/examples/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  424. package/skills/examples/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  425. package/skills/examples/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  426. package/skills/examples/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  427. package/skills/examples/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  428. package/skills/examples/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  429. package/skills/examples/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  430. package/skills/examples/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  431. package/skills/examples/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  432. package/skills/examples/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  433. package/skills/examples/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  434. package/skills/examples/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  435. package/skills/examples/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  436. package/skills/examples/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  437. package/skills/examples/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  438. package/skills/examples/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  439. package/skills/examples/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  440. package/skills/examples/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  441. package/skills/examples/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  442. package/skills/examples/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  443. package/skills/examples/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  444. package/skills/examples/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  445. package/skills/examples/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  446. package/skills/examples/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  447. package/skills/examples/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  448. package/skills/examples/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  449. package/skills/examples/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  450. package/skills/examples/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  451. package/skills/examples/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  452. package/skills/examples/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  453. package/skills/examples/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  454. package/skills/examples/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  455. package/skills/examples/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  456. package/skills/examples/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  457. package/skills/examples/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  458. package/skills/examples/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  459. package/skills/examples/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  460. package/skills/examples/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  461. package/skills/examples/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  462. package/skills/examples/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  463. package/skills/examples/copy-editing/SKILL.md +447 -0
  464. package/skills/examples/copy-editing/evals/evals.json +89 -0
  465. package/skills/examples/copy-editing/references/plain-english-alternatives.md +394 -0
  466. package/skills/examples/internal-comms/LICENSE.txt +202 -0
  467. package/skills/examples/internal-comms/SKILL.md +32 -0
  468. package/skills/examples/internal-comms/examples/3p-updates.md +47 -0
  469. package/skills/examples/internal-comms/examples/company-newsletter.md +65 -0
  470. package/skills/examples/internal-comms/examples/faq-answers.md +30 -0
  471. package/skills/examples/internal-comms/examples/general-comms.md +16 -0
  472. package/skills/examples/mcp-builder/SKILL.md +328 -0
  473. package/skills/examples/mcp-builder/reference/evaluation.md +602 -0
  474. package/skills/examples/mcp-builder/reference/mcp_best_practices.md +915 -0
  475. package/skills/examples/mcp-builder/reference/node_mcp_server.md +916 -0
  476. package/skills/examples/mcp-builder/reference/python_mcp_server.md +752 -0
  477. package/skills/examples/mcp-builder/scripts/connections.py +151 -0
  478. package/skills/examples/mcp-builder/scripts/evaluation.py +373 -0
  479. package/skills/examples/mcp-builder/scripts/example_evaluation.xml +22 -0
  480. package/skills/examples/mcp-builder/scripts/requirements.txt +2 -0
  481. package/skills/examples/product-marketing-context/SKILL.md +241 -0
  482. package/skills/examples/product-marketing-context/evals/evals.json +85 -0
  483. package/skills/examples/single-cell-rna-qc/SKILL.md +175 -0
  484. package/skills/examples/single-cell-rna-qc/references/scverse_qc_guidelines.md +186 -0
  485. package/skills/examples/single-cell-rna-qc/scripts/qc_analysis.py +232 -0
  486. package/skills/examples/single-cell-rna-qc/scripts/qc_core.py +233 -0
  487. package/skills/examples/single-cell-rna-qc/scripts/qc_plotting.py +235 -0
  488. package/skills/examples/skill-creator/SKILL.md +355 -0
  489. package/skills/examples/skill-creator/references/output-patterns.md +82 -0
  490. package/skills/examples/skill-creator/references/workflows.md +28 -0
  491. package/skills/examples/skill-creator/scripts/init_skill.py +303 -0
  492. package/skills/examples/skill-creator/scripts/package_skill.py +110 -0
  493. package/skills/examples/skill-creator/scripts/quick_validate.py +95 -0
  494. package/skills/examples/slack-gif-creator/SKILL.md +254 -0
  495. package/skills/examples/slack-gif-creator/core/easing.py +234 -0
  496. package/skills/examples/slack-gif-creator/core/frame_composer.py +176 -0
  497. package/skills/examples/slack-gif-creator/core/gif_builder.py +269 -0
  498. package/skills/examples/slack-gif-creator/core/validators.py +136 -0
  499. package/skills/examples/slack-gif-creator/requirements.txt +4 -0
  500. package/skills/examples/social-content/SKILL.md +278 -0
  501. package/skills/examples/social-content/evals/evals.json +92 -0
  502. package/skills/examples/social-content/references/platforms.md +170 -0
  503. package/skills/examples/social-content/references/post-templates.md +177 -0
  504. package/skills/examples/social-content/references/reverse-engineering.md +195 -0
  505. package/skills/examples/theme-factory/SKILL.md +59 -0
  506. package/skills/examples/theme-factory/theme-showcase.pdf +0 -0
  507. package/skills/examples/theme-factory/themes/arctic-frost.md +19 -0
  508. package/skills/examples/theme-factory/themes/botanical-garden.md +19 -0
  509. package/skills/examples/theme-factory/themes/desert-rose.md +19 -0
  510. package/skills/examples/theme-factory/themes/forest-canopy.md +19 -0
  511. package/skills/examples/theme-factory/themes/golden-hour.md +19 -0
  512. package/skills/examples/theme-factory/themes/midnight-galaxy.md +19 -0
  513. package/skills/examples/theme-factory/themes/modern-minimalist.md +19 -0
  514. package/skills/examples/theme-factory/themes/ocean-depths.md +19 -0
  515. package/skills/examples/theme-factory/themes/sunset-boulevard.md +19 -0
  516. package/skills/examples/theme-factory/themes/tech-innovation.md +19 -0
  517. package/skills/examples/web-artifacts-builder/LICENSE.txt +202 -0
  518. package/skills/examples/web-artifacts-builder/SKILL.md +74 -0
  519. package/skills/examples/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  520. package/skills/examples/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  521. package/skills/examples/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  522. package/skills/examples/writing-skills/SKILL.md +655 -0
  523. package/skills/examples/writing-skills/anthropic-best-practices.md +1150 -0
  524. package/skills/examples/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  525. package/skills/examples/writing-skills/graphviz-conventions.dot +172 -0
  526. package/skills/examples/writing-skills/persuasion-principles.md +187 -0
  527. package/skills/examples/writing-skills/render-graphs.js +168 -0
  528. package/skills/examples/writing-skills/testing-skills-with-subagents.md +384 -0
  529. package/skills/public/describe-image/SKILL.md +105 -0
  530. package/skills/public/describe-image/scripts/describe.py +389 -0
  531. package/skills/public/doc-coauthoring/SKILL.md +375 -0
  532. package/skills/public/docx/LICENSE.txt +30 -0
  533. package/skills/public/docx/SKILL.md +199 -0
  534. package/skills/public/docx/docx-js.md +350 -0
  535. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  536. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  537. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  538. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  539. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  540. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  541. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  542. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  543. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  544. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  545. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  546. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  547. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  548. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  549. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  550. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  551. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  552. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  553. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  554. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  555. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  556. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  557. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  558. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  559. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  560. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  561. package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  562. package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  563. package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  564. package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  565. package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  566. package/skills/public/docx/ooxml/schemas/mce/mc.xsd +75 -0
  567. package/skills/public/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  568. package/skills/public/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  569. package/skills/public/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  570. package/skills/public/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  571. package/skills/public/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  572. package/skills/public/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  573. package/skills/public/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  574. package/skills/public/docx/ooxml/scripts/pack.py +159 -0
  575. package/skills/public/docx/ooxml/scripts/unpack.py +29 -0
  576. package/skills/public/docx/ooxml/scripts/validate.py +69 -0
  577. package/skills/public/docx/ooxml/scripts/validation/__init__.py +15 -0
  578. package/skills/public/docx/ooxml/scripts/validation/base.py +951 -0
  579. package/skills/public/docx/ooxml/scripts/validation/docx.py +274 -0
  580. package/skills/public/docx/ooxml/scripts/validation/pptx.py +315 -0
  581. package/skills/public/docx/ooxml/scripts/validation/redlining.py +279 -0
  582. package/skills/public/docx/ooxml.md +632 -0
  583. package/skills/public/docx/scripts/__init__.py +1 -0
  584. package/skills/public/docx/scripts/document.py +1292 -0
  585. package/skills/public/docx/scripts/templates/comments.xml +3 -0
  586. package/skills/public/docx/scripts/templates/commentsExtended.xml +3 -0
  587. package/skills/public/docx/scripts/templates/commentsExtensible.xml +3 -0
  588. package/skills/public/docx/scripts/templates/commentsIds.xml +3 -0
  589. package/skills/public/docx/scripts/templates/people.xml +3 -0
  590. package/skills/public/docx/scripts/utilities.py +374 -0
  591. package/skills/public/file-reading/LICENSE.txt +30 -0
  592. package/skills/public/file-reading/SKILL.md +350 -0
  593. package/skills/public/frontend-design/LICENSE.txt +177 -0
  594. package/skills/public/frontend-design/SKILL.md +42 -0
  595. package/skills/public/gitlab-explorer/SKILL.md +174 -0
  596. package/skills/public/gitlab-explorer/references/git-commands.md +323 -0
  597. package/skills/public/gitlab-explorer/references/glab-commands.md +282 -0
  598. package/skills/public/gitlab-explorer/scripts/check_gitlab_auth.sh +109 -0
  599. package/skills/public/pdf/FORMS.md +205 -0
  600. package/skills/public/pdf/REFERENCE.md +612 -0
  601. package/skills/public/pdf/SKILL.md +364 -0
  602. package/skills/public/pdf/scripts/check_bounding_boxes.py +70 -0
  603. package/skills/public/pdf/scripts/check_bounding_boxes_test.py +226 -0
  604. package/skills/public/pdf/scripts/check_fillable_fields.py +12 -0
  605. package/skills/public/pdf/scripts/convert_pdf_to_images.py +35 -0
  606. package/skills/public/pdf/scripts/create_validation_image.py +41 -0
  607. package/skills/public/pdf/scripts/extract_form_field_info.py +152 -0
  608. package/skills/public/pdf/scripts/fill_fillable_fields.py +114 -0
  609. package/skills/public/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  610. package/skills/public/pdf-reading/LICENSE.txt +30 -0
  611. package/skills/public/pdf-reading/REFERENCE.md +196 -0
  612. package/skills/public/pdf-reading/SKILL.md +305 -0
  613. package/skills/public/playwright-cli/SKILL.md +278 -0
  614. package/skills/public/playwright-cli/references/request-mocking.md +87 -0
  615. package/skills/public/playwright-cli/references/running-code.md +232 -0
  616. package/skills/public/playwright-cli/references/session-management.md +169 -0
  617. package/skills/public/playwright-cli/references/storage-state.md +275 -0
  618. package/skills/public/playwright-cli/references/test-generation.md +88 -0
  619. package/skills/public/playwright-cli/references/tracing.md +139 -0
  620. package/skills/public/playwright-cli/references/video-recording.md +43 -0
  621. package/skills/public/pptx/LICENSE.txt +30 -0
  622. package/skills/public/pptx/SKILL.md +484 -0
  623. package/skills/public/pptx/css.md +335 -0
  624. package/skills/public/pptx/html2pptx.md +893 -0
  625. package/skills/public/pptx/html2pptx.tgz +0 -0
  626. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  627. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  628. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  629. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  630. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  631. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  632. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  633. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  634. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  635. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  636. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  637. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  638. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  639. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  640. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  641. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  642. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  643. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  644. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  645. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  646. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  647. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  648. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  649. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  650. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  651. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  652. package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  653. package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  654. package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  655. package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  656. package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  657. package/skills/public/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  658. package/skills/public/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  659. package/skills/public/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  660. package/skills/public/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  661. package/skills/public/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  662. package/skills/public/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  663. package/skills/public/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  664. package/skills/public/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  665. package/skills/public/pptx/ooxml/scripts/pack.py +159 -0
  666. package/skills/public/pptx/ooxml/scripts/unpack.py +29 -0
  667. package/skills/public/pptx/ooxml/scripts/validate.py +69 -0
  668. package/skills/public/pptx/ooxml/scripts/validation/__init__.py +15 -0
  669. package/skills/public/pptx/ooxml/scripts/validation/base.py +951 -0
  670. package/skills/public/pptx/ooxml/scripts/validation/docx.py +274 -0
  671. package/skills/public/pptx/ooxml/scripts/validation/pptx.py +315 -0
  672. package/skills/public/pptx/ooxml/scripts/validation/redlining.py +279 -0
  673. package/skills/public/pptx/ooxml.md +427 -0
  674. package/skills/public/pptx/scripts/inventory.py +1020 -0
  675. package/skills/public/pptx/scripts/rearrange.py +231 -0
  676. package/skills/public/pptx/scripts/replace.py +385 -0
  677. package/skills/public/pptx/scripts/thumbnail.py +450 -0
  678. package/skills/public/skill-creator/SKILL.md +356 -0
  679. package/skills/public/skill-creator/references/output-patterns.md +82 -0
  680. package/skills/public/skill-creator/references/workflows.md +28 -0
  681. package/skills/public/skill-creator/scripts/init_skill.py +303 -0
  682. package/skills/public/skill-creator/scripts/package_skill.py +110 -0
  683. package/skills/public/skill-creator/scripts/quick_validate.py +95 -0
  684. package/skills/public/sub-agent/SKILL.md +186 -0
  685. package/skills/public/sub-agent/references/security-review.md +153 -0
  686. package/skills/public/sub-agent/references/usage.md +207 -0
  687. package/skills/public/sub-agent/scripts/list_subagent_models.sh +22 -0
  688. package/skills/public/test-driven-development/SKILL.md +371 -0
  689. package/skills/public/test-driven-development/testing-anti-patterns.md +299 -0
  690. package/skills/public/webapp-testing/LICENSE.txt +202 -0
  691. package/skills/public/webapp-testing/SKILL.md +96 -0
  692. package/skills/public/webapp-testing/examples/console_logging.py +35 -0
  693. package/skills/public/webapp-testing/examples/element_discovery.py +40 -0
  694. package/skills/public/webapp-testing/examples/static_html_automation.py +33 -0
  695. package/skills/public/webapp-testing/scripts/with_server.py +106 -0
  696. package/skills/public/xlsx/LICENSE.txt +30 -0
  697. package/skills/public/xlsx/SKILL.md +316 -0
  698. package/skills/public/xlsx/preview_data.py +93 -0
  699. package/skills/public/xlsx/recalc.py +178 -0
  700. package/tests/README.md +42 -0
  701. package/tests/fixtures/cli/claude_v0.9.2.0_argv.json +46 -0
  702. package/tests/fixtures/cli/claude_v0.9.2.0_stdout.json +32 -0
  703. package/tests/fixtures/cli/codex_run.jsonl +4 -0
  704. package/tests/fixtures/cli/opencode_run.jsonl +6 -0
  705. package/tests/integration/README.md +56 -0
  706. package/tests/integration/conftest.py +280 -0
  707. package/tests/integration/pytest.ini +13 -0
  708. package/tests/integration/test_mcp_auth.py +85 -0
  709. package/tests/integration/test_mcp_tools.py +101 -0
  710. package/tests/integration/test_workspace_lifecycle.py +125 -0
  711. package/tests/orchestrator/mock_llm_server.py +343 -0
  712. package/tests/orchestrator/test_cli_adapters.py +566 -0
  713. package/tests/orchestrator/test_cli_adapters_live.py +527 -0
  714. package/tests/orchestrator/test_cli_runtime.py +451 -0
  715. package/tests/orchestrator/test_docker_manager.py +302 -0
  716. package/tests/orchestrator/test_dynamic_instructions.py +69 -0
  717. package/tests/orchestrator/test_mcp_resources.py +140 -0
  718. package/tests/orchestrator/test_mcp_tools.py +224 -0
  719. package/tests/orchestrator/test_passthrough_isolation.py +201 -0
  720. package/tests/orchestrator/test_readme_in_container.py +76 -0
  721. package/tests/orchestrator/test_render_cache.py +84 -0
  722. package/tests/orchestrator/test_runtime_cli_endpoint.py +108 -0
  723. package/tests/orchestrator/test_single_user_mode.py +212 -0
  724. package/tests/orchestrator/test_startup_warnings.py +123 -0
  725. package/tests/orchestrator/test_sub_agent_dispatch.py +327 -0
  726. package/tests/orchestrator/test_subagent_claude_compat.py +367 -0
  727. package/tests/orchestrator/test_system_prompt_endpoint.py +191 -0
  728. package/tests/orchestrator/test_tool_descriptions.py +52 -0
  729. package/tests/orchestrator/test_view_image.py +201 -0
  730. package/tests/patches/conftest.py +30 -0
  731. package/tests/patches/fixtures/__init__.py +10 -0
  732. package/tests/patches/fixtures/middleware_v0.9.1.py +5057 -0
  733. package/tests/patches/fixtures/middleware_v0.9.2.py +5120 -0
  734. package/tests/patches/fixtures/retrieval_v0.9.1.py +2684 -0
  735. package/tests/patches/fixtures/retrieval_v0.9.2.py +2700 -0
  736. package/tests/patches/test_fix_attached_files_position.py +118 -0
  737. package/tests/patches/test_fix_large_tool_args.py +130 -0
  738. package/tests/patches/test_fix_large_tool_results.py +531 -0
  739. package/tests/patches/test_fix_skip_embedding_chat_files.py +160 -0
  740. package/tests/patches/test_fix_skip_rag_files_native_fc.py +120 -0
  741. package/tests/patches/test_fix_tool_loop_errors.py +128 -0
  742. package/tests/security/test_path_traversal_app.py +132 -0
  743. package/tests/security/test_path_traversal_docker.py +36 -0
  744. package/tests/security/test_path_traversal_settings.py +87 -0
  745. package/tests/security/test_safe_path_util.py +166 -0
  746. package/tests/security/test_xss_preview.py +46 -0
  747. package/tests/test-default-model-resolution.py +136 -0
  748. package/tests/test-docker-image.sh +358 -0
  749. package/tests/test-list-subagent-models.sh +421 -0
  750. package/tests/test-mcp-endpoint-live.sh +92 -0
  751. package/tests/test-mcp-native-surface.sh +213 -0
  752. package/tests/test-no-cyrillic.sh +135 -0
  753. package/tests/test-opencode-error-mapping.py +130 -0
  754. package/tests/test-pr88-skills.sh +305 -0
  755. package/tests/test-project-structure.sh +202 -0
  756. package/tests/test-single-user-mode.sh +269 -0
  757. package/tests/test-skill-no-hardcoded-models.sh +65 -0
  758. package/tests/test-subagent-cli-surface.py +137 -0
  759. package/tests/test-subagent-runtime.sh +109 -0
  760. package/tests/test_codex_toml_converter.py +204 -0
  761. package/tests/test_default_resolver_no_legacy_global.py +159 -0
  762. package/tests/test_filter.py +648 -0
  763. package/tests/test_init_sh_unchanged.sh +49 -0
  764. package/tests/test_opencode_alias_map_drop.py +144 -0
  765. package/tests/test_requirements.py +91 -0
  766. package/tests/test_subagent_docstring.py +193 -0
  767. package/tests/test_tools.py +34 -0
  768. package/vendor/extract-text/README.md +46 -0
  769. package/vendor/extract-text/extract-text +0 -0
@@ -0,0 +1,893 @@
1
+ # HTML to PowerPoint Guide
2
+
3
+ Convert HTML slides to PowerPoint presentations with accurate positioning using the `html2pptx.js` library.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [Design Principles](#design-principles)
8
+ 2. [Creating HTML Slides](#creating-html-slides)
9
+ 3. [Using the @ant/html2pptx Library](#using-the-html2pptx-library)
10
+ 4. [Using PptxGenJS](#using-pptxgenjs)
11
+
12
+ ---
13
+
14
+ ## ⚠️ Prerequisites Check
15
+
16
+ Verify the @ant/html2pptx package is installed before proceeding:
17
+
18
+ ```bash
19
+ # Check if installed and install if not found
20
+ npm list -g @ant/html2pptx || npm install -g /mnt/skills/public/pptx/html2pptx.tgz
21
+ ```
22
+
23
+ This command will show the package version if installed, or install it automatically if not found. No additional verification is needed.
24
+
25
+ ---
26
+
27
+ ### Design Principles
28
+
29
+ **CRITICAL**: Analyze the content and choose appropriate design elements before creating presentations:
30
+
31
+ 1. **Consider the subject matter**: What is this presentation about? What tone, industry, or mood does it suggest?
32
+ 2. **Check for branding**: If the user mentions a company/organization, consider their brand colors and identity
33
+ 3. **Match palette to content**: Select colors that reflect the subject
34
+ 4. **State your approach**: Explain your design choices before writing code
35
+
36
+ **Requirements**:
37
+
38
+ - ✅ State your content-informed design approach BEFORE writing code
39
+ - ✅ Use web-safe fonts only: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS, Impact
40
+ - ✅ Create clear visual hierarchy through size, weight, and color
41
+ - ✅ Ensure readability: strong contrast, appropriately sized text, clean alignment
42
+ - ✅ Be consistent: repeat patterns, spacing, and visual language across slides
43
+
44
+ #### Typography and content design
45
+
46
+ This is a presentation, not a report. Keep slides brief!
47
+
48
+ - Paragraphs should be 1 sentence, _maybe_ 2.
49
+ - You should restrict yourself to 3-5 bullet points per list.
50
+ - Cards should support short statements/fragments. Maybe a complete sentence if it's short.
51
+
52
+ We've found without instruction, agents tend to write 2-3x more text than optimal, so whatever you think is short, it's probably not short enough!
53
+
54
+ For visual heirarchy reasons, you should generally not have more than 2 text sizes per slide, 3 or 4 for complex slides with a lot of components and charts. If you need additional distinction, consider using opacity.
55
+
56
+ #### Color Palette Selection
57
+
58
+ **Choosing colors creatively**:
59
+
60
+ - **Think beyond defaults**: What colors genuinely match this specific topic? Avoid autopilot choices.
61
+ - **Consider multiple angles**: Topic, industry, mood, energy level, target audience, brand identity (if mentioned)
62
+ - **Be adventurous**: Try unexpected combinations - a healthcare presentation doesn't have to be green, finance doesn't have to be navy
63
+ - **Build your palette**: Pick 3-5 colors that work together (dominant colors + supporting tones + accent)
64
+ - **Ensure contrast**: Text must be clearly readable on backgrounds
65
+
66
+ **Example color palettes** (use these to spark creativity - choose one, adapt it, or create your own):
67
+
68
+ 1. **Classic Blue**: Deep navy (#1C2833), slate gray (#2E4053), silver (#AAB7B8), off-white (#F4F6F6)
69
+ 2. **Teal & Coral**: Teal (#5EA8A7), deep teal (#277884), coral (#FE4447), white (#FFFFFF)
70
+ 3. **Bold Red**: Red (#C0392B), bright red (#E74C3C), orange (#F39C12), yellow (#F1C40F), green (#2ECC71)
71
+ 4. **Warm Blush**: Mauve (#A49393), blush (#EED6D3), rose (#E8B4B8), cream (#FAF7F2)
72
+ 5. **Burgundy Luxury**: Burgundy (#5D1D2E), crimson (#951233), rust (#C15937), gold (#997929)
73
+ 6. **Deep Purple & Emerald**: Purple (#B165FB), dark blue (#181B24), emerald (#40695B), white (#FFFFFF)
74
+ 7. **Cream & Forest Green**: Cream (#FFE1C7), forest green (#40695B), white (#FCFCFC)
75
+ 8. **Pink & Purple**: Pink (#F8275B), coral (#FF574A), rose (#FF737D), purple (#3D2F68)
76
+ 9. **Lime & Plum**: Lime (#C5DE82), plum (#7C3A5F), coral (#FD8C6E), blue-gray (#98ACB5)
77
+ 10. **Black & Gold**: Gold (#BF9A4A), black (#000000), cream (#F4F6F6)
78
+ 11. **Sage & Terracotta**: Sage (#87A96B), terracotta (#E07A5F), cream (#F4F1DE), charcoal (#2C2C2C)
79
+ 12. **Charcoal & Red**: Charcoal (#292929), red (#E33737), light gray (#CCCBCB)
80
+ 13. **Vibrant Orange**: Orange (#F96D00), light gray (#F2F2F2), charcoal (#222831)
81
+ 14. **Forest Green**: Black (#191A19), green (#4E9F3D), dark green (#1E5128), white (#FFFFFF)
82
+ 15. **Retro Rainbow**: Purple (#722880), pink (#D72D51), orange (#EB5C18), amber (#F08800), gold (#DEB600)
83
+ 16. **Vintage Earthy**: Mustard (#E3B448), sage (#CBD18F), forest green (#3A6B35), cream (#F4F1DE)
84
+ 17. **Coastal Rose**: Old rose (#AD7670), beaver (#B49886), eggshell (#F3ECDC), ash gray (#BFD5BE)
85
+ 18. **Orange & Turquoise**: Light orange (#FC993E), grayish turquoise (#667C6F), white (#FCFCFC)
86
+
87
+ #### Maintaining visual interest
88
+
89
+ Make use of icons, image placeholders, and charts to keep slides engaging.
90
+
91
+ #### Visual Details Options
92
+
93
+ **Geometric Patterns**:
94
+
95
+ - Diagonal section dividers instead of horizontal
96
+ - Asymmetric column widths (30/70, 40/60, 25/75)
97
+ - Rotated text headers at 90° or 270°
98
+ - Circular/hexagonal frames for images
99
+ - Triangular accent shapes in corners
100
+ - Overlapping shapes for depth
101
+
102
+ **Border & Frame Treatments**:
103
+
104
+ - Thick single-color borders (10-20px) on one side only
105
+ - Double-line borders with contrasting colors
106
+ - Corner brackets instead of full frames
107
+ - L-shaped borders (top+left or bottom+right)
108
+ - Underline accents beneath headers (4-6px thick)
109
+
110
+ **Typography Treatments**:
111
+
112
+ - Extreme size contrast (72px headlines vs 12px body)
113
+ - All-caps headers with wide letter spacing
114
+ - Numbered sections in oversized display type
115
+ - Monospace (Courier New) for data/stats/technical content
116
+ - Condensed fonts (Arial Narrow) for dense information
117
+ - Outlined text for emphasis
118
+
119
+ **Chart & Data Styling**:
120
+
121
+ - Monochrome charts with single accent color for key data
122
+ - Horizontal bar charts instead of vertical
123
+ - Dot plots instead of bar charts
124
+ - Minimal gridlines or none at all
125
+ - Data labels directly on elements (no legends)
126
+ - Oversized numbers for key metrics
127
+
128
+ **Layout Innovations**:
129
+
130
+ - Full-bleed images with text overlays
131
+ - Sidebar column (20-30% width) for navigation/context
132
+ - Modular grid systems (3×3, 4×4 blocks)
133
+ - Z-pattern or F-pattern content flow
134
+ - Floating text boxes over colored shapes
135
+ - Magazine-style multi-column layouts
136
+
137
+ **Background Treatments**:
138
+
139
+ - Solid color blocks occupying 40-60% of slide
140
+ - Gradient fills (vertical or diagonal only)
141
+ - Split backgrounds (two colors, diagonal or vertical)
142
+ - Edge-to-edge color bands
143
+ - Negative space as a design element
144
+
145
+ ### Layout Tips
146
+
147
+ **To create slides with charts or tables:**
148
+
149
+ - **Two-column layout (PREFERRED)**: Use a header spanning the full width, then two columns below - text/bullets in one column and the featured content in the other. This provides better balance and makes charts/tables more readable. Use unequal column widths (e.g., 40%/60% split) to optimize space for each content type.
150
+ - **Full-slide layout**: Let the featured content (chart/table) take up the entire slide for maximum impact and readability
151
+ - **NEVER vertically stack**: Do not place charts/tables below text in a single column - this causes poor readability and layout issues
152
+
153
+ ## Creating HTML Slides
154
+
155
+ Every HTML slide must include proper body dimensions:
156
+
157
+ - **16:9** (automatically applied): `width: 960px; height: 540px`
158
+ - **4:3**: `width: 960px; height: 720px`
159
+ - **16:10**: `width: 960px; height: 600px`
160
+
161
+ ### How to write CSS
162
+
163
+ **MANDATORY - READ ENTIRE FILE**: Read [`css.md`](css.md) (~400 lines) completely from start to finish. **NEVER set any range limits when reading this file.** Read the full file content for detailed guidance on CSS structure before writing any HTML.
164
+
165
+ Slides are automatically provided with a global stylesheet which is injected when the HTML is rendered. Guidelines for styles:
166
+
167
+ - CRITICAL: REFRAIN FROM DEFINING YOUR OWN TYPE SIZES AND COLORS unless you are explicity "hitting the eject button." Use variables defined in the global stylesheet whenever possible.
168
+ - Override these CSS variables (using the `:root` selector) to customize the look and feel of your slides
169
+ - Use the classes from [`css.md`](css.md) when creating your slides. Reference the examples provided in that guide.
170
+
171
+ ### Supported Elements
172
+
173
+ #### Block Elements
174
+
175
+ - `<div>`, `<section>`, `<header>`, `<footer>`, `<main>`, `<article>`, `<nav>`, `<aside>` - Container elements with bg/border support (supports gradients and background images)
176
+
177
+ #### Text Elements
178
+
179
+ - `<p>` - Paragraphs with styling
180
+ - `<h1>`-`<h6>` - Headings with styling
181
+
182
+ #### Lists
183
+
184
+ - `<ul>`, `<ol>` - Lists (never use manual bullets •, -, \*)
185
+
186
+ #### Inline Formatting
187
+
188
+ - `<b>`, `<strong>` - Bold text
189
+ - `<i>`, `<em>` - Italic text
190
+ - `<u>` - Underlined text
191
+ - `<span>` - Inline formatting with CSS styles (bold, italic, underline, color)
192
+ - `<br>` - Line breaks
193
+
194
+ #### Media
195
+
196
+ - `<img>` - Images
197
+
198
+ #### Special Features
199
+
200
+ - `class="placeholder"` - Reserved space for charts (returns `{ id, x, y, w, h }`)
201
+ - Automatically styled with muted background and dashed border
202
+ - Stretches to fill available container space
203
+ - Provides visual indication during development
204
+ - `data-balance` attribute - Auto-balance text line lengths for better typography. `<h1>` and `<h2>` elements are automatically balanced without needing the `data-balance` attribute.
205
+
206
+ ### Critical Text Rules
207
+
208
+ **IMPORTANT**: These rules must be followed to safely convert HTML to PowerPoint.
209
+
210
+ **ALL text MUST be inside `<p>`, `<h1>`-`<h6>`, `<ul>`, or `<ol>` tags:**
211
+
212
+ - ✅ Correct: `<div><p>Text here</p></div>`
213
+ - ❌ Wrong: `<div>Text here</div>` - **Text will NOT appear in PowerPoint**
214
+ - ❌ Wrong: `<span>Text</span>` - **Text will NOT appear in PowerPoint**
215
+ - Text in `<div>` or `<span>` without a text tag is silently ignored
216
+
217
+ **NEVER use manual bullet symbols (•, -, \*, etc.)** - Use `<ul>` or `<ol>` lists instead
218
+
219
+ **Use `row` and `col` classes INSTEAD of flexbox:**
220
+
221
+ - ✅ Correct: `<div class="row"><p>Text here</p></div>`
222
+ - ❌ Wrong: `<div style="display: flex;"><p>Text here</p></div>`
223
+
224
+ **ONLY use web-safe fonts that are universally available:**
225
+
226
+ - ✅ Web-safe fonts: `Arial`, `Helvetica`, `Times New Roman`, `Georgia`, `Courier New`, `Verdana`, `Tahoma`, `Trebuchet MS`, `Impact`, `Comic Sans MS`
227
+ - ❌ Wrong: `'Segoe UI'`, `'SF Pro'`, `'Roboto'`, custom fonts - **May cause rendering issues**
228
+
229
+ ### Shape Styling (block elements only)
230
+
231
+ **IMPORTANT: Backgrounds, borders, and shadows only work on block elements, NOT on text elements (`<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>`)**
232
+
233
+ - **Backgrounds**: CSS `background` or `background-color` or `background-image`
234
+ - `background: var(--color-surface);`
235
+ - `background: linear-gradient(135deg, var(--color-primary-light) 0%, var(--color-primary-dark) 100%);`
236
+ - `background: radial-gradient(circle, var(--color-accent-light) 0%, var(--color-accent-dark) 100%);`
237
+ - `background: url(path/to/image.png)`
238
+ - **Borders**
239
+ - Supports uniform borders: `border: 1px solid var(--color-border)`
240
+ - Supports partial borders: `border-left`, `border-right`, `border-top`, `border-bottom`
241
+ - **Border radius**
242
+ - `rounded` CSS class applies the default border-radius
243
+ - `pill` CSS class applies maximum border-radius to create pill-shaped elements
244
+ - When height and width are equal, this creates a circle
245
+ - **Box shadows**
246
+ - Supports outer shadows only
247
+ - PowerPoint does not support inset shadows
248
+ - `box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);`
249
+
250
+ ### Icons
251
+
252
+ Icons can be included using either inline SVG or SVG files, which are automatically converted to images in PowerPoint.
253
+
254
+ #### How to use react-icons
255
+
256
+ ```javascript
257
+ const React = require("react");
258
+ const ReactDOMServer = require("react-dom/server");
259
+ const { FaHome } = require("react-icons/fa");
260
+
261
+ // Generate SVG string from react-icon
262
+ function renderIconSvg(IconComponent, color, size = "48") {
263
+ return ReactDOMServer.renderToStaticMarkup(
264
+ React.createElement(IconComponent, { color: color, size: size })
265
+ );
266
+ }
267
+
268
+ // Get SVG markup
269
+ const homeIconSvg = renderIconSvg(FaHome, "#4472c4", "48");
270
+
271
+ // Use in HTML template (inline SVG)
272
+ // <div style="width: 48px; height: 48px;">${homeIconSvg}</div>
273
+ ```
274
+
275
+ ### Example Slide HTML
276
+
277
+ ```html
278
+ <!DOCTYPE html>
279
+ <html lang="en">
280
+ <head>
281
+ <meta charset="UTF-8" />
282
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
283
+ <title>Slide with title, context, and full bleed placeholder</title>
284
+ <style>
285
+ /* Shared CSS variable overrides */
286
+ :root {
287
+ --color-primary: #00a4fc;
288
+ --color-primary-foreground: #ffffff;
289
+ }
290
+ </style>
291
+ </head>
292
+ <body class="row items-fill-width gap-lg">
293
+ <div class="p-8 pe-0">
294
+ <h1>Slide title</h1>
295
+ <p class="text-2xl text-muted-foreground">Subtitle or context</p>
296
+ </div>
297
+ <div class="placeholder w-3/5 fit"></div>
298
+ </body>
299
+ </html>
300
+ ```
301
+
302
+ ## Using the @ant/html2pptx Library
303
+
304
+ ### Installation & Setup
305
+
306
+ > **CRITICAL: html2pptx is a JavaScript library, NOT a CLI tool. It has NO command-line interface.**
307
+ > - ❌ `html2pptx -c config.json` — will NOT work (no such command exists)
308
+ > - ❌ `npx @ant/html2pptx ...` — will NOT work (no CLI binary in the package)
309
+ > - ❌ Creating a `config.json` for html2pptx — not supported
310
+ > - ❌ Writing a Python script instead — use the JavaScript workflow shown below
311
+ > - ✅ Write a `.js` script with `import { html2pptx } from '@ant/html2pptx'` and run with `node script.js`
312
+
313
+ > **Playwright and Chromium are pre-installed.** Do NOT run `playwright install` — it will hang. The html2pptx library handles browser operations internally.
314
+
315
+ **Important**: The @ant/html2pptx package is pre-installed globally in the Docker image.
316
+
317
+ **You must use ES Modules (import) syntax:**
318
+
319
+ ```javascript
320
+ // Use ES module imports — CommonJS require() does NOT work with html2pptx
321
+ import pptxgen from 'pptxgenjs';
322
+ import { html2pptx } from '@ant/html2pptx';
323
+ import { createElement } from 'react';
324
+ import { renderToStaticMarkup } from 'react-dom/server';
325
+ ```
326
+
327
+ **Note**:
328
+ - CommonJS `require()` does NOT work due to ES-only dependencies
329
+ - Create `package.json` with `{"type": "module"}` in the working directory before running
330
+ - All packages (`pptxgenjs`, `@ant/html2pptx`, `react`) are available by package name
331
+
332
+ ### Dependencies
333
+
334
+ These libraries are pre-installed and available:
335
+
336
+ - `pptxgenjs`
337
+ - `playwright`
338
+ - `@ant/html2pptx`
339
+
340
+ ### ⚠️ IMPORTANT: How To Use html2pptx
341
+
342
+ Common errors:
343
+
344
+ - DO NOT call `pptx.addSlide()` directly, `html2pptx` creates a slide for you
345
+ - `html2pptx` accepts an `htmlFilePath` and a `pptx` presentation object
346
+ - If you pass the wrong arguments, your script will throw errors or time out
347
+
348
+ **Your script MUST follow the following example.** Use ES module `import` syntax (NOT CommonJS `require`). Create `package.json` with `{"type": "module"}` before running.
349
+
350
+ ```javascript
351
+ import pptxgen from "pptxgenjs";
352
+ import { html2pptx } from "@ant/html2pptx";
353
+
354
+ // Create a new pptx presentation
355
+ const pptx = new pptxgen();
356
+ pptx.layout = "LAYOUT_16x9"; // Must match HTML body dimensions
357
+
358
+ // Add an HTML-only slide
359
+ await html2pptx("slide1.html", pptx);
360
+
361
+ // Add a slide with a chart placeholder
362
+ const { slide, placeholders } = await html2pptx("slide2.html", pptx);
363
+ slide.addChart(pptx.charts.LINE, chartData, placeholders[0]);
364
+
365
+ // Save the presentation
366
+ await pptx.writeFile("output.pptx");
367
+ ```
368
+
369
+ ### API Reference
370
+
371
+ #### Function Signature
372
+
373
+ ```javascript
374
+ await html2pptx(htmlFilePath, pptxPresentation, options);
375
+ ```
376
+
377
+ #### Parameters
378
+
379
+ - `htmlFilePath` (string): Path to HTML file (absolute or relative)
380
+ - `pptxPresentation` (pptxgen): PptxGenJS presentation instance with layout already set
381
+ - `options` (object, optional):
382
+ - `tmpDir` (string): Temporary directory for generated files (default: `process.env.TMPDIR || '/tmp'`)
383
+
384
+ #### Returns
385
+
386
+ ```javascript
387
+ {
388
+ slide: pptxgenSlide, // The created/updated slide
389
+ placeholders: [ // Array of placeholder positions
390
+ { id: string, x: number, y: number, w: number, h: number },
391
+ ...
392
+ ]
393
+ }
394
+ ```
395
+
396
+ ### Validation
397
+
398
+ The library automatically validates and collects all errors before throwing:
399
+
400
+ 1. **HTML dimensions must match presentation layout** - Reports dimension mismatches
401
+ 2. **Content must not overflow body** - Reports overflow with exact measurements
402
+ 3. **Text element styling** - Reports backgrounds/borders/shadows on text elements (only allowed on block elements)
403
+
404
+ **All validation errors are collected and reported together** in a single error message, allowing you to fix all issues at once instead of one at a time.
405
+
406
+ ### Working with Placeholders
407
+
408
+ ```javascript
409
+ const { slide, placeholders } = await html2pptx("slide.html", pptx);
410
+
411
+ // Use first placeholder
412
+ slide.addChart(pptx.charts.BAR, data, placeholders[0]);
413
+
414
+ // Find by ID
415
+ const chartArea = placeholders.find((p) => p.id === "chart-area");
416
+ slide.addChart(pptx.charts.LINE, data, chartArea);
417
+ ```
418
+
419
+ ### Complete Example
420
+
421
+ ```javascript
422
+ import pptxgen from "pptxgenjs";
423
+ import { html2pptx } from "@ant/html2pptx";
424
+
425
+ async function createPresentation() {
426
+ const pptx = new pptxgen();
427
+ pptx.layout = "LAYOUT_16x9";
428
+ pptx.author = "Your Name";
429
+ pptx.title = "My Presentation";
430
+
431
+ // Slide 1: Title
432
+ const { slide: slide1 } = await html2pptx("slides/title.html", pptx);
433
+
434
+ // Slide 2: Content with chart
435
+ const { slide: slide2, placeholders } = await html2pptx(
436
+ "slides/data.html",
437
+ pptx
438
+ );
439
+
440
+ const chartData = [
441
+ {
442
+ name: "Sales",
443
+ labels: ["Q1", "Q2", "Q3", "Q4"],
444
+ values: [4500, 5500, 6200, 7100],
445
+ },
446
+ ];
447
+
448
+ slide2.addChart(pptx.charts.BAR, chartData, {
449
+ ...placeholders[0],
450
+ showTitle: true,
451
+ title: "Quarterly Sales",
452
+ showCatAxisTitle: true,
453
+ catAxisTitle: "Quarter",
454
+ showValAxisTitle: true,
455
+ valAxisTitle: "Sales ($000s)",
456
+ });
457
+
458
+ // Save
459
+ await pptx.writeFile({ fileName: "presentation.pptx" });
460
+ console.log("Presentation created successfully!");
461
+ }
462
+
463
+ createPresentation().catch(console.error);
464
+ ```
465
+
466
+ **Run with:**
467
+
468
+ ```sh
469
+ node create-presentation.js
470
+ ```
471
+
472
+ All packages are installed in `/home/node_modules` (or symlinked there) and are resolved automatically by Node.js ES module resolution.
473
+
474
+ ## Using PptxGenJS
475
+
476
+ After converting HTML to slides with `html2pptx`, you'll use PptxGenJS to add dynamic content like charts, images, and additional elements.
477
+
478
+ ### ⚠️ Critical Rules
479
+
480
+ #### Colors
481
+
482
+ - **NEVER use `#` prefix** with hex colors in PptxGenJS - causes file corruption
483
+ - ✅ Correct: `color: "FF0000"`, `fill: { color: "0066CC" }`
484
+ - ❌ Wrong: `color: "#FF0000"` (breaks document)
485
+
486
+ ### Adding Images
487
+
488
+ Always calculate aspect ratios from actual image dimensions:
489
+
490
+ ```javascript
491
+ // Get image dimensions: identify image.png | grep -o '[0-9]* x [0-9]*'
492
+ const imgWidth = 1860,
493
+ imgHeight = 1519; // From actual file
494
+ const aspectRatio = imgWidth / imgHeight;
495
+
496
+ const h = 3; // Max height
497
+ const w = h * aspectRatio;
498
+ const x = (10 - w) / 2; // Center on 16:9 slide
499
+
500
+ slide.addImage({ path: "chart.png", x, y: 1.5, w, h });
501
+ ```
502
+
503
+ ### Adding Text
504
+
505
+ ```javascript
506
+ // Rich text with formatting
507
+ slide.addText(
508
+ [
509
+ { text: "Bold ", options: { bold: true } },
510
+ { text: "Italic ", options: { italic: true } },
511
+ { text: "Normal" },
512
+ ],
513
+ {
514
+ x: 1,
515
+ y: 2,
516
+ w: 8,
517
+ h: 1,
518
+ }
519
+ );
520
+ ```
521
+
522
+ ### Adding Shapes
523
+
524
+ ```javascript
525
+ // Rectangle
526
+ slide.addShape(pptx.shapes.RECTANGLE, {
527
+ x: 1,
528
+ y: 1,
529
+ w: 3,
530
+ h: 2,
531
+ fill: { color: "4472C4" },
532
+ line: { color: "000000", width: 2 },
533
+ });
534
+
535
+ // Circle
536
+ slide.addShape(pptx.shapes.OVAL, {
537
+ x: 5,
538
+ y: 1,
539
+ w: 2,
540
+ h: 2,
541
+ fill: { color: "ED7D31" },
542
+ });
543
+
544
+ // Rounded rectangle
545
+ slide.addShape(pptx.shapes.ROUNDED_RECTANGLE, {
546
+ x: 1,
547
+ y: 4,
548
+ w: 3,
549
+ h: 1.5,
550
+ fill: { color: "70AD47" },
551
+ rectRadius: 0.2,
552
+ });
553
+ ```
554
+
555
+ ### Adding Charts
556
+
557
+ **Required for most charts:** Axis labels using `catAxisTitle` (category) and `valAxisTitle` (value).
558
+
559
+ **Chart Data Format:**
560
+
561
+ - Use **single series with all labels** for simple bar/line charts
562
+ - Each series creates a separate legend entry
563
+ - Labels array defines X-axis values
564
+
565
+ **Time Series Data - Choose Correct Granularity:**
566
+
567
+ - **< 30 days**: Use daily grouping (e.g., "10-01", "10-02") - avoid monthly aggregation that creates single-point charts
568
+ - **30-365 days**: Use monthly grouping (e.g., "2024-01", "2024-02")
569
+ - **> 365 days**: Use yearly grouping (e.g., "2023", "2024")
570
+ - **Validate**: Charts with only 1 data point likely indicate incorrect aggregation for the time period
571
+
572
+ ```javascript
573
+ const { slide, placeholders } = await html2pptx("slide.html", pptx);
574
+
575
+ // CORRECT: Single series with all labels
576
+ slide.addChart(
577
+ pptx.charts.BAR,
578
+ [
579
+ {
580
+ name: "Sales 2024",
581
+ labels: ["Q1", "Q2", "Q3", "Q4"],
582
+ values: [4500, 5500, 6200, 7100],
583
+ },
584
+ ],
585
+ {
586
+ ...placeholders[0], // Use placeholder position
587
+ barDir: "col", // 'col' = vertical bars, 'bar' = horizontal
588
+ showTitle: true,
589
+ title: "Quarterly Sales",
590
+ showLegend: false, // No legend needed for single series
591
+ // Required axis labels
592
+ showCatAxisTitle: true,
593
+ catAxisTitle: "Quarter",
594
+ showValAxisTitle: true,
595
+ valAxisTitle: "Sales ($000s)",
596
+ // Optional: Control scaling (adjust min based on data range for better visualization)
597
+ valAxisMaxVal: 8000,
598
+ valAxisMinVal: 0, // Use 0 for counts/amounts; for clustered data (e.g., 4500-7100), consider starting closer to min value
599
+ valAxisMajorUnit: 2000, // Control y-axis label spacing to prevent crowding
600
+ catAxisLabelRotate: 45, // Rotate labels if crowded
601
+ dataLabelPosition: "outEnd",
602
+ dataLabelColor: "000000",
603
+ // Use single color for single-series charts
604
+ chartColors: ["4472C4"], // All bars same color
605
+ }
606
+ );
607
+ ```
608
+
609
+ #### Scatter Chart
610
+
611
+ **IMPORTANT**: Scatter chart data format is unusual - first series contains X-axis values, subsequent series contain Y-values:
612
+
613
+ ```javascript
614
+ // Prepare data
615
+ const data1 = [
616
+ { x: 10, y: 20 },
617
+ { x: 15, y: 25 },
618
+ { x: 20, y: 30 },
619
+ ];
620
+ const data2 = [
621
+ { x: 12, y: 18 },
622
+ { x: 18, y: 22 },
623
+ ];
624
+
625
+ const allXValues = [...data1.map((d) => d.x), ...data2.map((d) => d.x)];
626
+
627
+ slide.addChart(
628
+ pptx.charts.SCATTER,
629
+ [
630
+ { name: "X-Axis", values: allXValues }, // First series = X values
631
+ { name: "Series 1", values: data1.map((d) => d.y) }, // Y values only
632
+ { name: "Series 2", values: data2.map((d) => d.y) }, // Y values only
633
+ ],
634
+ {
635
+ x: 1,
636
+ y: 1,
637
+ w: 8,
638
+ h: 4,
639
+ lineSize: 0, // 0 = no connecting lines
640
+ lineDataSymbol: "circle",
641
+ lineDataSymbolSize: 6,
642
+ showCatAxisTitle: true,
643
+ catAxisTitle: "X Axis",
644
+ showValAxisTitle: true,
645
+ valAxisTitle: "Y Axis",
646
+ chartColors: ["4472C4", "ED7D31"],
647
+ }
648
+ );
649
+ ```
650
+
651
+ #### Line Chart
652
+
653
+ ```javascript
654
+ slide.addChart(
655
+ pptx.charts.LINE,
656
+ [
657
+ {
658
+ name: "Temperature",
659
+ labels: ["Jan", "Feb", "Mar", "Apr"],
660
+ values: [32, 35, 42, 55],
661
+ },
662
+ ],
663
+ {
664
+ x: 1,
665
+ y: 1,
666
+ w: 8,
667
+ h: 4,
668
+ lineSize: 4,
669
+ lineSmooth: true,
670
+ // Required axis labels
671
+ showCatAxisTitle: true,
672
+ catAxisTitle: "Month",
673
+ showValAxisTitle: true,
674
+ valAxisTitle: "Temperature (°F)",
675
+ // Optional: Y-axis range (set min based on data range for better visualization)
676
+ valAxisMinVal: 0, // For ranges starting at 0 (counts, percentages, etc.)
677
+ valAxisMaxVal: 60,
678
+ valAxisMajorUnit: 20, // Control y-axis label spacing to prevent crowding (e.g., 10, 20, 25)
679
+ // valAxisMinVal: 30, // PREFERRED: For data clustered in a range (e.g., 32-55 or ratings 3-5), start axis closer to min value to show variation
680
+ // Optional: Chart colors
681
+ chartColors: ["4472C4", "ED7D31", "A5A5A5"],
682
+ }
683
+ );
684
+ ```
685
+
686
+ #### Pie Chart (No Axis Labels Required)
687
+
688
+ **CRITICAL**: Pie charts require a **single data series** with all categories in the `labels` array and corresponding values in the `values` array.
689
+
690
+ ```javascript
691
+ slide.addChart(
692
+ pptx.charts.PIE,
693
+ [
694
+ {
695
+ name: "Market Share",
696
+ labels: ["Product A", "Product B", "Other"], // All categories in one array
697
+ values: [35, 45, 20], // All values in one array
698
+ },
699
+ ],
700
+ {
701
+ x: 2,
702
+ y: 1,
703
+ w: 6,
704
+ h: 4,
705
+ showPercent: true,
706
+ showLegend: true,
707
+ legendPos: "r", // right
708
+ chartColors: ["4472C4", "ED7D31", "A5A5A5"],
709
+ }
710
+ );
711
+ ```
712
+
713
+ #### Multiple Data Series
714
+
715
+ ```javascript
716
+ slide.addChart(
717
+ pptx.charts.LINE,
718
+ [
719
+ {
720
+ name: "Product A",
721
+ labels: ["Q1", "Q2", "Q3", "Q4"],
722
+ values: [10, 20, 30, 40],
723
+ },
724
+ {
725
+ name: "Product B",
726
+ labels: ["Q1", "Q2", "Q3", "Q4"],
727
+ values: [15, 25, 20, 35],
728
+ },
729
+ ],
730
+ {
731
+ x: 1,
732
+ y: 1,
733
+ w: 8,
734
+ h: 4,
735
+ showCatAxisTitle: true,
736
+ catAxisTitle: "Quarter",
737
+ showValAxisTitle: true,
738
+ valAxisTitle: "Revenue ($M)",
739
+ }
740
+ );
741
+ ```
742
+
743
+ ### Chart Colors
744
+
745
+ **CRITICAL**: Use hex colors **without** the `#` prefix - including `#` causes file corruption.
746
+
747
+ **Align chart colors with your chosen design palette**, ensuring sufficient contrast and distinctiveness for data visualization. Adjust colors for:
748
+
749
+ - Strong contrast between adjacent series
750
+ - Readability against slide backgrounds
751
+ - Accessibility (avoid red-green only combinations)
752
+
753
+ ```javascript
754
+ // Example: Ocean palette-inspired chart colors (adjusted for contrast)
755
+ const chartColors = ["16A085", "FF6B9D", "2C3E50", "F39C12", "9B59B6"];
756
+
757
+ // Single-series chart: Use one color for all bars/points
758
+ slide.addChart(
759
+ pptx.charts.BAR,
760
+ [
761
+ {
762
+ name: "Sales",
763
+ labels: ["Q1", "Q2", "Q3", "Q4"],
764
+ values: [4500, 5500, 6200, 7100],
765
+ },
766
+ ],
767
+ {
768
+ ...placeholders[0],
769
+ chartColors: ["16A085"], // All bars same color
770
+ showLegend: false,
771
+ }
772
+ );
773
+
774
+ // Multi-series chart: Each series gets a different color
775
+ slide.addChart(
776
+ pptx.charts.LINE,
777
+ [
778
+ { name: "Product A", labels: ["Q1", "Q2", "Q3"], values: [10, 20, 30] },
779
+ { name: "Product B", labels: ["Q1", "Q2", "Q3"], values: [15, 25, 20] },
780
+ ],
781
+ {
782
+ ...placeholders[0],
783
+ chartColors: ["16A085", "FF6B9D"], // One color per series
784
+ }
785
+ );
786
+ ```
787
+
788
+ ### Adding Tables
789
+
790
+ Tables can be added with basic or advanced formatting:
791
+
792
+ #### Basic Table
793
+
794
+ ```javascript
795
+ slide.addTable(
796
+ [
797
+ ["Header 1", "Header 2", "Header 3"],
798
+ ["Row 1, Col 1", "Row 1, Col 2", "Row 1, Col 3"],
799
+ ["Row 2, Col 1", "Row 2, Col 2", "Row 2, Col 3"],
800
+ ],
801
+ {
802
+ x: 0.5,
803
+ y: 1,
804
+ w: 9,
805
+ h: 3,
806
+ border: { pt: 1, color: "999999" },
807
+ fill: { color: "F1F1F1" },
808
+ }
809
+ );
810
+ ```
811
+
812
+ #### Table with Custom Formatting
813
+
814
+ ```javascript
815
+ const tableData = [
816
+ // Header row with custom styling
817
+ [
818
+ {
819
+ text: "Product",
820
+ options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true },
821
+ },
822
+ {
823
+ text: "Revenue",
824
+ options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true },
825
+ },
826
+ {
827
+ text: "Growth",
828
+ options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true },
829
+ },
830
+ ],
831
+ // Data rows
832
+ ["Product A", "$50M", "+15%"],
833
+ ["Product B", "$35M", "+22%"],
834
+ ["Product C", "$28M", "+8%"],
835
+ ];
836
+
837
+ slide.addTable(tableData, {
838
+ x: 1,
839
+ y: 1.5,
840
+ w: 8,
841
+ h: 3,
842
+ colW: [3, 2.5, 2.5], // Column widths
843
+ rowH: [0.5, 0.6, 0.6, 0.6], // Row heights
844
+ border: { pt: 1, color: "CCCCCC" },
845
+ align: "center",
846
+ valign: "middle",
847
+ fontSize: 14,
848
+ });
849
+ ```
850
+
851
+ #### Table with Merged Cells
852
+
853
+ ```javascript
854
+ const mergedTableData = [
855
+ [
856
+ {
857
+ text: "Q1 Results",
858
+ options: {
859
+ colspan: 3,
860
+ fill: { color: "4472C4" },
861
+ color: "FFFFFF",
862
+ bold: true,
863
+ },
864
+ },
865
+ ],
866
+ ["Product", "Sales", "Market Share"],
867
+ ["Product A", "$25M", "35%"],
868
+ ["Product B", "$18M", "25%"],
869
+ ];
870
+
871
+ slide.addTable(mergedTableData, {
872
+ x: 1,
873
+ y: 1,
874
+ w: 8,
875
+ h: 2.5,
876
+ colW: [3, 2.5, 2.5],
877
+ border: { pt: 1, color: "DDDDDD" },
878
+ });
879
+ ```
880
+
881
+ ### Table Options
882
+
883
+ Common table options:
884
+
885
+ - `x, y, w, h` - Position and size
886
+ - `colW` - Array of column widths (in inches)
887
+ - `rowH` - Array of row heights (in inches)
888
+ - `border` - Border style: `{ pt: 1, color: "999999" }`
889
+ - `fill` - Background color (no # prefix)
890
+ - `align` - Text alignment: "left", "center", "right"
891
+ - `valign` - Vertical alignment: "top", "middle", "bottom"
892
+ - `fontSize` - Text size
893
+ - `autoPage` - Auto-create new slides if content overflows