codeam-cli 1.4.58 → 2.0.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 +64 -0
- package/LICENSE +21 -0
- package/dist/index.js +45 -32
- package/package.json +14 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `codeam-cli` are documented here.
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
## [2.0.0] — 2026-04-23
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- **Version alignment** — all three CodeAgent Mobile clients (`codeam-cli`, the VS Code extension, and the JetBrains plugin) now share a single version line starting at `2.0.0`. Going forward, a single `vX.Y.Z` git tag releases all of them together via the automated pipeline.
|
|
11
|
+
- First release built from the public source repository at [`edgar-durand/codeagent-mobile-clients`](https://github.com/edgar-durand/codeagent-mobile-clients).
|
|
12
|
+
|
|
13
|
+
## [1.4.58] — 2026-04-23
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- First release published from the public source repository at [`edgar-durand/codeagent-mobile-clients`](https://github.com/edgar-durand/codeagent-mobile-clients). No functional changes — only the `repository` and `bugs` URLs in `package.json` now point to the public repo.
|
|
17
|
+
|
|
18
|
+
## [1.4.57] — 2026-04-22
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- Dynamic model list — `list_models` now returns the actual set of Claude models loaded by the running agent instead of a hardcoded array.
|
|
22
|
+
|
|
23
|
+
## [1.4.55] — 2026-04-21
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- README now links to the official Claude Code quickstart.
|
|
27
|
+
- SEO / npm discoverability pass (keywords, description).
|
|
28
|
+
|
|
29
|
+
## [1.4.54] — 2026-04-20
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- Retry critical output chunks up to 3× on transient network errors.
|
|
33
|
+
- Silence `ECONNRESET` / socket hang-ups so they no longer corrupt Claude's TUI output stream.
|
|
34
|
+
|
|
35
|
+
## [1.4.50] — 2026-04-19
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
- Robust spinner-line deduplication via ellipsis strip — handles every spinner/status format the TUI produces.
|
|
39
|
+
- Ignore user-typed input echoed back through the PTY when deduplicating chrome steps.
|
|
40
|
+
- Smart auto-scroll and live context-ring percentage.
|
|
41
|
+
|
|
42
|
+
## [1.4.46] — 2026-04-17
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
- Thinking-UI `chrome_steps` support — detect bullet / tree / status lines from the new Claude Code TUI format and forward them as step events to the mobile app.
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
- Deduplicate chrome steps per turn — the CLI accumulates unique history while clients replace per-turn snapshots, so mobile no longer shows repeated lines.
|
|
49
|
+
- API forwards the `steps` field in output chunks (previously silently dropped).
|
|
50
|
+
|
|
51
|
+
## [1.4.38] — 2026-04-14
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
- Sync terminal-typed prompts back to the mobile app in real time.
|
|
55
|
+
- Load the current Claude conversation on session entry via a new `get_conversation` command.
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
- Prompt submission after pairing — first keystroke no longer lost.
|
|
59
|
+
- Keyboard dismiss and output-noise cleanup.
|
|
60
|
+
- Re-push conversation to the API after every Claude turn so auto-load always finds a fresh snapshot.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
For versions prior to 1.4.38, consult the [npm release page](https://www.npmjs.com/package/codeam-cli?activeTab=versions).
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Edgar Durand
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.js
CHANGED
|
@@ -116,7 +116,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
116
116
|
// package.json
|
|
117
117
|
var package_default = {
|
|
118
118
|
name: "codeam-cli",
|
|
119
|
-
version: "
|
|
119
|
+
version: "2.0.0",
|
|
120
120
|
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.",
|
|
121
121
|
main: "dist/index.js",
|
|
122
122
|
bin: {
|
|
@@ -124,7 +124,9 @@ var package_default = {
|
|
|
124
124
|
},
|
|
125
125
|
files: [
|
|
126
126
|
"dist",
|
|
127
|
-
"README.md"
|
|
127
|
+
"README.md",
|
|
128
|
+
"CHANGELOG.md",
|
|
129
|
+
"LICENSE"
|
|
128
130
|
],
|
|
129
131
|
scripts: {
|
|
130
132
|
build: "tsup",
|
|
@@ -163,14 +165,21 @@ var package_default = {
|
|
|
163
165
|
],
|
|
164
166
|
homepage: "https://codeagent-mobile.com",
|
|
165
167
|
bugs: {
|
|
166
|
-
url: "https://github.com/
|
|
168
|
+
url: "https://github.com/edgar-durand/codeagent-mobile-clients/issues"
|
|
167
169
|
},
|
|
168
170
|
author: "Edgar Durand",
|
|
169
171
|
repository: {
|
|
170
172
|
type: "git",
|
|
171
|
-
url: "git+https://github.com/
|
|
173
|
+
url: "git+https://github.com/edgar-durand/codeagent-mobile-clients.git"
|
|
172
174
|
},
|
|
173
175
|
license: "MIT",
|
|
176
|
+
publishConfig: {
|
|
177
|
+
access: "public"
|
|
178
|
+
},
|
|
179
|
+
funding: {
|
|
180
|
+
type: "github",
|
|
181
|
+
url: "https://github.com/sponsors/edgar-durand"
|
|
182
|
+
},
|
|
174
183
|
engines: {
|
|
175
184
|
node: ">=18.0.0"
|
|
176
185
|
},
|
|
@@ -181,6 +190,7 @@ var package_default = {
|
|
|
181
190
|
ws: "^8.18.0"
|
|
182
191
|
},
|
|
183
192
|
devDependencies: {
|
|
193
|
+
"@codeagent/shared": "*",
|
|
184
194
|
"@types/node": "^22.0.0",
|
|
185
195
|
"@types/qrcode-terminal": "^0.12.0",
|
|
186
196
|
"@types/ws": "^8.5.0",
|
|
@@ -919,7 +929,7 @@ var ClaudeService = class {
|
|
|
919
929
|
var https2 = __toESM(require("https"));
|
|
920
930
|
var http2 = __toESM(require("http"));
|
|
921
931
|
|
|
922
|
-
// src/
|
|
932
|
+
// ../../packages/shared/src/protocol/parseChrome.ts
|
|
923
933
|
var SPINNER_RE = /^[✳✢✶✻✽✴✷✸✹⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏◐◑◒◓▁▂▃▄▅▆▇█]\s/;
|
|
924
934
|
var BULLET_TOOL_RE = /^•\s+(?:Read(?:ing)?|Edit(?:ing)?|Writ(?:e|ing)|Bash|Runn(?:ing)?|Search(?:ing)?|Glob(?:bing)?|Grep(?:ping)?|Creat(?:e|ing)|Execut(?:e|ing)|Task|Agent|NotebookEdit)\b/i;
|
|
925
935
|
var TREE_LINE_RE = /^└\s/;
|
|
@@ -1000,6 +1010,36 @@ function classifyStep(text) {
|
|
|
1000
1010
|
return { tool: "other", label, status: "running" };
|
|
1001
1011
|
}
|
|
1002
1012
|
|
|
1013
|
+
// ../../packages/shared/src/models/pricing.ts
|
|
1014
|
+
var MODEL_PRICING = {
|
|
1015
|
+
"claude-sonnet-4": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
1016
|
+
"claude-opus-4": { input: 15, output: 75, cacheRead: 1.5, cacheWrite: 18.75 },
|
|
1017
|
+
"claude-3-5-sonnet": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
1018
|
+
"claude-3-5-haiku": { input: 0.8, output: 4, cacheRead: 0.08, cacheWrite: 1 },
|
|
1019
|
+
"claude-3-haiku": { input: 0.25, output: 1.25, cacheRead: 0.03, cacheWrite: 0.3 }
|
|
1020
|
+
};
|
|
1021
|
+
var MODEL_CONTEXT_WINDOW = {
|
|
1022
|
+
"claude-opus-4": 1e6,
|
|
1023
|
+
"claude-sonnet-4": 1e6,
|
|
1024
|
+
"claude-3-5-sonnet": 2e5,
|
|
1025
|
+
"claude-3-5-haiku": 2e5,
|
|
1026
|
+
"claude-3-haiku": 2e5
|
|
1027
|
+
};
|
|
1028
|
+
var DEFAULT_CONTEXT_WINDOW = 2e5;
|
|
1029
|
+
function getPricing(model) {
|
|
1030
|
+
for (const [prefix, pricing] of Object.entries(MODEL_PRICING)) {
|
|
1031
|
+
if (model.startsWith(prefix)) return pricing;
|
|
1032
|
+
}
|
|
1033
|
+
return MODEL_PRICING["claude-sonnet-4"];
|
|
1034
|
+
}
|
|
1035
|
+
function getContextWindow(model) {
|
|
1036
|
+
if (!model) return DEFAULT_CONTEXT_WINDOW;
|
|
1037
|
+
for (const [prefix, size] of Object.entries(MODEL_CONTEXT_WINDOW)) {
|
|
1038
|
+
if (model.startsWith(prefix)) return size;
|
|
1039
|
+
}
|
|
1040
|
+
return DEFAULT_CONTEXT_WINDOW;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1003
1043
|
// src/services/output.service.ts
|
|
1004
1044
|
var API_BASE4 = process.env.CODEAM_API_URL ?? "https://codeagent-mobile-api.vercel.app";
|
|
1005
1045
|
function renderToLines(raw) {
|
|
@@ -1615,33 +1655,6 @@ function post(endpoint, body) {
|
|
|
1615
1655
|
req.end();
|
|
1616
1656
|
});
|
|
1617
1657
|
}
|
|
1618
|
-
var MODEL_PRICING = {
|
|
1619
|
-
"claude-sonnet-4": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
1620
|
-
"claude-opus-4": { input: 15, output: 75, cacheRead: 1.5, cacheWrite: 18.75 },
|
|
1621
|
-
"claude-3-5-sonnet": { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
1622
|
-
"claude-3-5-haiku": { input: 0.8, output: 4, cacheRead: 0.08, cacheWrite: 1 },
|
|
1623
|
-
"claude-3-haiku": { input: 0.25, output: 1.25, cacheRead: 0.03, cacheWrite: 0.3 }
|
|
1624
|
-
};
|
|
1625
|
-
function getPricing(model) {
|
|
1626
|
-
for (const [prefix, pricing] of Object.entries(MODEL_PRICING)) {
|
|
1627
|
-
if (model.startsWith(prefix)) return pricing;
|
|
1628
|
-
}
|
|
1629
|
-
return MODEL_PRICING["claude-sonnet-4"];
|
|
1630
|
-
}
|
|
1631
|
-
var MODEL_CONTEXT_WINDOW = {
|
|
1632
|
-
"claude-opus-4": 1e6,
|
|
1633
|
-
"claude-sonnet-4": 1e6,
|
|
1634
|
-
"claude-3-5-sonnet": 2e5,
|
|
1635
|
-
"claude-3-5-haiku": 2e5,
|
|
1636
|
-
"claude-3-haiku": 2e5
|
|
1637
|
-
};
|
|
1638
|
-
function getContextWindow(model) {
|
|
1639
|
-
if (!model) return 2e5;
|
|
1640
|
-
for (const [prefix, size] of Object.entries(MODEL_CONTEXT_WINDOW)) {
|
|
1641
|
-
if (model.startsWith(prefix)) return size;
|
|
1642
|
-
}
|
|
1643
|
-
return 2e5;
|
|
1644
|
-
}
|
|
1645
1658
|
var HistoryService = class {
|
|
1646
1659
|
constructor(pluginId, cwd) {
|
|
1647
1660
|
this.pluginId = pluginId;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.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
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
|
-
"README.md"
|
|
11
|
+
"README.md",
|
|
12
|
+
"CHANGELOG.md",
|
|
13
|
+
"LICENSE"
|
|
12
14
|
],
|
|
13
15
|
"scripts": {
|
|
14
16
|
"build": "tsup",
|
|
@@ -47,14 +49,21 @@
|
|
|
47
49
|
],
|
|
48
50
|
"homepage": "https://codeagent-mobile.com",
|
|
49
51
|
"bugs": {
|
|
50
|
-
"url": "https://github.com/
|
|
52
|
+
"url": "https://github.com/edgar-durand/codeagent-mobile-clients/issues"
|
|
51
53
|
},
|
|
52
54
|
"author": "Edgar Durand",
|
|
53
55
|
"repository": {
|
|
54
56
|
"type": "git",
|
|
55
|
-
"url": "git+https://github.com/
|
|
57
|
+
"url": "git+https://github.com/edgar-durand/codeagent-mobile-clients.git"
|
|
56
58
|
},
|
|
57
59
|
"license": "MIT",
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
},
|
|
63
|
+
"funding": {
|
|
64
|
+
"type": "github",
|
|
65
|
+
"url": "https://github.com/sponsors/edgar-durand"
|
|
66
|
+
},
|
|
58
67
|
"engines": {
|
|
59
68
|
"node": ">=18.0.0"
|
|
60
69
|
},
|
|
@@ -65,6 +74,7 @@
|
|
|
65
74
|
"ws": "^8.18.0"
|
|
66
75
|
},
|
|
67
76
|
"devDependencies": {
|
|
77
|
+
"@codeagent/shared": "*",
|
|
68
78
|
"@types/node": "^22.0.0",
|
|
69
79
|
"@types/qrcode-terminal": "^0.12.0",
|
|
70
80
|
"@types/ws": "^8.5.0",
|