osborn 0.9.37 → 0.9.38
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/Dockerfile.sandbox +34 -0
- package/package.json +1 -1
package/Dockerfile.sandbox
CHANGED
|
@@ -31,10 +31,23 @@ RUN npm install -g "osborn@${OSBORN_VERSION}" @anthropic-ai/claude-code
|
|
|
31
31
|
# Persistent workspace + claude config dirs
|
|
32
32
|
RUN mkdir -p /workspace /root/.claude
|
|
33
33
|
|
|
34
|
+
# Marker so orchestration (machines.ts isManifestAware) can detect this image
|
|
35
|
+
# supports the manifest-driven update flow. Pre-marker machines fall back to
|
|
36
|
+
# the image-swap update path, which brings them onto a marker-aware image;
|
|
37
|
+
# from then on, all updates use the manifest flow defined in the entrypoint.
|
|
38
|
+
RUN touch /etc/osborn-manifest-aware
|
|
39
|
+
|
|
34
40
|
ENV OSBORN_CWD=/workspace
|
|
35
41
|
ENV OSBORN_API_PORT=8741
|
|
36
42
|
ENV NODE_ENV=production
|
|
37
43
|
|
|
44
|
+
# HOME points at the volume so user-space config from any tool that respects
|
|
45
|
+
# HOME (gh, git, ssh, aws, etc.) automatically writes to the persistent
|
|
46
|
+
# volume instead of the ephemeral container overlay. The existing /root/.claude
|
|
47
|
+
# symlink machinery below stays in place — it's redundant with HOME=/workspace
|
|
48
|
+
# but harmless.
|
|
49
|
+
ENV HOME=/workspace
|
|
50
|
+
|
|
38
51
|
WORKDIR /workspace
|
|
39
52
|
|
|
40
53
|
EXPOSE 8741
|
|
@@ -52,6 +65,10 @@ ln -sf /workspace/.claude /root/.claude
|
|
|
52
65
|
# Suppress Claude Code interactive onboarding prompts
|
|
53
66
|
ONBOARDING_JSON='{"numStartups":10,"installMethod":"npm","autoUpdates":false,"hasCompletedOnboarding":true,"hasTrustDialogAccepted":true,"hasTrustDialogHooksAccepted":true,"hasCompletedProjectOnboarding":true,"hasAcknowledgedCostThreshold":true,"effortCalloutV2Dismissed":true,"theme":"dark","projects":{"/workspace":{"hasTrustDialogAccepted":true,"hasTrustDialogHooksAccepted":true,"hasCompletedProjectOnboarding":true}}}'
|
|
54
67
|
echo "$ONBOARDING_JSON" > /root/.claude.json
|
|
68
|
+
# Additional write at $HOME/.claude.json. With HOME=/workspace this is where
|
|
69
|
+
# Claude Code actually reads its top-level config from; the /root/.claude.json
|
|
70
|
+
# write above becomes dead but is left in place (harmless).
|
|
71
|
+
echo "$ONBOARDING_JSON" > /workspace/.claude.json
|
|
55
72
|
mkdir -p /workspace/.claude
|
|
56
73
|
echo "$ONBOARDING_JSON" > /workspace/.claude/.config.json
|
|
57
74
|
echo "$ONBOARDING_JSON" > /workspace/.claude/claude.json
|
|
@@ -79,6 +96,23 @@ if [ -d "$PKG_SKILLS_DIR" ]; then
|
|
|
79
96
|
done
|
|
80
97
|
fi
|
|
81
98
|
|
|
99
|
+
# Manifest-driven version check.
|
|
100
|
+
# Orchestration writes /workspace/.osborn-want-version on update (machines.ts
|
|
101
|
+
# updateViaManifest). On every boot we compare to the currently-installed
|
|
102
|
+
# osborn and run `npm install -g osborn@<want>` if they differ. The install
|
|
103
|
+
# lands in the container overlay (default npm prefix) — Fly wipes overlay on
|
|
104
|
+
# stop/start so the install re-runs on every boot until the base image is
|
|
105
|
+
# rebuilt with that version baked in. Update is fast between Fly restarts;
|
|
106
|
+
# only the first boot after a restart pays the npm install cost.
|
|
107
|
+
WANT=$(cat /workspace/.osborn-want-version 2>/dev/null | tr -d '[:space:]')
|
|
108
|
+
if [ -n "$WANT" ]; then
|
|
109
|
+
CURRENT=$(osborn --version 2>/dev/null | head -1 | tr -d '[:space:]')
|
|
110
|
+
if [ "$WANT" != "$CURRENT" ]; then
|
|
111
|
+
echo "[sandbox] osborn ${CURRENT:-none} → ${WANT} (manifest install)"
|
|
112
|
+
npm install -g "osborn@${WANT}" || echo "[sandbox] install failed — running ${CURRENT:-image-baked} version"
|
|
113
|
+
fi
|
|
114
|
+
fi
|
|
115
|
+
|
|
82
116
|
exec osborn
|
|
83
117
|
ENTRYPOINT
|
|
84
118
|
|