@fro.bot/systematic 3.18.1 → 3.18.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
@@ -33,7 +33,7 @@ import {
33
33
  findCommandsInDir,
34
34
  findSkillsInDir,
35
35
  discoverSkills
36
- } from "./index-v8y6h7y4.js";
36
+ } from "./index-be0zwq50.js";
37
37
  var __defProp = Object.defineProperty;
38
38
  var __returnValue = (v) => v;
39
39
  function __exportSetter(name, newValue) {
@@ -831,7 +831,7 @@ function buildCapabilitySnapshot(options) {
831
831
  options.outputSink?.(serialized);
832
832
  return snapshot;
833
833
  }
834
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/iso.js
834
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/iso.js
835
835
  var exports_iso = {};
836
836
  __export(exports_iso, {
837
837
  ZodISODate: () => ZodISODate,
@@ -1786,7 +1786,7 @@ var BUNDLED_SKILL_NAMES = [
1786
1786
  "writing-skills"
1787
1787
  ];
1788
1788
 
1789
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/util.js
1789
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/util.js
1790
1790
  function getEnumValues(entries) {
1791
1791
  const numericValues = Object.values(entries).filter((v) => typeof v === "number");
1792
1792
  const values = Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);
@@ -2332,7 +2332,7 @@ function constantCatch(value) {
2332
2332
  return fn;
2333
2333
  }
2334
2334
 
2335
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/core.js
2335
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/core.js
2336
2336
  var _a;
2337
2337
  var _zodDesc = { value: undefined, enumerable: false };
2338
2338
  var _E = "captureStackTrace" in Error ? Error : null;
@@ -2451,7 +2451,7 @@ function config(newConfig) {
2451
2451
  Object.assign(globalConfig, newConfig);
2452
2452
  return globalConfig;
2453
2453
  }
2454
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/errors.js
2454
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/errors.js
2455
2455
  function _getMessage() {
2456
2456
  const internals = this._zod;
2457
2457
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -2566,7 +2566,7 @@ function formatError(error, mapper = (issue) => issue.message) {
2566
2566
  return fieldErrors;
2567
2567
  }
2568
2568
 
2569
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/parse.js
2569
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/parse.js
2570
2570
  function finalizeParams(callee, params) {
2571
2571
  return { callee: params?.callee ?? callee, Err: params?.Err };
2572
2572
  }
@@ -2713,7 +2713,7 @@ var _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {
2713
2713
  var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
2714
2714
  return _safeParseAsync(_Err)(schema, value, _ctx);
2715
2715
  };
2716
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/regexes.js
2716
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/regexes.js
2717
2717
  var cuid = /^[cC][0-9a-z]{6,}$/;
2718
2718
  var cuid2 = /^[0-9a-z]+$/;
2719
2719
  var ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/;
@@ -2771,7 +2771,7 @@ var boolean2 = /^(?:true|false)$/i;
2771
2771
  var lowercase = /^[^A-Z]*$/;
2772
2772
  var uppercase = /^[^a-z]*$/;
2773
2773
 
2774
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/checks.js
2774
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/checks.js
2775
2775
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
2776
2776
  var _a;
2777
2777
  inst._zod ?? (inst._zod = {});
@@ -3087,7 +3087,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3087
3087
  };
3088
3088
  });
3089
3089
 
3090
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/doc.js
3090
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/doc.js
3091
3091
  class Doc {
3092
3092
  constructor(args = [], closed = {}) {
3093
3093
  this.content = [];
@@ -3129,14 +3129,14 @@ ${content.join(`
3129
3129
  }
3130
3130
  }
3131
3131
 
3132
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/versions.js
3132
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/versions.js
3133
3133
  var version = {
3134
3134
  major: 4,
3135
3135
  minor: 6,
3136
- patch: 0
3136
+ patch: 2
3137
3137
  };
3138
3138
 
3139
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/schemas.js
3139
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/schemas.js
3140
3140
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3141
3141
  var _a;
3142
3142
  inst ?? (inst = {});
@@ -3733,7 +3733,7 @@ function handlePropertyResult(result, final, key, input, optin, optout) {
3733
3733
  return;
3734
3734
  }
3735
3735
  if (result.value === undefined) {
3736
- if (isPresent) {
3736
+ if (isPresent || optin === "defaulted" && !isOptionalOut) {
3737
3737
  final.value[key] = undefined;
3738
3738
  }
3739
3739
  } else {
@@ -3967,16 +3967,16 @@ var $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def) =>
3967
3967
  doc.write(`
3968
3968
  if (${id}.issues.length) {${prefixStr(id, k)}
3969
3969
  }
3970
-
3971
- if (${id}.value === undefined) {
3972
- if (${isPresent}) {
3973
- newResult[${k}] = undefined;
3974
- }
3970
+ `);
3971
+ if (optin === "defaulted") {
3972
+ doc.write(`newResult[${k}] = ${id}.value;`);
3975
3973
  } else {
3974
+ doc.write(`
3975
+ if (${id}.value !== undefined || ${isPresent}) {
3976
3976
  newResult[${k}] = ${id}.value;
3977
3977
  }
3978
-
3979
3978
  `);
3979
+ }
3980
3980
  }
3981
3981
  }
3982
3982
  doc.write(`payload.value = newResult;`);
@@ -4078,16 +4078,37 @@ var $ZodUnion = /* @__PURE__ */ $constructor("$ZodUnion", (inst, def) => {
4078
4078
  });
4079
4079
  };
4080
4080
  });
4081
+ function discriminatorMap(def) {
4082
+ const map = new Map;
4083
+ for (const option of def.options) {
4084
+ const values = option._zod.propValues?.[def.discriminator];
4085
+ if (!values || values.size === 0)
4086
+ throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`);
4087
+ for (const value of values) {
4088
+ if (map.has(value)) {
4089
+ if (value !== undefined)
4090
+ throw new Error(`Duplicate discriminator value "${String(value)}"`);
4091
+ map.set(value, null);
4092
+ } else {
4093
+ map.set(value, option);
4094
+ }
4095
+ }
4096
+ }
4097
+ return map;
4098
+ }
4081
4099
  var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnion", (inst, def) => {
4082
4100
  def.inclusive = false;
4083
4101
  $ZodUnion.init(inst, def);
4084
4102
  const _super = inst._zod.parse;
4085
4103
  defineLazyInternal(inst, "propValues", (zod) => {
4086
4104
  const propValues = {};
4105
+ let undefinedCount = 0;
4087
4106
  for (const option of zod.def.options) {
4088
4107
  const pv = option._zod.propValues;
4089
4108
  if (!pv || Object.keys(pv).length === 0)
4090
4109
  throw new Error(`Invalid discriminated union option at index "${zod.def.options.indexOf(option)}"`);
4110
+ if (pv[zod.def.discriminator]?.has(undefined))
4111
+ undefinedCount++;
4091
4112
  for (const [k, v] of Object.entries(pv)) {
4092
4113
  if (!Object.prototype.hasOwnProperty.call(propValues, k)) {
4093
4114
  assignProp(propValues, k, new Set);
@@ -4097,6 +4118,8 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnio
4097
4118
  }
4098
4119
  }
4099
4120
  }
4121
+ if (!zod.def.unionFallback && undefinedCount > 1)
4122
+ propValues[zod.def.discriminator]?.delete(undefined);
4100
4123
  return propValues;
4101
4124
  });
4102
4125
  def.options.forEach((option, i) => {
@@ -4105,22 +4128,7 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnio
4105
4128
  throw new Error(`Invalid discriminated union option at index "${i}"`);
4106
4129
  }
4107
4130
  });
4108
- const disc = cached(() => {
4109
- const opts = def.options;
4110
- const map = new Map;
4111
- for (const o of opts) {
4112
- const values = o._zod.propValues?.[def.discriminator];
4113
- if (!values || values.size === 0)
4114
- throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`);
4115
- for (const v of values) {
4116
- if (map.has(v)) {
4117
- throw new Error(`Duplicate discriminator value "${String(v)}"`);
4118
- }
4119
- map.set(v, o);
4120
- }
4121
- }
4122
- return map;
4123
- });
4131
+ const disc = cached(() => discriminatorMap(def));
4124
4132
  inst._zod.parse = (payload, ctx) => {
4125
4133
  const input = payload.value;
4126
4134
  if (!isObject(input)) {
@@ -4132,8 +4140,9 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnio
4132
4140
  });
4133
4141
  return payload;
4134
4142
  }
4135
- const opt = disc.value.get(input?.[def.discriminator]);
4136
- if (opt) {
4143
+ const value = input?.[def.discriminator];
4144
+ const opt = disc.value.get(value);
4145
+ if (opt && (value !== undefined || ctx.direction !== "backward")) {
4137
4146
  return opt._zod.run(payload, ctx);
4138
4147
  }
4139
4148
  if (def.unionFallback || ctx.direction === "backward") {
@@ -4144,7 +4153,7 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUnio
4144
4153
  errors: [],
4145
4154
  note: "No matching discriminator",
4146
4155
  discriminator: def.discriminator,
4147
- options: Array.from(disc.value.keys()),
4156
+ options: Array.from(disc.value.keys()).filter((value) => disc.value.get(value) !== null),
4148
4157
  input,
4149
4158
  path: [def.discriminator],
4150
4159
  inst
@@ -4774,7 +4783,7 @@ var $ZodProperties = /* @__PURE__ */ $constructor("$ZodProperties", (inst, def)
4774
4783
  yield this;
4775
4784
  }
4776
4785
  });
4777
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/memoizer.js
4786
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/memoizer.js
4778
4787
  class $ZodCyclicError extends Error {
4779
4788
  constructor() {
4780
4789
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -5046,7 +5055,7 @@ function isBackEdge(ctx, value) {
5046
5055
  const backEdges = ctx[STATE]?.backEdges;
5047
5056
  return backEdges !== undefined && isRef(value) && backEdges.has(value);
5048
5057
  }
5049
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/locales/en.js
5058
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/locales/en.js
5050
5059
  var error = () => {
5051
5060
  const Sizable = {
5052
5061
  string: { unit: "characters", verb: "to have" },
@@ -5167,7 +5176,7 @@ function en_default() {
5167
5176
  localeError: error()
5168
5177
  };
5169
5178
  }
5170
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/registries.js
5179
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/registries.js
5171
5180
  var _a2;
5172
5181
  class $ZodRegistry {
5173
5182
  constructor() {
@@ -5214,7 +5223,7 @@ function registry() {
5214
5223
  }
5215
5224
  (_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry());
5216
5225
  var globalRegistry = globalThis.__zod_globalRegistry;
5217
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/api.js
5226
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/api.js
5218
5227
  function _string(Class, params) {
5219
5228
  return new Class({
5220
5229
  type: "string",
@@ -5664,7 +5673,7 @@ function _check(fn, params) {
5664
5673
  ch._zod.check = fn;
5665
5674
  return ch;
5666
5675
  }
5667
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/to-json-schema.js
5676
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/to-json-schema.js
5668
5677
  function assignProps(target, ...sources) {
5669
5678
  for (const source of sources) {
5670
5679
  for (const key of Reflect.ownKeys(source)) {
@@ -6187,7 +6196,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
6187
6196
  extractDefs(ctx, schema);
6188
6197
  return finalize(ctx, schema);
6189
6198
  };
6190
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/json-schema-processors.js
6199
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/json-schema-processors.js
6191
6200
  var narrowMin = (agg, key, value) => {
6192
6201
  if (agg[key] === undefined || value > agg[key])
6193
6202
  agg[key] = value;
@@ -6714,7 +6723,7 @@ var optionalProcessor = (schema, ctx, _json, params) => {
6714
6723
  const seen = ctx.seen.get(schema);
6715
6724
  seen.ref = def.innerType;
6716
6725
  };
6717
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/errors.js
6726
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/errors.js
6718
6727
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
6719
6728
  function _lazyMethod(proto, key, make) {
6720
6729
  Object.defineProperty(proto, key, {
@@ -6759,7 +6768,7 @@ var ZodRealError = /* @__PURE__ */ $constructor("ZodError", initializer2, undefi
6759
6768
  Parent: Error
6760
6769
  });
6761
6770
 
6762
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/parse.js
6771
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/parse.js
6763
6772
  var parse4 = /* @__PURE__ */ _parse(ZodRealError);
6764
6773
  var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);
6765
6774
  var safeParse = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -6773,7 +6782,7 @@ var safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);
6773
6782
  var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
6774
6783
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
6775
6784
 
6776
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/schemas.js
6785
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/schemas.js
6777
6786
  function _ensureDefaultLocale() {
6778
6787
  if (!globalConfig.localeError)
6779
6788
  config(en_default());
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ import {
19
19
  extractCommandFrontmatter,
20
20
  findSkillsInDir,
21
21
  discoverSkills
22
- } from "./index-v8y6h7y4.js";
22
+ } from "./index-be0zwq50.js";
23
23
 
24
24
  // src/index.ts
25
25
  import { createHash as createHash4 } from "crypto";
package/dist/pi.js CHANGED
@@ -3549,7 +3549,7 @@ var BUNDLED_SKILL_NAMES = [
3549
3549
  "writing-skills"
3550
3550
  ];
3551
3551
 
3552
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/util.js
3552
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/util.js
3553
3553
  function getEnumValues(entries) {
3554
3554
  const numericValues = Object.values(entries).filter((v) => typeof v === "number");
3555
3555
  const values = Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);
@@ -4095,7 +4095,7 @@ function constantCatch(value) {
4095
4095
  return fn;
4096
4096
  }
4097
4097
 
4098
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/core.js
4098
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/core.js
4099
4099
  var _a;
4100
4100
  var _zodDesc = { value: undefined, enumerable: false };
4101
4101
  var _E = "captureStackTrace" in Error ? Error : null;
@@ -4214,7 +4214,7 @@ function config(newConfig) {
4214
4214
  Object.assign(globalConfig, newConfig);
4215
4215
  return globalConfig;
4216
4216
  }
4217
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/errors.js
4217
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/errors.js
4218
4218
  function _getMessage() {
4219
4219
  const internals = this._zod;
4220
4220
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -4329,7 +4329,7 @@ function formatError(error, mapper = (issue) => issue.message) {
4329
4329
  return fieldErrors;
4330
4330
  }
4331
4331
 
4332
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/parse.js
4332
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/parse.js
4333
4333
  function finalizeParams(callee, params) {
4334
4334
  return { callee: params?.callee ?? callee, Err: params?.Err };
4335
4335
  }
@@ -4476,7 +4476,7 @@ var _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {
4476
4476
  var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
4477
4477
  return _safeParseAsync(_Err)(schema, value, _ctx);
4478
4478
  };
4479
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/regexes.js
4479
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/regexes.js
4480
4480
  var cuid = /^[cC][0-9a-z]{6,}$/;
4481
4481
  var cuid2 = /^[0-9a-z]+$/;
4482
4482
  var ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/;
@@ -4534,7 +4534,7 @@ var boolean = /^(?:true|false)$/i;
4534
4534
  var lowercase = /^[^A-Z]*$/;
4535
4535
  var uppercase = /^[^a-z]*$/;
4536
4536
 
4537
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/checks.js
4537
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/checks.js
4538
4538
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
4539
4539
  var _a;
4540
4540
  inst._zod ?? (inst._zod = {});
@@ -4850,7 +4850,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
4850
4850
  };
4851
4851
  });
4852
4852
 
4853
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/doc.js
4853
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/doc.js
4854
4854
  class Doc {
4855
4855
  constructor(args = [], closed = {}) {
4856
4856
  this.content = [];
@@ -4892,14 +4892,14 @@ ${content.join(`
4892
4892
  }
4893
4893
  }
4894
4894
 
4895
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/versions.js
4895
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/versions.js
4896
4896
  var version = {
4897
4897
  major: 4,
4898
4898
  minor: 6,
4899
- patch: 0
4899
+ patch: 2
4900
4900
  };
4901
4901
 
4902
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/schemas.js
4902
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/schemas.js
4903
4903
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
4904
4904
  var _a;
4905
4905
  inst ?? (inst = {});
@@ -5496,7 +5496,7 @@ function handlePropertyResult(result, final, key, input, optin, optout) {
5496
5496
  return;
5497
5497
  }
5498
5498
  if (result.value === undefined) {
5499
- if (isPresent) {
5499
+ if (isPresent || optin === "defaulted" && !isOptionalOut) {
5500
5500
  final.value[key] = undefined;
5501
5501
  }
5502
5502
  } else {
@@ -5730,16 +5730,16 @@ var $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def) =>
5730
5730
  doc.write(`
5731
5731
  if (${id}.issues.length) {${prefixStr(id, k)}
5732
5732
  }
5733
-
5734
- if (${id}.value === undefined) {
5735
- if (${isPresent}) {
5736
- newResult[${k}] = undefined;
5737
- }
5733
+ `);
5734
+ if (optin === "defaulted") {
5735
+ doc.write(`newResult[${k}] = ${id}.value;`);
5738
5736
  } else {
5737
+ doc.write(`
5738
+ if (${id}.value !== undefined || ${isPresent}) {
5739
5739
  newResult[${k}] = ${id}.value;
5740
5740
  }
5741
-
5742
5741
  `);
5742
+ }
5743
5743
  }
5744
5744
  }
5745
5745
  doc.write(`payload.value = newResult;`);
@@ -6463,7 +6463,7 @@ var $ZodProperties = /* @__PURE__ */ $constructor("$ZodProperties", (inst, def)
6463
6463
  yield this;
6464
6464
  }
6465
6465
  });
