codeam-cli 2.60.60 → 2.60.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/index.js +72 -15
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to `codeam-cli` are documented here.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [2.60.61] — 2026-07-15
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** Sentry full read+write scopes + --add-scopes on the MCP server
|
|
12
|
+
|
|
13
|
+
## [2.60.60] — 2026-07-14
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **shared:** Use Sentry's official mark for the integration catalog icon
|
|
18
|
+
|
|
7
19
|
## [2.60.59] — 2026-07-14
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -531,12 +531,25 @@ var INTEGRATION_REGISTRY = {
|
|
|
531
531
|
enabled: true,
|
|
532
532
|
auth: {
|
|
533
533
|
kind: "oauth_redirect",
|
|
534
|
-
//
|
|
535
|
-
// projects
|
|
536
|
-
//
|
|
537
|
-
//
|
|
538
|
-
//
|
|
539
|
-
scopes
|
|
534
|
+
// FULL read+write across every Sentry resource — the agent can read
|
|
535
|
+
// issues/events/projects AND act (resolve/assign issues, manage
|
|
536
|
+
// projects/teams/members, releases). `:write` implies `:read`. Admin
|
|
537
|
+
// (destructive org/member management) is deliberately NOT requested.
|
|
538
|
+
// ⚠️ Changing these requires the user to RE-LINK Sentry — the existing
|
|
539
|
+
// token only carries whatever scopes it was granted at link time.
|
|
540
|
+
scopes: [
|
|
541
|
+
"org:read",
|
|
542
|
+
"org:write",
|
|
543
|
+
"project:read",
|
|
544
|
+
"project:write",
|
|
545
|
+
"team:read",
|
|
546
|
+
"team:write",
|
|
547
|
+
"member:read",
|
|
548
|
+
"member:write",
|
|
549
|
+
"event:read",
|
|
550
|
+
"event:write",
|
|
551
|
+
"project:releases"
|
|
552
|
+
]
|
|
540
553
|
},
|
|
541
554
|
delivery: {
|
|
542
555
|
mcp: {
|
|
@@ -545,13 +558,57 @@ var INTEGRATION_REGISTRY = {
|
|
|
545
558
|
// SENTRY_HOST (never argv — env only). Version PINNED; bump only
|
|
546
559
|
// after re-verifying headless in the mcp-shim integration test.
|
|
547
560
|
command: "npx",
|
|
548
|
-
|
|
561
|
+
// `--add-scopes` widens the server's default READ-ONLY tool surface to
|
|
562
|
+
// include the write tools our OAuth scopes now grant (resolve/assign
|
|
563
|
+
// issue, update project, etc.), so the agent exposes read AND write.
|
|
564
|
+
args: [
|
|
565
|
+
"-y",
|
|
566
|
+
"@sentry/mcp-server@0.18.0",
|
|
567
|
+
"--add-scopes=org:write,project:write,team:write,member:write,event:write"
|
|
568
|
+
],
|
|
549
569
|
envMapping: {
|
|
550
570
|
SENTRY_ACCESS_TOKEN: "accessToken",
|
|
551
571
|
SENTRY_HOST: "host"
|
|
552
572
|
}
|
|
553
573
|
}
|
|
554
574
|
}
|
|
575
|
+
},
|
|
576
|
+
linear: {
|
|
577
|
+
id: "linear",
|
|
578
|
+
name: "Linear",
|
|
579
|
+
icon: "linear",
|
|
580
|
+
// LIVE — the Linear OAuth Application (Public + Confidential) is registered
|
|
581
|
+
// and LINEAR_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI are in Secret Manager
|
|
582
|
+
// (prod+dev). The backend LinearOAuthProvider is config-gated (503 if env
|
|
583
|
+
// unset) so this is safe even mid-rollout before the secrets mount.
|
|
584
|
+
enabled: true,
|
|
585
|
+
auth: {
|
|
586
|
+
kind: "oauth_redirect",
|
|
587
|
+
// Linear's coarse scopes: `read` (all issues/projects/comments/cycles)
|
|
588
|
+
// + `write` (create/update issues, comments, state). `write` implies the
|
|
589
|
+
// create/update surface the agent's tools need. `admin` (destructive
|
|
590
|
+
// workspace management) is deliberately NOT requested. ⚠️ Changing these
|
|
591
|
+
// requires the user to RE-LINK Linear — the token only carries the scopes
|
|
592
|
+
// granted at link time. Linear expects a COMMA-separated `scope` param.
|
|
593
|
+
scopes: ["read", "write"]
|
|
594
|
+
},
|
|
595
|
+
delivery: {
|
|
596
|
+
mcp: {
|
|
597
|
+
// mcp-linear (stdio, @linear/sdk) in BYO-token headless mode: the OAuth
|
|
598
|
+
// access token is fed via LINEAR_API_KEY (env only, never argv) and the
|
|
599
|
+
// Linear GraphQL API accepts it as the Authorization header directly.
|
|
600
|
+
// Verified headless end-to-end (search_issues returned real issues) —
|
|
601
|
+
// the OFFICIAL remote MCP (mcp.linear.app) can't be used here because it
|
|
602
|
+
// forces its own interactive browser OAuth. Version PINNED; bump only
|
|
603
|
+
// after re-verifying headless. Tools: search/get/create/update issue +
|
|
604
|
+
// add comment (read + write).
|
|
605
|
+
command: "npx",
|
|
606
|
+
args: ["-y", "mcp-linear@0.1.8"],
|
|
607
|
+
envMapping: {
|
|
608
|
+
LINEAR_API_KEY: "accessToken"
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
555
612
|
}
|
|
556
613
|
};
|
|
557
614
|
function getIntegration(id) {
|
|
@@ -5780,7 +5837,7 @@ function readAnonId() {
|
|
|
5780
5837
|
}
|
|
5781
5838
|
function superProperties() {
|
|
5782
5839
|
return {
|
|
5783
|
-
cliVersion: true ? "2.60.
|
|
5840
|
+
cliVersion: true ? "2.60.62" : "0.0.0-dev",
|
|
5784
5841
|
nodeVersion: process.version,
|
|
5785
5842
|
platform: process.platform,
|
|
5786
5843
|
arch: process.arch,
|
|
@@ -5961,7 +6018,7 @@ var os4 = __toESM(require("os"));
|
|
|
5961
6018
|
// package.json
|
|
5962
6019
|
var package_default = {
|
|
5963
6020
|
name: "codeam-cli",
|
|
5964
|
-
version: "2.60.
|
|
6021
|
+
version: "2.60.62",
|
|
5965
6022
|
description: "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device \u2014 async. The terminal companion for CodeAgent Mobile.",
|
|
5966
6023
|
type: "commonjs",
|
|
5967
6024
|
main: "dist/index.js",
|
|
@@ -7070,7 +7127,7 @@ var CommandRelayService = class {
|
|
|
7070
7127
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
7071
7128
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
7072
7129
|
// pair/reconnect). Older backends ignore the extra field.
|
|
7073
|
-
..."2.60.
|
|
7130
|
+
..."2.60.62" ? { ideVersion: "2.60.62" } : {}
|
|
7074
7131
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
7075
7132
|
}
|
|
7076
7133
|
/**
|
|
@@ -17647,7 +17704,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17647
17704
|
if (process.env.NODE_ENV === "test") return;
|
|
17648
17705
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17649
17706
|
if (process.env.CI) return;
|
|
17650
|
-
const current = true ? "2.60.
|
|
17707
|
+
const current = true ? "2.60.62" : null;
|
|
17651
17708
|
if (!current) return;
|
|
17652
17709
|
const cache = readCache();
|
|
17653
17710
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17664,7 +17721,7 @@ function checkForUpdates() {
|
|
|
17664
17721
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17665
17722
|
if (process.env.CI) return;
|
|
17666
17723
|
if (!process.stdout.isTTY) return;
|
|
17667
|
-
const current = true ? "2.60.
|
|
17724
|
+
const current = true ? "2.60.62" : null;
|
|
17668
17725
|
if (!current) return;
|
|
17669
17726
|
const cache = readCache();
|
|
17670
17727
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17684,7 +17741,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
17684
17741
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
17685
17742
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
17686
17743
|
function currentCliVersion() {
|
|
17687
|
-
return true ? "2.60.
|
|
17744
|
+
return true ? "2.60.62" : null;
|
|
17688
17745
|
}
|
|
17689
17746
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17690
17747
|
return new Promise((resolve7) => {
|
|
@@ -35113,7 +35170,7 @@ function checkChokidar() {
|
|
|
35113
35170
|
}
|
|
35114
35171
|
async function doctor(args2 = []) {
|
|
35115
35172
|
const json = args2.includes("--json");
|
|
35116
|
-
const cliVersion = true ? "2.60.
|
|
35173
|
+
const cliVersion = true ? "2.60.62" : "0.0.0-dev";
|
|
35117
35174
|
const apiBase2 = resolveApiBaseUrl();
|
|
35118
35175
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
35119
35176
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -35590,7 +35647,7 @@ async function mcpRun(args2) {
|
|
|
35590
35647
|
// src/commands/version.ts
|
|
35591
35648
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
35592
35649
|
function version2() {
|
|
35593
|
-
const v = true ? "2.60.
|
|
35650
|
+
const v = true ? "2.60.62" : "unknown";
|
|
35594
35651
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
35595
35652
|
}
|
|
35596
35653
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.60.
|
|
3
|
+
"version": "2.60.62",
|
|
4
4
|
"description": "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device — async. The terminal companion for CodeAgent Mobile.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|