[{"data":1,"prerenderedAt":262},["ShallowReactive",2],{"navigation_docs":3,"-server-modules":145,"-server-modules-surround":257},[4,27,41,93],{"title":5,"path":6,"stem":7,"children":8,"icon":26},"Getting Started","\u002Fgetting-started","1.getting-started\u002F0.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Framework Architecture","\u002Fgetting-started\u002Farchitecture","1.getting-started\u002F1.architecture",{"title":15,"path":16,"stem":17},"Module Reference","\u002Fgetting-started\u002Fmodule-reference","1.getting-started\u002F2.module-reference",{"title":19,"path":20,"stem":21},"Development Guide","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F3.development",{"title":23,"path":24,"stem":25},"SurrealDB Setup","\u002Fgetting-started\u002Fsurrealdb-setup","1.getting-started\u002F4.surrealdb-setup","i-lucide-rocket",{"title":28,"path":29,"stem":30,"children":31},"Forge Server Extension","\u002Fserver-extension","2.server-extension\u002F0.index",[32,33,37],{"title":28,"path":29,"stem":30},{"title":34,"path":35,"stem":36},"Forge Server API Reference","\u002Fserver-extension\u002Fapi-reference","2.server-extension\u002F1.api-reference",{"title":38,"path":39,"stem":40},"Forge Server Usage Examples","\u002Fserver-extension\u002Fusage-examples","2.server-extension\u002F2.usage-examples",{"title":42,"path":43,"stem":44,"children":45,"icon":92},"Server Modules","\u002Fserver-modules","3.server-modules\u002F0.index",[46,48,52,56,60,64,68,72,76,80,84,88],{"title":47,"path":43,"stem":44},"Server Module Guides",{"title":49,"path":50,"stem":51},"Actor Usage Guide","\u002Fserver-modules\u002Factor","3.server-modules\u002F1.actor",{"title":53,"path":54,"stem":55},"Store Usage Guide","\u002Fserver-modules\u002Fstore","3.server-modules\u002F10.store",{"title":57,"path":58,"stem":59},"Task Usage Guide","\u002Fserver-modules\u002Ftask","3.server-modules\u002F11.task",{"title":61,"path":62,"stem":63},"Bank Usage Guide","\u002Fserver-modules\u002Fbank","3.server-modules\u002F2.bank",{"title":65,"path":66,"stem":67},"CAD Usage Guide","\u002Fserver-modules\u002Fcad","3.server-modules\u002F3.cad",{"title":69,"path":70,"stem":71},"Economy Usage Guide","\u002Fserver-modules\u002Feconomy","3.server-modules\u002F4.economy",{"title":73,"path":74,"stem":75},"Garage Usage Guide","\u002Fserver-modules\u002Fgarage","3.server-modules\u002F5.garage",{"title":77,"path":78,"stem":79},"Locker Usage Guide","\u002Fserver-modules\u002Flocker","3.server-modules\u002F6.locker",{"title":81,"path":82,"stem":83},"Organization Usage Guide","\u002Fserver-modules\u002Forganization","3.server-modules\u002F7.organization",{"title":85,"path":86,"stem":87},"Owned Storage Usage Guide","\u002Fserver-modules\u002Fowned-storage","3.server-modules\u002F8.owned-storage",{"title":89,"path":90,"stem":91},"Phone Usage Guide","\u002Fserver-modules\u002Fphone","3.server-modules\u002F9.phone","i-lucide-layers-3",{"title":94,"path":95,"stem":96,"children":97,"icon":144},"Client Addons","\u002Fclient-addons","4.client-addons\u002F0.index",[98,100,104,108,112,116,120,124,128,132,136,140],{"title":99,"path":95,"stem":96},"Client Usage Guide",{"title":101,"path":102,"stem":103},"Client Main Usage Guide","\u002Fclient-addons\u002Fmain","4.client-addons\u002F1.main",{"title":105,"path":106,"stem":107},"Client Phone Usage Guide","\u002Fclient-addons\u002Fphone","4.client-addons\u002F10.phone",{"title":109,"path":110,"stem":111},"Client Store Usage Guide","\u002Fclient-addons\u002Fstore","4.client-addons\u002F11.store",{"title":113,"path":114,"stem":115},"Client Common Usage Guide","\u002Fclient-addons\u002Fcommon","4.client-addons\u002F2.common",{"title":117,"path":118,"stem":119},"Client Actor Usage Guide","\u002Fclient-addons\u002Factor","4.client-addons\u002F3.actor",{"title":121,"path":122,"stem":123},"Client Bank Usage Guide","\u002Fclient-addons\u002Fbank","4.client-addons\u002F4.bank",{"title":125,"path":126,"stem":127},"Client CAD Usage Guide","\u002Fclient-addons\u002Fcad","4.client-addons\u002F5.cad",{"title":129,"path":130,"stem":131},"Client Garage Usage Guide","\u002Fclient-addons\u002Fgarage","4.client-addons\u002F6.garage",{"title":133,"path":134,"stem":135},"Client Locker Usage Guide","\u002Fclient-addons\u002Flocker","4.client-addons\u002F7.locker",{"title":137,"path":138,"stem":139},"Client Notifications Usage Guide","\u002Fclient-addons\u002Fnotifications","4.client-addons\u002F8.notifications",{"title":141,"path":142,"stem":143},"Client Organization Usage Guide","\u002Fclient-addons\u002Forganization","4.client-addons\u002F9.organization","i-lucide-monitor-smartphone",{"id":146,"title":47,"body":147,"description":157,"extension":251,"links":252,"meta":253,"navigation":254,"path":43,"seo":255,"stem":44,"__hash__":256},"docs\u002F3.server-modules\u002F0.index.md",{"type":148,"value":149,"toc":246},"minimark",[150,154,158,161,182,187],[151,152,47],"h1",{"id":153},"server-module-guides",[155,156,157],"p",{},"These pages document the authoritative server-side workflows in Forge.",[155,159,160],{},"Most modules follow the same shape:",[162,163,164,168,176,179],"ol",{},[165,166,167],"li",{},"Server SQF gathers game context and validates mission\u002Fruntime assumptions.",[165,169,170,171,175],{},"The ",[172,173,174],"code",{},"forge_server"," extension routes the request into the matching command group.",[165,177,178],{},"Services apply business rules through storage-agnostic repository traits.",[165,180,181],{},"The extension persists durable state through SurrealDB adapters when needed.",[183,184,186],"h2",{"id":185},"gameplay-domains","Gameplay Domains",[188,189,190,196,201,206,211,216,221,226,231,236,241],"u-page-grid",{},[191,192,195],"u-page-card",{"icon":193,"title":194,"to":50},"i-lucide-user-round","Actor","Persistent player identity, position, loadout, contact fields, and hot state.",[191,197,200],{"icon":198,"title":199,"to":62},"i-lucide-wallet","Bank","Player funds, transfers, PIN validation, checkout charging, and bank hot state.",[191,202,205],{"icon":203,"title":204,"to":66},"i-lucide-map","CAD","Dispatch requests, assignments, profiles, grouped state, and hydrated views.",[191,207,210],{"icon":208,"title":209,"to":70},"i-lucide-ambulance","Economy","Fuel, service, and medical charging rules across player and organization funds.",[191,212,215],{"icon":213,"title":214,"to":74},"i-lucide-car-front","Garage","Vehicle storage, hot-state updates, and persistence of vehicle condition.",[191,217,220],{"icon":218,"title":219,"to":78},"i-lucide-package","Locker","Player inventory storage, unique item limits, and locker hot-state behavior.",[191,222,225],{"icon":223,"title":224,"to":82},"i-lucide-building-2","Organization","Membership, treasury, shared assets, fleet, and organization hot workflows.",[191,227,230],{"icon":228,"title":229,"to":86},"i-lucide-key-round","Owned Storage","Owner-scoped locker and vehicle unlock storage used by org-linked features.",[191,232,235],{"icon":233,"title":234,"to":90},"i-lucide-smartphone","Phone","Contacts, message threads, and email state for in-game phone workflows.",[191,237,240],{"icon":238,"title":239,"to":54},"i-lucide-shopping-cart","Store","Checkout orchestration across pricing, grants, payment sources, and rollback.",[191,242,245],{"icon":243,"title":244,"to":58},"i-lucide-flag","Task","Task catalog, ownership, status transitions, defuse counters, and rewards.",{"title":247,"searchDepth":248,"depth":248,"links":249},"",2,[250],{"id":185,"depth":248,"text":186},"md",null,{},true,{"title":47,"description":157},"6TeKjF0JW1R_YnkuNXMM5vx2uv1q0ZlB9jRteQjAnto",[258,260],{"title":38,"path":39,"stem":40,"description":259,"children":-1},"These examples use the domain command surface exposed by the extension.\nPersistence is handled by the server through SurrealDB.",{"title":49,"path":50,"stem":51,"description":261,"children":-1},"The actor module stores persistent player character data: identity, loadout,\nposition, direction, stance, contact fields, state, holster status, rank, and\norganization.",1776806627034]