@workbench-ai/workbench-protocol 0.0.41 → 0.0.43

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.
@@ -1,11 +1,13 @@
1
1
  export interface WorkbenchAdapterManifest {
2
2
  id: string;
3
3
  protocol: "workbench.adapter.v1";
4
+ capabilities?: WorkbenchAdapterCapability[];
4
5
  setup: string[];
5
6
  command: string;
6
7
  auth?: WorkbenchAdapterAuthManifest;
7
8
  refs?: string[];
8
9
  }
10
+ export type WorkbenchAdapterCapability = "task-source" | "runner" | "scorer" | "optimizer";
9
11
  export interface WorkbenchAdapterAuthManifest {
10
12
  methods?: Record<string, WorkbenchAdapterAuthMethodManifest>;
11
13
  slots?: Record<string, {
@@ -44,7 +46,8 @@ export declare function collectWorkbenchAdapterAuthRequirements(roots: readonly
44
46
  export declare function withDefaultWorkbenchAdapterAuthProfiles<T extends {
45
47
  improve?: WorkbenchAdapterInvocationLike;
46
48
  run: WorkbenchAdapterInvocationLike;
47
- grade: WorkbenchAdapterInvocationLike;
49
+ score?: WorkbenchAdapterInvocationLike;
50
+ grade?: WorkbenchAdapterInvocationLike;
48
51
  }>(spec: T, manifests: readonly WorkbenchAdapterManifest[] | Map<string, WorkbenchAdapterManifest>): T;
49
52
  export declare function withDefaultWorkbenchAdapterAuth<T extends WorkbenchAdapterInvocationLike>(invocation: T, manifests: readonly WorkbenchAdapterManifest[] | Map<string, WorkbenchAdapterManifest>): T;
50
53
  //# sourceMappingURL=adapter-manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-manifest.d.ts","sourceRoot":"","sources":["../src/adapter-manifest.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,sBAAsB,CAAC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,4BAA4B,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;KAC9D,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kCAAkC;IACjD,GAAG,CAAC,EAAE,+BAA+B,EAAE,CAAC;IACxC,KAAK,CAAC,EAAE,gCAAgC,EAAE,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,wBAAwB,GACjC,wBAAwB,CAO1B;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,KAAK,SAA2B,GAC/B,wBAAwB,CA6B1B;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAET;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,SAAS,8BAA8B,EAAE,EAChD,SAAS,EAAE,SAAS,wBAAwB,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,GACrF,8BAA8B,EAAE,CAUlC;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,SAAS,8BAA8B,EAAE,EAChD,SAAS,EAAE,SAAS,wBAAwB,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,GACrF,+BAA+B,EAAE,CAcnC;AAED,wBAAgB,uCAAuC,CAAC,CAAC,SAAS;IAChE,OAAO,CAAC,EAAE,8BAA8B,CAAC;IACzC,GAAG,EAAE,8BAA8B,CAAC;IACpC,KAAK,EAAE,8BAA8B,CAAC;CACvC,EACC,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,SAAS,wBAAwB,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,GACrF,CAAC,CASH;AAED,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,8BAA8B,EACtF,UAAU,EAAE,CAAC,EACb,SAAS,EAAE,SAAS,wBAAwB,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,GACrF,CAAC,CAKH"}
1
+ {"version":3,"file":"adapter-manifest.d.ts","sourceRoot":"","sources":["../src/adapter-manifest.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export function adapterCommandName(adapterId) {
5
5
  export function cloneWorkbenchAdapterManifest(manifest) {
6
6
  return {
7
7
  ...manifest,
8
+ ...(manifest.capabilities ? { capabilities: [...manifest.capabilities] } : {}),
8
9
  setup: [...manifest.setup],
9
10
  ...(manifest.auth ? { auth: cloneJson(manifest.auth) } : {}),
10
11
  ...(manifest.refs ? { refs: [...manifest.refs] } : {}),
@@ -16,7 +17,7 @@ export function parseWorkbenchAdapterManifest(source, label = "workbench.adapter
16
17
  throw new Error(`${label} must be a YAML object.`);
17
18
  }
18
19
  const record = parsed;
19
- rejectUnknownManifestKeys(record, label, ["id", "protocol", "setup", "command", "auth", "refs"]);
20
+ rejectUnknownManifestKeys(record, label, ["id", "protocol", "capabilities", "setup", "command", "auth", "refs"]);
20
21
  const id = readAdapterId(record.id, `${label}.id`);
21
22
  if (record.protocol !== "workbench.adapter.v1") {
22
23
  throw new Error(`${label}.protocol must be workbench.adapter.v1.`);
@@ -27,6 +28,9 @@ export function parseWorkbenchAdapterManifest(source, label = "workbench.adapter
27
28
  const setup = record.setup === undefined
28
29
  ? []
29
30
  : readStringArray(record.setup, `${label}.setup`);
31
+ const capabilities = record.capabilities === undefined
32
+ ? undefined
33
+ : readAdapterCapabilities(record.capabilities, `${label}.capabilities`);
30
34
  const refs = record.refs === undefined
31
35
  ? undefined
32
36
  : readAdapterRefs(record.refs, `${label}.refs`);
@@ -34,12 +38,22 @@ export function parseWorkbenchAdapterManifest(source, label = "workbench.adapter
34
38
  return {
35
39
  id,
36
40
  protocol: "workbench.adapter.v1",
41
+ ...(capabilities ? { capabilities } : {}),
37
42
  setup,
38
43
  command,
39
44
  ...(auth ? { auth } : {}),
40
45
  ...(refs ? { refs } : {}),
41
46
  };
42
47
  }
48
+ function readAdapterCapabilities(value, label) {
49
+ const allowed = new Set(["task-source", "runner", "scorer", "optimizer"]);
50
+ return readStringArray(value, label).map((entry, index) => {
51
+ if (!allowed.has(entry)) {
52
+ throw new Error(`${label}[${index}] must be task-source, runner, scorer, or optimizer.`);
53
+ }
54
+ return entry;
55
+ });
56
+ }
43
57
  export function workbenchAdapterManifestRequiresAuth(manifest) {
44
58
  return defaultWorkbenchAdapterAuthForManifest(manifest) !== undefined;
45
59
  }
@@ -76,7 +90,12 @@ export function withDefaultWorkbenchAdapterAuthProfiles(spec, manifests) {
76
90
  clone.improve = withDefaultWorkbenchAdapterAuth(clone.improve, manifestById);
77
91
  }
78
92
  clone.run = withDefaultWorkbenchAdapterAuth(clone.run, manifestById);
79
- clone.grade = withDefaultWorkbenchAdapterAuth(clone.grade, manifestById);
93
+ if (clone.score) {
94
+ clone.score = withDefaultWorkbenchAdapterAuth(clone.score, manifestById);
95
+ }
96
+ if (clone.grade) {
97
+ clone.grade = withDefaultWorkbenchAdapterAuth(clone.grade, manifestById);
98
+ }
80
99
  return clone;
81
100
  }
82
101
  export function withDefaultWorkbenchAdapterAuth(invocation, manifests) {
@@ -42,6 +42,12 @@ export interface WorkbenchAdapterCommandRequest {
42
42
  task?: string;
43
43
  runnerOutput?: string;
44
44
  traces?: string;
45
+ cwd?: string;
46
+ subject?: string;
47
+ tests?: string;
48
+ logs?: string;
49
+ artifacts?: string;
50
+ scorecard?: string;
45
51
  };
46
52
  }
47
53
  export interface WorkbenchAdapterResultMetadata {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-protocol.d.ts","sourceRoot":"","sources":["../src/adapter-protocol.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EACZ,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,SAAS,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACxC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;IACF,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,8BAA8B;IAC7C,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,kCAAkC,CACtD,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,8BAA8B,CAAC,CAOzC;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,8BAA8B,CA8ChC;AAED,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAsB,mCAAmC,CACvD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,kCAAkC,CACtD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,8BAA8B,CAAC,CAkBzC"}
1
+ {"version":3,"file":"adapter-protocol.d.ts","sourceRoot":"","sources":["../src/adapter-protocol.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EACZ,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,SAAS,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACxC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;IACF,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,8BAA8B;IAC7C,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,kCAAkC,CACtD,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,8BAA8B,CAAC,CAOzC;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,8BAA8B,CAoDhC;AAED,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAsB,mCAAmC,CACvD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,kCAAkC,CACtD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,8BAA8B,CAAC,CAkBzC"}
@@ -17,7 +17,7 @@ export function normalizeWorkbenchAdapterCommandRequest(value) {
17
17
  const adapter = requiredJsonRecord(record.adapter, "adapter request adapter");
18
18
  const paths = requiredJsonRecord(record.paths, "adapter request paths");
19
19
  const purpose = requiredPurpose(execution.purpose, "adapter request execution.purpose");
20
- const role = executionPurposeRole(purpose);
20
+ const role = normalizeExecutionRole(execution.role, purpose);
21
21
  const use = requiredString(adapter.use, "adapter request adapter.use");
22
22
  return {
23
23
  protocol: "workbench.adapter.v1",
@@ -52,6 +52,12 @@ export function normalizeWorkbenchAdapterCommandRequest(value) {
52
52
  ...(typeof paths.task === "string" ? { task: paths.task } : {}),
53
53
  ...(typeof paths.runnerOutput === "string" ? { runnerOutput: paths.runnerOutput } : {}),
54
54
  ...(typeof paths.traces === "string" ? { traces: paths.traces } : {}),
55
+ ...(typeof paths.cwd === "string" ? { cwd: paths.cwd } : {}),
56
+ ...(typeof paths.subject === "string" ? { subject: paths.subject } : {}),
57
+ ...(typeof paths.tests === "string" ? { tests: paths.tests } : {}),
58
+ ...(typeof paths.logs === "string" ? { logs: paths.logs } : {}),
59
+ ...(typeof paths.artifacts === "string" ? { artifacts: paths.artifacts } : {}),
60
+ ...(typeof paths.scorecard === "string" ? { scorecard: paths.scorecard } : {}),
55
61
  },
56
62
  };
57
63
  }
@@ -130,10 +136,10 @@ function requiredJsonRecord(value, label) {
130
136
  return value;
131
137
  }
132
138
  function requiredPurpose(value, label) {
133
- if (value === "improve" || value === "run-task" || value === "grade-task") {
139
+ if (value === "improve" || value === "trial" || value === "run-task" || value === "grade-task") {
134
140
  return value;
135
141
  }
136
- throw new Error(`${label} must be improve, run-task, or grade-task.`);
142
+ throw new Error(`${label} must be improve, trial, run-task, or grade-task.`);
137
143
  }
138
144
  function requiredString(value, label) {
139
145
  if (typeof value !== "string" || value.length === 0) {
@@ -148,8 +154,17 @@ function executionPurposeRole(purpose) {
148
154
  if (purpose === "run-task") {
149
155
  return "runner";
150
156
  }
157
+ if (purpose === "trial") {
158
+ return "runner";
159
+ }
151
160
  return "grader";
152
161
  }
162
+ function normalizeExecutionRole(value, purpose) {
163
+ if (value === "optimizer" || value === "runner" || value === "grader") {
164
+ return value;
165
+ }
166
+ return executionPurposeRole(purpose);
167
+ }
153
168
  function jsonRecord(value) {
154
169
  return value && typeof value === "object" && !Array.isArray(value)
155
170
  ? value
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workbench-ai/workbench-protocol",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "yaml": "^2.8.2",
23
- "@workbench-ai/workbench-contract": "0.0.41"
23
+ "@workbench-ai/workbench-contract": "0.0.43"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/node": "^24.3.1",