codeam-cli 2.60.61 → 2.60.63
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 +95 -8
- 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.62] — 2026-07-15
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** Add Linear as a live Agent Toolkit integration
|
|
12
|
+
|
|
13
|
+
## [2.60.61] — 2026-07-15
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **shared:** Sentry full read+write scopes + --add-scopes on the MCP server
|
|
18
|
+
|
|
7
19
|
## [2.60.60] — 2026-07-14
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -572,6 +572,93 @@ 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
|
+
}
|
|
612
|
+
},
|
|
613
|
+
slack: {
|
|
614
|
+
id: "slack",
|
|
615
|
+
name: "Slack",
|
|
616
|
+
icon: "slack",
|
|
617
|
+
// LIVE — the Slack app (OAuth v2, bot token) is registered and
|
|
618
|
+
// SLACK_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI are in Secret Manager
|
|
619
|
+
// (prod+dev). The backend SlackOAuthProvider is config-gated (503 if env
|
|
620
|
+
// unset) so this is safe even mid-rollout before the secrets mount.
|
|
621
|
+
enabled: true,
|
|
622
|
+
auth: {
|
|
623
|
+
kind: "oauth_redirect",
|
|
624
|
+
// Slack Bot Token Scopes (OAuth v2). Read + write across channels,
|
|
625
|
+
// groups, DMs: list/read history, post messages, react. `scope` is
|
|
626
|
+
// COMMA-separated in the authorize URL. ⚠️ Changing these requires the
|
|
627
|
+
// user to RE-INSTALL the Slack app — the bot token only carries the
|
|
628
|
+
// scopes granted at install time. The bot can only read channels it's
|
|
629
|
+
// been invited to (standard Slack bot behavior).
|
|
630
|
+
scopes: [
|
|
631
|
+
"channels:read",
|
|
632
|
+
"channels:history",
|
|
633
|
+
"groups:read",
|
|
634
|
+
"groups:history",
|
|
635
|
+
"chat:write",
|
|
636
|
+
"reactions:read",
|
|
637
|
+
"reactions:write",
|
|
638
|
+
"users:read",
|
|
639
|
+
"im:read",
|
|
640
|
+
"im:history",
|
|
641
|
+
"mpim:read",
|
|
642
|
+
"mpim:history"
|
|
643
|
+
]
|
|
644
|
+
},
|
|
645
|
+
delivery: {
|
|
646
|
+
mcp: {
|
|
647
|
+
// Slack's official reference MCP server (Node). BYO-token headless: the
|
|
648
|
+
// OAuth v2 bot token (xoxb-…) is fed via SLACK_BOT_TOKEN and the team
|
|
649
|
+
// id via SLACK_TEAM_ID (env only, never argv). The server sends the
|
|
650
|
+
// token as `Authorization: Bearer`. Version PINNED; bump only after
|
|
651
|
+
// re-verifying headless. Tools: list_channels, post_message,
|
|
652
|
+
// reply_to_thread, add_reaction, get_channel_history,
|
|
653
|
+
// get_thread_replies, get_users, get_user_profile (read + write).
|
|
654
|
+
command: "npx",
|
|
655
|
+
args: ["-y", "@modelcontextprotocol/server-slack@2025.4.25"],
|
|
656
|
+
envMapping: {
|
|
657
|
+
SLACK_BOT_TOKEN: "accessToken",
|
|
658
|
+
SLACK_TEAM_ID: "teamId"
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
575
662
|
}
|
|
576
663
|
};
|
|
577
664
|
function getIntegration(id) {
|
|
@@ -5800,7 +5887,7 @@ function readAnonId() {
|
|
|
5800
5887
|
}
|
|
5801
5888
|
function superProperties() {
|
|
5802
5889
|
return {
|
|
5803
|
-
cliVersion: true ? "2.60.
|
|
5890
|
+
cliVersion: true ? "2.60.63" : "0.0.0-dev",
|
|
5804
5891
|
nodeVersion: process.version,
|
|
5805
5892
|
platform: process.platform,
|
|
5806
5893
|
arch: process.arch,
|
|
@@ -5981,7 +6068,7 @@ var os4 = __toESM(require("os"));
|
|
|
5981
6068
|
// package.json
|
|
5982
6069
|
var package_default = {
|
|
5983
6070
|
name: "codeam-cli",
|
|
5984
|
-
version: "2.60.
|
|
6071
|
+
version: "2.60.63",
|
|
5985
6072
|
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
6073
|
type: "commonjs",
|
|
5987
6074
|
main: "dist/index.js",
|
|
@@ -7090,7 +7177,7 @@ var CommandRelayService = class {
|
|
|
7090
7177
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
7091
7178
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
7092
7179
|
// pair/reconnect). Older backends ignore the extra field.
|
|
7093
|
-
..."2.60.
|
|
7180
|
+
..."2.60.63" ? { ideVersion: "2.60.63" } : {}
|
|
7094
7181
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
7095
7182
|
}
|
|
7096
7183
|
/**
|
|
@@ -17667,7 +17754,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17667
17754
|
if (process.env.NODE_ENV === "test") return;
|
|
17668
17755
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17669
17756
|
if (process.env.CI) return;
|
|
17670
|
-
const current = true ? "2.60.
|
|
17757
|
+
const current = true ? "2.60.63" : null;
|
|
17671
17758
|
if (!current) return;
|
|
17672
17759
|
const cache = readCache();
|
|
17673
17760
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17684,7 +17771,7 @@ function checkForUpdates() {
|
|
|
17684
17771
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17685
17772
|
if (process.env.CI) return;
|
|
17686
17773
|
if (!process.stdout.isTTY) return;
|
|
17687
|
-
const current = true ? "2.60.
|
|
17774
|
+
const current = true ? "2.60.63" : null;
|
|
17688
17775
|
if (!current) return;
|
|
17689
17776
|
const cache = readCache();
|
|
17690
17777
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17704,7 +17791,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
17704
17791
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
17705
17792
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
17706
17793
|
function currentCliVersion() {
|
|
17707
|
-
return true ? "2.60.
|
|
17794
|
+
return true ? "2.60.63" : null;
|
|
17708
17795
|
}
|
|
17709
17796
|
function runCmd(cmd, args2, timeoutMs) {
|
|
17710
17797
|
return new Promise((resolve7) => {
|
|
@@ -35133,7 +35220,7 @@ function checkChokidar() {
|
|
|
35133
35220
|
}
|
|
35134
35221
|
async function doctor(args2 = []) {
|
|
35135
35222
|
const json = args2.includes("--json");
|
|
35136
|
-
const cliVersion = true ? "2.60.
|
|
35223
|
+
const cliVersion = true ? "2.60.63" : "0.0.0-dev";
|
|
35137
35224
|
const apiBase2 = resolveApiBaseUrl();
|
|
35138
35225
|
const diagnosticId = (0, import_node_crypto12.randomUUID)();
|
|
35139
35226
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -35610,7 +35697,7 @@ async function mcpRun(args2) {
|
|
|
35610
35697
|
// src/commands/version.ts
|
|
35611
35698
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
35612
35699
|
function version2() {
|
|
35613
|
-
const v = true ? "2.60.
|
|
35700
|
+
const v = true ? "2.60.63" : "unknown";
|
|
35614
35701
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
35615
35702
|
}
|
|
35616
35703
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.60.
|
|
3
|
+
"version": "2.60.63",
|
|
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",
|