@executioncontrolprotocol/harnesses-browser-coding 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 (81) hide show
  1. package/README.md +21 -0
  2. package/dist/browser-coding-harness.d.ts +50 -0
  3. package/dist/browser-coding-harness.d.ts.map +1 -0
  4. package/dist/browser-coding-harness.js +76 -0
  5. package/dist/browser-coding-harness.js.map +1 -0
  6. package/dist/fluent-patch-hints.d.ts +18 -0
  7. package/dist/fluent-patch-hints.d.ts.map +1 -0
  8. package/dist/fluent-patch-hints.js +262 -0
  9. package/dist/fluent-patch-hints.js.map +1 -0
  10. package/dist/harness-coding-config.d.ts +45 -0
  11. package/dist/harness-coding-config.d.ts.map +1 -0
  12. package/dist/harness-coding-config.js +87 -0
  13. package/dist/harness-coding-config.js.map +1 -0
  14. package/dist/harness-ids.d.ts +6 -0
  15. package/dist/harness-ids.d.ts.map +1 -0
  16. package/dist/harness-ids.js +6 -0
  17. package/dist/harness-ids.js.map +1 -0
  18. package/dist/index.d.ts +6 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +5 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/intent-classification-coding.d.ts +8 -0
  23. package/dist/intent-classification-coding.d.ts.map +1 -0
  24. package/dist/intent-classification-coding.js +172 -0
  25. package/dist/intent-classification-coding.js.map +1 -0
  26. package/dist/prompts/build-coding-prompt.d.ts +11 -0
  27. package/dist/prompts/build-coding-prompt.d.ts.map +1 -0
  28. package/dist/prompts/build-coding-prompt.js +17 -0
  29. package/dist/prompts/build-coding-prompt.js.map +1 -0
  30. package/dist/prompts/coding-prompt-fixture-ids.d.ts +10 -0
  31. package/dist/prompts/coding-prompt-fixture-ids.d.ts.map +1 -0
  32. package/dist/prompts/coding-prompt-fixture-ids.js +8 -0
  33. package/dist/prompts/coding-prompt-fixture-ids.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/register.d.ts +5 -0
  55. package/dist/register.d.ts.map +1 -0
  56. package/dist/register.js +14 -0
  57. package/dist/register.js.map +1 -0
  58. package/dist/workflow-assistant-coding.d.ts +9 -0
  59. package/dist/workflow-assistant-coding.d.ts.map +1 -0
  60. package/dist/workflow-assistant-coding.js +282 -0
  61. package/dist/workflow-assistant-coding.js.map +1 -0
  62. package/dist/workflow-authoring-coding.d.ts +9 -0
  63. package/dist/workflow-authoring-coding.d.ts.map +1 -0
  64. package/dist/workflow-authoring-coding.js +214 -0
  65. package/dist/workflow-authoring-coding.js.map +1 -0
  66. package/fixtures/eval-cases/assistant.cases.json +658 -0
  67. package/fixtures/eval-cases/intent.cases.json +587 -0
  68. package/fixtures/eval-cases/workflow-create.cases.json +493 -0
  69. package/fixtures/eval-cases/workflow-patch.cases.json +379 -0
  70. package/fixtures/harness-prompts/intent-classification-coding.prompt.json +56 -0
  71. package/fixtures/harness-prompts/workflow-assistant-coding.prompt.json +70 -0
  72. package/fixtures/harness-prompts/workflow-authoring-create-coding.prompt.json +42 -0
  73. package/fixtures/harness-prompts/workflow-authoring-patch-coding.prompt.json +50 -0
  74. package/fixtures/runs/completed-with-refs.json +18 -0
  75. package/fixtures/runs/failed-echo-step.json +29 -0
  76. package/fixtures/runs/running-pending.json +14 -0
  77. package/fixtures/workflows/echo-validate-reorder.json +26 -0
  78. package/fixtures/workflows/echo-workflow.json +20 -0
  79. package/fixtures/workflows/multi-cap-workflow.json +34 -0
  80. package/fixtures/workflows/two-step-chain.json +26 -0
  81. package/package.json +47 -0
