Files
alighasami 3d5eaf9445
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled
first commit
2026-03-17 16:22:57 +03:30

54 lines
1.5 KiB
TypeScript

/**
* LangSmith dataset write-back utilities.
*
* Provides functions to update examples in a LangSmith dataset
* with regenerated state.
*/
import type { Client as LangsmithClient } from 'langsmith/client';
import type { CoordinationLogEntry } from '@/types/coordination';
import type { SimpleWorkflow } from '@/types/workflow';
import type { EvalLogger } from './logger';
import type { SerializedMessage } from './workflow-regenerator';
/** Entry for LangSmith write-back operations */
export interface LangSmithWriteBackEntry {
exampleId: string;
messages: SerializedMessage[];
coordinationLog: CoordinationLogEntry[];
workflowJSON: SimpleWorkflow;
}
/**
* Write regenerated state back to a LangSmith dataset.
* Updates the inputs field of each example while preserving other fields.
*/
export async function writeBackToLangSmithDataset(
client: LangsmithClient,
updates: LangSmithWriteBackEntry[],
logger?: EvalLogger,
): Promise<void> {
if (updates.length === 0) {
logger?.verbose('No updates to write back to LangSmith');
return;
}
logger?.info(`Writing back ${updates.length} examples to LangSmith dataset...`);
// Use batch update for efficiency
const exampleUpdates = updates.map((update) => ({
id: update.exampleId,
inputs: {
messages: update.messages,
coordinationLog: update.coordinationLog,
workflowJSON: update.workflowJSON,
},
}));
await client.updateExamples(exampleUpdates);
logger?.info(`Successfully updated ${updates.length} examples in LangSmith`);
}