Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
64 changes: 1 addition & 63 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,6 @@ concurrency:
cancel-in-progress: true

jobs:
plugin-pr-scope:
name: Plugin PR scope
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false

- uses: actions/setup-node@v6
with:
node-version: '22'

- name: Check plugin PR scope
run: npm run check:plugin-pr-scope -- "${{ github.event.pull_request.base.sha }}" "${{ github.event.pull_request.head.sha }}"

skills:
name: Skill sources
runs-on: ubuntu-latest
Expand Down Expand Up @@ -73,44 +56,24 @@ jobs:
- name: Type check
run: npm run typecheck

- name: Check community plugin metadata
if: runner.os == 'Linux'
run: npm run check-community-plugins

- name: Check Codex plugin metadata
if: runner.os == 'Linux'
run: npm run check:codex-plugin

- name: Build
run: npm run build

- name: Build plugin command manifest
if: runner.os == 'Linux'
run: npm run build-plugin-manifest

- name: Check plugin command parity
if: runner.os == 'Linux'
run: npm run check:plugin-parity

- name: Check generated contract artifacts
if: runner.os == 'Linux'
run: npm run check:hosted-contract

- name: Check all generated artifacts are committed
if: runner.os == 'Linux'
run: git diff --exit-code -- cli-manifest.json hosted-contract.json webcmd-plugin.json README.md
run: git diff --exit-code -- cli-manifest.json hosted-contract.json README.md

- name: Verify packed CLI executables
run: npm run check:package-bin

- name: Check silent column drops
if: runner.os == 'Linux'
run: npm run check:silent-column-drop

- name: Check typed error lint baseline
if: runner.os == 'Linux'
run: npm run check:typed-error-lint

unit-test:
name: Unit tests (${{ matrix.os }}, shard ${{ matrix.shard }}/2)
needs: build
Expand All @@ -134,31 +97,6 @@ jobs:
- name: Run unit tests
run: npx vitest run --project unit --reporter=verbose --shard=${{ matrix.shard }}/2

plugin-test:
name: Plugin tests (${{ matrix.os }})
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v6

- uses: actions/setup-node@v6
with:
node-version: '22'
cache: npm

- name: Install dependencies
run: npm ci

- name: Build
run: npm run build

- name: Run plugin tests
run: npm run test:plugin -- --reporter=verbose

bun-test:
name: Bun compatibility
needs: build
Expand Down
51 changes: 0 additions & 51 deletions .github/workflows/reconcile-hosted-plugins.yml

This file was deleted.

14 changes: 1 addition & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,25 +77,13 @@ jobs:
if: ${{ steps.release.outputs.release_created || inputs.publish_tag != '' }}
run: npm run build

- name: Build plugin command manifest
if: ${{ steps.release.outputs.release_created || inputs.publish_tag != '' }}
run: npm run build-plugin-manifest

- name: Check plugin command parity
if: ${{ steps.release.outputs.release_created || inputs.publish_tag != '' }}
run: npm run check:plugin-parity

- name: Check community plugin metadata
if: ${{ steps.release.outputs.release_created || inputs.publish_tag != '' }}
run: npm run check-community-plugins

- name: Check generated contract artifacts
if: ${{ steps.release.outputs.release_created || inputs.publish_tag != '' }}
run: npm run check:hosted-contract

- name: Check all generated artifacts are committed
if: ${{ steps.release.outputs.release_created || inputs.publish_tag != '' }}
run: git diff --exit-code -- cli-manifest.json hosted-contract.json webcmd-plugin.json README.md
run: git diff --exit-code -- cli-manifest.json hosted-contract.json README.md

- name: Check Codex plugin metadata
if: ${{ steps.release.outputs.release_created || inputs.publish_tag != '' }}
Expand Down
53 changes: 0 additions & 53 deletions .github/workflows/sync-community-plugins.yml

This file was deleted.

