overlord-cli 0.2607122001.0 → 0.2607141512.0

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.
@@ -0,0 +1,328 @@
1
+ # Overlord Conformance Manifest Schema
2
+ # JSON Schema (YAML format) — every component that ships against Overlord
3
+ # must provide a conformance-manifest.yaml in its root that validates against this schema.
4
+ #
5
+ # Validate with: ovld contract check <manifest-file>
6
+ #
7
+ # Example manifests live in contract/examples/
8
+
9
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
10
+ "$id": "openoverllord/conformance-manifest/v1"
11
+ title: "Overlord Conformance Manifest"
12
+ description: >
13
+ Every connector, extension, database adapter, auth provider, REST module, desktop shell, or MCP server that ships
14
+ against Overlord must provide a conformance-manifest.yaml at its root.
15
+ The manifest declares which contract version the component was validated against,
16
+ what kind of component it is, and which extension points and vocabulary values it uses.
17
+
18
+ type: object
19
+ required:
20
+ - contractVersion
21
+ - componentType
22
+ - componentKey
23
+ - label
24
+
25
+ additionalProperties: false
26
+
27
+ properties:
28
+
29
+ contractVersion:
30
+ type: string
31
+ description: "The Overlord contract version this component was validated against (e.g. '0')"
32
+ examples:
33
+ - "0"
34
+
35
+ componentType:
36
+ type: string
37
+ enum:
38
+ - connector
39
+ - extension
40
+ - database-adapter
41
+ - auth-provider
42
+ - rest-module
43
+ - rest-consumer
44
+ - desktop-shell
45
+ - mcp-server
46
+ description: "The kind of component being shipped"
47
+
48
+ componentKey:
49
+ type: string
50
+ pattern: "^[a-z][a-z0-9_-]*$"
51
+ description: "Stable lowercase identifier for this component (e.g. claude, my-custom-harness)"
52
+
53
+ label:
54
+ type: string
55
+ description: "Human-readable display name"
56
+
57
+ description:
58
+ type: string
59
+ description: "Optional description of what this component does"
60
+
61
+ # ── Connector-specific fields ────────────────────────────────────────────────
62
+
63
+ connector:
64
+ type: object
65
+ description: "Required when componentType is 'connector'"
66
+ required:
67
+ - agentIdentifier
68
+ - capabilities
69
+ additionalProperties: false
70
+ properties:
71
+ agentIdentifier:
72
+ type: string
73
+ description: "The stable agent identifier used by this connector (e.g. claude, codex, cursor)"
74
+ capabilities:
75
+ type: array
76
+ description: "Capability flags this connector supports — must be from the approvedConnectorCapabilities list in contract/extension-points.yaml"
77
+ items:
78
+ type: string
79
+ enum:
80
+ - followUpHook
81
+ - permissionHook
82
+ - stopHook
83
+ - nativeResume
84
+ - modelFlag
85
+ - effortFlag
86
+ - contextFilePrompt
87
+ - permissionRules
88
+ - slashCommands
89
+ uniqueItems: true
90
+ hookTypes:
91
+ type: array
92
+ description: "Hook types this connector uses — must be from approvedHookTypes in contract/extension-points.yaml"
93
+ items:
94
+ type: string
95
+ enum:
96
+ - UserPromptSubmit
97
+ - PermissionRequest
98
+ - Stop
99
+ uniqueItems: true
100
+ managedFiles:
101
+ type: array
102
+ description: "Paths of files this connector installs and manages (relative to install location)"
103
+ items:
104
+ type: string
105
+ installPath:
106
+ type: string
107
+ description: "Default install location for connector files (e.g. ~/.codex/plugins/overlord)"
108
+
109
+ # ── Extension-specific fields ────────────────────────────────────────────────
110
+
111
+ extension:
112
+ type: object
113
+ description: "Required when componentType is 'extension'"
114
+ additionalProperties: false
115
+ properties:
116
+ tablePrefix:
117
+ type: string
118
+ pattern: "^ext_[a-z][a-z0-9_]*_$"
119
+ description: "Database table prefix — must follow ext_<name>_ pattern"
120
+ examples:
121
+ - "ext_myfeature_"
122
+ migrationComponent:
123
+ type: string
124
+ pattern: "^ext:[a-z][a-z0-9_-]*$"
125
+ description: "schema_migrations.component value — must follow ext:<name> pattern"
126
+ examples:
127
+ - "ext:myfeature"
128
+ metadataKeyPrefix:
129
+ type: string
130
+ description: "Namespace prefix for JSON metadata keys stored in core table columns (e.g. com.example or mypackage)"
131
+ usesExtensionPoints:
132
+ type: array
133
+ description: "Extension points from contract/extension-points.yaml that this extension uses"
134
+ items:
135
+ type: string
136
+ enum:
137
+ - database-extension
138
+ - custom-harness
139
+ - open-vocabulary-value
140
+ uniqueItems: true
141
+
142
+ # ── Database adapter-specific fields ─────────────────────────────────────────
143
+
144
+ databaseAdapter:
145
+ type: object
146
+ description: "Required when componentType is 'database-adapter'"
147
+ required:
148
+ - adapterKey
149
+ - schemaContractVersion
150
+ additionalProperties: false
151
+ properties:
152
+ adapterKey:
153
+ type: string
154
+ description: "Adapter identifier (e.g. sqlite, postgres)"
155
+ examples:
156
+ - sqlite
157
+ - postgres
158
+ schemaContractVersion:
159
+ type: string
160
+ description: "Database schema contract version this adapter implements (from 09-database-schema-contract.md)"
161
+ conformanceTestStatus:
162
+ type: string
163
+ enum:
164
+ - passing
165
+ - partial
166
+ - pending
167
+ description: "Current status of adapter conformance test suite"
168
+ conformanceTestPath:
169
+ type: string
170
+ description: "Path to adapter conformance test results or test suite"
171
+
172
+ # ── Auth provider-specific fields ────────────────────────────────────────────
173
+
174
+ authProvider:
175
+ type: object
176
+ description: "Required when componentType is 'auth-provider'"
177
+ additionalProperties: false
178
+ properties:
179
+ authMechanisms:
180
+ type: array
181
+ items:
182
+ type: string
183
+ description: "Auth mechanisms this provider supports (e.g. user-token, oauth, passkey)"
184
+ examples:
185
+ - - user-token
186
+ - - oauth
187
+ - - passkey
188
+ preservesAuditAttribution:
189
+ type: boolean
190
+ description: "Declares that this provider writes actor_workspace_user_id and actor_token_id to audit_log correctly"
191
+ preservesTokenHashRules:
192
+ type: boolean
193
+ description: "Declares that raw token secrets are never persisted — hash and prefix only"
194
+
195
+ # ── REST module-specific fields ───────────────────────────────────────────────
196
+
197
+ restModule:
198
+ type: object
199
+ description: "Required when componentType is 'rest-module'"
200
+ required:
201
+ - endpointPrefix
202
+ additionalProperties: false
203
+ properties:
204
+ endpointPrefix:
205
+ type: string
206
+ pattern: "^/ext/[a-z][a-z0-9/_-]*$"
207
+ description: "Namespaced URL prefix for all endpoints this module adds — must start with /ext/<name>/"
208
+ examples:
209
+ - "/ext/my-integration"
210
+ usesServiceLayer:
211
+ type: boolean
212
+ description: "Declares that this module uses the service layer for database access (no direct table writes)"
213
+
214
+ # ── REST consumer-specific fields ─────────────────────────────────────────────
215
+
216
+ restConsumer:
217
+ type: object
218
+ description: "Required when componentType is 'rest-consumer'"
219
+ required:
220
+ - authMechanisms
221
+ - vendoredContractPath
222
+ - endpoints
223
+ - exportedTypes
224
+ additionalProperties: false
225
+ properties:
226
+ authMechanisms:
227
+ type: array
228
+ description: "Auth mechanisms this client uses against the REST surface"
229
+ items:
230
+ type: string
231
+ enum:
232
+ - bearer-token
233
+ - active-workspace-header
234
+ - better-auth-email
235
+ uniqueItems: true
236
+ vendoredContractPath:
237
+ type: string
238
+ description: "Repo-relative path to the vendored @overlord/contract subset"
239
+ examples:
240
+ - src/lib/contract.ts
241
+ upstreamContractRef:
242
+ type: string
243
+ description: "Path to the canonical contract source inside the OpenOverlord repo"
244
+ examples:
245
+ - packages/contract/src/index.ts
246
+ endpoints:
247
+ type: array
248
+ description: "REST endpoints this client calls"
249
+ items:
250
+ type: object
251
+ required:
252
+ - method
253
+ - path
254
+ additionalProperties: false
255
+ properties:
256
+ method:
257
+ type: string
258
+ enum:
259
+ - GET
260
+ - POST
261
+ - PATCH
262
+ - PUT
263
+ - DELETE
264
+ path:
265
+ type: string
266
+ description: "Route template, e.g. /api/missions/:id"
267
+ responseType:
268
+ type: string
269
+ requestBodyType:
270
+ type: string
271
+ exportedTypes:
272
+ type: array
273
+ description: "DTO/type names vendored from @overlord/contract"
274
+ items:
275
+ type: string
276
+
277
+ # ── Desktop shell-specific fields ─────────────────────────────────────────────
278
+
279
+ desktopShell:
280
+ type: object
281
+ description: "Required when componentType is 'desktop-shell'"
282
+ additionalProperties: false
283
+ properties:
284
+ wrapsModule:
285
+ type: string
286
+ description: "The component whose web surface this shell wraps (e.g. webapp/rest)"
287
+ supervisedProcesses:
288
+ type: array
289
+ description: "CLI/server processes this shell launches and supervises"
290
+ items:
291
+ type: string
292
+ bridgeNamespace:
293
+ type: string
294
+ description: "The contextBridge global exposed to the renderer (e.g. window.overlord)"
295
+ packagingTargets:
296
+ type: array
297
+ description: "Distribution artifacts this shell can produce (e.g. dmg, zip, AppImage, deb)"
298
+ items:
299
+ type: string
300
+
301
+ # ── Shared: vocabulary extensions ────────────────────────────────────────────
302
+
303
+ vocabularyExtensions:
304
+ type: array
305
+ description: "Open vocabulary values this component adds — must be namespaced (reverse-DNS or package-style)"
306
+ items:
307
+ type: object
308
+ required:
309
+ - vocabulary
310
+ - value
311
+ additionalProperties: false
312
+ properties:
313
+ vocabulary:
314
+ type: string
315
+ description: "The open vocabulary column being extended (e.g. artifacts.type)"
316
+ examples:
317
+ - artifacts.type
318
+ - mission_events.source
319
+ - entity_changes.entity_type
320
+ value:
321
+ type: string
322
+ description: "The namespaced value being added (e.g. com.example.my-artifact-type)"
323
+ examples:
324
+ - "com.example.custom-artifact"
325
+ - "mypackage:review-event"
326
+ description:
327
+ type: string
328
+ description: "Optional human description of what this vocabulary value represents"