codeam-cli 2.61.45 → 2.61.46

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,12 @@ 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.45] — 2026-07-26
8
+
9
+ ### Added
10
+
11
+ - **shared,cli:** PostHog integration + mcp-shim HTTP transport
12
+
7
13
  ## [2.61.44] — 2026-07-25
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -93,15 +93,19 @@ var require_src = __commonJS({
93
93
  var http_relay_exports = {};
94
94
  __export(http_relay_exports, {
95
95
  buildHttpHeaders: () => buildHttpHeaders,
96
+ fillTemplate: () => fillTemplate,
96
97
  runHttpRelay: () => runHttpRelay
97
98
  });
99
+ function fillTemplate(template, token) {
100
+ return template.replace(/\{(\w+)\}/g, (_m, field) => {
101
+ const v = token[field];
102
+ return typeof v === "string" ? v : "";
103
+ });
104
+ }
98
105
  function buildHttpHeaders(httpHeaders, token) {
99
106
  const headers = {};
100
107
  for (const [name, template] of Object.entries(httpHeaders ?? {})) {
101
- headers[name] = template.replace(/\{(\w+)\}/g, (_m, field) => {
102
- const v = token[field];
103
- return typeof v === "string" ? v : "";
104
- });
108
+ headers[name] = fillTemplate(template, token);
105
109
  }
106
110
  return headers;
107
111
  }
@@ -110,7 +114,8 @@ async function runHttpRelay(delivery, client3, id) {
110
114
  const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
111
115
  const { StreamableHTTPClientTransport } = await import("@modelcontextprotocol/sdk/client/streamableHttp.js");
112
116
  const token = await client3.getToken(id);
113
- const httpTransport = new StreamableHTTPClientTransport(new URL(delivery.httpUrl), {
117
+ const url2 = new URL(fillTemplate(delivery.httpUrl, token));
118
+ const httpTransport = new StreamableHTTPClientTransport(url2, {
114
119
  requestInit: { headers: buildHttpHeaders(delivery.httpHeaders, token) }
115
120
  });
116
121
  const stdioTransport = new StdioServerTransport();
@@ -956,6 +961,60 @@ var INTEGRATION_REGISTRY = {
956
961
  }
957
962
  }
958
963
  },
964
+ datadog: {
965
+ id: "datadog",
966
+ name: "Datadog",
967
+ icon: "datadog",
968
+ category: "observability",
969
+ // LIVE — api_key: the user pastes a Datadog API key (org-scoped) + an
970
+ // Application key (user-scoped, grants the read scopes) + their regional
971
+ // site. Datadog's OFFICIAL hosted MCP (mcp.<site>) accepts these as headers
972
+ // headless (verified) — no OAuth, no GSM secret. Delivery uses the shim's
973
+ // HTTP transport with the site templated into the URL and both keys sent as
974
+ // DD-API-KEY / DD-APPLICATION-KEY headers.
975
+ enabled: true,
976
+ auth: {
977
+ kind: "api_key",
978
+ fields: [
979
+ {
980
+ key: "accessToken",
981
+ label: "API Key",
982
+ placeholder: "Datadog API key",
983
+ secret: true,
984
+ help: "Organization API key \u2014 Datadog \u2192 Organization Settings \u2192 API Keys."
985
+ },
986
+ {
987
+ key: "appKey",
988
+ label: "Application Key",
989
+ placeholder: "Datadog application key",
990
+ secret: true,
991
+ help: "User Application key (grants the read scopes) \u2014 Datadog \u2192 Organization Settings \u2192 Application Keys."
992
+ },
993
+ {
994
+ key: "host",
995
+ label: "Site",
996
+ placeholder: "datadoghq.com",
997
+ secret: false,
998
+ help: "Your Datadog site \u2014 US1: datadoghq.com \xB7 EU: datadoghq.eu \xB7 US3: us3.datadoghq.com \xB7 US5: us5.datadoghq.com \xB7 AP1: ap1.datadoghq.com."
999
+ }
1000
+ ]
1001
+ },
1002
+ delivery: {
1003
+ mcp: {
1004
+ // HTTP transport — the shim relays to Datadog's hosted MCP for the
1005
+ // user's site, with both keys as headers. Keys stay server-side of the
1006
+ // shim, never on argv.
1007
+ command: "",
1008
+ args: [],
1009
+ envMapping: {},
1010
+ httpUrl: "https://mcp.{host}/api/unstable/mcp-server/mcp",
1011
+ httpHeaders: {
1012
+ "DD-API-KEY": "{accessToken}",
1013
+ "DD-APPLICATION-KEY": "{appKey}"
1014
+ }
1015
+ }
1016
+ }
1017
+ },
959
1018
  notion: {
960
1019
  id: "notion",
961
1020
  name: "Notion",
@@ -6524,7 +6583,7 @@ function readAnonId() {
6524
6583
  }
6525
6584
  function superProperties() {
6526
6585
  return {
6527
- cliVersion: true ? "2.61.45" : "0.0.0-dev",
6586
+ cliVersion: true ? "2.61.46" : "0.0.0-dev",
6528
6587
  nodeVersion: process.version,
6529
6588
  platform: process.platform,
6530
6589
  arch: process.arch,
@@ -6705,7 +6764,7 @@ var os4 = __toESM(require("os"));
6705
6764
  // package.json
6706
6765
  var package_default = {
6707
6766
  name: "codeam-cli",
6708
- version: "2.61.45",
6767
+ version: "2.61.46",
6709
6768
  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.",
6710
6769
  type: "commonjs",
6711
6770
  main: "dist/index.js",
@@ -7877,7 +7936,7 @@ var CommandRelayService = class _CommandRelayService {
7877
7936
  // fresh + clear the "CLI update available" banner after a self-update
7878
7937
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
7879
7938
  // pair/reconnect). Older backends ignore the extra field.
7880
- ..."2.61.45" ? { ideVersion: "2.61.45" } : {}
7939
+ ..."2.61.46" ? { ideVersion: "2.61.46" } : {}
7881
7940
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
7882
7941
  }
7883
7942
  /**
@@ -18862,7 +18921,7 @@ async function autoUpgradeBeforeCriticalCommand() {
18862
18921
  if (process.env.NODE_ENV === "test") return;
18863
18922
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
18864
18923
  if (process.env.CI) return;
18865
- const current = true ? "2.61.45" : null;
18924
+ const current = true ? "2.61.46" : null;
18866
18925
  if (!current) return;
18867
18926
  const cache = readCache();
18868
18927
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18879,7 +18938,7 @@ function checkForUpdates() {
18879
18938
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
18880
18939
  if (process.env.CI) return;
18881
18940
  if (!process.stdout.isTTY) return;
18882
- const current = true ? "2.61.45" : null;
18941
+ const current = true ? "2.61.46" : null;
18883
18942
  if (!current) return;
18884
18943
  const cache = readCache();
18885
18944
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18899,7 +18958,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
18899
18958
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
18900
18959
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
18901
18960
  function currentCliVersion() {
18902
- return true ? "2.61.45" : null;
18961
+ return true ? "2.61.46" : null;
18903
18962
  }
18904
18963
  function runCmd(cmd, args2, timeoutMs) {
18905
18964
  return new Promise((resolve8) => {
@@ -39025,7 +39084,7 @@ function checkChokidar() {
39025
39084
  }
39026
39085
  async function doctor(args2 = []) {
39027
39086
  const json = args2.includes("--json");
39028
- const cliVersion = true ? "2.61.45" : "0.0.0-dev";
39087
+ const cliVersion = true ? "2.61.46" : "0.0.0-dev";
39029
39088
  const apiBase2 = resolveApiBaseUrl();
39030
39089
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
39031
39090
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -39547,7 +39606,7 @@ async function mcpRun(args2) {
39547
39606
  // src/commands/version.ts
39548
39607
  var import_picocolors15 = __toESM(require("picocolors"));
39549
39608
  function version2() {
39550
- const v = true ? "2.61.45" : "unknown";
39609
+ const v = true ? "2.61.46" : "unknown";
39551
39610
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
39552
39611
  }
39553
39612
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.61.45",
3
+ "version": "2.61.46",
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",