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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/quiet-tools-select.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@call-e/cli": patch
"@call-e/codex-plugin": patch
"@call-e/claude-plugin": patch
"@call-e/cursor-plugin": patch
---

Run agent commands through a bundled launcher that verifies the MCP package and help before passing JSON argument arrays without a shell. Preserve structured login, help, and recovery arguments and integration attribution across Bash, PowerShell, and cmd, including installations with SDK releases that also export `calle`.
27 changes: 27 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,30 @@ jobs:

- name: Validate package contents
run: pnpm pack:dry-run

windows-cli:
runs-on: windows-latest

steps:
- name: Check out repository
uses: actions/checkout@v5

- name: Set up pnpm
uses: pnpm/action-setup@v5
with:
version: 10.18.3

- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: 22
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Test CLI and documented Windows commands
run: pnpm --filter @call-e/cli test

- name: Check integration versions
run: pnpm check:versions
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -463,12 +463,12 @@ The `calle` CLI sends best-effort usage telemetry to help diagnose installation,

**What is never collected:** phone numbers, call goals, OAuth tokens, broker login URLs, transcripts, or contact data.

**Opt out** with any of:
**Opt out** with `--no-telemetry`. First follow
[CLI entry point selection](packages/cli/docs/cli-reference.md#selecting-the-cli-entry-point)
to prepare the launcher and a JSON request. Add `--no-telemetry` to its `argv`:

```bash
DO_NOT_TRACK=1 calle auth status
CALLE_TELEMETRY=0 calle auth status
calle auth status --no-telemetry
```json
["auth", "status", "--no-telemetry"]
```

Broker and MCP requests still create service-side security, audit, and operational logs required to run calls.
Expand Down
47 changes: 28 additions & 19 deletions docs/install/CALL-E-installation-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,45 +25,50 @@ is available.

## Step 2 Ensure The CLI Is Available

The skill uses the local `calle` CLI. If `calle` is not already available,
install it:
Follow [CLI entry point selection](../../packages/cli/docs/cli-reference.md#selecting-the-cli-entry-point)
to select the trusted MCP package and prepare the launcher and `request.json`.
The JSON arrays below are values for that request's `argv`; execute them one
at a time with `node run-agent-command.mjs request.json`.

```bash
npm install -g @call-e/cli
```
Install into a dedicated directory if needed, following the same guide. Finish
this setup before invoking the skill; the skill does not download remote npm
packages.

Verify the command:

```bash
env CALLE_SOURCE=skills_sh CALLE_INTEGRATION=skills_sh_skill CALLE_INTEGRATION_VERSION=0.1.0 calle --help
```json
["--help"]
```

## Step 3 Authenticate

Run the login command and let the user complete browser authorization:

```bash
env CALLE_SOURCE=skills_sh CALLE_INTEGRATION=skills_sh_skill CALLE_INTEGRATION_VERSION=0.1.0 calle auth login
```json
["auth", "login"]
```

For agents that need to show the authorization link without opening a browser
inside the agent environment, run:

```bash
env CALLE_SOURCE=skills_sh CALLE_INTEGRATION=skills_sh_skill CALLE_INTEGRATION_VERSION=0.1.0 calle auth login --start-only --no-browser-open
```json
["auth", "login", "--start-only", "--no-browser-open"]
```

After the user confirms authorization is complete, finish the pending login:

```bash
env CALLE_SOURCE=skills_sh CALLE_INTEGRATION=skills_sh_skill CALLE_INTEGRATION_VERSION=0.1.0 calle auth login --no-browser-open
```json
["auth", "login", "--no-browser-open"]
```

## Step 4 Verify

```bash
env CALLE_SOURCE=skills_sh CALLE_INTEGRATION=skills_sh_skill CALLE_INTEGRATION_VERSION=0.1.0 calle auth status
env CALLE_SOURCE=skills_sh CALLE_INTEGRATION=skills_sh_skill CALLE_INTEGRATION_VERSION=0.1.0 calle mcp tools
```json
["auth", "status"]
```

```json
["mcp", "tools"]
```

Confirm that the tool list includes:
Expand All @@ -77,9 +82,13 @@ get_call_run
CALL-E can place real outbound phone calls. Setup verification must not start a
call; only place a call when the user clearly asks for one.

The `CALLE_SOURCE`, `CALLE_INTEGRATION`, and `CALLE_INTEGRATION_VERSION`
environment variables preserve install and setup telemetry attribution for the
portable skills.sh integration.
Include the portable skill's attribution in `request.json`:

```json
{"integration": {"source": "skills_sh", "name": "skills_sh_skill", "version": "0.1.0"}}
```

The launcher sets the corresponding child-process environment variables.

## More

Expand Down
32 changes: 20 additions & 12 deletions docs/install/claude-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,27 +38,35 @@ available without restarting:

## Authorize

The plugin checks authentication when `/calle:calle` is invoked. To
pre-authorize before using the skill, run:
The plugin checks authentication when `/calle:calle` is invoked.

```bash
npx -y @call-e/cli auth login
Follow [CLI entry point selection](../../packages/cli/docs/cli-reference.md#selecting-the-cli-entry-point)
to select the trusted MCP package and prepare the launcher and `request.json`.
The JSON arrays below are values for that request's `argv`; execute them one
at a time with `node run-agent-command.mjs request.json`.

To pre-authorize before using the skill, run:

```json
["auth", "login"]
```

The command opens the CALL-E browser authorization flow, waits for completion,
then stores the token in the private local CLI cache. To verify setup:

```bash
npx -y @call-e/cli auth status
npx -y @call-e/cli mcp tools
```json
["auth", "status"]
```

The plugin uses the repository-local CLI when available, then a global `calle`,
then the npm fallback above. CLI commands run by the skill include this
CALL-E attribution:
```json
["mcp", "tools"]
```

```text
CALLE_SOURCE=claude CALLE_INTEGRATION=claude_code_plugin CALLE_INTEGRATION_VERSION=0.2.2
The plugin reuses the verified entry point for every CLI command. Commands run
by the skill include this CALL-E attribution:

```json
{"integration": {"source": "claude", "name": "claude_code_plugin", "version": "0.2.2"}}
```

## Use
Expand Down
64 changes: 38 additions & 26 deletions docs/install/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,18 @@ workflow shortcuts.

## Install

For a persistent local command:
Follow [CLI entry point selection](../../packages/cli/docs/cli-reference.md#selecting-the-cli-entry-point)
to select the trusted MCP package and prepare the launcher and `request.json`.
The JSON arrays below are values for that request's `argv`; execute them one
at a time with `node run-agent-command.mjs request.json`.

```bash
npm install -g @call-e/cli
```

For one-off usage without a global install:

```bash
npx -y @call-e/cli --help
```
That guide also covers installing into a dedicated directory when needed.
Reuse the verified entry point for all commands below.

## Authenticate

```bash
calle auth login
```json
["auth", "login"]
```

The command opens the brokered login URL, polls until authorization completes,
Expand All @@ -31,39 +27,55 @@ The token is never printed to stdout.
For agent integrations that need to show the authorization link before
continuing:

```bash
calle auth login --start-only --no-browser-open
```json
["auth", "login", "--start-only", "--no-browser-open"]
```

## Verify

```bash
calle --version
calle auth status
calle mcp tools
```json
["--version"]
```

```json
["auth", "status"]
```

```json
["mcp", "tools"]
```

## Plan A Call

Use command-specific help to see the parameters accepted by the installed CLI
version, then create a plan:

```bash
calle call plan --help
calle call plan --to-phone +15551234567 --goal "Confirm the appointment"
```json
["call", "plan", "--help"]
```

```json
["call", "plan", "--to-phone", "+15551234567", "--goal", "Confirm the appointment"]
```

Help follows the command hierarchy, so you can discover a group before choosing
a subcommand:

```bash
calle --help
calle call --help
calle call plan --help
```json
["--help"]
```

```json
["call", "--help"]
```

```json
["call", "plan", "--help"]
```

When an argument is missing, unknown, or belongs to another subcommand, the
error output includes the corresponding `help_command` to run.
error output includes `help_argv`. Use that array as the next request's
`argv` through the same launcher.

## More

Expand Down
11 changes: 6 additions & 5 deletions docs/install/codex-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ Check your version with:
codex --version
```

You do not need to install the shared CLI globally before installing the plugin.
The plugin uses the repository-local CLI when available, then a global `calle`
command when available, then falls back to `npx -y @call-e/cli`.
Follow [CLI entry point selection](../../packages/cli/docs/cli-reference.md#selecting-the-cli-entry-point)
to select the trusted MCP package and prepare the launcher and `request.json`.
The JSON arrays below are values for that request's `argv`; execute them one
at a time with `node run-agent-command.mjs request.json`.

To authenticate before installing or using the plugin:

```bash
npx -y @call-e/cli auth login
```json
["auth", "login"]
```

## Install
Expand Down
19 changes: 11 additions & 8 deletions docs/install/cursor-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,19 +70,22 @@ get_call_run

## Optional CLI Preflight

The plugin should prefer Cursor MCP tools. If the skill falls back to CLI
commands, it uses the repository-local CLI when available, then a global
`calle`, then the npm fallback:
The plugin should prefer Cursor MCP tools. For CLI fallback, follow
[CLI entry point selection](../../packages/cli/docs/cli-reference.md#selecting-the-cli-entry-point)
and prepare the launcher and `request.json`. Use each array below as `argv`:

```bash
npx -y @call-e/cli auth status
npx -y @call-e/cli mcp tools
```json
["auth", "status"]
```

```json
["mcp", "tools"]
```

CLI commands run by the Cursor skill include this CALL-E attribution:

```text
CALLE_SOURCE=cursor CALLE_INTEGRATION=cursor_plugin CALLE_INTEGRATION_VERSION=0.1.1
```json
{"integration": {"source": "cursor", "name": "cursor_plugin", "version": "0.1.1"}}
```

## Safety
Expand Down
Loading