@agent-foundry/replay-server 1.0.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/.cursor/project.mdc +694 -0
- package/.dockerignore +11 -0
- package/Dockerfile +156 -0
- package/README.md +628 -0
- package/bundles/.gitkeep +2 -0
- package/dist/cli/render.d.ts +10 -0
- package/dist/cli/render.d.ts.map +1 -0
- package/dist/cli/render.js +206 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/renderer/PuppeteerRenderer.d.ts +72 -0
- package/dist/renderer/PuppeteerRenderer.d.ts.map +1 -0
- package/dist/renderer/PuppeteerRenderer.js +392 -0
- package/dist/renderer/PuppeteerRenderer.js.map +1 -0
- package/dist/renderer/index.d.ts +2 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +2 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/server/index.d.ts +14 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +348 -0
- package/dist/server/index.js.map +1 -0
- package/docker-compose.local.yml +29 -0
- package/package.json +35 -0
- package/samples/life-replay-lr-mkcdfzc2-u8cqbs.json +1770 -0
- package/scripts/build-bundle.sh +52 -0
- package/scripts/deploy-aliyun.sh +81 -0
- package/src/cli/render.ts +243 -0
- package/src/index.ts +2 -0
- package/src/renderer/PuppeteerRenderer.ts +512 -0
- package/src/renderer/index.ts +1 -0
- package/src/server/index.ts +407 -0
- package/tsconfig.json +35 -0
package/Dockerfile
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Dockerfile for Aliyun Function Compute
|
|
2
|
+
# Build from the project root: docker build -f packages/replay-server/Dockerfile -t replay-server .
|
|
3
|
+
#
|
|
4
|
+
# This multi-stage build:
|
|
5
|
+
# 1. Builds the game bundle (game-life-restart)
|
|
6
|
+
# 2. Builds the replay-server
|
|
7
|
+
# 3. Creates a minimal runtime image with both
|
|
8
|
+
|
|
9
|
+
# =============================================================================
|
|
10
|
+
# Stage 1: Build game bundle
|
|
11
|
+
# =============================================================================
|
|
12
|
+
FROM node:18-bullseye-slim AS game-builder
|
|
13
|
+
|
|
14
|
+
RUN npm install -g pnpm@9.1.0
|
|
15
|
+
|
|
16
|
+
WORKDIR /app
|
|
17
|
+
|
|
18
|
+
# Copy monorepo config for workspace resolution
|
|
19
|
+
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
|
|
20
|
+
|
|
21
|
+
# Copy package.json files for dependencies
|
|
22
|
+
COPY packages/replay-shared/package.json ./packages/replay-shared/
|
|
23
|
+
COPY repo/game-life-restart/package.json ./repo/game-life-restart/
|
|
24
|
+
|
|
25
|
+
# Install dependencies
|
|
26
|
+
RUN pnpm install --frozen-lockfile
|
|
27
|
+
|
|
28
|
+
# Copy source files
|
|
29
|
+
COPY packages/replay-shared/tsconfig.json ./packages/replay-shared/
|
|
30
|
+
COPY packages/replay-shared/src ./packages/replay-shared/src
|
|
31
|
+
COPY repo/game-life-restart/tsconfig.json ./repo/game-life-restart/
|
|
32
|
+
COPY repo/game-life-restart/tsconfig.node.json ./repo/game-life-restart/
|
|
33
|
+
COPY repo/game-life-restart/vite.config.ts ./repo/game-life-restart/
|
|
34
|
+
COPY repo/game-life-restart/tailwind.config.js ./repo/game-life-restart/
|
|
35
|
+
COPY repo/game-life-restart/postcss.config.js ./repo/game-life-restart/
|
|
36
|
+
COPY repo/game-life-restart/index.html ./repo/game-life-restart/
|
|
37
|
+
COPY repo/game-life-restart/src ./repo/game-life-restart/src
|
|
38
|
+
COPY repo/game-life-restart/public ./repo/game-life-restart/public
|
|
39
|
+
|
|
40
|
+
# Build replay-shared first (dependency)
|
|
41
|
+
WORKDIR /app/packages/replay-shared
|
|
42
|
+
RUN pnpm run build
|
|
43
|
+
|
|
44
|
+
# Build game with correct base path for bundle serving
|
|
45
|
+
WORKDIR /app/repo/game-life-restart
|
|
46
|
+
ENV VITE_BASE_PATH=/bundles/game-life-restart/
|
|
47
|
+
RUN pnpm run build
|
|
48
|
+
|
|
49
|
+
# =============================================================================
|
|
50
|
+
# Stage 2: Build replay-server
|
|
51
|
+
# =============================================================================
|
|
52
|
+
FROM node:18-bullseye-slim AS server-builder
|
|
53
|
+
|
|
54
|
+
RUN npm install -g pnpm@9.1.0
|
|
55
|
+
|
|
56
|
+
WORKDIR /app
|
|
57
|
+
|
|
58
|
+
# Copy monorepo config
|
|
59
|
+
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
|
|
60
|
+
|
|
61
|
+
# Copy package.json files
|
|
62
|
+
COPY packages/replay-shared/package.json ./packages/replay-shared/
|
|
63
|
+
COPY packages/replay-server/package*.json ./packages/replay-server/
|
|
64
|
+
|
|
65
|
+
# Install dependencies
|
|
66
|
+
RUN pnpm install --frozen-lockfile
|
|
67
|
+
|
|
68
|
+
# Copy source files
|
|
69
|
+
COPY packages/replay-shared/tsconfig.json ./packages/replay-shared/
|
|
70
|
+
COPY packages/replay-shared/src ./packages/replay-shared/src
|
|
71
|
+
COPY packages/replay-server/tsconfig.json ./packages/replay-server/
|
|
72
|
+
COPY packages/replay-server/src ./packages/replay-server/src
|
|
73
|
+
|
|
74
|
+
# Build shared package first
|
|
75
|
+
WORKDIR /app/packages/replay-shared
|
|
76
|
+
RUN pnpm run build
|
|
77
|
+
|
|
78
|
+
# Build replay-server
|
|
79
|
+
WORKDIR /app/packages/replay-server
|
|
80
|
+
RUN pnpm run build
|
|
81
|
+
|
|
82
|
+
# =============================================================================
|
|
83
|
+
# Stage 3: Runtime
|
|
84
|
+
# =============================================================================
|
|
85
|
+
FROM node:18-bullseye-slim AS runtime
|
|
86
|
+
|
|
87
|
+
# Install FFmpeg, Chromium dependencies, Chinese fonts, and pnpm
|
|
88
|
+
RUN apt-get update && apt-get install -y \
|
|
89
|
+
ffmpeg \
|
|
90
|
+
chromium \
|
|
91
|
+
chromium-sandbox \
|
|
92
|
+
libnss3 \
|
|
93
|
+
libatk1.0-0 \
|
|
94
|
+
libatk-bridge2.0-0 \
|
|
95
|
+
libcups2 \
|
|
96
|
+
libdrm2 \
|
|
97
|
+
libxkbcommon0 \
|
|
98
|
+
libxcomposite1 \
|
|
99
|
+
libxdamage1 \
|
|
100
|
+
libxrandr2 \
|
|
101
|
+
libgbm1 \
|
|
102
|
+
libasound2 \
|
|
103
|
+
libxss1 \
|
|
104
|
+
libgtk-3-0 \
|
|
105
|
+
fonts-noto-cjk \
|
|
106
|
+
fonts-noto-cjk-extra \
|
|
107
|
+
fonts-wqy-zenhei \
|
|
108
|
+
fontconfig \
|
|
109
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
110
|
+
|
|
111
|
+
# Install pnpm globally
|
|
112
|
+
RUN npm install -g pnpm@9.1.0
|
|
113
|
+
|
|
114
|
+
# Set Puppeteer to use system Chromium
|
|
115
|
+
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
|
|
116
|
+
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
|
|
117
|
+
|
|
118
|
+
WORKDIR /app
|
|
119
|
+
|
|
120
|
+
# Copy monorepo configuration files
|
|
121
|
+
COPY --from=server-builder /app/package.json /app/pnpm-workspace.yaml /app/pnpm-lock.yaml ./
|
|
122
|
+
|
|
123
|
+
# Copy package.json files for both packages
|
|
124
|
+
COPY --from=server-builder /app/packages/replay-shared/package.json ./packages/replay-shared/
|
|
125
|
+
COPY --from=server-builder /app/packages/replay-server/package.json ./packages/replay-server/
|
|
126
|
+
|
|
127
|
+
# Install production dependencies
|
|
128
|
+
RUN pnpm install --frozen-lockfile --prod
|
|
129
|
+
|
|
130
|
+
# Copy built artifacts from server-builder
|
|
131
|
+
COPY --from=server-builder /app/packages/replay-shared/dist ./packages/replay-shared/dist
|
|
132
|
+
COPY --from=server-builder /app/packages/replay-server/dist ./packages/replay-server/dist
|
|
133
|
+
|
|
134
|
+
# Copy game bundle from game-builder
|
|
135
|
+
COPY --from=game-builder /app/repo/game-life-restart/dist ./packages/replay-server/bundles/game-life-restart
|
|
136
|
+
|
|
137
|
+
# Create output directory
|
|
138
|
+
RUN mkdir -p /app/packages/replay-server/output
|
|
139
|
+
|
|
140
|
+
# Set working directory to replay-server
|
|
141
|
+
WORKDIR /app/packages/replay-server
|
|
142
|
+
|
|
143
|
+
# Environment variables
|
|
144
|
+
ENV PORT=9000
|
|
145
|
+
ENV BUNDLES_DIR=/app/packages/replay-server/bundles
|
|
146
|
+
ENV OUTPUT_DIR=/app/packages/replay-server/output
|
|
147
|
+
|
|
148
|
+
# Expose port
|
|
149
|
+
EXPOSE 9000
|
|
150
|
+
|
|
151
|
+
# Health check
|
|
152
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
153
|
+
CMD node -e "require('http').get('http://localhost:${PORT:-9000}/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"
|
|
154
|
+
|
|
155
|
+
# Start server
|
|
156
|
+
CMD ["node", "dist/server/index.js"]
|