4 changes: 4 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ npm run build
npm test
```

## Community adapters

Public site adapters live in [`agentrhq/webcmd-plugins`](https://github.com/agentrhq/webcmd-plugins), not this repository.

## Adapter Imports

Adapters must import public APIs from `@agentrhq/webcmd`:
Expand Down
13 changes: 5 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,15 +158,12 @@ Webcmd Cloud can run supported commands and browser sessions on hosted infrastru

## Community

<!-- webcmd-community-plugins:start -->
### Community plugins
Site adapters live in [`agentrhq/webcmd-plugins`](https://github.com/agentrhq/webcmd-plugins). Search and install them with:

| Plugin | Description | Author |
| --- | --- | --- |
| [`omnisearch`](./plugins/omnisearch/) | No-login research across Hacker News, Stack Overflow, GitHub, arXiv, Dev.to, Lobsters, and Bluesky | [Rishet Mehra](https://github.com/Rishet11) |
| [`pypi`](./plugins/pypi/) | Inspect public Python package metadata, downloads, and releases from PyPI | [Kemal Kaya](https://github.com/yoldaolmak) |
| [`skyscanner`](./plugins/skyscanner/) | Skyscanner flight search commands for Webcmd | [Rishabh](https://github.com/rishabhraj36) |
<!-- webcmd-community-plugins:end -->
```bash
webcmd plugin search <site> -f json
webcmd plugin install github:agentrhq/webcmd-plugins/<name>
```

## Contributing

Expand Down
7 changes: 2 additions & 5 deletions TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
```bash
npm run typecheck
npm run build
npm run build-plugin-manifest
npm test
```

`npm run build` must run before plugin tests because repository plugins import
the compiled public package exports. The core package contains no site
adapters; `npm test` runs the unit and generic plugin projects.
The core package contains no site adapters; `npm test` runs the unit project.
Public adapter tests live in `agentrhq/webcmd-plugins`.

## Skill Sources

Expand All @@ -29,7 +27,6 @@ make verify
npx vitest run --project unit src/skills.test.ts
npx vitest run --project unit src/package-exports.test.ts
npx vitest run --project unit src/convention-audit.test.ts src/runtime-copy.test.ts
npm run test:plugin -- --reporter=verbose
```

## Cloak Runtime Smoke
Expand Down
2 changes: 1 addition & 1 deletion docs/agent-prompts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Create a private `webcmd-acme` plugin for our internal tools: Jira release notes
## Publish a Community Plugin

```text
Prepare my `webcmd-acme` plugin for contribution to the AgentR Webcmd repository. Place it under `plugins/acme/`, make the manifest name match the directory, include version, description, Webcmd compatibility, and my author name and GitHub handle, improve the README and examples, run the repository plugin checks, and open a draft pull request returning its URL, workflow summary, and verification evidence. Use my authenticated GitHub account only for that draft PR; do not merge, publish a package, or modify unrelated repository files.
Prepare my `webcmd-acme` plugin for contribution to agentrhq/webcmd-plugins. Place it under `plugins/acme/`, make the manifest name match the directory, include version, description, Webcmd compatibility, and my author name and GitHub handle, improve the README and examples, run the repository plugin checks, and open a draft pull request returning its URL, workflow summary, and verification evidence. Use my authenticated GitHub account only for that draft PR; do not merge, publish a package, or modify unrelated repository files.
```

## Ask for a Plan First
Expand Down
6 changes: 3 additions & 3 deletions docs/publish-community-plugin.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ Publish a plugin only when its workflows, examples, and verification are useful
## Ask an Agent to Prepare the Contribution

```text
Prepare my `webcmd-acme` plugin for contribution to the AgentR Webcmd repository. Place it under `plugins/acme/`, make the manifest name match the directory, include version, description, Webcmd compatibility, and my author name and GitHub handle, improve the README and examples, run the repository plugin checks, and open a pull request summarizing the workflows and verification evidence.
Prepare my `webcmd-acme` plugin for contribution to agentrhq/webcmd-plugins. Place it under `plugins/acme/`, make the manifest name match the directory, include version, description, Webcmd compatibility, and my author name and GitHub handle, improve the README and examples, run the repository plugin checks, and open a pull request summarizing the workflows and verification evidence.
```

## Repository Requirements

