feat(core): wire v2 subagent tool (#34320)

This commit is contained in:
Kit Langton 2026-06-28 12:52:39 -04:00 committed by GitHub
commit 94e3a29d2f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 631 additions and 49 deletions

View file

@ -69,12 +69,14 @@ export const SessionHandler = HttpApiBuilder.group(Api, "server.session", (handl
"session.create",
Effect.fn(function* (ctx) {
return {
data: yield* session.create({
id: ctx.payload.id,
agent: ctx.payload.agent,
model: ctx.payload.model,
location: ctx.payload.location ?? { directory: AbsolutePath.make(process.cwd()) },
}),
data: yield* session
.create({
id: ctx.payload.id,
agent: ctx.payload.agent,
model: ctx.payload.model,
location: ctx.payload.location ?? { directory: AbsolutePath.make(process.cwd()) },
})
.pipe(Effect.orDie),
}
}),
)
@ -222,14 +224,6 @@ export const SessionHandler = HttpApiBuilder.group(Api, "server.session", (handl
}),
),
),
Effect.catchTag("Session.OperationUnavailableError", (error) =>
Effect.fail(
new ServiceUnavailableError({
message: `Session ${error.operation} is not available yet`,
service: `session.${error.operation}`,
}),
),
),
)
return HttpApiSchema.NoContent.make()
}),

View file

@ -10,6 +10,7 @@ import { SessionV2 } from "@opencode-ai/core/session"
import { SessionExecution } from "@opencode-ai/core/session/execution"
import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
import { SessionExecutionLocal } from "@opencode-ai/core/session/execution/local"
import { SubagentTool } from "@opencode-ai/core/tool/subagent"
import { ToolOutputStore } from "@opencode-ai/core/tool-output-store"
import { HttpRouter, HttpServer } from "effect/unstable/http"
import { HttpApiBuilder } from "effect/unstable/httpapi"
@ -29,6 +30,7 @@ const applicationServices = LayerNode.group([
httpClient,
ToolOutputStore.cleanupNode,
SessionV2.node,
SubagentTool.node,
PermissionSaved.node,
PtyTicket.node,
Credential.node,