chore: generate

This commit is contained in:
opencode-agent[bot]
2026-05-21 03:37:50 +00:00
parent 39ea816a72
commit d9ed62e51c
12 changed files with 35 additions and 55 deletions
@@ -88,9 +88,7 @@ it.live("login normalizes trailing slashes in the provided server URL", () =>
}), }),
) )
const result = yield* Account.use.login("https://one.example.com/").pipe( const result = yield* Account.use.login("https://one.example.com/").pipe(Effect.provide(live(client)))
Effect.provide(live(client)),
)
expect(seen).toEqual(["POST https://one.example.com/auth/device/code"]) expect(seen).toEqual(["POST https://one.example.com/auth/device/code"])
expect(result.server).toBe("https://one.example.com") expect(result.server).toBe("https://one.example.com")
@@ -108,9 +106,7 @@ it.live("login maps transport failures to account transport errors", () =>
), ),
) )
const error = yield* Effect.flip( const error = yield* Effect.flip(Account.use.login("https://one.example.com").pipe(Effect.provide(live(client))))
Account.use.login("https://one.example.com").pipe(Effect.provide(live(client))),
)
expect(error).toBeInstanceOf(AccountTransportError) expect(error).toBeInstanceOf(AccountTransportError)
if (error instanceof AccountTransportError) { if (error instanceof AccountTransportError) {
@@ -151,10 +151,8 @@ const runWorkspace = <A, E>(effect: Effect.Effect<A, E, Workspace.Service>) => {
const ctx = currentInstance() const ctx = currentInstance()
return AppRuntime.runPromise(ctx ? effect.pipe(Effect.provideService(InstanceRef, ctx)) : effect) return AppRuntime.runPromise(ctx ? effect.pipe(Effect.provideService(InstanceRef, ctx)) : effect)
} }
const createWorkspace = (input: Workspace.CreateInput) => const createWorkspace = (input: Workspace.CreateInput) => runWorkspace(Workspace.use.create(input))
runWorkspace(Workspace.use.create(input)) const warpWorkspaceSession = (input: Workspace.SessionWarpInput) => runWorkspace(Workspace.use.sessionWarp(input))
const warpWorkspaceSession = (input: Workspace.SessionWarpInput) =>
runWorkspace(Workspace.use.sessionWarp(input))
const listWorkspaces = (project: Parameters<Workspace.Interface["list"]>[0]) => const listWorkspaces = (project: Parameters<Workspace.Interface["list"]>[0]) =>
runWorkspace(Workspace.use.list(project)) runWorkspace(Workspace.use.list(project))
const syncListWorkspaces = (project: Parameters<Workspace.Interface["syncList"]>[0]) => const syncListWorkspaces = (project: Parameters<Workspace.Interface["syncList"]>[0]) =>
@@ -162,16 +160,13 @@ const syncListWorkspaces = (project: Parameters<Workspace.Interface["syncList"]>
const getWorkspace = (id: WorkspaceID) => runWorkspace(Workspace.use.get(id)) const getWorkspace = (id: WorkspaceID) => runWorkspace(Workspace.use.get(id))
const removeWorkspace = (id: WorkspaceID) => runWorkspace(Workspace.use.remove(id)) const removeWorkspace = (id: WorkspaceID) => runWorkspace(Workspace.use.remove(id))
const workspaceStatus = () => runWorkspace(Workspace.use.status()) const workspaceStatus = () => runWorkspace(Workspace.use.status())
const isWorkspaceSyncing = (id: WorkspaceID) => const isWorkspaceSyncing = (id: WorkspaceID) => runWorkspace(Workspace.use.isSyncing(id))
runWorkspace(Workspace.use.isSyncing(id))
const startWorkspaceSyncing = (projectID: ProjectID) => { const startWorkspaceSyncing = (projectID: ProjectID) => {
void runWorkspace(Workspace.use.startWorkspaceSyncing(projectID)) void runWorkspace(Workspace.use.startWorkspaceSyncing(projectID))
} }
const startWorkspaceSyncingWithFlag = (projectID: ProjectID, experimentalWorkspaces: boolean) => const startWorkspaceSyncingWithFlag = (projectID: ProjectID, experimentalWorkspaces: boolean) =>
Effect.runPromise( Effect.runPromise(
Workspace.use.startWorkspaceSyncing(projectID).pipe( Workspace.use.startWorkspaceSyncing(projectID).pipe(Effect.provide(workspaceLayer(experimentalWorkspaces))),
Effect.provide(workspaceLayer(experimentalWorkspaces)),
),
) )
const waitForWorkspaceSync = ( const waitForWorkspaceSync = (
workspaceID: WorkspaceID, workspaceID: WorkspaceID,
@@ -937,9 +932,7 @@ describe("workspace CRUD", () => {
) )
attachSessionToWorkspace(session.id, previous.id) attachSessionToWorkspace(session.id, previous.id)
const workspaceCtx = await AppRuntime.runPromise( const workspaceCtx = await AppRuntime.runPromise(InstanceStore.use.load({ directory: workspaceTmp.path }))
InstanceStore.use.load({ directory: workspaceTmp.path }),
)
const workspaceProjectID = await context.provide(workspaceCtx, async () => { const workspaceProjectID = await context.provide(workspaceCtx, async () => {
const id = workspaceCtx.project.id const id = workspaceCtx.project.id
expect(id).not.toBe(projectID) expect(id).not.toBe(projectID)
@@ -72,13 +72,10 @@ describe("plugin.auth-override", () => {
const plain = yield* tmpdirScoped({ git: true }) const plain = yield* tmpdirScoped({ git: true })
const plugin = pathToFileURL(path.join(pluginDir, "custom-copilot-auth.ts")).href const plugin = pathToFileURL(path.join(pluginDir, "custom-copilot-auth.ts")).href
const methods = yield* ProviderAuth.use.methods().pipe( const methods = yield* ProviderAuth.use.methods().pipe(Effect.provide(layer(tmp.directory, [plugin])))
Effect.provide(layer(tmp.directory, [plugin])), const plainMethods = yield* ProviderAuth.use
) .methods()
const plainMethods = yield* ProviderAuth.use.methods().pipe( .pipe(Effect.provide(layer(plain, [])), provideInstance(plain))
Effect.provide(layer(plain, [])),
provideInstance(plain),
)
const copilot = methods[ProviderID.make("github-copilot")] const copilot = methods[ProviderID.make("github-copilot")]
expect(copilot).toBeDefined() expect(copilot).toBeDefined()
@@ -1680,7 +1680,8 @@ it.effect("opencode loader keeps paid models when config apiKey is present", ()
}) })
const listIn = (directory: string) => const listIn = (directory: string) =>
Provider.use.list() Provider.use
.list()
.pipe(provideInstanceEffect(directory)) .pipe(provideInstanceEffect(directory))
.pipe(Effect.provide(InstanceLayer.layer), Effect.provide(CrossSpawnSpawner.defaultLayer)) .pipe(Effect.provide(InstanceLayer.layer), Effect.provide(CrossSpawnSpawner.defaultLayer))
@@ -1698,7 +1699,8 @@ it.effect("opencode loader keeps paid models when auth exists", () =>
const keyedDir = yield* tmpdirScoped() const keyedDir = yield* tmpdirScoped()
const listIn = (directory: string) => const listIn = (directory: string) =>
Provider.use.list() Provider.use
.list()
.pipe(provideInstanceEffect(directory)) .pipe(provideInstanceEffect(directory))
.pipe(Effect.provide(InstanceLayer.layer), Effect.provide(CrossSpawnSpawner.defaultLayer)) .pipe(Effect.provide(InstanceLayer.layer), Effect.provide(CrossSpawnSpawner.defaultLayer))
@@ -12,9 +12,8 @@ void Log.init({ print: false })
const it = testEffect(Layer.mergeAll(SessionNs.defaultLayer, Project.defaultLayer, CrossSpawnSpawner.defaultLayer)) const it = testEffect(Layer.mergeAll(SessionNs.defaultLayer, Project.defaultLayer, CrossSpawnSpawner.defaultLayer))
const withSession = (input?: Parameters<SessionNs.Interface["create"]>[0]) => const withSession = (input?: Parameters<SessionNs.Interface["create"]>[0]) =>
Effect.acquireRelease( Effect.acquireRelease(SessionNs.use.create(input), (created) =>
SessionNs.use.create(input), SessionNs.Service.use((session) => session.remove(created.id).pipe(Effect.ignore)),
(created) => SessionNs.Service.use((session) => session.remove(created.id).pipe(Effect.ignore)),
) )
describe("session.listGlobal", () => { describe("session.listGlobal", () => {
@@ -424,10 +424,9 @@ describe("workspace HttpApi", () => {
body: JSON.stringify({ type: "remote-session-target", branch: null }), body: JSON.stringify({ type: "remote-session-target", branch: null }),
}) })
const workspace = (yield* Effect.promise(() => created.json())) as Workspace.Info const workspace = (yield* Effect.promise(() => created.json())) as Workspace.Info
const session = yield* Session.use.create().pipe( const session = yield* Session.use
Effect.provideService(WorkspaceRef, workspace.id), .create()
provideInstance(dir), .pipe(Effect.provideService(WorkspaceRef, workspace.id), provideInstance(dir))
)
try { try {
const response = yield* request(`http://localhost/session/${session.id}/message`, dir, { const response = yield* request(`http://localhost/session/${session.id}/message`, dir, {
@@ -21,9 +21,8 @@ describe("session action routes", () => {
() => () =>
Effect.gen(function* () { Effect.gen(function* () {
const test = yield* TestInstance const test = yield* TestInstance
const session = yield* Effect.acquireRelease( const session = yield* Effect.acquireRelease(SessionNs.use.create({}), (created) =>
SessionNs.use.create({}), SessionNs.use.remove(created.id).pipe(Effect.ignore),
(created) => SessionNs.use.remove(created.id).pipe(Effect.ignore),
) )
const res = yield* Effect.promise(() => const res = yield* Effect.promise(() =>
@@ -34,10 +34,7 @@ function pathFor(template: string, params: Record<string, string>) {
} }
const withSession = (input?: Parameters<Session.Interface["create"]>[0]) => const withSession = (input?: Parameters<Session.Interface["create"]>[0]) =>
Effect.acquireRelease( Effect.acquireRelease(Session.use.create(input), (created) => Session.use.remove(created.id).pipe(Effect.ignore))
Session.use.create(input),
(created) => Session.use.remove(created.id).pipe(Effect.ignore),
)
describe("session diff with missing patch (#26574)", () => { describe("session diff with missing patch (#26574)", () => {
it.instance( it.instance(
@@ -27,9 +27,8 @@ const it = testEffect(
) )
const withSession = (input?: Parameters<SessionNs.Interface["create"]>[0]) => const withSession = (input?: Parameters<SessionNs.Interface["create"]>[0]) =>
Effect.acquireRelease( Effect.acquireRelease(SessionNs.use.create(input), (created) =>
SessionNs.use.create(input), SessionNs.Service.use((session) => session.remove(created.id).pipe(Effect.ignore)),
(created) => SessionNs.Service.use((session) => session.remove(created.id).pipe(Effect.ignore)),
) )
afterEach(async () => { afterEach(async () => {
@@ -39,9 +39,8 @@ const withoutWatcher = <A, E, R>(effect: Effect.Effect<A, E, R>) => {
) )
} }
const sessionScoped = Effect.acquireRelease( const sessionScoped = Effect.acquireRelease(SessionNs.use.create({}), (session) =>
SessionNs.use.create({}), SessionNs.use.remove(session.id).pipe(Effect.ignore),
(session) => SessionNs.use.remove(session.id).pipe(Effect.ignore),
) )
const fill = Effect.fn("SessionMessagesTest.fill")(function* ( const fill = Effect.fn("SessionMessagesTest.fill")(function* (
@@ -292,11 +292,13 @@ function createSummaryCompaction(sessionID: SessionID) {
} }
function readCompactionPart(sessionID: SessionID) { function readCompactionPart(sessionID: SessionID) {
return SessionNs.use.messages({ sessionID }).pipe( return SessionNs.use
Effect.map((messages) => .messages({ sessionID })
messages.at(-2)?.parts.find((item): item is MessageV2.CompactionPart => item.type === "compaction"), .pipe(
), Effect.map((messages) =>
) messages.at(-2)?.parts.find((item): item is MessageV2.CompactionPart => item.type === "compaction"),
),
)
} }
function llm() { function llm() {
@@ -163,9 +163,7 @@ describe("ShareNext", () => {
return Effect.succeed(json(req, { ok: true })) return Effect.succeed(json(req, { ok: true }))
}) })
const result = yield* ShareNext.use.create(session.id).pipe( const result = yield* ShareNext.use.create(session.id).pipe(Effect.provide(live(client)))
Effect.provide(live(client)),
)
expect(result.id).toBe("shr_abc") expect(result.id).toBe("shr_abc")
expect(result.url).toBe("https://legacy-share.example.com/share/abc") expect(result.url).toBe("https://legacy-share.example.com/share/abc")