chore: generate

This commit is contained in:
opencode-agent[bot]
2026-06-03 03:11:53 +00:00
parent 70cd4bf0ce
commit 7a66eae586
2 changed files with 39 additions and 49 deletions
+31 -39
View File
@@ -103,43 +103,38 @@ export const layer = Layer.effect(
) { ) {
const completed_at = yield* Clock.currentTimeMillis const completed_at = yield* Clock.currentTimeMillis
const s = yield* InstanceState.get(state) const s = yield* InstanceState.get(state)
const result = yield* SynchronizedRef.modify( const result = yield* SynchronizedRef.modify(s.jobs, (jobs): readonly [FinishResult, Map<string, Active>] => {
s.jobs, const job = jobs.get(id)
(jobs): readonly [FinishResult, Map<string, Active>] => { if (!job) return [{}, jobs]
const job = jobs.get(id) if (job.token !== token) return [{}, jobs]
if (!job) return [{}, jobs] if (job.info.status !== "running") return [{ info: snapshot(job) }, jobs]
if (job.token !== token) return [{}, jobs] const pending = job.pending - 1
if (job.info.status !== "running") return [{ info: snapshot(job) }, jobs] const output =
const pending = job.pending - 1 Exit.isSuccess(exit) && (!job.output || sequence > job.output.sequence)
const output = Exit.isSuccess(exit) && (!job.output || sequence > job.output.sequence)
? { sequence, text: exit.value } ? { sequence, text: exit.value }
: job.output : job.output
if (Exit.isSuccess(exit) && pending > 0) { if (Exit.isSuccess(exit) && pending > 0) {
return [{}, new Map(jobs).set(id, { ...job, pending, output })] return [{}, new Map(jobs).set(id, { ...job, pending, output })]
} }
const status: Exclude<Status, "running"> = Exit.isSuccess(exit) const status: Exclude<Status, "running"> = Exit.isSuccess(exit)
? "completed" ? "completed"
: Cause.hasInterruptsOnly(exit.cause) : Cause.hasInterruptsOnly(exit.cause)
? "cancelled" ? "cancelled"
: "error" : "error"
const next = { const next = {
...job, ...job,
pending: 0, pending: 0,
output, output,
info: { info: {
...job.info, ...job.info,
status, status,
completed_at, completed_at,
...(output ? { output: output.text } : {}), ...(output ? { output: output.text } : {}),
...(Exit.isFailure(exit) ? { error: errorText(Cause.squash(exit.cause)) } : {}), ...(Exit.isFailure(exit) ? { error: errorText(Cause.squash(exit.cause)) } : {}),
}, },
} }
return [ return [{ info: snapshot(next), done: job.done, scope: job.scope }, new Map(jobs).set(id, next)]
{ info: snapshot(next), done: job.done, scope: job.scope }, })
new Map(jobs).set(id, next),
]
},
)
if (result.info && result.done) yield* Deferred.succeed(result.done, result.info).pipe(Effect.ignore) if (result.info && result.done) yield* Deferred.succeed(result.done, result.info).pipe(Effect.ignore)
if (result.scope) { if (result.scope) {
yield* Scope.close(result.scope, Exit.void).pipe(Effect.forkIn(s.scope, { startImmediately: true })) yield* Scope.close(result.scope, Exit.void).pipe(Effect.forkIn(s.scope, { startImmediately: true }))
@@ -265,10 +260,7 @@ export const layer = Layer.effect(
completed_at, completed_at,
}, },
} }
return [ return [{ info: snapshot(next), done: job.done, scope: job.scope }, new Map(jobs).set(id, next)]
{ info: snapshot(next), done: job.done, scope: job.scope },
new Map(jobs).set(id, next),
]
}, },
) )
if (result.info && result.done) yield* Deferred.succeed(result.done, result.info).pipe(Effect.ignore) if (result.info && result.done) yield* Deferred.succeed(result.done, result.info).pipe(Effect.ignore)
+8 -10
View File
@@ -257,16 +257,14 @@ export const TaskTool = Tool.define(
metadata, metadata,
run: runTask(), run: runTask(),
}) })
yield* background yield* background.wait({ id: info.id }).pipe(
.wait({ id: info.id }) Effect.flatMap((result) => {
.pipe( if (result.info?.status === "completed") return inject("completed", result.info.output ?? "")
Effect.flatMap((result) => { if (result.info?.status === "error") return inject("error", result.info.error ?? "")
if (result.info?.status === "completed") return inject("completed", result.info.output ?? "") return Effect.void
if (result.info?.status === "error") return inject("error", result.info.error ?? "") }),
return Effect.void Effect.forkIn(scope, { startImmediately: true }),
}), )
Effect.forkIn(scope, { startImmediately: true }),
)
return { return {
title: params.description, title: params.description,