@powerhousedao/switchboard 6.0.0-dev.2 → 6.0.0-dev.4
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/CHANGELOG.md +20 -0
- package/Dockerfile +59 -37
- package/entrypoint.sh +6 -17
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## 6.0.0-dev.4 (2026-01-16)
|
|
2
|
+
|
|
3
|
+
### 🩹 Fixes
|
|
4
|
+
|
|
5
|
+
- **switchboard:** add openssl for Prisma compatibility ([fe7235609](https://github.com/powerhouse-inc/powerhouse/commit/fe7235609))
|
|
6
|
+
|
|
7
|
+
### ❤️ Thank You
|
|
8
|
+
|
|
9
|
+
- Frank
|
|
10
|
+
|
|
11
|
+
## 6.0.0-dev.3 (2026-01-16)
|
|
12
|
+
|
|
13
|
+
### 🚀 Features
|
|
14
|
+
|
|
15
|
+
- **docker:** optimize images with multi-stage builds ([d51a2df9d](https://github.com/powerhouse-inc/powerhouse/commit/d51a2df9d))
|
|
16
|
+
|
|
17
|
+
### ❤️ Thank You
|
|
18
|
+
|
|
19
|
+
- Frank
|
|
20
|
+
|
|
1
21
|
## 6.0.0-dev.2 (2026-01-15)
|
|
2
22
|
|
|
3
23
|
### 🚀 Features
|
package/Dockerfile
CHANGED
|
@@ -1,58 +1,80 @@
|
|
|
1
|
-
|
|
1
|
+
# Build stage
|
|
2
|
+
FROM node:22-alpine AS build
|
|
3
|
+
|
|
2
4
|
WORKDIR /app
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
|
|
6
|
+
# Install build dependencies
|
|
7
|
+
RUN apk add --no-cache python3 make g++ git bash \
|
|
8
|
+
&& ln -sf /usr/bin/python3 /usr/bin/python
|
|
9
|
+
|
|
10
|
+
# Setup pnpm
|
|
5
11
|
ENV PNPM_HOME="/pnpm"
|
|
6
12
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
7
|
-
RUN corepack enable && corepack
|
|
8
|
-
ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
|
13
|
+
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
9
14
|
|
|
10
|
-
|
|
15
|
+
# Configure JSR registry
|
|
16
|
+
RUN pnpm config set @jsr:registry https://npm.jsr.io
|
|
11
17
|
|
|
12
|
-
#
|
|
13
|
-
|
|
18
|
+
# Build arguments
|
|
19
|
+
ARG TAG=latest
|
|
20
|
+
ARG PH_PACKAGES=""
|
|
14
21
|
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
ENV NX_DAEMON=false
|
|
22
|
+
# Install ph-cmd and prisma
|
|
23
|
+
RUN pnpm add -g ph-cmd@$TAG prisma@5.17.0
|
|
18
24
|
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
# Initialize project based on tag
|
|
26
|
+
RUN case "$TAG" in \
|
|
27
|
+
*dev*) ph init project --dev --package-manager pnpm ;; \
|
|
28
|
+
*staging*) ph init project --staging --package-manager pnpm ;; \
|
|
29
|
+
*) ph init project --package-manager pnpm ;; \
|
|
30
|
+
esac
|
|
24
31
|
|
|
25
|
-
|
|
26
|
-
ENV PH_SWITCHBOARD_DATABASE_URL="dev.db"
|
|
27
|
-
ENV PH_SWITCHBOARD_REDIS_URL=""
|
|
28
|
-
ENV SKIP_DB_MIGRATIONS="false"
|
|
32
|
+
WORKDIR /app/project
|
|
29
33
|
|
|
30
|
-
#
|
|
31
|
-
|
|
34
|
+
# Install PH packages if provided
|
|
35
|
+
RUN if [ -n "$PH_PACKAGES" ]; then \
|
|
36
|
+
IFS=',' ; for pkg in $PH_PACKAGES; do \
|
|
37
|
+
echo "Installing package: $pkg"; \
|
|
38
|
+
ph install "$pkg"; \
|
|
39
|
+
done; \
|
|
40
|
+
fi
|
|
32
41
|
|
|
33
|
-
#
|
|
34
|
-
|
|
42
|
+
# Final stage - slim node image
|
|
43
|
+
FROM node:22-alpine
|
|
35
44
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
45
|
+
WORKDIR /app
|
|
46
|
+
|
|
47
|
+
# Install runtime dependencies (curl for health checks, openssl for Prisma)
|
|
48
|
+
RUN apk add --no-cache curl openssl
|
|
49
|
+
|
|
50
|
+
# Setup pnpm
|
|
51
|
+
ENV PNPM_HOME="/pnpm"
|
|
52
|
+
ENV PATH="$PNPM_HOME:$PATH"
|
|
53
|
+
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
54
|
+
|
|
55
|
+
# Configure JSR registry
|
|
41
56
|
RUN pnpm config set @jsr:registry https://npm.jsr.io
|
|
57
|
+
|
|
58
|
+
# Install ph-cmd and prisma globally (needed at runtime)
|
|
59
|
+
ARG TAG=latest
|
|
42
60
|
RUN pnpm add -g ph-cmd@$TAG prisma@5.17.0
|
|
43
61
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*staging*) ph init project --staging --package-manager pnpm ;; \
|
|
47
|
-
*) ph init project --package-manager pnpm ;; \
|
|
48
|
-
esac
|
|
62
|
+
# Copy built project from build stage
|
|
63
|
+
COPY --from=build /app/project /app/project
|
|
49
64
|
|
|
50
65
|
WORKDIR /app/project
|
|
51
66
|
|
|
52
|
-
#
|
|
53
|
-
|
|
67
|
+
# Copy entrypoint
|
|
68
|
+
COPY entrypoint.sh /app/entrypoint.sh
|
|
69
|
+
RUN chmod +x /app/entrypoint.sh
|
|
70
|
+
|
|
71
|
+
# Environment variables
|
|
72
|
+
ENV NODE_ENV=production
|
|
73
|
+
ENV PORT=3000
|
|
74
|
+
ENV DATABASE_URL=""
|
|
75
|
+
ENV SKIP_DB_MIGRATIONS="false"
|
|
54
76
|
|
|
55
|
-
EXPOSE $PORT
|
|
77
|
+
EXPOSE ${PORT}
|
|
56
78
|
|
|
57
79
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=30s --retries=3 \
|
|
58
80
|
CMD curl -f http://localhost:${PORT}/health || exit 1
|
package/entrypoint.sh
CHANGED
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
set -e
|
|
3
3
|
|
|
4
|
-
if
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
for pkg in $PACKAGES; do
|
|
9
|
-
echo "[entrypoint] Installing package: $pkg"
|
|
10
|
-
ph install $pkg
|
|
11
|
-
done
|
|
4
|
+
# Run Prisma db push if DATABASE_URL is postgres and migrations not skipped
|
|
5
|
+
if [ -n "$DATABASE_URL" ] && echo "$DATABASE_URL" | grep -q "^postgres" && [ "$SKIP_DB_MIGRATIONS" != "true" ]; then
|
|
6
|
+
echo "[entrypoint] Running Prisma db push..."
|
|
7
|
+
prisma db push --schema node_modules/document-drive/dist/prisma/schema.prisma --skip-generate
|
|
12
8
|
fi
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
echo "[entrypoint] DATABASE_URL starts with postgres, running Prisma db push..."
|
|
17
|
-
prisma db push --schema node_modules/document-drive/dist/prisma/schema.prisma --skip-generate
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
|
-
echo "[entrypoint] Starting switchboard..."
|
|
21
|
-
export SWITCHBOARD_PORT="${PORT:-4001}"
|
|
22
|
-
ph switchboard --port $SWITCHBOARD_PORT
|
|
10
|
+
echo "[entrypoint] Starting switchboard on port ${PORT:-3000}..."
|
|
11
|
+
exec ph switchboard --port ${PORT:-3000}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/switchboard",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.0.0-dev.
|
|
4
|
+
"version": "6.0.0-dev.4",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"kysely-pglite-dialect": "^1.1.1",
|
|
43
43
|
"pg": "^8.13.0",
|
|
44
44
|
"redis": "^4.7.0",
|
|
45
|
-
"@powerhousedao/config": "6.0.0-dev.
|
|
46
|
-
"@powerhousedao/reactor": "6.0.0-dev.
|
|
47
|
-
"@powerhousedao/reactor-api": "6.0.0-dev.
|
|
48
|
-
"@renown/sdk": "6.0.0-dev.
|
|
49
|
-
"document-drive": "6.0.0-dev.
|
|
50
|
-
"document-model": "6.0.0-dev.
|
|
45
|
+
"@powerhousedao/config": "6.0.0-dev.4",
|
|
46
|
+
"@powerhousedao/reactor": "6.0.0-dev.4",
|
|
47
|
+
"@powerhousedao/reactor-api": "6.0.0-dev.4",
|
|
48
|
+
"@renown/sdk": "6.0.0-dev.4",
|
|
49
|
+
"document-drive": "6.0.0-dev.4",
|
|
50
|
+
"document-model": "6.0.0-dev.4"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/express": "^4.17.25",
|