codeam-cli 2.8.0 → 2.9.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 +13 -0
- package/dist/index.js +5 -114
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@ 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.8.1] — 2026-05-09
|
|
8
|
+
|
|
9
|
+
### Revert
|
|
10
|
+
|
|
11
|
+
- **jetbrains-plugin:** Drop CLI plugin-bridge from ClaudeCodeTerminalStrategy
|
|
12
|
+
|
|
13
|
+
## [2.8.0] — 2026-05-09
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **cli:** Plugin-bridge subcommand for one-session IDE embedding
|
|
18
|
+
- **jetbrains-plugin:** Per-agent Strategy pattern + AI Assistant capture + CLI bridge
|
|
19
|
+
|
|
7
20
|
## [2.7.0] — 2026-05-08
|
|
8
21
|
|
|
9
22
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -1477,7 +1477,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
1477
1477
|
// package.json
|
|
1478
1478
|
var package_default = {
|
|
1479
1479
|
name: "codeam-cli",
|
|
1480
|
-
version: "2.
|
|
1480
|
+
version: "2.9.0",
|
|
1481
1481
|
description: "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands \u2014 from anywhere.",
|
|
1482
1482
|
type: "commonjs",
|
|
1483
1483
|
main: "dist/index.js",
|
|
@@ -7038,15 +7038,13 @@ function readTokenFromArgs(args2) {
|
|
|
7038
7038
|
}
|
|
7039
7039
|
async function claim(token, pluginId) {
|
|
7040
7040
|
const url = `${API_BASE5}/api/pairing/claim-auto-token`;
|
|
7041
|
-
const codespaceName = process.env.CODESPACE_NAME ?? "";
|
|
7042
|
-
const isCodespace = codespaceName.length > 0;
|
|
7043
7041
|
const body = {
|
|
7044
7042
|
token,
|
|
7045
7043
|
pluginId,
|
|
7046
|
-
ideName:
|
|
7044
|
+
ideName: "codeam-cli (codespace)",
|
|
7047
7045
|
ideVersion: process.env.npm_package_version ?? "unknown",
|
|
7048
7046
|
hostname: os9.hostname(),
|
|
7049
|
-
codespaceName
|
|
7047
|
+
codespaceName: process.env.CODESPACE_NAME ?? ""
|
|
7050
7048
|
};
|
|
7051
7049
|
const res = await fetch(url, {
|
|
7052
7050
|
method: "POST",
|
|
@@ -7085,111 +7083,6 @@ async function pairAuto(args2) {
|
|
|
7085
7083
|
await start();
|
|
7086
7084
|
}
|
|
7087
7085
|
|
|
7088
|
-
// src/commands/plugin-bridge.ts
|
|
7089
|
-
async function pluginBridge() {
|
|
7090
|
-
const sessionId = process.env.CODEAM_BRIDGE_SESSION_ID;
|
|
7091
|
-
const pluginId = process.env.CODEAM_BRIDGE_PLUGIN_ID;
|
|
7092
|
-
const pluginAuthToken = process.env.CODEAM_BRIDGE_PLUGIN_AUTH_TOKEN;
|
|
7093
|
-
if (!sessionId || !pluginId || !pluginAuthToken) {
|
|
7094
|
-
console.error(
|
|
7095
|
-
"[plugin-bridge] missing CODEAM_BRIDGE_SESSION_ID / CODEAM_BRIDGE_PLUGIN_ID / CODEAM_BRIDGE_PLUGIN_AUTH_TOKEN env"
|
|
7096
|
-
);
|
|
7097
|
-
process.exit(1);
|
|
7098
|
-
}
|
|
7099
|
-
const cwd = process.cwd();
|
|
7100
|
-
const historySvc = new HistoryService(pluginId, cwd);
|
|
7101
|
-
const keepAliveCtx = { inCodespace: false, codespaceName: void 0 };
|
|
7102
|
-
const { apply: setKeepAlive2 } = buildKeepAlive(keepAliveCtx);
|
|
7103
|
-
const outputSvc = new OutputService(
|
|
7104
|
-
sessionId,
|
|
7105
|
-
pluginId,
|
|
7106
|
-
(conversationId) => historySvc.setCurrentConversationId(conversationId),
|
|
7107
|
-
(reset) => historySvc.setRateLimitReset(reset),
|
|
7108
|
-
() => {
|
|
7109
|
-
if (historySvc.isQuotaStale()) fetchQuotaUsage(historySvc);
|
|
7110
|
-
setTimeout(() => {
|
|
7111
|
-
historySvc.uploadDelta().catch(() => {
|
|
7112
|
-
});
|
|
7113
|
-
}, 400);
|
|
7114
|
-
},
|
|
7115
|
-
() => {
|
|
7116
|
-
const prevCount = historySvc.getCurrentMessageCount();
|
|
7117
|
-
historySvc.waitForNewUserMessage(prevCount).then((userText) => outputSvc.startTerminalTurn(userText ?? void 0)).catch(() => outputSvc.startTerminalTurn(void 0));
|
|
7118
|
-
},
|
|
7119
|
-
pluginAuthToken
|
|
7120
|
-
);
|
|
7121
|
-
const claude = new ClaudeService({
|
|
7122
|
-
cwd,
|
|
7123
|
-
onData(raw) {
|
|
7124
|
-
outputSvc.push(raw);
|
|
7125
|
-
},
|
|
7126
|
-
onExit(code) {
|
|
7127
|
-
outputSvc.dispose();
|
|
7128
|
-
process.exit(code);
|
|
7129
|
-
}
|
|
7130
|
-
});
|
|
7131
|
-
const relayStub = new CommandRelayService(pluginId, async () => {
|
|
7132
|
-
});
|
|
7133
|
-
const ctx = {
|
|
7134
|
-
outputSvc,
|
|
7135
|
-
claude,
|
|
7136
|
-
historySvc,
|
|
7137
|
-
relay: relayStub,
|
|
7138
|
-
setKeepAlive: setKeepAlive2,
|
|
7139
|
-
keepAliveCtx
|
|
7140
|
-
};
|
|
7141
|
-
function shutdown(code) {
|
|
7142
|
-
try {
|
|
7143
|
-
claude.kill();
|
|
7144
|
-
} catch {
|
|
7145
|
-
}
|
|
7146
|
-
try {
|
|
7147
|
-
outputSvc.dispose();
|
|
7148
|
-
} catch {
|
|
7149
|
-
}
|
|
7150
|
-
process.exit(code);
|
|
7151
|
-
}
|
|
7152
|
-
process.once("SIGINT", () => shutdown(0));
|
|
7153
|
-
process.once("SIGTERM", () => shutdown(0));
|
|
7154
|
-
await claude.spawn();
|
|
7155
|
-
await outputSvc.startTerminalTurn();
|
|
7156
|
-
let buffer = "";
|
|
7157
|
-
process.stdin.setEncoding("utf8");
|
|
7158
|
-
process.stdin.on("data", (chunk) => {
|
|
7159
|
-
buffer += chunk;
|
|
7160
|
-
let idx;
|
|
7161
|
-
while ((idx = buffer.indexOf("\n")) !== -1) {
|
|
7162
|
-
const line = buffer.slice(0, idx).trim();
|
|
7163
|
-
buffer = buffer.slice(idx + 1);
|
|
7164
|
-
if (!line) continue;
|
|
7165
|
-
try {
|
|
7166
|
-
const raw = JSON.parse(line);
|
|
7167
|
-
if (typeof raw?.id !== "string" || typeof raw?.type !== "string") continue;
|
|
7168
|
-
const cmd = {
|
|
7169
|
-
id: raw.id,
|
|
7170
|
-
type: raw.type,
|
|
7171
|
-
sessionId,
|
|
7172
|
-
// always the plugin's session — ignore any value from the host
|
|
7173
|
-
payload: raw.payload ?? {}
|
|
7174
|
-
};
|
|
7175
|
-
dispatchCommand(ctx, cmd).catch(() => {
|
|
7176
|
-
});
|
|
7177
|
-
} catch {
|
|
7178
|
-
}
|
|
7179
|
-
}
|
|
7180
|
-
});
|
|
7181
|
-
process.stdin.on("end", () => shutdown(0));
|
|
7182
|
-
setTimeout(() => {
|
|
7183
|
-
historySvc.detectCurrentConversation();
|
|
7184
|
-
historySvc.load().catch(() => {
|
|
7185
|
-
});
|
|
7186
|
-
const currentId = historySvc.getCurrentConversationId();
|
|
7187
|
-
if (currentId) historySvc.loadConversation(currentId).catch(() => {
|
|
7188
|
-
});
|
|
7189
|
-
}, 2e3);
|
|
7190
|
-
setTimeout(() => fetchQuotaUsage(historySvc), 5e3);
|
|
7191
|
-
}
|
|
7192
|
-
|
|
7193
7086
|
// src/commands/sessions.ts
|
|
7194
7087
|
var import_picocolors4 = __toESM(require("picocolors"));
|
|
7195
7088
|
async function sessions(args2) {
|
|
@@ -9425,7 +9318,7 @@ async function stopWorkspaceFromLocal(target) {
|
|
|
9425
9318
|
// src/commands/version.ts
|
|
9426
9319
|
var import_picocolors11 = __toESM(require("picocolors"));
|
|
9427
9320
|
function version() {
|
|
9428
|
-
const v = true ? "2.
|
|
9321
|
+
const v = true ? "2.9.0" : "unknown";
|
|
9429
9322
|
console.log(`${import_picocolors11.default.bold("codeam-cli")} ${import_picocolors11.default.cyan(v)}`);
|
|
9430
9323
|
}
|
|
9431
9324
|
|
|
@@ -9560,7 +9453,7 @@ function checkForUpdates() {
|
|
|
9560
9453
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
9561
9454
|
if (process.env.CI) return;
|
|
9562
9455
|
if (!process.stdout.isTTY) return;
|
|
9563
|
-
const current = true ? "2.
|
|
9456
|
+
const current = true ? "2.9.0" : null;
|
|
9564
9457
|
if (!current) return;
|
|
9565
9458
|
const cache = readCache();
|
|
9566
9459
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -9592,8 +9485,6 @@ async function main() {
|
|
|
9592
9485
|
return pair();
|
|
9593
9486
|
case "pair-auto":
|
|
9594
9487
|
return pairAuto(args);
|
|
9595
|
-
case "plugin-bridge":
|
|
9596
|
-
return pluginBridge();
|
|
9597
9488
|
case "sessions":
|
|
9598
9489
|
return sessions(args);
|
|
9599
9490
|
case "status":
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands — from anywhere.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|