From 72ce60e2db3c3eb4bd630492192261f8119a1888 Mon Sep 17 00:00:00 2001 From: kivtxs <131401183+kivtxs@users.noreply.github.com> Date: Wed, 4 Nov 2026 12:10:30 -0500 Subject: [PATCH 1/2] Export of Offline-Protocol/CLI@c98975a86800: CLI 0.3.1, plugin 0.1.5 --- README.md | 14 +++--- SOURCE.json | 44 +++++++++---------- distribution/clients/README.md | 10 ++--- distribution/clients/codex.toml | 2 +- distribution/clients/continue.yaml | 4 +- distribution/clients/devin-desktop.json | 2 +- distribution/clients/mcp-stdio.json | 2 +- distribution/clients/priority-two.md | 6 +-- distribution/clients/vscode.json | 2 +- distribution/clients/zed.json | 2 +- .../cline/offline-protocol/entry.json | 2 +- distribution/mcp-registry/server.hosted.json | 2 +- distribution/mcp-registry/server.json | 4 +- gemini-extension.json | 4 +- .../.claude-plugin/plugin.json | 2 +- .../.codex-plugin/plugin.json | 2 +- plugins/offline-protocol/.mcp.json | 2 +- plugins/offline-protocol/README.md | 6 +-- plugins/offline-protocol/mcp.json | 2 +- plugins/offline-protocol/plugin.json | 2 +- .../build-with-offline-protocol/SKILL.md | 8 +++- 21 files changed, 65 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 467627f..3d0c874 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ packages, read integration guides and workflows, plan an implementation, and scaffold or integrate a project on your machine. Every configuration runs the local MCP server from the published Offline -Protocol CLI, `npx -y @offline-protocol/cli@0.2.9 mcp serve`, or +Protocol CLI, `npx -y @offline-protocol/cli@0.3.1 mcp serve`, or connects to the hosted MCP server at `https://mcp.offlineprotocol.com/mcp`. The tools help you build an application. They do not discover nearby devices, operate a mesh or control live hardware. @@ -23,7 +23,7 @@ here; pull requests to this repository are reviewed and applied upstream. ## Requirements Node.js 18 or later with npx. The first run downloads the pinned CLI -(`@offline-protocol/cli@0.2.9`) from npm. Local tools need no Offline +(`@offline-protocol/cli@0.3.1`) from npm. Local tools need no Offline Protocol account and send no telemetry. The hosted server needs an application API key and its application ID from https://dev.offlineprotocol.com. @@ -46,7 +46,7 @@ codex plugin add offline-protocol@offline-protocol Or add only the MCP server: ```bash -codex mcp add offline-protocol -- npx -y @offline-protocol/cli@0.2.9 mcp serve +codex mcp add offline-protocol -- npx -y @offline-protocol/cli@0.3.1 mcp serve ``` ### Cursor @@ -68,7 +68,7 @@ gemini extensions install https://github.com/Offline-Protocol/offline-protocol-a ### VS Code with GitHub Copilot ```bash -code --add-mcp '{"name":"offline-protocol","type":"stdio","command":"npx","args":["-y","@offline-protocol/cli@0.2.9","mcp","serve"]}' +code --add-mcp '{"name":"offline-protocol","type":"stdio","command":"npx","args":["-y","@offline-protocol/cli@0.3.1","mcp","serve"]}' ``` For one workspace, copy `distribution/clients/vscode.json` to `.vscode/mcp.json`. @@ -76,7 +76,7 @@ For one workspace, copy `distribution/clients/vscode.json` to `.vscode/mcp.json` ### Cline ```bash -cline mcp install offline-protocol -- npx -y @offline-protocol/cli@0.2.9 mcp serve +cline mcp install offline-protocol -- npx -y @offline-protocol/cli@0.3.1 mcp serve ``` ### Devin @@ -88,7 +88,7 @@ devin plugins install Offline-Protocol/offline-protocol-agent-plugins#plugins/of ``` Devin (web): add a custom MCP server with transport stdio, command `npx` and -arguments `-y @offline-protocol/cli@0.2.9 mcp serve`. Devin Desktop: +arguments `-y @offline-protocol/cli@0.3.1 mcp serve`. Devin Desktop: `distribution/clients/devin-desktop.json`. ### Any other MCP client @@ -100,7 +100,7 @@ Use this server definition (also in `distribution/clients/mcp-stdio.json`): "mcpServers": { "offline-protocol": { "command": "npx", - "args": ["-y", "@offline-protocol/cli@0.2.9", "mcp", "serve"] + "args": ["-y", "@offline-protocol/cli@0.3.1", "mcp", "serve"] } } } diff --git a/SOURCE.json b/SOURCE.json index 1f7f922..07aa7d1 100644 --- a/SOURCE.json +++ b/SOURCE.json @@ -2,9 +2,9 @@ "repository": "Offline-Protocol/offline-protocol-agent-plugins", "source": { "repository": "Offline-Protocol/CLI", - "commit": "df32363b929581812ff26544d2b917d5fc9f241c" + "commit": "c98975a868004f8e2f7bb942a67b9978c1582818" }, - "cliPackage": "@offline-protocol/cli@0.2.9", + "cliPackage": "@offline-protocol/cli@0.3.1", "generator": "scripts/export-agent-plugins.mjs", "files": { ".agents/plugins/marketplace.json": "e0fe652d775a8c601d0ae194d438b89b889935a8990db207c94f32b4ece5d7c4", @@ -14,33 +14,33 @@ ".github/workflows/validate.yml": "34b96a05a1573b9e44ee2d9a03d503cf7c454d9b29a1b044c70ae112cc3201bb", "LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30", "NOTICE": "0cb7199c9a7adecfe113f5e68248beb381ea3f95543586aee88921a0b81e4bcc", - "README.md": "b0c3ac7ffb3bfd5fd4c146fb533c64f20763b2c8474db1d73e04098ff0f5ed2b", + "README.md": "dff5966c3e02354602ea72358a04d36dc63967329ac67e2ce6615ec875f01cb1", "SECURITY.md": "13353905286c9895c4ac3d3ccfcd7d031bcd0cacde13216d88666d58af4e3b1f", - "distribution/clients/README.md": "5886ea31b1b1f6956c488fd94579e536f6ec67b2ef8edf3833890548403e7486", - "distribution/clients/codex.toml": "46ab6515bf4901badb66707d912b8f6ee874ed1964bad9b59423eaf1ae06b8a0", + "distribution/clients/README.md": "65076c7c4efd4bd95bd1f8bc30fbf9ad6a636632ba827a6b77fd5aa2c9fabf76", + "distribution/clients/codex.toml": "c2c59c7f28d04343470fa6901c11dfa5ade3464729f688623bbcf7e3dafa23f1", "distribution/clients/continue-hosted.yaml": "c26a04a27e59512443ea2565fb47374b785e939e2e7490c68b1abf76fb156f62", - "distribution/clients/continue.yaml": "5713859d8fbbd981f92a343ee7781a78b8075b934423d4b07f222e0977e3b568", + "distribution/clients/continue.yaml": "c0be7b255bf5cdedec6775c9f7057b97bddfa2978a0cc9cc7708e417deb99ae4", "distribution/clients/devin-desktop-hosted.json": "1380d9d606b3aaf3891f4b0c85739a8f85bbf4165191c87f7a52aaee743477dc", - "distribution/clients/devin-desktop.json": "31fae47cc5f241dce3f36e071f6f3aea2f9a808f962b4270dbd63a53e596cb5b", - "distribution/clients/mcp-stdio.json": "31fae47cc5f241dce3f36e071f6f3aea2f9a808f962b4270dbd63a53e596cb5b", - "distribution/clients/priority-two.md": "8917cf55a37fba41d8bf2e4a9afdc4661f2c9dcbf4215ad53146b760b878a649", - "distribution/clients/vscode.json": "552677f224d396dbd34423a213919fe81bfff07afa2b1e567b92baecffd0bf5a", + "distribution/clients/devin-desktop.json": "11f03c3619bd6468aadeb78cf6d05b33536d6cd98d1f525cce43830247e5e79e", + "distribution/clients/mcp-stdio.json": "11f03c3619bd6468aadeb78cf6d05b33536d6cd98d1f525cce43830247e5e79e", + "distribution/clients/priority-two.md": "35e19d4c070b93a4b2132c03122a557bf6dff8b5ec28590e097f1910a71404f7", + "distribution/clients/vscode.json": "e118e9ac7b9b69cab0a9fee4bbaa1c45e5951cf3d61a2f371203afcb16c93aff", "distribution/clients/xai-responses.json": "94fca03563997032fdbf18a36abd14a317d991879ee64e5cb20451fa5c4c353d", "distribution/clients/zed-hosted.json": "ebb83b967a3f34e73e33ce9d195dbc66f100e1d4739c2d9d20d7cd9d90f37fea", - "distribution/clients/zed.json": "26f5c5a75836f199e185c4c9cb22ab0a76bbd0281c8de3905b36104dc4cc1305", + "distribution/clients/zed.json": "718b4fca4a4cec78ef126bb4e1831f21211184094571e7bded58b9e208237e8f", "distribution/cline/logo-400.png": "3e04c6a8e4cdfc73e94a1dd7b2eb73ae6c94327f1fe91b83ac0623575611e16e", - "distribution/cline/offline-protocol/entry.json": "87ab958345135e3999bb7b762eeb608d041bb0b1317c29487c032b13ec57e8d1", + "distribution/cline/offline-protocol/entry.json": "0c048e72309996e7da082402d6db04e36bc32c82569d5c6b7539a8776b981822", "distribution/cline/offline-protocol/icon.svg": "2ede07df9324f8281339318b728267f19a01d5d23fb351c191612062a745eb43", - "distribution/mcp-registry/server.hosted.json": "f20b5170e3bbb5ab2a731e581d0de089276d58081731c76196a8a80e05cc1acb", - "distribution/mcp-registry/server.json": "a9bc959fb4d8b7b80fc73aa6fa5a0fc51d162d56d5024b670835d7363af93a82", - "gemini-extension.json": "7268135c6185b9da0e8aa93c0b8fc7d674223adbad43a605d6a3611f8d9702b7", - "plugins/offline-protocol/.claude-plugin/plugin.json": "22916b463967e43f8ea1586580dac334703f86c001d6ba777ab98b0c7bba22c4", - "plugins/offline-protocol/.codex-plugin/plugin.json": "cc1d1a9f5ce3b6af107d09e605490b59aef1b1326093306a0c6e45dfe9601a3a", - "plugins/offline-protocol/.mcp.json": "31fae47cc5f241dce3f36e071f6f3aea2f9a808f962b4270dbd63a53e596cb5b", - "plugins/offline-protocol/README.md": "e61756ce4cca975f5c685bc19d5bff1fababe567c8ed4ee45da2da7f0a1f8e2f", + "distribution/mcp-registry/server.hosted.json": "04726693d4f04f4e60f57203edfe3f71c883e3e406c3b6cb1826b0f455f46ebe", + "distribution/mcp-registry/server.json": "3e385bda474196bafa80cc89ba899f07e50264659217360e7fdd6fa1ec4680b6", + "gemini-extension.json": "793afe80f306411ae4e6cd873fb85ac3e39b23a4c56ddb435cd66e19fd563e67", + "plugins/offline-protocol/.claude-plugin/plugin.json": "4610e8f660dcddf6c3b6fc17cb4bb6672255fe7da61913420a643247c3596242", + "plugins/offline-protocol/.codex-plugin/plugin.json": "853285907dba27b2a314320642d66aee565c53042575c060c1657606e9e8005a", + "plugins/offline-protocol/.mcp.json": "11f03c3619bd6468aadeb78cf6d05b33536d6cd98d1f525cce43830247e5e79e", + "plugins/offline-protocol/README.md": "38207c4fd1e29f6a38cd0b055360346997a2472bb0919c271cadfa1478ccc87e", "plugins/offline-protocol/assets/logo.png": "8268382b80cd9e25a1509a1accdde7feae2233fd91bd5f041069d7fffcd8ade5", - "plugins/offline-protocol/mcp.json": "4e23e03e9f73ee6e8a438285ce5a4d7e1c58011a17e636515808a16f737b30c7", - "plugins/offline-protocol/plugin.json": "03909cab4db891cc751318e15892ecc0f946d3d3b45fd77203f8f5b494646327", - "plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md": "5d5731be0a4b11f18b0f003b081bfdf40f398c6a12cbe71b080eb09084296cf2" + "plugins/offline-protocol/mcp.json": "64019a244de913a39a35b760b87ade90380e26ca77493db3f72bfd14387ee3cc", + "plugins/offline-protocol/plugin.json": "b108ce28553860930aac264844744309a392971ffd1f762d8caaf97b2a164036", + "plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md": "381ec2463152b7dd6e3e7d3969ca1ab0e867bb5fece23cdddd92c570116caa18" } } diff --git a/distribution/clients/README.md b/distribution/clients/README.md index 0d88096..c023787 100644 --- a/distribution/clients/README.md +++ b/distribution/clients/README.md @@ -8,7 +8,7 @@ These tools help you build an application. They do not discover nearby devices, | | Local (default) | Hosted | | --- | --- | --- | -| Runs | `npx -y @offline-protocol/cli@0.2.9 mcp serve` on your machine, over stdio | `https://mcp.offlineprotocol.com/mcp` over Streamable HTTP | +| Runs | `npx -y @offline-protocol/cli@0.3.1 mcp serve` on your machine, over stdio | `https://mcp.offlineprotocol.com/mcp` over Streamable HTTP | | Needs | Node.js 18 or later with npx. The first run downloads the pinned CLI from npm | An Offline Protocol application API key and its matching application ID. Organization keys are rejected | | Account | None | Offline Protocol developer account | | Tools | All 18 tools | Excludes `scaffold_project`, `integrate_packages` and `init_project` | @@ -73,7 +73,7 @@ cursor-agent --plugin-dir ./plugins/offline-protocol **MCP server only.** Put the contents of [`mcp-stdio.json`](mcp-stdio.json) in `.cursor/mcp.json` for one project, or in `~/.cursor/mcp.json` for all projects. If the file already exists, merge the `offline-protocol` entry into `mcpServers`. You can also open this install link in Cursor: ```text -cursor://anysphere.cursor-deeplink/mcp/install?name=offline-protocol&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBvZmZsaW5lLXByb3RvY29sL2NsaUAwLjIuOSIsIm1jcCIsInNlcnZlIl19 +cursor://anysphere.cursor-deeplink/mcp/install?name=offline-protocol&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBvZmZsaW5lLXByb3RvY29sL2NsaUAwLjMuMSIsIm1jcCIsInNlcnZlIl19 ``` Check it with the Cursor CLI (no Cursor login is needed for these two commands): @@ -108,19 +108,19 @@ VS Code reads MCP servers from `mcp.json` with a top-level `servers` object. Use Add to your user profile from a terminal: ```sh -code --add-mcp '{"name":"offline-protocol","type":"stdio","command":"npx","args":["-y","@offline-protocol/cli@0.2.9","mcp","serve"]}' +code --add-mcp '{"name":"offline-protocol","type":"stdio","command":"npx","args":["-y","@offline-protocol/cli@0.3.1","mcp","serve"]}' ``` Or open this install link, which asks VS Code to install the same server: ```text -vscode:mcp/install?%7B%22name%22%3A%22offline-protocol%22%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40offline-protocol%2Fcli%400.2.9%22%2C%22mcp%22%2C%22serve%22%5D%7D +vscode:mcp/install?%7B%22name%22%3A%22offline-protocol%22%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40offline-protocol%2Fcli%400.3.1%22%2C%22mcp%22%2C%22serve%22%5D%7D ``` On web pages where `vscode:` links are not clickable (such as GitHub READMEs), use the web redirect, which opens the same install link: ```text -https://vscode.dev/redirect/mcp/install?name=offline-protocol&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40offline-protocol%2Fcli%400.2.9%22%2C%22mcp%22%2C%22serve%22%5D%7D +https://vscode.dev/redirect/mcp/install?name=offline-protocol&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40offline-protocol%2Fcli%400.3.1%22%2C%22mcp%22%2C%22serve%22%5D%7D ``` For one workspace, copy [`vscode.json`](vscode.json) to `.vscode/mcp.json` (merge into `servers` if the file exists). Workspace servers start once you trust the workspace; user-profile servers ask for trust on first start. Run **MCP: List Servers** to start or inspect `offline-protocol`, then pick its tools in the Chat tools menu. diff --git a/distribution/clients/codex.toml b/distribution/clients/codex.toml index 3e937f2..71206b8 100644 --- a/distribution/clients/codex.toml +++ b/distribution/clients/codex.toml @@ -1,3 +1,3 @@ [mcp_servers.offline-protocol] command = "npx" -args = ["-y", "@offline-protocol/cli@0.2.9", "mcp", "serve"] +args = ["-y", "@offline-protocol/cli@0.3.1", "mcp", "serve"] diff --git a/distribution/clients/continue.yaml b/distribution/clients/continue.yaml index a6910c1..60904d8 100644 --- a/distribution/clients/continue.yaml +++ b/distribution/clients/continue.yaml @@ -1,5 +1,5 @@ name: Offline Protocol -version: 0.2.9 +version: 0.3.1 schema: v1 mcpServers: - name: Offline Protocol @@ -7,6 +7,6 @@ mcpServers: command: npx args: - "-y" - - "@offline-protocol/cli@0.2.9" + - "@offline-protocol/cli@0.3.1" - mcp - serve diff --git a/distribution/clients/devin-desktop.json b/distribution/clients/devin-desktop.json index 9d14d6f..1ce2486 100644 --- a/distribution/clients/devin-desktop.json +++ b/distribution/clients/devin-desktop.json @@ -4,7 +4,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ] diff --git a/distribution/clients/mcp-stdio.json b/distribution/clients/mcp-stdio.json index 9d14d6f..1ce2486 100644 --- a/distribution/clients/mcp-stdio.json +++ b/distribution/clients/mcp-stdio.json @@ -4,7 +4,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ] diff --git a/distribution/clients/priority-two.md b/distribution/clients/priority-two.md index ab57669..f6145d9 100644 --- a/distribution/clients/priority-two.md +++ b/distribution/clients/priority-two.md @@ -1,6 +1,6 @@ # Priority-two client setup -Each file here connects one client to the Offline Protocol developer MCP. Local files run `npx -y @offline-protocol/cli@0.2.9 mcp serve` and need no credentials. Hosted files use `https://mcp.offlineprotocol.com/mcp` with an application API key and the matching application id; hosted mode has no `scaffold_project`, `integrate_packages` or `init_project`. Never commit real keys. +Each file here connects one client to the Offline Protocol developer MCP. Local files run `npx -y @offline-protocol/cli@0.3.1 mcp serve` and need no credentials. Hosted files use `https://mcp.offlineprotocol.com/mcp` with an application API key and the matching application id; hosted mode has no `scaffold_project`, `integrate_packages` or `init_project`. Never commit real keys. ## Continue @@ -20,7 +20,7 @@ Each file here connects one client to the Offline Protocol developer MCP. Local - Local: `devin-desktop.json`. Hosted: `devin-desktop-hosted.json`. - The legacy Cascade agent and the Devin Local agent (default in new Devin Desktop tabs) both read `~/.config/devin/mcp_config.json` (`%APPDATA%\devin\mcp_config.json` on Windows). The Devin CLI also reads `.devin/mcp_config.json` and the gitignored `.devin/mcp_config.local.json`. - The hosted file uses `url` (accepted by Cascade, required by the Devin CLI) and `${env:...}` interpolation, which Cascade documents for `headers`. For the Devin CLI, prefer literal values in `.devin/mcp_config.local.json`. -- Devin CLI shortcut for local mode: `devin mcp add -s user offline-protocol -- npx -y @offline-protocol/cli@0.2.9 mcp serve`. +- Devin CLI shortcut for local mode: `devin mcp add -s user offline-protocol -- npx -y @offline-protocol/cli@0.3.1 mcp serve`. - Devin Local asks for approval before each MCP tool call by default. Cascade has a 100-tool limit across all servers. ## Devin (cloud) @@ -32,7 +32,7 @@ Customize, MCPs, Add custom MCP (needs the Manage MCP Servers permission): | Server name | Offline Protocol | Offline Protocol (hosted) | | Transport | STDIO | HTTP (Streamable HTTP) | | Command / URL | `npx` | `https://mcp.offlineprotocol.com/mcp` | -| Arguments | `-y @offline-protocol/cli@0.2.9 mcp serve` | | +| Arguments | `-y @offline-protocol/cli@0.3.1 mcp serve` | | | Authentication | none | Auth Header: `Authorization` = `Bearer ` | | Headers | | `x-app-id` = `` | diff --git a/distribution/clients/vscode.json b/distribution/clients/vscode.json index 3d89481..96a037d 100644 --- a/distribution/clients/vscode.json +++ b/distribution/clients/vscode.json @@ -5,7 +5,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ] diff --git a/distribution/clients/zed.json b/distribution/clients/zed.json index 4de3c55..d0812aa 100644 --- a/distribution/clients/zed.json +++ b/distribution/clients/zed.json @@ -4,7 +4,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ], diff --git a/distribution/cline/offline-protocol/entry.json b/distribution/cline/offline-protocol/entry.json index 82c725d..7ce88e4 100644 --- a/distribution/cline/offline-protocol/entry.json +++ b/distribution/cline/offline-protocol/entry.json @@ -25,7 +25,7 @@ "--", "npx", "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ], diff --git a/distribution/mcp-registry/server.hosted.json b/distribution/mcp-registry/server.hosted.json index 9d16854..f638536 100644 --- a/distribution/mcp-registry/server.hosted.json +++ b/distribution/mcp-registry/server.hosted.json @@ -7,7 +7,7 @@ "source": "github" }, "description": "Offline Protocol packages, workflows and integration guides over HTTPS. Read-only.", - "version": "0.2.9", + "version": "0.3.1", "websiteUrl": "https://www.offlineprotocol.com/docs/tools/overview", "icons": [ { diff --git a/distribution/mcp-registry/server.json b/distribution/mcp-registry/server.json index 8d9013f..b530c0b 100644 --- a/distribution/mcp-registry/server.json +++ b/distribution/mcp-registry/server.json @@ -3,7 +3,7 @@ "name": "com.offlineprotocol/cli", "title": "Offline Protocol", "description": "Find Offline Protocol SDK packages, read integration guides, plan and scaffold local apps.", - "version": "0.2.9", + "version": "0.3.1", "websiteUrl": "https://www.offlineprotocol.com/docs/tools/overview", "repository": { "url": "https://github.com/Offline-Protocol/offline-protocol-agent-plugins", @@ -21,7 +21,7 @@ "registryType": "npm", "registryBaseUrl": "https://registry.npmjs.org", "identifier": "@offline-protocol/cli", - "version": "0.2.9", + "version": "0.3.1", "runtimeHint": "npx", "transport": { "type": "stdio" diff --git a/gemini-extension.json b/gemini-extension.json index 99897e4..d1d623f 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "offline-protocol", - "version": "0.1.4", + "version": "0.1.5", "description": "Build local device workflows with Offline Protocol. Find SDK packages, read integration guides, plan an implementation, and scaffold a project.", "contextFileName": "plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md", "mcpServers": { @@ -8,7 +8,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ] diff --git a/plugins/offline-protocol/.claude-plugin/plugin.json b/plugins/offline-protocol/.claude-plugin/plugin.json index 9d6142b..9c102ee 100644 --- a/plugins/offline-protocol/.claude-plugin/plugin.json +++ b/plugins/offline-protocol/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "offline-protocol", "displayName": "Offline Protocol", - "version": "0.1.4", + "version": "0.1.5", "description": "Build local device workflows with Offline Protocol. Find SDK packages, read integration guides, plan an implementation, and scaffold a project.", "author": { "name": "Offline Protocol", diff --git a/plugins/offline-protocol/.codex-plugin/plugin.json b/plugins/offline-protocol/.codex-plugin/plugin.json index df3b338..b5f7902 100644 --- a/plugins/offline-protocol/.codex-plugin/plugin.json +++ b/plugins/offline-protocol/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "offline-protocol", - "version": "0.1.4", + "version": "0.1.5", "description": "Build local device workflows with Offline Protocol. Find SDK packages, read integration guides, plan an implementation, and scaffold a project.", "author": { "name": "Offline Protocol", diff --git a/plugins/offline-protocol/.mcp.json b/plugins/offline-protocol/.mcp.json index 9d14d6f..1ce2486 100644 --- a/plugins/offline-protocol/.mcp.json +++ b/plugins/offline-protocol/.mcp.json @@ -4,7 +4,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ] diff --git a/plugins/offline-protocol/README.md b/plugins/offline-protocol/README.md index 0d785fb..4ffb2ee 100644 --- a/plugins/offline-protocol/README.md +++ b/plugins/offline-protocol/README.md @@ -2,13 +2,13 @@ Find the SDK packages and implementation guidance for an application, plan the integration, and scaffold supported projects from your coding agent. -This package runs the published Offline Protocol CLI's local MCP server. It does not operate a device fleet or expose live device controls. Node.js 18 or later and npm/npx must be available to the client. The first run downloads the pinned CLI release (`@offline-protocol/cli@0.2.9`) from npm; no Offline Protocol account is needed for local tools. +This package runs the published Offline Protocol CLI's local MCP server. It does not operate a device fleet or expose live device controls. Node.js 18 or later and npm/npx must be available to the client. The first run downloads the pinned CLI release (`@offline-protocol/cli@0.3.1`) from npm; no Offline Protocol account is needed for local tools. ## Install - Claude Code: `claude plugin marketplace add Offline-Protocol/offline-protocol-agent-plugins`, then `claude plugin install offline-protocol@offline-protocol`. - Gemini CLI: `gemini extensions install https://github.com/Offline-Protocol/offline-protocol-agent-plugins`. -- Codex: clone the repository, run `codex plugin marketplace add ./offline-protocol-agent-plugins`, then `codex plugin add offline-protocol@offline-protocol`. Or add only the server: `codex mcp add offline-protocol -- npx -y @offline-protocol/cli@0.2.9 mcp serve`. +- Codex: clone the repository, run `codex plugin marketplace add ./offline-protocol-agent-plugins`, then `codex plugin add offline-protocol@offline-protocol`. Or add only the server: `codex mcp add offline-protocol -- npx -y @offline-protocol/cli@0.3.1 mcp serve`. - Cursor: copy this folder into `~/.cursor/plugins/local/offline-protocol` and reload Cursor. Organization policies may disable local imports. - Other MCP clients: see `distribution/clients` in this repository. @@ -18,7 +18,7 @@ Try: “Add an encrypted local handoff to this React Native app. Explain the dev ## What this plugin runs, writes and fetches -- **Runs:** `npx -y @offline-protocol/cli@0.2.9 mcp serve`, a local stdio MCP server. The first launch downloads the pinned package from the npm registry (about 47 MB unpacked, with prebuilt binaries for macOS, Linux and Windows); later launches reuse the npm cache. +- **Runs:** `npx -y @offline-protocol/cli@0.3.1 mcp serve`, a local stdio MCP server. The first launch downloads the pinned package from the npm registry (about 47 MB unpacked, with prebuilt binaries for macOS, Linux and Windows); later launches reuse the npm cache. - **Reads:** the package, workflow, template and skill registry bundled inside that CLI release. Search and read tools make no network requests and need no Offline Protocol account or key. - **Writes, only when the agent calls these tools:** `scaffold_project` creates a new project directory; `integrate_packages` edits the target project's `package.json`; `init_project` adds `offline.config.json`, adds `.mcp.json` only if none exists, and appends an Offline Protocol section to `AGENTS.md`. Use the dry-run options first and review the diff. - **Fetches, only for React Native scaffolds:** `scaffold_project` prepares native `android/` and `ios/` shells. It first looks for a cached shell in `~/.offline/cache`, and otherwise runs `npx @react-native-community/cli init` to generate it (a tarball is downloaded only when `OFFLINE_RN_SHELL_URL` is set). diff --git a/plugins/offline-protocol/mcp.json b/plugins/offline-protocol/mcp.json index a26e5d5..c4736ac 100644 --- a/plugins/offline-protocol/mcp.json +++ b/plugins/offline-protocol/mcp.json @@ -6,7 +6,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.9", + "@offline-protocol/cli@0.3.1", "mcp", "serve" ] diff --git a/plugins/offline-protocol/plugin.json b/plugins/offline-protocol/plugin.json index a1ec78f..016bc9d 100644 --- a/plugins/offline-protocol/plugin.json +++ b/plugins/offline-protocol/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "offline-protocol", - "version": "0.1.4", + "version": "0.1.5", "description": "Build local device workflows with Offline Protocol. Find SDK packages, read integration guides, plan an implementation, and scaffold a project.", "author": { "name": "Offline Protocol", diff --git a/plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md b/plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md index 1cb9cbe..634b122 100644 --- a/plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md +++ b/plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md @@ -25,7 +25,13 @@ For retained events and handoffs, distinguish receipt by an SDK from persistence The registry bundled with this CLI release pins Mesh SDK 0.31.0; telemetry in the React Native scaffolds is optional hosted upload (`enableTelemetry`) kept in `src/diagnostics.ts`, separate from networking. 0.30.0 fixed which certificates the telemetry uploader trusts, so an app that calls `enableTelemetry` on 0.26.0 to 0.29.0 should update. 0.31.0 adds the `peer_rssi` event (an exhaustive TypeScript switch over the event union needs that case), Nostr key-package lookup for a peer with no session, and self-healing of split 1:1 sessions. npm may publish newer releases. From Mesh SDK 0.28.0, Wi-Fi Direct is opt-in and forms groups between Android phones only and iPhones use a Network framework peer stream; from 0.29.0 Android also joins that slot on a shared Wi-Fi network, and otherwise an Android phone and an iPhone meet over BLE or a configured relay, so the React Native scaffolds keep `wifiDirect` disabled; read the `mesh-networking` skill before enabling it. A failed printer LAN still requires a working path to the printer, such as an existing USB-connected kitchen device. Do not promise that software replaces a missing radio or physical connection. -Registry samples can lag the published packages, so check SDK calls against the installed type definitions. Facts that samples written elsewhere often get wrong: Mesh SDK event payloads use snake_case fields (`message_id`, `peer_id`, `file_id`); `protocol.on()` returns the protocol, so remove listeners with `protocol.off()`; `priority` takes the `MessagePriority` enum. The published web `@offline-protocol/id-react` 0.2.0 uses `appId` on `OfflineAppProvider` (`projectId` is deprecated). `@offline-protocol/id-react-native` is pinned at 0.3.3 in the CLI registry (appId from 0.3.2+). Flutter has a plugin preview (`offline-protocol-flutter`, the Dart package `offline_protocol` in the SDK repository) with the React Native module's transports and native surface (`MeshSdk`) from 0.31.0: it is not on pub.dev, so the app depends on its path in a checkout of the SDK. Java on the JVM (`offline-protocol-java`, on Maven Central as `com.offlineprotocol:offline-protocol-java`, JDK 22 or later), Ruby (`offline-protocol-ruby`, the `offline_protocol` gem on RubyGems from 0.31.0, Ruby 3.3 or later) and the C API (`offline-protocol-c`, `offline_protocol.h` and the shared library from the GitHub release) leave the transports to the host and take the native library from the release's desktop archives. The browser engine (`offline-protocol-web`, experimental from 0.31.0) runs a full node in a Web Worker with WebRTC, a nearby room, Nostr and, in Chromium, Web Bluetooth; its JavaScript client is built from the SDK repository and is not on npm. Python (`offline-protocol-sdk` on PyPI) and Rust (`offline-protocol` on crates.io) cover servers and desktops; with the `http` extra the Python service also serves an HTTP front, so programs that do not use the SDK call services on other devices with plain HTTP (see the `http-front` skill). Native Swift (`offline-protocol-swift`, a Swift package) and Kotlin (`offline-protocol-android`, on Maven Central as `com.offlineprotocol:offline-protocol-sdk` from 0.29.0, minSdk 24) are early previews in which the app wires transports and storage itself and API names may change. `offline-protocol-leaf` is the protocol crate firmware teams build on for ESP32 RISC-V, Cortex-M and WASI targets, with the radio, entropy, clock and storage coming from their firmware; for a ready device, Offline Protocol's IntelligenceMesh Relay (ESP32-PICO-V3-02) relays Offline Protocol mesh traffic over Bluetooth LE. The planning tools have no starter for any of these and return that limitation instead of a plan, so tell the user rather than switching frameworks silently. `.mcp.json` files written by `init_project` or a scaffold register the same pinned npx server; when this plugin already provides the server, do not add a second copy. +Registry samples can lag the published packages, so check SDK calls against the installed type definitions. Facts that samples written elsewhere often get wrong: Mesh SDK event payloads use snake_case fields (`message_id`, `peer_id`, `file_id`); `protocol.on()` returns the protocol, so remove listeners with `protocol.off()`; `priority` takes the `MessagePriority` enum. The CLI registry pins `@offline-protocol/id-react` 0.3.0 and `@offline-protocol/id-react-native` 0.4.0; both take `appId` on `OfflineAppProvider` (`projectId` is deprecated), and in both `sendCode` resolves to `true` and throws `OfflineIdError` (with `code`, `nextSteps`) when refused instead of resolving to `false`. Flutter has a plugin preview (`offline-protocol-flutter`, the Dart package `offline_protocol` in the SDK repository) with the React Native module's transports and native surface (`MeshSdk`) from 0.31.0: it is not on pub.dev, so the app depends on its path in a checkout of the SDK. Java on the JVM (`offline-protocol-java`, on Maven Central as `com.offlineprotocol:offline-protocol-java`, JDK 22 or later), Ruby (`offline-protocol-ruby`, the `offline_protocol` gem on RubyGems from 0.31.0, Ruby 3.3 or later) and the C API (`offline-protocol-c`, `offline_protocol.h` and the shared library from the GitHub release) leave the transports to the host and take the native library from the release's desktop archives. The browser engine (`offline-protocol-web`, experimental from 0.31.0) runs a full node in a Web Worker with WebRTC, a nearby room, Nostr and, in Chromium, Web Bluetooth; its JavaScript client is built from the SDK repository and is not on npm. Python (`offline-protocol-sdk` on PyPI) and Rust (`offline-protocol` on crates.io) cover servers and desktops; with the `http` extra the Python service also serves an HTTP front, so programs that do not use the SDK call services on other devices with plain HTTP (see the `http-front` skill). Native Swift (`offline-protocol-swift`, a Swift package) and Kotlin (`offline-protocol-android`, on Maven Central as `com.offlineprotocol:offline-protocol-sdk` from 0.29.0, minSdk 24) are early previews in which the app wires transports and storage itself and API names may change. `offline-protocol-leaf` is the protocol crate firmware teams build on for ESP32 RISC-V, Cortex-M and WASI targets, with the radio, entropy, clock and storage coming from their firmware; for a ready device, Offline Protocol's IntelligenceMesh Relay (ESP32-PICO-V3-02) relays Offline Protocol mesh traffic over Bluetooth LE. The planning tools have no starter for any of these and return that limitation instead of a plan, so tell the user rather than switching frameworks silently. `.mcp.json` files written by `init_project` or a scaffold register the same pinned npx server; when this plugin already provides the server, do not add a second copy. + +## Set up the developer's application (no portal) + +The local MCP server signs in with the CLI's developer session and has account tools for every portal setup step: `list_applications`, `create_application`, and, each idempotent, `app_status` (what is missing for sign-in on iOS, Android, web and server, with the fix), `detect_native_apps`, `register_native_app`, `remove_native_app`, `set_development_builds`, `set_development_mode` (simulators, emulators and Expo Go, 1-72 h), `set_production`, `set_android_degraded`, `attestation_history`, `configure_native_project` (Expo App Attest entitlement), `create_api_key` (writes the key to a gitignored env file), `set_allowed_origins`, `set_features` (telemetry, relay, proof-of-location) and `apply_project_setup` (converges to the `app` block of offline.config.json; `detect=true` registers the native apps the project ships). The same actions are CLI commands: `offline apps status`, `offline apps native …`, `offline apps origins …`, `offline apps features …`, `offline apply --detect`. If no session exists, run `offline login --email ` (it sends a code), ask the developer for the code once, and run `offline login --email --code `. + +Native OfflineID sign-in needs app attestation: register every iOS (bundle ID + Team ID) and Android (package + signing-certificate SHA-256) app the project ships, pass attestation providers to `OfflineAppProvider` (`@offline-protocol/id-react-native` 0.4.0 or later attests code requests and sign-ins; Expo: `createExpoAppIntegrityProviders` with `@expo/app-integrity` and the App Attest entitlement; bare React Native: a native module, which the React Native starters ship in `modules/offline-id-attestation`), and test on a physical device. Simulators, emulators and Expo Go sign in only while development mode is on (`offline apps native dev-mode on --hours 24`; refused for an app marked production). Android phones that cannot fully attest sign in at a capped, degraded trust level, but a chain that does not end at Google's attestation roots (a software keystore, a vendor root) is refused (`untrusted_chain`). API errors carry `data.missing` and `data.next_steps` naming the command to run; run it rather than guessing. Never send an `Origin` header from a native app to get around attestation. ## Verify and hand off From 4f049493ab485302ab6fc99d80012a4e8147571a Mon Sep 17 00:00:00 2001 From: kivtxs <131401183+kivtxs@users.noreply.github.com> Date: Wed, 4 Nov 2026 12:14:40 -0500 Subject: [PATCH 2/2] Re-export of Offline-Protocol/CLI@53b2ebe94352 (pin branch head after a template README fix) --- SOURCE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOURCE.json b/SOURCE.json index 07aa7d1..94179d2 100644 --- a/SOURCE.json +++ b/SOURCE.json @@ -2,7 +2,7 @@ "repository": "Offline-Protocol/offline-protocol-agent-plugins", "source": { "repository": "Offline-Protocol/CLI", - "commit": "c98975a868004f8e2f7bb942a67b9978c1582818" + "commit": "53b2ebe94352900ec485ac1ba7d2eb5024c1e04f" }, "cliPackage": "@offline-protocol/cli@0.3.1", "generator": "scripts/export-agent-plugins.mjs",