Add Cloth Config plugin management screen

This commit is contained in:
Dmitri Shimanski
2026-07-20 04:15:57 +03:00
commit 020da28470
66 changed files with 3351 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
# Native ABI v1
Every native plugin is a Go `main` package built with `-buildmode=c-shared` and
exports three C symbols:
```c
int32_t gmb_abi_version(void);
int32_t gmb_call(
int32_t operation,
const uint8_t *input,
uint64_t input_length,
uint8_t **output,
uint64_t *output_length
);
void gmb_free(void *pointer);
```
Plugin authors do not implement these symbols. Importing the Go SDK includes
their native implementation in the final `c-shared` library.
`gmb_call` receives UTF-8 JSON and returns a buffer allocated by the plugin. The
host copies the buffer and always returns it through `gmb_free`. A zero C status
means the transport succeeded. Go callback errors and panics are represented in
the JSON response rather than the C status.
## Operations
| Code | Name | Input |
|---:|---|---|
| 1 | metadata | empty |
| 2 | init | `InitEvent` |
| 3 | tick | `ServerSnapshot` |
| 4 | chat | `ChatEvent` |
| 5 | death | `DeathEvent` |
| 6 | system call result | `SystemCallResult` |
| 7 | deinit | `DeinitEvent` |
Every successful transport response uses this envelope:
```json
{
"status": "ok",
"error": "",
"stack": "",
"data": null,
"logs": [],
"actions": [],
"systemCalls": [],
"snapshot": null
}
```
`status` is one of `ok`, `error`, or `panic`. The host disables a plugin after a
panic. An ordinary handler error is logged but does not disable an already-running
plugin.
All memory ownership stays on its allocating side. Java objects, Go pointers,
and Go structs never cross the boundary. JSON is the v1 transport for clarity;
the same ABI can carry a versioned binary codec in a later protocol revision.