maesttro 0.6.2 → 0.7.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/README.md CHANGED
@@ -138,7 +138,7 @@ Defined in `src/clients.ts`, installed in `docker/Dockerfile`, configured via
138
138
 
139
139
  | Key | Client | Package |
140
140
  |---|---|---|
141
- | `opencode` (default) | opencode | `opencode-ai` |
141
+ | `opencode` (default) | opencode | `@opencode/cli` |
142
142
  | `claude` | Claude Code | `@anthropic-ai/claude-code` |
143
143
 
144
144
  Adding a new client: add an entry to `src/clients.ts`, an install line in
package/dist/maesttro.js CHANGED
@@ -1859,7 +1859,7 @@ var CLIENTS = {
1859
1859
  },
1860
1860
  opencode: {
1861
1861
  label: "opencode",
1862
- npmPackage: "opencode-ai",
1862
+ npmPackage: "@opencode/cli",
1863
1863
  binary: "opencode",
1864
1864
  configDir: "/home/agent/.config/opencode"
1865
1865
  }
@@ -2048,7 +2048,11 @@ function opencodeProviders(url) {
2048
2048
  function opencodeConfig(base, url, isStrict = false) {
2049
2049
  const merged = mergeJson({ $schema: "https://opencode.ai/config.json", ...base }, {
2050
2050
  model: `${PROVIDER_ID}/${ORCHESTRATOR_MODEL}`,
2051
- compaction: { auto: true, keep: { tokens: 24000 }, buffer: 32000 },
2051
+ compaction: {
2052
+ auto: true,
2053
+ preserve_recent_tokens: 24000,
2054
+ reserved: 32000
2055
+ },
2052
2056
  ...isStrict ? {} : { permission: "allow" }
2053
2057
  });
2054
2058
  const enabled = stringList(base.enabled_providers);
@@ -2807,6 +2811,15 @@ async function doctor() {
2807
2811
  return DGX_SPARK_URL;
2808
2812
  }
2809
2813
  ],
2814
+ [
2815
+ "Runner /tmp is usable by the agent",
2816
+ () => {
2817
+ const out = inRunner("mkdir -p /tmp/maesttro-tmpcheck/sub && find /tmp -mindepth 1 ! -user agent ! -path '/tmp/maesttro-tmpcheck*' | head -3; rm -rf /tmp/maesttro-tmpcheck; true");
2818
+ if (out.trim()) {
2819
+ throw new Error(`root-owned in /tmp: ${out.trim().replace(/\n/g, " ")}`);
2820
+ }
2821
+ }
2822
+ ],
2810
2823
  [
2811
2824
  "Personal SSH key NOT visible inside runner (isolation intact)",
2812
2825
  () => {
package/docker/Dockerfile CHANGED
@@ -1,8 +1,8 @@
1
1
  # git is built from source: Debian ships 2.47 and the runner wants a recent
2
2
  # git. Builder matches node:24-slim's Debian so the runtime libs line up.
3
3
  FROM debian:bookworm-slim AS git-build
4
- ARG GIT_VERSION=2.55.0
5
- ARG GIT_SHA256=457fdb04dc8728e007d4688695e6912e6f680727920f2a40bf11eacc17505357
4
+ ARG GIT_VERSION=2.56.0
5
+ ARG GIT_SHA256=26c56c296b38c0695b26fa95f475f1d01704d2d38e73465ca30b0b2f5dc789d3
6
6
  RUN apt-get update \
7
7
  && apt-get install -y --no-install-recommends ca-certificates curl xz-utils \
8
8
  build-essential libcurl4-openssl-dev libexpat1-dev libssl-dev zlib1g-dev \
@@ -14,8 +14,8 @@ RUN apt-get update \
14
14
  && make -j"$(nproc)" prefix=/usr/local sysconfdir=/etc NO_TCLTK=1 NO_PERL=1 NO_PYTHON=1 NO_GETTEXT=1 NO_RUST=1 \
15
15
  DESTDIR=/out all install
16
16
 
17
- FROM oven/bun:1.4.2-slim AS bun
18
- FROM ghcr.io/astral-sh/uv:0.12.19 AS uv
17
+ FROM oven/bun:1.4.3-slim AS bun
18
+ FROM ghcr.io/astral-sh/uv:0.13.1 AS uv
19
19
 
20
20
  FROM node:24-slim
21
21
 
@@ -71,11 +71,14 @@ COPY gitconfig /etc/gitconfig
71
71
  COPY runner-marker /etc/maesttro/runner
72
72
 
73
73
  # Curated client CLIs — keep in sync with src/clients.ts
74
+ # Their install hooks run the new binaries as root, which leave root-owned dirs in
75
+ # /tmp that the host-uid agent can't create inside. Clear /tmp here; it's 1777.
74
76
  RUN npm install -g \
75
77
  @anthropic-ai/claude-code \
76
- opencode-ai \
78
+ @opencode/cli \
77
79
  typescript \
78
- && corepack enable
80
+ && corepack enable \
81
+ && find /tmp -mindepth 1 -delete
79
82
  # The image pins the client version; an in-container update would only land on
80
83
  # the ephemeral layer and be re-downloaded every session
81
84
  ENV DISABLE_AUTOUPDATER=1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maesttro",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "description": "Isolated Docker runner for local coding agents (opencode, claude, ...) under a dedicated bot GitHub identity, with curated configs baked in per client.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,6 +13,7 @@
13
13
  "scripts": {
14
14
  "build": "bun build src/cli.ts --target node --format esm --outfile dist/maesttro.js",
15
15
  "prepack": "bun run build",
16
+ "pretest": "bun install --frozen-lockfile",
16
17
  "test": "bun test ./tests",
17
18
  "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.test.json",
18
19
  "clean": "rm -rf dist node_modules"