codeam-cli 2.61.65 → 2.61.67
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 +119 -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.66] — 2026-07-28
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **shared:** Figma dual-auth (OAuth primary + PAT fallback) — enable design
|
|
12
|
+
|
|
13
|
+
## [2.61.65] — 2026-07-28
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **shared:** Enable Microsoft Teams (comms, OAuth Graph + teams MCP)
|
|
18
|
+
|
|
7
19
|
## [2.61.64] — 2026-07-28
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -1158,11 +1158,12 @@ var INTEGRATION_REGISTRY = {
|
|
|
1158
1158
|
name: "Figma",
|
|
1159
1159
|
icon: "figma",
|
|
1160
1160
|
category: "design",
|
|
1161
|
-
//
|
|
1162
|
-
//
|
|
1163
|
-
//
|
|
1164
|
-
//
|
|
1165
|
-
|
|
1161
|
+
// LIVE. OAuth is the PRIMARY flow (app pending Figma's review — until it
|
|
1162
|
+
// passes the authorize URL errors "OAuth app doesn't exist"), so a PAT
|
|
1163
|
+
// fallback (`apiKeyFallback`) ships alongside it and works TODAY: the user
|
|
1164
|
+
// pastes a Figma personal access token. Same OAuth-primary + PAT-secondary
|
|
1165
|
+
// shape as GitHub. Flip of the OAuth review is transparent (bead codeagent-m4ix).
|
|
1166
|
+
enabled: true,
|
|
1166
1167
|
auth: {
|
|
1167
1168
|
kind: "oauth_redirect",
|
|
1168
1169
|
// Granular READ-ONLY scopes (legacy `files:read` is deprecated for
|
|
@@ -1176,7 +1177,25 @@ var INTEGRATION_REGISTRY = {
|
|
|
1176
1177
|
"file_metadata:read",
|
|
1177
1178
|
"file_dev_resources:read",
|
|
1178
1179
|
"library_content:read"
|
|
1179
|
-
]
|
|
1180
|
+
],
|
|
1181
|
+
// SECONDARY: paste a Figma personal access token instead of OAuth. The
|
|
1182
|
+
// PAT uses the `X-Figma-Token` header, so the delivery env var differs
|
|
1183
|
+
// from OAuth (`FIGMA_API_KEY` vs `FIGMA_OAUTH_TOKEN`) — hence its own
|
|
1184
|
+
// envMapping, used when the credential was linked via PAT.
|
|
1185
|
+
apiKeyFallback: {
|
|
1186
|
+
fields: [
|
|
1187
|
+
{
|
|
1188
|
+
key: "accessToken",
|
|
1189
|
+
label: "Figma personal access token",
|
|
1190
|
+
placeholder: "figd_\u2026",
|
|
1191
|
+
secret: true,
|
|
1192
|
+
help: "Figma \u2192 Settings \u2192 Security \u2192 Personal access tokens (read-only scopes)."
|
|
1193
|
+
}
|
|
1194
|
+
],
|
|
1195
|
+
envMapping: {
|
|
1196
|
+
FIGMA_API_KEY: "accessToken"
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1180
1199
|
},
|
|
1181
1200
|
delivery: {
|
|
1182
1201
|
mcp: {
|
|
@@ -1524,6 +1543,92 @@ var INTEGRATION_REGISTRY = {
|
|
|
1524
1543
|
staticEnv: { ATLASSIAN_OAUTH_ENABLE: "true" }
|
|
1525
1544
|
}
|
|
1526
1545
|
}
|
|
1546
|
+
},
|
|
1547
|
+
cloudflare: {
|
|
1548
|
+
id: "cloudflare",
|
|
1549
|
+
name: "Cloudflare",
|
|
1550
|
+
icon: "cloudflare",
|
|
1551
|
+
category: "deployment",
|
|
1552
|
+
// LIVE — Cloudflare self-managed OAuth (dash.cloudflare.com OAuth server,
|
|
1553
|
+
// the same one Wrangler uses). Confidential (Client Secret POST). The agent
|
|
1554
|
+
// inspects/deploys Workers, Pages, DNS, KV, R2 + reads analytics/logs on the
|
|
1555
|
+
// user's account. CLOUDFLARE_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI in Secret
|
|
1556
|
+
// Manager (prod+dev); the backend CloudflareOAuthProvider is config-gated (503).
|
|
1557
|
+
enabled: true,
|
|
1558
|
+
auth: {
|
|
1559
|
+
kind: "oauth_redirect",
|
|
1560
|
+
// Cloudflare OAuth scope IDs == API-token permission-group names (dot
|
|
1561
|
+
// form, e.g. `workers-scripts.write`). ⚠️ MUST exactly match the scopes
|
|
1562
|
+
// configured on the OAuth client (b2b4b87e…). `offline_access` → refresh.
|
|
1563
|
+
scopes: [
|
|
1564
|
+
// Developer Platform (Workers / Pages / KV / R2 / D1 / observability)
|
|
1565
|
+
"d1.read",
|
|
1566
|
+
"page.read",
|
|
1567
|
+
"page.write",
|
|
1568
|
+
"workers-ci.read",
|
|
1569
|
+
"workers-ci.write",
|
|
1570
|
+
"containers.read",
|
|
1571
|
+
"containers.write",
|
|
1572
|
+
"workers-kv-storage.read",
|
|
1573
|
+
"workers-kv-storage.write",
|
|
1574
|
+
"workers-observability.read",
|
|
1575
|
+
"workers-observability-telemetry.write",
|
|
1576
|
+
"workers-observability.write",
|
|
1577
|
+
"r2-catalog.read",
|
|
1578
|
+
"r2-catalog.write",
|
|
1579
|
+
"r2-catalog-sql.read",
|
|
1580
|
+
"workers-r2-bucket-item.read",
|
|
1581
|
+
"workers-r2-bucket-item.write",
|
|
1582
|
+
"workers-r2.read",
|
|
1583
|
+
"workers-r2.write",
|
|
1584
|
+
"workers-routes.read",
|
|
1585
|
+
"workers-routes.write",
|
|
1586
|
+
"workers-scripts.read",
|
|
1587
|
+
"workers-scripts.write",
|
|
1588
|
+
"workers-tail.read",
|
|
1589
|
+
// DNS & Zones
|
|
1590
|
+
"account-dns-settings.read",
|
|
1591
|
+
"account-dns-settings.write",
|
|
1592
|
+
"dns-firewall.read",
|
|
1593
|
+
"dns-firewall.write",
|
|
1594
|
+
"dns.read",
|
|
1595
|
+
"dns-view.read",
|
|
1596
|
+
"dns.write",
|
|
1597
|
+
"registrar-domains.admin",
|
|
1598
|
+
"registrar-sandbox-domains.admin",
|
|
1599
|
+
"zone-dns-settings.read",
|
|
1600
|
+
"zone-dns-settings.write",
|
|
1601
|
+
"zone.read",
|
|
1602
|
+
"zone-settings.read",
|
|
1603
|
+
"zone-settings.write",
|
|
1604
|
+
// Analytics & Logs
|
|
1605
|
+
"account-analytics.read",
|
|
1606
|
+
"analytics.read",
|
|
1607
|
+
"account-logs.read",
|
|
1608
|
+
"logs.read",
|
|
1609
|
+
"radar.read",
|
|
1610
|
+
// Account & Billing
|
|
1611
|
+
"account-api-gateway.read",
|
|
1612
|
+
"account-settings.read",
|
|
1613
|
+
"memberships.read",
|
|
1614
|
+
"notifications.read",
|
|
1615
|
+
"user-details.read",
|
|
1616
|
+
"offline_access"
|
|
1617
|
+
]
|
|
1618
|
+
},
|
|
1619
|
+
delivery: {
|
|
1620
|
+
mcp: {
|
|
1621
|
+
// Headless stdio Cloudflare MCP (Cloudflare API v4) — BYO token via env,
|
|
1622
|
+
// the OAuth access token works as a Bearer against api.cloudflare.com.
|
|
1623
|
+
// The account id is the discriminator for account-level ops. PINNED.
|
|
1624
|
+
command: "npx",
|
|
1625
|
+
args: ["-y", "@itunified.io/mcp-cloudflare@2026.4.10-1"],
|
|
1626
|
+
envMapping: {
|
|
1627
|
+
CLOUDFLARE_API_TOKEN: "accessToken",
|
|
1628
|
+
CLOUDFLARE_ACCOUNT_ID: "accountId"
|
|
1629
|
+
}
|
|
1630
|
+
}
|
|
1631
|
+
}
|
|
1527
1632
|
}
|
|
1528
1633
|
};
|
|
1529
1634
|
function getIntegration(id) {
|
|
@@ -6969,7 +7074,7 @@ function readAnonId() {
|
|
|
6969
7074
|
}
|
|
6970
7075
|
function superProperties() {
|
|
6971
7076
|
return {
|
|
6972
|
-
cliVersion: true ? "2.61.
|
|
7077
|
+
cliVersion: true ? "2.61.67" : "0.0.0-dev",
|
|
6973
7078
|
nodeVersion: process.version,
|
|
6974
7079
|
platform: process.platform,
|
|
6975
7080
|
arch: process.arch,
|
|
@@ -7150,7 +7255,7 @@ var os4 = __toESM(require("os"));
|
|
|
7150
7255
|
// package.json
|
|
7151
7256
|
var package_default = {
|
|
7152
7257
|
name: "codeam-cli",
|
|
7153
|
-
version: "2.61.
|
|
7258
|
+
version: "2.61.67",
|
|
7154
7259
|
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.",
|
|
7155
7260
|
type: "commonjs",
|
|
7156
7261
|
main: "dist/index.js",
|
|
@@ -8322,7 +8427,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
8322
8427
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
8323
8428
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
8324
8429
|
// pair/reconnect). Older backends ignore the extra field.
|
|
8325
|
-
..."2.61.
|
|
8430
|
+
..."2.61.67" ? { ideVersion: "2.61.67" } : {}
|
|
8326
8431
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
8327
8432
|
}
|
|
8328
8433
|
/**
|
|
@@ -19431,7 +19536,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
19431
19536
|
if (process.env.NODE_ENV === "test") return;
|
|
19432
19537
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
19433
19538
|
if (process.env.CI) return;
|
|
19434
|
-
const current = true ? "2.61.
|
|
19539
|
+
const current = true ? "2.61.67" : null;
|
|
19435
19540
|
if (!current) return;
|
|
19436
19541
|
const cache = readCache();
|
|
19437
19542
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -19448,7 +19553,7 @@ function checkForUpdates() {
|
|
|
19448
19553
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
19449
19554
|
if (process.env.CI) return;
|
|
19450
19555
|
if (!process.stdout.isTTY) return;
|
|
19451
|
-
const current = true ? "2.61.
|
|
19556
|
+
const current = true ? "2.61.67" : null;
|
|
19452
19557
|
if (!current) return;
|
|
19453
19558
|
const cache = readCache();
|
|
19454
19559
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -19468,7 +19573,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
|
|
|
19468
19573
|
var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
|
|
19469
19574
|
var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
19470
19575
|
function currentCliVersion() {
|
|
19471
|
-
return true ? "2.61.
|
|
19576
|
+
return true ? "2.61.67" : null;
|
|
19472
19577
|
}
|
|
19473
19578
|
function runCmd(cmd, args2, timeoutMs) {
|
|
19474
19579
|
return new Promise((resolve8) => {
|
|
@@ -39707,7 +39812,7 @@ function checkChokidar() {
|
|
|
39707
39812
|
}
|
|
39708
39813
|
async function doctor(args2 = []) {
|
|
39709
39814
|
const json = args2.includes("--json");
|
|
39710
|
-
const cliVersion = true ? "2.61.
|
|
39815
|
+
const cliVersion = true ? "2.61.67" : "0.0.0-dev";
|
|
39711
39816
|
const apiBase2 = resolveApiBaseUrl();
|
|
39712
39817
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
39713
39818
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -40229,7 +40334,7 @@ async function mcpRun(args2) {
|
|
|
40229
40334
|
// src/commands/version.ts
|
|
40230
40335
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
40231
40336
|
function version2() {
|
|
40232
|
-
const v = true ? "2.61.
|
|
40337
|
+
const v = true ? "2.61.67" : "unknown";
|
|
40233
40338
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
40234
40339
|
}
|
|
40235
40340
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.61.
|
|
3
|
+
"version": "2.61.67",
|
|
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",
|