Skip to content

Epic: AI Writing Assistance & Generation (entire pillar missing) #8

Description

@Adron

Summary

interlinedlist.com ships a full AI Writing Assistance pillar (help: /help/ai-writing-assistance, API: /help/api/ai-integration). The Windows app implements none of it — there is no InterlinedApiClient.Ai.cs, no AI models, and no AI affordance in any view.

This is the single largest feature-parity gap, and it is fully unblocked: three endpoints, complete public documentation, and bearer-token auth.

Live verification (2026-09-15, test account)

GET /api/ai/status  ->  200
{"subscriber":true,"providers":["anthropic"],
 "defaultModels":{"anthropic":"claude-sonnet-5", ...},
 "quota":{"usedToday":0,"dailyLimit":50,"remaining":50}}

Bearer sync-token is accepted on all three AI routes. No per-user provider key exists any more (removed 2026-09-05) — access is gated on an active subscription alone.

The API contract

Method Path Notes
POST /api/ai/suggest Runs a feature, returns a validated preview artifact. Writes nothing. Subscriber only.
POST /api/ai/generate Persists a confirmed artifact from /suggest. Subscriber only.
GET /api/ai/status Providers configured, caller's subscriber flag, daily quota. Any authenticated user.

Five feature values: powered_template, powered_document, message_series, article_series, writing_assist.

Two-step flow is mandatory: /suggest → show preview → user confirms → /generate. Both steps count against the 50/day quota.

Scope of this epic

The sub-issues cover the service layer, quota/gating UX, and each of the five features as a distinct user-facing surface.

Out of scope

Nothing — every part of this pillar is documented and bearer-reachable.

Repo conventions to follow

  • Service: one partial class InterlinedApiClient file per domain in InterlinedList/Services/.
  • Wire types in InterlinedList/Models/ matching real API JSON.
  • ViewModel per view in InterlinedList/ViewModels/ (CommunityToolkit.Mvvm ObservableObject + [RelayCommand]).
  • View is a self-contained UserControl in InterlinedList/Views/ that news up its own VM from AppServices.Session.
  • Strata tokens only — no colors/fonts/radii outside Resources/Palette.xaml + Theme.*.xaml.
  • Read-after-write for any mutating endpoint whose response envelope has not been live-verified.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Must have for a credible parity claimarea:aiArea: aiepicFeature-area parent issue with sub-issuesparityWeb/API feature-parity work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions