@workbench-ai/workbench-built-in-adapters 0.0.112 → 0.0.114

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,6 +1,6 @@
1
1
  import type { SurfaceSnapshotFile, UsageSummary } from "@workbench-ai/workbench-contract";
2
2
  import { type JsonValue } from "@workbench-ai/agent-driver";
3
- import type { WorkbenchExecutionEventPublisher } from "@workbench-ai/workbench-core";
3
+ import { type WorkbenchExecutionEventPublisher } from "@workbench-ai/workbench-core";
4
4
  export interface AgentProviderSpec {
5
5
  use: string;
6
6
  model?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-turn.d.ts","sourceRoot":"","sources":["../src/agent-turn.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAQL,KAAK,SAAS,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,gCAAgC,EACjC,MAAM,8BAA8B,CAAC;AAiBtC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,gCAAgC,CAAC;CACnD;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AA4BnH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,wBAAwB,CAAC,EACnF,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAenC;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAwFnC;AAkHD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB,CAQA"}
1
+ {"version":3,"file":"agent-turn.d.ts","sourceRoot":"","sources":["../src/agent-turn.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAQL,KAAK,SAAS,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,8BAA8B,CAAC;AAiBtC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,gCAAgC,CAAC;CACnD;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AA4BnH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,wBAAwB,CAAC,EACnF,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAmBnC;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAwFnC;AAkHD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB,CAQA"}
@@ -4,6 +4,7 @@ import { promises as fs } from "node:fs";
4
4
  import path from "node:path";
5
5
  import { promisify } from "node:util";
6
6
  import { DEFAULT_HARNESS_CANCEL, DEFAULT_HARNESS_RETRY, resolveRuntimeHome, } from "@workbench-ai/agent-driver";
7
+ import { workbenchProviderAuthSetupCommand, } from "@workbench-ai/workbench-core";
7
8
  import { importWorkbenchRuntime } from "./runtime.js";
8
9
  const DEFAULT_AGENT_TURN_MAX_ATTEMPTS = 3;
9
10
  const DEFAULT_AGENT_TURN_RETRY_BASE_MS = 5_000;
@@ -44,6 +45,10 @@ export async function executeWorkbenchAgentTurn(executor, request) {
44
45
  }
45
46
  catch (error) {
46
47
  lastError = error;
48
+ const authError = providerAuthRequiredError(request.provider?.use, error);
49
+ if (authError) {
50
+ throw authError;
51
+ }
47
52
  if (attempt >= maxAttempts || !isTransientAgentTurnError(error)) {
48
53
  throw error;
49
54
  }
@@ -355,6 +360,52 @@ function isTransientAgentTurnError(error) {
355
360
  }
356
361
  return /\b(fetch failed|error sending request|stream disconnected before completion|turn stalled after \d+ms|ECONNRESET|ETIMEDOUT|EAI_AGAIN|ENETUNREACH|ECONNREFUSED|socket hang up|network error|UND_ERR_|signal SIGTERM)/iu.test(message);
357
362
  }
363
+ function providerAuthRequiredError(providerName, error) {
364
+ if (!providerName) {
365
+ return null;
366
+ }
367
+ const message = error instanceof Error
368
+ ? `${error.message}\n${error.stack ?? ""}\n${String(error.cause ?? "")}`
369
+ : String(error);
370
+ if (!providerAuthErrorPatterns(providerName).some((pattern) => pattern.test(message))) {
371
+ return null;
372
+ }
373
+ return new Error(`ADAPTER_AUTH_REQUIRED: ${providerName} disconnected. Next: ${workbenchProviderAuthSetupCommand(providerName)}.`);
374
+ }
375
+ function providerAuthErrorPatterns(providerName) {
376
+ if (providerName === "claude") {
377
+ return [
378
+ /not logged in/iu,
379
+ /login required/iu,
380
+ /authentication required/iu,
381
+ /failed to authenticate/iu,
382
+ /authentication_error/iu,
383
+ /api error:\s*401/iu,
384
+ /invalid.*session/iu,
385
+ /invalid bearer token/iu,
386
+ /session.*expired/iu,
387
+ /oauth.*expired/iu,
388
+ /unauthorized/iu,
389
+ /claude_code_oauth_token/iu,
390
+ ];
391
+ }
392
+ if (providerName === "codex") {
393
+ return [
394
+ /not logged in/iu,
395
+ /login required/iu,
396
+ /authentication required/iu,
397
+ /failed to authenticate/iu,
398
+ /authentication_error/iu,
399
+ /api error:\s*401/iu,
400
+ /invalid.*session/iu,
401
+ /invalid bearer token/iu,
402
+ /session.*expired/iu,
403
+ /oauth.*expired/iu,
404
+ /unauthorized/iu,
405
+ ];
406
+ }
407
+ return [];
408
+ }
358
409
  function isNativeCaCertificateFailure(message) {
359
410
  return /\bno native root CA certificates found\b|install ca-certificates/iu.test(message);
360
411
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workbench-ai/workbench-built-in-adapters",
3
- "version": "0.0.112",
3
+ "version": "0.0.114",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/workbench-ai/workbench.git",
@@ -32,12 +32,12 @@
32
32
  ],
33
33
  "dependencies": {
34
34
  "yaml": "^2.8.2",
35
+ "@workbench-ai/workbench-contract": "0.0.114",
35
36
  "@workbench-ai/agent-driver-anthropic-claude-code": "0.0.49",
36
- "@workbench-ai/workbench-protocol": "0.0.112",
37
- "@workbench-ai/workbench-contract": "0.0.112",
38
- "@workbench-ai/workbench-core": "0.0.112",
37
+ "@workbench-ai/agent-driver": "0.0.49",
38
+ "@workbench-ai/workbench-core": "0.0.114",
39
39
  "@workbench-ai/agent-driver-openai-codex": "0.0.49",
40
- "@workbench-ai/agent-driver": "0.0.49"
40
+ "@workbench-ai/workbench-protocol": "0.0.114"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^24.3.1",