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 +1 -1
- package/dist/maesttro.js +15 -2
- package/docker/Dockerfile +9 -6
- package/package.json +2 -1
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 |
|
|
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
|
|
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: {
|
|
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.
|
|
5
|
-
ARG GIT_SHA256=
|
|
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.
|
|
18
|
-
FROM ghcr.io/astral-sh/uv:0.
|
|
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
|
|
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.
|
|
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"
|