Files
porthole/opencode.jsonc
OpenCode Test e1a64aa092 Initial commit
2025-12-24 10:50:10 -08:00

112 lines
4.6 KiB
JSON

{
"$schema": "https://opencode.ai/config.json",
"agent": {
"orchestrator": {
"description": "Backlog coordination, contracts, and acceptance criteria",
"mode": "primary",
"model": "github-copilot/gpt-5.2",
"temperature": 0.2,
"prompt": "You are the orchestrator for this repo. Keep PLAN.md as the source of truth. Align DB/API/worker/UI contracts, surface inconsistencies, and produce concise checklists and decisions. Prefer minimal MVP scope. Enforce: never delete/mutate originals/ and presigned URLs must target MINIO_PUBLIC_ENDPOINT_TS with path-style URLs.",
"tools": {
"edit": false,
"write": false
},
"permission": {
"edit": "deny",
"bash": {
"git status": "allow",
"git diff*": "allow",
"git log*": "allow",
"*": "ask"
},
"webfetch": "allow"
}
},
"backend-api": {
"description": "Next.js API routes, DB schema/migrations, MinIO presigned URL logic",
"mode": "primary",
"model": "github-copilot/claude-sonnet-4.5",
"temperature": 0.3,
"prompt": "You implement backend/API work for the timeline media library per PLAN.md. Be strict about request validation (zod), implement correct presigned URL behavior (path-style, MINIO_PUBLIC_ENDPOINT_TS), and respect the external originals policy (never delete/mutate originals/). Prefer small, reviewable changes.",
"tools": {
"bash": true,
"read": true,
"grep": true,
"glob": true,
"list": true,
"edit": true,
"write": true
}
},
"worker-media": {
"description": "BullMQ worker, ExifTool/ffprobe/ffmpeg integration, thumbs/posters",
"mode": "primary",
"model": "github-copilot/claude-sonnet-4.5",
"temperature": 0.3,
"prompt": "You implement the worker/media pipeline per PLAN.md: scan_minio_prefix, process_asset, copy_to_canonical. Be robust: never crash the worker loop; update assets.status=failed and error_message on failures. Keep concurrency low (Pi-friendly). Never delete/mutate originals/; canonical copy is copy-only.",
"tools": {
"bash": true,
"read": true,
"grep": true,
"glob": true,
"list": true,
"edit": true,
"write": true
}
},
"frontend-ui": {
"description": "Timeline tree rendering, responsive layout, virtualization, styling",
"mode": "primary",
"model": "github-copilot/gpt-5.2",
"temperature": 0.4,
"prompt": "You implement the frontend UI per PLAN.md using Next.js App Router. Build the interactive timeline tree (orientation toggle, zoom/pan, expand/collapse), mobile-friendly layout (bottom sheet), virtualized thumbnails, and viewer modal. The UI must never crash on failed assets; render placeholders.",
"tools": {
"bash": true,
"read": true,
"grep": true,
"glob": true,
"list": true,
"edit": true,
"write": true
}
},
"k8s-infra": {
"description": "Helm/Kustomize, node affinity, MinIO/Postgres/Redis manifests, Tailscale ingress",
"mode": "primary",
"model": "github-copilot/claude-sonnet-4.5",
"temperature": 0.3,
"prompt": "You implement Pi-aware Kubernetes deployment artifacts per PLAN.md. Pin heavy pods to Pi 5 nodes via affinity/labels, provision Longhorn PVCs for Postgres/MinIO, and configure Tailscale ingress for app/minio/console. Ensure video Range requests work. Never include secrets; use placeholders and document required env vars.",
"tools": {
"bash": true,
"read": true,
"grep": true,
"glob": true,
"list": true,
"edit": true,
"write": true
}
},
"qa-review": {
"description": "Test plan, edge cases, security review, performance checks",
"mode": "primary",
"model": "github-copilot/claude-haiku-4.5",
"temperature": 0.2,
"prompt": "You perform targeted QA review per PLAN.md. Focus on edge cases (missing EXIF, timezones, corrupt files, unsupported codecs) and resilience (UI never crashes). Check presigned URLs are HTTPS and use MINIO_PUBLIC_ENDPOINT_TS; confirm Range video playback through ingress. Suggest minimal tests if a harness exists.",
"tools": {
"edit": false,
"write": false
},
"permission": {
"edit": "deny",
"bash": {
"git status": "allow",
"git diff*": "allow",
"git log*": "allow",
"*": "ask"
},
"webfetch": "deny"
}
}
}
}