@workbench-ai/workbench-core 0.0.65 → 0.0.67

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.
@@ -239,6 +239,3 @@ function asRecord(value) {
239
239
  ? value
240
240
  : {};
241
241
  }
242
- function normalizeRelativePath(value) {
243
- return value.trim().replace(/\\/gu, "/").replace(/^\/+/u, "").replace(/\/+$/u, "");
244
- }
@@ -1 +1 @@
1
- {"version":3,"file":"execution-outputs.d.ts","sourceRoot":"","sources":["../src/execution-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEJ,uBAAuB,EAEvB,sBAAsB,EACtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAI1C,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,sBAAsB,EACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC7B,gCAAgC,CAoClC;AAED,wBAAgB,wCAAwC,CAAC,SAAS,EAAE,sBAAsB,GAAG,MAAM,EAAE,CAuFpG;AAuCD,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAKzF"}
1
+ {"version":3,"file":"execution-outputs.d.ts","sourceRoot":"","sources":["../src/execution-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEJ,uBAAuB,EAEvB,sBAAsB,EACtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAK1C,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,sBAAsB,EACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC7B,gCAAgC,CAoClC;AAED,wBAAgB,wCAAwC,CAAC,SAAS,EAAE,sBAAsB,GAAG,MAAM,EAAE,CAuFpG;AAuCD,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAKzF"}
@@ -1,4 +1,5 @@
1
1
  import { normalizeUsageSummary } from "./execution-usage.js";
2
+ import { isJsonPayload } from "./runtime-utils.js";
2
3
  export function validateWorkbenchExecutionOutputPayloads(execution, payloads) {
3
4
  const issues = [];
4
5
  const declaredOutputs = new Map(execution.outputs.map((output) => [output.name, output]));
@@ -184,7 +185,7 @@ function normalizeCandidatePatch(value, execution, contract, issues) {
184
185
  files,
185
186
  fileChanges,
186
187
  ...(typeof record?.summary === "string" ? { summary: record.summary } : {}),
187
- ...(isJson(record?.feedback) ? { feedback: record.feedback } : {}),
188
+ ...(isJsonPayload(record?.feedback) ? { feedback: record.feedback } : {}),
188
189
  };
189
190
  }
190
191
  function normalizeResult(value, execution, contract, issues) {
@@ -198,7 +199,7 @@ function normalizeResult(value, execution, contract, issues) {
198
199
  ...(record?.cases !== undefined ? { cases: normalizeCaseResults(record.cases, `${contract.name}.cases`, issues) } : {}),
199
200
  ...(usage ? { usage } : {}),
200
201
  ...(typeof record?.summary === "string" ? { summary: record.summary } : {}),
201
- ...(isJson(record?.feedback) ? { feedback: record.feedback } : {}),
202
+ ...(isJsonPayload(record?.feedback) ? { feedback: record.feedback } : {}),
202
203
  };
203
204
  }
204
205
  function normalizeSnapshotFiles(value, label, issues) {
@@ -260,10 +261,10 @@ function normalizeCaseResults(value, label, issues) {
260
261
  ...(status ? { status } : {}),
261
262
  ...(record.durationMs !== undefined ? { durationMs: readFiniteNumber(record.durationMs, `${itemLabel}.durationMs`, issues) ?? 0 } : {}),
262
263
  metrics: normalizeNumberRecord(record.metrics ?? {}, `${itemLabel}.metrics`, issues),
263
- ...(isJson(record.source) && record.source && typeof record.source === "object" && !Array.isArray(record.source)
264
+ ...(isJsonPayload(record.source) && record.source && typeof record.source === "object" && !Array.isArray(record.source)
264
265
  ? { source: record.source }
265
266
  : {}),
266
- ...(isJson(record.feedback) ? { feedback: record.feedback } : {}),
267
+ ...(isJsonPayload(record.feedback) ? { feedback: record.feedback } : {}),
267
268
  ...(criteria && criteria.length > 0 ? { criteria } : {}),
268
269
  }];
269
270
  });
@@ -386,15 +387,3 @@ function isSafeRelativePath(filePath) {
386
387
  function normalizeRelativePath(filePath) {
387
388
  return filePath.replace(/\\/gu, "/").replace(/^\.\/+/u, "").replace(/\/+/gu, "/");
388
389
  }
389
- function isJson(value) {
390
- if (value === null || typeof value === "boolean" || typeof value === "number" || typeof value === "string") {
391
- return true;
392
- }
393
- if (Array.isArray(value)) {
394
- return value.every(isJson);
395
- }
396
- if (value && typeof value === "object") {
397
- return Object.values(value).every(isJson);
398
- }
399
- return false;
400
- }
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { composeRuntimeDockerfileWithAdapterInstallers, type WorkbenchRuntimeAda
9
9
  export { adapterCommandName, cloneWorkbenchAdapterManifest, collectWorkbenchAdapterAuthRequirements, collectWorkbenchAdapterInvocations, parseWorkbenchAdapterManifest, workbenchAdapterManifestRequiresAuth, workbenchAdapterManifestSupportsOperation, workbenchAdapterOperationCommand, workbenchAdapterOperationExecutor, withDefaultWorkbenchAdapterAuth, withDefaultWorkbenchAdapterAuthProfiles, type WorkbenchPrimitiveAdapterOperation, type WorkbenchAdapterOperation, type WorkbenchAdapterOperationExecutor, type WorkbenchAdapterOperationManifest, type WorkbenchAdapterSlotManifest, type WorkbenchAdapterAuthRequirement, type WorkbenchAdapterAuthManifest, type WorkbenchAdapterAuthMethodManifest, type WorkbenchAdapterInvocationLike, type WorkbenchAdapterManifest, } from "@workbench-ai/workbench-protocol";
10
10
  export { adapterAuthEnv, createWorkbenchAdapterAuthBundle, defaultWorkbenchAdapterAuthStoreRoot, localWorkbenchAdapterAuthStore, normalizeWorkbenchAdapterAuthTarget, parseWorkbenchAdapterAuthTarget, sanitizeWorkbenchAdapterAuthBundle, type WorkbenchAdapterAuthBundle, type WorkbenchAdapterAuthEnvVar, type WorkbenchAdapterAuthFile, type WorkbenchAdapterAuthStatus, type WorkbenchAdapterAuthStatusRecord, type WorkbenchAdapterAuthStore, type WorkbenchAdapterAuthTarget, } from "./adapter-auth.ts";
11
11
  export type { WorkbenchExecutionRuntimeInput, WorkbenchWorkloadStepCommand, } from "./execution-runtime-types.ts";
12
- export { asRuntimeRecord, importNodeModule, nodeBuiltin, normalizeWorkbenchWorkerId, normalizeRuntimeRegistry, quoteShellArg, resolveDockerRuntimeImageRef, resolveWorkbenchWorkerId, } from "./runtime-utils.ts";
12
+ export { asRuntimeRecord, importNodeModule, jsonRecord, nodeBuiltin, normalizeRelativePath, normalizeWorkbenchWorkerId, normalizeRuntimeRegistry, quoteShellArg, readSurfaceFiles, resolveDockerRuntimeImageRef, resolveWorkbenchWorkerId, writeSurfaceFiles, } from "./runtime-utils.ts";
13
13
  export { assignUsageRole, extractExecutionUsageFromTrace, mergeUsageSummaries, } from "./execution-usage.ts";
14
14
  export { createWorkbenchProgressStdoutParser, publishWorkbenchProgressStdoutEnvelope, } from "./execution-events.ts";
15
15
  export { persistWorkbenchAdapterAuthUpdates, } from "./adapter-auth-updates.ts";
@@ -17,7 +17,7 @@ export { resolveSandboxTemplateImage, } from "./sandbox-backends/template-images
17
17
  export { readOutputTraceFiles, workbenchTraceExecutionDirectory, workbenchTraceRunDirectory, workbenchTraceRunDirectoryName, } from "./trace-files.ts";
18
18
  export { assertWorkbenchAdapterOperationSupport, assertWorkbenchAdapterOperationResultOk, collectWorkbenchAdapterOperationIssues, collectWorkbenchAdapterOperationRequirements, ensureWorkbenchAdapterOutputDir, WORKBENCH_ADAPTER_RESULT_FILE, normalizeWorkbenchAdapterOperationRequest, normalizeWorkbenchAdapterOperationResult, readWorkbenchAdapterOperationRequest, readWorkbenchAdapterOperationResult, workbenchAdapterOperationResultPath, writeWorkbenchAdapterOperationResult, type WorkbenchAdapterOperationRequest, type WorkbenchAdapterOperationResult, type WorkbenchAdapterOperationResultValue, type WorkbenchAdapterOperationRequirement, type WorkbenchEngineResolveResult, type WorkbenchEngineCaseSpec, } from "@workbench-ai/workbench-protocol";
19
19
  export { applyWorkbenchCandidatePatch, type ApplyWorkbenchCandidatePatchInput, } from "./candidate-patch.ts";
20
- export { createWorkbenchSandboxFileStore, createSandboxAdapterRequest, executionResultFromCompletedSandboxJob, materializeWorkbenchSandboxInput, readWorkbenchExecutionSpec, sanitizeWorkbenchExecutionJobForSandbox, } from "./sandbox-inputs.ts";
20
+ export { createWorkbenchSandboxFileStore, createSandboxAdapterRequest, executionResultFromCompletedSandboxJob, isSurfaceSnapshotFile, materializeWorkbenchSandboxInput, readWorkbenchExecutionSpec, sanitizeWorkbenchExecutionJobForSandbox, } from "./sandbox-inputs.ts";
21
21
  export { compileWorkbenchExecutionGraph, type CompileExecutionGraphInput, type WorkbenchExecutionGraph, type WorkbenchExecutionGraphNode, } from "./execution-graph.ts";
22
22
  export { createBaselineCandidateExecution, createBaselineCandidateJob, createWorkbenchExecutionJob, expectedWorkbenchRunJobCount, engineCaseForCase, engineCaseIds, attemptJobCountForRunSpec, workbenchExecutionJobPurpose, MAX_WORKBENCH_RUN_BUDGET, planWorkbenchExecutionJobsForPurpose, validateWorkbenchRunEnvelope, workbenchExecutionJobId, type WorkbenchRunWorkflow, } from "./execution-jobs.ts";
23
23
  export { addCapacity, capacityFits, runWorkbenchExecutionDag, subtractCapacity, workbenchJobDependencies, workbenchJobHostCost, workbenchJobResources, type WorkbenchExecutionDagCapacity, type WorkbenchExecutionDagResult, type WorkbenchExecutionDagRunInput, } from "./execution-scheduler.ts";
@@ -25,7 +25,7 @@ export { assertWorkbenchExecutionIsolation, collectWorkbenchExecutionIsolationIs
25
25
  export { collectSandboxAllocationScopeIssues, collectExecutionCapabilityScopeIssues, collectSandboxHandleScopeIssues, createWorkbenchSandboxAllocation, createWorkbenchSandboxExecutionMetadata, createWorkbenchExecutionCapability, executeValidatedSandboxExecution, type SandboxExecutionFileStore, type SandboxExecutionOptions, type SandboxBackendCapabilities, type SandboxBackendDescriptor, type SandboxCreateRequest, type SandboxEnvironmentImage, type SandboxExecRequest, type SandboxHandle, type SandboxMaterializedInput, type SandboxPlane, type ValidatedSandboxExecutionResult, } from "./sandbox-plane.ts";
26
26
  export { buildCandidateCaseExecutionRefs, buildWorkbenchExecutionEvidence, isWorkbenchExecutionActive, readWorkbenchExecutionId, readWorkbenchExecutionMetadataNumber, readWorkbenchExecutionMetadataString, readWorkbenchExecutionPurpose, resolveWorkbenchJobGroupStatus, } from "./execution-evidence.ts";
27
27
  export { buildCandidateLineage, buildWorkbenchEvaluationComparison, buildWorkbenchEvaluationMetricDescriptors, formatEvaluationConfigurationLabel, isCompleteEvaluationSummary, readEvaluationScore, type WorkbenchCandidateEvaluationRollup, type WorkbenchEvaluationComparison, type WorkbenchEvaluationComparisonRow, type WorkbenchEvaluationMetricDescriptor, } from "@workbench-ai/workbench-contract";
28
- export { WorkbenchInspectionError, createWorkbenchInspection, type WorkbenchFailureDetail, type WorkbenchFailureDiagnosis, type WorkbenchFailureKind, type WorkbenchInspection, type WorkbenchInspectionBackend, type WorkbenchInspectionCandidateInput, type WorkbenchInspectionCandidatePreviewInput, type WorkbenchInspectionCaseReviewInput, type WorkbenchInspectionErrorOptions, type WorkbenchInspectionEvaluationInput, type WorkbenchInspectionExecutionInput, type WorkbenchInspectionExecutionPreviewInput, type WorkbenchInspectionFileListInput, type WorkbenchInspectionFilePreviewInput, type WorkbenchInspectionPreviewInput, type WorkbenchInspectionRunDetail, type WorkbenchInspectionRunInput, } from "./inspection.ts";
28
+ export { WorkbenchInspectionError, createWorkbenchInspection, pickDefaultCandidateFilePath, selectedFilePath, type WorkbenchFailureDetail, type WorkbenchFailureDiagnosis, type WorkbenchFailureKind, type WorkbenchInspection, type WorkbenchInspectionBackend, type WorkbenchInspectionCandidateFileSurfaceInput, type WorkbenchInspectionCandidateInput, type WorkbenchInspectionCaseReviewInput, type WorkbenchInspectionErrorOptions, type WorkbenchInspectionEvaluationInput, type WorkbenchInspectionExecutionFileSurfaceInput, type WorkbenchInspectionExecutionInput, type WorkbenchInspectionFileListInput, type WorkbenchInspectionFileSurface, type WorkbenchInspectionFileSurfaceInput, type WorkbenchInspectionRunDetail, type WorkbenchInspectionRunInput, } from "./inspection.ts";
29
29
  export { buildWorkbenchTraceSessionsFromFiles, combineWorkbenchTraceSessions, finalizeWorkbenchExecutionTraceForJob, mergeWorkbenchExecutionTracesByJob, readWorkbenchExecutionTraceFiles, traceSessionLabel, type WorkbenchTraceMergeJob, } from "./execution-traces.ts";
30
30
  export { DOCKER_SANDBOX_BACKEND, assertSandboxHostHealthForBackend, createDockerSandboxBackendDescriptor, createDockerSandboxPlane, resolveWorkbenchSandboxBackendName, sandboxBackendAdmissionForResources, sandboxHostHealthExpectationForBackend, type SandboxBackendAdmission, type SandboxBackendHostCost, type SandboxBackendRequestedResources, type SandboxHostHealthExpectation, type WorkbenchSandboxBackendName, } from "./sandbox-backends/index.ts";
31
31
  export type { WorkbenchExecutionEventPublisher, WorkbenchExecutionProgressTarget, } from "./execution-events.ts";
@@ -62,10 +62,10 @@ export declare function workbenchProjectSourceFingerprint(input: Omit<WorkbenchP
62
62
  export declare function workbenchRuntimeBundleFingerprint(bundle: WorkbenchRuntimeBundle): string;
63
63
  export declare function workbenchSurfaceFilesEqualForExchange(left: readonly SurfaceSnapshotFile[], right: readonly SurfaceSnapshotFile[]): boolean;
64
64
  export declare function workbenchRuntimeBundleStats(bundle: WorkbenchRuntimeBundle): WorkbenchRuntimeBundleStats;
65
- export declare function workbenchRuntimeExplicitActiveId(args: {
65
+ export declare function workbenchRuntimeProjectedActiveId(args: {
66
66
  candidates: readonly CandidateRecord[];
67
+ evaluations?: readonly EvaluationScorecard[];
67
68
  runs: readonly RunSummary[];
68
- preferredActiveId?: string | null;
69
69
  benchmarkFingerprint: string;
70
70
  }): string | null;
71
71
  export interface WorkbenchRunMaterialization {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAEhB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EAEnB,0BAA0B,EAC1B,iCAAiC,EACjC,wBAAwB,EACxB,kBAAkB,EAClB,IAAI,EAEJ,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,+BAA+B,EAK/B,2BAA2B,EAE3B,uBAAuB,EAEvB,4BAA4B,EAE5B,sBAAsB,EAEtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAcL,KAAK,iCAAiC,EACtC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAI9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAWL,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,8BAA8B,CAAC;AAiBtC,OAAO,EACL,kCAAkC,EAYlC,KAAK,yBAAyB,EAG9B,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AA4B5B,OAAO,EAKL,KAAK,0BAA0B,EAEhC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,8BAA8B,EAC9B,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC3B,iCAAiC,EACjC,gCAAgC,EAChC,yBAAyB,EACzB,gCAAgC,EAChC,kCAAkC,EAClC,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,EAChB,oCAAoC,EACpC,mCAAmC,EACnC,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,6CAA6C,EAC7C,KAAK,gCAAgC,EACrC,KAAK,oCAAoC,GAC1C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,uCAAuC,EACvC,kCAAkC,EAClC,6BAA6B,EAC7B,oCAAoC,EACpC,yCAAyC,EACzC,gCAAgC,EAChC,iCAAiC,EACjC,+BAA+B,EAC/B,uCAAuC,EACvC,KAAK,kCAAkC,EACvC,KAAK,yBAAyB,EAC9B,KAAK,iCAAiC,EACtC,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EACjC,KAAK,kCAAkC,EACvC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,GAC9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,gCAAgC,EAChC,oCAAoC,EACpC,8BAA8B,EAC9B,mCAAmC,EACnC,+BAA+B,EAC/B,kCAAkC,EAClC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mCAAmC,EACnC,sCAAsC,GACvC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kCAAkC,GACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,2BAA2B,GAC5B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sCAAsC,EACtC,uCAAuC,EACvC,sCAAsC,EACtC,4CAA4C,EAC5C,+BAA+B,EAC/B,6BAA6B,EAC7B,yCAAyC,EACzC,wCAAwC,EACxC,oCAAoC,EACpC,mCAAmC,EACnC,mCAAmC,EACnC,oCAAoC,EACpC,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,EACzC,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,4BAA4B,EAC5B,KAAK,iCAAiC,GACvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,sCAAsC,EACtC,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,EAC1B,uCAAuC,GACxC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,EACb,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oCAAoC,EACpC,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,GACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iCAAiC,EACjC,wCAAwC,EACxC,wCAAwC,EACxC,KAAK,gCAAgC,GACtC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mCAAmC,EACnC,qCAAqC,EACrC,+BAA+B,EAC/B,gCAAgC,EAChC,uCAAuC,EACvC,kCAAkC,EAClC,gCAAgC,EAChC,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,+BAA+B,GACrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,0BAA0B,EAC1B,wBAAwB,EACxB,oCAAoC,EACpC,oCAAoC,EACpC,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,kCAAkC,EAClC,yCAAyC,EACzC,kCAAkC,EAClC,2BAA2B,EAC3B,mBAAmB,EACnB,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EACrC,KAAK,mCAAmC,GACzC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,4CAA4C,EACjD,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,EACpC,KAAK,kCAAkC,EACvC,KAAK,4CAA4C,EACjD,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,EACxC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,qCAAqC,EACrC,kCAAkC,EAClC,gCAAgC,EAChC,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,iCAAiC,EACjC,oCAAoC,EACpC,wBAAwB,EACxB,kCAAkC,EAClC,mCAAmC,EACnC,sCAAsC,EACtC,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,iCAAiC,EACjC,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,kCAAkC,CAAC;AAE1C,wBAAgB,sCAAsC,CACpD,GAAG,EAAE,kBAAkB,GACtB,kBAAkB,CAoBpB;AAED,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,kBAAkB,GACtB,kBAAkB,CASpB;AAqBD,wBAAgB,4CAA4C,CAC1D,SAAS,EAAE,eAAe,GACzB,eAAe,CAcjB;AAED,wBAAgB,4CAA4C,CAC1D,SAAS,EAAE,eAAe,GACzB;IACD,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAOA;AAED,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,eAAe,GACrB,eAAe,CAUjB;AAED,MAAM,WAAW,yCAAyC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACvD,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,SAAS,CAAC,EAAE,+BAA+B,GAAG,IAAI,CAAC;IACnD,OAAO,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,yCAAyC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACxD;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,yCAAyC,GAC/C,MAAM,CA2BR;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,yCAAyC,GAC/C,MAAM,CAqBR;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,GAAG,YAAY,GAAG,aAAa,CAAC,GAC/E,MAAM,CAoBR;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAgCR;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,SAAS,mBAAmB,EAAE,EACpC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GACpC,OAAO,CAGT;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,GAC7B,2BAA2B,CAW7B;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC7C,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,MAAM,GAAG,IAAI,CAkDhB;AA4ZD,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACtD,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iBAAiB,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,kBAAkB,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;IAC1C,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,CAAC,EAAE,+BAA+B,EAAE,CAAC;IACrD,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,4BAA4B,EAAE,iCAAiC,EAwFzE,CAAC;AAEJ,eAAO,MAAM,oBAAoB,EAAE,0BAA0B,EAwC5D,CAAC;AAEF,wBAAgB,mCAAmC,CAAC,IAAI,EAAE;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACpC,GAAG,+BAA+B,CAUlC;AA2QD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpC,iBAAiB,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GAAG,2BAA2B,CAwK9B;AAkLD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED,wBAAgB,uCAAuC,CAAC,IAAI,EAAE;IAC5D,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CACrD,GAAG,mBAAmB,EAAE,CAKxB;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWvE;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMxE;AAwBD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACrC,GAAG,mBAAmB,EAAE,CAmDxB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,cAAc,GACnB,qBAAqB,CAEvB;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,cAAc,GACnB,wBAAwB,CAO1B;AAED,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,SAAS,mBAAmB,EAAE,EAC3C,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAIV;AAED,wBAAgB,0CAA0C,CAAC,IAAI,EAAE;IAC/D,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC7C,GAAG,MAAM,EAAE,CAYX;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,SAAS,kBAAkB,EAAE,EACnC,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,kBAAkB,EAAE,CAYtB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CAIR;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,wBAAwB,GAC/B,MAAM,CAER;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAET;AAkBD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,GAC/D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAMpC;AAED,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,CAY/F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,eAAe,GAAG,gBAAgB,CAQvF;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE;IACrD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,GAAG,MAAM,CAuBT;AAkJD,MAAM,WAAW,gCAAgC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC9C;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,gCAAgC,GACtC,mBAAmB,EAAE,CAcvB;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,WAAW,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACvC,GAAG,MAAM,CAKT;AAkBD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOnE;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GACpC,mBAAmB,EAAE,CAIvB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,wBAAwB,EAAE,GAChC,mBAAmB,EAAE,CAgBvB;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACpE,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACrC,CAAC,EAAE,CAcL;AAmCD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,YAAY,GAAE,SAAS,MAAM,EAAmC,GAC/D,oBAAoB,EAAE,CAkBxB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;CACnC,GAAG,oBAAoB,CAsBvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,yBAAyB,EAAE,CAAC;CAC1C,GAAG,mBAAmB,CAyDtB;AAuID,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,GAAG,EAAE,kBAAkB,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC7C,GAAG,oBAAoB,CA2DvB;AA8CD,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,4BAA4B,CAAC,EAAE,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,yBAAyB,KACjC,YAAY,CAAC;CACnB;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,8BAA8B,EACpC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAqDD,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,IAAI,CAAC,8BAA8B,EAAE,KAAK,GAAG,kBAAkB,GAAG,yBAAyB,CAAC,GACjG,iCAAiC,CAWnC;AAuSD,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,kBAAkB,GACtB,sBAAsB,CAAC,SAAS,CAAC,GAAG,IAAI,CAE1C;AAED,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,CAAC,OAAO,kCAAkC,CAAC,GAChE,OAAO,CAAC,kBAAkB,CAAC,CA6C7B;AA4hBD,wBAAsB,sDAAsD,CAC1E,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,4BAA4B,GACxC,OAAO,CAAC,kBAAkB,CAAC,CAyD7B;AA8vBD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAiCf;AA2pBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,iCAAiC,EAAE,GACrD,iCAAiC,GAAG,IAAI,CAO1C;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAC1E,MAAM,CAGR"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import YAML from "yaml";
6
6
  import { adapterCommandName, assertWorkbenchAdapterOperationResultOk, collectWorkbenchAdapterAuthRequirements, collectWorkbenchAdapterInvocations, parseWorkbenchAdapterManifest, readWorkbenchAdapterOperationResult, WORKBENCH_ADAPTER_RESULT_FILE, WORKBENCH_RUNTIME_CONTROL_TOKEN_ENV, WORKBENCH_RUNTIME_CONTROL_URL_ENV, workbenchAdapterOperationCommand, workbenchAdapterOperationExecutor, workbenchAdapterOperationResultPath, } from "@workbench-ai/workbench-protocol";
7
7
  import { BENCHMARK_SPEC_FILE, DEFAULT_EXECUTION_RESOURCES, engineCasePrivateFiles, engineCaseFilesForRuntimeInput, engineCasePublicFiles, resolveEngineCaseExecutionConfig, resolveWorkbenchResolvedSourceYaml as resolveWorkbenchResolvedSourceYamlInternal, validateWorkbenchResolvedSourceYaml as validateWorkbenchResolvedSourceYamlInternal, isWorkbenchCandidateManifestPath, } from "./generic-spec.js";
8
8
  import { attachSandboxMetadataToJob, createWorkbenchSandboxFileStore, isSurfaceSnapshotFile, readWorkbenchExecutionSpec, } from "./sandbox-inputs.js";
9
- import { asRuntimeRecord, importNodeModule, isJsonPayload, jsonRecord, nodeBuiltin, quoteShellArg, resolveWorkbenchWorkerId, } from "./runtime-utils.js";
9
+ import { asRuntimeRecord, importNodeModule, isJsonPayload, jsonRecord, nodeBuiltin, normalizeRelativePath, readSurfaceFiles, quoteShellArg, resolveWorkbenchWorkerId, writeSurfaceFiles, } from "./runtime-utils.js";
10
10
  import { createWorkbenchExecutionCapability, createWorkbenchSandboxAllocation, collectExecutionCapabilityScopeIssues, collectSandboxAllocationScopeIssues, collectSandboxHandleScopeIssues, assertSandboxBackendSupportsNetworkPolicy, executeValidatedSandboxExecution, } from "./sandbox-plane.js";
11
11
  import { createSandboxBackendPlaneForBackend, } from "./sandbox-backends/index.js";
12
12
  import { applyWorkbenchCandidatePatch } from "./candidate-patch.js";
@@ -20,7 +20,7 @@ export { BENCHMARK_SPEC_FILE, CANDIDATE_SPEC_FILE, DEFAULT_EXECUTION_RESOURCES,
20
20
  export { composeRuntimeDockerfileWithAdapterInstallers, } from "./runtime-dockerfile.js";
21
21
  export { adapterCommandName, cloneWorkbenchAdapterManifest, collectWorkbenchAdapterAuthRequirements, collectWorkbenchAdapterInvocations, parseWorkbenchAdapterManifest, workbenchAdapterManifestRequiresAuth, workbenchAdapterManifestSupportsOperation, workbenchAdapterOperationCommand, workbenchAdapterOperationExecutor, withDefaultWorkbenchAdapterAuth, withDefaultWorkbenchAdapterAuthProfiles, } from "@workbench-ai/workbench-protocol";
22
22
  export { adapterAuthEnv, createWorkbenchAdapterAuthBundle, defaultWorkbenchAdapterAuthStoreRoot, localWorkbenchAdapterAuthStore, normalizeWorkbenchAdapterAuthTarget, parseWorkbenchAdapterAuthTarget, sanitizeWorkbenchAdapterAuthBundle, } from "./adapter-auth.js";
23
- export { asRuntimeRecord, importNodeModule, nodeBuiltin, normalizeWorkbenchWorkerId, normalizeRuntimeRegistry, quoteShellArg, resolveDockerRuntimeImageRef, resolveWorkbenchWorkerId, } from "./runtime-utils.js";
23
+ export { asRuntimeRecord, importNodeModule, jsonRecord, nodeBuiltin, normalizeRelativePath, normalizeWorkbenchWorkerId, normalizeRuntimeRegistry, quoteShellArg, readSurfaceFiles, resolveDockerRuntimeImageRef, resolveWorkbenchWorkerId, writeSurfaceFiles, } from "./runtime-utils.js";
24
24
  export { assignUsageRole, extractExecutionUsageFromTrace, mergeUsageSummaries, } from "./execution-usage.js";
25
25
  export { createWorkbenchProgressStdoutParser, publishWorkbenchProgressStdoutEnvelope, } from "./execution-events.js";
26
26
  export { persistWorkbenchAdapterAuthUpdates, } from "./adapter-auth-updates.js";
@@ -28,7 +28,7 @@ export { resolveSandboxTemplateImage, } from "./sandbox-backends/template-images
28
28
  export { readOutputTraceFiles, workbenchTraceExecutionDirectory, workbenchTraceRunDirectory, workbenchTraceRunDirectoryName, } from "./trace-files.js";
29
29
  export { assertWorkbenchAdapterOperationSupport, assertWorkbenchAdapterOperationResultOk, collectWorkbenchAdapterOperationIssues, collectWorkbenchAdapterOperationRequirements, ensureWorkbenchAdapterOutputDir, WORKBENCH_ADAPTER_RESULT_FILE, normalizeWorkbenchAdapterOperationRequest, normalizeWorkbenchAdapterOperationResult, readWorkbenchAdapterOperationRequest, readWorkbenchAdapterOperationResult, workbenchAdapterOperationResultPath, writeWorkbenchAdapterOperationResult, } from "@workbench-ai/workbench-protocol";
30
30
  export { applyWorkbenchCandidatePatch, } from "./candidate-patch.js";
31
- export { createWorkbenchSandboxFileStore, createSandboxAdapterRequest, executionResultFromCompletedSandboxJob, materializeWorkbenchSandboxInput, readWorkbenchExecutionSpec, sanitizeWorkbenchExecutionJobForSandbox, } from "./sandbox-inputs.js";
31
+ export { createWorkbenchSandboxFileStore, createSandboxAdapterRequest, executionResultFromCompletedSandboxJob, isSurfaceSnapshotFile, materializeWorkbenchSandboxInput, readWorkbenchExecutionSpec, sanitizeWorkbenchExecutionJobForSandbox, } from "./sandbox-inputs.js";
32
32
  export { compileWorkbenchExecutionGraph, } from "./execution-graph.js";
33
33
  export { createBaselineCandidateExecution, createBaselineCandidateJob, createWorkbenchExecutionJob, expectedWorkbenchRunJobCount, engineCaseForCase, engineCaseIds, attemptJobCountForRunSpec, workbenchExecutionJobPurpose, MAX_WORKBENCH_RUN_BUDGET, planWorkbenchExecutionJobsForPurpose, validateWorkbenchRunEnvelope, workbenchExecutionJobId, } from "./execution-jobs.js";
34
34
  export { addCapacity, capacityFits, runWorkbenchExecutionDag, subtractCapacity, workbenchJobDependencies, workbenchJobHostCost, workbenchJobResources, } from "./execution-scheduler.js";
@@ -36,7 +36,7 @@ export { assertWorkbenchExecutionIsolation, collectWorkbenchExecutionIsolationIs
36
36
  export { collectSandboxAllocationScopeIssues, collectExecutionCapabilityScopeIssues, collectSandboxHandleScopeIssues, createWorkbenchSandboxAllocation, createWorkbenchSandboxExecutionMetadata, createWorkbenchExecutionCapability, executeValidatedSandboxExecution, } from "./sandbox-plane.js";
37
37
  export { buildCandidateCaseExecutionRefs, buildWorkbenchExecutionEvidence, isWorkbenchExecutionActive, readWorkbenchExecutionId, readWorkbenchExecutionMetadataNumber, readWorkbenchExecutionMetadataString, readWorkbenchExecutionPurpose, resolveWorkbenchJobGroupStatus, } from "./execution-evidence.js";
38
38
  export { buildCandidateLineage, buildWorkbenchEvaluationComparison, buildWorkbenchEvaluationMetricDescriptors, formatEvaluationConfigurationLabel, isCompleteEvaluationSummary, readEvaluationScore, } from "@workbench-ai/workbench-contract";
39
- export { WorkbenchInspectionError, createWorkbenchInspection, } from "./inspection.js";
39
+ export { WorkbenchInspectionError, createWorkbenchInspection, pickDefaultCandidateFilePath, selectedFilePath, } from "./inspection.js";
40
40
  export { buildWorkbenchTraceSessionsFromFiles, combineWorkbenchTraceSessions, finalizeWorkbenchExecutionTraceForJob, mergeWorkbenchExecutionTracesByJob, readWorkbenchExecutionTraceFiles, traceSessionLabel, } from "./execution-traces.js";
41
41
  export { DOCKER_SANDBOX_BACKEND, assertSandboxHostHealthForBackend, createDockerSandboxBackendDescriptor, createDockerSandboxPlane, resolveWorkbenchSandboxBackendName, sandboxBackendAdmissionForResources, sandboxHostHealthExpectationForBackend, } from "./sandbox-backends/index.js";
42
42
  export function sanitizeWorkbenchRuntimeJobForExchange(job) {
@@ -152,7 +152,6 @@ export function workbenchProjectSourceFingerprint(input) {
152
152
  export function workbenchRuntimeBundleFingerprint(bundle) {
153
153
  const canonical = {
154
154
  schema: bundle.schema,
155
- activeId: bundle.activeId,
156
155
  candidates: sortByStableKey(bundle.candidates.map(workbenchRuntimeCandidateIdentityForExchange), (candidate) => candidate.id),
157
156
  candidateFiles: sortByStableKey(bundle.candidateFiles.map((group) => ({
158
157
  candidateId: group.candidateId,
@@ -185,36 +184,143 @@ export function workbenchRuntimeBundleStats(bundle) {
185
184
  activeId: bundle.activeId,
186
185
  };
187
186
  }
188
- export function workbenchRuntimeExplicitActiveId(args) {
187
+ export function workbenchRuntimeProjectedActiveId(args) {
189
188
  const candidateById = new Map(args.candidates.map((candidate) => [
190
189
  candidate.id,
191
190
  candidate,
192
191
  ]));
193
- const compatible = (candidateId) => {
192
+ const candidate = (candidateId) => {
194
193
  if (!candidateId) {
195
194
  return null;
196
195
  }
197
196
  const candidate = candidateById.get(candidateId) ?? null;
198
- return candidate?.benchmarkFingerprint === args.benchmarkFingerprint
199
- ? candidate.id
200
- : null;
197
+ return candidate?.benchmarkFingerprint === args.benchmarkFingerprint ? candidate : null;
201
198
  };
202
- return compatible(args.preferredActiveId) ??
203
- latestExplicitRunActiveIdForBenchmark(args.runs, compatible, args.benchmarkFingerprint);
204
- }
205
- function latestExplicitRunActiveIdForBenchmark(runs, compatible, benchmarkFingerprint) {
206
- return runs
199
+ let active = null;
200
+ for (const run of args.runs
207
201
  .slice()
208
202
  .sort((left, right) => {
209
203
  const leftAt = left.finishedAt ?? left.startedAt;
210
204
  const rightAt = right.finishedAt ?? right.startedAt;
211
205
  return leftAt.localeCompare(rightAt) || left.id.localeCompare(right.id);
212
- })
213
- .reverse()
214
- .map((run) => run.benchmarkFingerprint === benchmarkFingerprint
215
- ? compatible(run.activeCandidateId)
216
- : null)
217
- .find((candidateId) => candidateId !== null) ?? null;
206
+ })) {
207
+ if (run.status !== "finished" || run.benchmarkFingerprint !== args.benchmarkFingerprint) {
208
+ continue;
209
+ }
210
+ if (run.workflow === "eval") {
211
+ if (!active) {
212
+ const evaluated = candidate(run.outputCandidateId ?? run.candidateId);
213
+ if (evaluated && runtimeCandidateSelectionMean(evaluated, run, args.evaluations) !== null) {
214
+ active = evaluated;
215
+ }
216
+ }
217
+ continue;
218
+ }
219
+ const challenger = candidate(run.outputCandidateId ?? run.candidateId);
220
+ if (!challenger) {
221
+ continue;
222
+ }
223
+ if (!active) {
224
+ if (runtimeCandidateSelectionMean(challenger, run, args.evaluations) !== null) {
225
+ active = challenger;
226
+ }
227
+ continue;
228
+ }
229
+ if (hasHigherRuntimeSelectionMetric(challenger, active, run, args.evaluations)) {
230
+ active = challenger;
231
+ }
232
+ }
233
+ if (active) {
234
+ return active.id;
235
+ }
236
+ return null;
237
+ }
238
+ function hasHigherRuntimeSelectionMetric(candidate, incumbent, run, evaluations) {
239
+ const candidateValue = runtimeCandidateSelectionMean(candidate, run, evaluations);
240
+ const incumbentValue = runtimeCandidateSelectionMean(incumbent, run, evaluations);
241
+ if (candidateValue == null) {
242
+ return false;
243
+ }
244
+ if (incumbentValue == null) {
245
+ return true;
246
+ }
247
+ return candidateValue > incumbentValue;
248
+ }
249
+ function runtimeCandidateSelectionMean(candidate, run, evaluations) {
250
+ const selection = runtimeRunSelection(run);
251
+ const runAt = run.finishedAt ?? run.startedAt;
252
+ const scorecards = (evaluations ?? [])
253
+ .filter((evaluation) => evaluation.candidateId === candidate.id &&
254
+ evaluation.benchmarkFingerprint === run.benchmarkFingerprint &&
255
+ (evaluation.runId === run.id || evaluation.updatedAt <= runAt))
256
+ .sort((left, right) => Number(right.runId === run.id) - Number(left.runId === run.id) ||
257
+ right.updatedAt.localeCompare(left.updatedAt) || right.id.localeCompare(left.id));
258
+ const selectedScorecard = scorecards.find((evaluation) => evaluation.selectionMetric === selection.metric &&
259
+ evaluation.selectionLabel === selection.label &&
260
+ evaluation.selectionScore &&
261
+ Number.isFinite(evaluation.selectionScore.mean));
262
+ if (selectedScorecard?.selectionScore) {
263
+ return selectedScorecard.selectionScore.mean;
264
+ }
265
+ for (const scorecard of scorecards) {
266
+ const evaluation = {
267
+ ...scorecard.evaluation,
268
+ metrics: scorecard.evaluation.metrics ?? scorecard.metrics,
269
+ };
270
+ const mean = readEvaluationSelectionMeanForRuntime(evaluation, selection);
271
+ if (mean !== null) {
272
+ return mean;
273
+ }
274
+ }
275
+ const embedded = readEvaluationSelectionMeanForRuntime(candidate.eval, selection);
276
+ if (embedded !== null) {
277
+ return embedded;
278
+ }
279
+ return null;
280
+ }
281
+ function runtimeRunSelection(run) {
282
+ const selectBy = run.selectBy?.trim();
283
+ if (!selectBy) {
284
+ return { metric: "score" };
285
+ }
286
+ const splitMatch = /^(.+?) on split=(.+)$/u.exec(selectBy);
287
+ if (splitMatch) {
288
+ return {
289
+ metric: splitMatch[1].trim() || "score",
290
+ label: selectBy,
291
+ split: splitMatch[2].trim(),
292
+ };
293
+ }
294
+ const allCasesMatch = /^(.+?) on all cases$/u.exec(selectBy);
295
+ return {
296
+ metric: allCasesMatch?.[1]?.trim() || "score",
297
+ label: selectBy,
298
+ };
299
+ }
300
+ function readEvaluationSelectionMeanForRuntime(evaluation, selection) {
301
+ if (!selection.split) {
302
+ return readEvaluationSelectionMean(evaluation, selection.metric);
303
+ }
304
+ const sampleValues = (evaluation?.samples ?? []).flatMap((sample) => (sample.cases ?? []).flatMap((caseResult) => {
305
+ const value = caseResult.metrics[selection.metric];
306
+ return caseResult.split === selection.split &&
307
+ typeof value === "number" &&
308
+ Number.isFinite(value)
309
+ ? [value]
310
+ : [];
311
+ }));
312
+ if (sampleValues.length > 0) {
313
+ return metricStats(sampleValues).mean;
314
+ }
315
+ const caseValues = (evaluation?.cases ?? []).flatMap((caseStats) => {
316
+ const value = caseStats.metrics[selection.metric]?.mean;
317
+ return caseStats.split === selection.split &&
318
+ typeof value === "number" &&
319
+ Number.isFinite(value)
320
+ ? [value]
321
+ : [];
322
+ });
323
+ return caseValues.length > 0 ? metricStats(caseValues).mean : null;
218
324
  }
219
325
  function workbenchCandidateSourceYamlForFingerprint(sourceYaml) {
220
326
  const parsed = YAML.parse(sourceYaml);
@@ -3447,86 +3553,6 @@ function runtimePrivateDir(root) {
3447
3553
  function runtimeEnginePrivateDir(root) {
3448
3554
  return `${runtimePrivateDir(root)}/engine`;
3449
3555
  }
3450
- async function writeSurfaceFiles(root, files) {
3451
- const fs = await importNodeModule(nodeBuiltin("fs/promises"));
3452
- const path = await importNodeModule(nodeBuiltin("path"));
3453
- for (const file of files) {
3454
- const target = path.join(root, normalizeRelativePath(file.path));
3455
- await fs.mkdir(path.dirname(target), { recursive: true });
3456
- const body = file.encoding === "base64"
3457
- ? Buffer.from(file.content, "base64")
3458
- : Buffer.from(file.content, "utf8");
3459
- await fs.writeFile(target, body);
3460
- if (file.executable) {
3461
- await fs.chmod(target, 0o755).catch(() => undefined);
3462
- }
3463
- }
3464
- }
3465
- async function readSurfaceFiles(root, options = {}) {
3466
- const fs = await importNodeModule(nodeBuiltin("fs/promises"));
3467
- const path = await importNodeModule(nodeBuiltin("path"));
3468
- const utf8Decoder = new TextDecoder("utf-8", { fatal: true });
3469
- const files = [];
3470
- async function walk(directory) {
3471
- const entries = await fs
3472
- .readdir(directory, { withFileTypes: true })
3473
- .catch(() => []);
3474
- for (const entry of entries) {
3475
- const absolutePath = path.join(directory, entry.name);
3476
- const relativePath = normalizeRelativePath(path.relative(root, absolutePath).replace(/\\/gu, "/"));
3477
- if (options.ignorePath?.(relativePath)) {
3478
- continue;
3479
- }
3480
- if (entry.isDirectory()) {
3481
- await walk(absolutePath);
3482
- continue;
3483
- }
3484
- if (!entry.isFile()) {
3485
- continue;
3486
- }
3487
- let body;
3488
- let stats;
3489
- try {
3490
- body = await fs.readFile(absolutePath);
3491
- stats = await fs.stat(absolutePath);
3492
- }
3493
- catch (error) {
3494
- if (isVanishedWalkEntry(error)) {
3495
- continue;
3496
- }
3497
- throw error;
3498
- }
3499
- const content = encodeSurfaceSnapshotContent(body, utf8Decoder);
3500
- files.push({
3501
- path: relativePath,
3502
- kind: content.encoding === "base64" ? "binary" : "text",
3503
- encoding: content.encoding,
3504
- content: content.content,
3505
- executable: (stats.mode & 0o111) !== 0,
3506
- });
3507
- }
3508
- }
3509
- await walk(root);
3510
- return files.sort((left, right) => left.path.localeCompare(right.path));
3511
- }
3512
- function isVanishedWalkEntry(error) {
3513
- const code = error?.code;
3514
- return code === "ENOENT" || code === "ENOTDIR";
3515
- }
3516
- function encodeSurfaceSnapshotContent(body, utf8Decoder) {
3517
- try {
3518
- return {
3519
- encoding: "utf8",
3520
- content: utf8Decoder.decode(body),
3521
- };
3522
- }
3523
- catch {
3524
- return {
3525
- encoding: "base64",
3526
- content: body.toString("base64"),
3527
- };
3528
- }
3529
- }
3530
3556
  function normalizeResultMetrics(value) {
3531
3557
  if (!value || typeof value !== "object" || Array.isArray(value)) {
3532
3558
  return undefined;
@@ -4179,8 +4205,14 @@ function aggregateCaseStatus(results) {
4179
4205
  return undefined;
4180
4206
  }
4181
4207
  function selectCandidate(args) {
4182
- let selected = args.previousCandidate;
4208
+ let selected = args.previousCandidate &&
4209
+ readEvaluationSelectionMean(args.previousCandidate.eval, args.selection?.metric ?? "score", args.selection?.caseIds) !== null
4210
+ ? args.previousCandidate
4211
+ : null;
4183
4212
  for (const candidate of args.candidates) {
4213
+ if (readEvaluationSelectionMean(candidate.eval, args.selection?.metric ?? "score", args.selection?.caseIds) === null) {
4214
+ continue;
4215
+ }
4184
4216
  if (!selected || hasHigherEvaluationMetric(candidate, selected, args.selection)) {
4185
4217
  selected = candidate;
4186
4218
  }
@@ -4245,17 +4277,6 @@ function metricStats(values) {
4245
4277
  max: Math.max(...values),
4246
4278
  };
4247
4279
  }
4248
- function normalizeRelativePath(filePath) {
4249
- const normalized = filePath.replace(/\\/gu, "/").replace(/^\/+/u, "");
4250
- if (!normalized || normalized.includes("\0")) {
4251
- throw new Error("File paths must be non-empty relative paths.");
4252
- }
4253
- const parts = normalized.split("/");
4254
- if (parts.some((part) => part === ".." || part === "." || part === "")) {
4255
- throw new Error(`Unsafe relative file path: ${filePath}`);
4256
- }
4257
- return normalized;
4258
- }
4259
4280
  function detectMimeType(filePath) {
4260
4281
  const lower = filePath.toLowerCase();
4261
4282
  if (lower.endsWith(".md") || lower.endsWith(".markdown")) {
@@ -1,5 +1,5 @@
1
1
  import { type WorkbenchEvaluationComparison } from "@workbench-ai/workbench-contract";
2
- import type { AuthoredWorkbenchSourceDocument, CandidateCaseReview, CandidateFilePreview, CandidateFileSummary, CandidateLineageGraph, CandidateRecord, EvaluationScorecard, RemoteWorkbenchJob, RunSummary, RuntimeSnapshot, SurfaceSnapshotFile, WorkbenchExecutionEventRole, WorkbenchExecutionTrace, WorkbenchExecutionTraceDetail, WorkbenchTraceSession } from "@workbench-ai/workbench-contract";
2
+ import type { AuthoredWorkbenchSourceDocument, CandidateCaseReview, CandidateFilePreview, CandidateFileSummary, CandidateLineageGraph, CandidateRecord, EvaluationScorecard, RemoteWorkbenchJob, RunSummary, RuntimeSnapshot, WorkbenchExecutionEventRole, WorkbenchExecutionTrace, WorkbenchExecutionTraceDetail, WorkbenchTraceSession } from "@workbench-ai/workbench-contract";
3
3
  export interface WorkbenchInspectionErrorOptions {
4
4
  status?: number;
5
5
  }
@@ -11,16 +11,20 @@ export declare class WorkbenchInspectionError extends Error {
11
11
  export interface WorkbenchInspectionFileListInput {
12
12
  fingerprint?: string | null;
13
13
  }
14
- export interface WorkbenchInspectionPreviewInput {
15
- path: string;
16
- view: "diff" | "raw" | "rendered";
14
+ export interface WorkbenchInspectionFileSurface {
15
+ files: CandidateFileSummary[];
16
+ preview: CandidateFilePreview | null;
17
17
  }
18
- export interface WorkbenchInspectionFilePreviewInput extends WorkbenchInspectionFileListInput, WorkbenchInspectionPreviewInput {
18
+ export interface WorkbenchInspectionFileSurfaceInput extends WorkbenchInspectionFileListInput {
19
+ path?: string | null;
20
+ view?: "diff" | "raw" | "rendered";
19
21
  }
20
22
  export interface WorkbenchInspectionCandidateInput {
21
23
  id: string;
22
24
  }
23
- export interface WorkbenchInspectionCandidatePreviewInput extends WorkbenchInspectionCandidateInput, WorkbenchInspectionPreviewInput {
25
+ export interface WorkbenchInspectionCandidateFileSurfaceInput extends WorkbenchInspectionCandidateInput {
26
+ path?: string | null;
27
+ view?: "diff" | "raw" | "rendered";
24
28
  }
25
29
  export interface WorkbenchInspectionEvaluationInput {
26
30
  id: string;
@@ -39,9 +43,9 @@ export interface WorkbenchInspectionExecutionInput {
39
43
  runId: string;
40
44
  jobId: string;
41
45
  }
42
- export interface WorkbenchInspectionExecutionPreviewInput extends WorkbenchInspectionExecutionInput {
43
- path: string;
44
- view: "diff" | "raw" | "rendered";
46
+ export interface WorkbenchInspectionExecutionFileSurfaceInput extends WorkbenchInspectionExecutionInput {
47
+ path?: string | null;
48
+ view?: "diff" | "raw" | "rendered";
45
49
  }
46
50
  export interface WorkbenchInspectionRunDetail {
47
51
  run: RunSummary;
@@ -72,16 +76,16 @@ export interface WorkbenchInspectionBackend {
72
76
  projectId: string;
73
77
  snapshot(): Promise<RuntimeSnapshot>;
74
78
  spec(input: WorkbenchInspectionFileListInput): Promise<AuthoredWorkbenchSourceDocument>;
75
- sourceFiles(input: WorkbenchInspectionFileListInput): Promise<SurfaceSnapshotFile[]>;
79
+ sourceFiles(input: WorkbenchInspectionFileListInput): Promise<CandidateFileSummary[]>;
80
+ sourceFileSurface(input: WorkbenchInspectionFileSurfaceInput): Promise<WorkbenchInspectionFileSurface>;
76
81
  candidate(input: WorkbenchInspectionCandidateInput): Promise<CandidateRecord>;
77
- candidateFiles(input: WorkbenchInspectionCandidateInput): Promise<{
78
- files: SurfaceSnapshotFile[];
79
- changedPaths: readonly string[];
80
- }>;
82
+ candidateFiles(input: WorkbenchInspectionCandidateInput): Promise<CandidateFileSummary[]>;
83
+ candidateFileSurface(input: WorkbenchInspectionCandidateFileSurfaceInput): Promise<WorkbenchInspectionFileSurface>;
81
84
  evaluation(input: WorkbenchInspectionEvaluationInput): Promise<EvaluationScorecard>;
82
85
  run(input: WorkbenchInspectionRunInput): Promise<WorkbenchInspectionRunDetail>;
83
86
  jobInRun?(input: WorkbenchInspectionExecutionInput): Promise<RemoteWorkbenchJob>;
84
- executionFiles(input: WorkbenchInspectionExecutionInput): Promise<SurfaceSnapshotFile[]>;
87
+ executionFiles(input: WorkbenchInspectionExecutionInput): Promise<CandidateFileSummary[]>;
88
+ executionFileSurface(input: WorkbenchInspectionExecutionFileSurfaceInput): Promise<WorkbenchInspectionFileSurface>;
85
89
  caseReview?(input: WorkbenchInspectionCaseReviewInput): Promise<CandidateCaseReview>;
86
90
  executionTrace?(input: WorkbenchInspectionExecutionInput): Promise<WorkbenchExecutionTraceDetail>;
87
91
  traceForJob?(job: RemoteWorkbenchJob, role: WorkbenchExecutionEventRole): WorkbenchExecutionTrace;
@@ -91,21 +95,23 @@ export interface WorkbenchInspection {
91
95
  snapshot(): Promise<RuntimeSnapshot>;
92
96
  spec(input?: WorkbenchInspectionFileListInput): Promise<AuthoredWorkbenchSourceDocument>;
93
97
  sourceFiles(input?: WorkbenchInspectionFileListInput): Promise<CandidateFileSummary[]>;
94
- sourcePreview(input: WorkbenchInspectionFilePreviewInput): Promise<CandidateFilePreview>;
98
+ sourceFileSurface(input?: WorkbenchInspectionFileSurfaceInput): Promise<WorkbenchInspectionFileSurface>;
95
99
  candidate(input: WorkbenchInspectionCandidateInput): Promise<CandidateRecord>;
96
100
  candidateFiles(input: WorkbenchInspectionCandidateInput): Promise<CandidateFileSummary[]>;
97
- candidatePreview(input: WorkbenchInspectionCandidatePreviewInput): Promise<CandidateFilePreview>;
101
+ candidateFileSurface(input: WorkbenchInspectionCandidateFileSurfaceInput): Promise<WorkbenchInspectionFileSurface>;
98
102
  evaluations(): Promise<WorkbenchEvaluationComparison>;
99
103
  evaluation(input: WorkbenchInspectionEvaluationInput): Promise<EvaluationScorecard>;
100
104
  caseReview(input: WorkbenchInspectionCaseReviewInput): Promise<CandidateCaseReview>;
101
105
  run(input: WorkbenchInspectionRunInput): Promise<WorkbenchInspectionRunDetail>;
102
106
  executionTrace(input: WorkbenchInspectionExecutionInput): Promise<WorkbenchExecutionTraceDetail>;
103
107
  executionFiles(input: WorkbenchInspectionExecutionInput): Promise<CandidateFileSummary[]>;
104
- executionPreview(input: WorkbenchInspectionExecutionPreviewInput): Promise<CandidateFilePreview>;
108
+ executionFileSurface(input: WorkbenchInspectionExecutionFileSurfaceInput): Promise<WorkbenchInspectionFileSurface>;
105
109
  lineage(): Promise<CandidateLineageGraph>;
106
110
  diagnose(input?: {
107
111
  targetId?: string | null;
108
112
  }): Promise<WorkbenchFailureDiagnosis>;
109
113
  }
110
114
  export declare function createWorkbenchInspection(backend: WorkbenchInspectionBackend): WorkbenchInspection;
115
+ export declare function selectedFilePath(requestedPath: string | null | undefined, files: readonly CandidateFileSummary[]): string | null;
116
+ export declare function pickDefaultCandidateFilePath(files: readonly CandidateFileSummary[]): string | null;
111
117
  //# sourceMappingURL=inspection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../src/inspection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../src/inspection.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { buildCandidateLineage, buildWorkbenchEvaluationComparison, } from "@workbench-ai/workbench-contract";
2
2
  import { buildCandidateCaseExecutionRefs, buildWorkbenchExecutionEvidence, } from "./execution-evidence.js";
3
- import { candidateRecordWithoutDerivedFields, createCandidateFilePreview, createCaseReview, summarizeCandidateFiles, } from "./index.js";
3
+ import { candidateRecordWithoutDerivedFields, createCaseReview, } from "./index.js";
4
4
  export class WorkbenchInspectionError extends Error {
5
5
  status;
6
6
  statusCode;
@@ -15,25 +15,11 @@ export function createWorkbenchInspection(backend) {
15
15
  return {
16
16
  snapshot: () => backend.snapshot(),
17
17
  spec: (input = {}) => backend.spec(input),
18
- sourceFiles: async (input = {}) => {
19
- const files = await backend.sourceFiles(input);
20
- return summarizeCandidateFiles(files, files.map((file) => file.path));
21
- },
22
- sourcePreview: async (input) => createCandidateFilePreview({
23
- files: await backend.sourceFiles(input),
24
- path: input.path,
25
- view: input.view,
26
- }),
18
+ sourceFiles: (input = {}) => backend.sourceFiles(input),
19
+ sourceFileSurface: (input = {}) => backend.sourceFileSurface(input),
27
20
  candidate: async (input) => candidateRecordWithoutDerivedFields(await backend.candidate(input)),
28
- candidateFiles: async (input) => {
29
- const result = await backend.candidateFiles(input);
30
- return summarizeCandidateFiles(result.files, result.changedPaths);
31
- },
32
- candidatePreview: async (input) => createCandidateFilePreview({
33
- files: (await backend.candidateFiles(input)).files,
34
- path: input.path,
35
- view: input.view,
36
- }),
21
+ candidateFiles: (input) => backend.candidateFiles(input),
22
+ candidateFileSurface: (input) => backend.candidateFileSurface(input),
37
23
  evaluations: async () => {
38
24
  const snapshot = await backend.snapshot();
39
25
  return buildWorkbenchEvaluationComparison(snapshot.evaluations);
@@ -76,15 +62,8 @@ export function createWorkbenchInspection(backend) {
76
62
  }),
77
63
  };
78
64
  },
79
- executionFiles: async (input) => {
80
- const files = await backend.executionFiles(input);
81
- return summarizeCandidateFiles(files, files.map((file) => file.path));
82
- },
83
- executionPreview: async (input) => createCandidateFilePreview({
84
- files: await backend.executionFiles(input),
85
- path: input.path,
86
- view: input.view,
87
- }),
65
+ executionFiles: (input) => backend.executionFiles(input),
66
+ executionFileSurface: (input) => backend.executionFileSurface(input),
88
67
  lineage: async () => {
89
68
  const snapshot = await backend.snapshot();
90
69
  return buildCandidateLineage({
@@ -102,6 +81,34 @@ export function createWorkbenchInspection(backend) {
102
81
  },
103
82
  };
104
83
  }
84
+ export function selectedFilePath(requestedPath, files) {
85
+ const normalizedPath = requestedPath?.trim();
86
+ if (normalizedPath && files.some((file) => file.path === normalizedPath)) {
87
+ return normalizedPath;
88
+ }
89
+ return pickDefaultCandidateFilePath(files);
90
+ }
91
+ export function pickDefaultCandidateFilePath(files) {
92
+ return files
93
+ .map((entry) => entry.path)
94
+ .sort(compareCandidateFilePreference)[0] ?? null;
95
+ }
96
+ function compareCandidateFilePreference(left, right) {
97
+ const order = scoreCandidateFilePreference(left) - scoreCandidateFilePreference(right);
98
+ return order === 0 ? left.localeCompare(right) : order;
99
+ }
100
+ function scoreCandidateFilePreference(path) {
101
+ if (path.endsWith("/SKILL.md") || path === "SKILL.md") {
102
+ return 0;
103
+ }
104
+ if (path.endsWith(".md")) {
105
+ return 1;
106
+ }
107
+ if (path.endsWith(".yaml") || path.endsWith(".yml")) {
108
+ return 2;
109
+ }
110
+ return 3;
111
+ }
105
112
  async function diagnoseWorkbenchFailures(args) {
106
113
  const targetRun = args.targetId
107
114
  ? args.snapshot.runs.find((run) => run.id === args.targetId)
@@ -1,10 +1,15 @@
1
- import type { Json } from "@workbench-ai/workbench-contract";
1
+ import type { Json, SurfaceSnapshotFile } from "@workbench-ai/workbench-contract";
2
2
  export declare function importNodeModule<T>(specifier: string): Promise<T>;
3
3
  export declare function nodeBuiltin(name: string): string;
4
4
  export declare function asRuntimeRecord(value: unknown): Record<string, unknown>;
5
5
  export declare function jsonRecord(value: unknown): Record<string, Json>;
6
6
  export declare function numberValue(value: unknown): number | undefined;
7
7
  export declare function stringValue(value: unknown): string | undefined;
8
+ export declare function normalizeRelativePath(filePath: string): string;
9
+ export declare function writeSurfaceFiles(root: string, files: readonly SurfaceSnapshotFile[]): Promise<void>;
10
+ export declare function readSurfaceFiles(root: string, options?: {
11
+ ignorePath?: (path: string) => boolean;
12
+ }): Promise<SurfaceSnapshotFile[]>;
8
13
  export declare function isJsonPayload(value: unknown): value is import("@workbench-ai/workbench-contract").Json;
9
14
  export declare function resolveDockerRuntimeImageRef(imageRef: string, options: {
10
15
  runtimeRegistry: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-utils.d.ts","sourceRoot":"","sources":["../src/runtime-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACL,MAAM,kCAAkC,CAAC;AAE1C,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEvE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIvE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAI/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,kCAAkC,EAAE,IAAI,CAWtG;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAChF,MAAM,CASR;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAeD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAS7E;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASjG;AAoBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD"}
1
+ {"version":3,"file":"runtime-utils.d.ts","sourceRoot":"","sources":["../src/runtime-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAE1C,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEvE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIvE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAI/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,mBAAmB,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAAO,GACvD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA+ChC;AAwBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,kCAAkC,EAAE,IAAI,CAWtG;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAChF,MAAM,CASR;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAeD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAS7E;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASjG;AAoBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD"}
@@ -28,6 +28,98 @@ export function numberValue(value) {
28
28
  export function stringValue(value) {
29
29
  return typeof value === "string" && value.length > 0 ? value : undefined;
30
30
  }
31
+ export function normalizeRelativePath(filePath) {
32
+ const normalized = filePath.replace(/\\/gu, "/").replace(/^\/+/u, "");
33
+ if (!normalized || normalized.includes("\0")) {
34
+ throw new Error("File paths must be non-empty relative paths.");
35
+ }
36
+ const parts = normalized.split("/");
37
+ if (parts.some((part) => part === ".." || part === "." || part === "")) {
38
+ throw new Error(`Unsafe relative file path: ${filePath}`);
39
+ }
40
+ return normalized;
41
+ }
42
+ export async function writeSurfaceFiles(root, files) {
43
+ const fs = await importNodeModule(nodeBuiltin("fs/promises"));
44
+ const path = await importNodeModule(nodeBuiltin("path"));
45
+ await fs.mkdir(root, { recursive: true });
46
+ for (const file of files) {
47
+ const target = path.join(root, normalizeRelativePath(file.path));
48
+ await fs.mkdir(path.dirname(target), { recursive: true });
49
+ const body = file.encoding === "base64"
50
+ ? Buffer.from(file.content, "base64")
51
+ : Buffer.from(file.content, "utf8");
52
+ await fs.writeFile(target, body);
53
+ if (file.executable) {
54
+ await fs.chmod(target, 0o755).catch(() => undefined);
55
+ }
56
+ }
57
+ }
58
+ export async function readSurfaceFiles(root, options = {}) {
59
+ const fs = await importNodeModule(nodeBuiltin("fs/promises"));
60
+ const path = await importNodeModule(nodeBuiltin("path"));
61
+ const utf8Decoder = new TextDecoder("utf-8", { fatal: true });
62
+ const files = [];
63
+ async function walk(directory) {
64
+ const entries = await fs
65
+ .readdir(directory, { withFileTypes: true })
66
+ .catch(() => []);
67
+ for (const entry of entries) {
68
+ const absolutePath = path.join(directory, entry.name);
69
+ const relativePath = normalizeRelativePath(path.relative(root, absolutePath).replace(/\\/gu, "/"));
70
+ if (options.ignorePath?.(relativePath)) {
71
+ continue;
72
+ }
73
+ if (entry.isDirectory()) {
74
+ await walk(absolutePath);
75
+ continue;
76
+ }
77
+ if (!entry.isFile()) {
78
+ continue;
79
+ }
80
+ let body;
81
+ let stats;
82
+ try {
83
+ body = await fs.readFile(absolutePath);
84
+ stats = await fs.stat(absolutePath);
85
+ }
86
+ catch (error) {
87
+ if (isVanishedWalkEntry(error)) {
88
+ continue;
89
+ }
90
+ throw error;
91
+ }
92
+ const content = encodeSurfaceSnapshotContent(body, utf8Decoder);
93
+ files.push({
94
+ path: relativePath,
95
+ kind: content.encoding === "base64" ? "binary" : "text",
96
+ encoding: content.encoding,
97
+ content: content.content,
98
+ executable: (stats.mode & 0o111) !== 0,
99
+ });
100
+ }
101
+ }
102
+ await walk(root);
103
+ return files.sort((left, right) => left.path.localeCompare(right.path));
104
+ }
105
+ function isVanishedWalkEntry(error) {
106
+ const code = error?.code;
107
+ return code === "ENOENT" || code === "ENOTDIR";
108
+ }
109
+ function encodeSurfaceSnapshotContent(body, utf8Decoder) {
110
+ try {
111
+ return {
112
+ encoding: "utf8",
113
+ content: utf8Decoder.decode(body),
114
+ };
115
+ }
116
+ catch {
117
+ return {
118
+ encoding: "base64",
119
+ content: body.toString("base64"),
120
+ };
121
+ }
122
+ }
31
123
  export function isJsonPayload(value) {
32
124
  if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
33
125
  return Number.isFinite(value) || typeof value !== "number";
@@ -1 +1 @@
1
- {"version":3,"file":"trace-files.d.ts","sourceRoot":"","sources":["../src/trace-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAO1C,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiChH;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAK9E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAET;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,yBAAyB,CAAC;CACpC,GAAG,MAAM,CAET;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAKT"}
1
+ {"version":3,"file":"trace-files.d.ts","sourceRoot":"","sources":["../src/trace-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAO1C,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAOhH;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAK9E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAET;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,yBAAyB,CAAC;CACpC,GAAG,MAAM,CAET;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAKT"}
@@ -1,38 +1,12 @@
1
- import { importNodeModule, nodeBuiltin, } from "./runtime-utils.js";
1
+ import { normalizeRelativePath, readSurfaceFiles, } from "./runtime-utils.js";
2
2
  export const WORKBENCH_TRACE_ROOT = ".workbench/traces";
3
3
  export async function readOutputTraceFiles(outputRoot, traceRoot) {
4
- const fs = await importNodeModule(nodeBuiltin("fs/promises"));
5
- const path = await importNodeModule(nodeBuiltin("path"));
6
- const decoder = new TextDecoder("utf-8", { fatal: true });
7
- const files = [];
8
- async function walk(directory) {
9
- const entries = await fs.readdir(directory, { withFileTypes: true }).catch(() => []);
10
- for (const entry of entries) {
11
- const absolutePath = path.join(directory, entry.name);
12
- if (entry.isDirectory()) {
13
- const relativeDirectory = normalizeRelativePath(path.relative(outputRoot, absolutePath).replace(/\\/gu, "/"));
14
- if (shouldSkipTraceDirectory(relativeDirectory)) {
15
- continue;
16
- }
17
- await walk(absolutePath);
18
- continue;
19
- }
20
- if (!entry.isFile()) {
21
- continue;
22
- }
23
- const body = await fs.readFile(absolutePath);
24
- const content = encodeTraceFileContent(body, decoder);
25
- files.push({
26
- path: normalizeRelativePath(`${traceRoot}/${path.relative(outputRoot, absolutePath).replace(/\\/gu, "/")}`),
27
- kind: content.encoding === "base64" ? "binary" : "text",
28
- encoding: content.encoding,
29
- content: content.content,
30
- executable: false,
31
- });
32
- }
33
- }
34
- await walk(outputRoot);
35
- return files;
4
+ return (await readSurfaceFiles(outputRoot, { ignorePath: shouldSkipTraceDirectory }))
5
+ .map((file) => ({
6
+ ...file,
7
+ path: normalizeRelativePath(`${traceRoot}/${file.path}`),
8
+ executable: false,
9
+ }));
36
10
  }
37
11
  export function traceFilePaths(files) {
38
12
  return files
@@ -62,20 +36,6 @@ function shouldSkipTraceDirectory(relativeDirectory) {
62
36
  || relativeDirectory.endsWith("/session/workspace")
63
37
  || relativeDirectory.includes("/session/workspace/");
64
38
  }
65
- function encodeTraceFileContent(body, utf8Decoder) {
66
- try {
67
- return {
68
- encoding: "utf8",
69
- content: utf8Decoder.decode(body),
70
- };
71
- }
72
- catch {
73
- return {
74
- encoding: "base64",
75
- content: body.toString("base64"),
76
- };
77
- }
78
- }
79
39
  function sanitizeTracePathSegment(value) {
80
40
  const sanitized = value
81
41
  .trim()
@@ -89,6 +49,3 @@ function tracePurposeSequence(purpose) {
89
49
  }
90
50
  return 2;
91
51
  }
92
- function normalizeRelativePath(filePath) {
93
- return filePath.replace(/\\/gu, "/").replace(/^\/+/u, "").replace(/\/+/gu, "/");
94
- }
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "@workbench-ai/workbench-core",
3
- "version": "0.0.65",
3
+ "version": "0.0.67",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/workbench-ai/workbench.git",
7
+ "directory": "packages/core"
8
+ },
4
9
  "type": "module",
5
10
  "main": "dist/index.js",
6
11
  "types": "dist/index.d.ts",
@@ -17,8 +22,8 @@
17
22
  ],
18
23
  "dependencies": {
19
24
  "yaml": "^2.8.2",
20
- "@workbench-ai/workbench-protocol": "0.0.65",
21
- "@workbench-ai/workbench-contract": "0.0.65"
25
+ "@workbench-ai/workbench-contract": "0.0.67",
26
+ "@workbench-ai/workbench-protocol": "0.0.67"
22
27
  },
23
28
  "devDependencies": {
24
29
  "@types/node": "^24.3.1",