diff --git a/AGENTS.md b/AGENTS.md index 19b4539..7014986 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,7 +11,7 @@ Operator-side, credit-metered service that sits in front of Gemini and the opera - **HTTP**: `express` + `multer` (audio upload). Admin routes under `/admin/*` behind an admin-session-cookie gate. `/relay/*` uses per-call header auth — install-id/license, or operator-key + user-id for the cloud control plane (a few routes like `health`/`policy`/`capabilities` are public). See the Auth model under Endpoints. `cors()` is scoped to `/relay/*` only. - **Dashboard**: `public/dashboard.html` — single-file vanilla JS, render-string-into-innerHTML, same shape as the app's `index.html`. - **Packaging**: `@start9labs/start-sdk` under `startos/` — version graph at `startos/versions/index.ts`. -- **Storage**: filesystem under the StartOS data dir (`/data`). Internal meetings persist as `/data/internal-meetings/.json`. No SQLite here. +- **Storage**: filesystem under the StartOS data dir (`/data`). No SQLite — flat JSON files: credit ledger `/data/credits.json`, payment-webhook dedup `/data/processed-webhooks.json`, internal meetings `/data/internal-meetings/.json`. - **Upstreams**: Gemini (`@google/genai`); operator hardware via "Spark Control" HTTP (Parakeet transcribe, `/api/audio/diarize-chunk` for Sortformer+TitaNet, a vLLM/Gemma OpenAI-shape analyze endpoint). ## Commands @@ -47,8 +47,10 @@ server/ config.js getConfigSnapshot() + relay_* config defaults hardware-config.js resolveHardwareConfig() → Spark Control endpoint discovery safe-url.js SSRF guard: assertPublicHttpUrl + safeFetch for caller-supplied URLs + webhook-dedup.js persistent payment-webhook dedup (BTCPay + Zaprite share it); + initWebhookDedup/isWebhookProcessed/markWebhookProcessed test/ node --test *.test.js (speaker tools, billing/credits, SSRF, path-traversal, …) -public/dashboard.html operator dashboard (meetings detail view + speaker tools) +public/dashboard.html operator dashboard (Overview / Jobs / Users / Internal Meetings / Settings) startos/versions/.ts one file per version + index.ts graph docs/issues-backlog.md detailed issue log docs/guides/internal-meetings.md diarization / speaker subsystem guide (path-scoped; lazy-loads via .claude/rules/)