Files
OmniRoute/@omniroute/opencode-provider/index.ts
oyi77 2d601ea459 feat: CLI Integration Suite for issue #2016
- Add tool-detector.ts (6 CLI tools: claude, codex, opencode, cline, kilocode, continue)
- Add config-generator/ factory + 6 generators (JSON + YAML)
- Add doctor/checks.ts for CLI tool health checks
- Add log-streamer.ts for usage log streaming
- Add @omniroute/opencode-provider npm package
- Add 5 CLI commands: config, status, logs, update, provider
- Add 3 API routes: config, detect, apply
- Update bin/omniroute.mjs, bin/cli/index.mjs, package.json
- Update docs: SETUP_GUIDE.md, CLI-TOOLS.md
- All tests pass (4302/4326, 24 pre-existing failures unchanged)
2026-05-14 17:26:30 +07:00

55 lines
1.2 KiB
TypeScript

/**
* OpenCode provider plugin for OmniRoute AI Gateway
*
* Usage:
* import { createOmniRouteProvider } from "@omniroute/opencode-provider";
* const provider = createOmniRouteProvider({
* baseURL: "http://localhost:20128/v1",
* apiKey: "your-api-key",
* });
*
* Then add to OpenCode settings:
* { "provider": provider }
*/
export interface OmniRouteProviderOptions {
baseURL: string;
apiKey: string;
model?: string;
}
export interface OmniRouteProvider {
id: string;
name: string;
npm: string;
options: Record<string, unknown>;
auth: { type: string; apiKey: string };
}
export function createOmniRouteProvider(options: OmniRouteProviderOptions): OmniRouteProvider {
if (!options.baseURL) {
throw new Error("baseURL is required");
}
if (!options.apiKey) {
throw new Error("apiKey is required");
}
const baseURL = options.baseURL.replace(/\/+$/, "");
return {
id: "omniroute",
name: "OmniRoute AI Gateway",
npm: "@omniroute/opencode-provider",
options: {
baseURL: `${baseURL}/v1`,
model: options.model || "opencode",
},
auth: {
type: "apiKey",
apiKey: options.apiKey,
},
};
}
export default createOmniRouteProvider;