From b66d7f3a683755f034e4c796e82965a74ace69d4 Mon Sep 17 00:00:00 2001 From: Biraj Date: Fri, 21 Aug 2026 17:39:52 -0700 Subject: [PATCH 1/2] feat(agent): add Vercel fx --- biome.json | 2 +- cli/src/agents/agents.ts | 90 +++++++++++++++++++++--------------- package.json | 4 +- pnpm-lock.yaml | 74 ++++++++++++++--------------- protocol/src/agents/index.ts | 1 + protocol/src/ai-legacy.ts | 1 + 6 files changed, 95 insertions(+), 77 deletions(-) diff --git a/biome.json b/biome.json index 5cdaf06..383308f 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.5.8/schema.json", + "$schema": "https://biomejs.dev/schemas/2.5.9/schema.json", "vcs": { "enabled": true, "clientKind": "git", diff --git a/cli/src/agents/agents.ts b/cli/src/agents/agents.ts index e50259e..c3533ed 100644 --- a/cli/src/agents/agents.ts +++ b/cli/src/agents/agents.ts @@ -62,6 +62,22 @@ export const BUILTIN_AGENT_DESCRIPTORS: Record = { args: ["acp"], }, }, + fx: { + id: "fx", + name: "Vercel fx", + title: "Vercel Fx", + agentExecutable: "fx", + installationCommands: { + Shell: { + os: ["macos", "linux"], + command: "curl -fsSL https://fx.sh/setup.sh | bash", + }, + }, + spawn: { + command: "fx", + args: ["acp"], + }, + }, "claude-code": { id: "claude-code", name: "Claude Code", @@ -96,33 +112,21 @@ export const BUILTIN_AGENT_DESCRIPTORS: Record = { args: ["-y", "@agentclientprotocol/claude-agent-acp"], }, }, - copilot: { - id: "copilot", - name: "GitHub Copilot", - title: "GitHub Copilot", - registryId: "github-copilot-cli", - agentExecutable: "copilot", + pi: { + id: "pi", + name: "Pi", + title: "Pi", + registryId: "pi-acp", + agentExecutable: "pi", installationCommands: { - Shell: { - os: ["linux", "macos"], - command: "curl -fsSL https://gh.io/copilot-install | bash", - }, npm: { os: ["all"], - command: "npm install -g @github/copilot", - }, - PowerShell: { - os: ["windows"], - command: "winget install GitHub.Copilot", - }, - Homebrew: { - os: ["macos", "linux"], - command: "brew install copilot-cli", + command: "npm install -g @earendil-works/pi-coding-agent", }, }, spawn: { command: npxCommand, - args: ["-y", "@github/copilot@1.0.39", "--acp"], + args: ["-y", "pi-acp"], }, }, cursor: { @@ -152,23 +156,6 @@ export const BUILTIN_AGENT_DESCRIPTORS: Record = { args: ["acp"], }, }, - pi: { - id: "pi", - name: "Pi", - title: "Pi", - registryId: "pi-acp", - agentExecutable: "pi", - installationCommands: { - npm: { - os: ["all"], - command: "npm install -g @earendil-works/pi-coding-agent", - }, - }, - spawn: { - command: npxCommand, - args: ["-y", "pi-acp"], - }, - }, hermes: { id: "hermes", name: "Hermes", @@ -211,6 +198,35 @@ export const BUILTIN_AGENT_DESCRIPTORS: Record = { args: ["agent", "stdio"], }, }, + copilot: { + id: "copilot", + name: "GitHub Copilot", + title: "GitHub Copilot", + registryId: "github-copilot-cli", + agentExecutable: "copilot", + installationCommands: { + Shell: { + os: ["linux", "macos"], + command: "curl -fsSL https://gh.io/copilot-install | bash", + }, + npm: { + os: ["all"], + command: "npm install -g @github/copilot", + }, + PowerShell: { + os: ["windows"], + command: "winget install GitHub.Copilot", + }, + Homebrew: { + os: ["macos", "linux"], + command: "brew install copilot-cli", + }, + }, + spawn: { + command: npxCommand, + args: ["-y", "@github/copilot@1.0.39", "--acp"], + }, + }, }; export function toAgentInfo( diff --git a/package.json b/package.json index ab5bb2b..68f73b6 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,13 @@ "dev:cli": "pnpm --filter protocol run build && cd cli && pnpm run dev", "build": "pnpm -r run build", "ci:publish": "pnpm changeset publish", - "format": "pnpx @biomejs/biome check --write" + "format": "biome check --write" }, "keywords": [], "author": "", "license": "AGPL-3.0-only", "devDependencies": { - "@biomejs/biome": "2.5.8", + "@biomejs/biome": "2.5.9", "@changesets/cli": "^2.31.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8232a66..fbc926d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@biomejs/biome': - specifier: 2.5.8 - version: 2.5.8 + specifier: 2.5.9 + version: 2.5.9 '@changesets/cli': specifier: ^2.31.0 version: 2.31.0(@types/node@22.19.17) @@ -134,59 +134,59 @@ packages: resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} - '@biomejs/biome@2.5.8': - resolution: {integrity: sha512-aeAeeJB9fSDc7Gq+2GqpQxA0qBj6gj1k2R6L1cYqGePKP/baIq1WX8y6B+D+nRsO5ViQL22K/8IwbqERW0q1nw==} + '@biomejs/biome@2.5.9': + resolution: {integrity: sha512-KkgCvdHB4IhtpHpF564plA9jo6fDOwWGQ/3jvreLzgOtRLEDoPqr7QO9qejNA8jKwDsSkAKr77hqBHnyUbIw4g==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.5.8': - resolution: {integrity: sha512-mk1QON9PHllvvLN5gU3f4rMxeh4syK5p9OvKyWH6/W8ueh04uaC8TUXXByhGufWf/y5mQc03ZLM45zU+cmqMjA==} + '@biomejs/cli-darwin-arm64@2.5.9': + resolution: {integrity: sha512-am22pX2aBqznqq1eMyIj/bZ++riF3Lk6ct7cbv+gQK0csFhr+d8O0RkOi2FF2qSgFgANbqNkIZ0/PxlnW2pLFg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.5.8': - resolution: {integrity: sha512-bsGwFMBNyHPyiLSsQcZJxdoRrg1V4JL+d7wEsvUBczlP9U9lwM+7mzQHxI4o1mhBsTmdOBbAb6fHU3Z3snN45w==} + '@biomejs/cli-darwin-x64@2.5.9': + resolution: {integrity: sha512-l44KWDHLDvEnD0N/XcrVs7VXb3A18xL7QS3WB0eL93wbmk529ffIG55vleGCqaunpRUjLrdnjK05Qki1dsjylg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.5.8': - resolution: {integrity: sha512-VcJNbstduTHx83NGAdhp78/JOcP45BZHXL7yNsfI1uGzdUgegAz2s+mSoT7wK6PBNzLoqG0zDOXaz/RQYVtSiw==} + '@biomejs/cli-linux-arm64-musl@2.5.9': + resolution: {integrity: sha512-7ImVPwBLCtkmpR5esd8RHhTqW94f0JLJQum6AneYcy94jRm18TaPPm7slaigGzFhfgt3QiD1Vj52LKmBAnKizA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [musl] - '@biomejs/cli-linux-arm64@2.5.8': - resolution: {integrity: sha512-XmFiA0WPYFC+uiUDC8WRFzAIH9bo7vwQLav38Uoq4ETC+T/+uBi0TsYGJECkugY3r8USl3jc+Ae2/irAF6F2lQ==} + '@biomejs/cli-linux-arm64@2.5.9': + resolution: {integrity: sha512-ICaK+IYaVZvKbBxX2rwrPT0DdUDMnE9Vm3nQGe+mltQPmUg19pONzkPWGdY4FCsoreDETWDynvdt4ysCbF5gNQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [glibc] - '@biomejs/cli-linux-x64-musl@2.5.8': - resolution: {integrity: sha512-kKmiyokeISRGq2FLwvr+TzsgBusfxaZ0FZNLcOYOpCK/78tRrEjeEBLvq3xLZMpqbANgJdRPI7vZX8ZL37u9/w==} + '@biomejs/cli-linux-x64-musl@2.5.9': + resolution: {integrity: sha512-RXGaD0o1/pTTguYw1aeDJh9ad6Lfrui0fI7mBderTyGr7WuUJkBIttgLkR3XJyoxOkkgfBDspaUT8wXArTqLZw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [musl] - '@biomejs/cli-linux-x64@2.5.8': - resolution: {integrity: sha512-S5wcm9OBDvLHodD4PUaN488hCpco9QD/9ZxuYJiw4euWtr/oQvLR72z2ixItH8Wd5BCm6FZaeb+YNvOoM1xHtQ==} + '@biomejs/cli-linux-x64@2.5.9': + resolution: {integrity: sha512-z22Q/zFYSvbIJfW1CbfZPu4X8PddS6Qd2ORbc6h+aT6EcwAxUF3m6fA4HjNvA3TU4X0dTJRwNPB165ES3PJXzg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [glibc] - '@biomejs/cli-win32-arm64@2.5.8': - resolution: {integrity: sha512-nILH0mzm3Hi3iEdd7o7GpB8kBR/mSQwfQG/tyBqyNrY2GFtcgwfV9nV8xLmbtUpMNY/Oi0Ml1XgfR4flOdq+AA==} + '@biomejs/cli-win32-arm64@2.5.9': + resolution: {integrity: sha512-nHK+/HHC+D0ogAHUxomgoSTdjImb6fmNNVTKmf0tyu4eDL1DqPKIHc+i+UL8+b0RnAu8224qo8F2tCVnaT0A3w==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.5.8': - resolution: {integrity: sha512-I2czzXTY61f3nFJxXoMDq80t7MivxDEnCjE+8sDKoFfcKMaoQdkqhIFQ3KyY0XLzeSpUBYeNAXgD+iOV/BU0VA==} + '@biomejs/cli-win32-x64@2.5.9': + resolution: {integrity: sha512-Yiq0H56LjXSSw/hd9YkXgSLQfzyDJzbzU2TezozxyNw+uKWAqOtqGVvBfzKRRDiaFF5avGAhHdWKx7LtDOShUw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -1874,39 +1874,39 @@ snapshots: '@babel/runtime@7.29.2': {} - '@biomejs/biome@2.5.8': + '@biomejs/biome@2.5.9': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.5.8 - '@biomejs/cli-darwin-x64': 2.5.8 - '@biomejs/cli-linux-arm64': 2.5.8 - '@biomejs/cli-linux-arm64-musl': 2.5.8 - '@biomejs/cli-linux-x64': 2.5.8 - '@biomejs/cli-linux-x64-musl': 2.5.8 - '@biomejs/cli-win32-arm64': 2.5.8 - '@biomejs/cli-win32-x64': 2.5.8 + '@biomejs/cli-darwin-arm64': 2.5.9 + '@biomejs/cli-darwin-x64': 2.5.9 + '@biomejs/cli-linux-arm64': 2.5.9 + '@biomejs/cli-linux-arm64-musl': 2.5.9 + '@biomejs/cli-linux-x64': 2.5.9 + '@biomejs/cli-linux-x64-musl': 2.5.9 + '@biomejs/cli-win32-arm64': 2.5.9 + '@biomejs/cli-win32-x64': 2.5.9 - '@biomejs/cli-darwin-arm64@2.5.8': + '@biomejs/cli-darwin-arm64@2.5.9': optional: true - '@biomejs/cli-darwin-x64@2.5.8': + '@biomejs/cli-darwin-x64@2.5.9': optional: true - '@biomejs/cli-linux-arm64-musl@2.5.8': + '@biomejs/cli-linux-arm64-musl@2.5.9': optional: true - '@biomejs/cli-linux-arm64@2.5.8': + '@biomejs/cli-linux-arm64@2.5.9': optional: true - '@biomejs/cli-linux-x64-musl@2.5.8': + '@biomejs/cli-linux-x64-musl@2.5.9': optional: true - '@biomejs/cli-linux-x64@2.5.8': + '@biomejs/cli-linux-x64@2.5.9': optional: true - '@biomejs/cli-win32-arm64@2.5.8': + '@biomejs/cli-win32-arm64@2.5.9': optional: true - '@biomejs/cli-win32-x64@2.5.8': + '@biomejs/cli-win32-x64@2.5.9': optional: true '@changesets/apply-release-plan@7.1.1': diff --git a/protocol/src/agents/index.ts b/protocol/src/agents/index.ts index a1d2e0a..90aa4c9 100644 --- a/protocol/src/agents/index.ts +++ b/protocol/src/agents/index.ts @@ -22,6 +22,7 @@ export const AGENT_IDS = [ "opencode", "codex", "claude-code", + "fx", "copilot", "cursor", "pi", diff --git a/protocol/src/ai-legacy.ts b/protocol/src/ai-legacy.ts index 292c9ed..ddd0357 100644 --- a/protocol/src/ai-legacy.ts +++ b/protocol/src/ai-legacy.ts @@ -7,6 +7,7 @@ const _AiBackendSchema = z.enum([ "opencode", "codex", "claude-code", + "fx", "copilot", "cursor", "pi", From fbfe502a972e7e846f879eb3eb688154e940722e Mon Sep 17 00:00:00 2001 From: Biraj Date: Fri, 21 Aug 2026 17:40:11 -0700 Subject: [PATCH 2/2] chore: add changeset --- .changeset/salty-stars-smell.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/salty-stars-smell.md diff --git a/.changeset/salty-stars-smell.md b/.changeset/salty-stars-smell.md new file mode 100644 index 0000000..5f3f18f --- /dev/null +++ b/.changeset/salty-stars-smell.md @@ -0,0 +1,6 @@ +--- +"@shellular/protocol": patch +"shellular": patch +--- + +feat(agent): add Vercel fx