Implements the complete AI flow builder feature using a guided 4-stage wizard (Foundation → Scaffold → Branch Detail → Review & Assemble). AI assists at bounded points using Claude Haiku for cost-efficient structured JSON generation (~$0.01-0.03/flow). Backend: new models (ai_conversations, ai_usage), Alembic migration, quota enforcement with billing anchor, Anthropic API integration with prompt caching, tree validation, conversation CRUD with 24h TTL, APScheduler cleanup job, 5 API endpoints, Pydantic schemas. Frontend: TypeScript types, API client, Zustand store for wizard state, 7 components (modal, step indicator, foundation form, branch selector, branch detail view, tree preview, quota display), MyTreesPage integration with "Build with AI" button (hidden when AI not configured). Tests: 14 validator unit tests + 11 endpoint integration tests with mocked Anthropic (zero real API spend). All 25 tests passing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 lines
991 B
TypeScript
20 lines
991 B
TypeScript
export { default as apiClient } from './client'
|
|
export { default as authApi } from './auth'
|
|
export { default as treesApi } from './trees'
|
|
export { default as sessionsApi } from './sessions'
|
|
export { default as inviteApi } from './invite'
|
|
export { default as tagsApi } from './tags'
|
|
export { default as categoriesApi } from './categories'
|
|
export { default as foldersApi } from './folders'
|
|
export { default as stepsApi } from './steps'
|
|
export { default as stepCategoriesApi } from './stepCategories'
|
|
export { default as accountsApi } from './accounts'
|
|
export { default as adminApi } from './admin'
|
|
export { treeMarkdownApi } from './treeMarkdown'
|
|
export { default as pinnedFlowsApi } from './pinnedFlows'
|
|
export { default as analyticsApi } from './analytics'
|
|
export { targetListsApi } from './targetLists'
|
|
export { maintenanceSchedulesApi, batchLaunchApi } from './maintenanceSchedules'
|
|
export { default as feedbackApi } from './feedback'
|
|
export { default as aiBuilderApi } from './aiBuilder'
|