amsd-pipeline-shared 0.5.21 → 0.5.22

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.
@@ -147,6 +147,25 @@ function cache({ install, project, codeline, variant = process.env.EPAM_BROWNFIE
147
147
  { required: required.length, missing, willRebuild: problems.length ? [] : missing });
148
148
  }
149
149
 
150
+ /**
151
+ * EVERY CODELINE THE LAUNCH WORKS HAS ITS OWN COMPLETE SET (operator, 2026-10-22: "prompts/profiles BY codeline"; "the contents must be
152
+ * perfect"): each codeline folder's recorded agents and prompts, and its completion built from the current inputs
153
+ * (project-prompt-builder.js codelineSetComplete). A lane whose codeline has none does not run, so the launch is not started.
154
+ */
155
+ function codelineSets({ install, project, codelines = [], env = {} }) {
156
+ const O = orchOf(install);
157
+ const b = require(path.join(scriptsOf(install), 'lib', 'project-prompt-builder.js'));
158
+ const prev = process.env.EPAM_BROWNFIELD; process.env.EPAM_BROWNFIELD = env.EPAM_BROWNFIELD === '1' ? '1' : '';
159
+ try {
160
+ const rows = codelines.map((codeline) => ({ codeline, ...b.codelineSetComplete({ projectConfigDir: path.join(O, 'projects', project), codeline,
161
+ templatesDir: path.join(O, 'prompts', 'templates'), registryFile: path.join(O, 'agents', 'invocation-profiles.json') }) }));
162
+ const bad = rows.filter((r) => !r.complete);
163
+ if (!codelines.length) return res('codeline-sets', false, 'no codeline named — the sets every lane works from cannot be checked');
164
+ return res('codeline-sets', !bad.length, bad.length ? bad.map((r) => `${r.codeline}: ${r.reason}`).join('; ')
165
+ : `${codelines.length} codeline(s), each with its own complete set: ${codelines.join(', ')}`, { rows });
166
+ } finally { if (prev === undefined) delete process.env.EPAM_BROWNFIELD; else process.env.EPAM_BROWNFIELD = prev; }
167
+ }
168
+
150
169
  // ── 4. cost ──────────────────────────────────────────────────────────────────────────────────────────────────────────
151
170
  /** Every model a provider set's ladders name (startModel, model, models, from/to), from its own declaration. */
152
171
  function ladderModels(install, set) {
@@ -268,6 +287,7 @@ function prelaunch(o) {
268
287
  if (o.ticket) results.push(seed({ install: o.install, project: o.project, ticket: o.ticket, runsRoots: o.runsRoots || [] }));
269
288
  // the variant (brownfield) is the run's, from the env the launch hands over — not this process's own environment
270
289
  if (o.codeline) results.push(cache({ install: o.install, project: o.project, codeline: o.codeline, variant: (o.env || {}).EPAM_BROWNFIELD === '1' ? 'brownfield' : '', maxRebuild: o.maxRebuild || 0 }));
290
+ if (Array.isArray(o.codelines)) results.push(codelineSets({ install: o.install, project: o.project, codelines: o.codelines, env: o.env || {} }));
271
291
  results.push(cost({ install: o.install, set: o.set || o.env.EPAM_PROVIDER_SET || 'claude', tmpDir: o.outDir }));
272
292
  results.push(alone({ install: o.install }));
273
293
  results.push(memory({ needMb: Number(o.needMb || 4096) }));
@@ -280,7 +300,7 @@ function prelaunch(o) {
280
300
  return report;
281
301
  }
282
302
 
283
- module.exports = { prelaunch, prelaunchCli, preflight, langfuse, langfuseEnv, seed, cache, cost, ladderModels, alone, memory, noTimeout, checklist, ancestors };
303
+ module.exports = { prelaunch, prelaunchCli, preflight, langfuse, langfuseEnv, seed, cache, codelineSets, cost, ladderModels, alone, memory, noTimeout, checklist, ancestors };
284
304
 
285
305
  /**
286
306
  * THE COMMAND, for every pipeline: