@fro.bot/systematic 2.11.0 → 2.12.1
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.js +1 -1
- package/dist/index-b4ht76qd.js +16104 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +47 -190
- package/dist/lib/agent-colors.d.ts +16 -0
- package/dist/lib/config-schema.d.ts +181 -0
- package/dist/schemas/systematic-config.schema.json +392 -0
- package/package.json +9 -4
- package/dist/index-mfy9dbdx.js +0 -1620
- package/dist/lib/plugin-singleton.d.ts +0 -60
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"$schema": {
|
|
6
|
+
"description": "JSON Schema URL for IDE autocomplete. The value is informational only — the loader does not fetch or validate against it. Add this to enable IDE schema activation and field-level autocomplete in editors that support JSON Schema (VSCode, Zed, IntelliJ).",
|
|
7
|
+
"examples": [
|
|
8
|
+
"https://fro.bot/systematic/schemas/v2/systematic-config.schema.json"
|
|
9
|
+
],
|
|
10
|
+
"type": "string",
|
|
11
|
+
"format": "uri"
|
|
12
|
+
},
|
|
13
|
+
"agents": {
|
|
14
|
+
"default": {},
|
|
15
|
+
"description": "Per-agent configuration overlays keyed by agent name",
|
|
16
|
+
"examples": [
|
|
17
|
+
{
|
|
18
|
+
"correctness-reviewer": {
|
|
19
|
+
"temperature": 0.1
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{}
|
|
23
|
+
],
|
|
24
|
+
"type": "object",
|
|
25
|
+
"propertyNames": {
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
"additionalProperties": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"properties": {
|
|
31
|
+
"model": {
|
|
32
|
+
"anyOf": [
|
|
33
|
+
{
|
|
34
|
+
"type": "string",
|
|
35
|
+
"minLength": 1,
|
|
36
|
+
"pattern": "^[^\\s/]+\\/\\S+$"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "null"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"description": "Model identifier in provider/model format, or null to inherit parent model",
|
|
43
|
+
"examples": ["anthropic/claude-sonnet-4", null],
|
|
44
|
+
"trust": "project-or-higher"
|
|
45
|
+
},
|
|
46
|
+
"variant": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"minLength": 1,
|
|
49
|
+
"pattern": "^\\S+$",
|
|
50
|
+
"description": "Model variant identifier",
|
|
51
|
+
"examples": ["v2", "extended"],
|
|
52
|
+
"trust": "project-or-higher"
|
|
53
|
+
},
|
|
54
|
+
"temperature": {
|
|
55
|
+
"type": "number",
|
|
56
|
+
"minimum": 0,
|
|
57
|
+
"description": "Sampling temperature (≥0; 0 = deterministic)",
|
|
58
|
+
"examples": [0.1, 0.7, 0],
|
|
59
|
+
"trust": "any"
|
|
60
|
+
},
|
|
61
|
+
"top_p": {
|
|
62
|
+
"type": "number",
|
|
63
|
+
"minimum": 0,
|
|
64
|
+
"maximum": 1,
|
|
65
|
+
"description": "Nucleus sampling parameter (0 to 1)",
|
|
66
|
+
"examples": [0.9, 0.1, 1],
|
|
67
|
+
"trust": "any"
|
|
68
|
+
},
|
|
69
|
+
"mode": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"enum": ["subagent", "primary", "all"],
|
|
72
|
+
"description": "Agent execution mode",
|
|
73
|
+
"examples": ["subagent", "primary", "all"]
|
|
74
|
+
},
|
|
75
|
+
"color": {
|
|
76
|
+
"anyOf": [
|
|
77
|
+
{
|
|
78
|
+
"type": "string",
|
|
79
|
+
"enum": [
|
|
80
|
+
"primary",
|
|
81
|
+
"secondary",
|
|
82
|
+
"accent",
|
|
83
|
+
"success",
|
|
84
|
+
"warning",
|
|
85
|
+
"error",
|
|
86
|
+
"info"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"type": "string",
|
|
91
|
+
"pattern": "^#[0-9a-fA-F]{6}$"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"description": "Agent color — named token from OpenCode or 6-digit hex color (#RRGGBB)",
|
|
95
|
+
"examples": ["primary", "#ff6600"]
|
|
96
|
+
},
|
|
97
|
+
"steps": {
|
|
98
|
+
"type": "integer",
|
|
99
|
+
"exclusiveMinimum": 0,
|
|
100
|
+
"maximum": 9007199254740991,
|
|
101
|
+
"description": "Maximum execution steps (positive integer)",
|
|
102
|
+
"examples": [10, 50]
|
|
103
|
+
},
|
|
104
|
+
"hidden": {
|
|
105
|
+
"type": "boolean",
|
|
106
|
+
"description": "Hide agent from UI",
|
|
107
|
+
"examples": [true, false]
|
|
108
|
+
},
|
|
109
|
+
"disable": {
|
|
110
|
+
"type": "boolean",
|
|
111
|
+
"description": "Disable this agent overlay",
|
|
112
|
+
"examples": [true, false]
|
|
113
|
+
},
|
|
114
|
+
"skills": {
|
|
115
|
+
"type": "array",
|
|
116
|
+
"items": {
|
|
117
|
+
"type": "string",
|
|
118
|
+
"minLength": 1
|
|
119
|
+
},
|
|
120
|
+
"description": "Skills enabled for this agent",
|
|
121
|
+
"examples": [["ce:plan", "ce:review"]],
|
|
122
|
+
"trust": "project-or-higher"
|
|
123
|
+
},
|
|
124
|
+
"permission": {
|
|
125
|
+
"type": "object",
|
|
126
|
+
"propertyNames": {
|
|
127
|
+
"type": "string"
|
|
128
|
+
},
|
|
129
|
+
"additionalProperties": {
|
|
130
|
+
"anyOf": [
|
|
131
|
+
{
|
|
132
|
+
"type": "string",
|
|
133
|
+
"enum": ["ask", "allow", "deny"]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"type": "object",
|
|
137
|
+
"propertyNames": {
|
|
138
|
+
"type": "string"
|
|
139
|
+
},
|
|
140
|
+
"additionalProperties": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"enum": ["ask", "allow", "deny"]
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"description": "Permission overrides per tool",
|
|
148
|
+
"examples": [
|
|
149
|
+
{
|
|
150
|
+
"edit": "allow",
|
|
151
|
+
"bash": {
|
|
152
|
+
"curl": "allow",
|
|
153
|
+
"rm": "deny"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"trust": "project-or-higher"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"additionalProperties": false,
|
|
161
|
+
"description": "Per-agent configuration overlay",
|
|
162
|
+
"examples": [
|
|
163
|
+
{
|
|
164
|
+
"model": "anthropic/claude-opus-4.7",
|
|
165
|
+
"temperature": 0.1,
|
|
166
|
+
"mode": "subagent"
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"categories": {
|
|
172
|
+
"default": {},
|
|
173
|
+
"description": "Per-category configuration overlays keyed by category name",
|
|
174
|
+
"examples": [
|
|
175
|
+
{
|
|
176
|
+
"review": {
|
|
177
|
+
"model": "anthropic/claude-opus-4.7"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{}
|
|
181
|
+
],
|
|
182
|
+
"type": "object",
|
|
183
|
+
"propertyNames": {
|
|
184
|
+
"type": "string"
|
|
185
|
+
},
|
|
186
|
+
"additionalProperties": {
|
|
187
|
+
"type": "object",
|
|
188
|
+
"properties": {
|
|
189
|
+
"model": {
|
|
190
|
+
"anyOf": [
|
|
191
|
+
{
|
|
192
|
+
"type": "string",
|
|
193
|
+
"minLength": 1,
|
|
194
|
+
"pattern": "^[^\\s/]+\\/\\S+$"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"type": "null"
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"description": "Model identifier in provider/model format, or null to inherit parent model",
|
|
201
|
+
"examples": ["anthropic/claude-sonnet-4", null],
|
|
202
|
+
"trust": "project-or-higher"
|
|
203
|
+
},
|
|
204
|
+
"variant": {
|
|
205
|
+
"type": "string",
|
|
206
|
+
"minLength": 1,
|
|
207
|
+
"pattern": "^\\S+$",
|
|
208
|
+
"description": "Model variant identifier",
|
|
209
|
+
"examples": ["v2", "extended"],
|
|
210
|
+
"trust": "project-or-higher"
|
|
211
|
+
},
|
|
212
|
+
"temperature": {
|
|
213
|
+
"type": "number",
|
|
214
|
+
"minimum": 0,
|
|
215
|
+
"description": "Sampling temperature (≥0; 0 = deterministic)",
|
|
216
|
+
"examples": [0.1, 0.7, 0],
|
|
217
|
+
"trust": "any"
|
|
218
|
+
},
|
|
219
|
+
"top_p": {
|
|
220
|
+
"type": "number",
|
|
221
|
+
"minimum": 0,
|
|
222
|
+
"maximum": 1,
|
|
223
|
+
"description": "Nucleus sampling parameter (0 to 1)",
|
|
224
|
+
"examples": [0.9, 0.1, 1],
|
|
225
|
+
"trust": "any"
|
|
226
|
+
},
|
|
227
|
+
"mode": {
|
|
228
|
+
"type": "string",
|
|
229
|
+
"enum": ["subagent", "primary", "all"],
|
|
230
|
+
"description": "Agent execution mode",
|
|
231
|
+
"examples": ["subagent", "primary", "all"]
|
|
232
|
+
},
|
|
233
|
+
"color": {
|
|
234
|
+
"anyOf": [
|
|
235
|
+
{
|
|
236
|
+
"type": "string",
|
|
237
|
+
"enum": [
|
|
238
|
+
"primary",
|
|
239
|
+
"secondary",
|
|
240
|
+
"accent",
|
|
241
|
+
"success",
|
|
242
|
+
"warning",
|
|
243
|
+
"error",
|
|
244
|
+
"info"
|
|
245
|
+
]
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"type": "string",
|
|
249
|
+
"pattern": "^#[0-9a-fA-F]{6}$"
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
"description": "Agent color — named token from OpenCode or 6-digit hex color (#RRGGBB)",
|
|
253
|
+
"examples": ["primary", "#ff6600"]
|
|
254
|
+
},
|
|
255
|
+
"steps": {
|
|
256
|
+
"type": "integer",
|
|
257
|
+
"exclusiveMinimum": 0,
|
|
258
|
+
"maximum": 9007199254740991,
|
|
259
|
+
"description": "Maximum execution steps (positive integer)",
|
|
260
|
+
"examples": [10, 50]
|
|
261
|
+
},
|
|
262
|
+
"hidden": {
|
|
263
|
+
"type": "boolean",
|
|
264
|
+
"description": "Hide agent from UI",
|
|
265
|
+
"examples": [true, false]
|
|
266
|
+
},
|
|
267
|
+
"skills": {
|
|
268
|
+
"type": "array",
|
|
269
|
+
"items": {
|
|
270
|
+
"type": "string",
|
|
271
|
+
"minLength": 1
|
|
272
|
+
},
|
|
273
|
+
"description": "Skills enabled for this agent",
|
|
274
|
+
"examples": [["ce:plan", "ce:review"]],
|
|
275
|
+
"trust": "project-or-higher"
|
|
276
|
+
},
|
|
277
|
+
"permission": {
|
|
278
|
+
"type": "object",
|
|
279
|
+
"propertyNames": {
|
|
280
|
+
"type": "string"
|
|
281
|
+
},
|
|
282
|
+
"additionalProperties": {
|
|
283
|
+
"anyOf": [
|
|
284
|
+
{
|
|
285
|
+
"type": "string",
|
|
286
|
+
"enum": ["ask", "allow", "deny"]
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"type": "object",
|
|
290
|
+
"propertyNames": {
|
|
291
|
+
"type": "string"
|
|
292
|
+
},
|
|
293
|
+
"additionalProperties": {
|
|
294
|
+
"type": "string",
|
|
295
|
+
"enum": ["ask", "allow", "deny"]
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
"description": "Permission overrides per tool",
|
|
301
|
+
"examples": [
|
|
302
|
+
{
|
|
303
|
+
"edit": "allow",
|
|
304
|
+
"bash": {
|
|
305
|
+
"curl": "allow",
|
|
306
|
+
"rm": "deny"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
],
|
|
310
|
+
"trust": "project-or-higher"
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"additionalProperties": false,
|
|
314
|
+
"description": "Per-category configuration overlay (same fields as agent minus disable)",
|
|
315
|
+
"examples": [
|
|
316
|
+
{
|
|
317
|
+
"model": "anthropic/claude-opus-4.7",
|
|
318
|
+
"temperature": 0.1
|
|
319
|
+
}
|
|
320
|
+
]
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"disabled_skills": {
|
|
324
|
+
"default": [],
|
|
325
|
+
"description": "Array of skill names to disable globally",
|
|
326
|
+
"examples": [["ce:plan", "ce:review"]],
|
|
327
|
+
"type": "array",
|
|
328
|
+
"items": {
|
|
329
|
+
"type": "string"
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"disabled_agents": {
|
|
333
|
+
"default": [],
|
|
334
|
+
"description": "Array of agent names to disable globally",
|
|
335
|
+
"examples": [["previous-comments-reviewer", "cli-readiness-reviewer"]],
|
|
336
|
+
"type": "array",
|
|
337
|
+
"items": {
|
|
338
|
+
"type": "string"
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
"disabled_commands": {
|
|
342
|
+
"default": [],
|
|
343
|
+
"description": "Array of command names to disable globally",
|
|
344
|
+
"examples": [["deprecated-migration-helper"]],
|
|
345
|
+
"type": "array",
|
|
346
|
+
"items": {
|
|
347
|
+
"type": "string"
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
"bootstrap": {
|
|
351
|
+
"default": {
|
|
352
|
+
"enabled": true
|
|
353
|
+
},
|
|
354
|
+
"description": "Bootstrap prompt configuration",
|
|
355
|
+
"examples": [
|
|
356
|
+
{
|
|
357
|
+
"enabled": true
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"enabled": false,
|
|
361
|
+
"file": ".opencode/custom-prompt.md"
|
|
362
|
+
}
|
|
363
|
+
],
|
|
364
|
+
"type": "object",
|
|
365
|
+
"properties": {
|
|
366
|
+
"enabled": {
|
|
367
|
+
"default": true,
|
|
368
|
+
"description": "Enable bootstrap prompt injection into every conversation",
|
|
369
|
+
"examples": [true, false],
|
|
370
|
+
"type": "boolean"
|
|
371
|
+
},
|
|
372
|
+
"file": {
|
|
373
|
+
"description": "Path to a custom bootstrap prompt file",
|
|
374
|
+
"examples": ["~/.config/opencode/bootstrap.md"],
|
|
375
|
+
"type": "string"
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
"additionalProperties": false
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
"additionalProperties": false,
|
|
382
|
+
"description": "Systematic user configuration file (systematic.json / systematic.jsonc)",
|
|
383
|
+
"examples": [
|
|
384
|
+
{
|
|
385
|
+
"disabled_skills": ["ce:plan"],
|
|
386
|
+
"bootstrap": {
|
|
387
|
+
"enabled": false
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
],
|
|
391
|
+
"$id": "https://fro.bot/systematic/schemas/v2/systematic-config.schema.json"
|
|
392
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fro.bot/systematic",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.1",
|
|
4
4
|
"description": "Structured engineering workflows for OpenCode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://fro.bot/systematic",
|
|
@@ -35,11 +35,13 @@
|
|
|
35
35
|
"docs:dev": "bun run --cwd docs dev",
|
|
36
36
|
"docs:build": "bun run docs:generate && bun run --cwd docs build",
|
|
37
37
|
"docs:preview": "bun run --cwd docs preview",
|
|
38
|
-
"docs:generate": "bun docs/scripts/transform-content.ts",
|
|
38
|
+
"docs:generate": "bun docs/scripts/transform-content.ts && bun scripts/generate-config-schema.ts && bun docs/scripts/generate-config-reference.ts",
|
|
39
|
+
"schema:generate": "bun scripts/generate-config-schema.ts",
|
|
40
|
+
"schema:drift": "bun scripts/generate-config-schema.ts --check",
|
|
39
41
|
"registry:build": "bun scripts/build-registry.ts",
|
|
40
42
|
"registry:drift": "bun scripts/generate-registry.ts --check",
|
|
41
43
|
"registry:validate": "bun scripts/build-registry.ts --validate-only",
|
|
42
|
-
"prepublishOnly": "bun run build"
|
|
44
|
+
"prepublishOnly": "bun run build && bun run schema:generate"
|
|
43
45
|
},
|
|
44
46
|
"keywords": [
|
|
45
47
|
"opencode",
|
|
@@ -67,6 +69,8 @@
|
|
|
67
69
|
"@types/bun": "latest",
|
|
68
70
|
"@types/js-yaml": "4.0.9",
|
|
69
71
|
"@types/node": "24.12.3",
|
|
72
|
+
"ajv": "^8.20.0",
|
|
73
|
+
"ajv-formats": "^3.0.1",
|
|
70
74
|
"conventional-changelog-conventionalcommits": "9.3.1",
|
|
71
75
|
"markdownlint-cli": "0.48.0",
|
|
72
76
|
"rimraf": "6.1.3",
|
|
@@ -76,7 +80,8 @@
|
|
|
76
80
|
},
|
|
77
81
|
"dependencies": {
|
|
78
82
|
"js-yaml": "^4.1.1",
|
|
79
|
-
"jsonc-parser": "^3.3.0"
|
|
83
|
+
"jsonc-parser": "^3.3.0",
|
|
84
|
+
"zod": "4.4.3"
|
|
80
85
|
},
|
|
81
86
|
"publishConfig": {
|
|
82
87
|
"access": "public",
|