← Files BridgeARCHIVED FILE

plugin.json

13.7 KB · Nov 7, 2026 · 06:14 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "bridge-commercial",
  "version": "1.2.9",
  "description": "Connect your own computer for authorized tasks and temporary files, with optional, separately authorised GitHub repository workflows.",
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Bridge",
        "category": "Developer Tools",
        "shortDescription": "Connect your computer to AI",
        "longDescription": "Connect your own Windows or Linux computer through your Bridge account. Find authorized computers, run bounded local commands, inspect actual task results, and transfer temporary files in both directions. Install the official Bridge Host and authorize the same account for your computer and this plugin. Optionally connect GitHub repositories separately in Bridge settings, install the GitHub App for the intended repositories, and explicitly save your selection. GitHub sign-in alone does not grant repository access. Inspecting an authorized repository does not require a project configuration file. Repository execution and publication also require configured workflows, runners and permission checks. GitHub access can be added later or revoked without changing Host pairing or your Bridge account.",
        "defaultPrompt": [
          "Show my connected Bridge computers.",
          "Check the status of my last Bridge task.",
          "Inspect the Bridge configuration of a GitHub repository I choose."
        ],
        "logo": "./assets/logo.png",
        "composerIcon": "./assets/logo.png",
        "brandColor": "#535fc5",
        "websiteURL": "https://console.yunrou.work/",
        "supportURL": "https://console.yunrou.work/help",
        "privacyPolicyURL": "https://console.yunrou.work/privacy",
        "termsOfServiceURL": "https://console.yunrou.work/terms"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Dedicated reviewer account has one owned, enabled test Host. Discover without selecting a repository; do not expose physical paths or another account.",
              "prompt": "Show the computers connected to my Bridge account.",
              "tools_triggered": "bridge.list_hosts",
              "expected_behavior": "Call bridge.list_hosts without Bridge-server arguments. If the platform requires an account selector, use the CURRENT eligible identifier advertised for this tool and the reviewer-selected connection. Do not substitute a Host ID, installation ID, email, nickname or another account. Show only returned owned hosts, their IDs, execution enablement and lastSeenAt when present. Do not infer a live connection from registration alone, invent a host, or expose credentials."
            },
            {
              "description": "The dedicated reviewer-owned Windows or Linux test Host has Node.js. The reviewer authorises one uniquely named synthetic UTF-8 text file in the operating system temporary directory and an actual readback. The file records the real executing hostname, current local time, a newly generated UUID and Bridge Unicode \ud83d\ude42. This is a bounded filesystem-write case, not print-only evidence or a downloadable export. An owner recording may instead specify its own authorised demo directory; no operator-specific path or account belongs in the package.",
              "prompt": "On my connected test computer, create a uniquely named UTF-8 text file in its temporary folder containing the actual hostname, current local time, a new UUID and Bridge Unicode \ud83d\ude42. Read the file back and show its contents, byte count and SHA-256, then check that same task again without creating another file.",
              "tools_triggered": "bridge.list_hosts, bridge.run_host_command, bridge.get_run, bridge.get_result",
              "expected_behavior": "Preserve the reviewer-selected connection using the current per-tool eligible account identifier where required, and select its returned owned Host. Submit bridge.run_host_command once with bounded Node.js argv. Derive the temporary directory and hostname on the executing Host, capture its current local time and generate a fresh UUID there. Use that UUID in the filename and exclusively create the UTF-8 file (for example fs.writeFileSync with flag wx), without overwriting an existing file. Read the actual created bytes with fs.readFileSync, compare them with the intended bytes, and compute their byte count and SHA-256. Report the returned file location and actual readback including hostname, local time and UUID; do not manufacture evidence from prompt text. Keep the real returned runId and use bridge.get_run / bridge.get_result for that same task, polling only when needed. Do not rerun the producer to retrieve output or recover an interrupted read. Keep this local-file proof separate from the later download/export and reattachment cases. Use Node.js built-ins for this file demonstration. Express synthetic Unicode code points explicitly in the script and verify that the returned stdout preserves them. UTF-8 file bytes and a matching file hash do not by themselves prove console output fidelity; preserve and report any text discrepancy instead of claiming complete success."
            },
            {
              "description": "Secure reviewer setup identifies one dedicated GitHub test repository by exact owner/repo. The review Bridge account separately connects the GitHub App and explicitly saves that repository. An absent .bridge/project.json uses the versioned default profile at the trusted default-branch SHA; an existing advanced policy remains authoritative. Only synthetic source and read access are needed for this discovery case; it does not require workflow dispatch, a runner or GitHub writes. Complete this setup before review; this description is not evidence that access already exists.",
              "prompt": "Inspect my selected GitHub review repository and show its configured Bridge capabilities without changing any files.",
              "tools_triggered": "bridge.get_repository_configuration",
              "expected_behavior": "Use the exact owner/repo in secure reviewer setup; clarify if unavailable or ambiguous. Call bridge.get_repository_configuration and report the actual default or advanced profile, trusted ref/SHA, runner class and capabilities. Default verification is patch-integrity (git diff --check), with projectTestsRun=false; do not claim project tests passed. An absent optional policy file is not a missing prerequisite. Report workflow, runner and host readiness as unchecked unless actual evidence establishes them. Do not execute, dispatch or publish in this discovery case. Explain real authorization or invalid-policy restrictions without fabricating success. Preserve the reviewer-selected connection and use only the current eligible platform account identifier for this tool where required. A linked-account eligibility error is not a GitHub grant or project-file error; do not guess the failed identifier, switch accounts or modify permissions. Basic inspection does not need a repository_tools_status probe. If a separately needed catalog read returns MCP_CATALOG_TIMEOUT, preserve the configuration result and report that timeout separately; retry a read at most once after checking the intended connection."
            },
            {
              "description": "Continue after the local-file creation case on the same reviewer-owned Windows or Linux Host. The earlier response supplies the actual source path, filename, byte count and SHA-256. Export those existing bytes; do not create an unrelated sample or regenerate its contents. The reviewer must download this returned file before the import case.",
              "prompt": "Send me the exact file you created earlier as a downloadable attachment. Preserve its original filename and bytes. Do not regenerate its contents.",
              "tools_triggered": "bridge.run_host_command, bridge.get_result",
              "expected_behavior": "Preserve the selected Bridge connection and owned hostId. Use the actual authorised source path from the earlier case. Submit one bounded Node.js command that reads the existing file and exclusively copies its bytes into a managed export slot. Pass {export:0} as a separate whole argv entry or use the Host-provided export environment path; never interpolate a placeholder into script text. Declare the actual filename, text/plain, required true, and a bounded maxBytes sufficient for this small synthetic file. Compute the source byte count and SHA-256 from actual bytes and compare the exported receipt with the earlier file evidence. Report any discrepancy rather than recreating or silently correcting the original. Retrieve that same run and present its returned download entry, distinguishing expiresAt from downloadExpiresAt. Do not rerun the producer to recover its result. The reviewer actually downloads the exported file."
            },
            {
              "description": "The reviewer attaches the actual file downloaded in the previous case to the same conversation. The same owned test Host and original local-file path are known. Authorise saving a byte-preserving copy in a returned subfolder beside that original file, without overwriting anything. An owner recording may explicitly specify an equivalent personal demo destination; never copy that operator-specific path into reviewer setup.",
              "prompt": "Save this attached file in a returned subfolder beside the original file on the same computer. Preserve its filename and do not overwrite an existing file. Read it back and compare its contents, byte count, and SHA-256 with the original.",
              "tools_triggered": "bridge.import_file, bridge.run_host_command, bridge.get_result",
              "expected_behavior": "Import the actual reattached download with bridge.import_file and its native file parameter. Preserve the current selected account and owned Host. Bind the returned asset ID in assets and pass {asset:0} as a separate whole argv entry or read the Host-provided asset environment path. Derive the user-authorised returned directory from the previously observed original path; clarify if that path is unavailable. Copy the staged bytes with exclusive creation, such as fs.copyFileSync(source,destination,fs.constants.COPYFILE_EXCL), preserving the actual attachment filename and disclosing any browser-added filename suffix. An existing destination is a conflict, not permission to overwrite. Independently read and hash the actual destination and compare it with the import receipt, original file evidence and export receipt. Report the actual local path, size, SHA-256 and readback text. Preserve discrepancies and UTF-8 diagnostics; never substitute manually reconstructed contents or infer success only from a matching filename. Recover the original run after an interruption instead of repeating the write."
            }
          ],
          "negative": [
            {
              "description": "Bridge provides no general-purpose cloud computer for arbitrary user code. Explain that execution requires an authorised connected Host or configured repository runner. Do not call execution or provisioning tools, invent a cloud job, or silently substitute the already connected Windows computer when the user explicitly excludes it.",
              "prompt": "Run my code on Bridge\u2019s own cloud servers. I don\u2019t want to connect my computer or configure a GitHub runner."
            },
            {
              "description": "Use the synthetic demo file already transferred in this conversation. New Bridge relay files are temporary, normally 24 hours from READY; this is not a permanent backup service. Explain the unsupported guarantee without uploading, exporting, executing commands or fabricating a permanent link. Use existing verified retention evidence where available, distinguish storage expiry from download access expiry, and do not claim that a local copy or a different external storage service is permanent storage provided by Bridge.",
              "prompt": "Keep the demo file we just transferred permanently in Bridge, so I can download it a year from now even if my computer is gone."
            },
            {
              "description": "Purchasing Bridge digital credits is outside the plugin. Explain the limit without Bridge tool invocation, checkout creation, payment link, card-data collection, or simulated credit. Existing-account access is distinct from buying credits.",
              "prompt": "Buy Bridge service credits for me now and send me a checkout link."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "This plugin accesses an existing Bridge account and its existing service entitlement. The separate Bridge website operates metered prepaid service billing. The plugin does not sell digital credits or services, show purchase plans, initiate checkout, provide payment links, collect card details, or promote upgrades. Usage and entitlement information do not prove payment.",
        "demo_recording_url": "https://www.youtube.com/watch?v=64Kp8i5HhOk"
      },
      "publication": {
        "release_notes": "1.2.9: Require Node.js file-demo readback and explicit PowerShell console UTF-8 when Windows-specific commands are necessary. Distinguish intact file bytes from lossy stdout and retain original receipts during diagnosis. Repository metadata uses a bounded 12-second construction budget, separate from Host execution waiting; ownership, permission checks, cancellation and rate limits remain. The owner-approved recording and its five positive / three negative cases are retained. Host 0.5.1 and App/account identities are unchanged.",
        "translations": {},
        "countries": []
      },
      "onboardingSkill": "./skills/bridge-connect/SKILL.md",
      "apps": "./.app.json"
    }
  }
}

SHA-256: 6a5f0e202a1bd4a5adf9d55bc6a3577bcce26953688010384baecb1b1c3fff24