maesttro 0.5.0 → 0.6.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/docker/Dockerfile CHANGED
@@ -65,8 +65,8 @@ RUN UV_PYTHON_INSTALL_DIR=/usr/local/share/uv/python UV_PYTHON_BIN_DIR=/usr/loca
65
65
  && ln -s "$(dirname "$(readlink -f /usr/local/bin/python3)")/pip3" /usr/local/bin/pip3 \
66
66
  && ln -s pip3 /usr/local/bin/pip
67
67
 
68
- # System-level, not ~/.gitconfig: /home/agent is the persistent volume and
69
- # shadows anything baked into home for existing installs
68
+ # System-level, not ~/.gitconfig: the per-session home mounted at /home/agent
69
+ # shadows anything baked into the image's home
70
70
  COPY gitconfig /etc/gitconfig
71
71
  COPY runner-marker /etc/maesttro/runner
72
72
 
@@ -82,13 +82,10 @@ ENV DISABLE_AUTOUPDATER=1
82
82
 
83
83
  RUN useradd -m -s /bin/bash agent
84
84
  USER agent
85
- # Created as agent so a fresh volume inherits them; otherwise Docker creates
86
- # ~/.config and ~/.claude as root when it sets up the nested read-only mounts
87
- RUN mkdir -p /home/agent/.config/opencode /home/agent/.claude
88
85
  WORKDIR /workspace
89
86
 
90
87
  # Everything the agent installs lands on the container's writable layer, never
91
- # the shared /home/agent volume, so it is gone when the session's container exits
88
+ # the session's home, so it is gone when the session's container exits
92
89
  ENV AGENT_TOOLS=/opt/agent-tools
93
90
  ENV NPM_CONFIG_PREFIX=${AGENT_TOOLS} \
94
91
  NPM_CONFIG_CACHE=${AGENT_TOOLS}/cache/npm \
@@ -109,8 +106,7 @@ ENV NPM_CONFIG_PREFIX=${AGENT_TOOLS} \
109
106
  ENV PATH=${AGENT_TOOLS}/bin:${AGENT_TOOLS}/bun/bin:${AGENT_TOOLS}/dotnet/.dotnet/tools:${PATH}
110
107
 
111
108
  # Client configs are applied at container start by `maesttro configure`
112
- # (mounted from the host's install): /home/agent is a persistent volume, so
113
- # anything baked here would only ever reach brand-new volumes.
109
+ # (mounted from the host's install): the session home shadows /home/agent
114
110
 
115
111
  # Starts as root only to remap agent to the host user's uid/gid (bind mounts
116
112
  # keep host ownership on Linux), then drops to agent before running anything
@@ -9,11 +9,14 @@ if [ -n "$uid" ] && [ "$uid" != "$(id -u agent)" ]; then
9
9
  usermod --non-unique --uid "$uid" --gid "$gid" agent
10
10
  fi
11
11
 
12
- owner="$(id -u agent):$(id -g agent)"
13
- if [ -n "$uid" ] && [ "$(stat -c %u:%g /home/agent)" != "$owner" ]; then
14
- find /home/agent -xdev -exec chown -h "$owner" {} + 2>/dev/null || true
12
+ # cp -a onto the directory itself would copy /etc/skel's own mode, clobbering the 0700 the host set
13
+ if [ ! -e /home/agent/.profile ]; then
14
+ find /etc/skel -mindepth 1 -maxdepth 1 -exec cp -a {} /home/agent/ \;
15
15
  fi
16
16
 
17
+ owner="$(id -u agent):$(id -g agent)"
18
+ find /home/agent /home/agent/.claude -xdev \! -user agent -exec chown -h "$owner" {} + 2>/dev/null || true
19
+
17
20
  mkdir -p "$AGENT_TOOLS"
18
21
  chown "$owner" "$AGENT_TOOLS"
19
22
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maesttro",
3
- "version": "0.5.0",
3
+ "version": "0.6.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": {