@agentproto/corpus-cli 0.1.0-alpha.1 → 0.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +43 -8
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.mjs +15 -4
- package/dist/index.mjs.map +1 -1
- package/dist/specs/resources/aip-10/draft/KNOWLEDGE.schema.json +457 -0
- package/dist/specs/resources/aip-11/draft/LESSON.schema.json +149 -0
- package/dist/specs/resources/aip-12/draft/PLAYBOOK.schema.json +349 -0
- package/dist/specs/resources/aip-13/draft/WORK_ITEM.schema.json +547 -0
- package/dist/specs/resources/aip-14/draft/TOOL.schema.json +169 -0
- package/dist/specs/resources/aip-15/draft/WORKFLOW.schema.json +356 -0
- package/dist/specs/resources/aip-16/draft/IO.schema.json +64 -0
- package/dist/specs/resources/aip-17/draft/RUNNER.schema.json +81 -0
- package/dist/specs/resources/aip-18/draft/COLLECTION.schema.json +436 -0
- package/dist/specs/resources/aip-19/draft/SECRETS.schema.json +261 -0
- package/dist/specs/resources/aip-20/draft/WORK.schema.json +371 -0
- package/dist/specs/resources/aip-21/draft/AGENCY.schema.json +454 -0
- package/dist/specs/resources/aip-22/draft/OFFICE.schema.json +390 -0
- package/dist/specs/resources/aip-23/draft/IDENTITY.schema.json +358 -0
- package/dist/specs/resources/aip-24/draft/ASSEMBLY.schema.json +411 -0
- package/dist/specs/resources/aip-25/draft/PERSONA.schema.json +257 -0
- package/dist/specs/resources/aip-26/draft/CODE.schema.json +172 -0
- package/dist/specs/resources/aip-28/draft/INTENT.schema.json +215 -0
- package/dist/specs/resources/aip-29/draft/CLI.schema.json +339 -0
- package/dist/specs/resources/aip-3/draft/SKILL.schema.json +206 -0
- package/dist/specs/resources/aip-30/draft/DRIVER.schema.json +237 -0
- package/dist/specs/resources/aip-31/draft/HTTP.schema.json +80 -0
- package/dist/specs/resources/aip-32/draft/MCP.schema.json +88 -0
- package/dist/specs/resources/aip-33/draft/SDK.schema.json +60 -0
- package/dist/specs/resources/aip-34/draft/WORKSPACE.schema.json +252 -0
- package/dist/specs/resources/aip-35/draft/STORAGE.schema.json +237 -0
- package/dist/specs/resources/aip-36/draft/SANDBOX.schema.json +246 -0
- package/dist/specs/resources/aip-38/draft/POLICY.schema.json +217 -0
- package/dist/specs/resources/aip-39/draft/ACTION.schema.json +134 -0
- package/dist/specs/resources/aip-4/draft/DESIGN.schema.json +189 -0
- package/dist/specs/resources/aip-40/draft/EXTENSION.schema.json +116 -0
- package/dist/specs/resources/aip-41/draft/ROUTINE.schema.json +345 -0
- package/dist/specs/resources/aip-42/draft/AGENT.schema.json +268 -0
- package/dist/specs/resources/aip-44/draft/ACP.schema.json +170 -0
- package/dist/specs/resources/aip-45/draft/AGENT-CLI.schema.json +371 -0
- package/dist/specs/resources/aip-47/draft/ROLE.schema.json +199 -0
- package/dist/specs/resources/aip-48/draft/MultiAgentRuntime.schema.json +108 -0
- package/dist/specs/resources/aip-5/draft/TEMPLATE.schema.json +231 -0
- package/dist/specs/resources/aip-6/draft/COMPANY.schema.json +268 -0
- package/dist/specs/resources/aip-7/draft/GOVERNANCE.schema.json +581 -0
- package/dist/specs/resources/aip-8/draft/AGENCY.schema.json +518 -0
- package/dist/specs/resources/aip-9/draft/OPERATOR.schema.json +297 -0
- package/package.json +2 -2
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentproto.sh/schemas/aip-48/MultiAgentRuntime.schema.json",
|
|
4
|
+
"title": "MultiAgentRuntime",
|
|
5
|
+
"description": "Manifest format for agentruntimes/v1 — a composable multi-agent execution kernel. See AIP-48.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["schema", "kind", "id", "participants", "substrate", "dispatcher"],
|
|
8
|
+
"additionalProperties": true,
|
|
9
|
+
"properties": {
|
|
10
|
+
"schema": {
|
|
11
|
+
"const": "agentruntimes/v1",
|
|
12
|
+
"description": "Schema discriminator. MUST be 'agentruntimes/v1'."
|
|
13
|
+
},
|
|
14
|
+
"kind": {
|
|
15
|
+
"const": "MultiAgentRuntime",
|
|
16
|
+
"description": "Kind discriminator. MUST be 'MultiAgentRuntime'."
|
|
17
|
+
},
|
|
18
|
+
"id": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
21
|
+
"description": "Unique slug for this runtime within its scope. Lower-kebab."
|
|
22
|
+
},
|
|
23
|
+
"participants": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"minItems": 1,
|
|
26
|
+
"items": { "$ref": "#/$defs/Participant" }
|
|
27
|
+
},
|
|
28
|
+
"substrate": { "$ref": "#/$defs/AdapterConfig" },
|
|
29
|
+
"dispatcher": { "$ref": "#/$defs/AdapterConfig" },
|
|
30
|
+
"state": { "$ref": "#/$defs/AdapterConfig" },
|
|
31
|
+
"lifecycle": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"properties": {
|
|
35
|
+
"onTurnEnd": { "type": "boolean" },
|
|
36
|
+
"onMention": { "type": "boolean" },
|
|
37
|
+
"onIdle": { "type": "boolean" }
|
|
38
|
+
},
|
|
39
|
+
"description": "Advisory flags — whether the runtime's lifecycle hooks should fire. Adapter implementations decide what onTurnEnd / onMention / onIdle actually do."
|
|
40
|
+
},
|
|
41
|
+
"effectors": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": { "$ref": "#/$defs/EffectorBinding" }
|
|
44
|
+
},
|
|
45
|
+
"provisioning": { "$ref": "#/$defs/AdapterConfig" }
|
|
46
|
+
},
|
|
47
|
+
"$defs": {
|
|
48
|
+
"Participant": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": ["id", "executor"],
|
|
51
|
+
"additionalProperties": true,
|
|
52
|
+
"properties": {
|
|
53
|
+
"id": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"pattern": "^[a-z][a-z0-9_-]*$",
|
|
56
|
+
"description": "Stable id used in mentions and self-skip. Lower-kebab + underscore."
|
|
57
|
+
},
|
|
58
|
+
"executor": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"description": "Key into the runtime's adapter registry. Examples: 'agent-cli', 'db-operator', 'inline'."
|
|
61
|
+
},
|
|
62
|
+
"displayName": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "Human name. The mention dispatcher matches @<displayName> exactly (case-sensitive substring) and falls back to first-word matching for multi-word names."
|
|
65
|
+
},
|
|
66
|
+
"role": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Path to an AIP-47 ROLE.md (preferred) or inline role text. Paths resolve relative to the manifest directory."
|
|
69
|
+
},
|
|
70
|
+
"meta": {
|
|
71
|
+
"type": "object",
|
|
72
|
+
"additionalProperties": true,
|
|
73
|
+
"description": "Adapter-specific extras — operator id, runtime ref slug, capability tags."
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"AdapterConfig": {
|
|
78
|
+
"type": "object",
|
|
79
|
+
"required": ["kind"],
|
|
80
|
+
"additionalProperties": true,
|
|
81
|
+
"properties": {
|
|
82
|
+
"kind": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "Adapter kind. The runtime registry resolves this to an implementation."
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"description": "Adapter configuration block. Schema is open by design — each adapter validates its own additional fields."
|
|
88
|
+
},
|
|
89
|
+
"EffectorBinding": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"required": ["participantId", "tools"],
|
|
92
|
+
"additionalProperties": false,
|
|
93
|
+
"properties": {
|
|
94
|
+
"participantId": { "type": "string" },
|
|
95
|
+
"tools": {
|
|
96
|
+
"type": "array",
|
|
97
|
+
"items": { "type": "string" },
|
|
98
|
+
"description": "Tool names this participant may invoke at execution time."
|
|
99
|
+
},
|
|
100
|
+
"mcpServers": {
|
|
101
|
+
"type": "array",
|
|
102
|
+
"items": { "type": "string" },
|
|
103
|
+
"description": "Optional list of MCP server ids whose tools are available to this participant."
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentproto.sh/schemas/aip-5/TEMPLATE.schema.json",
|
|
4
|
+
"title": "CANVAKIT.md frontmatter (AIP-5)",
|
|
5
|
+
"description": "Validates the YAML frontmatter portion of an AIP-5 *.canvakit.* template.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["template", "name", "version"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "canvakit/v1",
|
|
12
|
+
"description": "Spec version pin. Hosts that find an unknown schema MUST refuse rather than guess."
|
|
13
|
+
},
|
|
14
|
+
"template": {
|
|
15
|
+
"type": "boolean",
|
|
16
|
+
"const": true,
|
|
17
|
+
"description": "Required marker. Tooling that loads files by glob uses this to catch 'renamed but not a template' mistakes."
|
|
18
|
+
},
|
|
19
|
+
"name": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 2,
|
|
22
|
+
"maxLength": 64,
|
|
23
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
24
|
+
"description": "Slug-safe machine name. Lowercase, digits, dashes."
|
|
25
|
+
},
|
|
26
|
+
"version": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(?:[-+][a-zA-Z0-9.-]+)?$",
|
|
29
|
+
"description": "Semver. Bump on breaking change to the rendered shape or variables contract."
|
|
30
|
+
},
|
|
31
|
+
"description": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"maxLength": 2000,
|
|
34
|
+
"description": "One-sentence purpose for the gallery card."
|
|
35
|
+
},
|
|
36
|
+
"author": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"description": "Optional locally; required for gallery publish — (author, name, version) is the canonical key."
|
|
39
|
+
},
|
|
40
|
+
"renderer": {
|
|
41
|
+
"enum": ["mustache", "handlebars", "mdx"],
|
|
42
|
+
"default": "mustache",
|
|
43
|
+
"description": "Template engine. v1 default 'mustache' is universally supported; others are spec-legal but optional."
|
|
44
|
+
},
|
|
45
|
+
"design": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"description": "Designkit fallback hint. Used only when no workspace design is active. Schemes: dk:<preset>, ws:<path>, kit:<slug>, or a bare *.md path."
|
|
48
|
+
},
|
|
49
|
+
"forceDesign": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "Designkit override. Bypasses workspace selection. Same scheme grammar as 'design'."
|
|
52
|
+
},
|
|
53
|
+
"refreshEvery": {
|
|
54
|
+
"anyOf": [
|
|
55
|
+
{ "enum": ["manual", "on-tool-change"] },
|
|
56
|
+
{
|
|
57
|
+
"type": "string",
|
|
58
|
+
"pattern": "^\\d+(ms|s|m|h)$",
|
|
59
|
+
"description": "Duration string — e.g. 60s, 5m, 1h."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"default": "manual",
|
|
63
|
+
"description": "Declarative cadence hint. Honored opportunistically; runtimes that can't honor SHOULD treat as 'manual'."
|
|
64
|
+
},
|
|
65
|
+
"variables": {
|
|
66
|
+
"type": "object",
|
|
67
|
+
"additionalProperties": { "$ref": "#/$defs/variable" },
|
|
68
|
+
"default": {},
|
|
69
|
+
"description": "Caller inputs with author defaults. Substituted into sources params before resolution."
|
|
70
|
+
},
|
|
71
|
+
"sources": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": { "$ref": "#/$defs/source" },
|
|
74
|
+
"default": {},
|
|
75
|
+
"description": "Named data sources resolved in parallel and merged into the render context."
|
|
76
|
+
},
|
|
77
|
+
"imports": {
|
|
78
|
+
"type": "object",
|
|
79
|
+
"additionalProperties": { "$ref": "#/$defs/import" },
|
|
80
|
+
"default": {},
|
|
81
|
+
"description": "Nested canvases. Each renders in isolation; output exposed under {{{imports.<name>}}}."
|
|
82
|
+
},
|
|
83
|
+
"tags": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
86
|
+
"default": []
|
|
87
|
+
},
|
|
88
|
+
"metadata": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"additionalProperties": true,
|
|
91
|
+
"default": {},
|
|
92
|
+
"description": "Host-specific extension surface. Other hosts MUST tolerate unknown metadata.<host>.* keys."
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"$defs": {
|
|
96
|
+
"variable": {
|
|
97
|
+
"type": "object",
|
|
98
|
+
"additionalProperties": false,
|
|
99
|
+
"properties": {
|
|
100
|
+
"type": { "enum": ["string", "number", "boolean", "object", "array"] },
|
|
101
|
+
"required": { "type": "boolean", "default": false },
|
|
102
|
+
"default": {},
|
|
103
|
+
"description": { "type": "string" }
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"source": {
|
|
107
|
+
"oneOf": [
|
|
108
|
+
{ "$ref": "#/$defs/sourceTool" },
|
|
109
|
+
{ "$ref": "#/$defs/sourceStatic" },
|
|
110
|
+
{ "$ref": "#/$defs/sourceFile" },
|
|
111
|
+
{ "$ref": "#/$defs/sourceQuery" }
|
|
112
|
+
],
|
|
113
|
+
"description": "Discriminated by 'kind'. One of: tool, static, file, query."
|
|
114
|
+
},
|
|
115
|
+
"sourceTool": {
|
|
116
|
+
"type": "object",
|
|
117
|
+
"required": ["kind", "ref"],
|
|
118
|
+
"additionalProperties": false,
|
|
119
|
+
"properties": {
|
|
120
|
+
"kind": { "const": "tool" },
|
|
121
|
+
"ref": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"minLength": 1,
|
|
124
|
+
"description": "Tool identifier. Flat ('searchFlights'), namespaced ('stripe.mrr'), or MCP-qualified ('mcp://server/tool'). Resolution: exact > longest wildcard > MCP."
|
|
125
|
+
},
|
|
126
|
+
"params": {
|
|
127
|
+
"type": "object",
|
|
128
|
+
"additionalProperties": true,
|
|
129
|
+
"default": {},
|
|
130
|
+
"description": "JSON params passed verbatim to the resolver. String values may interpolate {{variables.*}}."
|
|
131
|
+
},
|
|
132
|
+
"args": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"additionalProperties": true,
|
|
135
|
+
"description": "Legacy alias for 'params'. Hosts SHOULD accept and warn."
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"sourceStatic": {
|
|
140
|
+
"type": "object",
|
|
141
|
+
"required": ["kind", "value"],
|
|
142
|
+
"additionalProperties": false,
|
|
143
|
+
"properties": {
|
|
144
|
+
"kind": { "const": "static" },
|
|
145
|
+
"value": {
|
|
146
|
+
"description": "Literal pass-through. Never fetched, never parsed."
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"sourceFile": {
|
|
151
|
+
"type": "object",
|
|
152
|
+
"required": ["kind", "path"],
|
|
153
|
+
"additionalProperties": false,
|
|
154
|
+
"properties": {
|
|
155
|
+
"kind": { "const": "file" },
|
|
156
|
+
"path": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"minLength": 1,
|
|
159
|
+
"description": "Filesystem path relative to the render filesystem. Parsed by extension per the format contract."
|
|
160
|
+
},
|
|
161
|
+
"workspace": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"minLength": 1,
|
|
164
|
+
"description": "Resolve `path` against a named workspace instead of the render filesystem. The host's workspace resolver supplies the filesystem (and enforces access); unconfigured cross-workspace refs surface as status:error rather than silently reading the wrong scope."
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"sourceQuery": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"required": ["kind", "include"],
|
|
171
|
+
"additionalProperties": false,
|
|
172
|
+
"properties": {
|
|
173
|
+
"kind": { "const": "query" },
|
|
174
|
+
"include": {
|
|
175
|
+
"anyOf": [
|
|
176
|
+
{ "type": "string", "minLength": 1 },
|
|
177
|
+
{
|
|
178
|
+
"type": "array",
|
|
179
|
+
"items": { "type": "string", "minLength": 1 },
|
|
180
|
+
"minItems": 1
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"description": "Glob or array of globs. Bare directory paths are rewritten to <path>/**/*.md."
|
|
184
|
+
},
|
|
185
|
+
"where": {
|
|
186
|
+
"type": "object",
|
|
187
|
+
"additionalProperties": true,
|
|
188
|
+
"description": "Field predicates against parsed shape. Supports equality and operators _in, _contains, _before, _after."
|
|
189
|
+
},
|
|
190
|
+
"sort": {
|
|
191
|
+
"type": "string",
|
|
192
|
+
"pattern": "^-?[A-Za-z_][A-Za-z0-9_.]*$",
|
|
193
|
+
"description": "field (asc) or -field (desc) on a parsed key."
|
|
194
|
+
},
|
|
195
|
+
"limit": {
|
|
196
|
+
"type": "integer",
|
|
197
|
+
"minimum": 1,
|
|
198
|
+
"default": 50
|
|
199
|
+
},
|
|
200
|
+
"fields": {
|
|
201
|
+
"type": "array",
|
|
202
|
+
"items": { "type": "string" },
|
|
203
|
+
"description": "Project to a subset of parsed keys."
|
|
204
|
+
},
|
|
205
|
+
"workspace": {
|
|
206
|
+
"type": "string",
|
|
207
|
+
"minLength": 1,
|
|
208
|
+
"description": "Resolve the glob against a named workspace instead of the render filesystem. The host's workspace resolver supplies the filesystem (and enforces access); unconfigured cross-workspace refs surface as status:error rather than silently reading the wrong scope."
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"import": {
|
|
213
|
+
"type": "object",
|
|
214
|
+
"required": ["template"],
|
|
215
|
+
"additionalProperties": false,
|
|
216
|
+
"properties": {
|
|
217
|
+
"template": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"minLength": 1,
|
|
220
|
+
"description": "Path to a sibling *.canvakit.* file."
|
|
221
|
+
},
|
|
222
|
+
"variables": {
|
|
223
|
+
"type": "object",
|
|
224
|
+
"additionalProperties": true,
|
|
225
|
+
"default": {},
|
|
226
|
+
"description": "Values passed to the imported canvas. Imports do NOT inherit parent variables; pass explicitly."
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentproto.sh/schemas/aip-6/COMPANY.schema.json",
|
|
4
|
+
"title": "agentcompanies/v1 doctype frontmatter (AIP-6)",
|
|
5
|
+
"description": "Validates the YAML frontmatter portion of any agentcompanies/v1 doctype file. The `doctype` field discriminates between company / role / objective; each branch enforces the doctype-specific shape. Operator doctype is sketched here but the normative definition lives in AIP-8 — only company / role / objective are normative under AIP-6.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["schema", "doctype", "id"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": {
|
|
10
|
+
"const": "agentcompanies/v1",
|
|
11
|
+
"description": "Format identifier. MUST be the literal string `agentcompanies/v1`."
|
|
12
|
+
},
|
|
13
|
+
"doctype": {
|
|
14
|
+
"enum": ["company", "role", "objective"],
|
|
15
|
+
"description": "Discriminator. Selects the doctype-specific branch under `oneOf`."
|
|
16
|
+
},
|
|
17
|
+
"id": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"minLength": 2,
|
|
20
|
+
"maxLength": 64,
|
|
21
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
22
|
+
"description": "Slug identifier. Lowercase, digits, dashes. Stable across renames; references use this, never database IDs."
|
|
23
|
+
},
|
|
24
|
+
"version": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(?:[-+][a-zA-Z0-9.-]+)?$",
|
|
27
|
+
"description": "Spec version of THIS file. Bump on breaking change."
|
|
28
|
+
},
|
|
29
|
+
"name": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"minLength": 1,
|
|
32
|
+
"maxLength": 200,
|
|
33
|
+
"description": "Human-readable display name."
|
|
34
|
+
},
|
|
35
|
+
"description": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"maxLength": 2000,
|
|
38
|
+
"description": "One-paragraph purpose."
|
|
39
|
+
},
|
|
40
|
+
"tags": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
43
|
+
"default": []
|
|
44
|
+
},
|
|
45
|
+
"metadata": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"additionalProperties": true,
|
|
48
|
+
"default": {},
|
|
49
|
+
"description": "Vendor-specific extensions. Authors stash hints under namespaced keys `metadata.<vendor>.…`; other readers MUST tolerate unknown keys."
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"oneOf": [
|
|
53
|
+
{ "$ref": "#/$defs/company" },
|
|
54
|
+
{ "$ref": "#/$defs/role" },
|
|
55
|
+
{ "$ref": "#/$defs/objective" }
|
|
56
|
+
],
|
|
57
|
+
"$defs": {
|
|
58
|
+
"company": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": ["doctype", "name", "mission"],
|
|
61
|
+
"properties": {
|
|
62
|
+
"doctype": { "const": "company" },
|
|
63
|
+
"mission": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"minLength": 1,
|
|
66
|
+
"maxLength": 1000,
|
|
67
|
+
"description": "One-paragraph mission. Read by every operator at boot."
|
|
68
|
+
},
|
|
69
|
+
"values": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": { "type": "string", "maxLength": 200 },
|
|
72
|
+
"default": [],
|
|
73
|
+
"description": "Short value statements; surfaced in role prompts."
|
|
74
|
+
},
|
|
75
|
+
"structure": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"additionalProperties": false,
|
|
78
|
+
"properties": {
|
|
79
|
+
"positions": {
|
|
80
|
+
"type": "array",
|
|
81
|
+
"items": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$"
|
|
84
|
+
},
|
|
85
|
+
"default": [],
|
|
86
|
+
"description": "Slugs of the company's seats — each typically materialized as an operator under `operators/<slug>/OPERATOR.md`. A position is a seat one operator holds; several positions may share one AIP-47 catalog role. See AIP-47 §Role vs Position vs Access role."
|
|
87
|
+
},
|
|
88
|
+
"roles": {
|
|
89
|
+
"type": "array",
|
|
90
|
+
"items": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$"
|
|
93
|
+
},
|
|
94
|
+
"default": [],
|
|
95
|
+
"deprecated": true,
|
|
96
|
+
"description": "DEPRECATED alias of `positions`. Readers MUST accept both; when both are present, `positions` wins. Historically documented as role slugs but used in practice for seats."
|
|
97
|
+
},
|
|
98
|
+
"objectives": {
|
|
99
|
+
"type": "array",
|
|
100
|
+
"items": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$"
|
|
103
|
+
},
|
|
104
|
+
"default": [],
|
|
105
|
+
"description": "Slugs of top-level objectives defined under `objectives/<slug>/OBJECTIVE.md`."
|
|
106
|
+
},
|
|
107
|
+
"reports_to": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"additionalProperties": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$"
|
|
112
|
+
},
|
|
113
|
+
"default": {},
|
|
114
|
+
"description": "Map of position-slug → position-slug expressing the reporting tree. The key reports to the value. Positions not in the map are top-level."
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"imports": {
|
|
119
|
+
"type": "array",
|
|
120
|
+
"default": [],
|
|
121
|
+
"items": { "$ref": "#/$defs/import" },
|
|
122
|
+
"description": "External roles or objectives pulled from a registry. Resolved by the adapter at load time."
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"role": {
|
|
127
|
+
"type": "object",
|
|
128
|
+
"required": ["doctype", "name", "mandate"],
|
|
129
|
+
"properties": {
|
|
130
|
+
"doctype": { "const": "role" },
|
|
131
|
+
"mandate": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"minLength": 1,
|
|
134
|
+
"maxLength": 2000,
|
|
135
|
+
"description": "One-paragraph statement of what this role is responsible for. Defines the role's bounded autonomy."
|
|
136
|
+
},
|
|
137
|
+
"reports_to": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
140
|
+
"description": "Slug of the parent role. Omit for top-level roles."
|
|
141
|
+
},
|
|
142
|
+
"scope": {
|
|
143
|
+
"type": "object",
|
|
144
|
+
"additionalProperties": false,
|
|
145
|
+
"properties": {
|
|
146
|
+
"owns": {
|
|
147
|
+
"type": "array",
|
|
148
|
+
"items": { "type": "string", "maxLength": 200 },
|
|
149
|
+
"default": [],
|
|
150
|
+
"description": "Free-text list of resource classes this role owns (e.g. `outbound-email`, `q3-pipeline`)."
|
|
151
|
+
},
|
|
152
|
+
"capabilities": {
|
|
153
|
+
"type": "array",
|
|
154
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
155
|
+
"default": [],
|
|
156
|
+
"description": "Capability slugs the role grants — referenced by AIP-7 governance and AIP-8 operators."
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"objectives": {
|
|
161
|
+
"type": "array",
|
|
162
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" },
|
|
163
|
+
"default": [],
|
|
164
|
+
"description": "Slugs of objectives this role pursues. Each MUST resolve to an `objectives/<slug>/OBJECTIVE.md`."
|
|
165
|
+
},
|
|
166
|
+
"tools": {
|
|
167
|
+
"type": "array",
|
|
168
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" },
|
|
169
|
+
"default": [],
|
|
170
|
+
"description": "Slugs of AIP-14 tools the role may call. Adapter resolves against the host's tool catalog."
|
|
171
|
+
},
|
|
172
|
+
"workflows": {
|
|
173
|
+
"type": "array",
|
|
174
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" },
|
|
175
|
+
"default": [],
|
|
176
|
+
"description": "Slugs of AIP-15 workflows the role may execute."
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"objective": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"required": ["doctype", "name", "statement"],
|
|
183
|
+
"properties": {
|
|
184
|
+
"doctype": { "const": "objective" },
|
|
185
|
+
"statement": {
|
|
186
|
+
"type": "string",
|
|
187
|
+
"minLength": 1,
|
|
188
|
+
"maxLength": 2000,
|
|
189
|
+
"description": "One-paragraph statement of the desired outcome."
|
|
190
|
+
},
|
|
191
|
+
"owner": {
|
|
192
|
+
"type": "string",
|
|
193
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
194
|
+
"description": "Slug of the role accountable for this objective."
|
|
195
|
+
},
|
|
196
|
+
"horizon": {
|
|
197
|
+
"enum": ["sprint", "quarter", "year", "ongoing"],
|
|
198
|
+
"default": "quarter",
|
|
199
|
+
"description": "Time horizon. Adapter MAY use this to surface stale objectives."
|
|
200
|
+
},
|
|
201
|
+
"status": {
|
|
202
|
+
"enum": ["proposed", "active", "paused", "achieved", "abandoned"],
|
|
203
|
+
"default": "active"
|
|
204
|
+
},
|
|
205
|
+
"key_results": {
|
|
206
|
+
"type": "array",
|
|
207
|
+
"default": [],
|
|
208
|
+
"items": {
|
|
209
|
+
"type": "object",
|
|
210
|
+
"required": ["id", "statement"],
|
|
211
|
+
"additionalProperties": false,
|
|
212
|
+
"properties": {
|
|
213
|
+
"id": {
|
|
214
|
+
"type": "string",
|
|
215
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$"
|
|
216
|
+
},
|
|
217
|
+
"statement": { "type": "string", "maxLength": 500 },
|
|
218
|
+
"target": { "type": "string", "maxLength": 200 },
|
|
219
|
+
"progress": { "type": "number", "minimum": 0, "maximum": 1 }
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"parent": {
|
|
224
|
+
"type": "string",
|
|
225
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
226
|
+
"description": "Slug of the parent objective (for decomposition trees). Omit for top-level objectives."
|
|
227
|
+
},
|
|
228
|
+
"children": {
|
|
229
|
+
"type": "array",
|
|
230
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" },
|
|
231
|
+
"default": [],
|
|
232
|
+
"description": "Slugs of child sub-objectives. Adapter validates the parent/children edges agree."
|
|
233
|
+
},
|
|
234
|
+
"depends_on": {
|
|
235
|
+
"type": "array",
|
|
236
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*[a-z0-9]$" },
|
|
237
|
+
"default": [],
|
|
238
|
+
"description": "Slugs of objectives this one depends on."
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
"import": {
|
|
243
|
+
"type": "object",
|
|
244
|
+
"required": ["from", "as"],
|
|
245
|
+
"additionalProperties": false,
|
|
246
|
+
"properties": {
|
|
247
|
+
"from": {
|
|
248
|
+
"type": "string",
|
|
249
|
+
"description": "Source ref. Format: `<registry>/<package>@<version>` or a relative path."
|
|
250
|
+
},
|
|
251
|
+
"as": {
|
|
252
|
+
"enum": ["role", "objective"],
|
|
253
|
+
"description": "Imported doctype."
|
|
254
|
+
},
|
|
255
|
+
"id": {
|
|
256
|
+
"type": "string",
|
|
257
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
258
|
+
"description": "Local slug to bind the import under."
|
|
259
|
+
},
|
|
260
|
+
"alias": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
263
|
+
"description": "Override the import's local slug if it would collide."
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|