添加完整的Outlook MCP集成,包括邮件和日历功能,通过AuthZ模式进行认证和权限管理, 支持邮箱连接、断开、状态检查和数据同步等功能。 fix(config): 统一配置文件路径从.nanobot到.beaver 将配置文件路径从/root/.nanobot统一更改为/root/.beaver,更新Dockerfile中的环境变量定义, 确保所有组件使用一致的配置目录结构。 feat(agent): 添加代理删除功能和助手身份提示 为代理注册表添加delete_agent方法,实现代理的动态删除功能;同时添加海狸助手身份提示, 确保AI助手在交互中保持一致的身份认知。 feat(engine): 增强引擎循环并添加意图决策快照 扩展AgentLoop类,添加intent_agent_decision参数用于意图驱动的代理决策,并在会话中记录 决策快照,便于后续分析和调试。 feat(authz): 扩展认证客户端功能 为AuthzClient添加设置权限、用户注册、后端注册和Outlook设置管理等新方法,增强系统 的认证和授权能力。
88 lines
3.0 KiB
Docker
88 lines
3.0 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
|
|
FROM node:20-bookworm-slim AS frontend-builder
|
|
|
|
WORKDIR /build/frontend
|
|
ENV CI=1 NEXT_TELEMETRY_DISABLED=1
|
|
|
|
ARG NPM_REGISTRY="https://registry.npmmirror.com"
|
|
ARG NPM_FETCH_RETRIES="5"
|
|
ARG NPM_FETCH_RETRY_MIN_TIMEOUT="20000"
|
|
ARG NPM_FETCH_RETRY_MAX_TIMEOUT="120000"
|
|
|
|
COPY frontend/package.json frontend/package-lock.json* ./
|
|
RUN --mount=type=cache,target=/root/.npm \
|
|
npm config set registry "${NPM_REGISTRY}" && \
|
|
npm config set fetch-retries "${NPM_FETCH_RETRIES}" && \
|
|
npm config set fetch-retry-mintimeout "${NPM_FETCH_RETRY_MIN_TIMEOUT}" && \
|
|
npm config set fetch-retry-maxtimeout "${NPM_FETCH_RETRY_MAX_TIMEOUT}" && \
|
|
npm ci
|
|
|
|
COPY frontend/ ./
|
|
|
|
ARG NEXT_PUBLIC_AUTH_PORTAL_URL=""
|
|
ARG NEXT_PUBLIC_AUTH_PORTAL_PORT="3081"
|
|
|
|
ENV NEXT_PUBLIC_AUTH_PORTAL_URL=${NEXT_PUBLIC_AUTH_PORTAL_URL}
|
|
ENV NEXT_PUBLIC_AUTH_PORTAL_PORT=${NEXT_PUBLIC_AUTH_PORTAL_PORT}
|
|
|
|
# API / WS 走同域反代,不在构建时写死实例地址。
|
|
RUN npm run build
|
|
|
|
|
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS runtime
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
APP_PUBLIC_PORT=8080 \
|
|
APP_FRONTEND_PORT=3000 \
|
|
APP_BACKEND_PORT=18080 \
|
|
BEAVER_HOME=/root/.beaver \
|
|
BEAVER_CONFIG_PATH=/root/.beaver/config.json \
|
|
BEAVER_WORKSPACE=/root/.beaver/workspace \
|
|
BEAVER_AUTH_FILE=/root/.beaver/web_auth_users.json \
|
|
PORT=3000 \
|
|
HOSTNAME=127.0.0.1
|
|
|
|
ARG NPM_REGISTRY="https://registry.npmmirror.com"
|
|
ARG NPM_FETCH_RETRIES="5"
|
|
ARG NPM_FETCH_RETRY_MIN_TIMEOUT="20000"
|
|
ARG NPM_FETCH_RETRY_MAX_TIMEOUT="120000"
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends curl ca-certificates gnupg git nginx dumb-init && \
|
|
mkdir -p /etc/apt/keyrings && \
|
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" > /etc/apt/sources.list.d/nodesource.list && \
|
|
apt-get update && \
|
|
apt-get install -y --no-install-recommends nodejs && \
|
|
apt-get purge -y gnupg && \
|
|
apt-get autoremove -y && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /opt/app/backend
|
|
|
|
COPY backend/pyproject.toml backend/README.md ./
|
|
COPY backend/beaver/ ./beaver/
|
|
RUN uv pip install --system --no-cache .
|
|
|
|
WORKDIR /opt/app/frontend
|
|
COPY --from=frontend-builder /build/frontend/next.config.js ./
|
|
COPY --from=frontend-builder /build/frontend/public ./public
|
|
COPY --from=frontend-builder /build/frontend/package.json ./package.json
|
|
COPY --from=frontend-builder /build/frontend/.next/standalone ./
|
|
COPY --from=frontend-builder /build/frontend/.next/static ./.next/static
|
|
|
|
WORKDIR /opt/app
|
|
COPY nginx.conf /opt/app/nginx.conf
|
|
COPY entrypoint.sh /opt/app/entrypoint.sh
|
|
|
|
RUN chmod +x /opt/app/entrypoint.sh && \
|
|
mkdir -p /var/lib/nginx/body /root/.beaver/workspace
|
|
|
|
EXPOSE 8080
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=5 \
|
|
CMD curl -fsS "http://127.0.0.1:${APP_PUBLIC_PORT}/api/ping" >/dev/null || exit 1
|
|
|
|
ENTRYPOINT ["dumb-init", "--", "/opt/app/entrypoint.sh"]
|