@gluecharm-lab/easyspecs-cli 0.0.21 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.cjs +226 -223
- package/dist/main.cjs.map +3 -3
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -11012,6 +11012,228 @@ function assertAgentsDirExists(agentsDir) {
|
|
|
11012
11012
|
}
|
|
11013
11013
|
}
|
|
11014
11014
|
|
|
11015
|
+
// src/config/easyspecsConfigJson.ts
|
|
11016
|
+
var DEFAULT_MAX_CONCURRENT_AI = 45;
|
|
11017
|
+
var DEFAULT_CONTEXT_ANALYZED_STATUS_TIMEOUT_MS = 15e3;
|
|
11018
|
+
function mergeEasyspecsConfigDefaults(defaults, partial) {
|
|
11019
|
+
if (!partial) {
|
|
11020
|
+
return defaults;
|
|
11021
|
+
}
|
|
11022
|
+
const esInRaw = partial.easyspecs ?? {};
|
|
11023
|
+
const legacyProjectId = esInRaw.applicationId;
|
|
11024
|
+
const { applicationId: _omitLegacyApplicationIdKey, ...esIn } = esInRaw;
|
|
11025
|
+
void _omitLegacyApplicationIdKey;
|
|
11026
|
+
const defEs = defaults.easyspecs;
|
|
11027
|
+
const factoryMerged = mergeEasyspecsFactoryBlock(defEs.factory, esIn.factory);
|
|
11028
|
+
const workstationsMerged = mergeEasyspecsWorkstationsBlock(defEs.workstations, esIn.workstations);
|
|
11029
|
+
const pipelinesMerged = mergeEasyspecsPipelinesBlock(defEs.pipelines, esIn.pipelines);
|
|
11030
|
+
const mergedEs = {
|
|
11031
|
+
...defEs,
|
|
11032
|
+
...esIn,
|
|
11033
|
+
deploymentEnvironment: esIn.deploymentEnvironment ?? defEs.deploymentEnvironment,
|
|
11034
|
+
apiBaseUrl: esIn.apiBaseUrl ?? defEs.apiBaseUrl,
|
|
11035
|
+
easyspecsProjectId: esIn.easyspecsProjectId !== void 0 ? esIn.easyspecsProjectId : legacyProjectId !== void 0 ? legacyProjectId : defEs.easyspecsProjectId,
|
|
11036
|
+
defaultGitRemoteUrl: esIn.defaultGitRemoteUrl !== void 0 ? esIn.defaultGitRemoteUrl : defEs.defaultGitRemoteUrl,
|
|
11037
|
+
cliSessionPath: esIn.cliSessionPath !== void 0 ? esIn.cliSessionPath : defEs.cliSessionPath,
|
|
11038
|
+
openCode: { ...defEs.openCode, ...esIn.openCode },
|
|
11039
|
+
analysis: mergeAnalysisBlock(
|
|
11040
|
+
defEs.analysis ?? { promoteContextToWorkspace: true },
|
|
11041
|
+
esIn.analysis
|
|
11042
|
+
),
|
|
11043
|
+
orchestration: { ...defEs.orchestration, ...esIn.orchestration },
|
|
11044
|
+
openCodeRuntime: mergeOpenCodeRuntime(defEs.openCodeRuntime, esIn.openCodeRuntime),
|
|
11045
|
+
diagnose: mergeDiagnoseBlock(defEs.diagnose, esIn.diagnose),
|
|
11046
|
+
upload: { ...defEs.upload, ...esIn.upload },
|
|
11047
|
+
macro: { ...defEs.macro, ...esIn.macro },
|
|
11048
|
+
...factoryMerged ? { factory: factoryMerged } : {},
|
|
11049
|
+
...workstationsMerged ? { workstations: workstationsMerged } : {},
|
|
11050
|
+
...pipelinesMerged ? { pipelines: pipelinesMerged } : {},
|
|
11051
|
+
cli: { ...defEs.cli, ...esIn.cli },
|
|
11052
|
+
auth: mergeAuthBlock(defEs.auth, esIn.auth)
|
|
11053
|
+
};
|
|
11054
|
+
const easyspecs = {
|
|
11055
|
+
...mergedEs,
|
|
11056
|
+
analysis: normalizeAnalysisWithFactoryCloud(mergedEs.analysis, mergedEs.factory)
|
|
11057
|
+
};
|
|
11058
|
+
return {
|
|
11059
|
+
schemaVersion: partial.schemaVersion ?? defaults.schemaVersion,
|
|
11060
|
+
easyspecs
|
|
11061
|
+
};
|
|
11062
|
+
}
|
|
11063
|
+
function mergeDiagnoseBlock(base, over) {
|
|
11064
|
+
if (!over) {
|
|
11065
|
+
return { ...base };
|
|
11066
|
+
}
|
|
11067
|
+
const zBase = base.zeroReference ?? { maxPercentNonReferenced: null };
|
|
11068
|
+
const zOver = over.zeroReference;
|
|
11069
|
+
const cBase = base.coordinationDuplicates ?? { strict: true };
|
|
11070
|
+
const cOver = over.coordinationDuplicates;
|
|
11071
|
+
return {
|
|
11072
|
+
zeroReference: {
|
|
11073
|
+
maxPercentNonReferenced: zOver?.maxPercentNonReferenced !== void 0 ? zOver.maxPercentNonReferenced : zBase.maxPercentNonReferenced ?? null
|
|
11074
|
+
},
|
|
11075
|
+
coordinationDuplicates: {
|
|
11076
|
+
strict: cOver?.strict !== void 0 ? cOver.strict : cBase.strict !== false
|
|
11077
|
+
}
|
|
11078
|
+
};
|
|
11079
|
+
}
|
|
11080
|
+
function mergeAuthBlock(base, over) {
|
|
11081
|
+
if (!over) {
|
|
11082
|
+
return { ...base };
|
|
11083
|
+
}
|
|
11084
|
+
return {
|
|
11085
|
+
ciLogin: { ...base.ciLogin, ...over.ciLogin }
|
|
11086
|
+
};
|
|
11087
|
+
}
|
|
11088
|
+
function mergeAnalysisBlock(base, over) {
|
|
11089
|
+
if (!over || Object.keys(over).length === 0) {
|
|
11090
|
+
return { ...base };
|
|
11091
|
+
}
|
|
11092
|
+
const merged = {
|
|
11093
|
+
...base,
|
|
11094
|
+
...over
|
|
11095
|
+
};
|
|
11096
|
+
if (base.ace || over.ace) {
|
|
11097
|
+
merged.ace = { ...base.ace, ...over.ace };
|
|
11098
|
+
}
|
|
11099
|
+
return merged;
|
|
11100
|
+
}
|
|
11101
|
+
function mergeEasyspecsFactoryBlock(base, over) {
|
|
11102
|
+
if (!base && !over) {
|
|
11103
|
+
return void 0;
|
|
11104
|
+
}
|
|
11105
|
+
const b = base ?? {};
|
|
11106
|
+
const o = over ?? {};
|
|
11107
|
+
const updateContext = b.updateContext || o.updateContext ? { ...b.updateContext ?? {}, ...o.updateContext ?? {} } : void 0;
|
|
11108
|
+
const out = {
|
|
11109
|
+
...b,
|
|
11110
|
+
...o,
|
|
11111
|
+
backoff: { ...b.backoff ?? {}, ...o.backoff ?? {} },
|
|
11112
|
+
...updateContext ? { updateContext } : {}
|
|
11113
|
+
};
|
|
11114
|
+
const backoffKeys = Object.keys(out.backoff ?? {});
|
|
11115
|
+
const topKeys = Object.keys(out).filter((k) => k !== "backoff");
|
|
11116
|
+
if (topKeys.length === 0 && backoffKeys.length === 0) {
|
|
11117
|
+
return void 0;
|
|
11118
|
+
}
|
|
11119
|
+
return out;
|
|
11120
|
+
}
|
|
11121
|
+
function mergeEasyspecsWorkstationsBlock(base, over) {
|
|
11122
|
+
if (!base && !over) {
|
|
11123
|
+
return void 0;
|
|
11124
|
+
}
|
|
11125
|
+
const out = { ...base ?? {}, ...over ?? {} };
|
|
11126
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
11127
|
+
}
|
|
11128
|
+
function mergeEasyspecsPipelinesBlock(base, over) {
|
|
11129
|
+
if (!base && !over) {
|
|
11130
|
+
return void 0;
|
|
11131
|
+
}
|
|
11132
|
+
const b = base ?? {};
|
|
11133
|
+
const o = over ?? {};
|
|
11134
|
+
const out = {
|
|
11135
|
+
...b,
|
|
11136
|
+
...o,
|
|
11137
|
+
upload: { ...b.upload ?? {}, ...o.upload ?? {} }
|
|
11138
|
+
};
|
|
11139
|
+
const uploadKeys = Object.keys(out.upload ?? {});
|
|
11140
|
+
const topKeys = Object.keys(out).filter((k) => k !== "upload");
|
|
11141
|
+
if (topKeys.length === 0 && uploadKeys.length === 0) {
|
|
11142
|
+
return void 0;
|
|
11143
|
+
}
|
|
11144
|
+
return out;
|
|
11145
|
+
}
|
|
11146
|
+
function normalizeAnalysisWithFactoryCloud(analysis, factory) {
|
|
11147
|
+
if (!factory || factory.cloudContextAnalyzed === void 0 && factory.cloudContextAnalyzedAt === void 0) {
|
|
11148
|
+
return analysis;
|
|
11149
|
+
}
|
|
11150
|
+
return mergeAnalysisBlock(analysis, {
|
|
11151
|
+
...factory.cloudContextAnalyzed !== void 0 ? { cloudContextAnalyzed: factory.cloudContextAnalyzed } : {},
|
|
11152
|
+
...factory.cloudContextAnalyzedAt !== void 0 ? { cloudContextAnalyzedAt: factory.cloudContextAnalyzedAt } : {}
|
|
11153
|
+
});
|
|
11154
|
+
}
|
|
11155
|
+
function mergeOpenCodeRuntime(base, over) {
|
|
11156
|
+
if (!over && !base) {
|
|
11157
|
+
return void 0;
|
|
11158
|
+
}
|
|
11159
|
+
const b = base ?? {};
|
|
11160
|
+
const o = over ?? {};
|
|
11161
|
+
return {
|
|
11162
|
+
...b,
|
|
11163
|
+
...o,
|
|
11164
|
+
executable: o.executable ?? b.executable,
|
|
11165
|
+
skipCredentialsCheck: o.skipCredentialsCheck ?? b.skipCredentialsCheck,
|
|
11166
|
+
credentialsPath: o.credentialsPath !== void 0 ? o.credentialsPath : b.credentialsPath,
|
|
11167
|
+
providers: { ...b.providers, ...o.providers },
|
|
11168
|
+
run: { ...b.run, ...o.run },
|
|
11169
|
+
coordinationRepairs: { ...b.coordinationRepairs, ...o.coordinationRepairs },
|
|
11170
|
+
pool: { ...b.pool, ...o.pool },
|
|
11171
|
+
projectConfigOverlay: b.projectConfigOverlay || o.projectConfigOverlay ? { ...b.projectConfigOverlay ?? {}, ...o.projectConfigOverlay ?? {} } : void 0
|
|
11172
|
+
};
|
|
11173
|
+
}
|
|
11174
|
+
function getDefaultEasyspecsConfig() {
|
|
11175
|
+
const openCodeRuntime = {
|
|
11176
|
+
executable: "opencode",
|
|
11177
|
+
skipCredentialsCheck: false,
|
|
11178
|
+
credentialsPath: ".opencode/auth.json",
|
|
11179
|
+
providers: {},
|
|
11180
|
+
run: {
|
|
11181
|
+
argvTemplate: [
|
|
11182
|
+
"run",
|
|
11183
|
+
"--agent",
|
|
11184
|
+
"{agentId}",
|
|
11185
|
+
"Execute the task described in the attached EasySpecs prompt file.",
|
|
11186
|
+
"-f",
|
|
11187
|
+
"{promptFile}"
|
|
11188
|
+
],
|
|
11189
|
+
timeoutMs: 6e5
|
|
11190
|
+
},
|
|
11191
|
+
coordinationRepairs: {
|
|
11192
|
+
listJsonSchemaRepairAttempts: 1,
|
|
11193
|
+
markdownEvidenceRepairAttempts: 2,
|
|
11194
|
+
markdownOpenQuestionIterations: 5
|
|
11195
|
+
},
|
|
11196
|
+
/** Pool cap defaults in {@link mergeEasyspecsCliSettings} (`?? 30`); omit here so `workstations.maxConcurrentAi` is not overridden by merged `pool`. */
|
|
11197
|
+
pool: {},
|
|
11198
|
+
projectConfigOverlay: {}
|
|
11199
|
+
};
|
|
11200
|
+
return {
|
|
11201
|
+
schemaVersion: 2,
|
|
11202
|
+
easyspecs: {
|
|
11203
|
+
deploymentEnvironment: "production",
|
|
11204
|
+
apiBaseUrl: PRODUCTION_SYSTEM_MANAGER_URL,
|
|
11205
|
+
easyspecsProjectId: "",
|
|
11206
|
+
defaultGitRemoteUrl: "",
|
|
11207
|
+
cliSessionPath: "",
|
|
11208
|
+
openCode: {
|
|
11209
|
+
executable: "opencode",
|
|
11210
|
+
skipCredentialsCheck: false
|
|
11211
|
+
},
|
|
11212
|
+
workstations: {
|
|
11213
|
+
maxConcurrentAi: DEFAULT_MAX_CONCURRENT_AI
|
|
11214
|
+
},
|
|
11215
|
+
analysis: {
|
|
11216
|
+
promoteContextToWorkspace: true,
|
|
11217
|
+
cloudContextAnalyzed: false,
|
|
11218
|
+
cloudContextAnalyzedAt: null
|
|
11219
|
+
},
|
|
11220
|
+
orchestration: {},
|
|
11221
|
+
openCodeRuntime,
|
|
11222
|
+
diagnose: {
|
|
11223
|
+
zeroReference: { maxPercentNonReferenced: null },
|
|
11224
|
+
coordinationDuplicates: { strict: true }
|
|
11225
|
+
},
|
|
11226
|
+
upload: {
|
|
11227
|
+
contextDirectory: "",
|
|
11228
|
+
fetchContextAnalyzedInCloud: true
|
|
11229
|
+
},
|
|
11230
|
+
macro: { debug: false },
|
|
11231
|
+
cli: { bundledResourcesRoot: "" },
|
|
11232
|
+
auth: { ciLogin: {} }
|
|
11233
|
+
}
|
|
11234
|
+
};
|
|
11235
|
+
}
|
|
11236
|
+
|
|
11015
11237
|
// src/config/openCodeProviderEnv.ts
|
|
11016
11238
|
var path3 = __toESM(require("node:path"));
|
|
11017
11239
|
var PROVIDER_TO_ENV = {
|
|
@@ -11187,7 +11409,7 @@ function mergeEasyspecsCliSettings(cfg, overrides = {}) {
|
|
|
11187
11409
|
const listJsonSchemaRepairAttempts = rt?.coordinationRepairs?.listJsonSchemaRepairAttempts ?? readEasyspecsMergedSetting(cfg.easyspecs, "easyspecs.workstations.coordinationListRepairAttempts") ?? 1;
|
|
11188
11410
|
const markdownEvidenceRepairAttempts = rt?.coordinationRepairs?.markdownEvidenceRepairAttempts ?? readEasyspecsMergedSetting(cfg.easyspecs, "easyspecs.workstations.detailMarkdownRepairAttempts") ?? 2;
|
|
11189
11411
|
const markdownOpenQuestionIterations = rt?.coordinationRepairs?.markdownOpenQuestionIterations ?? readEasyspecsMergedSetting(cfg.easyspecs, "easyspecs.workstations.openQuestionIterations") ?? 5;
|
|
11190
|
-
const maxConcurrentOpenCodeAgents = overrides.maxConcurrentOpenCodeAgents ??
|
|
11412
|
+
const maxConcurrentOpenCodeAgents = overrides.maxConcurrentOpenCodeAgents ?? readEasyspecsMergedSetting(cfg.easyspecs, "easyspecs.workstations.maxConcurrentAi") ?? rt?.pool?.maxConcurrentAgents ?? DEFAULT_MAX_CONCURRENT_AI;
|
|
11191
11413
|
const promoteContextToWorkspace = overrides.promote === false ? false : overrides.promote === true ? true : analysis.promoteContextToWorkspace !== false;
|
|
11192
11414
|
let maxOuter = overrides.maxOuterIterationsPerPhase ?? readEasyspecsMergedSetting(cfg.easyspecs, "easyspecs.factory.maxOuterIterationsPerPipeline") ?? orch.maxOuterIterationsPerPhase ?? 0;
|
|
11193
11415
|
if (ci && maxOuter === 0) {
|
|
@@ -11315,225 +11537,6 @@ function readAceOfflineLearnAfterSameSessionTraceFromEasySpecsSettingsFile(works
|
|
|
11315
11537
|
return typeof v === "boolean" ? v : void 0;
|
|
11316
11538
|
}
|
|
11317
11539
|
|
|
11318
|
-
// src/config/easyspecsConfigJson.ts
|
|
11319
|
-
var DEFAULT_CONTEXT_ANALYZED_STATUS_TIMEOUT_MS = 15e3;
|
|
11320
|
-
function mergeEasyspecsConfigDefaults(defaults, partial) {
|
|
11321
|
-
if (!partial) {
|
|
11322
|
-
return defaults;
|
|
11323
|
-
}
|
|
11324
|
-
const esInRaw = partial.easyspecs ?? {};
|
|
11325
|
-
const legacyProjectId = esInRaw.applicationId;
|
|
11326
|
-
const { applicationId: _omitLegacyApplicationIdKey, ...esIn } = esInRaw;
|
|
11327
|
-
void _omitLegacyApplicationIdKey;
|
|
11328
|
-
const defEs = defaults.easyspecs;
|
|
11329
|
-
const factoryMerged = mergeEasyspecsFactoryBlock(defEs.factory, esIn.factory);
|
|
11330
|
-
const workstationsMerged = mergeEasyspecsWorkstationsBlock(defEs.workstations, esIn.workstations);
|
|
11331
|
-
const pipelinesMerged = mergeEasyspecsPipelinesBlock(defEs.pipelines, esIn.pipelines);
|
|
11332
|
-
const mergedEs = {
|
|
11333
|
-
...defEs,
|
|
11334
|
-
...esIn,
|
|
11335
|
-
deploymentEnvironment: esIn.deploymentEnvironment ?? defEs.deploymentEnvironment,
|
|
11336
|
-
apiBaseUrl: esIn.apiBaseUrl ?? defEs.apiBaseUrl,
|
|
11337
|
-
easyspecsProjectId: esIn.easyspecsProjectId !== void 0 ? esIn.easyspecsProjectId : legacyProjectId !== void 0 ? legacyProjectId : defEs.easyspecsProjectId,
|
|
11338
|
-
defaultGitRemoteUrl: esIn.defaultGitRemoteUrl !== void 0 ? esIn.defaultGitRemoteUrl : defEs.defaultGitRemoteUrl,
|
|
11339
|
-
cliSessionPath: esIn.cliSessionPath !== void 0 ? esIn.cliSessionPath : defEs.cliSessionPath,
|
|
11340
|
-
openCode: { ...defEs.openCode, ...esIn.openCode },
|
|
11341
|
-
analysis: mergeAnalysisBlock(
|
|
11342
|
-
defEs.analysis ?? { promoteContextToWorkspace: true },
|
|
11343
|
-
esIn.analysis
|
|
11344
|
-
),
|
|
11345
|
-
orchestration: { ...defEs.orchestration, ...esIn.orchestration },
|
|
11346
|
-
openCodeRuntime: mergeOpenCodeRuntime(defEs.openCodeRuntime, esIn.openCodeRuntime),
|
|
11347
|
-
diagnose: mergeDiagnoseBlock(defEs.diagnose, esIn.diagnose),
|
|
11348
|
-
upload: { ...defEs.upload, ...esIn.upload },
|
|
11349
|
-
macro: { ...defEs.macro, ...esIn.macro },
|
|
11350
|
-
...factoryMerged ? { factory: factoryMerged } : {},
|
|
11351
|
-
...workstationsMerged ? { workstations: workstationsMerged } : {},
|
|
11352
|
-
...pipelinesMerged ? { pipelines: pipelinesMerged } : {},
|
|
11353
|
-
cli: { ...defEs.cli, ...esIn.cli },
|
|
11354
|
-
auth: mergeAuthBlock(defEs.auth, esIn.auth)
|
|
11355
|
-
};
|
|
11356
|
-
const easyspecs = {
|
|
11357
|
-
...mergedEs,
|
|
11358
|
-
analysis: normalizeAnalysisWithFactoryCloud(mergedEs.analysis, mergedEs.factory)
|
|
11359
|
-
};
|
|
11360
|
-
return {
|
|
11361
|
-
schemaVersion: partial.schemaVersion ?? defaults.schemaVersion,
|
|
11362
|
-
easyspecs
|
|
11363
|
-
};
|
|
11364
|
-
}
|
|
11365
|
-
function mergeDiagnoseBlock(base, over) {
|
|
11366
|
-
if (!over) {
|
|
11367
|
-
return { ...base };
|
|
11368
|
-
}
|
|
11369
|
-
const zBase = base.zeroReference ?? { maxPercentNonReferenced: null };
|
|
11370
|
-
const zOver = over.zeroReference;
|
|
11371
|
-
const cBase = base.coordinationDuplicates ?? { strict: true };
|
|
11372
|
-
const cOver = over.coordinationDuplicates;
|
|
11373
|
-
return {
|
|
11374
|
-
zeroReference: {
|
|
11375
|
-
maxPercentNonReferenced: zOver?.maxPercentNonReferenced !== void 0 ? zOver.maxPercentNonReferenced : zBase.maxPercentNonReferenced ?? null
|
|
11376
|
-
},
|
|
11377
|
-
coordinationDuplicates: {
|
|
11378
|
-
strict: cOver?.strict !== void 0 ? cOver.strict : cBase.strict !== false
|
|
11379
|
-
}
|
|
11380
|
-
};
|
|
11381
|
-
}
|
|
11382
|
-
function mergeAuthBlock(base, over) {
|
|
11383
|
-
if (!over) {
|
|
11384
|
-
return { ...base };
|
|
11385
|
-
}
|
|
11386
|
-
return {
|
|
11387
|
-
ciLogin: { ...base.ciLogin, ...over.ciLogin }
|
|
11388
|
-
};
|
|
11389
|
-
}
|
|
11390
|
-
function mergeAnalysisBlock(base, over) {
|
|
11391
|
-
if (!over || Object.keys(over).length === 0) {
|
|
11392
|
-
return { ...base };
|
|
11393
|
-
}
|
|
11394
|
-
const merged = {
|
|
11395
|
-
...base,
|
|
11396
|
-
...over
|
|
11397
|
-
};
|
|
11398
|
-
if (base.ace || over.ace) {
|
|
11399
|
-
merged.ace = { ...base.ace, ...over.ace };
|
|
11400
|
-
}
|
|
11401
|
-
return merged;
|
|
11402
|
-
}
|
|
11403
|
-
function mergeEasyspecsFactoryBlock(base, over) {
|
|
11404
|
-
if (!base && !over) {
|
|
11405
|
-
return void 0;
|
|
11406
|
-
}
|
|
11407
|
-
const b = base ?? {};
|
|
11408
|
-
const o = over ?? {};
|
|
11409
|
-
const updateContext = b.updateContext || o.updateContext ? { ...b.updateContext ?? {}, ...o.updateContext ?? {} } : void 0;
|
|
11410
|
-
const out = {
|
|
11411
|
-
...b,
|
|
11412
|
-
...o,
|
|
11413
|
-
backoff: { ...b.backoff ?? {}, ...o.backoff ?? {} },
|
|
11414
|
-
...updateContext ? { updateContext } : {}
|
|
11415
|
-
};
|
|
11416
|
-
const backoffKeys = Object.keys(out.backoff ?? {});
|
|
11417
|
-
const topKeys = Object.keys(out).filter((k) => k !== "backoff");
|
|
11418
|
-
if (topKeys.length === 0 && backoffKeys.length === 0) {
|
|
11419
|
-
return void 0;
|
|
11420
|
-
}
|
|
11421
|
-
return out;
|
|
11422
|
-
}
|
|
11423
|
-
function mergeEasyspecsWorkstationsBlock(base, over) {
|
|
11424
|
-
if (!base && !over) {
|
|
11425
|
-
return void 0;
|
|
11426
|
-
}
|
|
11427
|
-
const out = { ...base ?? {}, ...over ?? {} };
|
|
11428
|
-
return Object.keys(out).length > 0 ? out : void 0;
|
|
11429
|
-
}
|
|
11430
|
-
function mergeEasyspecsPipelinesBlock(base, over) {
|
|
11431
|
-
if (!base && !over) {
|
|
11432
|
-
return void 0;
|
|
11433
|
-
}
|
|
11434
|
-
const b = base ?? {};
|
|
11435
|
-
const o = over ?? {};
|
|
11436
|
-
const out = {
|
|
11437
|
-
...b,
|
|
11438
|
-
...o,
|
|
11439
|
-
upload: { ...b.upload ?? {}, ...o.upload ?? {} }
|
|
11440
|
-
};
|
|
11441
|
-
const uploadKeys = Object.keys(out.upload ?? {});
|
|
11442
|
-
const topKeys = Object.keys(out).filter((k) => k !== "upload");
|
|
11443
|
-
if (topKeys.length === 0 && uploadKeys.length === 0) {
|
|
11444
|
-
return void 0;
|
|
11445
|
-
}
|
|
11446
|
-
return out;
|
|
11447
|
-
}
|
|
11448
|
-
function normalizeAnalysisWithFactoryCloud(analysis, factory) {
|
|
11449
|
-
if (!factory || factory.cloudContextAnalyzed === void 0 && factory.cloudContextAnalyzedAt === void 0) {
|
|
11450
|
-
return analysis;
|
|
11451
|
-
}
|
|
11452
|
-
return mergeAnalysisBlock(analysis, {
|
|
11453
|
-
...factory.cloudContextAnalyzed !== void 0 ? { cloudContextAnalyzed: factory.cloudContextAnalyzed } : {},
|
|
11454
|
-
...factory.cloudContextAnalyzedAt !== void 0 ? { cloudContextAnalyzedAt: factory.cloudContextAnalyzedAt } : {}
|
|
11455
|
-
});
|
|
11456
|
-
}
|
|
11457
|
-
function mergeOpenCodeRuntime(base, over) {
|
|
11458
|
-
if (!over && !base) {
|
|
11459
|
-
return void 0;
|
|
11460
|
-
}
|
|
11461
|
-
const b = base ?? {};
|
|
11462
|
-
const o = over ?? {};
|
|
11463
|
-
return {
|
|
11464
|
-
...b,
|
|
11465
|
-
...o,
|
|
11466
|
-
executable: o.executable ?? b.executable,
|
|
11467
|
-
skipCredentialsCheck: o.skipCredentialsCheck ?? b.skipCredentialsCheck,
|
|
11468
|
-
credentialsPath: o.credentialsPath !== void 0 ? o.credentialsPath : b.credentialsPath,
|
|
11469
|
-
providers: { ...b.providers, ...o.providers },
|
|
11470
|
-
run: { ...b.run, ...o.run },
|
|
11471
|
-
coordinationRepairs: { ...b.coordinationRepairs, ...o.coordinationRepairs },
|
|
11472
|
-
pool: { ...b.pool, ...o.pool },
|
|
11473
|
-
projectConfigOverlay: b.projectConfigOverlay || o.projectConfigOverlay ? { ...b.projectConfigOverlay ?? {}, ...o.projectConfigOverlay ?? {} } : void 0
|
|
11474
|
-
};
|
|
11475
|
-
}
|
|
11476
|
-
function getDefaultEasyspecsConfig() {
|
|
11477
|
-
const openCodeRuntime = {
|
|
11478
|
-
executable: "opencode",
|
|
11479
|
-
skipCredentialsCheck: false,
|
|
11480
|
-
credentialsPath: ".opencode/auth.json",
|
|
11481
|
-
providers: {},
|
|
11482
|
-
run: {
|
|
11483
|
-
argvTemplate: [
|
|
11484
|
-
"run",
|
|
11485
|
-
"--agent",
|
|
11486
|
-
"{agentId}",
|
|
11487
|
-
"Execute the task described in the attached EasySpecs prompt file.",
|
|
11488
|
-
"-f",
|
|
11489
|
-
"{promptFile}"
|
|
11490
|
-
],
|
|
11491
|
-
timeoutMs: 6e5
|
|
11492
|
-
},
|
|
11493
|
-
coordinationRepairs: {
|
|
11494
|
-
listJsonSchemaRepairAttempts: 1,
|
|
11495
|
-
markdownEvidenceRepairAttempts: 2,
|
|
11496
|
-
markdownOpenQuestionIterations: 5
|
|
11497
|
-
},
|
|
11498
|
-
pool: {
|
|
11499
|
-
maxConcurrentAgents: 30
|
|
11500
|
-
},
|
|
11501
|
-
projectConfigOverlay: {}
|
|
11502
|
-
};
|
|
11503
|
-
return {
|
|
11504
|
-
schemaVersion: 2,
|
|
11505
|
-
easyspecs: {
|
|
11506
|
-
deploymentEnvironment: "production",
|
|
11507
|
-
apiBaseUrl: PRODUCTION_SYSTEM_MANAGER_URL,
|
|
11508
|
-
easyspecsProjectId: "",
|
|
11509
|
-
defaultGitRemoteUrl: "",
|
|
11510
|
-
cliSessionPath: "",
|
|
11511
|
-
openCode: {
|
|
11512
|
-
executable: "opencode",
|
|
11513
|
-
skipCredentialsCheck: false
|
|
11514
|
-
},
|
|
11515
|
-
analysis: {
|
|
11516
|
-
promoteContextToWorkspace: true,
|
|
11517
|
-
cloudContextAnalyzed: false,
|
|
11518
|
-
cloudContextAnalyzedAt: null
|
|
11519
|
-
},
|
|
11520
|
-
orchestration: {},
|
|
11521
|
-
openCodeRuntime,
|
|
11522
|
-
diagnose: {
|
|
11523
|
-
zeroReference: { maxPercentNonReferenced: null },
|
|
11524
|
-
coordinationDuplicates: { strict: true }
|
|
11525
|
-
},
|
|
11526
|
-
upload: {
|
|
11527
|
-
contextDirectory: "",
|
|
11528
|
-
fetchContextAnalyzedInCloud: true
|
|
11529
|
-
},
|
|
11530
|
-
macro: { debug: false },
|
|
11531
|
-
cli: { bundledResourcesRoot: "" },
|
|
11532
|
-
auth: { ciLogin: {} }
|
|
11533
|
-
}
|
|
11534
|
-
};
|
|
11535
|
-
}
|
|
11536
|
-
|
|
11537
11540
|
// src/config/validateEasyspecsConfigSrs46.ts
|
|
11538
11541
|
var fs5 = __toESM(require("node:fs"));
|
|
11539
11542
|
var path6 = __toESM(require("node:path"));
|
|
@@ -19941,7 +19944,7 @@ function slugOrFallback3(row2) {
|
|
|
19941
19944
|
}
|
|
19942
19945
|
function clampConcurrency(n) {
|
|
19943
19946
|
if (!Number.isFinite(n)) {
|
|
19944
|
-
return
|
|
19947
|
+
return DEFAULT_MAX_CONCURRENT_AI;
|
|
19945
19948
|
}
|
|
19946
19949
|
return Math.min(64, Math.max(1, Math.floor(n)));
|
|
19947
19950
|
}
|
|
@@ -27046,7 +27049,7 @@ function listPendingAceTraceFiles(contextDir2, worktreeRoot) {
|
|
|
27046
27049
|
var path58 = __toESM(require("path"));
|
|
27047
27050
|
function clampConcurrency2(n) {
|
|
27048
27051
|
if (!Number.isFinite(n)) {
|
|
27049
|
-
return
|
|
27052
|
+
return DEFAULT_MAX_CONCURRENT_AI;
|
|
27050
27053
|
}
|
|
27051
27054
|
return Math.min(64, Math.max(1, Math.floor(n)));
|
|
27052
27055
|
}
|
|
@@ -27587,7 +27590,7 @@ function formatCliStderrLine(line, useAnsi) {
|
|
|
27587
27590
|
}
|
|
27588
27591
|
|
|
27589
27592
|
// src/cli/main.ts
|
|
27590
|
-
var PKG_VERSION = "0.0.
|
|
27593
|
+
var PKG_VERSION = "0.0.23";
|
|
27591
27594
|
function isNonEmptyFactoryFailureArray(x) {
|
|
27592
27595
|
if (!Array.isArray(x) || x.length === 0) {
|
|
27593
27596
|
return false;
|