codeam-cli 2.60.61 → 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 CHANGED
@@ -4,6 +4,12 @@ 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
+
7
13
  ## [2.60.60] — 2026-07-14
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -572,6 +572,43 @@ var INTEGRATION_REGISTRY = {
572
572
  }
573
573
  }
574
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
+ }
575
612
  }
576
613
  };
577
614
  function getIntegration(id) {
@@ -5800,7 +5837,7 @@ function readAnonId() {
5800
5837
  }
5801
5838
  function superProperties() {
5802
5839
  return {
5803
- cliVersion: true ? "2.60.61" : "0.0.0-dev",
5840
+ cliVersion: true ? "2.60.62" : "0.0.0-dev",
5804
5841
  nodeVersion: process.version,
5805
5842
  platform: process.platform,
5806
5843
  arch: process.arch,
@@ -5981,7 +6018,7 @@ var os4 = __toESM(require("os"));
5981
6018
  // package.json
5982
6019
  var package_default = {
5983
6020
  name: "codeam-cli",
5984
- version: "2.60.61",
6021
+ version: "2.60.62",
5985
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.",
5986
6023
  type: "commonjs",
5987
6024
  main: "dist/index.js",
@@ -7090,7 +7127,7 @@ var CommandRelayService = class {
7090
7127
  // fresh + clear the "CLI update available" banner after a self-update
7091
7128
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
7092
7129
  // pair/reconnect). Older backends ignore the extra field.
7093
- ..."2.60.61" ? { ideVersion: "2.60.61" } : {}
7130
+ ..."2.60.62" ? { ideVersion: "2.60.62" } : {}
7094
7131
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
7095
7132
  }
7096
7133
  /**
@@ -17667,7 +17704,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17667
17704
  if (process.env.NODE_ENV === "test") return;
17668
17705
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17669
17706
  if (process.env.CI) return;
17670
- const current = true ? "2.60.61" : null;
17707
+ const current = true ? "2.60.62" : null;
17671
17708
  if (!current) return;
17672
17709
  const cache = readCache();
17673
17710
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17684,7 +17721,7 @@ function checkForUpdates() {
17684
17721
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17685
17722
  if (process.env.CI) return;
17686
17723
  if (!process.stdout.isTTY) return;
17687
- const current = true ? "2.60.61" : null;
17724
+ const current = true ? "2.60.62" : null;
17688
17725
  if (!current) return;
17689
17726
  const cache = readCache();
17690
17727
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17704,7 +17741,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
17704
17741
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
17705
17742
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
17706
17743
  function currentCliVersion() {
17707
- return true ? "2.60.61" : null;
17744
+ return true ? "2.60.62" : null;
17708
17745
  }
17709
17746
  function runCmd(cmd, args2, timeoutMs) {
17710
17747
  return new Promise((resolve7) => {
@@ -35133,7 +35170,7 @@ function checkChokidar() {
35133
35170
  }
35134
35171
  async function doctor(args2 = []) {
35135
35172
  const json = args2.includes("--json");
35136
- const cliVersion = true ? "2.60.61" : "0.0.0-dev";
35173
+ const cliVersion = true ? "2.60.62" : "0.0.0-dev";
35137
35174
  const apiBase2 = resolveApiBaseUrl();
35138
35175
  const diagnosticId = (0, import_node_crypto12.randomUUID)();
35139
35176
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -35610,7 +35647,7 @@ async function mcpRun(args2) {
35610
35647
  // src/commands/version.ts
35611
35648
  var import_picocolors15 = __toESM(require("picocolors"));
35612
35649
  function version2() {
35613
- const v = true ? "2.60.61" : "unknown";
35650
+ const v = true ? "2.60.62" : "unknown";
35614
35651
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
35615
35652
  }
35616
35653
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.60.61",
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",