Files
infiplot-web/drizzle/meta/0000_snapshot.json
T
Zonghao Yuan 0e4c2ebef4 feat(engine): merge cloudflare-migration — paradigm D engine, BYOK proxy, story persistence (#95)
Squash-merge the cloudflare-migration branch (7 commits by Kai ki) into
staging with conflict resolution, feature integration, and bug fixes.

Engine:
- Paradigm D: single-stream Writer replacing dual-phase Plan/Beats
- Delete Architect agent; story bible generated via Writer <plan> tag
- Modular prompt architecture (segments/registry/builder)
- StreamRouter for tagged stream splitting (<plan>/<story>/<choices>)

Infrastructure:
- Cloudflare Workers deployment (wrangler.jsonc, OpenNext adapter)
- D1 database schema + Drizzle ORM (scaffolded, not yet active)
- R2 storage helpers (scaffolded, not yet active)
- Story persistence API routes + client-side persistence

BYOK (Bring Your Own Key):
- /api/llm/user-proxy with SSRF-protected LLM proxy (+ requireUser auth)
- CORS-aware fetch in ai-client: auto-detect CORS failure, fallback to
  server proxy transparently via OpenAI SDK custom fetch
- BYO config support added to classify-freeform and vision routes
- SettingsModal CORS privacy notice (keys never logged/stored)

SSE streaming:
- engineClient.ts: fetchSSE helper for progressive scene events
- startSession/requestScene accept optional emit callback
- Fix SSE error event field name (error → message) in scene/start routes

i18n integration:
- Wire buildLanguageDirective into paradigm D's prompt builder
- Update corsNotice i18n keys (zh-CN/en/ja) with CORS proxy privacy text
- Preserve Session.language + LanguageSwitcher from i18n commit

Co-authored-by: Kai ki <155355644+zbf1009@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-18 18:05:38 +08:00

431 lines
11 KiB
JSON

{
"version": "6",
"dialect": "sqlite",
"id": "f3a8998c-2717-4d46-b447-4fa3c382f2b2",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"characters": {
"name": "characters",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"story_id": {
"name": "story_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"visual_description": {
"name": "visual_description",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"voice_description": {
"name": "voice_description",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"base_portrait_key": {
"name": "base_portrait_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"base_portrait_url": {
"name": "base_portrait_url",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"base_portrait_uuid": {
"name": "base_portrait_uuid",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"voice_json": {
"name": "voice_json",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(unixepoch())"
}
},
"indexes": {
"characters_story_name_idx": {
"name": "characters_story_name_idx",
"columns": [
"story_id",
"name"
],
"isUnique": true
}
},
"foreignKeys": {
"characters_story_id_stories_id_fk": {
"name": "characters_story_id_stories_id_fk",
"tableFrom": "characters",
"tableTo": "stories",
"columnsFrom": [
"story_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"featured_stories": {
"name": "featured_stories",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"gender": {
"name": "gender",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"outline": {
"name": "outline",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"style": {
"name": "style",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"tags": {
"name": "tags",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"cover_path": {
"name": "cover_path",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"firstact_path": {
"name": "firstact_path",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"firstscene_path": {
"name": "firstscene_path",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"sort_order": {
"name": "sort_order",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"is_active": {
"name": "is_active",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 1
},
"click_count": {
"name": "click_count",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(unixepoch())"
}
},
"indexes": {
"featured_gender_active_idx": {
"name": "featured_gender_active_idx",
"columns": [
"gender",
"is_active"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"scenes": {
"name": "scenes",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"story_id": {
"name": "story_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"scene_key": {
"name": "scene_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"scene_summary": {
"name": "scene_summary",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"scene_image_key": {
"name": "scene_image_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"scene_image_url": {
"name": "scene_image_url",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"beats_json": {
"name": "beats_json",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"sort_order": {
"name": "sort_order",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(unixepoch())"
}
},
"indexes": {
"scenes_story_id_idx": {
"name": "scenes_story_id_idx",
"columns": [
"story_id"
],
"isUnique": false
}
},
"foreignKeys": {
"scenes_story_id_stories_id_fk": {
"name": "scenes_story_id_stories_id_fk",
"tableFrom": "scenes",
"tableTo": "stories",
"columnsFrom": [
"story_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"stories": {
"name": "stories",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"world_setting": {
"name": "world_setting",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"style_guide": {
"name": "style_guide",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"style_reference_image_key": {
"name": "style_reference_image_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"orientation": {
"name": "orientation",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'landscape'"
},
"story_state_json": {
"name": "story_state_json",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"status": {
"name": "status",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'active'"
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(unixepoch())"
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(unixepoch())"
}
},
"indexes": {
"stories_user_id_idx": {
"name": "stories_user_id_idx",
"columns": [
"user_id"
],
"isUnique": false
},
"stories_created_at_idx": {
"name": "stories_created_at_idx",
"columns": [
"created_at"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}