Initial commit: SIC harness (backend, web, pi-adapter, configs, docs)

- pnpm monorepo: apps/api (Fastify + SQLite + SSE), apps/web (React+Vite), packages/shared, packages/pi-adapter
- Local auth (admin/webhook-runner roles) + Keycloak JWT ready
- Multi-session chat with reliable history (user persisted before LLM, assistant persisted after stream)
- Markdown knowledge base with /api/docs/search + /api/docs/:id
- YAML webhook catalog with backend-only execution, retry/backoff, audit (webhook_runs), and per-user rate limit
- Skills config (sre-on-call, blameless-postmortem, security-incident) injected into LLM system prompt
- LLM provider failover chain (config/models.yml fallback + LLM_FALLBACK_CHAIN override)
- Context-aware webhooks panel + backend id-mention safety net
- Per-message stats (time/duration/tokens/model), Markdown+GFM render, code & table copy/download buttons
- Vitest suite, end-to-end smoke test (scripts/smoke.mjs), per-session system prompt override
- /metrics Prometheus endpoint + /api/metrics JSON, request-id correlation
- dotenv with explicit repo-root path; envString/envNumber helpers (handles empty-string env)
- Runbooks + SOPs under knowledge/ in English; README, docs, and INDEX.md in English
This commit is contained in:
2026-06-29 16:20:53 +02:00
commit 62728b2200
89 changed files with 11992 additions and 0 deletions

27
deploy/docker-compose.yml Normal file
View File

@@ -0,0 +1,27 @@
services:
api:
build:
context: ..
dockerfile: deploy/docker/api.Dockerfile
ports:
- "8787:8787"
volumes:
- ../data:/app/data
- ../config:/app/config
- ../knowledge:/app/knowledge
environment:
AUTH_MODE: local
DATABASE_URL: sqlite:///app/data/pi-chat.db
API_PORT: 8787
LLM_BASE_URL: https://api.minimax.io/v1
LLM_API_KEY: ${MINIMAX_API_KEY:?set MINIMAX_API_KEY}
DEFAULT_MODEL: fast
web:
build:
context: ..
dockerfile: deploy/docker/web.Dockerfile
ports:
- "3000:3000"
depends_on:
- api

View File

@@ -0,0 +1,9 @@
FROM node:22-alpine
WORKDIR /app
COPY package.json pnpm-workspace.yaml tsconfig.base.json ./
COPY apps/api ./apps/api
COPY packages ./packages
RUN corepack enable && pnpm install --frozen-lockfile=false
WORKDIR /app/apps/api
EXPOSE 8787
CMD ["pnpm", "dev"]

View File

@@ -0,0 +1,9 @@
FROM node:22-alpine
WORKDIR /app
COPY package.json pnpm-workspace.yaml tsconfig.base.json ./
COPY apps/web ./apps/web
COPY packages ./packages
RUN corepack enable && pnpm install --frozen-lockfile=false
WORKDIR /app/apps/web
EXPOSE 3000
CMD ["pnpm", "dev"]