diff --git a/apps/rowboat/app/lib/mongodb.ts b/apps/rowboat/app/lib/mongodb.ts index 10e1ffdd..fb6d6ca9 100644 --- a/apps/rowboat/app/lib/mongodb.ts +++ b/apps/rowboat/app/lib/mongodb.ts @@ -7,7 +7,7 @@ import { Project } from "./types/project_types"; import { EmbeddingDoc } from "./types/datasource_types"; import { DataSourceDoc } from "./types/datasource_types"; import { DataSource } from "./types/datasource_types"; -import { Scenario } from "./types/testing_types"; +import { Scenario, SimulationResult, SimulationRun } from "./types/testing_types"; import { z } from 'zod'; const client = new MongoClient(process.env["MONGODB_CONNECTION_STRING"] || "mongodb://localhost:27017"); @@ -21,4 +21,6 @@ export const projectMembersCollection = db.collection>('webpages'); export const agentWorkflowsCollection = db.collection>("agent_workflows"); export const scenariosCollection = db.collection>("scenarios"); -export const apiKeysCollection = db.collection>("api_keys"); \ No newline at end of file +export const apiKeysCollection = db.collection>("api_keys"); +export const simulationRunsCollection = db.collection>("simulation_runs"); +export const simulationResultsCollection = db.collection>("simulation_results"); \ No newline at end of file diff --git a/apps/rowboat/app/lib/types/testing_types.ts b/apps/rowboat/app/lib/types/testing_types.ts index 9ccb4bf6..16e6b129 100644 --- a/apps/rowboat/app/lib/types/testing_types.ts +++ b/apps/rowboat/app/lib/types/testing_types.ts @@ -20,3 +20,23 @@ export const SimulationChatMessagesData = z.object({ }); export const SimulationData = z.union([SimulationArticleData, SimulationScenarioData, SimulationChatMessagesData]); +export const SimulationRun = z.object({ + projectId: z.string(), + status: z.union([ + z.literal('pending'), + z.literal('running'), + z.literal('completed'), + z.literal('cancelled'), + z.literal('failed') + ]), + scenarioIds: z.array(z.string()), + startedAt: z.string().datetime(), + completedAt: z.string().datetime().optional(), +}); + +export const SimulationResult = z.object({ + scenarioId: z.string(), + result: z.union([z.literal('pass'), z.literal('fail')]), + details: z.string() +}); +