From c9c05b5d1a7e51334ea6df12164e4107499e1fa7 Mon Sep 17 00:00:00 2001 From: showxu <10173746+showxu@users.noreply.github.com> Date: Thu, 1 Oct 2026 02:03:49 +0800 Subject: [PATCH] Apply the canonical Computer MCP family presentation --- .github/brand/social.png | Bin 0 -> 26961 bytes .github/workflows/validate.yml | 2 ++ AGENTS.md | 8 ++++++++ Documentation/Brand/header.svg | 13 +++++++++++++ README.md | 7 ++++++- Scripts/check-brand.py | 31 +++++++++++++++++++++++++++++++ brand.lock.json | 16 ++++++++++++++++ 7 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 .github/brand/social.png create mode 100644 Documentation/Brand/header.svg create mode 100644 Scripts/check-brand.py create mode 100644 brand.lock.json diff --git a/.github/brand/social.png b/.github/brand/social.png new file mode 100644 index 0000000000000000000000000000000000000000..8347649bd680eb244c6e5f25ddfb018e7bb2bfc9 GIT binary patch literal 26961 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 XenCcl-dVF9p8=MaY<{jX_e}a9P|}wL literal 0 HcmV?d00001 diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 8f40675..87ca7fc 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -38,6 +38,8 @@ jobs: python-version: '3.13' - name: Install dependency gate tooling run: brew install jq ripgrep + - name: Verify canonical brand delivery + run: python3 Scripts/check-brand.py - name: Validate Swift package env: BASE_COMMIT: ${{ github.event.pull_request.base.sha || github.event.before }} diff --git a/AGENTS.md b/AGENTS.md index 085e522..e53883b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -162,3 +162,11 @@ Do not install or bundle vendor Codex binaries. Keep generated schema provenance Use Swift Testing. Run strict swift-format lint, swift build, swift test, schema drift checks, and an isolated standard MCP client before handoff. Logs must never write to the protocol stdout. Do not publish repositories or releases implicitly. + +## Brand delivery + +The main Computer MCP repository owns ProductIdentity and BRAND. Imported +`Documentation/Brand/header.svg` travels with the packaged manual; +`.github/brand/social.png` supplies the repository preview. `brand.lock.json` +binds both to canonical exports. Run `python3 Scripts/check-brand.py` locally +and in CI. Update imports with the main repository's `Scripts/brand.py sync`. diff --git a/Documentation/Brand/header.svg b/Documentation/Brand/header.svg new file mode 100644 index 0000000..11da307 --- /dev/null +++ b/Documentation/Brand/header.svg @@ -0,0 +1,13 @@ + + Computer MCP — Codex + + + + + First-party plugin + Computer MCP + Codex + + Codex execution and protocol inspection + + diff --git a/README.md b/README.md index 7ef4cb6..6b51dc4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,9 @@ -# Codex Plugin +![Computer MCP — Codex](Documentation/Brand/header.svg) + +# Computer MCP — Codex + +Part of the [Computer MCP](https://computer-mcp.github.io/) family. +**Let ChatGPT use your local tools.** This independent Swift package projects Codex execution through standard MCP. It reuses Computer MCP's existing execution implementations and swift-codex. diff --git a/Scripts/check-brand.py b/Scripts/check-brand.py new file mode 100644 index 0000000..1cb6c74 --- /dev/null +++ b/Scripts/check-brand.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +"""Verify a repository's locked Computer MCP brand delivery without a source checkout.""" + +import hashlib +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +LOCK = ROOT / "brand.lock.json" +if not LOCK.exists(): + LOCK = ROOT / "public/brand/brand.lock.json" +record = json.loads(LOCK.read_text()) +assert record["schema_version"] == 1, "Unsupported brand lock" +assert record["source"] == "https://github.com/computer-mcp/computer-mcp", "Unexpected brand authority" +for name, expected in record["files"].items(): + path = ROOT / name + assert path.resolve().is_relative_to(ROOT), f"Invalid delivery path: {name}" + assert hashlib.sha256(path.read_bytes()).hexdigest() == expected, f"Brand delivery drift: {name}" +if record["consumer"] == "computer-mcp.github.io": + text = (ROOT / "index.html").read_text() + for promise in record["promise"].values(): + assert promise in text, "Website promise differs from the imported brand" + assert 'brand/social-en.png' in text, "Website sharing artwork differs" +else: + manual = ROOT / ("profile/README.md" if record["consumer"] == ".github" else "README.md") + text = manual.read_text() + assert record["name"] in text, "Master name missing from public entry point" + assert record["promise"]["en"] in text, "Master promise missing from public entry point" + header = "brand/header.svg" if record["consumer"] == ".github" else "Documentation/Brand/header.svg" + assert header in text, "Family header missing from public entry point" +print(f"Locked Computer MCP brand verified for {record['consumer']}") diff --git a/brand.lock.json b/brand.lock.json new file mode 100644 index 0000000..40645dd --- /dev/null +++ b/brand.lock.json @@ -0,0 +1,16 @@ +{ + "schema_version": 1, + "source": "https://github.com/computer-mcp/computer-mcp", + "revision": "3c498108b1b847ae126fd2593cd0d3ddb4d0d9858d0dae214b1439ff69226e50", + "consumer": "plugin-codex", + "name": "Computer MCP", + "promise": { + "en": "Let ChatGPT use your local tools.", + "zh-CN": "\u8ba9 ChatGPT\uff0c\u7528\u4e0a\u4f60\u7684\u672c\u673a\u5de5\u5177\u3002" + }, + "files": { + "Documentation/Brand/header.svg": "edd6495406ff02910d15e0614abc43a90a0d4b4e1360799692295a93da01f357", + ".github/brand/social.png": "8eb4d0e49c300819e87d22984d0fc1058a98dfffe35b1dca99b8924c35eddc01", + "Scripts/check-brand.py": "2ec3c64469774b48fbfa6fbfa7f6a35c6a172fe4de347beb1881766632fbfdde" + } +}