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.
Files changed (3) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.js +119 -14
  3. 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
- // DARK pending Figma's OAuth-app review approval (submitted 2026-07-16).
1162
- // Figma OAuth apps do NOT exist publicly until review passes (authorize URL
1163
- // errors "OAuth app ... doesn't exist"). Backend provider + secrets are
1164
- // already deployed; flip to true once approved (bead codeagent-m4ix).
1165
- enabled: false,
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.65" : "0.0.0-dev",
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.65",
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.65" ? { ideVersion: "2.61.65" } : {}
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.65" : null;
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.65" : null;
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.65" : null;
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.65" : "0.0.0-dev";
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.65" : "unknown";
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.65",
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",