@gluecharm-lab/easyspecs-cli 0.0.22 → 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 -222
- 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 ?? readEasyspecsMergedSetting(cfg.easyspecs, "easyspecs.workstations.maxConcurrentAi") ?? rt?.pool?.maxConcurrentAgents ??
|
|
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,224 +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 cap defaults in {@link mergeEasyspecsCliSettings} (`?? 30`); omit here so `workstations.maxConcurrentAi` is not overridden by merged `pool`. */
|
|
11499
|
-
pool: {},
|
|
11500
|
-
projectConfigOverlay: {}
|
|
11501
|
-
};
|
|
11502
|
-
return {
|
|
11503
|
-
schemaVersion: 2,
|
|
11504
|
-
easyspecs: {
|
|
11505
|
-
deploymentEnvironment: "production",
|
|
11506
|
-
apiBaseUrl: PRODUCTION_SYSTEM_MANAGER_URL,
|
|
11507
|
-
easyspecsProjectId: "",
|
|
11508
|
-
defaultGitRemoteUrl: "",
|
|
11509
|
-
cliSessionPath: "",
|
|
11510
|
-
openCode: {
|
|
11511
|
-
executable: "opencode",
|
|
11512
|
-
skipCredentialsCheck: false
|
|
11513
|
-
},
|
|
11514
|
-
analysis: {
|
|
11515
|
-
promoteContextToWorkspace: true,
|
|
11516
|
-
cloudContextAnalyzed: false,
|
|
11517
|
-
cloudContextAnalyzedAt: null
|
|
11518
|
-
},
|
|
11519
|
-
orchestration: {},
|
|
11520
|
-
openCodeRuntime,
|
|
11521
|
-
diagnose: {
|
|
11522
|
-
zeroReference: { maxPercentNonReferenced: null },
|
|
11523
|
-
coordinationDuplicates: { strict: true }
|
|
11524
|
-
},
|
|
11525
|
-
upload: {
|
|
11526
|
-
contextDirectory: "",
|
|
11527
|
-
fetchContextAnalyzedInCloud: true
|
|
11528
|
-
},
|
|
11529
|
-
macro: { debug: false },
|
|
11530
|
-
cli: { bundledResourcesRoot: "" },
|
|
11531
|
-
auth: { ciLogin: {} }
|
|
11532
|
-
}
|
|
11533
|
-
};
|
|
11534
|
-
}
|
|
11535
|
-
|
|
11536
11540
|
// src/config/validateEasyspecsConfigSrs46.ts
|
|
11537
11541
|
var fs5 = __toESM(require("node:fs"));
|
|
11538
11542
|
var path6 = __toESM(require("node:path"));
|
|
@@ -19940,7 +19944,7 @@ function slugOrFallback3(row2) {
|
|
|
19940
19944
|
}
|
|
19941
19945
|
function clampConcurrency(n) {
|
|
19942
19946
|
if (!Number.isFinite(n)) {
|
|
19943
|
-
return
|
|
19947
|
+
return DEFAULT_MAX_CONCURRENT_AI;
|
|
19944
19948
|
}
|
|
19945
19949
|
return Math.min(64, Math.max(1, Math.floor(n)));
|
|
19946
19950
|
}
|
|
@@ -27045,7 +27049,7 @@ function listPendingAceTraceFiles(contextDir2, worktreeRoot) {
|
|
|
27045
27049
|
var path58 = __toESM(require("path"));
|
|
27046
27050
|
function clampConcurrency2(n) {
|
|
27047
27051
|
if (!Number.isFinite(n)) {
|
|
27048
|
-
return
|
|
27052
|
+
return DEFAULT_MAX_CONCURRENT_AI;
|
|
27049
27053
|
}
|
|
27050
27054
|
return Math.min(64, Math.max(1, Math.floor(n)));
|
|
27051
27055
|
}
|
|
@@ -27586,7 +27590,7 @@ function formatCliStderrLine(line, useAnsi) {
|
|
|
27586
27590
|
}
|
|
27587
27591
|
|
|
27588
27592
|
// src/cli/main.ts
|
|
27589
|
-
var PKG_VERSION = "0.0.
|
|
27593
|
+
var PKG_VERSION = "0.0.23";
|
|
27590
27594
|
function isNonEmptyFactoryFailureArray(x) {
|
|
27591
27595
|
if (!Array.isArray(x) || x.length === 0) {
|
|
27592
27596
|
return false;
|