@executioncontrolprotocol/harnesses-browser-nano 0.10.0

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.
Files changed (87) hide show
  1. package/README.md +42 -0
  2. package/dist/_internal/request-capability-hints.d.ts +49 -0
  3. package/dist/_internal/request-capability-hints.d.ts.map +1 -0
  4. package/dist/_internal/request-capability-hints.js +488 -0
  5. package/dist/_internal/request-capability-hints.js.map +1 -0
  6. package/dist/browser-nano-harness.d.ts +71 -0
  7. package/dist/browser-nano-harness.d.ts.map +1 -0
  8. package/dist/browser-nano-harness.js +90 -0
  9. package/dist/browser-nano-harness.js.map +1 -0
  10. package/dist/harness-ids.d.ts +6 -0
  11. package/dist/harness-ids.d.ts.map +1 -0
  12. package/dist/harness-ids.js +6 -0
  13. package/dist/harness-ids.js.map +1 -0
  14. package/dist/harness-nano-config.d.ts +53 -0
  15. package/dist/harness-nano-config.d.ts.map +1 -0
  16. package/dist/harness-nano-config.js +94 -0
  17. package/dist/harness-nano-config.js.map +1 -0
  18. package/dist/index.d.ts +13 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +12 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/intent-classification.d.ts +10 -0
  23. package/dist/intent-classification.d.ts.map +1 -0
  24. package/dist/intent-classification.js +177 -0
  25. package/dist/intent-classification.js.map +1 -0
  26. package/dist/multi-shot-chat.d.ts +20 -0
  27. package/dist/multi-shot-chat.d.ts.map +1 -0
  28. package/dist/multi-shot-chat.js +136 -0
  29. package/dist/multi-shot-chat.js.map +1 -0
  30. package/dist/prompts/build-nano-prompt.d.ts +11 -0
  31. package/dist/prompts/build-nano-prompt.d.ts.map +1 -0
  32. package/dist/prompts/build-nano-prompt.js +17 -0
  33. package/dist/prompts/build-nano-prompt.js.map +1 -0
  34. package/dist/prompts/fixtures-root.d.ts +5 -0
  35. package/dist/prompts/fixtures-root.d.ts.map +1 -0
  36. package/dist/prompts/fixtures-root.js +7 -0
  37. package/dist/prompts/fixtures-root.js.map +1 -0
  38. package/dist/prompts/index.d.ts +4 -0
  39. package/dist/prompts/index.d.ts.map +1 -0
  40. package/dist/prompts/index.js +4 -0
  41. package/dist/prompts/index.js.map +1 -0
  42. package/dist/prompts/load-harness-prompt.browser.d.ts +4 -0
  43. package/dist/prompts/load-harness-prompt.browser.d.ts.map +1 -0
  44. package/dist/prompts/load-harness-prompt.browser.js +32 -0
  45. package/dist/prompts/load-harness-prompt.browser.js.map +1 -0
  46. package/dist/prompts/load-harness-prompt.d.ts +2 -0
  47. package/dist/prompts/load-harness-prompt.d.ts.map +1 -0
  48. package/dist/prompts/load-harness-prompt.js +2 -0
  49. package/dist/prompts/load-harness-prompt.js.map +1 -0
  50. package/dist/prompts/load-harness-prompt.node.d.ts +4 -0
  51. package/dist/prompts/load-harness-prompt.node.d.ts.map +1 -0
  52. package/dist/prompts/load-harness-prompt.node.js +20 -0
  53. package/dist/prompts/load-harness-prompt.node.js.map +1 -0
  54. package/dist/prompts/nano-prompt-fixture-ids.d.ts +10 -0
  55. package/dist/prompts/nano-prompt-fixture-ids.d.ts.map +1 -0
  56. package/dist/prompts/nano-prompt-fixture-ids.js +8 -0
  57. package/dist/prompts/nano-prompt-fixture-ids.js.map +1 -0
  58. package/dist/register.d.ts +5 -0
  59. package/dist/register.d.ts.map +1 -0
  60. package/dist/register.js +14 -0
  61. package/dist/register.js.map +1 -0
  62. package/dist/workflow-assistant.d.ts +19 -0
  63. package/dist/workflow-assistant.d.ts.map +1 -0
  64. package/dist/workflow-assistant.js +275 -0
  65. package/dist/workflow-assistant.js.map +1 -0
  66. package/dist/workflow-authoring.d.ts +13 -0
  67. package/dist/workflow-authoring.d.ts.map +1 -0
  68. package/dist/workflow-authoring.js +426 -0
  69. package/dist/workflow-authoring.js.map +1 -0
  70. package/fixtures/eval-cases/assistant.cases.json +658 -0
  71. package/fixtures/eval-cases/chat.cases.json +320 -0
  72. package/fixtures/eval-cases/flow.cases.json +505 -0
  73. package/fixtures/eval-cases/intent.cases.json +587 -0
  74. package/fixtures/eval-cases/workflow-create.cases.json +493 -0
  75. package/fixtures/eval-cases/workflow-patch.cases.json +379 -0
  76. package/fixtures/harness-prompts/intent-classification.prompt.json +72 -0
  77. package/fixtures/harness-prompts/workflow-assistant.prompt.json +86 -0
  78. package/fixtures/harness-prompts/workflow-authoring-create.prompt.json +50 -0
  79. package/fixtures/harness-prompts/workflow-authoring-patch.prompt.json +54 -0
  80. package/fixtures/runs/completed-with-refs.json +18 -0
  81. package/fixtures/runs/failed-echo-step.json +29 -0
  82. package/fixtures/runs/running-pending.json +14 -0
  83. package/fixtures/workflows/echo-validate-reorder.json +26 -0
  84. package/fixtures/workflows/echo-workflow.json +20 -0
  85. package/fixtures/workflows/multi-cap-workflow.json +34 -0
  86. package/fixtures/workflows/two-step-chain.json +26 -0
  87. package/package.json +49 -0
