codeam-cli 2.61.42 → 2.61.44
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 +81 -14
- 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.61.43] — 2026-07-25
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** Discord comms integration — OAuth bot-invite, guildId discriminator
|
|
12
|
+
|
|
13
|
+
## [2.61.42] — 2026-07-25
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **cli:** Host-agent deploy supports a specific branch/ref
|
|
18
|
+
|
|
7
19
|
## [2.61.41] — 2026-07-25
|
|
8
20
|
|
|
9
21
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -780,12 +780,79 @@ var INTEGRATION_REGISTRY = {
|
|
|
780
780
|
name: "Discord",
|
|
781
781
|
icon: "discord",
|
|
782
782
|
category: "comms",
|
|
783
|
-
//
|
|
784
|
-
//
|
|
785
|
-
//
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
783
|
+
// LIVE — the DiscordOAuthProvider + DISCORD_* secrets (client id/secret,
|
|
784
|
+
// bot token, per-env redirect) are registered; the backend provider is
|
|
785
|
+
// config-gated (503 if env unset). Follows the SLACK pattern (OAuth redirect, zero friction),
|
|
786
|
+
// EXCEPT Discord OAuth gives no per-install token: the user's `bot`-scope
|
|
787
|
+
// authorize INVITES the app's single bot into their guild, and we store the
|
|
788
|
+
// returned guild id as the per-user credential. The broker injects the app's
|
|
789
|
+
// BOT token as `accessToken` (from config), so `DISCORD_TOKEN` = that bot
|
|
790
|
+
// token and `DISCORD_GUILD_ID` = the user's guild.
|
|
791
|
+
enabled: true,
|
|
792
|
+
auth: {
|
|
793
|
+
kind: "oauth_redirect",
|
|
794
|
+
// `bot` invites the app's bot into the user's guild (Guild Install);
|
|
795
|
+
// `guilds` lets the exchange read the guild name for display. The bot's
|
|
796
|
+
// channel permissions (View Channels + Read Message History + Send
|
|
797
|
+
// Messages + Send Messages in Threads) are set on the app's bot, NOT here.
|
|
798
|
+
// ⚠️ The app's bot MUST have the Message Content privileged intent enabled
|
|
799
|
+
// or read_messages returns empty content.
|
|
800
|
+
scopes: ["bot", "guilds"]
|
|
801
|
+
},
|
|
802
|
+
delivery: {
|
|
803
|
+
mcp: {
|
|
804
|
+
// mcp-discord (barryyip0625) — Node stdio, BYO bot token headless via the
|
|
805
|
+
// DISCORD_TOKEN env (never argv). Version PINNED; bump only after
|
|
806
|
+
// re-verifying headless. Tools: list/read channels + messages, send
|
|
807
|
+
// message, reply in thread, add reaction. `DISCORD_GUILD_ID` scopes it to
|
|
808
|
+
// the user's invited guild.
|
|
809
|
+
command: "npx",
|
|
810
|
+
args: ["-y", "mcp-discord@1.3.4"],
|
|
811
|
+
envMapping: {
|
|
812
|
+
DISCORD_TOKEN: "accessToken",
|
|
813
|
+
DISCORD_GUILD_ID: "guildId"
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
},
|
|
818
|
+
resend: {
|
|
819
|
+
id: "resend",
|
|
820
|
+
name: "Resend",
|
|
821
|
+
icon: "resend",
|
|
822
|
+
category: "comms",
|
|
823
|
+
// LIVE — api_key (like Azure DevOps): the user pastes a Resend API key
|
|
824
|
+
// (`re_…`); Resend has NO OAuth, so there's no OAuth app / GSM secret /
|
|
825
|
+
// config-gated 503 — a backend VALIDATOR proves the key against the Resend
|
|
826
|
+
// API and vaults it. ⚠️ SEND-ONLY email → `sendOnly: true` keeps it OUT of
|
|
827
|
+
// From-Conversation (comms conversation sources need readable threads; Resend
|
|
828
|
+
// has none) while still being a linkable comms tool the agent uses via MCP.
|
|
829
|
+
enabled: true,
|
|
830
|
+
sendOnly: true,
|
|
831
|
+
auth: {
|
|
832
|
+
kind: "api_key",
|
|
833
|
+
fields: [
|
|
834
|
+
{
|
|
835
|
+
key: "accessToken",
|
|
836
|
+
label: "API Key",
|
|
837
|
+
placeholder: "re_xxxxxxxxxxxxxxxx",
|
|
838
|
+
secret: true,
|
|
839
|
+
help: 'Create in Resend \u2192 API Keys (https://resend.com/api-keys). "Sending access" is enough.'
|
|
840
|
+
}
|
|
841
|
+
]
|
|
842
|
+
},
|
|
843
|
+
delivery: {
|
|
844
|
+
mcp: {
|
|
845
|
+
// The OFFICIAL resend-mcp (Node) in BYO-token mode: the API key is fed
|
|
846
|
+
// via RESEND_API_KEY (env only, never argv). Version PINNED; bump only
|
|
847
|
+
// after re-verifying headless. Tools: send email + contacts/broadcasts/
|
|
848
|
+
// domains.
|
|
849
|
+
command: "npx",
|
|
850
|
+
args: ["-y", "resend-mcp@2.6.1"],
|
|
851
|
+
envMapping: {
|
|
852
|
+
RESEND_API_KEY: "accessToken"
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
}
|
|
789
856
|
},
|
|
790
857
|
notion: {
|
|
791
858
|
id: "notion",
|
|
@@ -6355,7 +6422,7 @@ function readAnonId() {
|
|
|
6355
6422
|
}
|
|
6356
6423
|
function superProperties() {
|
|
6357
6424
|
return {
|
|
6358
|
-
cliVersion: true ? "2.61.
|
|
6425
|
+
cliVersion: true ? "2.61.44" : "0.0.0-dev",
|
|
6359
6426
|
nodeVersion: process.version,
|
|
6360
6427
|
platform: process.platform,
|
|
6361
6428
|
arch: process.arch,
|
|
@@ -6536,7 +6603,7 @@ var os4 = __toESM(require("os"));
|
|
|
6536
6603
|
// package.json
|
|
6537
6604
|
var package_default = {
|
|
6538
6605
|
name: "codeam-cli",
|
|
6539
|
-
version: "2.61.
|
|
6606
|
+
version: "2.61.44",
|
|
6540
6607
|
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.",
|
|
6541
6608
|
type: "commonjs",
|
|
6542
6609
|
main: "dist/index.js",
|
|
@@ -7707,7 +7774,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
7707
7774
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
7708
7775
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
7709
7776
|
// pair/reconnect). Older backends ignore the extra field.
|
|
7710
|
-
..."2.61.
|
|
7777
|
+
..."2.61.44" ? { ideVersion: "2.61.44" } : {}
|
|
7711
7778
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
7712
7779
|
}
|
|
7713
7780
|
/**
|
|
@@ -18692,7 +18759,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
18692
18759
|
if (process.env.NODE_ENV === "test") return;
|
|
18693
18760
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
18694
18761
|
if (process.env.CI) return;
|
|
18695
|
-
const current = true ? "2.61.
|
|
18762
|
+
const current = true ? "2.61.44" : null;
|
|
18696
18763
|
if (!current) return;
|
|
18697
18764
|
const cache = readCache();
|
|
18698
18765
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18709,7 +18776,7 @@ function checkForUpdates() {
|
|
|
18709
18776
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
18710
18777
|
if (process.env.CI) return;
|
|
18711
18778
|
if (!process.stdout.isTTY) return;
|
|
18712
|
-
const current = true ? "2.61.
|
|
18779
|
+
const current = true ? "2.61.44" : null;
|
|
18713
18780
|
if (!current) return;
|
|
18714
18781
|
const cache = readCache();
|
|
18715
18782
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18729,7 +18796,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
18729
18796
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
18730
18797
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
18731
18798
|
function currentCliVersion() {
|
|
18732
|
-
return true ? "2.61.
|
|
18799
|
+
return true ? "2.61.44" : null;
|
|
18733
18800
|
}
|
|
18734
18801
|
function runCmd(cmd, args2, timeoutMs) {
|
|
18735
18802
|
return new Promise((resolve8) => {
|
|
@@ -38855,7 +38922,7 @@ function checkChokidar() {
|
|
|
38855
38922
|
}
|
|
38856
38923
|
async function doctor(args2 = []) {
|
|
38857
38924
|
const json = args2.includes("--json");
|
|
38858
|
-
const cliVersion = true ? "2.61.
|
|
38925
|
+
const cliVersion = true ? "2.61.44" : "0.0.0-dev";
|
|
38859
38926
|
const apiBase2 = resolveApiBaseUrl();
|
|
38860
38927
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
38861
38928
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -39366,7 +39433,7 @@ async function mcpRun(args2) {
|
|
|
39366
39433
|
// src/commands/version.ts
|
|
39367
39434
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
39368
39435
|
function version2() {
|
|
39369
|
-
const v = true ? "2.61.
|
|
39436
|
+
const v = true ? "2.61.44" : "unknown";
|
|
39370
39437
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
39371
39438
|
}
|
|
39372
39439
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.61.
|
|
3
|
+
"version": "2.61.44",
|
|
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",
|