diff --git a/Dockerfile b/Dockerfile index 8a5fcba..9d340f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,8 @@ -FROM oven/bun:canary-slim AS base +FROM smanx/opencode:latest AS base +USER root +RUN apt-get update && apt-get install -y curl unzip && \ + curl -fsSL https://bun.sh/install | bash && \ + ln -s /root/.bun/bin/bun /usr/local/bin/bun FROM base AS deps @@ -30,5 +34,11 @@ COPY tsconfig.json opencode.json ./ COPY src ./src COPY .opencode ./.opencode +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] +COPY .opencode ./.opencode + EXPOSE 8787 CMD ["bun", "src/server.ts"] diff --git a/bun.lock b/bun.lock index c1492ec..a077dae 100644 --- a/bun.lock +++ b/bun.lock @@ -9,7 +9,6 @@ "cors": "^2.8.5", "dotenv": "^17.2.3", "express": "^4.21.2", - "opencode-ai": "^1.14.30", "pino": "^9.7.0", "pino-pretty": "^13.1.2", "zod": "^3.25.76", @@ -173,32 +172,6 @@ "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], - "opencode-ai": ["opencode-ai@1.14.30", "", { "optionalDependencies": { "opencode-darwin-arm64": "1.14.30", "opencode-darwin-x64": "1.14.30", "opencode-darwin-x64-baseline": "1.14.30", "opencode-linux-arm64": "1.14.30", "opencode-linux-arm64-musl": "1.14.30", "opencode-linux-x64": "1.14.30", "opencode-linux-x64-baseline": "1.14.30", "opencode-linux-x64-baseline-musl": "1.14.30", "opencode-linux-x64-musl": "1.14.30", "opencode-windows-arm64": "1.14.30", "opencode-windows-x64": "1.14.30", "opencode-windows-x64-baseline": "1.14.30" }, "bin": { "opencode": "bin/opencode" } }, "sha512-OOwize1FNfUBszk7XuPd7Xj7yO1e5fXUz7TW2nyOO3o73uWntxGBp7wNDpZDCipHLO9J8+ZRYY4Ax9DPyAalWw=="], - - "opencode-darwin-arm64": ["opencode-darwin-arm64@1.14.30", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ThlGd4mgaA1L2A44F26YNxt71Fk1PqdwyUes18ZDx3ISbOxqWLdwfQOvXKMAflLf1pOm2FlO4O1Iz+C7+x639w=="], - - "opencode-darwin-x64": ["opencode-darwin-x64@1.14.30", "", { "os": "darwin", "cpu": "x64" }, "sha512-n+Y6/nj7Rwl++t15dMxVac2HOr9IvWkBQl8improV1zyOkAouW9Oj7sr7U9m+xlyTfussmrSIT+It4cQYLQmGA=="], - - "opencode-darwin-x64-baseline": ["opencode-darwin-x64-baseline@1.14.30", "", { "os": "darwin", "cpu": "x64" }, "sha512-trq6csWCfqaFJVwkgP4a5YE79eiXU+FX3RWPPEVbNjzSgauthmZJqBBq5oPkbyKlCgLdCC9axcVE1bdzTsapCQ=="], - - "opencode-linux-arm64": ["opencode-linux-arm64@1.14.30", "", { "os": "linux", "cpu": "arm64" }, "sha512-ok4XcWrZSpoqcZJcjlowpCG8wn03KWdUpNGs1NGzRCPDILdGtlY7cm3z/PrC/vtsZ7a2ZV+r9H41juxXQB+ypQ=="], - - "opencode-linux-arm64-musl": ["opencode-linux-arm64-musl@1.14.30", "", { "os": "linux", "cpu": "arm64" }, "sha512-UIBm9hrzHSGDf0hRra20dWqxCeBZdGzWjFmJEkZy/xkYBi5vksMlaQC5e3uRFsBQ+nAM2qPbPjJbUiRjVtP23w=="], - - "opencode-linux-x64": ["opencode-linux-x64@1.14.30", "", { "os": "linux", "cpu": "x64" }, "sha512-sjAmdoauCMxAaaHHM/XAtg/MTzb+ZCjTx+T1UK52l0WK73HWwiqtuy2BbrsKey56oNe8WwmWHPPZhdDL4IfBZg=="], - - "opencode-linux-x64-baseline": ["opencode-linux-x64-baseline@1.14.30", "", { "os": "linux", "cpu": "x64" }, "sha512-tsbssowasjqFbRhcWT+z6BZAnU7Py2b+xcLiQcxmC5tV8VX+yZ1zkSX7hKVJURgwiafXctZZOyJCpPpkfEBVYw=="], - - "opencode-linux-x64-baseline-musl": ["opencode-linux-x64-baseline-musl@1.14.30", "", { "os": "linux", "cpu": "x64" }, "sha512-79qPfQ/d8skQFf02ElM95AXGkf2vTw5fzJNn/k5tcxSUbYPlusFgOr6ltXdv+5bpUFn5jK9oObuFPWduP9sF+w=="], - - "opencode-linux-x64-musl": ["opencode-linux-x64-musl@1.14.30", "", { "os": "linux", "cpu": "x64" }, "sha512-2LZKaLS8B7KGtyRWDJYRhgDX0WcxM62BW98UP1Zroa9liht5rkNLcHDCuvaUYQmeWW8ckmm4D8ipUCfZZr9hqQ=="], - - "opencode-windows-arm64": ["opencode-windows-arm64@1.14.30", "", { "os": "win32", "cpu": "arm64" }, "sha512-RW0cxHrDYohBgi9vbS8dIFI7JR/9LePC8eqhOpjLbVMKOxNEvcVx76+rXXUxwT7RdTbmmiYcYfO1RjkuCWGinA=="], - - "opencode-windows-x64": ["opencode-windows-x64@1.14.30", "", { "os": "win32", "cpu": "x64" }, "sha512-5mPDhKa3Yj/siFe1pOWLoAbsglv83PVoSlhHHuKV4OvAAEawxNilECXWJdC+VcZmWixsRVxiUmOEXj7rURAImA=="], - - "opencode-windows-x64-baseline": ["opencode-windows-x64-baseline@1.14.30", "", { "os": "win32", "cpu": "x64" }, "sha512-imjAY9wjfWVwzIQVFuUMptI8pAWYe9nkldzTL9qmDdH4e1JnTNkB+LY5DUUb2xLFY0AyPlsd2J8uWrIZ3TOUgw=="], - "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..770482c --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -e + +# 直接启动 TJWaterAgent +# SDK 会根据 src/runtime/opencode.ts 中的逻辑自动管理 opencode 实例 +echo "Starting TJWaterAgent..." +exec bun run start