You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
AI: status, gating and quota plumbing (:feature:ai scaffold) #4
Part of #3 — AI Writing Assistance is entirely missing from the Android app
Foundation for every other AI sub-issue.
New self-contained :feature:ai module (own Retrofit AiApi built from the shared authed Retrofit, own DTOs) matching the per-feature module convention used elsewhere in this repo.
GET /api/ai/status → an AiAvailability domain model: provider configured? subscriber?
remaining daily quota?
A single AiGate observable the feature UIs consume, so composer/list/document surfaces can
hide their AI affordances entirely when AI is unavailable (unconfigured provider or free
account) rather than showing a control that errors.
Central mapping for the quota-exhausted response to a user-readable "daily AI limit reached"
state.
Capture the real /api/ai/status body before writing the DTOs — see the repo's API-envelope
conventions (data wrapping, explicit nulls, coerceInputValues = true).
Tests: MockWebServer for status parse (configured / unconfigured / non-subscriber);
ViewModel test that the gate flips the UI off.
Filed from the parity review of feature/parity-wip @ 14d7795 against interlinedlist.com (OpenAPI /api/openapi.json, 233 paths) and the public help centre.
Implemented in #92 (branch issue/4-ai-scaffold). Closing here — review and any follow-up happens on the PR.
Two things worth recording against the epic:
The question in this issue is answered: /api/ai/status does expose quota. Confirmed live with a subscriber token: { subscriber, providers:["anthropic"], defaultModels{anthropic,openai,gemini}, quota:{ usedToday, dailyLimit: 50, remaining } }.
There is a human-written API reference the parity analysis missed:https://interlinedlist.com/help/api/ai-integration documents the full request/response shapes, error codes and limits for all three AI endpoints — everything the auto-generated OpenAPI spec omits (it types them as a bare object). Sibling issues #5–#9 should start there rather than from the spec.
Activity
Adron commentedon Sep 16, 2026
Implemented in #92 (branch
issue/4-ai-scaffold). Closing here — review and any follow-up happens on the PR.Two things worth recording against the epic:
The question in this issue is answered:
/api/ai/statusdoes expose quota. Confirmed live with a subscriber token:{ subscriber, providers:["anthropic"], defaultModels{anthropic,openai,gemini}, quota:{ usedToday, dailyLimit: 50, remaining } }.There is a human-written API reference the parity analysis missed:
https://interlinedlist.com/help/api/ai-integrationdocuments the full request/response shapes, errorcodes and limits for all three AI endpoints — everything the auto-generated OpenAPI spec omits (it types them as a bareobject). Sibling issues #5–#9 should start there rather than from the spec.merge: #4 :feature:ai scaffold (PR #92)