a81a450e7e
Merged into tinqs/studio: - cmd/tinqs-cli/ — tinqs-cli (Go binary, from bot/cli) - cmd/tea/ — Gitea CLI tool (from tinqs/cli-tea) - services/bot/ — Bot service (from tinqs-ltd/bot on git.arikigame.com) - services/admin/ — Admin panel (from tinqs/admin) - services/team-tool/ — Team Tool (from tinqs/team-tool) - services/proxy/ — tinqs-proxy (from bot/proxy) - web/landing/ — tinqs.com website (from tinqs/website) - web/docs/ — Platform docs (from tinqs/docs) - web/blog/ — Blog (placeholder) - runner/ — Ephemeral CI runner (from tinqs/runner) All source repos will be deleted after verification.
2.5 KiB
2.5 KiB
Taco Bot — Runbook
Operational reference for running, testing, and deploying taco-bot.
Environment matrix
| Variable | Required | Where to get it | Default |
|---|---|---|---|
TACO_API_SECRET |
Yes | Generate: openssl rand -hex 32 |
— |
ANTHROPIC_API_KEY |
Yes | Anthropic Console | — |
ANTHROPIC_MODEL |
No | — | claude-sonnet-4-20250514 |
GITHUB_TOKEN |
Yes | gh auth token or PAT with repo scope |
— |
GITHUB_DOCS_REPO |
No | — | tinqs-ltd/docs |
KV_REST_API_URL |
Prod | Vercel → Integrations → Upstash Redis | in-memory fallback |
KV_REST_API_TOKEN |
Prod | Same integration | in-memory fallback |
CRON_SECRET |
Recommended | Generate: openssl rand -hex 16 |
— |
Local development
npm ci
cp .env.local.example .env.local # fill in values
npm run dev # http://localhost:3000 (dev default)
Docker (prod-like)
docker compose up --build # http://localhost:5500 (mapped from internal :3000)
Smoke tests (parity checklist)
Run these against any environment to confirm the service is healthy.
BASE=http://localhost:5500 # Docker/prod. Use :3000 for npm run dev
# 1. Homepage
curl -sI "$BASE/" | head -1
# Expect: HTTP/... 200
# 2. Status endpoint (no auth needed)
curl -s "$BASE/api/meeting/status" | python3 -m json.tool
# Expect: JSON with captionSelectors, voiceTriggers, version
# 3. Transcript (auth required)
curl -s -X POST "$BASE/api/meeting/transcript" \
-H "Content-Type: application/json" \
-H "x-taco-key: $TACO_API_SECRET" \
-d '{"meetingId":"test-1","captions":[{"text":"hello world","timestamp":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}]}'
# Expect: {"ok":true,"count":1}
# 4. Ask (auth required, needs ANTHROPIC_API_KEY)
curl -s -X POST "$BASE/api/meeting/ask" \
-H "Content-Type: application/json" \
-H "x-taco-key: $TACO_API_SECRET" \
-d '{"meetingId":"test-1","question":"what was just said?","source":"chat"}'
# Expect: {"answer":"..."} (Claude response based on transcript)
# 5. Calendar (placeholder)
curl -s "$BASE/api/meeting/calendar"
# Expect: {"ok":true,"message":"Set GOOGLE_CALENDAR_* env vars...","scheduled":"..."}
Deploy targets
| Target | Status | How |
|---|---|---|
| Vercel | Live | Push to main → auto-deploy via GitHub integration |
| Docker | Ready | docker compose up --build or docker build -t taco-bot . |
| AWS App Runner | Planned | ECR image → App Runner service (see CI workflow) |