@fro.bot/systematic 2.13.1 → 2.13.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.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  findCommandsInDir,
7
7
  findSkillsInDir,
8
8
  getConfigPaths
9
- } from "./index-4qhjf4tb.js";
9
+ } from "./index-3xnyeknn.js";
10
10
 
11
11
  // src/cli.ts
12
12
  import fs from "fs";
@@ -15208,6 +15208,17 @@ function trustAny(schema) {
15208
15208
  function trustProtected(schema) {
15209
15209
  return schema.meta({ trust: "project-or-higher" });
15210
15210
  }
15211
+ function enforceVariantHasExplicitModel(overlay, ctx) {
15212
+ if (overlay.variant === undefined)
15213
+ return;
15214
+ if (typeof overlay.model === "string")
15215
+ return;
15216
+ ctx.addIssue({
15217
+ code: "custom",
15218
+ path: ["variant"],
15219
+ message: "variant requires a non-null model in the same overlay; remove variant or set model explicitly"
15220
+ });
15221
+ }
15211
15222
  var AgentOverlaySchema = exports_external.object({
15212
15223
  model: trustProtected(modelSchema).optional(),
15213
15224
  variant: trustProtected(variantSchema).optional(),
@@ -15220,7 +15231,7 @@ var AgentOverlaySchema = exports_external.object({
15220
15231
  disable: disableSchema.optional(),
15221
15232
  skills: trustProtected(skillsSchema).optional(),
15222
15233
  permission: trustProtected(permissionSchema).optional()
15223
- }).strict().meta({
15234
+ }).strict().superRefine(enforceVariantHasExplicitModel).meta({
15224
15235
  description: "Per-agent configuration overlay",
15225
15236
  examples: [
15226
15237
  {
@@ -15241,7 +15252,7 @@ var CategoryOverlaySchema = exports_external.object({
15241
15252
  hidden: hiddenSchema.optional(),
15242
15253
  skills: trustProtected(skillsSchema).optional(),
15243
15254
  permission: trustProtected(permissionSchema).optional()
15244
- }).strict().meta({
15255
+ }).strict().superRefine(enforceVariantHasExplicitModel).meta({
15245
15256
  description: "Per-category configuration overlay (same fields as agent minus disable)",
15246
15257
  examples: [{ model: "anthropic/claude-opus-4-7", temperature: 0.1 }]
15247
15258
  });
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  loadConfig,
14
14
  loadConfigWithSources,
15
15
  parseFrontmatter
16
- } from "./index-4qhjf4tb.js";
16
+ } from "./index-3xnyeknn.js";
17
17
 
18
18
  // src/index.ts
19
19
  import fs5 from "fs";
@@ -589,6 +589,7 @@ function readFallbackCache() {
589
589
  if (urlResult !== null) {
590
590
  return { status: "cache", models: urlResult };
591
591
  }
592
+ return emptyAvailability();
592
593
  }
593
594
  const defaultPath = path4.join(cacheDir, MODELS_JSON_FILENAME);
594
595
  const defaultResult = readModelsFromCache(defaultPath);
@@ -166,6 +166,23 @@
166
166
  "temperature": 0.1,
167
167
  "mode": "subagent"
168
168
  }
169
+ ],
170
+ "allOf": [
171
+ {
172
+ "if": {
173
+ "required": ["variant"]
174
+ },
175
+ "then": {
176
+ "required": ["model"],
177
+ "properties": {
178
+ "model": {
179
+ "type": "string",
180
+ "minLength": 1,
181
+ "pattern": "^[^\\s/]+\\/\\S+$"
182
+ }
183
+ }
184
+ }
185
+ }
169
186
  ]
170
187
  }
171
188
  },
@@ -319,6 +336,23 @@
319
336
  "model": "anthropic/claude-opus-4-7",
320
337
  "temperature": 0.1
321
338
  }
339
+ ],
340
+ "allOf": [
341
+ {
342
+ "if": {
343
+ "required": ["variant"]
344
+ },
345
+ "then": {
346
+ "required": ["model"],
347
+ "properties": {
348
+ "model": {
349
+ "type": "string",
350
+ "minLength": 1,
351
+ "pattern": "^[^\\s/]+\\/\\S+$"
352
+ }
353
+ }
354
+ }
355
+ }
322
356
  ]
323
357
  }
324
358
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fro.bot/systematic",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "description": "Structured engineering workflows for OpenCode",
5
5
  "type": "module",
6
6
  "homepage": "https://fro.bot/systematic",
@@ -63,9 +63,9 @@
63
63
  "@opencode-ai/plugin": "^1.1.30"
64
64
  },
65
65
  "devDependencies": {
66
- "@biomejs/biome": "2.4.14",
67
- "@opencode-ai/plugin": "1.14.41",
68
- "@opencode-ai/sdk": "1.14.41",
66
+ "@biomejs/biome": "2.4.15",
67
+ "@opencode-ai/plugin": "1.14.46",
68
+ "@opencode-ai/sdk": "1.14.46",
69
69
  "@types/bun": "latest",
70
70
  "@types/js-yaml": "4.0.9",
71
71
  "@types/node": "24.12.3",