codeam-cli 2.61.60 → 2.61.62

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.61] — 2026-07-27
8
+
9
+ ### Added
10
+
11
+ - **shared:** N8n integration (automation, api_key + n8n MCP)
12
+
7
13
  ## [2.61.59] — 2026-07-27
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -1305,6 +1305,136 @@ var INTEGRATION_REGISTRY = {
1305
1305
  }
1306
1306
  }
1307
1307
  }
1308
+ },
1309
+ n8n: {
1310
+ id: "n8n",
1311
+ name: "n8n",
1312
+ icon: "n8n",
1313
+ category: "automation",
1314
+ // LIVE — api_key rail (like Trello / Azure DevOps). n8n auth is an API key
1315
+ // (Settings → n8n API) + the instance URL (n8n.cloud or self-hosted). The
1316
+ // user pastes both; the backend validates against the n8n REST API + vaults
1317
+ // them. No OAuth app, no GSM secrets, no config-gated 503.
1318
+ // ⚠️ The instance MUST be PUBLICLY reachable (n8n.cloud or a public self-host)
1319
+ // — a localhost/private n8n can't be reached from the deploy box.
1320
+ enabled: true,
1321
+ auth: {
1322
+ kind: "api_key",
1323
+ fields: [
1324
+ {
1325
+ key: "instanceUrl",
1326
+ label: "Instance URL",
1327
+ placeholder: "https://your-workspace.app.n8n.cloud",
1328
+ secret: false,
1329
+ help: "Your n8n base URL \u2014 n8n.cloud or your public self-hosted instance."
1330
+ },
1331
+ {
1332
+ key: "accessToken",
1333
+ label: "API Key",
1334
+ placeholder: "n8n_api_\u2026",
1335
+ secret: true,
1336
+ help: "Create in n8n \u2192 Settings \u2192 n8n API \u2192 Create an API key."
1337
+ }
1338
+ ]
1339
+ },
1340
+ delivery: {
1341
+ mcp: {
1342
+ // n8n-mcp (Node): N8N_API_URL + N8N_API_KEY via env only, never argv.
1343
+ // Version PINNED; bump only after re-verifying headless.
1344
+ command: "npx",
1345
+ args: ["-y", "n8n-mcp@2.66.2"],
1346
+ envMapping: {
1347
+ N8N_API_URL: "instanceUrl",
1348
+ N8N_API_KEY: "accessToken"
1349
+ },
1350
+ // stdio transport (the CLI mcp-shim spawns it over stdio, not HTTP).
1351
+ staticEnv: { MCP_MODE: "stdio" }
1352
+ }
1353
+ }
1354
+ },
1355
+ postman: {
1356
+ id: "postman",
1357
+ name: "Postman",
1358
+ icon: "postman",
1359
+ category: "api_tools",
1360
+ // LIVE — api_key rail. Postman auth is a personal API key (Settings → API
1361
+ // keys). The user pastes it; the backend validates via GET /me + vaults it.
1362
+ // No OAuth (Postman's API has no user OAuth), no secrets, no config-503.
1363
+ enabled: true,
1364
+ auth: {
1365
+ kind: "api_key",
1366
+ fields: [
1367
+ {
1368
+ key: "accessToken",
1369
+ label: "API Key",
1370
+ placeholder: "PMAK-\u2026",
1371
+ secret: true,
1372
+ help: "Postman \u2192 Settings \u2192 API keys \u2192 Generate API Key."
1373
+ }
1374
+ ]
1375
+ },
1376
+ delivery: {
1377
+ mcp: {
1378
+ // Postman's OFFICIAL stdio MCP server (Node). BYO key via POSTMAN_API_KEY
1379
+ // (env only). Version PINNED; bump only after re-verifying headless.
1380
+ command: "npx",
1381
+ args: ["-y", "@postman/postman-mcp-server@2.11.2"],
1382
+ envMapping: {
1383
+ POSTMAN_API_KEY: "accessToken"
1384
+ }
1385
+ }
1386
+ }
1387
+ },
1388
+ mixpanel: {
1389
+ id: "mixpanel",
1390
+ name: "Mixpanel",
1391
+ icon: "mixpanel",
1392
+ category: "analytics",
1393
+ // LIVE — api_key rail. Mixpanel query/export auth is a SERVICE ACCOUNT
1394
+ // (username + password, Basic auth) scoped to a project (project id). The
1395
+ // user pastes all three; the backend validates + vaults them. No OAuth
1396
+ // redirect (service accounts are machine-to-machine), no GSM secrets.
1397
+ enabled: true,
1398
+ auth: {
1399
+ kind: "api_key",
1400
+ fields: [
1401
+ {
1402
+ key: "accessToken",
1403
+ label: "Service Account Username",
1404
+ placeholder: "your-sa.mp-service-account",
1405
+ secret: false,
1406
+ help: "Mixpanel \u2192 Organization Settings \u2192 Service Accounts \u2192 create one with project access."
1407
+ },
1408
+ {
1409
+ key: "secretKey",
1410
+ label: "Service Account Secret",
1411
+ placeholder: "the service account secret",
1412
+ secret: true,
1413
+ help: "Shown once when you create the service account \u2014 copy it then."
1414
+ },
1415
+ {
1416
+ key: "projectId",
1417
+ label: "Project ID",
1418
+ placeholder: "1234567",
1419
+ secret: false,
1420
+ help: "Mixpanel \u2192 Project Settings \u2192 Project ID."
1421
+ }
1422
+ ]
1423
+ },
1424
+ delivery: {
1425
+ mcp: {
1426
+ // @mendeel/mcp-mixpanel (Node): the service account + project id via env
1427
+ // only (MIXPANEL_SERVICE_ACCOUNT_USERNAME/PASSWORD + MIXPANEL_PROJECT_ID).
1428
+ // Version PINNED; bump only after re-verifying headless. Default region US.
1429
+ command: "npx",
1430
+ args: ["-y", "@mendeel/mcp-mixpanel@1.0.4"],
1431
+ envMapping: {
1432
+ MIXPANEL_SERVICE_ACCOUNT_USERNAME: "accessToken",
1433
+ MIXPANEL_SERVICE_ACCOUNT_PASSWORD: "secretKey",
1434
+ MIXPANEL_PROJECT_ID: "projectId"
1435
+ }
1436
+ }
1437
+ }
1308
1438
  }
