oh-my-opencode 2.13.2 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.ja.md +71 -14
  2. package/README.md +169 -37
  3. package/README.zh-cn.md +68 -14
  4. package/dist/agents/metis.d.ts +18 -0
  5. package/dist/agents/momus.d.ts +6 -0
  6. package/dist/agents/orchestrator-sisyphus.d.ts +19 -0
  7. package/dist/agents/plan-prompt.d.ts +8 -5
  8. package/dist/agents/prometheus-prompt.d.ts +27 -0
  9. package/dist/agents/sisyphus-junior.d.ts +3 -0
  10. package/dist/agents/types.d.ts +1 -1
  11. package/dist/agents/utils.d.ts +4 -1
  12. package/dist/auth/antigravity/accounts.d.ts +40 -0
  13. package/dist/auth/antigravity/accounts.test.d.ts +1 -0
  14. package/dist/auth/antigravity/browser.d.ts +27 -0
  15. package/dist/auth/antigravity/browser.test.d.ts +1 -0
  16. package/dist/auth/antigravity/cli.d.ts +2 -0
  17. package/dist/auth/antigravity/cli.test.d.ts +1 -0
  18. package/dist/auth/antigravity/constants.d.ts +63 -1
  19. package/dist/auth/antigravity/constants.test.d.ts +1 -0
  20. package/dist/auth/antigravity/fetch.d.ts +2 -1
  21. package/dist/auth/antigravity/integration.test.d.ts +10 -0
  22. package/dist/auth/antigravity/oauth.d.ts +6 -40
  23. package/dist/auth/antigravity/oauth.test.d.ts +1 -0
  24. package/dist/auth/antigravity/request.d.ts +12 -0
  25. package/dist/auth/antigravity/request.test.d.ts +1 -0
  26. package/dist/auth/antigravity/storage.d.ts +5 -0
  27. package/dist/auth/antigravity/storage.test.d.ts +1 -0
  28. package/dist/auth/antigravity/thinking.d.ts +45 -1
  29. package/dist/auth/antigravity/thinking.test.d.ts +10 -0
  30. package/dist/auth/antigravity/token.test.d.ts +1 -0
  31. package/dist/auth/antigravity/types.d.ts +29 -5
  32. package/dist/cli/commands/auth.d.ts +2 -0
  33. package/dist/cli/index.js +341 -116
  34. package/dist/config/schema.d.ts +281 -7
  35. package/dist/features/background-agent/concurrency.d.ts +10 -0
  36. package/dist/features/background-agent/concurrency.test.d.ts +1 -0
  37. package/dist/features/background-agent/index.d.ts +1 -0
  38. package/dist/features/background-agent/manager.d.ts +16 -2
  39. package/dist/features/background-agent/types.d.ts +26 -0
  40. package/dist/features/boulder-state/constants.d.ts +10 -0
  41. package/dist/features/boulder-state/index.d.ts +3 -0
  42. package/dist/features/boulder-state/storage.d.ts +28 -0
  43. package/dist/features/boulder-state/storage.test.d.ts +1 -0
  44. package/dist/features/boulder-state/types.d.ts +24 -0
  45. package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -1
  46. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
  47. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -0
  48. package/dist/features/builtin-commands/types.d.ts +1 -1
  49. package/dist/features/hook-message-injector/injector.d.ts +2 -2
  50. package/dist/features/hook-message-injector/types.d.ts +3 -2
  51. package/dist/features/opencode-skill-loader/index.d.ts +1 -0
  52. package/dist/features/opencode-skill-loader/skill-content.d.ts +5 -0
  53. package/dist/features/opencode-skill-loader/skill-content.test.d.ts +1 -0
  54. package/dist/features/task-toast-manager/index.d.ts +2 -0
  55. package/dist/features/task-toast-manager/manager.d.ts +56 -0
  56. package/dist/features/task-toast-manager/manager.test.d.ts +1 -0
  57. package/dist/features/task-toast-manager/types.d.ts +16 -0
  58. package/dist/google-auth.js +2167 -161
  59. package/dist/hooks/agent-usage-reminder/constants.d.ts +1 -1
  60. package/dist/hooks/auto-slash-command/executor.d.ts +5 -1
  61. package/dist/hooks/auto-slash-command/index.d.ts +5 -1
  62. package/dist/hooks/claude-code-hooks/index.d.ts +2 -1
  63. package/dist/hooks/claude-code-hooks/types.d.ts +1 -0
  64. package/dist/hooks/index.d.ts +4 -0
  65. package/dist/hooks/keyword-detector/index.test.d.ts +1 -0
  66. package/dist/hooks/prometheus-md-only/constants.d.ts +6 -0
  67. package/dist/hooks/prometheus-md-only/index.d.ts +12 -0
  68. package/dist/hooks/prometheus-md-only/index.test.d.ts +1 -0
  69. package/dist/hooks/sisyphus-orchestrator/index.d.ts +35 -0
  70. package/dist/hooks/sisyphus-orchestrator/index.test.d.ts +1 -0
  71. package/dist/hooks/start-work/index.d.ts +16 -0
  72. package/dist/hooks/start-work/index.test.d.ts +1 -0
  73. package/dist/hooks/task-resume-info/index.d.ts +11 -0
  74. package/dist/hooks/todo-continuation-enforcer.d.ts +1 -0
  75. package/dist/index.js +23047 -14427
  76. package/dist/mcp/index.d.ts +4 -2
  77. package/dist/mcp/types.d.ts +1 -0
  78. package/dist/mcp/websearch.d.ts +8 -0
  79. package/dist/shared/external-plugin-detector.d.ts +18 -0
  80. package/dist/shared/external-plugin-detector.test.d.ts +1 -0
  81. package/dist/shared/index.d.ts +1 -0
  82. package/dist/shared/migration.d.ts +6 -0
  83. package/dist/tools/background-task/index.d.ts +1 -1
  84. package/dist/tools/call-omo-agent/constants.d.ts +1 -1
  85. package/dist/tools/index.d.ts +1 -0
  86. package/dist/tools/sisyphus-task/constants.d.ts +12 -0
  87. package/dist/tools/sisyphus-task/index.d.ts +3 -0
  88. package/dist/tools/sisyphus-task/tools.d.ts +16 -0
  89. package/dist/tools/sisyphus-task/tools.test.d.ts +1 -0
  90. package/dist/tools/sisyphus-task/types.d.ts +9 -0
  91. package/dist/tools/slashcommand/types.d.ts +2 -1
  92. package/package.json +3 -2
  93. package/README.ko.md +0 -1040
