server content fix

This commit is contained in:
Frank Harris 2026-06-18 12:11:47 -05:00
parent 8a56ddc83c
commit 67022a3846
9 changed files with 589 additions and 740 deletions

View file

@ -26,22 +26,31 @@ Known tables used by the module:
- `server_content_manifest`
- `server_content_install_history`
## What It Already Does
## Current Model
The module can already represent several content types, including:
All server content installs through the scripted installer workflow.
- downloads/extracted packages
- post-script driven installs
- config packs
- server-side applications with lifecycle hooks
- future profile-type content
`addon_type` is now treated as a category used for sorting and filtering only.
Examples:
- `Server Content`
- `Mod`
- `Map`
- `Config`
- `Bot`
- `Admin Tool`
- `DayZ Mod`
- `Minecraft Version`
- `Steam Workshop Collection`
- `Server-side Application`
Steam Workshop is no longer a user-facing Server Content category. Workshop access belongs to the dedicated `steam_workshop` module.
## Server-Side Applications
`Server-side Application` content writes an agent-readable hook manifest under
the target game home:
`Server-side Application` is a category plus optional startup-hook metadata.
Any content item with startup-hook metadata enabled writes an agent-readable
hook manifest under the target game home:
```text
_gsp_content/hooks/<app>.json
@ -50,17 +59,31 @@ _gsp_content/hooks/<app>.json
The agents generate runtime watchdog scripts in `_gsp_content/generated/` and
track side-application PIDs in `_gsp_content/runtime/server_content.pids`.
Use this type for companion applications such as BEC, Big Brother Bot, Discord
bridges, RCON tools, and log watchers. The application files themselves may
still be installed wherever the game requires them.
Use this category and hook metadata for companion applications such as BEC, Big
Brother Bot, Discord bridges, RCON tools, and log watchers. The application
files themselves may still be installed wherever the game requires them.
Detailed lifecycle documentation:
- `docs/features/SERVER_CONTENT_APPLICATION_HOOKS.md`
## Current Limitations
## Installer Fields
- Cache and cleanup policy need a clearer product design.
Every content item may use:
- install script
- optional download URL
- optional target path
- optional extract path
- version
- description
- stop server before install
- backup target path before install
- restart server after install
- cacheable flag
The install script is the source of truth. Helper fields can be used to
generate a basic scripted installer when a full script is not supplied.
## Where To Start Reading
@ -81,6 +104,15 @@ This module is the right place for:
- server content manifests
- install history
## Migration
Older category values are migrated or normalized as follows:
- `Downloadable Mod` / `file_download` / `plugin` -> `Mod`
- `Configuration Package` / `config_edit` / `config` -> `Config`
- `Scripted Installer` / `scripted_installer` -> `Server Content`
- `Server-side Application` / `server_app` -> `Server-side Application`
## Validation
Relevant smoke tests: