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 +6 -0
- package/dist/index.js +72 -13
- package/package.json +1 -1
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
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|