jeo-code 0.12.9 → 0.12.10

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
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  The README mirrors the latest 5 entries — regenerate with `bun run changelog:sync`.
9
9
 
10
+ ## [0.12.10] - 2026-11-02
11
+
12
+ ### Added
13
+ - **Messenger computer use** — explicitly allow authorized messenger sessions to use the host computer tool, independently of the global computer setting. Host desktop and filesystem access are shared and not sandboxed.
14
+
15
+ ### Fixed
16
+ - **Literal worker tool isolation** — prevent environment-provided tool lists from bypassing a messenger worker's explicit allowlist.
17
+
10
18
  ## [0.12.9] - 2026-11-02
11
19
  ≔14c4+
12
20
  - **Discord model policy** — optionally pin a Discord worker model and fall back on persistent usage or quota exhaustion before any tool execution; other platforms and global routing retain their own settings.
package/README.ja.md CHANGED
@@ -417,11 +417,11 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
417
417
  ## 変更履歴 (Changelog)
418
418
 
419
419
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
420
+ - **[0.12.10]** (2026-11-02)
420
421
  - **[0.12.9]** (2026-11-02)
421
422
  - **[0.12.7]** (2026-10-18) — Repair desktop screenshot vision feedback, macOS scrolling, complete drag gestures, and keyboard normalization.
422
423
  - **[0.12.6]** (2026-10-17) — Preserve OpenAI subscription authentication behind configured proxies, isolate account catalogs, and give provider-specific recovery instructions while retaining Antigravity OAuth calls.
423
424
  - **[0.12.5]** (2026-10-17) — Antigravity and Kimi provider support in interactive setup, Kimi live model cache rehydration, immediate discovery caching on provider probing.
424
- - **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
425
425
 
426
426
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
427
427
  <!-- CHANGELOG:END -->
package/README.ko.md CHANGED
@@ -418,11 +418,11 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
418
418
  ## 변경 이력 (Changelog)
419
419
 
420
420
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
421
+ - **[0.12.10]** (2026-11-02)
421
422
  - **[0.12.9]** (2026-11-02)
422
423
  - **[0.12.7]** (2026-10-18) — Repair desktop screenshot vision feedback, macOS scrolling, complete drag gestures, and keyboard normalization.
423
424
  - **[0.12.6]** (2026-10-17) — Preserve OpenAI subscription authentication behind configured proxies, isolate account catalogs, and give provider-specific recovery instructions while retaining Antigravity OAuth calls.
424
425
  - **[0.12.5]** (2026-10-17) — Antigravity and Kimi provider support in interactive setup, Kimi live model cache rehydration, immediate discovery caching on provider probing.
425
- - **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
426
426
 
427
427
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
428
428
  <!-- CHANGELOG:END -->
