chore: generate
This commit is contained in:
@@ -39,7 +39,10 @@ export type Interface = {
|
|||||||
|
|
||||||
export class Service extends Context.Service<Service, Interface>()("@opencode/ACPNext/Service") {}
|
export class Service extends Context.Service<Service, Interface>()("@opencode/ACPNext/Service") {}
|
||||||
|
|
||||||
export function make(input: { sdk: OpencodeClient; connection?: Pick<AgentSideConnection, "sessionUpdate"> }): Interface {
|
export function make(input: {
|
||||||
|
sdk: OpencodeClient
|
||||||
|
connection?: Pick<AgentSideConnection, "sessionUpdate">
|
||||||
|
}): Interface {
|
||||||
const sessions = new Map<string, SessionState>()
|
const sessions = new Map<string, SessionState>()
|
||||||
const directories = new Map<string, Promise<Directory.Snapshot>>()
|
const directories = new Map<string, Promise<Directory.Snapshot>>()
|
||||||
const registeredMcp = new Map<string, Set<string>>()
|
const registeredMcp = new Map<string, Set<string>>()
|
||||||
@@ -401,7 +404,10 @@ function registerMcpServers(
|
|||||||
{ throwOnError: true },
|
{ throwOnError: true },
|
||||||
),
|
),
|
||||||
"mcp",
|
"mcp",
|
||||||
).pipe(Effect.tap(() => Effect.sync(() => current.add(server.name))), Effect.ignore),
|
).pipe(
|
||||||
|
Effect.tap(() => Effect.sync(() => current.add(server.name))),
|
||||||
|
Effect.ignore,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
{ concurrency: "unbounded" },
|
{ concurrency: "unbounded" },
|
||||||
).pipe(Effect.asVoid)
|
).pipe(Effect.asVoid)
|
||||||
|
|||||||
@@ -215,7 +215,6 @@ describe("ACP next service sessions", () => {
|
|||||||
expect(result.configOptions?.find((option) => option.id === "mode")?.currentValue).toBe("plan")
|
expect(result.configOptions?.find((option) => option.id === "mode")?.currentValue).toBe("plan")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
it("maps provider auth failures to auth-required request errors", async () => {
|
it("maps provider auth failures to auth-required request errors", async () => {
|
||||||
const service = ACPNextService.make({
|
const service = ACPNextService.make({
|
||||||
sdk: {
|
sdk: {
|
||||||
@@ -244,15 +243,15 @@ describe("ACP next service sessions", () => {
|
|||||||
it("does not cache failed directory snapshots", async () => {
|
it("does not cache failed directory snapshots", async () => {
|
||||||
let providersCalls = 0
|
let providersCalls = 0
|
||||||
const sdk = {
|
const sdk = {
|
||||||
config: {
|
config: {
|
||||||
providers: () => {
|
providers: () => {
|
||||||
providersCalls++
|
providersCalls++
|
||||||
if (providersCalls === 1) {
|
if (providersCalls === 1) {
|
||||||
return Promise.reject({ name: "ProviderAuthError", data: { providerID: "test" } })
|
return Promise.reject({ name: "ProviderAuthError", data: { providerID: "test" } })
|
||||||
}
|
}
|
||||||
return Promise.resolve({ data: { providers: [provider], default: { test: modelID } } })
|
return Promise.resolve({ data: { providers: [provider], default: { test: modelID } } })
|
||||||
},
|
},
|
||||||
get: () => Promise.resolve({ data: {} }),
|
get: () => Promise.resolve({ data: {} }),
|
||||||
},
|
},
|
||||||
app: {
|
app: {
|
||||||
agents: () => Promise.resolve({ data: [{ name: "build", mode: "primary", permission: [], options: {} }] }),
|
agents: () => Promise.resolve({ data: [{ name: "build", mode: "primary", permission: [], options: {} }] }),
|
||||||
|
|||||||
@@ -69,17 +69,14 @@ describe("opencode acp-next (subprocess)", () => {
|
|||||||
)
|
)
|
||||||
yield* acp.request<InitializeResponse>("initialize", { protocolVersion: 1 })
|
yield* acp.request<InitializeResponse>("initialize", { protocolVersion: 1 })
|
||||||
|
|
||||||
const session = expectOk(
|
const session = expectOk(yield* acp.request<NewSessionResponse>("session/new", { cwd: home, mcpServers: [] }))
|
||||||
yield* acp.request<NewSessionResponse>("session/new", { cwd: home, mcpServers: [] }),
|
|
||||||
)
|
|
||||||
expect(typeof session.sessionId).toBe("string")
|
expect(typeof session.sessionId).toBe("string")
|
||||||
expect(selectConfigOption(session.configOptions, "model")?.category).toBe("model")
|
expect(selectConfigOption(session.configOptions, "model")?.category).toBe("model")
|
||||||
|
|
||||||
const update = yield* acp.waitForNotification<SessionNotification>(
|
const update = yield* acp.waitForNotification<SessionNotification>(
|
||||||
"session/update",
|
"session/update",
|
||||||
(params) =>
|
(params) =>
|
||||||
params.sessionId === session.sessionId &&
|
params.sessionId === session.sessionId && params.update.sessionUpdate === "available_commands_update",
|
||||||
params.update.sessionUpdate === "available_commands_update",
|
|
||||||
)
|
)
|
||||||
expect(update.params?.sessionId).toBe(session.sessionId)
|
expect(update.params?.sessionId).toBe(session.sessionId)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user