@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 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 ?? rt?.pool?.maxConcurrentAgents ?? readEasyspecsMergedSetting(cfg.easyspecs, "easyspecs.workstations.maxConcurrentAi") ?? 30;
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 30;
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 30;
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.21";
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;