index.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import type { Plugin } from "@opencode-ai/plugin";
  2. import { getAgentConfigs } from "./agents";
  3. import { BackgroundTaskManager } from "./features";
  4. import {
  5. createBackgroundTools,
  6. lsp_goto_definition,
  7. lsp_find_references,
  8. lsp_diagnostics,
  9. lsp_rename,
  10. } from "./tools";
  11. import { loadPluginConfig } from "./config";
  12. import { createBuiltinMcps } from "./mcp";
  13. const OhMyOpenCodeLite: Plugin = async (ctx) => {
  14. const config = loadPluginConfig(ctx.directory);
  15. const agents = getAgentConfigs(config);
  16. const backgroundManager = new BackgroundTaskManager(ctx);
  17. const backgroundTools = createBackgroundTools(ctx, backgroundManager);
  18. const mcps = createBuiltinMcps(config.disabled_mcps);
  19. return {
  20. name: "oh-my-opencode-lite",
  21. agent: agents,
  22. tool: {
  23. ...backgroundTools,
  24. lsp_goto_definition,
  25. lsp_find_references,
  26. lsp_diagnostics,
  27. lsp_rename,
  28. },
  29. mcp: mcps,
  30. config: async (opencodeConfig: Record<string, unknown>) => {
  31. (opencodeConfig as { default_agent?: string }).default_agent = "orchestrator";
  32. const configAgent = opencodeConfig.agent as Record<string, unknown> | undefined;
  33. if (!configAgent) {
  34. opencodeConfig.agent = { ...agents };
  35. } else {
  36. Object.assign(configAgent, agents);
  37. }
  38. // Merge MCP configs
  39. const configMcp = opencodeConfig.mcp as Record<string, unknown> | undefined;
  40. if (!configMcp) {
  41. opencodeConfig.mcp = { ...mcps };
  42. } else {
  43. Object.assign(configMcp, mcps);
  44. }
  45. },
  46. };
  47. };
  48. export default OhMyOpenCodeLite;
  49. export type { PluginConfig, AgentOverrideConfig, AgentName, McpName } from "./config";
  50. export type { RemoteMcpConfig } from "./mcp";