feat: add URL-driven workspace state and streamed Codex research

This commit is contained in:
2026-09-28 20:08:28 +09:00
parent 85d23a328b
commit 8085ad2f90
207 changed files with 15287 additions and 16026 deletions
+17 -33
View File
@@ -1,38 +1,22 @@
import { createServerFn } from '@tanstack/react-start'
import { z } from 'zod'
import { startResearchInput } from './model'
import { createServerFn } from "@tanstack/react-start";
import { z } from "zod";
import { startResearchInput } from "./model";
export const loadResearchStatus = createServerFn({ method: 'GET' }).handler(
async () => {
const { researchService } = await import('./runner.server')
return researchService().status()
},
)
export const startResearch = createServerFn({ method: 'POST' })
export const loadResearchStatus = createServerFn({ method: "GET" })
.validator(z.object({ id: z.uuid().optional() }).strict())
.handler(async ({ data }) => {
const { researchService } = await import("./runner.server");
return researchService().status(data.id);
});
export const startResearch = createServerFn({ method: "POST" })
.validator(startResearchInput)
.handler(async ({ data }) => {
const { researchService } = await import('./runner.server')
return researchService().start(data)
})
export const cancelResearch = createServerFn({ method: 'POST' })
const { researchService } = await import("./runner.server");
return researchService().start(data);
});
export const cancelResearch = createServerFn({ method: "POST" })
.validator(z.object({ id: z.string().uuid() }).strict())
.handler(async ({ data }) => {
const { researchService } = await import('./runner.server')
return researchService().cancel(data.id)
})
export const resetResearch = createServerFn({ method: 'POST' })
.validator(z.object({ id: z.string().uuid() }).strict())
.handler(async ({ data }) => {
const { researchService } = await import('./runner.server')
return researchService().reset(data.id)
})
export const selectResearch = createServerFn({ method: 'POST' })
.validator(
z.object({ id: z.uuid(), currentId: z.uuid().nullable() }).strict(),
)
.handler(async ({ data }) => {
const { researchService } = await import('./runner.server')
return researchService().select(data.id, data.currentId)
})
const { researchService } = await import("./runner.server");
return researchService().cancel(data.id);
});