@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.
- package/.coderabbit.yaml +25 -0
- package/.dockerignore +95 -0
- package/.env.example +137 -0
- package/.githooks/pre-commit +68 -0
- package/.github/CODEOWNERS +125 -0
- package/.github/ISSUE_TEMPLATE/adr-proposal.md +41 -0
- package/.github/ISSUE_TEMPLATE/bug-report.md +49 -0
- package/.github/ISSUE_TEMPLATE/component-proposal.md +38 -0
- package/.github/ISSUE_TEMPLATE/config.yml +15 -0
- package/.github/ISSUE_TEMPLATE/dependency-proposal.md +59 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +15 -0
- package/.github/ISSUE_TEMPLATE/nfr-proposal.md +44 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +15 -0
- package/.github/codeql/codeql-config.yml +11 -0
- package/.github/codeql/extensions/security-models/python-sanitizers.model.yml +17 -0
- package/.github/codeql/extensions/security-models/qlpack.yml +7 -0
- package/.github/dependabot.yml +23 -0
- package/.github/security-exceptions.yml +23 -0
- package/.github/workflows/build.yml +420 -0
- package/.github/workflows/codeql.yml +33 -0
- package/.github/workflows/contracts-lint.yml +90 -0
- package/.github/workflows/docs-lint.yml +151 -0
- package/.github/workflows/helm.yml +131 -0
- package/.github/workflows/identity-lint.yml +30 -0
- package/.github/workflows/release-chart.yml +177 -0
- package/.github/workflows/release.yml +95 -0
- package/.github/workflows/security.yml +332 -0
- package/.github/workflows/stale.yml +31 -0
- package/.github/workflows/supply-chain.yml +242 -0
- package/.gitleaks.toml +53 -0
- package/.markdownlint.yaml +51 -0
- package/.semgrepignore +85 -0
- package/.vale/styles/Architecture/ap13-data-class-substrate.yml +12 -0
- package/.vale/styles/Architecture/banned-phrases.yml +23 -0
- package/.vale/styles/Architecture/banned-vocab.yml +23 -0
- package/.vale/styles/Architecture/marketing-tone.yml +19 -0
- package/.vale.ini +18 -0
- package/CHANGELOG.md +411 -0
- package/CLAUDE.md +218 -0
- package/CONTRIBUTING.md +82 -0
- package/Dockerfile +676 -0
- package/LICENSE +98 -0
- package/LICENSE-APACHE +202 -0
- package/LICENSE-MIT +21 -0
- package/NOTICE +36 -0
- package/README.md +516 -0
- package/SECURITY.md +45 -0
- package/THIRD-PARTY-LICENSES.md +14 -0
- package/apt-packages.txt +108 -0
- package/computer-use-server/.dockerignore +13 -0
- package/computer-use-server/Dockerfile +44 -0
- package/computer-use-server/README.md +84 -0
- package/computer-use-server/app.py +1544 -0
- package/computer-use-server/bin/list-subagent-models +449 -0
- package/computer-use-server/cli-defaults/README.md +31 -0
- package/computer-use-server/cli-defaults/codex.json +7 -0
- package/computer-use-server/cli-defaults/opencode.json +18 -0
- package/computer-use-server/cli_adapters/__init__.py +46 -0
- package/computer-use-server/cli_adapters/claude.py +163 -0
- package/computer-use-server/cli_adapters/codex.py +163 -0
- package/computer-use-server/cli_adapters/opencode.py +169 -0
- package/computer-use-server/cli_adapters/result.py +34 -0
- package/computer-use-server/cli_runtime.py +316 -0
- package/computer-use-server/context_vars.py +24 -0
- package/computer-use-server/docker_manager.py +1100 -0
- package/computer-use-server/docs_html.py +12 -0
- package/computer-use-server/mcp_resources.py +170 -0
- package/computer-use-server/mcp_tools.py +1430 -0
- package/computer-use-server/requirements.txt +17 -0
- package/computer-use-server/security.py +50 -0
- package/computer-use-server/skill_manager.py +664 -0
- package/computer-use-server/static/browser-viewer.js +445 -0
- package/computer-use-server/static/chart.umd.js +14 -0
- package/computer-use-server/static/docs.html +203 -0
- package/computer-use-server/static/github-dark.min.css +10 -0
- package/computer-use-server/static/github.min.css +10 -0
- package/computer-use-server/static/highlight.min.js +1213 -0
- package/computer-use-server/static/highlightjs-line-numbers.min.js +1 -0
- package/computer-use-server/static/icons.js +74 -0
- package/computer-use-server/static/jszip.min.js +13 -0
- package/computer-use-server/static/katex/auto-render.min.js +1 -0
- package/computer-use-server/static/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Bold.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Italic.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Math-Italic.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Script-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/computer-use-server/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/computer-use-server/static/katex/katex.min.css +1 -0
- package/computer-use-server/static/katex/katex.min.js +1 -0
- package/computer-use-server/static/locale.js +242 -0
- package/computer-use-server/static/mammoth.browser.min.js +21 -0
- package/computer-use-server/static/marked.min.js +6 -0
- package/computer-use-server/static/mermaid.min.js +2811 -0
- package/computer-use-server/static/pdf.min.js +22 -0
- package/computer-use-server/static/pdf.worker.min.js +22 -0
- package/computer-use-server/static/pptxviewjs.min.js +1 -0
- package/computer-use-server/static/preact-htm.min.js +1 -0
- package/computer-use-server/static/preview.css +1030 -0
- package/computer-use-server/static/preview.js +1522 -0
- package/computer-use-server/static/xlsx.full.min.js +22 -0
- package/computer-use-server/static/xterm-addon-fit.min.js +2 -0
- package/computer-use-server/static/xterm-addon-web-links.min.js +2 -0
- package/computer-use-server/static/xterm.css +218 -0
- package/computer-use-server/static/xterm.min.js +2 -0
- package/computer-use-server/system_prompt.py +761 -0
- package/computer-use-server/uploads.py +82 -0
- package/contracts/README.md +53 -0
- package/contracts/audit/audit-fanin.asyncapi.yaml +407 -0
- package/contracts/exec/exec-channel.schema.json +240 -0
- package/contracts/mcp/2025-06-18/ocu-constraints.schema.json +178 -0
- package/contracts/storage/file-artifact-api.schema.json +390 -0
- package/contracts/storage/file-ops.schema.json +217 -0
- package/contracts/storage/mount-config.schema.json +197 -0
- package/cron/Dockerfile +15 -0
- package/cron/cleanup-quick.sh +21 -0
- package/cron/cleanup.sh +127 -0
- package/data/outputs/.gitkeep +0 -0
- package/data/uploads/.gitkeep +0 -0
- package/docker-compose.test.yml +54 -0
- package/docker-compose.webui.yml +77 -0
- package/docker-compose.yml +96 -0
- package/docs/CLOUD.md +29 -0
- package/docs/COMPARISON.md +128 -0
- package/docs/DOCKER.md +469 -0
- package/docs/DYNAMIC-SKILLS.md +77 -0
- package/docs/FEATURES.md +100 -0
- package/docs/INSTALL.md +111 -0
- package/docs/KNOWN-BUGS.md +86 -0
- package/docs/MCP.md +320 -0
- package/docs/SCREENSHOTS.md +39 -0
- package/docs/SKILLS-USER-GUIDE.md +86 -0
- package/docs/SKILLS.md +483 -0
- package/docs/TERMINAL-TAB.md +56 -0
- package/docs/architecture/02-trust-boundaries.md +224 -0
- package/docs/architecture/03-c4-context.md +61 -0
- package/docs/architecture/04-bounded-contexts.md +119 -0
- package/docs/architecture/05-c4-container.md +88 -0
- package/docs/architecture/06-threat-model.md +172 -0
- package/docs/architecture/08-contracts.md +105 -0
- package/docs/architecture/MANIFESTO.md +38 -0
- package/docs/architecture/PROCESS.md +64 -0
- package/docs/architecture/README.md +37 -0
- package/docs/architecture/adr/0000-template.md +65 -0
- package/docs/architecture/adr/0001-layer-0-gate-legacy-exclusion.md +75 -0
- package/docs/architecture/adr/0002-session-view-descriptor.md +57 -0
- package/docs/architecture/adr/0003-sandbox-runtime-tier-ladder.md +63 -0
- package/docs/architecture/adr/0004-operator-authentication-substrate.md +63 -0
- package/docs/architecture/adr/0005-egress-credential-delivery-envoy-sds.md +62 -0
- package/docs/architecture/adr/0006-egress-forward-proxy-substrate.md +65 -0
- package/docs/architecture/adr/0007-egress-auth-mechanism.md +72 -0
- package/docs/architecture/adr/0008-session-egress-attribution.md +59 -0
- package/docs/architecture/adr/0009-audit-pipeline-pluggable-by-contract.md +76 -0
- package/docs/architecture/adr/0010-storage-backend-pluggable-adapter.md +60 -0
- package/docs/architecture/adr/0011-storage-egress-lane.md +67 -0
- package/docs/architecture/adr/0012-implementation-language.md +67 -0
- package/docs/architecture/adr/0020-sandbox-image-provisioning.md +82 -0
- package/docs/architecture/adr/README.md +53 -0
- package/docs/architecture/compliance/.gitkeep +0 -0
- package/docs/architecture/components/00-overview.md +42 -0
- package/docs/architecture/components/0000-template.md +50 -0
- package/docs/architecture/components/01-mcp-gateway.md +80 -0
- package/docs/architecture/components/02-control-operator-api.md +80 -0
- package/docs/architecture/components/04-storage-broker.md +104 -0
- package/docs/architecture/components/05-session-sandbox.md +93 -0
- package/docs/architecture/components/06-egress-trust-edge.md +95 -0
- package/docs/architecture/components/07-audit-pipeline.md +110 -0
- package/docs/architecture/diagrams/.gitkeep +0 -0
- package/docs/architecture/diagrams/02-trust-boundaries.mmd +111 -0
- package/docs/architecture/diagrams/06-threat-model.mmd +41 -0
- package/docs/architecture/diagrams/08-contracts.mmd +47 -0
- package/docs/architecture/diagrams/c4-container.mmd +59 -0
- package/docs/architecture/diagrams/c4-context.mmd +46 -0
- package/docs/architecture/glossary.md +172 -0
- package/docs/architecture/manifesto/.gitkeep +0 -0
- package/docs/architecture/manifesto/01-audience-and-buyer.md +57 -0
- package/docs/architecture/manifesto/02-nfrs.md +325 -0
- package/docs/architecture/manifesto/03-non-negotiables.md +35 -0
- package/docs/architecture/manifesto/04-non-goals.md +23 -0
- package/docs/architecture/manifesto/05-licensing-posture.md +61 -0
- package/docs/architecture/manifesto/06-starter-mode-policy.md +49 -0
- package/docs/architecture/manifesto/07-governance.md +60 -0
- package/docs/architecture/primitives-backlog.md +51 -0
- package/docs/architecture.svg +117 -0
- package/docs/claude-code-gateway.md +173 -0
- package/docs/cli-config-templates.md +240 -0
- package/docs/data-flow.svg +72 -0
- package/docs/demo-landing-page.gif +0 -0
- package/docs/demo-qwen-trending.gif +0 -0
- package/docs/dynamic-skills.svg +77 -0
- package/docs/file-flow.svg +126 -0
- package/docs/future-architecture/README.md +152 -0
- package/docs/future-architecture/adr/0001-control-plane-language-go.md +80 -0
- package/docs/future-architecture/adr/0002-guest-agent-language-go.md +84 -0
- package/docs/future-architecture/adr/0003-docker-poc-first-then-k8s.md +37 -0
- package/docs/future-architecture/adr/0004-pluggable-runtime-via-runtimeclass.md +34 -0
- package/docs/future-architecture/adr/0005-mcp-as-control-plane-gateway.md +34 -0
- package/docs/future-architecture/adr/0006-no-agpl-no-bsl-dependencies.md +41 -0
- package/docs/future-architecture/adr/0007-superseded-by-future-architecture.md +37 -0
- package/docs/future-architecture/adr/0008-internal-grpc-external-rest-mcp.md +106 -0
- package/docs/future-architecture/adr/0009-external-protocol-dialects.md +94 -0
- package/docs/future-architecture/adr/0010-lambda-as-inspiration-not-runtime.md +86 -0
- package/docs/future-architecture/adr/0011-kata-as-first-class-dind-runtime.md +84 -0
- package/docs/future-architecture/antipatterns.md +552 -0
- package/docs/future-architecture/architecture/01-layers.md +109 -0
- package/docs/future-architecture/architecture/02-layer4-control-plane.md +122 -0
- package/docs/future-architecture/architecture/03-layer3-providers.md +174 -0
- package/docs/future-architecture/architecture/04-layer2-runtimes.md +114 -0
- package/docs/future-architecture/architecture/04b-credential-broker.md +153 -0
- package/docs/future-architecture/architecture/05-layer1-guest-agent.md +138 -0
- package/docs/future-architecture/architecture/06-storage.md +134 -0
- package/docs/future-architecture/architecture/07-security.md +194 -0
- package/docs/future-architecture/architecture/08-networking.md +149 -0
- package/docs/future-architecture/architecture/09-templates.md +122 -0
- package/docs/future-architecture/architecture/10-observability.md +121 -0
- package/docs/future-architecture/design-notes.md +72 -0
- package/docs/future-architecture/gaps.md +281 -0
- package/docs/future-architecture/phase-template.md +123 -0
- package/docs/future-architecture/references.md +225 -0
- package/docs/future-architecture/research/01-kata-containers.md +100 -0
- package/docs/future-architecture/research/02-e2b-infra.md +133 -0
- package/docs/future-architecture/research/03-coder.md +115 -0
- package/docs/future-architecture/research/04-cloud-hypervisor.md +99 -0
- package/docs/future-architecture/research/05-firecracker.md +114 -0
- package/docs/future-architecture/research/06-agent-sandbox.md +142 -0
- package/docs/future-architecture/research/07-chromedp.md +78 -0
- package/docs/future-architecture/research/08-microsandbox.md +78 -0
- package/docs/future-architecture/research/09-agentbox.md +135 -0
- package/docs/future-architecture/research/10-sysbox.md +100 -0
- package/docs/future-architecture/research/11-firecracker-containerd.md +93 -0
- package/docs/future-architecture/research/12-docker-socket-proxy.md +59 -0
- package/docs/future-architecture/research/14-e2b-desktop-and-surf.md +107 -0
- package/docs/future-architecture/research/18-open-webui-terminals-observed.md +135 -0
- package/docs/future-architecture/research/bank-buyer.md +96 -0
- package/docs/future-architecture/research/enthusiast-audience.md +106 -0
- package/docs/future-architecture/research/proof-uipath-anthropic-2026-05.md +76 -0
- package/docs/future-architecture/research/widemoat-thesis-advisor.md +124 -0
- package/docs/future-architecture/roadmap.md +438 -0
- package/docs/kata-runtime.md +267 -0
- package/docs/kubernetes.md +86 -0
- package/docs/logo.png +0 -0
- package/docs/multi-cli.md +161 -0
- package/docs/openwebui-filter.md +134 -0
- package/docs/roadmap/implementation-roadmap.md +104 -0
- package/docs/sandbox-contents.svg +229 -0
- package/docs/screenshots/01-create-document.png +0 -0
- package/docs/screenshots/02-file-preview.png +0 -0
- package/docs/screenshots/03-browser-viewer.png +0 -0
- package/docs/screenshots/04-sub-agent-terminal.png +0 -0
- package/docs/screenshots/05-chat-overview.png +0 -0
- package/docs/screenshots/06-sub-agent-dashboard.png +0 -0
- package/docs/screenshots/07-frontend-design-skill.png +0 -0
- package/docs/screenshots/08-pptx-skill.png +0 -0
- package/docs/screenshots/09-skill-creator.png +0 -0
- package/docs/screenshots/10-data-chart.png +0 -0
- package/docs/shared-browser.svg +102 -0
- package/docs/system-prompt.md +113 -0
- package/docs/terminal-flow.svg +69 -0
- package/examples/helm/README.md +20 -0
- package/examples/helm/standalone/values.yaml +49 -0
- package/examples/helm/with-open-webui/README.md +99 -0
- package/examples/helm/with-open-webui/values-computer-use.yaml +32 -0
- package/examples/helm/with-open-webui/values-open-webui.yaml +67 -0
- package/fonts/NotoEmoji-Regular.ttf +0 -0
- package/helm/computer-use-server/.helmignore +17 -0
- package/helm/computer-use-server/Chart.yaml +32 -0
- package/helm/computer-use-server/README.md +211 -0
- package/helm/computer-use-server/templates/NOTES.txt +66 -0
- package/helm/computer-use-server/templates/_helpers.tpl +115 -0
- package/helm/computer-use-server/templates/configmap-dind-init.yaml +82 -0
- package/helm/computer-use-server/templates/configmap.yaml +18 -0
- package/helm/computer-use-server/templates/deployment.yaml +248 -0
- package/helm/computer-use-server/templates/ingress.yaml +38 -0
- package/helm/computer-use-server/templates/networkpolicy.yaml +50 -0
- package/helm/computer-use-server/templates/pdb.yaml +16 -0
- package/helm/computer-use-server/templates/pvc-data.yaml +20 -0
- package/helm/computer-use-server/templates/pvc-skills-cache.yaml +20 -0
- package/helm/computer-use-server/templates/pvc-user-data.yaml +20 -0
- package/helm/computer-use-server/templates/pvc-var-lib-docker.yaml +27 -0
- package/helm/computer-use-server/templates/secret.yaml +23 -0
- package/helm/computer-use-server/templates/service.yaml +22 -0
- package/helm/computer-use-server/templates/serviceaccount.yaml +15 -0
- package/helm/computer-use-server/templates/tests/test-health.yaml +23 -0
- package/helm/computer-use-server/values.schema.json +183 -0
- package/helm/computer-use-server/values.yaml +297 -0
- package/lychee.toml +36 -0
- package/openwebui/Dockerfile +52 -0
- package/openwebui/README.md +38 -0
- package/openwebui/functions/README.md +48 -0
- package/openwebui/functions/computer_link_filter.py +487 -0
- package/openwebui/init.sh +305 -0
- package/openwebui/patches/README.md +44 -0
- package/openwebui/patches/fix_artifacts_auto_show.py +441 -0
- package/openwebui/patches/fix_attached_files_position.py +87 -0
- package/openwebui/patches/fix_large_tool_args.py +156 -0
- package/openwebui/patches/fix_large_tool_results.py +289 -0
- package/openwebui/patches/fix_preview_url_detection.py +230 -0
- package/openwebui/patches/fix_skip_embedding_chat_files.py +229 -0
- package/openwebui/patches/fix_skip_rag_files_native_fc.py +100 -0
- package/openwebui/patches/fix_tool_loop_errors.py +510 -0
- package/package.json +39 -0
- package/requirements.txt +112 -0
- package/scripts/check-config.sh +141 -0
- package/scripts/docs-lint/ai-slop-detector.sh +202 -0
- package/scripts/docs-lint/architecture-tree-whitelist.sh +131 -0
- package/scripts/docs-lint/ascii-diagram-detector.sh +58 -0
- package/scripts/docs-lint/front-matter-validator.sh +97 -0
- package/scripts/docs-lint/gitignored-ref-detector.sh +122 -0
- package/scripts/docs-lint/identity-email-detector.sh +48 -0
- package/scripts/docs-lint/test-linters.sh +354 -0
- package/scripts/docs-lint/wc-budget.sh +61 -0
- package/scripts/githooks/pre-push +75 -0
- package/server.json +13 -0
- package/settings-wrapper/Dockerfile +9 -0
- package/settings-wrapper/README.md +119 -0
- package/settings-wrapper/app.py +113 -0
- package/settings-wrapper/requirements.txt +2 -0
- package/settings-wrapper/skills.json +25 -0
- package/skills/README.md +46 -0
- package/skills/examples/algorithmic-art/SKILL.md +405 -0
- package/skills/examples/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/examples/algorithmic-art/templates/viewer.html +601 -0
- package/skills/examples/artifacts-builder/SKILL.md +74 -0
- package/skills/examples/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/examples/artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/examples/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/examples/canvas-design/LICENSE.txt +202 -0
- package/skills/examples/canvas-design/SKILL.md +130 -0
- package/skills/examples/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/examples/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/examples/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/examples/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/examples/copy-editing/SKILL.md +447 -0
- package/skills/examples/copy-editing/evals/evals.json +89 -0
- package/skills/examples/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/examples/internal-comms/LICENSE.txt +202 -0
- package/skills/examples/internal-comms/SKILL.md +32 -0
- package/skills/examples/internal-comms/examples/3p-updates.md +47 -0
- package/skills/examples/internal-comms/examples/company-newsletter.md +65 -0
- package/skills/examples/internal-comms/examples/faq-answers.md +30 -0
- package/skills/examples/internal-comms/examples/general-comms.md +16 -0
- package/skills/examples/mcp-builder/SKILL.md +328 -0
- package/skills/examples/mcp-builder/reference/evaluation.md +602 -0
- package/skills/examples/mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/examples/mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/examples/mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/examples/mcp-builder/scripts/connections.py +151 -0
- package/skills/examples/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/examples/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/examples/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/examples/product-marketing-context/SKILL.md +241 -0
- package/skills/examples/product-marketing-context/evals/evals.json +85 -0
- package/skills/examples/single-cell-rna-qc/SKILL.md +175 -0
- package/skills/examples/single-cell-rna-qc/references/scverse_qc_guidelines.md +186 -0
- package/skills/examples/single-cell-rna-qc/scripts/qc_analysis.py +232 -0
- package/skills/examples/single-cell-rna-qc/scripts/qc_core.py +233 -0
- package/skills/examples/single-cell-rna-qc/scripts/qc_plotting.py +235 -0
- package/skills/examples/skill-creator/SKILL.md +355 -0
- package/skills/examples/skill-creator/references/output-patterns.md +82 -0
- package/skills/examples/skill-creator/references/workflows.md +28 -0
- package/skills/examples/skill-creator/scripts/init_skill.py +303 -0
- package/skills/examples/skill-creator/scripts/package_skill.py +110 -0
- package/skills/examples/skill-creator/scripts/quick_validate.py +95 -0
- package/skills/examples/slack-gif-creator/SKILL.md +254 -0
- package/skills/examples/slack-gif-creator/core/easing.py +234 -0
- package/skills/examples/slack-gif-creator/core/frame_composer.py +176 -0
- package/skills/examples/slack-gif-creator/core/gif_builder.py +269 -0
- package/skills/examples/slack-gif-creator/core/validators.py +136 -0
- package/skills/examples/slack-gif-creator/requirements.txt +4 -0
- package/skills/examples/social-content/SKILL.md +278 -0
- package/skills/examples/social-content/evals/evals.json +92 -0
- package/skills/examples/social-content/references/platforms.md +170 -0
- package/skills/examples/social-content/references/post-templates.md +177 -0
- package/skills/examples/social-content/references/reverse-engineering.md +195 -0
- package/skills/examples/theme-factory/SKILL.md +59 -0
- package/skills/examples/theme-factory/theme-showcase.pdf +0 -0
- package/skills/examples/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/examples/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/examples/theme-factory/themes/desert-rose.md +19 -0
- package/skills/examples/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/examples/theme-factory/themes/golden-hour.md +19 -0
- package/skills/examples/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/examples/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/examples/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/examples/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/examples/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/examples/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/examples/web-artifacts-builder/SKILL.md +74 -0
- package/skills/examples/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/examples/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/examples/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/examples/writing-skills/SKILL.md +655 -0
- package/skills/examples/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/examples/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/examples/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/examples/writing-skills/persuasion-principles.md +187 -0
- package/skills/examples/writing-skills/render-graphs.js +168 -0
- package/skills/examples/writing-skills/testing-skills-with-subagents.md +384 -0
- package/skills/public/describe-image/SKILL.md +105 -0
- package/skills/public/describe-image/scripts/describe.py +389 -0
- package/skills/public/doc-coauthoring/SKILL.md +375 -0
- package/skills/public/docx/LICENSE.txt +30 -0
- package/skills/public/docx/SKILL.md +199 -0
- package/skills/public/docx/docx-js.md +350 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/public/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/public/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/public/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/public/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/public/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/public/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/public/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/public/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/public/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/public/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/public/docx/ooxml/scripts/pack.py +159 -0
- package/skills/public/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/public/docx/ooxml/scripts/validate.py +69 -0
- package/skills/public/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/public/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/public/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/public/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/public/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/public/docx/ooxml.md +632 -0
- package/skills/public/docx/scripts/__init__.py +1 -0
- package/skills/public/docx/scripts/document.py +1292 -0
- package/skills/public/docx/scripts/templates/comments.xml +3 -0
- package/skills/public/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/public/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/public/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/public/docx/scripts/templates/people.xml +3 -0
- package/skills/public/docx/scripts/utilities.py +374 -0
- package/skills/public/file-reading/LICENSE.txt +30 -0
- package/skills/public/file-reading/SKILL.md +350 -0
- package/skills/public/frontend-design/LICENSE.txt +177 -0
- package/skills/public/frontend-design/SKILL.md +42 -0
- package/skills/public/gitlab-explorer/SKILL.md +174 -0
- package/skills/public/gitlab-explorer/references/git-commands.md +323 -0
- package/skills/public/gitlab-explorer/references/glab-commands.md +282 -0
- package/skills/public/gitlab-explorer/scripts/check_gitlab_auth.sh +109 -0
- package/skills/public/pdf/FORMS.md +205 -0
- package/skills/public/pdf/REFERENCE.md +612 -0
- package/skills/public/pdf/SKILL.md +364 -0
- package/skills/public/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/public/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/public/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/public/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/public/pdf/scripts/create_validation_image.py +41 -0
- package/skills/public/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/public/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/public/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/public/pdf-reading/LICENSE.txt +30 -0
- package/skills/public/pdf-reading/REFERENCE.md +196 -0
- package/skills/public/pdf-reading/SKILL.md +305 -0
- package/skills/public/playwright-cli/SKILL.md +278 -0
- package/skills/public/playwright-cli/references/request-mocking.md +87 -0
- package/skills/public/playwright-cli/references/running-code.md +232 -0
- package/skills/public/playwright-cli/references/session-management.md +169 -0
- package/skills/public/playwright-cli/references/storage-state.md +275 -0
- package/skills/public/playwright-cli/references/test-generation.md +88 -0
- package/skills/public/playwright-cli/references/tracing.md +139 -0
- package/skills/public/playwright-cli/references/video-recording.md +43 -0
- package/skills/public/pptx/LICENSE.txt +30 -0
- package/skills/public/pptx/SKILL.md +484 -0
- package/skills/public/pptx/css.md +335 -0
- package/skills/public/pptx/html2pptx.md +893 -0
- package/skills/public/pptx/html2pptx.tgz +0 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/public/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/public/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/public/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/public/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/public/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/public/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/public/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/public/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/public/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/public/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/public/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/public/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/public/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/public/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/public/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/public/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/public/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/public/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/public/pptx/ooxml.md +427 -0
- package/skills/public/pptx/scripts/inventory.py +1020 -0
- package/skills/public/pptx/scripts/rearrange.py +231 -0
- package/skills/public/pptx/scripts/replace.py +385 -0
- package/skills/public/pptx/scripts/thumbnail.py +450 -0
- package/skills/public/skill-creator/SKILL.md +356 -0
- package/skills/public/skill-creator/references/output-patterns.md +82 -0
- package/skills/public/skill-creator/references/workflows.md +28 -0
- package/skills/public/skill-creator/scripts/init_skill.py +303 -0
- package/skills/public/skill-creator/scripts/package_skill.py +110 -0
- package/skills/public/skill-creator/scripts/quick_validate.py +95 -0
- package/skills/public/sub-agent/SKILL.md +186 -0
- package/skills/public/sub-agent/references/security-review.md +153 -0
- package/skills/public/sub-agent/references/usage.md +207 -0
- package/skills/public/sub-agent/scripts/list_subagent_models.sh +22 -0
- package/skills/public/test-driven-development/SKILL.md +371 -0
- package/skills/public/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/public/webapp-testing/LICENSE.txt +202 -0
- package/skills/public/webapp-testing/SKILL.md +96 -0
- package/skills/public/webapp-testing/examples/console_logging.py +35 -0
- package/skills/public/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/public/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/public/webapp-testing/scripts/with_server.py +106 -0
- package/skills/public/xlsx/LICENSE.txt +30 -0
- package/skills/public/xlsx/SKILL.md +316 -0
- package/skills/public/xlsx/preview_data.py +93 -0
- package/skills/public/xlsx/recalc.py +178 -0
- package/tests/README.md +42 -0
- package/tests/fixtures/cli/claude_v0.9.2.0_argv.json +46 -0
- package/tests/fixtures/cli/claude_v0.9.2.0_stdout.json +32 -0
- package/tests/fixtures/cli/codex_run.jsonl +4 -0
- package/tests/fixtures/cli/opencode_run.jsonl +6 -0
- package/tests/integration/README.md +56 -0
- package/tests/integration/conftest.py +280 -0
- package/tests/integration/pytest.ini +13 -0
- package/tests/integration/test_mcp_auth.py +85 -0
- package/tests/integration/test_mcp_tools.py +101 -0
- package/tests/integration/test_workspace_lifecycle.py +125 -0
- package/tests/orchestrator/mock_llm_server.py +343 -0
- package/tests/orchestrator/test_cli_adapters.py +566 -0
- package/tests/orchestrator/test_cli_adapters_live.py +527 -0
- package/tests/orchestrator/test_cli_runtime.py +451 -0
- package/tests/orchestrator/test_docker_manager.py +302 -0
- package/tests/orchestrator/test_dynamic_instructions.py +69 -0
- package/tests/orchestrator/test_mcp_resources.py +140 -0
- package/tests/orchestrator/test_mcp_tools.py +224 -0
- package/tests/orchestrator/test_passthrough_isolation.py +201 -0
- package/tests/orchestrator/test_readme_in_container.py +76 -0
- package/tests/orchestrator/test_render_cache.py +84 -0
- package/tests/orchestrator/test_runtime_cli_endpoint.py +108 -0
- package/tests/orchestrator/test_single_user_mode.py +212 -0
- package/tests/orchestrator/test_startup_warnings.py +123 -0
- package/tests/orchestrator/test_sub_agent_dispatch.py +327 -0
- package/tests/orchestrator/test_subagent_claude_compat.py +367 -0
- package/tests/orchestrator/test_system_prompt_endpoint.py +191 -0
- package/tests/orchestrator/test_tool_descriptions.py +52 -0
- package/tests/orchestrator/test_view_image.py +201 -0
- package/tests/patches/conftest.py +30 -0
- package/tests/patches/fixtures/__init__.py +10 -0
- package/tests/patches/fixtures/middleware_v0.9.1.py +5057 -0
- package/tests/patches/fixtures/middleware_v0.9.2.py +5120 -0
- package/tests/patches/fixtures/retrieval_v0.9.1.py +2684 -0
- package/tests/patches/fixtures/retrieval_v0.9.2.py +2700 -0
- package/tests/patches/test_fix_attached_files_position.py +118 -0
- package/tests/patches/test_fix_large_tool_args.py +130 -0
- package/tests/patches/test_fix_large_tool_results.py +531 -0
- package/tests/patches/test_fix_skip_embedding_chat_files.py +160 -0
- package/tests/patches/test_fix_skip_rag_files_native_fc.py +120 -0
- package/tests/patches/test_fix_tool_loop_errors.py +128 -0
- package/tests/security/test_path_traversal_app.py +132 -0
- package/tests/security/test_path_traversal_docker.py +36 -0
- package/tests/security/test_path_traversal_settings.py +87 -0
- package/tests/security/test_safe_path_util.py +166 -0
- package/tests/security/test_xss_preview.py +46 -0
- package/tests/test-default-model-resolution.py +136 -0
- package/tests/test-docker-image.sh +358 -0
- package/tests/test-list-subagent-models.sh +421 -0
- package/tests/test-mcp-endpoint-live.sh +92 -0
- package/tests/test-mcp-native-surface.sh +213 -0
- package/tests/test-no-cyrillic.sh +135 -0
- package/tests/test-opencode-error-mapping.py +130 -0
- package/tests/test-pr88-skills.sh +305 -0
- package/tests/test-project-structure.sh +202 -0
- package/tests/test-single-user-mode.sh +269 -0
- package/tests/test-skill-no-hardcoded-models.sh +65 -0
- package/tests/test-subagent-cli-surface.py +137 -0
- package/tests/test-subagent-runtime.sh +109 -0
- package/tests/test_codex_toml_converter.py +204 -0
- package/tests/test_default_resolver_no_legacy_global.py +159 -0
- package/tests/test_filter.py +648 -0
- package/tests/test_init_sh_unchanged.sh +49 -0
- package/tests/test_opencode_alias_map_drop.py +144 -0
- package/tests/test_requirements.py +91 -0
- package/tests/test_subagent_docstring.py +193 -0
- package/tests/test_tools.py +34 -0
- package/vendor/extract-text/README.md +46 -0
- package/vendor/extract-text/extract-text +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$comment": "SPDX-License-Identifier: FSL-1.1-Apache-2.0 — Copyright (c) 2025 Open Computer Use Contributors",
|
|
4
|
+
"title": "computer-use-server Helm values",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": ["image", "orchestrator", "dind", "secrets", "persistence", "service"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"image": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"required": ["repository"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"repository": { "type": "string", "minLength": 1 },
|
|
14
|
+
"tag": { "type": "string" },
|
|
15
|
+
"pullPolicy": { "type": "string", "enum": ["Always", "IfNotPresent", "Never"] }
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"workspaceImage": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"properties": {
|
|
21
|
+
"repository": { "type": "string" },
|
|
22
|
+
"tag": { "type": "string" }
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"orchestrator": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"required": ["replicas", "env"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"runtimeClassName": { "type": "string" },
|
|
30
|
+
"replicas": { "type": "integer", "const": 1, "$comment": "Multi-replica is unsupported — orchestrator owns the inner dockerd and RWO PVCs." },
|
|
31
|
+
"env": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"required": ["PUBLIC_BASE_URL"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"PUBLIC_BASE_URL": { "type": "string", "minLength": 1, "$comment": "Browser-reachable URL of the orchestrator. Empty value breaks file preview links." }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"dind": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"required": ["image"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"image": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"required": ["repository", "tag"],
|
|
47
|
+
"properties": {
|
|
48
|
+
"repository": { "type": "string" },
|
|
49
|
+
"tag": { "type": "string" }
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"storageDriver": { "type": "string" },
|
|
53
|
+
"privileged": {
|
|
54
|
+
"type": ["boolean", "null"],
|
|
55
|
+
"$comment": "null => privileged auto-derived from runtimeClassName (legacy). Set true for Kata, false to force unprivileged."
|
|
56
|
+
},
|
|
57
|
+
"kataInit": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"properties": {
|
|
60
|
+
"enabled": { "type": "boolean", "$comment": "Enables the chart-managed Kata-guest entrypoint wrapper. Pair with a Kata runtimeClassName and dind.privileged=true." },
|
|
61
|
+
"extraPackages": { "type": "array", "items": { "type": "string" } }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"cleanup": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"properties": {
|
|
69
|
+
"enabled": { "type": "boolean" },
|
|
70
|
+
"containerMaxAgeHours": { "type": "integer", "minimum": 1 },
|
|
71
|
+
"dataMaxAgeDays": { "type": "integer", "minimum": 1 }
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"secrets": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"$comment": "Either secrets.create=true with mcpApiKey, or secrets.existingSecret must be set.",
|
|
77
|
+
"oneOf": [
|
|
78
|
+
{
|
|
79
|
+
"properties": {
|
|
80
|
+
"create": { "const": true },
|
|
81
|
+
"mcpApiKey": { "type": "string", "minLength": 1 }
|
|
82
|
+
},
|
|
83
|
+
"required": ["create", "mcpApiKey"]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"properties": {
|
|
87
|
+
"existingSecret": { "type": "string", "minLength": 1 }
|
|
88
|
+
},
|
|
89
|
+
"required": ["existingSecret"]
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
"persistence": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"required": ["userData", "data", "skillsCache", "varLibDocker"],
|
|
96
|
+
"properties": {
|
|
97
|
+
"userData": { "$ref": "#/$defs/pvcSpec" },
|
|
98
|
+
"data": { "$ref": "#/$defs/pvcSpec" },
|
|
99
|
+
"skillsCache": { "$ref": "#/$defs/pvcSpec" },
|
|
100
|
+
"varLibDocker": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"required": ["sizeLimit"],
|
|
103
|
+
"properties": {
|
|
104
|
+
"sizeLimit": { "type": "string" },
|
|
105
|
+
"persistentVolume": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"$comment": "Block-mode PVC for /var/lib/docker (the Kata default). Disable only for the runc fallback.",
|
|
108
|
+
"properties": {
|
|
109
|
+
"enabled": { "type": "boolean" },
|
|
110
|
+
"size": { "type": "string" },
|
|
111
|
+
"storageClass": { "type": "string" },
|
|
112
|
+
"existingClaim": { "type": "string" }
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"service": {
|
|
120
|
+
"type": "object",
|
|
121
|
+
"required": ["type", "port"],
|
|
122
|
+
"properties": {
|
|
123
|
+
"type": { "type": "string", "enum": ["ClusterIP", "NodePort", "LoadBalancer"] },
|
|
124
|
+
"port": { "type": "integer", "minimum": 1, "maximum": 65535 }
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"ingress": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"properties": {
|
|
130
|
+
"enabled": { "type": "boolean" }
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"postgresql": false
|
|
134
|
+
},
|
|
135
|
+
"allOf": [
|
|
136
|
+
{
|
|
137
|
+
"$comment": "When a Kata RuntimeClass is used, the dind container must run privileged and the kata init wrapper must stay enabled.",
|
|
138
|
+
"if": {
|
|
139
|
+
"properties": {
|
|
140
|
+
"orchestrator": {
|
|
141
|
+
"properties": {
|
|
142
|
+
"runtimeClassName": { "type": "string", "pattern": "^kata" }
|
|
143
|
+
},
|
|
144
|
+
"required": ["runtimeClassName"]
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"required": ["orchestrator"]
|
|
148
|
+
},
|
|
149
|
+
"then": {
|
|
150
|
+
"properties": {
|
|
151
|
+
"dind": {
|
|
152
|
+
"properties": {
|
|
153
|
+
"privileged": {
|
|
154
|
+
"not": { "const": false },
|
|
155
|
+
"$comment": "Kata needs a privileged dind container (caps confined to the microVM)."
|
|
156
|
+
},
|
|
157
|
+
"kataInit": {
|
|
158
|
+
"properties": {
|
|
159
|
+
"enabled": {
|
|
160
|
+
"not": { "const": false },
|
|
161
|
+
"$comment": "The Kata guest init wrapper is required under a Kata runtime."
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"$defs": {
|
|
172
|
+
"pvcSpec": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"properties": {
|
|
175
|
+
"enabled": { "type": "boolean" },
|
|
176
|
+
"size": { "type": "string" },
|
|
177
|
+
"storageClass": { "type": "string" },
|
|
178
|
+
"accessMode": { "type": "string", "enum": ["ReadWriteOnce", "ReadWriteOncePod"], "$comment": "Chart is single-replica by design (replicas: 1, owns inner dockerd). RWX/ROX would imply multi-replica which is unsupported." },
|
|
179
|
+
"existingClaim": { "type": "string" }
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
+
# Copyright (c) 2025 Open Computer Use Contributors
|
|
3
|
+
#
|
|
4
|
+
# Default values for computer-use-server.
|
|
5
|
+
# See README.md for prerequisites and the full knob reference.
|
|
6
|
+
# The inner Docker daemon runs under Kata Containers (microVM isolation) — the
|
|
7
|
+
# supported DinD runtime. Setup guide: docs/kata-runtime.md.
|
|
8
|
+
|
|
9
|
+
# -- Override the chart name. Useful when running multiple releases in one namespace.
|
|
10
|
+
nameOverride: ""
|
|
11
|
+
# -- Override the fully-qualified app name (release-name + chart name by default).
|
|
12
|
+
fullnameOverride: ""
|
|
13
|
+
|
|
14
|
+
image:
|
|
15
|
+
# -- Orchestrator image (the FastAPI server in computer-use-server/).
|
|
16
|
+
repository: ghcr.io/wide-moat/open-computer-use-server
|
|
17
|
+
# -- Defaults to .Chart.AppVersion when empty.
|
|
18
|
+
tag: ""
|
|
19
|
+
pullPolicy: IfNotPresent
|
|
20
|
+
|
|
21
|
+
# Workspace image — the AI sandbox that the orchestrator spawns via the inner Docker.
|
|
22
|
+
# This image is not pulled by Kubernetes directly; it is pulled by the inner dockerd
|
|
23
|
+
# at first chat creation. The repo:tag is passed to the orchestrator as DOCKER_IMAGE.
|
|
24
|
+
workspaceImage:
|
|
25
|
+
repository: ghcr.io/wide-moat/open-computer-use
|
|
26
|
+
tag: ""
|
|
27
|
+
|
|
28
|
+
# -- imagePullSecrets are applied to the Pod for both orchestrator and dind images.
|
|
29
|
+
imagePullSecrets: []
|
|
30
|
+
|
|
31
|
+
orchestrator:
|
|
32
|
+
# runtimeClassName MUST match a RuntimeClass that already exists in the cluster.
|
|
33
|
+
# Values:
|
|
34
|
+
# kata-qemu Default, and the recommended runtime. Kata Containers —
|
|
35
|
+
# install kata-deploy first (docs/kata-runtime.md). Works on
|
|
36
|
+
# containerd 2.x and gives hypervisor (microVM) isolation. The
|
|
37
|
+
# other dind.* / persistence defaults below assume this runtime.
|
|
38
|
+
# "" (empty) Stock runc + privileged dind. Functional, but INSECURE — the
|
|
39
|
+
# inner daemon shares the host kernel and a container escape is
|
|
40
|
+
# trivial. Local-testing escape hatch only; do not run it in
|
|
41
|
+
# production. Also set dind.kataInit.enabled=false and
|
|
42
|
+
# persistence.varLibDocker.persistentVolume.enabled=false.
|
|
43
|
+
runtimeClassName: kata-qemu
|
|
44
|
+
|
|
45
|
+
# Single replica is the only supported topology — the pod owns the inner dockerd
|
|
46
|
+
# and three RWO PVCs. Scaling out requires the K8sBackend rework (out of scope).
|
|
47
|
+
replicas: 1
|
|
48
|
+
|
|
49
|
+
resources:
|
|
50
|
+
requests:
|
|
51
|
+
cpu: 500m
|
|
52
|
+
memory: 1Gi
|
|
53
|
+
limits:
|
|
54
|
+
cpu: "4"
|
|
55
|
+
memory: 8Gi
|
|
56
|
+
|
|
57
|
+
# Non-secret env vars passed to the orchestrator. Secret vars live under .secrets.
|
|
58
|
+
env:
|
|
59
|
+
# REQUIRED. Browser-reachable URL of this service (no trailing slash).
|
|
60
|
+
# Baked into the system prompt so the model writes correct preview links and
|
|
61
|
+
# returned in the X-Public-Base-URL header so the Open WebUI filter agrees.
|
|
62
|
+
PUBLIC_BASE_URL: ""
|
|
63
|
+
|
|
64
|
+
COMMAND_TIMEOUT: "120"
|
|
65
|
+
SUB_AGENT_TIMEOUT: "3600"
|
|
66
|
+
CONTAINER_MEM_LIMIT: "2g"
|
|
67
|
+
CONTAINER_CPU_LIMIT: "1.0"
|
|
68
|
+
CONTAINER_IDLE_TIMEOUT: "600"
|
|
69
|
+
SINGLE_USER_MODE: "false"
|
|
70
|
+
|
|
71
|
+
# Path the inner dockerd creates owui-chat-* workspaces from. Must match the
|
|
72
|
+
# USER_DATA_BASE_PATH and BASE_DATA_DIR values from docker-compose.yml.
|
|
73
|
+
USER_DATA_BASE_PATH: /tmp/computer-use-data
|
|
74
|
+
BASE_DATA_DIR: /tmp/computer-use-data
|
|
75
|
+
|
|
76
|
+
# Talks to the inner dockerd over a unix socket shared via emptyDir.
|
|
77
|
+
DOCKER_SOCKET: unix:///var/run/docker.sock
|
|
78
|
+
|
|
79
|
+
# Workspace image is set automatically from .workspaceImage. Override here if needed.
|
|
80
|
+
# DOCKER_IMAGE: ""
|
|
81
|
+
|
|
82
|
+
# Operator escape hatch — appended to the container as-is.
|
|
83
|
+
# Example:
|
|
84
|
+
# extraEnv:
|
|
85
|
+
# - name: ANTHROPIC_BASE_URL
|
|
86
|
+
# value: https://api.anthropic.com
|
|
87
|
+
extraEnv: []
|
|
88
|
+
|
|
89
|
+
# Add envFrom entries (existing ConfigMaps / Secrets) to the orchestrator container.
|
|
90
|
+
# Example:
|
|
91
|
+
# envFrom:
|
|
92
|
+
# - secretRef:
|
|
93
|
+
# name: my-llm-creds
|
|
94
|
+
envFrom: []
|
|
95
|
+
|
|
96
|
+
# Liveness/readiness — orchestrator exposes /health on 8081.
|
|
97
|
+
probes:
|
|
98
|
+
liveness:
|
|
99
|
+
enabled: true
|
|
100
|
+
initialDelaySeconds: 30
|
|
101
|
+
periodSeconds: 30
|
|
102
|
+
timeoutSeconds: 10
|
|
103
|
+
failureThreshold: 3
|
|
104
|
+
readiness:
|
|
105
|
+
enabled: true
|
|
106
|
+
initialDelaySeconds: 10
|
|
107
|
+
periodSeconds: 10
|
|
108
|
+
timeoutSeconds: 5
|
|
109
|
+
failureThreshold: 3
|
|
110
|
+
|
|
111
|
+
securityContext:
|
|
112
|
+
runAsNonRoot: false # the orchestrator image runs as root inside the pod
|
|
113
|
+
allowPrivilegeEscalation: true
|
|
114
|
+
# The orchestrator does NOT need privileged. Only the dind container does.
|
|
115
|
+
|
|
116
|
+
nodeSelector: {}
|
|
117
|
+
tolerations: []
|
|
118
|
+
affinity: {}
|
|
119
|
+
|
|
120
|
+
dind:
|
|
121
|
+
# Image for the inner Docker daemon. Must accept the standard dockerd flags.
|
|
122
|
+
image:
|
|
123
|
+
repository: docker
|
|
124
|
+
tag: "27-dind"
|
|
125
|
+
pullPolicy: IfNotPresent
|
|
126
|
+
resources:
|
|
127
|
+
requests:
|
|
128
|
+
cpu: 500m
|
|
129
|
+
memory: 1Gi
|
|
130
|
+
limits:
|
|
131
|
+
cpu: "4"
|
|
132
|
+
memory: 8Gi
|
|
133
|
+
# storage driver passed to dockerd. The Kata default is fuse-overlayfs —
|
|
134
|
+
# overlay2 FAILS on the Kata virtio-fs guest root
|
|
135
|
+
# (kata-containers/kata-containers#1888); dind.kataInit installs fuse-overlayfs.
|
|
136
|
+
# If you run the insecure runc fallback, set this to overlay2.
|
|
137
|
+
storageDriver: fuse-overlayfs
|
|
138
|
+
|
|
139
|
+
# -- Explicit override of whether the dind container runs privileged.
|
|
140
|
+
# true (default) => REQUIRED for Kata: dockerd needs CAP_NET_ADMIN/CAP_NET_RAW
|
|
141
|
+
# to build the iptables NAT chain, otherwise it fails with
|
|
142
|
+
# "iptables: Could not fetch rule set generation id: Permission denied".
|
|
143
|
+
# privileged=true is SAFE under Kata — the caps are confined to the microVM.
|
|
144
|
+
# false => force the dind container unprivileged.
|
|
145
|
+
# null => auto-derive from orchestrator.runtimeClassName (empty => true,
|
|
146
|
+
# set => false). Only useful for the runc fallback.
|
|
147
|
+
privileged: true
|
|
148
|
+
|
|
149
|
+
# -- Kata-guest init wrapper. Runs a chart-managed entrypoint that, before
|
|
150
|
+
# exec'ing dockerd:
|
|
151
|
+
# (1) installs fuse-overlayfs (overlay2 fails on the Kata virtio-fs root)
|
|
152
|
+
# (2) mknod /dev/fuse (the Kata guest kernel has fuse but no device node)
|
|
153
|
+
# (3) if persistence.varLibDocker.persistentVolume is enabled — mkfs.ext4 +
|
|
154
|
+
# mounts the Block-mode PVC at /var/lib/docker
|
|
155
|
+
# (4) runs the cgroup-v2 PID-1 evacuation shim (docker-library/docker#308) so
|
|
156
|
+
# nested runc can enter cgroups inside the Kata guest
|
|
157
|
+
# Every step is idempotent and self-detecting. Set enabled=false only for the
|
|
158
|
+
# runc fallback. See docs/kata-runtime.md.
|
|
159
|
+
kataInit:
|
|
160
|
+
enabled: true
|
|
161
|
+
# extra apk packages installed at container start (idempotent, needs egress)
|
|
162
|
+
extraPackages: []
|
|
163
|
+
|
|
164
|
+
cleanup:
|
|
165
|
+
enabled: true
|
|
166
|
+
image:
|
|
167
|
+
# Built from ./cron in the repo. Publish to your registry and point here.
|
|
168
|
+
repository: ghcr.io/wide-moat/open-computer-use-cleanup
|
|
169
|
+
tag: ""
|
|
170
|
+
pullPolicy: IfNotPresent
|
|
171
|
+
containerMaxAgeHours: 24
|
|
172
|
+
dataMaxAgeDays: 7
|
|
173
|
+
resources:
|
|
174
|
+
requests:
|
|
175
|
+
cpu: 50m
|
|
176
|
+
memory: 64Mi
|
|
177
|
+
limits:
|
|
178
|
+
cpu: 500m
|
|
179
|
+
memory: 256Mi
|
|
180
|
+
|
|
181
|
+
secrets:
|
|
182
|
+
# When true, the chart renders a Secret from the values below. Convenient but
|
|
183
|
+
# bad for GitOps (values get committed). Prefer existingSecret in production.
|
|
184
|
+
create: true
|
|
185
|
+
|
|
186
|
+
# When set, ignored if .create is true. The chart adds this secret to envFrom on
|
|
187
|
+
# the orchestrator container. The secret must contain at least MCP_API_KEY.
|
|
188
|
+
existingSecret: ""
|
|
189
|
+
|
|
190
|
+
# REQUIRED unless using existingSecret. Bearer token for /mcp endpoint.
|
|
191
|
+
mcpApiKey: ""
|
|
192
|
+
|
|
193
|
+
visionApiKey: ""
|
|
194
|
+
anthropicAuthToken: ""
|
|
195
|
+
openaiApiKey: ""
|
|
196
|
+
|
|
197
|
+
persistence:
|
|
198
|
+
# /tmp/computer-use-data — per-chat workspace data (uploads, outputs).
|
|
199
|
+
userData:
|
|
200
|
+
enabled: true
|
|
201
|
+
size: 20Gi
|
|
202
|
+
storageClass: ""
|
|
203
|
+
# Only ReadWriteOnce / ReadWriteOncePod are supported — chart is single-replica.
|
|
204
|
+
accessMode: ReadWriteOnce
|
|
205
|
+
existingClaim: ""
|
|
206
|
+
|
|
207
|
+
# /data — orchestrator long-lived state (mounted from compose volume `computer-use-data`).
|
|
208
|
+
data:
|
|
209
|
+
enabled: true
|
|
210
|
+
size: 5Gi
|
|
211
|
+
storageClass: ""
|
|
212
|
+
accessMode: ReadWriteOnce
|
|
213
|
+
existingClaim: ""
|
|
214
|
+
|
|
215
|
+
# /data/skills-cache — public skills cache used by skill_manager.
|
|
216
|
+
skillsCache:
|
|
217
|
+
enabled: true
|
|
218
|
+
size: 2Gi
|
|
219
|
+
storageClass: ""
|
|
220
|
+
accessMode: ReadWriteOnce
|
|
221
|
+
existingClaim: ""
|
|
222
|
+
|
|
223
|
+
# /var/lib/docker inside the dind container.
|
|
224
|
+
varLibDocker:
|
|
225
|
+
# sizeLimit applies to the emptyDir fallback (used when
|
|
226
|
+
# persistentVolume.enabled=false — i.e. only under the runc fallback).
|
|
227
|
+
sizeLimit: 50Gi
|
|
228
|
+
# -- Back /var/lib/docker with a Block-mode PVC (the Kata default).
|
|
229
|
+
# REQUIRED under Kata: the workspace image relies on security.capability
|
|
230
|
+
# xattrs, and the Kata virtio-fs root drops them (CVE-2021-20263), which
|
|
231
|
+
# breaks e.g. GStreamer binaries. A Block PVC arrives in the guest as a
|
|
232
|
+
# virtio-blk device; dind.kataInit formats it ext4, so xattrs are preserved.
|
|
233
|
+
# Set enabled=false only for the runc fallback. See docs/kata-runtime.md.
|
|
234
|
+
persistentVolume:
|
|
235
|
+
enabled: true
|
|
236
|
+
size: 50Gi
|
|
237
|
+
# Must reference a StorageClass that provisions Block volumes. Empty =>
|
|
238
|
+
# the cluster default StorageClass (which must be Block-capable).
|
|
239
|
+
storageClass: ""
|
|
240
|
+
# When set, the chart uses this claim instead of creating one.
|
|
241
|
+
existingClaim: ""
|
|
242
|
+
|
|
243
|
+
service:
|
|
244
|
+
type: ClusterIP
|
|
245
|
+
port: 8081
|
|
246
|
+
annotations: {}
|
|
247
|
+
|
|
248
|
+
ingress:
|
|
249
|
+
enabled: false
|
|
250
|
+
className: ""
|
|
251
|
+
annotations: {}
|
|
252
|
+
hosts:
|
|
253
|
+
- host: orchestrator.example.com
|
|
254
|
+
paths:
|
|
255
|
+
- path: /
|
|
256
|
+
pathType: Prefix
|
|
257
|
+
tls: []
|
|
258
|
+
# Example:
|
|
259
|
+
# tls:
|
|
260
|
+
# - hosts:
|
|
261
|
+
# - orchestrator.example.com
|
|
262
|
+
# secretName: orchestrator-tls
|
|
263
|
+
|
|
264
|
+
networkPolicy:
|
|
265
|
+
enabled: false
|
|
266
|
+
# Allow incoming traffic from these pod selectors (in addition to same-namespace).
|
|
267
|
+
ingressFrom: []
|
|
268
|
+
# Example:
|
|
269
|
+
# ingressFrom:
|
|
270
|
+
# - namespaceSelector:
|
|
271
|
+
# matchLabels:
|
|
272
|
+
# name: open-webui
|
|
273
|
+
|
|
274
|
+
# Extra egress rules appended to the chart's defaults (DNS + in-cluster + 0.0.0.0/0).
|
|
275
|
+
# Use this to add explicit allow rules — e.g. limit egress to a specific
|
|
276
|
+
# external host, or whitelist your cloud metadata service.
|
|
277
|
+
extraEgress: []
|
|
278
|
+
# Example:
|
|
279
|
+
# extraEgress:
|
|
280
|
+
# - to:
|
|
281
|
+
# - ipBlock:
|
|
282
|
+
# cidr: 169.254.169.254/32 # cloud metadata
|
|
283
|
+
# ports:
|
|
284
|
+
# - protocol: TCP
|
|
285
|
+
# port: 80
|
|
286
|
+
|
|
287
|
+
podDisruptionBudget:
|
|
288
|
+
enabled: false
|
|
289
|
+
minAvailable: 1
|
|
290
|
+
|
|
291
|
+
serviceAccount:
|
|
292
|
+
create: true
|
|
293
|
+
name: ""
|
|
294
|
+
annotations: {}
|
|
295
|
+
|
|
296
|
+
podAnnotations: {}
|
|
297
|
+
podLabels: {}
|
package/lychee.toml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
+
# Copyright (c) 2025 Open Computer Use Contributors
|
|
3
|
+
#
|
|
4
|
+
# lychee — broken link checker.
|
|
5
|
+
# Reference: https://lychee.cli.rs/usage/config/
|
|
6
|
+
#
|
|
7
|
+
# Inputs (which files/dirs to scan) are passed as positional CLI args by the
|
|
8
|
+
# workflow, not as a config-file key. This file only carries flags and
|
|
9
|
+
# exclusions.
|
|
10
|
+
|
|
11
|
+
# Skip these paths when expanding globs — legacy buffer (will be migrated)
|
|
12
|
+
# and common noisy directories.
|
|
13
|
+
exclude_path = [
|
|
14
|
+
"docs/future-architecture",
|
|
15
|
+
"node_modules",
|
|
16
|
+
".venv",
|
|
17
|
+
".planning",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
# Match the forward-reference rule: a relative path that doesn't resolve on
|
|
21
|
+
# disk is a broken link, period.
|
|
22
|
+
include_fragments = true
|
|
23
|
+
|
|
24
|
+
# Patterns to allow without HTTP checking (anchor-only refs, mailto, etc.).
|
|
25
|
+
exclude = [
|
|
26
|
+
'^mailto:',
|
|
27
|
+
'^tel:',
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
# External URLs are not what we're guarding against (forward-reference rule).
|
|
31
|
+
# Skip them to avoid CI failing on rate-limited or transiently-down upstreams.
|
|
32
|
+
exclude_all_private = false
|
|
33
|
+
offline = false
|
|
34
|
+
|
|
35
|
+
no_progress = true
|
|
36
|
+
verbose = "info"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
+
# Copyright (c) 2025 Open Computer Use Contributors
|
|
3
|
+
ARG OPENWEBUI_VERSION=0.9.5
|
|
4
|
+
FROM ghcr.io/open-webui/open-webui:${OPENWEBUI_VERSION}
|
|
5
|
+
|
|
6
|
+
# Copy all patches into the image
|
|
7
|
+
COPY patches/ /tmp/patches/
|
|
8
|
+
|
|
9
|
+
# Required: Auto-show artifacts panel when HTML code blocks are detected
|
|
10
|
+
RUN python3 /tmp/patches/fix_artifacts_auto_show.py
|
|
11
|
+
|
|
12
|
+
# Required: Error handling for tool loop — prevents UI hang on MCP/transport errors
|
|
13
|
+
RUN python3 /tmp/patches/fix_tool_loop_errors.py
|
|
14
|
+
|
|
15
|
+
# Required: Auto-detect file preview URLs in messages and show in artifacts panel
|
|
16
|
+
RUN python3 /tmp/patches/fix_preview_url_detection.py
|
|
17
|
+
|
|
18
|
+
# Optional: Truncate large MCP tool results to prevent context window exhaustion.
|
|
19
|
+
# Requires fix_tool_loop_errors.py to be applied first.
|
|
20
|
+
# Config: TOOL_RESULT_MAX_CHARS (default 50000), TOOL_RESULT_PREVIEW_CHARS (default 2000)
|
|
21
|
+
RUN python3 /tmp/patches/fix_large_tool_results.py
|
|
22
|
+
|
|
23
|
+
# Enabled backend patches:
|
|
24
|
+
#
|
|
25
|
+
# fix_large_tool_args: Truncates oversized tool call arguments in HTML attributes
|
|
26
|
+
# to prevent browser UI freeze on large tool outputs (>10KB).
|
|
27
|
+
RUN python3 /tmp/patches/fix_large_tool_args.py
|
|
28
|
+
#
|
|
29
|
+
# fix_attached_files_position: Moves file context to end of messages instead of
|
|
30
|
+
# prepend, improving prompt cache hit rates with large file attachments.
|
|
31
|
+
RUN python3 /tmp/patches/fix_attached_files_position.py
|
|
32
|
+
#
|
|
33
|
+
# fix_skip_embedding_chat_files: Skips expensive text extraction and embedding
|
|
34
|
+
# for large chat file uploads (>1MB), using knowledge base fallback instead.
|
|
35
|
+
RUN python3 /tmp/patches/fix_skip_embedding_chat_files.py
|
|
36
|
+
#
|
|
37
|
+
# fix_skip_rag_files_native_fc: Skips RAG pipeline for chat files when
|
|
38
|
+
# computer_use tool is enabled, avoiding unnecessary processing.
|
|
39
|
+
RUN python3 /tmp/patches/fix_skip_rag_files_native_fc.py
|
|
40
|
+
|
|
41
|
+
RUN rm -rf /tmp/patches/
|
|
42
|
+
|
|
43
|
+
# Copy Computer Use tool, function, and init script into the image
|
|
44
|
+
COPY tools/ /app/init/tools/
|
|
45
|
+
COPY functions/ /app/init/functions/
|
|
46
|
+
COPY init.sh /app/init/init.sh
|
|
47
|
+
RUN chmod +x /app/init/init.sh
|
|
48
|
+
|
|
49
|
+
# Wrap the original entrypoint to run init in the background after startup
|
|
50
|
+
RUN mv /app/backend/start.sh /app/backend/start-original.sh && \
|
|
51
|
+
printf '#!/bin/bash\n# Run init script in background (waits for Open WebUI to be ready)\n/app/init/init.sh &\n# Start original Open WebUI\nexec /app/backend/start-original.sh\n' > /app/backend/start.sh && \
|
|
52
|
+
chmod +x /app/backend/start.sh
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Open WebUI Integration
|
|
2
|
+
|
|
3
|
+
Everything needed to connect [Open WebUI](https://github.com/open-webui/open-webui) to [Open Computer Use](https://github.com/Wide-Moat/open-computer-use). Works with stock Open WebUI — no fork required.
|
|
4
|
+
|
|
5
|
+
> Just want to try it? [chat.yambr.com](https://chat.yambr.com) is a ready-to-use Open WebUI with Computer Use already wired in (GitHub/Google sign-in, models included). This directory is for embedding Computer Use into **your own** Open WebUI stack.
|
|
6
|
+
|
|
7
|
+
## Components
|
|
8
|
+
|
|
9
|
+
| # | Component | Type | Required | What it does |
|
|
10
|
+
|---|-----------|------|----------|-------------|
|
|
11
|
+
| 1 | [**tools/computer_use_tools.py**](tools/) | Tool | Yes | MCP client proxy — forwards `bash`, `create_file`, `str_replace`, `view`, `sub_agent` calls to the Computer Use Server |
|
|
12
|
+
| 2 | [**functions/computer_link_filter.py**](functions/) | Filter | Yes | Fetches the server-generated system prompt (skills list + file base URL embedded server-side) and the `X-Public-Base-URL` response header; decorates responses with preview/archive links |
|
|
13
|
+
| 3 | [**patches/**](patches/) | Build-time | Recommended | Quality-of-life fixes: auto-open file preview, truncate large tool args, skip unnecessary RAG processing |
|
|
14
|
+
|
|
15
|
+
**Tool + Filter = minimum working setup.** Patches improve UX but everything works without them.
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
**Automatic** (recommended): `docker-compose.webui.yml` builds a patched Open WebUI image and runs `init.sh` on first startup to install the tool + filter, configure valves, mark the **tool public-read** (`group:*` + `user:*` grants) and the **filter both active AND global** (two separate Open WebUI toggles), plus set `DEFAULT_MODEL_PARAMS = {function_calling: "native", stream_response: true}`.
|
|
20
|
+
|
|
21
|
+
**Manual**: Install tool and filter through Workspace UI, set Tool ID to `ai_computer_use`, toggle **Active** and **Global** on the filter (both switches), set tool access to **Public** (Share → Public). See [setup guide](../README.md#required-setup-when-embedding-open-webui-into-your-own-stack) for the full checklist and common silent-fail traps.
|
|
22
|
+
|
|
23
|
+
## Patches
|
|
24
|
+
|
|
25
|
+
Applied at Docker build time. All are idempotent and non-breaking. The 4 patches marked **Active** below are critical for user-visible UX — embedding Open WebUI with an upstream `ghcr.io/open-webui/open-webui` image (no build from this Dockerfile) silently disables them. See [../README.md#required-setup-when-embedding-open-webui-into-your-own-stack](../README.md#required-setup-when-embedding-open-webui-into-your-own-stack) for the full embedding checklist.
|
|
26
|
+
|
|
27
|
+
| Patch | Default | What it does | Without it |
|
|
28
|
+
|-------|---------|--------------|------------|
|
|
29
|
+
| `fix_artifacts_auto_show` | Active | Auto-opens preview panel for generated files | HTML/iframe renders as raw text in the chat body instead of the artifacts panel |
|
|
30
|
+
| `fix_preview_url_detection` | Active | Detects file URLs in messages and opens iframe preview | Preview iframe is never auto-inserted after file links |
|
|
31
|
+
| `fix_tool_loop_errors` | Active | Better error messages for tool call budget/transport errors | Raw exceptions instead of banners; `MCP call failed: Session terminated` appears unwrapped |
|
|
32
|
+
| `fix_large_tool_results` | Active | Truncates large MCP tool results (>50K chars) and optionally uploads them to the Computer Use server via `ORCHESTRATOR_URL` | `TOOL_RESULT_MAX_CHARS` stops truncating and the large-result upload path is a no-op (large outputs wreck the model context). `ORCHESTRATOR_URL` itself is unaffected — the tool and filter keep using it for MCP/system-prompt traffic. |
|
|
33
|
+
| `fix_large_tool_args` | Optional | Truncates huge tool call args (>10KB) to prevent browser freeze | Browser UI can freeze on "Executing [tool]..." with large str_replace payloads |
|
|
34
|
+
| `fix_attached_files_position` | Optional | Moves file context to end of message (better prompt caching) | Attaching a file invalidates the cached prefix of the message |
|
|
35
|
+
| `fix_skip_embedding_chat_files` | Optional | Skips embedding for large uploads (>1MB) | Large uploads block the chat for minutes on extraction/embedding |
|
|
36
|
+
| `fix_skip_rag_files_native_fc` | Optional | Skips RAG when `ai_computer_use` handles files directly | Extra RAG pipeline runs on every message even when unnecessary |
|
|
37
|
+
|
|
38
|
+
Built strictly for Open WebUI 0.9.5 (this image's first 3 version segments match its target Open WebUI base).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Computer Link Filter
|
|
2
|
+
|
|
3
|
+
**File**: `computer_link_filter.py` — required companion to `computer_use_tools.py`.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
| Phase | Action |
|
|
8
|
+
|-------|--------|
|
|
9
|
+
| **Inlet** (before LLM) | Injects system prompt: file server URL, `<available_skills>` XML (13 skills), output path mapping |
|
|
10
|
+
| **Outlet** (after LLM) | Adds "View file" link + "Download all as archive" button when response contains file URLs |
|
|
11
|
+
|
|
12
|
+
Without this filter, the model won't know about skills or how to generate file download links.
|
|
13
|
+
|
|
14
|
+
## Valves
|
|
15
|
+
|
|
16
|
+
| Valve | Default | Description |
|
|
17
|
+
|-------|---------|-------------|
|
|
18
|
+
| `ORCHESTRATOR_URL` | `http://computer-use-server:8081` | Internal URL of Computer Use server (server→server fetch of `/system-prompt`). Not browser-facing — the public URL is owned by the server. |
|
|
19
|
+
| `PREVIEW_MODE` | `"button"` | Where the preview link appears: `button` (markdown link — the frontend patch promotes it to an inline artifact) \| `off` |
|
|
20
|
+
| `ARCHIVE_BUTTON` | `"on"` | Add "Download archive" button to responses: `on` \| `off` |
|
|
21
|
+
| `INJECT_SYSTEM_PROMPT` | `true` | Inject skills and file URL into system prompt |
|
|
22
|
+
|
|
23
|
+
See [`docs/openwebui-filter.md`](../../docs/openwebui-filter.md#valves-reference) for the full Valves reference.
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
1. **Workspace > Functions** → Create → paste `computer_link_filter.py`
|
|
28
|
+
2. Enable globally (toggle in Functions list)
|
|
29
|
+
3. Tool `ai_computer_use` must be installed (filter reads its valves for internal URL)
|
|
30
|
+
|
|
31
|
+
Auto-configured by `docker-compose.webui.yml` via `init.sh`.
|
|
32
|
+
|
|
33
|
+
## How File Links Work
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
inlet() → Injects the server-baked /system-prompt text (the server substitutes its
|
|
37
|
+
own PUBLIC_BASE_URL into the {file_base_url} placeholder before returning it).
|
|
38
|
+
→ AI generates: [file.docx]({PUBLIC_BASE_URL}/files/{chat_id}/file.docx)
|
|
39
|
+
outlet() → Appends preview-button + archive-download markdown links.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The model receives the mapping `/mnt/user-data/outputs/` → `{PUBLIC_BASE_URL}/files/{chat_id}/` and generates correct HTTP links directly. The filter never sees the public URL as a Valve — the server is the single source of truth and delivers it to `outlet()` via the `X-Public-Base-URL` response header on `/system-prompt` (cached alongside the prompt).
|
|
43
|
+
|
|
44
|
+
## Related
|
|
45
|
+
|
|
46
|
+
- [tools/README.md](../tools/README.md) — MCP client tool
|
|
47
|
+
- [SKILLS.md](../../docs/SKILLS.md) — all available skills
|
|
48
|
+
- [Main README](../../README.md#open-webui-integration) — full setup guide
|