@gluecharm-lab/easyspecs-cli 0.0.10 → 0.0.12

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/main.cjs CHANGED
@@ -26,9 +26,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
 
29
- // ../../scripts/vscode-stub.cjs
29
+ // scripts/vscode-stub.cjs
30
30
  var require_vscode_stub = __commonJS({
31
- "../../scripts/vscode-stub.cjs"(exports2, module2) {
31
+ "scripts/vscode-stub.cjs"(exports2, module2) {
32
32
  "use strict";
33
33
  module2.exports = {
34
34
  workspace: {
@@ -49,9 +49,9 @@ var require_vscode_stub = __commonJS({
49
49
  }
50
50
  });
51
51
 
52
- // ../../node_modules/ajv/dist/compile/codegen/code.js
52
+ // node_modules/ajv/dist/compile/codegen/code.js
53
53
  var require_code = __commonJS({
54
- "../../node_modules/ajv/dist/compile/codegen/code.js"(exports2) {
54
+ "node_modules/ajv/dist/compile/codegen/code.js"(exports2) {
55
55
  "use strict";
56
56
  Object.defineProperty(exports2, "__esModule", { value: true });
57
57
  exports2.regexpCode = exports2.getEsmExportName = exports2.getProperty = exports2.safeStringify = exports2.stringify = exports2.strConcat = exports2.addCodeArg = exports2.str = exports2._ = exports2.nil = exports2._Code = exports2.Name = exports2.IDENTIFIER = exports2._CodeOrName = void 0;
@@ -203,9 +203,9 @@ var require_code = __commonJS({
203
203
  }
204
204
  });
205
205
 
206
- // ../../node_modules/ajv/dist/compile/codegen/scope.js
206
+ // node_modules/ajv/dist/compile/codegen/scope.js
207
207
  var require_scope = __commonJS({
208
- "../../node_modules/ajv/dist/compile/codegen/scope.js"(exports2) {
208
+ "node_modules/ajv/dist/compile/codegen/scope.js"(exports2) {
209
209
  "use strict";
210
210
  Object.defineProperty(exports2, "__esModule", { value: true });
211
211
  exports2.ValueScope = exports2.ValueScopeName = exports2.Scope = exports2.varKinds = exports2.UsedValueState = void 0;
@@ -348,9 +348,9 @@ var require_scope = __commonJS({
348
348
  }
349
349
  });
350
350
 
351
- // ../../node_modules/ajv/dist/compile/codegen/index.js
351
+ // node_modules/ajv/dist/compile/codegen/index.js
352
352
  var require_codegen = __commonJS({
353
- "../../node_modules/ajv/dist/compile/codegen/index.js"(exports2) {
353
+ "node_modules/ajv/dist/compile/codegen/index.js"(exports2) {
354
354
  "use strict";
355
355
  Object.defineProperty(exports2, "__esModule", { value: true });
356
356
  exports2.or = exports2.and = exports2.not = exports2.CodeGen = exports2.operators = exports2.varKinds = exports2.ValueScopeName = exports2.ValueScope = exports2.Scope = exports2.Name = exports2.regexpCode = exports2.stringify = exports2.getProperty = exports2.nil = exports2.strConcat = exports2.str = exports2._ = void 0;
@@ -1068,9 +1068,9 @@ var require_codegen = __commonJS({
1068
1068
  }
1069
1069
  });
1070
1070
 
1071
- // ../../node_modules/ajv/dist/compile/util.js
1071
+ // node_modules/ajv/dist/compile/util.js
1072
1072
  var require_util = __commonJS({
1073
- "../../node_modules/ajv/dist/compile/util.js"(exports2) {
1073
+ "node_modules/ajv/dist/compile/util.js"(exports2) {
1074
1074
  "use strict";
1075
1075
  Object.defineProperty(exports2, "__esModule", { value: true });
1076
1076
  exports2.checkStrictMode = exports2.getErrorPath = exports2.Type = exports2.useFunc = exports2.setEvaluated = exports2.evaluatedPropsToName = exports2.mergeEvaluated = exports2.eachItem = exports2.unescapeJsonPointer = exports2.escapeJsonPointer = exports2.escapeFragment = exports2.unescapeFragment = exports2.schemaRefOrVal = exports2.schemaHasRulesButRef = exports2.schemaHasRules = exports2.checkUnknownRules = exports2.alwaysValidSchema = exports2.toHash = void 0;
@@ -1235,9 +1235,9 @@ var require_util = __commonJS({
1235
1235
  }
1236
1236
  });
1237
1237
 
1238
- // ../../node_modules/ajv/dist/compile/names.js
1238
+ // node_modules/ajv/dist/compile/names.js
1239
1239
  var require_names = __commonJS({
1240
- "../../node_modules/ajv/dist/compile/names.js"(exports2) {
1240
+ "node_modules/ajv/dist/compile/names.js"(exports2) {
1241
1241
  "use strict";
1242
1242
  Object.defineProperty(exports2, "__esModule", { value: true });
1243
1243
  var codegen_1 = require_codegen();
@@ -1274,9 +1274,9 @@ var require_names = __commonJS({
1274
1274
  }
1275
1275
  });
1276
1276
 
1277
- // ../../node_modules/ajv/dist/compile/errors.js
1277
+ // node_modules/ajv/dist/compile/errors.js
1278
1278
  var require_errors = __commonJS({
1279
- "../../node_modules/ajv/dist/compile/errors.js"(exports2) {
1279
+ "node_modules/ajv/dist/compile/errors.js"(exports2) {
1280
1280
  "use strict";
1281
1281
  Object.defineProperty(exports2, "__esModule", { value: true });
1282
1282
  exports2.extendErrors = exports2.resetErrorsCount = exports2.reportExtraError = exports2.reportError = exports2.keyword$DataError = exports2.keywordError = void 0;
@@ -1396,9 +1396,9 @@ var require_errors = __commonJS({
1396
1396
  }
1397
1397
  });
1398
1398
 
1399
- // ../../node_modules/ajv/dist/compile/validate/boolSchema.js
1399
+ // node_modules/ajv/dist/compile/validate/boolSchema.js
1400
1400
  var require_boolSchema = __commonJS({
1401
- "../../node_modules/ajv/dist/compile/validate/boolSchema.js"(exports2) {
1401
+ "node_modules/ajv/dist/compile/validate/boolSchema.js"(exports2) {
1402
1402
  "use strict";
1403
1403
  Object.defineProperty(exports2, "__esModule", { value: true });
1404
1404
  exports2.boolOrEmptySchema = exports2.topBoolOrEmptySchema = void 0;
@@ -1447,9 +1447,9 @@ var require_boolSchema = __commonJS({
1447
1447
  }
1448
1448
  });
1449
1449
 
1450
- // ../../node_modules/ajv/dist/compile/rules.js
1450
+ // node_modules/ajv/dist/compile/rules.js
1451
1451
  var require_rules = __commonJS({
1452
- "../../node_modules/ajv/dist/compile/rules.js"(exports2) {
1452
+ "node_modules/ajv/dist/compile/rules.js"(exports2) {
1453
1453
  "use strict";
1454
1454
  Object.defineProperty(exports2, "__esModule", { value: true });
1455
1455
  exports2.getRules = exports2.isJSONType = void 0;
@@ -1478,9 +1478,9 @@ var require_rules = __commonJS({
1478
1478
  }
1479
1479
  });
1480
1480
 
1481
- // ../../node_modules/ajv/dist/compile/validate/applicability.js
1481
+ // node_modules/ajv/dist/compile/validate/applicability.js
1482
1482
  var require_applicability = __commonJS({
1483
- "../../node_modules/ajv/dist/compile/validate/applicability.js"(exports2) {
1483
+ "node_modules/ajv/dist/compile/validate/applicability.js"(exports2) {
1484
1484
  "use strict";
1485
1485
  Object.defineProperty(exports2, "__esModule", { value: true });
1486
1486
  exports2.shouldUseRule = exports2.shouldUseGroup = exports2.schemaHasRulesForType = void 0;
@@ -1501,9 +1501,9 @@ var require_applicability = __commonJS({
1501
1501
  }
1502
1502
  });
1503
1503
 
1504
- // ../../node_modules/ajv/dist/compile/validate/dataType.js
1504
+ // node_modules/ajv/dist/compile/validate/dataType.js
1505
1505
  var require_dataType = __commonJS({
1506
- "../../node_modules/ajv/dist/compile/validate/dataType.js"(exports2) {
1506
+ "node_modules/ajv/dist/compile/validate/dataType.js"(exports2) {
1507
1507
  "use strict";
1508
1508
  Object.defineProperty(exports2, "__esModule", { value: true });
1509
1509
  exports2.reportTypeError = exports2.checkDataTypes = exports2.checkDataType = exports2.coerceAndCheckDataType = exports2.getJSONTypes = exports2.getSchemaTypes = exports2.DataType = void 0;
@@ -1685,9 +1685,9 @@ var require_dataType = __commonJS({
1685
1685
  }
1686
1686
  });
1687
1687
 
1688
- // ../../node_modules/ajv/dist/compile/validate/defaults.js
1688
+ // node_modules/ajv/dist/compile/validate/defaults.js
1689
1689
  var require_defaults = __commonJS({
1690
- "../../node_modules/ajv/dist/compile/validate/defaults.js"(exports2) {
1690
+ "node_modules/ajv/dist/compile/validate/defaults.js"(exports2) {
1691
1691
  "use strict";
1692
1692
  Object.defineProperty(exports2, "__esModule", { value: true });
1693
1693
  exports2.assignDefaults = void 0;
@@ -1722,9 +1722,9 @@ var require_defaults = __commonJS({
1722
1722
  }
1723
1723
  });
1724
1724
 
1725
- // ../../node_modules/ajv/dist/vocabularies/code.js
1725
+ // node_modules/ajv/dist/vocabularies/code.js
1726
1726
  var require_code2 = __commonJS({
1727
- "../../node_modules/ajv/dist/vocabularies/code.js"(exports2) {
1727
+ "node_modules/ajv/dist/vocabularies/code.js"(exports2) {
1728
1728
  "use strict";
1729
1729
  Object.defineProperty(exports2, "__esModule", { value: true });
1730
1730
  exports2.validateUnion = exports2.validateArray = exports2.usePattern = exports2.callValidateCode = exports2.schemaProperties = exports2.allSchemaProperties = exports2.noPropertyInData = exports2.propertyInData = exports2.isOwnProperty = exports2.hasPropFunc = exports2.reportMissingProp = exports2.checkMissingProp = exports2.checkReportMissingProp = void 0;
@@ -1855,9 +1855,9 @@ var require_code2 = __commonJS({
1855
1855
  }
1856
1856
  });
1857
1857
 
1858
- // ../../node_modules/ajv/dist/compile/validate/keyword.js
1858
+ // node_modules/ajv/dist/compile/validate/keyword.js
1859
1859
  var require_keyword = __commonJS({
1860
- "../../node_modules/ajv/dist/compile/validate/keyword.js"(exports2) {
1860
+ "node_modules/ajv/dist/compile/validate/keyword.js"(exports2) {
1861
1861
  "use strict";
1862
1862
  Object.defineProperty(exports2, "__esModule", { value: true });
1863
1863
  exports2.validateKeywordUsage = exports2.validSchemaType = exports2.funcKeywordCode = exports2.macroKeywordCode = void 0;
@@ -1973,9 +1973,9 @@ var require_keyword = __commonJS({
1973
1973
  }
1974
1974
  });
1975
1975
 
1976
- // ../../node_modules/ajv/dist/compile/validate/subschema.js
1976
+ // node_modules/ajv/dist/compile/validate/subschema.js
1977
1977
  var require_subschema = __commonJS({
1978
- "../../node_modules/ajv/dist/compile/validate/subschema.js"(exports2) {
1978
+ "node_modules/ajv/dist/compile/validate/subschema.js"(exports2) {
1979
1979
  "use strict";
1980
1980
  Object.defineProperty(exports2, "__esModule", { value: true });
1981
1981
  exports2.extendSubschemaMode = exports2.extendSubschemaData = exports2.getSubschema = void 0;
@@ -2056,9 +2056,9 @@ var require_subschema = __commonJS({
2056
2056
  }
2057
2057
  });
2058
2058
 
2059
- // ../../node_modules/fast-deep-equal/index.js
2059
+ // node_modules/fast-deep-equal/index.js
2060
2060
  var require_fast_deep_equal = __commonJS({
2061
- "../../node_modules/fast-deep-equal/index.js"(exports2, module2) {
2061
+ "node_modules/fast-deep-equal/index.js"(exports2, module2) {
2062
2062
  "use strict";
2063
2063
  module2.exports = function equal(a, b) {
2064
2064
  if (a === b) return true;
@@ -2091,9 +2091,9 @@ var require_fast_deep_equal = __commonJS({
2091
2091
  }
2092
2092
  });
2093
2093
 
2094
- // ../../node_modules/json-schema-traverse/index.js
2094
+ // node_modules/json-schema-traverse/index.js
2095
2095
  var require_json_schema_traverse = __commonJS({
2096
- "../../node_modules/json-schema-traverse/index.js"(exports2, module2) {
2096
+ "node_modules/json-schema-traverse/index.js"(exports2, module2) {
2097
2097
  "use strict";
2098
2098
  var traverse = module2.exports = function(schema, opts, cb) {
2099
2099
  if (typeof opts == "function") {
@@ -2179,9 +2179,9 @@ var require_json_schema_traverse = __commonJS({
2179
2179
  }
2180
2180
  });
2181
2181
 
2182
- // ../../node_modules/ajv/dist/compile/resolve.js
2182
+ // node_modules/ajv/dist/compile/resolve.js
2183
2183
  var require_resolve = __commonJS({
2184
- "../../node_modules/ajv/dist/compile/resolve.js"(exports2) {
2184
+ "node_modules/ajv/dist/compile/resolve.js"(exports2) {
2185
2185
  "use strict";
2186
2186
  Object.defineProperty(exports2, "__esModule", { value: true });
2187
2187
  exports2.getSchemaRefs = exports2.resolveUrl = exports2.normalizeId = exports2._getFullPath = exports2.getFullPath = exports2.inlineRef = void 0;
@@ -2251,8 +2251,8 @@ var require_resolve = __commonJS({
2251
2251
  }
2252
2252
  return count;
2253
2253
  }
2254
- function getFullPath(resolver, id = "", normalize4) {
2255
- if (normalize4 !== false)
2254
+ function getFullPath(resolver, id = "", normalize5) {
2255
+ if (normalize5 !== false)
2256
2256
  id = normalizeId(id);
2257
2257
  const p = resolver.parse(id);
2258
2258
  return _getFullPath(resolver, p);
@@ -2335,9 +2335,9 @@ var require_resolve = __commonJS({
2335
2335
  }
2336
2336
  });
2337
2337
 
2338
- // ../../node_modules/ajv/dist/compile/validate/index.js
2338
+ // node_modules/ajv/dist/compile/validate/index.js
2339
2339
  var require_validate = __commonJS({
2340
- "../../node_modules/ajv/dist/compile/validate/index.js"(exports2) {
2340
+ "node_modules/ajv/dist/compile/validate/index.js"(exports2) {
2341
2341
  "use strict";
2342
2342
  Object.defineProperty(exports2, "__esModule", { value: true });
2343
2343
  exports2.getData = exports2.KeywordCxt = exports2.validateFunctionCode = void 0;
@@ -2843,9 +2843,9 @@ var require_validate = __commonJS({
2843
2843
  }
2844
2844
  });
2845
2845
 
2846
- // ../../node_modules/ajv/dist/runtime/validation_error.js
2846
+ // node_modules/ajv/dist/runtime/validation_error.js
2847
2847
  var require_validation_error = __commonJS({
2848
- "../../node_modules/ajv/dist/runtime/validation_error.js"(exports2) {
2848
+ "node_modules/ajv/dist/runtime/validation_error.js"(exports2) {
2849
2849
  "use strict";
2850
2850
  Object.defineProperty(exports2, "__esModule", { value: true });
2851
2851
  var ValidationError = class extends Error {
@@ -2859,9 +2859,9 @@ var require_validation_error = __commonJS({
2859
2859
  }
2860
2860
  });
2861
2861
 
2862
- // ../../node_modules/ajv/dist/compile/ref_error.js
2862
+ // node_modules/ajv/dist/compile/ref_error.js
2863
2863
  var require_ref_error = __commonJS({
2864
- "../../node_modules/ajv/dist/compile/ref_error.js"(exports2) {
2864
+ "node_modules/ajv/dist/compile/ref_error.js"(exports2) {
2865
2865
  "use strict";
2866
2866
  Object.defineProperty(exports2, "__esModule", { value: true });
2867
2867
  var resolve_1 = require_resolve();
@@ -2876,9 +2876,9 @@ var require_ref_error = __commonJS({
2876
2876
  }
2877
2877
  });
2878
2878
 
2879
- // ../../node_modules/ajv/dist/compile/index.js
2879
+ // node_modules/ajv/dist/compile/index.js
2880
2880
  var require_compile = __commonJS({
2881
- "../../node_modules/ajv/dist/compile/index.js"(exports2) {
2881
+ "node_modules/ajv/dist/compile/index.js"(exports2) {
2882
2882
  "use strict";
2883
2883
  Object.defineProperty(exports2, "__esModule", { value: true });
2884
2884
  exports2.resolveSchema = exports2.getCompilingSchema = exports2.resolveRef = exports2.compileSchema = exports2.SchemaEnv = void 0;
@@ -3100,9 +3100,9 @@ var require_compile = __commonJS({
3100
3100
  }
3101
3101
  });
3102
3102
 
3103
- // ../../node_modules/ajv/dist/refs/data.json
3103
+ // node_modules/ajv/dist/refs/data.json
3104
3104
  var require_data = __commonJS({
3105
- "../../node_modules/ajv/dist/refs/data.json"(exports2, module2) {
3105
+ "node_modules/ajv/dist/refs/data.json"(exports2, module2) {
3106
3106
  module2.exports = {
3107
3107
  $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",
3108
3108
  description: "Meta-schema for $data reference (JSON AnySchema extension proposal)",
@@ -3119,9 +3119,9 @@ var require_data = __commonJS({
3119
3119
  }
3120
3120
  });
3121
3121
 
3122
- // ../../node_modules/fast-uri/lib/utils.js
3122
+ // node_modules/fast-uri/lib/utils.js
3123
3123
  var require_utils = __commonJS({
3124
- "../../node_modules/fast-uri/lib/utils.js"(exports2, module2) {
3124
+ "node_modules/fast-uri/lib/utils.js"(exports2, module2) {
3125
3125
  "use strict";
3126
3126
  var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
3127
3127
  var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
@@ -3376,9 +3376,9 @@ var require_utils = __commonJS({
3376
3376
  }
3377
3377
  });
3378
3378
 
3379
- // ../../node_modules/fast-uri/lib/schemes.js
3379
+ // node_modules/fast-uri/lib/schemes.js
3380
3380
  var require_schemes = __commonJS({
3381
- "../../node_modules/fast-uri/lib/schemes.js"(exports2, module2) {
3381
+ "node_modules/fast-uri/lib/schemes.js"(exports2, module2) {
3382
3382
  "use strict";
3383
3383
  var { isUUID } = require_utils();
3384
3384
  var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
@@ -3586,13 +3586,13 @@ var require_schemes = __commonJS({
3586
3586
  }
3587
3587
  });
3588
3588
 
3589
- // ../../node_modules/fast-uri/index.js
3589
+ // node_modules/fast-uri/index.js
3590
3590
  var require_fast_uri = __commonJS({
3591
- "../../node_modules/fast-uri/index.js"(exports2, module2) {
3591
+ "node_modules/fast-uri/index.js"(exports2, module2) {
3592
3592
  "use strict";
3593
3593
  var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require_utils();
3594
3594
  var { SCHEMES, getSchemeHandler } = require_schemes();
3595
- function normalize4(uri, options) {
3595
+ function normalize5(uri, options) {
3596
3596
  if (typeof uri === "string") {
3597
3597
  uri = /** @type {T} */
3598
3598
  serialize(parse(uri, options), options);
@@ -3828,7 +3828,7 @@ var require_fast_uri = __commonJS({
3828
3828
  }
3829
3829
  var fastUri = {
3830
3830
  SCHEMES,
3831
- normalize: normalize4,
3831
+ normalize: normalize5,
3832
3832
  resolve: resolve15,
3833
3833
  resolveComponent,
3834
3834
  equal,
@@ -3841,9 +3841,9 @@ var require_fast_uri = __commonJS({
3841
3841
  }
3842
3842
  });
3843
3843
 
3844
- // ../../node_modules/ajv/dist/runtime/uri.js
3844
+ // node_modules/ajv/dist/runtime/uri.js
3845
3845
  var require_uri = __commonJS({
3846
- "../../node_modules/ajv/dist/runtime/uri.js"(exports2) {
3846
+ "node_modules/ajv/dist/runtime/uri.js"(exports2) {
3847
3847
  "use strict";
3848
3848
  Object.defineProperty(exports2, "__esModule", { value: true });
3849
3849
  var uri = require_fast_uri();
@@ -3852,9 +3852,9 @@ var require_uri = __commonJS({
3852
3852
  }
3853
3853
  });
3854
3854
 
3855
- // ../../node_modules/ajv/dist/core.js
3855
+ // node_modules/ajv/dist/core.js
3856
3856
  var require_core = __commonJS({
3857
- "../../node_modules/ajv/dist/core.js"(exports2) {
3857
+ "node_modules/ajv/dist/core.js"(exports2) {
3858
3858
  "use strict";
3859
3859
  Object.defineProperty(exports2, "__esModule", { value: true });
3860
3860
  exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = void 0;
@@ -4463,9 +4463,9 @@ var require_core = __commonJS({
4463
4463
  }
4464
4464
  });
4465
4465
 
4466
- // ../../node_modules/ajv/dist/vocabularies/core/id.js
4466
+ // node_modules/ajv/dist/vocabularies/core/id.js
4467
4467
  var require_id = __commonJS({
4468
- "../../node_modules/ajv/dist/vocabularies/core/id.js"(exports2) {
4468
+ "node_modules/ajv/dist/vocabularies/core/id.js"(exports2) {
4469
4469
  "use strict";
4470
4470
  Object.defineProperty(exports2, "__esModule", { value: true });
4471
4471
  var def = {
@@ -4478,9 +4478,9 @@ var require_id = __commonJS({
4478
4478
  }
4479
4479
  });
4480
4480
 
4481
- // ../../node_modules/ajv/dist/vocabularies/core/ref.js
4481
+ // node_modules/ajv/dist/vocabularies/core/ref.js
4482
4482
  var require_ref = __commonJS({
4483
- "../../node_modules/ajv/dist/vocabularies/core/ref.js"(exports2) {
4483
+ "node_modules/ajv/dist/vocabularies/core/ref.js"(exports2) {
4484
4484
  "use strict";
4485
4485
  Object.defineProperty(exports2, "__esModule", { value: true });
4486
4486
  exports2.callRef = exports2.getValidate = void 0;
@@ -4600,9 +4600,9 @@ var require_ref = __commonJS({
4600
4600
  }
4601
4601
  });
4602
4602
 
4603
- // ../../node_modules/ajv/dist/vocabularies/core/index.js
4603
+ // node_modules/ajv/dist/vocabularies/core/index.js
4604
4604
  var require_core2 = __commonJS({
4605
- "../../node_modules/ajv/dist/vocabularies/core/index.js"(exports2) {
4605
+ "node_modules/ajv/dist/vocabularies/core/index.js"(exports2) {
4606
4606
  "use strict";
4607
4607
  Object.defineProperty(exports2, "__esModule", { value: true });
4608
4608
  var id_1 = require_id();
@@ -4621,9 +4621,9 @@ var require_core2 = __commonJS({
4621
4621
  }
4622
4622
  });
4623
4623
 
4624
- // ../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js
4624
+ // node_modules/ajv/dist/vocabularies/validation/limitNumber.js
4625
4625
  var require_limitNumber = __commonJS({
4626
- "../../node_modules/ajv/dist/vocabularies/validation/limitNumber.js"(exports2) {
4626
+ "node_modules/ajv/dist/vocabularies/validation/limitNumber.js"(exports2) {
4627
4627
  "use strict";
4628
4628
  Object.defineProperty(exports2, "__esModule", { value: true });
4629
4629
  var codegen_1 = require_codegen();
@@ -4653,9 +4653,9 @@ var require_limitNumber = __commonJS({
4653
4653
  }
4654
4654
  });
4655
4655
 
4656
- // ../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js
4656
+ // node_modules/ajv/dist/vocabularies/validation/multipleOf.js
4657
4657
  var require_multipleOf = __commonJS({
4658
- "../../node_modules/ajv/dist/vocabularies/validation/multipleOf.js"(exports2) {
4658
+ "node_modules/ajv/dist/vocabularies/validation/multipleOf.js"(exports2) {
4659
4659
  "use strict";
4660
4660
  Object.defineProperty(exports2, "__esModule", { value: true });
4661
4661
  var codegen_1 = require_codegen();
@@ -4681,9 +4681,9 @@ var require_multipleOf = __commonJS({
4681
4681
  }
4682
4682
  });
4683
4683
 
4684
- // ../../node_modules/ajv/dist/runtime/ucs2length.js
4684
+ // node_modules/ajv/dist/runtime/ucs2length.js
4685
4685
  var require_ucs2length = __commonJS({
4686
- "../../node_modules/ajv/dist/runtime/ucs2length.js"(exports2) {
4686
+ "node_modules/ajv/dist/runtime/ucs2length.js"(exports2) {
4687
4687
  "use strict";
4688
4688
  Object.defineProperty(exports2, "__esModule", { value: true });
4689
4689
  function ucs2length(str) {
@@ -4707,9 +4707,9 @@ var require_ucs2length = __commonJS({
4707
4707
  }
4708
4708
  });
4709
4709
 
4710
- // ../../node_modules/ajv/dist/vocabularies/validation/limitLength.js
4710
+ // node_modules/ajv/dist/vocabularies/validation/limitLength.js
4711
4711
  var require_limitLength = __commonJS({
4712
- "../../node_modules/ajv/dist/vocabularies/validation/limitLength.js"(exports2) {
4712
+ "node_modules/ajv/dist/vocabularies/validation/limitLength.js"(exports2) {
4713
4713
  "use strict";
4714
4714
  Object.defineProperty(exports2, "__esModule", { value: true });
4715
4715
  var codegen_1 = require_codegen();
@@ -4739,9 +4739,9 @@ var require_limitLength = __commonJS({
4739
4739
  }
4740
4740
  });
4741
4741
 
4742
- // ../../node_modules/ajv/dist/vocabularies/validation/pattern.js
4742
+ // node_modules/ajv/dist/vocabularies/validation/pattern.js
4743
4743
  var require_pattern = __commonJS({
4744
- "../../node_modules/ajv/dist/vocabularies/validation/pattern.js"(exports2) {
4744
+ "node_modules/ajv/dist/vocabularies/validation/pattern.js"(exports2) {
4745
4745
  "use strict";
4746
4746
  Object.defineProperty(exports2, "__esModule", { value: true });
4747
4747
  var code_1 = require_code2();
@@ -4776,9 +4776,9 @@ var require_pattern = __commonJS({
4776
4776
  }
4777
4777
  });
4778
4778
 
4779
- // ../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js
4779
+ // node_modules/ajv/dist/vocabularies/validation/limitProperties.js
4780
4780
  var require_limitProperties = __commonJS({
4781
- "../../node_modules/ajv/dist/vocabularies/validation/limitProperties.js"(exports2) {
4781
+ "node_modules/ajv/dist/vocabularies/validation/limitProperties.js"(exports2) {
4782
4782
  "use strict";
4783
4783
  Object.defineProperty(exports2, "__esModule", { value: true });
4784
4784
  var codegen_1 = require_codegen();
@@ -4805,9 +4805,9 @@ var require_limitProperties = __commonJS({
4805
4805
  }
4806
4806
  });
4807
4807
 
4808
- // ../../node_modules/ajv/dist/vocabularies/validation/required.js
4808
+ // node_modules/ajv/dist/vocabularies/validation/required.js
4809
4809
  var require_required = __commonJS({
4810
- "../../node_modules/ajv/dist/vocabularies/validation/required.js"(exports2) {
4810
+ "node_modules/ajv/dist/vocabularies/validation/required.js"(exports2) {
4811
4811
  "use strict";
4812
4812
  Object.defineProperty(exports2, "__esModule", { value: true });
4813
4813
  var code_1 = require_code2();
@@ -4887,9 +4887,9 @@ var require_required = __commonJS({
4887
4887
  }
4888
4888
  });
4889
4889
 
4890
- // ../../node_modules/ajv/dist/vocabularies/validation/limitItems.js
4890
+ // node_modules/ajv/dist/vocabularies/validation/limitItems.js
4891
4891
  var require_limitItems = __commonJS({
4892
- "../../node_modules/ajv/dist/vocabularies/validation/limitItems.js"(exports2) {
4892
+ "node_modules/ajv/dist/vocabularies/validation/limitItems.js"(exports2) {
4893
4893
  "use strict";
4894
4894
  Object.defineProperty(exports2, "__esModule", { value: true });
4895
4895
  var codegen_1 = require_codegen();
@@ -4916,9 +4916,9 @@ var require_limitItems = __commonJS({
4916
4916
  }
4917
4917
  });
4918
4918
 
4919
- // ../../node_modules/ajv/dist/runtime/equal.js
4919
+ // node_modules/ajv/dist/runtime/equal.js
4920
4920
  var require_equal = __commonJS({
4921
- "../../node_modules/ajv/dist/runtime/equal.js"(exports2) {
4921
+ "node_modules/ajv/dist/runtime/equal.js"(exports2) {
4922
4922
  "use strict";
4923
4923
  Object.defineProperty(exports2, "__esModule", { value: true });
4924
4924
  var equal = require_fast_deep_equal();
@@ -4927,9 +4927,9 @@ var require_equal = __commonJS({
4927
4927
  }
4928
4928
  });
4929
4929
 
4930
- // ../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
4930
+ // node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
4931
4931
  var require_uniqueItems = __commonJS({
4932
- "../../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js"(exports2) {
4932
+ "node_modules/ajv/dist/vocabularies/validation/uniqueItems.js"(exports2) {
4933
4933
  "use strict";
4934
4934
  Object.defineProperty(exports2, "__esModule", { value: true });
4935
4935
  var dataType_1 = require_dataType();
@@ -4994,9 +4994,9 @@ var require_uniqueItems = __commonJS({
4994
4994
  }
4995
4995
  });
4996
4996
 
4997
- // ../../node_modules/ajv/dist/vocabularies/validation/const.js
4997
+ // node_modules/ajv/dist/vocabularies/validation/const.js
4998
4998
  var require_const = __commonJS({
4999
- "../../node_modules/ajv/dist/vocabularies/validation/const.js"(exports2) {
4999
+ "node_modules/ajv/dist/vocabularies/validation/const.js"(exports2) {
5000
5000
  "use strict";
5001
5001
  Object.defineProperty(exports2, "__esModule", { value: true });
5002
5002
  var codegen_1 = require_codegen();
@@ -5023,9 +5023,9 @@ var require_const = __commonJS({
5023
5023
  }
5024
5024
  });
5025
5025
 
5026
- // ../../node_modules/ajv/dist/vocabularies/validation/enum.js
5026
+ // node_modules/ajv/dist/vocabularies/validation/enum.js
5027
5027
  var require_enum = __commonJS({
5028
- "../../node_modules/ajv/dist/vocabularies/validation/enum.js"(exports2) {
5028
+ "node_modules/ajv/dist/vocabularies/validation/enum.js"(exports2) {
5029
5029
  "use strict";
5030
5030
  Object.defineProperty(exports2, "__esModule", { value: true });
5031
5031
  var codegen_1 = require_codegen();
@@ -5072,9 +5072,9 @@ var require_enum = __commonJS({
5072
5072
  }
5073
5073
  });
5074
5074
 
5075
- // ../../node_modules/ajv/dist/vocabularies/validation/index.js
5075
+ // node_modules/ajv/dist/vocabularies/validation/index.js
5076
5076
  var require_validation = __commonJS({
5077
- "../../node_modules/ajv/dist/vocabularies/validation/index.js"(exports2) {
5077
+ "node_modules/ajv/dist/vocabularies/validation/index.js"(exports2) {
5078
5078
  "use strict";
5079
5079
  Object.defineProperty(exports2, "__esModule", { value: true });
5080
5080
  var limitNumber_1 = require_limitNumber();
@@ -5110,9 +5110,9 @@ var require_validation = __commonJS({
5110
5110
  }
5111
5111
  });
5112
5112
 
5113
- // ../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
5113
+ // node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
5114
5114
  var require_additionalItems = __commonJS({
5115
- "../../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js"(exports2) {
5115
+ "node_modules/ajv/dist/vocabularies/applicator/additionalItems.js"(exports2) {
5116
5116
  "use strict";
5117
5117
  Object.defineProperty(exports2, "__esModule", { value: true });
5118
5118
  exports2.validateAdditionalItems = void 0;
@@ -5163,9 +5163,9 @@ var require_additionalItems = __commonJS({
5163
5163
  }
5164
5164
  });
5165
5165
 
5166
- // ../../node_modules/ajv/dist/vocabularies/applicator/items.js
5166
+ // node_modules/ajv/dist/vocabularies/applicator/items.js
5167
5167
  var require_items = __commonJS({
5168
- "../../node_modules/ajv/dist/vocabularies/applicator/items.js"(exports2) {
5168
+ "node_modules/ajv/dist/vocabularies/applicator/items.js"(exports2) {
5169
5169
  "use strict";
5170
5170
  Object.defineProperty(exports2, "__esModule", { value: true });
5171
5171
  exports2.validateTuple = void 0;
@@ -5220,9 +5220,9 @@ var require_items = __commonJS({
5220
5220
  }
5221
5221
  });
5222
5222
 
5223
- // ../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
5223
+ // node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
5224
5224
  var require_prefixItems = __commonJS({
5225
- "../../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js"(exports2) {
5225
+ "node_modules/ajv/dist/vocabularies/applicator/prefixItems.js"(exports2) {
5226
5226
  "use strict";
5227
5227
  Object.defineProperty(exports2, "__esModule", { value: true });
5228
5228
  var items_1 = require_items();
@@ -5237,9 +5237,9 @@ var require_prefixItems = __commonJS({
5237
5237
  }
5238
5238
  });
5239
5239
 
5240
- // ../../node_modules/ajv/dist/vocabularies/applicator/items2020.js
5240
+ // node_modules/ajv/dist/vocabularies/applicator/items2020.js
5241
5241
  var require_items2020 = __commonJS({
5242
- "../../node_modules/ajv/dist/vocabularies/applicator/items2020.js"(exports2) {
5242
+ "node_modules/ajv/dist/vocabularies/applicator/items2020.js"(exports2) {
5243
5243
  "use strict";
5244
5244
  Object.defineProperty(exports2, "__esModule", { value: true });
5245
5245
  var codegen_1 = require_codegen();
@@ -5272,9 +5272,9 @@ var require_items2020 = __commonJS({
5272
5272
  }
5273
5273
  });
5274
5274
 
5275
- // ../../node_modules/ajv/dist/vocabularies/applicator/contains.js
5275
+ // node_modules/ajv/dist/vocabularies/applicator/contains.js
5276
5276
  var require_contains = __commonJS({
5277
- "../../node_modules/ajv/dist/vocabularies/applicator/contains.js"(exports2) {
5277
+ "node_modules/ajv/dist/vocabularies/applicator/contains.js"(exports2) {
5278
5278
  "use strict";
5279
5279
  Object.defineProperty(exports2, "__esModule", { value: true });
5280
5280
  var codegen_1 = require_codegen();
@@ -5366,9 +5366,9 @@ var require_contains = __commonJS({
5366
5366
  }
5367
5367
  });
5368
5368
 
5369
- // ../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js
5369
+ // node_modules/ajv/dist/vocabularies/applicator/dependencies.js
5370
5370
  var require_dependencies = __commonJS({
5371
- "../../node_modules/ajv/dist/vocabularies/applicator/dependencies.js"(exports2) {
5371
+ "node_modules/ajv/dist/vocabularies/applicator/dependencies.js"(exports2) {
5372
5372
  "use strict";
5373
5373
  Object.defineProperty(exports2, "__esModule", { value: true });
5374
5374
  exports2.validateSchemaDeps = exports2.validatePropertyDeps = exports2.error = void 0;
@@ -5460,9 +5460,9 @@ var require_dependencies = __commonJS({
5460
5460
  }
5461
5461
  });
5462
5462
 
5463
- // ../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
5463
+ // node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
5464
5464
  var require_propertyNames = __commonJS({
5465
- "../../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js"(exports2) {
5465
+ "node_modules/ajv/dist/vocabularies/applicator/propertyNames.js"(exports2) {
5466
5466
  "use strict";
5467
5467
  Object.defineProperty(exports2, "__esModule", { value: true });
5468
5468
  var codegen_1 = require_codegen();
@@ -5503,9 +5503,9 @@ var require_propertyNames = __commonJS({
5503
5503
  }
5504
5504
  });
5505
5505
 
5506
- // ../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
5506
+ // node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
5507
5507
  var require_additionalProperties = __commonJS({
5508
- "../../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js"(exports2) {
5508
+ "node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js"(exports2) {
5509
5509
  "use strict";
5510
5510
  Object.defineProperty(exports2, "__esModule", { value: true });
5511
5511
  var code_1 = require_code2();
@@ -5609,9 +5609,9 @@ var require_additionalProperties = __commonJS({
5609
5609
  }
5610
5610
  });
5611
5611
 
5612
- // ../../node_modules/ajv/dist/vocabularies/applicator/properties.js
5612
+ // node_modules/ajv/dist/vocabularies/applicator/properties.js
5613
5613
  var require_properties = __commonJS({
5614
- "../../node_modules/ajv/dist/vocabularies/applicator/properties.js"(exports2) {
5614
+ "node_modules/ajv/dist/vocabularies/applicator/properties.js"(exports2) {
5615
5615
  "use strict";
5616
5616
  Object.defineProperty(exports2, "__esModule", { value: true });
5617
5617
  var validate_1 = require_validate();
@@ -5667,9 +5667,9 @@ var require_properties = __commonJS({
5667
5667
  }
5668
5668
  });
5669
5669
 
5670
- // ../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
5670
+ // node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
5671
5671
  var require_patternProperties = __commonJS({
5672
- "../../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js"(exports2) {
5672
+ "node_modules/ajv/dist/vocabularies/applicator/patternProperties.js"(exports2) {
5673
5673
  "use strict";
5674
5674
  Object.defineProperty(exports2, "__esModule", { value: true });
5675
5675
  var code_1 = require_code2();
@@ -5741,9 +5741,9 @@ var require_patternProperties = __commonJS({
5741
5741
  }
5742
5742
  });
5743
5743
 
5744
- // ../../node_modules/ajv/dist/vocabularies/applicator/not.js
5744
+ // node_modules/ajv/dist/vocabularies/applicator/not.js
5745
5745
  var require_not = __commonJS({
5746
- "../../node_modules/ajv/dist/vocabularies/applicator/not.js"(exports2) {
5746
+ "node_modules/ajv/dist/vocabularies/applicator/not.js"(exports2) {
5747
5747
  "use strict";
5748
5748
  Object.defineProperty(exports2, "__esModule", { value: true });
5749
5749
  var util_1 = require_util();
@@ -5772,9 +5772,9 @@ var require_not = __commonJS({
5772
5772
  }
5773
5773
  });
5774
5774
 
5775
- // ../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js
5775
+ // node_modules/ajv/dist/vocabularies/applicator/anyOf.js
5776
5776
  var require_anyOf = __commonJS({
5777
- "../../node_modules/ajv/dist/vocabularies/applicator/anyOf.js"(exports2) {
5777
+ "node_modules/ajv/dist/vocabularies/applicator/anyOf.js"(exports2) {
5778
5778
  "use strict";
5779
5779
  Object.defineProperty(exports2, "__esModule", { value: true });
5780
5780
  var code_1 = require_code2();
@@ -5789,9 +5789,9 @@ var require_anyOf = __commonJS({
5789
5789
  }
5790
5790
  });
5791
5791
 
5792
- // ../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js
5792
+ // node_modules/ajv/dist/vocabularies/applicator/oneOf.js
5793
5793
  var require_oneOf = __commonJS({
5794
- "../../node_modules/ajv/dist/vocabularies/applicator/oneOf.js"(exports2) {
5794
+ "node_modules/ajv/dist/vocabularies/applicator/oneOf.js"(exports2) {
5795
5795
  "use strict";
5796
5796
  Object.defineProperty(exports2, "__esModule", { value: true });
5797
5797
  var codegen_1 = require_codegen();
@@ -5847,9 +5847,9 @@ var require_oneOf = __commonJS({
5847
5847
  }
5848
5848
  });
5849
5849
 
5850
- // ../../node_modules/ajv/dist/vocabularies/applicator/allOf.js
5850
+ // node_modules/ajv/dist/vocabularies/applicator/allOf.js
5851
5851
  var require_allOf = __commonJS({
5852
- "../../node_modules/ajv/dist/vocabularies/applicator/allOf.js"(exports2) {
5852
+ "node_modules/ajv/dist/vocabularies/applicator/allOf.js"(exports2) {
5853
5853
  "use strict";
5854
5854
  Object.defineProperty(exports2, "__esModule", { value: true });
5855
5855
  var util_1 = require_util();
@@ -5874,9 +5874,9 @@ var require_allOf = __commonJS({
5874
5874
  }
5875
5875
  });
5876
5876
 
5877
- // ../../node_modules/ajv/dist/vocabularies/applicator/if.js
5877
+ // node_modules/ajv/dist/vocabularies/applicator/if.js
5878
5878
  var require_if = __commonJS({
5879
- "../../node_modules/ajv/dist/vocabularies/applicator/if.js"(exports2) {
5879
+ "node_modules/ajv/dist/vocabularies/applicator/if.js"(exports2) {
5880
5880
  "use strict";
5881
5881
  Object.defineProperty(exports2, "__esModule", { value: true });
5882
5882
  var codegen_1 = require_codegen();
@@ -5943,9 +5943,9 @@ var require_if = __commonJS({
5943
5943
  }
5944
5944
  });
5945
5945
 
5946
- // ../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js
5946
+ // node_modules/ajv/dist/vocabularies/applicator/thenElse.js
5947
5947
  var require_thenElse = __commonJS({
5948
- "../../node_modules/ajv/dist/vocabularies/applicator/thenElse.js"(exports2) {
5948
+ "node_modules/ajv/dist/vocabularies/applicator/thenElse.js"(exports2) {
5949
5949
  "use strict";
5950
5950
  Object.defineProperty(exports2, "__esModule", { value: true });
5951
5951
  var util_1 = require_util();
@@ -5961,9 +5961,9 @@ var require_thenElse = __commonJS({
5961
5961
  }
5962
5962
  });
5963
5963
 
5964
- // ../../node_modules/ajv/dist/vocabularies/applicator/index.js
5964
+ // node_modules/ajv/dist/vocabularies/applicator/index.js
5965
5965
  var require_applicator = __commonJS({
5966
- "../../node_modules/ajv/dist/vocabularies/applicator/index.js"(exports2) {
5966
+ "node_modules/ajv/dist/vocabularies/applicator/index.js"(exports2) {
5967
5967
  "use strict";
5968
5968
  Object.defineProperty(exports2, "__esModule", { value: true });
5969
5969
  var additionalItems_1 = require_additionalItems();
@@ -6009,9 +6009,9 @@ var require_applicator = __commonJS({
6009
6009
  }
6010
6010
  });
6011
6011
 
6012
- // ../../node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js
6012
+ // node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js
6013
6013
  var require_dynamicAnchor = __commonJS({
6014
- "../../node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js"(exports2) {
6014
+ "node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js"(exports2) {
6015
6015
  "use strict";
6016
6016
  Object.defineProperty(exports2, "__esModule", { value: true });
6017
6017
  exports2.dynamicAnchor = void 0;
@@ -6044,9 +6044,9 @@ var require_dynamicAnchor = __commonJS({
6044
6044
  }
6045
6045
  });
6046
6046
 
6047
- // ../../node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js
6047
+ // node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js
6048
6048
  var require_dynamicRef = __commonJS({
6049
- "../../node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js"(exports2) {
6049
+ "node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js"(exports2) {
6050
6050
  "use strict";
6051
6051
  Object.defineProperty(exports2, "__esModule", { value: true });
6052
6052
  exports2.dynamicRef = void 0;
@@ -6090,9 +6090,9 @@ var require_dynamicRef = __commonJS({
6090
6090
  }
6091
6091
  });
6092
6092
 
6093
- // ../../node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js
6093
+ // node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js
6094
6094
  var require_recursiveAnchor = __commonJS({
6095
- "../../node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js"(exports2) {
6095
+ "node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js"(exports2) {
6096
6096
  "use strict";
6097
6097
  Object.defineProperty(exports2, "__esModule", { value: true });
6098
6098
  var dynamicAnchor_1 = require_dynamicAnchor();
@@ -6111,9 +6111,9 @@ var require_recursiveAnchor = __commonJS({
6111
6111
  }
6112
6112
  });
6113
6113
 
6114
- // ../../node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js
6114
+ // node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js
6115
6115
  var require_recursiveRef = __commonJS({
6116
- "../../node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js"(exports2) {
6116
+ "node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js"(exports2) {
6117
6117
  "use strict";
6118
6118
  Object.defineProperty(exports2, "__esModule", { value: true });
6119
6119
  var dynamicRef_1 = require_dynamicRef();
@@ -6126,9 +6126,9 @@ var require_recursiveRef = __commonJS({
6126
6126
  }
6127
6127
  });
6128
6128
 
6129
- // ../../node_modules/ajv/dist/vocabularies/dynamic/index.js
6129
+ // node_modules/ajv/dist/vocabularies/dynamic/index.js
6130
6130
  var require_dynamic = __commonJS({
6131
- "../../node_modules/ajv/dist/vocabularies/dynamic/index.js"(exports2) {
6131
+ "node_modules/ajv/dist/vocabularies/dynamic/index.js"(exports2) {
6132
6132
  "use strict";
6133
6133
  Object.defineProperty(exports2, "__esModule", { value: true });
6134
6134
  var dynamicAnchor_1 = require_dynamicAnchor();
@@ -6140,9 +6140,9 @@ var require_dynamic = __commonJS({
6140
6140
  }
6141
6141
  });
6142
6142
 
6143
- // ../../node_modules/ajv/dist/vocabularies/validation/dependentRequired.js
6143
+ // node_modules/ajv/dist/vocabularies/validation/dependentRequired.js
6144
6144
  var require_dependentRequired = __commonJS({
6145
- "../../node_modules/ajv/dist/vocabularies/validation/dependentRequired.js"(exports2) {
6145
+ "node_modules/ajv/dist/vocabularies/validation/dependentRequired.js"(exports2) {
6146
6146
  "use strict";
6147
6147
  Object.defineProperty(exports2, "__esModule", { value: true });
6148
6148
  var dependencies_1 = require_dependencies();
@@ -6157,9 +6157,9 @@ var require_dependentRequired = __commonJS({
6157
6157
  }
6158
6158
  });
6159
6159
 
6160
- // ../../node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js
6160
+ // node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js
6161
6161
  var require_dependentSchemas = __commonJS({
6162
- "../../node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js"(exports2) {
6162
+ "node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js"(exports2) {
6163
6163
  "use strict";
6164
6164
  Object.defineProperty(exports2, "__esModule", { value: true });
6165
6165
  var dependencies_1 = require_dependencies();
@@ -6173,9 +6173,9 @@ var require_dependentSchemas = __commonJS({
6173
6173
  }
6174
6174
  });
6175
6175
 
6176
- // ../../node_modules/ajv/dist/vocabularies/validation/limitContains.js
6176
+ // node_modules/ajv/dist/vocabularies/validation/limitContains.js
6177
6177
  var require_limitContains = __commonJS({
6178
- "../../node_modules/ajv/dist/vocabularies/validation/limitContains.js"(exports2) {
6178
+ "node_modules/ajv/dist/vocabularies/validation/limitContains.js"(exports2) {
6179
6179
  "use strict";
6180
6180
  Object.defineProperty(exports2, "__esModule", { value: true });
6181
6181
  var util_1 = require_util();
@@ -6193,9 +6193,9 @@ var require_limitContains = __commonJS({
6193
6193
  }
6194
6194
  });
6195
6195
 
6196
- // ../../node_modules/ajv/dist/vocabularies/next.js
6196
+ // node_modules/ajv/dist/vocabularies/next.js
6197
6197
  var require_next = __commonJS({
6198
- "../../node_modules/ajv/dist/vocabularies/next.js"(exports2) {
6198
+ "node_modules/ajv/dist/vocabularies/next.js"(exports2) {
6199
6199
  "use strict";
6200
6200
  Object.defineProperty(exports2, "__esModule", { value: true });
6201
6201
  var dependentRequired_1 = require_dependentRequired();
@@ -6206,9 +6206,9 @@ var require_next = __commonJS({
6206
6206
  }
6207
6207
  });
6208
6208
 
6209
- // ../../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js
6209
+ // node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js
6210
6210
  var require_unevaluatedProperties = __commonJS({
6211
- "../../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js"(exports2) {
6211
+ "node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js"(exports2) {
6212
6212
  "use strict";
6213
6213
  Object.defineProperty(exports2, "__esModule", { value: true });
6214
6214
  var codegen_1 = require_codegen();
@@ -6272,9 +6272,9 @@ var require_unevaluatedProperties = __commonJS({
6272
6272
  }
6273
6273
  });
6274
6274
 
6275
- // ../../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js
6275
+ // node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js
6276
6276
  var require_unevaluatedItems = __commonJS({
6277
- "../../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js"(exports2) {
6277
+ "node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js"(exports2) {
6278
6278
  "use strict";
6279
6279
  Object.defineProperty(exports2, "__esModule", { value: true });
6280
6280
  var codegen_1 = require_codegen();
@@ -6316,9 +6316,9 @@ var require_unevaluatedItems = __commonJS({
6316
6316
  }
6317
6317
  });
6318
6318
 
6319
- // ../../node_modules/ajv/dist/vocabularies/unevaluated/index.js
6319
+ // node_modules/ajv/dist/vocabularies/unevaluated/index.js
6320
6320
  var require_unevaluated = __commonJS({
6321
- "../../node_modules/ajv/dist/vocabularies/unevaluated/index.js"(exports2) {
6321
+ "node_modules/ajv/dist/vocabularies/unevaluated/index.js"(exports2) {
6322
6322
  "use strict";
6323
6323
  Object.defineProperty(exports2, "__esModule", { value: true });
6324
6324
  var unevaluatedProperties_1 = require_unevaluatedProperties();
@@ -6328,9 +6328,9 @@ var require_unevaluated = __commonJS({
6328
6328
  }
6329
6329
  });
6330
6330
 
6331
- // ../../node_modules/ajv/dist/vocabularies/format/format.js
6331
+ // node_modules/ajv/dist/vocabularies/format/format.js
6332
6332
  var require_format = __commonJS({
6333
- "../../node_modules/ajv/dist/vocabularies/format/format.js"(exports2) {
6333
+ "node_modules/ajv/dist/vocabularies/format/format.js"(exports2) {
6334
6334
  "use strict";
6335
6335
  Object.defineProperty(exports2, "__esModule", { value: true });
6336
6336
  var codegen_1 = require_codegen();
@@ -6418,9 +6418,9 @@ var require_format = __commonJS({
6418
6418
  }
6419
6419
  });
6420
6420
 
6421
- // ../../node_modules/ajv/dist/vocabularies/format/index.js
6421
+ // node_modules/ajv/dist/vocabularies/format/index.js
6422
6422
  var require_format2 = __commonJS({
6423
- "../../node_modules/ajv/dist/vocabularies/format/index.js"(exports2) {
6423
+ "node_modules/ajv/dist/vocabularies/format/index.js"(exports2) {
6424
6424
  "use strict";
6425
6425
  Object.defineProperty(exports2, "__esModule", { value: true });
6426
6426
  var format_1 = require_format();
@@ -6429,9 +6429,9 @@ var require_format2 = __commonJS({
6429
6429
  }
6430
6430
  });
6431
6431
 
6432
- // ../../node_modules/ajv/dist/vocabularies/metadata.js
6432
+ // node_modules/ajv/dist/vocabularies/metadata.js
6433
6433
  var require_metadata = __commonJS({
6434
- "../../node_modules/ajv/dist/vocabularies/metadata.js"(exports2) {
6434
+ "node_modules/ajv/dist/vocabularies/metadata.js"(exports2) {
6435
6435
  "use strict";
6436
6436
  Object.defineProperty(exports2, "__esModule", { value: true });
6437
6437
  exports2.contentVocabulary = exports2.metadataVocabulary = void 0;
@@ -6452,9 +6452,9 @@ var require_metadata = __commonJS({
6452
6452
  }
6453
6453
  });
6454
6454
 
6455
- // ../../node_modules/ajv/dist/vocabularies/draft2020.js
6455
+ // node_modules/ajv/dist/vocabularies/draft2020.js
6456
6456
  var require_draft2020 = __commonJS({
6457
- "../../node_modules/ajv/dist/vocabularies/draft2020.js"(exports2) {
6457
+ "node_modules/ajv/dist/vocabularies/draft2020.js"(exports2) {
6458
6458
  "use strict";
6459
6459
  Object.defineProperty(exports2, "__esModule", { value: true });
6460
6460
  var core_1 = require_core2();
@@ -6480,9 +6480,9 @@ var require_draft2020 = __commonJS({
6480
6480
  }
6481
6481
  });
6482
6482
 
6483
- // ../../node_modules/ajv/dist/vocabularies/discriminator/types.js
6483
+ // node_modules/ajv/dist/vocabularies/discriminator/types.js
6484
6484
  var require_types = __commonJS({
6485
- "../../node_modules/ajv/dist/vocabularies/discriminator/types.js"(exports2) {
6485
+ "node_modules/ajv/dist/vocabularies/discriminator/types.js"(exports2) {
6486
6486
  "use strict";
6487
6487
  Object.defineProperty(exports2, "__esModule", { value: true });
6488
6488
  exports2.DiscrError = void 0;
@@ -6494,9 +6494,9 @@ var require_types = __commonJS({
6494
6494
  }
6495
6495
  });
6496
6496
 
6497
- // ../../node_modules/ajv/dist/vocabularies/discriminator/index.js
6497
+ // node_modules/ajv/dist/vocabularies/discriminator/index.js
6498
6498
  var require_discriminator = __commonJS({
6499
- "../../node_modules/ajv/dist/vocabularies/discriminator/index.js"(exports2) {
6499
+ "node_modules/ajv/dist/vocabularies/discriminator/index.js"(exports2) {
6500
6500
  "use strict";
6501
6501
  Object.defineProperty(exports2, "__esModule", { value: true });
6502
6502
  var codegen_1 = require_codegen();
@@ -6599,9 +6599,9 @@ var require_discriminator = __commonJS({
6599
6599
  }
6600
6600
  });
6601
6601
 
6602
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/schema.json
6602
+ // node_modules/ajv/dist/refs/json-schema-2020-12/schema.json
6603
6603
  var require_schema = __commonJS({
6604
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/schema.json"(exports2, module2) {
6604
+ "node_modules/ajv/dist/refs/json-schema-2020-12/schema.json"(exports2, module2) {
6605
6605
  module2.exports = {
6606
6606
  $schema: "https://json-schema.org/draft/2020-12/schema",
6607
6607
  $id: "https://json-schema.org/draft/2020-12/schema",
@@ -6659,9 +6659,9 @@ var require_schema = __commonJS({
6659
6659
  }
6660
6660
  });
6661
6661
 
6662
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json
6662
+ // node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json
6663
6663
  var require_applicator2 = __commonJS({
6664
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json"(exports2, module2) {
6664
+ "node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json"(exports2, module2) {
6665
6665
  module2.exports = {
6666
6666
  $schema: "https://json-schema.org/draft/2020-12/schema",
6667
6667
  $id: "https://json-schema.org/draft/2020-12/meta/applicator",
@@ -6712,9 +6712,9 @@ var require_applicator2 = __commonJS({
6712
6712
  }
6713
6713
  });
6714
6714
 
6715
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json
6715
+ // node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json
6716
6716
  var require_unevaluated2 = __commonJS({
6717
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json"(exports2, module2) {
6717
+ "node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json"(exports2, module2) {
6718
6718
  module2.exports = {
6719
6719
  $schema: "https://json-schema.org/draft/2020-12/schema",
6720
6720
  $id: "https://json-schema.org/draft/2020-12/meta/unevaluated",
@@ -6732,9 +6732,9 @@ var require_unevaluated2 = __commonJS({
6732
6732
  }
6733
6733
  });
6734
6734
 
6735
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json
6735
+ // node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json
6736
6736
  var require_content = __commonJS({
6737
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json"(exports2, module2) {
6737
+ "node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json"(exports2, module2) {
6738
6738
  module2.exports = {
6739
6739
  $schema: "https://json-schema.org/draft/2020-12/schema",
6740
6740
  $id: "https://json-schema.org/draft/2020-12/meta/content",
@@ -6753,9 +6753,9 @@ var require_content = __commonJS({
6753
6753
  }
6754
6754
  });
6755
6755
 
6756
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json
6756
+ // node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json
6757
6757
  var require_core3 = __commonJS({
6758
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json"(exports2, module2) {
6758
+ "node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json"(exports2, module2) {
6759
6759
  module2.exports = {
6760
6760
  $schema: "https://json-schema.org/draft/2020-12/schema",
6761
6761
  $id: "https://json-schema.org/draft/2020-12/meta/core",
@@ -6809,9 +6809,9 @@ var require_core3 = __commonJS({
6809
6809
  }
6810
6810
  });
6811
6811
 
6812
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json
6812
+ // node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json
6813
6813
  var require_format_annotation = __commonJS({
6814
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json"(exports2, module2) {
6814
+ "node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json"(exports2, module2) {
6815
6815
  module2.exports = {
6816
6816
  $schema: "https://json-schema.org/draft/2020-12/schema",
6817
6817
  $id: "https://json-schema.org/draft/2020-12/meta/format-annotation",
@@ -6828,9 +6828,9 @@ var require_format_annotation = __commonJS({
6828
6828
  }
6829
6829
  });
6830
6830
 
6831
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json
6831
+ // node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json
6832
6832
  var require_meta_data = __commonJS({
6833
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json"(exports2, module2) {
6833
+ "node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json"(exports2, module2) {
6834
6834
  module2.exports = {
6835
6835
  $schema: "https://json-schema.org/draft/2020-12/schema",
6836
6836
  $id: "https://json-schema.org/draft/2020-12/meta/meta-data",
@@ -6869,9 +6869,9 @@ var require_meta_data = __commonJS({
6869
6869
  }
6870
6870
  });
6871
6871
 
6872
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json
6872
+ // node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json
6873
6873
  var require_validation2 = __commonJS({
6874
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json"(exports2, module2) {
6874
+ "node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json"(exports2, module2) {
6875
6875
  module2.exports = {
6876
6876
  $schema: "https://json-schema.org/draft/2020-12/schema",
6877
6877
  $id: "https://json-schema.org/draft/2020-12/meta/validation",
@@ -6964,9 +6964,9 @@ var require_validation2 = __commonJS({
6964
6964
  }
6965
6965
  });
6966
6966
 
6967
- // ../../node_modules/ajv/dist/refs/json-schema-2020-12/index.js
6967
+ // node_modules/ajv/dist/refs/json-schema-2020-12/index.js
6968
6968
  var require_json_schema_2020_12 = __commonJS({
6969
- "../../node_modules/ajv/dist/refs/json-schema-2020-12/index.js"(exports2) {
6969
+ "node_modules/ajv/dist/refs/json-schema-2020-12/index.js"(exports2) {
6970
6970
  "use strict";
6971
6971
  Object.defineProperty(exports2, "__esModule", { value: true });
6972
6972
  var metaSchema = require_schema();
@@ -6999,9 +6999,9 @@ var require_json_schema_2020_12 = __commonJS({
6999
6999
  }
7000
7000
  });
7001
7001
 
7002
- // ../../node_modules/ajv/dist/2020.js
7002
+ // node_modules/ajv/dist/2020.js
7003
7003
  var require__ = __commonJS({
7004
- "../../node_modules/ajv/dist/2020.js"(exports2, module2) {
7004
+ "node_modules/ajv/dist/2020.js"(exports2, module2) {
7005
7005
  "use strict";
7006
7006
  Object.defineProperty(exports2, "__esModule", { value: true });
7007
7007
  exports2.MissingRefError = exports2.ValidationError = exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = exports2.Ajv2020 = void 0;
@@ -7076,11 +7076,11 @@ var require__ = __commonJS({
7076
7076
  }
7077
7077
  });
7078
7078
 
7079
- // ../../src/cli/main.ts
7079
+ // src/cli/main.ts
7080
7080
  var fs43 = __toESM(require("node:fs"));
7081
7081
  var path43 = __toESM(require("node:path"));
7082
7082
 
7083
- // ../../src/cli/argv.ts
7083
+ // src/cli/argv.ts
7084
7084
  function isGlobalFlag(s) {
7085
7085
  return s === "--cwd" || s === "--ci" || s === "--json" || s === "--verbose" || s === "--config" || s === "--api-base-url" || s === "--session-path" || s === "--environment" || s === "--env" || s === "--promote" || s === "--no-promote" || s === "--help" || s === "-h" || s === "--version" || s === "-V";
7086
7086
  }
@@ -7167,7 +7167,7 @@ function parseArgv(argv) {
7167
7167
  return { flags, positionals };
7168
7168
  }
7169
7169
 
7170
- // ../../src/cli/exitCodes.ts
7170
+ // src/cli/exitCodes.ts
7171
7171
  var ExitCode = {
7172
7172
  ok: 0,
7173
7173
  usage: 2,
@@ -7180,17 +7180,17 @@ var ExitCode = {
7180
7180
  internal: 99
7181
7181
  };
7182
7182
 
7183
- // ../../src/cli/jsonReporter.ts
7183
+ // src/cli/jsonReporter.ts
7184
7184
  function printJsonLine(envelope) {
7185
7185
  process.stdout.write(`${JSON.stringify(envelope)}
7186
7186
  `);
7187
7187
  }
7188
7188
 
7189
- // ../../src/cli/cliContext.ts
7189
+ // src/cli/cliContext.ts
7190
7190
  var fs2 = __toESM(require("node:fs"));
7191
7191
  var path2 = __toESM(require("path"));
7192
7192
 
7193
- // ../../src/repositoryProvenance.ts
7193
+ // src/repositoryProvenance.ts
7194
7194
  var import_node_child_process = require("node:child_process");
7195
7195
  var fs = __toESM(require("node:fs"));
7196
7196
  var path = __toESM(require("node:path"));
@@ -7356,7 +7356,7 @@ function attachRepositoryProvenance(doc, contextDir2, opts) {
7356
7356
  }
7357
7357
  }
7358
7358
 
7359
- // ../../src/apiBaseUrlResolve.ts
7359
+ // src/apiBaseUrlResolve.ts
7360
7360
  var vscode = __toESM(require_vscode_stub());
7361
7361
  var extensionRoot;
7362
7362
  var cachedExtensionDotEnv = null;
@@ -7365,11 +7365,11 @@ function setApiBaseUrlExtensionRoot(extensionFsPath) {
7365
7365
  cachedExtensionDotEnv = null;
7366
7366
  }
7367
7367
 
7368
- // ../../src/easyspecsBuiltInApiUrls.ts
7368
+ // src/easyspecsBuiltInApiUrls.ts
7369
7369
  var PRODUCTION_SYSTEM_MANAGER_URL = "https://api.easyspecs.ai";
7370
7370
  var STAGING_SYSTEM_MANAGER_URL = "https://system-manager-api.staging.gluecharm.info:8092";
7371
7371
 
7372
- // ../../src/easyspecsApiBaseUrlCli.ts
7372
+ // src/easyspecsApiBaseUrlCli.ts
7373
7373
  function stripTrailingSlash(url) {
7374
7374
  return url.replace(/\/$/, "");
7375
7375
  }
@@ -7386,7 +7386,7 @@ function resolveEasyspecsApiBaseUrlForCli(input) {
7386
7386
  return eff === "staging" ? STAGING_SYSTEM_MANAGER_URL : PRODUCTION_SYSTEM_MANAGER_URL;
7387
7387
  }
7388
7388
 
7389
- // ../../src/cli/cliContext.ts
7389
+ // src/cli/cliContext.ts
7390
7390
  function thisDir() {
7391
7391
  return __dirname;
7392
7392
  }
@@ -7395,30 +7395,47 @@ function resolveRepoRoot(flags) {
7395
7395
  const git = findGitRepoRoot(abs);
7396
7396
  return git ?? abs;
7397
7397
  }
7398
- function resolveExtensionRoot() {
7399
- const env = process.env.EASYSPECS_EXTENSION_ROOT?.trim();
7400
- if (env) {
7401
- return path2.resolve(env);
7398
+ function resolveExtensionRootForCli(repoRoot, config) {
7399
+ const raw = config.easyspecs?.cli?.bundledResourcesRoot?.trim();
7400
+ if (raw) {
7401
+ const resourcesAbs = path2.isAbsolute(raw) ? path2.normalize(raw) : path2.resolve(repoRoot, raw);
7402
+ return path2.resolve(resourcesAbs, "..");
7402
7403
  }
7404
+ const here = thisDir();
7405
+ if (here.includes(`${path2.sep}packages${path2.sep}cli${path2.sep}dist`)) {
7406
+ const adjacentResources = path2.join(here, "..", "resources");
7407
+ if (fs2.existsSync(adjacentResources)) {
7408
+ return path2.resolve(adjacentResources, "..");
7409
+ }
7410
+ return resolveExtensionRootHeuristic();
7411
+ }
7412
+ return path2.resolve(here, "..");
7413
+ }
7414
+ function resolveExtensionRootHeuristic() {
7403
7415
  const here = thisDir();
7404
7416
  if (here.includes(`${path2.sep}packages${path2.sep}cli${path2.sep}dist`)) {
7405
7417
  return path2.resolve(here, "..", "..", "..");
7406
7418
  }
7407
7419
  return path2.resolve(here, "..", "..");
7408
7420
  }
7409
- function resolveOpenCodeAgentsDir() {
7410
- const resEnv = process.env.EASYSPECS_CLI_RESOURCES?.trim();
7411
- if (resEnv) {
7412
- return path2.join(path2.resolve(resEnv), "opencode-agents");
7421
+ function resolveOpenCodeAgentsDir(repoRoot, config) {
7422
+ const raw = config.easyspecs?.cli?.bundledResourcesRoot?.trim();
7423
+ if (raw) {
7424
+ const resourcesAbs = path2.isAbsolute(raw) ? path2.normalize(raw) : path2.resolve(repoRoot, raw);
7425
+ return path2.join(resourcesAbs, "opencode-agents");
7413
7426
  }
7414
7427
  const here = thisDir();
7428
+ const adjacentToDist = path2.join(here, "..", "resources", "opencode-agents");
7415
7429
  if (here.includes(`${path2.sep}packages${path2.sep}cli${path2.sep}dist`)) {
7416
- return path2.join(here, "..", "resources", "opencode-agents");
7430
+ if (fs2.existsSync(path2.join(here, "..", "resources"))) {
7431
+ return adjacentToDist;
7432
+ }
7433
+ return path2.join(resolveExtensionRootHeuristic(), "resources", "opencode-agents");
7417
7434
  }
7418
- return path2.join(resolveExtensionRoot(), "resources", "opencode-agents");
7435
+ return adjacentToDist;
7419
7436
  }
7420
7437
  function initApiBaseUrlForCli(repoRoot, flags, config) {
7421
- const extensionRoot2 = resolveExtensionRoot();
7438
+ const extensionRoot2 = resolveExtensionRootForCli(repoRoot, config);
7422
7439
  setApiBaseUrlExtensionRoot(extensionRoot2);
7423
7440
  return resolveEasyspecsApiBaseUrlForCli({
7424
7441
  flagApiBaseUrl: flags.apiBaseUrl,
@@ -7429,12 +7446,12 @@ function initApiBaseUrlForCli(repoRoot, flags, config) {
7429
7446
  function assertAgentsDirExists(agentsDir) {
7430
7447
  if (!fs2.existsSync(agentsDir)) {
7431
7448
  throw new Error(
7432
- `OpenCode agents directory missing: ${agentsDir}. Set EASYSPECS_EXTENSION_ROOT or EASYSPECS_CLI_RESOURCES, or run \`npm run build:cli\` to copy resources.`
7449
+ `OpenCode agents directory missing: ${agentsDir}. Set easyspecs.cli.bundledResourcesRoot in .easyspecs/config.json to your EasySpecs resources directory (folder containing opencode-agents/), or run "npm run build:cli" so packages/cli ships resources.`
7433
7450
  );
7434
7451
  }
7435
7452
  }
7436
7453
 
7437
- // ../../src/config/openCodeProviderEnv.ts
7454
+ // src/config/openCodeProviderEnv.ts
7438
7455
  var path3 = __toESM(require("node:path"));
7439
7456
  var PROVIDER_TO_ENV = {
7440
7457
  anthropic: "ANTHROPIC_API_KEY",
@@ -7465,7 +7482,7 @@ function buildOpenCodeProviderEnvFromConfig(cfg, repoRoot) {
7465
7482
  return out;
7466
7483
  }
7467
7484
 
7468
- // ../../src/cli/cliSettings.ts
7485
+ // src/cli/cliSettings.ts
7469
7486
  var DEFAULT_OPEN_CODE_TEST_ARGV = [
7470
7487
  "run",
7471
7488
  "--agent",
@@ -7501,7 +7518,8 @@ function mergeEasyspecsCliSettings(cfg, overrides = {}) {
7501
7518
  maxDelayMs: orch.maxDelayMs ?? 48e4,
7502
7519
  maxOuterIterationsPerPhase: maxOuter,
7503
7520
  maxMacroPingPongCycles: orch.maxMacroPingPongCycles ?? 5,
7504
- synthesisRemediationShareBackoff: orch.synthesisRemediationShareBackoff !== false
7521
+ synthesisRemediationShareBackoff: orch.synthesisRemediationShareBackoff !== false,
7522
+ debugPhases: es.macro?.debug === true
7505
7523
  };
7506
7524
  const openCodeChildEnv = buildOpenCodeProviderEnvFromConfig(cfg, overrides.repoRoot);
7507
7525
  const projectConfigOverlay = cfg.easyspecs?.openCodeRuntime?.projectConfigOverlay;
@@ -7527,7 +7545,7 @@ function mergeEasyspecsCliSettings(cfg, overrides = {}) {
7527
7545
  };
7528
7546
  }
7529
7547
 
7530
- // ../../src/cli/cliSettingsDump.ts
7548
+ // src/cli/cliSettingsDump.ts
7531
7549
  function redactMergedCliSettingsForDump(merged) {
7532
7550
  const child = merged.openCodeChildEnv;
7533
7551
  const childRedacted = child && Object.keys(child).length > 0 ? Object.fromEntries(Object.keys(child).map((k) => [k, "(redacted)"])) : {};
@@ -7542,15 +7560,15 @@ function redactMergedCliSettingsForDump(merged) {
7542
7560
  };
7543
7561
  }
7544
7562
 
7545
- // ../../src/config/easyspecsConfigFile.ts
7563
+ // src/config/easyspecsConfigFile.ts
7546
7564
  var fs5 = __toESM(require("node:fs"));
7547
7565
  var path6 = __toESM(require("node:path"));
7548
7566
 
7549
- // ../../src/easySpecsWorkspaceSettingsCore.ts
7567
+ // src/easySpecsWorkspaceSettingsCore.ts
7550
7568
  var fs4 = __toESM(require("node:fs"));
7551
7569
  var path5 = __toESM(require("node:path"));
7552
7570
 
7553
- // ../../src/analysis/easySpecsWorktreeMarker.ts
7571
+ // src/analysis/easySpecsWorktreeMarker.ts
7554
7572
  var fs3 = __toESM(require("fs"));
7555
7573
  var path4 = __toESM(require("path"));
7556
7574
  var EASYSPECS_LOCAL_DIR = ".easyspecs";
@@ -7567,7 +7585,7 @@ function writeAnalysisWorktreeMarker(worktreeRoot, repositoryRoot) {
7567
7585
  `, "utf-8");
7568
7586
  }
7569
7587
 
7570
- // ../../src/easySpecsWorkspaceSettingsCore.ts
7588
+ // src/easySpecsWorkspaceSettingsCore.ts
7571
7589
  var EASYSPECS_WORKSPACE_DIR = EASYSPECS_LOCAL_DIR;
7572
7590
  var EASYSPECS_SETTINGS_JSON = "settings.json";
7573
7591
  var EASYSPECS_SETTINGS_ACE_KEY = "easyspecs.analysis.ace.enabled";
@@ -7616,7 +7634,7 @@ function readAceOfflineLearnAfterSameSessionTraceFromEasySpecsSettingsFile(works
7616
7634
  return typeof v === "boolean" ? v : void 0;
7617
7635
  }
7618
7636
 
7619
- // ../../src/config/easyspecsConfigJson.ts
7637
+ // src/config/easyspecsConfigJson.ts
7620
7638
  function mergeEasyspecsConfigDefaults(defaults, partial) {
7621
7639
  if (!partial) {
7622
7640
  return defaults;
@@ -7640,13 +7658,43 @@ function mergeEasyspecsConfigDefaults(defaults, partial) {
7640
7658
  esIn.analysis
7641
7659
  ),
7642
7660
  orchestration: { ...defEs.orchestration, ...esIn.orchestration },
7643
- openCodeRuntime: mergeOpenCodeRuntime(defEs.openCodeRuntime, esIn.openCodeRuntime)
7661
+ openCodeRuntime: mergeOpenCodeRuntime(defEs.openCodeRuntime, esIn.openCodeRuntime),
7662
+ diagnose: mergeDiagnoseBlock(defEs.diagnose, esIn.diagnose),
7663
+ upload: { ...defEs.upload, ...esIn.upload },
7664
+ macro: { ...defEs.macro, ...esIn.macro },
7665
+ cli: { ...defEs.cli, ...esIn.cli },
7666
+ auth: mergeAuthBlock(defEs.auth, esIn.auth)
7644
7667
  };
7645
7668
  return {
7646
7669
  schemaVersion: partial.schemaVersion ?? defaults.schemaVersion,
7647
7670
  easyspecs: mergedEs
7648
7671
  };
7649
7672
  }
7673
+ function mergeDiagnoseBlock(base, over) {
7674
+ if (!over) {
7675
+ return { ...base };
7676
+ }
7677
+ const zBase = base.zeroReference ?? { maxPercentNonReferenced: null };
7678
+ const zOver = over.zeroReference;
7679
+ const cBase = base.coordinationDuplicates ?? { strict: true };
7680
+ const cOver = over.coordinationDuplicates;
7681
+ return {
7682
+ zeroReference: {
7683
+ maxPercentNonReferenced: zOver?.maxPercentNonReferenced !== void 0 ? zOver.maxPercentNonReferenced : zBase.maxPercentNonReferenced ?? null
7684
+ },
7685
+ coordinationDuplicates: {
7686
+ strict: cOver?.strict !== void 0 ? cOver.strict : cBase.strict !== false
7687
+ }
7688
+ };
7689
+ }
7690
+ function mergeAuthBlock(base, over) {
7691
+ if (!over) {
7692
+ return { ...base };
7693
+ }
7694
+ return {
7695
+ ciLogin: { ...base.ciLogin, ...over.ciLogin }
7696
+ };
7697
+ }
7650
7698
  function mergeAnalysisBlock(base, over) {
7651
7699
  if (!over || Object.keys(over).length === 0) {
7652
7700
  return { ...base };
@@ -7707,7 +7755,7 @@ function getDefaultEasyspecsConfig() {
7707
7755
  projectConfigOverlay: {}
7708
7756
  };
7709
7757
  return {
7710
- schemaVersion: 1,
7758
+ schemaVersion: 2,
7711
7759
  easyspecs: {
7712
7760
  deploymentEnvironment: "production",
7713
7761
  apiBaseUrl: PRODUCTION_SYSTEM_MANAGER_URL,
@@ -7722,12 +7770,20 @@ function getDefaultEasyspecsConfig() {
7722
7770
  promoteContextToWorkspace: true
7723
7771
  },
7724
7772
  orchestration: {},
7725
- openCodeRuntime
7773
+ openCodeRuntime,
7774
+ diagnose: {
7775
+ zeroReference: { maxPercentNonReferenced: null },
7776
+ coordinationDuplicates: { strict: true }
7777
+ },
7778
+ upload: { contextDirectory: "" },
7779
+ macro: { debug: false },
7780
+ cli: { bundledResourcesRoot: "" },
7781
+ auth: { ciLogin: {} }
7726
7782
  }
7727
7783
  };
7728
7784
  }
7729
7785
 
7730
- // ../../src/config/easyspecsConfigFile.ts
7786
+ // src/config/easyspecsConfigFile.ts
7731
7787
  var DIRNAME = ".easyspecs";
7732
7788
  var CONFIG_BASENAME = "config.json";
7733
7789
  var LEGACY_CLI_JSON = "cli.json";
@@ -7897,7 +7953,7 @@ function updateEasyspecsConfig(repoRoot, patch, opts) {
7897
7953
  return merged;
7898
7954
  }
7899
7955
 
7900
- // ../../src/config/easyspecsConfigRedact.ts
7956
+ // src/config/easyspecsConfigRedact.ts
7901
7957
  function redactEasyspecsConfigRootForDump(cfg) {
7902
7958
  const o = JSON.parse(JSON.stringify(cfg));
7903
7959
  const es = o.easyspecs;
@@ -7910,10 +7966,15 @@ function redactEasyspecsConfigRootForDump(cfg) {
7910
7966
  }
7911
7967
  }
7912
7968
  }
7969
+ const authCi = es?.auth;
7970
+ const ciLogin = authCi?.ciLogin;
7971
+ if (ciLogin && typeof ciLogin === "object" && "password" in ciLogin) {
7972
+ ciLogin.password = "(redacted)";
7973
+ }
7913
7974
  return o;
7914
7975
  }
7915
7976
 
7916
- // ../../src/cli/cliFileWorkspaceState.ts
7977
+ // src/cli/cliFileWorkspaceState.ts
7917
7978
  var fs6 = __toESM(require("node:fs"));
7918
7979
  var path7 = __toESM(require("node:path"));
7919
7980
  function createFileBackedWorkspaceState(repoRoot) {
@@ -7953,11 +8014,11 @@ function createFileBackedWorkspaceState(repoRoot) {
7953
8014
  return { workspaceState };
7954
8015
  }
7955
8016
 
7956
- // ../../src/analysis/contextArtefactPipeline.ts
8017
+ // src/analysis/contextArtefactPipeline.ts
7957
8018
  var fs27 = __toESM(require("fs"));
7958
8019
  var path25 = __toESM(require("path"));
7959
8020
 
7960
- // ../../src/analysis/analysisDynamicTestSteps.ts
8021
+ // src/analysis/analysisDynamicTestSteps.ts
7961
8022
  var fs7 = __toESM(require("fs"));
7962
8023
  var path8 = __toESM(require("path"));
7963
8024
  var FE_CODE = /^FE-\d+$/;
@@ -8225,15 +8286,15 @@ function discoverDynamicAnalysisTestSteps(contextDir2) {
8225
8286
  };
8226
8287
  }
8227
8288
 
8228
- // ../../src/analysis/materializeOpenCodeAgents.ts
8289
+ // src/analysis/materializeOpenCodeAgents.ts
8229
8290
  var fs10 = __toESM(require("fs"));
8230
8291
  var path11 = __toESM(require("path"));
8231
8292
 
8232
- // ../../src/analysis/applyAceMaterializedAgents.ts
8293
+ // src/analysis/applyAceMaterializedAgents.ts
8233
8294
  var fs9 = __toESM(require("fs"));
8234
8295
  var path10 = __toESM(require("path"));
8235
8296
 
8236
- // ../../src/analysis/acePaths.ts
8297
+ // src/analysis/acePaths.ts
8237
8298
  var path9 = __toESM(require("path"));
8238
8299
  var ACE_LEARNINGS_DIR = "learnings";
8239
8300
  var ACE_OVERLAYS_SUBDIR = "overlays";
@@ -8284,7 +8345,7 @@ function opencodeAceSchemaPath(worktreeRoot, basename12) {
8284
8345
  return path9.join(worktreeRoot, ".opencode", "schemas", "ace", basename12);
8285
8346
  }
8286
8347
 
8287
- // ../../src/analysis/aceJsonValidate.ts
8348
+ // src/analysis/aceJsonValidate.ts
8288
8349
  var fs8 = __toESM(require("fs"));
8289
8350
  var import__ = __toESM(require__());
8290
8351
  function stripUtf8Bom2(s) {
@@ -8415,7 +8476,7 @@ function validateAceJsonValue(data, schemaAbsolutePath) {
8415
8476
  return { ok: false, kind: "schema", message: "ACE JSON Schema validation failed", errorsText };
8416
8477
  }
8417
8478
 
8418
- // ../../src/analysis/applyAceMaterializedAgents.ts
8479
+ // src/analysis/applyAceMaterializedAgents.ts
8419
8480
  function splitYamlFrontmatter(raw) {
8420
8481
  if (!raw.startsWith("---\n")) {
8421
8482
  return { frontmatter: "", body: raw };
@@ -8568,7 +8629,7 @@ ${extra}
8568
8629
  }
8569
8630
  }
8570
8631
 
8571
- // ../../src/analysis/materializeOpenCodeAgents.ts
8632
+ // src/analysis/materializeOpenCodeAgents.ts
8572
8633
  function posixFsPath(absPath) {
8573
8634
  return path11.resolve(absPath).split(path11.sep).join("/");
8574
8635
  }
@@ -8696,11 +8757,11 @@ function materializeOpenCodeAgentsWithAce(extensionResourcesAgents, analysisChec
8696
8757
  applyAceToMaterializedAgents(analysisCheckoutRoot, ace);
8697
8758
  }
8698
8759
 
8699
- // ../../src/analysis/openCodeTestAgent.ts
8760
+ // src/analysis/openCodeTestAgent.ts
8700
8761
  var fs20 = __toESM(require("fs"));
8701
8762
  var path18 = __toESM(require("path"));
8702
8763
 
8703
- // ../../src/analysis/promptTemplates.ts
8764
+ // src/analysis/promptTemplates.ts
8704
8765
  function fillMarkdownPrompt(p) {
8705
8766
  return [
8706
8767
  `You are OpenCode agent "${p.agentId}" (display name: ${p.agentDisplayName}).`,
@@ -8798,7 +8859,7 @@ function fillListJsonPrompt(p) {
8798
8859
  ].join("\n");
8799
8860
  }
8800
8861
 
8801
- // ../../src/analysis/contextSynthesis.ts
8862
+ // src/analysis/contextSynthesis.ts
8802
8863
  var CONTEXT_SYNTHESIS_TEST_STEP_ORDER = [
8803
8864
  "docsProject",
8804
8865
  "architecture",
@@ -8848,14 +8909,14 @@ function synthesisStepLabel(step, ctx) {
8848
8909
  return m[step];
8849
8910
  }
8850
8911
 
8851
- // ../../src/analysis/aceTracePhase.ts
8912
+ // src/analysis/aceTracePhase.ts
8852
8913
  var fs15 = __toESM(require("fs"));
8853
8914
  var path15 = __toESM(require("path"));
8854
8915
 
8855
- // ../../src/opencodeCli.ts
8916
+ // src/opencodeCli.ts
8856
8917
  var import_child_process = require("child_process");
8857
8918
 
8858
- // ../../src/analysis/openCodeSessionStewardship.ts
8919
+ // src/analysis/openCodeSessionStewardship.ts
8859
8920
  var TITLE_MAX_LEN = 80;
8860
8921
  function isNonEmptyString(v) {
8861
8922
  return typeof v === "string" && v.trim().length > 0;
@@ -8977,7 +9038,7 @@ function logOpenCodeSessionFollowUpStart(diagnosticLog, p) {
8977
9038
  );
8978
9039
  }
8979
9040
 
8980
- // ../../src/opencodeCli.ts
9041
+ // src/opencodeCli.ts
8981
9042
  var USE_SHELL = process.platform === "win32";
8982
9043
  function resolveExecutable(executable) {
8983
9044
  const t = executable?.trim();
@@ -9092,9 +9153,9 @@ function runOpenCodeAgent(cwd, args, options) {
9092
9153
  const cmd = resolveExecutable(options?.executable);
9093
9154
  const log = options?.diagnosticLog;
9094
9155
  const sig = options?.signal;
9095
- log?.(`[OpenCode] command: ${formatCliCommandForLog(cmd, args)}`);
9096
- log?.(`[OpenCode] cwd: ${JSON.stringify(cwd)}`);
9097
- log?.(`[OpenCode] argv: ${JSON.stringify(args)}`);
9156
+ log?.(`[AgentCode] command: ${formatCliCommandForLog(cmd, args)}`);
9157
+ log?.(`[AgentCode] cwd: ${JSON.stringify(cwd)}`);
9158
+ log?.(`[AgentCode] argv: ${JSON.stringify(args)}`);
9098
9159
  return new Promise((resolve15) => {
9099
9160
  if (sig?.aborted) {
9100
9161
  resolve15({ ok: false, message: "Stopped by user.", cancelled: true });
@@ -9139,7 +9200,7 @@ function runOpenCodeAgent(cwd, args, options) {
9139
9200
  });
9140
9201
  const finishDiag = (label, code, dumpStreams) => {
9141
9202
  log?.(
9142
- `[OpenCode] ${label} exitCode=${code === null ? "null" : String(code)} stderrBytes=${stderr.length} stdoutBytes=${stdout.length}`
9203
+ `[AgentCode] ${label} exitCode=${code === null ? "null" : String(code)} stderrBytes=${stderr.length} stdoutBytes=${stdout.length}`
9143
9204
  );
9144
9205
  if (!dumpStreams) {
9145
9206
  return;
@@ -9147,16 +9208,16 @@ function runOpenCodeAgent(cwd, args, options) {
9147
9208
  const errBody = stderr.trim();
9148
9209
  const outBody = stdout.trim();
9149
9210
  if (errBody) {
9150
- log?.(`[OpenCode] stderr:
9211
+ log?.(`[AgentCode] stderr:
9151
9212
  ${truncateForDiag(errBody, DIAG_STDERR_MAX)}`);
9152
9213
  } else {
9153
- log?.("[OpenCode] stderr: (empty)");
9214
+ log?.("[AgentCode] stderr: (empty)");
9154
9215
  }
9155
9216
  if (outBody) {
9156
- log?.(`[OpenCode] stdout:
9217
+ log?.(`[AgentCode] stdout:
9157
9218
  ${truncateForDiag(outBody, DIAG_STDOUT_MAX)}`);
9158
9219
  } else {
9159
- log?.("[OpenCode] stdout: (empty)");
9220
+ log?.("[AgentCode] stdout: (empty)");
9160
9221
  }
9161
9222
  };
9162
9223
  const settle = (result, diag) => {
@@ -9200,7 +9261,7 @@ ${truncateForDiag(outBody, DIAG_STDOUT_MAX)}`);
9200
9261
  child.on("error", (err) => {
9201
9262
  clearTimeout(timer);
9202
9263
  clearAbortHandler();
9203
- log?.(`[OpenCode] spawn error: ${err.message}`);
9264
+ log?.(`[AgentCode] spawn error: ${err.message}`);
9204
9265
  settle({
9205
9266
  ok: false,
9206
9267
  message: err.message
@@ -9241,7 +9302,7 @@ ${truncateForDiag(outBody, DIAG_STDOUT_MAX)}`);
9241
9302
  });
9242
9303
  }
9243
9304
 
9244
- // ../../src/analysis/aceTraceNormalize.ts
9305
+ // src/analysis/aceTraceNormalize.ts
9245
9306
  var fs11 = __toESM(require("fs"));
9246
9307
  var ACE_VERSION = "1.0.0-draft";
9247
9308
  var REASONING_PHASES = /* @__PURE__ */ new Set([
@@ -9442,11 +9503,11 @@ function rewriteAceTraceFileWithCanonicalEnvelope(traceAbsolutePath, canonical,
9442
9503
  return true;
9443
9504
  }
9444
9505
 
9445
- // ../../src/analysis/aceOfflineLearn.ts
9506
+ // src/analysis/aceOfflineLearn.ts
9446
9507
  var fs14 = __toESM(require("fs"));
9447
9508
  var path14 = __toESM(require("path"));
9448
9509
 
9449
- // ../../src/analysis/aceCuratorApplier.ts
9510
+ // src/analysis/aceCuratorApplier.ts
9450
9511
  var fs12 = __toESM(require("fs"));
9451
9512
  var path12 = __toESM(require("path"));
9452
9513
  function writeJson(pathAbs, obj) {
@@ -9564,7 +9625,7 @@ function applyAceCuratorDeltaFile(worktreeRoot, deltaAbsolutePath, log) {
9564
9625
  return { ok: true, message: "Applied curator delta" };
9565
9626
  }
9566
9627
 
9567
- // ../../src/analysis/aceOfflineLearnFallbacks.ts
9628
+ // src/analysis/aceOfflineLearnFallbacks.ts
9568
9629
  var fs13 = __toESM(require("fs"));
9569
9630
  var path13 = __toESM(require("path"));
9570
9631
  var ACE_VERSION2 = "1.0.0-draft";
@@ -9596,7 +9657,7 @@ function appendAceConsolidatedSessionRecord(contextDir2, record, diagnosticLog)
9596
9657
  diagnosticLog?.(`[ace] consolidated session record appended \u2014 ${rel}`);
9597
9658
  }
9598
9659
 
9599
- // ../../src/analysis/aceOfflineLearn.ts
9660
+ // src/analysis/aceOfflineLearn.ts
9600
9661
  var ACE_REFLECTOR_AGENT_STEM = "agent-ace-reflector";
9601
9662
  var ACE_CURATOR_AGENT_STEM = "agent-ace-curator";
9602
9663
  function expandArgvTemplate(template, vars) {
@@ -9928,7 +9989,7 @@ async function runAceOfflineLearnFromTrace(traceAbsolutePath, opts) {
9928
9989
  };
9929
9990
  }
9930
9991
 
9931
- // ../../src/analysis/aceTracePhase.ts
9992
+ // src/analysis/aceTracePhase.ts
9932
9993
  var ACE_TRACE_RECORDER_AGENT_STEM = "agent-ace-trace-recorder";
9933
9994
  function expandArgvTemplate2(template, vars) {
9934
9995
  return template.map((part) => {
@@ -10136,7 +10197,7 @@ async function runAceTracePhase(params) {
10136
10197
  return { ok: true, message: "ACE trace OK", traceAbsolutePath: traceAbs };
10137
10198
  }
10138
10199
 
10139
- // ../../src/analysis/coordinationListJsonValidate.ts
10200
+ // src/analysis/coordinationListJsonValidate.ts
10140
10201
  var fs16 = __toESM(require("fs"));
10141
10202
  var import__2 = __toESM(require__());
10142
10203
  function stripUtf8Bom3(s) {
@@ -10353,7 +10414,7 @@ function formatCoordinationJsonRepairAppendix(outputBasename, failure, rawFilePr
10353
10414
  return lines.join("\n");
10354
10415
  }
10355
10416
 
10356
- // ../../src/analysis/markdownEvidenceIndexValidate.ts
10417
+ // src/analysis/markdownEvidenceIndexValidate.ts
10357
10418
  var fs17 = __toESM(require("fs"));
10358
10419
  var EVIDENCE_HEADING = "## Evidence index";
10359
10420
  function evidenceIndexMentionsReadmeMd(body) {
@@ -10522,7 +10583,7 @@ function formatMarkdownEvidenceRepairAppendix(outputFileAbsolute, kind = "empty"
10522
10583
  ].join("\n");
10523
10584
  }
10524
10585
 
10525
- // ../../src/analysis/openQuestionResolution.ts
10586
+ // src/analysis/openQuestionResolution.ts
10526
10587
  var fs18 = __toESM(require("fs"));
10527
10588
  var path16 = __toESM(require("path"));
10528
10589
  var OPEN_QUESTION_RESOLUTION_JSON_BASENAME = "open-question-resolution.json";
@@ -10582,7 +10643,7 @@ function deleteOpenQuestionResolutionFile(worktreeRoot) {
10582
10643
  }
10583
10644
  }
10584
10645
 
10585
- // ../../src/analysis/openQuestionsSectionValidate.ts
10646
+ // src/analysis/openQuestionsSectionValidate.ts
10586
10647
  var fs19 = __toESM(require("fs"));
10587
10648
  var path17 = __toESM(require("path"));
10588
10649
  var CANONICAL_NORMALIZED = "open questions";
@@ -10749,7 +10810,7 @@ function formatOpenQuestionsProducerRepairAppendix(outputFileAbsolute, stepLabel
10749
10810
  ].join("\n");
10750
10811
  }
10751
10812
 
10752
- // ../../src/analysis/openCodeTestAgent.ts
10813
+ // src/analysis/openCodeTestAgent.ts
10753
10814
  var CITATION_EXAMPLE = "`src/example.ts:42` or `src/example.ts:10-25`";
10754
10815
  function contextDir(worktreeRoot) {
10755
10816
  return path18.join(worktreeRoot, ".gluecharm", "context");
@@ -11310,7 +11371,7 @@ async function runOpenCodeResolveOpenQuestionStep(opts) {
11310
11371
  diagnosticLog: opts.diagnosticLog
11311
11372
  });
11312
11373
  opts.diagnosticLog?.(
11313
- `[OpenCode] resolve open question \u2014 prompt: ${promptPath} (${Buffer.byteLength(body, "utf8")} bytes)`
11374
+ `[AgentCode] resolve open question \u2014 prompt: ${promptPath} (${Buffer.byteLength(body, "utf8")} bytes)`
11314
11375
  );
11315
11376
  opts.onRemediationPhase?.("generating");
11316
11377
  const cli = await runOpenCodeAgent(opts.worktreeRoot, argv, {
@@ -11390,7 +11451,7 @@ async function runSynthesisMarkdownRemediationChain(common, step, workspaceLabel
11390
11451
  stepLabel: common.stewardshipStepLabel,
11391
11452
  diagnosticLog: common.diagnosticLog
11392
11453
  });
11393
- common.diagnosticLog?.(`[OpenCode] prompt file: ${promptPath} (${Buffer.byteLength(body, "utf8")} bytes)`);
11454
+ common.diagnosticLog?.(`[AgentCode] prompt file: ${promptPath} (${Buffer.byteLength(body, "utf8")} bytes)`);
11394
11455
  common.onRemediationPhase?.("generating");
11395
11456
  const cli = await runOpenCodeAgent(common.worktreeRoot, argv, {
11396
11457
  timeoutMs: common.timeoutMs,
@@ -11514,7 +11575,7 @@ async function runDetailMarkdownRemediationChain(common, target, initialMarkdown
11514
11575
  stepLabel: common.stewardshipStepLabel,
11515
11576
  diagnosticLog: common.diagnosticLog
11516
11577
  });
11517
- common.diagnosticLog?.(`[OpenCode] prompt file: ${promptPath} (${Buffer.byteLength(body, "utf8")} bytes)`);
11578
+ common.diagnosticLog?.(`[AgentCode] prompt file: ${promptPath} (${Buffer.byteLength(body, "utf8")} bytes)`);
11518
11579
  common.onRemediationPhase?.("generating");
11519
11580
  const cli = await runOpenCodeAgent(common.worktreeRoot, argv, {
11520
11581
  timeoutMs: common.timeoutMs,
@@ -11926,7 +11987,7 @@ Run **Materialize agents** first (copies list schemas into this folder\u2019s \`
11926
11987
  diagnosticLog: opts.diagnosticLog
11927
11988
  });
11928
11989
  const byteLen = Buffer.byteLength(body, "utf8");
11929
- opts.diagnosticLog?.(`[OpenCode] prompt file: ${promptPath} (${byteLen} bytes)`);
11990
+ opts.diagnosticLog?.(`[AgentCode] prompt file: ${promptPath} (${byteLen} bytes)`);
11930
11991
  opts.onRemediationPhase?.("generating");
11931
11992
  const isFollowUpSpawn = followUpSid !== void 0;
11932
11993
  const cli = await runOpenCodeAgent(opts.worktreeRoot, argv, {
@@ -11971,7 +12032,7 @@ Run **Materialize agents** first (copies list schemas into this folder\u2019s \`
11971
12032
  lastArtefactBytes = artefact.bytes;
11972
12033
  const artefactReason = artefact.reason === "missing" ? "file does not exist" : artefact.reason === "empty" ? "file exists but is empty (0 bytes)" : artefact.reason === "not_a_file" ? "path exists but is not a regular file" : "";
11973
12034
  opts.diagnosticLog?.(
11974
- artefactOk ? `[OpenCode] expected output in worktree: FOUND \u2014 ${outputFileAbsolute} (${artefact.bytes} bytes)` : `[OpenCode] expected output in worktree: NOT FOUND \u2014 ${outputFileAbsolute} (${artefactReason})`
12035
+ artefactOk ? `[AgentCode] expected output in worktree: FOUND \u2014 ${outputFileAbsolute} (${artefact.bytes} bytes)` : `[AgentCode] expected output in worktree: NOT FOUND \u2014 ${outputFileAbsolute} (${artefactReason})`
11975
12036
  );
11976
12037
  if (!cliProcessOk) {
11977
12038
  break;
@@ -11986,7 +12047,7 @@ Run **Materialize agents** first (copies list schemas into this folder\u2019s \`
11986
12047
  const artefactReasonKey = r === "empty" || r === "not_a_file" ? r : "missing";
11987
12048
  repairAppendix = formatCoordinationJsonMissingArtefactRepairAppendix(outputBasename, artefactReasonKey);
11988
12049
  opts.diagnosticLog?.(
11989
- `[OpenCode] list JSON artefact missing or empty \u2014 re-running with repair appendix (run ${attempt + 2} of ${totalRuns})`
12050
+ `[AgentCode] list JSON artefact missing or empty \u2014 re-running with repair appendix (run ${attempt + 2} of ${totalRuns})`
11990
12051
  );
11991
12052
  continue;
11992
12053
  }
@@ -11995,7 +12056,7 @@ Run **Materialize agents** first (copies list schemas into this folder\u2019s \`
11995
12056
  if (ev.ok) {
11996
12057
  validationOk = true;
11997
12058
  sessionIdForAceTrace = capturedOpenCodeSessionId;
11998
- opts.diagnosticLog?.(`[OpenCode] markdown Evidence index validation passed \u2014 ${outputFileAbsolute}`);
12059
+ opts.diagnosticLog?.(`[AgentCode] markdown Evidence index validation passed \u2014 ${outputFileAbsolute}`);
11999
12060
  if (opts.step !== "docsProject" && opts.step !== "architecture") {
12000
12061
  validationOk = false;
12001
12062
  validationFailureText = `Internal error: expected docsProject or architecture in markdown path, got **${opts.step}**.`;
@@ -12075,14 +12136,14 @@ Run **Materialize agents** first (copies list schemas into this folder\u2019s \`
12075
12136
  if (val.ok) {
12076
12137
  validationOk = true;
12077
12138
  sessionIdForAceTrace = capturedOpenCodeSessionId;
12078
- opts.diagnosticLog?.(`[OpenCode] list JSON passed schema validation \u2014 ${outputFileAbsolute}`);
12139
+ opts.diagnosticLog?.(`[AgentCode] list JSON passed schema validation \u2014 ${outputFileAbsolute}`);
12079
12140
  break;
12080
12141
  }
12081
12142
  validationOk = false;
12082
12143
  const f = val.failure;
12083
12144
  validationFailureText = f.kind === "schema" ? f.errorsText : f.kind === "parse" ? f.message : f.message;
12084
12145
  opts.diagnosticLog?.(
12085
- `[OpenCode] list JSON validation failed (${f.kind}) \u2014 ${validationFailureText.slice(0, 600)}${validationFailureText.length > 600 ? "\u2026" : ""}`
12146
+ `[AgentCode] list JSON validation failed (${f.kind}) \u2014 ${validationFailureText.slice(0, 600)}${validationFailureText.length > 600 ? "\u2026" : ""}`
12086
12147
  );
12087
12148
  if (attempt >= maxRepairAttempts) {
12088
12149
  break;
@@ -12090,7 +12151,7 @@ Run **Materialize agents** first (copies list schemas into this folder\u2019s \`
12090
12151
  const preview = f.kind === "parse" ? readCoordinationJsonPreview(outputFileAbsolute) : void 0;
12091
12152
  repairAppendix = formatCoordinationJsonRepairAppendix(outputBasename, f, preview);
12092
12153
  opts.diagnosticLog?.(
12093
- `[OpenCode] re-running coordination list agent with schema repair appendix (run ${attempt + 2} of ${totalRuns})`
12154
+ `[AgentCode] re-running coordination list agent with schema repair appendix (run ${attempt + 2} of ${totalRuns})`
12094
12155
  );
12095
12156
  }
12096
12157
  const tail = lastCliMessage.length > 12e3 ? `${lastCliMessage.slice(0, 12e3)}
@@ -12264,7 +12325,7 @@ async function runOpenCodeMarkdownDetailStep(opts) {
12264
12325
  diagnosticLog: opts.diagnosticLog
12265
12326
  });
12266
12327
  const byteLen = Buffer.byteLength(body, "utf8");
12267
- opts.diagnosticLog?.(`[OpenCode] prompt file: ${promptPath} (${byteLen} bytes)`);
12328
+ opts.diagnosticLog?.(`[AgentCode] prompt file: ${promptPath} (${byteLen} bytes)`);
12268
12329
  opts.onRemediationPhase?.("generating");
12269
12330
  const isFollowUpSpawn = followUpSid !== void 0;
12270
12331
  const cli = await runOpenCodeAgent(opts.worktreeRoot, argv, {
@@ -12308,7 +12369,7 @@ async function runOpenCodeMarkdownDetailStep(opts) {
12308
12369
  artefactOk = artefact.generated;
12309
12370
  const artefactReason = artefact.reason === "missing" ? "file does not exist" : artefact.reason === "empty" ? "file exists but is empty (0 bytes)" : artefact.reason === "not_a_file" ? "path exists but is not a regular file" : "";
12310
12371
  opts.diagnosticLog?.(
12311
- artefactOk ? `[OpenCode] expected output in worktree: FOUND \u2014 ${outputFileAbsolute} (${artefact.bytes} bytes)` : `[OpenCode] expected output in worktree: NOT FOUND \u2014 ${outputFileAbsolute} (${artefactReason})`
12372
+ artefactOk ? `[AgentCode] expected output in worktree: FOUND \u2014 ${outputFileAbsolute} (${artefact.bytes} bytes)` : `[AgentCode] expected output in worktree: NOT FOUND \u2014 ${outputFileAbsolute} (${artefactReason})`
12312
12373
  );
12313
12374
  if (!cliProcessOk) {
12314
12375
  break;
@@ -12320,7 +12381,7 @@ async function runOpenCodeMarkdownDetailStep(opts) {
12320
12381
  if (ev.ok) {
12321
12382
  validationOk = true;
12322
12383
  sessionIdForAceTrace = capturedOpenCodeSessionId;
12323
- opts.diagnosticLog?.(`[OpenCode] markdown Evidence index validation passed \u2014 ${outputFileAbsolute}`);
12384
+ opts.diagnosticLog?.(`[AgentCode] markdown Evidence index validation passed \u2014 ${outputFileAbsolute}`);
12324
12385
  const producerLabel = `${MARKDOWN_DETAIL_RUN_STEP} \xB7 ${opts.target.displayName} \xB7 ${outputBasename}`;
12325
12386
  const oqRes = await remediateOpenQuestionsForContextMarkdown(
12326
12387
  { type: "detail", target: opts.target },
@@ -12478,7 +12539,7 @@ Expected output: ${outputFileAbsolute}`;
12478
12539
  };
12479
12540
  }
12480
12541
 
12481
- // ../../src/analysis/worktreeManager.ts
12542
+ // src/analysis/worktreeManager.ts
12482
12543
  var import_child_process2 = require("child_process");
12483
12544
  var fs21 = __toESM(require("fs"));
12484
12545
  var os = __toESM(require("os"));
@@ -12586,7 +12647,7 @@ function createAnalysisWorktree(repoRoot) {
12586
12647
  };
12587
12648
  }
12588
12649
 
12589
- // ../../src/stores/analysisArtefactRunStore.ts
12650
+ // src/stores/analysisArtefactRunStore.ts
12590
12651
  var STORAGE_KEY = "easyspecs.analysis.artefactRun.v1";
12591
12652
  function randomRunId() {
12592
12653
  return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
@@ -12659,7 +12720,7 @@ function cloneArtefactWorkItem(item) {
12659
12720
  return JSON.parse(JSON.stringify(item));
12660
12721
  }
12661
12722
 
12662
- // ../../src/stores/analysisDiscoveriesStore.ts
12723
+ // src/stores/analysisDiscoveriesStore.ts
12663
12724
  var agentsLaunchedCount = 0;
12664
12725
  var syncHandler;
12665
12726
  function noteOpenCodeAgentLaunched() {
@@ -12667,19 +12728,19 @@ function noteOpenCodeAgentLaunched() {
12667
12728
  syncHandler?.(agentsLaunchedCount);
12668
12729
  }
12669
12730
 
12670
- // ../../src/contextIndexAssembler.ts
12731
+ // src/contextIndexAssembler.ts
12671
12732
  var fs24 = __toESM(require("fs"));
12672
12733
  var path22 = __toESM(require("path"));
12673
12734
 
12674
- // ../../src/srsModel.ts
12735
+ // src/srsModel.ts
12675
12736
  var APPLICATION_CONTEXT_KIND = "easyspecs.application-context";
12676
12737
 
12677
- // ../../src/indexApplicationContextValidate.ts
12738
+ // src/indexApplicationContextValidate.ts
12678
12739
  var import__3 = __toESM(require__());
12679
12740
  var fs23 = __toESM(require("fs"));
12680
12741
  var path21 = __toESM(require("path"));
12681
12742
 
12682
- // ../../src/shared/repoResourcesRoot.ts
12743
+ // src/shared/repoResourcesRoot.ts
12683
12744
  var fs22 = __toESM(require("node:fs"));
12684
12745
  var path20 = __toESM(require("node:path"));
12685
12746
  var CONTEXT_LIST_MARKER = path20.join("schemas", "context-lists", "zero-reference-classifier-record.schema.json");
@@ -12687,13 +12748,6 @@ function hasMarker(resourcesRoot) {
12687
12748
  return fs22.existsSync(path20.join(resourcesRoot, CONTEXT_LIST_MARKER));
12688
12749
  }
12689
12750
  function resolveRepoResourcesRoot() {
12690
- const env = process.env.EASYSPECS_EXTENSION_ROOT?.trim();
12691
- if (env) {
12692
- const r = path20.join(path20.resolve(env), "resources");
12693
- if (hasMarker(r)) {
12694
- return r;
12695
- }
12696
- }
12697
12751
  const candidates = [path20.join(__dirname, "..", "resources"), path20.join(__dirname, "..", "..", "resources")];
12698
12752
  for (const c of candidates) {
12699
12753
  const abs = path20.resolve(c);
@@ -12702,7 +12756,7 @@ function resolveRepoResourcesRoot() {
12702
12756
  }
12703
12757
  }
12704
12758
  throw new Error(
12705
- `Could not find EasySpecs bundled resources (e.g. ${CONTEXT_LIST_MARKER}). Set EASYSPECS_EXTENSION_ROOT to your easyspecs.ai-vsc-extension repo root, or reinstall @gluecharm-lab/easyspecs-cli after \`npm run build:cli\` so packages/cli/resources contains the full resources tree.`
12759
+ `Could not find EasySpecs bundled resources (e.g. ${CONTEXT_LIST_MARKER}). Set easyspecs.cli.bundledResourcesRoot in .easyspecs/config.json to your resources directory, or reinstall @gluecharm-lab/easyspecs-cli after \`npm run build:cli\` so packages/cli/resources contains the full resources tree.`
12706
12760
  );
12707
12761
  }
12708
12762
  function resolveContextListSchemasDir() {
@@ -12712,7 +12766,7 @@ function resolveIndexApplicationContextSchemaPath() {
12712
12766
  return path20.join(resolveRepoResourcesRoot(), "schemas", "index-application-context.schema.json");
12713
12767
  }
12714
12768
 
12715
- // ../../src/indexApplicationContextValidate.ts
12769
+ // src/indexApplicationContextValidate.ts
12716
12770
  var validators = /* @__PURE__ */ new Map();
12717
12771
  function getDefaultIndexSchemaPath() {
12718
12772
  return resolveIndexApplicationContextSchemaPath();
@@ -12747,7 +12801,7 @@ function validateIndexApplicationContextJson(doc, schemaPath = getDefaultIndexSc
12747
12801
  return { ok: false, errors: formatAjvErrors3(validate) };
12748
12802
  }
12749
12803
 
12750
- // ../../src/contextIndexAssembler.ts
12804
+ // src/contextIndexAssembler.ts
12751
12805
  var SLUG = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
12752
12806
  function safeStr(v) {
12753
12807
  return typeof v === "string" ? v.trim() : "";
@@ -13184,11 +13238,11 @@ function writeIndexApplicationContext(contextDir2, title, options) {
13184
13238
  return doc;
13185
13239
  }
13186
13240
 
13187
- // ../../src/analysis/aceAnalysisConfig.ts
13241
+ // src/analysis/aceAnalysisConfig.ts
13188
13242
  var path23 = __toESM(require("node:path"));
13189
13243
  var vscode2 = __toESM(require_vscode_stub());
13190
13244
 
13191
- // ../../src/config/easyspecsAceConfigRead.ts
13245
+ // src/config/easyspecsAceConfigRead.ts
13192
13246
  var fs25 = __toESM(require("node:fs"));
13193
13247
  function readRawConfigJson(repoRoot) {
13194
13248
  const p = easyspecsConfigPath(repoRoot);
@@ -13252,7 +13306,7 @@ function readAceOfflineLearnAfterSameSessionTraceFromEasyspecsConfigFile(repoRoo
13252
13306
  return typeof v === "boolean" ? v : void 0;
13253
13307
  }
13254
13308
 
13255
- // ../../src/analysis/aceAnalysisConfig.ts
13309
+ // src/analysis/aceAnalysisConfig.ts
13256
13310
  var SECTION = "easyspecs";
13257
13311
  var cliWorkspaceRootOverride;
13258
13312
  var cliHeadlessMode = false;
@@ -13332,7 +13386,7 @@ function getAceOfflineLearnAfterSameSessionTrace(analysisCheckoutRoot) {
13332
13386
  return vscode2.workspace.getConfiguration(SECTION).get("analysis.ace.offlineLearnAfterSameSessionTrace") === true;
13333
13387
  }
13334
13388
 
13335
- // ../../src/analysis/repoSurfaceAssessment.ts
13389
+ // src/analysis/repoSurfaceAssessment.ts
13336
13390
  var fs26 = __toESM(require("fs"));
13337
13391
  var path24 = __toESM(require("path"));
13338
13392
  var REPO_SURFACE_SCAN_BASENAME = "repo-surface-scan.json";
@@ -13380,7 +13434,7 @@ function writeEmptyExperiencesListJson(contextDir2) {
13380
13434
  );
13381
13435
  }
13382
13436
 
13383
- // ../../src/analysis/contextArtefactPipeline.ts
13437
+ // src/analysis/contextArtefactPipeline.ts
13384
13438
  var FE = /^FE-\d+$/;
13385
13439
  var UC = /^UC-\d+$/;
13386
13440
  var SC = /^SC-\d+$/;
@@ -13614,7 +13668,7 @@ function skipPendingBlockedBySkippedParents(byId, skippedWorkItemIds, log) {
13614
13668
  item.status = "skipped";
13615
13669
  item.lastError = `Skipped: dependency ${pid} did not complete (parent step was skipped).`;
13616
13670
  skippedWorkItemIds.push(id);
13617
- log(`[SRS-9] cascade skip ${id} \u2014 blocked by skipped parent ${pid}`);
13671
+ log(`[queue] cascade skip ${id} \u2014 blocked by skipped parent ${pid}`);
13618
13672
  progressed = true;
13619
13673
  break;
13620
13674
  }
@@ -13866,7 +13920,7 @@ function requeueIfUnblocked(byId, fifo, log) {
13866
13920
  continue;
13867
13921
  }
13868
13922
  fifo.push(id);
13869
- log(`[SRS-9] queue: unblocked ${id} (dependency satisfied)`);
13923
+ log(`[queue] unblocked ${id} (dependency satisfied)`);
13870
13924
  }
13871
13925
  }
13872
13926
  async function runArtefactWorkItemOpenCode(item, worktreeRoot, workspaceLabel, oc, log, abortSignal, onRemediationPhase, artefactRunId) {
@@ -13902,7 +13956,7 @@ async function runArtefactWorkItemOpenCode(item, worktreeRoot, workspaceLabel, o
13902
13956
  if (assessment.hasUi === false) {
13903
13957
  writeEmptyExperiencesListJson(contextDir2);
13904
13958
  log(
13905
- "[SRS-20] listExperiences: hasUi=false \u2014 wrote empty experiences-list.json (skipped OpenCode experiences agent)."
13959
+ "[context] listExperiences: hasUi=false \u2014 wrote empty experiences-list.json (skipped AgentCode experiences agent)."
13906
13960
  );
13907
13961
  return {
13908
13962
  ok: true,
@@ -13979,7 +14033,7 @@ async function runArtefactWorkItemWithPipelineRetries(item, worktreeRoot, worksp
13979
14033
  return { ok: false, message: result.message || "Remediation stopped.", outerAttempts, cancelled: true };
13980
14034
  }
13981
14035
  if (!result.ok) {
13982
- log(`[SRS-9] pool: retry ${item.id} after first failure`);
14036
+ log(`[pool] retry ${item.id} after first failure`);
13983
14037
  result = await runArtefactWorkItemOpenCode(
13984
14038
  item,
13985
14039
  worktreeRoot,
@@ -14064,7 +14118,7 @@ async function drainArtefactWorkPool(p) {
14064
14118
  }
14065
14119
  item.status = "running";
14066
14120
  await persist();
14067
- log(`[SRS-9] pool: start ${id} (active ${active}/${maxC})`);
14121
+ log(`[pool] start ${id} (active ${active}/${maxC})`);
14068
14122
  const r = await runArtefactWorkItemWithPipelineRetries(
14069
14123
  item,
14070
14124
  worktreeRoot,
@@ -14083,7 +14137,7 @@ async function drainArtefactWorkPool(p) {
14083
14137
  item.status = "skipped";
14084
14138
  pushSkippedOnce(id);
14085
14139
  item.lastError = (r.message || "Stopped by user.").slice(0, 4e3);
14086
- log(`[SRS-9] pool: stopped ${id}`);
14140
+ log(`[pool] stopped ${id}`);
14087
14141
  await persist();
14088
14142
  active -= 1;
14089
14143
  await p.onItemComplete?.(id);
@@ -14099,7 +14153,7 @@ async function drainArtefactWorkPool(p) {
14099
14153
  item.openCodeSessionCapturedAtIso = r.openCodeSessionCapturedAtIso;
14100
14154
  item.openCodeSessionPhase = "primary";
14101
14155
  }
14102
- log(`[SRS-9] pool: complete ${id}`);
14156
+ log(`[pool] complete ${id}`);
14103
14157
  if (!abortSignal?.aborted) {
14104
14158
  expandAfterSuccess(item, contextDir2, byId, fifo);
14105
14159
  requeueIfUnblocked(byId, fifo, log);
@@ -14108,7 +14162,7 @@ async function drainArtefactWorkPool(p) {
14108
14162
  item.status = "skipped";
14109
14163
  item.lastError = result.message.slice(0, 4e3);
14110
14164
  pushSkippedOnce(id);
14111
- log(`[SRS-9] pool: skipped ${id} after 2 attempts \u2014 ${item.lastError.slice(0, 500)}`);
14165
+ log(`[pool] skipped ${id} after 2 attempts \u2014 ${item.lastError.slice(0, 500)}`);
14112
14166
  if (!abortSignal?.aborted) {
14113
14167
  skipPendingBlockedBySkippedParents(byId, skippedWorkItemIds, log);
14114
14168
  requeueIfUnblocked(byId, fifo, log);
@@ -14163,9 +14217,9 @@ async function prepareContextArtefactWorktreeOnly(storageContext, repoRoot, log,
14163
14217
  finalized = true;
14164
14218
  try {
14165
14219
  handle.remove();
14166
- log(`[SRS-9] worktree removed: ${handle.path}`);
14220
+ log(`[worktree] removed: ${handle.path}`);
14167
14221
  } catch (e) {
14168
- log(`[SRS-9] worktree remove error: ${e instanceof Error ? e.message : String(e)}`);
14222
+ log(`[worktree] remove error: ${e instanceof Error ? e.message : String(e)}`);
14169
14223
  }
14170
14224
  };
14171
14225
  return { ok: true, handle, finalize, sourceBranchAtCreation: wt.sourceBranchAtCreation };
@@ -14200,7 +14254,7 @@ async function runContextArtefactPipelineDrainFromPreparedWorktree(storageContex
14200
14254
  });
14201
14255
  if (cancelled) {
14202
14256
  await finishArtefactRun(storageContext, false);
14203
- log(`[SRS-9] pipeline stopped by user \u2014 worktree retained at ${handle.path} for debugging`);
14257
+ log(`[context] pipeline stopped by user \u2014 worktree retained at ${handle.path} for debugging`);
14204
14258
  return {
14205
14259
  ok: false,
14206
14260
  error: "Analysis stopped by user.",
@@ -14210,7 +14264,7 @@ async function runContextArtefactPipelineDrainFromPreparedWorktree(storageContex
14210
14264
  }
14211
14265
  await finishArtefactRun(storageContext, true);
14212
14266
  log(
14213
- `[SRS-9] queue drained \u2014 done=${[...byId.values()].filter((x) => x.status === "done").length} skipped=${skippedWorkItemIds.length}`
14267
+ `[queue] drained \u2014 done=${[...byId.values()].filter((x) => x.status === "done").length} skipped=${skippedWorkItemIds.length}`
14214
14268
  );
14215
14269
  let indexApplicationContext;
14216
14270
  try {
@@ -14218,12 +14272,12 @@ async function runContextArtefactPipelineDrainFromPreparedWorktree(storageContex
14218
14272
  sourceBranchAtWorktreeCreation: sourceBranchAtCreation
14219
14273
  });
14220
14274
  log(
14221
- `[SRS-10] After synthesis: index-application-context.json written under ${contextDir2} (JSON Schema validated)`
14275
+ `[index] After synthesis: index-application-context.json written under ${contextDir2} (JSON Schema validated)`
14222
14276
  );
14223
14277
  indexApplicationContext = { ok: true };
14224
14278
  } catch (e) {
14225
14279
  const msg = e instanceof Error ? e.message : String(e);
14226
- log(`[SRS-10] After synthesis: index assembly / validation failed \u2014 ${msg}`);
14280
+ log(`[index] After synthesis: index assembly / validation failed \u2014 ${msg}`);
14227
14281
  indexApplicationContext = { ok: false, error: msg };
14228
14282
  }
14229
14283
  return {
@@ -14236,7 +14290,7 @@ async function runContextArtefactPipelineDrainFromPreparedWorktree(storageContex
14236
14290
  };
14237
14291
  } catch (e) {
14238
14292
  const msg = e instanceof Error ? e.message : String(e);
14239
- log(`[SRS-9] pipeline error: ${msg}`);
14293
+ log(`[context] pipeline error: ${msg}`);
14240
14294
  await finishArtefactRun(storageContext, false);
14241
14295
  finalize();
14242
14296
  return { ok: false, error: msg };
@@ -14273,7 +14327,7 @@ async function runContextArtefactPipelineAsync(storageContext, repoRoot, workspa
14273
14327
  );
14274
14328
  }
14275
14329
 
14276
- // ../../src/workspaceContextPromote.ts
14330
+ // src/workspaceContextPromote.ts
14277
14331
  var fs28 = __toESM(require("fs"));
14278
14332
  var path26 = __toESM(require("path"));
14279
14333
  function promoteContextDirectoryToWorkspaceFs(sourceContextDir, workspaceRootFs) {
@@ -14300,7 +14354,7 @@ function promoteContextDirectoryToWorkspaceFs(sourceContextDir, workspaceRootFs)
14300
14354
  return { filesCopied };
14301
14355
  }
14302
14356
 
14303
- // ../../src/shared/macroPhaseExitConditions.ts
14357
+ // src/shared/macroPhaseExitConditions.ts
14304
14358
  var MACRO_PHASE_EXIT_CONDITIONS = {
14305
14359
  create_analysis_worktree: "Git analysis checkout exists under the configured temp parent (SRS-8); ready for agent materialization.",
14306
14360
  materialize_opencode_agents: "Bundled OpenCode agent definitions are copied into the analysis worktree (`.opencode/` tree).",
@@ -14312,7 +14366,7 @@ var MACRO_PHASE_EXIT_CONDITIONS = {
14312
14366
  backend_context_sync: "Context upload finished with no failures (quiet SRS-13 path; or cancel)."
14313
14367
  };
14314
14368
 
14315
- // ../../src/analysis/macroAnalysisOrchestrator.ts
14369
+ // src/analysis/macroAnalysisOrchestrator.ts
14316
14370
  var MACRO_PHASE_KEYS = [
14317
14371
  "create_analysis_worktree",
14318
14372
  "materialize_opencode_agents",
@@ -14716,11 +14770,11 @@ async function runMacroAnalysisOrchestration(deps) {
14716
14770
  }
14717
14771
  }
14718
14772
 
14719
- // ../../src/analysis/macroHeadlessHost.ts
14773
+ // src/analysis/macroHeadlessHost.ts
14720
14774
  var fs39 = __toESM(require("node:fs"));
14721
14775
  var path38 = __toESM(require("node:path"));
14722
14776
 
14723
- // ../../src/stores/analysisPipelineStore.ts
14777
+ // src/stores/analysisPipelineStore.ts
14724
14778
  var STORAGE_KEY2 = "easyspecs.analysis.pipelineRun.v1";
14725
14779
  function randomRunId2() {
14726
14780
  return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
@@ -14779,7 +14833,7 @@ async function finishPipelineRun(context, ok) {
14779
14833
  });
14780
14834
  }
14781
14835
 
14782
- // ../../src/stores/analysisWorkspaceStore.ts
14836
+ // src/stores/analysisWorkspaceStore.ts
14783
14837
  var STORAGE_KEY3 = "easyspecs.analysis.workspaceState.v1";
14784
14838
  function readAnalysisWorkspaceSnapshot(context) {
14785
14839
  const raw = context.workspaceState.get(STORAGE_KEY3);
@@ -14817,11 +14871,11 @@ async function noteAgentsMaterialized(context) {
14817
14871
  });
14818
14872
  }
14819
14873
 
14820
- // ../../src/analysis/missingArtefacts.ts
14874
+ // src/analysis/missingArtefacts.ts
14821
14875
  var fs30 = __toESM(require("fs"));
14822
14876
  var path28 = __toESM(require("path"));
14823
14877
 
14824
- // ../../src/analysis/analysisDetailMarkdownDiscovery.ts
14878
+ // src/analysis/analysisDetailMarkdownDiscovery.ts
14825
14879
  var fs29 = __toESM(require("fs"));
14826
14880
  var path27 = __toESM(require("path"));
14827
14881
  var SLUG3 = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
@@ -15099,7 +15153,7 @@ function collectExpectedDetailMarkdownBasenames(contextDir2) {
15099
15153
  return set;
15100
15154
  }
15101
15155
 
15102
- // ../../src/analysis/missingArtefacts.ts
15156
+ // src/analysis/missingArtefacts.ts
15103
15157
  function fileAndValidationFromKind(kind) {
15104
15158
  if (kind === "valid") {
15105
15159
  return { filePresentYesNo: "yes", validationYesNo: "yes" };
@@ -15440,7 +15494,7 @@ function toMissingArtefactUiRows(rows, contextDir2, worktreeRoot) {
15440
15494
  });
15441
15495
  }
15442
15496
 
15443
- // ../../src/analysis/remediationArtefactPool.ts
15497
+ // src/analysis/remediationArtefactPool.ts
15444
15498
  var path29 = __toESM(require("path"));
15445
15499
  function reconcileSkippedWorkItemsWithDisk(byId, contextDir2, worktreeRoot) {
15446
15500
  for (const item of byId.values()) {
@@ -15525,7 +15579,7 @@ async function runMissingArtefactsRemediationPool(p) {
15525
15579
  } else {
15526
15580
  await startArtefactRun(storageContext, repositoryRoot, worktreeRoot, itemsForStore);
15527
15581
  }
15528
- log(`[SRS-17] parallel remediation pool \u2014 ${rows.length} missing row(s), ${fifo.length} ready in initial fifo`);
15582
+ log(`[remediation] parallel remediation pool \u2014 ${rows.length} missing row(s), ${fifo.length} ready in initial fifo`);
15529
15583
  const { cancelled, skippedWorkItemIds } = await drainArtefactWorkPool({
15530
15584
  storageContext,
15531
15585
  worktreeRoot,
@@ -15549,21 +15603,21 @@ async function runMissingArtefactsRemediationPool(p) {
15549
15603
  writeIndexApplicationContext(contextDir2, void 0, {
15550
15604
  sourceBranchAtWorktreeCreation
15551
15605
  });
15552
- log(`[SRS-10] After parallel remediation: index-application-context.json written under ${contextDir2}`);
15606
+ log(`[index] After parallel remediation: index-application-context.json written under ${contextDir2}`);
15553
15607
  } catch (e) {
15554
15608
  indexOk = false;
15555
15609
  indexError = e instanceof Error ? e.message : String(e);
15556
- log(`[SRS-10] After parallel remediation: index assembly failed \u2014 ${indexError}`);
15610
+ log(`[index] After parallel remediation: index assembly failed \u2014 ${indexError}`);
15557
15611
  }
15558
15612
  return { cancelled: false, skippedWorkItemIds, indexOk, ...indexError ? { indexError } : {} };
15559
15613
  }
15560
15614
 
15561
- // ../../src/analysis/coverageReferenceValidation.ts
15615
+ // src/analysis/coverageReferenceValidation.ts
15562
15616
  var import_child_process3 = require("child_process");
15563
15617
  var fs32 = __toESM(require("fs"));
15564
15618
  var path31 = __toESM(require("path"));
15565
15619
 
15566
- // ../../src/analysis/coverageReferenceValidationSchemaValidate.ts
15620
+ // src/analysis/coverageReferenceValidationSchemaValidate.ts
15567
15621
  var fs31 = __toESM(require("fs"));
15568
15622
  var path30 = __toESM(require("path"));
15569
15623
  var import__4 = __toESM(require__());
@@ -15634,7 +15688,7 @@ function readAndValidateCoverageReferenceValidationFile(jsonAbsolutePath) {
15634
15688
  return { ok: true, data };
15635
15689
  }
15636
15690
 
15637
- // ../../src/analysis/coverageReferenceValidation.ts
15691
+ // src/analysis/coverageReferenceValidation.ts
15638
15692
  var COVERAGE_REFERENCE_VALIDATION_BASENAME = "coverage-reference-validation.json";
15639
15693
  var SKIP_CONTEXT_JSON = /* @__PURE__ */ new Set([
15640
15694
  COVERAGE_REFERENCE_VALIDATION_BASENAME,
@@ -16080,12 +16134,12 @@ ${schemaCheck.errors.join("\n")}`,
16080
16134
  return { ok: true, document, outputAbsolutePath: opts.write ? outPath : void 0 };
16081
16135
  }
16082
16136
 
16083
- // ../../src/analysis/zeroReferenceRemediation.ts
16137
+ // src/analysis/zeroReferenceRemediation.ts
16084
16138
  var crypto = __toESM(require("crypto"));
16085
16139
  var fs34 = __toESM(require("fs"));
16086
16140
  var path33 = __toESM(require("path"));
16087
16141
 
16088
- // ../../src/analysis/zeroReferenceRemediationSchemaValidate.ts
16142
+ // src/analysis/zeroReferenceRemediationSchemaValidate.ts
16089
16143
  var fs33 = __toESM(require("fs"));
16090
16144
  var path32 = __toESM(require("path"));
16091
16145
  var import__5 = __toESM(require__());
@@ -16141,7 +16195,7 @@ function validateZeroReferenceTriageDocumentData(data) {
16141
16195
  return { ok: false, errors: formatAjvErrors5(validateTriageDoc.errors) };
16142
16196
  }
16143
16197
 
16144
- // ../../src/analysis/zeroReferenceRemediation.ts
16198
+ // src/analysis/zeroReferenceRemediation.ts
16145
16199
  var ZERO_REF_ROUTING_BASENAME = "zero-reference-routing.json";
16146
16200
  var ZERO_REF_TRIAGE_BASENAME = "zero-reference-triage.json";
16147
16201
  var ZERO_REF_CLASSIFY_AGENT_STEM = "agent-classify-unreferenced-file";
@@ -16707,7 +16761,7 @@ async function runClassifierAgent(common, contextDirAbs, targetFilePathPosix, wo
16707
16761
  worktree: common.worktreeRoot
16708
16762
  });
16709
16763
  common.diagnosticLog?.(
16710
- attempt === 0 ? `[SRS-30] classifier prompt: ${promptPath}` : `[SRS-30] classifier repair run ${attempt + 1}/${ZERO_REF_STAGING_JSON_TOTAL_ATTEMPTS}: ${promptPath}`
16764
+ attempt === 0 ? `[zero-ref] classifier prompt: ${promptPath}` : `[zero-ref] classifier repair run ${attempt + 1}/${ZERO_REF_STAGING_JSON_TOTAL_ATTEMPTS}: ${promptPath}`
16711
16765
  );
16712
16766
  const cli = await runOpenCodeAgent(common.worktreeRoot, argv, {
16713
16767
  timeoutMs: common.timeoutMs,
@@ -16855,7 +16909,7 @@ async function runMarkdownReferenceAgent(common, contextDirAbs, targetFilePathPo
16855
16909
  agentId: agentStem,
16856
16910
  worktree: common.worktreeRoot
16857
16911
  });
16858
- common.diagnosticLog?.(`[SRS-30] ${which} markdown prompt: ${promptPath}`);
16912
+ common.diagnosticLog?.(`[zero-ref] ${which} markdown prompt: ${promptPath}`);
16859
16913
  const cli = await runOpenCodeAgent(common.worktreeRoot, argv, {
16860
16914
  timeoutMs: common.timeoutMs,
16861
16915
  executable: common.executable,
@@ -16916,7 +16970,7 @@ async function runCoordinationTriageAgent(common, contextDirAbs, targetFilePathP
16916
16970
  worktree: common.worktreeRoot
16917
16971
  });
16918
16972
  common.diagnosticLog?.(
16919
- attempt === 0 ? `[SRS-30] triage prompt: ${promptPath}` : `[SRS-30] triage repair run ${attempt + 1}/${ZERO_REF_STAGING_JSON_TOTAL_ATTEMPTS}: ${promptPath}`
16973
+ attempt === 0 ? `[zero-ref] triage prompt: ${promptPath}` : `[zero-ref] triage repair run ${attempt + 1}/${ZERO_REF_STAGING_JSON_TOTAL_ATTEMPTS}: ${promptPath}`
16920
16974
  );
16921
16975
  const cli = await runOpenCodeAgent(common.worktreeRoot, argv, {
16922
16976
  timeoutMs: common.timeoutMs,
@@ -17199,7 +17253,7 @@ async function runZeroReferenceRemediationPool(p) {
17199
17253
  return { cancelled, completed, failures };
17200
17254
  }
17201
17255
 
17202
- // ../../src/analysis/referenceCoverageExecutionReport.ts
17256
+ // src/analysis/referenceCoverageExecutionReport.ts
17203
17257
  var fs35 = __toESM(require("fs"));
17204
17258
  var path34 = __toESM(require("path"));
17205
17259
  var REFERENCE_COVERAGE_EXECUTION_REPORT_BASENAME = "reference-coverage-execution-report.md";
@@ -17364,16 +17418,16 @@ async function runReferenceCoverageExecutionReport(p) {
17364
17418
  }
17365
17419
  return { ok: false, error: msg };
17366
17420
  }
17367
- p.diagnosticLog?.(`[SRS-31] wrote reference coverage execution report \u2014 ${outAbs}`);
17421
+ p.diagnosticLog?.(`[report] wrote reference coverage execution report \u2014 ${outAbs}`);
17368
17422
  return { ok: true, outputAbsolutePath: outAbs };
17369
17423
  }
17370
17424
 
17371
- // ../../src/analysis/contextSrsDiscoveryUpload.ts
17425
+ // src/analysis/contextSrsDiscoveryUpload.ts
17372
17426
  var fs38 = __toESM(require("node:fs"));
17373
17427
  var path37 = __toESM(require("node:path"));
17374
17428
  var import_node_crypto = require("node:crypto");
17375
17429
 
17376
- // ../../src/auth/authProtocol.ts
17430
+ // src/auth/authProtocol.ts
17377
17431
  function requireToken(value, key) {
17378
17432
  if (!value) {
17379
17433
  const err = { status: 500, message: `Missing ${key} in auth response.` };
@@ -17458,11 +17512,11 @@ function toAuthErrorMessage(error, fallback) {
17458
17512
  return raw;
17459
17513
  }
17460
17514
 
17461
- // ../../src/analysis/contextSrsDiscoveryIdMap.ts
17515
+ // src/analysis/contextSrsDiscoveryIdMap.ts
17462
17516
  var fs37 = __toESM(require("node:fs"));
17463
17517
  var path36 = __toESM(require("node:path"));
17464
17518
 
17465
- // ../../src/analysis/indexApplicationContextMergeUploadIds.ts
17519
+ // src/analysis/indexApplicationContextMergeUploadIds.ts
17466
17520
  var fs36 = __toESM(require("node:fs"));
17467
17521
  var path35 = __toESM(require("node:path"));
17468
17522
  var INDEX_APPLICATION_CONTEXT_BASENAME = "index-application-context.json";
@@ -17568,7 +17622,7 @@ function mergeUploadIdsIntoIndexOnDisk(contextDir2, succeededIds, options) {
17568
17622
  return { ok: true };
17569
17623
  }
17570
17624
 
17571
- // ../../src/analysis/contextSrsDiscoveryIdMap.ts
17625
+ // src/analysis/contextSrsDiscoveryIdMap.ts
17572
17626
  var SCOPE_KEYS2 = ["Feature", "Experience", "Service", "DataModel", "TechStack"];
17573
17627
  function normalizeRel3(p) {
17574
17628
  return p.replace(/\\/g, "/");
@@ -17597,7 +17651,7 @@ function loadSrsDiscoveryIdMapFromContextDir(contextDir2, log) {
17597
17651
  const indexPath = path36.join(contextDir2, INDEX_APPLICATION_CONTEXT_BASENAME);
17598
17652
  if (!fs37.existsSync(indexPath)) {
17599
17653
  log?.(
17600
- `[SRS-33] No local ${INDEX_APPLICATION_CONTEXT_BASENAME} \u2014 id map empty; uploads use create (new UUID) until the index exists.`
17654
+ `[index] No local ${INDEX_APPLICATION_CONTEXT_BASENAME} \u2014 id map empty; uploads use create (new UUID) until the index exists.`
17601
17655
  );
17602
17656
  return {};
17603
17657
  }
@@ -17605,23 +17659,23 @@ function loadSrsDiscoveryIdMapFromContextDir(contextDir2, log) {
17605
17659
  try {
17606
17660
  raw = fs37.readFileSync(indexPath, "utf8");
17607
17661
  } catch (e) {
17608
- log?.(`[SRS-33] Could not read index file \u2014 ${e instanceof Error ? e.message : String(e)}`);
17662
+ log?.(`[index] Could not read index file \u2014 ${e instanceof Error ? e.message : String(e)}`);
17609
17663
  return {};
17610
17664
  }
17611
17665
  let parsed;
17612
17666
  try {
17613
17667
  parsed = JSON.parse(raw);
17614
17668
  } catch {
17615
- log?.(`[SRS-33] ${INDEX_APPLICATION_CONTEXT_BASENAME} is not valid JSON \u2014 id map empty.`);
17669
+ log?.(`[index] ${INDEX_APPLICATION_CONTEXT_BASENAME} is not valid JSON \u2014 id map empty.`);
17616
17670
  return {};
17617
17671
  }
17618
17672
  if (!isRecord4(parsed)) {
17619
- log?.(`[SRS-33] Index JSON has unexpected shape \u2014 id map empty.`);
17673
+ log?.(`[index] Index JSON has unexpected shape \u2014 id map empty.`);
17620
17674
  return {};
17621
17675
  }
17622
17676
  const doc = parsed;
17623
17677
  if (!doc.scopes || typeof doc.scopes !== "object") {
17624
- log?.(`[SRS-33] Index JSON missing scopes \u2014 id map empty.`);
17678
+ log?.(`[index] Index JSON missing scopes \u2014 id map empty.`);
17625
17679
  return {};
17626
17680
  }
17627
17681
  const map = {};
@@ -17633,7 +17687,7 @@ function loadSrsDiscoveryIdMapFromContextDir(contextDir2, log) {
17633
17687
  const prev = map[k];
17634
17688
  if (prev !== void 0 && prev !== id) {
17635
17689
  throw new Error(
17636
- `[SRS-33] Conflicting srs_discovery ids for context path "${k}": ${prev} vs ${id}. Fix index-application-context.json before uploading.`
17690
+ `[index] Conflicting srs_discovery ids for context path "${k}": ${prev} vs ${id}. Fix index-application-context.json before uploading.`
17637
17691
  );
17638
17692
  }
17639
17693
  map[k] = id;
@@ -17656,7 +17710,7 @@ function loadSrsDiscoveryIdMapFromContextDir(contextDir2, log) {
17656
17710
  return map;
17657
17711
  }
17658
17712
 
17659
- // ../../src/analysis/contextSrsDiscoveryUpload.ts
17713
+ // src/analysis/contextSrsDiscoveryUpload.ts
17660
17714
  var ADAPTIVE_B_INITIAL = 100;
17661
17715
  var ADAPTIVE_B_MIN = 1;
17662
17716
  var ADAPTIVE_B_MAX = 500;
@@ -17821,7 +17875,7 @@ function truncateForSrs13DebugLog(text) {
17821
17875
  return text;
17822
17876
  }
17823
17877
  return `${text.slice(0, MAX_SRS13_DEBUG_JSON_CHARS)}
17824
- \u2026 [SRS-13] truncated: ${String(text.length - MAX_SRS13_DEBUG_JSON_CHARS)} more characters omitted`;
17878
+ \u2026 [upload] truncated: ${String(text.length - MAX_SRS13_DEBUG_JSON_CHARS)} more characters omitted`;
17825
17879
  }
17826
17880
  function stringifyForSrs13Debug(value) {
17827
17881
  try {
@@ -17840,18 +17894,18 @@ function logSrs13HttpDebug(log, path44, method, requestBody, error) {
17840
17894
  } catch {
17841
17895
  bodyBytes = 0;
17842
17896
  }
17843
- log(`[SRS-13] debug ${method} ${path44} \u2014 request body ~${bodyBytes} bytes (JSON below):`);
17897
+ log(`[upload] debug ${method} ${path44} \u2014 request body ~${bodyBytes} bytes (JSON below):`);
17844
17898
  log(stringifyForSrs13Debug(requestBody));
17845
17899
  const raw = httpApiResponseBody(error);
17846
17900
  const status = error && typeof error === "object" && "status" in error ? Number(error.status) : void 0;
17847
17901
  log(
17848
- `[SRS-13] debug HTTP error: ${status != null && !Number.isNaN(status) && status > 0 ? `status ${status}` : "unknown status"} \u2014 ${errorMessage(error)}`
17902
+ `[upload] debug HTTP error: ${status != null && !Number.isNaN(status) && status > 0 ? `status ${status}` : "unknown status"} \u2014 ${errorMessage(error)}`
17849
17903
  );
17850
17904
  if (raw !== void 0) {
17851
- log(`[SRS-13] debug response body (parsed JSON from server):`);
17905
+ log(`[upload] debug response body (parsed JSON from server):`);
17852
17906
  log(stringifyForSrs13Debug(raw));
17853
17907
  } else {
17854
- log(`[SRS-13] debug response body: <no parsed JSON on error object>`);
17908
+ log(`[upload] debug response body: <no parsed JSON on error object>`);
17855
17909
  }
17856
17910
  }
17857
17911
  function errorMessage(e) {
@@ -17878,7 +17932,7 @@ function throwIfAborted(signal) {
17878
17932
  }
17879
17933
  function logSrs13Failure(log, operation, detail) {
17880
17934
  const d = detail.length > MAX_LOG_MESSAGE_LEN ? `${detail.slice(0, MAX_LOG_MESSAGE_LEN)}\u2026` : detail;
17881
- log?.(`[SRS-13] ${operation} \u2014 ${d}`);
17935
+ log?.(`[upload] ${operation} \u2014 ${d}`);
17882
17936
  }
17883
17937
  function jsonByteLength(obj) {
17884
17938
  return Buffer.byteLength(JSON.stringify(obj), "utf8");
@@ -18001,7 +18055,7 @@ async function runParallelSinglesIntoAccum(requestJson, applicationId, paths, on
18001
18055
  N = nextAdaptiveConcurrency(N, waveDt, recentWaveMs.slice(0, -1));
18002
18056
  N = Math.min(Math.max(N, ADAPTIVE_N_MIN), ADAPTIVE_N_MAX);
18003
18057
  idx += wave.length;
18004
- log?.(`[SRS-13] singles wave done in ${waveDt}ms, N=${N}`);
18058
+ log?.(`[upload] singles wave done in ${waveDt}ms, N=${N}`);
18005
18059
  if (cancelReason !== void 0) {
18006
18060
  throw cancelReason;
18007
18061
  }
@@ -18147,7 +18201,7 @@ async function executeContextSrsDiscoveryUploadPhase(filePaths, phaseOpts, accum
18147
18201
  await notifySucceededChunk(onSucceededChunk, waveChunk);
18148
18202
  B = nextAdaptiveBatchSize(B, dt, batchRecent.slice(0, -1));
18149
18203
  B = Math.min(Math.max(B, ADAPTIVE_B_MIN), ADAPTIVE_B_MAX);
18150
- log?.(`[SRS-13] batch ok ${items.length} files in ${dt}ms, next B=${B}`);
18204
+ log?.(`[upload] batch ok ${items.length} files in ${dt}ms, next B=${B}`);
18151
18205
  } catch (e) {
18152
18206
  if (isUploadCancelledError(e)) {
18153
18207
  throw e;
@@ -18159,7 +18213,7 @@ async function executeContextSrsDiscoveryUploadPhase(filePaths, phaseOpts, accum
18159
18213
  `POST /api/batch/content/srs_discovery/save n=${chunkPaths.length} first=${first}`,
18160
18214
  msg
18161
18215
  );
18162
- log?.(`[SRS-13] batch failed \u2014 falling back to singles for ${chunkPaths.length} file(s)`);
18216
+ log?.(`[upload] batch failed \u2014 falling back to singles for ${chunkPaths.length} file(s)`);
18163
18217
  useBatch = false;
18164
18218
  queue.unshift(...chunkPaths);
18165
18219
  }
@@ -18220,7 +18274,7 @@ async function runContextSrsDiscoveryUpload(opts) {
18220
18274
  return { succeeded, failed, succeededIds };
18221
18275
  }
18222
18276
 
18223
- // ../../src/analysis/macroHeadlessHost.ts
18277
+ // src/analysis/macroHeadlessHost.ts
18224
18278
  function buildMacroOrchestrationDepsHeadless(input) {
18225
18279
  const { storageContext, repoRoot, agentsDirFs, buildOpenCodeOptions, log, signal, macroConfig } = input;
18226
18280
  let adHocWorktree;
@@ -18232,7 +18286,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18232
18286
  config: { ...macroConfig, ...input.synthesisOnly ? { synthesisOnly: true } : {} },
18233
18287
  sleep: (ms) => macroSleep(ms, signal),
18234
18288
  post: (payload) => {
18235
- if (process.env.EASYSPECS_CLI_MACRO_DEBUG === "1") {
18289
+ if (macroConfig.debugPhases === true) {
18236
18290
  log(`[macro] phases=${payload.phases.map((p) => `${p.key}:${p.status}`).join(",")} elapsed=${String(payload.totalElapsedMs)}ms`);
18237
18291
  }
18238
18292
  },
@@ -18267,7 +18321,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18267
18321
  }
18268
18322
  macroFinalize = void 0;
18269
18323
  macroSourceBranch = void 0;
18270
- log(`[SRS-32] macro \u2014 create analysis worktree \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}`);
18324
+ log(`[setup] macro \u2014 create analysis worktree \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}`);
18271
18325
  const prep = await prepareContextArtefactWorktreeOnly(storageContext, repoRoot, log);
18272
18326
  if (!prep.ok) {
18273
18327
  prep.finalize?.();
@@ -18286,7 +18340,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18286
18340
  if (!h) {
18287
18341
  return { ok: false, error: "No analysis worktree." };
18288
18342
  }
18289
- log(`[SRS-32] macro \u2014 materialize OpenCode agents \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}`);
18343
+ log(`[setup] macro \u2014 materialize AgentCode agents \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}`);
18290
18344
  try {
18291
18345
  materializeOpenCodeAgentsWithAce(agentsDirFs, h.path, {
18292
18346
  enabled: getAceAnalysisEnabledForCheckout(h.path),
@@ -18318,7 +18372,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18318
18372
  if (rows.length === 0) {
18319
18373
  return { ok: true };
18320
18374
  }
18321
- log(`[SRS-32] macro \u2014 resume synthesis \u2014 ${rows.length} missing row(s)`);
18375
+ log(`[setup] macro \u2014 resume synthesis \u2014 ${rows.length} missing row(s)`);
18322
18376
  const wsSnap = readAnalysisWorkspaceSnapshot(storageContext);
18323
18377
  const oc = buildOpenCodeOptions(ar);
18324
18378
  await startPipelineRun(storageContext, repoRoot);
@@ -18424,7 +18478,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18424
18478
  if (!fs39.existsSync(contextDir2)) {
18425
18479
  return { ok: false, message: "Missing .gluecharm/context." };
18426
18480
  }
18427
- log(`[SRS-32] macro \u2014 reference coverage (worktree) \u2014 ${ar}`);
18481
+ log(`[setup] macro \u2014 reference coverage (worktree) \u2014 ${ar}`);
18428
18482
  const res = runCoverageReferenceValidation({
18429
18483
  repositoryRootAbs: ar,
18430
18484
  contextDirAbs: contextDir2,
@@ -18472,7 +18526,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18472
18526
  if (!ar) {
18473
18527
  return { ok: false, message: "No analysis worktree." };
18474
18528
  }
18475
- log(`[SRS-32] macro \u2014 reference coverage execution report \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}`);
18529
+ log(`[setup] macro \u2014 reference coverage execution report \u2014 ${(/* @__PURE__ */ new Date()).toISOString()}`);
18476
18530
  const res = await runReferenceCoverageExecutionReport({
18477
18531
  repositoryRootAbs: ar,
18478
18532
  abortSignal: signal,
@@ -18499,7 +18553,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18499
18553
  writeIndexApplicationContext(contextDir2, void 0, {
18500
18554
  sourceBranchAtWorktreeCreation: snap.adHocSourceBranchAtCreation
18501
18555
  });
18502
- log(`[SRS-32] macro \u2014 index written \u2014 ${contextDir2}`);
18556
+ log(`[setup] macro \u2014 index written \u2014 ${contextDir2}`);
18503
18557
  return { ok: true, message: "Index generated and validated." };
18504
18558
  } catch (e) {
18505
18559
  return { ok: false, message: e instanceof Error ? e.message : String(e) };
@@ -18531,7 +18585,7 @@ function buildMacroOrchestrationDepsHeadless(input) {
18531
18585
  };
18532
18586
  }
18533
18587
 
18534
- // ../../src/analysis/coordinationDuplicatesDiagnosis.ts
18588
+ // src/analysis/coordinationDuplicatesDiagnosis.ts
18535
18589
  var fs40 = __toESM(require("fs"));
18536
18590
  var path39 = __toESM(require("path"));
18537
18591
  var import__6 = __toESM(require__());
@@ -18981,7 +19035,7 @@ function runCoordinationDuplicatesDiagnosis(input) {
18981
19035
  };
18982
19036
  }
18983
19037
 
18984
- // ../../src/auth/authApi.ts
19038
+ // src/auth/authApi.ts
18985
19039
  var API_TIMEOUT_MS = 1e4;
18986
19040
  async function fetchWithTimeout(url, init, fetchImpl) {
18987
19041
  const controller = new AbortController();
@@ -19037,7 +19091,7 @@ function toFetchErrorMessage(e) {
19037
19091
  return { status: 0, message: msg };
19038
19092
  }
19039
19093
 
19040
- // ../../src/auth/gluecharmContentNegotiation.ts
19094
+ // src/auth/gluecharmContentNegotiation.ts
19041
19095
  var GLUECHARM_WS_LEGACY_JSON = "application/vnd.gluecharm.v1.ws-legacy+json";
19042
19096
  function pathWithoutQuery(path44) {
19043
19097
  const q = path44.indexOf("?");
@@ -19056,7 +19110,7 @@ function gluecharmContentHeaders(method) {
19056
19110
  return headers;
19057
19111
  }
19058
19112
 
19059
- // ../../src/auth/authenticatedFetch.ts
19113
+ // src/auth/authenticatedFetch.ts
19060
19114
  async function fetchWithTimeout2(url, init, fetchImpl, timeoutMs, externalSignal) {
19061
19115
  const controller = new AbortController();
19062
19116
  const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
@@ -19134,7 +19188,7 @@ function createAuthenticatedRequestJson(deps) {
19134
19188
  return requestJson;
19135
19189
  }
19136
19190
 
19137
- // ../../src/cli/cliSession.ts
19191
+ // src/cli/cliSession.ts
19138
19192
  var fs41 = __toESM(require("node:fs"));
19139
19193
  var os2 = __toESM(require("node:os"));
19140
19194
  var path40 = __toESM(require("node:path"));
@@ -19209,7 +19263,7 @@ function clearCliSession() {
19209
19263
  }
19210
19264
  }
19211
19265
 
19212
- // ../../src/analysis/acePendingTraces.ts
19266
+ // src/analysis/acePendingTraces.ts
19213
19267
  var fs42 = __toESM(require("fs"));
19214
19268
  var path41 = __toESM(require("path"));
19215
19269
  function normalizeAceTraceRelativePath(rel) {
@@ -19275,7 +19329,7 @@ function listPendingAceTraceFiles(contextDir2, worktreeRoot) {
19275
19329
  return pending.map((x) => x.abs);
19276
19330
  }
19277
19331
 
19278
- // ../../src/analysis/aceAutoLearnPool.ts
19332
+ // src/analysis/aceAutoLearnPool.ts
19279
19333
  var path42 = __toESM(require("path"));
19280
19334
  function clampConcurrency2(n) {
19281
19335
  if (!Number.isFinite(n)) {
@@ -19319,18 +19373,18 @@ async function runAceAutoLearnPool(p) {
19319
19373
  return;
19320
19374
  }
19321
19375
  const rel = traceRel(traceAbs);
19322
- p.log?.(`[SRS-37] ace auto-learn: start ${rel} (active ${active}/${maxC})`);
19376
+ p.log?.(`[ace] ace auto-learn: start ${rel} (active ${active}/${maxC})`);
19323
19377
  await p.onItemStart?.(rel);
19324
19378
  const r = await runner(traceAbs, { ...p.baseOpts, abortSignal });
19325
19379
  if (r.ok) {
19326
19380
  completed += 1;
19327
19381
  } else {
19328
19382
  failed += 1;
19329
- p.log?.(`[SRS-37] ace auto-learn: failed ${rel} \u2014 ${r.message}`);
19383
+ p.log?.(`[ace] ace auto-learn: failed ${rel} \u2014 ${r.message}`);
19330
19384
  }
19331
19385
  await p.onItemComplete?.(rel, r.ok);
19332
19386
  active -= 1;
19333
- p.log?.(`[SRS-37] ace auto-learn: finished ${rel} ok=${r.ok}`);
19387
+ p.log?.(`[ace] ace auto-learn: finished ${rel} ok=${r.ok}`);
19334
19388
  pump();
19335
19389
  };
19336
19390
  while (true) {
@@ -19357,7 +19411,7 @@ async function runAceAutoLearnPool(p) {
19357
19411
  return { cancelled: abortSignal?.aborted === true, completed, failed };
19358
19412
  }
19359
19413
 
19360
- // ../../src/cli/parseTailFlags.ts
19414
+ // src/cli/parseTailFlags.ts
19361
19415
  function parseTailFlags(tail) {
19362
19416
  let rootKind = "workspace";
19363
19417
  let worktree;
@@ -19382,7 +19436,7 @@ function parseTailFlags(tail) {
19382
19436
  return { rootKind, worktree };
19383
19437
  }
19384
19438
 
19385
- // ../../src/cli/parseDoctorFlags.ts
19439
+ // src/cli/parseDoctorFlags.ts
19386
19440
  var ALLOWED = /* @__PURE__ */ new Set(["--readiness", "--inspect-config"]);
19387
19441
  function parseDoctorFlags(tail) {
19388
19442
  for (const t of tail) {
@@ -19399,7 +19453,7 @@ function parseDoctorFlags(tail) {
19399
19453
  };
19400
19454
  }
19401
19455
 
19402
- // ../../src/cli/parseAuthLoginTail.ts
19456
+ // src/cli/parseAuthLoginTail.ts
19403
19457
  function extractAuthLoginSessionPathFromTail(tail) {
19404
19458
  const rest = [];
19405
19459
  let sessionPath;
@@ -19448,19 +19502,330 @@ function parseAuthLoginTail(tail) {
19448
19502
  return { ok: false, error: `Unexpected argument: ${a}` };
19449
19503
  }
19450
19504
  if (!email?.trim()) {
19451
- return { ok: false, error: "Missing --email (or use --ci with EASYSPECS_EMAIL / EASYSPECS_PASSWORD)" };
19505
+ return { ok: false, error: "Missing --email (or use --ci with easyspecs.auth.ciLogin in .easyspecs/config.json)" };
19452
19506
  }
19453
19507
  if (password === void 0) {
19454
- return { ok: false, error: "Missing --password (or use --ci with EASYSPECS_EMAIL / EASYSPECS_PASSWORD)" };
19508
+ return { ok: false, error: "Missing --password (or use --ci with easyspecs.auth.ciLogin in .easyspecs/config.json)" };
19455
19509
  }
19456
19510
  return { ok: true, creds: { email: email.trim(), password } };
19457
19511
  }
19458
19512
 
19459
- // ../../src/cli/main.ts
19460
- var PKG_VERSION = "0.0.9";
19513
+ // src/cli/cliDiagStyle.ts
19514
+ var RESET = "\x1B[0m";
19515
+ var DIM = "\x1B[2m";
19516
+ var BOLD = "\x1B[1m";
19517
+ var TAG_SGR = {
19518
+ pool: "\x1B[96m",
19519
+ queue: "\x1B[96m",
19520
+ worktree: "\x1B[33m",
19521
+ context: "\x1B[90m",
19522
+ index: "\x1B[92m",
19523
+ setup: "\x1B[95m",
19524
+ AgentCode: "\x1B[94m",
19525
+ coverage: "\x1B[96m",
19526
+ remediation: "\x1B[35m",
19527
+ report: "\x1B[36m",
19528
+ upload: "\x1B[33m",
19529
+ duplicates: "\x1B[35m",
19530
+ "zero-ref": "\x1B[91m",
19531
+ ace: "\x1B[95m",
19532
+ cli: "\x1B[90m",
19533
+ EasySpecs: "\x1B[93m"
19534
+ };
19535
+ var lastPhaseFamily;
19536
+ function resetCliDiagnosticPhaseState() {
19537
+ lastPhaseFamily = void 0;
19538
+ }
19539
+ function stderrSupportsColor() {
19540
+ if (process.env.NO_COLOR != null && process.env.NO_COLOR !== "") {
19541
+ return false;
19542
+ }
19543
+ if (process.env.FORCE_COLOR != null && process.env.FORCE_COLOR !== "") {
19544
+ return true;
19545
+ }
19546
+ return process.stderr.isTTY === true;
19547
+ }
19548
+ function phaseFamilyForTag(tag) {
19549
+ if (!tag) {
19550
+ return "other";
19551
+ }
19552
+ if (tag === "setup") {
19553
+ return "setup";
19554
+ }
19555
+ if (tag === "AgentCode") {
19556
+ return "agent";
19557
+ }
19558
+ if (tag === "pool" || tag === "queue" || tag === "worktree" || tag === "context") {
19559
+ return "orch";
19560
+ }
19561
+ if (Object.prototype.hasOwnProperty.call(TAG_SGR, tag)) {
19562
+ return "meta";
19563
+ }
19564
+ return "other";
19565
+ }
19566
+ function shouldInsertPhaseBlank(nextTag) {
19567
+ const next = phaseFamilyForTag(nextTag);
19568
+ const prev = lastPhaseFamily;
19569
+ lastPhaseFamily = next;
19570
+ if (prev === void 0 || prev === next) {
19571
+ return false;
19572
+ }
19573
+ if (prev === "other" || next === "other") {
19574
+ return false;
19575
+ }
19576
+ if (prev === "meta" && next === "meta") {
19577
+ return false;
19578
+ }
19579
+ if (prev === "setup" || next === "setup") {
19580
+ return true;
19581
+ }
19582
+ if (prev === "orch" && (next === "agent" || next === "meta") || (prev === "agent" || prev === "meta") && next === "orch") {
19583
+ return true;
19584
+ }
19585
+ if (prev === "agent" && next === "meta" || prev === "meta" && next === "agent") {
19586
+ return true;
19587
+ }
19588
+ return false;
19589
+ }
19590
+ function extractBracketTag(line) {
19591
+ const m = /^\[([^\]]+)\]/.exec(line);
19592
+ if (!m) {
19593
+ return void 0;
19594
+ }
19595
+ return { tag: m[1], prefixLen: m[0].length };
19596
+ }
19597
+ function stylePoolVerbAndTail(rest) {
19598
+ const t = rest.trimStart();
19599
+ const verbMatch = /^(start|complete|stopped|skipped|retry)\b/.exec(t);
19600
+ if (!verbMatch) {
19601
+ return rest;
19602
+ }
19603
+ const verb = verbMatch[1];
19604
+ const idx = rest.indexOf(verb);
19605
+ if (idx < 0) {
19606
+ return rest;
19607
+ }
19608
+ const before = rest.slice(0, idx);
19609
+ const afterVerb = rest.slice(idx + verb.length);
19610
+ let mid = `${DIM}${verb}${RESET}`;
19611
+ if (verb === "complete") {
19612
+ mid = `${BOLD}\x1B[92m${verb}${RESET}`;
19613
+ } else if (verb === "retry") {
19614
+ mid = `${BOLD}\x1B[33m${verb}${RESET}`;
19615
+ } else if (verb === "skipped" || verb === "stopped") {
19616
+ mid = `${BOLD}\x1B[91m${verb}${RESET}`;
19617
+ }
19618
+ let tail = stylePoolWorkItemTail(afterVerb);
19619
+ if (verb === "retry" || verb === "skipped") {
19620
+ tail = dimClauseSuffix(tail);
19621
+ }
19622
+ return `${before}${mid}${tail}`;
19623
+ }
19624
+ function stylePoolWorkItemTail(afterVerb) {
19625
+ let s = afterVerb;
19626
+ const activeMatch = /\s+(\(active \d+\/\d+\))\s*$/.exec(s);
19627
+ let suffix = "";
19628
+ if (activeMatch) {
19629
+ suffix = `${DIM}${activeMatch[1]}${RESET}`;
19630
+ s = s.slice(0, activeMatch.index);
19631
+ }
19632
+ const ts = s.trimStart();
19633
+ const leadWs = s.slice(0, s.length - ts.length);
19634
+ const idMatch = /^(\S+)/.exec(ts);
19635
+ if (!idMatch) {
19636
+ return `${s}${suffix}`;
19637
+ }
19638
+ const id = idMatch[1];
19639
+ if (!/^[\w:-]+$/.test(id) || id.length < 2) {
19640
+ return `${s}${suffix}`;
19641
+ }
19642
+ const afterId = ts.slice(id.length);
19643
+ return `${leadWs}${BOLD}${id}${RESET}${afterId}${suffix}`;
19644
+ }
19645
+ function dimClauseSuffix(s) {
19646
+ const idx = s.indexOf(" \u2014");
19647
+ if (idx >= 0) {
19648
+ return `${s.slice(0, idx)}${DIM} \u2014${s.slice(idx + 2)}${RESET}`;
19649
+ }
19650
+ const after = s.search(/\s+after\s+/i);
19651
+ if (after >= 0) {
19652
+ return `${s.slice(0, after)}${DIM}${s.slice(after)}${RESET}`;
19653
+ }
19654
+ if (s.trim().length > 0) {
19655
+ return `${DIM}${s}${RESET}`;
19656
+ }
19657
+ return s;
19658
+ }
19659
+ function styleQueueRest(rest) {
19660
+ const t = rest.trimStart();
19661
+ const lead = rest.slice(0, rest.length - t.length);
19662
+ const drained = /^drained\b/.exec(t);
19663
+ if (drained) {
19664
+ const k = "drained";
19665
+ const i = rest.indexOf(k);
19666
+ return `${rest.slice(0, i)}${BOLD}\x1B[92m${k}${RESET}${DIM}${rest.slice(i + k.length)}${RESET}`;
19667
+ }
19668
+ const unb = /^unblocked\b/.exec(t);
19669
+ if (unb) {
19670
+ const k = "unblocked";
19671
+ const i = rest.indexOf(k);
19672
+ return `${rest.slice(0, i)}${BOLD}\x1B[96m${k}${RESET}${rest.slice(i + k.length)}`;
19673
+ }
19674
+ if (t.startsWith("cascade skip")) {
19675
+ const k = "cascade skip";
19676
+ const i = rest.indexOf(k);
19677
+ return `${rest.slice(0, i)}${DIM}${k}${RESET}${rest.slice(i + k.length)}`;
19678
+ }
19679
+ return rest;
19680
+ }
19681
+ function styleContextRest(rest) {
19682
+ const ts = rest.trimStart();
19683
+ const low = ts.toLowerCase();
19684
+ if (low.includes("pipeline error")) {
19685
+ return rest.replace(/pipeline error/gi, `${BOLD}\x1B[91mpipeline error${RESET}`);
19686
+ }
19687
+ if (low.includes("synthesis finished")) {
19688
+ return rest.replace(/synthesis finished/gi, `${BOLD}\x1B[92msynthesis finished${RESET}`);
19689
+ }
19690
+ if (low.includes("pipeline stopped")) {
19691
+ return rest.replace(/pipeline stopped/gi, `${BOLD}\x1B[33mpipeline stopped${RESET}`);
19692
+ }
19693
+ if (low.includes("artefact pipeline started")) {
19694
+ return rest.replace(/context artefact pipeline started/gi, `${BOLD}\x1B[96m$&${RESET}`);
19695
+ }
19696
+ return rest;
19697
+ }
19698
+ function styleWorktreeRest(rest) {
19699
+ const pathLike = rest.match(/:\s*(.+)$/);
19700
+ if (!pathLike) {
19701
+ return rest;
19702
+ }
19703
+ const cut = rest.slice(0, pathLike.index + pathLike[0].length - pathLike[1].length);
19704
+ return `${cut}${DIM}${pathLike[1]}${RESET}`;
19705
+ }
19706
+ function styleIndexRest(rest) {
19707
+ return dimIsoTimestamps(dimPathsAfterKeywords(rest));
19708
+ }
19709
+ function styleSetupRest(rest) {
19710
+ return dimIsoTimestamps(rest.replace(/( — )/g, `${DIM}$1${RESET}`));
19711
+ }
19712
+ function dimPathsAfterKeywords(rest) {
19713
+ return rest.replace(/(written under |failed — )(.+)/, (_m, a, b) => `${a}${DIM}${b}${RESET}`);
19714
+ }
19715
+ var ISO_RE = /\d{4}-\d{2}-\d{2}T[\d:.-]+(?:Z|[+-]\d{2}:\d{2})?/g;
19716
+ function dimIsoTimestamps(s) {
19717
+ return s.replace(ISO_RE, (m) => `${DIM}${m}${RESET}`);
19718
+ }
19719
+ function styleAgentCodeRest(rest) {
19720
+ const ts = rest.trimStart();
19721
+ const lead = rest.slice(0, rest.length - ts.length);
19722
+ const pf = /^prompt file:\s*(.+?)\s+\((\d+)\s+bytes\)\s*$/i.exec(ts);
19723
+ if (pf) {
19724
+ return `${lead}${DIM}prompt file:${RESET} ${pf[1]} ${DIM}(${pf[2]} bytes)${RESET}`;
19725
+ }
19726
+ const cmd = /^command:\s*(.+)$/i.exec(ts);
19727
+ if (cmd) {
19728
+ return `${lead}${DIM}command:${RESET} ${DIM}${cmd[1]}${RESET}`;
19729
+ }
19730
+ const cwd = /^cwd:\s*(.+)$/i.exec(ts);
19731
+ if (cwd) {
19732
+ return `${lead}${DIM}cwd:${RESET} ${cwd[1]}`;
19733
+ }
19734
+ const argv = /^argv:\s*(.+)$/i.exec(ts);
19735
+ if (argv) {
19736
+ return `${lead}${DIM}argv:${RESET} ${DIM}${argv[1]}${RESET}`;
19737
+ }
19738
+ const spawnErr = /^spawn error:\s*(.+)$/i.exec(ts);
19739
+ if (spawnErr) {
19740
+ return `${lead}${BOLD}\x1B[91mspawn error:${RESET} ${spawnErr[1]}`;
19741
+ }
19742
+ const exitL = /^(\S+)\s+exitCode=/.exec(ts);
19743
+ if (exitL) {
19744
+ return `${lead}${DIM}${ts}${RESET}`;
19745
+ }
19746
+ const ste = /^(stderr|stdout):\s*$/i.exec(ts);
19747
+ if (ste) {
19748
+ return `${lead}${DIM}${ste[1]}:${RESET}`;
19749
+ }
19750
+ const emptyStream = /^(stderr|stdout):\s*\((empty)\)\s*$/i.exec(ts);
19751
+ if (emptyStream) {
19752
+ return `${lead}${DIM}${emptyStream[1]}:${RESET} ${DIM}(${emptyStream[2]})${RESET}`;
19753
+ }
19754
+ return rest;
19755
+ }
19756
+ function applyTagLine(tag, open, prefix, rest) {
19757
+ let styledRest = rest;
19758
+ if (tag === "pool") {
19759
+ styledRest = stylePoolVerbAndTail(rest);
19760
+ } else if (tag === "queue") {
19761
+ styledRest = styleQueueRest(rest);
19762
+ } else if (tag === "context") {
19763
+ styledRest = styleContextRest(rest);
19764
+ } else if (tag === "worktree") {
19765
+ styledRest = styleWorktreeRest(rest);
19766
+ } else if (tag === "index") {
19767
+ styledRest = styleIndexRest(rest);
19768
+ } else if (tag === "setup") {
19769
+ styledRest = styleSetupRest(rest);
19770
+ } else if (tag === "AgentCode") {
19771
+ styledRest = styleAgentCodeRest(rest);
19772
+ }
19773
+ return `${open}${prefix}${RESET}${styledRest}`;
19774
+ }
19775
+ function formatAgentCodeBlock(line, open, tag, prefix) {
19776
+ const nl = line.indexOf("\n");
19777
+ if (nl === -1) {
19778
+ return applyTagLine(tag, open, prefix, line.slice(prefix.length));
19779
+ }
19780
+ const head = line.slice(0, nl);
19781
+ const body = line.slice(nl + 1);
19782
+ const headRest = head.slice(prefix.length);
19783
+ const lower = headRest.trimStart().toLowerCase();
19784
+ let headStyled = applyTagLine(tag, open, prefix, headRest);
19785
+ if (lower.startsWith("stderr:") || lower.startsWith("stdout:")) {
19786
+ const indented = body.split(/\r?\n/).map((ln) => ` ${DIM}${ln}${RESET}`).join("\n");
19787
+ return `${headStyled}
19788
+ ${indented}`;
19789
+ }
19790
+ return `${headStyled}
19791
+ ${DIM}${body}${RESET}`;
19792
+ }
19793
+ function formatDiagnosticLineForTTY(line) {
19794
+ const ex = extractBracketTag(line);
19795
+ if (!ex) {
19796
+ return line;
19797
+ }
19798
+ const { tag, prefixLen } = ex;
19799
+ const open = TAG_SGR[tag];
19800
+ if (!open) {
19801
+ return line;
19802
+ }
19803
+ const prefix = line.slice(0, prefixLen);
19804
+ if (tag === "AgentCode" && line.includes("\n")) {
19805
+ return formatAgentCodeBlock(line, open, tag, prefix);
19806
+ }
19807
+ return applyTagLine(tag, open, prefix, line.slice(prefixLen));
19808
+ }
19809
+ function formatCliStderrLine(line, useAnsi) {
19810
+ const ex = extractBracketTag(line);
19811
+ const leadingBlank = ex ? shouldInsertPhaseBlank(ex.tag) : false;
19812
+ const text = useAnsi ? formatDiagnosticLineForTTY(line) : line;
19813
+ return { leadingBlank, text };
19814
+ }
19815
+
19816
+ // src/cli/main.ts
19817
+ var PKG_VERSION = "0.0.12";
19461
19818
  function logErr(flags, ...a) {
19462
19819
  if (!flags.json) {
19463
- console.error(...a);
19820
+ if (a.length === 1 && typeof a[0] === "string") {
19821
+ const { leadingBlank, text } = formatCliStderrLine(a[0], stderrSupportsColor());
19822
+ if (leadingBlank) {
19823
+ console.error("");
19824
+ }
19825
+ console.error(text);
19826
+ } else {
19827
+ console.error(...a);
19828
+ }
19464
19829
  } else if (flags.verbose) {
19465
19830
  console.error(...a);
19466
19831
  }
@@ -19564,9 +19929,9 @@ function requireOpenCode(merged, flags) {
19564
19929
  }
19565
19930
  return readiness;
19566
19931
  }
19567
- async function runResumeRemediationPool(storage, repoRoot, analysisRoot, merged, flags) {
19932
+ async function runResumeRemediationPool(storage, repoRoot, analysisRoot, merged, flags, repoConfig) {
19568
19933
  requireOpenCode(merged, flags);
19569
- const agentsDir = resolveOpenCodeAgentsDir();
19934
+ const agentsDir = resolveOpenCodeAgentsDir(repoRoot, repoConfig);
19570
19935
  assertAgentsDirExists(agentsDir);
19571
19936
  const ctxDir = path43.join(analysisRoot, ".gluecharm", "context");
19572
19937
  const snap = readArtefactRunSnapshot(storage);
@@ -19766,6 +20131,7 @@ async function main() {
19766
20131
  };
19767
20132
  const pos = positionals;
19768
20133
  try {
20134
+ resetCliDiagnosticPhaseState();
19769
20135
  if (pos[0] === "doctor") {
19770
20136
  let modes;
19771
20137
  try {
@@ -19775,7 +20141,7 @@ async function main() {
19775
20141
  logErr(flags, "Usage: easyspecs-cli doctor [--readiness] [--inspect-config]");
19776
20142
  process.exit(ExitCode.usage);
19777
20143
  }
19778
- const agentsDir = resolveOpenCodeAgentsDir();
20144
+ const agentsDir = resolveOpenCodeAgentsDir(repoRoot, repoConfig);
19779
20145
  const agentsOk = fs43.existsSync(agentsDir);
19780
20146
  const oc = getOpenCodeReadiness({
19781
20147
  executable: merged.openCodeExecutable,
@@ -19840,17 +20206,18 @@ async function main() {
19840
20206
  process.exit(ExitCode.usage);
19841
20207
  }
19842
20208
  const parsedCli = parseAuthLoginTail(tailForCreds);
19843
- const envEmail = process.env.EASYSPECS_EMAIL?.trim();
19844
- const envPassword = process.env.EASYSPECS_PASSWORD?.trim();
19845
- const useLegacyCiEnv = !parsedCli.ok && (flags.ci || tailFull.includes("--ci")) && Boolean(envEmail) && Boolean(envPassword);
20209
+ const ciLogin = repoConfig.easyspecs?.auth?.ciLogin;
20210
+ const cfgEmail = ciLogin?.email?.trim();
20211
+ const cfgPassword = ciLogin?.password;
20212
+ const useCiConfig = !parsedCli.ok && (flags.ci || tailFull.includes("--ci")) && Boolean(cfgEmail) && typeof cfgPassword === "string" && cfgPassword.length > 0;
19846
20213
  let email;
19847
20214
  let password;
19848
20215
  if (parsedCli.ok) {
19849
20216
  email = parsedCli.creds.email;
19850
20217
  password = parsedCli.creds.password;
19851
- } else if (useLegacyCiEnv) {
19852
- email = envEmail;
19853
- password = envPassword;
20218
+ } else if (useCiConfig) {
20219
+ email = cfgEmail;
20220
+ password = cfgPassword;
19854
20221
  } else {
19855
20222
  logErr(flags, parsedCli.error);
19856
20223
  logErr(
@@ -19859,7 +20226,7 @@ async function main() {
19859
20226
  );
19860
20227
  logErr(
19861
20228
  flags,
19862
- "Legacy: easyspecs-cli --ci auth login (requires EASYSPECS_EMAIL and EASYSPECS_PASSWORD)"
20229
+ "Non-interactive (--ci): set easyspecs.auth.ciLogin.email and easyspecs.auth.ciLogin.password in .easyspecs/config.json"
19863
20230
  );
19864
20231
  process.exit(ExitCode.usage);
19865
20232
  }
@@ -19912,7 +20279,7 @@ async function main() {
19912
20279
  const storage = createFileBackedWorkspaceState(repoRoot);
19913
20280
  const { worktree } = parseWorktreeFlag(pos.slice(3));
19914
20281
  const analysisRoot = resolveAdHocCheckoutRoot(repoRoot, storage, worktree);
19915
- const poolRes = await runResumeRemediationPool(storage, repoRoot, analysisRoot, merged, flags);
20282
+ const poolRes = await runResumeRemediationPool(storage, repoRoot, analysisRoot, merged, flags, repoConfig);
19916
20283
  if (poolRes.cancelled) {
19917
20284
  finish(ExitCode.cancelled, { ok: false, error: "Remediation cancelled.", analysisWorktreePath: analysisRoot });
19918
20285
  }
@@ -19929,7 +20296,7 @@ async function main() {
19929
20296
  const storage = createFileBackedWorkspaceState(repoRoot);
19930
20297
  const { worktree } = parseWorktreeFlag(pos.slice(3));
19931
20298
  const analysisRoot = resolveAdHocCheckoutRoot(repoRoot, storage, worktree);
19932
- const poolRes = await runResumeRemediationPool(storage, repoRoot, analysisRoot, merged, flags);
20299
+ const poolRes = await runResumeRemediationPool(storage, repoRoot, analysisRoot, merged, flags, repoConfig);
19933
20300
  if (poolRes.cancelled) {
19934
20301
  finish(ExitCode.cancelled, { ok: false, error: "Remediation cancelled.", analysisWorktreePath: analysisRoot });
19935
20302
  }
@@ -19944,7 +20311,7 @@ async function main() {
19944
20311
  }
19945
20312
  if (pos[0] === "run" && pos[1] === "synthesis" && pos.length === 2) {
19946
20313
  requireOpenCode(merged, flags);
19947
- const agentsDir = resolveOpenCodeAgentsDir();
20314
+ const agentsDir = resolveOpenCodeAgentsDir(repoRoot, repoConfig);
19948
20315
  assertAgentsDirExists(agentsDir);
19949
20316
  const storage = createFileBackedWorkspaceState(repoRoot);
19950
20317
  const result = await runContextArtefactPipelineAsync(
@@ -19968,7 +20335,7 @@ async function main() {
19968
20335
  await noteAgentsMaterialized(storage);
19969
20336
  if (merged.promoteContextToWorkspace && result.contextDir) {
19970
20337
  const n = promoteContextDirectoryToWorkspaceFs(result.contextDir, repoRoot);
19971
- logErr(flags, `[SRS-8] promoted ${String(n.filesCopied)} file(s) \u2192 ${repoRoot}`);
20338
+ logErr(flags, `[context] promoted ${String(n.filesCopied)} file(s) \u2192 ${repoRoot}`);
19972
20339
  }
19973
20340
  const idx = result.indexApplicationContext;
19974
20341
  finish(ExitCode.ok, {
@@ -20012,8 +20379,8 @@ async function main() {
20012
20379
  });
20013
20380
  if (res.ok) {
20014
20381
  const d = res.document;
20015
- const maxPct = Number(process.env.EASYSPECS_MAX_PERCENT_NON_REFERENCED ?? "");
20016
- if (Number.isFinite(maxPct) && d.metrics.percentNonReferenced > maxPct) {
20382
+ const maxPct = repoConfig.easyspecs?.diagnose?.zeroReference?.maxPercentNonReferenced;
20383
+ if (maxPct !== null && maxPct !== void 0 && Number.isFinite(maxPct) && d.metrics.percentNonReferenced > maxPct) {
20017
20384
  finish(ExitCode.validation, {
20018
20385
  ok: false,
20019
20386
  error: `percentNonReferenced ${String(d.metrics.percentNonReferenced)} > ${String(maxPct)}`
@@ -20032,7 +20399,7 @@ async function main() {
20032
20399
  sourceRoot: rootKind === "worktree" ? "worktree" : "workspace"
20033
20400
  });
20034
20401
  if (res.ok) {
20035
- const strict = process.env.EASYSPECS_DUPLICATES_STRICT !== "0";
20402
+ const strict = repoConfig.easyspecs?.diagnose?.coordinationDuplicates?.strict !== false;
20036
20403
  const bad = strict && ((res.groupCount ?? 0) > 0 || (res.orphanMarkdownCount ?? 0) > 0);
20037
20404
  finish(bad ? ExitCode.validation : ExitCode.ok, {
20038
20405
  ok: !bad,
@@ -20073,10 +20440,10 @@ async function main() {
20073
20440
  if (sub === "zero-reference") {
20074
20441
  logErr(
20075
20442
  flags,
20076
- "[SRS-30] zero-reference remediation runs OpenCode agents per file; expect cost and runtime similar to the extension macro phase."
20443
+ "[zero-ref] zero-reference remediation runs OpenCode agents per file; expect cost and runtime similar to the extension macro phase."
20077
20444
  );
20078
20445
  requireOpenCode(merged, flags);
20079
- const agentsDir = resolveOpenCodeAgentsDir();
20446
+ const agentsDir = resolveOpenCodeAgentsDir(repoRoot, repoConfig);
20080
20447
  assertAgentsDirExists(agentsDir);
20081
20448
  const storage = createFileBackedWorkspaceState(repoRoot);
20082
20449
  const { worktree: wtAce } = parseWorktreeFlag(pos.slice(2));
@@ -20126,11 +20493,11 @@ async function main() {
20126
20493
  if (wantsUpload && !uploadSession) {
20127
20494
  finish(ExitCode.auth, {
20128
20495
  ok: false,
20129
- error: "analysis --upload requires `easyspecs-cli auth login --email \u2026 --password \u2026` (or legacy `--ci` + EASYSPECS_EMAIL/PASSWORD)."
20496
+ error: "analysis --upload requires `easyspecs-cli auth login --email \u2026 --password \u2026` or `--ci` with easyspecs.auth.ciLogin in .easyspecs/config.json."
20130
20497
  });
20131
20498
  }
20132
20499
  const skipBackendSync = !wantsUpload;
20133
- const agentsDir = resolveOpenCodeAgentsDir();
20500
+ const agentsDir = resolveOpenCodeAgentsDir(repoRoot, repoConfig);
20134
20501
  assertAgentsDirExists(agentsDir);
20135
20502
  const storage = createFileBackedWorkspaceState(repoRoot);
20136
20503
  const runBackendSyncImpl = wantsUpload && uploadSession ? async () => {
@@ -20208,15 +20575,16 @@ async function main() {
20208
20575
  if (sessRaw === void 0) {
20209
20576
  finish(ExitCode.auth, {
20210
20577
  ok: false,
20211
- error: "auth login first (`auth login --email \u2026 --password \u2026`, or legacy `--ci` + env)"
20578
+ error: "auth login first (`easyspecs-cli auth login --email \u2026 --password \u2026`, or `--ci` with easyspecs.auth.ciLogin in .easyspecs/config.json)"
20212
20579
  });
20213
20580
  }
20214
20581
  const sess = sessRaw;
20215
20582
  let ctxDir = path43.join(repoRoot, ".gluecharm", "context");
20216
20583
  if (pos[1] === "republish") {
20217
- const fromEnv = process.env.EASYSPECS_UPLOAD_CONTEXT_DIR?.trim();
20218
- if (fromEnv && fs43.existsSync(path43.join(fromEnv, ".."))) {
20219
- ctxDir = path43.resolve(fromEnv);
20584
+ const fromCfg = repoConfig.easyspecs?.upload?.contextDirectory?.trim();
20585
+ const resolvedOverride = fromCfg && fromCfg.length > 0 ? path43.isAbsolute(fromCfg) ? path43.normalize(fromCfg) : path43.resolve(repoRoot, fromCfg) : "";
20586
+ if (resolvedOverride && fs43.existsSync(path43.join(resolvedOverride, ".."))) {
20587
+ ctxDir = resolvedOverride;
20220
20588
  } else {
20221
20589
  const storage = createFileBackedWorkspaceState(repoRoot);
20222
20590
  const snap = readAnalysisWorkspaceSnapshot(storage);
@@ -20224,7 +20592,7 @@ async function main() {
20224
20592
  if (!wt) {
20225
20593
  finish(ExitCode.misconfiguration, {
20226
20594
  ok: false,
20227
- error: "upload republish requires an analysis worktree with .gluecharm/context (`easyspecs-cli run synthesis` first), or set EASYSPECS_UPLOAD_CONTEXT_DIR."
20595
+ error: "upload republish requires an analysis worktree with .gluecharm/context (`easyspecs-cli run synthesis` first), or set easyspecs.upload.contextDirectory in .easyspecs/config.json."
20228
20596
  });
20229
20597
  }
20230
20598
  ctxDir = wt;
@@ -20273,7 +20641,7 @@ async function main() {
20273
20641
  if (failed === 0 && Object.keys(up.succeededIds).length > 0) {
20274
20642
  const mergeRes = mergeUploadIdsIntoIndexOnDisk(ctxDir, up.succeededIds);
20275
20643
  if (!mergeRes.ok) {
20276
- logErr(flags, `[SRS-26] merge upload ids into index failed: ${mergeRes.message}`);
20644
+ logErr(flags, `[upload] merge upload ids into index failed: ${mergeRes.message}`);
20277
20645
  }
20278
20646
  }
20279
20647
  finish(failed ? ExitCode.upload : ExitCode.ok, {