Thing/plugins/incubating/sai-vn.plugin.json
2026-07-09 02:24:29 +01:00

94 lines
2.4 KiB
JSON

{
"schema": "gamecult.eve.plugin.v1",
"pluginId": "sai.vn",
"title": "Sai Visual Novel",
"owner": "Sai",
"incubation": {
"ownerRepo": "Sai",
"currentHostRepo": "Eve",
"splitTarget": "Sai/sai-vn-plugin",
"graduationTrigger": "Split when VN/Ink semantics, story command fixtures, and ABI describe/validate/project/lower/measure/apply cases are stable."
},
"componentKinds": [
"vn.stage",
"panel.dialogue",
"text.dialogue",
"rail.actions"
],
"commands": [
{
"command": "story.continue",
"schema": "sai.vn.story_command.v1",
"effect": "advance-story"
},
{
"command": "story.choose",
"schema": "sai.vn.story_command.v1",
"effect": "choose-branch"
},
{
"command": "story.jump",
"schema": "sai.vn.story_command.v1",
"effect": "jump-to-knot"
}
],
"runtime": {
"invocationModel": "executable-sidecar",
"contract": "gamecult.eve.plugin_abi.v1",
"transports": ["cultmesh", "stdio"],
"authority": [
"renderer-independent",
"no-provider-state-mutation",
"provider-accepts-or-denies-commands"
],
"sidecar": {
"processKind": "long-running-daemon",
"protocol": "cultmesh-rpc-with-stdio-dev-transport",
"requestSchema": "gamecult.eve.plugin_abi.request.v1",
"responseSchema": "gamecult.eve.plugin_abi.response.v1",
"operations": ["describe", "validate", "project", "lower", "measure", "apply"],
"commandEnvelope": "gamecult.eve.command.v1",
"receiptSchema": "gamecult.eve.command_receipt.v1",
"stateAuthority": "proposes-plugin-state-only-provider-accepts"
}
},
"stateSchemas": [
"sai.vn.story_session.v1",
"sai.vn.visual_manifest.v1"
],
"fixtures": [
{
"fixtureId": "sai-vn",
"schema": "gamecult.eve.surface.v1",
"path": "web/fixtures/sai-vn-surface.json"
}
],
"abiFixtures": [
"plugins/incubating/sai-vn.plugin-abi-fixture.json"
],
"capabilities": {
"requires": [
"vn.stage",
"story.choose",
"story.continue",
"story.jump"
],
"optionalPlugins": [
{
"pluginId": "norn.graph",
"capabilities": [
"embed.norn",
"graph.node.activate"
]
},
{
"pluginId": "tex.math",
"capabilities": [
"embed.tex",
"tex.inline",
"tex.block"
]
}
]
}
}