Add interactive PTY Chat tab with xterm.js terminal emulator
Browser-based interactive terminal sessions with agent CLIs via WebSocket + node-pty. Supports full TUI rendering (colors, cursor, ctrl-c) through xterm.js in the browser. Architecture: xterm.js ←WebSocket→ pty-server.js ←PTY→ agent CLI - Extract shared buildAgentEnv() from executor into agent-env.ts - Add internal /api/agents/[id]/env endpoint for PTY server - Add pty-server.js (WebSocket + node-pty, max 3 sessions, 2hr cleanup) - Add custom server.js wrapping Next.js with WebSocket upgrade - Add ChatTab component with agent selector and terminal - Wire CHAT tab into dashboard nav and render - Configure serverExternalPackages for node-pty - Update Dockerfile with build tools and custom server - Bump k8s memory limit 1Gi → 2Gi for PTY sessions
This commit is contained in:
@@ -2,7 +2,7 @@ FROM node:20-alpine AS base
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
|
||||
FROM base AS deps
|
||||
RUN apk add --no-cache libc6-compat
|
||||
RUN apk add --no-cache libc6-compat python3 make gcc g++ linux-headers
|
||||
WORKDIR /app
|
||||
|
||||
# Copy workspace root config + relevant package.jsons for install
|
||||
@@ -40,7 +40,14 @@ RUN mkdir -p /data/harness && chown nextjs:nodejs /data/harness
|
||||
COPY --from=builder /app/apps/harness/public ./apps/harness/public
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/apps/harness/.next/standalone ./
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/apps/harness/.next/static ./apps/harness/.next/static
|
||||
|
||||
# PTY server dependencies + custom server
|
||||
COPY --from=builder /app/node_modules/.pnpm/node-pty*/node_modules/node-pty ./node_modules/node-pty
|
||||
COPY --from=builder /app/node_modules/.pnpm/ws*/node_modules/ws ./node_modules/ws
|
||||
COPY apps/harness/server.js ./server.js
|
||||
COPY apps/harness/pty-server.js ./pty-server.js
|
||||
|
||||
USER nextjs
|
||||
EXPOSE 3100
|
||||
ENV PORT=3100
|
||||
CMD ["node", "apps/harness/server.js"]
|
||||
CMD ["node", "server.js"]
|
||||
|
||||
Reference in New Issue
Block a user