6466
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/memoizer.js
6466
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/memoizer.js
6467
6467
  class $ZodCyclicError extends Error {
6468
6468
  constructor() {
6469
6469
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -6735,7 +6735,7 @@ function isBackEdge(ctx, value) {
6735
6735
  const backEdges = ctx[STATE]?.backEdges;
6736
6736
  return backEdges !== undefined && isRef(value) && backEdges.has(value);
6737
6737
  }
6738
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/locales/en.js
6738
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/locales/en.js
6739
6739
  var error = () => {
6740
6740
  const Sizable = {
6741
6741
  string: { unit: "characters", verb: "to have" },
@@ -6856,7 +6856,7 @@ function en_default() {
6856
6856
  localeError: error()
6857
6857
  };
6858
6858
  }
6859
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/registries.js
6859
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/registries.js
6860
6860
  var _a2;
6861
6861
  class $ZodRegistry {
6862
6862
  constructor() {
@@ -6903,7 +6903,7 @@ function registry() {
6903
6903
  }
6904
6904
  (_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry());
6905
6905
  var globalRegistry = globalThis.__zod_globalRegistry;
6906
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/api.js
6906
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/api.js
6907
6907
  function _string(Class, params) {
6908
6908
  return new Class({
6909
6909
  type: "string",
@@ -7353,7 +7353,7 @@ function _check(fn, params) {
7353
7353
  ch._zod.check = fn;
7354
7354
  return ch;
7355
7355
  }
7356
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/to-json-schema.js
7356
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/to-json-schema.js
7357
7357
  function assignProps(target, ...sources) {
7358
7358
  for (const source of sources) {
7359
7359
  for (const key of Reflect.ownKeys(source)) {
@@ -7876,7 +7876,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
7876
7876
  extractDefs(ctx, schema);
7877
7877
  return finalize(ctx, schema);
7878
7878
  };
7879
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/json-schema-processors.js
7879
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/json-schema-processors.js
7880
7880
  var narrowMin = (agg, key, value) => {
7881
7881
  if (agg[key] === undefined || value > agg[key])
7882
7882
  agg[key] = value;
@@ -8403,7 +8403,7 @@ var optionalProcessor = (schema, ctx, _json, params) => {
8403
8403
  const seen = ctx.seen.get(schema);
8404
8404
  seen.ref = def.innerType;
8405
8405
  };
8406
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/errors.js
8406
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/errors.js
8407
8407
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
8408
8408
  function _lazyMethod(proto, key, make) {
8409
8409
  Object.defineProperty(proto, key, {
@@ -8448,7 +8448,7 @@ var ZodRealError = /* @__PURE__ */ $constructor("ZodError", initializer2, undefi
8448
8448
  Parent: Error
8449
8449
  });
8450
8450
 
8451
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/parse.js
8451
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/parse.js
8452
8452
  var parse2 = /* @__PURE__ */ _parse(ZodRealError);
8453
8453
  var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);
8454
8454
  var safeParse = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -8462,7 +8462,7 @@ var safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);
8462
8462
  var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
8463
8463
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
8464
8464
 
8465
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/schemas.js
8465
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/schemas.js
8466
8466
  function _ensureDefaultLocale() {
8467
8467
  if (!globalConfig.localeError)
8468
8468
  config(en_default());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fro.bot/systematic",
3
- "version": "3.18.1",
3
+ "version": "3.18.3",
4
4
  "description": "Compound-engineering loops for OpenCode, Pi, and Claude Code",
5
5
  "type": "module",
6
6
  "homepage": "https://fro.bot/systematic",
@@ -97,7 +97,7 @@
97
97
  }
98
98
  },
99
99
  "devDependencies": {
100
- "@biomejs/biome": "2.5.12",
100
+ "@biomejs/biome": "2.5.13",
101
101
  "@earendil-works/pi-coding-agent": "0.83.0",
102
102
  "@opencode-ai/plugin": "1.18.30",
103
103
  "@opencode-ai/sdk": "1.18.30",
@@ -122,7 +122,7 @@
122
122
  "jsonc-parser": "^3.3.0",
123
123
  "tree-sitter-bash": "0.25.1",
124
124
  "web-tree-sitter": "0.27.0",
125
- "zod": "4.6.0"
125
+ "zod": "4.6.2"
126
126
  },
127
127
  "overrides": {
128
128
  "@earendil-works/pi-ai": "0.83.0",
@@ -172,7 +172,7 @@ function resolveReviewArtifactPath(input, cwd, options = {}) {
172
172
  return { ok: true, path: canonicalTarget }
173
173
  }
174
174
 
175
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/util.js
175
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/util.js
176
176
  function getEnumValues(entries) {
177
177
  const numericValues = Object.values(entries).filter(
178
178
  (v) => typeof v === 'number',
@@ -796,7 +796,7 @@ function constantCatch(value) {
796
796
  return fn
797
797
  }
798
798
 
799
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/core.js
799
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/core.js
800
800
  var _a
801
801
  var _zodDesc = { value: undefined, enumerable: false }
802
802
  var _E = 'captureStackTrace' in Error ? Error : null
@@ -911,7 +911,7 @@ function config(newConfig) {
911
911
  if (newConfig) Object.assign(globalConfig, newConfig)
912
912
  return globalConfig
913
913
  }
914
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/errors.js
914
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/errors.js
915
915
  function _getMessage() {
916
916
  const internals = this._zod
917
917
  internals.message ??
@@ -1048,7 +1048,7 @@ function formatError(error, mapper = (issue) => issue.message) {
1048
1048
  return fieldErrors
1049
1049
  }
1050
1050
 
1051
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/parse.js
1051
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/parse.js
1052
1052
  function finalizeParams(callee, params) {
1053
1053
  return { callee: params?.callee ?? callee, Err: params?.Err }
1054
1054
  }
@@ -1210,7 +1210,7 @@ var _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {
1210
1210
  var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
1211
1211
  return _safeParseAsync(_Err)(schema, value, _ctx)
1212
1212
  }
1213
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/regexes.js
1213
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/regexes.js
1214
1214
  var cuid = /^[cC][0-9a-z]{6,}$/
1215
1215
  var cuid2 = /^[0-9a-z]+$/
1216
1216
  var ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/
@@ -1287,7 +1287,7 @@ var boolean = /^(?:true|false)$/i
1287
1287
  var lowercase = /^[^A-Z]*$/
1288
1288
  var uppercase = /^[^a-z]*$/
1289
1289
 
1290
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/checks.js
1290
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/checks.js
1291
1291
  var $ZodCheck = /* @__PURE__ */ $constructor('$ZodCheck', (inst, def) => {
1292
1292
  var _a
1293
1293
  inst._zod ?? (inst._zod = {})
@@ -1667,7 +1667,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor(
1667
1667
  },
1668
1668
  )
1669
1669
 
1670
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/doc.js
1670
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/doc.js
1671
1671
  class Doc {
1672
1672
  constructor(args = [], closed = {}) {
1673
1673
  this.content = []
@@ -1718,14 +1718,14 @@ ${content.join(`
1718
1718
  }
1719
1719
  }
1720
1720
 
1721
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/versions.js
1721
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/versions.js
1722
1722
  var version = {
1723
1723
  major: 4,
1724
1724
  minor: 6,
1725
- patch: 0,
1725
+ patch: 2,
1726
1726
  }
1727
1727
 
1728
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/schemas.js
1728
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/schemas.js
1729
1729
  var $ZodType = /* @__PURE__ */ $constructor(
1730
1730
  '$ZodType',
1731
1731
  (inst, def) => {
@@ -2355,7 +2355,7 @@ function handlePropertyResult(result, final, key, input, optin, optout) {
2355
2355
  return
2356
2356
  }
2357
2357
  if (result.value === undefined) {
2358
- if (isPresent) {
2358
+ if (isPresent || (optin === 'defaulted' && !isOptionalOut)) {
2359
2359
  final.value[key] = undefined
2360
2360
  }
2361
2361
  } else {
@@ -2609,16 +2609,16 @@ var $ZodObjectJIT = /* @__PURE__ */ $constructor(
2609
2609
  doc.write(`
2610
2610
  if (${id}.issues.length) {${prefixStr(id, k)}
2611
2611
  }
2612
-
2613
- if (${id}.value === undefined) {
2614
- if (${isPresent}) {
2615
- newResult[${k}] = undefined;
2616
- }
2617
- } else {
2612
+ `)
2613
+ if (optin === 'defaulted') {
2614
+ doc.write(`newResult[${k}] = ${id}.value;`)
2615
+ } else {
2616
+ doc.write(`
2617
+ if (${id}.value !== undefined || ${isPresent}) {
2618
2618
  newResult[${k}] = ${id}.value;
2619
2619
  }
2620
-
2621
2620
  `)
2621
+ }
2622
2622
  }
2623
2623
  }
2624
2624
  doc.write(`payload.value = newResult;`)
@@ -2744,6 +2744,26 @@ var $ZodUnion = /* @__PURE__ */ $constructor('$ZodUnion', (inst, def) => {
2744
2744
  })
2745
2745
  }
2746
2746
  })
2747
+ function discriminatorMap(def) {
2748
+ const map = new Map()
2749
+ for (const option of def.options) {
2750
+ const values = option._zod.propValues?.[def.discriminator]
2751
+ if (!values || values.size === 0)
2752
+ throw new Error(
2753
+ `Invalid discriminated union option at index "${def.options.indexOf(option)}"`,
2754
+ )
2755
+ for (const value of values) {
2756
+ if (map.has(value)) {
2757
+ if (value !== undefined)
2758
+ throw new Error(`Duplicate discriminator value "${String(value)}"`)
2759
+ map.set(value, null)
2760
+ } else {
2761
+ map.set(value, option)
2762
+ }
2763
+ }
2764
+ }
2765
+ return map
2766
+ }
2747
2767
  var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(
2748
2768
  '$ZodDiscriminatedUnion',
2749
2769
  (inst, def) => {
@@ -2752,12 +2772,14 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(
2752
2772
  const _super = inst._zod.parse
2753
2773
  defineLazyInternal(inst, 'propValues', (zod) => {
2754
2774
  const propValues = {}
2775
+ let undefinedCount = 0
2755
2776
  for (const option of zod.def.options) {
2756
2777
  const pv = option._zod.propValues
2757
2778
  if (!pv || Object.keys(pv).length === 0)
2758
2779
  throw new Error(
2759
2780
  `Invalid discriminated union option at index "${zod.def.options.indexOf(option)}"`,
2760
2781
  )
2782
+ if (pv[zod.def.discriminator]?.has(undefined)) undefinedCount++
2761
2783
  for (const [k, v] of Object.entries(pv)) {
2762
2784
  if (!Object.prototype.hasOwnProperty.call(propValues, k)) {
2763
2785
  assignProp(propValues, k, new Set())
@@ -2767,6 +2789,8 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(
2767
2789
  }
2768
2790
  }
2769
2791
  }
2792
+ if (!zod.def.unionFallback && undefinedCount > 1)
2793
+ propValues[zod.def.discriminator]?.delete(undefined)
2770
2794
  return propValues
2771
2795
  })
2772
2796
  def.options.forEach((option, i) => {
@@ -2778,24 +2802,7 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(
2778
2802
  throw new Error(`Invalid discriminated union option at index "${i}"`)
2779
2803
  }
2780
2804
  })
2781
- const disc = cached(() => {
2782
- const opts = def.options
2783
- const map = new Map()
2784
- for (const o of opts) {
2785
- const values = o._zod.propValues?.[def.discriminator]
2786
- if (!values || values.size === 0)
2787
- throw new Error(
2788
- `Invalid discriminated union option at index "${def.options.indexOf(o)}"`,
2789
- )
2790
- for (const v of values) {
2791
- if (map.has(v)) {
2792
- throw new Error(`Duplicate discriminator value "${String(v)}"`)
2793
- }
2794
- map.set(v, o)
2795
- }
2796
- }
2797
- return map
2798
- })
2805
+ const disc = cached(() => discriminatorMap(def))
2799
2806
  inst._zod.parse = (payload, ctx) => {
2800
2807
  const input = payload.value
2801
2808
  if (!isObject(input)) {
@@ -2807,8 +2814,9 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(
2807
2814
  })
2808
2815
  return payload
2809
2816
  }
2810
- const opt = disc.value.get(input?.[def.discriminator])
2811
- if (opt) {
2817
+ const value = input?.[def.discriminator]
2818
+ const opt = disc.value.get(value)
2819
+ if (opt && (value !== undefined || ctx.direction !== 'backward')) {
2812
2820
  return opt._zod.run(payload, ctx)
2813
2821
  }
2814
2822
  if (def.unionFallback || ctx.direction === 'backward') {
@@ -2819,7 +2827,9 @@ var $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor(
2819
2827
  errors: [],
2820
2828
  note: 'No matching discriminator',
2821
2829
  discriminator: def.discriminator,
2822
- options: Array.from(disc.value.keys()),
2830
+ options: Array.from(disc.value.keys()).filter(
2831
+ (value) => disc.value.get(value) !== null,
2832
+ ),
2823
2833
  input,
2824
2834
  path: [def.discriminator],
2825
2835
  inst,
@@ -3360,7 +3370,7 @@ var $ZodProperties = /* @__PURE__ */ $constructor(
3360
3370
  },
3361
3371
  },
3362
3372
  )
3363
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/memoizer.js
3373
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/memoizer.js
3364
3374
  class $ZodCyclicError extends Error {
3365
3375
  constructor() {
3366
3376
  super(`Cannot parse a reference cycle that closes through a transform`)
@@ -3622,7 +3632,7 @@ function isBackEdge(ctx, value) {
3622
3632
  const backEdges = ctx[STATE]?.backEdges
3623
3633
  return backEdges !== undefined && isRef(value) && backEdges.has(value)
3624
3634
  }
3625
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/locales/en.js
3635
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/locales/en.js
3626
3636
  var error = () => {
3627
3637
  const Sizable = {
3628
3638
  string: { unit: 'characters', verb: 'to have' },
@@ -3751,7 +3761,7 @@ function en_default() {
3751
3761
  localeError: error(),
3752
3762
  }
3753
3763
  }
3754
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/registries.js
3764
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/registries.js
3755
3765
  var _a2
3756
3766
  class $ZodRegistry {
3757
3767
  constructor() {
@@ -3799,7 +3809,7 @@ function registry() {
3799
3809
  ;(_a2 = globalThis).__zod_globalRegistry ??
3800
3810
  (_a2.__zod_globalRegistry = registry())
3801
3811
  var globalRegistry = globalThis.__zod_globalRegistry
3802
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/api.js
3812
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/api.js
3803
3813
  function _string(Class, params) {
3804
3814
  return new Class({
3805
3815
  type: 'string',
@@ -4247,7 +4257,7 @@ function _check(fn, params) {
4247
4257
  ch._zod.check = fn
4248
4258
  return ch
4249
4259
  }
4250
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/to-json-schema.js
4260
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/to-json-schema.js
4251
4261
  function assignProps(target, ...sources) {
4252
4262
  for (const source of sources) {
4253
4263
  for (const key of Reflect.ownKeys(source)) {
@@ -4802,7 +4812,7 @@ var createStandardJSONSchemaMethod =
4802
4812
  extractDefs(ctx, schema)
4803
4813
  return finalize(ctx, schema)
4804
4814
  }
4805
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/core/json-schema-processors.js
4815
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/core/json-schema-processors.js
4806
4816
  var narrowMin = (agg, key, value) => {
4807
4817
  if (agg[key] === undefined || value > agg[key]) agg[key] = value
4808
4818
  }
@@ -5292,7 +5302,7 @@ var optionalProcessor = (schema, ctx, _json, params) => {
5292
5302
  const seen = ctx.seen.get(schema)
5293
5303
  seen.ref = def.innerType
5294
5304
  }
5295
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/errors.js
5305
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/errors.js
5296
5306
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([
5297
5307
  Object.prototype,
5298
5308
  Error.prototype,
@@ -5356,7 +5366,7 @@ var ZodRealError = /* @__PURE__ */ $constructor(
5356
5366
  },
5357
5367
  )
5358
5368
 
5359
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/parse.js
5369
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/parse.js
5360
5370
  var parse2 = /* @__PURE__ */ _parse(ZodRealError)
5361
5371
  var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError)
5362
5372
  var safeParse = /* @__PURE__ */ _safeParse(ZodRealError)
@@ -5370,7 +5380,7 @@ var safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError)
5370
5380
  var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError)
5371
5381
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError)
5372
5382
 
5373
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/schemas.js
5383
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/schemas.js
5374
5384
  function _ensureDefaultLocale() {
5375
5385
  if (!globalConfig.localeError) config(en_default())
5376
5386
  }
@@ -6339,7 +6349,7 @@ function refine(fn, _params = {}) {
6339
6349
  function superRefine(fn, params) {
6340
6350
  return _superRefine(fn, params)
6341
6351
  }
6342
- // node_modules/.bun/zod@4.6.0/node_modules/zod/v4/classic/iso.js
6352
+ // node_modules/.bun/zod@4.6.2/node_modules/zod/v4/classic/iso.js
6343
6353
  var exports_iso = {}
6344
6354
  __export(exports_iso, {
6345
6355
  ZodISODate: () => ZodISODate,