@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,240 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.open-computer-use.dev/exec/exec-channel.schema.json",
|
|
4
|
+
"$comment": "SPDX-License-Identifier: FSL-1.1-Apache-2.0. Copyright (c) 2025 Open Computer Use Contributors. Exec/PTY WebSocket control-frame envelope (Control API -> Session sandbox). One WebSocket per session; host-dialled, non-host peers rejected at accept (NFR-IC-03, NFR-SEC-43). Text frames carry the tagged-JSON control messages below; raw stdio travels as separate binary frames announced by the StdIo* control tags (raw bytes are not JSON, so they are described structurally here, not validated). Per RFC 6455 WebSocket; control tags are an OCU-defined union.",
|
|
5
|
+
|
|
6
|
+
"title": "ExecChannelMessage",
|
|
7
|
+
"description": "A single tagged-JSON control frame on the exec WebSocket. The discriminator is the sole top-level property name (an externally-tagged union). Binary stdio frames are out of band of this schema and follow a StdIo* announce frame.",
|
|
8
|
+
|
|
9
|
+
"$defs": {
|
|
10
|
+
"ProcessId": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"minLength": 1,
|
|
13
|
+
"maxLength": 256
|
|
14
|
+
},
|
|
15
|
+
"ContainerName": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1,
|
|
18
|
+
"maxLength": 256
|
|
19
|
+
},
|
|
20
|
+
"Signal": {
|
|
21
|
+
"$comment": "A signal is either a number (1..64) or a POSIX name; type/length/pattern bounded to strict-validate input (NFR-SEC-51). The discriminator is the message key, not this value's type.",
|
|
22
|
+
"oneOf": [
|
|
23
|
+
{ "type": "integer", "minimum": 1, "maximum": 64 },
|
|
24
|
+
{ "type": "string", "pattern": "^SIG[A-Z0-9]{1,12}$" }
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"ExitCode": {
|
|
28
|
+
"type": "integer",
|
|
29
|
+
"minimum": 0,
|
|
30
|
+
"maximum": 255
|
|
31
|
+
},
|
|
32
|
+
"BoundedReason": {
|
|
33
|
+
"$comment": "NFR-SEC-51: bounded error verbosity. Caller gets a stable reason code; message must not carry stack traces or internal topology. Length capped.",
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"properties": {
|
|
37
|
+
"reason_code": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"pattern": "^[A-Z][A-Z0-9_]{1,63}$"
|
|
40
|
+
},
|
|
41
|
+
"message": {
|
|
42
|
+
"$comment": "x-ocu-default: maxLength 256 is an NFR-SEC-51 default pending sign-off, not a source-pinned value; retunable per workload tier.",
|
|
43
|
+
"type": "string",
|
|
44
|
+
"maxLength": 256
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"required": ["reason_code"]
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
"CreateProcess": {
|
|
51
|
+
"$comment": "Spawn parameters. env-scrub and uid/gid drop are the no-creds-in-guest carriers; the schema records the fields, the sandbox enforces the scrub. The cmd/cwd/args-item maxLength 4096, args maxItems 1024, and env maxProperties 1024 are x-ocu-default bounds satisfying NFR-SEC-46 (a bound must exist) pending sign-off on the value; retunable per workload tier. The env-value maxLength 32768 matches the negotiated WebSocket buffer ceiling (NFR-SEC-46). Integer maxima are wire-type ceilings (uint8/16/32/64), not policy.",
|
|
52
|
+
"type": "object",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"properties": {
|
|
55
|
+
"cmd": { "type": "string", "minLength": 1, "maxLength": 4096 },
|
|
56
|
+
"args": {
|
|
57
|
+
"type": "array",
|
|
58
|
+
"items": { "type": "string", "maxLength": 4096 },
|
|
59
|
+
"maxItems": 1024
|
|
60
|
+
},
|
|
61
|
+
"env": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"additionalProperties": { "type": "string", "maxLength": 32768 },
|
|
64
|
+
"maxProperties": 1024
|
|
65
|
+
},
|
|
66
|
+
"cwd": { "type": "string", "maxLength": 4096 },
|
|
67
|
+
"rows": { "type": "integer", "minimum": 0, "maximum": 65535 },
|
|
68
|
+
"cols": { "type": "integer", "minimum": 0, "maximum": 65535 },
|
|
69
|
+
"timeout": { "$comment": "wall-clock seconds; expiry -> ProcessTimedOut", "type": "integer", "minimum": 0, "maximum": 4294967295 },
|
|
70
|
+
"cpu_timeout": { "$comment": "CPU-time budget seconds; exhaustion -> ProcessCpuTimedOut", "type": "integer", "minimum": 0, "maximum": 4294967295 },
|
|
71
|
+
"memory_limit_bytes": { "$comment": "per-process cap (u64 bytes); breach -> ProcessOutOfMemory. The u64 ceiling (2^64-1) is not expressed as a JSON-number maximum — it exceeds IEEE-754 safe-integer range and a validator would round it; the 64-bit domain is enforced by the wire type.", "type": "integer", "minimum": 0 },
|
|
72
|
+
"clear_env": { "type": "boolean", "default": false },
|
|
73
|
+
"uid": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
|
|
74
|
+
"gid": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
|
|
75
|
+
"allow_process_id_reuse": { "type": "boolean", "default": false },
|
|
76
|
+
"reattachable": { "type": "boolean", "default": false },
|
|
77
|
+
"bound_pid": {
|
|
78
|
+
"type": ["integer", "null"],
|
|
79
|
+
"minimum": 0,
|
|
80
|
+
"maximum": 4294967295
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"required": ["cmd", "args"]
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
"ProcessConnection": {
|
|
87
|
+
"$comment": "Handshake envelope (client message 1 or 2). create_req present => spawn; absent => reattach. expected_container_name and the out-of-band JWT sub both carry NFR-SEC-43 container binding. want_trace_events and accept_compression are the client side of capability negotiation: the client advertises them in the handshake; the server answers with the ConnectionCapabilities first frame.",
|
|
88
|
+
"type": "object",
|
|
89
|
+
"additionalProperties": false,
|
|
90
|
+
"properties": {
|
|
91
|
+
"process_id": { "$ref": "#/$defs/ProcessId" },
|
|
92
|
+
"create_req": { "$ref": "#/$defs/CreateProcess" },
|
|
93
|
+
"expected_container_name": { "$ref": "#/$defs/ContainerName" },
|
|
94
|
+
"want_trace_events": { "type": "boolean" },
|
|
95
|
+
"accept_compression": {
|
|
96
|
+
"type": "boolean",
|
|
97
|
+
"x-ocu-tbd": "Client advertises it accepts frame compression. The algorithm and the compressed-frame layout are not pinned by any source; carried as a negotiation flag, not a frozen algorithm choice (x-ocu-open-questions: compression-algorithm)."
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"required": ["process_id"]
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
"ConnectionCapabilities": {
|
|
104
|
+
"$comment": "First server frame after the handshake. Per-feature negotiation, not a version integer: each flag toggles one capability so the protocol evolves without a global version bump. The V1/V2 split is expressed through the message tags (ProcessCreated vs ProcessCreatedV2, AttachedToProcess vs AttachedToProcessV2), not a version field in the handshake. supports_compression advertises that frames may be compressed; the algorithm and compressed-frame layout are not pinned by any source, so the flag is carried but the wire format is left to the sandbox.",
|
|
105
|
+
"type": "object",
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"properties": {
|
|
108
|
+
"supports_traces": { "type": "boolean" },
|
|
109
|
+
"supports_compression": {
|
|
110
|
+
"type": "boolean",
|
|
111
|
+
"x-ocu-tbd": "Server advertises frame compression support. The algorithm and frame layout are unsourced; carried as a negotiation flag, not a frozen algorithm choice (x-ocu-open-questions: compression-algorithm)."
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"required": ["supports_traces", "supports_compression"]
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
"ServerMessage": {
|
|
118
|
+
"type": "object",
|
|
119
|
+
"minProperties": 1,
|
|
120
|
+
"maxProperties": 1,
|
|
121
|
+
"additionalProperties": false,
|
|
122
|
+
"properties": {
|
|
123
|
+
"ConnectionCapabilities": { "$ref": "#/$defs/ConnectionCapabilities" },
|
|
124
|
+
|
|
125
|
+
"ProcessCreated": { "type": "null" },
|
|
126
|
+
"ProcessCreatedV2": {
|
|
127
|
+
"$comment": "V2 spawn-success variant. The tag exists; no source pins its payload body, so it is left as an open object (TBD: field set, see x-ocu-open-questions).",
|
|
128
|
+
"type": "object"
|
|
129
|
+
},
|
|
130
|
+
"AttachedToProcess": { "type": "null" },
|
|
131
|
+
"AttachedToProcessV2": {
|
|
132
|
+
"$comment": "V2 reattach-success variant. The tag exists; its payload body is unpinned by any source, same TBD as ProcessCreatedV2.",
|
|
133
|
+
"type": "object"
|
|
134
|
+
},
|
|
135
|
+
"ProcessNotRunning": { "type": "null" },
|
|
136
|
+
"ProcessAlreadyAttached": {
|
|
137
|
+
"$comment": "NFR-IC-05: single owner per pid (sequential-default concurrency).",
|
|
138
|
+
"type": "null"
|
|
139
|
+
},
|
|
140
|
+
"FailedToStart": {
|
|
141
|
+
"$comment": "Generic start failure. Distinct from FailedToStartProcessWithSameIdRunning per OCU-canon split.",
|
|
142
|
+
"$ref": "#/$defs/BoundedReason"
|
|
143
|
+
},
|
|
144
|
+
"FailedToStartProcessWithSameIdRunning": {
|
|
145
|
+
"$comment": "Pid-reuse violation (allow_process_id_reuse=false).",
|
|
146
|
+
"type": "null"
|
|
147
|
+
},
|
|
148
|
+
"InfraError": { "$ref": "#/$defs/BoundedReason" },
|
|
149
|
+
|
|
150
|
+
"ExpectStdOut": {
|
|
151
|
+
"$comment": "Announce frame: the next binary frame on the socket is stdout, bounded by max-ws-buffer-size 32768 (NFR-SEC-46).",
|
|
152
|
+
"type": "null"
|
|
153
|
+
},
|
|
154
|
+
"StdOutEOF": { "type": "null" },
|
|
155
|
+
"ExpectStdErr": {
|
|
156
|
+
"$comment": "Announce frame: next binary frame is stderr, bounded by NFR-SEC-46.",
|
|
157
|
+
"type": "null"
|
|
158
|
+
},
|
|
159
|
+
"StdErrEOF": { "type": "null" },
|
|
160
|
+
|
|
161
|
+
"SignalSent": {
|
|
162
|
+
"type": "object",
|
|
163
|
+
"additionalProperties": false,
|
|
164
|
+
"properties": { "signal": { "$ref": "#/$defs/Signal" } },
|
|
165
|
+
"required": ["signal"]
|
|
166
|
+
},
|
|
167
|
+
"FailedToSendSignal": { "$ref": "#/$defs/BoundedReason" },
|
|
168
|
+
"InvalidSignal": { "$ref": "#/$defs/BoundedReason" },
|
|
169
|
+
|
|
170
|
+
"TraceEvent": {
|
|
171
|
+
"$comment": "Server-side trace event; emitted only when supports_traces was negotiated. No source pins a field list, so the body is an open object (TBD: field set, see x-ocu-open-questions).",
|
|
172
|
+
"type": "object"
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
"ProcessExited": {
|
|
176
|
+
"$comment": "Normal exit, carrying the exit code only. Signal-terminated and signal-stopped are distinct internal termination reasons but have no distinct wire variant in any source; they surface through this same code field (a 128+signal convention is the sandbox's choice, not asserted here). No source exposes code/signal as separate serialized fields.",
|
|
177
|
+
"type": "object",
|
|
178
|
+
"additionalProperties": false,
|
|
179
|
+
"properties": { "code": { "$ref": "#/$defs/ExitCode" } },
|
|
180
|
+
"required": ["code"]
|
|
181
|
+
},
|
|
182
|
+
"ProcessTimedOut": { "type": "null" },
|
|
183
|
+
"ProcessCpuTimedOut": { "type": "null" },
|
|
184
|
+
"ProcessOutOfMemory": { "type": "null" },
|
|
185
|
+
"ContainerOutOfMemory": { "type": "null" },
|
|
186
|
+
"ShuttingDown": { "type": "null" }
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
|
|
190
|
+
"ClientMessage": {
|
|
191
|
+
"type": "object",
|
|
192
|
+
"minProperties": 1,
|
|
193
|
+
"maxProperties": 1,
|
|
194
|
+
"additionalProperties": false,
|
|
195
|
+
"properties": {
|
|
196
|
+
"SendSignal": { "$ref": "#/$defs/Signal" },
|
|
197
|
+
"ExpectStdIn": {
|
|
198
|
+
"$comment": "OCU-canon: announce-only. The next binary frame carries stdin bytes (bounded by max-ws-buffer-size 32768, NFR-SEC-46); a non-binary follow-up is an error.",
|
|
199
|
+
"type": "null"
|
|
200
|
+
},
|
|
201
|
+
"StdInEOF": {
|
|
202
|
+
"$comment": "OCU-canon: the client has no further stdin; the guest closes the child's stdin write side. Symmetric to the server-side StdOutEOF/StdErrEOF announces. An explicit tag is required because a zero-length binary frame is indistinguishable from an empty write.",
|
|
203
|
+
"type": "null"
|
|
204
|
+
},
|
|
205
|
+
"Resize": {
|
|
206
|
+
"type": "object",
|
|
207
|
+
"additionalProperties": false,
|
|
208
|
+
"properties": {
|
|
209
|
+
"rows": { "type": "integer", "minimum": 0, "maximum": 65535 },
|
|
210
|
+
"cols": { "type": "integer", "minimum": 0, "maximum": 65535 }
|
|
211
|
+
},
|
|
212
|
+
"required": ["rows", "cols"]
|
|
213
|
+
},
|
|
214
|
+
"Detach": {
|
|
215
|
+
"$comment": "Leaves the process running; valid only when create_req.reattachable was true.",
|
|
216
|
+
"type": "null"
|
|
217
|
+
},
|
|
218
|
+
"KeepAlive": { "type": "null" },
|
|
219
|
+
"Closed": { "type": "null" },
|
|
220
|
+
"TraceEvent": {
|
|
221
|
+
"$comment": "Client-side trace event; valid only when supports_traces was negotiated. Body unspecified by any source, so left as an open object (TBD: field set, see x-ocu-open-questions).",
|
|
222
|
+
"type": "object"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
|
|
228
|
+
"x-ocu-open-questions": [
|
|
229
|
+
"ProcessCreatedV2 / AttachedToProcessV2 payload body: the V2 success tags exist but no source pins their frame body. A server-tracked status set (memory_usage_bytes, memory_cgroup_path, process_group_pid, internal_state with states CgroupCreated/Ready) is the expected payload, but its carrier frame is unconfirmed. Pin the V2 payload (and whether it carries the status set) before hardening either tag's body beyond an open object.",
|
|
230
|
+
"TraceEvent field set: the tag is negotiated via supports_traces but no source pins its fields; define a trace contract before constraining the body.",
|
|
231
|
+
"compression-algorithm: accept_compression / supports_compression negotiate frame compression, but no source pins the algorithm or the compressed-frame layout; pick and pin the algorithm before constraining the wire format."
|
|
232
|
+
],
|
|
233
|
+
|
|
234
|
+
"$comment-anyOf": "A frame is the phase-1 handshake (ProcessConnection, identified by its required process_id) or a post-handshake control frame. Frame direction — server-sent vs client-sent — is a transport property (which peer wrote it), not an envelope distinction, so the same tag may appear in both directions (e.g. TraceEvent flows both ways under a negotiated supports_traces). anyOf, not oneOf: a TraceEvent frame is a valid control frame in either direction, and the envelope does not assert mutual exclusivity the wire does not have.",
|
|
235
|
+
"anyOf": [
|
|
236
|
+
{ "$ref": "#/$defs/ProcessConnection" },
|
|
237
|
+
{ "$ref": "#/$defs/ServerMessage" },
|
|
238
|
+
{ "$ref": "#/$defs/ClientMessage" }
|
|
239
|
+
]
|
|
240
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "SPDX-License-Identifier: FSL-1.1-Apache-2.0 | Copyright (c) 2025 Open Computer Use Contributors | OCU constraint overlay (profile) on MCP revision 2025-06-18: conform-not-define. Pins the revision and layers OCU-side limits onto Tool/CallToolResult; does not restate the MCP base schema.",
|
|
3
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
+
"$id": "https://schemas.open-computer-use.dev/mcp/2025-06-18/ocu-constraints.schema.json",
|
|
5
|
+
"title": "OCU MCP constraint profile (2025-06-18)",
|
|
6
|
+
"description": "Conform-not-define overlay. The wire contract is the public MCP revision 2025-06-18 (https://modelcontextprotocol.io/specification/2025-06-18, schema https://github.com/modelcontextprotocol/specification/blob/main/schema/2025-06-18/schema.json). OCU is a Conformist and does not redefine MCP types. This file pins the revision and the OCU-side constraints that the base schema leaves open: audience-validated authz (NFR-SEC-09), bounded error and tool-result verbosity (NFR-SEC-51), bounded payload size (NFR-SEC-46), sequential-default tool execution (NFR-IC-05), date-revision negotiation as the breaking signal (NFR-IC-04). Validators MUST apply the MCP base schema first, then this profile.",
|
|
7
|
+
|
|
8
|
+
"x-ocu-profile": {
|
|
9
|
+
"conformance": "conform-not-define",
|
|
10
|
+
"base-contract": {
|
|
11
|
+
"protocol": "MCP over JSON-RPC 2.0",
|
|
12
|
+
"revision": "2025-06-18",
|
|
13
|
+
"spec": "https://modelcontextprotocol.io/specification/2025-06-18",
|
|
14
|
+
"schema": "https://github.com/modelcontextprotocol/specification/blob/main/schema/2025-06-18/schema.json",
|
|
15
|
+
"tool-input-schema-dialect-default": "https://json-schema.org/draft/2020-12/schema"
|
|
16
|
+
},
|
|
17
|
+
"authoritative-references": [
|
|
18
|
+
"https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle",
|
|
19
|
+
"https://modelcontextprotocol.io/specification/2025-06-18/basic/transports",
|
|
20
|
+
"https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization",
|
|
21
|
+
"https://modelcontextprotocol.io/specification/2025-06-18/server/tools",
|
|
22
|
+
"https://www.jsonrpc.org/specification",
|
|
23
|
+
"https://www.rfc-editor.org/rfc/rfc8707",
|
|
24
|
+
"https://www.rfc-editor.org/rfc/rfc9728"
|
|
25
|
+
],
|
|
26
|
+
"server-capabilities-pinned": {
|
|
27
|
+
"tools": { "listChanged": false },
|
|
28
|
+
"x-note": "OCU exposes the tools capability only. prompts, resources, logging, completions, sampling, elicitation, roots are not emitted by the OCU server. listChanged is false: the OCU tool set is registered statically at server construction (a fixed tool set per session) and notifications/tools/list_changed is never sent. Confirmed: the tool set does not mutate within a session; per-session content variation rides InitializeResult.instructions, not a changed tool list."
|
|
29
|
+
},
|
|
30
|
+
"protocol-version-binding": {
|
|
31
|
+
"negotiated-field": "$.params.protocolVersion (initialize) / $.result.protocolVersion (InitializeResult)",
|
|
32
|
+
"value": "2025-06-18",
|
|
33
|
+
"http-header": "MCP-Protocol-Version",
|
|
34
|
+
"missing-header-policy": "reject",
|
|
35
|
+
"x-deviation": "MCP base SHOULD-fallback to 2025-03-26 on a missing MCP-Protocol-Version header only when the server has no other way to identify the version (the version is otherwise negotiated at initialize). OCU tightens this to reject (HTTP 400) to pin the revision. Intentional deviation. (NFR-IC-04)"
|
|
36
|
+
},
|
|
37
|
+
"concurrency": {
|
|
38
|
+
"mode": "sequential-default-per-session",
|
|
39
|
+
"carrier": "none (gateway behavior, not a wire field)",
|
|
40
|
+
"x-note": "MCP permits concurrent in-flight requests with distinct id. OCU serialises tool execution per session by default; parallelism is opt-in. Documented as a gateway constraint, not validated on the wire. (NFR-IC-05)"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
"x-ocu-limits": {
|
|
45
|
+
"$comment": "Numeric caps the MCP base schema leaves unspecified. NFR-SEC-46 (bounded message/object size, chunk-above-ceiling) and NFR-SEC-51 (size-bounded, identifier-minimized errors/responses) MANDATE that these bounds exist, are enforced pre-buffer at the gateway, and are configurable per workload tier — but pin NO specific byte/length value for the MCP profile. The exec-channel transport bounds (per-frame WS buffer, per-stream stdio ceiling) live on the Exec surface, not here, and do not bind MCP CallToolResult/error/tool-description sizes. Each value is an operational default, NOT a frozen contract value: an enforced gateway default the operator may retune within the NFR-SEC-46/51 floor, pending numeric sign-off. This is a vendor-extension registry, not a validatable $def; the bounded* schemas below mirror these numbers as enforceable maxLength/maxItems keywords, and counts are code points, not bytes — the byte ceiling is the gateway's pre-buffer check.",
|
|
46
|
+
"maxErrorMessageBytes": { "value": 1024, "nfr": "NFR-SEC-51", "of": "JSON-RPC error.message; stable reason code only" },
|
|
47
|
+
"maxErrorDataBytes": { "value": 4096, "nfr": "NFR-SEC-51", "of": "JSON-RPC error.data; negotiation hint only, no stack/topology" },
|
|
48
|
+
"maxToolDescriptionBytes": { "value": 8192, "nfr": "NFR-SEC-51", "of": "Tool.description; bounded discovery surface" },
|
|
49
|
+
"maxInstructionsBytes": { "value": 8192, "nfr": "NFR-SEC-51", "of": "InitializeResult.instructions; bounded free text" },
|
|
50
|
+
"maxCallToolResultBytes": { "value": 1048576, "nfr": "NFR-SEC-46", "of": "total serialized CallToolResult; over-ceiling rejected pre-buffer, never partially staged" },
|
|
51
|
+
"maxContentBlocks": { "value": 256, "nfr": "NFR-SEC-46", "of": "CallToolResult.content block count" },
|
|
52
|
+
"maxToolArgumentsBytes": { "value": 262144, "nfr": "NFR-SEC-46/51", "of": "CallToolRequest.params.arguments; bounded, strict-validated input" }
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
"x-ocu-overlay-map": {
|
|
56
|
+
"$comment": "This file is a non-self-executing overlay: it has no root type, so a validator pointed at it alone accepts everything. The gateway applies each $def below to the named MCP base type per message. Conformance is this map, not prose.",
|
|
57
|
+
"boundedError": "JSON-RPC error object (Tier-1 protocol error)",
|
|
58
|
+
"boundedTool": "MCP Tool object (tools/list, tools/call definitions)",
|
|
59
|
+
"boundedCallToolResult": "MCP CallToolResult (Tier-2 tool error rides isError)",
|
|
60
|
+
"boundedInitializeResult": "MCP InitializeResult (capability + revision pin)",
|
|
61
|
+
"jsonRpcSingleMessage": "the HTTP request/response body envelope (batching removed)"
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
"$defs": {
|
|
65
|
+
"jsonRpcSingleMessage": {
|
|
66
|
+
"$comment": "Batching is removed in 2025-06-18: an HTTP body MUST be a single object, never an array.",
|
|
67
|
+
"type": "object",
|
|
68
|
+
"not": { "type": "array" }
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
"boundedError": {
|
|
72
|
+
"$comment": "JSON-RPC error object (Tier 1, protocol error). Never reaches the model. Carries a stable reason code only; no topology/stack. error.message and error.data length-bounded per NFR-SEC-51.",
|
|
73
|
+
"type": "object",
|
|
74
|
+
"required": ["code", "message"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"code": {
|
|
77
|
+
"type": "integer",
|
|
78
|
+
"$comment": "Standard JSON-RPC codes only. No MCP-specific numeric codes are defined in 2025-06-18; implementation range below -32000 is not invented here. -32602 covers unknown tool, invalid arguments, and unsupported protocol version.",
|
|
79
|
+
"enum": [-32700, -32600, -32601, -32602, -32603]
|
|
80
|
+
},
|
|
81
|
+
"message": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"maxLength": 1024,
|
|
84
|
+
"$comment": "NFR-SEC-51: bounded; no internal detail. maxLength mirrors x-ocu-limits.maxErrorMessageBytes (a retunable default, not a frozen value)."
|
|
85
|
+
},
|
|
86
|
+
"data": {
|
|
87
|
+
"$comment": "NFR-SEC-51: optional, bounded by x-ocu-limits.maxErrorDataBytes at the gateway; carries the protocol-version negotiation hint {supported:[],requested} for -32602 and no stack/topology otherwise."
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
"boundedTool": {
|
|
93
|
+
"$comment": "OCU overlay on the MCP Tool object. Constrains only OCU-bounded fields; name/inputSchema/outputSchema/annotations semantics remain the MCP base.",
|
|
94
|
+
"type": "object",
|
|
95
|
+
"required": ["name", "inputSchema"],
|
|
96
|
+
"properties": {
|
|
97
|
+
"name": { "type": "string", "minLength": 1 },
|
|
98
|
+
"description": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"maxLength": 8192,
|
|
101
|
+
"$comment": "NFR-SEC-51: bounded. maxLength mirrors x-ocu-limits.maxToolDescriptionBytes (a retunable default, not a frozen value)."
|
|
102
|
+
},
|
|
103
|
+
"inputSchema": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"required": ["type"],
|
|
106
|
+
"properties": { "type": { "const": "object" } },
|
|
107
|
+
"$comment": "MCP requires type:object. Embedded dialect defaults to JSON Schema 2020-12; a declared $schema selects another dialect."
|
|
108
|
+
},
|
|
109
|
+
"annotations": {
|
|
110
|
+
"$comment": "ToolAnnotations are non-binding hints and UNTRUSTED unless from a trusted server. OCU as gateway sets/strips these and does not pass third-party hints through unvalidated. (Layer-7)"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
"boundedCallToolResult": {
|
|
116
|
+
"$comment": "OCU overlay on the MCP CallToolResult. Tier-2 error model: isError:true is a tool-execution error returned to the model as sanitized, bounded content; protocol errors use boundedError instead. (NFR-SEC-51, NFR-SEC-46)",
|
|
117
|
+
"type": "object",
|
|
118
|
+
"required": ["content"],
|
|
119
|
+
"properties": {
|
|
120
|
+
"content": {
|
|
121
|
+
"type": "array",
|
|
122
|
+
"maxItems": 256,
|
|
123
|
+
"$comment": "NFR-SEC-46: block count and total serialized size bounded at the gateway (x-ocu-limits.maxCallToolResultBytes / maxContentBlocks). maxItems mirrors the block-count default; total-bytes is enforced at the gateway pre-buffer. Retunable defaults, not frozen values. The OCU tool surface emits only text and image content blocks (no audio, no embedded-resource blocks); per-block type is the MCP base ContentBlock union, OCU does not redefine it."
|
|
124
|
+
},
|
|
125
|
+
"structuredContent": {
|
|
126
|
+
"type": "object",
|
|
127
|
+
"$comment": "Present iff the tool declares outputSchema; MUST conform to it. The OCU tool surface returns text/image content blocks and does not currently declare per-tool outputSchema; this field is permitted (a future tool MAY declare one) but not required. TBD: per-tool outputSchema adoption — no source pins it."
|
|
128
|
+
},
|
|
129
|
+
"isError": { "type": "boolean", "default": false }
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
|
|
133
|
+
"boundedInitializeResult": {
|
|
134
|
+
"$comment": "OCU pins the negotiated revision and the tools-only capability set; bounds the free-text instructions field.",
|
|
135
|
+
"type": "object",
|
|
136
|
+
"required": ["protocolVersion", "capabilities", "serverInfo"],
|
|
137
|
+
"properties": {
|
|
138
|
+
"protocolVersion": { "const": "2025-06-18" },
|
|
139
|
+
"capabilities": {
|
|
140
|
+
"type": "object",
|
|
141
|
+
"required": ["tools"],
|
|
142
|
+
"additionalProperties": false,
|
|
143
|
+
"properties": {
|
|
144
|
+
"tools": {
|
|
145
|
+
"type": "object",
|
|
146
|
+
"properties": { "listChanged": { "const": false } }
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"$comment": "OCU emits the tools capability only — additionalProperties:false rejects every other capability (prompts, resources, logging, completions, sampling, experimental, …), not just a named denylist. (NFR-SEC-03 audit goes via the AsyncAPI fan-in, not MCP logging.)"
|
|
150
|
+
},
|
|
151
|
+
"instructions": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"maxLength": 8192,
|
|
154
|
+
"$comment": "NFR-SEC-51: bounded free text. maxLength mirrors x-ocu-limits.maxInstructionsBytes (a retunable default, not a frozen value)."
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
"x-ocu-authz": {
|
|
161
|
+
"$comment": "NFR-SEC-09 — audience-validated authz. Carried on the HTTP transport, not in the JSON-RPC body; documented here as a binding gateway rule.",
|
|
162
|
+
"model": "OAuth 2.1 Resource Server",
|
|
163
|
+
"credential-header": "Authorization: Bearer <token>",
|
|
164
|
+
"rules": [
|
|
165
|
+
"Token MUST name this MCP server in its audience claim (RFC 8707); reject otherwise with HTTP 401.",
|
|
166
|
+
"Bearer token MUST NOT appear in the URI query.",
|
|
167
|
+
"The caller token MUST NOT be passed through to upstream or the sandbox; the trust edge injects custody credentials (NFR-SEC-23, NFR-SEC-27).",
|
|
168
|
+
"On 401, WWW-Authenticate points to the RFC 9728 resource-metadata URL.",
|
|
169
|
+
"Origin header MUST be validated (DNS-rebinding); local binds use 127.0.0.1 not 0.0.0.0 (NFR-SEC-43)."
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
|
|
173
|
+
"x-ocu-error-model": {
|
|
174
|
+
"$comment": "Two-tier error model pinned per 08-contracts §3.",
|
|
175
|
+
"tier-1-protocol-error": "JSON-RPC error{code,message,data?}; never reaches the model; reason code only; bounded by boundedError (NFR-SEC-51).",
|
|
176
|
+
"tier-2-tool-error": "CallToolResult{isError:true, content}; reaches the model; sanitized + bounded (NFR-SEC-51, NFR-SEC-46). Sandbox/exec failures from the Exec surface map here."
|
|
177
|
+
}
|
|
178
|
+
}
|