134 lines
243 KiB
HTML
134 lines
243 KiB
HTML
<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><style id="nuxt-ui-colors">@layer theme {
|
|
:root, :host {
|
|
--ui-color-primary-50: var(--color-emerald-50, oklch(97.9% 0.021 166.113));
|
|
--ui-color-primary-100: var(--color-emerald-100, oklch(95% 0.052 163.051));
|
|
--ui-color-primary-200: var(--color-emerald-200, oklch(90.5% 0.093 164.15));
|
|
--ui-color-primary-300: var(--color-emerald-300, oklch(84.5% 0.143 164.978));
|
|
--ui-color-primary-400: var(--color-emerald-400, oklch(76.5% 0.177 163.223));
|
|
--ui-color-primary-500: var(--color-emerald-500, oklch(69.6% 0.17 162.48));
|
|
--ui-color-primary-600: var(--color-emerald-600, oklch(59.6% 0.145 163.225));
|
|
--ui-color-primary-700: var(--color-emerald-700, oklch(50.8% 0.118 165.612));
|
|
--ui-color-primary-800: var(--color-emerald-800, oklch(43.2% 0.095 166.913));
|
|
--ui-color-primary-900: var(--color-emerald-900, oklch(37.8% 0.077 168.94));
|
|
--ui-color-primary-950: var(--color-emerald-950, oklch(26.2% 0.051 172.552));
|
|
--ui-color-secondary-50: var(--color-blue-50, oklch(97% 0.014 254.604));
|
|
--ui-color-secondary-100: var(--color-blue-100, oklch(93.2% 0.032 255.585));
|
|
--ui-color-secondary-200: var(--color-blue-200, oklch(88.2% 0.059 254.128));
|
|
--ui-color-secondary-300: var(--color-blue-300, oklch(80.9% 0.105 251.813));
|
|
--ui-color-secondary-400: var(--color-blue-400, oklch(70.7% 0.165 254.624));
|
|
--ui-color-secondary-500: var(--color-blue-500, oklch(62.3% 0.214 259.815));
|
|
--ui-color-secondary-600: var(--color-blue-600, oklch(54.6% 0.245 262.881));
|
|
--ui-color-secondary-700: var(--color-blue-700, oklch(48.8% 0.243 264.376));
|
|
--ui-color-secondary-800: var(--color-blue-800, oklch(42.4% 0.199 265.638));
|
|
--ui-color-secondary-900: var(--color-blue-900, oklch(37.9% 0.146 265.522));
|
|
--ui-color-secondary-950: var(--color-blue-950, oklch(28.2% 0.091 267.935));
|
|
--ui-color-success-50: var(--color-green-50, oklch(98.2% 0.018 155.826));
|
|
--ui-color-success-100: var(--color-green-100, oklch(96.2% 0.044 156.743));
|
|
--ui-color-success-200: var(--color-green-200, oklch(92.5% 0.084 155.995));
|
|
--ui-color-success-300: var(--color-green-300, oklch(87.1% 0.15 154.449));
|
|
--ui-color-success-400: var(--color-green-400, oklch(79.2% 0.209 151.711));
|
|
--ui-color-success-500: var(--color-green-500, oklch(72.3% 0.219 149.579));
|
|
--ui-color-success-600: var(--color-green-600, oklch(62.7% 0.194 149.214));
|
|
--ui-color-success-700: var(--color-green-700, oklch(52.7% 0.154 150.069));
|
|
--ui-color-success-800: var(--color-green-800, oklch(44.8% 0.119 151.328));
|
|
--ui-color-success-900: var(--color-green-900, oklch(39.3% 0.095 152.535));
|
|
--ui-color-success-950: var(--color-green-950, oklch(26.6% 0.065 152.934));
|
|
--ui-color-info-50: var(--color-blue-50, oklch(97% 0.014 254.604));
|
|
--ui-color-info-100: var(--color-blue-100, oklch(93.2% 0.032 255.585));
|
|
--ui-color-info-200: var(--color-blue-200, oklch(88.2% 0.059 254.128));
|
|
--ui-color-info-300: var(--color-blue-300, oklch(80.9% 0.105 251.813));
|
|
--ui-color-info-400: var(--color-blue-400, oklch(70.7% 0.165 254.624));
|
|
--ui-color-info-500: var(--color-blue-500, oklch(62.3% 0.214 259.815));
|
|
--ui-color-info-600: var(--color-blue-600, oklch(54.6% 0.245 262.881));
|
|
--ui-color-info-700: var(--color-blue-700, oklch(48.8% 0.243 264.376));
|
|
--ui-color-info-800: var(--color-blue-800, oklch(42.4% 0.199 265.638));
|
|
--ui-color-info-900: var(--color-blue-900, oklch(37.9% 0.146 265.522));
|
|
--ui-color-info-950: var(--color-blue-950, oklch(28.2% 0.091 267.935));
|
|
--ui-color-warning-50: var(--color-yellow-50, oklch(98.7% 0.026 102.212));
|
|
--ui-color-warning-100: var(--color-yellow-100, oklch(97.3% 0.071 103.193));
|
|
--ui-color-warning-200: var(--color-yellow-200, oklch(94.5% 0.129 101.54));
|
|
--ui-color-warning-300: var(--color-yellow-300, oklch(90.5% 0.182 98.111));
|
|
--ui-color-warning-400: var(--color-yellow-400, oklch(85.2% 0.199 91.936));
|
|
--ui-color-warning-500: var(--color-yellow-500, oklch(79.5% 0.184 86.047));
|
|
--ui-color-warning-600: var(--color-yellow-600, oklch(68.1% 0.162 75.834));
|
|
--ui-color-warning-700: var(--color-yellow-700, oklch(55.4% 0.135 66.442));
|
|
--ui-color-warning-800: var(--color-yellow-800, oklch(47.6% 0.114 61.907));
|
|
--ui-color-warning-900: var(--color-yellow-900, oklch(42.1% 0.095 57.708));
|
|
--ui-color-warning-950: var(--color-yellow-950, oklch(28.6% 0.066 53.813));
|
|
--ui-color-error-50: var(--color-red-50, oklch(97.1% 0.013 17.38));
|
|
--ui-color-error-100: var(--color-red-100, oklch(93.6% 0.032 17.717));
|
|
--ui-color-error-200: var(--color-red-200, oklch(88.5% 0.062 18.334));
|
|
--ui-color-error-300: var(--color-red-300, oklch(80.8% 0.114 19.571));
|
|
--ui-color-error-400: var(--color-red-400, oklch(70.4% 0.191 22.216));
|
|
--ui-color-error-500: var(--color-red-500, oklch(63.7% 0.237 25.331));
|
|
--ui-color-error-600: var(--color-red-600, oklch(57.7% 0.245 27.325));
|
|
--ui-color-error-700: var(--color-red-700, oklch(50.5% 0.213 27.518));
|
|
--ui-color-error-800: var(--color-red-800, oklch(44.4% 0.177 26.899));
|
|
--ui-color-error-900: var(--color-red-900, oklch(39.6% 0.141 25.723));
|
|
--ui-color-error-950: var(--color-red-950, oklch(25.8% 0.092 26.042));
|
|
--ui-color-neutral-50: var(--color-zinc-50, oklch(98.5% 0 0));
|
|
--ui-color-neutral-100: var(--color-zinc-100, oklch(96.7% 0.001 286.375));
|
|
--ui-color-neutral-200: var(--color-zinc-200, oklch(92% 0.004 286.32));
|
|
--ui-color-neutral-300: var(--color-zinc-300, oklch(87.1% 0.006 286.286));
|
|
--ui-color-neutral-400: var(--color-zinc-400, oklch(70.5% 0.015 286.067));
|
|
--ui-color-neutral-500: var(--color-zinc-500, oklch(55.2% 0.016 285.938));
|
|
--ui-color-neutral-600: var(--color-zinc-600, oklch(44.2% 0.017 285.786));
|
|
--ui-color-neutral-700: var(--color-zinc-700, oklch(37% 0.013 285.805));
|
|
--ui-color-neutral-800: var(--color-zinc-800, oklch(27.4% 0.006 286.033));
|
|
--ui-color-neutral-900: var(--color-zinc-900, oklch(21% 0.006 285.885));
|
|
--ui-color-neutral-950: var(--color-zinc-950, oklch(14.1% 0.005 285.823));
|
|
}
|
|
:root, :host, .light {
|
|
--ui-primary: var(--ui-color-primary-500);
|
|
--ui-secondary: var(--ui-color-secondary-500);
|
|
--ui-success: var(--ui-color-success-500);
|
|
--ui-info: var(--ui-color-info-500);
|
|
--ui-warning: var(--ui-color-warning-500);
|
|
--ui-error: var(--ui-color-error-500);
|
|
}
|
|
.dark {
|
|
--ui-primary: var(--ui-color-primary-400);
|
|
--ui-secondary: var(--ui-color-secondary-400);
|
|
--ui-success: var(--ui-color-success-400);
|
|
--ui-info: var(--ui-color-info-400);
|
|
--ui-warning: var(--ui-color-warning-400);
|
|
--ui-error: var(--ui-color-error-400);
|
|
}
|
|
}</style><title>Module Reference - forge-docus</title><meta property="og:image" content="https://innovativedevsolutions.github.io/forge/_og/s/c_Docs,headline_Getting+Started,title_Module+Reference,description_This+reference+lists+the+main+Forge+modules+and+where+each+layer+lives.,p_Ii9nZXR0aW5nLXN0YXJ0ZWQvbW9kdWxlLXJlZmVyZW5jZSI.png"><meta property="og:image:type" content="image/png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://innovativedevsolutions.github.io/forge/_og/s/c_Docs,headline_Getting+Started,title_Module+Reference,description_This+reference+lists+the+main+Forge+modules+and+where+each+layer+lives.,p_Ii9nZXR0aW5nLXN0YXJ0ZWQvbW9kdWxlLXJlZmVyZW5jZSI.png"><meta name="twitter:image:src" content="https://innovativedevsolutions.github.io/forge/_og/s/c_Docs,headline_Getting+Started,title_Module+Reference,description_This+reference+lists+the+main+Forge+modules+and+where+each+layer+lives.,p_Ii9nZXR0aW5nLXN0YXJ0ZWQvbW9kdWxlLXJlZmVyZW5jZSI.png"><meta property="og:image:width" content="1200"><meta name="twitter:image:width" content="1200"><meta property="og:image:height" content="600"><meta name="twitter:image:height" content="600"><style>@media(min-width:1024px){.docus-sub-header{--ui-header-height:112px}}</style><link rel="stylesheet" href="/forge/_nuxt/entry.B0IIbxeE.css" crossorigin><style>@layer base {:where(.i-lucide\:alert-circle){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:arrow-left){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m12 19l-7-7l7-7m7 7H5'/%3E%3C/svg%3E")}:where(.i-lucide\:arrow-right){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7l7 7l-7 7'/%3E%3C/svg%3E")}:where(.i-lucide\:chevron-down){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9l6 6l6-6'/%3E%3C/svg%3E")}:where(.i-lucide\:copy){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:hash){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E")}:where(.i-lucide\:layers-3){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z'/%3E%3Cpath d='m6.08 9.5l-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59'/%3E%3Cpath d='m6.08 14.5l-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:monitor-smartphone){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8m-2 4v-3.96v3.15M7 19h5'/%3E%3Crect width='6' height='10' x='16' y='12' rx='2'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:moon){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401'/%3E%3C/svg%3E")}:where(.i-lucide\:pen){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z'/%3E%3C/svg%3E")}:where(.i-lucide\:rocket){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09'/%3E%3Cpath d='M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z'/%3E%3Cpath d='M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:search){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:sun){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-simple-icons\:github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}}</style><link rel="preload" as="fetch" crossorigin="anonymous" href="/forge/getting-started/module-reference/_payload.json?3a1bf7b7-6f51-4d2c-9c98-142f71e69a9a"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/B3fabVUf.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/C0AA5UMg.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/Dq00p3Sb.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/DXQrCARz.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/AFG10c_a.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/DJxuwfoz.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/n8vERajx.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/BN_7HF1G.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/D5E4Znt1.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/DB_5vY_E.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/p9GVdgbx.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/B91fwRQf.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/C-sCiTCq.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/BKwruWNQ.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/CSnfmutH.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/DLv9Mxsp.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/D_gYX37v.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/C6Z5zZ8h.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/4YIHfatS.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/CamoC0EK.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/CDym3zc6.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/2h0Q0JkN.js"><script type="module" src="/forge/_nuxt/B3fabVUf.js" crossorigin></script><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><link rel="icon" href="/favicon.ico"><meta name="description" content="This reference lists the main Forge modules and where each layer lives."><meta property="og:site_name" content="forge-docus"><meta property="og:title" content="Module Reference"><meta property="og:description" content="This reference lists the main Forge modules and where each layer lives."><meta property="og:type" content="article"><meta property="og:url" content="https://innovativedevsolutions.github.io/getting-started/module-reference"><link rel="canonical" href="https://innovativedevsolutions.github.io/getting-started/module-reference"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"Module Reference","description":"This reference lists the main Forge modules and where each layer lives.","url":"https://innovativedevsolutions.github.io/getting-started/module-reference","mainEntityOfPage":{"@type":"WebPage","@id":"https://innovativedevsolutions.github.io/getting-started/module-reference"},"publisher":{"@type":"Organization","name":"forge-docus"}}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Getting Started","item":"https://innovativedevsolutions.github.io/getting-started"},{"@type":"ListItem","position":2,"name":"Module Reference","item":"https://innovativedevsolutions.github.io/getting-started/module-reference"}]}</script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"><!--[--><!--[--><!--[--><!--[--><!--[--><div class="nuxt-loading-indicator" style="position:fixed;top:0;right:0;left:0;pointer-events:none;width:auto;height:3px;opacity:0;background:var(--ui-primary);background-size:0% auto;transform:scaleX(0%);transform-origin:left;transition:transform 0.1s, height 0.4s, opacity 0.4s;z-index:999999;"></div><div class="transition-[margin-right] duration-200 ease-linear will-change-[margin-right]" style="margin-right:0;"><!--[--><!----><!----><!----><header data-slot="root" class="bg-default/75 backdrop-blur border-b border-default h-(--ui-header-height) sticky top-0 z-50"><!--[--><!--]--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 flex items-center justify-between gap-3 h-full" data-slot="container"><!--[--><div data-slot="left" class="lg:flex-1 flex items-center gap-1.5"><!----><!--[--><a href="/forge/" class="" aria-label="forge-docus"><span class="h-6 w-auto shrink-0">forge-docus</span></a><!--]--></div><div data-slot="center" class="hidden lg:flex flex-1"><!--[--><!--[--><!----><!--[--><!--[--><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 focus:outline-none focus-visible:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated w-full"><!--[--><!--[--><span class="iconify i-lucide:search shrink-0 size-4 mr-1" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><span data-slot="label" class="truncate">Search…</span><!--]--><!--[--><div data-slot="trailing" class="hidden lg:flex items-center gap-0.5 ms-auto"><!--[--><!--[--><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[--> <!--]--></kbd><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[-->k<!--]--></kbd><!--]--><!--]--></div><!--]--><!--]--></button><!--]--><!--]--><!--]--><!--]--></div><div data-slot="right" class="flex items-center justify-end lg:flex-1 gap-1.5"><!--[--><div></div><!----><!----><!--[--><!----><!--[--><!--[--><button type="button" aria-label="Search…" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 lg:hidden"><!--[--><!--[--><span class="iconify i-lucide:search shrink-0 size-5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><span data-slot="label" class="truncate hidden">Search…</span><!--]--><!--[--><div data-slot="trailing" class="hidden items-center gap-0.5 ms-auto lg:hidden"><!--[--><!--[--><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[--> <!--]--></kbd><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[-->k<!--]--></kbd><!--]--><!--]--></div><!--]--><!--]--></button><!--]--><!--]--><!--]--><!--[--><div class="h-8 w-8 animate-pulse bg-neutral-200 dark:bg-neutral-800 rounded-md"></div><!--]--><!--[--><!--[--><!--[--><a href="https://github.com/InnovativeDevSolutions/forge" rel="noopener noreferrer" target="_blank" aria-label="GitHub" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!--]--><!--]--><!--]--><!--[--><!--[--><!--[--><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 -me-1.5 lg:hidden"><!--[--><!--[--><!----><!--]--><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="6" x2="20" y2="6" class="outline-none"></line><line x1="4" y1="12" x2="20" y2="12" class="outline-none"></line><line x1="4" y1="18" x2="20" y2="18" class="outline-none"></line></svg><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><!--]--></div><!--]--></div><!--[--><!--]--></header><!--[--><!----><!----><!--v-if--><!--]--><!--]--><main class="min-h-[calc(100vh-var(--ui-header-height))]"><!--[--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8"><!--[--><div data-slot="root" class="flex flex-col lg:grid lg:grid-cols-10 lg:gap-10"><aside data-slot="left" class="hidden overflow-y-auto lg:block lg:max-h-[calc(100vh-var(--ui-header-height))] lg:sticky lg:top-(--ui-header-height) py-8 lg:ps-4 lg:-ms-4 lg:pe-6.5 lg:col-span-2"><div data-slot="container" class="relative"><!----><!--[--><div></div><!--[--><!----><nav data-slot="root"><ul class="isolate -mx-2.5 -mt-1.5"><!--[--><!--[--><!--[--><li data-state="open" data-orientation="vertical" data-slot="itemWithChildren" class="flex flex-col data-[state=open]:mb-1.5"><!--[--><!--[--><button type="button" aria-controls aria-expanded="true" data-state="open" id="reka-accordion-trigger-v-0-3-0" data-reka-collection-item data-orientation="vertical" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted hover:text-highlighted data-[state=open]:text-highlighted transition-colors font-semibold focus-visible:ring-primary"><!--[--><!--[--><!--[--><!--[--><span class="iconify i-lucide:rocket shrink-0 size-4 mr-1 text-dimmed group-hover:text-default group-data-[state=open]:text-default transition-colors" aria-hidden="true" style="" data-slot="linkLeadingIcon"></span><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Getting Started<!--]--><!----></span><span data-slot="linkTrailing" class="ms-auto gap-1.5 items-center hidden"><!--[--><!----><span class="iconify i-lucide:chevron-down size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180" aria-hidden="true" style="" data-slot="linkTrailingIcon"></span><!--]--></span><!--]--><!--]--><!--]--></button><div role="region" aria-labelledby="reka-accordion-trigger-v-0-3-0" data-orientation="vertical" style="--reka-accordion-content-width:var(--reka-collapsible-content-width);--reka-accordion-content-height:var(--reka-collapsible-content-height);--reka-collapsible-content-height:0px;--reka-collapsible-content-width:0px;" data-slot="content" class="data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] overflow-hidden focus:outline-none" id="reka-collapsible-content-v-0-3-1"><!--[--><!--[--><!--[--><!----><ul data-slot="root" class="ms-5 border-s border-default"><!--[--><!--[--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/getting-started" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Getting Started<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/getting-started/architecture" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Framework Architecture<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/getting-started/module-reference" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary font-medium after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors text-primary after:bg-primary"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Module Reference<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/getting-started/development" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Development Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/getting-started/surrealdb-setup" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->SurrealDB Setup<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--]--><!--]--></ul><!--]--><!--]--><!--]--></div><!--]--><!--]--></li><!--]--><!--[--><li data-state="open" data-orientation="vertical" data-slot="itemWithChildren" class="flex flex-col data-[state=open]:mb-1.5"><!--[--><!--[--><button type="button" aria-controls aria-expanded="true" data-state="open" id="reka-accordion-trigger-v-0-3-2" data-reka-collection-item data-orientation="vertical" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted hover:text-highlighted data-[state=open]:text-highlighted transition-colors font-semibold focus-visible:ring-primary"><!--[--><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Forge Server Extension<!--]--><!----></span><span data-slot="linkTrailing" class="ms-auto gap-1.5 items-center hidden"><!--[--><!----><span class="iconify i-lucide:chevron-down size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180" aria-hidden="true" style="" data-slot="linkTrailingIcon"></span><!--]--></span><!--]--><!--]--><!--]--></button><div role="region" aria-labelledby="reka-accordion-trigger-v-0-3-2" data-orientation="vertical" style="--reka-accordion-content-width:var(--reka-collapsible-content-width);--reka-accordion-content-height:var(--reka-collapsible-content-height);--reka-collapsible-content-height:0px;--reka-collapsible-content-width:0px;" data-slot="content" class="data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] overflow-hidden focus:outline-none" id="reka-collapsible-content-v-0-3-3"><!--[--><!--[--><!--[--><!----><ul data-slot="root" class="ms-5 border-s border-default"><!--[--><!--[--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-extension" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Forge Server Extension<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-extension/api-reference" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Forge Server API Reference<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-extension/usage-examples" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Forge Server Usage Examples<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--]--><!--]--></ul><!--]--><!--]--><!--]--></div><!--]--><!--]--></li><!--]--><!--[--><li data-state="open" data-orientation="vertical" data-slot="itemWithChildren" class="flex flex-col data-[state=open]:mb-1.5"><!--[--><!--[--><button type="button" aria-controls aria-expanded="true" data-state="open" id="reka-accordion-trigger-v-0-3-4" data-reka-collection-item data-orientation="vertical" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted hover:text-highlighted data-[state=open]:text-highlighted transition-colors font-semibold focus-visible:ring-primary"><!--[--><!--[--><!--[--><!--[--><span class="iconify i-lucide:layers-3 shrink-0 size-4 mr-1 text-dimmed group-hover:text-default group-data-[state=open]:text-default transition-colors" aria-hidden="true" style="" data-slot="linkLeadingIcon"></span><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Server Modules<!--]--><!----></span><span data-slot="linkTrailing" class="ms-auto gap-1.5 items-center hidden"><!--[--><!----><span class="iconify i-lucide:chevron-down size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180" aria-hidden="true" style="" data-slot="linkTrailingIcon"></span><!--]--></span><!--]--><!--]--><!--]--></button><div role="region" aria-labelledby="reka-accordion-trigger-v-0-3-4" data-orientation="vertical" style="--reka-accordion-content-width:var(--reka-collapsible-content-width);--reka-accordion-content-height:var(--reka-collapsible-content-height);--reka-collapsible-content-height:0px;--reka-collapsible-content-width:0px;" data-slot="content" class="data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] overflow-hidden focus:outline-none" id="reka-collapsible-content-v-0-3-5"><!--[--><!--[--><!--[--><!----><ul data-slot="root" class="ms-5 border-s border-default"><!--[--><!--[--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Server Module Guides<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/actor" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Actor Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/store" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Store Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/task" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Task Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/bank" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Bank Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/cad" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->CAD Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/economy" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Economy Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/garage" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Garage Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/locker" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Locker Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/organization" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Organization Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/owned-storage" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Owned Storage Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/server-modules/phone" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Phone Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--]--><!--]--></ul><!--]--><!--]--><!--]--></div><!--]--><!--]--></li><!--]--><!--[--><li data-state="open" data-orientation="vertical" data-slot="itemWithChildren" class="flex flex-col data-[state=open]:mb-1.5"><!--[--><!--[--><button type="button" aria-controls aria-expanded="true" data-state="open" id="reka-accordion-trigger-v-0-3-6" data-reka-collection-item data-orientation="vertical" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted hover:text-highlighted data-[state=open]:text-highlighted transition-colors font-semibold focus-visible:ring-primary"><!--[--><!--[--><!--[--><!--[--><span class="iconify i-lucide:monitor-smartphone shrink-0 size-4 mr-1 text-dimmed group-hover:text-default group-data-[state=open]:text-default transition-colors" aria-hidden="true" style="" data-slot="linkLeadingIcon"></span><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Addons<!--]--><!----></span><span data-slot="linkTrailing" class="ms-auto gap-1.5 items-center hidden"><!--[--><!----><span class="iconify i-lucide:chevron-down size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180" aria-hidden="true" style="" data-slot="linkTrailingIcon"></span><!--]--></span><!--]--><!--]--><!--]--></button><div role="region" aria-labelledby="reka-accordion-trigger-v-0-3-6" data-orientation="vertical" style="--reka-accordion-content-width:var(--reka-collapsible-content-width);--reka-accordion-content-height:var(--reka-collapsible-content-height);--reka-collapsible-content-height:0px;--reka-collapsible-content-width:0px;" data-slot="content" class="data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] overflow-hidden focus:outline-none" id="reka-collapsible-content-v-0-3-7"><!--[--><!--[--><!--[--><!----><ul data-slot="root" class="ms-5 border-s border-default"><!--[--><!--[--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/main" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Main Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/phone" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Phone Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/store" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Store Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/common" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Common Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/actor" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Actor Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/bank" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Bank Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/cad" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client CAD Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/garage" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Garage Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/locker" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Locker Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/notifications" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Notifications Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--[--><li data-slot="item" class="ps-1.5 -ms-px"><!--[--><a href="/forge/client-addons/organization" data-slot="link" class="group relative w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2 focus-visible:before:ring-primary text-muted after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full after:transition-colors hover:text-highlighted data-[state=open]:text-highlighted transition-colors"><!--[--><!--[--><!--[--><!----><!--]--><span data-slot="linkTitle" class="truncate"><!--[-->Client Organization Usage Guide<!--]--><!----></span><!----><!--]--><!--]--></a><!--]--></li><!--]--><!--]--><!--]--></ul><!--]--><!--]--><!--]--></div><!--]--><!--]--></li><!--]--><!--]--><!--]--></ul></nav><!--]--><!--]--><!--[--><!--]--></div></aside><div data-slot="center" class="lg:col-span-8"><!--[--><!--[--><div data-slot="root" class="flex flex-col lg:grid lg:grid-cols-10 lg:gap-10"><!----><div data-slot="center" class="lg:col-span-8"><!--[--><div data-slot="root" class="relative border-b border-default py-8"><div data-slot="headline" class="mb-2.5 text-sm font-semibold text-primary flex items-center gap-1.5"><!--[-->Getting Started<!--]--></div><div data-slot="container" class=""><div data-slot="wrapper" class="flex lg:flex-row lg:items-center lg:justify-between gap-4 flex-row items-center flex-wrap justify-between"><h1 data-slot="title" class="text-3xl sm:text-4xl text-pretty font-bold text-highlighted"><!--[-->Module Reference<!--]--></h1><div data-slot="links" class="flex flex-wrap items-center gap-1.5"><!--[--><!--[--><!--]--><div data-orientation="horizontal" class="relative inline-flex -space-x-px"><!--[--><!--[--><!--[--><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1] px-2.5 py-1.5 text-xs gap-1.5 text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 focus:outline-none focus-visible:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated"><!--[--><!--[--><span class="iconify i-lucide:copy shrink-0 text-neutral size-3.5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><span data-slot="label" class="truncate">Copy page</span><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><!--[--><!--[--><!--[--><!--[--><!--[--><button type="button" id="reka-dropdown-menu-trigger-v-0-3-7-0" aria-haspopup="menu" aria-expanded="false" data-state="closed" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1] text-xs gap-1.5 text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 focus:outline-none focus-visible:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated p-1.5 border-l border-muted"><!--[--><!--[--><span class="iconify i-lucide:chevron-down shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><!--[--><!----><!--v-if--><!--]--><!--]--><!--]--><!--]--><!--]--></div><!--]--></div></div><div data-slot="description" class="text-lg text-pretty text-muted mt-4"><!--[-->This reference lists the main Forge modules and where each layer lives.<!--]--></div><!--[--><!--]--></div></div><div class="mt-8 pb-24 space-y-12"><!--[--><div><h1 id="module-reference" class="text-4xl text-highlighted font-bold mb-8 scroll-mt-[calc(45px+var(--ui-header-height))] lg:scroll-mt-(--ui-header-height)"><!--[-->Module Reference<!--]--></h1><p class="my-5 leading-7 text-pretty"><!--[-->This reference lists the main Forge modules and where each layer lives.<!--]--></p><h2 id="directory-map" class="relative text-2xl text-highlighted font-bold mt-12 mb-6 scroll-mt-[calc(48px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(48px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-xl/7 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#directory-map" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-1 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Directory Map<!--]--></a></h2><div class="relative my-5 group"><!----><!--[--><!--[--><button type="button" aria-label="Copy code to clipboard" tabindex="-1" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 text-xs gap-1.5 ring ring-inset ring-accented text-default bg-default hover:bg-elevated active:bg-elevated disabled:bg-default aria-disabled:bg-default focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted p-1.5 absolute top-[11px] right-[11px] lg:opacity-0 lg:group-hover:opacity-100 transition"><!--[--><!--[--><span class="iconify i-lucide:copy shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><pre class="group font-mono text-sm/6 border border-muted bg-muted rounded-md px-4 py-3 whitespace-pre-wrap break-words overflow-x-auto focus:outline-none **:[.line]:block **:[.line.highlight]:-mx-4 **:[.line.highlight]:px-4 **:[.line.highlight]:bg-accented/50! language-text"><!--[--><code>arma/client/addons/ Client-side Arma addons and browser UIs
|
|
arma/server/addons/ Server-side Arma addons and extension bridge
|
|
arma/server/extension/ Rust arma-rs extension and SurrealDB adapters
|
|
bin/icom/ Interprocess communication helper
|
|
lib/models/ Shared domain data models
|
|
lib/repositories/ Repository traits and in-memory stores
|
|
lib/services/ Domain services and workflow logic
|
|
lib/shared/ Cross-crate helpers
|
|
tools/ Web UI build tooling
|
|
docs/ Framework-level documentation
|
|
</code><!--]--></pre></div><h2 id="gameplay-domains" class="relative text-2xl text-highlighted font-bold mt-12 mb-6 scroll-mt-[calc(48px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(48px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-xl/7 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#gameplay-domains" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-1 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Gameplay Domains<!--]--></a></h2><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Domain<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Client addon<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Server addon<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Service/model layer<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Extension group<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Actor<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Player identity, loadout, position, status, contact identifiers, and persistent character data.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/actor<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/actor<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/actor.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/actor.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Bank<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Player accounts, cash/bank balances, PIN validation, transfers, checkout charging, and transaction context.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/bank<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/bank<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/bank.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/bank.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:*<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->CAD<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Dispatch requests, assignments, orders, activity stream, profiles, groups, and hydrated dispatcher views.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/cad<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/cad<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/cad.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/cad.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Garage<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Player vehicle storage with plate IDs, fuel, damage, and hit point state.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/garage<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/garage<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/garage.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/garage.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:*<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Locker<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Player item storage keyed by classname with category and amount.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/locker<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/locker<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/locker.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/locker.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:*<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:hot:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Organization<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Player organizations, membership, treasury, credit lines, shared assets, and fleet data.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/org<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/org<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/org.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/org.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:*<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:hot:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Phone<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Contacts, messages, and email state.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/phone<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/phone<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/phone.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/phone.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Store<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Storefront entity setup, catalog hydration, checkout workflows, and checkout charging integration.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/store<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/store<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/store.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/store.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->store:checkout<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Task<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Server-owned mission/task flows, catalog, ownership, status, participant tracking, rewards, and defuse counters.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->none<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/task<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/task.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/task.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Owned Garage<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Organization or owner-scoped vehicle unlock storage.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->via garage/org UI<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->server extension only<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/v_garage.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/v_garage.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:*<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Owned Locker<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Organization or owner-scoped arsenal unlock storage.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->via locker/org UI<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->server extension only<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/models/src/v_locker.rs<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->lib/services/src/v_locker.rs<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:*<!--]--></code><!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->Server and extension guides:
|
|
<a href="/forge/server-modules/actor" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Actor<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/bank" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Bank<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/cad" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->CAD<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/economy" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Economy<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/garage" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Garage<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/locker" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Locker<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/organization" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Organization<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/owned-storage" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Owned Storage<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/phone" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Phone<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/store" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Store<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/server-modules/task" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Task<!--]--><!--]--><!--]--></a>.<!--]--></p><p class="my-5 leading-7 text-pretty"><!--[-->Client guides:
|
|
<a href="/forge/client-addons" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Client Overview<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/main" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Main<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/common" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Common<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/actor" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Actor<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/bank" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Bank<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/cad" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->CAD<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/garage" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Garage<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/locker" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Locker<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/notifications" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Notifications<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/organization" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Organization<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/phone" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Phone<!--]--><!--]--><!--]--></a>,
|
|
<a href="/forge/client-addons/store" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Store<!--]--><!--]--><!--]--></a>.<!--]--></p><h2 id="infrastructure-modules" class="relative text-2xl text-highlighted font-bold mt-12 mb-6 scroll-mt-[calc(48px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(48px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-xl/7 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#infrastructure-modules" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-1 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Infrastructure Modules<!--]--></a></h2><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Module<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Location<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->common<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Shared SQF helpers, base stores, utility functions, and shared UI bridge pieces.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/common<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/common<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->extension<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Server SQF bridge around <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->forge_server<!--]--></code> extension calls and chunked transport.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/extension<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->main<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Mod-level configuration, pre-init wiring, and server/client startup glue.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/main<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/main<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->economy<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Server-side fuel, medical, and service economy helpers. Fuel and repair charge organization hot state; medical charges player bank/cash first, then organization funds with repayable member debt when personal funds cannot cover the bill.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/addons/economy<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->notifications<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Client notification UI, sounds, and UI event handling.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/client/addons/notifications<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->icom<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Rust helper for interprocess communication and event broadcasting.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bin/icom<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/extension/src/icom.rs<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->terrain<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Extension-side terrain export helper.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/extension/src/terrain.rs<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->transport<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Chunked request/response handling for large extension payloads.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/extension/src/transport.rs<!--]--></code><!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->surreal<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->SurrealDB connection lifecycle and status reporting.<!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma/server/extension/src/surreal.rs<!--]--></code><!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><h2 id="extension-command-groups" class="relative text-2xl text-highlighted font-bold mt-12 mb-6 scroll-mt-[calc(48px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(48px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-xl/7 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#extension-command-groups" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-1 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Extension Command Groups<!--]--></a></h2><p class="my-5 leading-7 text-pretty"><!--[-->Commands are invoked with:<!--]--></p><div class="relative my-5 group" style=""><!----><!--[--><!--[--><button type="button" aria-label="Copy code to clipboard" tabindex="-1" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 text-xs gap-1.5 ring ring-inset ring-accented text-default bg-default hover:bg-elevated active:bg-elevated disabled:bg-default aria-disabled:bg-default focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted p-1.5 absolute top-[11px] right-[11px] lg:opacity-0 lg:group-hover:opacity-100 transition"><!--[--><!--[--><span class="iconify i-lucide:copy shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><pre class="group font-mono text-sm/6 border border-muted bg-muted rounded-md px-4 py-3 whitespace-pre-wrap break-words overflow-x-auto focus:outline-none **:[.line]:block **:[.line.highlight]:-mx-4 **:[.line.highlight]:px-4 **:[.line.highlight]:bg-accented/50! language-sqf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight" style=""><!--[--><code><span class="line" line="1"><span>"forge_server" callExtension ["group:command", [_arg1, _arg2]];
|
|
</span></span></code><!--]--></pre></div><p class="my-5 leading-7 text-pretty"><!--[-->Nested groups use additional <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->:<!--]--></code> separators, for example
|
|
<code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:deposit<!--]--></code>.<!--]--></p><h3 id="core" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#core" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Core<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->version<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Return the extension version string.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->status<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Return SurrealDB connection state.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->surreal:status<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Return SurrealDB connection state directly from the Surreal module.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><h3 id="actor" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#actor" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Actor<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:get<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Fetch actor data for a resolved player UID.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:create<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Create actor data from JSON.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:update<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Apply actor JSON updates.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:exists<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Return <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->true<!--]--></code> or <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->false<!--]--></code>.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Delete actor data.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:hot:init<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:hot:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:hot:keys<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:hot:override<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:hot:save<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->actor:hot:remove<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage actor hot state.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/actor" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Actor Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="bank" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#bank" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Bank<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:create<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:update<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:exists<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Durable bank CRUD.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:init<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:override<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:patch<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:save<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:remove<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage bank hot state.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:deposit<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:withdraw<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:deposit_earnings<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:transfer<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Mutate hot bank balances with operation context.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:charge_checkout<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Charge a checkout against hot bank state.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->bank:hot:validate_pin<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Validate a PIN for bank operations.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/bank" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Bank Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="garage" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#garage" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Garage<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:create<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:add<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:update<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:patch<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:remove<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:delete<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:exists<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Durable player garage operations.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:init<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:override<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:add<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:remove_vehicle<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:save<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->garage:hot:remove<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage player garage hot state.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/garage" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Garage Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="locker" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#locker" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Locker<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:create<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:add<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:update<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:patch<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:remove<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:delete<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:exists<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Durable player locker operations.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:hot:init<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:hot:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:hot:override<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:hot:save<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->locker:hot:remove<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage player locker hot state.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/locker" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Locker Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="organization" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#organization" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Organization<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:create<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:update<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:exists<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Durable organization CRUD.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:assets:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:assets:update<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage organization assets.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:fleet:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:fleet:update<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage organization fleet entries.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:members:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:members:add<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:members:remove<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage organization membership.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->org:hot:*<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Runtime organization workflows including registration, invites, credit lines, checkout charging, assets, fleet, leave, disband, save, and remove.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/organization" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Org Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="phone" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#phone" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Phone<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:init<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Initialize phone state for a UID.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:contacts:list<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:contacts:add<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:contacts:remove<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage contacts.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:messages:list<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:messages:thread<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:messages:send<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:messages:mark_read<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:messages:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage messages.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:emails:list<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:emails:send<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:emails:mark_read<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:emails:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage emails.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->phone:remove<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Remove phone state for a UID.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/phone" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Phone Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="cad" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#cad" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->CAD<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command Group<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:activity:append<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:activity:recent<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Append and read recent activity.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:assignments:list<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:assignments:assign<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:assignments:acknowledge<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:assignments:decline<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:assignments:upsert<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:assignments:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage dispatch assignments.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:orders:list<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:orders:create<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:orders:create_from_context<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:orders:close<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:orders:upsert<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:orders:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage orders.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:requests:list<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:requests:submit<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:requests:submit_from_context<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:requests:close<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:requests:upsert<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:requests:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage requests.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:profiles:list<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:profiles:update_from_context<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:profiles:upsert<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:profiles:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage profiles.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:groups:build<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Build grouped CAD state.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->cad:view:hydrate<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Build the dispatcher view model.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/cad" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->CAD Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="task" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#task" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Task<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command Group<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:reset<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Reset task state.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:catalog:active<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:catalog:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:catalog:upsert<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:catalog:delete<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage task catalog entries.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:ownership:bind<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:ownership:release<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:ownership:accept<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:ownership:reward_context<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage task ownership and rewards.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:status:set<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:status:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:status:clear<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage task status.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:defuse:increment<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:defuse:get<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage defuse counters.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->task:clear<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Clear task state.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/task" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Task Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="owned-storage" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#owned-storage" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Owned Storage<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command Group<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:create<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:fetch<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:add<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:remove<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:delete<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:exists<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Owner-scoped vehicle storage.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:garage:hot:*<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Owner-scoped vehicle hot state.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:create<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:fetch<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:add<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:remove<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:delete<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:exists<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Owner-scoped item storage.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->owned:locker:hot:*<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Owner-scoped item hot state.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><p class="my-5 leading-7 text-pretty"><!--[-->See <a href="/forge/server-modules/owned-storage" class="text-primary border-b border-transparent hover:border-primary font-medium focus-visible:outline-primary focus-visible:has-[>code]:outline-0 [&>code]:border-dashed hover:[&>code]:border-primary hover:[&>code]:text-primary focus-visible:[&>code]:border-primary focus-visible:[&>code]:text-primary transition-colors [&>code]:transition-colors"><!--[--><!--[--><!--[-->Owned Storage Usage Guide<!--]--><!--]--><!--]--></a> for examples.<!--]--></p><h3 id="other-extension-groups" class="relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#other-extension-groups" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Other Extension Groups<!--]--></a></h3><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Command Group<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Purpose<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->store:checkout<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Run store checkout behavior.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->icom:connect<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->icom:broadcast<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->icom:send_event<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->ICom connection and event forwarding.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->terrain:exportSVG<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Export terrain data as SVG.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->transport:invoke<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->transport:invoke_stored<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Invoke commands through transport.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->transport:request:append<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->transport:request:clear<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage stored request chunks.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->transport:response:get<!--]--></code>, <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->transport:response:clear<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Manage stored response chunks.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><h2 id="rust-crates" class="relative text-2xl text-highlighted font-bold mt-12 mb-6 scroll-mt-[calc(48px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(48px+var(--ui-header-height))] [&>a]:focus-visible:outline-primary [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-xl/7 [&>a>code]:font-bold [&>a>code]:transition-colors"><a href="#rust-crates" class="group lg:ps-2 lg:-ms-2"><span class="absolute -ms-8 top-1 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated hover:text-primary rounded-md hidden lg:flex text-muted transition"><span class="iconify i-lucide:hash size-4 shrink-0" aria-hidden="true" style=""></span></span><!--[-->Rust Crates<!--]--></a></h2><div class="relative my-5 overflow-x-auto"><table class="w-full border-separate border-spacing-0 rounded-md"><!--[--><thead class="bg-muted"><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Crate<!--]--></th><th class="py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted text-left"><!--[-->Role<!--]--></th><!--]--></tr><!--]--></thead><tbody><!--[--><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->forge-models<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Domain models and validation. Keep these serializable and free of persistence details.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->forge-repositories<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Repository traits and in-memory implementations. Keep these storage-agnostic.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->forge-services<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Business rules and workflows. Depend on repository traits, not concrete databases.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->forge-shared<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Cross-crate helpers. Keep dependencies light.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->forge-server<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->Arma extension crate. Owns command registration, SurrealDB runtime wiring, and concrete storage adapters.<!--]--></td><!--]--></tr><tr class="[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"><!--[--><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[--><code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->forge-icom<!--]--></code><!--]--></td><td class="py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5 text-left"><!--[-->ICom helper binary and client library.<!--]--></td><!--]--></tr><!--]--></tbody><!--]--></table></div><style>html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}</style></div><div data-orientation="horizontal" role="separator" data-slot="root" class="flex items-center align-center text-center w-full flex-row"><!--[--><!--[--><div data-slot="border" class="border-default w-full border-solid border-t"></div><!--[--><div data-slot="container" class="font-medium text-default flex mx-3 whitespace-nowrap"><!--[--><div class="flex items-center gap-2 text-sm text-muted"><!--[--><!--[--><a href="https://github.com/InnovativeDevSolutions/forge/edit/master/docus/content/1.getting-started/2.module-reference.md" rel="noopener noreferrer" target="_blank" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-muted hover:text-default active:text-default disabled:text-muted aria-disabled:text-muted focus:outline-none focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-inverted"><!--[--><!--[--><span class="iconify i-lucide:pen shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[-->Edit this page<!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!--]--><!--[--><span>or</span><!--[--><!--[--><a href="https://github.com/InnovativeDevSolutions/forge/issues/new/choose" rel="noopener noreferrer" target="_blank" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-muted hover:text-default active:text-default disabled:text-muted aria-disabled:text-muted focus:outline-none focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-inverted"><!--[--><!--[--><span class="iconify i-lucide:alert-circle shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[-->Report an issue<!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!--]--><!--]--></div><!--]--></div><div data-slot="border" class="border-default w-full border-solid border-t"></div><!--]--><!--]--><!--]--></div><!--[--><!----><div data-slot="root" class="grid grid-cols-1 sm:grid-cols-2 gap-8"><a href="/forge/getting-started/architecture" data-slot="link" class="group block px-6 py-8 rounded-lg border border-default hover:bg-elevated/50 focus-visible:outline-primary transition-colors"><!--[--><!--[--><!--[--><div data-slot="linkLeading" class="inline-flex items-center rounded-full p-1.5 bg-elevated group-hover:bg-primary/10 ring ring-accented mb-4 group-hover:ring-primary/50 transition"><!--[--><span class="iconify i-lucide:arrow-left size-5 shrink-0 text-highlighted group-hover:text-primary transition-[color,translate] group-active:-translate-x-0.5" aria-hidden="true" style="" data-slot="linkLeadingIcon"></span><!--]--></div><p data-slot="linkTitle" class="font-medium text-[15px] text-highlighted mb-1 truncate"><!--[-->Framework Architecture<!--]--></p><p data-slot="linkDescription" class="text-sm text-muted line-clamp-2"><!--[-->Forge is organized around domain modules. A domain usually has SQF addon
|
|
entry points, Rust models, repository traits, service logic, extension command
|
|
handlers, and optional browser UI.<!--]--></p><!--]--><!--]--><!--]--></a><a href="/forge/getting-started/development" data-slot="link" class="group block px-6 py-8 rounded-lg border border-default hover:bg-elevated/50 focus-visible:outline-primary transition-colors text-end"><!--[--><!--[--><!--[--><div data-slot="linkLeading" class="inline-flex items-center rounded-full p-1.5 bg-elevated group-hover:bg-primary/10 ring ring-accented mb-4 group-hover:ring-primary/50 transition"><!--[--><span class="iconify i-lucide:arrow-right size-5 shrink-0 text-highlighted group-hover:text-primary transition-[color,translate] group-active:translate-x-0.5" aria-hidden="true" style="" data-slot="linkLeadingIcon"></span><!--]--></div><p data-slot="linkTitle" class="font-medium text-[15px] text-highlighted mb-1 truncate"><!--[-->Development Guide<!--]--></p><p data-slot="linkDescription" class="text-sm text-muted line-clamp-2"><!--[-->This guide covers the usual path for adding or changing a Forge module.<!--]--></p><!--]--><!--]--><!--]--></a></div><!--]--><!--]--></div><!--]--></div><div data-slot="right" class="lg:col-span-2 order-first lg:order-last"><!--[--><!----><!----><!----><nav data-state="closed" data-slot="root" class="sticky top-(--ui-header-height) z-10 bg-default/75 lg:bg-[initial] backdrop-blur -mx-4 px-4 sm:px-6 sm:-mx-6 lg:ms-0 overflow-y-auto max-h-[calc(100vh-var(--ui-header-height))]"><!--[--><div data-slot="container" class="pt-4 sm:pt-6 pb-2.5 sm:pb-4.5 lg:py-8 border-b border-dashed border-default lg:border-0 flex flex-col"><!----><!--[--><button type="button" aria-controls aria-expanded="false" data-state="closed" data-slot="trigger" class="group text-sm font-semibold flex-1 flex items-center gap-1.5 py-1.5 -mt-1.5 focus-visible:outline-primary lg:hidden"><!--[--><!--[--><!--[--><!--]--><span data-slot="title" class="truncate"><!--[-->On this page<!--]--></span><span data-slot="trailing" class="ms-auto inline-flex gap-1.5 items-center"><!--[--><span class="iconify i-lucide:chevron-down size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180 lg:hidden" aria-hidden="true" style="" data-slot="trailingIcon"></span><!--]--></span><!--]--><!--]--></button><div data-slot="content" class="relative data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden focus:outline-none lg:hidden" id="reka-collapsible-content-v-0-3-7-1" hidden data-state="closed" style="--reka-collapsible-content-height:0px;--reka-collapsible-content-width:0px;"><!--v-if--></div><p data-slot="trigger" class="group text-sm font-semibold flex-1 items-center gap-1.5 py-1.5 -mt-1.5 focus-visible:outline-primary hidden lg:flex"><!--[--><!--[--><!--]--><span data-slot="title" class="truncate"><!--[-->On this page<!--]--></span><span data-slot="trailing" class="ms-auto inline-flex gap-1.5 items-center"><!--[--><span class="iconify i-lucide:chevron-down size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180 lg:hidden" aria-hidden="true" style="" data-slot="trailingIcon"></span><!--]--></span><!--]--></p><div data-slot="content" class="relative data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] overflow-hidden focus:outline-none hidden lg:flex"><!--[--><div data-slot="indicator" class="absolute ms-2.5 transition-[translate,height] duration-200 h-(--indicator-size) translate-y-(--indicator-position) w-px rounded-full" style=""><div data-slot="indicatorLine" class="hidden"></div><!----></div><!--[--><ul class="min-w-0 ms-2.5 ps-4 border-s border-default"><!--[--><li class="min-w-0 -ms-px"><a href="#directory-map" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Directory Map</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#gameplay-domains" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Gameplay Domains</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#infrastructure-modules" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Infrastructure Modules</span><!--]--></a><!----></li><li class=""><a href="#extension-command-groups" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Extension Command Groups</span><!--]--></a><ul class="ms-3"><!--[--><li class="min-w-0 -ms-px"><a href="#core" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Core</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#actor" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Actor</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#bank" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Bank</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#garage" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Garage</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#locker" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Locker</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#organization" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Organization</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#phone" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Phone</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#cad" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">CAD</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#task" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Task</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#owned-storage" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Owned Storage</span><!--]--></a><!----></li><li class="min-w-0 -ms-px"><a href="#other-extension-groups" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Other Extension Groups</span><!--]--></a><!----></li><!--]--></ul></li><li class="min-w-0 -ms-px"><a href="#rust-crates" data-slot="link" class="group relative text-sm flex items-center focus-visible:outline-primary py-1 text-muted hover:text-default transition-colors"><!--[--><span data-slot="linkText" class="truncate">Rust Crates</span><!--]--></a><!----></li><!--]--></ul><!--]--><!--]--></div><!--]--><div data-slot="bottom" class="hidden lg:flex lg:flex-col gap-6 mt-6"><!--[--><!----><!--]--></div></div><!--]--></nav><!--]--><!----></div></div><!--]--><!--]--></div><!----></div><!--]--></div><!--]--></main><footer data-slot="root"><!----><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 py-8 lg:py-4 lg:flex lg:items-center lg:justify-between lg:gap-x-3" data-slot="container"><!--[--><div data-slot="right" class="lg:flex-1 flex items-center justify-center lg:justify-end gap-x-1.5 lg:order-3"><!--[--><!--[--><!--[--><!--[--><!--[--><a href="https://github.com/InnovativeDevSolutions/forge" rel="noopener noreferrer" target="_blank" aria-label="GitHub repository" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!--]--><!--]--><!--[--><!--[--><button type="button" aria-label="Switch to dark mode" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-lucide:moon shrink-0 size-5 hidden dark:inline-block" aria-hidden="true" style=""></span><span class="iconify i-lucide:sun shrink-0 size-5 dark:hidden" aria-hidden="true" style=""></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><!--]--><!--]--></div><div data-slot="center" class="mt-3 lg:mt-0 lg:order-2 flex items-center justify-center"><!--[--><!--]--></div><div data-slot="left" class="flex items-center justify-center lg:justify-start lg:flex-1 gap-x-1.5 mt-3 lg:mt-0 lg:order-1"><!--[--><div class="text-sm text-muted"> Copyright © 2026</div><!--]--></div><!--]--></div><!----></footer></div><span></span><!--]--><!--]--><!--[--><!--]--><!--v-if--><!--]--><!--[--><!--]--><!--]--><!--]--></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{assistant:{enabled:false,apiPath:"/__docus__/assistant"},mdc:{components:{prose:true,map:{accordion:"ProseAccordion","accordion-item":"ProseAccordionItem",badge:"ProseBadge",callout:"ProseCallout",card:"ProseCard","card-group":"ProseCardGroup",caution:"ProseCaution","code-collapse":"ProseCodeCollapse","code-group":"ProseCodeGroup","code-icon":"ProseCodeIcon","code-preview":"ProseCodePreview","code-tree":"ProseCodeTree",collapsible:"ProseCollapsible",field:"ProseField","field-group":"ProseFieldGroup",icon:"ProseIcon",kbd:"ProseKbd",note:"ProseNote",steps:"ProseSteps",tabs:"ProseTabs","tabs-item":"ProseTabsItem",tip:"ProseTip",warning:"ProseWarning"},customElements:[]},headings:{anchorLinks:{h1:false,h2:true,h3:true,h4:true,h5:false,h6:false}},highlight:{noApiRoute:true,theme:{light:"material-theme-lighter",default:"material-theme",dark:"material-theme-palenight"},shikiEngine:"javascript",langs:["bash","diff","json","js","ts","html","css","vue","shell","mdc","md","yaml"],highlighter:"shiki"}},content:{wsUrl:""},"nuxt-robots":{version:"6.0.7",isNuxtContentV2:false,debug:false,credits:true,groups:[{userAgent:["*"],allow:["/"],disallow:[],contentUsage:[],contentSignal:[],_indexable:true,_rules:[{pattern:"/",allow:true}],_normalized:true}],sitemap:["/sitemap.xml"],header:true,robotsEnabledValue:"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1",robotsDisabledValue:"noindex, nofollow",cacheControl:"max-age=14400, must-revalidate",botDetection:true,pageMetaRobots:{}},"nuxt-og-image":{defaults:{emojis:"noto",extension:"png",width:1200,height:600,cacheMaxAgeSeconds:259200},hasServerRuntime:true}},app:{baseURL:"/forge/",buildId:"3a1bf7b7-6f51-4d2c-9c98-142f71e69a9a",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__" data-src="/forge/getting-started/module-reference/_payload.json?3a1bf7b7-6f51-4d2c-9c98-142f71e69a9a">[{"state":1,"once":16,"_errors":17,"serverRendered":5,"path":19,"prerenderedAt":20},["Reactive",2],{"$scolor-mode":3,"$sassistant-open":6,"$sassistant-expanded":6,"$sassistant-messages":7,"$sassistant-pending":-1,"$stoasts":8,"$ssite-config":9},{"preference":4,"value":4,"unknown":5,"forced":6},"system",true,false,[],[],{"_priority":10,"env":13,"name":14,"url":15},{"env":11,"url":12,"name":12},-15,-3,"production","forge-docus","https:\u002F\u002Finnovativedevsolutions.github.io",["Set"],["ShallowReactive",18],{"navigation_docs":-1,"search_docs":-1,"-getting-started-module-reference":-1,"-getting-started-module-reference-surround":-1},"\u002Fgetting-started\u002Fmodule-reference",1776806627742]</script></body></html> |