@@ -1,6 +1,8 @@
1
1
  export { McpNameSchema, type McpName } from "./types";
2
- export declare function createBuiltinMcps(disabledMcps?: string[]): Record<string, {
2
+ type RemoteMcpConfig = {
3
3
  type: "remote";
4
4
  url: string;
5
5
  enabled: boolean;
6
- }>;
6
+ headers?: Record<string, string>;
7
+ };
8
+ export declare function createBuiltinMcps(disabledMcps?: string[]): Record<string, RemoteMcpConfig>;
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  export declare const McpNameSchema: z.ZodEnum<{
3
+ websearch: "websearch";
3
4
  context7: "context7";
4
5
  grep_app: "grep_app";
5
6
  }>;
@@ -0,0 +1,8 @@
1
+ export declare const websearch: {
2
+ type: "remote";
3
+ url: string;
4
+ enabled: boolean;
5
+ headers: {
6
+ "x-api-key": string;
7
+ } | undefined;
8
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Detects external plugins that may conflict with oh-my-opencode features.
3
+ * Used to prevent crashes from concurrent notification plugins.
4
+ */
5
+ export interface ExternalNotifierResult {
6
+ detected: boolean;
7
+ pluginName: string | null;
8
+ allPlugins: string[];
9
+ }
10
+ /**
11
+ * Detect if any external notification plugin is configured.
12
+ * Returns information about detected plugins for logging/warning.
13
+ */
14
+ export declare function detectExternalNotificationPlugin(directory: string): ExternalNotifierResult;
15
+ /**
16
+ * Generate a warning message for users with conflicting notification plugins.
17
+ */
18
+ export declare function getNotificationConflictWarning(pluginName: string): string;
@@ -0,0 +1 @@
1
+ export {};
@@ -19,3 +19,4 @@ export * from "./migration";
19
19
  export * from "./opencode-config-dir";
20
20
  export * from "./opencode-version";
21
21
  export * from "./permission-compat";
22
+ export * from "./external-plugin-detector";
@@ -1,5 +1,6 @@
1
1
  export declare const AGENT_NAME_MAP: Record<string, string>;
2
2
  export declare const HOOK_NAME_MAP: Record<string, string>;
3
+ export declare const MODEL_TO_CATEGORY_MAP: Record<string, string>;
3
4
  export declare function migrateAgentNames(agents: Record<string, unknown>): {
4
5
  migrated: Record<string, unknown>;
5
6
  changed: boolean;
@@ -8,4 +9,9 @@ export declare function migrateHookNames(hooks: string[]): {
8
9
  migrated: string[];
9
10
  changed: boolean;
10
11
  };
12
+ export declare function migrateAgentConfigToCategory(config: Record<string, unknown>): {
13
+ migrated: Record<string, unknown>;
14
+ changed: boolean;
15
+ };
16
+ export declare function shouldDeleteAgentConfig(config: Record<string, unknown>, category: string): boolean;
11
17
  export declare function migrateConfigFile(configPath: string, rawConfig: Record<string, unknown>): boolean;
@@ -1,3 +1,3 @@
1
- export { createBackgroundTask, createBackgroundOutput, createBackgroundCancel, } from "./tools";
1
+ export { createBackgroundOutput, createBackgroundCancel, } from "./tools";
2
2
  export type * from "./types";
3
3
  export * from "./constants";
@@ -1,2 +1,2 @@
1
1
  export declare const ALLOWED_AGENTS: readonly ["explore", "librarian"];
2
- export declare const CALL_OMO_AGENT_DESCRIPTION = "Spawn explore/librarian agent. run_in_background REQUIRED (true=async with task_id, false=sync).\n\nAvailable: {agents}\n\nPrompts MUST be in English. Use `background_output` for async results.";
2
+ export declare const CALL_OMO_AGENT_DESCRIPTION = "Spawn explore/librarian agent. run_in_background REQUIRED (true=async with task_id, false=sync).\n\nAvailable: {agents}\n\nPass `resume=session_id` to continue previous agent with full context. Prompts MUST be in English. Use `background_output` for async results.";
@@ -9,5 +9,6 @@ import type { BackgroundManager } from "../features/background-agent";
9
9
  type OpencodeClient = PluginInput["client"];
10
10
  export { createCallOmoAgent } from "./call-omo-agent";
11
11
  export { createLookAt } from "./look-at";
12
+ export { createSisyphusTask, type SisyphusTaskToolOptions, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS } from "./sisyphus-task";
12
13
  export declare function createBackgroundTools(manager: BackgroundManager, client: OpencodeClient): Record<string, ToolDefinition>;
13
14
  export declare const builtinTools: Record<string, ToolDefinition>;
@@ -0,0 +1,12 @@
1
+ import type { CategoryConfig } from "../../config/schema";
2
+ export declare const VISUAL_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on VISUAL/UI tasks.\n\nDesign-first mindset:\n- Bold aesthetic choices over safe defaults\n- Unexpected layouts, asymmetry, grid-breaking elements\n- Distinctive typography (avoid: Arial, Inter, Roboto, Space Grotesk)\n- Cohesive color palettes with sharp accents\n- High-impact animations with staggered reveals\n- Atmosphere: gradient meshes, noise textures, layered transparencies\n\nAVOID: Generic fonts, purple gradients on white, predictable layouts, cookie-cutter patterns.\n</Category_Context>";
3
+ export declare const STRATEGIC_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on BUSINESS LOGIC / ARCHITECTURE tasks.\n\nStrategic advisor mindset:\n- Bias toward simplicity: least complex solution that fulfills requirements\n- Leverage existing code/patterns over new components\n- Prioritize developer experience and maintainability\n- One clear recommendation with effort estimate (Quick/Short/Medium/Large)\n- Signal when advanced approach warranted\n\nResponse format:\n- Bottom line (2-3 sentences)\n- Action plan (numbered steps)\n- Risks and mitigations (if relevant)\n</Category_Context>";
4
+ export declare const ARTISTRY_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on HIGHLY CREATIVE / ARTISTIC tasks.\n\nArtistic genius mindset:\n- Push far beyond conventional boundaries\n- Explore radical, unconventional directions\n- Surprise and delight: unexpected twists, novel combinations\n- Rich detail and vivid expression\n- Break patterns deliberately when it serves the creative vision\n\nApproach:\n- Generate diverse, bold options first\n- Embrace ambiguity and wild experimentation\n- Balance novelty with coherence\n- This is for tasks requiring exceptional creativity\n</Category_Context>";
5
+ export declare const QUICK_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on SMALL / QUICK tasks.\n\nEfficient execution mindset:\n- Fast, focused, minimal overhead\n- Get to the point immediately\n- No over-engineering\n- Simple solutions for simple problems\n\nApproach:\n- Minimal viable implementation\n- Skip unnecessary abstractions\n- Direct and concise\n</Category_Context>\n\n<Caller_Warning>\n\u26A0\uFE0F THIS CATEGORY USES A LESS CAPABLE MODEL (claude-haiku-4-5).\n\nThe model executing this task has LIMITED reasoning capacity. Your prompt MUST be:\n\n**EXHAUSTIVELY EXPLICIT** - Leave NOTHING to interpretation:\n1. MUST DO: List every required action as atomic, numbered steps\n2. MUST NOT DO: Explicitly forbid likely mistakes and deviations\n3. EXPECTED OUTPUT: Describe exact success criteria with concrete examples\n\n**WHY THIS MATTERS:**\n- Less capable models WILL deviate without explicit guardrails\n- Vague instructions \u2192 unpredictable results\n- Implicit expectations \u2192 missed requirements\n\n**PROMPT STRUCTURE (MANDATORY):**\n```\nTASK: [One-sentence goal]\n\nMUST DO:\n1. [Specific action with exact details]\n2. [Another specific action]\n...\n\nMUST NOT DO:\n- [Forbidden action + why]\n- [Another forbidden action]\n...\n\nEXPECTED OUTPUT:\n- [Exact deliverable description]\n- [Success criteria / verification method]\n```\n\nIf your prompt lacks this structure, REWRITE IT before delegating.\n</Caller_Warning>";
6
+ export declare const MOST_CAPABLE_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on COMPLEX / MOST-CAPABLE tasks.\n\nMaximum capability mindset:\n- Bring full reasoning power to bear\n- Consider all edge cases and implications\n- Deep analysis before action\n- Quality over speed\n\nApproach:\n- Thorough understanding first\n- Comprehensive solution design\n- Meticulous execution\n- This is for the most challenging problems\n</Category_Context>";
7
+ export declare const WRITING_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on WRITING / PROSE tasks.\n\nWordsmith mindset:\n- Clear, flowing prose\n- Appropriate tone and voice\n- Engaging and readable\n- Proper structure and organization\n\nApproach:\n- Understand the audience\n- Draft with care\n- Polish for clarity and impact\n- Documentation, READMEs, articles, technical writing\n</Category_Context>";
8
+ export declare const GENERAL_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on GENERAL tasks.\n\nBalanced execution mindset:\n- Practical, straightforward approach\n- Good enough is good enough\n- Focus on getting things done\n\nApproach:\n- Standard best practices\n- Reasonable trade-offs\n- Efficient completion\n</Category_Context>\n\n<Caller_Warning>\n\u26A0\uFE0F THIS CATEGORY USES A MID-TIER MODEL (claude-sonnet-4-5).\n\nWhile capable, this model benefits significantly from EXPLICIT instructions.\n\n**PROVIDE CLEAR STRUCTURE:**\n1. MUST DO: Enumerate required actions explicitly - don't assume inference\n2. MUST NOT DO: State forbidden actions to prevent scope creep or wrong approaches\n3. EXPECTED OUTPUT: Define concrete success criteria and deliverables\n\n**COMMON PITFALLS WITHOUT EXPLICIT INSTRUCTIONS:**\n- Model may take shortcuts that miss edge cases\n- Implicit requirements get overlooked\n- Output format may not match expectations\n- Scope may expand beyond intended boundaries\n\n**RECOMMENDED PROMPT PATTERN:**\n```\nTASK: [Clear, single-purpose goal]\n\nCONTEXT: [Relevant background the model needs]\n\nMUST DO:\n- [Explicit requirement 1]\n- [Explicit requirement 2]\n\nMUST NOT DO:\n- [Boundary/constraint 1]\n- [Boundary/constraint 2]\n\nEXPECTED OUTPUT:\n- [What success looks like]\n- [How to verify completion]\n```\n\nThe more explicit your prompt, the better the results.\n</Caller_Warning>";
9
+ export declare const DEFAULT_CATEGORIES: Record<string, CategoryConfig>;
10
+ export declare const CATEGORY_PROMPT_APPENDS: Record<string, string>;
11
+ export declare const CATEGORY_DESCRIPTIONS: Record<string, string>;
12
+ export declare const SISYPHUS_TASK_DESCRIPTION: string;
@@ -0,0 +1,3 @@
1
+ export { createSisyphusTask, type SisyphusTaskToolOptions } from "./tools";
2
+ export type * from "./types";
3
+ export * from "./constants";
@@ -0,0 +1,16 @@
1
+ import { type PluginInput, type ToolDefinition } from "@opencode-ai/plugin";
2
+ import type { BackgroundManager } from "../../features/background-agent";
3
+ import type { CategoriesConfig } from "../../config/schema";
4
+ type OpencodeClient = PluginInput["client"];
5
+ export interface SisyphusTaskToolOptions {
6
+ manager: BackgroundManager;
7
+ client: OpencodeClient;
8
+ userCategories?: CategoriesConfig;
9
+ }
10
+ export interface BuildSystemContentInput {
11
+ skillContent?: string;
12
+ categoryPromptAppend?: string;
13
+ }
14
+ export declare function buildSystemContent(input: BuildSystemContentInput): string | undefined;
15
+ export declare function createSisyphusTask(options: SisyphusTaskToolOptions): ToolDefinition;
16
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export interface SisyphusTaskArgs {
2
+ description: string;
3
+ prompt: string;
4
+ category?: string;
5
+ subagent_type?: string;
6
+ run_in_background: boolean;
7
+ resume?: string;
8
+ skills: string[];
9
+ }
@@ -1,4 +1,4 @@
1
- import type { LoadedSkill } from "../../features/opencode-skill-loader";
1
+ import type { LoadedSkill, LazyContentLoader } from "../../features/opencode-skill-loader";
2
2
  export type CommandScope = "builtin" | "config" | "user" | "project" | "opencode" | "opencode-project";
3
3
  export interface CommandMetadata {
4
4
  name: string;
@@ -14,6 +14,7 @@ export interface CommandInfo {
14
14
  metadata: CommandMetadata;
15
15
  content?: string;
16
16
  scope: CommandScope;
17
+ lazyContentLoader?: LazyContentLoader;
17
18
  }
18
19
  export interface SlashcommandToolOptions {
19
20
  /** Pre-loaded commands (skip discovery if provided) */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "2.13.2",
4
- "description": "OpenCode plugin - custom agents (oracle, librarian) and enhanced features",
3
+ "version": "3.0.0-beta.1",
4
+ "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "type": "module",
@@ -62,6 +62,7 @@
62
62
  "hono": "^4.10.4",
63
63
  "js-yaml": "^4.1.1",
64
64
  "jsonc-parser": "^3.3.1",
65
+ "open": "^11.0.0",
65
66
  "picocolors": "^1.1.1",
66
67
  "picomatch": "^4.0.2",
67
68
  "xdg-basedir": "^5.1.0",