diff --git a/README.md b/README.md index c2b2883..df078d2 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.6 mcp serve`, or +Protocol CLI, `npx -y @offline-protocol/cli@0.2.7 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.6`) from npm. Local tools need no Offline +(`@offline-protocol/cli@0.2.7`) 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.6 mcp serve +codex mcp add offline-protocol -- npx -y @offline-protocol/cli@0.2.7 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.6","mcp","serve"]}' +code --add-mcp '{"name":"offline-protocol","type":"stdio","command":"npx","args":["-y","@offline-protocol/cli@0.2.7","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.6 mcp serve +cline mcp install offline-protocol -- npx -y @offline-protocol/cli@0.2.7 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.6 mcp serve`. Devin Desktop: +arguments `-y @offline-protocol/cli@0.2.7 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.6", "mcp", "serve"] + "args": ["-y", "@offline-protocol/cli@0.2.7", "mcp", "serve"] } } } diff --git a/SOURCE.json b/SOURCE.json index 5b4655e..ed489c3 100644 --- a/SOURCE.json +++ b/SOURCE.json @@ -2,9 +2,9 @@ "repository": "Offline-Protocol/offline-protocol-agent-plugins", "source": { "repository": "Offline-Protocol/CLI", - "commit": "d36d002b445ab7a44f746c4164a696b9d70660bc" + "commit": "bc2a055a8e07ad9b81f403f9f06fe26181787b93" }, - "cliPackage": "@offline-protocol/cli@0.2.6", + "cliPackage": "@offline-protocol/cli@0.2.7", "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": "b13dc78052f1b5211ce1026915c159be4ae6aedbe7d5a7e3dee777077a2216dd", + "README.md": "2d9a9f98a7e7e26ab90f6b4715ce90f67c499e4126f4ffc46373d3ac243ea94c", "SECURITY.md": "13353905286c9895c4ac3d3ccfcd7d031bcd0cacde13216d88666d58af4e3b1f", - "distribution/clients/README.md": "a201daf584c9efa21953a367b05441273907727c70621bc0738c652649009a83", - "distribution/clients/codex.toml": "753a5e12d9d8847405345a83e4919bbb7d06704b487a2e0c4ee110c5e474a9d9", + "distribution/clients/README.md": "e7025061f29d40d617a9e66d8c8a9f4e0b34dc95a6fcb8a40d2ffc5a5b7c061f", + "distribution/clients/codex.toml": "a8a3cdb5235868be07fc8286a32612933822d9df3fdefa0857877df99f5ce6d8", "distribution/clients/continue-hosted.yaml": "c26a04a27e59512443ea2565fb47374b785e939e2e7490c68b1abf76fb156f62", - "distribution/clients/continue.yaml": "8fd60143f15ca09683d2830fec416e541ec3420f75b3ff440f51ff00383a2a6a", + "distribution/clients/continue.yaml": "dc0c176d806949aad25af66a910348c4faba569ca6aae2fb034cee7d73272a15", "distribution/clients/devin-desktop-hosted.json": "1380d9d606b3aaf3891f4b0c85739a8f85bbf4165191c87f7a52aaee743477dc", - "distribution/clients/devin-desktop.json": "8d7b97a85dd608b0ead58758ccc23f7c48b9692f0abcb522d7ba99e077b3981a", - "distribution/clients/mcp-stdio.json": "8d7b97a85dd608b0ead58758ccc23f7c48b9692f0abcb522d7ba99e077b3981a", - "distribution/clients/priority-two.md": "9864a48d8f68101b4b04dae33c3bf6f8c6a8899c119ee61da3917019ee04a288", - "distribution/clients/vscode.json": "4b652a8deaa8eef39eac54660cd1e1036fbbf8af2b03fd6d3afeb26d5f821f9a", + "distribution/clients/devin-desktop.json": "9dfb42529f21d4aeaec8c4e0a7a535406118867117d6f7d2dfa8f58e811c7496", + "distribution/clients/mcp-stdio.json": "9dfb42529f21d4aeaec8c4e0a7a535406118867117d6f7d2dfa8f58e811c7496", + "distribution/clients/priority-two.md": "62ad41b70ebdc2e62eb09ed1492e2bfa5c131f65d1fcad4ed6d4abc3b9555f7e", + "distribution/clients/vscode.json": "bd25231faf0bbd37b6a003448224e87b31984e1b8135f034835568715e0b74e1", "distribution/clients/xai-responses.json": "94fca03563997032fdbf18a36abd14a317d991879ee64e5cb20451fa5c4c353d", "distribution/clients/zed-hosted.json": "ebb83b967a3f34e73e33ce9d195dbc66f100e1d4739c2d9d20d7cd9d90f37fea", - "distribution/clients/zed.json": "ff14e4c8f234378d97da9df562bac9dde5eee16797a6199a36fe4b5a99b8b8aa", + "distribution/clients/zed.json": "f6dd99d93d560f80bc5ce55d055a45c6164001b807489e1131469eea2743d736", "distribution/cline/logo-400.png": "3e04c6a8e4cdfc73e94a1dd7b2eb73ae6c94327f1fe91b83ac0623575611e16e", - "distribution/cline/offline-protocol/entry.json": "bec28cef9a414e9bb87b8b025127ab155a901f2be55909c5ecc94c97d6e6f4aa", + "distribution/cline/offline-protocol/entry.json": "303a913a32a817bff4085c7d98fca44724853c0e4be849e5e88331e004747ea6", "distribution/cline/offline-protocol/icon.svg": "2ede07df9324f8281339318b728267f19a01d5d23fb351c191612062a745eb43", - "distribution/mcp-registry/server.hosted.json": "805c4d63d0803c393ac390a6d2cae0a6255f79d08d3b33aabfeb8a18fa5c6d3f", - "distribution/mcp-registry/server.json": "a4613017b117767f4aa77b70449788882df7c09118c1593d2f8b38d8d9ff523b", - "gemini-extension.json": "0637dc73eb3b1be0442e00eb226b9122e2d6591861ab77423545b08cf31bd77c", - "plugins/offline-protocol/.claude-plugin/plugin.json": "7ac5c636b85db49a0e9d30e7b5a2e48d650302ff12576d5f64c9cb0bfb57b1b2", - "plugins/offline-protocol/.codex-plugin/plugin.json": "abf4a1d6ce01b95f7de035b39e6ab35caf95a88b8f61d4e990130d03110dfcdd", - "plugins/offline-protocol/.mcp.json": "8d7b97a85dd608b0ead58758ccc23f7c48b9692f0abcb522d7ba99e077b3981a", - "plugins/offline-protocol/README.md": "7bb132de5ced0da9093ca2307db00a2a0de0271dfbfba212d4b36c7c45ac2ee8", + "distribution/mcp-registry/server.hosted.json": "9fa9d1062b6dc0048c651e23a4f82fb29f7af2ed7262fbee92f5bc5f56a39882", + "distribution/mcp-registry/server.json": "a7f4ef93694eb69a6871d77f3d15f1045d4141f51f004d03016e60476bc16512", + "gemini-extension.json": "70b3bf1715410ff53567d999f772c756bff4119256cf266dd28802e1d7b0a411", + "plugins/offline-protocol/.claude-plugin/plugin.json": "4d7c1ee23ba9288d320eba8038ae02c1e4052ccfb57189059f0c109d3be8f495", + "plugins/offline-protocol/.codex-plugin/plugin.json": "8c1916a585afb5c799c64e7464b654713c364c5d218ba54b1e5b5948dd1012f2", + "plugins/offline-protocol/.mcp.json": "9dfb42529f21d4aeaec8c4e0a7a535406118867117d6f7d2dfa8f58e811c7496", + "plugins/offline-protocol/README.md": "c4689715a8bf09313b25ac1ebf3611b30bcc4c7ea1744c7d46ab3b219c393d0d", "plugins/offline-protocol/assets/logo.png": "8268382b80cd9e25a1509a1accdde7feae2233fd91bd5f041069d7fffcd8ade5", - "plugins/offline-protocol/mcp.json": "8a81b80a7a9e0d6d047c0d5cca00d7958ea2d95fdaa91459cc5d122d570e2765", - "plugins/offline-protocol/plugin.json": "3b05931aa5a247815fdc461a771455faacccec0141b6c427998cc6784ec4c58c", - "plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md": "7cdd4e979925b49988dfa9326aceefb982a94f68fad949198342b2a8bc5a47ca" + "plugins/offline-protocol/mcp.json": "6a0bcb4eface1a0f898d09821a56af4d069357ceda2f479a018f0f3748594eaa", + "plugins/offline-protocol/plugin.json": "6ac29161035f6f19198a7b987a7251c1038435e3c85773cef86b6dbc86f6a433", + "plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md": "fd29c869f5cba273789023a6a69607671e60cae5611b5e61f1e267c1ddb5c24d" } } diff --git a/distribution/clients/README.md b/distribution/clients/README.md index 9deb1e2..2e5b2f9 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.6 mcp serve` on your machine, over stdio | `https://mcp.offlineprotocol.com/mcp` over Streamable HTTP | +| Runs | `npx -y @offline-protocol/cli@0.2.7 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=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBvZmZsaW5lLXByb3RvY29sL2NsaUAwLjIuNiIsIm1jcCIsInNlcnZlIl19 +cursor://anysphere.cursor-deeplink/mcp/install?name=offline-protocol&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBvZmZsaW5lLXByb3RvY29sL2NsaUAwLjIuNyIsIm1jcCIsInNlcnZlIl19 ``` 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.6","mcp","serve"]}' +code --add-mcp '{"name":"offline-protocol","type":"stdio","command":"npx","args":["-y","@offline-protocol/cli@0.2.7","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.6%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.2.7%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.6%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.2.7%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 360c253..88437c7 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.6", "mcp", "serve"] +args = ["-y", "@offline-protocol/cli@0.2.7", "mcp", "serve"] diff --git a/distribution/clients/continue.yaml b/distribution/clients/continue.yaml index f3231d2..f2daa5d 100644 --- a/distribution/clients/continue.yaml +++ b/distribution/clients/continue.yaml @@ -1,5 +1,5 @@ name: Offline Protocol -version: 0.2.6 +version: 0.2.7 schema: v1 mcpServers: - name: Offline Protocol @@ -7,6 +7,6 @@ mcpServers: command: npx args: - "-y" - - "@offline-protocol/cli@0.2.6" + - "@offline-protocol/cli@0.2.7" - mcp - serve diff --git a/distribution/clients/devin-desktop.json b/distribution/clients/devin-desktop.json index 84509c3..0516bda 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.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ] diff --git a/distribution/clients/mcp-stdio.json b/distribution/clients/mcp-stdio.json index 84509c3..0516bda 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.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ] diff --git a/distribution/clients/priority-two.md b/distribution/clients/priority-two.md index ce0c4d0..e823d4a 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.6 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.2.7 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.6 mcp serve`. +- Devin CLI shortcut for local mode: `devin mcp add -s user offline-protocol -- npx -y @offline-protocol/cli@0.2.7 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.6 mcp serve` | | +| Arguments | `-y @offline-protocol/cli@0.2.7 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 e6e5bac..40e9844 100644 --- a/distribution/clients/vscode.json +++ b/distribution/clients/vscode.json @@ -5,7 +5,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ] diff --git a/distribution/clients/zed.json b/distribution/clients/zed.json index 559941c..4504075 100644 --- a/distribution/clients/zed.json +++ b/distribution/clients/zed.json @@ -4,7 +4,7 @@ "command": "npx", "args": [ "-y", - "@offline-protocol/cli@0.2.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ], diff --git a/distribution/cline/offline-protocol/entry.json b/distribution/cline/offline-protocol/entry.json index e69314d..8e1088c 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.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ], diff --git a/distribution/mcp-registry/server.hosted.json b/distribution/mcp-registry/server.hosted.json index bf1a7fb..361f1ab 100644 --- a/distribution/mcp-registry/server.hosted.json +++ b/distribution/mcp-registry/server.hosted.json @@ -2,8 +2,12 @@ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", "name": "com.offlineprotocol/hosted", "title": "Offline Protocol (hosted)", + "repository": { + "url": "https://github.com/Offline-Protocol/offline-protocol-agent-plugins", + "source": "github" + }, "description": "Offline Protocol packages, workflows and integration guides over HTTPS. Read-only.", - "version": "0.2.6", + "version": "0.2.7", "websiteUrl": "https://www.offlineprotocol.com/docs/tools/overview", "icons": [ { diff --git a/distribution/mcp-registry/server.json b/distribution/mcp-registry/server.json index 0eeb77c..40c8d9c 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.6", + "version": "0.2.7", "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.6", + "version": "0.2.7", "runtimeHint": "npx", "transport": { "type": "stdio" diff --git a/gemini-extension.json b/gemini-extension.json index de5bf45..d010046 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "offline-protocol", - "version": "0.1.1", + "version": "0.1.2", "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.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ] diff --git a/plugins/offline-protocol/.claude-plugin/plugin.json b/plugins/offline-protocol/.claude-plugin/plugin.json index a635410..8f95cfa 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.1", + "version": "0.1.2", "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 34e1266..3eb2c63 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.1", + "version": "0.1.2", "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", @@ -14,8 +14,8 @@ "mcpServers": "./.mcp.json", "interface": { "displayName": "Offline Protocol", - "shortDescription": "Build apps that work offline", - "longDescription": "Build with Offline Protocol from Codex. A local MCP server from the published Offline Protocol CLI lets the agent search packages and workflows, resolve installs for React Native and web targets, read integration guides, and scaffold or integrate projects. It does not discover or control physical devices.", + "shortDescription": "Build local device workflows", + "longDescription": "Build with Offline Protocol from Codex. A local MCP server from the published Offline Protocol CLI lets the agent search packages and workflows, resolve installs for React Native, web, Python and Rust targets and the native Swift and Android previews, read integration guides, and scaffold or integrate projects. It does not discover or control physical devices.", "developerName": "Offline Protocol", "category": "Productivity", "capabilities": ["Read", "Write"], diff --git a/plugins/offline-protocol/.mcp.json b/plugins/offline-protocol/.mcp.json index 84509c3..0516bda 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.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ] diff --git a/plugins/offline-protocol/README.md b/plugins/offline-protocol/README.md index b4fb638..fd1447c 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.6`) 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.2.7`) 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.6 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.2.7 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.6 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.2.7 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 7e56eef..27ceac8 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.6", + "@offline-protocol/cli@0.2.7", "mcp", "serve" ] diff --git a/plugins/offline-protocol/plugin.json b/plugins/offline-protocol/plugin.json index baa50d3..7fd4999 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.1", + "version": "0.1.2", "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 2d9c094..4dcb5a5 100644 --- a/plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md +++ b/plugins/offline-protocol/skills/build-with-offline-protocol/SKILL.md @@ -13,7 +13,7 @@ If the `offline-protocol` tools are not available in this session (claude.ai cha Establish the existing app framework, device operating systems, available radios, and the action the user needs to complete. Read the repository first when it already answers those questions. -Use `search_capabilities` or `search_workflows` with that outcome, then `get_workflow`, `get_package`, and `get_skill` for the relevant results. Retrieve current tool schemas before calling them. Do not assume a workflow or package exists because its name sounds plausible. Use `resolve_packages` for the target platform and install requirements. If the registry does not cover the platform, state that gap and consult https://www.offlineprotocol.com/docs/getting-started/platforms. For frameworks the registry does not cover, such as Flutter or native Kotlin or Swift, `generate_architecture`, `preview_scaffold` and `scaffold_project` return that limitation instead of a plan; pass `platform` explicitly only when the user chooses a supported framework, and compare the returned `platform` with the user's framework before proceeding. +Use `search_capabilities` or `search_workflows` with that outcome, then `get_workflow`, `get_package`, and `get_skill` for the relevant results. Retrieve current tool schemas before calling them. Do not assume a workflow or package exists because its name sounds plausible. Use `resolve_packages` for the target platform and install requirements. If the registry does not cover the platform, state that gap and consult https://www.offlineprotocol.com/docs/getting-started/platforms. For frameworks the planner has no starter for, such as Flutter or native Kotlin or Swift, `generate_architecture`, `preview_scaffold` and `scaffold_project` return that limitation instead of a plan; pass `platform` explicitly only when the user chooses a supported framework, and compare the returned `platform` with the user's framework before proceeding. The registry is bundled with the CLI release. Check version-specific public documentation and published package versions before using newer APIs or presenting a template as production-ready. The live agent setup instructions are at https://dev.offlineprotocol.com/agent-setup/prompt.md. @@ -23,9 +23,9 @@ For a new project, inspect `get_template` and `preview_scaffold` before using `s For retained events and handoffs, distinguish receipt by an SDK from persistence by the receiving application and acceptance by its backend. Design application-level event IDs, durable storage and idempotent acceptance where the workflow needs recovery. A delivered message alone does not establish that an order printed, an event reached a database, or an actuator completed an action. -The registry bundled with this CLI release pins Mesh SDK 0.27.0; telemetry in the React Native scaffolds is optional hosted upload (`enableTelemetry`) kept in `src/diagnostics.ts`, separate from networking. npm may publish newer releases. Through at least Mesh SDK v0.27.0, the bundled phone Wi-Fi Direct and MultipeerConnectivity managers do not provide a working data path. Select BLE or a configured relay where supported, and keep `wifiDirect` disabled as the React Native scaffold and the registry skills do. 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. +The registry bundled with this CLI release pins Mesh SDK 0.29.0; telemetry in the React Native scaffolds is optional hosted upload (`enableTelemetry`) kept in `src/diagnostics.ts`, separate from networking. 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, native Kotlin and native Swift have no Offline Protocol package; the planning tools 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 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 no Offline Protocol package. 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`, a GitHub release download that is not on Maven Central) are early previews in which the app wires transports and storage itself and API names may change. `offline-protocol-leaf` compiles for ESP32 and Cortex-M targets but has not run on a board, so do not present a microcontroller as a working peer. 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. ## Verify and hand off