codeam-cli 2.43.7 → 2.45.0
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 +12 -0
- package/README.md +15 -0
- package/dist/index.js +175 -88
- 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.44.0] — 2026-06-25
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Codeam invite — print referral link
|
|
12
|
+
|
|
13
|
+
## [2.43.7] — 2026-06-25
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Surface ACP agent startup failures in-app instead of stuck loading/offline
|
|
18
|
+
|
|
7
19
|
## [2.43.6] — 2026-06-25
|
|
8
20
|
|
|
9
21
|
### Fixed
|
package/README.md
CHANGED
|
@@ -55,6 +55,7 @@ That's it. Open the [CodeAgent Mobile app](https://codeagent-mobile.com), enter
|
|
|
55
55
|
| `codeam sessions switch` | Choose which paired session the next `codeam` invocation will use |
|
|
56
56
|
| `codeam sessions delete <session-id>` | Forget a specific paired session (leaves the others intact) |
|
|
57
57
|
| `codeam status` | Show connection status |
|
|
58
|
+
| `codeam invite` | Print your referral link — share it to earn PRO for you and the devs you bring |
|
|
58
59
|
| `codeam doctor` | run environment, install, and pairing diagnostics (`--json` for machine-readable output) |
|
|
59
60
|
| `codeam logout` | Remove all paired sessions |
|
|
60
61
|
| `codeam deploy` | Provision a cloud workspace (GitHub Codespaces) and pair it to your phone |
|
|
@@ -68,6 +69,20 @@ That's it. Open the [CodeAgent Mobile app](https://codeagent-mobile.com), enter
|
|
|
68
69
|
|
|
69
70
|
---
|
|
70
71
|
|
|
72
|
+
## `codeam invite` — share your referral link
|
|
73
|
+
|
|
74
|
+
Once you're paired, run:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
codeam invite
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The CLI fetches your personal referral link from the backend and prints it. Share it with teammates: every developer who signs up through your link and pairs their first session earns **both of you 14 days of PRO** — at no extra cost.
|
|
81
|
+
|
|
82
|
+
> Requires an active paired session (`codeam pair` first).
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
71
86
|
## `codeam deploy` — drive a cloud workspace from your phone
|
|
72
87
|
|
|
73
88
|
Don't want to keep your laptop running while you control Claude from the train? `codeam deploy` spins up a fresh **GitHub Codespace** for any of your repos, installs Claude Code + `codeam-cli` inside it, copies your local Claude credentials so you skip the re-auth (or runs `claude login` interactively if you don't have a local config yet), supervises the agent with **PM2** so the session survives even after you close your laptop, and gives you a QR/code to pair your phone — straight from your local terminal.
|
package/dist/index.js
CHANGED
|
@@ -5397,7 +5397,7 @@ function readAnonId() {
|
|
|
5397
5397
|
}
|
|
5398
5398
|
function superProperties() {
|
|
5399
5399
|
return {
|
|
5400
|
-
cliVersion: true ? "2.
|
|
5400
|
+
cliVersion: true ? "2.45.0" : "0.0.0-dev",
|
|
5401
5401
|
nodeVersion: process.version,
|
|
5402
5402
|
platform: process.platform,
|
|
5403
5403
|
arch: process.arch,
|
|
@@ -5578,7 +5578,7 @@ var os4 = __toESM(require("os"));
|
|
|
5578
5578
|
// package.json
|
|
5579
5579
|
var package_default = {
|
|
5580
5580
|
name: "codeam-cli",
|
|
5581
|
-
version: "2.
|
|
5581
|
+
version: "2.45.0",
|
|
5582
5582
|
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.",
|
|
5583
5583
|
type: "commonjs",
|
|
5584
5584
|
main: "dist/index.js",
|
|
@@ -17477,10 +17477,33 @@ var geminiProvisioner = {
|
|
|
17477
17477
|
return {};
|
|
17478
17478
|
}
|
|
17479
17479
|
};
|
|
17480
|
+
var cursorProvisioner = {
|
|
17481
|
+
write(auth, _home) {
|
|
17482
|
+
if (auth.kind === "api_key") {
|
|
17483
|
+
return { CURSOR_API_KEY: auth.value };
|
|
17484
|
+
}
|
|
17485
|
+
const value = auth.value.trim();
|
|
17486
|
+
if (value.startsWith("{")) {
|
|
17487
|
+
let parsed;
|
|
17488
|
+
try {
|
|
17489
|
+
parsed = JSON.parse(value);
|
|
17490
|
+
} catch {
|
|
17491
|
+
throw new Error("cursor oauth_token: credential blob is not valid JSON");
|
|
17492
|
+
}
|
|
17493
|
+
if (typeof parsed !== "object" || parsed === null || typeof parsed["accessToken"] !== "string" || !parsed["accessToken"]) {
|
|
17494
|
+
throw new Error("cursor oauth_token: credential blob is missing a non-empty accessToken");
|
|
17495
|
+
}
|
|
17496
|
+
const accessToken = parsed["accessToken"];
|
|
17497
|
+
return { CURSOR_API_KEY: accessToken };
|
|
17498
|
+
}
|
|
17499
|
+
return { CURSOR_API_KEY: value };
|
|
17500
|
+
}
|
|
17501
|
+
};
|
|
17480
17502
|
var PROVISIONERS = {
|
|
17481
17503
|
claude: claudeProvisioner,
|
|
17482
17504
|
codex: codexProvisioner,
|
|
17483
|
-
gemini: geminiProvisioner
|
|
17505
|
+
gemini: geminiProvisioner,
|
|
17506
|
+
cursor: cursorProvisioner
|
|
17484
17507
|
};
|
|
17485
17508
|
var UnsupportedAgentError = class extends Error {
|
|
17486
17509
|
agentId;
|
|
@@ -17899,7 +17922,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
17899
17922
|
if (process.env.NODE_ENV === "test") return;
|
|
17900
17923
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17901
17924
|
if (process.env.CI) return;
|
|
17902
|
-
const current = true ? "2.
|
|
17925
|
+
const current = true ? "2.45.0" : null;
|
|
17903
17926
|
if (!current) return;
|
|
17904
17927
|
const cache = readCache();
|
|
17905
17928
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -17916,7 +17939,7 @@ function checkForUpdates() {
|
|
|
17916
17939
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
17917
17940
|
if (process.env.CI) return;
|
|
17918
17941
|
if (!process.stdout.isTTY) return;
|
|
17919
|
-
const current = true ? "2.
|
|
17942
|
+
const current = true ? "2.45.0" : null;
|
|
17920
17943
|
if (!current) return;
|
|
17921
17944
|
const cache = readCache();
|
|
17922
17945
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -18354,7 +18377,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
|
|
|
18354
18377
|
detached: false
|
|
18355
18378
|
});
|
|
18356
18379
|
function currentCliVersion() {
|
|
18357
|
-
return true ? "2.
|
|
18380
|
+
return true ? "2.45.0" : null;
|
|
18358
18381
|
}
|
|
18359
18382
|
function runCmd(cmd, args2, timeoutMs) {
|
|
18360
18383
|
return new Promise((resolve7) => {
|
|
@@ -29448,13 +29471,71 @@ async function host(args2) {
|
|
|
29448
29471
|
);
|
|
29449
29472
|
}
|
|
29450
29473
|
|
|
29474
|
+
// src/commands/invite.ts
|
|
29475
|
+
var import_picocolors13 = __toESM(require("picocolors"));
|
|
29476
|
+
var API_BASE12 = resolveApiBaseUrl();
|
|
29477
|
+
async function invite() {
|
|
29478
|
+
showIntro();
|
|
29479
|
+
const cfg = loadCliConfig();
|
|
29480
|
+
const session = cfg.sessions.find((s) => s.id === cfg.activeSessionId) ?? null;
|
|
29481
|
+
const pluginAuthToken = session?.pluginAuthToken;
|
|
29482
|
+
const sessionId = session?.id;
|
|
29483
|
+
const pluginId = session?.pluginId ?? cfg.pluginId;
|
|
29484
|
+
if (!pluginAuthToken || !sessionId || !pluginId) {
|
|
29485
|
+
console.log(
|
|
29486
|
+
import_picocolors13.default.yellow(" Not paired yet.") + import_picocolors13.default.dim(" Run ") + import_picocolors13.default.cyan("codeam pair") + import_picocolors13.default.dim(" first, then retry.")
|
|
29487
|
+
);
|
|
29488
|
+
console.log("");
|
|
29489
|
+
return;
|
|
29490
|
+
}
|
|
29491
|
+
try {
|
|
29492
|
+
const result = await _transport.postJsonAuthed(
|
|
29493
|
+
`${API_BASE12}/api/referrals/code`,
|
|
29494
|
+
{ sessionId, pluginId },
|
|
29495
|
+
pluginAuthToken
|
|
29496
|
+
);
|
|
29497
|
+
const data = result?.data;
|
|
29498
|
+
if (!data?.link) {
|
|
29499
|
+
console.log(
|
|
29500
|
+
import_picocolors13.default.red(" Unexpected response from server. Try ") + import_picocolors13.default.cyan("codeam pair") + import_picocolors13.default.red(" then retry.")
|
|
29501
|
+
);
|
|
29502
|
+
console.log("");
|
|
29503
|
+
return;
|
|
29504
|
+
}
|
|
29505
|
+
console.log(import_picocolors13.default.bold(" Invite your crew \u2014 unlock PRO for you and them\n"));
|
|
29506
|
+
console.log(` ${import_picocolors13.default.bold(import_picocolors13.default.cyan(data.link))}`);
|
|
29507
|
+
console.log("");
|
|
29508
|
+
console.log(
|
|
29509
|
+
import_picocolors13.default.dim(
|
|
29510
|
+
" Share this link. Every dev who signs up and pairs a session earns you both 14 days of PRO."
|
|
29511
|
+
)
|
|
29512
|
+
);
|
|
29513
|
+
console.log("");
|
|
29514
|
+
} catch (err) {
|
|
29515
|
+
const e = err;
|
|
29516
|
+
const code = typeof e.statusCode === "number" ? e.statusCode : null;
|
|
29517
|
+
if (code !== null) {
|
|
29518
|
+
console.log(
|
|
29519
|
+
import_picocolors13.default.red(
|
|
29520
|
+
` Couldn't fetch your invite link (HTTP ${code}). Try \`codeam pair\` then retry.`
|
|
29521
|
+
)
|
|
29522
|
+
);
|
|
29523
|
+
} else {
|
|
29524
|
+
console.log(
|
|
29525
|
+
import_picocolors13.default.red(" Couldn't reach the server. Check your connection and try again.")
|
|
29526
|
+
);
|
|
29527
|
+
}
|
|
29528
|
+
console.log("");
|
|
29529
|
+
}
|
|
29530
|
+
}
|
|
29531
|
+
|
|
29451
29532
|
// src/commands/doctor.ts
|
|
29452
29533
|
var import_node_dns = require("dns");
|
|
29453
29534
|
var import_node_util5 = require("util");
|
|
29454
29535
|
var import_node_crypto8 = require("crypto");
|
|
29455
29536
|
var fs48 = __toESM(require("fs"));
|
|
29456
29537
|
var path59 = __toESM(require("path"));
|
|
29457
|
-
var
|
|
29538
|
+
var import_picocolors14 = __toESM(require("picocolors"));
|
|
29458
29539
|
var dnsResolveP = (0, import_node_util5.promisify)(import_node_dns.resolve);
|
|
29459
29540
|
async function checkDns(apiBase2) {
|
|
29460
29541
|
const host2 = (() => {
|
|
@@ -29621,7 +29702,7 @@ function checkChokidar() {
|
|
|
29621
29702
|
}
|
|
29622
29703
|
async function doctor(args2 = []) {
|
|
29623
29704
|
const json = args2.includes("--json");
|
|
29624
|
-
const cliVersion = true ? "2.
|
|
29705
|
+
const cliVersion = true ? "2.45.0" : "0.0.0-dev";
|
|
29625
29706
|
const apiBase2 = resolveApiBaseUrl();
|
|
29626
29707
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
29627
29708
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -29661,46 +29742,46 @@ async function doctor(args2 = []) {
|
|
|
29661
29742
|
function printHumanReport(r) {
|
|
29662
29743
|
const out2 = process.stderr;
|
|
29663
29744
|
out2.write(`
|
|
29664
|
-
${
|
|
29745
|
+
${import_picocolors14.default.bold(" codeam doctor")}
|
|
29665
29746
|
|
|
29666
29747
|
`);
|
|
29667
|
-
out2.write(` ${
|
|
29748
|
+
out2.write(` ${import_picocolors14.default.dim("cli")} ${r.cliVersion}
|
|
29668
29749
|
`);
|
|
29669
|
-
out2.write(` ${
|
|
29750
|
+
out2.write(` ${import_picocolors14.default.dim("node")} ${r.node}
|
|
29670
29751
|
`);
|
|
29671
|
-
out2.write(` ${
|
|
29752
|
+
out2.write(` ${import_picocolors14.default.dim("os")} ${r.platform} ${r.arch}
|
|
29672
29753
|
`);
|
|
29673
|
-
out2.write(` ${
|
|
29754
|
+
out2.write(` ${import_picocolors14.default.dim("api")} ${r.apiBase}
|
|
29674
29755
|
`);
|
|
29675
29756
|
if (process.env.CODEAM_TEST_MODE === "1" || process.env.CODEAM_TEST_MODE?.toLowerCase() === "true") {
|
|
29676
|
-
out2.write(` ${
|
|
29757
|
+
out2.write(` ${import_picocolors14.default.dim("mode")} ${import_picocolors14.default.yellow("TEST_MODE \u2014 using dev preview")}
|
|
29677
29758
|
`);
|
|
29678
29759
|
} else if (process.env.CODEAM_API_URL) {
|
|
29679
|
-
out2.write(` ${
|
|
29760
|
+
out2.write(` ${import_picocolors14.default.dim("mode")} ${import_picocolors14.default.yellow("CODEAM_API_URL override")}
|
|
29680
29761
|
`);
|
|
29681
29762
|
}
|
|
29682
|
-
out2.write(` ${
|
|
29763
|
+
out2.write(` ${import_picocolors14.default.dim("diag id")} ${r.diagnosticId}
|
|
29683
29764
|
`);
|
|
29684
29765
|
out2.write("\n");
|
|
29685
29766
|
for (const c2 of r.checks) {
|
|
29686
|
-
const mark = c2.ok ?
|
|
29687
|
-
out2.write(` ${mark} ${c2.label}${
|
|
29767
|
+
const mark = c2.ok ? import_picocolors14.default.green("\u2713") : c2.optional ? import_picocolors14.default.yellow("!") : import_picocolors14.default.red("\u2717");
|
|
29768
|
+
out2.write(` ${mark} ${c2.label}${import_picocolors14.default.dim(` \u2014 ${c2.detail}`)}
|
|
29688
29769
|
`);
|
|
29689
29770
|
if (!c2.ok && c2.hint) {
|
|
29690
29771
|
for (const line of c2.hint.split("\n")) {
|
|
29691
|
-
out2.write(` ${
|
|
29772
|
+
out2.write(` ${import_picocolors14.default.dim(line)}
|
|
29692
29773
|
`);
|
|
29693
29774
|
}
|
|
29694
29775
|
}
|
|
29695
29776
|
}
|
|
29696
29777
|
out2.write("\n");
|
|
29697
29778
|
if (r.ok) {
|
|
29698
|
-
out2.write(` ${
|
|
29779
|
+
out2.write(` ${import_picocolors14.default.green("All checks passed.")}
|
|
29699
29780
|
|
|
29700
29781
|
`);
|
|
29701
29782
|
} else {
|
|
29702
29783
|
out2.write(
|
|
29703
|
-
` ${
|
|
29784
|
+
` ${import_picocolors14.default.red("Some checks failed.")} ${import_picocolors14.default.dim("Paste the diagnostic id above when opening a bug report.")}
|
|
29704
29785
|
|
|
29705
29786
|
`
|
|
29706
29787
|
);
|
|
@@ -29818,118 +29899,123 @@ async function completion(args2) {
|
|
|
29818
29899
|
}
|
|
29819
29900
|
|
|
29820
29901
|
// src/commands/version.ts
|
|
29821
|
-
var
|
|
29902
|
+
var import_picocolors15 = __toESM(require("picocolors"));
|
|
29822
29903
|
function version2() {
|
|
29823
|
-
const v = true ? "2.
|
|
29824
|
-
console.log(`${
|
|
29904
|
+
const v = true ? "2.45.0" : "unknown";
|
|
29905
|
+
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
29825
29906
|
}
|
|
29826
29907
|
|
|
29827
29908
|
// src/commands/help.ts
|
|
29828
|
-
var
|
|
29909
|
+
var import_picocolors16 = __toESM(require("picocolors"));
|
|
29829
29910
|
function help() {
|
|
29830
29911
|
const lines = [
|
|
29831
29912
|
"",
|
|
29832
|
-
` ${
|
|
29913
|
+
` ${import_picocolors16.default.bold(import_picocolors16.default.magenta("codeam-cli"))} ${import_picocolors16.default.dim("\u2014 remote-control AI coding agents from your phone")}`,
|
|
29833
29914
|
"",
|
|
29834
|
-
` ${
|
|
29835
|
-
` ${
|
|
29915
|
+
` ${import_picocolors16.default.bold("Usage")}`,
|
|
29916
|
+
` ${import_picocolors16.default.cyan("codeam")} ${import_picocolors16.default.dim("[command]")}`,
|
|
29836
29917
|
"",
|
|
29837
|
-
` ${
|
|
29838
|
-
` ${
|
|
29839
|
-
` ${
|
|
29840
|
-
` ${
|
|
29841
|
-
` ${
|
|
29842
|
-
` ${
|
|
29843
|
-
` ${
|
|
29844
|
-
` ${
|
|
29845
|
-
` ${
|
|
29846
|
-
` ${
|
|
29847
|
-
` ${
|
|
29848
|
-
` ${
|
|
29849
|
-
` ${
|
|
29850
|
-
` ${
|
|
29851
|
-
` ${
|
|
29852
|
-
` ${
|
|
29918
|
+
` ${import_picocolors16.default.bold("Commands")}`,
|
|
29919
|
+
` ${import_picocolors16.default.white("codeam")} ${import_picocolors16.default.dim("start the active agent with mobile control")}`,
|
|
29920
|
+
` ${import_picocolors16.default.white("codeam <agent>")} ${import_picocolors16.default.dim("start a specific agent \u2014 e.g. claude, codex")}`,
|
|
29921
|
+
` ${import_picocolors16.default.white("codeam pair")} ${import_picocolors16.default.dim("pair a new mobile device (interactive)")}`,
|
|
29922
|
+
` ${import_picocolors16.default.white("codeam pair --agent <id>")} ${import_picocolors16.default.dim("pair non-interactively for a specific agent")}`,
|
|
29923
|
+
` ${import_picocolors16.default.white("codeam sessions")} ${import_picocolors16.default.dim("list paired devices")}`,
|
|
29924
|
+
` ${import_picocolors16.default.white("codeam sessions switch")} ${import_picocolors16.default.dim("switch the active paired session")}`,
|
|
29925
|
+
` ${import_picocolors16.default.white("codeam sessions delete <id>")} ${import_picocolors16.default.dim("remove a specific paired session")}`,
|
|
29926
|
+
` ${import_picocolors16.default.white("codeam status")} ${import_picocolors16.default.dim("show connection info")}`,
|
|
29927
|
+
` ${import_picocolors16.default.white("codeam logout")} ${import_picocolors16.default.dim("remove all paired sessions")}`,
|
|
29928
|
+
` ${import_picocolors16.default.white("codeam link <agent>")} ${import_picocolors16.default.dim("link an agent (claude, codex) to your CodeAgent account")}`,
|
|
29929
|
+
` ${import_picocolors16.default.white("codeam deploy")} ${import_picocolors16.default.dim("provision a cloud workspace (Codespaces) and pair it")}`,
|
|
29930
|
+
` ${import_picocolors16.default.white("codeam deploy ls | list")} ${import_picocolors16.default.dim("list deployed cloud workspaces")}`,
|
|
29931
|
+
` ${import_picocolors16.default.white("codeam deploy stop | remove")} ${import_picocolors16.default.dim("stop a deployed workspace session")}`,
|
|
29932
|
+
` ${import_picocolors16.default.white("codeam doctor")} ${import_picocolors16.default.dim("run diagnostic checks (DNS, /health, binaries, \u2026)")}`,
|
|
29933
|
+
` ${import_picocolors16.default.white("codeam completion <shell>")} ${import_picocolors16.default.dim("emit a bash/zsh/fish completion script")}`,
|
|
29853
29934
|
"",
|
|
29854
|
-
` ${
|
|
29855
|
-
` ${
|
|
29856
|
-
` ${
|
|
29935
|
+
` ${import_picocolors16.default.bold("Flags")}`,
|
|
29936
|
+
` ${import_picocolors16.default.white("-v, --version")} ${import_picocolors16.default.dim("print the CLI version")}`,
|
|
29937
|
+
` ${import_picocolors16.default.white("-h, --help")} ${import_picocolors16.default.dim("show this help")}`,
|
|
29857
29938
|
"",
|
|
29858
|
-
` ${
|
|
29859
|
-
` ${
|
|
29860
|
-
` ${
|
|
29939
|
+
` ${import_picocolors16.default.bold("Links")}`,
|
|
29940
|
+
` ${import_picocolors16.default.dim("Docs:")} ${import_picocolors16.default.green("https://www.codeagent-mobile.com")}`,
|
|
29941
|
+
` ${import_picocolors16.default.dim("Issues:")} ${import_picocolors16.default.green("https://github.com/edgar-durand/codeagent-mobile-clients/issues")}`,
|
|
29861
29942
|
""
|
|
29862
29943
|
];
|
|
29863
29944
|
process.stdout.write(lines.join("\n") + "\n");
|
|
29864
29945
|
}
|
|
29865
29946
|
|
|
29866
29947
|
// src/commands/subcommand-help.ts
|
|
29867
|
-
var
|
|
29948
|
+
var import_picocolors17 = __toESM(require("picocolors"));
|
|
29868
29949
|
var HELPS = {
|
|
29869
29950
|
pair: () => print([
|
|
29870
|
-
` ${
|
|
29951
|
+
` ${import_picocolors17.default.bold("codeam pair")} ${import_picocolors17.default.dim("\u2014 pair a mobile device with this CLI")}`,
|
|
29871
29952
|
"",
|
|
29872
|
-
` ${
|
|
29873
|
-
` ${
|
|
29874
|
-
` ${
|
|
29953
|
+
` ${import_picocolors17.default.cyan("codeam pair")} ${import_picocolors17.default.dim("interactive pairing (prompts for the agent)")}`,
|
|
29954
|
+
` ${import_picocolors17.default.cyan("codeam pair --agent <id>")} ${import_picocolors17.default.dim("pair non-interactively (agent: claude | codex)")}`,
|
|
29955
|
+
` ${import_picocolors17.default.cyan("codeam pair --dry-run")} ${import_picocolors17.default.dim("request a pairing code, validate the response, exit")}`
|
|
29875
29956
|
]),
|
|
29876
29957
|
"pair-auto": () => print([
|
|
29877
|
-
` ${
|
|
29958
|
+
` ${import_picocolors17.default.bold("codeam pair-auto")} ${import_picocolors17.default.dim("\u2014 non-interactive variant of pair for scripted setups")}`,
|
|
29878
29959
|
"",
|
|
29879
|
-
` ${
|
|
29960
|
+
` ${import_picocolors17.default.cyan("codeam pair-auto --agent <id>")} ${import_picocolors17.default.dim("pair using the supplied agent id; exit on success or timeout")}`
|
|
29880
29961
|
]),
|
|
29881
29962
|
link: () => print([
|
|
29882
|
-
` ${
|
|
29963
|
+
` ${import_picocolors17.default.bold("codeam link <agent>")} ${import_picocolors17.default.dim("\u2014 upload a local agent token (Claude or Codex) to your vault")}`,
|
|
29883
29964
|
"",
|
|
29884
|
-
` ${
|
|
29885
|
-
` ${
|
|
29965
|
+
` ${import_picocolors17.default.cyan("codeam link claude")}`,
|
|
29966
|
+
` ${import_picocolors17.default.cyan("codeam link codex")}`,
|
|
29886
29967
|
"",
|
|
29887
|
-
` ${
|
|
29888
|
-
` ${
|
|
29889
|
-
` ${
|
|
29890
|
-
` ${
|
|
29891
|
-
` ${
|
|
29968
|
+
` ${import_picocolors17.default.white("--api-key=<key>")} ${import_picocolors17.default.dim("paste an API key directly (visible in `ps -ef`)")}`,
|
|
29969
|
+
` ${import_picocolors17.default.white("--api-key-file=<path>")} ${import_picocolors17.default.dim("read API key from a file (recommended for CI / scripts)")}`,
|
|
29970
|
+
` ${import_picocolors17.default.white("--reuse-existing")} ${import_picocolors17.default.dim("upload existing creds without re-launching the agent login")}`,
|
|
29971
|
+
` ${import_picocolors17.default.white("--token-file=<path>")} ${import_picocolors17.default.dim("manual credential blob path for unusual vendor locations")}`,
|
|
29972
|
+
` ${import_picocolors17.default.white("--dry-run")} ${import_picocolors17.default.dim("probe the /api/plugin/agents/<agent>/link endpoint and exit")}`
|
|
29892
29973
|
]),
|
|
29893
29974
|
sessions: () => print([
|
|
29894
|
-
` ${
|
|
29975
|
+
` ${import_picocolors17.default.bold("codeam sessions")} ${import_picocolors17.default.dim("\u2014 list, switch, or delete paired mobile sessions")}`,
|
|
29895
29976
|
"",
|
|
29896
|
-
` ${
|
|
29897
|
-
` ${
|
|
29898
|
-
` ${
|
|
29977
|
+
` ${import_picocolors17.default.cyan("codeam sessions")} ${import_picocolors17.default.dim("list all paired sessions on this machine")}`,
|
|
29978
|
+
` ${import_picocolors17.default.cyan("codeam sessions switch")} ${import_picocolors17.default.dim("interactively switch the active session")}`,
|
|
29979
|
+
` ${import_picocolors17.default.cyan("codeam sessions delete <id>")} ${import_picocolors17.default.dim("remove a specific paired session")}`
|
|
29899
29980
|
]),
|
|
29900
29981
|
deploy: () => print([
|
|
29901
|
-
` ${
|
|
29982
|
+
` ${import_picocolors17.default.bold("codeam deploy")} ${import_picocolors17.default.dim("\u2014 provision a cloud workspace (GitHub Codespaces) and pair it")}`,
|
|
29983
|
+
"",
|
|
29984
|
+
` ${import_picocolors17.default.cyan("codeam deploy")} ${import_picocolors17.default.dim("start a new deploy (prompts for repo + agent)")}`,
|
|
29985
|
+
` ${import_picocolors17.default.cyan("codeam deploy ls | list")} ${import_picocolors17.default.dim("list deployed cloud workspaces")}`,
|
|
29986
|
+
` ${import_picocolors17.default.cyan("codeam deploy stop | remove")} ${import_picocolors17.default.dim("pick a workspace and stop its codeam-pair session")}`
|
|
29987
|
+
]),
|
|
29988
|
+
invite: () => print([
|
|
29989
|
+
` ${import_picocolors17.default.bold("codeam invite")} ${import_picocolors17.default.dim("\u2014 print your referral link to earn PRO for you and your crew")}`,
|
|
29902
29990
|
"",
|
|
29903
|
-
` ${
|
|
29904
|
-
` ${import_picocolors16.default.cyan("codeam deploy ls | list")} ${import_picocolors16.default.dim("list deployed cloud workspaces")}`,
|
|
29905
|
-
` ${import_picocolors16.default.cyan("codeam deploy stop | remove")} ${import_picocolors16.default.dim("pick a workspace and stop its codeam-pair session")}`
|
|
29991
|
+
` ${import_picocolors17.default.cyan("codeam invite")} ${import_picocolors17.default.dim("fetch and display your personal referral link")}`
|
|
29906
29992
|
]),
|
|
29907
29993
|
status: () => print([
|
|
29908
|
-
` ${
|
|
29994
|
+
` ${import_picocolors17.default.bold("codeam status")} ${import_picocolors17.default.dim("\u2014 show the active session, agent, and connection info")}`
|
|
29909
29995
|
]),
|
|
29910
29996
|
logout: () => print([
|
|
29911
|
-
` ${
|
|
29997
|
+
` ${import_picocolors17.default.bold("codeam logout")} ${import_picocolors17.default.dim("\u2014 remove every paired session from this machine")}`
|
|
29912
29998
|
]),
|
|
29913
29999
|
doctor: () => print([
|
|
29914
|
-
` ${
|
|
30000
|
+
` ${import_picocolors17.default.bold("codeam doctor")} ${import_picocolors17.default.dim("\u2014 run diagnostic checks for support triage")}`,
|
|
29915
30001
|
"",
|
|
29916
|
-
` ${
|
|
29917
|
-
` ${
|
|
30002
|
+
` ${import_picocolors17.default.cyan("codeam doctor")} ${import_picocolors17.default.dim("human-readable report")}`,
|
|
30003
|
+
` ${import_picocolors17.default.cyan("codeam doctor --json")} ${import_picocolors17.default.dim("machine-parseable report (single JSON document on stdout)")}`,
|
|
29918
30004
|
"",
|
|
29919
|
-
` ${
|
|
29920
|
-
` ${
|
|
30005
|
+
` ${import_picocolors17.default.dim("Output never includes tokens or credentials. Paste the diagnostic id")}`,
|
|
30006
|
+
` ${import_picocolors17.default.dim("into a bug report so support can grep the server-side logs.")}`
|
|
29921
30007
|
]),
|
|
29922
30008
|
completion: () => print([
|
|
29923
|
-
` ${
|
|
30009
|
+
` ${import_picocolors17.default.bold("codeam completion <shell>")} ${import_picocolors17.default.dim("\u2014 emit a shell-completion script for sourcing")}`,
|
|
29924
30010
|
"",
|
|
29925
|
-
` ${
|
|
29926
|
-
` ${
|
|
29927
|
-
` ${
|
|
30011
|
+
` ${import_picocolors17.default.cyan("codeam completion bash")} ${import_picocolors17.default.dim("print a bash completion function")}`,
|
|
30012
|
+
` ${import_picocolors17.default.cyan("codeam completion zsh")} ${import_picocolors17.default.dim("print a zsh completion function")}`,
|
|
30013
|
+
` ${import_picocolors17.default.cyan("codeam completion fish")} ${import_picocolors17.default.dim("print a fish completion file")}`,
|
|
29928
30014
|
"",
|
|
29929
|
-
` ${
|
|
29930
|
-
` ${
|
|
29931
|
-
` ${
|
|
29932
|
-
` ${
|
|
30015
|
+
` ${import_picocolors17.default.dim("Examples:")}`,
|
|
30016
|
+
` ${import_picocolors17.default.dim(" bash: codeam completion bash >> ~/.bashrc")}`,
|
|
30017
|
+
` ${import_picocolors17.default.dim(" zsh: codeam completion zsh >> ~/.zshrc")}`,
|
|
30018
|
+
` ${import_picocolors17.default.dim(" fish: codeam completion fish > ~/.config/fish/completions/codeam.fish")}`
|
|
29933
30019
|
])
|
|
29934
30020
|
};
|
|
29935
30021
|
function print(lines) {
|
|
@@ -29997,6 +30083,7 @@ async function main() {
|
|
|
29997
30083
|
"host": () => host(args),
|
|
29998
30084
|
"sessions": () => sessions2(args),
|
|
29999
30085
|
"status": () => status(),
|
|
30086
|
+
"invite": () => invite(),
|
|
30000
30087
|
"logout": () => logout(),
|
|
30001
30088
|
"link": () => link(args),
|
|
30002
30089
|
"doctor": () => doctor(args),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.45.0",
|
|
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",
|