diff --git a/extension/src/patch.ts b/extension/src/patch.ts index c5025657f3..016cf865a7 100644 --- a/extension/src/patch.ts +++ b/extension/src/patch.ts @@ -19,6 +19,7 @@ export const STUDIO_ENDPOINT = 'https://studio.iterative.ai/api/live' type ExperimentDetails = { baselineSha: string + sha: string metrics: ValueTreeRoot | undefined name: string params: ValueTreeRoot @@ -29,6 +30,7 @@ type RequestBody = { repo_url: string name: string baseline_sha: string + experiment_rev: string metrics: ValueTreeRoot params: ValueTreeRoot type: 'done' @@ -50,22 +52,23 @@ const collectExperiment = (data: ExperimentFields) => { const findExperimentByName = ( name: string, - sha: string, + baselineSha: string, experimentsObject: ExperimentsCommitOutput ) => { - for (const experiment of Object.values(experimentsObject)) { - if (experiment.data?.name !== name) { + for (const [sha, { data }] of Object.entries(experimentsObject)) { + if (data?.name !== name) { continue } - if (experiment?.data) { - const { metrics, params } = collectExperiment(experiment.data) + if (data) { + const { metrics, params } = collectExperiment(data) return { - baselineSha: sha, + baselineSha, metrics, name, - params + params, + sha } } } @@ -114,7 +117,7 @@ const shareWithProgress = ( studioAccessToken: string ): Thenable => Toast.showProgress('Sharing Experiment', async progress => { - const { metrics, params, baselineSha, name } = experimentDetails + const { metrics, params, baselineSha, sha, name } = experimentDetails progress.report({ increment: 0, @@ -125,6 +128,7 @@ const shareWithProgress = ( const response = await sendPostRequest(studioAccessToken, { baseline_sha: baselineSha, client: 'vscode', + experiment_rev: sha, metrics: metrics || {}, name, params: params || {}, diff --git a/extension/src/test/suite/patch.test.ts b/extension/src/test/suite/patch.test.ts index d54ac9ee0c..4eb1f7d688 100644 --- a/extension/src/test/suite/patch.test.ts +++ b/extension/src/test/suite/patch.test.ts @@ -68,6 +68,7 @@ suite('Patch Test Suite', () => { body: JSON.stringify({ baseline_sha: '53c3851f46955fa3e2b8f6e1c52999acc8c9ea77', client: 'vscode', + experiment_rev: '4fb124aebddb2adf1545030907687fa9a4c80e70', metrics, name, params: { @@ -133,6 +134,7 @@ suite('Patch Test Suite', () => { body: JSON.stringify({ baseline_sha: '53c3851f46955fa3e2b8f6e1c52999acc8c9ea77', client: 'vscode', + experiment_rev: '4fb124aebddb2adf1545030907687fa9a4c80e70', metrics, name, params: {