# Conflicts: # packages/client/src/promise/generated/client.ts # packages/client/src/promise/generated/types.ts # packages/client/test/promise.test.ts # packages/core/src/plugin/host.ts # packages/core/src/plugin/internal.ts # packages/core/src/plugin/promise.ts # packages/core/test/plugin/host.ts # packages/plugin/src/v2/effect/index.ts # packages/plugin/src/v2/effect/integration.ts # packages/plugin/src/v2/promise/index.ts # packages/plugin/src/v2/promise/integration.ts # packages/protocol/src/client.ts # packages/schema/src/index.ts # packages/sdk/js/src/v2/gen/sdk.gen.ts
65 lines
2.4 KiB
TypeScript
65 lines
2.4 KiB
TypeScript
import { InvalidRequestError, SessionNotFoundError } from "./errors.js"
|
|
import { makeDefaultApi } from "./api.js"
|
|
import type { Api } from "./api.js"
|
|
import type { Context } from "effect"
|
|
import { HttpApiMiddleware } from "effect/unstable/httpapi"
|
|
import type { EventGroup } from "./groups/event.js"
|
|
|
|
class LocationMiddleware extends HttpApiMiddleware.Service<LocationMiddleware>()(
|
|
"@opencode-ai/client/LocationMiddleware",
|
|
) {}
|
|
|
|
class SessionLocationMiddleware extends HttpApiMiddleware.Service<SessionLocationMiddleware>()(
|
|
"@opencode-ai/client/SessionLocationMiddleware",
|
|
{ error: [InvalidRequestError, SessionNotFoundError] },
|
|
) {}
|
|
|
|
type ClientApiShape = Api<
|
|
Context.Service.Identifier<typeof LocationMiddleware>,
|
|
Context.Service.Shape<typeof LocationMiddleware>,
|
|
Context.Service.Identifier<typeof SessionLocationMiddleware>,
|
|
Context.Service.Shape<typeof SessionLocationMiddleware>,
|
|
Context.Service.Identifier<typeof SessionLocationMiddleware>,
|
|
Context.Service.Shape<typeof SessionLocationMiddleware>,
|
|
typeof EventGroup
|
|
>
|
|
|
|
export const ClientApi: ClientApiShape = makeDefaultApi({
|
|
locationMiddleware: LocationMiddleware,
|
|
// The real server uses a form-specific middleware with an undocumented `global` sentinel branch.
|
|
// The generated client only needs a middleware identity for API typing.
|
|
formLocationMiddleware: SessionLocationMiddleware,
|
|
sessionLocationMiddleware: SessionLocationMiddleware,
|
|
})
|
|
|
|
export const groupNames = {
|
|
"server.health": "health",
|
|
"server.debug": "debug",
|
|
"server.location": "location",
|
|
"server.agent": "agent",
|
|
"server.plugin": "plugin",
|
|
"server.session": "session",
|
|
"server.message": "message",
|
|
"server.model": "model",
|
|
"server.generate": "generate",
|
|
"server.provider": "provider",
|
|
"server.integration": "integration",
|
|
"server.search": "search",
|
|
"server.credential": "credential",
|
|
"server.form": "form",
|
|
"server.permission": "permission",
|
|
"server.fs": "file",
|
|
"server.command": "command",
|
|
"server.skill": "skill",
|
|
"server.event": "event",
|
|
"server.pty": "pty",
|
|
"server.shell": "shell",
|
|
"server.question": "question",
|
|
"server.reference": "reference",
|
|
"server.project": "project",
|
|
"server.projectCopy": "projectCopy",
|
|
"server.vcs": "vcs",
|
|
} as const
|
|
|
|
export const promiseOmitEndpoints = new Set(["pty.connect", "pty.connectToken"])
|
|
export const effectOmitEndpoints = new Set(["fs.read", "pty.connect", "pty.connectToken"])
|