4 Commits
Author SHA1 Message Date
tiennm99 d0fdcb4041 feat(keys): create minted OpenRouter keys in a configured workspace
Pass create-key workspace_id (from OPENROUTER_WORKSPACE_ID, defaulting to the
project workspace) so minted keys land in the intended workspace instead of the
management key's default. Rename key to non-PII llmapikey/gh-<id>.

- buildCreateKeyBody emits workspace_id only when set (omission keeps default).
- createKey threads workspaceId; mintAndPersist sources it from env.
- Test asserts workspace_id presence/omission; document the new env var.
2026-06-14 12:40:03 +07:00
tiennm99 a3ab7cde9e chore(config): align env var names and enable Vercel deploys
- Rename DATABASE_URL -> POSTGRES_URL and OPENROUTER_PROVISIONING_KEY ->
  OPENROUTER_MANAGEMENT_KEY to match the documented setup.
- Inline repo URL and model constants (drop NEXT_PUBLIC_ indirection).
- vercel.json: framework nextjs; enable git deployments.
2026-06-14 12:19:58 +07:00
tiennm99 e03c606ea9 docs: clarify intent of stale-pending windows, ceiling-check, and error JSDoc
- note generate-key 2-min reclaim vs reconcile 10-min report split
- comment intentional >=/> asymmetry in the kill-switch re-check
- document getCurrentGithubIdentity throw path and ProvisioningError status
2026-06-13 19:20:41 +07:00
tiennm99 02fa52ccf9 feat: scaffold OpenRouter key giveaway site (gated, code-only)
- Next.js 15 App Router (JS+JSDoc): landing, auth-gated dashboard, docs
- GitHub OAuth via Supabase; identity anchored on numeric provider_id
- key provisioning: reserve-then-mint-persist-compensate, one key per account
- api_keys in unexposed llmapikey schema via direct Postgres; RLS deny-all
- live minting gated behind PROVISIONING_ENABLED; Vercel auto-deploy disabled
- unit tests (mask, request-body), RLS deny-all test, reconcile script
2026-06-13 14:18:52 +07:00