dbbe9f77f9
## Summary Major expansion of the MCP server (14 → 25 tools), context efficiency optimizations, new API endpoints, and a fix for the dev CLI leaking build directories on disk. ### New MCP tools - **Query & analytics**: `get_query_schema`, `query`, `list_dashboards`, `run_dashboard_query` — query your data using TRQL directly from AI assistants - **Profile management**: `whoami`, `list_profiles`, `switch_profile` — see and switch CLI profiles per-project (persisted to `.trigger/mcp.json`) - **Dev server control**: `start_dev_server`, `stop_dev_server`, `dev_server_status` — start/stop `trigger dev` and stream build output - **Task introspection**: `get_task_schema` — get payload schema for a specific task (split out from `get_current_worker` to reduce context) ### New API endpoints - `GET /api/v1/query/schema` — discover TRQL tables and columns (server-driven, multi-table) - `GET /api/v1/query/dashboards` — list built-in dashboard widgets and their queries ### New features - **`--readonly` flag** — hides write tools (`deploy`, `trigger_task`, `cancel_run`) so agents can't make changes - **`read:query` JWT scope** — new authorization scope for query endpoints, with per-table granularity (`read:query:runs`, `read:query:llm_metrics`, etc.) - **Paginated trace output** — `get_run_details` now paginates trace events via cursor, caching the full trace in a temp file so subsequent pages don't re-fetch - **MCP tool annotations** — all tools now have `readOnlyHint`/`destructiveHint` annotations for clients that support them - **Project-scoped profile persistence** — `switch_profile` saves to `.trigger/mcp.json` (gitignored), automatically loaded on next MCP server start ### Context optimizations - `get_query_schema` requires a table name — returns one table's schema instead of all tables (60-80% fewer tokens) - `get_current_worker` no longer inlines payload schemas — use `get_task_schema` for specific tasks - Query results formatted as text tables instead of JSON (~50% fewer tokens for flat data) - `cancel_run`, `list_deploys`, `list_preview_branches` formatted as text instead of raw `JSON.stringify()` - Schema and dashboard API responses cached (1hr and 5min respectively) ### Bug fixes - Fixed `search_docs` failing due to renamed upstream Mintlify tool (`SearchTriggerDev` → `search_trigger_dev`) - Fixed `list_deploys` failing when deployments have null `runtime`/`runtimeVersion` fields (fixes #3139) - Fixed `list_preview_branches` crashing due to incorrect response shape access - Fixed `metrics` table column documented as `value` instead of `metric_value` in query docs - Fixed `/api/v1/query` not accepting JWT auth (added `allowJWT: true`) ### Dev CLI build directory fix The dev CLI was leaking `build-*` directories in `.trigger/tmp/` on every rebuild, accumulating hundreds of MB over time (842MB observed). Three layers of protection added: 1. **During session**: deprecated workers are pruned (capped at 2 retained) when no active runs reference them, preventing unbounded accumulation 2. **On SIGKILL/crash**: the watchdog process now cleans up `.trigger/tmp/` when it detects the parent CLI was killed 3. **On next startup**: existing `clearTmpDirs()` wipes any remaining orphans ## Test plan - [ ] `pnpm run mcp:smoke` — 17 automated smoke tests for all read-only MCP tools - [ ] `pnpm run mcp:test list` — verify 25 tools registered (21 in `--readonly` mode) - [ ] `pnpm run mcp:test --readonly list` — verify write tools hidden - [ ] Manual: start dev server, trigger task, rebuild multiple times, verify build dirs stay capped at 4 - [ ] Manual: SIGKILL the dev CLI, verify watchdog cleans up `.trigger/tmp/` - [ ] Verify new API endpoints return correct data: `GET /api/v1/query/schema`, `GET /api/v1/query/dashboards` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
165 lines
4.4 KiB
JSON
165 lines
4.4 KiB
JSON
{
|
|
"name": "trigger.dev",
|
|
"version": "4.4.3",
|
|
"description": "A Command-Line Interface for Trigger.dev projects",
|
|
"type": "module",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/triggerdotdev/trigger.dev",
|
|
"directory": "packages/cli-v3"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"mcpName": "io.github.triggerdotdev/trigger.dev",
|
|
"keywords": [
|
|
"typescript",
|
|
"trigger.dev",
|
|
"workflows",
|
|
"orchestration",
|
|
"events",
|
|
"webhooks",
|
|
"integrations",
|
|
"apis",
|
|
"jobs",
|
|
"background jobs",
|
|
"nextjs"
|
|
],
|
|
"files": [
|
|
"dist"
|
|
],
|
|
"bin": {
|
|
"trigger": "./dist/esm/index.js"
|
|
},
|
|
"tshy": {
|
|
"selfLink": false,
|
|
"main": false,
|
|
"module": false,
|
|
"dialects": [
|
|
"esm"
|
|
],
|
|
"project": "./tsconfig.src.json",
|
|
"exclude": [
|
|
"**/*.test.ts"
|
|
],
|
|
"exports": {
|
|
"./package.json": "./package.json",
|
|
".": "./src/index.ts"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@epic-web/test-server": "^0.1.0",
|
|
"@types/eventsource": "^1.1.15",
|
|
"@types/gradient-string": "^1.1.2",
|
|
"@types/ini": "^4.1.1",
|
|
"@types/object-hash": "3.0.6",
|
|
"@types/polka": "^0.5.7",
|
|
"@types/react": "^18.2.48",
|
|
"@types/resolve": "^1.20.6",
|
|
"@types/rimraf": "^4.0.5",
|
|
"@types/semver": "^7.5.0",
|
|
"@types/source-map-support": "0.5.10",
|
|
"@types/ws": "^8.5.3",
|
|
"cpy-cli": "^5.0.0",
|
|
"execa": "^8.0.1",
|
|
"find-up": "^7.0.0",
|
|
"rimraf": "^5.0.7",
|
|
"ts-essentials": "10.0.1",
|
|
"tshy": "^3.0.2",
|
|
"tsx": "4.17.0"
|
|
},
|
|
"scripts": {
|
|
"clean": "rimraf dist .tshy .tshy-build .turbo",
|
|
"typecheck": "tsc -p tsconfig.src.json --noEmit",
|
|
"build": "tshy && pnpm run update-version",
|
|
"dev": "tshy --watch",
|
|
"test": "vitest",
|
|
"test:e2e": "vitest --run -c ./e2e/vitest.config.ts",
|
|
"update-version": "tsx ../../scripts/updateVersion.ts",
|
|
"install-mcp": "./install-mcp.sh",
|
|
"inspector": "npx @modelcontextprotocol/inspector dist/esm/index.js mcp --log-file .mcp.log --api-url http://localhost:3030",
|
|
"mcp:test": "tsx src/mcp/tools.test.ts",
|
|
"mcp:smoke": "tsx src/mcp/smoke.test.ts"
|
|
},
|
|
"dependencies": {
|
|
"@clack/prompts": "0.11.0",
|
|
"@depot/cli": "0.0.1-cli.2.80.0",
|
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
"@opentelemetry/api": "1.9.0",
|
|
"@opentelemetry/api-logs": "0.203.0",
|
|
"@opentelemetry/exporter-trace-otlp-http": "0.203.0",
|
|
"@opentelemetry/instrumentation": "0.203.0",
|
|
"@opentelemetry/instrumentation-fetch": "0.203.0",
|
|
"@opentelemetry/resources": "2.0.1",
|
|
"@opentelemetry/sdk-trace-node": "2.0.1",
|
|
"@opentelemetry/semantic-conventions": "1.36.0",
|
|
"@s2-dev/streamstore": "^0.22.5",
|
|
"@trigger.dev/build": "workspace:4.4.3",
|
|
"@trigger.dev/core": "workspace:4.4.3",
|
|
"@trigger.dev/schema-to-json": "workspace:4.4.3",
|
|
"ansi-escapes": "^7.0.0",
|
|
"braces": "^3.0.3",
|
|
"c12": "^1.11.1",
|
|
"chalk": "^5.2.0",
|
|
"chokidar": "^3.6.0",
|
|
"cli-table3": "^0.6.3",
|
|
"commander": "^9.4.1",
|
|
"confbox": "^0.2.2",
|
|
"defu": "^6.1.4",
|
|
"dotenv": "^16.4.5",
|
|
"esbuild": "^0.23.0",
|
|
"eventsource": "^3.0.2",
|
|
"evt": "^2.4.13",
|
|
"fast-npm-meta": "^0.2.2",
|
|
"git-last-commit": "^1.0.1",
|
|
"gradient-string": "^2.0.2",
|
|
"has-flag": "^5.0.1",
|
|
"ignore": "^7.0.5",
|
|
"import-in-the-middle": "1.11.0",
|
|
"import-meta-resolve": "^4.1.0",
|
|
"ini": "^5.0.0",
|
|
"json-stable-stringify": "^1.3.0",
|
|
"jsonc-parser": "3.2.1",
|
|
"magicast": "^0.3.4",
|
|
"minimatch": "^10.0.1",
|
|
"mlly": "^1.7.1",
|
|
"nypm": "^0.5.4",
|
|
"object-hash": "^3.0.0",
|
|
"open": "^10.0.3",
|
|
"p-limit": "^6.2.0",
|
|
"p-retry": "^6.1.0",
|
|
"partysocket": "^1.0.2",
|
|
"pkg-types": "^1.1.3",
|
|
"polka": "^0.5.2",
|
|
"resolve": "^1.22.8",
|
|
"semver": "^7.5.0",
|
|
"signal-exit": "^4.1.0",
|
|
"socket.io-client": "4.7.5",
|
|
"source-map-support": "0.5.21",
|
|
"std-env": "^3.7.0",
|
|
"strip-ansi": "^7.1.0",
|
|
"supports-color": "^10.0.0",
|
|
"tar": "^7.5.4",
|
|
"tiny-invariant": "^1.2.0",
|
|
"tinyexec": "^0.3.1",
|
|
"tinyglobby": "^0.2.10",
|
|
"ws": "^8.18.0",
|
|
"xdg-app-paths": "^8.3.0",
|
|
"zod": "3.25.76",
|
|
"zod-validation-error": "^1.5.0"
|
|
},
|
|
"engines": {
|
|
"node": ">=18.20.0"
|
|
},
|
|
"exports": {
|
|
"./package.json": "./package.json",
|
|
".": {
|
|
"import": {
|
|
"types": "./dist/esm/index.d.ts",
|
|
"default": "./dist/esm/index.js"
|
|
}
|
|
}
|
|
}
|
|
}
|