codeam-cli 2.60.62 → 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,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.63] — 2026-07-15
8
+
9
+ ### Added
10
+
11
+ - **shared:** Add Slack as a live Agent Toolkit integration
12
+
13
+ ## [2.60.62] — 2026-07-15
14
+
15
+ ### Added
16
+
17
+ - **shared:** Add Linear as a live Agent Toolkit integration
18
+
7
19
  ## [2.60.61] — 2026-07-15
8
20
 
9
21
  ### Added
package/dist/index.js CHANGED
@@ -609,6 +609,60 @@ var INTEGRATION_REGISTRY = {
609
609
  }
610
610
  }
611
611
  }
612
+ },
613
+ slack: {
614
+ id: "slack",
615
+ name: "Slack",
616
+ icon: "slack",
617
+ // LIVE — the Slack app (OAuth v2, USER token — the agent acts AS THE USER)
618
+ // is registered and
619
+ // SLACK_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI are in Secret Manager
620
+ // (prod+dev). The backend SlackOAuthProvider is config-gated (503 if env
621
+ // unset) so this is safe even mid-rollout before the secrets mount.
622
+ enabled: true,
623
+ auth: {
624
+ kind: "oauth_redirect",
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.
631
+ scopes: [
632
+ "channels:read",
633
+ "channels:history",
634
+ "groups:read",
635
+ "groups:history",
636
+ "chat:write",
637
+ "reactions:read",
638
+ "reactions:write",
639
+ "users:read",
640
+ "im:read",
641
+ "im:history",
642
+ "mpim:read",
643
+ "mpim:history",
644
+ // Message search across the user's channels/DMs (a user-only scope).
645
+ "search:read"
646
+ ]
647
+ },
648
+ delivery: {
649
+ mcp: {
650
+ // Slack's official reference MCP server (Node). BYO-token headless: the
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
655
+ // re-verifying headless. Tools: list_channels, post_message,
656
+ // reply_to_thread, add_reaction, get_channel_history,
657
+ // get_thread_replies, get_users, get_user_profile (read + write).
658
+ command: "npx",
659
+ args: ["-y", "@modelcontextprotocol/server-slack@2025.4.25"],
660
+ envMapping: {
661
+ SLACK_BOT_TOKEN: "accessToken",
662
+ SLACK_TEAM_ID: "teamId"
663
+ }
664
+ }
665
+ }
612
666
  }
613
667
  };
614
668
  function getIntegration(id) {
@@ -5837,7 +5891,7 @@ function readAnonId() {
5837
5891
  }
5838
5892
  function superProperties() {
5839
5893
  return {
5840
- cliVersion: true ? "2.60.62" : "0.0.0-dev",
5894
+ cliVersion: true ? "2.60.64" : "0.0.0-dev",
5841
5895
  nodeVersion: process.version,
5842
5896
  platform: process.platform,
5843
5897
  arch: process.arch,
@@ -6018,7 +6072,7 @@ var os4 = __toESM(require("os"));
6018
6072
  // package.json
6019
6073
  var package_default = {
6020
6074
  name: "codeam-cli",
6021
- version: "2.60.62",
6075
+ version: "2.60.64",
6022
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.",
6023
6077
  type: "commonjs",
6024
6078
  main: "dist/index.js",
@@ -7127,7 +7181,7 @@ var CommandRelayService = class {
7127
7181
  // fresh + clear the "CLI update available" banner after a self-update
7128
7182
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
7129
7183
  // pair/reconnect). Older backends ignore the extra field.
7130
- ..."2.60.62" ? { ideVersion: "2.60.62" } : {}
7184
+ ..."2.60.64" ? { ideVersion: "2.60.64" } : {}
7131
7185
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
7132
7186
  }
7133
7187
  /**
@@ -17704,7 +17758,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17704
17758
  if (process.env.NODE_ENV === "test") return;
17705
17759
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17706
17760
  if (process.env.CI) return;
17707
- const current = true ? "2.60.62" : null;
17761
+ const current = true ? "2.60.64" : null;
17708
17762
  if (!current) return;
17709
17763
  const cache = readCache();
17710
17764
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17721,7 +17775,7 @@ function checkForUpdates() {
17721
17775
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17722
17776
  if (process.env.CI) return;
17723
17777
  if (!process.stdout.isTTY) return;
17724
- const current = true ? "2.60.62" : null;
17778
+ const current = true ? "2.60.64" : null;
17725
17779
  if (!current) return;
17726
17780
  const cache = readCache();
17727
17781
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17741,7 +17795,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
17741
17795
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
17742
17796
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
17743
17797
  function currentCliVersion() {
17744
- return true ? "2.60.62" : null;
17798
+ return true ? "2.60.64" : null;
17745
17799
  }
17746
17800
  function runCmd(cmd, args2, timeoutMs) {
17747
17801
  return new Promise((resolve7) => {
@@ -35170,7 +35224,7 @@ function checkChokidar() {
35170
35224
  }
35171
35225
  async function doctor(args2 = []) {
35172
35226
  const json = args2.includes("--json");
35173
- const cliVersion = true ? "2.60.62" : "0.0.0-dev";
35227
+ const cliVersion = true ? "2.60.64" : "0.0.0-dev";
35174
35228
  const apiBase2 = resolveApiBaseUrl();
35175
35229
  const diagnosticId = (0, import_node_crypto12.randomUUID)();
35176
35230
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -35647,7 +35701,7 @@ async function mcpRun(args2) {
35647
35701
  // src/commands/version.ts
35648
35702
  var import_picocolors15 = __toESM(require("picocolors"));
35649
35703
  function version2() {
35650
- const v = true ? "2.60.62" : "unknown";
35704
+ const v = true ? "2.60.64" : "unknown";
35651
35705
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
35652
35706
  }
35653
35707
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.60.62",
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",