1309
1439
  };
1310
1440
  function getIntegration(id) {
@@ -6750,7 +6880,7 @@ function readAnonId() {
6750
6880
  }
6751
6881
  function superProperties() {
6752
6882
  return {
6753
- cliVersion: true ? "2.61.60" : "0.0.0-dev",
6883
+ cliVersion: true ? "2.61.62" : "0.0.0-dev",
6754
6884
  nodeVersion: process.version,
6755
6885
  platform: process.platform,
6756
6886
  arch: process.arch,
@@ -6931,7 +7061,7 @@ var os4 = __toESM(require("os"));
6931
7061
  // package.json
6932
7062
  var package_default = {
6933
7063
  name: "codeam-cli",
6934
- version: "2.61.60",
7064
+ version: "2.61.62",
6935
7065
  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.",
6936
7066
  type: "commonjs",
6937
7067
  main: "dist/index.js",
@@ -8103,7 +8233,7 @@ var CommandRelayService = class _CommandRelayService {
8103
8233
  // fresh + clear the "CLI update available" banner after a self-update
8104
8234
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
8105
8235
  // pair/reconnect). Older backends ignore the extra field.
8106
- ..."2.61.60" ? { ideVersion: "2.61.60" } : {}
8236
+ ..."2.61.62" ? { ideVersion: "2.61.62" } : {}
8107
8237
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
8108
8238
  }
8109
8239
  /**
@@ -19212,7 +19342,7 @@ async function autoUpgradeBeforeCriticalCommand() {
19212
19342
  if (process.env.NODE_ENV === "test") return;
19213
19343
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
19214
19344
  if (process.env.CI) return;
19215
- const current = true ? "2.61.60" : null;
19345
+ const current = true ? "2.61.62" : null;
19216
19346
  if (!current) return;
19217
19347
  const cache = readCache();
19218
19348
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -19229,7 +19359,7 @@ function checkForUpdates() {
19229
19359
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
19230
19360
  if (process.env.CI) return;
19231
19361
  if (!process.stdout.isTTY) return;
19232
- const current = true ? "2.61.60" : null;
19362
+ const current = true ? "2.61.62" : null;
19233
19363
  if (!current) return;
19234
19364
  const cache = readCache();
19235
19365
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -19249,7 +19379,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
19249
19379
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
19250
19380
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
19251
19381
  function currentCliVersion() {
19252
- return true ? "2.61.60" : null;
19382
+ return true ? "2.61.62" : null;
19253
19383
  }
19254
19384
  function runCmd(cmd, args2, timeoutMs) {
19255
19385
  return new Promise((resolve8) => {
@@ -39488,7 +39618,7 @@ function checkChokidar() {
39488
39618
  }
39489
39619
  async function doctor(args2 = []) {
39490
39620
  const json = args2.includes("--json");
39491
- const cliVersion = true ? "2.61.60" : "0.0.0-dev";
39621
+ const cliVersion = true ? "2.61.62" : "0.0.0-dev";
39492
39622
  const apiBase2 = resolveApiBaseUrl();
39493
39623
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
39494
39624
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -40010,7 +40140,7 @@ async function mcpRun(args2) {
40010
40140
  // src/commands/version.ts
40011
40141
  var import_picocolors15 = __toESM(require("picocolors"));
40012
40142
  function version2() {
40013
- const v = true ? "2.61.60" : "unknown";
40143
+ const v = true ? "2.61.62" : "unknown";
40014
40144
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
40015
40145
  }
40016
40146
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.61.60",
3
+ "version": "2.61.62",
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",