@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/README.md +174 -126
- package/commands.md +17 -16
- package/dist/main.cjs +770 -402
- package/dist/main.cjs.map +3 -3
- package/package.json +2 -2
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
|
-
//
|
|
29
|
+
// scripts/vscode-stub.cjs
|
|
30
30
|
var require_vscode_stub = __commonJS({
|
|
31
|
-
"
|
|
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
|
-
//
|
|
52
|
+
// node_modules/ajv/dist/compile/codegen/code.js
|
|
53
53
|
var require_code = __commonJS({
|
|
54
|
-
"
|
|
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
|
-
//
|
|
206
|
+
// node_modules/ajv/dist/compile/codegen/scope.js
|
|
207
207
|
var require_scope = __commonJS({
|
|
208
|
-
"
|
|
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
|
-
//
|
|
351
|
+
// node_modules/ajv/dist/compile/codegen/index.js
|
|
352
352
|
var require_codegen = __commonJS({
|
|
353
|
-
"
|
|
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
|
-
//
|
|
1071
|
+
// node_modules/ajv/dist/compile/util.js
|
|
1072
1072
|
var require_util = __commonJS({
|
|
1073
|
-
"
|
|
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
|
-
//
|
|
1238
|
+
// node_modules/ajv/dist/compile/names.js
|
|
1239
1239
|
var require_names = __commonJS({
|
|
1240
|
-
"
|
|
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
|
-
//
|
|
1277
|
+
// node_modules/ajv/dist/compile/errors.js
|
|
1278
1278
|
var require_errors = __commonJS({
|
|
1279
|
-
"
|
|
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
|
-
//
|
|
1399
|
+
// node_modules/ajv/dist/compile/validate/boolSchema.js
|
|
1400
1400
|
var require_boolSchema = __commonJS({
|
|
1401
|
-
"
|
|
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
|
-
//
|
|
1450
|
+
// node_modules/ajv/dist/compile/rules.js
|
|
1451
1451
|
var require_rules = __commonJS({
|
|
1452
|
-
"
|
|
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
|
-
//
|
|
1481
|
+
// node_modules/ajv/dist/compile/validate/applicability.js
|
|
1482
1482
|
var require_applicability = __commonJS({
|
|
1483
|
-
"
|
|
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
|
-
//
|
|
1504
|
+
// node_modules/ajv/dist/compile/validate/dataType.js
|
|
1505
1505
|
var require_dataType = __commonJS({
|
|
1506
|
-
"
|
|
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
|
-
//
|
|
1688
|
+
// node_modules/ajv/dist/compile/validate/defaults.js
|
|
1689
1689
|
var require_defaults = __commonJS({
|
|
1690
|
-
"
|
|
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
|
-
//
|
|
1725
|
+
// node_modules/ajv/dist/vocabularies/code.js
|
|
1726
1726
|
var require_code2 = __commonJS({
|
|
1727
|
-
"
|
|
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
|
-
//
|
|
1858
|
+
// node_modules/ajv/dist/compile/validate/keyword.js
|
|
1859
1859
|
var require_keyword = __commonJS({
|
|
1860
|
-
"
|
|
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
|
-
//
|
|
1976
|
+
// node_modules/ajv/dist/compile/validate/subschema.js
|
|
1977
1977
|
var require_subschema = __commonJS({
|
|
1978
|
-
"
|
|
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
|
-
//
|
|
2059
|
+
// node_modules/fast-deep-equal/index.js
|
|
2060
2060
|
var require_fast_deep_equal = __commonJS({
|
|
2061
|
-
"
|
|
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
|
-
//
|
|
2094
|
+
// node_modules/json-schema-traverse/index.js
|
|
2095
2095
|
var require_json_schema_traverse = __commonJS({
|
|
2096
|
-
"
|
|
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
|
-
//
|
|
2182
|
+
// node_modules/ajv/dist/compile/resolve.js
|
|
2183
2183
|
var require_resolve = __commonJS({
|
|
2184
|
-
"
|
|
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 = "",
|
|
2255
|
-
if (
|
|
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
|
-
//
|
|
2338
|
+
// node_modules/ajv/dist/compile/validate/index.js
|
|
2339
2339
|
var require_validate = __commonJS({
|
|
2340
|
-
"
|
|
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
|
-
//
|
|
2846
|
+
// node_modules/ajv/dist/runtime/validation_error.js
|
|
2847
2847
|
var require_validation_error = __commonJS({
|
|
2848
|
-
"
|
|
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
|
-
//
|
|
2862
|
+
// node_modules/ajv/dist/compile/ref_error.js
|
|
2863
2863
|
var require_ref_error = __commonJS({
|
|
2864
|
-
"
|
|
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
|
-
//
|
|
2879
|
+
// node_modules/ajv/dist/compile/index.js
|
|
2880
2880
|
var require_compile = __commonJS({
|
|
2881
|
-
"
|
|
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
|
-
//
|
|
3103
|
+
// node_modules/ajv/dist/refs/data.json
|
|
3104
3104
|
var require_data = __commonJS({
|
|
3105
|
-
"
|
|
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
|
-
//
|
|
3122
|
+
// node_modules/fast-uri/lib/utils.js
|
|
3123
3123
|
var require_utils = __commonJS({
|
|
3124
|
-
"
|
|
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
|
-
//
|
|
3379
|
+
// node_modules/fast-uri/lib/schemes.js
|
|
3380
3380
|
var require_schemes = __commonJS({
|
|
3381
|
-
"
|
|
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
|
-
//
|
|
3589
|
+
// node_modules/fast-uri/index.js
|
|
3590
3590
|
var require_fast_uri = __commonJS({
|
|
3591
|
-
"
|
|
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
|
|
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:
|
|
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
|
-
//
|
|
3844
|
+
// node_modules/ajv/dist/runtime/uri.js
|
|
3845
3845
|
var require_uri = __commonJS({
|
|
3846
|
-
"
|
|
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
|
-
//
|
|
3855
|
+
// node_modules/ajv/dist/core.js
|
|
3856
3856
|
var require_core = __commonJS({
|
|
3857
|
-
"
|
|
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
|
-
//
|
|
4466
|
+
// node_modules/ajv/dist/vocabularies/core/id.js
|
|
4467
4467
|
var require_id = __commonJS({
|
|
4468
|
-
"
|
|
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
|
-
//
|
|
4481
|
+
// node_modules/ajv/dist/vocabularies/core/ref.js
|
|
4482
4482
|
var require_ref = __commonJS({
|
|
4483
|
-
"
|
|
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
|
-
//
|
|
4603
|
+
// node_modules/ajv/dist/vocabularies/core/index.js
|
|
4604
4604
|
var require_core2 = __commonJS({
|
|
4605
|
-
"
|
|
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
|
-
//
|
|
4624
|
+
// node_modules/ajv/dist/vocabularies/validation/limitNumber.js
|
|
4625
4625
|
var require_limitNumber = __commonJS({
|
|
4626
|
-
"
|
|
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
|
-
//
|
|
4656
|
+
// node_modules/ajv/dist/vocabularies/validation/multipleOf.js
|
|
4657
4657
|
var require_multipleOf = __commonJS({
|
|
4658
|
-
"
|
|
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
|
-
//
|
|
4684
|
+
// node_modules/ajv/dist/runtime/ucs2length.js
|
|
4685
4685
|
var require_ucs2length = __commonJS({
|
|
4686
|
-
"
|
|
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
|
-
//
|
|
4710
|
+
// node_modules/ajv/dist/vocabularies/validation/limitLength.js
|
|
4711
4711
|
var require_limitLength = __commonJS({
|
|
4712
|
-
"
|
|
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
|
-
//
|
|
4742
|
+
// node_modules/ajv/dist/vocabularies/validation/pattern.js
|
|
4743
4743
|
var require_pattern = __commonJS({
|
|
4744
|
-
"
|
|
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
|
-
//
|
|
4779
|
+
// node_modules/ajv/dist/vocabularies/validation/limitProperties.js
|
|
4780
4780
|
var require_limitProperties = __commonJS({
|
|
4781
|
-
"
|
|
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
|
-
//
|
|
4808
|
+
// node_modules/ajv/dist/vocabularies/validation/required.js
|
|
4809
4809
|
var require_required = __commonJS({
|
|
4810
|
-
"
|
|
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
|
-
//
|
|
4890
|
+
// node_modules/ajv/dist/vocabularies/validation/limitItems.js
|
|
4891
4891
|
var require_limitItems = __commonJS({
|
|
4892
|
-
"
|
|
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
|
-
//
|
|
4919
|
+
// node_modules/ajv/dist/runtime/equal.js
|
|
4920
4920
|
var require_equal = __commonJS({
|
|
4921
|
-
"
|
|
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
|
-
//
|
|
4930
|
+
// node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
|
|
4931
4931
|
var require_uniqueItems = __commonJS({
|
|
4932
|
-
"
|
|
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
|
-
//
|
|
4997
|
+
// node_modules/ajv/dist/vocabularies/validation/const.js
|
|
4998
4998
|
var require_const = __commonJS({
|
|
4999
|
-
"
|
|
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
|
-
//
|
|
5026
|
+
// node_modules/ajv/dist/vocabularies/validation/enum.js
|
|
5027
5027
|
var require_enum = __commonJS({
|
|
5028
|
-
"
|
|
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
|
-
//
|
|
5075
|
+
// node_modules/ajv/dist/vocabularies/validation/index.js
|
|
5076
5076
|
var require_validation = __commonJS({
|
|
5077
|
-
"
|
|
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
|
-
//
|
|
5113
|
+
// node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
|
|
5114
5114
|
var require_additionalItems = __commonJS({
|
|
5115
|
-
"
|
|
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
|
-
//
|
|
5166
|
+
// node_modules/ajv/dist/vocabularies/applicator/items.js
|
|
5167
5167
|
var require_items = __commonJS({
|
|
5168
|
-
"
|
|
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
|
-
//
|
|
5223
|
+
// node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
|
|
5224
5224
|
var require_prefixItems = __commonJS({
|
|
5225
|
-
"
|
|
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
|
-
//
|
|
5240
|
+
// node_modules/ajv/dist/vocabularies/applicator/items2020.js
|
|
5241
5241
|
var require_items2020 = __commonJS({
|
|
5242
|
-
"
|
|
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
|
-
//
|
|
5275
|
+
// node_modules/ajv/dist/vocabularies/applicator/contains.js
|
|
5276
5276
|
var require_contains = __commonJS({
|
|
5277
|
-
"
|
|
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
|
-
//
|
|
5369
|
+
// node_modules/ajv/dist/vocabularies/applicator/dependencies.js
|
|
5370
5370
|
var require_dependencies = __commonJS({
|
|
5371
|
-
"
|
|
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
|
-
//
|
|
5463
|
+
// node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
|
|
5464
5464
|
var require_propertyNames = __commonJS({
|
|
5465
|
-
"
|
|
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
|
-
//
|
|
5506
|
+
// node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
|
|
5507
5507
|
var require_additionalProperties = __commonJS({
|
|
5508
|
-
"
|
|
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
|
-
//
|
|
5612
|
+
// node_modules/ajv/dist/vocabularies/applicator/properties.js
|
|
5613
5613
|
var require_properties = __commonJS({
|
|
5614
|
-
"
|
|
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
|
-
//
|
|
5670
|
+
// node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
|
|
5671
5671
|
var require_patternProperties = __commonJS({
|
|
5672
|
-
"
|
|
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
|
-
//
|
|
5744
|
+
// node_modules/ajv/dist/vocabularies/applicator/not.js
|
|
5745
5745
|
var require_not = __commonJS({
|
|
5746
|
-
"
|
|
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
|
-
//
|
|
5775
|
+
// node_modules/ajv/dist/vocabularies/applicator/anyOf.js
|
|
5776
5776
|
var require_anyOf = __commonJS({
|
|
5777
|
-
"
|
|
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
|
-
//
|
|
5792
|
+
// node_modules/ajv/dist/vocabularies/applicator/oneOf.js
|
|
5793
5793
|
var require_oneOf = __commonJS({
|
|
5794
|
-
"
|
|
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
|
-
//
|
|
5850
|
+
// node_modules/ajv/dist/vocabularies/applicator/allOf.js
|
|
5851
5851
|
var require_allOf = __commonJS({
|
|
5852
|
-
"
|
|
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
|
-
//
|
|
5877
|
+
// node_modules/ajv/dist/vocabularies/applicator/if.js
|
|
5878
5878
|
var require_if = __commonJS({
|
|
5879
|
-
"
|
|
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
|
-
//
|
|
5946
|
+
// node_modules/ajv/dist/vocabularies/applicator/thenElse.js
|
|
5947
5947
|
var require_thenElse = __commonJS({
|
|
5948
|
-
"
|
|
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
|
-
//
|
|
5964
|
+
// node_modules/ajv/dist/vocabularies/applicator/index.js
|
|
5965
5965
|
var require_applicator = __commonJS({
|
|
5966
|
-
"
|
|
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
|
-
//
|
|
6012
|
+
// node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js
|
|
6013
6013
|
var require_dynamicAnchor = __commonJS({
|
|
6014
|
-
"
|
|
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
|
-
//
|
|
6047
|
+
// node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js
|
|
6048
6048
|
var require_dynamicRef = __commonJS({
|
|
6049
|
-
"
|
|
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
|
-
//
|
|
6093
|
+
// node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js
|
|
6094
6094
|
var require_recursiveAnchor = __commonJS({
|
|
6095
|
-
"
|
|
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
|
-
//
|
|
6114
|
+
// node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js
|
|
6115
6115
|
var require_recursiveRef = __commonJS({
|
|
6116
|
-
"
|
|
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
|
-
//
|
|
6129
|
+
// node_modules/ajv/dist/vocabularies/dynamic/index.js
|
|
6130
6130
|
var require_dynamic = __commonJS({
|
|
6131
|
-
"
|
|
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
|
-
//
|
|
6143
|
+
// node_modules/ajv/dist/vocabularies/validation/dependentRequired.js
|
|
6144
6144
|
var require_dependentRequired = __commonJS({
|
|
6145
|
-
"
|
|
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
|
-
//
|
|
6160
|
+
// node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js
|
|
6161
6161
|
var require_dependentSchemas = __commonJS({
|
|
6162
|
-
"
|
|
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
|
-
//
|
|
6176
|
+
// node_modules/ajv/dist/vocabularies/validation/limitContains.js
|
|
6177
6177
|
var require_limitContains = __commonJS({
|
|
6178
|
-
"
|
|
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
|
-
//
|
|
6196
|
+
// node_modules/ajv/dist/vocabularies/next.js
|
|
6197
6197
|
var require_next = __commonJS({
|
|
6198
|
-
"
|
|
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
|
-
//
|
|
6209
|
+
// node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js
|
|
6210
6210
|
var require_unevaluatedProperties = __commonJS({
|
|
6211
|
-
"
|
|
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
|
-
//
|
|
6275
|
+
// node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js
|
|
6276
6276
|
var require_unevaluatedItems = __commonJS({
|
|
6277
|
-
"
|
|
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
|
-
//
|
|
6319
|
+
// node_modules/ajv/dist/vocabularies/unevaluated/index.js
|
|
6320
6320
|
var require_unevaluated = __commonJS({
|
|
6321
|
-
"
|
|
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
|
-
//
|
|
6331
|
+
// node_modules/ajv/dist/vocabularies/format/format.js
|
|
6332
6332
|
var require_format = __commonJS({
|
|
6333
|
-
"
|
|
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
|
-
//
|
|
6421
|
+
// node_modules/ajv/dist/vocabularies/format/index.js
|
|
6422
6422
|
var require_format2 = __commonJS({
|
|
6423
|
-
"
|
|
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
|
-
//
|
|
6432
|
+
// node_modules/ajv/dist/vocabularies/metadata.js
|
|
6433
6433
|
var require_metadata = __commonJS({
|
|
6434
|
-
"
|
|
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
|
-
//
|
|
6455
|
+
// node_modules/ajv/dist/vocabularies/draft2020.js
|
|
6456
6456
|
var require_draft2020 = __commonJS({
|
|
6457
|
-
"
|
|
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
|
-
//
|
|
6483
|
+
// node_modules/ajv/dist/vocabularies/discriminator/types.js
|
|
6484
6484
|
var require_types = __commonJS({
|
|
6485
|
-
"
|
|
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
|
-
//
|
|
6497
|
+
// node_modules/ajv/dist/vocabularies/discriminator/index.js
|
|
6498
6498
|
var require_discriminator = __commonJS({
|
|
6499
|
-
"
|
|
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
|
-
//
|
|
6602
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/schema.json
|
|
6603
6603
|
var require_schema = __commonJS({
|
|
6604
|
-
"
|
|
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
|
-
//
|
|
6662
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json
|
|
6663
6663
|
var require_applicator2 = __commonJS({
|
|
6664
|
-
"
|
|
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
|
-
//
|
|
6715
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json
|
|
6716
6716
|
var require_unevaluated2 = __commonJS({
|
|
6717
|
-
"
|
|
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
|
-
//
|
|
6735
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json
|
|
6736
6736
|
var require_content = __commonJS({
|
|
6737
|
-
"
|
|
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
|
-
//
|
|
6756
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json
|
|
6757
6757
|
var require_core3 = __commonJS({
|
|
6758
|
-
"
|
|
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
|
-
//
|
|
6812
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json
|
|
6813
6813
|
var require_format_annotation = __commonJS({
|
|
6814
|
-
"
|
|
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
|
-
//
|
|
6831
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json
|
|
6832
6832
|
var require_meta_data = __commonJS({
|
|
6833
|
-
"
|
|
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
|
-
//
|
|
6872
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json
|
|
6873
6873
|
var require_validation2 = __commonJS({
|
|
6874
|
-
"
|
|
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
|
-
//
|
|
6967
|
+
// node_modules/ajv/dist/refs/json-schema-2020-12/index.js
|
|
6968
6968
|
var require_json_schema_2020_12 = __commonJS({
|
|
6969
|
-
"
|
|
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
|
-
//
|
|
7002
|
+
// node_modules/ajv/dist/2020.js
|
|
7003
7003
|
var require__ = __commonJS({
|
|
7004
|
-
"
|
|
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
|
-
//
|
|
7079
|
+
// src/cli/main.ts
|
|
7080
7080
|
var fs43 = __toESM(require("node:fs"));
|
|
7081
7081
|
var path43 = __toESM(require("node:path"));
|
|
7082
7082
|
|
|
7083
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
7189
|
+
// src/cli/cliContext.ts
|
|
7190
7190
|
var fs2 = __toESM(require("node:fs"));
|
|
7191
7191
|
var path2 = __toESM(require("path"));
|
|
7192
7192
|
|
|
7193
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
|
7399
|
-
const
|
|
7400
|
-
if (
|
|
7401
|
-
|
|
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
|
|
7411
|
-
if (
|
|
7412
|
-
|
|
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
|
-
|
|
7430
|
+
if (fs2.existsSync(path2.join(here, "..", "resources"))) {
|
|
7431
|
+
return adjacentToDist;
|
|
7432
|
+
}
|
|
7433
|
+
return path2.join(resolveExtensionRootHeuristic(), "resources", "opencode-agents");
|
|
7417
7434
|
}
|
|
7418
|
-
return
|
|
7435
|
+
return adjacentToDist;
|
|
7419
7436
|
}
|
|
7420
7437
|
function initApiBaseUrlForCli(repoRoot, flags, config) {
|
|
7421
|
-
const extensionRoot2 =
|
|
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
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
7563
|
+
// src/config/easyspecsConfigFile.ts
|
|
7546
7564
|
var fs5 = __toESM(require("node:fs"));
|
|
7547
7565
|
var path6 = __toESM(require("node:path"));
|
|
7548
7566
|
|
|
7549
|
-
//
|
|
7567
|
+
// src/easySpecsWorkspaceSettingsCore.ts
|
|
7550
7568
|
var fs4 = __toESM(require("node:fs"));
|
|
7551
7569
|
var path5 = __toESM(require("node:path"));
|
|
7552
7570
|
|
|
7553
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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:
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
8017
|
+
// src/analysis/contextArtefactPipeline.ts
|
|
7957
8018
|
var fs27 = __toESM(require("fs"));
|
|
7958
8019
|
var path25 = __toESM(require("path"));
|
|
7959
8020
|
|
|
7960
|
-
//
|
|
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
|
-
//
|
|
8289
|
+
// src/analysis/materializeOpenCodeAgents.ts
|
|
8229
8290
|
var fs10 = __toESM(require("fs"));
|
|
8230
8291
|
var path11 = __toESM(require("path"));
|
|
8231
8292
|
|
|
8232
|
-
//
|
|
8293
|
+
// src/analysis/applyAceMaterializedAgents.ts
|
|
8233
8294
|
var fs9 = __toESM(require("fs"));
|
|
8234
8295
|
var path10 = __toESM(require("path"));
|
|
8235
8296
|
|
|
8236
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
8760
|
+
// src/analysis/openCodeTestAgent.ts
|
|
8700
8761
|
var fs20 = __toESM(require("fs"));
|
|
8701
8762
|
var path18 = __toESM(require("path"));
|
|
8702
8763
|
|
|
8703
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
8912
|
+
// src/analysis/aceTracePhase.ts
|
|
8852
8913
|
var fs15 = __toESM(require("fs"));
|
|
8853
8914
|
var path15 = __toESM(require("path"));
|
|
8854
8915
|
|
|
8855
|
-
//
|
|
8916
|
+
// src/opencodeCli.ts
|
|
8856
8917
|
var import_child_process = require("child_process");
|
|
8857
8918
|
|
|
8858
|
-
//
|
|
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
|
-
//
|
|
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?.(`[
|
|
9096
|
-
log?.(`[
|
|
9097
|
-
log?.(`[
|
|
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
|
-
`[
|
|
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?.(`[
|
|
9211
|
+
log?.(`[AgentCode] stderr:
|
|
9151
9212
|
${truncateForDiag(errBody, DIAG_STDERR_MAX)}`);
|
|
9152
9213
|
} else {
|
|
9153
|
-
log?.("[
|
|
9214
|
+
log?.("[AgentCode] stderr: (empty)");
|
|
9154
9215
|
}
|
|
9155
9216
|
if (outBody) {
|
|
9156
|
-
log?.(`[
|
|
9217
|
+
log?.(`[AgentCode] stdout:
|
|
9157
9218
|
${truncateForDiag(outBody, DIAG_STDOUT_MAX)}`);
|
|
9158
9219
|
} else {
|
|
9159
|
-
log?.("[
|
|
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?.(`[
|
|
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
|
-
//
|
|
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
|
-
//
|
|
9506
|
+
// src/analysis/aceOfflineLearn.ts
|
|
9446
9507
|
var fs14 = __toESM(require("fs"));
|
|
9447
9508
|
var path14 = __toESM(require("path"));
|
|
9448
9509
|
|
|
9449
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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 ? `[
|
|
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
|
-
`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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
|
-
`[
|
|
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
|
-
`[
|
|
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?.(`[
|
|
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 ? `[
|
|
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?.(`[
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
12731
|
+
// src/contextIndexAssembler.ts
|
|
12671
12732
|
var fs24 = __toESM(require("fs"));
|
|
12672
12733
|
var path22 = __toESM(require("path"));
|
|
12673
12734
|
|
|
12674
|
-
//
|
|
12735
|
+
// src/srsModel.ts
|
|
12675
12736
|
var APPLICATION_CONTEXT_KIND = "easyspecs.application-context";
|
|
12676
12737
|
|
|
12677
|
-
//
|
|
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
|
-
//
|
|
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
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
13241
|
+
// src/analysis/aceAnalysisConfig.ts
|
|
13188
13242
|
var path23 = __toESM(require("node:path"));
|
|
13189
13243
|
var vscode2 = __toESM(require_vscode_stub());
|
|
13190
13244
|
|
|
13191
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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(`[
|
|
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(`[
|
|
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
|
-
"[
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
14220
|
+
log(`[worktree] removed: ${handle.path}`);
|
|
14167
14221
|
} catch (e) {
|
|
14168
|
-
log(`[
|
|
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(`[
|
|
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
|
-
`[
|
|
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
|
-
`[
|
|
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(`[
|
|
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(`[
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
14773
|
+
// src/analysis/macroHeadlessHost.ts
|
|
14720
14774
|
var fs39 = __toESM(require("node:fs"));
|
|
14721
14775
|
var path38 = __toESM(require("node:path"));
|
|
14722
14776
|
|
|
14723
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
14874
|
+
// src/analysis/missingArtefacts.ts
|
|
14821
14875
|
var fs30 = __toESM(require("fs"));
|
|
14822
14876
|
var path28 = __toESM(require("path"));
|
|
14823
14877
|
|
|
14824
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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 ? `[
|
|
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?.(`[
|
|
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 ? `[
|
|
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
|
-
//
|
|
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?.(`[
|
|
17421
|
+
p.diagnosticLog?.(`[report] wrote reference coverage execution report \u2014 ${outAbs}`);
|
|
17368
17422
|
return { ok: true, outputAbsolutePath: outAbs };
|
|
17369
17423
|
}
|
|
17370
17424
|
|
|
17371
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
17515
|
+
// src/analysis/contextSrsDiscoveryIdMap.ts
|
|
17462
17516
|
var fs37 = __toESM(require("node:fs"));
|
|
17463
17517
|
var path36 = __toESM(require("node:path"));
|
|
17464
17518
|
|
|
17465
|
-
//
|
|
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
|
-
//
|
|
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
|
-
`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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
|
-
`[
|
|
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
|
-
//
|
|
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 [
|
|
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(`[
|
|
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
|
-
`[
|
|
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(`[
|
|
17905
|
+
log(`[upload] debug response body (parsed JSON from server):`);
|
|
17852
17906
|
log(stringifyForSrs13Debug(raw));
|
|
17853
17907
|
} else {
|
|
17854
|
-
log(`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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
|
-
//
|
|
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 (
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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(`[
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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?.(`[
|
|
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?.(`[
|
|
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?.(`[
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
|
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
|
|
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
|
-
//
|
|
19460
|
-
var
|
|
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
|
-
|
|
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
|
|
19844
|
-
const
|
|
19845
|
-
const
|
|
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 (
|
|
19852
|
-
email =
|
|
19853
|
-
password =
|
|
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
|
-
"
|
|
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, `[
|
|
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 =
|
|
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 =
|
|
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
|
-
"[
|
|
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`
|
|
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
|
|
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
|
|
20218
|
-
|
|
20219
|
-
|
|
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
|
|
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, `[
|
|
20644
|
+
logErr(flags, `[upload] merge upload ids into index failed: ${mergeRes.message}`);
|
|
20277
20645
|
}
|
|
20278
20646
|
}
|
|
20279
20647
|
finish(failed ? ExitCode.upload : ExitCode.ok, {
|