Community plugins live under `plugins/<name>/`. Their `webcmd-plugin.json` must use the directory name, and include non-empty `version`, `description`, and `webcmd` compatibility fields. Author metadata needs both a display name and valid GitHub handle.
Community plugins live under `plugins/<name>/` in [`agentrhq/webcmd-plugins`](https://github.com/agentrhq/webcmd-plugins). Their `webcmd-plugin.json` must use the directory name, and include non-empty `version`, `description`, and `webcmd` compatibility fields. Author metadata needs both a display name and valid GitHub handle.

Repository plugins are catalog source, not npm package contents. Users install
an approved plugin explicitly; Webcmd core does not bundle it.
Expand All @@ -30,7 +30,7 @@ To fork an installed command into a private copy you can edit, run `webcmd adapt

## Validation and Pull Request

The agent runs `npm run check-community-plugins`, improves the plugin README and examples, and opens a pull request with the workflows and verification evidence. The pull request is the review/publishing boundary.
The agent runs `npm run sync-community-plugins` and `npm run check-community-plugins` in `agentrhq/webcmd-plugins`, improves the plugin README and examples, and opens a pull request with the workflows and verification evidence. The pull request is the review/publishing boundary.

## What Happens After Merge

Expand Down
16 changes: 4 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,13 @@
"benchmark": "uv run python benchmarks/scripts/run_eval.py",
"dev": "tsx src/main.ts",
"dev:bun": "bun src/main.ts",
"build": "npm run clean-dist && npm run copy-yaml && npm run compile && npm run build-manifest && npm run build-plugin-manifest",
"build": "npm run clean-dist && npm run copy-yaml && npm run compile && npm run build-manifest",
"compile": "tsc --build && node -e \"require('fs').chmodSync('dist/src/main.js', 0o755)\"",
"build-manifest": "tsx src/build-manifest.ts",
"build-plugin-manifest": "tsx src/build-plugin-command-manifest.ts",
"check:codex-plugin": "node scripts/check-codex-plugin.mjs",
"check:hosted-contract": "node scripts/check-hosted-contract.mjs",
"check:plugin-pr-scope": "node scripts/check-plugin-pr-scope.mjs",
"clean-dist": "node scripts/clean-dist.cjs",
"copy-yaml": "node scripts/copy-yaml.cjs",
"sync-community-plugins": "tsx scripts/sync-community-plugins.ts",
"generate-release-notes": "tsx scripts/generate-release-notes.ts",
"docs-sync-review": "tsx scripts/docs-sync-review.ts",
"benchmark:snapshot": "tsx scripts/benchmark-snapshot-render.ts",
Expand All @@ -74,18 +71,13 @@
"typecheck": "tsc --noEmit",
"prepare": "[ -d src ] && npm run build || true",
"prepublishOnly": "npm run build",
"test": "vitest run --project unit --project plugin",
"test:bun": "bun vitest run --project unit --project plugin",
"test:plugin": "vitest run --project plugin",
"test": "vitest run --project unit",
"test:bun": "bun vitest run --project unit",
"test:all": "vitest run",
"test:e2e": "vitest run --project e2e-fixed-port --project e2e",
"gate:cloak-sessions": "WEBCMD_LIVE_CLOAK=1 vitest run --project e2e tests/e2e/cloak-session-concurrency.test.ts",
"check-community-plugins": "tsx scripts/sync-community-plugins.ts --check",
"advise:listing-id-pairing": "node scripts/check-listing-id-pairing.mjs",
"check:package-bin": "node scripts/check-package-bin.mjs",
"check:silent-column-drop": "node scripts/check-silent-column-drop.mjs",
"check:typed-error-lint": "node scripts/check-typed-error-lint.mjs",
"check:plugin-parity": "node scripts/check-plugin-command-parity.mjs"
"check:package-bin": "node scripts/check-package-bin.mjs"
},
"keywords": [
"cli",
Expand Down
6 changes: 3 additions & 3 deletions plugin-catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"version": 1,
"sources": [
{
"id": "agentrhq/webcmd",
"source": "github:agentrhq/webcmd",
"manifestUrl": "https://raw.githubusercontent.com/agentrhq/webcmd/main/webcmd-plugin.json"
"id": "agentrhq/webcmd-plugins",
"source": "github:agentrhq/webcmd-plugins",
"manifestUrl": "https://raw.githubusercontent.com/agentrhq/webcmd-plugins/main/webcmd-plugin.json"
}
]
}
Loading
Loading