codeam-cli 2.60.63 → 2.60.64

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.63] — 2026-07-15
8
+
9
+ ### Added
10
+
11
+ - **shared:** Add Slack as a live Agent Toolkit integration
12
+
7
13
  ## [2.60.62] — 2026-07-15
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -614,19 +614,20 @@ var INTEGRATION_REGISTRY = {
614
614
  id: "slack",
615
615
  name: "Slack",
616
616
  icon: "slack",
617
- // LIVE — the Slack app (OAuth v2, bot token) is registered and
617
+ // LIVE — the Slack app (OAuth v2, USER token the agent acts AS THE USER)
618
+ // is registered and
618
619
  // SLACK_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI are in Secret Manager
619
620
  // (prod+dev). The backend SlackOAuthProvider is config-gated (503 if env
620
621
  // unset) so this is safe even mid-rollout before the secrets mount.
621
622
  enabled: true,
622
623
  auth: {
623
624
  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).
625
+ // Slack USER Token Scopes (OAuth v2). Read + write across channels,
626
+ // groups, DMs: list/read history, post messages, react all AS THE USER.
627
+ // The backend provider requests these under `user_scope` (comma-separated)
628
+ // and stores the authed_user `xoxp-…` token, so the agent sees everything
629
+ // the user sees (no bot needs to be invited to channels). ⚠️ Changing
630
+ // these requires the user to RE-AUTHORIZE the Slack app.
630
631
  scopes: [
631
632
  "channels:read",
632
633
  "channels:history",
@@ -639,15 +640,18 @@ var INTEGRATION_REGISTRY = {
639
640
  "im:read",
640
641
  "im:history",
641
642
  "mpim:read",
642
- "mpim:history"
643
+ "mpim:history",
644
+ // Message search across the user's channels/DMs (a user-only scope).
645
+ "search:read"
643
646
  ]
644
647
  },
645
648
  delivery: {
646
649
  mcp: {
647
650
  // 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
+ // OAuth v2 USER token (xoxp-…) is fed via SLACK_BOT_TOKEN (the server's
652
+ // env var name it sends whatever token as `Authorization: Bearer`, and
653
+ // Slack's Web API accepts a user token there) and the team id via
654
+ // SLACK_TEAM_ID (env only, never argv). Version PINNED; bump only after
651
655
  // re-verifying headless. Tools: list_channels, post_message,
652
656
  // reply_to_thread, add_reaction, get_channel_history,
653
657
  // get_thread_replies, get_users, get_user_profile (read + write).
@@ -5887,7 +5891,7 @@ function readAnonId() {
5887
5891
  }
5888
5892
  function superProperties() {
5889
5893
  return {
5890
- cliVersion: true ? "2.60.63" : "0.0.0-dev",
5894
+ cliVersion: true ? "2.60.64" : "0.0.0-dev",
5891
5895
  nodeVersion: process.version,
5892
5896
  platform: process.platform,
5893
5897
  arch: process.arch,
@@ -6068,7 +6072,7 @@ var os4 = __toESM(require("os"));
6068
6072
  // package.json
6069
6073
  var package_default = {
6070
6074
  name: "codeam-cli",
6071
- version: "2.60.63",
6075
+ version: "2.60.64",
6072
6076
  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.",
6073
6077
  type: "commonjs",
6074
6078
  main: "dist/index.js",
@@ -7177,7 +7181,7 @@ var CommandRelayService = class {
7177
7181
  // fresh + clear the "CLI update available" banner after a self-update
7178
7182
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
7179
7183
  // pair/reconnect). Older backends ignore the extra field.
7180
- ..."2.60.63" ? { ideVersion: "2.60.63" } : {}
7184
+ ..."2.60.64" ? { ideVersion: "2.60.64" } : {}
7181
7185
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
7182
7186
  }
7183
7187
  /**
@@ -17754,7 +17758,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17754
17758
  if (process.env.NODE_ENV === "test") return;
17755
17759
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17756
17760
  if (process.env.CI) return;
17757
- const current = true ? "2.60.63" : null;
17761
+ const current = true ? "2.60.64" : null;
17758
17762
  if (!current) return;
17759
17763
  const cache = readCache();
17760
17764
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17771,7 +17775,7 @@ function checkForUpdates() {
17771
17775
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17772
17776
  if (process.env.CI) return;
17773
17777
  if (!process.stdout.isTTY) return;
17774
- const current = true ? "2.60.63" : null;
17778
+ const current = true ? "2.60.64" : null;
17775
17779
  if (!current) return;
17776
17780
  const cache = readCache();
17777
17781
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17791,7 +17795,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
17791
17795
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
17792
17796
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
17793
17797
  function currentCliVersion() {
17794
- return true ? "2.60.63" : null;
17798
+ return true ? "2.60.64" : null;
17795
17799
  }
17796
17800
  function runCmd(cmd, args2, timeoutMs) {
17797
17801
  return new Promise((resolve7) => {
@@ -35220,7 +35224,7 @@ function checkChokidar() {
35220
35224
  }
35221
35225
  async function doctor(args2 = []) {
35222
35226
  const json = args2.includes("--json");
35223
- const cliVersion = true ? "2.60.63" : "0.0.0-dev";
35227
+ const cliVersion = true ? "2.60.64" : "0.0.0-dev";
35224
35228
  const apiBase2 = resolveApiBaseUrl();
35225
35229
  const diagnosticId = (0, import_node_crypto12.randomUUID)();
35226
35230
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -35697,7 +35701,7 @@ async function mcpRun(args2) {
35697
35701
  // src/commands/version.ts
35698
35702
  var import_picocolors15 = __toESM(require("picocolors"));
35699
35703
  function version2() {
35700
- const v = true ? "2.60.63" : "unknown";
35704
+ const v = true ? "2.60.64" : "unknown";
35701
35705
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
35702
35706
  }
35703
35707
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.60.63",
3
+ "version": "2.60.64",
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",