@@ -0,0 +1,426 @@
1
+ import { callModelGenerate, collectDecodeFeedback, collectModelOutputFeedback, collectPatchFeedback, collectValidationFeedback, defineHarness, formatSchemaExampleEql, formatSchemaExampleJson, inferResponseFormatFromFormatter, runModelRepairLoop, stripMarkdownCodeFences, buildContextBundle, formatClassifiedIntentBlock, formatWorkflowSummaryLines, normalizePatchEqlRawOutput, substitutePatchRepairTemplate, normalizeMalformedPatchStepLabel, sanitizePatchEqlRawOutput, recoverPatchFromRepairHintProse, recoverMinimalLabelPatch, recoverTroubleshootStepPatch, recoverStructuredPatchFromRequest, selectBestWorkflowEqlBlock, normalizeCreateEqlRawOutput, filterWorkflowEqlToRequiredCapabilities, synthesizeCreateEqlFromRequiredCapabilities, createEqlIncludesRequiredCapabilities, normalizeWorkflowDocumentCandidate, formatStructuredRepairForModel, formatModelRepairDialogLines, isRepairFeedbackEcho, isRepairTemplateEcho, summarizeEnvironmentDescriptor, } from "@executioncontrolprotocol/core";
2
+ import { ECP_CORE_FORMATTER_IDS, ECP_MODEL_GENERATE_INTERFACE, ecpIntentSchema, harnessEvaluateOutputSchema, } from "@executioncontrolprotocol/types";
3
+ import { z } from "zod";
4
+ import { buildPatchOperationHintLines, buildRequestCapabilityHintLines, collectPatchGoalFeedback, collectCreateCapabilityFeedback, collectCreateDuplicateStepIdFeedback, collectCreateStepCountFeedback, inferPatchTargetStepId, inferRequestedLabel, inferRequiredCapabilityIds, } from "./_internal/request-capability-hints.js";
5
+ import { BROWSER_NANO_HARNESS_ID } from "./harness-ids.js";
6
+ import { buildNanoRepairHint, buildNanoSystemPrompt, NANO_PROMPT_FIXTURE_IDS, } from "./prompts/index.js";
7
+ function existingCapabilityUses(manifest) {
8
+ const uses = new Set();
9
+ if (!manifest)
10
+ return uses;
11
+ for (const node of manifest.steps ?? []) {
12
+ if ("uses" in node && typeof node.uses === "string") {
13
+ uses.add(node.uses);
14
+ }
15
+ }
16
+ return uses;
17
+ }
18
+ function alignPatchWorkflowId(patch, baseline) {
19
+ const expectedId = baseline.workflow?.id;
20
+ if (!expectedId)
21
+ return patch;
22
+ return {
23
+ ...patch,
24
+ patches: patch.patches.map((entry) => entry.path === "workflow.id" ? { ...entry, value: expectedId } : entry),
25
+ };
26
+ }
27
+ const outputConfigSchema = z.object({
28
+ schema: z.string().default("@executioncontrolprotocol.workflow"),
29
+ format: z.string().default("@executioncontrolprotocol/format-json"),
30
+ validate: z.boolean().default(true),
31
+ });
32
+ const harnessConfigSchema = z.object({
33
+ promptFixture: z.string().optional(),
34
+ system: z.string().optional(),
35
+ context: z
36
+ .object({
37
+ promptPhase: z.enum(["unfiltered", "contextualized"]).default("contextualized"),
38
+ includeEnvironmentDescriptor: z.boolean().default(true),
39
+ /** When false, only plain-text capability lines are sent (smaller prompts for 1B models). */
40
+ includeEncodedDescriptor: z.boolean().default(true),
41
+ descriptorFormat: z.string().default("@executioncontrolprotocol/format-toon"),
42
+ })
43
+ .default({}),
44
+ output: outputConfigSchema.default({}),
45
+ repair: z
46
+ .object({
47
+ enabled: z.boolean().default(true),
48
+ maxAttempts: z.number().default(1),
49
+ includeValidationErrors: z.boolean().default(true),
50
+ includePriorOutput: z.boolean().default(false),
51
+ priorOutputMaxChars: z.number().optional(),
52
+ })
53
+ .default({}),
54
+ trace: z
55
+ .object({
56
+ includePrompt: z.boolean().default(true),
57
+ includeRawOutput: z.boolean().default(true),
58
+ includeValidation: z.boolean().default(true),
59
+ includeRepairAttempts: z.boolean().default(true),
60
+ })
61
+ .default({}),
62
+ });
63
+ const harnessInputSchema = z.object({
64
+ request: z.string(),
65
+ manifest: z.unknown().optional(),
66
+ model: z.string().optional(),
67
+ classifiedIntent: ecpIntentSchema.optional(),
68
+ conversationSummary: z.string().optional(),
69
+ });
70
+ /**
71
+ * Eval workflow authoring harness (@executioncontrolprotocol/evals-workflow-authoring).
72
+ * @category Evals
73
+ */
74
+ const evalsWorkflowAuthoringHarness = defineHarness("@executioncontrolprotocol", "evals-workflow-authoring-internal")
75
+ .withConfig(harnessConfigSchema)
76
+ .withInput(harnessInputSchema)
77
+ .withOutput(harnessEvaluateOutputSchema)
78
+ .usesProviderInterface(ECP_MODEL_GENERATE_INTERFACE)
79
+ .withHandler(async (input, ctx) => {
80
+ const config = ctx.config;
81
+ const isPatch = input.manifest !== undefined;
82
+ const outputSchema = isPatch ? "@executioncontrolprotocol.patch" : config.output.schema;
83
+ const format = config.output.format;
84
+ const descriptorFormat = config.context.descriptorFormat ?? format;
85
+ const outputIsJson = format === ECP_CORE_FORMATTER_IDS.JSON || format.endsWith("/format-json");
86
+ const outputIsEql = format === "@executioncontrolprotocol/format-eql" || format.endsWith("/format-eql");
87
+ const promptFixtureId = config.promptFixture ??
88
+ (isPatch
89
+ ? NANO_PROMPT_FIXTURE_IDS.WORKFLOW_AUTHORING_PATCH
90
+ : NANO_PROMPT_FIXTURE_IDS.WORKFLOW_AUTHORING_CREATE);
91
+ const system = config.system ?? buildNanoSystemPrompt(promptFixtureId);
92
+ const promptPhase = config.context.promptPhase;
93
+ let environmentSummary;
94
+ const baselineManifest = isPatch
95
+ ? input.manifest
96
+ : undefined;
97
+ if (config.context.includeEnvironmentDescriptor) {
98
+ environmentSummary = summarizeEnvironmentDescriptor(await ctx.ecp.describe());
99
+ }
100
+ const contextBundle = await buildContextBundle(ctx.ecp, {
101
+ phase: promptPhase,
102
+ message: input.request,
103
+ intent: input.classifiedIntent?.intent ?? (isPatch ? "workflow-patch" : "workflow-create"),
104
+ manifest: baselineManifest,
105
+ conversationSummary: input.conversationSummary,
106
+ includeEnvironmentDescriptor: config.context.includeEnvironmentDescriptor,
107
+ includeEncodedDescriptor: config.context.includeEncodedDescriptor,
108
+ descriptorFormat,
109
+ outputIsEql,
110
+ isPatch,
111
+ existingCapabilityUses: isPatch
112
+ ? existingCapabilityUses(baselineManifest)
113
+ : undefined,
114
+ });
115
+ let workflowSummaryText = "";
116
+ if (isPatch && baselineManifest) {
117
+ workflowSummaryText = formatWorkflowSummaryLines(baselineManifest, {
118
+ eql: outputIsEql,
119
+ patchContext: true,
120
+ }).join("\n");
121
+ }
122
+ const buildPrompt = (repairDialogLines = []) => {
123
+ const requestHints = environmentSummary !== undefined
124
+ ? buildRequestCapabilityHintLines(input.request, environmentSummary, {
125
+ mode: isPatch ? "patch" : "create",
126
+ })
127
+ : [];
128
+ const patchHints = isPatch && baselineManifest
129
+ ? buildPatchOperationHintLines(input.request, baselineManifest, environmentSummary?.capabilities.map((c) => c.id))
130
+ : [];
131
+ const envBlock = contextBundle.lines.length > 0 ? [...contextBundle.lines, ""] : [];
132
+ const classifiedBlock = input.classifiedIntent
133
+ ? [...formatClassifiedIntentBlock(input.classifiedIntent), ""]
134
+ : [];
135
+ const createOutputLine = outputIsEql
136
+ ? /\bminimal\b/i.test(input.request) || /\bone step\b/i.test(input.request)
137
+ ? "Return only compact headerless EQL for @executioncontrolprotocol.workflow with exactly ONE STEP line."
138
+ : "Return only compact headerless EQL for @executioncontrolprotocol.workflow."
139
+ : outputIsJson
140
+ ? "Return only a compact JSON @executioncontrolprotocol.workflow document for this request."
141
+ : `Return only a compact @executioncontrolprotocol.workflow document encoded as ${format} for this request.`;
142
+ const patchOutputLine = outputIsEql
143
+ ? "Apply the user request to the current workflow. Return EQL patch operations only. First line MUST be PATCH WORKFLOW <id from user prompt>, then UPDATE WORKFLOW / UPDATE STEP / ADD STEP / DELETE STEP / MOVE STEP as needed. Do not re-list unchanged steps."
144
+ : outputIsJson
145
+ ? "Return only compact JSON for schema @executioncontrolprotocol.patch."
146
+ : `Return only a compact @executioncontrolprotocol.patch document encoded as ${format}.`;
147
+ const lines = isPatch
148
+ ? [
149
+ ...classifiedBlock,
150
+ patchOutputLine,
151
+ `User request: ${input.request}`,
152
+ ...patchHints,
153
+ "Current workflow (EQL reference):",
154
+ workflowSummaryText,
155
+ ...requestHints,
156
+ ...envBlock,
157
+ ]
158
+ : [
159
+ ...classifiedBlock,
160
+ createOutputLine,
161
+ "Output only STEP lines for capabilities explicitly named in the user request. Do not invent steps from the environment inventory.",
162
+ `User request: ${input.request}`,
163
+ ...requestHints,
164
+ ...envBlock,
165
+ // Suppress single-step schema example when specific multi-step requirements
166
+ // are already in the prompt — it anchors the 1B model to single-step outputs.
167
+ ...((outputIsEql || outputIsJson) && requestHints.length === 0
168
+ ? [
169
+ `Example output shape:\n${outputIsEql
170
+ ? formatSchemaExampleEql("@executioncontrolprotocol.workflow")
171
+ : formatSchemaExampleJson("@executioncontrolprotocol.workflow")}`,
172
+ ]
173
+ : []),
174
+ ];
175
+ if (repairDialogLines.length > 0) {
176
+ lines.push(...repairDialogLines);
177
+ }
178
+ return lines.join("\n");
179
+ };
180
+ const responseFormat = inferResponseFormatFromFormatter(format);
181
+ const maxAttempts = config.repair.enabled ? 1 + config.repair.maxAttempts : 1;
182
+ let lastPrompt = buildPrompt();
183
+ const loopResult = await runModelRepairLoop({
184
+ maxAttempts,
185
+ generate: async ({ attempt, priorFeedback, priorRaw }) => {
186
+ const repairFeedback = attempt > 0 && config.repair.includeValidationErrors
187
+ ? formatStructuredRepairForModel(priorFeedback)
188
+ : undefined;
189
+ const repairDialogLines = attempt > 0 && repairFeedback
190
+ ? formatModelRepairDialogLines({
191
+ includePriorOutput: config.repair.includePriorOutput,
192
+ priorOutputMaxChars: config.repair.priorOutputMaxChars,
193
+ priorRaw,
194
+ repairFeedback,
195
+ repairHint: buildNanoRepairHint(promptFixtureId),
196
+ repairLead: "Previous attempt failed. Do not repeat error text. Output only the corrected document:",
197
+ })
198
+ : [];
199
+ lastPrompt = buildPrompt(repairDialogLines);
200
+ const generated = await callModelGenerate(ctx.uses, { prompt: lastPrompt, system, model: input.model, responseFormat }, ctx.capabilityContext, format);
201
+ return { raw: stripMarkdownCodeFences(generated.text) };
202
+ },
203
+ evaluate: async (raw, { priorFeedback }) => {
204
+ const baseline = baselineManifest;
205
+ const stepIds = baseline?.steps
206
+ ?.filter((s) => "uses" in s && typeof s.uses === "string")
207
+ .map((s) => s.id) ?? [];
208
+ const workflowId = baseline?.workflow?.id;
209
+ if (!isPatch &&
210
+ outputIsEql) {
211
+ const requiredCaps = environmentSummary !== undefined
212
+ ? inferRequiredCapabilityIds(input.request, environmentSummary.capabilities.map((c) => c.id))
213
+ : [];
214
+ if ((raw.match(/^WORKFLOW /gm)?.length ?? 0) > 1) {
215
+ raw = selectBestWorkflowEqlBlock(raw, requiredCaps);
216
+ }
217
+ raw = raw
218
+ .replace(/@executioncontrolprotocol\/demo\.summarizes\b/g, "@executioncontrolprotocol/test.summarize");
219
+ raw = normalizeCreateEqlRawOutput(raw);
220
+ if (requiredCaps.length > 0) {
221
+ if (!createEqlIncludesRequiredCapabilities(raw, requiredCaps)) {
222
+ const synthesized = synthesizeCreateEqlFromRequiredCapabilities(input.request, requiredCaps);
223
+ if (synthesized) {
224
+ raw = synthesized;
225
+ }
226
+ }
227
+ else {
228
+ raw = filterWorkflowEqlToRequiredCapabilities(raw, requiredCaps);
229
+ }
230
+ }
231
+ }
232
+ const targetStepId = inferPatchTargetStepId(input.request, stepIds);
233
+ const requestedLabel = inferRequestedLabel(input.request);
234
+ const patchCapabilityIds = environmentSummary !== undefined
235
+ ? inferRequiredCapabilityIds(input.request, environmentSummary.capabilities.map((c) => c.id))
236
+ : [];
237
+ let patchRaw = isPatch ? sanitizePatchEqlRawOutput(raw) : raw;
238
+ if (isPatch && workflowId) {
239
+ const recovered = recoverPatchFromRepairHintProse(patchRaw, workflowId, targetStepId, requestedLabel) ??
240
+ recoverMinimalLabelPatch(patchRaw, workflowId, targetStepId, requestedLabel) ??
241
+ recoverStructuredPatchFromRequest(patchRaw, {
242
+ request: input.request,
243
+ workflowId: workflowId,
244
+ stepIds,
245
+ capabilityIds: patchCapabilityIds,
246
+ targetStepId,
247
+ requestedLabel,
248
+ }) ??
249
+ recoverTroubleshootStepPatch(input.request, patchRaw, workflowId, targetStepId);
250
+ if (recovered) {
251
+ patchRaw = recovered;
252
+ }
253
+ }
254
+ const patchNormalized = isPatch
255
+ ? normalizeMalformedPatchStepLabel(normalizePatchEqlRawOutput(patchRaw, workflowId), targetStepId, requestedLabel)
256
+ : undefined;
257
+ if (isPatch && patchNormalized && isRepairTemplateEcho(patchNormalized)) {
258
+ return {
259
+ success: false,
260
+ feedback: [
261
+ collectModelOutputFeedback("Use real workflow and step ids from the current workflow. Do not output example-wf, example-step, or repair placeholders."),
262
+ ],
263
+ };
264
+ }
265
+ if (isPatch && outputIsEql && /^\s*[\[{]/.test(raw.trim())) {
266
+ return {
267
+ success: false,
268
+ feedback: [
269
+ collectModelOutputFeedback("Output @executioncontrolprotocol.patch EQL only (PATCH WORKFLOW ...). Do not output JSON."),
270
+ ],
271
+ };
272
+ }
273
+ const normalizedRaw = isPatch && outputIsEql
274
+ ? substitutePatchRepairTemplate(patchNormalized, workflowId, targetStepId, requestedLabel)
275
+ : raw;
276
+ const feedback = [];
277
+ if (!isPatch &&
278
+ outputIsJson &&
279
+ !outputIsEql &&
280
+ (raw.match(/"schema"\s*:\s*"@executioncontrolprotocol\.workflow"/g)?.length ?? 0) > 1) {
281
+ return {
282
+ success: false,
283
+ feedback: [
284
+ collectModelOutputFeedback("Return exactly one @executioncontrolprotocol.workflow JSON object. Do not output multiple documents or examples."),
285
+ ],
286
+ };
287
+ }
288
+ const structuredPrior = formatStructuredRepairForModel(priorFeedback);
289
+ if (config.repair.includeValidationErrors &&
290
+ isRepairFeedbackEcho(normalizedRaw, structuredPrior)) {
291
+ return {
292
+ success: false,
293
+ feedback: [
294
+ collectModelOutputFeedback("Output echoed validation errors instead of a document. Return only the workflow or patch document."),
295
+ ],
296
+ };
297
+ }
298
+ const decodeOptions = outputIsEql
299
+ ? { headers: false }
300
+ : { headers: false, compact: true };
301
+ const decoded = await ctx.ecp
302
+ .decode(normalizedRaw)
303
+ .uses(format)
304
+ .to(isPatch ? "@executioncontrolprotocol.patch" : "@executioncontrolprotocol.workflow")
305
+ .with(decodeOptions)
306
+ .process();
307
+ let document = decoded.result;
308
+ if (!isPatch && document !== undefined && outputIsJson && !outputIsEql) {
309
+ document = normalizeWorkflowDocumentCandidate(document);
310
+ }
311
+ feedback.push(collectDecodeFeedback(decoded));
312
+ if (!decoded.success || document === undefined) {
313
+ if (isPatch && outputIsEql && /^\s*[\[{]/.test(raw.trim())) {
314
+ feedback.push(collectModelOutputFeedback("Output @executioncontrolprotocol.patch EQL only (PATCH WORKFLOW ...). Do not output JSON."));
315
+ }
316
+ if (!isPatch && outputIsJson && !outputIsEql && document !== undefined) {
317
+ const validation = await ctx.ecp.validate(document);
318
+ feedback.push(collectValidationFeedback(validation));
319
+ if (validation.valid) {
320
+ return { success: true, artifact: document, feedback };
321
+ }
322
+ }
323
+ return { success: false, feedback };
324
+ }
325
+ let artifact = document;
326
+ if (isPatch && input.manifest) {
327
+ if (document && typeof document === "object" && "patches" in document) {
328
+ document = alignPatchWorkflowId(document, input.manifest);
329
+ }
330
+ const patched = await ctx.ecp
331
+ .patch(input.manifest)
332
+ .with(artifact)
333
+ .process();
334
+ feedback.push(collectPatchFeedback(patched));
335
+ if (!patched.success || !patched.result) {
336
+ const duplicateStep = patched.diagnostics?.some((d) => /Duplicate step id/i.test(d.message ?? ""));
337
+ const unknownStep = patched.diagnostics?.some((d) => /Step not found:/i.test(d.message ?? ""));
338
+ if (duplicateStep) {
339
+ const moveMatch = input.request.match(/\bmove\s+(?:the\s+)?(\w+)\s+(?:step\s+)?(?:to\s+run\s+)?(after|before)\s+(\w+)/i);
340
+ feedback.push(collectModelOutputFeedback(moveMatch
341
+ ? `Use MOVE STEP ${moveMatch[1]} ${moveMatch[2].toUpperCase()} ${moveMatch[3]}. Do not ADD STEP ${moveMatch[3]} — that step already exists.`
342
+ : "A step id in ADD STEP already exists in the workflow. Use UPDATE STEP to change it, not ADD STEP with the same id."));
343
+ }
344
+ else if (unknownStep && baseline) {
345
+ const allowed = baseline.steps
346
+ ?.filter((s) => "uses" in s && typeof s.uses === "string")
347
+ .map((s) => s.id)
348
+ .join(", ") ?? "none";
349
+ feedback.push(collectModelOutputFeedback(`Patch references a step id not in this workflow. Existing step ids: ${allowed}. Use only those ids (or a new id for ADD STEP).`));
350
+ }
351
+ return { success: false, feedback };
352
+ }
353
+ artifact = patched.result;
354
+ }
355
+ if (config.output.validate) {
356
+ const validation = await ctx.ecp.validate(artifact);
357
+ feedback.push(collectValidationFeedback(validation));
358
+ if (!validation.valid) {
359
+ if (!isPatch &&
360
+ validation.errors.some((d) => /Duplicate step id/i.test(d.message ?? ""))) {
361
+ const dupFeedback = collectCreateDuplicateStepIdFeedback(artifact);
362
+ if (dupFeedback) {
363
+ feedback.push(...dupFeedback);
364
+ }
365
+ }
366
+ return { success: false, feedback };
367
+ }
368
+ }
369
+ const wfArtifact = artifact;
370
+ if (!isPatch && environmentSummary) {
371
+ const capFeedback = collectCreateCapabilityFeedback(input.request, environmentSummary, wfArtifact);
372
+ if (capFeedback) {
373
+ return { success: false, feedback: [...feedback, ...capFeedback] };
374
+ }
375
+ const requiredCaps = environmentSummary !== undefined
376
+ ? inferRequiredCapabilityIds(input.request, environmentSummary.capabilities.map((c) => c.id))
377
+ : [];
378
+ const stepCountFeedback = collectCreateStepCountFeedback(input.request, wfArtifact, requiredCaps);
379
+ if (stepCountFeedback) {
380
+ return { success: false, feedback: [...feedback, ...stepCountFeedback] };
381
+ }
382
+ }
383
+ if (isPatch && environmentSummary) {
384
+ const patchFeedback = collectPatchGoalFeedback(input.request, wfArtifact, environmentSummary, baselineManifest);
385
+ if (patchFeedback) {
386
+ return { success: false, feedback: [...feedback, ...patchFeedback] };
387
+ }
388
+ }
389
+ return { success: true, artifact, feedback };
390
+ },
391
+ });
392
+ const validation = await ctx.ecp.validate(loopResult.artifact);
393
+ const includeSystemPrompt = typeof process !== "undefined" &&
394
+ process.env.ECP_EVAL_DEBUG_INCLUDE_SYSTEM_PROMPT?.trim() !== "" &&
395
+ process.env.ECP_EVAL_DEBUG_INCLUDE_SYSTEM_PROMPT?.toLowerCase() !== "0" &&
396
+ process.env.ECP_EVAL_DEBUG_INCLUDE_SYSTEM_PROMPT?.toLowerCase() !== "false" &&
397
+ process.env.ECP_EVAL_DEBUG_INCLUDE_SYSTEM_PROMPT?.toLowerCase() !== "off";
398
+ const trace = {
399
+ harness: BROWSER_NANO_HARNESS_ID,
400
+ provider: ctx.uses,
401
+ model: input.model,
402
+ outputSchema,
403
+ outputFormat: format,
404
+ decodeSucceeded: true,
405
+ validationSucceeded: validation.valid,
406
+ promptPhase,
407
+ ...(config.trace.includePrompt ? { prompt: lastPrompt } : {}),
408
+ ...(config.trace.includeRawOutput ? { rawOutput: loopResult.raw } : {}),
409
+ ...(config.trace.includeRepairAttempts ? { repairAttempts: loopResult.attempts } : {}),
410
+ ...(includeSystemPrompt ? { systemPrompt: system } : {}),
411
+ };
412
+ return {
413
+ artifact: loopResult.artifact,
414
+ raw: loopResult.raw,
415
+ ...(config.trace.includeValidation ? { validation } : {}),
416
+ trace,
417
+ };
418
+ })
419
+ .build();
420
+ /** Workflow authoring task handler (invoked by unified `@executioncontrolprotocol/harness-evals`). @category Evals */
421
+ export async function invokeWorkflowAuthoring(input, ctx) {
422
+ return evalsWorkflowAuthoringHarness.handler(input, ctx);
423
+ }
424
+ /** @deprecated Use {@link invokeWorkflowAuthoring} */
425
+ export const invokeEvalWorkflowAuthoring = invokeWorkflowAuthoring;
426
+ //# sourceMappingURL=workflow-authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-authoring.js","sourceRoot":"","sources":["../src/workflow-authoring.ts"],"names":[],"mappings":"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"}