package/README.md CHANGED
@@ -410,11 +410,11 @@ Huge thanks to [gajae-code](https://github.com/Yeachan-Heo/gajae-code) for the i
410
410
  ## Changelog
411
411
 
412
412
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
413
+ - **[0.12.10]** (2026-11-02)
413
414
  - **[0.12.9]** (2026-11-02)
414
415
  - **[0.12.7]** (2026-10-18) — Repair desktop screenshot vision feedback, macOS scrolling, complete drag gestures, and keyboard normalization.
415
416
  - **[0.12.6]** (2026-10-17) — Preserve OpenAI subscription authentication behind configured proxies, isolate account catalogs, and give provider-specific recovery instructions while retaining Antigravity OAuth calls.
416
417
  - **[0.12.5]** (2026-10-17) — Antigravity and Kimi provider support in interactive setup, Kimi live model cache rehydration, immediate discovery caching on provider probing.
417
- - **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
418
418
 
419
419
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
420
420
  <!-- CHANGELOG:END -->
package/README.zh.md CHANGED
@@ -415,11 +415,11 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
415
415
  ## 更新日志 (Changelog)
416
416
 
417
417
  <!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
418
+ - **[0.12.10]** (2026-11-02)
418
419
  - **[0.12.9]** (2026-11-02)
419
420
  - **[0.12.7]** (2026-10-18) — Repair desktop screenshot vision feedback, macOS scrolling, complete drag gestures, and keyboard normalization.
420
421
  - **[0.12.6]** (2026-10-17) — Preserve OpenAI subscription authentication behind configured proxies, isolate account catalogs, and give provider-specific recovery instructions while retaining Antigravity OAuth calls.
421
422
  - **[0.12.5]** (2026-10-17) — Antigravity and Kimi provider support in interactive setup, Kimi live model cache rehydration, immediate discovery caching on provider probing.
422
- - **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
423
423
 
424
424
  See [CHANGELOG.md](CHANGELOG.md) for the full history.
425
425
  <!-- CHANGELOG:END -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jeo-code",
3
- "version": "0.12.9",
3
+ "version": "0.12.10",
4
4
  "description": "Clean, highly optimized AI coding agent using spec-first loop",
5
5
  "type": "module",
6
6
  "main": "src/cli.ts",
@@ -252,12 +252,13 @@ export const TOOL_DESCRIPTIONS: Record<string, string> = {
252
252
  find: "find {globPattern} — find files by name",
253
253
  search: "search {pattern, globPattern?, ignoreCase?, context?, maxMatches?} — grep (context: N lines around each match)",
254
254
  ls: "ls {dirPath} — list a directory's entries (dirs first)",
255
+ computer: "computer {action, x?, y?, text?, key?, deltaX?, deltaY?, duration?, actions?} — desktop automation (screenshot, click, double_click, move, drag, scroll, type, keypress, wait, batch)",
255
256
  };
256
257
 
257
258
  export function buildToolProtocol(allowedTools: Set<string>): string {
258
259
  const lines: string[] = ["You have these tools (call exactly ONE per step):"];
259
260
  let num = 1;
260
- for (const name of ["read", "write", "edit", "bash", "find", "search", "ls"]) {
261
+ for (const name of ["read", "write", "edit", "bash", "find", "search", "ls", "computer"]) {
261
262
  if (allowedTools.has(name)) {
262
263
  lines.push(`${num}. ${TOOL_DESCRIPTIONS[name]}`);
263
264
  num++;
@@ -739,7 +739,7 @@ export async function runLaunchCommand(args: string[]): Promise<void> {
739
739
  // never persisted to config.
740
740
  const routeHistory = new RouteHistory();
741
741
  // Computer-use session override: undefined = follow config.computer.enabled, true/false = /computer on|off wins this session.
742
- let sessionComputerOverride: boolean | undefined;
742
+ let sessionComputerOverride: boolean | undefined = flags.literalWorker && process.env.JEO_MESSENGER_COMPUTER_ENABLED === "1" ? true : undefined;
743
743
 
744
744
  // Cache of live, credential-validated models per provider (refreshed by live pickers).
745
745
  // Every successful discovery is also persisted (`writeModelCache`), so the NEXT launch
@@ -114,6 +114,8 @@ export function createMessengerCliReply(config: MessengerConfig, spawn: typeof B
114
114
  const env = Object.fromEntries(Object.entries(process.env).filter(([name, value]) => value !== undefined && !secretNames.has(name))) as Record<string, string>;
115
115
  for (const name of secretNames) env[name] = "";
116
116
  env.JEO_SESSION_DIR = config.sessionDir;
117
+ // The explicit tool allowlist is the opt-in for this worker only.
118
+ env.JEO_MESSENGER_COMPUTER_ENABLED = tools.includes("computer") ? "1" : "0";
117
119
  // Never inherit another platform's fallback policy from the gateway environment.
118
120
  delete env.JEO_MESSENGER_USAGE_FALLBACK_MODEL;
119
121
  if (platformConfig?.usageFallbackModel) env.JEO_MESSENGER_USAGE_FALLBACK_MODEL = platformConfig.usageFallbackModel;
@@ -12,6 +12,7 @@ const TOOLS: Record<string, true> = {
12
12
  bash: true,
13
13
  edit: true,
14
14
  write: true,
15
+ computer: true,
15
16
  };
16
17
 
17
18
  function object(value: unknown, label: string): Record<string, unknown> {
@@ -103,7 +104,7 @@ export function parseMessengerConfig(value: unknown, baseDir: string): Messenger
103
104
  toolNames.some(name => typeof name !== "string" || !Object.hasOwn(TOOLS, name)) ||
104
105
  new Set(toolNames).size !== toolNames.length
105
106
  ) {
106
- throw new Error("toolNames must be a unique list drawn from read, grep, glob, bash, edit, write");
107
+ throw new Error("toolNames must be a unique list drawn from read, grep, glob, find, search, bash, edit, write, computer");
107
108
  }
108
109
  return {
109
110
  cwd: path.resolve(baseDir, input.cwd === undefined ? "." : string(input.cwd, "cwd")),