24 lines · 1008 B · TypeScript
RawDownload
import * as Effect from "effect/Effect";import * as SqlClient from "effect/unstable/sql/SqlClient"; export default Effect.gen(function* () {  const sql = yield* SqlClient.SqlClient;   yield* sql`    CREATE INDEX orchestration_v2_projection_turn_items_thread_run_idx    ON orchestration_v2_projection_turn_items(thread_id, run_id)  `;  // Shell background work includes idle items as well as pending/running/waiting.  // Keep this predicate aligned with ProjectionStore's pending-item query.  yield* sql`    CREATE INDEX orchestration_v2_projection_turn_items_shell_pending_idx    ON orchestration_v2_projection_turn_items(thread_id, run_id)    WHERE type IN ('command_execution', 'dynamic_tool', 'subagent')      AND status NOT IN ('completed', 'interrupted', 'failed', 'cancelled')  `;  yield* sql`    CREATE INDEX orchestration_v2_projection_messages_latest_user_idx    ON orchestration_v2_projection_messages(thread_id, updated_at DESC, message_id DESC)    WHERE role = 'user'  `;});