codeam-cli 2.61.30 → 2.61.32

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.61.31] — 2026-07-24
8
+
9
+ ### Added
10
+
11
+ - **shared:** Make GitHub a first-class version_control integration
12
+
13
+ ## [2.61.30] — 2026-07-24
14
+
15
+ ### Added
16
+
17
+ - **shared:** Add github_issues as a derived tracker integration
18
+
7
19
  ## [2.61.29] — 2026-07-24
8
20
 
9
21
  ### Added
package/dist/index.js CHANGED
@@ -617,6 +617,60 @@ var INTEGRATION_REGISTRY = {
617
617
  }
618
618
  }
619
619
  },
620
+ github: {
621
+ id: "github",
622
+ name: "GitHub",
623
+ icon: "github",
624
+ category: "version_control",
625
+ // LIVE. GitHub is the product's code substrate (codespaces + the PR
626
+ // Command Center), and it was historically the ONE connection outside this
627
+ // registry: its credential lives in a `ProviderToken` row rather than the
628
+ // integrations vault, so it was rendered by a hand-written special-case row
629
+ // and could not legally appear in a deploy's `integrationIds` (the manifest
630
+ // resolver rejects unknown ids — a recurring bug class).
631
+ //
632
+ // `kind: 'connection'` closes that gap without re-plumbing OAuth: the entry
633
+ // makes GitHub a first-class, categorised catalog row whose credential the
634
+ // backend resolves from the SAME `ProviderToken` it always used, while the
635
+ // connect/disconnect flow stays owned by the codespaces rail (the clients
636
+ // route those two actions there). ⚠️ It is a REAL connection with a REAL
637
+ // disconnect — do NOT treat it like `github_issues`, which merely derives
638
+ // from it and has no actions of its own.
639
+ enabled: true,
640
+ auth: { kind: "connection", connection: "github" },
641
+ // No MCP: a deployed box already has an authenticated `gh` on PATH.
642
+ delivery: {}
643
+ },
644
+ gitlab: {
645
+ id: "gitlab",
646
+ name: "GitLab",
647
+ icon: "gitlab",
648
+ category: "version_control",
649
+ // LIVE — a user-owned gitlab.com application (Confidential) with BOTH env
650
+ // callbacks registered, so dev/prod share the client and differ only in
651
+ // GITLAB_OAUTH_REDIRECT_URI. The backend GitLabOAuthProvider is
652
+ // config-gated (503 if env unset), so this is safe mid-rollout.
653
+ //
654
+ // ⚠️ Unlike `github`, this is a NORMAL `oauth_redirect` integration: its
655
+ // credential is vaulted here rather than living in a ProviderToken, because
656
+ // nothing else in the product owns a GitLab connection (GitHub's lives on
657
+ // the codespaces rail, which is why it's `kind: 'connection'`).
658
+ enabled: true,
659
+ auth: {
660
+ kind: "oauth_redirect",
661
+ // GitLab has NO per-resource scopes — `api` is the only one that grants
662
+ // merge-request WRITE (comment / approve / merge / close), so a
663
+ // read-only alternative would make the whole MR surface useless.
664
+ // `write_repository` is the git-over-HTTPS rail for the agent's push;
665
+ // `api` already covers it for user tokens, but it costs nothing on a
666
+ // consent screen that already says "complete read/write access" and
667
+ // changing scopes later forces EVERY user to re-authorize.
668
+ scopes: ["api", "write_repository"]
669
+ },
670
+ // No MCP: the box's `git` is authenticated for push, and the MR surface is
671
+ // served backend-side by the VCS provider — same shape as `github`.
672
+ delivery: {}
673
+ },
620
674
  github_issues: {
621
675
  id: "github_issues",
622
676
  name: "GitHub Issues",
@@ -6301,7 +6355,7 @@ function readAnonId() {
6301
6355
  }
6302
6356
  function superProperties() {
6303
6357
  return {
6304
- cliVersion: true ? "2.61.30" : "0.0.0-dev",
6358
+ cliVersion: true ? "2.61.32" : "0.0.0-dev",
6305
6359
  nodeVersion: process.version,
6306
6360
  platform: process.platform,
6307
6361
  arch: process.arch,
@@ -6482,7 +6536,7 @@ var os4 = __toESM(require("os"));
6482
6536
  // package.json
6483
6537
  var package_default = {
6484
6538
  name: "codeam-cli",
6485
- version: "2.61.30",
6539
+ version: "2.61.32",
6486
6540
  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.",
6487
6541
  type: "commonjs",
6488
6542
  main: "dist/index.js",
@@ -7653,7 +7707,7 @@ var CommandRelayService = class _CommandRelayService {
7653
7707
  // fresh + clear the "CLI update available" banner after a self-update
7654
7708
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
7655
7709
  // pair/reconnect). Older backends ignore the extra field.
7656
- ..."2.61.30" ? { ideVersion: "2.61.30" } : {}
7710
+ ..."2.61.32" ? { ideVersion: "2.61.32" } : {}
7657
7711
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
7658
7712
  }
7659
7713
  /**
@@ -18515,7 +18569,7 @@ async function autoUpgradeBeforeCriticalCommand() {
18515
18569
  if (process.env.NODE_ENV === "test") return;
18516
18570
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
18517
18571
  if (process.env.CI) return;
18518
- const current = true ? "2.61.30" : null;
18572
+ const current = true ? "2.61.32" : null;
18519
18573
  if (!current) return;
18520
18574
  const cache = readCache();
18521
18575
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18532,7 +18586,7 @@ function checkForUpdates() {
18532
18586
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
18533
18587
  if (process.env.CI) return;
18534
18588
  if (!process.stdout.isTTY) return;
18535
- const current = true ? "2.61.30" : null;
18589
+ const current = true ? "2.61.32" : null;
18536
18590
  if (!current) return;
18537
18591
  const cache = readCache();
18538
18592
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18552,7 +18606,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
18552
18606
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
18553
18607
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
18554
18608
  function currentCliVersion() {
18555
- return true ? "2.61.30" : null;
18609
+ return true ? "2.61.32" : null;
18556
18610
  }
18557
18611
  function runCmd(cmd, args2, timeoutMs) {
18558
18612
  return new Promise((resolve8) => {
@@ -38545,7 +38599,7 @@ function checkChokidar() {
38545
38599
  }
38546
38600
  async function doctor(args2 = []) {
38547
38601
  const json = args2.includes("--json");
38548
- const cliVersion = true ? "2.61.30" : "0.0.0-dev";
38602
+ const cliVersion = true ? "2.61.32" : "0.0.0-dev";
38549
38603
  const apiBase2 = resolveApiBaseUrl();
38550
38604
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
38551
38605
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -39056,7 +39110,7 @@ async function mcpRun(args2) {
39056
39110
  // src/commands/version.ts
39057
39111
  var import_picocolors15 = __toESM(require("picocolors"));
39058
39112
  function version2() {
39059
- const v = true ? "2.61.30" : "unknown";
39113
+ const v = true ? "2.61.32" : "unknown";
39060
39114
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
39061
39115
  }
39062
39116
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.61.30",
3
+ "version": "2.61.32",
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",