package/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # @executioncontrolprotocol/harnesses-browser-coding
2
+
3
+ Browser Coding harness (`@executioncontrolprotocol/harness-browser-coding`) for local coding models (Ollama `qwen2.5-coder:1.5b` eval matrix).
4
+
5
+ - **TypeScript-first:** Fluent workflows and typed `EcpIntent` / `HarnessReply` modules (no EQL).
6
+ - **Eval matrix only** — browser demo continues to use `@executioncontrolprotocol/harnesses-browser-nano`.
7
+
8
+ ## Fixtures and evals
9
+
10
+ | Asset | Location |
11
+ | ----- | -------- |
12
+ | Prompt fixtures | `fixtures/harness-prompts/*.prompt.json` |
13
+ | Eval cases | `fixtures/eval-cases/*.cases.json` (63 cases; no chat/flow) |
14
+ | Support fixtures | `fixtures/workflows/`, `fixtures/runs/` |
15
+ | Matrix tests | `test/eval/` |
16
+
17
+ Run matrix: `npm run eval:matrix -w @executioncontrolprotocol/harnesses-browser-coding`
18
+
19
+ ```ts
20
+ import { registerBrowserCodingHarnesses, BROWSER_CODING_HARNESS_CAPABILITY } from "@executioncontrolprotocol/harnesses-browser-coding"
21
+ ```
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ declare const harnessInputSchema: z.ZodDiscriminatedUnion<"task", [z.ZodObject<{
3
+ task: z.ZodLiteral<"intent-classification">;
4
+ message: z.ZodString;
5
+ model: z.ZodOptional<z.ZodString>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ message: string;
8
+ task: "intent-classification";
9
+ model?: string | undefined;
10
+ }, {
11
+ message: string;
12
+ task: "intent-classification";
13
+ model?: string | undefined;
14
+ }>, z.ZodObject<{
15
+ task: z.ZodLiteral<"workflow-authoring">;
16
+ request: z.ZodString;
17
+ manifest: z.ZodOptional<z.ZodUnknown>;
18
+ model: z.ZodOptional<z.ZodString>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ request: string;
21
+ task: "workflow-authoring";
22
+ model?: string | undefined;
23
+ manifest?: unknown;
24
+ }, {
25
+ request: string;
26
+ task: "workflow-authoring";
27
+ model?: string | undefined;
28
+ manifest?: unknown;
29
+ }>, z.ZodObject<{
30
+ task: z.ZodLiteral<"workflow-assistant">;
31
+ message: z.ZodString;
32
+ runContext: z.ZodOptional<z.ZodUnknown>;
33
+ model: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ message: string;
36
+ task: "workflow-assistant";
37
+ model?: string | undefined;
38
+ runContext?: unknown;
39
+ }, {
40
+ message: string;
41
+ task: "workflow-assistant";
42
+ model?: string | undefined;
43
+ runContext?: unknown;
44
+ }>]>;
45
+ /** Input for {@link BROWSER_CODING_HARNESS_ID} evaluate. @category Harness */
46
+ export type BrowserCodingHarnessInput = z.infer<typeof harnessInputSchema>;
47
+ /** Register Browser Coding harness (`@executioncontrolprotocol/harness-browser-coding`). @category Harness */
48
+ export declare function registerBrowserCodingHarness(): void;
49
+ export {};
50
+ //# sourceMappingURL=browser-coding-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-coding-harness.d.ts","sourceRoot":"","sources":["../src/browser-coding-harness.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAWvB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkBtB,CAAA;AAEF,8EAA8E;AAC9E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AA8D1E,8GAA8G;AAC9G,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
@@ -0,0 +1,76 @@
1
+ import { catalogHarness, defineHarness, } from "@executioncontrolprotocol/core";
2
+ import { ECP_MODEL_GENERATE_INTERFACE, harnessEvaluateOutputSchema, } from "@executioncontrolprotocol/types";
3
+ import { z } from "zod";
4
+ import { getHarnessCodingConfig, HARNESS_TASKS, } from "./harness-coding-config.js";
5
+ import { invokeIntentClassificationCoding } from "./intent-classification-coding.js";
6
+ import { invokeWorkflowAssistantCoding } from "./workflow-assistant-coding.js";
7
+ import { invokeWorkflowAuthoringCoding } from "./workflow-authoring-coding.js";
8
+ const harnessInputSchema = z.discriminatedUnion("task", [
9
+ z.object({
10
+ task: z.literal(HARNESS_TASKS.INTENT_CLASSIFICATION),
11
+ message: z.string(),
12
+ model: z.string().optional(),
13
+ }),
14
+ z.object({
15
+ task: z.literal(HARNESS_TASKS.WORKFLOW_AUTHORING),
16
+ request: z.string(),
17
+ manifest: z.unknown().optional(),
18
+ model: z.string().optional(),
19
+ }),
20
+ z.object({
21
+ task: z.literal(HARNESS_TASKS.WORKFLOW_ASSISTANT),
22
+ message: z.string(),
23
+ runContext: z.unknown().optional(),
24
+ model: z.string().optional(),
25
+ }),
26
+ ]);
27
+ const harnessBindingSchema = z
28
+ .object({
29
+ harnessProfile: z.enum(["coding"]).optional(),
30
+ repair: z.record(z.string(), z.unknown()).optional(),
31
+ trace: z.record(z.string(), z.unknown()).optional(),
32
+ context: z.record(z.string(), z.unknown()).optional(),
33
+ })
34
+ .passthrough();
35
+ function handlerContextForTask(task, ctx) {
36
+ const profile = ctx.config.harnessProfile ?? "coding";
37
+ const taskConfig = getHarnessCodingConfig(task, profile);
38
+ const envConfig = ctx.config;
39
+ return {
40
+ ...ctx,
41
+ config: {
42
+ ...taskConfig,
43
+ ...ctx.config,
44
+ harnessProfile: profile,
45
+ repair: { ...taskConfig.repair, ...envConfig.repair },
46
+ trace: { ...taskConfig.trace, ...envConfig.trace },
47
+ context: { ...taskConfig.context, ...envConfig.context },
48
+ },
49
+ };
50
+ }
51
+ const browserCodingHarnessDefinition = defineHarness("@executioncontrolprotocol", "harness-browser-coding")
52
+ .withConfig(harnessBindingSchema)
53
+ .withInput(harnessInputSchema)
54
+ .withOutput(harnessEvaluateOutputSchema)
55
+ .usesProviderInterface(ECP_MODEL_GENERATE_INTERFACE)
56
+ .withHandler(async (input, ctx) => {
57
+ const taskCtx = handlerContextForTask(input.task, ctx);
58
+ switch (input.task) {
59
+ case HARNESS_TASKS.INTENT_CLASSIFICATION:
60
+ return invokeIntentClassificationCoding({ message: input.message, model: input.model }, taskCtx);
61
+ case HARNESS_TASKS.WORKFLOW_AUTHORING:
62
+ return invokeWorkflowAuthoringCoding({ request: input.request, manifest: input.manifest, model: input.model }, taskCtx);
63
+ case HARNESS_TASKS.WORKFLOW_ASSISTANT:
64
+ return invokeWorkflowAssistantCoding({ message: input.message, runContext: input.runContext, model: input.model }, taskCtx);
65
+ default: {
66
+ const _exhaustive = input;
67
+ throw new Error(`Unknown harness task: ${String(_exhaustive)}`);
68
+ }
69
+ }
70
+ })
71
+ .build();
72
+ /** Register Browser Coding harness (`@executioncontrolprotocol/harness-browser-coding`). @category Harness */
73
+ export function registerBrowserCodingHarness() {
74
+ catalogHarness(browserCodingHarnessDefinition);
75
+ }
76
+ //# sourceMappingURL=browser-coding-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-coding-harness.js","sourceRoot":"","sources":["../src/browser-coding-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,GAEd,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,GAE5B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,sBAAsB,EACtB,aAAa,GAGd,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAA;AACpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAE9E,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACtD,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC;QACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC;QACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC;QACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;CACH,CAAC,CAAA;AAKF,MAAM,oBAAoB,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC;KACD,WAAW,EAAE,CAAA;AAEhB,SAAS,qBAAqB,CAC5B,IAAiB,EACjB,GAAsD;IAEtD,MAAM,OAAO,GAAI,GAAG,CAAC,MAAM,CAAC,cAAmD,IAAI,QAAQ,CAAA;IAC3F,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAA4C,CAAA;IACnG,MAAM,SAAS,GAAG,GAAG,CAAC,MAA6D,CAAA;IACnF,OAAO;QACL,GAAG,GAAG;QACN,MAAM,EAAE;YACN,GAAG,UAAU;YACb,GAAG,GAAG,CAAC,MAAM;YACb,cAAc,EAAE,OAAO;YACvB,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE;YACrD,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE;YAClD,OAAO,EAAE,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;SACzD;KACF,CAAA;AACH,CAAC;AAED,MAAM,8BAA8B,GAAG,aAAa,CAAC,2BAA2B,EAAE,wBAAwB,CAAC;KACxG,UAAU,CAAC,oBAAoB,CAAC;KAChC,SAAS,CAAC,kBAAkB,CAAC;KAC7B,UAAU,CAAC,2BAA2B,CAAC;KACvC,qBAAqB,CAAC,4BAA4B,CAAC;KACnD,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAkC,EAAE;IAChE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACtD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAa,CAAC,qBAAqB;YACtC,OAAO,gCAAgC,CACrC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAC9C,OAAO,CACR,CAAA;QACH,KAAK,aAAa,CAAC,kBAAkB;YACnC,OAAO,6BAA6B,CAClC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EACxE,OAAO,CACR,CAAA;QACH,KAAK,aAAa,CAAC,kBAAkB;YACnC,OAAO,6BAA6B,CAClC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAC5E,OAAO,CACR,CAAA;QACH,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,KAAK,CAAA;YAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;KACD,KAAK,EAAE,CAAA;AAEV,8GAA8G;AAC9G,MAAM,UAAU,4BAA4B;IAC1C,cAAc,CAAC,8BAA8B,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type CompactEnvironmentSummary } from "@executioncontrolprotocol/core";
2
+ import type { HarnessOperationFeedback, WorkflowManifest } from "@executioncontrolprotocol/types";
3
+ /**
4
+ * Fluent-only patch hints for the Browser Coding harness (no EQL vocabulary).
5
+ * @category Harness
6
+ */
7
+ export declare function buildFluentPatchHintLines(request: string, manifest: WorkflowManifest, capabilityIds?: readonly string[]): string[];
8
+ /**
9
+ * Repair feedback for Fluent patch output (manifest checks, not EQL).
10
+ * @category Harness
11
+ */
12
+ export declare function collectFluentPatchGoalFeedback(request: string, patched: WorkflowManifest, summary: CompactEnvironmentSummary, baseline?: WorkflowManifest): HarnessOperationFeedback[] | undefined;
13
+ /**
14
+ * Map common Fluent compile errors to repair hints.
15
+ * @category Harness
16
+ */
17
+ export declare function collectFluentCompileErrorFeedback(compileMessage: string): HarnessOperationFeedback[] | undefined;
18
+ //# sourceMappingURL=fluent-patch-hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluent-patch-hints.d.ts","sourceRoot":"","sources":["../src/fluent-patch-hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAK3G,OAAO,KAAK,EAAE,wBAAwB,EAAY,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AA+B3G;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAChC,MAAM,EAAE,CA4GV;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,yBAAyB,EAClC,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,wBAAwB,EAAE,GAAG,SAAS,CA+MxC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,cAAc,EAAE,MAAM,GACrB,wBAAwB,EAAE,GAAG,SAAS,CAuBxC"}
@@ -0,0 +1,262 @@
1
+ import { collectModelOutputFeedback } from "@executioncontrolprotocol/core";
2
+ import { inferPatchTargetStepId, inferRequiredCapabilityIds, } from "@executioncontrolprotocol/harnesses-browser-nano";
3
+ const FLUENT_ANTI_PATTERNS = "Do not use EQL, PATCH WORKFLOW, UPDATE STEP, DELETE STEP, MOVE STEP, ADD STEP, .remove(), .after(), or moveStep.";
4
+ function stepUsesList(workflow) {
5
+ const uses = [];
6
+ for (const node of workflow.steps ?? []) {
7
+ if ("uses" in node && typeof node.uses === "string") {
8
+ uses.push(node.uses);
9
+ }
10
+ }
11
+ return uses;
12
+ }
13
+ function flatStepIds(workflow) {
14
+ return (workflow.steps
15
+ ?.filter((s) => "uses" in s && typeof s.uses === "string")
16
+ .map((s) => s.id) ?? []);
17
+ }
18
+ function stepHasInputRef(step) {
19
+ if (!("input" in step) || step.input === undefined)
20
+ return false;
21
+ const input = step.input;
22
+ return Object.values(input).some((v) => v !== null && typeof v === "object" && "$ref" in v);
23
+ }
24
+ /**
25
+ * Fluent-only patch hints for the Browser Coding harness (no EQL vocabulary).
26
+ * @category Harness
27
+ */
28
+ export function buildFluentPatchHintLines(request, manifest, capabilityIds) {
29
+ const stepIds = flatStepIds(manifest);
30
+ const workflowId = manifest.workflow?.id ?? "unknown";
31
+ const lower = request.toLowerCase();
32
+ const isWorkflowLabel = /\bworkflow\s+label\b/i.test(lower) ||
33
+ /change\s+workflow\s+label/i.test(lower) ||
34
+ /rename\s+workflow/i.test(lower);
35
+ const removeMatch = lower.match(/remove\s+(?:the\s+)?(\w+)(?:\s+step|\s+if|\s+from)/i);
36
+ const hasAddIntent = /add|include|append|insert/i.test(lower);
37
+ const moveMatch = request.match(/\bmove\s+(?:the\s+)?(\w+)\s+(?:step\s+)?(?:to\s+run\s+)?(after|before)\s+(\w+)/i);
38
+ const targetStepId = inferPatchTargetStepId(request, stepIds);
39
+ const addAfterMatch = request.match(/\badd\s+\w+\s+after\s+(\w+)\b/i);
40
+ const lines = [
41
+ FLUENT_ANTI_PATTERNS,
42
+ `Keep workflow .id("${workflowId}") on export default workflow(...).`,
43
+ `Preserve every existing step .id(...) for ids: ${stepIds.join(", ") || "none"}.`,
44
+ "Return a complete revised module: import { workflow, step, ref } from \"@executioncontrolprotocol/core\" when using ref().",
45
+ "Edit rules:",
46
+ "- label or input on an existing step → change that step only; keep .id(\"<stepId>\") unchanged.",
47
+ "- remove/delete a step → rebuild .run([...]) without that step.",
48
+ "- add a capability → append step(...) to .run([...]); use ref(\"priorStep.output\") when chaining.",
49
+ "- move/reorder → reorder entries inside .run([...]); do not invent move helpers.",
50
+ "- workflow label → change workflow(\"New label\") and keep .id(\"...\").",
51
+ ];
52
+ if (moveMatch) {
53
+ const stepId = moveMatch[1];
54
+ const relation = moveMatch[2].toLowerCase();
55
+ const anchorId = moveMatch[3];
56
+ if (stepIds.includes(stepId) && stepIds.includes(anchorId)) {
57
+ const order = relation === "after"
58
+ ? stepIds.filter((id) => id !== stepId).flatMap((id) => id === anchorId ? [anchorId, stepId] : [id])
59
+ : stepIds.filter((id) => id !== stepId).flatMap((id) => id === anchorId ? [stepId, anchorId] : [id]);
60
+ lines.push(`Current step order: ${stepIds.join(", ")}.`, `Reorder .run([...]) so "${stepId}" is ${relation} "${anchorId}" (target order: ${order.join(", ")}).`);
61
+ }
62
+ }
63
+ else if (/\bremove\b|\bdelete\b/i.test(lower) && hasAddIntent) {
64
+ const removeId = removeMatch?.[1];
65
+ const anchor = addAfterMatch?.[1];
66
+ lines.push("Remove the listed step from .run([...]), then append the new step.");
67
+ if (removeId) {
68
+ const required = capabilityIds !== undefined
69
+ ? inferRequiredCapabilityIds(request, capabilityIds)
70
+ : [];
71
+ const addCap = required[0];
72
+ if (addCap) {
73
+ const addStepId = addCap.split(".").pop() ?? "step";
74
+ lines.push(`Omit step .id("${removeId}") from .run([...]); add step("${addCap}", ...).id("${addStepId}")${anchor ? ` after "${anchor}" in the array` : ""}.`);
75
+ }
76
+ }
77
+ }
78
+ else if (/\bremove\b|\bdelete\b/i.test(lower)) {
79
+ lines.push("Rebuild .run([...]) without the removed step id.");
80
+ }
81
+ else if (isWorkflowLabel) {
82
+ lines.push("Change only the workflow title string in workflow(\"...\"); keep workflow .id() and all step .id() values.");
83
+ }
84
+ else if (/\blabel\b|\binput\b|\bvalue\b|\brename\b/i.test(lower) &&
85
+ !hasAddIntent &&
86
+ !moveMatch) {
87
+ if (targetStepId) {
88
+ const isLabelChange = /\blabel\b|\brename\b/i.test(lower);
89
+ lines.push(`Target step id "${targetStepId}": update step(..., ${isLabelChange ? "new label" : "label"}).id("${targetStepId}") — do not change other step ids.`);
90
+ }
91
+ }
92
+ else if (hasAddIntent) {
93
+ const required = capabilityIds !== undefined
94
+ ? inferRequiredCapabilityIds(request, capabilityIds)
95
+ : [];
96
+ if (required.length > 0) {
97
+ lines.push(`Append step("${required[0]}", ...) to .run([...])${addAfterMatch ? ` after the step with id "${addAfterMatch[1]}"` : ""}; import ref from "@executioncontrolprotocol/core" when chaining outputs.`);
98
+ }
99
+ }
100
+ if (/\$ref|\bref(erence)?s?\b.*\boutput\b/i.test(lower)) {
101
+ const targetStep = request.match(/ensure\s+(\w+)\s+input/i)?.[1] ??
102
+ request.match(/(\w+)\s+uses\s+\$ref/i)?.[1] ??
103
+ "summarize";
104
+ const sourceStep = request.match(/(?:to|from)\s+(\w+)\s+output/i)?.[1] ?? "echo";
105
+ if (stepIds.includes(targetStep)) {
106
+ lines.push(`Step .id("${targetStep}") must use ref("${sourceStep}.output") inside .with({ ... }).`);
107
+ }
108
+ }
109
+ return lines;
110
+ }
111
+ /**
112
+ * Repair feedback for Fluent patch output (manifest checks, not EQL).
113
+ * @category Harness
114
+ */
115
+ export function collectFluentPatchGoalFeedback(request, patched, summary, baseline) {
116
+ const lower = request.toLowerCase();
117
+ const feedback = [];
118
+ const baselineStepIds = baseline?.steps
119
+ ?.filter((s) => "uses" in s && typeof s.uses === "string")
120
+ .map((s) => s.id) ?? [];
121
+ const removeMatch = lower.match(/remove\s+(?:the\s+)?(\w+)(?:\s+step|\s+if|\s+from)/i);
122
+ const hasAddIntent = /add|include|append|insert/i.test(lower);
123
+ const moveMatch = request.match(/\bmove\s+(?:the\s+)?(\w+)\s+(?:step\s+)?(?:to\s+run\s+)?(after|before)\s+(\w+)/i);
124
+ for (const stepId of baselineStepIds) {
125
+ const isRemoveTarget = removeMatch?.[1] === stepId && /\bremove\b|\bdelete\b/i.test(lower);
126
+ if (isRemoveTarget)
127
+ continue;
128
+ const still = patched.steps?.find((s) => s.id === stepId);
129
+ if (!still) {
130
+ feedback.push(collectModelOutputFeedback(`Baseline step id "${stepId}" is missing. Keep .id("${stepId}") on that step in .run([...]).`));
131
+ }
132
+ }
133
+ if (removeMatch) {
134
+ const stepId = removeMatch[1];
135
+ const still = patched.steps?.find((s) => s.id === stepId);
136
+ if (still) {
137
+ feedback.push(collectModelOutputFeedback(`Request removes step "${stepId}" but it is still in .run([...]). Rebuild the array without that step.`));
138
+ }
139
+ }
140
+ if (/change\s+(?:the\s+)?(\w+)\s+step\s+label/i.test(request) &&
141
+ !hasAddIntent &&
142
+ baselineStepIds.length > 0) {
143
+ const stepId = request.match(/change\s+(?:the\s+)?(\w+)\s+step\s+label/i)?.[1];
144
+ if (stepId && baselineStepIds.includes(stepId)) {
145
+ const count = patched.steps?.filter((s) => s.id === stepId).length ?? 0;
146
+ if (count > 1 || (patched.steps?.length ?? 0) > baselineStepIds.length) {
147
+ feedback.push(collectModelOutputFeedback(`Step "${stepId}" already exists. Update its label via step(...).id("${stepId}"), do not add a duplicate step.`));
148
+ }
149
+ }
150
+ }
151
+ if (moveMatch && baseline) {
152
+ const stepId = moveMatch[1];
153
+ const relation = moveMatch[2].toLowerCase();
154
+ const anchorId = moveMatch[3];
155
+ const stepOrder = flatStepIds(patched);
156
+ const stepIdx = stepOrder.indexOf(stepId);
157
+ const anchorIdx = stepOrder.indexOf(anchorId);
158
+ if (stepIdx >= 0 && anchorIdx >= 0) {
159
+ const correct = relation === "after" ? stepIdx === anchorIdx + 1 : stepIdx === anchorIdx - 1;
160
+ if (!correct) {
161
+ feedback.push(collectModelOutputFeedback(`Reorder .run([...]) so step id "${stepId}" is ${relation} "${anchorId}". Do not use moveStep or .after().`));
162
+ }
163
+ }
164
+ }
165
+ const required = inferRequiredCapabilityIds(request, summary.capabilities.map((c) => c.id));
166
+ const uses = stepUsesList(patched);
167
+ const missing = required.filter((id) => !uses.includes(id));
168
+ if (missing.length > 0 && hasAddIntent) {
169
+ const baselineIds = baselineStepIds.join(", ");
170
+ const afterMatch = request.match(/\bafter\s+(\w+)\b/i);
171
+ const anchor = afterMatch?.[1];
172
+ feedback.push(collectModelOutputFeedback(`Append step("${missing.join('" or "')}", ...) to .run([...])` +
173
+ `${anchor ? ` after the step with id "${anchor}"` : ""}. ` +
174
+ `Keep existing step ids: ${baselineIds || "none"}.`));
175
+ }
176
+ if (removeMatch && hasAddIntent && !missing.length) {
177
+ const stepId = removeMatch[1];
178
+ const still = patched.steps?.find((s) => s.id === stepId);
179
+ if (still) {
180
+ feedback.push(collectModelOutputFeedback(`Combined request: remove step "${stepId}" from .run([...]) and append the new capability step.`));
181
+ }
182
+ }
183
+ if (!removeMatch && hasAddIntent) {
184
+ for (const stepId of baselineStepIds) {
185
+ const dupCount = patched.steps?.filter((s) => s.id === stepId).length ?? 0;
186
+ const baselineCount = baseline?.steps?.filter((s) => s.id === stepId).length ?? 0;
187
+ if (dupCount > baselineCount) {
188
+ feedback.push(collectModelOutputFeedback(`Duplicate step id "${stepId}". Update the existing step with .id("${stepId}"), do not add another.`));
189
+ }
190
+ }
191
+ }
192
+ const workflowLabelMatch = request.match(/(?:change|set|rename)\s+workflow\s+label\s+to\s+(.+?)\.?\s*$/i);
193
+ if (workflowLabelMatch &&
194
+ /label|rename/.test(lower) &&
195
+ !/add|include|append|insert/i.test(lower)) {
196
+ const wanted = workflowLabelMatch[1].trim();
197
+ if (patched.workflow?.label !== wanted) {
198
+ feedback.push(collectModelOutputFeedback(`Set workflow("${wanted}") (first argument) while keeping workflow .id("${patched.workflow?.id ?? baseline?.workflow?.id}").`));
199
+ }
200
+ }
201
+ const explicitStepLabel = request.match(/change\s+(?:the\s+)?(\w+)\s+step\s+label\s+to\s+(.+?)\.?\s*$/i) ??
202
+ request.match(/rename\s+(\w+)\s+label\s+to\s+(.+?)\.?\s*$/i);
203
+ const genericStepLabel = request.match(/(?:change|set)\s+(?:the\s+)?\w+\s+step\s+label\s+to\s+(.+?)\.?\s*$/i);
204
+ if ((explicitStepLabel ?? genericStepLabel) &&
205
+ /label|rename/.test(lower) &&
206
+ !/add|include|append|insert/i.test(lower)) {
207
+ const targetStepId = explicitStepLabel?.[1]?.trim();
208
+ const wanted = (explicitStepLabel?.[2] ?? genericStepLabel?.[1] ?? "").trim();
209
+ if (targetStepId !== undefined) {
210
+ const target = patched.steps?.find((s) => s.id === targetStepId);
211
+ if (!target) {
212
+ feedback.push(collectModelOutputFeedback(`Step id "${targetStepId}" must remain in .run([...]) with .id("${targetStepId}") and label "${wanted}".`));
213
+ }
214
+ else if (target.label !== wanted) {
215
+ feedback.push(collectModelOutputFeedback(`Step .id("${targetStepId}") must have label "${wanted}" (second argument to step()).`));
216
+ }
217
+ }
218
+ }
219
+ if (/\$ref|\bref(erence)?s?\b.*\boutput\b/i.test(lower)) {
220
+ const targetStep = request.match(/ensure\s+(\w+)\s+input/i)?.[1] ??
221
+ request.match(/(\w+)\s+uses\s+\$ref/i)?.[1] ??
222
+ "summarize";
223
+ const sourceStep = request.match(/(?:to|from)\s+(\w+)\s+output/i)?.[1] ?? "echo";
224
+ if (baselineStepIds.includes(targetStep)) {
225
+ const target = patched.steps?.find((s) => s.id === targetStep);
226
+ const dupCount = patched.steps?.filter((s) => s.id === targetStep).length ?? 0;
227
+ if (dupCount > 1) {
228
+ feedback.push(collectModelOutputFeedback(`Step "${targetStep}" already exists. Use ref("${sourceStep}.output") in .with({...}) on .id("${targetStep}"), do not add a duplicate step.`));
229
+ }
230
+ else if (target && !stepHasInputRef(target)) {
231
+ feedback.push(collectModelOutputFeedback(`Step .id("${targetStep}") needs .with({ ... ref("${sourceStep}.output") ... }). Keep all baseline step ids.`));
232
+ }
233
+ }
234
+ else if ((patched.steps?.length ?? 0) < (baseline?.steps?.length ?? 0)) {
235
+ feedback.push(collectModelOutputFeedback("Keep all existing steps in .run([...]) when adding ref() chains."));
236
+ }
237
+ }
238
+ return feedback.length > 0 ? feedback : undefined;
239
+ }
240
+ /**
241
+ * Map common Fluent compile errors to repair hints.
242
+ * @category Harness
243
+ */
244
+ export function collectFluentCompileErrorFeedback(compileMessage) {
245
+ const lower = compileMessage.toLowerCase();
246
+ if (lower.includes("ref is not defined")) {
247
+ return [
248
+ collectModelOutputFeedback('Add ref to the import: import { workflow, step, ref } from "@executioncontrolprotocol/core".'),
249
+ ];
250
+ }
251
+ if (lower.includes("is not a function") ||
252
+ lower.includes("is not defined") ||
253
+ lower.includes("typescript")) {
254
+ return [
255
+ collectModelOutputFeedback("Use only @executioncontrolprotocol/core Fluent API: workflow, step, ref, branch, parallel, loop. " +
256
+ "Never use identifiers named typescript, moveStep, UPDATE STEP, or chained .remove() / .after(). " +
257
+ FLUENT_ANTI_PATTERNS),
258
+ ];
259
+ }
260
+ return undefined;
261
+ }
262
+ //# sourceMappingURL=fluent-patch-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluent-patch-hints.js","sourceRoot":"","sources":["../src/fluent-patch-hints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Per-task Browser Coding harness binding defaults.
3
+ * @category Harness
4
+ */
5
+ export declare const HARNESS_CODING_TRACE: {
6
+ readonly includePrompt: true;
7
+ readonly includeRawOutput: true;
8
+ readonly includeValidation: true;
9
+ };
10
+ export declare const HARNESS_CODING_REPAIR: {
11
+ readonly enabled: true;
12
+ readonly maxAttempts: 3;
13
+ readonly includeValidationErrors: true;
14
+ };
15
+ /** Harness task ids (match {@link EVAL_HARNESS_NAMES} in `@executioncontrolprotocol/evals`). */
16
+ export declare const HARNESS_TASKS: {
17
+ readonly WORKFLOW_AUTHORING: "workflow-authoring";
18
+ readonly INTENT_CLASSIFICATION: "intent-classification";
19
+ readonly WORKFLOW_ASSISTANT: "workflow-assistant";
20
+ };
21
+ export type HarnessTask = (typeof HARNESS_TASKS)[keyof typeof HARNESS_TASKS];
22
+ /** Binding profile for coding eval matrix. */
23
+ export type HarnessCodingProfile = "coding";
24
+ /** Full harness binding config for a task (coding profile). @category Harness */
25
+ export declare function getHarnessCodingConfig(task: HarnessTask, _profile?: HarnessCodingProfile): Record<string, unknown>;
26
+ /** Loose env binding for coding eval matrix environments. @category Harness */
27
+ export declare const HARNESS_CODING_BINDING: {
28
+ readonly harnessProfile: HarnessCodingProfile;
29
+ readonly repair: {
30
+ readonly enabled: true;
31
+ readonly maxAttempts: 3;
32
+ readonly includeValidationErrors: true;
33
+ };
34
+ readonly trace: {
35
+ readonly includePrompt: true;
36
+ readonly includeRawOutput: true;
37
+ readonly includeValidation: true;
38
+ };
39
+ readonly context: {
40
+ readonly includeEnvironmentDescriptor: true;
41
+ readonly includeEncodedDescriptor: false;
42
+ readonly descriptorFormat: "@executioncontrolprotocol/format-json";
43
+ };
44
+ };
45
+ //# sourceMappingURL=harness-coding-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-coding-config.d.ts","sourceRoot":"","sources":["../src/harness-coding-config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAA;AAEV,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAA;AAQV,gGAAgG;AAChG,eAAO,MAAM,aAAa;;;;CAIhB,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;AAE5E,8CAA8C;AAC9C,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAA;AA6C3C,iFAAiF;AACjF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,EACjB,QAAQ,GAAE,oBAA+B,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB;6BACL,oBAAoB;;;;;;;;;;;;;;;;CAIxC,CAAA"}
@@ -0,0 +1,87 @@
1
+ import { HARNESS_OUTPUT_FORMAT_TYPESCRIPT } from "@executioncontrolprotocol/core";
2
+ /**
3
+ * Per-task Browser Coding harness binding defaults.
4
+ * @category Harness
5
+ */
6
+ export const HARNESS_CODING_TRACE = {
7
+ includePrompt: true,
8
+ includeRawOutput: true,
9
+ includeValidation: true,
10
+ };
11
+ export const HARNESS_CODING_REPAIR = {
12
+ enabled: true,
13
+ maxAttempts: 3,
14
+ includeValidationErrors: true,
15
+ };
16
+ const SHARED_CONTEXT = {
17
+ includeEnvironmentDescriptor: true,
18
+ includeEncodedDescriptor: false,
19
+ descriptorFormat: "@executioncontrolprotocol/format-json",
20
+ };
21
+ /** Harness task ids (match {@link EVAL_HARNESS_NAMES} in `@executioncontrolprotocol/evals`). */
22
+ export const HARNESS_TASKS = {
23
+ WORKFLOW_AUTHORING: "workflow-authoring",
24
+ INTENT_CLASSIFICATION: "intent-classification",
25
+ WORKFLOW_ASSISTANT: "workflow-assistant",
26
+ };
27
+ const CODING_INTENT = {
28
+ promptFixture: "intent-classification-coding",
29
+ output: {
30
+ schema: "@executioncontrolprotocol.intent",
31
+ format: HARNESS_OUTPUT_FORMAT_TYPESCRIPT,
32
+ validate: true,
33
+ },
34
+ context: { ...SHARED_CONTEXT },
35
+ repair: HARNESS_CODING_REPAIR,
36
+ trace: HARNESS_CODING_TRACE,
37
+ };
38
+ const CODING_WORKFLOW = {
39
+ output: {
40
+ schema: "@executioncontrolprotocol.workflow",
41
+ format: HARNESS_OUTPUT_FORMAT_TYPESCRIPT,
42
+ validate: true,
43
+ },
44
+ context: {
45
+ ...SHARED_CONTEXT,
46
+ includeRunContext: true,
47
+ runContextFormat: "@executioncontrolprotocol/format-json",
48
+ },
49
+ repair: HARNESS_CODING_REPAIR,
50
+ trace: HARNESS_CODING_TRACE,
51
+ };
52
+ const CODING_ASSISTANT = {
53
+ promptFixture: "workflow-assistant-coding",
54
+ output: {
55
+ schema: "@executioncontrolprotocol.harness.reply",
56
+ format: HARNESS_OUTPUT_FORMAT_TYPESCRIPT,
57
+ validate: true,
58
+ },
59
+ context: {
60
+ ...SHARED_CONTEXT,
61
+ includeRunContext: true,
62
+ runContextFormat: "@executioncontrolprotocol/format-json",
63
+ },
64
+ repair: { ...HARNESS_CODING_REPAIR, safeReplyFallback: true },
65
+ trace: HARNESS_CODING_TRACE,
66
+ };
67
+ /** Full harness binding config for a task (coding profile). @category Harness */
68
+ export function getHarnessCodingConfig(task, _profile = "coding") {
69
+ switch (task) {
70
+ case HARNESS_TASKS.INTENT_CLASSIFICATION:
71
+ return { ...CODING_INTENT };
72
+ case HARNESS_TASKS.WORKFLOW_AUTHORING:
73
+ return { ...CODING_WORKFLOW };
74
+ case HARNESS_TASKS.WORKFLOW_ASSISTANT:
75
+ return { ...CODING_ASSISTANT };
76
+ default:
77
+ return { ...CODING_WORKFLOW };
78
+ }
79
+ }
80
+ /** Loose env binding for coding eval matrix environments. @category Harness */
81
+ export const HARNESS_CODING_BINDING = {
82
+ harnessProfile: "coding",
83
+ repair: HARNESS_CODING_REPAIR,
84
+ trace: HARNESS_CODING_TRACE,
85
+ context: SHARED_CONTEXT,
86
+ };
87
+ //# sourceMappingURL=harness-coding-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-coding-config.js","sourceRoot":"","sources":["../src/harness-coding-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAA;AAEjF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;CACf,CAAA;AAEV,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,uBAAuB,EAAE,IAAI;CACrB,CAAA;AAEV,MAAM,cAAc,GAAG;IACrB,4BAA4B,EAAE,IAAI;IAClC,wBAAwB,EAAE,KAAK;IAC/B,gBAAgB,EAAE,uCAAuC;CACjD,CAAA;AAEV,gGAAgG;AAChG,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;CAChC,CAAA;AAOV,MAAM,aAAa,GAAG;IACpB,aAAa,EAAE,8BAA8B;IAC7C,MAAM,EAAE;QACN,MAAM,EAAE,kCAAkC;QAC1C,MAAM,EAAE,gCAAgC;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE;IAC9B,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE,oBAAoB;CACnB,CAAA;AAEV,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE;QACN,MAAM,EAAE,oCAAoC;QAC5C,MAAM,EAAE,gCAAgC;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,OAAO,EAAE;QACP,GAAG,cAAc;QACjB,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,uCAAuC;KAC1D;IACD,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE,oBAAoB;CACnB,CAAA;AAEV,MAAM,gBAAgB,GAAG;IACvB,aAAa,EAAE,2BAA2B;IAC1C,MAAM,EAAE;QACN,MAAM,EAAE,yCAAyC;QACjD,MAAM,EAAE,gCAAgC;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,OAAO,EAAE;QACP,GAAG,cAAc;QACjB,iBAAiB,EAAE,IAAI;QACvB,gBAAgB,EAAE,uCAAuC;KAC1D;IACD,MAAM,EAAE,EAAE,GAAG,qBAAqB,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC7D,KAAK,EAAE,oBAAoB;CACnB,CAAA;AAEV,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CACpC,IAAiB,EACjB,WAAiC,QAAQ;IAEzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,qBAAqB;YACtC,OAAO,EAAE,GAAG,aAAa,EAAE,CAAA;QAC7B,KAAK,aAAa,CAAC,kBAAkB;YACnC,OAAO,EAAE,GAAG,eAAe,EAAE,CAAA;QAC/B,KAAK,aAAa,CAAC,kBAAkB;YACnC,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAA;QAChC;YACE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAA;IACjC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,cAAc,EAAE,QAAgC;IAChD,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,cAAc;CACf,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { type HarnessCapabilityId, type HarnessId } from "@executioncontrolprotocol/types";
2
+ /** Browser Coding harness id (stronger local coding models; eval matrix). @category Harness */
3
+ export declare const BROWSER_CODING_HARNESS_ID: HarnessId;
4
+ /** Evaluate capability for all Browser Coding harness tasks. @category Harness */
5
+ export declare const BROWSER_CODING_HARNESS_CAPABILITY: HarnessCapabilityId;
6
+ //# sourceMappingURL=harness-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-ids.d.ts","sourceRoot":"","sources":["../src/harness-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE/G,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB,EAAyD,SAAS,CAAA;AAExG,kFAAkF;AAClF,eAAO,MAAM,iCAAiC,EAAE,mBACA,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { harnessCapabilityId } from "@executioncontrolprotocol/types";
2
+ /** Browser Coding harness id (stronger local coding models; eval matrix). @category Harness */
3
+ export const BROWSER_CODING_HARNESS_ID = "@executioncontrolprotocol/harness-browser-coding";
4
+ /** Evaluate capability for all Browser Coding harness tasks. @category Harness */
5
+ export const BROWSER_CODING_HARNESS_CAPABILITY = harnessCapabilityId(BROWSER_CODING_HARNESS_ID);
6
+ //# sourceMappingURL=harness-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-ids.js","sourceRoot":"","sources":["../src/harness-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA4C,MAAM,iCAAiC,CAAA;AAE/G,+FAA+F;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAG,kDAA+D,CAAA;AAExG,kFAAkF;AAClF,MAAM,CAAC,MAAM,iCAAiC,GAC5C,mBAAmB,CAAC,yBAAyB,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { BROWSER_CODING_HARNESS_ID, BROWSER_CODING_HARNESS_CAPABILITY, } from "./harness-ids.js";
2
+ export { HARNESS_TASKS, HARNESS_CODING_BINDING, HARNESS_CODING_REPAIR, HARNESS_CODING_TRACE, getHarnessCodingConfig, type HarnessTask, type HarnessCodingProfile, } from "./harness-coding-config.js";
3
+ export { registerBrowserCodingHarnesses, resetBrowserCodingHarnessRegistrationForTests, } from "./register.js";
4
+ export type { BrowserCodingHarnessInput } from "./browser-coding-harness.js";
5
+ export { CODING_PROMPT_FIXTURE_IDS, buildCodingRepairHint, buildCodingSystemPrompt, loadCodingHarnessPromptFixture, type CodingPromptFixtureId, } from "./prompts/index.js";
6
+ //# sourceMappingURL=index.d.ts.map