-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomponents.schema.json
More file actions
60 lines (60 loc) · 2.97 KB
/
components.schema.json
File metadata and controls
60 lines (60 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/sidebutton/agent-runners/blob/main/components.schema.json",
"title": "Agent runners component catalog",
"description": "Optional components layered on top of the single base runner (ubuntu-claude-code). The base agent is always installed; components are selected per-agent via the AGENT_COMPONENTS env list. Profiles (profiles.json) are named presets of these slugs. The portal vendors this file; agent-runners is the single source of truth.",
"type": "object",
"required": ["version", "components"],
"properties": {
"$schema": { "type": "string" },
"version": { "type": "integer", "minimum": 1 },
"components": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/$defs/component" }
}
},
"$defs": {
"component": {
"type": "object",
"required": ["slug", "kind", "title", "requires"],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]*$",
"description": "Stable id persisted in agents.components and threaded into AGENT_COMPONENTS. Resolves to base/components/<slug>/."
},
"kind": {
"type": "string",
"enum": ["runtime", "packs", "toolchain"],
"description": "Install dispatch class. runtime = service/binary install via the component's own scripts; packs = knowledge-pack install (needs the SB server); toolchain = OS-level dev tool (apt/repo). MCP plugins are a separate role-driven catalog (plugins.json), not components."
},
"title": { "type": "string", "description": "Wizard label." },
"description": { "type": "string", "description": "One-line helper text in the wizard." },
"requires": {
"type": "array",
"items": { "type": "string" },
"description": "Other component slugs that must also be selected. The wizard auto-checks these; unchecking a required-by component unchecks its dependents."
},
"unlocks": {
"type": "array",
"items": { "type": "string", "enum": ["dispatch", "capabilities"] },
"description": "Portal-level abilities this component enables. sidebutton-server unlocks dispatch + capabilities; absence ⇒ capabilities=[] and the agent is not dispatchable."
},
"chip": {
"type": "object",
"description": "Fleet/detail dep-chip descriptor. live=true chips get a status dot from a process signal; live=false are static 'installed' declarations.",
"required": ["label", "live"],
"properties": {
"label": { "type": "string" },
"live": { "type": "boolean" },
"processKey": { "type": "string", "enum": ["sidebutton", "chrome", "extension"] },
"versionKey": { "type": "string", "enum": ["sidebutton", "claude_code"] }
},
"additionalProperties": false
}
},
"additionalProperties": false
}
}
}