mirror of
https://github.com/getsentry/sentry-for-ai.git
synced 2026-09-14 14:28:22 +08:00
d86aedebf5
Add a pnpm workspace with a `packages/installer` package (`@sentry/ai`) that provides a single CLI for installing the Sentry plugin into any supported AI coding assistant: Claude Code, Codex, Cursor, and Grok. The CLI (built on citty) exposes an `install` subcommand. By default it shows an interactive selector pre-selecting the detected agents; `--no-interactive`/`--yes` skips the prompt and installs every detected agent — used for CI and unattended runs. Each agent is a self-contained harness implementing a common strategy interface — detect, isInstalled, canInstall, install — so adding a new agent is just another module. System access (shell, fs, platform, homedir) is injected through a SystemDeps seam, keeping every harness unit-testable without side effects. Behavior: - Already-installed agents update in place rather than erroring or no-opping: Cursor pulls, Grok/Claude use their update commands, Codex re-adds (idempotent; it has no update command). - Claude refreshes its marketplace index before installing, since a fresh CLI ships a stale index that cannot resolve the plugin. - canInstall gates prerequisites (Cursor needs git) and reports a clear skip instead of a cryptic failure. - One agent failing does not abort the rest, and the CLI exits non-zero if any selected agent failed or was blocked. - Cross-platform: binary detection uses where/which per OS, Cursor is located via its per-OS install path, and git paths are quoted for Windows spaces. Distribution: - rolldown bundles the npm package (deps external). - fossilize builds standalone Node SEA binaries; --hole-punch drops non-English ICU data to cut the download ~30%. CI: - A smoke-test matrix (Linux, macOS, Windows) installs the real agent CLIs and runs the installer non-interactively, asserting the plugin lands for every detected agent. Instrumented with the Sentry Node SDK.
7 lines
98 B
JSON
7 lines
98 B
JSON
{
|
|
"name": "sentry-for-ai",
|
|
"private": true,
|
|
"packageManager": "pnpm@11.0.2",
|
|
"pnpm": {}
|
|
}
|