diff --git a/.codex/tmp-schema.json b/.codex/tmp-schema.json new file mode 100644 index 00000000..abadebbf --- /dev/null +++ b/.codex/tmp-schema.json @@ -0,0 +1,35281 @@ +{ + "typespace": { + "types": [ + { + "Product": { + "elements": [ + { + "name": { + "some": "quest_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "issuer_npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "issuer_npc_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "act_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "thread_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "contract_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "description" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 1 + } + }, + { + "name": { + "some": "completion_notified" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "reward" + }, + "algebraic_type": { + "Ref": 2 + } + }, + { + "name": { + "some": "reward_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "narrative_binding" + }, + "algebraic_type": { + "Ref": 7 + } + }, + { + "name": { + "some": "steps" + }, + "algebraic_type": { + "Array": { + "Ref": 10 + } + } + }, + { + "name": { + "some": "active_step_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "visible_stage" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "hidden_flags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "discovered_fact_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "related_carrier_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "consequence_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "active" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "readyToTurnIn" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "turnedIn" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "failed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "expired" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "affinity_bonus" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "currency" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "experience" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "items" + }, + "algebraic_type": { + "Array": { + "Ref": 3 + } + } + }, + { + "name": { + "some": "intel" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 6 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "story_hint" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "item_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "category" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "description" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "quantity" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "rarity" + }, + "algebraic_type": { + "Ref": 4 + } + }, + { + "name": { + "some": "tags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stackable" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "stack_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "equipment_slot_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 5 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "common" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "uncommon" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "rare" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "epic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "legendary" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "weapon" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "armor" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "relic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "rumor_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "unlocked_scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "origin" + }, + "algebraic_type": { + "Ref": 8 + } + }, + { + "name": { + "some": "narrative_type" + }, + "algebraic_type": { + "Ref": 9 + } + }, + { + "name": { + "some": "dramatic_need" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "issuer_goal" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "player_hook" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_reason" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "followup_hooks" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "aiCompiled" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "fallbackBuilder" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "bounty" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "escort" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "investigation" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "retrieval" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "relationship" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "trial" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "step_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 11 + } + }, + { + "name": { + "some": "target_hostile_npc_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_npc_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_item_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "required_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "progress" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "reveal_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "complete_text" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "defeatHostileNpc" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "inspectTreasure" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "sparWithNpc" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "talkToNpc" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "reachScene" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "deliverItem" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "quest_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "advanced_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "run_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "result_reference_row_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "result_ref_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "reference_kind" + }, + "algebraic_type": { + "Ref": 16 + } + }, + { + "name": { + "some": "reference_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "storySession" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "storyEvent" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "customWorldProfile" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "questRecord" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "runtimeItemRecord" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "assetObject" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_kind" + }, + "algebraic_type": { + "Ref": 18 + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "request_label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_module" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_entity_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "request_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 19 + } + }, + { + "name": { + "some": "failure_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "latest_text_output" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "latest_structured_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "started_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "completed_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "storyGeneration" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "characterChat" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "npcChat" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "customWorldGeneration" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "questIntent" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "runtimeItemIntent" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "pending" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "running" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "failed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "cancelled" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_stage_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "detail" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "stage_order" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 22 + } + }, + { + "name": { + "some": "text_output" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "structured_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "warning_messages" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "started_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "completed_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "preparePrompt" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "requestModel" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "repairResponse" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "normalizeResult" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "persistResult" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "pending" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "running" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "skipped" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "text_chunk_row_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chunk_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "sequence" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "delta_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "sequence" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "delta_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "task" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 26 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "text_chunk" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 29 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_kind" + }, + "algebraic_type": { + "Ref": 18 + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "request_label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_module" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_entity_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "request_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 19 + } + }, + { + "name": { + "some": "failure_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "stages" + }, + "algebraic_type": { + "Array": { + "Ref": 27 + } + } + }, + { + "name": { + "some": "result_references" + }, + "algebraic_type": { + "Array": { + "Ref": 28 + } + } + }, + { + "name": { + "some": "latest_text_output" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "latest_structured_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "started_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "completed_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "detail" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "order" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 22 + } + }, + { + "name": { + "some": "text_output" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "structured_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "warning_messages" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "started_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "completed_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "result_ref_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "reference_kind" + }, + "algebraic_type": { + "Ref": 16 + } + }, + { + "name": { + "some": "reference_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "chunk_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "sequence" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "delta_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "granted_quest_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "granted_hostile_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "hostile_defeat_increment" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "level_at_exit" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 32 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_index" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "total_chapters" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "entry_pseudo_level_millis" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "exit_pseudo_level_millis" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "entry_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "exit_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_total_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_quest_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_hostile_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "actual_quest_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "actual_hostile_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "expected_hostile_defeat_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "actual_hostile_defeat_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "level_at_entry" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "level_at_exit" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "pace_band" + }, + "algebraic_type": { + "Ref": 33 + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "openingFast" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "steady" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "pressure" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "finaleDense" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "mutation_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "mutation" + }, + "algebraic_type": { + "Ref": 35 + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "grantItem" + }, + "algebraic_type": { + "Ref": 36 + } + }, + { + "name": { + "some": "consumeItem" + }, + "algebraic_type": { + "Ref": 41 + } + }, + { + "name": { + "some": "equipItem" + }, + "algebraic_type": { + "Ref": 42 + } + }, + { + "name": { + "some": "unequipItem" + }, + "algebraic_type": { + "Ref": 43 + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "item" + }, + "algebraic_type": { + "Ref": 37 + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "item_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "category" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "description" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "quantity" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "rarity" + }, + "algebraic_type": { + "Ref": 38 + } + }, + { + "name": { + "some": "tags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stackable" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "stack_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "equipment_slot_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 39 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "source_kind" + }, + "algebraic_type": { + "Ref": 40 + } + }, + { + "name": { + "some": "source_reference_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "common" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "uncommon" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "rare" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "epic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "legendary" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "weapon" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "armor" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "relic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "storyReward" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "questReward" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "treasureReward" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "npcGift" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "npcTrade" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "combatDrop" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "forgeCraft" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "forgeReforge" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "manualPatch" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "quantity" + }, + "algebraic_type": { + "U32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "quest_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "signal" + }, + "algebraic_type": { + "Ref": 45 + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "hostileNpcDefeated" + }, + "algebraic_type": { + "Ref": 46 + } + }, + { + "name": { + "some": "treasureInspected" + }, + "algebraic_type": { + "Ref": 47 + } + }, + { + "name": { + "some": "npcSparCompleted" + }, + "algebraic_type": { + "Ref": 48 + } + }, + { + "name": { + "some": "npcTalkCompleted" + }, + "algebraic_type": { + "Ref": 49 + } + }, + { + "name": { + "some": "sceneReached" + }, + "algebraic_type": { + "Ref": 50 + } + }, + { + "name": { + "some": "itemDelivered" + }, + "algebraic_type": { + "Ref": 51 + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "hostile_npc_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "item_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "quantity" + }, + "algebraic_type": { + "U32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "binding_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_object_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entity_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entity_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "slot" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "asset_object_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "bucket" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "object_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "access_policy" + }, + "algebraic_type": { + "Ref": 54 + } + }, + { + "name": { + "some": "content_type" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "content_length" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "content_hash" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "source_job_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "entity_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "private" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "publicRead" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "reference_kind" + }, + "algebraic_type": { + "Ref": 16 + } + }, + { + "name": { + "some": "reference_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "identity_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "provider" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "provider_uid" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "provider_union_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "phone_e_164" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "display_name" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "avatar_url" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "snapshot_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "snapshot_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "battle_state_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "target_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "battle_mode" + }, + "algebraic_type": { + "Ref": 59 + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 60 + } + }, + { + "name": { + "some": "player_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "experience_reward" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_items" + }, + "algebraic_type": { + "Array": { + "Ref": 61 + } + } + }, + { + "name": { + "some": "turn_index" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "last_action_function_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_action_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_result_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_damage_dealt" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "last_damage_taken" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "last_outcome" + }, + "algebraic_type": { + "Ref": 64 + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "fight" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "spar" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "ongoing" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "resolved" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "aborted" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "item_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "category" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "item_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "description" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "quantity" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "rarity" + }, + "algebraic_type": { + "Ref": 62 + } + }, + { + "name": { + "some": "tags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stackable" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "stack_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "equipment_slot_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 63 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "common" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "uncommon" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "rare" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "epic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "legendary" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "weapon" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "armor" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "relic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "ongoing" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "victory" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "sparComplete" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "escaped" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "initial_prompt" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "opening_summary" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "session" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 67 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "event" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 69 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "initial_prompt" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "opening_summary" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "latest_narrative_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "latest_choice_function_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 68 + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "active" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "archived" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "event_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "event_kind" + }, + "algebraic_type": { + "Ref": 70 + } + }, + { + "name": { + "some": "narrative_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "choice_function_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "sessionStarted" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "storyContinued" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "role" + }, + "algebraic_type": { + "Ref": 72 + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 73 + } + }, + { + "name": { + "some": "text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "user" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "assistant" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "system" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "chat" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "actionResult" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "warning" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "Ref": 75 + } + }, + { + "name": { + "some": "level" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "motion_key" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 76 + } + }, + { + "name": { + "some": "asset_url" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "prompt_snapshot" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "levelMainImage" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "levelMotion" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "stageBackground" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "missing" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "ready" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_turn" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 78 + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "draft_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_coverage_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "last_assistant_reply" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "publish_ready" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "collectingAnchors" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "draftReady" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "assetRefining" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "readyToPublish" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "published" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 80 + } + }, + { + "name": { + "some": "snapshot_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "last_input_x" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "last_input_y" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "tick" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "running" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "won" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "failed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "binding_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_object_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entity_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entity_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "slot" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 83 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "binding_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_object_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entity_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entity_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "slot" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "completed_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "chapter_progression_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_index" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "total_chapters" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "entry_pseudo_level_millis" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "exit_pseudo_level_millis" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "entry_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "exit_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_total_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_quest_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_hostile_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "actual_quest_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "actual_hostile_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "expected_hostile_defeat_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "actual_hostile_defeat_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "level_at_entry" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "level_at_exit" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "pace_band" + }, + "algebraic_type": { + "Ref": 33 + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "entries" + }, + "algebraic_type": { + "Array": { + "Ref": 88 + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "browse_history_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 89 + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "visited_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "martial" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "arcane" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "machina" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "tide" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "rift" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "mythic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "compiled_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "session" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 92 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_turn" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 78 + } + }, + { + "name": { + "some": "anchor_pack" + }, + "algebraic_type": { + "Ref": 93 + } + }, + { + "name": { + "some": "draft" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 96 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_slots" + }, + "algebraic_type": { + "Array": { + "Ref": 100 + } + } + }, + { + "name": { + "some": "asset_coverage" + }, + "algebraic_type": { + "Ref": 101 + } + }, + { + "name": { + "some": "messages" + }, + "algebraic_type": { + "Array": { + "Ref": 102 + } + } + }, + { + "name": { + "some": "last_assistant_reply" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "publish_ready" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "gameplay_promise" + }, + "algebraic_type": { + "Ref": 94 + } + }, + { + "name": { + "some": "ecology_visual_theme" + }, + "algebraic_type": { + "Ref": 94 + } + }, + { + "name": { + "some": "growth_ladder" + }, + "algebraic_type": { + "Ref": 94 + } + }, + { + "name": { + "some": "risk_tempo" + }, + "algebraic_type": { + "Ref": 94 + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "value" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 95 + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "confirmed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "inferred" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "missing" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "locked" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "core_fun" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "ecology_theme" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "levels" + }, + "algebraic_type": { + "Array": { + "Ref": 97 + } + } + }, + { + "name": { + "some": "background" + }, + "algebraic_type": { + "Ref": 98 + } + }, + { + "name": { + "some": "runtime_params" + }, + "algebraic_type": { + "Ref": 99 + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "one_line_fantasy" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "silhouette_direction" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "size_ratio" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "visual_prompt_seed" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "motion_prompt_seed" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "merge_source_level" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "prey_window" + }, + "algebraic_type": { + "Array": { + "U32": [] + } + } + }, + { + "name": { + "some": "threat_window" + }, + "algebraic_type": { + "Array": { + "U32": [] + } + } + }, + { + "name": { + "some": "is_final_level" + }, + "algebraic_type": { + "Bool": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "theme" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "color_mood" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "foreground_hints" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "midground_composition" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "background_depth" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "safe_play_area_hint" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "spawn_edge_hint" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "background_prompt_seed" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "level_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "merge_count_per_upgrade" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "spawn_target_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "leader_move_speed" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "follower_catch_up_speed" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "offscreen_cull_seconds" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "prey_spawn_delta_levels" + }, + "algebraic_type": { + "Array": { + "U32": [] + } + } + }, + { + "name": { + "some": "threat_spawn_delta_levels" + }, + "algebraic_type": { + "Array": { + "U32": [] + } + } + }, + { + "name": { + "some": "win_level" + }, + "algebraic_type": { + "U32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "Ref": 75 + } + }, + { + "name": { + "some": "level" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "motion_key" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 76 + } + }, + { + "name": { + "some": "asset_url" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "prompt_snapshot" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "level_main_image_ready_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "level_motion_ready_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "background_ready" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "required_level_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "publish_ready" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "blockers" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "role" + }, + "algebraic_type": { + "Ref": 72 + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 73 + } + }, + { + "name": { + "some": "text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "draft_profile_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "legacy_result_profile_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "setting_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 105 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 106 + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "playable_npc_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "landmark_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "compiled_profile_payload_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "martial" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "arcane" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "machina" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "tide" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "rift" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "mythic" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "compiled_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "session_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "text_output" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "structured_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "warning_messages" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "completed_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "completed_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "asset_object_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "bucket" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "object_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "access_policy" + }, + "algebraic_type": { + "Ref": 54 + } + }, + { + "name": { + "some": "content_type" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "content_length" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "content_hash" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "source_job_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "entity_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 113 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "asset_object_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "bucket" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "object_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "access_policy" + }, + "algebraic_type": { + "Ref": 54 + } + }, + { + "name": { + "some": "content_type" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "content_length" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "content_hash" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "source_job_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "entity_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "event_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "narrative_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "choice_function_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "task_kind" + }, + "algebraic_type": { + "Ref": 18 + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "request_label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_module" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_entity_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "request_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "stages" + }, + "algebraic_type": { + "Array": { + "Ref": 116 + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "detail" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "order" + }, + "algebraic_type": { + "U32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "battle_state_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "target_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "battle_mode" + }, + "algebraic_type": { + "Ref": 59 + } + }, + { + "name": { + "some": "player_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "experience_reward" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_items" + }, + "algebraic_type": { + "Array": { + "Ref": 61 + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "snapshot" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 119 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "battle_state_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "target_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "battle_mode" + }, + "algebraic_type": { + "Ref": 59 + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 60 + } + }, + { + "name": { + "some": "player_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "experience_reward" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_items" + }, + "algebraic_type": { + "Array": { + "Ref": 61 + } + } + }, + { + "name": { + "some": "turn_index" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "last_action_function_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_action_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_result_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_damage_dealt" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "last_damage_taken" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "last_outcome" + }, + "algebraic_type": { + "Ref": 64 + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "welcome_message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "welcome_message_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "welcome_message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "welcome_message_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "anchor_content_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "creator_intent_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "creator_intent_readiness_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "lock_state_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "draft_profile_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "pending_clarifications_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "suggested_actions_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "recommended_replies_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "quality_findings_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_coverage_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "checkpoints_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "session" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 123 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_turn" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 124 + } + }, + { + "name": { + "some": "focus_card_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "anchor_content_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "creator_intent_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "creator_intent_readiness_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "lock_state_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "draft_profile_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_assistant_reply" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "publish_gate_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "result_preview_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "pending_clarifications_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "quality_findings_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "suggested_actions_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "recommended_replies_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_coverage_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "checkpoints_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "supported_actions_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "messages" + }, + "algebraic_type": { + "Array": { + "Ref": 125 + } + } + }, + { + "name": { + "some": "draft_cards" + }, + "algebraic_type": { + "Array": { + "Ref": 128 + } + } + }, + { + "name": { + "some": "operations" + }, + "algebraic_type": { + "Array": { + "Ref": 132 + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "collectingIntent" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "clarifying" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "foundationReview" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "objectRefining" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "visualRefining" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "longTailReview" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "readyToPublish" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "published" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "error" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "role" + }, + "algebraic_type": { + "Ref": 126 + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 127 + } + }, + { + "name": { + "some": "text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "related_operation_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "user" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "assistant" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "system" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "chat" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "clarification" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "checkpoint" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "warning" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "actionResult" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "card_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 129 + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 130 + } + }, + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "linked_ids_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "warning_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "asset_status" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 131 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_status_label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "detail_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "world" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "camp" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "faction" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "character" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "landmark" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "thread" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "chapter" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "sceneChapter" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "carrier" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "sidequestSeed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "suggested" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "confirmed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "locked" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "warning" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "missing" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "visualReady" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "animationsReady" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "complete" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "operation_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_type" + }, + "algebraic_type": { + "Ref": 133 + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 134 + } + }, + { + "name": { + "some": "phase_label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "phase_detail" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "progress" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "processMessage" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "draftFoundation" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "updateDraftCard" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "syncResultProfile" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "generateCharacters" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "generateLandmarks" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "deleteCharacters" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "deleteLandmarks" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "generateRoleAssets" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "syncRoleAssets" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "generateSceneAssets" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "syncSceneAssets" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "expandLongTail" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "publishWorld" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "revertCheckpoint" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "queued" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "running" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "failed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "welcome_message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "welcome_message_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "role" + }, + "algebraic_type": { + "Ref": 126 + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 127 + } + }, + { + "name": { + "some": "text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "related_operation_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "operation_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_type" + }, + "algebraic_type": { + "Ref": 133 + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 134 + } + }, + { + "name": { + "some": "phase_label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "phase_detail" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "progress" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_turn" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 124 + } + }, + { + "name": { + "some": "focus_card_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "anchor_content_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "creator_intent_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "creator_intent_readiness_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "lock_state_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "draft_profile_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_assistant_reply" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "publish_gate_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "result_preview_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "pending_clarifications_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "quality_findings_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "suggested_actions_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "recommended_replies_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_coverage_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "checkpoints_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "card_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 129 + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 130 + } + }, + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "linked_ids_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "warning_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "asset_status" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 131 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_status_label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "detail_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_public_user_code" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 106 + } + }, + { + "name": { + "some": "playable_npc_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "landmark_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "published_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "author_public_user_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "source_agent_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "publication_status" + }, + "algebraic_type": { + "Ref": 142 + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 106 + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_payload_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "playable_npc_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "landmark_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "published_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "deleted_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "draft" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "published" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "generation_mode" + }, + "algebraic_type": { + "Ref": 144 + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 145 + } + }, + { + "name": { + "some": "setting_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "creator_intent_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "question_snapshot_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "result_payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "fast" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "full" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "clarifying" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "readyToGenerate" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "generating" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "generationError" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "items_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "deleted_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "entries" + }, + "algebraic_type": { + "Array": { + "Ref": 150 + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "author_public_user_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "source_agent_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "publication_status" + }, + "algebraic_type": { + "Ref": 142 + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 106 + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_payload_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "playable_npc_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "landmark_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "published_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "deleted_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "items_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 155 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "saved_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "bottom_tab" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "game_state_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_story_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "piece_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "target_row" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "target_col" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "dragged_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "action" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "payload_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "submitted_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "operation" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 132 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 160 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "snapshot_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "failure_message" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "completed_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "assistant_message_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "assistant_reply_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 78 + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "assistant_message_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "assistant_reply_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "phase_label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "phase_detail" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_status" + }, + "algebraic_type": { + "Ref": 134 + } + }, + { + "name": { + "some": "operation_progress" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 124 + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "focus_card_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "anchor_content_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "creator_intent_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "creator_intent_readiness_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "draft_profile_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "pending_clarifications_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "suggested_actions_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "recommended_replies_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "quality_findings_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_coverage_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "operation" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 132 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "assistant_message_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "assistant_reply_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 166 + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "collectingAnchors" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "draftReady" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "imageRefining" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "readyToPublish" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "published" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_kind" + }, + "algebraic_type": { + "Ref": 75 + } + }, + { + "name": { + "some": "level" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "motion_key" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_url" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "generated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "battle_state_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "run" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 171 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 80 + } + }, + { + "name": { + "some": "tick" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "player_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "win_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "leader_entity_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "owned_entities" + }, + "algebraic_type": { + "Array": { + "Ref": 172 + } + } + }, + { + "name": { + "some": "wild_entities" + }, + "algebraic_type": { + "Array": { + "Ref": 172 + } + } + }, + { + "name": { + "some": "camera_center" + }, + "algebraic_type": { + "Ref": 173 + } + }, + { + "name": { + "some": "last_input" + }, + "algebraic_type": { + "Ref": 173 + } + }, + { + "name": { + "some": "event_log" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "entity_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "position" + }, + "algebraic_type": { + "Ref": 173 + } + }, + { + "name": { + "some": "radius" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "offscreen_seconds" + }, + "algebraic_type": { + "F32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "x" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "y" + }, + "algebraic_type": { + "F32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "card_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "card" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 178 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "card_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 129 + } + }, + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "sections" + }, + "algebraic_type": { + "Array": { + "Ref": 179 + } + } + }, + { + "name": { + "some": "linked_ids_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "locked" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "editable" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "editable_section_ids_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "warning_messages_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "asset_status" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 131 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "asset_status_label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "section_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "value" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "entry" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 150 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "gallery_entry" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 184 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_public_user_code" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 106 + } + }, + { + "name": { + "some": "playable_npc_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "landmark_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "published_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 189 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "current_level_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "total_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "xp_to_next_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "pending_level_ups" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "last_granted_source" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 190 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "quest" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "hostileNpc" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 193 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "wallet_balance" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "total_play_time_ms" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "played_world_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 196 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "total_play_time_ms" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "played_works" + }, + "algebraic_type": { + "Array": { + "Ref": 197 + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "played_world_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_type" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "first_played_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "last_played_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "last_observed_play_time_ms" + }, + "algebraic_type": { + "U64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "item_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "snapshot" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 204 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "backpack_items" + }, + "algebraic_type": { + "Array": { + "Ref": 205 + } + } + }, + { + "name": { + "some": "equipment_items" + }, + "algebraic_type": { + "Array": { + "Ref": 205 + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "container_kind" + }, + "algebraic_type": { + "Ref": 206 + } + }, + { + "name": { + "some": "slot_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "item_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "category" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "description" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "quantity" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "rarity" + }, + "algebraic_type": { + "Ref": 38 + } + }, + { + "name": { + "some": "tags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stackable" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "stack_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "equipment_slot_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 39 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "source_kind" + }, + "algebraic_type": { + "Ref": 40 + } + }, + { + "name": { + "some": "source_reference_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "backpack" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "equipment" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 209 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "music_volume" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "platform_theme" + }, + "algebraic_type": { + "Ref": 210 + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "light" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "dark" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "session" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 67 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "events" + }, + "algebraic_type": { + "Array": { + "Ref": 69 + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "amount" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "source" + }, + "algebraic_type": { + "Ref": 190 + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 216 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "imported_user_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "imported_identity_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "imported_refresh_session_count" + }, + "algebraic_type": { + "U32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "slot_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "container_kind" + }, + "algebraic_type": { + "Ref": 206 + } + }, + { + "name": { + "some": "slot_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "item_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "category" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "description" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "quantity" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "rarity" + }, + "algebraic_type": { + "Ref": 38 + } + }, + { + "name": { + "some": "tags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stackable" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "stack_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "equipment_slot_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 39 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "source_kind" + }, + "algebraic_type": { + "Ref": 40 + } + }, + { + "name": { + "some": "source_reference_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "entries" + }, + "algebraic_type": { + "Array": { + "Ref": 184 + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "items" + }, + "algebraic_type": { + "Array": { + "Ref": 223 + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "work_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_type" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "cover_render_mode" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "cover_character_image_srcs_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "published_at_micros" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 124 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "stage_label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "playable_npc_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "landmark_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "role_visual_ready_count" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "role_animation_ready_count" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "role_asset_summary_label" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "can_resume" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "can_enter_world" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "blocker_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "publish_ready" + }, + "algebraic_type": { + "Bool": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "entries" + }, + "algebraic_type": { + "Array": { + "Ref": 227 + } + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 227 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "current_snapshot" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 155 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "archive_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_type" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "saved_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "bottom_tab" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "game_state_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_story_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "entries" + }, + "algebraic_type": { + "Array": { + "Ref": 230 + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "wallet_ledger_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "amount_delta" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "balance_after" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "source_type" + }, + "algebraic_type": { + "Ref": 231 + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "snapshotSync" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "npc_state_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "affinity" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "relation_state" + }, + "algebraic_type": { + "Ref": 234 + } + }, + { + "name": { + "some": "help_used" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "chatted_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "gifts_given" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "recruited" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "trade_stock_signature" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "revealed_facts" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "known_attribute_rumors" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "first_meaningful_contact_resolved" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "seen_backstory_chapter_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stance_profile" + }, + "algebraic_type": { + "Ref": 236 + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "affinity" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "stance" + }, + "algebraic_type": { + "Ref": 235 + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "hostile" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "guarded" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "neutral" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "cooperative" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "bonded" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "trust" + }, + "algebraic_type": { + "U8": [] + } + }, + { + "name": { + "some": "warmth" + }, + "algebraic_type": { + "U8": [] + } + }, + { + "name": { + "some": "ideological_fit" + }, + "algebraic_type": { + "U8": [] + } + }, + { + "name": { + "some": "fear_or_guard" + }, + "algebraic_type": { + "U8": [] + } + }, + { + "name": { + "some": "loyalty" + }, + "algebraic_type": { + "U8": [] + } + }, + { + "name": { + "some": "current_conflict_tag" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "recent_approvals" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "recent_disapprovals" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "current_level_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "total_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "xp_to_next_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "pending_level_ups" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "last_granted_source" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 190 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "wallet_balance" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "total_play_time_ms" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "played_world_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_type" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "first_played_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "last_played_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "last_observed_play_time_ms" + }, + "algebraic_type": { + "U64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "archive_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_key" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_type" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "saved_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "bottom_tab" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "game_state_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_story_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "wallet_ledger_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "amount_delta" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "balance_after" + }, + "algebraic_type": { + "U64": [] + } + }, + { + "name": { + "some": "source_type" + }, + "algebraic_type": { + "Ref": 231 + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "published_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "author_public_user_code" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "published_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "author_public_user_code" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "draft_profile_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "legacy_result_profile_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "setting_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "published_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "compiled_record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 105 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "entry" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 150 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "gallery_entry" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 184 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "session_stage" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 124 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "work_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "level_name" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "theme_tags" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "published_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "role" + }, + "algebraic_type": { + "Ref": 248 + } + }, + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 249 + } + }, + { + "name": { + "some": "text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "user" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "assistant" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "system" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "chat" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "actionResult" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "warning" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "seed_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_turn" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "progress_percent" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "stage" + }, + "algebraic_type": { + "Ref": 166 + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "draft_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "last_assistant_reply" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "published_profile_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entry_profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cleared_level_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "current_level_index" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "current_grid_size" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "played_profile_ids_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "previous_level_tags_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "snapshot_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "work_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "source_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "level_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "theme_tags_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "cover_asset_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "publication_status" + }, + "algebraic_type": { + "Ref": 253 + } + }, + { + "name": { + "some": "play_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "anchor_pack_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "publish_ready" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "published_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "draft" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "published" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "log_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "quest_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "event_kind" + }, + "algebraic_type": { + "Ref": 255 + } + }, + { + "name": { + "some": "status_after" + }, + "algebraic_type": { + "Ref": 1 + } + }, + { + "name": { + "some": "signal_kind" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 256 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "signal" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 45 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "step_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "step_progress" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "accepted" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "progressed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "completionAcknowledged" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "turnedIn" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "hostileNpcDefeated" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "treasureInspected" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "npcSparCompleted" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "npcTalkCompleted" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "sceneReached" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "itemDelivered" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "quest_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "issuer_npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "issuer_npc_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "act_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "thread_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "contract_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "title" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "description" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "objective" + }, + "algebraic_type": { + "Ref": 258 + } + }, + { + "name": { + "some": "progress" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 1 + } + }, + { + "name": { + "some": "completion_notified" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "reward" + }, + "algebraic_type": { + "Ref": 2 + } + }, + { + "name": { + "some": "reward_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "narrative_binding" + }, + "algebraic_type": { + "Ref": 7 + } + }, + { + "name": { + "some": "steps" + }, + "algebraic_type": { + "Array": { + "Ref": 10 + } + } + }, + { + "name": { + "some": "active_step_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "visible_stage" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "hidden_flags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "discovered_fact_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "related_carrier_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "consequence_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "completed_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "turned_in_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "kind" + }, + "algebraic_type": { + "Ref": 11 + } + }, + { + "name": { + "some": "target_hostile_npc_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_npc_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "target_item_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "required_count" + }, + "algebraic_type": { + "U32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "refresh_token_hash" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "issued_by_provider" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "client_info_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "expires_at" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "revoked_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "last_seen_at" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "battle_state_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "function_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "action_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "base_damage" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "mana_cost" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "heal" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "mana_restore" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "counter_multiplier_basis_points" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "result" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 262 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "snapshot" + }, + "algebraic_type": { + "Ref": 119 + } + }, + { + "name": { + "some": "damage_dealt" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "damage_taken" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "outcome" + }, + "algebraic_type": { + "Ref": 64 + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "npc_interaction" + }, + "algebraic_type": { + "Ref": 264 + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "battle_state_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "player_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "player_max_mana" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "target_max_hp" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "experience_reward" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_items" + }, + "algebraic_type": { + "Array": { + "Ref": 61 + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "interaction_function_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "release_npc_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "result" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 266 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "interaction" + }, + "algebraic_type": { + "Ref": 267 + } + }, + { + "name": { + "some": "battle_state" + }, + "algebraic_type": { + "Ref": 119 + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "npc_state" + }, + "algebraic_type": { + "Ref": 268 + } + }, + { + "name": { + "some": "interaction_status" + }, + "algebraic_type": { + "Ref": 269 + } + }, + { + "name": { + "some": "action_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "result_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "battle_mode" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 270 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "encounter_closed" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "affinity_changed" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "previous_affinity" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "next_affinity" + }, + "algebraic_type": { + "I32": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "npc_state_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "affinity" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "relation_state" + }, + "algebraic_type": { + "Ref": 234 + } + }, + { + "name": { + "some": "help_used" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "chatted_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "gifts_given" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "recruited" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "trade_stock_signature" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "revealed_facts" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "known_attribute_rumors" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "first_meaningful_contact_resolved" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "seen_backstory_chapter_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stance_profile" + }, + "algebraic_type": { + "Ref": 236 + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "previewed" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "dialogue" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "resolved" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "recruited" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "battlePending" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "left" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "fight" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "spar" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "result" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 267 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "action_kind" + }, + "algebraic_type": { + "Ref": 273 + } + }, + { + "name": { + "some": "affinity_gain_override" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "note" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "chat" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "help" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "gift" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "recruit" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "questAccept" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 268 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "treasure_record_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "encounter_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "encounter_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "scene_name" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "action" + }, + "algebraic_type": { + "Ref": 276 + } + }, + { + "name": { + "some": "reward_items" + }, + "algebraic_type": { + "Array": { + "Ref": 61 + } + } + }, + { + "name": { + "some": "reward_hp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_mana" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_currency" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "story_hint" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Sum": { + "variants": [ + { + "name": { + "some": "inspect" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "leave" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + }, + { + "name": { + "some": "secure" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "ok" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "record" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 278 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "treasure_record_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "encounter_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "encounter_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "scene_name" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "action" + }, + "algebraic_type": { + "Ref": 276 + } + }, + { + "name": { + "some": "reward_items" + }, + "algebraic_type": { + "Array": { + "Ref": 61 + } + } + }, + { + "name": { + "some": "reward_hp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_mana" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_currency" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "story_hint" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_key" + }, + "algebraic_type": { + "String": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "music_volume" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "platform_theme" + }, + "algebraic_type": { + "Ref": 210 + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "saved_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "bottom_tab" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "game_state_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_story_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "candidates_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "saved_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "candidate_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "selected_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "started_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "task_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "stage_kind" + }, + "algebraic_type": { + "Ref": 21 + } + }, + { + "name": { + "some": "started_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "started_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "started_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "event_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "event_kind" + }, + "algebraic_type": { + "Ref": 70 + } + }, + { + "name": { + "some": "narrative_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "choice_function_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "initial_prompt" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "opening_summary" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "latest_narrative_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "latest_choice_function_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "status" + }, + "algebraic_type": { + "Ref": 68 + } + }, + { + "name": { + "some": "version" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "input_x" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "input_y" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "submitted_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_message_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "assistant_message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "submitted_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_message_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "submitted_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_message_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_message_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "submitted_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "run_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "first_piece_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "second_piece_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "swapped_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "treasure_record_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "story_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "actor_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "encounter_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "encounter_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "scene_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "scene_name" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "action" + }, + "algebraic_type": { + "Ref": 276 + } + }, + { + "name": { + "some": "reward_items" + }, + "algebraic_type": { + "Array": { + "Ref": 61 + } + } + }, + { + "name": { + "some": "reward_hp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_mana" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "reward_currency" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "story_hint" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "quest_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "turned_in_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "level_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "theme_tags" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "cover_asset_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "snapshot_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "chapter_index" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "total_chapters" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "entry_pseudo_level_millis" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "exit_pseudo_level_millis" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "entry_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "exit_level" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_total_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_quest_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "planned_hostile_xp" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "expected_hostile_defeat_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "level_at_entry" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "pace_band" + }, + "algebraic_type": { + "Ref": 33 + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_type" + }, + "algebraic_type": { + "Ref": 133 + } + }, + { + "name": { + "some": "operation_status" + }, + "algebraic_type": { + "Ref": 134 + } + }, + { + "name": { + "some": "phase_label" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "phase_detail" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "operation_progress" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "error_message" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_work_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "author_public_user_code" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "source_agent_session_id" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 106 + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "profile_payload_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "playable_npc_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "landmark_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "runtime_session_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "npc_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "affinity" + }, + "algebraic_type": { + "I32": [] + } + }, + { + "name": { + "some": "help_used" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "chatted_count" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "gifts_given" + }, + "algebraic_type": { + "U32": [] + } + }, + { + "name": { + "some": "recruited" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "trade_stock_signature" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "revealed_facts" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "known_attribute_rumors" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "first_meaningful_contact_resolved" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "seen_backstory_chapter_ids" + }, + "algebraic_type": { + "Array": { + "String": [] + } + } + }, + { + "name": { + "some": "stance_profile" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "Ref": 236 + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "entries" + }, + "algebraic_type": { + "Array": { + "Ref": 305 + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "visited_at" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "music_volume" + }, + "algebraic_type": { + "F32": [] + } + }, + { + "name": { + "some": "platform_theme" + }, + "algebraic_type": { + "Ref": 210 + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "saved_at_micros" + }, + "algebraic_type": { + "I64": [] + } + }, + { + "name": { + "some": "bottom_tab" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "game_state_json" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "current_story_json" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at_micros" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "public_user_code" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "username" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "phone_number_masked" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "phone_number_e_164" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "login_method" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "binding_status" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "wechat_bound" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "password_hash" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "password_login_enabled" + }, + "algebraic_type": { + "Bool": [] + } + }, + { + "name": { + "some": "token_version" + }, + "algebraic_type": { + "U64": [] + } + } + ] + } + }, + { + "Product": { + "elements": [ + { + "name": { + "some": "browse_history_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "owner_user_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "profile_id" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "world_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "subtitle" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "summary_text" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "cover_image_src" + }, + "algebraic_type": { + "Sum": { + "variants": [ + { + "name": { + "some": "some" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "none" + }, + "algebraic_type": { + "Product": { + "elements": [] + } + } + } + ] + } + } + }, + { + "name": { + "some": "theme_mode" + }, + "algebraic_type": { + "Ref": 89 + } + }, + { + "name": { + "some": "author_display_name" + }, + "algebraic_type": { + "String": [] + } + }, + { + "name": { + "some": "visited_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "created_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + }, + { + "name": { + "some": "updated_at" + }, + "algebraic_type": { + "Product": { + "elements": [ + { + "name": { + "some": "__timestamp_micros_since_unix_epoch__" + }, + "algebraic_type": { + "I64": [] + } + } + ] + } + } + } + ] + } + } + ] + }, + "tables": [ + { + "name": "ai_result_reference", + "product_type_ref": 15, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "ai_result_reference_result_reference_row_id_idx_btree" + }, + "accessor_name": { + "some": "result_reference_row_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "ai_result_reference_task_id_idx_btree" + }, + "accessor_name": { + "some": "by_ai_result_reference_task_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "ai_result_reference_result_reference_row_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "ai_task", + "product_type_ref": 17, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "ai_task_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_ai_task_owner_user_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "ai_task_status_idx_btree" + }, + "accessor_name": { + "some": "by_ai_task_status" + }, + "algorithm": { + "BTree": [ + 7 + ] + } + }, + { + "name": { + "some": "ai_task_task_id_idx_btree" + }, + "accessor_name": { + "some": "task_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "ai_task_task_kind_idx_btree" + }, + "accessor_name": { + "some": "by_ai_task_kind" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "ai_task_task_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "ai_task_stage", + "product_type_ref": 20, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "ai_task_stage_task_id_idx_btree" + }, + "accessor_name": { + "some": "by_ai_task_stage_task_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "ai_task_stage_task_id_stage_order_idx_btree" + }, + "accessor_name": { + "some": "by_ai_task_stage_task_order" + }, + "algorithm": { + "BTree": [ + 1, + 5 + ] + } + }, + { + "name": { + "some": "ai_task_stage_task_stage_id_idx_btree" + }, + "accessor_name": { + "some": "task_stage_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "ai_task_stage_task_stage_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "ai_text_chunk", + "product_type_ref": 23, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "ai_text_chunk_task_id_idx_btree" + }, + "accessor_name": { + "some": "by_ai_text_chunk_task_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "ai_text_chunk_task_id_stage_kind_sequence_idx_btree" + }, + "accessor_name": { + "some": "by_ai_text_chunk_task_stage_sequence" + }, + "algorithm": { + "BTree": [ + 2, + 3, + 4 + ] + } + }, + { + "name": { + "some": "ai_text_chunk_text_chunk_row_id_idx_btree" + }, + "accessor_name": { + "some": "text_chunk_row_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "ai_text_chunk_text_chunk_row_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "asset_entity_binding", + "product_type_ref": 52, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "asset_entity_binding_asset_object_id_idx_btree" + }, + "accessor_name": { + "some": "by_asset_object_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "asset_entity_binding_binding_id_idx_btree" + }, + "accessor_name": { + "some": "binding_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "asset_entity_binding_entity_kind_entity_id_slot_idx_btree" + }, + "accessor_name": { + "some": "by_entity_slot" + }, + "algorithm": { + "BTree": [ + 2, + 3, + 4 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "asset_entity_binding_binding_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "asset_object", + "product_type_ref": 53, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "asset_object_asset_kind_idx_btree" + }, + "accessor_name": { + "some": "asset_kind" + }, + "algorithm": { + "BTree": [ + 12 + ] + } + }, + { + "name": { + "some": "asset_object_asset_object_id_idx_btree" + }, + "accessor_name": { + "some": "asset_object_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "asset_object_bucket_object_key_idx_btree" + }, + "accessor_name": { + "some": "by_bucket_object_key" + }, + "algorithm": { + "BTree": [ + 1, + 2 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "asset_object_asset_object_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "auth_identity", + "product_type_ref": 56, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "auth_identity_identity_id_idx_btree" + }, + "accessor_name": { + "some": "identity_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "auth_identity_provider_provider_uid_idx_btree" + }, + "accessor_name": { + "some": "by_auth_identity_provider_uid" + }, + "algorithm": { + "BTree": [ + 2, + 3 + ] + } + }, + { + "name": { + "some": "auth_identity_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_auth_identity_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "auth_identity_identity_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "auth_store_snapshot", + "product_type_ref": 57, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "auth_store_snapshot_snapshot_id_idx_btree" + }, + "accessor_name": { + "some": "snapshot_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "auth_store_snapshot_snapshot_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "battle_state", + "product_type_ref": 58, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "battle_state_actor_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_battle_actor_user_id" + }, + "algorithm": { + "BTree": [ + 3 + ] + } + }, + { + "name": { + "some": "battle_state_battle_state_id_idx_btree" + }, + "accessor_name": { + "some": "battle_state_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "battle_state_runtime_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_battle_runtime_session_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "battle_state_story_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_battle_story_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "battle_state_battle_state_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "big_fish_agent_message", + "product_type_ref": 71, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "big_fish_agent_message_message_id_idx_btree" + }, + "accessor_name": { + "some": "message_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "big_fish_agent_message_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_big_fish_message_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "big_fish_agent_message_message_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "big_fish_asset_slot", + "product_type_ref": 74, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "big_fish_asset_slot_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_big_fish_asset_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "big_fish_asset_slot_slot_id_idx_btree" + }, + "accessor_name": { + "some": "slot_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "big_fish_asset_slot_slot_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "big_fish_creation_session", + "product_type_ref": 77, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "big_fish_creation_session_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_big_fish_session_owner_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "big_fish_creation_session_session_id_idx_btree" + }, + "accessor_name": { + "some": "session_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "big_fish_creation_session_session_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "big_fish_runtime_run", + "product_type_ref": 79, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "big_fish_runtime_run_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_big_fish_run_owner_user_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "big_fish_runtime_run_run_id_idx_btree" + }, + "accessor_name": { + "some": "run_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "big_fish_runtime_run_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_big_fish_run_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "big_fish_runtime_run_run_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "chapter_progression", + "product_type_ref": 85, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "chapter_progression_chapter_id_idx_btree" + }, + "accessor_name": { + "some": "by_chapter_progression_chapter_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "chapter_progression_chapter_progression_id_idx_btree" + }, + "accessor_name": { + "some": "chapter_progression_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "chapter_progression_user_id_chapter_id_idx_btree" + }, + "accessor_name": { + "some": "by_chapter_progression_user_chapter" + }, + "algorithm": { + "BTree": [ + 1, + 2 + ] + } + }, + { + "name": { + "some": "chapter_progression_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_chapter_progression_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "chapter_progression_chapter_progression_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "custom_world_agent_message", + "product_type_ref": 136, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "custom_world_agent_message_message_id_idx_btree" + }, + "accessor_name": { + "some": "message_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "custom_world_agent_message_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_agent_message_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "custom_world_agent_message_message_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "custom_world_agent_operation", + "product_type_ref": 137, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "custom_world_agent_operation_operation_id_idx_btree" + }, + "accessor_name": { + "some": "operation_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "custom_world_agent_operation_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_agent_operation_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "custom_world_agent_operation_operation_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "custom_world_agent_session", + "product_type_ref": 138, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "custom_world_agent_session_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_agent_session_owner_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "custom_world_agent_session_session_id_idx_btree" + }, + "accessor_name": { + "some": "session_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "custom_world_agent_session_stage_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_agent_session_stage" + }, + "algorithm": { + "BTree": [ + 5 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "custom_world_agent_session_session_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "custom_world_draft_card", + "product_type_ref": 139, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "custom_world_draft_card_card_id_idx_btree" + }, + "accessor_name": { + "some": "card_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "custom_world_draft_card_kind_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_draft_card_kind" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "custom_world_draft_card_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_draft_card_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "custom_world_draft_card_card_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "custom_world_gallery_entry", + "product_type_ref": 140, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "custom_world_gallery_entry_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_gallery_owner_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "custom_world_gallery_entry_profile_id_idx_btree" + }, + "accessor_name": { + "some": "profile_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "custom_world_gallery_entry_public_work_code_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_gallery_public_work_code" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "custom_world_gallery_entry_theme_mode_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_gallery_theme_mode" + }, + "algorithm": { + "BTree": [ + 9 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "custom_world_gallery_entry_profile_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Public": [] + } + }, + { + "name": "custom_world_profile", + "product_type_ref": 141, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "custom_world_profile_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_profile_owner_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "custom_world_profile_profile_id_idx_btree" + }, + "accessor_name": { + "some": "profile_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "custom_world_profile_publication_status_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_profile_publication_status" + }, + "algorithm": { + "BTree": [ + 5 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "custom_world_profile_profile_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "custom_world_session", + "product_type_ref": 143, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "custom_world_session_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_custom_world_session_owner_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "custom_world_session_session_id_idx_btree" + }, + "accessor_name": { + "some": "session_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "custom_world_session_session_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "inventory_slot", + "product_type_ref": 217, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "inventory_slot_actor_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_inventory_actor_user_id" + }, + "algorithm": { + "BTree": [ + 3 + ] + } + }, + { + "name": { + "some": "inventory_slot_container_kind_slot_key_idx_btree" + }, + "accessor_name": { + "some": "by_inventory_container_slot" + }, + "algorithm": { + "BTree": [ + 4, + 5 + ] + } + }, + { + "name": { + "some": "inventory_slot_item_id_idx_btree" + }, + "accessor_name": { + "some": "by_inventory_item_id" + }, + "algorithm": { + "BTree": [ + 6 + ] + } + }, + { + "name": { + "some": "inventory_slot_runtime_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_inventory_runtime_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "inventory_slot_slot_id_idx_btree" + }, + "accessor_name": { + "some": "slot_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "inventory_slot_slot_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "npc_state", + "product_type_ref": 233, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "npc_state_npc_id_idx_btree" + }, + "accessor_name": { + "some": "by_npc_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "npc_state_npc_state_id_idx_btree" + }, + "accessor_name": { + "some": "npc_state_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "npc_state_runtime_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_runtime_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "npc_state_runtime_session_id_npc_id_idx_btree" + }, + "accessor_name": { + "some": "by_runtime_session_npc" + }, + "algorithm": { + "BTree": [ + 1, + 2 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "npc_state_npc_state_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "player_progression", + "product_type_ref": 237, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "player_progression_user_id_idx_btree" + }, + "accessor_name": { + "some": "user_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "player_progression_user_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "profile_dashboard_state", + "product_type_ref": 238, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "profile_dashboard_state_user_id_idx_btree" + }, + "accessor_name": { + "some": "user_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "profile_dashboard_state_user_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "profile_played_world", + "product_type_ref": 239, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "profile_played_world_played_world_id_idx_btree" + }, + "accessor_name": { + "some": "played_world_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "profile_played_world_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_profile_played_world_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "profile_played_world_user_id_last_played_at_idx_btree" + }, + "accessor_name": { + "some": "by_profile_played_world_user_last_played_at" + }, + "algorithm": { + "BTree": [ + 1, + 9 + ] + } + }, + { + "name": { + "some": "profile_played_world_user_id_world_key_idx_btree" + }, + "accessor_name": { + "some": "by_profile_played_world_user_world_key" + }, + "algorithm": { + "BTree": [ + 1, + 2 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "profile_played_world_played_world_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "profile_save_archive", + "product_type_ref": 240, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "profile_save_archive_archive_id_idx_btree" + }, + "accessor_name": { + "some": "archive_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "profile_save_archive_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_profile_save_archive_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "profile_save_archive_user_id_saved_at_idx_btree" + }, + "accessor_name": { + "some": "by_profile_save_archive_user_saved_at" + }, + "algorithm": { + "BTree": [ + 1, + 10 + ] + } + }, + { + "name": { + "some": "profile_save_archive_user_id_world_key_idx_btree" + }, + "accessor_name": { + "some": "by_profile_save_archive_user_world_key" + }, + "algorithm": { + "BTree": [ + 1, + 2 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "profile_save_archive_archive_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "profile_wallet_ledger", + "product_type_ref": 241, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "profile_wallet_ledger_user_id_created_at_idx_btree" + }, + "accessor_name": { + "some": "by_profile_wallet_ledger_user_created_at" + }, + "algorithm": { + "BTree": [ + 1, + 5 + ] + } + }, + { + "name": { + "some": "profile_wallet_ledger_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_profile_wallet_ledger_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "profile_wallet_ledger_wallet_ledger_id_idx_btree" + }, + "accessor_name": { + "some": "wallet_ledger_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "profile_wallet_ledger_wallet_ledger_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "puzzle_agent_message", + "product_type_ref": 247, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "puzzle_agent_message_message_id_idx_btree" + }, + "accessor_name": { + "some": "message_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "puzzle_agent_message_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_puzzle_agent_message_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "puzzle_agent_message_message_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "puzzle_agent_session", + "product_type_ref": 250, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "puzzle_agent_session_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_puzzle_agent_session_owner_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "puzzle_agent_session_session_id_idx_btree" + }, + "accessor_name": { + "some": "session_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "puzzle_agent_session_session_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "puzzle_runtime_run", + "product_type_ref": 251, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "puzzle_runtime_run_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_puzzle_runtime_run_owner_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "puzzle_runtime_run_run_id_idx_btree" + }, + "accessor_name": { + "some": "run_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "puzzle_runtime_run_run_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "puzzle_work_profile", + "product_type_ref": 252, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "puzzle_work_profile_owner_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_puzzle_work_owner_user_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "puzzle_work_profile_profile_id_idx_btree" + }, + "accessor_name": { + "some": "profile_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "puzzle_work_profile_publication_status_idx_btree" + }, + "accessor_name": { + "some": "by_puzzle_work_publication_status" + }, + "algorithm": { + "BTree": [ + 10 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "puzzle_work_profile_profile_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "quest_log", + "product_type_ref": 254, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "quest_log_actor_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_actor_user_id" + }, + "algorithm": { + "BTree": [ + 3 + ] + } + }, + { + "name": { + "some": "quest_log_log_id_idx_btree" + }, + "accessor_name": { + "some": "log_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "quest_log_quest_id_idx_btree" + }, + "accessor_name": { + "some": "by_quest_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "quest_log_runtime_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_runtime_session_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "quest_log_log_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "quest_record", + "product_type_ref": 257, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "quest_record_actor_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_actor_user_id" + }, + "algorithm": { + "BTree": [ + 3 + ] + } + }, + { + "name": { + "some": "quest_record_issuer_npc_id_idx_btree" + }, + "accessor_name": { + "some": "by_issuer_npc_id" + }, + "algorithm": { + "BTree": [ + 4 + ] + } + }, + { + "name": { + "some": "quest_record_quest_id_idx_btree" + }, + "accessor_name": { + "some": "quest_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "quest_record_runtime_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_runtime_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "quest_record_quest_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "refresh_session", + "product_type_ref": 259, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "refresh_session_refresh_token_hash_idx_btree" + }, + "accessor_name": { + "some": "by_refresh_session_token_hash" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "refresh_session_session_id_idx_btree" + }, + "accessor_name": { + "some": "session_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "refresh_session_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_refresh_session_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "refresh_session_session_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "runtime_setting", + "product_type_ref": 280, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "runtime_setting_user_id_idx_btree" + }, + "accessor_name": { + "some": "user_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "runtime_setting_user_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "runtime_snapshot", + "product_type_ref": 281, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "runtime_snapshot_user_id_idx_btree" + }, + "accessor_name": { + "some": "user_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "runtime_snapshot_user_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "story_event", + "product_type_ref": 288, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "story_event_event_id_idx_btree" + }, + "accessor_name": { + "some": "event_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "story_event_story_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_story_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "story_event_event_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "story_session", + "product_type_ref": 289, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "story_session_actor_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_actor_user_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "story_session_runtime_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_runtime_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "story_session_story_session_id_idx_btree" + }, + "accessor_name": { + "some": "story_session_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "story_session_story_session_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "treasure_record", + "product_type_ref": 295, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "treasure_record_actor_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_treasure_actor_user_id" + }, + "algorithm": { + "BTree": [ + 3 + ] + } + }, + { + "name": { + "some": "treasure_record_encounter_id_idx_btree" + }, + "accessor_name": { + "some": "by_treasure_encounter_id" + }, + "algorithm": { + "BTree": [ + 4 + ] + } + }, + { + "name": { + "some": "treasure_record_runtime_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_treasure_runtime_session_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "treasure_record_story_session_id_idx_btree" + }, + "accessor_name": { + "some": "by_treasure_story_session_id" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + }, + { + "name": { + "some": "treasure_record_treasure_record_id_idx_btree" + }, + "accessor_name": { + "some": "treasure_record_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "treasure_record_treasure_record_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "user_account", + "product_type_ref": 308, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "user_account_public_user_code_idx_btree" + }, + "accessor_name": { + "some": "by_user_account_public_code" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "user_account_user_id_idx_btree" + }, + "accessor_name": { + "some": "user_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "user_account_username_idx_btree" + }, + "accessor_name": { + "some": "by_user_account_username" + }, + "algorithm": { + "BTree": [ + 2 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "user_account_user_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + }, + { + "name": "user_browse_history", + "product_type_ref": 309, + "primary_key": [ + 0 + ], + "indexes": [ + { + "name": { + "some": "user_browse_history_browse_history_id_idx_btree" + }, + "accessor_name": { + "some": "browse_history_id" + }, + "algorithm": { + "BTree": [ + 0 + ] + } + }, + { + "name": { + "some": "user_browse_history_user_id_idx_btree" + }, + "accessor_name": { + "some": "by_browse_history_user_id" + }, + "algorithm": { + "BTree": [ + 1 + ] + } + }, + { + "name": { + "some": "user_browse_history_user_id_owner_user_id_profile_id_idx_btree" + }, + "accessor_name": { + "some": "by_browse_history_user_owner_profile" + }, + "algorithm": { + "BTree": [ + 1, + 2, + 3 + ] + } + } + ], + "constraints": [ + { + "name": { + "some": "user_browse_history_browse_history_id_key" + }, + "data": { + "Unique": { + "columns": [ + 0 + ] + } + } + } + ], + "sequences": [], + "schedule": { + "none": [] + }, + "table_type": { + "User": [] + }, + "table_access": { + "Private": [] + } + } + ], + "reducers": [ + { + "name": "accept_quest", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 0 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "acknowledge_quest_completion", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 12 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "apply_chapter_progression_ledger_entry", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 30 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "apply_inventory_mutation", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 34 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "apply_quest_signal", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 44 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "begin_story_session", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 65 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "bind_asset_object_to_entity", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 81 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "confirm_asset_object", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 111 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "continue_story", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 114 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "create_ai_task", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 115 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "create_battle_state", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 117 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "grant_player_progression_experience", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 214 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "init", + "params": { + "elements": [] + }, + "lifecycle": { + "some": { + "Init": [] + } + } + }, + { + "name": "publish_custom_world_profile", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 243 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "resolve_combat_action", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 260 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "resolve_npc_interaction", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 264 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "resolve_npc_social_action", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 272 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "resolve_treasure_interaction", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 275 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "start_ai_task", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 284 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "start_ai_task_stage", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 285 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "turn_in_quest", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 296 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "unpublish_custom_world_profile", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 297 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "upsert_chapter_progression", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 300 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "upsert_custom_world_profile", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 302 + } + } + ] + }, + "lifecycle": { + "none": [] + } + }, + { + "name": "upsert_npc_state", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 303 + } + } + ] + }, + "lifecycle": { + "none": [] + } + } + ], + "types": [ + { + "name": { + "scope": [], + "name": "AiResultReference" + }, + "ty": 15, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiResultReferenceInput" + }, + "ty": 55, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiResultReferenceKind" + }, + "ty": 16, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiResultReferenceSnapshot" + }, + "ty": 28, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiStageCompletionInput" + }, + "ty": 109, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTask" + }, + "ty": 17, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskCancelInput" + }, + "ty": 84, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskCreateInput" + }, + "ty": 115, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskFailureInput" + }, + "ty": 161, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskFinishInput" + }, + "ty": 110, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskKind" + }, + "ty": 18, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskProcedureResult" + }, + "ty": 25, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskSnapshot" + }, + "ty": 26, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStage" + }, + "ty": 20, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStageBlueprint" + }, + "ty": 116, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStageKind" + }, + "ty": 21, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStageSnapshot" + }, + "ty": 27, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStageStartInput" + }, + "ty": 285, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStageStatus" + }, + "ty": 22, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStartInput" + }, + "ty": 284, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTaskStatus" + }, + "ty": 19, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTextChunk" + }, + "ty": 23, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTextChunkAppendInput" + }, + "ty": 24, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AiTextChunkSnapshot" + }, + "ty": 29, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetEntityBinding" + }, + "ty": 52, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetEntityBindingInput" + }, + "ty": 81, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetEntityBindingProcedureResult" + }, + "ty": 82, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetEntityBindingSnapshot" + }, + "ty": 83, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetObject" + }, + "ty": 53, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetObjectAccessPolicy" + }, + "ty": 54, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetObjectProcedureResult" + }, + "ty": 112, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetObjectUpsertInput" + }, + "ty": 111, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AssetObjectUpsertSnapshot" + }, + "ty": 113, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AuthIdentity" + }, + "ty": 56, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AuthStoreSnapshot" + }, + "ty": 57, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AuthStoreSnapshotImportProcedureResult" + }, + "ty": 215, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AuthStoreSnapshotImportRecord" + }, + "ty": 216, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AuthStoreSnapshotProcedureResult" + }, + "ty": 159, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AuthStoreSnapshotRecord" + }, + "ty": 160, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "AuthStoreSnapshotUpsertInput" + }, + "ty": 299, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BattleMode" + }, + "ty": 59, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BattleState" + }, + "ty": 58, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BattleStateInput" + }, + "ty": 117, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BattleStateProcedureResult" + }, + "ty": 118, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BattleStateQueryInput" + }, + "ty": 168, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BattleStateSnapshot" + }, + "ty": 119, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BattleStatus" + }, + "ty": 60, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAgentMessage" + }, + "ty": 71, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAgentMessageKind" + }, + "ty": 73, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAgentMessageRole" + }, + "ty": 72, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAgentMessageSnapshot" + }, + "ty": 102, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAnchorItem" + }, + "ty": 94, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAnchorPack" + }, + "ty": 93, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAnchorStatus" + }, + "ty": 95, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAssetCoverage" + }, + "ty": 101, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAssetGenerateInput" + }, + "ty": 167, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAssetKind" + }, + "ty": 75, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAssetSlot" + }, + "ty": 74, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAssetSlotSnapshot" + }, + "ty": 100, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishAssetStatus" + }, + "ty": 76, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishBackgroundBlueprint" + }, + "ty": 98, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishCreationSession" + }, + "ty": 77, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishCreationStage" + }, + "ty": 78, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishDraftCompileInput" + }, + "ty": 90, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishGameDraft" + }, + "ty": 96, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishLevelBlueprint" + }, + "ty": 97, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishMessageFinalizeInput" + }, + "ty": 162, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishMessageSubmitInput" + }, + "ty": 291, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishPublishInput" + }, + "ty": 242, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRunGetInput" + }, + "ty": 169, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRunInputSubmitInput" + }, + "ty": 290, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRunProcedureResult" + }, + "ty": 170, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRunStartInput" + }, + "ty": 286, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRunStatus" + }, + "ty": 80, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRuntimeEntity" + }, + "ty": 172, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRuntimeParams" + }, + "ty": 99, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRuntimeRun" + }, + "ty": 79, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishRuntimeSnapshot" + }, + "ty": 171, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishSessionCreateInput" + }, + "ty": 120, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishSessionGetInput" + }, + "ty": 174, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishSessionProcedureResult" + }, + "ty": 91, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishSessionSnapshot" + }, + "ty": 92, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishVector2" + }, + "ty": 173, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishWorkDeleteInput" + }, + "ty": 146, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishWorksListInput" + }, + "ty": 218, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "BigFishWorksProcedureResult" + }, + "ty": 147, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ChapterPaceBand" + }, + "ty": 33, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ChapterProgression" + }, + "ty": 85, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ChapterProgressionGetInput" + }, + "ty": 175, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ChapterProgressionInput" + }, + "ty": 300, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ChapterProgressionLedgerInput" + }, + "ty": 30, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ChapterProgressionProcedureResult" + }, + "ty": 31, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ChapterProgressionSnapshot" + }, + "ty": 32, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CombatOutcome" + }, + "ty": 64, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ConsumeInventoryItemInput" + }, + "ty": 41, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentActionExecuteInput" + }, + "ty": 157, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentActionExecuteResult" + }, + "ty": 158, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentCardDetailGetInput" + }, + "ty": 176, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentMessage" + }, + "ty": 136, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentMessageFinalizeInput" + }, + "ty": 163, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentMessageSnapshot" + }, + "ty": 125, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentMessageSubmitInput" + }, + "ty": 292, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentOperation" + }, + "ty": 137, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentOperationGetInput" + }, + "ty": 180, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentOperationProcedureResult" + }, + "ty": 164, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentOperationProgressInput" + }, + "ty": 301, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentOperationSnapshot" + }, + "ty": 132, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentSession" + }, + "ty": 138, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentSessionCreateInput" + }, + "ty": 121, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentSessionGetInput" + }, + "ty": 181, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentSessionProcedureResult" + }, + "ty": 122, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldAgentSessionSnapshot" + }, + "ty": 123, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldDraftCard" + }, + "ty": 139, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldDraftCardDetailResult" + }, + "ty": 177, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldDraftCardDetailSectionSnapshot" + }, + "ty": 179, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldDraftCardDetailSnapshot" + }, + "ty": 178, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldDraftCardSnapshot" + }, + "ty": 128, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldGalleryDetailByCodeInput" + }, + "ty": 185, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldGalleryDetailInput" + }, + "ty": 182, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldGalleryEntry" + }, + "ty": 140, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldGalleryEntrySnapshot" + }, + "ty": 184, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldGalleryListResult" + }, + "ty": 219, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldGenerationMode" + }, + "ty": 144, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldLibraryDetailInput" + }, + "ty": 186, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldLibraryMutationResult" + }, + "ty": 183, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfile" + }, + "ty": 141, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfileDeleteInput" + }, + "ty": 148, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfileListInput" + }, + "ty": 220, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfileListResult" + }, + "ty": 149, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfilePublishInput" + }, + "ty": 243, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfileSnapshot" + }, + "ty": 150, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfileUnpublishInput" + }, + "ty": 297, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldProfileUpsertInput" + }, + "ty": 302, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldPublicationStatus" + }, + "ty": 142, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldPublishWorldInput" + }, + "ty": 244, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldPublishWorldResult" + }, + "ty": 245, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldPublishedProfileCompileInput" + }, + "ty": 103, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldPublishedProfileCompileResult" + }, + "ty": 104, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldPublishedProfileCompileSnapshot" + }, + "ty": 105, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldRoleAssetStatus" + }, + "ty": 131, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldSession" + }, + "ty": 143, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldSessionStatus" + }, + "ty": 145, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldThemeMode" + }, + "ty": 106, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldWorkSummarySnapshot" + }, + "ty": 223, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldWorksListInput" + }, + "ty": 221, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "CustomWorldWorksListResult" + }, + "ty": 222, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "EquipInventoryItemInput" + }, + "ty": 42, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "GrantInventoryItemInput" + }, + "ty": 36, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventoryContainerKind" + }, + "ty": 206, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventoryEquipmentSlot" + }, + "ty": 39, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventoryItemRarity" + }, + "ty": 38, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventoryItemSnapshot" + }, + "ty": 37, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventoryItemSourceKind" + }, + "ty": 40, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventoryMutation" + }, + "ty": 35, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventoryMutationInput" + }, + "ty": 34, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventorySlot" + }, + "ty": 217, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "InventorySlotSnapshot" + }, + "ty": 205, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcBattleInteractionProcedureResult" + }, + "ty": 265, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcBattleInteractionResult" + }, + "ty": 266, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcInteractionBattleMode" + }, + "ty": 270, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcInteractionProcedureResult" + }, + "ty": 271, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcInteractionResult" + }, + "ty": 267, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcInteractionStatus" + }, + "ty": 269, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcRelationStance" + }, + "ty": 235, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcRelationState" + }, + "ty": 234, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcSocialActionKind" + }, + "ty": 273, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcStanceProfile" + }, + "ty": 236, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcState" + }, + "ty": 233, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcStateProcedureResult" + }, + "ty": 274, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcStateSnapshot" + }, + "ty": 268, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "NpcStateUpsertInput" + }, + "ty": 303, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PlayerProgression" + }, + "ty": 237, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PlayerProgressionGetInput" + }, + "ty": 187, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PlayerProgressionGrantInput" + }, + "ty": 214, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PlayerProgressionGrantSource" + }, + "ty": 190, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PlayerProgressionProcedureResult" + }, + "ty": 188, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PlayerProgressionSnapshot" + }, + "ty": 189, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ProfileDashboardState" + }, + "ty": 238, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ProfilePlayedWorld" + }, + "ty": 239, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ProfileSaveArchive" + }, + "ty": 240, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ProfileWalletLedger" + }, + "ty": 241, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentMessageFinalizeInput" + }, + "ty": 165, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentMessageKind" + }, + "ty": 249, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentMessageRole" + }, + "ty": 248, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentMessageRow" + }, + "ty": 247, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentMessageSubmitInput" + }, + "ty": 293, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentSessionCreateInput" + }, + "ty": 135, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentSessionGetInput" + }, + "ty": 198, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentSessionProcedureResult" + }, + "ty": 108, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentSessionRow" + }, + "ty": 250, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleAgentStage" + }, + "ty": 166, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleDraftCompileInput" + }, + "ty": 107, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleGeneratedImagesSaveInput" + }, + "ty": 282, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzlePublicationStatus" + }, + "ty": 253, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzlePublishInput" + }, + "ty": 246, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleRunDragInput" + }, + "ty": 156, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleRunGetInput" + }, + "ty": 201, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleRunNextLevelInput" + }, + "ty": 13, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleRunProcedureResult" + }, + "ty": 14, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleRunStartInput" + }, + "ty": 287, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleRunSwapInput" + }, + "ty": 294, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleRuntimeRunRow" + }, + "ty": 251, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleSelectCoverImageInput" + }, + "ty": 283, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleWorkDeleteInput" + }, + "ty": 151, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleWorkGetInput" + }, + "ty": 199, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleWorkProcedureResult" + }, + "ty": 200, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleWorkProfileRow" + }, + "ty": 252, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleWorkUpsertInput" + }, + "ty": 298, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleWorksListInput" + }, + "ty": 232, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "PuzzleWorksProcedureResult" + }, + "ty": 152, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestCompletionAckInput" + }, + "ty": 12, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestHostileNpcDefeatedSignal" + }, + "ty": 46, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestItemDeliveredSignal" + }, + "ty": 51, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestLog" + }, + "ty": 254, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestLogEventKind" + }, + "ty": 255, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestNarrativeBindingSnapshot" + }, + "ty": 7, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestNarrativeOrigin" + }, + "ty": 8, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestNarrativeType" + }, + "ty": 9, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestNpcSparCompletedSignal" + }, + "ty": 48, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestNpcTalkCompletedSignal" + }, + "ty": 49, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestObjectiveKind" + }, + "ty": 11, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestObjectiveSnapshot" + }, + "ty": 258, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestProgressSignal" + }, + "ty": 45, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestRecord" + }, + "ty": 257, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestRecordInput" + }, + "ty": 0, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestRewardEquipmentSlot" + }, + "ty": 5, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestRewardIntel" + }, + "ty": 6, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestRewardItem" + }, + "ty": 3, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestRewardItemRarity" + }, + "ty": 4, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestRewardSnapshot" + }, + "ty": 2, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestSceneReachedSignal" + }, + "ty": 50, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestSignalApplyInput" + }, + "ty": 44, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestSignalKind" + }, + "ty": 256, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestStatus" + }, + "ty": 1, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestStepSnapshot" + }, + "ty": 10, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestTreasureInspectedSignal" + }, + "ty": 47, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "QuestTurnInInput" + }, + "ty": 296, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RefreshSession" + }, + "ty": 259, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ResolveCombatActionInput" + }, + "ty": 260, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ResolveCombatActionProcedureResult" + }, + "ty": 261, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ResolveCombatActionResult" + }, + "ty": 262, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ResolveNpcBattleInteractionInput" + }, + "ty": 263, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ResolveNpcInteractionInput" + }, + "ty": 264, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "ResolveNpcSocialActionInput" + }, + "ty": 272, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RpgAgentDraftCardKind" + }, + "ty": 129, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RpgAgentDraftCardStatus" + }, + "ty": 130, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RpgAgentMessageKind" + }, + "ty": 127, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RpgAgentMessageRole" + }, + "ty": 126, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RpgAgentOperationStatus" + }, + "ty": 134, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RpgAgentOperationType" + }, + "ty": 133, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RpgAgentStage" + }, + "ty": 124, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeBrowseHistoryClearInput" + }, + "ty": 86, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeBrowseHistoryListInput" + }, + "ty": 224, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeBrowseHistoryProcedureResult" + }, + "ty": 87, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeBrowseHistorySnapshot" + }, + "ty": 88, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeBrowseHistorySyncInput" + }, + "ty": 304, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeBrowseHistoryThemeMode" + }, + "ty": 89, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeBrowseHistoryWriteInput" + }, + "ty": 305, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeInventoryStateProcedureResult" + }, + "ty": 203, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeInventoryStateQueryInput" + }, + "ty": 202, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeInventoryStateSnapshot" + }, + "ty": 204, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeItemEquipmentSlot" + }, + "ty": 63, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeItemRewardItemRarity" + }, + "ty": 62, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeItemRewardItemSnapshot" + }, + "ty": 61, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimePlatformTheme" + }, + "ty": 210, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileDashboardGetInput" + }, + "ty": 191, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileDashboardProcedureResult" + }, + "ty": 192, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileDashboardSnapshot" + }, + "ty": 193, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfilePlayStatsGetInput" + }, + "ty": 194, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfilePlayStatsProcedureResult" + }, + "ty": 195, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfilePlayStatsSnapshot" + }, + "ty": 196, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfilePlayedWorldSnapshot" + }, + "ty": 197, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileSaveArchiveListInput" + }, + "ty": 225, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileSaveArchiveProcedureResult" + }, + "ty": 226, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileSaveArchiveResumeInput" + }, + "ty": 279, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileSaveArchiveSnapshot" + }, + "ty": 227, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileWalletLedgerEntrySnapshot" + }, + "ty": 230, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileWalletLedgerListInput" + }, + "ty": 228, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileWalletLedgerProcedureResult" + }, + "ty": 229, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeProfileWalletLedgerSourceType" + }, + "ty": 231, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSetting" + }, + "ty": 280, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSettingGetInput" + }, + "ty": 207, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSettingProcedureResult" + }, + "ty": 208, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSettingSnapshot" + }, + "ty": 209, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSettingUpsertInput" + }, + "ty": 306, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSnapshot" + }, + "ty": 155, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSnapshotDeleteInput" + }, + "ty": 153, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSnapshotGetInput" + }, + "ty": 211, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSnapshotProcedureResult" + }, + "ty": 154, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSnapshotRow" + }, + "ty": 281, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "RuntimeSnapshotUpsertInput" + }, + "ty": 307, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StoryContinueInput" + }, + "ty": 114, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StoryEvent" + }, + "ty": 288, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StoryEventKind" + }, + "ty": 70, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StoryEventSnapshot" + }, + "ty": 69, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StorySession" + }, + "ty": 289, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StorySessionInput" + }, + "ty": 65, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StorySessionProcedureResult" + }, + "ty": 66, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StorySessionSnapshot" + }, + "ty": 67, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StorySessionStateInput" + }, + "ty": 212, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StorySessionStateProcedureResult" + }, + "ty": 213, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "StorySessionStatus" + }, + "ty": 68, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "TreasureInteractionAction" + }, + "ty": 276, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "TreasureRecord" + }, + "ty": 295, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "TreasureRecordProcedureResult" + }, + "ty": 277, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "TreasureRecordSnapshot" + }, + "ty": 278, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "TreasureResolveInput" + }, + "ty": 275, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "UnequipInventoryItemInput" + }, + "ty": 43, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "UserAccount" + }, + "ty": 308, + "custom_ordering": true + }, + { + "name": { + "scope": [], + "name": "UserBrowseHistory" + }, + "ty": 309, + "custom_ordering": true + } + ], + "misc_exports": [ + { + "Procedure": { + "name": "advance_puzzle_next_level", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 13 + } + } + ] + }, + "return_type": { + "Ref": 14 + } + } + }, + { + "Procedure": { + "name": "append_ai_text_chunk_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 24 + } + } + ] + }, + "return_type": { + "Ref": 25 + } + } + }, + { + "Procedure": { + "name": "apply_chapter_progression_ledger_entry_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 30 + } + } + ] + }, + "return_type": { + "Ref": 31 + } + } + }, + { + "Procedure": { + "name": "attach_ai_result_reference_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 55 + } + } + ] + }, + "return_type": { + "Ref": 25 + } + } + }, + { + "Procedure": { + "name": "begin_story_session_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 65 + } + } + ] + }, + "return_type": { + "Ref": 66 + } + } + }, + { + "Procedure": { + "name": "bind_asset_object_to_entity_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 81 + } + } + ] + }, + "return_type": { + "Ref": 82 + } + } + }, + { + "Procedure": { + "name": "cancel_ai_task_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 84 + } + } + ] + }, + "return_type": { + "Ref": 25 + } + } + }, + { + "Procedure": { + "name": "clear_platform_browse_history_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 86 + } + } + ] + }, + "return_type": { + "Ref": 87 + } + } + }, + { + "Procedure": { + "name": "compile_big_fish_draft", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 90 + } + } + ] + }, + "return_type": { + "Ref": 91 + } + } + }, + { + "Procedure": { + "name": "compile_custom_world_published_profile", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 103 + } + } + ] + }, + "return_type": { + "Ref": 104 + } + } + }, + { + "Procedure": { + "name": "compile_puzzle_agent_draft", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 107 + } + } + ] + }, + "return_type": { + "Ref": 108 + } + } + }, + { + "Procedure": { + "name": "complete_ai_stage_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 109 + } + } + ] + }, + "return_type": { + "Ref": 25 + } + } + }, + { + "Procedure": { + "name": "complete_ai_task_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 110 + } + } + ] + }, + "return_type": { + "Ref": 25 + } + } + }, + { + "Procedure": { + "name": "confirm_asset_object_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 111 + } + } + ] + }, + "return_type": { + "Ref": 112 + } + } + }, + { + "Procedure": { + "name": "continue_story_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 114 + } + } + ] + }, + "return_type": { + "Ref": 66 + } + } + }, + { + "Procedure": { + "name": "create_ai_task_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 115 + } + } + ] + }, + "return_type": { + "Ref": 25 + } + } + }, + { + "Procedure": { + "name": "create_battle_state_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 117 + } + } + ] + }, + "return_type": { + "Ref": 118 + } + } + }, + { + "Procedure": { + "name": "create_big_fish_session", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 120 + } + } + ] + }, + "return_type": { + "Ref": 91 + } + } + }, + { + "Procedure": { + "name": "create_custom_world_agent_session", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 121 + } + } + ] + }, + "return_type": { + "Ref": 122 + } + } + }, + { + "Procedure": { + "name": "create_puzzle_agent_session", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 135 + } + } + ] + }, + "return_type": { + "Ref": 108 + } + } + }, + { + "Procedure": { + "name": "delete_big_fish_work", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 146 + } + } + ] + }, + "return_type": { + "Ref": 147 + } + } + }, + { + "Procedure": { + "name": "delete_custom_world_profile_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 148 + } + } + ] + }, + "return_type": { + "Ref": 149 + } + } + }, + { + "Procedure": { + "name": "delete_puzzle_work", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 151 + } + } + ] + }, + "return_type": { + "Ref": 152 + } + } + }, + { + "Procedure": { + "name": "delete_runtime_snapshot_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 153 + } + } + ] + }, + "return_type": { + "Ref": 154 + } + } + }, + { + "Procedure": { + "name": "drag_puzzle_piece_or_group", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 156 + } + } + ] + }, + "return_type": { + "Ref": 14 + } + } + }, + { + "Procedure": { + "name": "execute_custom_world_agent_action", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 157 + } + } + ] + }, + "return_type": { + "Ref": 158 + } + } + }, + { + "Procedure": { + "name": "export_auth_store_snapshot_from_tables", + "params": { + "elements": [] + }, + "return_type": { + "Ref": 159 + } + } + }, + { + "Procedure": { + "name": "fail_ai_task_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 161 + } + } + ] + }, + "return_type": { + "Ref": 25 + } + } + }, + { + "Procedure": { + "name": "finalize_big_fish_agent_message_turn", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 162 + } + } + ] + }, + "return_type": { + "Ref": 91 + } + } + }, + { + "Procedure": { + "name": "finalize_custom_world_agent_message_turn", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 163 + } + } + ] + }, + "return_type": { + "Ref": 164 + } + } + }, + { + "Procedure": { + "name": "finalize_puzzle_agent_message_turn", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 165 + } + } + ] + }, + "return_type": { + "Ref": 108 + } + } + }, + { + "Procedure": { + "name": "generate_big_fish_asset", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 167 + } + } + ] + }, + "return_type": { + "Ref": 91 + } + } + }, + { + "Procedure": { + "name": "get_auth_store_snapshot", + "params": { + "elements": [] + }, + "return_type": { + "Ref": 159 + } + } + }, + { + "Procedure": { + "name": "get_battle_state", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 168 + } + } + ] + }, + "return_type": { + "Ref": 118 + } + } + }, + { + "Procedure": { + "name": "get_big_fish_run", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 169 + } + } + ] + }, + "return_type": { + "Ref": 170 + } + } + }, + { + "Procedure": { + "name": "get_big_fish_session", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 174 + } + } + ] + }, + "return_type": { + "Ref": 91 + } + } + }, + { + "Procedure": { + "name": "get_chapter_progression", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 175 + } + } + ] + }, + "return_type": { + "Ref": 31 + } + } + }, + { + "Procedure": { + "name": "get_custom_world_agent_card_detail", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 176 + } + } + ] + }, + "return_type": { + "Ref": 177 + } + } + }, + { + "Procedure": { + "name": "get_custom_world_agent_operation", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 180 + } + } + ] + }, + "return_type": { + "Ref": 164 + } + } + }, + { + "Procedure": { + "name": "get_custom_world_agent_session", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 181 + } + } + ] + }, + "return_type": { + "Ref": 122 + } + } + }, + { + "Procedure": { + "name": "get_custom_world_gallery_detail", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 182 + } + } + ] + }, + "return_type": { + "Ref": 183 + } + } + }, + { + "Procedure": { + "name": "get_custom_world_gallery_detail_by_code", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 185 + } + } + ] + }, + "return_type": { + "Ref": 183 + } + } + }, + { + "Procedure": { + "name": "get_custom_world_library_detail", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 186 + } + } + ] + }, + "return_type": { + "Ref": 183 + } + } + }, + { + "Procedure": { + "name": "get_player_progression_or_default", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 187 + } + } + ] + }, + "return_type": { + "Ref": 188 + } + } + }, + { + "Procedure": { + "name": "get_profile_dashboard", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 191 + } + } + ] + }, + "return_type": { + "Ref": 192 + } + } + }, + { + "Procedure": { + "name": "get_profile_play_stats", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 194 + } + } + ] + }, + "return_type": { + "Ref": 195 + } + } + }, + { + "Procedure": { + "name": "get_puzzle_agent_session", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 198 + } + } + ] + }, + "return_type": { + "Ref": 108 + } + } + }, + { + "Procedure": { + "name": "get_puzzle_gallery_detail", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 199 + } + } + ] + }, + "return_type": { + "Ref": 200 + } + } + }, + { + "Procedure": { + "name": "get_puzzle_run", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 201 + } + } + ] + }, + "return_type": { + "Ref": 14 + } + } + }, + { + "Procedure": { + "name": "get_puzzle_work_detail", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 199 + } + } + ] + }, + "return_type": { + "Ref": 200 + } + } + }, + { + "Procedure": { + "name": "get_runtime_inventory_state", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 202 + } + } + ] + }, + "return_type": { + "Ref": 203 + } + } + }, + { + "Procedure": { + "name": "get_runtime_setting_or_default", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 207 + } + } + ] + }, + "return_type": { + "Ref": 208 + } + } + }, + { + "Procedure": { + "name": "get_runtime_snapshot", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 211 + } + } + ] + }, + "return_type": { + "Ref": 154 + } + } + }, + { + "Procedure": { + "name": "get_story_session_state", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 212 + } + } + ] + }, + "return_type": { + "Ref": 213 + } + } + }, + { + "Procedure": { + "name": "grant_player_progression_experience_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 214 + } + } + ] + }, + "return_type": { + "Ref": 188 + } + } + }, + { + "Procedure": { + "name": "import_auth_store_snapshot", + "params": { + "elements": [] + }, + "return_type": { + "Ref": 215 + } + } + }, + { + "Procedure": { + "name": "list_big_fish_works", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 218 + } + } + ] + }, + "return_type": { + "Ref": 147 + } + } + }, + { + "Procedure": { + "name": "list_custom_world_gallery_entries", + "params": { + "elements": [] + }, + "return_type": { + "Ref": 219 + } + } + }, + { + "Procedure": { + "name": "list_custom_world_profiles", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 220 + } + } + ] + }, + "return_type": { + "Ref": 149 + } + } + }, + { + "Procedure": { + "name": "list_custom_world_works", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 221 + } + } + ] + }, + "return_type": { + "Ref": 222 + } + } + }, + { + "Procedure": { + "name": "list_platform_browse_history", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 224 + } + } + ] + }, + "return_type": { + "Ref": 87 + } + } + }, + { + "Procedure": { + "name": "list_profile_save_archives", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 225 + } + } + ] + }, + "return_type": { + "Ref": 226 + } + } + }, + { + "Procedure": { + "name": "list_profile_wallet_ledger", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 228 + } + } + ] + }, + "return_type": { + "Ref": 229 + } + } + }, + { + "Procedure": { + "name": "list_puzzle_gallery", + "params": { + "elements": [] + }, + "return_type": { + "Ref": 152 + } + } + }, + { + "Procedure": { + "name": "list_puzzle_works", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 232 + } + } + ] + }, + "return_type": { + "Ref": 152 + } + } + }, + { + "Procedure": { + "name": "publish_big_fish_game", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 242 + } + } + ] + }, + "return_type": { + "Ref": 91 + } + } + }, + { + "Procedure": { + "name": "publish_custom_world_profile_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 243 + } + } + ] + }, + "return_type": { + "Ref": 183 + } + } + }, + { + "Procedure": { + "name": "publish_custom_world_world", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 244 + } + } + ] + }, + "return_type": { + "Ref": 245 + } + } + }, + { + "Procedure": { + "name": "publish_puzzle_work", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 246 + } + } + ] + }, + "return_type": { + "Ref": 200 + } + } + }, + { + "Procedure": { + "name": "resolve_combat_action_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 260 + } + } + ] + }, + "return_type": { + "Ref": 261 + } + } + }, + { + "Procedure": { + "name": "resolve_npc_battle_interaction_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 263 + } + } + ] + }, + "return_type": { + "Ref": 265 + } + } + }, + { + "Procedure": { + "name": "resolve_npc_interaction_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 264 + } + } + ] + }, + "return_type": { + "Ref": 271 + } + } + }, + { + "Procedure": { + "name": "resolve_npc_social_action_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 272 + } + } + ] + }, + "return_type": { + "Ref": 274 + } + } + }, + { + "Procedure": { + "name": "resolve_treasure_interaction_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 275 + } + } + ] + }, + "return_type": { + "Ref": 277 + } + } + }, + { + "Procedure": { + "name": "resume_profile_save_archive_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 279 + } + } + ] + }, + "return_type": { + "Ref": 226 + } + } + }, + { + "Procedure": { + "name": "save_puzzle_generated_images", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 282 + } + } + ] + }, + "return_type": { + "Ref": 108 + } + } + }, + { + "Procedure": { + "name": "select_puzzle_cover_image", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 283 + } + } + ] + }, + "return_type": { + "Ref": 108 + } + } + }, + { + "Procedure": { + "name": "start_big_fish_run", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 286 + } + } + ] + }, + "return_type": { + "Ref": 170 + } + } + }, + { + "Procedure": { + "name": "start_puzzle_run", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 287 + } + } + ] + }, + "return_type": { + "Ref": 14 + } + } + }, + { + "Procedure": { + "name": "submit_big_fish_input", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 290 + } + } + ] + }, + "return_type": { + "Ref": 170 + } + } + }, + { + "Procedure": { + "name": "submit_big_fish_message", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 291 + } + } + ] + }, + "return_type": { + "Ref": 91 + } + } + }, + { + "Procedure": { + "name": "submit_custom_world_agent_message", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 292 + } + } + ] + }, + "return_type": { + "Ref": 164 + } + } + }, + { + "Procedure": { + "name": "submit_puzzle_agent_message", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 293 + } + } + ] + }, + "return_type": { + "Ref": 108 + } + } + }, + { + "Procedure": { + "name": "swap_puzzle_pieces", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 294 + } + } + ] + }, + "return_type": { + "Ref": 14 + } + } + }, + { + "Procedure": { + "name": "unpublish_custom_world_profile_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 297 + } + } + ] + }, + "return_type": { + "Ref": 183 + } + } + }, + { + "Procedure": { + "name": "update_puzzle_work", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 298 + } + } + ] + }, + "return_type": { + "Ref": 200 + } + } + }, + { + "Procedure": { + "name": "upsert_auth_store_snapshot", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 299 + } + } + ] + }, + "return_type": { + "Ref": 159 + } + } + }, + { + "Procedure": { + "name": "upsert_chapter_progression_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 300 + } + } + ] + }, + "return_type": { + "Ref": 31 + } + } + }, + { + "Procedure": { + "name": "upsert_custom_world_agent_operation_progress", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 301 + } + } + ] + }, + "return_type": { + "Ref": 164 + } + } + }, + { + "Procedure": { + "name": "upsert_custom_world_profile_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 302 + } + } + ] + }, + "return_type": { + "Ref": 183 + } + } + }, + { + "Procedure": { + "name": "upsert_npc_state_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 303 + } + } + ] + }, + "return_type": { + "Ref": 274 + } + } + }, + { + "Procedure": { + "name": "upsert_platform_browse_history_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 304 + } + } + ] + }, + "return_type": { + "Ref": 87 + } + } + }, + { + "Procedure": { + "name": "upsert_runtime_setting_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 306 + } + } + ] + }, + "return_type": { + "Ref": 208 + } + } + }, + { + "Procedure": { + "name": "upsert_runtime_snapshot_and_return", + "params": { + "elements": [ + { + "name": { + "some": "input" + }, + "algebraic_type": { + "Ref": 307 + } + } + ] + }, + "return_type": { + "Ref": 154 + } + } + } + ], + "row_level_security": [] +} diff --git a/backend-rewrite-tasklist/04_M5_CUSTOM_WORLD_AND_AGENT.md b/backend-rewrite-tasklist/04_M5_CUSTOM_WORLD_AND_AGENT.md index 821973e6..5a62ebb7 100644 --- a/backend-rewrite-tasklist/04_M5_CUSTOM_WORLD_AND_AGENT.md +++ b/backend-rewrite-tasklist/04_M5_CUSTOM_WORLD_AND_AGENT.md @@ -79,6 +79,7 @@ - [x] 兼容 `/api/runtime/custom-world/works` - [x] 兼容 `/api/runtime/custom-world/agent/sessions`(Stage 6 首批 Axum facade) - [x] 兼容 `/api/runtime/custom-world/agent/sessions/:sessionId`(Stage 6 首批 Axum facade) +- [x] 兼容 `DELETE /api/runtime/custom-world/agent/sessions/:sessionId`(草稿物理清理;若作品卡误以已发布来源 session 删除,则回落到关联 profile 软删除并返回 works) - [x] 兼容 `/api/runtime/custom-world/agent/sessions/:sessionId/messages`(Stage 7 deterministic message submit) - [x] 兼容 `/api/runtime/custom-world/agent/sessions/:sessionId/messages/stream`(Stage 8 SSE facade) - [x] 兼容 `/api/runtime/custom-world/agent/sessions/:sessionId/actions`(Stage 9 全量 action procedure 已接通) diff --git a/docs/audits/engineering/SERVER_NODE_FREEZE_AND_DEPRECATION_2026-04-24.md b/docs/audits/engineering/SERVER_NODE_FREEZE_AND_DEPRECATION_2026-04-24.md index c5218d37..ff177dd7 100644 --- a/docs/audits/engineering/SERVER_NODE_FREEZE_AND_DEPRECATION_2026-04-24.md +++ b/docs/audits/engineering/SERVER_NODE_FREEZE_AND_DEPRECATION_2026-04-24.md @@ -38,3 +38,15 @@ 2. 确认前端不再通过任何路径调用 Node 后端能力。 3. 删除旧脚本、旧 smoke、旧 manifest 与 `server-node/` 目录。 4. 删除冻结基线检查中对历史引用的豁免。 + +## 6. 已确认迁移项 + +### 6.1 场景幕背景图提示词 + +2026-04-25 已把旧 Node 自动资产链路中的场景幕背景图提示词包装迁移到 Rust 主线: + +1. 旧来源:`server-node/src/services/customWorldAgentAutoAssetService.ts` 的 `buildSceneActPrompt(...)`。 +2. 新主源:`server-rs/crates/api-server/src/custom_world.rs` 的 `build_scene_act_background_image_prompt(...)`。 +3. 使用位置:`generate_draft_foundation_act_backgrounds(...)` 收集 `sceneChapterBlueprints[].acts[]` 后,先构造幕背景图专用提示词,再调用 `generate_custom_world_scene_image_for_profile(...)`。 +4. 保留语义:世界名、场景名、幕标题、幕摘要、幕目标、过渡钩子、主角色、辅助角色、世界气质、背景描述,以及“只生成环境背景,不出现角色立绘、站位 UI、对白框、按钮或文字”的约束。 +5. 迁移边界:`server-node/` 仅作为历史来源说明,不再参与运行;后续调整统一修改 Rust 主源。 diff --git a/docs/design/CREATION_WORK_CARD_DELETE_ICON_DESIGN_2026-04-24.md b/docs/design/CREATION_WORK_CARD_DELETE_ICON_DESIGN_2026-04-24.md index 77889b35..16e0ad73 100644 --- a/docs/design/CREATION_WORK_CARD_DELETE_ICON_DESIGN_2026-04-24.md +++ b/docs/design/CREATION_WORK_CARD_DELETE_ICON_DESIGN_2026-04-24.md @@ -6,7 +6,10 @@ ## 落地规则 -- 作品卡右上角固定展示删除 icon,底部主操作区只保留继续创作、查看详情、体验等正向操作。 +- 作品卡整体就是继续创作 / 继续完善 / 查看详情入口,不再在底部展示“继续完善”等重复主按钮。 +- 作品卡右上角固定展示删除 icon,底部主操作区只保留体验等必须独立触发的正向操作。 +- 点击作品卡任意非独立按钮区域都进入继续完善链路;点击删除或体验时不得冒泡触发作品卡打开。 +- 作品卡保留键盘可访问性:焦点落在卡片时按 Enter 或空格等同点击作品,焦点落在删除 / 体验按钮时只执行对应按钮动作。 - 删除入口不按发布状态隐藏:草稿、已发布作品均可删除。 - 删除入口不按玩法类型隐藏:RPG、大鱼吃小鱼、拼图作品均应在创作页可删除。 - 点击删除前保留浏览器确认弹窗,避免误触;删除中仅禁用当前作品卡的删除 icon。 @@ -18,3 +21,5 @@ - 大鱼作品按 `sourceSessionId` 删除创作 session,并同步清理消息、素材槽和运行快照。 - 拼图作品按 `profileId` 删除作品 profile,并同步清理来源 Agent session、消息和入口运行快照。 - RPG 已发布/持久草稿按 `profileId` 走既有自定义世界删除链路;纯 Agent session 草稿按 `sessionId` 走 owner-only session 删除过程,并清理消息、操作与草稿卡。 +- 自定义世界 Agent 的异步进度写回必须通过 `upsert_custom_world_agent_operation_progress` 过程落到 SpacetimeDB,`server-rs` 只做字符串入参与过程封装,不在 API 层维护额外进度状态。 +- `server-rs` 的删除路由使用 Axum 标准 `Path(sessionId)` 提取参数,并在进入 SpacetimeDB 前做 owner-only 与空值校验,避免 handler 签名和过程入参漂移。 diff --git a/docs/design/PLATFORM_HOME_PUBLIC_BROWSE_AND_LOGIN_MODAL_GATING_DESIGN_2026-04-19.md b/docs/design/PLATFORM_HOME_PUBLIC_BROWSE_AND_LOGIN_MODAL_GATING_DESIGN_2026-04-19.md index 84606332..8eac1260 100644 --- a/docs/design/PLATFORM_HOME_PUBLIC_BROWSE_AND_LOGIN_MODAL_GATING_DESIGN_2026-04-19.md +++ b/docs/design/PLATFORM_HOME_PUBLIC_BROWSE_AND_LOGIN_MODAL_GATING_DESIGN_2026-04-19.md @@ -71,6 +71,7 @@ 弹窗内默认只保留: - 标题:`登录账号` +- 登录方式页签:`短信登录` / `密码登录` - 手机号输入框 - 验证码输入框 - 获取验证码按钮 @@ -88,6 +89,17 @@ - “先登录再同步进度”这类描述性文案 - 占据视觉主体的装饰信息块 +## 3.2.1 登录页签落地约束 + +账号面板需要把短信验证码登录和密码登录拆成互斥页签,避免两个登录表单在同一个面板里上下堆叠。 + +- 同时开放短信与密码登录时,面板顶部展示两个居中的文字页签,当前页签使用深色字重和短下划线强调。 +- 只渲染当前页签对应的输入区;切换页签不弹出新面板,不展示二维码入口。 +- `短信登录` 页签包含手机号、验证码、获取验证码和主按钮。 +- `密码登录` 页签包含手机号/邮箱、密码、主按钮和忘记密码入口。 +- 未开放某个登录方式时不展示对应页签,避免用户进入不可用表单。 +- 移动端页签保持等分点击区域,输入框与按钮宽度仍随弹窗收缩。 + ## 3.3 登录成功后的行为 - 手机号登录成功后,关闭弹窗 diff --git a/docs/experience/PC_WORLD_CREATION_LAYOUT_OPTIMIZATION_2026-04-24.md b/docs/experience/PC_WORLD_CREATION_LAYOUT_OPTIMIZATION_2026-04-24.md index ec1936ab..bb4fb97b 100644 --- a/docs/experience/PC_WORLD_CREATION_LAYOUT_OPTIMIZATION_2026-04-24.md +++ b/docs/experience/PC_WORLD_CREATION_LAYOUT_OPTIMIZATION_2026-04-24.md @@ -24,4 +24,8 @@ - PC 端使用更明确的 `xl:grid`、固定信息侧栏和更小间距,让主内容首屏承载更多信息。 - 卡片在 PC 端降低无效高度,操作按钮与状态信息尽量同行展示。 +- 作品卡片底部统计标签必须保留在卡片圆角范围内,不能为了压缩高度让标签贴边或被 `overflow-hidden` 裁掉。 +- 卡片正文摘要优先缩短行数来给底部标签留空间;当标题、摘要或标签变长时,允许卡片自然增高。 +- RPG 作品卡片点击行为按作品状态分流:草稿统一继续创作,已发布作品进入详情或世界;不要只依赖 `sourceType` 判断草稿可打开性。 +- 整张作品卡片需要由卡片根节点承载点击与键盘打开能力,避免透明绝对定位按钮在真实浏览器中被判定不可见,导致自动化和用户点击不稳定。 - 保留现有 `platform-*` 视觉体系,避免引入新的 UI 系统。 diff --git a/docs/experience/PROJECT_DEVELOPMENT_EXPERIENCE.md b/docs/experience/PROJECT_DEVELOPMENT_EXPERIENCE.md index fb0e209e..6f3a725b 100644 --- a/docs/experience/PROJECT_DEVELOPMENT_EXPERIENCE.md +++ b/docs/experience/PROJECT_DEVELOPMENT_EXPERIENCE.md @@ -249,7 +249,19 @@ 3. 针对初始同伴流程补一份单独的状态图 / 时序图 4. 对大 chunk 警告做代码分包 -## 14. 一句话总结 +## 14. SpacetimeDB 绑定桥接层要做同名去重 + +`server-rs/crates/spacetime-client` 里有一部分内容是围绕 SpacetimeDB 生成绑定补的手写桥接层。 + +经验: + +- 新增 procedure、input type 或 mapper 时,先全局确认 `module_bindings/mod.rs`、`mapper.rs`、业务封装文件里是否已经存在同名声明 +- `module_bindings/mod.rs` 同一个模块只保留一条 `pub mod` 和一条 `pub use`,不要同时放在 reducer 区和 procedure 区 +- `mapper.rs` 的字符串枚举解析函数、API 入参结构只保留一个权威定义,业务侧统一复用 +- 业务封装文件里同一个 procedure 只暴露一个客户端方法,避免 Rust 在编译期出现 E0428、E0252、E0119、E0592 这类重复定义错误 +- 修复重复绑定时优先删除后追加的重复块,不要重写整文件,避免影响中文注释和生成绑定附近的大段内容 + +## 15. 一句话总结 这个项目真正的开发经验不是“怎么多写一个按钮”,而是: diff --git a/docs/experience/README.md b/docs/experience/README.md index 878fa35e..7257edf2 100644 --- a/docs/experience/README.md +++ b/docs/experience/README.md @@ -23,3 +23,7 @@ - 只需要读一份时,优先看 `PROJECT_WORK_EXPERIENCE_PLAYBOOK`。 - 做 UI 改动时,把本目录和根目录的 `UI_CODING_STANDARD.md` 对照着看。 - 做运行时流程改动时,把本目录和 `docs/audits/engineering/README.md` 一起看,能更快发现风险边界。 + +## 近期专项记录 + +- [RPG_DRAFT_IMAGE_PARALLEL_GENERATION_2026-04-24.md](./RPG_DRAFT_IMAGE_PARALLEL_GENERATION_2026-04-24.md):记录 RPG 底稿阶段角色主形象与场景背景图并行生成约束。 diff --git a/docs/experience/RPG_ACT_BACKGROUND_PROMPT_SOURCE_2026-04-24.md b/docs/experience/RPG_ACT_BACKGROUND_PROMPT_SOURCE_2026-04-24.md new file mode 100644 index 00000000..a9a3d499 --- /dev/null +++ b/docs/experience/RPG_ACT_BACKGROUND_PROMPT_SOURCE_2026-04-24.md @@ -0,0 +1,32 @@ +# RPG 幕背景默认描述来源修正 2026-04-24 + +## 背景 + +草稿编辑器中“AI 生成幕背景”的“画面内容描述”曾出现类似“温馨员工宿舍第1幕背景;玩家入职后的首个落脚处;玩家会在温馨员工宿舍接住这一章的开场入口。”的默认文本。这类文本不是大模型直接写出的画面描述,而是前端或后端在缺少 `backgroundPromptText` 时,把地点名、幕标题、摘要规则句拼接出来的兜底文案。 + +## 落地约束 + +1. 幕背景图的默认画面描述必须来自草稿生成链路里的关键场景生成步骤,字段源为 `landmarks[*].actBackgroundPromptTexts[*]`。 +2. `sceneChapterBlueprints[*].acts[*].backgroundPromptText` 只承接上述幕级大模型产物,不再用 `title`、`summary`、地点描述或规则句拼接。 +3. 如果大模型漏产某一幕描述,后端规范化只保留空字符串,让后续生图前的 `backgroundPromptText` 校验暴露底稿质量问题,不能伪造可用默认文本。 +4. 前端编辑器 sanitize 只展示已有 `act.backgroundPromptText`;缺失时留空,不能在 UI 层重新拼接默认描述。 +5. 手动打开 AI 生成面板时,若字段为空,可由用户输入,但系统默认不替用户生成规则句。 + +## 当前实现 + +- `server-rs/crates/api-server/src/custom_world_foundation_draft.rs` 的关键场景框架 prompt 要求 LLM 为每个地点生成 3 条 `actBackgroundPromptTexts`。 +- 草稿合成阶段通过 `build_scene_chapter_blueprints_from_landmarks` 把这些幕级描述写入 `sceneChapterBlueprints[*].acts[*].backgroundPromptText`。 +- `normalize_scene_act_blueprint` 不再把缺失描述补成“标题 + 摘要 + 通用场景背景”格式。 +- `src/components/rpg-creation-editor/RpgCreationEntityEditorShared.tsx` 不再用地点名、幕标题和 `actSummary` 生成 `backgroundPromptText` fallback。 + +## 验收要点 + +- 新草稿中每一幕的 `backgroundPromptText` 应该像自然的画面描述,包含主体、前中远景、站位空间、氛围识别点。 +- 不应再出现“第1幕背景;玩家会在……”这类明显拼接句。 +- 如果 LLM 漏掉 `actBackgroundPromptTexts`,生成幕背景图阶段应失败并提示缺少 `backgroundPromptText`,而不是静默使用拼接文案。 + +## 2026-04-24 并发限流错误处理补充 + +- 批量生成幕背景图时,`JoinSet` 子任务的成功值和失败值固定承载 `(chapter_index, act_index, message)`,用于把错误精确标记回对应章节幕。 +- `Semaphore::acquire` 的 `AcquireError` 不能在子任务中转成裸 `String` 后直接使用 `?`,否则会破坏子任务统一错误类型并导致 `E0277`。 +- 限流器异常应映射为同一组三元组错误,保持后续 `mark_scene_act_background_generation_error` 和部分成功保留逻辑可复用。 diff --git a/docs/experience/RPG_DRAFT_IMAGE_PARALLEL_GENERATION_2026-04-24.md b/docs/experience/RPG_DRAFT_IMAGE_PARALLEL_GENERATION_2026-04-24.md new file mode 100644 index 00000000..07f29458 --- /dev/null +++ b/docs/experience/RPG_DRAFT_IMAGE_PARALLEL_GENERATION_2026-04-24.md @@ -0,0 +1,36 @@ +# RPG 底稿图片并行生成说明 2026-04-24 + +## 背景 + +RPG 草稿生成进入底稿素材阶段后,角色主形象与场景幕背景图都依赖同一份结构化底稿,但二者之间没有数据依赖。旧流程先生成所有角色主形象,再生成场景背景图,导致用户需要串行等待两类图片任务。 + +## 落地约束 + +1. 角色主形象与场景背景图必须在 API 编排层并行发起,且类内每个角色、每一幕背景也必须同时调用生图接口,不能只做到“角色大类”和“背景大类”并行。这里的场景背景图指 `sceneChapterBlueprints[*].acts[*]` 中每一幕的 `backgroundImageSrc`,不是世界封面图,也不是只按章节或地点生成一张图。 +2. SpacetimeDB reducer 只负责持久化操作进度和底稿写入,不承载外部 LLM / 图片生成调用。 +3. 生图前必须已经有文本设定:角色主形象使用角色对象的 `visualDescription`;幕背景图使用对应幕的 `backgroundPromptText`。缺字段时应中断并暴露底稿质量问题,不能退回 `description`、`summary` 或通用兜底词直接生图。 +4. 并行分支各自基于同一份底稿副本写入素材字段,完成后只合并背景图生成产物字段,避免覆盖角色图片字段或其他草稿内容。 +5. 单个大类失败仍按原有失败语义终止底稿写入,保留“生成角色主形象失败”和“生成幕背景图失败”的进度提示。 + +## 当前实现 + +- `server-rs/crates/api-server/src/custom_world.rs` 在 `spawn_custom_world_draft_foundation_job` 中使用 `tokio::join!` 同时执行: + - `generate_draft_foundation_role_visuals` + - `generate_draft_foundation_act_backgrounds` +- 角色分支使用 `JoinSet` 把所有角色主形象任务一次性投递,返回后再按角色位置写入 `imageSrc` 与 `generatedVisualAssetId`。 +- 背景分支使用 `JoinSet` 把 `sceneChapterBlueprints[*].acts[*]` 的每一幕背景任务一次性投递,返回后写入 `backgroundImageSrc`、`backgroundAssetId`、`generatedScenePrompt`、`generatedSceneModel`。 +- `merge_generated_act_backgrounds` 只把背景图字段合并回角色分支副本,再进入后续草稿卡编译和 SpacetimeDB 写入。 +- 幕背景 prompt 同时兼容 `backgroundPromptText`、`scenePromptText`、`visualPromptText`、`promptText`、`imagePromptText`、`backgroundPrompt`、`visualPrompt`,避免 LLM 输出字段别名导致整批背景图被误判缺失。 +- 每个角色主形象、每一幕背景图都必须独立自动重试,单项最多尝试 3 次。幕背景图允许部分成功:只要至少一幕成功,就必须保留已成功写入的 `backgroundImageSrc` 并继续生成草稿卡;全部幕都失败时才把素材阶段标记为“生成幕背景图失败”。 +- 图片任务仍然一次性投递,保证角色与幕背景两类任务不回退到串行编排;但真正请求上游生图服务时必须共用并发闸门。并发数由 `GENARRATIVE_DRAFT_ASSET_GENERATION_MAX_CONCURRENT_REQUESTS` 或 `DRAFT_ASSET_GENERATION_MAX_CONCURRENT_REQUESTS` 配置,默认 4,避免固定为 2 导致多角色、多幕草稿总耗时过长。 +- 幕背景图失败文案必须带第几章、第几幕和幕标题,不能只显示“第1幕 / 第2幕 / 第3幕”,否则多章节同名幕会被用户误认为同一失败项重复上报。 +- 中止或部分失败前必须持久化已经成功生成的部分底稿到会话 `draftProfile`,不能因为某个角色或某一幕失败而丢掉其它已生成的 `imageSrc / generatedVisualAssetId / backgroundImageSrc / backgroundAssetId`。 +- 每一幕自动生图必须记录 operation、session、第几章、第几幕、sceneId、sceneName、attempt、elapsedMs 与供应商真实错误,避免再次出现只看到“生成幕背景图失败”但无法定位哪张图、哪次请求、哪个上游原因的问题。 +- 前端 `CharacterAnimator` 对带 `generatedVisualAssetId` 但尚无 `animationMap` 的自定义角色,所有状态优先渲染生成主图;只有真正发布了动作集后才按动作帧播放,避免运行或战斗状态回落到模板 sprite。 + +## 后续注意 + +如果后续图片供应商出现强限流,再在网关层做队列或供应商侧限流;不要在 RPG 底稿编排层恢复逐张串行,否则会重新退化成多张图片总耗时累加。 + + + diff --git a/docs/experience/RPG_ROLE_VISUAL_DESCRIPTION_CHAIN_2026-04-24.md b/docs/experience/RPG_ROLE_VISUAL_DESCRIPTION_CHAIN_2026-04-24.md new file mode 100644 index 00000000..9c3f0d2a --- /dev/null +++ b/docs/experience/RPG_ROLE_VISUAL_DESCRIPTION_CHAIN_2026-04-24.md @@ -0,0 +1,30 @@ +# RPG 角色形象描述数据链路核查 2026-04-24 + +## 结论 + +草稿生成阶段会让大模型为每个可扮演角色和场景角色生成 `visualDescription`,该字段是角色主形象生成和资产工坊“形象描述”输入框的同一份默认文本来源。 + +本次核查发现前端 `normalizeCustomWorldProfileRecord` 曾在规范化 `playableNpcs` / `storyNpcs` 时丢弃 `visualDescription`、`actionDescription`、`sceneVisualDescription`。因此后端草稿 JSON 中有大模型生成的文字,但草稿进入前端编辑器后,资产工坊可能只能回退到 `description`,用户看不到真正的角色形象文字描述。 + +## 数据链路 + +1. 后端草稿生成:`server-rs/crates/api-server/src/custom_world_foundation_draft.rs` + - 角色框架名单 prompt 要求 LLM 输出 `visualDescription`、`actionDescription`、`sceneVisualDescription`。 + - `visualDescription` 定义为打开角色形象图像生成面板时默认填入的角色形象描述。 +2. 后端角色主形象生成:`server-rs/crates/api-server/src/custom_world.rs` + - `generate_draft_foundation_role_visuals` 从角色对象读取 `visualDescription`。 + - 缺失时直接失败,提示不能在角色形象设定文本生成前生图。 + - 生图成功只写回 `imageSrc` 和 `generatedVisualAssetId`,不会覆盖 `visualDescription`。 +3. 草稿持久化:草稿 profile JSON 保留角色对象字段,`visualDescription` 应与图片字段一起进入保存载荷。 +4. 前端规范化:`src/data/customWorldLibrary.ts` + - `normalizePlayableNpc` / `normalizeStoryNpc` 必须保留三类资产描述字段。 +5. 资产工坊展示:`src/components/rpg-creation-asset-studio/RpgCreationRoleAssetStudioModalImpl.tsx` + - modal 用角色对象构造 `baseRole`。 + - `buildDefaultRolePromptBundle(baseRole)` 优先把 `role.visualDescription` 转成 `visualPromptText`。 + - `RpgCreationRoleVisualSection` 的“形象描述” TextArea 展示 `visualPromptText`。 + +## 验收要点 + +- 草稿生成完毕后,打开某个角色的资产工坊,应在“形象描述”框看到 LLM 生成的 `visualDescription`。 +- 如果角色有 `visualDescription`,缓存中的旧 `visualPromptText` 不应覆盖它。 +- 如果角色缺 `visualDescription`,才允许前端回退到更弱的字段或缓存文本。 diff --git a/docs/prd/AI_NATIVE_AGENT_FIRST_CUSTOM_WORLD_CREATOR_PHASE4_IMPLEMENTATION_PLAN_2026-04-14.md b/docs/prd/AI_NATIVE_AGENT_FIRST_CUSTOM_WORLD_CREATOR_PHASE4_IMPLEMENTATION_PLAN_2026-04-14.md index a936102d..be0a52ff 100644 --- a/docs/prd/AI_NATIVE_AGENT_FIRST_CUSTOM_WORLD_CREATOR_PHASE4_IMPLEMENTATION_PLAN_2026-04-14.md +++ b/docs/prd/AI_NATIVE_AGENT_FIRST_CUSTOM_WORLD_CREATOR_PHASE4_IMPLEMENTATION_PLAN_2026-04-14.md @@ -361,10 +361,26 @@ 1. `id` 2. `name` 3. `role` -4. `publicMask` -5. `hiddenHook` -6. `relationToPlayer` -7. `summary` +4. `description` +5. `visualDescription` +6. `actionDescription` +7. `sceneVisualDescription` +8. `publicMask` +9. `hiddenHook` +10. `relationToPlayer` +11. `summary` + +### 角色资产工坊默认文本来源 + +`visualDescription` 是角色主形象生成入口的默认形象描述主源,必须在可扮演角色 / 场景角色的草稿生成步骤中跟随角色一并生成,不允许在资产工坊打开时再用本地规则把 `description`、`role`、`tags` 拼成默认文案。 + +生成要求: + +1. `description` 只写角色定位,控制在 8 到 18 个汉字内,用于角色卡摘要。 +2. `visualDescription` 专门写角色外观,包含轮廓、服饰 / 身体特征、携带物或材质气质,不写性格规则和玩法说明。 +3. `actionDescription` 专门写动作气质,用于动作生成默认文本。 +4. `sceneVisualDescription` 专门写角色常出现的场景氛围,用于场景图或角色场景联动默认文本。 +5. 资产工坊默认值优先读取 `visualDescription`,只有历史草稿缺失该字段时才允许回退到 `description`。 ### 插入规则 diff --git a/docs/technical/AI_GENERATION_DRAFT_PERSISTENCE_DESIGN_2026-04-24.md b/docs/technical/AI_GENERATION_DRAFT_PERSISTENCE_DESIGN_2026-04-24.md new file mode 100644 index 00000000..7fa519bc --- /dev/null +++ b/docs/technical/AI_GENERATION_DRAFT_PERSISTENCE_DESIGN_2026-04-24.md @@ -0,0 +1,53 @@ +# AI 生成过程草稿持久化设计(2026-04-24) + +## 1. 背景 + +当前创作类模板已经具备 session / message / operation 级别的最终态落库能力,但部分流式生成只把模型增量推给前端。若 HTTP/SSE 连接、浏览器页面或 LLM 请求在最终解析前中断,用户只能看到短暂流式文本,服务端缺少可恢复的生成中间态。 + +本设计补齐“生成过程中已经生成的内容必须持续持久化”的机制,并要求该机制对所有创作模板统一生效。 + +## 2. 目标 + +1. 每次模板生成开始前创建或绑定一个 `ai_task`。 +2. 模型每次产出可见文本增量时,写入 `ai_text_chunk`,并同步更新 `ai_task.latest_text_output` 与对应 stage 的 `text_output`。 +3. 生成失败或连接中断时,不丢弃已经落库的 chunk;后续可用 `ai_task.latest_text_output` 作为续写上下文。 +4. 成功解析并 finalize 后,将最终结构化结果继续写回各模板原有 session 表,保持现有业务快照不变。 + +## 3. 统一落库边界 + +### 3.1 真相表 + +- `ai_task`:记录一次模板生成任务的业务来源、状态、最新聚合文本、结构化结果。 +- `ai_task_stage`:记录模板生成阶段状态;当前创作对话统一使用 `DraftGeneration`。 +- `ai_text_chunk`:按 `sequence` 追加保存模型增量文本,是断点恢复的最小粒度。 + +### 3.2 适用模板 + +- 自定义世界创作 Agent。 +- 解谜游戏创作 Agent。 +- 大鱼吃小鱼创作 Agent。 +- 后续新增模板必须复用同一生成草稿持久化工具,不允许只在 UI 内存保存流式文本。 + +## 4. 续写策略 + +1. 发起生成时,后端根据 `template_key + session_id + operation_id` 创建稳定 `task_id`。 +2. LLM 流式回调收到 `replyText` 的最新可见文本后,计算相对上一次文本的增量;只有非空增量写入 `ai_text_chunk`。 +3. 写入失败不应阻断当前生成主流程,但必须记录 warn 日志,避免因持久化瞬时失败导致用户生成直接失败。 +4. 若最终解析失败,`ai_task` 保持 `Running` 或显式 `Failed`,已写入的 `latest_text_output` 仍可作为下一轮 prompt 的“已生成草稿”。 +5. 下一轮续写 prompt 应优先带上最近未完成任务的 `latest_text_output`;本次先落地服务端 chunk 持久化能力,后续模板 prompt 可逐步消费该草稿。 + +## 5. 编码要求 + +1. 持久化逻辑放在 `server-rs/crates/api-server` 的通用工具中,由各模板路由接入。 +2. 不引入 `server-node` 兼容分支。 +3. SpacetimeDB 写入必须通过 `spacetime-client` 已生成绑定,不在 reducer 中访问网络或文件系统。 +4. 所有新增 Rust 代码保留中文注释,且只做局部修改,避免重写包含中文的大文件。 + +## 6. 失败排查原文日志 + +1. RPG 草稿生成链路的模型输入与模型输出原文日志统一收口在 `platform-llm` 网关层,避免每个模板调用点重复实现。 +2. 只有发生请求失败、上游非 2xx、响应读取失败、JSON/SSE 解析失败或空响应时,才将本次模型输入与已拿到的模型输出原文分别写入文件;正常成功生成不默认落盘原文,避免日志体积不可控。 +3. 日志目录默认使用仓库运行目录下的 `logs/llm-raw`,可通过 `LLM_RAW_LOG_DIR` 覆盖;每次失败写成同一 trace 前缀下的 `*.input.json` 与 `*.output.txt` 两个 UTF-8 文件。 +4. `*.input.json` 记录 provider、model、stream、attempt、maxTokens 与完整 messages;`*.output.txt` 记录上游 HTTP 原文、非流式响应原文、SSE 原始事件文本,或请求尚未到达上游时的错误摘要。 +5. 文件名只使用时间戳、进程号、递增序号与安全化错误阶段,不包含用户输入、sessionId 或 API key;输入 JSON 不写入 API key。 +6. 文件日志失败只写 warn,不影响草稿生成主错误返回;该日志仅用于本地开发与排障,不作为 SpacetimeDB 真相态。 diff --git a/docs/technical/CREATION_AGENT_PUBLISH_GATE_NORMALIZE_WRITEBACK_FIX_2026-04-24.md b/docs/technical/CREATION_AGENT_PUBLISH_GATE_NORMALIZE_WRITEBACK_FIX_2026-04-24.md new file mode 100644 index 00000000..7b43637d --- /dev/null +++ b/docs/technical/CREATION_AGENT_PUBLISH_GATE_NORMALIZE_WRITEBACK_FIX_2026-04-24.md @@ -0,0 +1,35 @@ +# 创作 Agent 发布门槛结果页归一化回写修正 + +日期:`2026-04-24` + +## 1. 问题现象 + +`custom_world.publish_gate` 诊断日志显示: + +1. `has_draft_profile=true` +2. `has_result_preview=true` +3. `has_world_hook=true` +4. `has_core_conflicts=true` +5. 但仍存在 `publish_missing_player_premise / publish_missing_main_chapter / publish_missing_first_act` + +这说明接口可正常读取 session,问题不在 `GET /api/runtime/custom-world/agent/sessions/:sessionId` 本身,而在结果页 profile 回写到 session 时,发布门槛需要的部分结构字段没有稳定保留下来。 + +## 2. 根因 + +前端结果页通过 `normalizeCustomWorldProfileRecord` 把 `resultPreview.preview` 转成 `CustomWorldProfile`。该归一化模型原本主要服务作品库与运行时展示,只保留了 `settingText / summary / playerGoal / creatorIntent / anchorContent / sceneChapterBlueprints` 等字段,没有把后端发布门槛直接读取的顶层 `worldHook / playerPremise` 纳入 `CustomWorldProfile` 稳定字段。 + +当自动保存或发布前执行 `sync_result_profile` 时,前端会把归一化后的 profile 传回 SpacetimeDB。若这份 profile 中缺少顶层 `playerPremise`,且 `creatorIntent / anchorContent` 又未包含可读玩家切入字段,后端最终 publish gate 会继续报 `publish_missing_player_premise`。 + +## 3. 修复口径 + +1. `CustomWorldProfile` 显式声明 `worldHook / playerPremise` 为 Agent 发布快照兼容字段。 +2. `normalizeCustomWorldProfileRecord` 保留顶层 `worldHook / playerPremise`,并在缺失时从 `creatorIntent.worldHook / creatorIntent.playerPremise / summary / playerGoal` 做最小回填。 +3. 不在 UI 新增规则说明文案;这两个字段只作为后端发布门槛与 session 回写的稳定数据槽位。 +4. 后端 publish gate 继续以 SpacetimeDB 中的 `draft_profile_json` 为最终真相源,前端只负责把结果页当前 profile 完整同步回去。 + +## 4. 验收标准 + +1. 从 `resultPreview.preview` 构建结果页 profile 后,`worldHook / playerPremise` 不会被前端归一化丢弃。 +2. 自动保存或点击发布前执行 `sync_result_profile` 时,传回后端的 profile 保留发布门槛所需顶层字段。 +3. 若当前草稿确实包含玩家切入与 `sceneChapterBlueprints[*].acts`,后端诊断日志不应再出现对应结构 blocker。 +4. 若草稿真实缺失章节或第一幕,`publish_missing_main_chapter / publish_missing_first_act` 仍应保留,不做前端假放行。 diff --git a/docs/technical/CUSTOM_WORLD_ASSET_PROMPT_DEFAULTS_2026-04-24.md b/docs/technical/CUSTOM_WORLD_ASSET_PROMPT_DEFAULTS_2026-04-24.md index 8e9b3da1..7883774c 100644 --- a/docs/technical/CUSTOM_WORLD_ASSET_PROMPT_DEFAULTS_2026-04-24.md +++ b/docs/technical/CUSTOM_WORLD_ASSET_PROMPT_DEFAULTS_2026-04-24.md @@ -52,3 +52,14 @@ - 不再把 `server-node/src/prompts/characterAssetPrompts.ts` 作为主链修改目标。 - 默认描述字段必须由世界草稿生成阶段写入,前端只负责把字段填入输入框并允许用户编辑。 - UI 不默认展示规则解释文案,正式约束只进入后端 prompt。 + +## 5. 自动草稿素材回写约束 + +- 世界草稿自动素材生成与草稿页手动生成使用同一套 `server-rs/crates/api-server/src/custom_world_ai.rs` 场景图接口和 OSS/SpacetimeDB 资产持久化链路。 +- 自动批量生成幕背景时,后端必须把已成功生成的 `backgroundImageSrc/backgroundAssetId/generatedScenePrompt/generatedSceneModel` 写回 `sceneChapterBlueprints[*].acts[*]`,不能因为同批某一幕失败而丢弃已成功图片。 +- 某一幕连续重试仍失败时,只允许在该幕写入 `backgroundGenerationError` 作为诊断字段;只要至少一幕成功,草稿仍应完成并让前端展示成功图片。 +- 只有全部幕背景均失败时,才把“生成幕背景图失败”作为草稿素材阶段失败原因保存。 +- Rust 服务实际生图模型读取 `DASHSCOPE_SCENE_IMAGE_MODEL` / `DASHSCOPE_COVER_IMAGE_MODEL` / `DASHSCOPE_REFERENCE_IMAGE_MODEL`;兼容旧 `DASHSCOPE_IMAGE_MODEL`,避免 `.env.example` 中配置了模型但服务端仍使用硬编码模型。 +- 自动草稿幕背景不能把 `backgroundPromptText` 直接作为最终 `prompt` 传给 DashScope;它必须像草稿页手动生成一样,把幕级描述作为 `userPrompt`,并用同一个地点对象的 `name/description/dangerLevel` 作为场景上下文,再由 `build_custom_world_scene_image_prompt` 统一拼入世界名、世界摘要、风格、玩家目标、场景名、场景描述和负面词。用户不修改默认描述直接点生成时,手动生成与自动草稿生成的正式生图上下文必须一致。 +- 自动草稿幕背景的默认尺寸必须与草稿页手动生成默认尺寸一致,当前统一为 `1280*720`;不能在自动链路中单独改成 `1600*900`,否则同一 prompt 在同一模型下也可能因供应商尺寸支持或耗时不同而表现不一致。 +- 批量自动生图失败日志必须保留 `AppError.details.message` 中的供应商真实原因,不能只记录 `AppError.message()` 的 HTTP 泛化文案,否则排查时只能看到“上游服务请求失败”,无法确认是尺寸、模型、限流、超时还是内容审核失败。 diff --git a/docs/technical/CUSTOM_WORLD_DRAFT_ASSET_PREVIEW_2026-04-24.md b/docs/technical/CUSTOM_WORLD_DRAFT_ASSET_PREVIEW_2026-04-24.md new file mode 100644 index 00000000..a5bf2a4a --- /dev/null +++ b/docs/technical/CUSTOM_WORLD_DRAFT_ASSET_PREVIEW_2026-04-24.md @@ -0,0 +1,41 @@ +# 世界草稿图片生成与预览补齐说明 + +更新时间:`2026-04-24` + +## 1. 检查结论 + +当前 server-rs 的世界底稿生成链路已经在 `draft_foundation` 后台任务中补齐两类图片: + +1. `playableNpcs` 与 `storyNpcs` 中的每个角色都会调用角色主形象生成链路,并把 `imageSrc`、`generatedVisualAssetId` 写回底稿。 +2. `sceneChapterBlueprints[].acts[]` 中的每一幕都会调用场景图生成链路,并把 `backgroundImageSrc`、`backgroundAssetId`、生成提示词与模型信息写回底稿。 + +图片生成后不落本地真值,而是通过 OSS `put_object -> head_object -> confirm_asset_object -> bind_asset_object_to_entity` 确认对象,并用兼容的 `/generated-*` 路径供前端读取。 + +## 2. 前端缺口 + +结果页的场景列表此前只把每个场景的第一张幕背景图作为场景卡封面。这样虽然后端已经生成了每一幕图片,但用户只能看到第一幕,无法在结果页确认同一场景下其他幕的图片是否存在。 + +## 3. 本次落地 + +1. 在 `CustomWorldEntityCatalog` 中增加每幕图片缩略条,来源为当前场景匹配到的 `sceneChapterBlueprints[].acts[].backgroundImageSrc`。 +2. 保留原来的场景卡封面策略:第一幕背景图仍作为主封面,旧的场景图字段继续作为兜底。 +3. 缩略条只展示已生成图片的幕,不额外暴露章节结构文本,避免结果页变成规则说明面板。 +4. 增加结果页测试,覆盖同一场景下两幕背景图都能在前端以图片形式预览。 + +## 4. 验收点 + +1. 生成世界草稿完成后,角色页签中所有可扮演角色和场景角色能展示 `imageSrc`。 +2. 场景页签中,每个场景卡片仍展示主封面。 +3. 场景卡片下方能横向预览该场景所有已生成幕背景图。 +4. OSS 未配置或上传失败时,后端任务应失败并把错误写入 operation,而不是生成伪本地路径。 + +## 5. 上游图片服务失败降级 + +`draft_foundation` 的底稿文本结构是进入结果页和继续编辑的主产物,角色主图、幕背景图属于可后补资产。若 DashScope 或 OSS 上游临时不可用,后台任务不应把整份底稿标记为失败。 + +本次补充后: + +1. 角色主图分支失败时,operation 记录错误信息并继续使用未带角色图的底稿。 +2. 幕背景图分支失败时,operation 记录错误信息并继续使用未带幕图的底稿。 +3. 已成功的并行资产分支仍会合并回底稿,不会被失败分支覆盖。 +4. 后续可通过资产工坊或单项生成动作补齐缺失图片。 diff --git a/docs/technical/README.md b/docs/technical/README.md index 8cee0a2a..296d9fe6 100644 --- a/docs/technical/README.md +++ b/docs/technical/README.md @@ -7,6 +7,8 @@ - [BIG_FISH_DIRECTION_TOUCH_CONTROL_2026-04-24.md](./BIG_FISH_DIRECTION_TOUCH_CONTROL_2026-04-24.md):记录大鱼吃小鱼从固定摇杆改为屏幕首触点方向控制,并要求本地直达局在未操作时保持对象运动。 - [BIG_FISH_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md](./BIG_FISH_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md):记录 `/big-fish` 大鱼吃小鱼玩法直达入口,明确复用现有 `BigFishRuntimeShell` 和本地占位运行态的调试边界。 - [PUZZLE_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md](./PUZZLE_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md):记录 `/puzzle` 拼图玩法直达入口,明确复用现有 `PuzzleRuntimeShell` 和本地占位图运行态的调试边界。 +- [CREATION_AGENT_PUBLISH_GATE_NORMALIZE_WRITEBACK_FIX_2026-04-24.md](./CREATION_AGENT_PUBLISH_GATE_NORMALIZE_WRITEBACK_FIX_2026-04-24.md):记录结果页 profile 归一化回写丢失顶层 `worldHook / playerPremise` 导致 publish gate 继续误报结构 blocker 的根因,并冻结前端归一化保留发布字段的修复口径。 + - [CUSTOM_WORLD_RESULT_ENTITY_GENERATION_FIX_2026-04-24.md](./CUSTOM_WORLD_RESULT_ENTITY_GENERATION_FIX_2026-04-24.md):记录世界结果页在 Agent 草稿模式下新增场景、新增 NPC 生成成功但结果页字段不可用的根因,并冻结 `api-server` 生成归一化层补齐 profile 字段的修复口径。 - [ADMIN_CONSOLE_SERVICE_DESIGN_2026-04-23.md](./ADMIN_CONSOLE_SERVICE_DESIGN_2026-04-23.md):冻结 Rust `api-server` 内后台管理服务首版方案,明确管理员用户名密码登录、管理员 JWT 鉴权、数据库概览、受控 API 调试台与同源管理页面的落地边界。 - [SPACETIME_MODULE_LIB_RS_SPLIT_EXECUTION_2026-04-23.md](./SPACETIME_MODULE_LIB_RS_SPLIT_EXECUTION_2026-04-23.md):冻结 `server-rs/crates/spacetime-module/src/lib.rs` 的模块地图、二级落位点与迁移顺序,要求后续 SpacetimeDB 主工程改动按对应模块落位,不再继续堆回单大文件。 @@ -164,4 +166,3 @@ - diff --git a/docs/technical/RPG_GENERATION_RESTORE_AND_PERSISTENCE_2026-04-24.md b/docs/technical/RPG_GENERATION_RESTORE_AND_PERSISTENCE_2026-04-24.md new file mode 100644 index 00000000..b508be0b --- /dev/null +++ b/docs/technical/RPG_GENERATION_RESTORE_AND_PERSISTENCE_2026-04-24.md @@ -0,0 +1,26 @@ +# RPG 生成流程刷新恢复与即时持久化设计(2026-04-24) + +## 背景 +- RPG 共创从 Agent 聊天页触发 `draft_foundation` 后进入生成过程页。 +- 旧实现只持久化 `activeSessionId` 与 `activeOperationId`,刷新时恢复入口会无条件回到 Agent 聊天页。 +- operation 失败后继续创作也会因为 operation 指针被清空而缺失生成页上下文。 + +## 目标 +1. 生成中刷新网页后仍停留在生成过程页。 +2. 生成完成后结果页内容第一时间落入作品持久化链路。 +3. 生成失败后从创作入口继续处理该草稿时,优先回到生成过程页展示失败状态,而不是 Agent 聊天页。 + +## 落地规则 +- 前端只保存恢复指针,不在 UI 持久层复制世界数据。 +- `sessionStorage` 与 URL query 中增加生成页来源字段 `customWorldGenerationSource`,当前仅支持 `agent-draft-foundation`。 +- 初始恢复时: + - 若存在 `activeOperationId` 且来源为 `agent-draft-foundation`,先进入 `custom-world-generating`。 + - 否则若 session 已经可构建结果预览,进入 `custom-world-result`。 + - 其他情况进入 `agent-workspace`。 +- operation 进入 `completed` 或 `failed` 后仍保留 `activeOperationId`,直到用户离开、重新发起操作或清理工作区,保证刷新和继续创作能恢复完成/失败状态。 +- 生成完成后由 `useRpgCreationResultAutosave` 在结果页立即保存。生成页跳结果页前必须先同步最新 session 并写入 `generatedCustomWorldProfile`,确保自动保存消费的是最新快照。 + +## 验收点 +- 生成中刷新:URL/sessionStorage 可恢复 `custom-world-generating`,页面显示“世界草稿生成进度”。 +- 生成失败刷新或继续创作:页面仍显示生成过程页和失败信息,不展示 Agent 聊天页。 +- 生成完成:跳到结果页后触发 `upsertRpgWorldProfile`,保存请求带 `sourceAgentSessionId`。 diff --git a/docs/technical/RUST_LOCAL_AND_REMOTE_DEPLOYMENT_SCRIPTS_2026-04-22.md b/docs/technical/RUST_LOCAL_AND_REMOTE_DEPLOYMENT_SCRIPTS_2026-04-22.md index a2904310..30d307d1 100644 --- a/docs/technical/RUST_LOCAL_AND_REMOTE_DEPLOYMENT_SCRIPTS_2026-04-22.md +++ b/docs/technical/RUST_LOCAL_AND_REMOTE_DEPLOYMENT_SCRIPTS_2026-04-22.md @@ -37,8 +37,9 @@ npm run dev:rust 4. 等待 `spacetime --root-dir=server-rs/.spacetimedb/local server ping http://127.0.0.1:3101` 可用。 5. 执行 `spacetime --root-dir=server-rs/.spacetimedb/local publish <本地数据库名> --server http://127.0.0.1:3101 --module-path server-rs/crates/spacetime-module -c=on-conflict --yes`,确保 publish 的签名身份与 standalone 的本地控制库一致,并在当前开发阶段允许新版模块表结构变化且发生 schema 冲突时清除旧模块数据。 6. 注入 `GENARRATIVE_API_*` 与 `GENARRATIVE_SPACETIME_*` 后启动 `cargo run -p api-server`;直接运行 `api-server` 时,如未显式设置 `GENARRATIVE_SPACETIME_DATABASE`,服务端也会向上查找 `spacetime.local.json` 作为本地默认库名。 -7. 注入 `GENARRATIVE_BACKEND_STACK=rust`、`RUST_SERVER_TARGET`、`GENARRATIVE_RUNTIME_SERVER_TARGET` 后启动 Vite。 -8. 任一子进程退出时,脚本回收其余子进程。 +7. 等待 `http://127.0.0.1:/healthz` 返回 HTTP 响应后再启动 Vite,避免前端初始化请求早于 Rust `api-server` 监听完成并在终端刷出 `ECONNREFUSED 127.0.0.1:`。 +8. 注入 `GENARRATIVE_BACKEND_STACK=rust`、`RUST_SERVER_TARGET`、`GENARRATIVE_RUNTIME_SERVER_TARGET` 后启动 Vite。 +9. 任一子进程退出时,脚本回收其余子进程。 Vite 代理覆盖范围: @@ -84,6 +85,13 @@ npm run dev:rust:logs -- --follow 1. 如果首页公开广场出现 `上游服务请求失败`,优先检查 `api-server` 错误详情里的 `ws://.../v1/database//subscribe` 是否指向了未发布的库。 2. `spacetime --root-dir=server-rs/.spacetimedb/local list --server http://127.0.0.1:3101` 应能看到 `spacetime.local.json` 中的库名;若没有,执行 `spacetime --root-dir=server-rs/.spacetimedb/local publish <本地数据库名> --server http://127.0.0.1:3101 --module-path server-rs/crates/spacetime-module -c=on-conflict --yes`。 3. 发布库名与 `GENARRATIVE_SPACETIME_DATABASE` 不一致时,`/api/runtime/custom-world-gallery` 会从 Rust `api-server` 返回 `502`,前端首页只能展示空态或错误提示,无法自行修复。 +4. 如果 Vite 输出 `/api/auth/refresh`、`/api/auth/login-options` 或 `/api/runtime/custom-world-gallery` 的 `ECONNREFUSED`,先确认当前脚本是否已经打印 `等待 api-server 就绪` 并通过;正常情况下 Vite 只会在 `/healthz` 可访问后启动,不应再因为 Rust 监听未完成而代理失败。 + +编译警告治理: + +1. Rust 本地栈启动日志应保持可行动,运行态未使用函数不应长期保留为普通编译警告。 +2. 仅供测试断言使用的辅助函数使用 `#[cfg(test)]` 限定,避免进入 `cargo run -p api-server` 的普通二进制编译。 +3. 已无调用入口且无迁移价值的映射函数直接删除;如果后续新增同类 SpacetimeDB 记录映射,再按实际调用路径补回,避免提前保留死代码。 ## 3. Ubuntu 发布包脚本 diff --git a/scripts/dev-rust-stack.sh b/scripts/dev-rust-stack.sh index 1e70dda8..e01b93bd 100644 --- a/scripts/dev-rust-stack.sh +++ b/scripts/dev-rust-stack.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env bash set -euo pipefail @@ -88,6 +88,39 @@ wait_for_spacetime() { exit 1 } +wait_for_api_server() { + local health_url="$1" + local timeout_seconds="$2" + local process_pid="${3:-}" + local deadline=$((SECONDS + timeout_seconds)) + + while ((SECONDS < deadline)); do + if [[ -n "${process_pid}" ]] && ! kill -0 "${process_pid}" 2>/dev/null; then + echo "[dev:rust] api-server 进程在就绪前退出。" >&2 + exit 1 + fi + + # 使用 Node 发起健康检查,避免要求 Windows 本地额外安装 curl/wget。 + if node -e ' +const target = process.argv[1]; +const client = target.startsWith("https:") ? require("https") : require("http"); +const request = client.get(target, { timeout: 1000 }, (response) => { + response.resume(); + process.exit(response.statusCode >= 200 && response.statusCode < 500 ? 0 : 1); +}); +request.on("timeout", () => request.destroy(new Error("timeout"))); +request.on("error", () => process.exit(1)); +' "${health_url}" >/dev/null 2>&1; then + return + fi + + sleep 0.5 + done + + echo "[dev:rust] 等待 api-server 就绪超时: ${health_url}" >&2 + exit 1 +} + sync_local_spacetime_install() { local root_dir="$1" @@ -337,9 +370,13 @@ echo "[dev:rust] 启动 api-server" GENARRATIVE_SPACETIME_DATABASE="${DATABASE}" \ exec cargo run -p api-server --manifest-path "${MANIFEST_PATH}" ) & -PIDS+=("$!") +API_PID="$!" +PIDS+=("${API_PID}") NAMES+=("api-server") +echo "[dev:rust] 等待 api-server 就绪" +wait_for_api_server "${RUST_SERVER_TARGET}/healthz" "${SPACETIME_TIMEOUT_SECONDS}" "${API_PID}" + echo "[dev:rust] 启动 vite" ( cd "${REPO_ROOT}" diff --git a/server-rs/crates/api-server/src/ai_generation_drafts.rs b/server-rs/crates/api-server/src/ai_generation_drafts.rs new file mode 100644 index 00000000..aa3ac4fd --- /dev/null +++ b/server-rs/crates/api-server/src/ai_generation_drafts.rs @@ -0,0 +1,233 @@ +use module_ai::{ + AiTaskCreateInput, AiTaskKind, AiTaskStageBlueprint, AiTaskStageKind, AiTaskStageStartInput, + AiTextChunkAppendInput, +}; +use serde_json::json; +use spacetime_client::{SpacetimeClient, SpacetimeClientError}; +use std::sync::{Arc, Mutex}; +use tracing::warn; + +#[derive(Clone, Debug)] +pub(crate) struct AiGenerationDraftContext { + pub task_id: String, + pub owner_user_id: String, + pub request_label: String, + pub source_module: String, + pub source_entity_id: String, + pub template_key: String, + pub operation_id: String, +} + +impl AiGenerationDraftContext { + pub fn new( + template_key: &str, + owner_user_id: &str, + session_id: &str, + operation_id: &str, + request_label: &str, + ) -> Self { + let normalized_template = normalize_identifier_segment(template_key); + let normalized_session = normalize_identifier_segment(session_id); + let normalized_operation = normalize_identifier_segment(operation_id); + + Self { + // 生成过程草稿使用稳定 task_id,保证同一模板会话操作重试时能继续定位已有内容。 + task_id: format!( + "aitask_draft_{normalized_template}_{normalized_session}_{normalized_operation}" + ), + owner_user_id: owner_user_id.trim().to_string(), + request_label: request_label.trim().to_string(), + source_module: normalized_template, + source_entity_id: session_id.trim().to_string(), + template_key: template_key.trim().to_string(), + operation_id: operation_id.trim().to_string(), + } + } +} + +#[derive(Clone, Debug)] +pub(crate) struct AiGenerationDraftSink { + context: AiGenerationDraftContext, + client: SpacetimeClient, + next_sequence: Arc>, + persisted_text: Arc>, +} + +impl AiGenerationDraftSink { + pub fn new(context: AiGenerationDraftContext, client: SpacetimeClient) -> Self { + Self { + context, + client, + next_sequence: Arc::new(Mutex::new(1)), + persisted_text: Arc::new(Mutex::new(String::new())), + } + } + + pub fn persist_visible_text_async(&self, visible_text: &str) { + let (sequence, delta_text) = { + let mut persisted_text = self + .persisted_text + .lock() + .unwrap_or_else(|poisoned| poisoned.into_inner()); + let delta_text = visible_text + .strip_prefix(persisted_text.as_str()) + .unwrap_or(visible_text) + .to_string(); + *persisted_text = visible_text.to_string(); + if delta_text.trim().is_empty() { + return; + } + + let mut next_sequence = self + .next_sequence + .lock() + .unwrap_or_else(|poisoned| poisoned.into_inner()); + let sequence = *next_sequence; + *next_sequence = next_sequence.saturating_add(1); + (sequence, delta_text) + }; + let context = self.context.clone(); + let client = self.client.clone(); + tokio::spawn(async move { + if let Err(error) = client + .append_ai_text_chunk(AiTextChunkAppendInput { + task_id: context.task_id.clone(), + stage_kind: AiTaskStageKind::RequestModel, + sequence, + delta_text, + created_at_micros: current_utc_micros(), + }) + .await + { + warn!( + task_id = %context.task_id, + sequence, + error = %error, + "AI 生成草稿后台增量落库失败,主生成流程继续执行" + ); + } + }); + } +} + +#[derive(Debug)] +pub(crate) struct AiGenerationDraftWriter { + context: AiGenerationDraftContext, + next_sequence: u32, + persisted_text: String, +} + +impl AiGenerationDraftWriter { + pub fn new(context: AiGenerationDraftContext) -> Self { + Self { + context, + next_sequence: 1, + persisted_text: String::new(), + } + } + + pub async fn ensure_started( + &mut self, + client: &SpacetimeClient, + ) -> Result<(), SpacetimeClientError> { + let now_micros = current_utc_micros(); + match client + .create_ai_task(AiTaskCreateInput { + task_id: self.context.task_id.clone(), + task_kind: AiTaskKind::CustomWorldGeneration, + owner_user_id: self.context.owner_user_id.clone(), + request_label: self.context.request_label.clone(), + source_module: self.context.source_module.clone(), + source_entity_id: Some(self.context.source_entity_id.clone()), + request_payload_json: Some( + json!({ + "templateKey": self.context.template_key, + "operationId": self.context.operation_id, + }) + .to_string(), + ), + stages: vec![AiTaskStageBlueprint { + stage_kind: AiTaskStageKind::RequestModel, + label: "请求模型".to_string(), + detail: "模板生成过程中持续写入模型已生成文本。".to_string(), + order: 1, + }], + created_at_micros: now_micros, + }) + .await + { + Ok(_) => {} + Err(error) if is_duplicate_ai_task_error(&error) => {} + Err(error) => return Err(error), + } + + client + .start_ai_task_stage(AiTaskStageStartInput { + task_id: self.context.task_id.clone(), + stage_kind: AiTaskStageKind::RequestModel, + started_at_micros: now_micros, + }) + .await + } + + pub async fn persist_visible_text(&mut self, client: &SpacetimeClient, visible_text: &str) { + let delta_text = match visible_text.strip_prefix(self.persisted_text.as_str()) { + Some(delta) => delta, + None => visible_text, + }; + if delta_text.trim().is_empty() { + self.persisted_text = visible_text.to_string(); + return; + } + + let sequence = self.next_sequence; + self.next_sequence = self.next_sequence.saturating_add(1); + self.persisted_text = visible_text.to_string(); + + if let Err(error) = client + .append_ai_text_chunk(AiTextChunkAppendInput { + task_id: self.context.task_id.clone(), + stage_kind: AiTaskStageKind::RequestModel, + sequence, + delta_text: delta_text.to_string(), + created_at_micros: current_utc_micros(), + }) + .await + { + warn!( + task_id = %self.context.task_id, + sequence, + error = %error, + "AI 生成草稿增量落库失败,主生成流程继续执行" + ); + } + } +} + +fn normalize_identifier_segment(value: &str) -> String { + let normalized = value + .trim() + .chars() + .map(|character| { + if character.is_ascii_alphanumeric() || character == '-' || character == '_' { + character + } else { + '_' + } + }) + .collect::(); + + if normalized.is_empty() { + "unknown".to_string() + } else { + normalized + } +} + +fn is_duplicate_ai_task_error(error: &SpacetimeClientError) -> bool { + error.to_string().contains("ai_task.task_id 已存在") +} + +fn current_utc_micros() -> i64 { + time::OffsetDateTime::now_utc().unix_timestamp_nanos() as i64 / 1_000 +} diff --git a/server-rs/crates/api-server/src/big_fish.rs b/server-rs/crates/api-server/src/big_fish.rs index ab92668a..3079bcec 100644 --- a/server-rs/crates/api-server/src/big_fish.rs +++ b/server-rs/crates/api-server/src/big_fish.rs @@ -42,8 +42,14 @@ use crate::big_fish_agent_turn::{ run_big_fish_agent_turn, }; use crate::{ - api_response::json_success_body, auth::AuthenticatedAccessToken, http_error::AppError, - request_context::RequestContext, state::AppState, + ai_generation_drafts::{ + AiGenerationDraftContext, AiGenerationDraftSink, AiGenerationDraftWriter, + }, + api_response::json_success_body, + auth::AuthenticatedAccessToken, + http_error::AppError, + request_context::RequestContext, + state::AppState, }; pub async fn create_big_fish_session( @@ -203,15 +209,45 @@ pub async fn submit_big_fish_message( .map_err(|error| { big_fish_error_response(&request_context, map_big_fish_client_error(error)) })?; + let mut draft_writer = AiGenerationDraftWriter::new(AiGenerationDraftContext::new( + "big_fish", + owner_user_id.as_str(), + session_id.as_str(), + payload.client_message_id.as_str(), + "大鱼吃小鱼模板生成草稿", + )); + if let Err(error) = draft_writer.ensure_started(state.spacetime_client()).await { + tracing::warn!(error = %error, "大鱼吃小鱼模板生成草稿任务启动失败,主生成流程继续执行"); + } + let draft_sink = AiGenerationDraftSink::new( + AiGenerationDraftContext::new( + "big_fish", + owner_user_id.as_str(), + session_id.as_str(), + payload.client_message_id.as_str(), + "大鱼吃小鱼模板生成草稿", + ), + state.spacetime_client().clone(), + ); let turn_result = run_big_fish_agent_turn( BigFishAgentTurnRequest { llm_client: state.llm_client(), session: &submitted_session, quick_fill_requested: payload.quick_fill_requested.unwrap_or(false), }, - |_| {}, + move |text| { + draft_sink.persist_visible_text_async(text); + }, ) .await; + if let Ok(result) = &turn_result { + draft_writer + .persist_visible_text( + state.spacetime_client(), + result.assistant_reply_text.as_str(), + ) + .await; + } let finalize_input = match turn_result { Ok(turn_result) => build_finalize_record_input( session_id.clone(), @@ -287,6 +323,26 @@ pub async fn stream_big_fish_message( big_fish_error_response(&request_context, map_big_fish_client_error(error)) })?; let quick_fill_requested = payload.quick_fill_requested.unwrap_or(false); + let mut draft_writer = AiGenerationDraftWriter::new(AiGenerationDraftContext::new( + "big_fish", + owner_user_id.as_str(), + session_id.as_str(), + payload.client_message_id.as_str(), + "大鱼吃小鱼模板生成草稿", + )); + if let Err(error) = draft_writer.ensure_started(state.spacetime_client()).await { + tracing::warn!(error = %error, "大鱼吃小鱼模板生成草稿任务启动失败,主生成流程继续执行"); + } + let draft_sink = AiGenerationDraftSink::new( + AiGenerationDraftContext::new( + "big_fish", + owner_user_id.as_str(), + session_id.as_str(), + payload.client_message_id.as_str(), + "大鱼吃小鱼模板生成草稿", + ), + state.spacetime_client().clone(), + ); let mut streamed_reply_text = String::new(); let turn_result = run_big_fish_agent_turn( BigFishAgentTurnRequest { @@ -295,10 +351,16 @@ pub async fn stream_big_fish_message( quick_fill_requested, }, |text| { + draft_sink.persist_visible_text_async(text); streamed_reply_text = text.to_string(); }, ) .await; + if !streamed_reply_text.is_empty() { + draft_writer + .persist_visible_text(state.spacetime_client(), streamed_reply_text.as_str()) + .await; + } let reply_text = match &turn_result { Ok(result) => result.assistant_reply_text.clone(), Err(error) => error.to_string(), diff --git a/server-rs/crates/api-server/src/config.rs b/server-rs/crates/api-server/src/config.rs index 1f1cd3a9..99dc9b34 100644 --- a/server-rs/crates/api-server/src/config.rs +++ b/server-rs/crates/api-server/src/config.rs @@ -82,7 +82,11 @@ pub struct AppConfig { pub llm_retry_backoff_ms: u64, pub dashscope_base_url: String, pub dashscope_api_key: Option, + pub dashscope_scene_image_model: String, + pub dashscope_reference_image_model: String, + pub dashscope_cover_image_model: String, pub dashscope_image_request_timeout_ms: u64, + pub draft_asset_generation_max_concurrent_requests: usize, pub ark_character_video_base_url: String, pub ark_character_video_api_key: Option, pub ark_character_video_request_timeout_ms: u64, @@ -166,7 +170,11 @@ impl Default for AppConfig { llm_retry_backoff_ms: DEFAULT_RETRY_BACKOFF_MS, dashscope_base_url: "https://dashscope.aliyuncs.com/api/v1".to_string(), dashscope_api_key: None, + dashscope_scene_image_model: "wan2.2-t2i-flash".to_string(), + dashscope_reference_image_model: "qwen-image-2.0".to_string(), + dashscope_cover_image_model: "wan2.2-t2i-flash".to_string(), dashscope_image_request_timeout_ms: 150_000, + draft_asset_generation_max_concurrent_requests: 4, ark_character_video_base_url: DEFAULT_ARK_BASE_URL.to_string(), ark_character_video_api_key: None, ark_character_video_request_timeout_ms: 420_000, @@ -464,12 +472,38 @@ impl AppConfig { config.dashscope_api_key = read_first_non_empty_env(&["DASHSCOPE_API_KEY"]); + if let Some(dashscope_scene_image_model) = + read_first_non_empty_env(&["DASHSCOPE_SCENE_IMAGE_MODEL", "DASHSCOPE_IMAGE_MODEL"]) + { + config.dashscope_scene_image_model = dashscope_scene_image_model; + } + + if let Some(dashscope_reference_image_model) = read_first_non_empty_env(&[ + "DASHSCOPE_REFERENCE_IMAGE_MODEL", + "DASHSCOPE_IMAGE_EDIT_MODEL", + ]) { + config.dashscope_reference_image_model = dashscope_reference_image_model; + } + + if let Some(dashscope_cover_image_model) = + read_first_non_empty_env(&["DASHSCOPE_COVER_IMAGE_MODEL", "DASHSCOPE_IMAGE_MODEL"]) + { + config.dashscope_cover_image_model = dashscope_cover_image_model; + } + if let Some(dashscope_image_request_timeout_ms) = read_first_positive_u64_env(&["DASHSCOPE_IMAGE_REQUEST_TIMEOUT_MS"]) { config.dashscope_image_request_timeout_ms = dashscope_image_request_timeout_ms; } + if let Some(max_concurrent_requests) = read_first_usize_env(&[ + "GENARRATIVE_DRAFT_ASSET_GENERATION_MAX_CONCURRENT_REQUESTS", + "DRAFT_ASSET_GENERATION_MAX_CONCURRENT_REQUESTS", + ]) { + config.draft_asset_generation_max_concurrent_requests = max_concurrent_requests; + } + if let Some(ark_character_video_base_url) = read_first_non_empty_env(&[ "ARK_CHARACTER_VIDEO_BASE_URL", "ARK_BASE_URL", @@ -623,6 +657,14 @@ fn read_first_u64_env(keys: &[&str]) -> Option { .find_map(|key| env::var(key).ok().and_then(|value| parse_u64(&value))) } +fn read_first_usize_env(keys: &[&str]) -> Option { + keys.iter().find_map(|key| { + env::var(key) + .ok() + .and_then(|value| parse_positive_usize(&value)) + }) +} + fn read_first_u8_env(keys: &[&str]) -> Option { keys.iter() .find_map(|key| env::var(key).ok().and_then(|value| parse_u8(&value))) @@ -704,6 +746,15 @@ fn parse_u64(raw: &str) -> Option { raw.trim().parse::().ok() } +fn parse_positive_usize(raw: &str) -> Option { + let value = raw.trim().parse::().ok()?; + if value == 0 { + return None; + } + + Some(value) +} + fn parse_u8(raw: &str) -> Option { raw.trim().parse::().ok() } diff --git a/server-rs/crates/api-server/src/custom_world.rs b/server-rs/crates/api-server/src/custom_world.rs index 00f8d61d..c65c0b04 100644 --- a/server-rs/crates/api-server/src/custom_world.rs +++ b/server-rs/crates/api-server/src/custom_world.rs @@ -1,3 +1,5 @@ +use std::collections::BTreeMap; + use axum::{ Json, extract::{Extension, Path, State, rejection::JsonRejection}, @@ -28,19 +30,25 @@ use shared_contracts::runtime::{ use shared_kernel::build_prefixed_uuid_id; use spacetime_client::{ CustomWorldAgentActionExecuteRecordInput, CustomWorldAgentCheckpointRecord, - CustomWorldAgentMessageRecord, CustomWorldAgentMessageSubmitRecordInput, - CustomWorldAgentOperationProgressRecordInput, CustomWorldAgentOperationRecord, - CustomWorldAgentSessionCreateRecordInput, CustomWorldAgentSessionRecord, - CustomWorldDraftCardDetailRecord, CustomWorldDraftCardDetailSectionRecord, - CustomWorldDraftCardRecord, CustomWorldGalleryEntryRecord, CustomWorldLibraryEntryRecord, + CustomWorldAgentMessageFinalizeRecordInput, CustomWorldAgentMessageRecord, + CustomWorldAgentMessageSubmitRecordInput, CustomWorldAgentOperationProgressRecordInput, + CustomWorldAgentOperationRecord, CustomWorldAgentSessionCreateRecordInput, + CustomWorldAgentSessionRecord, CustomWorldDraftCardDetailRecord, + CustomWorldDraftCardDetailSectionRecord, CustomWorldDraftCardRecord, + CustomWorldGalleryEntryRecord, CustomWorldLibraryEntryRecord, CustomWorldProfileUpsertRecordInput, CustomWorldPublishGateRecord, CustomWorldResultPreviewBlockerRecord, CustomWorldSupportedActionRecord, CustomWorldWorkSummaryRecord, SpacetimeClientError, }; -use std::convert::Infallible; +use std::{collections::BTreeSet, convert::Infallible, sync::Arc, time::Instant}; +use tokio::sync::Semaphore; +use tokio::task::JoinSet; use tracing::info; use crate::{ + ai_generation_drafts::{ + AiGenerationDraftContext, AiGenerationDraftSink, AiGenerationDraftWriter, + }, api_response::json_success_body, auth::AuthenticatedAccessToken, character_visual_assets::generate_character_primary_visual_for_profile, @@ -59,6 +67,8 @@ use crate::{ state::AppState, }; +const DRAFT_ASSET_GENERATION_MAX_ATTEMPTS: u32 = 3; + pub async fn get_custom_world_library( State(state): State, Extension(request_context): Extension, @@ -633,6 +643,26 @@ pub async fn submit_custom_world_agent_message( .map_err(|error| { custom_world_error_response(&request_context, map_custom_world_client_error(error)) })?; + let mut draft_writer = AiGenerationDraftWriter::new(AiGenerationDraftContext::new( + "custom_world", + owner_user_id.as_str(), + session_id.as_str(), + operation_id.as_str(), + "自定义世界模板生成草稿", + )); + if let Err(error) = draft_writer.ensure_started(state.spacetime_client()).await { + tracing::warn!(error = %error, "自定义世界模板生成草稿任务启动失败,主生成流程继续执行"); + } + let draft_sink = AiGenerationDraftSink::new( + AiGenerationDraftContext::new( + "custom_world", + owner_user_id.as_str(), + session_id.as_str(), + operation_id.as_str(), + "自定义世界模板生成草稿", + ), + state.spacetime_client().clone(), + ); let turn_result = run_custom_world_agent_turn( CustomWorldAgentTurnRequest { llm_client: state.llm_client(), @@ -640,9 +670,19 @@ pub async fn submit_custom_world_agent_message( quick_fill_requested: payload.quick_fill_requested.unwrap_or(false), focus_card_id: payload.focus_card_id.clone(), }, - |_| {}, + move |text| { + draft_sink.persist_visible_text_async(text); + }, ) .await; + if let Ok(result) = &turn_result { + draft_writer + .persist_visible_text( + state.spacetime_client(), + result.assistant_reply_text.as_str(), + ) + .await; + } let finalize_input = match turn_result { Ok(turn_result) => build_finalize_record_input( session_id.clone(), @@ -761,6 +801,26 @@ pub async fn stream_custom_world_agent_message( let owner_user_id_for_stream = owner_user_id.clone(); let operation_id = operation.operation_id.clone(); let stream = async_stream::stream! { + let mut draft_writer = AiGenerationDraftWriter::new(AiGenerationDraftContext::new( + "custom_world", + owner_user_id_for_stream.as_str(), + session_id_for_stream.as_str(), + operation_id.as_str(), + "自定义世界模板生成草稿", + )); + if let Err(error) = draft_writer.ensure_started(state.spacetime_client()).await { + tracing::warn!(error = %error, "自定义世界模板生成草稿任务启动失败,主生成流程继续执行"); + } + let draft_sink = AiGenerationDraftSink::new( + AiGenerationDraftContext::new( + "custom_world", + owner_user_id_for_stream.as_str(), + session_id_for_stream.as_str(), + operation_id.as_str(), + "自定义世界模板生成草稿", + ), + state.spacetime_client().clone(), + ); // 聊天回复必须等本轮模型解析、进度与会话快照全部落库后, // 再随最终 session 一次性返回,避免玩家先看到回复而进度仍停在旧状态。 let turn_result = run_custom_world_agent_turn( @@ -770,9 +830,16 @@ pub async fn stream_custom_world_agent_message( quick_fill_requested, focus_card_id, }, - |_| {}, + move |text| { + draft_sink.persist_visible_text_async(text); + }, ) .await; + if let Ok(result) = &turn_result { + draft_writer + .persist_visible_text(state.spacetime_client(), result.assistant_reply_text.as_str()) + .await; + } let finalize_input = match turn_result { Ok(turn_result) => build_finalize_record_input( @@ -1162,49 +1229,73 @@ fn spawn_custom_world_draft_foundation_job( } }; - if let Err(message) = generate_draft_foundation_role_visuals( - &state, - &session, - &owner_user_id, - &operation_id, - &mut draft_profile_value, - ) - .await - { - let _ = upsert_custom_world_draft_foundation_progress( - &state, - &session.session_id, - &owner_user_id, - &operation_id, - "failed", - "生成角色主形象失败", - message.as_str(), - 100, - Some(message.clone()), - ) - .await; - return; - } + let image_generation_limiter = Arc::new(Semaphore::new( + state.config.draft_asset_generation_max_concurrent_requests, + )); + let role_visual_profile_input = draft_profile_value.clone(); + let act_background_profile_input = draft_profile_value.clone(); + // 角色主形象与幕背景图互不依赖,必须并行发起;上游生图请求统一限流,避免同批草稿瞬时打满供应商接口。 + let (role_visual_result, act_background_result) = tokio::join!( + async { + let mut profile = role_visual_profile_input; + generate_draft_foundation_role_visuals( + &state, + &session, + &owner_user_id, + &operation_id, + &mut profile, + image_generation_limiter.clone(), + ) + .await + .map(|_| profile) + }, + async { + let mut profile = act_background_profile_input; + generate_draft_foundation_act_backgrounds( + &state, + &session, + &owner_user_id, + &operation_id, + &mut profile, + image_generation_limiter.clone(), + ) + .await + .map(|_| profile) + } + ); - if let Err(message) = generate_draft_foundation_act_backgrounds( - &state, - &session, - &owner_user_id, - &operation_id, - &mut draft_profile_value, - ) - .await - { - let _ = upsert_custom_world_draft_foundation_progress( + let mut draft_profile_with_assets = draft_profile_value.clone(); + let mut asset_generation_errors = Vec::new(); + match role_visual_result { + Ok(profile) => draft_profile_with_assets = profile, + Err(message) => asset_generation_errors.push(("生成角色主形象失败", message)), + } + match act_background_result { + Ok(profile) => { + merge_generated_act_backgrounds(&mut draft_profile_with_assets, &profile) + } + Err(message) => asset_generation_errors.push(("生成幕背景图失败", message)), + } + draft_profile_value = draft_profile_with_assets; + + if !asset_generation_errors.is_empty() { + let message = asset_generation_errors + .iter() + .map(|(_, message)| message.as_str()) + .collect::>() + .join(";"); + let phase_label = asset_generation_errors + .first() + .map(|(label, _)| *label) + .unwrap_or("素材生成失败"); + persist_partial_draft_foundation_after_asset_failure( &state, - &session.session_id, + &session, &owner_user_id, &operation_id, - "failed", - "生成幕背景图失败", + &draft_profile_value, + phase_label, message.as_str(), - 100, - Some(message.clone()), ) .await; return; @@ -1305,6 +1396,7 @@ async fn generate_draft_foundation_role_visuals( owner_user_id: &str, operation_id: &str, draft_profile: &mut Value, + image_generation_limiter: Arc, ) -> Result<(), String> { let Some(profile_object) = draft_profile.as_object_mut() else { return Err("foundation draft JSON 必须是 object".to_string()); @@ -1317,8 +1409,8 @@ async fn generate_draft_foundation_role_visuals( } } } - let total = role_refs.len().max(1); - for (completed, (key, index)) in role_refs.into_iter().enumerate() { + let mut role_generation_refs = Vec::new(); + for (key, index) in role_refs { let role = profile_object .get(key.as_str()) .and_then(Value::as_array) @@ -1328,31 +1420,89 @@ async fn generate_draft_foundation_role_visuals( let name = json_text_from_value(&role, "name").unwrap_or_else(|| format!("角色{}", index + 1)); let role_id = json_text_from_value(&role, "id").unwrap_or_else(|| format!("{key}-{index}")); - let visual_prompt = json_text_from_value(&role, "visualDescription") - .or_else(|| json_text_from_value(&role, "description")) - .unwrap_or_else(|| name.clone()); - upsert_custom_world_draft_foundation_progress( - state, - &session.session_id, - owner_user_id, - operation_id, - "running", - "生成角色主形象", - format!("正在生成角色主形象 {}/{}:{}。", completed + 1, total, name).as_str(), - 97 + ((completed as u32).min(1)), - None, - ) - .await - .map_err(|error| error.to_string())?; - let generated = generate_character_primary_visual_for_profile( - state, - owner_user_id, - role_id.as_str(), - visual_prompt.as_str(), - Some(name.as_str()), - ) - .await - .map_err(|error| error.message().to_string())?; + let visual_prompt = json_text_from_value(&role, "visualDescription").ok_or_else(|| { + format!("角色「{name}」缺少 visualDescription,不能在角色形象设定文本生成前直接生图。") + })?; + role_generation_refs.push(RoleVisualGenerationRef { + key, + index, + role_id, + name, + prompt: visual_prompt, + }); + } + + upsert_custom_world_draft_foundation_progress( + state, + &session.session_id, + owner_user_id, + operation_id, + "running", + "并行生成角色主形象", + format!("正在同时生成 {} 张角色主形象。", role_generation_refs.len()).as_str(), + 97, + None, + ) + .await + .map_err(|error| error.to_string())?; + + let mut generation_tasks = JoinSet::new(); + for role_ref in role_generation_refs { + let task_state = (*state).clone(); + let task_owner_user_id = owner_user_id.to_string(); + let task_limiter = image_generation_limiter.clone(); + generation_tasks.spawn(async move { + let mut last_error = None; + for attempt in 1..=DRAFT_ASSET_GENERATION_MAX_ATTEMPTS { + let generation_result = { + let _permit = task_limiter + .acquire() + .await + .map_err(|error| format!("图片生成并发控制失效:{error}"))?; + generate_character_primary_visual_for_profile( + &task_state, + task_owner_user_id.as_str(), + role_ref.role_id.as_str(), + role_ref.prompt.as_str(), + Some(role_ref.name.as_str()), + ) + .await + }; + match generation_result { + Ok(generated) => { + return Ok::<_, String>((role_ref.key, role_ref.index, generated)); + } + Err(error) => { + last_error = Some(error.body_text()); + if attempt < DRAFT_ASSET_GENERATION_MAX_ATTEMPTS { + tokio::time::sleep(std::time::Duration::from_millis( + 300 * u64::from(attempt), + )) + .await; + } + } + } + } + + Err(format!( + "角色「{}」主形象连续生成 {} 次失败:{}", + role_ref.name, + DRAFT_ASSET_GENERATION_MAX_ATTEMPTS, + last_error.unwrap_or_else(|| "未知错误".to_string()) + )) + }); + } + + let mut errors = Vec::new(); + while let Some(result) = generation_tasks.join_next().await { + let task_result = result.map_err(|error| error.to_string())?; + let (key, index, generated) = match task_result { + Ok(value) => value, + Err(message) => { + errors.push(message); + continue; + } + }; if let Some(role_object) = profile_object .get_mut(key.as_str()) .and_then(Value::as_array_mut) @@ -1366,6 +1516,9 @@ async fn generate_draft_foundation_role_visuals( ); } } + if !errors.is_empty() { + return Err(join_unique_error_messages(errors)); + } Ok(()) } @@ -1375,51 +1528,163 @@ async fn generate_draft_foundation_act_backgrounds( owner_user_id: &str, operation_id: &str, draft_profile: &mut Value, + image_generation_limiter: Arc, ) -> Result<(), String> { let world_name = json_text_from_value(draft_profile, "name").unwrap_or_else(|| "未命名世界".to_string()); let profile_id = json_text_from_value(draft_profile, "id"); + let scene_image_profile_input = draft_profile.clone(); let act_refs = collect_scene_act_refs(draft_profile); - let total = act_refs.len().max(1); - for (completed, act_ref) in act_refs.into_iter().enumerate() { - upsert_custom_world_draft_foundation_progress( - state, - &session.session_id, - owner_user_id, - operation_id, - "running", - "生成幕背景图", - format!( - "正在生成幕背景图 {}/{}:{}。", - completed + 1, - total, - act_ref.title - ) - .as_str(), - 98, - None, - ) - .await - .map_err(|error| error.to_string())?; - let generated = generate_custom_world_scene_image_for_profile( - state, - owner_user_id, - profile_id.as_deref(), - world_name.as_str(), - act_ref.scene_id.as_str(), - act_ref.title.as_str(), - act_ref.summary.as_str(), - act_ref.prompt.as_str(), - ) - .await - .map_err(|error| error.message().to_string())?; + validate_scene_act_background_prompts(&act_refs)?; + tracing::info!( + operation_id, + session_id = %session.session_id, + act_count = act_refs.len(), + max_concurrent_requests = state.config.draft_asset_generation_max_concurrent_requests, + "开始并行生成草稿幕背景图" + ); + upsert_custom_world_draft_foundation_progress( + state, + &session.session_id, + owner_user_id, + operation_id, + "running", + "并行生成幕背景图", + format!("正在同时生成 {} 张幕背景图。", act_refs.len()).as_str(), + 98, + None, + ) + .await + .map_err(|error| error.to_string())?; + + let mut generation_tasks = JoinSet::new(); + for act_ref in act_refs { + let task_state = (*state).clone(); + let task_owner_user_id = owner_user_id.to_string(); + let task_profile_id = profile_id.clone(); + let task_world_name = world_name.clone(); + let task_profile = scene_image_profile_input.clone(); + let task_limiter = image_generation_limiter.clone(); + let task_operation_id = operation_id.to_string(); + let task_session_id = session.session_id.clone(); + generation_tasks.spawn(async move { + let mut last_error = None; + for attempt in 1..=DRAFT_ASSET_GENERATION_MAX_ATTEMPTS { + let attempt_started_at = Instant::now(); + tracing::info!( + operation_id = %task_operation_id, + session_id = %task_session_id, + chapter_index = act_ref.chapter_index, + act_index = act_ref.act_index, + scene_id = %act_ref.scene_id, + scene_name = %act_ref.scene_name, + attempt, + "开始生成单幕背景图" + ); + let generation_result = { + let _permit = task_limiter.acquire().await.map_err(|error| { + ( + act_ref.chapter_index, + act_ref.act_index, + format!("图片生成并发控制失效:{error}"), + ) + })?; + generate_custom_world_scene_image_for_profile( + &task_state, + task_owner_user_id.as_str(), + &task_profile, + task_profile_id.as_deref(), + task_world_name.as_str(), + act_ref.scene_id.as_str(), + act_ref.scene_name.as_str(), + act_ref.scene_description.as_str(), + act_ref.prompt.as_str(), + ) + .await + }; + match generation_result { + Ok(generated) => { + tracing::info!( + operation_id = %task_operation_id, + session_id = %task_session_id, + chapter_index = act_ref.chapter_index, + act_index = act_ref.act_index, + scene_id = %act_ref.scene_id, + scene_name = %act_ref.scene_name, + attempt, + elapsed_ms = attempt_started_at.elapsed().as_millis(), + "单幕背景图生成成功" + ); + return Ok::<_, (usize, usize, String)>(( + act_ref.chapter_index, + act_ref.act_index, + generated, + )); + } + Err(error) => { + let error_message = error.body_text(); + tracing::warn!( + operation_id = %task_operation_id, + session_id = %task_session_id, + chapter_index = act_ref.chapter_index, + act_index = act_ref.act_index, + scene_id = %act_ref.scene_id, + scene_name = %act_ref.scene_name, + attempt, + elapsed_ms = attempt_started_at.elapsed().as_millis(), + error_message = %error_message, + "单幕背景图生成失败" + ); + last_error = Some(error_message); + if attempt < DRAFT_ASSET_GENERATION_MAX_ATTEMPTS { + tokio::time::sleep(std::time::Duration::from_millis( + 300 * u64::from(attempt), + )) + .await; + } + } + } + } + + Err(( + act_ref.chapter_index, + act_ref.act_index, + format!( + "第{}章第{}幕「{}」背景图连续生成 {} 次失败:{}", + act_ref.chapter_index + 1, + act_ref.act_index + 1, + act_ref.scene_name, + DRAFT_ASSET_GENERATION_MAX_ATTEMPTS, + last_error.unwrap_or_else(|| "未知错误".to_string()) + ), + )) + }); + } + + let mut errors = Vec::new(); + let mut generated_count = 0usize; + while let Some(result) = generation_tasks.join_next().await { + let task_result = result.map_err(|error| error.to_string())?; + let (chapter_index, act_index, generated) = match task_result { + Ok(value) => value, + Err((chapter_index, act_index, message)) => { + mark_scene_act_background_generation_error( + draft_profile, + chapter_index, + act_index, + &message, + ); + errors.push(message); + continue; + } + }; if let Some(act_object) = draft_profile .get_mut("sceneChapterBlueprints") .and_then(Value::as_array_mut) - .and_then(|chapters| chapters.get_mut(act_ref.chapter_index)) + .and_then(|chapters| chapters.get_mut(chapter_index)) .and_then(|chapter| chapter.get_mut("acts")) .and_then(Value::as_array_mut) - .and_then(|acts| acts.get_mut(act_ref.act_index)) + .and_then(|acts| acts.get_mut(act_index)) .and_then(Value::as_object_mut) { act_object.insert( @@ -1438,21 +1703,79 @@ async fn generate_draft_foundation_act_backgrounds( "generatedSceneModel".to_string(), Value::String(generated.model), ); + generated_count += 1; } } + if !errors.is_empty() { + if generated_count > 0 { + // 自动草稿生成和手动生成用的是同一套生图与资产入库能力;这里不能因为批量中的个别幕失败, + // 把已经写入 profile 分支的 backgroundImageSrc 一起丢掉,否则前端就看不到已经生成好的图。 + tracing::warn!( + generated_count, + failed_count = errors.len(), + error_message = %join_unique_error_messages(errors), + "部分幕背景图生成失败,已保留成功生成的幕图" + ); + return Ok(()); + } + return Err(join_unique_error_messages(errors)); + } Ok(()) } +fn mark_scene_act_background_generation_error( + draft_profile: &mut Value, + chapter_index: usize, + act_index: usize, + message: &str, +) { + if let Some(act_object) = draft_profile + .get_mut("sceneChapterBlueprints") + .and_then(Value::as_array_mut) + .and_then(|chapters| chapters.get_mut(chapter_index)) + .and_then(|chapter| chapter.get_mut("acts")) + .and_then(Value::as_array_mut) + .and_then(|acts| acts.get_mut(act_index)) + .and_then(Value::as_object_mut) + { + act_object.insert( + "backgroundGenerationError".to_string(), + Value::String(message.trim().to_string()), + ); + } +} + +fn join_unique_error_messages(messages: Vec) -> String { + // 并行图片任务可能从同一个上游故障返回完全相同的业务错误;用户侧只需要看到去重后的失败项。 + messages + .into_iter() + .map(|message| message.trim().to_string()) + .filter(|message| !message.is_empty()) + .collect::>() + .into_iter() + .collect::>() + .join(";") +} + +struct RoleVisualGenerationRef { + key: String, + index: usize, + role_id: String, + name: String, + prompt: String, +} + struct SceneActGenerationRef { chapter_index: usize, act_index: usize, scene_id: String, - title: String, - summary: String, + scene_name: String, + scene_description: String, prompt: String, } fn collect_scene_act_refs(draft_profile: &Value) -> Vec { + let scene_context_by_id = collect_scene_context_by_id(draft_profile); draft_profile .get("sceneChapterBlueprints") .and_then(Value::as_array) @@ -1463,28 +1786,188 @@ fn collect_scene_act_refs(draft_profile: &Value) -> Vec { let chapter_scene_id = json_text_from_value(chapter, "sceneId") .or_else(|| json_text_from_value(chapter, "id")) .unwrap_or_else(|| format!("chapter-{chapter_index}")); + let chapter_scene_name = json_first_text_from_value( + chapter, + &["sceneName", "landmarkName", "name", "title"], + ) + .unwrap_or_else(|| chapter_scene_id.clone()); + let chapter_scene_context = scene_context_by_id + .get(&chapter_scene_id) + .cloned() + .unwrap_or_else(|| SceneImageContext { + id: chapter_scene_id.clone(), + name: chapter_scene_name.clone(), + description: json_text_from_value(chapter, "description") + .or_else(|| json_text_from_value(chapter, "summary")) + .unwrap_or_default(), + danger_level: json_text_from_value(chapter, "dangerLevel").unwrap_or_default(), + }); + let scene_contexts = scene_context_by_id.clone(); chapter .get("acts") .and_then(Value::as_array) .into_iter() .flatten() .enumerate() - .map(move |(act_index, act)| SceneActGenerationRef { - chapter_index, - act_index, - scene_id: json_text_from_value(act, "sceneId") - .unwrap_or_else(|| chapter_scene_id.clone()), - title: json_text_from_value(act, "title") - .unwrap_or_else(|| format!("第{}幕", act_index + 1)), - summary: json_text_from_value(act, "summary").unwrap_or_default(), - prompt: json_text_from_value(act, "backgroundPromptText") - .or_else(|| json_text_from_value(act, "summary")) - .unwrap_or_else(|| "场景幕背景图,突出探索空间与局势氛围。".to_string()), + .map(move |(act_index, act)| { + let prompt = json_first_text_from_value( + act, + &[ + "backgroundPromptText", + "scenePromptText", + "visualPromptText", + "promptText", + "imagePromptText", + "backgroundPrompt", + "visualPrompt", + ], + ) + .unwrap_or_default(); + let scene_name = json_first_text_from_value( + act, + &["sceneName", "landmarkName", "locationName"], + ) + .unwrap_or_else(|| chapter_scene_context.name.clone()); + let act_scene_id = json_text_from_value(act, "sceneId") + .unwrap_or_else(|| chapter_scene_context.id.clone()); + let scene_context = + scene_contexts + .get(&act_scene_id) + .cloned() + .unwrap_or_else(|| SceneImageContext { + id: act_scene_id.clone(), + name: scene_name, + description: chapter_scene_context.description.clone(), + danger_level: chapter_scene_context.danger_level.clone(), + }); + + SceneActGenerationRef { + chapter_index, + act_index, + scene_id: act_scene_id, + scene_name: scene_context.name, + scene_description: scene_context.description, + prompt: prompt.clone(), + } }) }) .collect() } +#[derive(Clone, Debug)] +struct SceneImageContext { + id: String, + name: String, + description: String, + danger_level: String, +} + +fn collect_scene_context_by_id(draft_profile: &Value) -> BTreeMap { + let mut contexts = BTreeMap::new(); + if let Some(camp) = draft_profile.get("camp").and_then(Value::as_object) { + if let Some(context) = scene_context_from_object(camp, "camp") { + contexts.insert(context.id.clone(), context); + } + } + if let Some(landmarks) = draft_profile.get("landmarks").and_then(Value::as_array) { + for landmark in landmarks.iter().filter_map(Value::as_object) { + if let Some(context) = scene_context_from_object(landmark, "landmark") { + contexts.insert(context.id.clone(), context); + } + } + } + contexts +} + +fn scene_context_from_object( + object: &Map, + fallback_id: &str, +) -> Option { + let id = read_string_field(object, "id") + .or_else(|| read_string_field(object, "sceneId")) + .unwrap_or_else(|| fallback_id.to_string()); + let name = read_string_field(object, "name") + .or_else(|| read_string_field(object, "sceneName")) + .unwrap_or_else(|| id.clone()); + Some(SceneImageContext { + id, + name, + description: read_string_field(object, "description") + .or_else(|| read_string_field(object, "visualDescription")) + .unwrap_or_default(), + danger_level: read_string_field(object, "dangerLevel").unwrap_or_default(), + }) +} + +fn validate_scene_act_background_prompts(act_refs: &[SceneActGenerationRef]) -> Result<(), String> { + if let Some(act_ref) = act_refs.iter().find(|act_ref| act_ref.prompt.is_empty()) { + return Err(format!( + "第{}章第{}幕「{}」缺少 backgroundPromptText,不能在幕背景图描述文本生成前直接生图。", + act_ref.chapter_index + 1, + act_ref.act_index + 1, + act_ref.scene_name + )); + } + + Ok(()) +} + +fn json_first_text_from_value(value: &Value, keys: &[&str]) -> Option { + keys.iter().find_map(|key| json_text_from_value(value, key)) +} + +fn merge_generated_act_backgrounds(target_profile: &mut Value, background_profile: &Value) { + let Some(target_chapters) = target_profile + .get_mut("sceneChapterBlueprints") + .and_then(Value::as_array_mut) + else { + return; + }; + let Some(background_chapters) = background_profile + .get("sceneChapterBlueprints") + .and_then(Value::as_array) + else { + return; + }; + + for (chapter_index, background_chapter) in background_chapters.iter().enumerate() { + let Some(target_acts) = target_chapters + .get_mut(chapter_index) + .and_then(|chapter| chapter.get_mut("acts")) + .and_then(Value::as_array_mut) + else { + continue; + }; + let Some(background_acts) = background_chapter.get("acts").and_then(Value::as_array) else { + continue; + }; + + for (act_index, background_act) in background_acts.iter().enumerate() { + let Some(target_act_object) = target_acts + .get_mut(act_index) + .and_then(Value::as_object_mut) + else { + continue; + }; + let Some(background_act_object) = background_act.as_object() else { + continue; + }; + + // 只合并图片生成产物字段,避免并行分支把其他草稿内容互相覆盖。 + for key in [ + "backgroundImageSrc", + "backgroundAssetId", + "generatedScenePrompt", + "generatedSceneModel", + ] { + if let Some(value) = background_act_object.get(key) { + target_act_object.insert(key.to_string(), value.clone()); + } + } + } + } +} + fn json_text_from_value(value: &Value, key: &str) -> Option { value .get(key) @@ -1494,6 +1977,68 @@ fn json_text_from_value(value: &Value, key: &str) -> Option { .map(ToOwned::to_owned) } +async fn persist_partial_draft_foundation_after_asset_failure( + state: &AppState, + session: &CustomWorldAgentSessionRecord, + owner_user_id: &str, + operation_id: &str, + draft_profile: &Value, + phase_label: &str, + error_message: &str, +) { + let draft_profile_json = match serde_json::to_string(draft_profile) { + Ok(value) => Some(value), + Err(error) => { + tracing::warn!(error = %error, "素材失败后的部分底稿序列化失败"); + None + } + }; + let finalize_result = state + .spacetime_client() + .finalize_custom_world_agent_message(CustomWorldAgentMessageFinalizeRecordInput { + session_id: session.session_id.clone(), + owner_user_id: owner_user_id.to_string(), + operation_id: operation_id.to_string(), + assistant_message_id: None, + assistant_reply_text: None, + phase_label: phase_label.to_string(), + phase_detail: format!("已保存成功生成的素材,失败项超过 {DRAFT_ASSET_GENERATION_MAX_ATTEMPTS} 次重试:{error_message}"), + operation_status: "failed".to_string(), + operation_progress: 100, + stage: session.stage.clone(), + progress_percent: session.progress_percent, + focus_card_id: session.focus_card_id.clone(), + anchor_content_json: session.anchor_content.to_string(), + creator_intent_json: Some(session.creator_intent.to_string()), + creator_intent_readiness_json: session.creator_intent_readiness.to_string(), + anchor_pack_json: Some(session.anchor_pack.to_string()), + draft_profile_json, + pending_clarifications_json: Value::Array(session.pending_clarifications.clone()).to_string(), + suggested_actions_json: Value::Array(session.suggested_actions.clone()).to_string(), + recommended_replies_json: json!(session.recommended_replies).to_string(), + quality_findings_json: Value::Array(session.quality_findings.clone()).to_string(), + asset_coverage_json: session.asset_coverage.to_string(), + error_message: Some(error_message.to_string()), + updated_at_micros: current_utc_micros(), + }) + .await; + if let Err(error) = finalize_result { + tracing::warn!(error = %error, "素材失败后的部分底稿持久化失败"); + let _ = upsert_custom_world_draft_foundation_progress( + state, + &session.session_id, + owner_user_id, + operation_id, + "failed", + phase_label, + error_message, + 100, + Some(error_message.to_string()), + ) + .await; + } +} + async fn upsert_custom_world_draft_foundation_progress( state: &AppState, session_id: &str, @@ -2105,3 +2650,53 @@ fn current_utc_micros() -> i64 { .expect("system clock should be after unix epoch"); i64::try_from(duration.as_micros()).expect("current unix micros should fit in i64") } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn collect_scene_act_refs_accepts_scene_prompt_text_alias() { + let draft_profile = json!({ + "name": "雾港纪元", + "tone": "潮湿、悬疑、低照度", + "landmarks": [ + { + "id": "scene-office", + "name": "旧港办公室", + "description": "旧港边缘的玻璃办公室,窗外能看到潮湿码头。", + "dangerLevel": "low" + } + ], + "sceneChapterBlueprints": [ + { + "sceneId": "scene-office", + "sceneName": "旧港办公室", + "acts": [ + { + "title": "深夜工位", + "summary": "团队在凌晨三点继续赶版本。", + "actGoal": "找到丢失的部署钥匙", + "transitionHook": "电梯门在无人操作时打开", + "primaryRoleName": "林澈", + "supportRoleNames": ["阿岚"], + "scenePromptText": "现代创业公司办公室,凌晨灯光,紧张忙碌" + } + ] + } + ] + }); + + let act_refs = collect_scene_act_refs(&draft_profile); + + assert_eq!(act_refs.len(), 1); + assert_eq!(act_refs[0].prompt, "现代创业公司办公室,凌晨灯光,紧张忙碌"); + assert_eq!(act_refs[0].scene_id, "scene-office"); + assert_eq!(act_refs[0].scene_name, "旧港办公室"); + assert_eq!( + act_refs[0].scene_description, + "旧港边缘的玻璃办公室,窗外能看到潮湿码头。" + ); + assert!(validate_scene_act_background_prompts(&act_refs).is_ok()); + } +} diff --git a/server-rs/crates/api-server/src/custom_world_ai.rs b/server-rs/crates/api-server/src/custom_world_ai.rs index 89fed8e1..c243c487 100644 --- a/server-rs/crates/api-server/src/custom_world_ai.rs +++ b/server-rs/crates/api-server/src/custom_world_ai.rs @@ -323,7 +323,6 @@ struct NormalizedSceneImageRequest { prompt: String, negative_prompt: String, reference_image_src: Option, - model: String, } #[derive(Debug)] @@ -341,10 +340,6 @@ struct OptimizedCoverUpload { bytes: Vec, } -const TEXT_TO_IMAGE_SCENE_MODEL: &str = "wan2.2-t2i-flash"; -const REFERENCE_IMAGE_SCENE_MODEL: &str = "qwen-image-2.0"; -const TEXT_TO_IMAGE_COVER_MODEL: &str = "wan2.2-t2i-flash"; -const REFERENCE_IMAGE_COVER_MODEL: &str = "qwen-image-2.0"; const DEFAULT_CUSTOM_WORLD_SCENE_IMAGE_NEGATIVE_PROMPT: &str = "文字,水印,logo,UI界面,对话框,边框,人物近景特写,多人合照,模糊,低清晰度,畸形建筑,现代车辆,监控摄像头"; const COVER_OUTPUT_WIDTH: u32 = 1600; const COVER_OUTPUT_HEIGHT: u32 = 900; @@ -467,7 +462,7 @@ pub async fn generate_custom_world_scene_image( create_reference_image_generation( &http_client, &settings, - REFERENCE_IMAGE_SCENE_MODEL, + state.config.dashscope_reference_image_model.as_str(), normalized.prompt.as_str(), normalized.size.as_str(), &[reference_image.to_string()], @@ -481,7 +476,7 @@ pub async fn generate_custom_world_scene_image( create_text_to_image_generation( &http_client, &settings, - TEXT_TO_IMAGE_SCENE_MODEL, + state.config.dashscope_scene_image_model.as_str(), normalized.prompt.as_str(), Some(normalized.negative_prompt.as_str()), normalized.size.as_str(), @@ -493,6 +488,11 @@ pub async fn generate_custom_world_scene_image( .await } .map_err(|error| custom_world_ai_error_response(&request_context, error))?; + let scene_model = if reference_image.is_some() { + state.config.dashscope_reference_image_model.clone() + } else { + state.config.dashscope_scene_image_model.clone() + }; let downloaded = download_remote_image( &http_client, generated.image_url.as_str(), @@ -532,7 +532,7 @@ pub async fn generate_custom_world_scene_image( image_src: String::new(), asset_id: asset_id.clone(), source_type: "generated".to_string(), - model: Some(normalized.model), + model: Some(scene_model), size: Some(normalized.size), task_id: Some(generated.task_id), prompt: Some(normalized.prompt), @@ -548,6 +548,7 @@ pub async fn generate_custom_world_scene_image( pub(crate) async fn generate_custom_world_scene_image_for_profile( state: &AppState, owner_user_id: &str, + profile: &Value, profile_id: Option<&str>, world_name: &str, scene_id: &str, @@ -560,20 +561,16 @@ pub(crate) async fn generate_custom_world_scene_image_for_profile( world_name: Some(world_name.to_string()), landmark_id: Some(scene_id.to_string()), landmark_name: Some(scene_name.to_string()), - prompt: Some(prompt_text.to_string()), - size: Some("1600*900".to_string()), + // 自动草稿生成必须和草稿页手动生成走同一条 prompt 编译链: + // 只把幕级描述作为 userPrompt 输入,仍交给 normalize_scene_image_request 组装世界名、地点名、风格与负面词。 + prompt: None, + size: Some("1280*720".to_string()), negative_prompt: None, reference_image_src: None, user_prompt: Some(prompt_text.to_string()), - profile: Some(SceneImageProfileInput { - id: profile_id.map(ToOwned::to_owned), - name: Some(world_name.to_string()), - subtitle: None, - summary: None, - tone: None, - player_goal: None, - setting_text: None, - }), + profile: Some(scene_image_profile_input_from_value( + profile, profile_id, world_name, + )), landmark: Some(SceneImageLandmarkInput { id: Some(scene_id.to_string()), name: Some(scene_name.to_string()), @@ -587,7 +584,7 @@ pub(crate) async fn generate_custom_world_scene_image_for_profile( let generated = create_text_to_image_generation( &http_client, &settings, - TEXT_TO_IMAGE_SCENE_MODEL, + state.config.dashscope_scene_image_model.as_str(), normalized.prompt.as_str(), Some(normalized.negative_prompt.as_str()), normalized.size.as_str(), @@ -627,7 +624,7 @@ pub(crate) async fn generate_custom_world_scene_image_for_profile( slot: "scene_image", source_job_id: Some(generated.task_id.clone()), }; - let model = normalized.model.clone(); + let model = state.config.dashscope_scene_image_model.clone(); let prompt = normalized.prompt.clone(); let asset = persist_custom_world_asset( state, @@ -653,6 +650,31 @@ pub(crate) async fn generate_custom_world_scene_image_for_profile( }) } +fn scene_image_profile_input_from_value( + profile: &Value, + profile_id: Option<&str>, + world_name: &str, +) -> SceneImageProfileInput { + SceneImageProfileInput { + id: profile_id.map(ToOwned::to_owned), + name: Some(world_name.to_string()), + subtitle: json_text_from_value(profile, "subtitle"), + summary: json_text_from_value(profile, "summary"), + tone: json_text_from_value(profile, "tone"), + player_goal: json_text_from_value(profile, "playerGoal"), + setting_text: json_text_from_value(profile, "settingText"), + } +} + +fn json_text_from_value(value: &Value, key: &str) -> Option { + value + .get(key) + .and_then(Value::as_str) + .map(str::trim) + .filter(|value| !value.is_empty()) + .map(ToOwned::to_owned) +} + pub async fn generate_custom_world_cover_image( State(state): State, Extension(request_context): Extension, @@ -707,7 +729,7 @@ pub async fn generate_custom_world_cover_image( create_text_to_image_generation( &http_client, &settings, - TEXT_TO_IMAGE_COVER_MODEL, + state.config.dashscope_cover_image_model.as_str(), prompt.as_str(), None, size.as_str(), @@ -721,7 +743,7 @@ pub async fn generate_custom_world_cover_image( create_reference_image_generation( &http_client, &settings, - REFERENCE_IMAGE_COVER_MODEL, + state.config.dashscope_reference_image_model.as_str(), prompt.as_str(), size.as_str(), &reference_images, @@ -766,9 +788,9 @@ pub async fn generate_custom_world_cover_image( asset_id: asset_id.clone(), source_type: "generated".to_string(), model: Some(if reference_images.is_empty() { - TEXT_TO_IMAGE_COVER_MODEL.to_string() + state.config.dashscope_cover_image_model.clone() } else { - REFERENCE_IMAGE_COVER_MODEL.to_string() + state.config.dashscope_reference_image_model.clone() }), size: Some(size), task_id: Some(generated.task_id), @@ -1187,11 +1209,6 @@ fn normalize_scene_image_request( negative_prompt: trim_to_option(payload.negative_prompt.as_deref()) .unwrap_or_else(|| DEFAULT_CUSTOM_WORLD_SCENE_IMAGE_NEGATIVE_PROMPT.to_string()), reference_image_src: reference_image_src.clone(), - model: if reference_image_src.is_some() { - REFERENCE_IMAGE_SCENE_MODEL.to_string() - } else { - TEXT_TO_IMAGE_SCENE_MODEL.to_string() - }, }) } @@ -2580,6 +2597,103 @@ mod tests { ); } + #[test] + fn automatic_scene_image_payload_reuses_manual_prompt_compiler() { + let profile = json!({ + "id": "profile_001", + "name": "雾海群岛", + "subtitle": "失落航线", + "summary": "玩家在雾海中追查沉没王冠。", + "tone": "潮湿、神秘、低魔奇幻", + "playerGoal": "找到王冠并阻止海妖复苏", + "settingText": "群岛被永恒雾潮包围。" + }); + let payload = CustomWorldSceneImageRequest { + profile_id: Some("profile_001".to_string()), + world_name: Some("雾海群岛".to_string()), + landmark_id: Some("reef_temple".to_string()), + landmark_name: Some("礁石神殿".to_string()), + prompt: None, + size: Some("1280*720".to_string()), + negative_prompt: None, + reference_image_src: None, + user_prompt: Some("破碎神殿矗立在蓝绿色雾潮中,潮湿石阶上有幽光贝壳。".to_string()), + profile: Some(scene_image_profile_input_from_value( + &profile, + Some("profile_001"), + "雾海群岛", + )), + landmark: Some(SceneImageLandmarkInput { + id: Some("reef_temple".to_string()), + name: Some("礁石神殿".to_string()), + description: Some("古老礁石上的半沉神殿。".to_string()), + danger_level: None, + }), + }; + + let normalized = normalize_scene_image_request(payload).expect("payload should normalize"); + + assert!(normalized.prompt.contains("世界名:雾海群岛")); + assert!(normalized.prompt.contains("世界副标题:失落航线")); + assert!(normalized.prompt.contains("场景名称:礁石神殿")); + assert!( + normalized + .prompt + .contains("本次想要生成的画面内容:破碎神殿") + ); + assert_ne!( + normalized.prompt, + "破碎神殿矗立在蓝绿色雾潮中,潮湿石阶上有幽光贝壳。" + ); + } + + #[test] + fn automatic_default_scene_image_context_matches_manual_default_context() { + let profile = json!({ + "id": "profile_001", + "name": "雾海群岛", + "subtitle": "失落航线", + "summary": "玩家在雾海中追查沉没王冠。", + "tone": "潮湿、神秘、低魔奇幻", + "playerGoal": "找到王冠并阻止海妖复苏", + "settingText": "群岛被永恒雾潮包围。" + }); + let user_prompt = "破碎神殿矗立在蓝绿色雾潮中,潮湿石阶上有幽光贝壳。"; + let profile_input = + scene_image_profile_input_from_value(&profile, Some("profile_001"), "雾海群岛"); + let landmark = SceneImageLandmarkInput { + id: Some("reef_temple".to_string()), + name: Some("礁石神殿".to_string()), + description: Some("古老礁石上的半沉神殿。".to_string()), + danger_level: Some("high".to_string()), + }; + let manual_prompt = build_custom_world_scene_image_prompt( + &profile_input, + &landmark, + user_prompt, + false, + Some("礁石神殿"), + "雾海群岛", + ); + + let normalized = normalize_scene_image_request(CustomWorldSceneImageRequest { + profile_id: Some("profile_001".to_string()), + world_name: Some("雾海群岛".to_string()), + landmark_id: Some("reef_temple".to_string()), + landmark_name: Some("礁石神殿".to_string()), + prompt: None, + size: Some("1280*720".to_string()), + negative_prompt: None, + reference_image_src: None, + user_prompt: Some(user_prompt.to_string()), + profile: Some(profile_input), + landmark: Some(landmark), + }) + .expect("payload should normalize"); + + assert_eq!(normalized.prompt, manual_prompt); + } + #[tokio::test] async fn cover_image_returns_service_unavailable_when_dashscope_missing() { let state = AppState::new(AppConfig::default()).expect("state should build"); diff --git a/server-rs/crates/api-server/src/custom_world_foundation_draft.rs b/server-rs/crates/api-server/src/custom_world_foundation_draft.rs index d6df6243..314c6ae0 100644 --- a/server-rs/crates/api-server/src/custom_world_foundation_draft.rs +++ b/server-rs/crates/api-server/src/custom_world_foundation_draft.rs @@ -1,4 +1,4 @@ -use platform_llm::{LlmClient, LlmMessage, LlmTextRequest}; +use platform_llm::{LlmClient, LlmMessage, LlmTextRequest}; use serde_json::{Map as JsonMap, Value as JsonValue, json}; use shared_contracts::runtime::ExecuteCustomWorldAgentActionRequest; use spacetime_client::CustomWorldAgentSessionRecord; @@ -738,7 +738,7 @@ fn build_custom_world_landmark_seed_batch_prompt( ) -> String { [ "请根据下面的世界核心信息,生成一批关键场景框架名单。".to_string(), - "后续我会继续补全场景网络,所以这一步每个地点只保留场景骨架与默认生图描述。".to_string(), + "后续我会继续补全场景网络,所以这一步每个地点只保留场景骨架、地点默认生图描述和逐幕背景描述。".to_string(), "你必须只输出一个能被 JSON.parse 直接解析的 JSON 对象,不要输出 Markdown、代码块、注释或解释。".to_string(), "世界核心信息:".to_string(), build_framework_summary_text(framework, 0), @@ -751,6 +751,7 @@ fn build_custom_world_landmark_seed_batch_prompt( " \"name\": \"场景名称\",".to_string(), " \"description\": \"场景极简描述\",".to_string(), " \"visualDescription\": \"默认场景生图描述\",".to_string(), + " \"actBackgroundPromptTexts\": [\"第一幕背景画面描述\", \"第二幕背景画面描述\", \"第三幕背景画面描述\"],".to_string(), " \"dangerLevel\": \"low|medium|high|extreme\"".to_string(), " }".to_string(), " ]".to_string(), @@ -760,8 +761,10 @@ fn build_custom_world_landmark_seed_batch_prompt( format!("- 必须生成恰好 {batch_count} 个关键场景。"), "- 这是一个完全独立的自定义世界;地点名称必须直接服务玩家输入主题。".to_string(), "- 名称必须具体且互不重复,不要使用 地点1、场景1 之类的占位名。".to_string(), - "- 每个地点只保留:name、description、visualDescription、dangerLevel。".to_string(), + "- 每个地点只保留:name、description、visualDescription、actBackgroundPromptTexts、dangerLevel。".to_string(), "- visualDescription 是打开场景背景图像生成面板时默认填入的场景描述,必须具体到画面主体、远近景层次、地面可站立区域和氛围识别点,控制在 32 到 80 个汉字内。".to_string(), + "- actBackgroundPromptTexts 必须恰好 3 条,分别对应这个场景章节的第 1/2/3 幕背景图画面内容描述;每条都必须是大模型根据当前地点、主线阶段和可出场角色直接写出的画面描述,控制在 40 到 90 个汉字内。".to_string(), + "- actBackgroundPromptTexts 禁止使用“某某第1幕背景;玩家会在……”这类标题、摘要、规则句拼接格式;必须像可直接交给生图模型的自然画面描述。".to_string(), "- description 控制在 12 到 24 个汉字内。".to_string(), "- dangerLevel 只能是 low、medium、high、extreme 之一。".to_string(), "- 所有生成文本都必须使用中文。".to_string(), @@ -780,8 +783,8 @@ fn build_custom_world_landmark_seed_batch_json_repair_prompt( "顶层必须只包含一个 landmarks 数组。".to_string(), format!("必须保留恰好 {expected_count} 个地点对象。"), if forbidden_names.is_empty() { "".to_string() } else { format!("禁止使用这些重复名:{}。", forbidden_names.join("、")) }, - "每个地点只包含:name、description、visualDescription、dangerLevel。".to_string(), - "如果缺少字段:字符串补空字符串,dangerLevel 补 medium。".to_string(), + "每个地点只包含:name、description、visualDescription、actBackgroundPromptTexts、dangerLevel。".to_string(), + "如果缺少字段:字符串补空字符串,actBackgroundPromptTexts 补空数组,dangerLevel 补 medium。".to_string(), "不要输出 sceneNpcNames、connectedLandmarks、items 或任何其他字段。".to_string(), "原始文本:".to_string(), response_text.trim().to_string(), @@ -945,6 +948,7 @@ fn build_custom_world_role_batch_json_repair_prompt( response_text.trim().to_string(), ].join("\n") } +#[cfg(test)] fn build_foundation_draft_user_prompt(session: &CustomWorldAgentSessionRecord) -> String { let anchor_content = to_pretty_json(&session.anchor_content); let creator_intent = to_pretty_json(&session.creator_intent); @@ -1063,11 +1067,80 @@ fn build_foundation_draft_profile_from_framework( JsonValue::Array(playable_detailed), ); object.insert("storyNpcs".to_string(), JsonValue::Array(story_detailed)); + let scene_chapter_blueprints = build_scene_chapter_blueprints_from_landmarks(&landmarks); object.insert("landmarks".to_string(), JsonValue::Array(landmarks)); object.insert("chapters".to_string(), JsonValue::Array(Vec::new())); + object.insert( + "sceneChapterBlueprints".to_string(), + JsonValue::Array(scene_chapter_blueprints), + ); normalize_foundation_draft_profile(JsonValue::Object(object), session) } +fn build_scene_chapter_blueprints_from_landmarks(landmarks: &[JsonValue]) -> Vec { + // 幕背景描述必须来自关键场景生成步骤,不能在草稿合成阶段再用规则句拼接。 + landmarks + .iter() + .enumerate() + .map(|(chapter_index, landmark)| { + let scene_name = json_text(landmark, "name") + .unwrap_or_else(|| format!("关键场景{}", chapter_index + 1)); + let scene_id = json_text(landmark, "id") + .unwrap_or_else(|| format!("saved-landmark-{}", chapter_index + 1)); + let summary = json_text(landmark, "description").unwrap_or_default(); + let act_prompts = + json_string_array(landmark, "actBackgroundPromptTexts").unwrap_or_default(); + let scene_npc_names = json_string_array(landmark, "sceneNpcNames").unwrap_or_default(); + + json!({ + "id": scene_id.clone(), + "sceneId": scene_id.clone(), + "title": scene_name, + "summary": summary, + "linkedLandmarkIds": [scene_id.clone()], + "acts": (0..3) + .map(|act_index| build_scene_act_blueprint_from_landmark( + &scene_id, + &summary, + &act_prompts, + &scene_npc_names, + act_index, + )) + .collect::>(), + }) + }) + .collect() +} + +fn build_scene_act_blueprint_from_landmark( + scene_id: &str, + scene_summary: &str, + act_prompts: &[String], + scene_npc_names: &[String], + act_index: usize, +) -> JsonValue { + let act_title = if act_index == 0 { + "第1幕".to_string() + } else { + format!("第{}幕", act_index + 1) + }; + let prompt = act_prompts + .get(act_index) + .map(String::as_str) + .map(str::trim) + .filter(|value| !value.is_empty()) + .unwrap_or(""); + // 缺失时保留空值,让后续生图前校验暴露底稿质量问题。 + json!({ + "id": format!("{}-act-{}", scene_id, act_index + 1), + "sceneId": scene_id, + "title": act_title, + "summary": scene_summary, + "backgroundPromptText": prompt, + "encounterNpcIds": scene_npc_names, + }) +} + fn normalize_framework_shape(framework: &mut JsonValue, setting_text: &str) { if !framework.is_object() { *framework = json!({}); @@ -1469,12 +1542,6 @@ fn normalize_scene_chapter_blueprint(chapter: JsonValue) -> JsonValue { fn normalize_scene_act_blueprint(act: JsonValue, index: usize) -> JsonValue { let mut object = act.as_object().cloned().unwrap_or_default(); - let fallback_act = build_fallback_scene_act_with_index(index); - let fallback_prompt = fallback_act - .get("backgroundPromptText") - .and_then(JsonValue::as_str) - .unwrap_or("当前幕场景背景,突出可探索空间、站位地面和局势氛围。") - .to_string(); let title = object .get("title") .and_then(JsonValue::as_str) @@ -1497,7 +1564,7 @@ fn normalize_scene_act_blueprint(act: JsonValue, index: usize) -> JsonValue { .map(str::trim) .filter(|value| !value.is_empty()) .map(ToOwned::to_owned) - .unwrap_or_else(|| format!("{title}:{summary}。{fallback_prompt}")); + .unwrap_or_default(); object.insert( "backgroundPromptText".to_string(), JsonValue::String(background_prompt), @@ -1523,7 +1590,7 @@ fn build_fallback_scene_act_with_index(index: usize) -> JsonValue { "id": format!("scene-act-{}", index + 1), "title": if index == 0 { "开场场景幕".to_string() } else { format!("第{}幕", index + 1) }, "summary": "玩家被推入第一波局势,必须先确认站位、威胁和下一步追查方向。", - "backgroundPromptText": "第一幕场景背景,突出玩家初入现场时的空间轮廓、可站立地面、远近景层次和第一波威胁氛围。", + "backgroundPromptText": "", }) } @@ -1642,10 +1709,12 @@ fn parse_json_response_text(text: &str) -> Result serde_json::from_str::(trimmed) } +#[cfg(test)] fn to_pretty_json(value: &JsonValue) -> String { serde_json::to_string_pretty(value).unwrap_or_else(|_| "null".to_string()) } +#[cfg(test)] fn is_non_null_json(value: &JsonValue) -> bool { !matches!(value, JsonValue::Null) } @@ -1665,6 +1734,54 @@ mod tests { use super::*; + #[test] + fn scene_chapter_blueprints_use_landmark_act_background_prompts() { + let landmarks = vec![json!({ + "name": "雾港码头", + "description": "旧船骨露出黑潮。", + "actBackgroundPromptTexts": [ + "潮湿木栈桥在青灰雾里延伸,近处有可站立的破旧甲板,远处旧船骨与灯塔剪影压低天空。", + "封锁绳与巡海灯横切码头,中景堆满浸水货箱,远景黑潮拍打沉船残骸。", + "退潮后的泥滩露出父亲留下的海图匣,雾中灯火错位闪烁,岸边留出对峙站位。" + ], + "sceneNpcNames": ["灯童丁"] + })]; + + let blueprints = build_scene_chapter_blueprints_from_landmarks(&landmarks); + let acts = blueprints[0] + .get("acts") + .and_then(JsonValue::as_array) + .expect("acts should exist"); + + assert_eq!(acts.len(), 3); + assert_eq!( + acts[0].get("backgroundPromptText"), + Some(&json!( + "潮湿木栈桥在青灰雾里延伸,近处有可站立的破旧甲板,远处旧船骨与灯塔剪影压低天空。" + )) + ); + assert!( + !acts[0] + .get("backgroundPromptText") + .and_then(JsonValue::as_str) + .unwrap_or_default() + .contains("第1幕背景") + ); + } + + #[test] + fn normalize_scene_act_keeps_missing_background_prompt_empty() { + let act = normalize_scene_act_blueprint( + json!({ + "title": "第1幕", + "summary": "玩家进入雾港码头。" + }), + 0, + ); + + assert_eq!(act.get("backgroundPromptText"), Some(&json!(""))); + } + #[test] fn foundation_prompt_uses_real_seed_text() { let session = build_test_session(); @@ -1740,7 +1857,7 @@ mod tests { r#"{"playableNpcs":[{"name":"岑灯","title":"返乡守灯人","role":"主角代理","description":"追查旧案的人","initialAffinity":24,"relationshipHooks":["旧案牵连"],"tags":["守灯人"]}]}"#, ), llm_response( - r#"{"storyNpcs":[{"name":"议长甲","title":"群岛议长","role":"遮掩者","description":"压住旧档的人","initialAffinity":-10,"relationshipHooks":["旧档案"],"tags":["议会"]},{"name":"潮医乙","title":"潮汐医师","role":"证人","description":"知道沉船伤痕","initialAffinity":20,"relationshipHooks":["救治记录"],"tags":["证人"]}]}"#, + r#"{"storyNpcs":[{"name":"议长甲","title":"群岛议长","role":"遮掩者","description":"压住旧档的人","visualDescription":"深色议会长袍垂到靴边,银扣像封蜡,手里总夹着旧档袋。","actionDescription":"抬手下令封锁,动作缓慢却压迫感强。","sceneVisualDescription":"他常出现在议会石厅高处,旧档柜阴影切过半张脸。","initialAffinity":-10,"relationshipHooks":["旧档案"],"tags":["议会"]},{"name":"潮医乙","title":"潮汐医师","role":"证人","description":"知道沉船伤痕","initialAffinity":20,"relationshipHooks":["救治记录"],"tags":["证人"]}]}"#, ), llm_response( r#"{"storyNpcs":[{"name":"雾商丙","title":"雾港商人","role":"中间人","description":"贩卖航线的人","initialAffinity":5,"relationshipHooks":["伪造海图"],"tags":["商人"]},{"name":"灯童丁","title":"灯塔学徒","role":"目击者","description":"听见夜钟的人","initialAffinity":30,"relationshipHooks":["夜钟"],"tags":["学徒"]}]}"#, @@ -1795,6 +1912,24 @@ mod tests { assert!(request_text.contains("叙事档案")); assert!(request_text.contains("养成档案")); assert!(!request_text.contains("seedText\\uff1acustom-world-agent-session-1")); + assert_eq!( + draft_profile + .get("playableNpcs") + .and_then(JsonValue::as_array) + .and_then(|entries| entries.first()) + .and_then(|entry| entry.get("visualDescription")) + .and_then(JsonValue::as_str), + Some("灰蓝旧灯披风压着海盐痕,腰侧挂旧海图筒和短灯杖。") + ); + assert_eq!( + draft_profile + .get("storyNpcs") + .and_then(JsonValue::as_array) + .and_then(|entries| entries.first()) + .and_then(|entry| entry.get("visualDescription")) + .and_then(JsonValue::as_str), + Some("深色议会长袍垂到靴边,银扣像封蜡,手里总夹着旧档袋。") + ); assert_eq!(draft_profile.get("name"), Some(&json!("雾港归航"))); assert!( draft_profile diff --git a/server-rs/crates/api-server/src/http_error.rs b/server-rs/crates/api-server/src/http_error.rs index 3828f197..eb3f3bb4 100644 --- a/server-rs/crates/api-server/src/http_error.rs +++ b/server-rs/crates/api-server/src/http_error.rs @@ -38,6 +38,18 @@ impl AppError { &self.message } + pub fn body_text(&self) -> String { + // 批处理任务不能只读 HTTP 状态文案,否则 DashScope 返回的真实失败原因会被压成“上游服务请求失败”。 + self.details + .as_ref() + .and_then(|details| details.get("message")) + .and_then(Value::as_str) + .map(str::trim) + .filter(|message| !message.is_empty()) + .unwrap_or(self.message.as_str()) + .to_string() + } + pub fn with_message(mut self, message: impl Into) -> Self { self.message = message.into(); self diff --git a/server-rs/crates/api-server/src/main.rs b/server-rs/crates/api-server/src/main.rs index aab0de29..9bf18ace 100644 --- a/server-rs/crates/api-server/src/main.rs +++ b/server-rs/crates/api-server/src/main.rs @@ -1,4 +1,5 @@ mod admin; +mod ai_generation_drafts; mod ai_tasks; mod api_response; mod app; diff --git a/server-rs/crates/api-server/src/puzzle.rs b/server-rs/crates/api-server/src/puzzle.rs index ca41f4fb..5f665ed3 100644 --- a/server-rs/crates/api-server/src/puzzle.rs +++ b/server-rs/crates/api-server/src/puzzle.rs @@ -58,6 +58,7 @@ use std::convert::Infallible; use tokio::time::sleep; use crate::{ + ai_generation_drafts::{AiGenerationDraftContext, AiGenerationDraftWriter}, api_response::json_success_body, auth::AuthenticatedAccessToken, http_error::AppError, @@ -300,6 +301,16 @@ pub async fn stream_puzzle_agent_message( let session_id_for_stream = session_id.clone(); let owner_user_id_for_stream = owner_user_id.clone(); let stream = async_stream::stream! { + let mut draft_writer = AiGenerationDraftWriter::new(AiGenerationDraftContext::new( + "puzzle", + owner_user_id_for_stream.as_str(), + session_id_for_stream.as_str(), + payload.client_message_id.as_str(), + "拼图模板生成草稿", + )); + if let Err(error) = draft_writer.ensure_started(state.spacetime_client()).await { + tracing::warn!(error = %error, "拼图模板生成草稿任务启动失败,主生成流程继续执行"); + } let (reply_tx, mut reply_rx) = tokio::sync::mpsc::unbounded_channel::(); let turn_result = { let run_turn = run_puzzle_agent_turn( @@ -319,6 +330,7 @@ pub async fn stream_puzzle_agent_message( result = &mut run_turn => break result, maybe_text = reply_rx.recv() => { if let Some(text) = maybe_text { + draft_writer.persist_visible_text(state.spacetime_client(), text.as_str()).await; yield Ok::(puzzle_sse_json_event_or_error( "reply_delta", json!({ "text": text }), @@ -330,6 +342,7 @@ pub async fn stream_puzzle_agent_message( }; while let Some(text) = reply_rx.recv().await { + draft_writer.persist_visible_text(state.spacetime_client(), text.as_str()).await; yield Ok::(puzzle_sse_json_event_or_error( "reply_delta", json!({ "text": text }), diff --git a/server-rs/crates/platform-llm/src/lib.rs b/server-rs/crates/platform-llm/src/lib.rs index 311c4452..92256bfc 100644 --- a/server-rs/crates/platform-llm/src/lib.rs +++ b/server-rs/crates/platform-llm/src/lib.rs @@ -1,4 +1,12 @@ -use std::{error::Error, fmt, str as std_str, time::Duration}; +use std::{ + env, + error::Error, + fmt, fs, + path::PathBuf, + str as std_str, + sync::atomic::{AtomicU64, Ordering}, + time::{Duration, SystemTime, UNIX_EPOCH}, +}; use log::{debug, warn}; use reqwest::{Client, StatusCode}; @@ -10,6 +18,9 @@ pub const DEFAULT_REQUEST_TIMEOUT_MS: u64 = 30_000; pub const DEFAULT_MAX_RETRIES: u32 = 1; pub const DEFAULT_RETRY_BACKOFF_MS: u64 = 500; pub const CHAT_COMPLETIONS_PATH: &str = "/chat/completions"; +const DEFAULT_LLM_RAW_LOG_DIR: &str = "logs/llm-raw"; + +static LLM_RAW_LOG_SEQUENCE: AtomicU64 = AtomicU64::new(1); // 冻结平台来源,避免上层继续散落 provider 字符串。 #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] @@ -113,6 +124,17 @@ struct ChatCompletionsRequestBody<'a> { max_tokens: Option, } +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +struct LlmRawFailureInputLog<'a> { + provider: &'static str, + model: &'a str, + stream: bool, + attempt: u32, + max_tokens: Option, + messages: &'a [LlmMessage], +} + #[derive(Deserialize)] struct ChatCompletionsResponseEnvelope { id: Option, @@ -156,6 +178,7 @@ struct ChatCompletionsContentPart { #[derive(Default)] struct OpenAiCompatibleSseParser { buffer: String, + raw_text: String, } #[derive(Debug)] @@ -382,12 +405,31 @@ impl LlmClient { request.validate()?; let resolved_model = request.resolved_model(self.config.model()).to_string(); let response = self.execute_request(&request, false).await?; - let raw_text = response - .text() - .await - .map_err(|error| map_stream_read_error(error, 1))?; + let raw_text = response.text().await.map_err(|error| { + let llm_error = map_stream_read_error(error, 1); + log_llm_raw_failure( + &self.config, + &request, + false, + 1, + "read_response_failed", + llm_error.to_string().as_str(), + ); + llm_error + })?; parse_chat_completions_response(self.config.provider(), &resolved_model, raw_text.as_str()) + .map_err(|error| { + log_llm_raw_failure( + &self.config, + &request, + false, + 1, + "parse_response_failed", + raw_text.as_str(), + ); + error + }) } pub async fn request_single_message_text( @@ -422,10 +464,18 @@ impl LlmClient { let mut undecoded_chunk_bytes = Vec::new(); loop { - let next_chunk = response - .chunk() - .await - .map_err(|error| map_stream_read_error(error, 1))?; + let next_chunk = response.chunk().await.map_err(|error| { + let llm_error = map_stream_read_error(error, 1); + log_llm_raw_failure( + &self.config, + &request, + true, + 1, + "read_stream_failed", + parser.raw_text().as_str(), + ); + llm_error + })?; let Some(chunk) = next_chunk else { break; @@ -433,12 +483,33 @@ impl LlmClient { undecoded_chunk_bytes.extend_from_slice(chunk.as_ref()); let (chunk_text, remaining_bytes) = - decode_utf8_stream_chunk(undecoded_chunk_bytes.as_slice())?; + decode_utf8_stream_chunk(undecoded_chunk_bytes.as_slice()).map_err(|error| { + log_llm_raw_failure( + &self.config, + &request, + true, + 1, + "decode_stream_failed", + parser.raw_text().as_str(), + ); + error + })?; undecoded_chunk_bytes = remaining_bytes; if chunk_text.is_empty() { continue; } - for event in parser.push_chunk(chunk_text.as_ref())? { + let stream_events = parser.push_chunk(chunk_text.as_ref()).map_err(|error| { + log_llm_raw_failure( + &self.config, + &request, + true, + 1, + "parse_stream_failed", + parser.raw_text().as_str(), + ); + error + })?; + for event in stream_events { if let Some(delta_text) = event.delta_text && !delta_text.is_empty() { @@ -460,10 +531,29 @@ impl LlmClient { if !undecoded_chunk_bytes.is_empty() { let trailing_text = std_str::from_utf8(undecoded_chunk_bytes.as_slice()).map_err(|error| { + log_llm_raw_failure( + &self.config, + &request, + true, + 1, + "decode_stream_failed", + parser.raw_text().as_str(), + ); LlmError::Deserialize(format!("解析 LLM 流式 UTF-8 响应失败:{error}")) })?; if !trailing_text.is_empty() { - for event in parser.push_chunk(trailing_text)? { + let trailing_events = parser.push_chunk(trailing_text).map_err(|error| { + log_llm_raw_failure( + &self.config, + &request, + true, + 1, + "parse_stream_failed", + parser.raw_text().as_str(), + ); + error + })?; + for event in trailing_events { if let Some(delta_text) = event.delta_text && !delta_text.is_empty() { @@ -483,7 +573,18 @@ impl LlmClient { } } - for event in parser.finish()? { + let remaining_events = parser.finish().map_err(|error| { + log_llm_raw_failure( + &self.config, + &request, + true, + 1, + "parse_stream_failed", + parser.raw_text().as_str(), + ); + error + })?; + for event in remaining_events { if let Some(delta_text) = event.delta_text && !delta_text.is_empty() { @@ -503,6 +604,14 @@ impl LlmClient { let content = accumulated_text.trim().to_string(); if content.is_empty() { + log_llm_raw_failure( + &self.config, + &request, + true, + 1, + "empty_stream_response", + parser.raw_text().as_str(), + ); return Err(LlmError::EmptyResponse); } @@ -591,6 +700,14 @@ impl LlmClient { continue; } + log_llm_raw_failure( + &self.config, + request, + stream, + attempt, + "upstream_status_failed", + raw_text.as_str(), + ); return Err(LlmError::Upstream { status_code: status.as_u16(), message, @@ -607,7 +724,16 @@ impl LlmClient { continue; } - return Err(LlmError::Timeout { attempts: attempt }); + let error = LlmError::Timeout { attempts: attempt }; + log_llm_raw_failure( + &self.config, + request, + stream, + attempt, + "request_timeout", + error.to_string().as_str(), + ); + return Err(error); } Err(error) if error.is_connect() => { let message = error.to_string(); @@ -622,13 +748,31 @@ impl LlmClient { continue; } - return Err(LlmError::Connectivity { + let error = LlmError::Connectivity { attempts: attempt, message, - }); + }; + log_llm_raw_failure( + &self.config, + request, + stream, + attempt, + "request_connectivity_failed", + error.to_string().as_str(), + ); + return Err(error); } Err(error) => { - return Err(LlmError::Transport(error.to_string())); + let error = LlmError::Transport(error.to_string()); + log_llm_raw_failure( + &self.config, + request, + stream, + attempt, + "request_transport_failed", + error.to_string().as_str(), + ); + return Err(error); } } } @@ -652,11 +796,16 @@ impl LlmClient { impl OpenAiCompatibleSseParser { fn push_chunk(&mut self, chunk: &str) -> Result, LlmError> { + self.raw_text.push_str(chunk); self.buffer.push_str(chunk); self.buffer = self.buffer.replace("\r\n", "\n"); self.drain_complete_events() } + fn raw_text(&self) -> String { + self.raw_text.clone() + } + fn finish(&mut self) -> Result, LlmError> { if self.buffer.trim().is_empty() { return Ok(Vec::new()); @@ -691,6 +840,87 @@ fn normalize_non_empty(value: String, error_message: &str) -> Result Result<(), String> { + let log_dir = env::var("LLM_RAW_LOG_DIR") + .map(PathBuf::from) + .unwrap_or_else(|_| PathBuf::from(DEFAULT_LLM_RAW_LOG_DIR)); + fs::create_dir_all(&log_dir).map_err(|error| format!("创建日志目录失败:{error}"))?; + + let prefix = build_llm_raw_log_prefix(failure_stage); + let model = request.resolved_model(config.model()); + let input_log = LlmRawFailureInputLog { + provider: config.provider().as_str(), + model, + stream, + attempt, + max_tokens: request.max_tokens, + messages: request.messages.as_slice(), + }; + let input_text = serde_json::to_string_pretty(&input_log) + .map_err(|error| format!("序列化模型输入日志失败:{error}"))?; + fs::write(log_dir.join(format!("{prefix}.input.json")), input_text) + .map_err(|error| format!("写入模型输入日志失败:{error}"))?; + fs::write(log_dir.join(format!("{prefix}.output.txt")), raw_output) + .map_err(|error| format!("写入模型输出日志失败:{error}"))?; + + Ok(()) +} + +fn build_llm_raw_log_prefix(failure_stage: &str) -> String { + let millis = SystemTime::now() + .duration_since(UNIX_EPOCH) + .map(|duration| duration.as_millis()) + .unwrap_or_default(); + let sequence = LLM_RAW_LOG_SEQUENCE.fetch_add(1, Ordering::Relaxed); + let safe_stage = sanitize_log_file_segment(failure_stage); + + format!("{millis}-{}-{sequence:06}-{safe_stage}", std::process::id()) +} + +fn sanitize_log_file_segment(value: &str) -> String { + let sanitized = value + .chars() + .map(|character| { + if character.is_ascii_alphanumeric() || character == '-' || character == '_' { + character + } else { + '_' + } + }) + .collect::(); + + if sanitized.is_empty() { + "unknown".to_string() + } else { + sanitized + } +} + fn parse_chat_completions_response( provider: LlmProvider, fallback_model: &str, @@ -1028,6 +1258,62 @@ mod tests { assert_eq!(response.response_id.as_deref(), Some("req_stream_01")); } + #[tokio::test] + async fn request_text_writes_raw_failure_logs_after_parse_error() { + let log_dir = std::env::temp_dir().join(format!( + "platform-llm-raw-log-test-{}", + build_llm_raw_log_prefix("parse_error") + )); + unsafe { + std::env::set_var("LLM_RAW_LOG_DIR", &log_dir); + } + + let server_url = spawn_mock_server(vec![MockResponse { + status_line: "200 OK", + content_type: "application/json; charset=utf-8", + body: "不是合法 JSON".to_string(), + extra_headers: Vec::new(), + }]); + + let client = build_test_client(server_url, 0); + let error = client + .request_single_message_text("系统原文", "用户原文") + .await + .expect_err("invalid json should fail"); + + assert!(matches!(error, LlmError::Deserialize(_))); + let mut input_logs = Vec::new(); + let mut output_logs = Vec::new(); + for entry in fs::read_dir(&log_dir).expect("log dir should exist") { + let path = entry.expect("log entry should be readable").path(); + let file_name = path + .file_name() + .and_then(|name| name.to_str()) + .unwrap_or_default() + .to_string(); + if file_name.ends_with(".input.json") { + input_logs.push(path); + } else if file_name.ends_with(".output.txt") { + output_logs.push(path); + } + } + + assert_eq!(input_logs.len(), 1); + assert_eq!(output_logs.len(), 1); + let input_text = fs::read_to_string(&input_logs[0]).expect("input log should be readable"); + let output_text = + fs::read_to_string(&output_logs[0]).expect("output log should be readable"); + assert!(input_text.contains("系统原文")); + assert!(input_text.contains("用户原文")); + assert!(!input_text.contains("test-key")); + assert_eq!(output_text, "不是合法 JSON"); + + unsafe { + std::env::remove_var("LLM_RAW_LOG_DIR"); + } + fs::remove_dir_all(log_dir).expect("log dir should be removed"); + } + fn build_test_client(base_url: String, max_retries: u32) -> LlmClient { let config = LlmConfig::new( LlmProvider::Ark, diff --git a/server-rs/crates/spacetime-client/src/custom_world.rs b/server-rs/crates/spacetime-client/src/custom_world.rs index 49b5aea2..3f353bea 100644 --- a/server-rs/crates/spacetime-client/src/custom_world.rs +++ b/server-rs/crates/spacetime-client/src/custom_world.rs @@ -519,4 +519,5 @@ impl SpacetimeClient { }) .await } + } diff --git a/server-rs/crates/spacetime-client/src/lib.rs b/server-rs/crates/spacetime-client/src/lib.rs index 7c2b50d6..eb598bcb 100644 --- a/server-rs/crates/spacetime-client/src/lib.rs +++ b/server-rs/crates/spacetime-client/src/lib.rs @@ -18,7 +18,8 @@ pub use mapper::{ CustomWorldAgentMessageFinalizeRecordInput, CustomWorldAgentMessageRecord, CustomWorldAgentMessageSubmitRecordInput, CustomWorldAgentOperationProgressRecordInput, CustomWorldAgentOperationRecord, CustomWorldAgentSessionCreateRecordInput, - CustomWorldAgentSessionRecord, CustomWorldCheckpointRecord, CustomWorldDraftCardDetailRecord, + CustomWorldAgentSessionRecord, + CustomWorldCheckpointRecord, CustomWorldDraftCardDetailRecord, CustomWorldDraftCardDetailSectionRecord, CustomWorldDraftCardRecord, CustomWorldGalleryEntryRecord, CustomWorldLibraryEntryRecord, CustomWorldLibraryMutationRecord, CustomWorldProfileUpsertRecordInput, CustomWorldPublishGateRecord, diff --git a/server-rs/crates/spacetime-client/src/mapper.rs b/server-rs/crates/spacetime-client/src/mapper.rs index 33cfaf68..4432521d 100644 --- a/server-rs/crates/spacetime-client/src/mapper.rs +++ b/server-rs/crates/spacetime-client/src/mapper.rs @@ -2726,17 +2726,6 @@ pub(crate) fn format_rpg_agent_operation_type( } } -pub(crate) fn format_rpg_agent_operation_status( - value: crate::module_bindings::RpgAgentOperationStatus, -) -> &'static str { - match value { - crate::module_bindings::RpgAgentOperationStatus::Queued => "queued", - crate::module_bindings::RpgAgentOperationStatus::Running => "running", - crate::module_bindings::RpgAgentOperationStatus::Completed => "completed", - crate::module_bindings::RpgAgentOperationStatus::Failed => "failed", - } -} - pub(crate) fn parse_rpg_agent_operation_type_record( value: &str, ) -> Result { @@ -2744,22 +2733,12 @@ pub(crate) fn parse_rpg_agent_operation_type_record( "process_message" => Ok(crate::module_bindings::RpgAgentOperationType::ProcessMessage), "draft_foundation" => Ok(crate::module_bindings::RpgAgentOperationType::DraftFoundation), "update_draft_card" => Ok(crate::module_bindings::RpgAgentOperationType::UpdateDraftCard), - "sync_result_profile" => { - Ok(crate::module_bindings::RpgAgentOperationType::SyncResultProfile) - } - "generate_characters" => { - Ok(crate::module_bindings::RpgAgentOperationType::GenerateCharacters) - } - "generate_landmarks" => { - Ok(crate::module_bindings::RpgAgentOperationType::GenerateLandmarks) - } - "generate_role_assets" => { - Ok(crate::module_bindings::RpgAgentOperationType::GenerateRoleAssets) - } + "sync_result_profile" => Ok(crate::module_bindings::RpgAgentOperationType::SyncResultProfile), + "generate_characters" => Ok(crate::module_bindings::RpgAgentOperationType::GenerateCharacters), + "generate_landmarks" => Ok(crate::module_bindings::RpgAgentOperationType::GenerateLandmarks), + "generate_role_assets" => Ok(crate::module_bindings::RpgAgentOperationType::GenerateRoleAssets), "sync_role_assets" => Ok(crate::module_bindings::RpgAgentOperationType::SyncRoleAssets), - "generate_scene_assets" => { - Ok(crate::module_bindings::RpgAgentOperationType::GenerateSceneAssets) - } + "generate_scene_assets" => Ok(crate::module_bindings::RpgAgentOperationType::GenerateSceneAssets), "sync_scene_assets" => Ok(crate::module_bindings::RpgAgentOperationType::SyncSceneAssets), "expand_long_tail" => Ok(crate::module_bindings::RpgAgentOperationType::ExpandLongTail), "publish_world" => Ok(crate::module_bindings::RpgAgentOperationType::PublishWorld), @@ -2772,6 +2751,17 @@ pub(crate) fn parse_rpg_agent_operation_type_record( } } +pub(crate) fn format_rpg_agent_operation_status( + value: crate::module_bindings::RpgAgentOperationStatus, +) -> &'static str { + match value { + crate::module_bindings::RpgAgentOperationStatus::Queued => "queued", + crate::module_bindings::RpgAgentOperationStatus::Running => "running", + crate::module_bindings::RpgAgentOperationStatus::Completed => "completed", + crate::module_bindings::RpgAgentOperationStatus::Failed => "failed", + } +} + pub(crate) fn parse_rpg_agent_operation_status_record( value: &str, ) -> Result { @@ -2841,22 +2831,6 @@ impl TryFrom<&str> for BigFishAssetKind { } } -pub(crate) fn map_big_fish_creation_stage( - value: module_big_fish::BigFishCreationStage, -) -> BigFishCreationStage { - match value { - module_big_fish::BigFishCreationStage::CollectingAnchors => { - BigFishCreationStage::CollectingAnchors - } - module_big_fish::BigFishCreationStage::DraftReady => BigFishCreationStage::DraftReady, - module_big_fish::BigFishCreationStage::AssetRefining => BigFishCreationStage::AssetRefining, - module_big_fish::BigFishCreationStage::ReadyToPublish => { - BigFishCreationStage::ReadyToPublish - } - module_big_fish::BigFishCreationStage::Published => BigFishCreationStage::Published, - } -} - pub(crate) fn parse_big_fish_creation_stage( value: &str, ) -> Result { @@ -3501,6 +3475,21 @@ pub struct CustomWorldAgentOperationRecord { pub error_message: Option, } +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct CustomWorldAgentOperationProgressRecordInput { + pub session_id: String, + pub owner_user_id: String, + pub operation_id: String, + // SpacetimeDB 模块侧使用枚举存储操作类型,这里保留字符串给 API 层做轻量传参。 + pub operation_type: String, + pub operation_status: String, + pub phase_label: String, + pub phase_detail: String, + pub operation_progress: u32, + pub error_message: Option, + pub updated_at_micros: i64, +} + #[derive(Clone, Debug, PartialEq)] pub struct CustomWorldDraftCardRecord { pub card_id: String, @@ -3721,20 +3710,6 @@ pub struct CustomWorldAgentMessageFinalizeRecordInput { pub updated_at_micros: i64, } -#[derive(Clone, Debug, PartialEq, Eq)] -pub struct CustomWorldAgentOperationProgressRecordInput { - pub session_id: String, - pub owner_user_id: String, - pub operation_id: String, - pub operation_type: String, - pub operation_status: String, - pub phase_label: String, - pub phase_detail: String, - pub operation_progress: u32, - pub error_message: Option, - pub updated_at_micros: i64, -} - #[derive(Clone, Debug, PartialEq, Eq)] pub struct CustomWorldAgentActionExecuteRecordInput { pub session_id: String, diff --git a/server-rs/crates/spacetime-client/src/module_bindings/mod.rs b/server-rs/crates/spacetime-client/src/module_bindings/mod.rs index 106b7c3d..d2459c2d 100644 --- a/server-rs/crates/spacetime-client/src/module_bindings/mod.rs +++ b/server-rs/crates/spacetime-client/src/module_bindings/mod.rs @@ -342,7 +342,6 @@ pub mod start_ai_task_reducer; pub mod start_ai_task_stage_reducer; pub mod turn_in_quest_reducer; pub mod unpublish_custom_world_profile_reducer; -pub mod upsert_custom_world_agent_operation_progress_procedure; pub mod upsert_chapter_progression_reducer; pub mod upsert_custom_world_profile_reducer; pub mod upsert_npc_state_reducer; @@ -477,6 +476,7 @@ pub mod unpublish_custom_world_profile_and_return_procedure; pub mod update_puzzle_work_procedure; pub mod upsert_auth_store_snapshot_procedure; pub mod upsert_chapter_progression_and_return_procedure; +pub mod upsert_custom_world_agent_operation_progress_procedure; pub mod upsert_custom_world_profile_and_return_procedure; pub mod upsert_npc_state_and_return_procedure; pub mod upsert_platform_browse_history_and_return_procedure; @@ -856,7 +856,6 @@ pub use start_ai_task_reducer::start_ai_task; pub use start_ai_task_stage_reducer::start_ai_task_stage; pub use turn_in_quest_reducer::turn_in_quest; pub use unpublish_custom_world_profile_reducer::unpublish_custom_world_profile; -pub use upsert_custom_world_agent_operation_progress_procedure::upsert_custom_world_agent_operation_progress; pub use upsert_chapter_progression_reducer::upsert_chapter_progression; pub use upsert_custom_world_profile_reducer::upsert_custom_world_profile; pub use upsert_npc_state_reducer::upsert_npc_state; @@ -946,6 +945,7 @@ pub use unpublish_custom_world_profile_and_return_procedure::unpublish_custom_wo pub use update_puzzle_work_procedure::update_puzzle_work; pub use upsert_auth_store_snapshot_procedure::upsert_auth_store_snapshot; pub use upsert_chapter_progression_and_return_procedure::upsert_chapter_progression_and_return; +pub use upsert_custom_world_agent_operation_progress_procedure::upsert_custom_world_agent_operation_progress; pub use upsert_custom_world_profile_and_return_procedure::upsert_custom_world_profile_and_return; pub use upsert_npc_state_and_return_procedure::upsert_npc_state_and_return; pub use upsert_platform_browse_history_and_return_procedure::upsert_platform_browse_history_and_return; diff --git a/server-rs/crates/spacetime-module/src/custom_world/mod.rs b/server-rs/crates/spacetime-module/src/custom_world/mod.rs index c367beeb..5754f137 100644 --- a/server-rs/crates/spacetime-module/src/custom_world/mod.rs +++ b/server-rs/crates/spacetime-module/src/custom_world/mod.rs @@ -1572,7 +1572,34 @@ fn delete_custom_world_agent_session_tx( .filter(|row| row.owner_user_id == input.owner_user_id) .ok_or_else(|| "custom_world_agent_session 不存在".to_string())?; if session.stage == RpgAgentStage::Published { - return Err("已发布 RPG 作品请通过 profile 删除".to_string()); + let published_profile = ctx + .db + .custom_world_profile() + .iter() + .find(|row| { + row.owner_user_id == input.owner_user_id + && row.source_agent_session_id.as_deref() == Some(input.session_id.as_str()) + && row.deleted_at.is_none() + }) + .ok_or_else(|| "已发布 RPG 作品缺少关联 profile,无法删除".to_string())?; + + // 作品卡可能只携带源 Agent sessionId。这里把“按 session 删除已发布作品”收敛为 + // profile 软删除,避免前端误入草稿删除接口时把业务分支放大成上游 502。 + delete_custom_world_profile_record( + ctx, + CustomWorldProfileDeleteInput { + profile_id: published_profile.profile_id, + owner_user_id: input.owner_user_id.clone(), + deleted_at_micros: ctx.timestamp.to_micros_since_unix_epoch(), + }, + )?; + + return list_custom_world_work_snapshots( + ctx, + CustomWorldWorksListInput { + owner_user_id: input.owner_user_id, + }, + ); } // 删除纯 Agent 草稿时同步清理消息、操作与草稿卡,避免作品列表消失后残留孤儿数据。 diff --git a/src/components/CharacterAnimator.test.tsx b/src/components/CharacterAnimator.test.tsx index 022330dd..4a3c9a6c 100644 --- a/src/components/CharacterAnimator.test.tsx +++ b/src/components/CharacterAnimator.test.tsx @@ -73,4 +73,19 @@ describe('CharacterAnimator portrait fallbacks', () => { expect(image.style.transform).toContain('rotate(-90deg)'); expect(image.style.transform).toContain('scaleX(-1)'); }); + + it('uses generated portrait for movement when generated animation is missing', () => { + render( + , + ); + + const image = screen.getByRole('img', { + name: /沈砺 run animation/i, + }) as HTMLImageElement; + + expect(image.getAttribute('src')).toBe('/generated/portrait.png'); + }); }); diff --git a/src/components/CharacterAnimator.tsx b/src/components/CharacterAnimator.tsx index 02ee614e..df0843ed 100644 --- a/src/components/CharacterAnimator.tsx +++ b/src/components/CharacterAnimator.tsx @@ -107,6 +107,9 @@ export const CharacterAnimator: React.FC = ({ playbackRate = 1, }) => { const explicitConfig = character.animationMap?.[state]; + const hasGeneratedPortraitOnly = + Boolean(character.generatedVisualAssetId && character.portrait?.trim()) + && !explicitConfig; const usePortraitIdleFallback = !explicitConfig && state === AnimationState.IDLE; const usePortraitDeathFallback = @@ -118,7 +121,7 @@ export const CharacterAnimator: React.FC = ({ character.animationMap?.[AnimationState.IDLE] ?? DEFAULT_ANIMATIONS[AnimationState.IDLE]; const fallbackToPortrait = - usePortraitIdleFallback || usePortraitDeathFallback || hasRenderError; + hasGeneratedPortraitOnly || usePortraitIdleFallback || usePortraitDeathFallback || hasRenderError; const config = fallbackToPortrait ? PORTRAIT_FALLBACK_ANIMATION : baseConfig; const startFrame = typeof config.startFrame === 'number' && Number.isFinite(config.startFrame) diff --git a/src/components/CustomWorldEntityCatalog.tsx b/src/components/CustomWorldEntityCatalog.tsx index 63cfe25d..a298087e 100644 --- a/src/components/CustomWorldEntityCatalog.tsx +++ b/src/components/CustomWorldEntityCatalog.tsx @@ -341,6 +341,46 @@ function resolveSceneCardImage(params: { return firstActImageSrc || params.sceneImageSrc?.trim() || ''; } +function collectSceneActImagePreviews(sceneChapters: SceneChapterBlueprint[]) { + return sceneChapters.flatMap((chapter) => + chapter.acts + .map((act, index) => ({ + id: act.id.trim() || `${chapter.id}-act-${index}`, + title: act.title.trim() || `第${index + 1}幕`, + imageSrc: act.backgroundImageSrc?.trim() || '', + })) + .filter((act) => act.imageSrc), + ); +} + +function SceneActPreviewStrip({ + acts, + sceneName, +}: { + acts: Array<{ id: string; title: string; imageSrc: string }>; + sceneName: string; +}) { + if (acts.length <= 0) return null; + + return ( +
+ {acts.map((act) => ( +
+ +
+ ))} +
+ ); +} + function CatalogCard({ title, description, @@ -1015,6 +1055,7 @@ export function CustomWorldEntityCatalog({ sceneChapters: openingSceneChapters, }), sceneChapters: openingSceneChapters, + actPreviews: collectSceneActImagePreviews(openingSceneChapters), searchText: [ buildOpeningSceneSearchText(profile, resolvedCampScene), buildSceneChapterSearchText(openingSceneChapters, roleById), @@ -1039,6 +1080,7 @@ export function CustomWorldEntityCatalog({ sceneChapters, }), sceneChapters, + actPreviews: collectSceneActImagePreviews(sceneChapters), searchText: [ buildLandmarkSearchText(landmark, storyNpcById, landmarkById), buildSceneChapterSearchText(sceneChapters, roleById), @@ -1576,6 +1618,12 @@ export function CustomWorldEntityCatalog({ tone="landscape" /> } + actions={ + + } disabled={scene.kind === 'camp' && isBulkDeleteMode} /> )) diff --git a/src/components/CustomWorldResultView.test.tsx b/src/components/CustomWorldResultView.test.tsx index de46159d..2a6d75ca 100644 --- a/src/components/CustomWorldResultView.test.tsx +++ b/src/components/CustomWorldResultView.test.tsx @@ -262,6 +262,21 @@ const baseProfile = { actGoal: '接住首幕压力', transitionHook: '继续逼近钟楼深处。', }, + { + id: 'scene-act-2', + sceneId: 'landmark-1', + title: '钟楼回响', + summary: '第二幕把旧钟与暗线证据推到台前。', + stageCoverage: ['investigation'], + backgroundImageSrc: '/generated-custom-world-scenes/scene-act-2.png', + backgroundAssetId: 'scene-asset-2', + encounterNpcIds: ['story-1'], + primaryNpcId: 'story-1', + linkedThreadIds: [], + advanceRule: 'after_clue_found', + actGoal: '找到旧钟证据', + transitionHook: '钟楼深处传来第二次回响。', + }, ], }, ], @@ -400,7 +415,7 @@ test('playable tab prefers generated portrait over runtime preview placeholder', expect(screen.getByText('已生成主图')).toBeTruthy(); }); -test('landmark tab uses first act image as scene card preview and keeps chapter details out of list', async () => { +test('landmark tab previews every generated act image while keeping chapter details out of list', async () => { const user = userEvent.setup(); render(); @@ -414,6 +429,17 @@ test('landmark tab uses first act image as scene card preview and keeps chapter expect((sceneImage as HTMLImageElement).getAttribute('src')).toBe( '/generated-custom-world-scenes/scene-act-1.png', ); + + expect( + (screen.getByRole('img', { + name: '沉钟栈桥-潮声逼近', + }) as HTMLImageElement).getAttribute('src'), + ).toBe('/generated-custom-world-scenes/scene-act-1.png'); + expect( + (screen.getByRole('img', { + name: '沉钟栈桥-钟楼回响', + }) as HTMLImageElement).getAttribute('src'), + ).toBe('/generated-custom-world-scenes/scene-act-2.png'); }); test('readOnly result view hides edit and create actions for agent preview mode', async () => { @@ -535,10 +561,9 @@ test('agent result view opens publish blocker dialog only when user clicks publi await user.click(screen.getByRole('button', { name: '发布并进入世界' })); - expect( - screen.getByRole('dialog', { name: '发布前检查' }), - ).toBeTruthy(); - expect(screen.getByText(/当前还有 2 个阻断项/u)).toBeTruthy(); + expect(screen.getByRole('dialog', { name: '发布作品' })).toBeTruthy(); + expect(screen.getByText('发布检查')).toBeTruthy(); + expect(screen.getByText('封面设置')).toBeTruthy(); expect( screen.getByText(/仍有角色缺少正式主图或动作资产/u), ).toBeTruthy(); diff --git a/src/components/auth/AuthGate.test.tsx b/src/components/auth/AuthGate.test.tsx index d20b88c6..cb879e3b 100644 --- a/src/components/auth/AuthGate.test.tsx +++ b/src/components/auth/AuthGate.test.tsx @@ -10,11 +10,14 @@ import { AuthGate } from './AuthGate'; import { useAuthUi } from './AuthUiContext'; const authMocks = vi.hoisted(() => ({ + authEntry: vi.fn(), + changePassword: vi.fn(), ensureStoredAccessToken: vi.fn(), ensureAutoAuthUser: vi.fn(), getAuthLoginOptions: vi.fn(), getCurrentAuthUser: vi.fn(), loginWithPhoneCode: vi.fn(), + resetPassword: vi.fn(), sendPhoneLoginCode: vi.fn(), startWechatLogin: vi.fn(), consumeAuthCallbackResult: vi.fn(), @@ -26,10 +29,13 @@ vi.mock('../../services/apiClient', () => ({ })); vi.mock('../../services/authService', () => ({ + authEntry: authMocks.authEntry, bindWechatPhone: vi.fn(), + changePassword: authMocks.changePassword, changePhoneNumber: vi.fn(), consumeAuthCallbackResult: authMocks.consumeAuthCallbackResult, ensureAutoAuthUser: authMocks.ensureAutoAuthUser, + getStoredLastLoginPhone: vi.fn(() => ''), getAuthAuditLogs: vi.fn(), getAuthLoginOptions: authMocks.getAuthLoginOptions, getAuthRiskBlocks: vi.fn(), @@ -40,8 +46,10 @@ vi.mock('../../services/authService', () => ({ loginWithPhoneCode: authMocks.loginWithPhoneCode, logoutAllAuthSessions: vi.fn(), logoutAuthUser: vi.fn(), + resetPassword: authMocks.resetPassword, revokeAuthSession: vi.fn(), sendPhoneLoginCode: authMocks.sendPhoneLoginCode, + setStoredLastLoginPhone: vi.fn(), startWechatLogin: authMocks.startWechatLogin, })); @@ -86,6 +94,9 @@ beforeEach(() => { availableLoginMethods: ['phone'], }); authMocks.loginWithPhoneCode.mockResolvedValue(mockUser); + authMocks.authEntry.mockResolvedValue(mockUser); + authMocks.changePassword.mockResolvedValue(mockUser); + authMocks.resetPassword.mockResolvedValue(mockUser); authMocks.sendPhoneLoginCode.mockResolvedValue({ cooldownSeconds: 60, expiresInSeconds: 300, @@ -203,13 +214,13 @@ test('auth gate opens a login modal for protected actions and resumes after logi await user.click(await screen.findByRole('button', { name: '进入作品' })); - const dialog = screen.getByRole('dialog', { name: '登录账号' }); + const dialog = screen.getByRole('dialog', { name: '账号入口' }); expect(dialog).toBeTruthy(); expect(screen.queryByText('先登录账号,再同步你的冒险进度。')).toBeNull(); await user.type(within(dialog).getByLabelText('手机号'), '13800000000'); await user.type(within(dialog).getByLabelText('验证码'), '123456'); - await user.click(within(dialog).getByRole('button', { name: '登录' })); + await user.click(within(dialog).getByRole('button', { name: '注册/登录' })); await waitFor(() => { expect(authMocks.loginWithPhoneCode).toHaveBeenCalledWith( @@ -220,7 +231,7 @@ test('auth gate opens a login modal for protected actions and resumes after logi expect(onAuthenticated).toHaveBeenCalledTimes(1); }); - expect(screen.queryByRole('dialog', { name: '登录账号' })).toBeNull(); + expect(screen.queryByRole('dialog', { name: '账号入口' })).toBeNull(); }); test('auth state refresh keeps mounted platform content and local tab state', async () => { @@ -280,7 +291,7 @@ test('auth gate shows sms send feedback in the login modal', async () => { await user.click(await screen.findByRole('button', { name: '进入作品' })); - const dialog = screen.getByRole('dialog', { name: '登录账号' }); + const dialog = screen.getByRole('dialog', { name: '账号入口' }); await user.type(within(dialog).getByLabelText('手机号'), '13800000000'); await user.click(within(dialog).getByRole('button', { name: '获取验证码' })); @@ -296,7 +307,48 @@ test('auth gate shows sms send feedback in the login modal', async () => { }); expect( - within(dialog).getByText('短信请求已提交,请留意手机短信。验证码有效期约 5 分钟。'), + within(dialog).getByText('短信请求已提交,验证码有效期约 5 分钟。'), ).toBeTruthy(); expect(within(dialog).getByRole('button', { name: '60s' })).toBeTruthy(); }); + +test('auth gate separates sms and password login by tabs', async () => { + const user = userEvent.setup(); + + authMocks.getAuthLoginOptions.mockResolvedValue({ + availableLoginMethods: ['phone', 'password'], + }); + + render( + + + , + ); + + await user.click(await screen.findByRole('button', { name: '进入作品' })); + + const dialog = screen.getByRole('dialog', { name: '账号入口' }); + expect( + within(dialog) + .getByRole('tab', { name: '短信登录' }) + .getAttribute('aria-selected'), + ).toBe('true'); + expect(within(dialog).queryByLabelText('密码')).toBeNull(); + + await user.click(within(dialog).getByRole('tab', { name: '密码登录' })); + + expect( + within(dialog) + .getByRole('tab', { name: '密码登录' }) + .getAttribute('aria-selected'), + ).toBe('true'); + expect(within(dialog).queryByLabelText('验证码')).toBeNull(); + + await user.type(within(dialog).getByLabelText('手机号/邮箱'), '13800000000'); + await user.type(within(dialog).getByLabelText('密码'), 'passw0rd'); + await user.click(within(dialog).getByRole('button', { name: '注册/登录' })); + + await waitFor(() => { + expect(authMocks.authEntry).toHaveBeenCalledWith('13800000000', 'passw0rd'); + }); +}); diff --git a/src/components/auth/LoginScreen.tsx b/src/components/auth/LoginScreen.tsx index ea02a7e3..02aa9bb0 100644 --- a/src/components/auth/LoginScreen.tsx +++ b/src/components/auth/LoginScreen.tsx @@ -10,6 +10,7 @@ import { getStoredLastLoginPhone } from '../../services/authService'; import { CaptchaChallengeField } from './CaptchaChallengeField'; type SmsScene = 'login' | 'reset_password'; +type LoginTab = 'phone' | 'password'; type LoginScreenProps = { isOpen: boolean; @@ -72,6 +73,18 @@ export function LoginScreen({ const passwordLoginEnabled = availableLoginMethods.includes('password'); const phoneLoginEnabled = availableLoginMethods.includes('phone'); const wechatLoginEnabled = availableLoginMethods.includes('wechat'); + const [activeLoginTab, setActiveLoginTab] = useState('phone'); + + useEffect(() => { + if (activeLoginTab === 'phone' && !phoneLoginEnabled && passwordLoginEnabled) { + setActiveLoginTab('password'); + return; + } + + if (activeLoginTab === 'password' && !passwordLoginEnabled && phoneLoginEnabled) { + setActiveLoginTab('phone'); + } + }, [activeLoginTab, passwordLoginEnabled, phoneLoginEnabled]); useEffect(() => { if (cooldownSeconds <= 0) { @@ -152,8 +165,29 @@ export function LoginScreen({ onSubmit={() => onResetPassword(resetPhone, resetCode, resetPasswordValue)} /> ) : ( -
- {passwordLoginEnabled ? ( +
+ {phoneLoginEnabled && passwordLoginEnabled ? ( +
+ setActiveLoginTab('phone')} + > + 短信登录 + + setActiveLoginTab('password')} + > + 密码登录 + +
+ ) : null} + + {passwordLoginEnabled && activeLoginTab === 'password' ? (
{ @@ -162,14 +196,13 @@ export function LoginScreen({ }} >