oh-my-opencode 3.14.0 → 3.15.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.
- package/README.md +14 -6
- package/bin/oh-my-opencode.js +11 -0
- package/bin/platform.js +13 -13
- package/bin/platform.test.ts +15 -0
- package/dist/agents/atlas/agent.d.ts +1 -1
- package/dist/agents/atlas/default-prompt-sections.d.ts +6 -0
- package/dist/agents/atlas/default.d.ts +0 -9
- package/dist/agents/atlas/gemini-prompt-sections.d.ts +6 -0
- package/dist/agents/atlas/gemini.d.ts +0 -9
- package/dist/agents/atlas/gpt-prompt-sections.d.ts +6 -0
- package/dist/agents/atlas/gpt.d.ts +0 -9
- package/dist/agents/atlas/shared-prompt.d.ts +9 -0
- package/dist/agents/dynamic-agent-category-skills-guide.d.ts +2 -0
- package/dist/agents/dynamic-agent-core-sections.d.ts +10 -0
- package/dist/agents/dynamic-agent-policy-sections.d.ts +6 -0
- package/dist/agents/dynamic-agent-prompt-builder.d.ts +5 -35
- package/dist/agents/dynamic-agent-prompt-types.d.ts +20 -0
- package/dist/agents/dynamic-agent-tool-categorization.d.ts +3 -0
- package/dist/agents/hephaestus/agent.d.ts +1 -1
- package/dist/agents/hephaestus/gpt-5-3-codex.d.ts +1 -1
- package/dist/agents/hephaestus/gpt.d.ts +1 -1
- package/dist/agents/momus.d.ts +2 -2
- package/dist/agents/prometheus/behavioral-summary.d.ts +1 -1
- package/dist/agents/prometheus/identity-constraints.d.ts +1 -1
- package/dist/agents/prometheus/plan-generation.d.ts +1 -1
- package/dist/agents/prometheus/plan-template.d.ts +1 -1
- package/dist/agents/sisyphus/gpt-5-4.d.ts +14 -14
- package/dist/agents/sisyphus/index.d.ts +1 -1
- package/dist/agents/sisyphus.d.ts +1 -1
- package/dist/agents/types.d.ts +1 -0
- package/dist/cli/index.js +832 -500
- package/dist/cli/mcp-oauth/login.d.ts +6 -1
- package/dist/cli/run/event-state.d.ts +0 -2
- package/dist/cli/run/types.d.ts +0 -1
- package/dist/config/schema/agent-names.d.ts +2 -0
- package/dist/config/schema/agent-overrides.d.ts +330 -15
- package/dist/config/schema/background-task.d.ts +2 -0
- package/dist/config/schema/categories.d.ts +44 -2
- package/dist/config/schema/commands.d.ts +1 -0
- package/dist/config/schema/experimental.d.ts +1 -0
- package/dist/config/schema/fallback-models.d.ts +67 -1
- package/dist/config/schema/hooks.d.ts +3 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +344 -16
- package/dist/config/schema/sisyphus-agent.d.ts +1 -0
- package/dist/config/schema/tmux.d.ts +11 -0
- package/dist/create-hooks.d.ts +6 -0
- package/dist/create-runtime-tmux-config.d.ts +9 -0
- package/dist/features/background-agent/abort-with-timeout.d.ts +2 -0
- package/dist/features/background-agent/background-task-notification-template.d.ts +10 -4
- package/dist/features/background-agent/constants.d.ts +1 -0
- package/dist/features/background-agent/fallback-retry-handler.d.ts +1 -1
- package/dist/features/background-agent/manager.d.ts +10 -0
- package/dist/features/background-agent/process-cleanup.d.ts +1 -1
- package/dist/features/background-agent/session-existence.d.ts +3 -0
- package/dist/features/background-agent/task-poller.d.ts +1 -0
- package/dist/features/background-agent/types.d.ts +2 -0
- package/dist/features/builtin-commands/commands.d.ts +4 -1
- package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
- package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -1
- package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -0
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/builtin-commands/types.d.ts +1 -1
- package/dist/features/builtin-skills/skills/ai-slop-remover.d.ts +2 -0
- package/dist/features/builtin-skills/skills/git-master-sections/commit-workflow.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/history-search-workflow.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/overview.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/quick-reference.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/rebase-workflow.d.ts +1 -0
- package/dist/features/builtin-skills/skills/index.d.ts +2 -0
- package/dist/features/builtin-skills/skills/playwright-cli.d.ts +1 -1
- package/dist/features/builtin-skills/skills/review-work.d.ts +2 -0
- package/dist/features/claude-code-mcp-loader/configure-allowed-env-vars.d.ts +5 -0
- package/dist/features/claude-code-mcp-loader/index.d.ts +1 -0
- package/dist/features/claude-code-mcp-loader/scope-filter.d.ts +2 -0
- package/dist/features/claude-code-mcp-loader/types.d.ts +8 -4
- package/dist/features/claude-code-session-state/state.d.ts +2 -0
- package/dist/features/context-injector/collector.d.ts +1 -0
- package/dist/features/opencode-skill-loader/async-loader.d.ts +2 -2
- package/dist/features/skill-mcp-manager/manager.d.ts +4 -1
- package/dist/features/skill-mcp-manager/oauth-handler.d.ts +5 -4
- package/dist/features/skill-mcp-manager/types.d.ts +7 -0
- package/dist/features/tmux-subagent/manager.d.ts +15 -13
- package/dist/features/tmux-subagent/polling-manager.d.ts +5 -0
- package/dist/features/tmux-subagent/types.d.ts +2 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts +1 -1
- package/dist/hooks/anthropic-context-window-limit-recovery/message-builder.d.ts +4 -1
- package/dist/hooks/anthropic-context-window-limit-recovery/recovery-hook.d.ts +10 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/recovery-hook.test-support.d.ts +29 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/session-timeout-map.d.ts +2 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/state.d.ts +2 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/types.d.ts +1 -0
- package/dist/hooks/atlas/subagent-session-id.d.ts +1 -0
- package/dist/hooks/atlas/system-reminder-templates.d.ts +2 -2
- package/dist/hooks/auto-slash-command/executor.d.ts +1 -0
- package/dist/hooks/auto-slash-command/hook.d.ts +1 -0
- package/dist/hooks/auto-update-checker/checker/sync-package-json.d.ts +1 -1
- package/dist/hooks/auto-update-checker/constants.d.ts +3 -2
- package/dist/hooks/auto-update-checker/hook/background-update-check.d.ts +29 -1
- package/dist/hooks/bash-file-read-guard.d.ts +2 -0
- package/dist/hooks/claude-code-hooks/claude-code-hooks-hook.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/config-loader.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/config.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/handlers/session-event-handler.d.ts +3 -1
- package/dist/hooks/claude-code-hooks/session-hook-state.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/tool-input-cache.d.ts +2 -0
- package/dist/hooks/claude-code-hooks/transcript.d.ts +1 -3
- package/dist/hooks/comment-checker/hook.d.ts +1 -0
- package/dist/hooks/comment-checker/pending-calls.d.ts +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/keyword-detector/ultrawork/default.d.ts +1 -1
- package/dist/hooks/keyword-detector/ultrawork/gemini.d.ts +1 -1
- package/dist/hooks/keyword-detector/ultrawork/gpt.d.ts +1 -1
- package/dist/hooks/legacy-plugin-toast/auto-migrate-runner.d.ts +2 -0
- package/dist/hooks/legacy-plugin-toast/auto-migrate.d.ts +7 -0
- package/dist/hooks/legacy-plugin-toast/hook.d.ts +18 -0
- package/dist/hooks/legacy-plugin-toast/index.d.ts +1 -0
- package/dist/hooks/legacy-plugin-toast/plugin-entry-migrator.d.ts +1 -0
- package/dist/hooks/model-fallback/chat-message-fallback-handler.d.ts +23 -0
- package/dist/hooks/model-fallback/next-fallback.d.ts +6 -0
- package/dist/hooks/ralph-loop/completion-promise-detector-test-input.d.ts +11 -0
- package/dist/hooks/rules-injector/constants.d.ts +1 -0
- package/dist/hooks/rules-injector/finder.d.ts +1 -1
- package/dist/hooks/rules-injector/hook.d.ts +2 -0
- package/dist/hooks/rules-injector/injector.d.ts +2 -0
- package/dist/hooks/rules-injector/rule-file-finder.d.ts +9 -1
- package/dist/hooks/runtime-fallback/fallback-models.d.ts +1 -1
- package/dist/hooks/runtime-fallback/retry-model-payload.d.ts +5 -1
- package/dist/hooks/start-work/context-info-builder.d.ts +12 -0
- package/dist/hooks/start-work/start-work-hook.d.ts +6 -0
- package/dist/hooks/start-work/worktree-block.d.ts +1 -0
- package/dist/hooks/todo-continuation-enforcer/resolve-message-info.d.ts +2 -2
- package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +4 -3
- package/dist/hooks/todo-continuation-enforcer/types.d.ts +7 -0
- package/dist/hooks/todo-description-override/description.d.ts +1 -1
- package/dist/hooks/tool-pair-validator/hook.d.ts +28 -0
- package/dist/hooks/tool-pair-validator/index.d.ts +1 -0
- package/dist/hooks/write-existing-file-guard/hook.d.ts +12 -0
- package/dist/hooks/write-existing-file-guard/session-read-permissions.d.ts +3 -0
- package/dist/hooks/write-existing-file-guard/tool-execute-before-handler.d.ts +15 -0
- package/dist/index.js +9660 -5056
- package/dist/mcp/websearch.d.ts +2 -2
- package/dist/oh-my-opencode.schema.json +1052 -3
- package/dist/openclaw/dispatcher.d.ts +6 -0
- package/dist/plugin/command-execute-before.d.ts +17 -0
- package/dist/plugin/hooks/create-core-hooks.d.ts +3 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts +2 -1
- package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +2 -1
- package/dist/plugin/hooks/create-transform-hooks.d.ts +2 -1
- package/dist/plugin/tool-registry.d.ts +1 -0
- package/dist/plugin/types.d.ts +1 -0
- package/dist/plugin-dispose.d.ts +3 -0
- package/dist/shared/agent-display-names.d.ts +8 -0
- package/dist/shared/archive-entry-validator.d.ts +6 -0
- package/dist/shared/background-output-consumption.d.ts +5 -0
- package/dist/shared/connected-providers-cache.d.ts +2 -1
- package/dist/shared/contains-path.d.ts +2 -0
- package/dist/shared/external-plugin-detector.d.ts +14 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/is-abort-error.d.ts +1 -0
- package/dist/shared/json-file-cache-store.d.ts +16 -0
- package/dist/shared/jsonc-parser.d.ts +1 -0
- package/dist/shared/legacy-plugin-warning.d.ts +1 -0
- package/dist/shared/load-opencode-plugins.d.ts +1 -0
- package/dist/shared/log-legacy-plugin-startup-warning.d.ts +10 -1
- package/dist/shared/migrate-legacy-config-file.d.ts +1 -0
- package/dist/shared/migrate-legacy-plugin-entry.d.ts +1 -0
- package/dist/shared/model-capabilities/bundled-snapshot.d.ts +2 -0
- package/dist/shared/model-capabilities/get-model-capabilities.d.ts +2 -0
- package/dist/shared/model-capabilities/index.d.ts +3 -0
- package/dist/shared/model-capabilities/runtime-model-readers.d.ts +11 -0
- package/dist/shared/{model-capabilities.d.ts → model-capabilities/types.d.ts} +35 -32
- package/dist/shared/model-suggestion-retry.d.ts +0 -9
- package/dist/shared/plugin-entry-migrator.d.ts +3 -0
- package/dist/shared/session-category-registry.d.ts +0 -24
- package/dist/shared/session-cursor.d.ts +6 -0
- package/dist/shared/skill-path-resolver.d.ts +0 -8
- package/dist/shared/task-system-enabled.d.ts +6 -0
- package/dist/shared/tmux/tmux-utils/server-health.d.ts +1 -0
- package/dist/shared/tmux/tmux-utils/session-spawn.d.ts +3 -0
- package/dist/shared/tmux/tmux-utils/window-spawn.d.ts +3 -0
- package/dist/shared/tmux/tmux-utils.d.ts +3 -1
- package/dist/shared/write-file-atomically.d.ts +1 -0
- package/dist/shared/zip-entry-listing/powershell-zip-entry-listing.d.ts +4 -0
- package/dist/shared/zip-entry-listing/python-zip-entry-listing.d.ts +3 -0
- package/dist/shared/zip-entry-listing/read-zip-symlink-target.d.ts +1 -0
- package/dist/shared/zip-entry-listing/tar-zip-entry-listing.d.ts +3 -0
- package/dist/shared/zip-entry-listing/zipinfo-zip-entry-listing.d.ts +4 -0
- package/dist/shared/zip-entry-listing.d.ts +4 -0
- package/dist/tools/call-omo-agent/background-executor.d.ts +2 -1
- package/dist/tools/call-omo-agent/sync-executor.d.ts +2 -1
- package/dist/tools/delegate-task/anthropic-categories.d.ts +2 -0
- package/dist/tools/delegate-task/builtin-categories.d.ts +4 -0
- package/dist/tools/delegate-task/builtin-category-definition.d.ts +7 -0
- package/dist/tools/delegate-task/constants.d.ts +1 -12
- package/dist/tools/delegate-task/executor-types.d.ts +2 -1
- package/dist/tools/delegate-task/google-categories.d.ts +2 -0
- package/dist/tools/delegate-task/kimi-categories.d.ts +2 -0
- package/dist/tools/delegate-task/openai-categories.d.ts +2 -0
- package/dist/tools/delegate-task/prompt-builder.d.ts +1 -1
- package/dist/tools/delegate-task/sync-prompt-sender.d.ts +2 -0
- package/dist/tools/delegate-task/types.d.ts +2 -1
- package/dist/tools/grep/cli.d.ts +3 -2
- package/dist/tools/grep/constants.d.ts +1 -2
- package/dist/tools/hashline-edit/tool-description.d.ts +1 -1
- package/dist/tools/look-at/constants.d.ts +1 -1
- package/dist/tools/lsp/infer-extension.d.ts +1 -0
- package/dist/tools/session-manager/file-storage.d.ts +8 -0
- package/dist/tools/session-manager/sdk-storage.d.ts +8 -0
- package/dist/tools/session-manager/sdk-unavailable.d.ts +1 -0
- package/dist/tools/session-manager/storage.d.ts +1 -1
- package/dist/tools/skill/description-formatter.d.ts +3 -0
- package/dist/tools/skill/mcp-capability-formatter.d.ts +3 -0
- package/dist/tools/skill/native-skills.d.ts +12 -0
- package/dist/tools/skill/scope-priority.d.ts +4 -0
- package/dist/tools/skill/skill-body.d.ts +2 -0
- package/dist/tools/skill/skill-matcher.d.ts +5 -0
- package/dist/tools/skill/types.d.ts +30 -2
- package/dist/tools/skill-mcp/tools.d.ts +1 -1
- package/package.json +14 -14
- package/postinstall.mjs +12 -0
- package/dist/hooks/openclaw.d.ts +0 -11
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
import type { CategoryConfig } from "../../config/schema";
|
|
2
1
|
import type { AvailableCategory, AvailableSkill } from "../../agents/dynamic-agent-prompt-builder";
|
|
3
|
-
export
|
|
4
|
-
export declare const ULTRABRAIN_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on DEEP LOGICAL REASONING / COMPLEX ARCHITECTURE tasks.\n\n**CRITICAL - CODE STYLE REQUIREMENTS (NON-NEGOTIABLE)**:\n1. BEFORE writing ANY code, SEARCH the existing codebase to find similar patterns/styles\n2. Your code MUST match the project's existing conventions - blend in seamlessly\n3. Write READABLE code that humans can easily understand - no clever tricks\n4. If unsure about style, explore more files until you find the pattern\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>";
|
|
5
|
-
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>";
|
|
6
|
-
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>\nTHIS CATEGORY USES A SMALLER/FASTER MODEL (gpt-5.4-mini).\n\nThe model executing this task is optimized for speed over depth. 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- Smaller models benefit from explicit guardrails\n- Vague instructions may lead to unpredictable results\n- Implicit expectations may be missed\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>";
|
|
7
|
-
export declare const UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on tasks that don't fit specific categories but require moderate effort.\n\n<Selection_Gate>\nBEFORE selecting this category, VERIFY ALL conditions:\n1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)\n2. Task requires more than trivial effort but is NOT system-wide\n3. Scope is contained within a few files/modules\n\nIf task fits ANY other category, DO NOT select unspecified-low.\nThis is NOT a default choice - it's for genuinely unclassifiable moderate-effort work.\n</Selection_Gate>\n</Category_Context>\n\n<Caller_Warning>\nTHIS CATEGORY USES A MID-TIER MODEL (claude-sonnet-4-6).\n\n**PROVIDE CLEAR STRUCTURE:**\n1. MUST DO: Enumerate required actions explicitly\n2. MUST NOT DO: State forbidden actions to prevent scope creep\n3. EXPECTED OUTPUT: Define concrete success criteria\n</Caller_Warning>";
|
|
8
|
-
export declare const UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on tasks that don't fit specific categories but require substantial effort.\n\n<Selection_Gate>\nBEFORE selecting this category, VERIFY ALL conditions:\n1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)\n2. Task requires substantial effort across multiple systems/modules\n3. Changes have broad impact or require careful coordination\n4. NOT just \"complex\" - must be genuinely unclassifiable AND high-effort\n\nIf task fits ANY other category, DO NOT select unspecified-high.\nIf task is unclassifiable but moderate-effort, use unspecified-low instead.\n</Selection_Gate>\n</Category_Context>";
|
|
9
|
-
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\nANTI-AI-SLOP RULES (NON-NEGOTIABLE):\n- NEVER use em dashes (\u2014) or en dashes (\u2013). Use commas, periods, ellipses, or line breaks instead. Zero tolerance.\n- Remove AI-sounding phrases: \"delve\", \"it's important to note\", \"I'd be happy to\", \"certainly\", \"please don't hesitate\", \"leverage\", \"utilize\", \"in order to\", \"moving forward\", \"circle back\", \"at the end of the day\", \"robust\", \"streamline\", \"facilitate\"\n- Pick plain words. \"Use\" not \"utilize\". \"Start\" not \"commence\". \"Help\" not \"facilitate\".\n- Use contractions naturally: \"don't\" not \"do not\", \"it's\" not \"it is\".\n- Vary sentence length. Don't make every sentence the same length.\n- NEVER start consecutive sentences with the same word.\n- No filler openings: skip \"In today's world...\", \"As we all know...\", \"It goes without saying...\"\n- Write like a human, not a corporate template.\n</Category_Context>";
|
|
10
|
-
export declare const DEEP_CATEGORY_PROMPT_APPEND = "<Category_Context>\nYou are working on GOAL-ORIENTED AUTONOMOUS tasks.\n\n**CRITICAL - AUTONOMOUS EXECUTION MINDSET (NON-NEGOTIABLE)**:\nYou are NOT an interactive assistant. You are an autonomous problem-solver.\n\n**BEFORE making ANY changes**:\n1. SILENTLY explore the codebase extensively (5-15 minutes of reading is normal)\n2. Read related files, trace dependencies, understand the full context\n3. Build a complete mental model of the problem space\n4. DO NOT ask clarifying questions - the goal is already defined\n\n**Autonomous executor mindset**:\n- You receive a GOAL. When the goal includes numbered steps or phases, treat them as one atomic task broken into sub-steps - NOT as separate independent tasks.\n- Figure out HOW to achieve the goal yourself\n- Thorough research before any action\n- Fix hairy problems that require deep understanding\n- Work independently without frequent check-ins\n\n**Single vs. multi-step context**:\n- Sub-steps of ONE goal (e.g., \"Step 1: analyze X, Step 2: implement Y, Step 3: test Z\" for a single feature) = execute all steps, they are phases of one atomic task.\n- Genuinely independent tasks (e.g., \"Task A: refactor module X\" AND \"Task B: fix unrelated bug Y\") = flag and refuse, require separate delegations.\n\n**Approach**:\n- Explore extensively, understand deeply, then act decisively\n- Prefer comprehensive solutions over quick patches\n- If the goal is unclear, make reasonable assumptions and proceed\n- Document your reasoning in code comments only when non-obvious\n\n**Response format**:\n- Minimal status updates (user trusts your autonomy)\n- Focus on results, not play-by-play progress\n- Report completion with summary of changes made\n</Category_Context>";
|
|
11
|
-
export declare const DEFAULT_CATEGORIES: Record<string, CategoryConfig>;
|
|
12
|
-
export declare const CATEGORY_PROMPT_APPENDS: Record<string, string>;
|
|
13
|
-
export declare const CATEGORY_DESCRIPTIONS: Record<string, string>;
|
|
2
|
+
export { CATEGORY_DESCRIPTIONS, CATEGORY_PROMPT_APPENDS, DEFAULT_CATEGORIES, } from "./builtin-categories";
|
|
14
3
|
/**
|
|
15
4
|
* System prompt prepended to plan agent invocations.
|
|
16
5
|
* Instructs the plan agent to first gather context via explore/librarian agents,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BackgroundManager } from "../../features/background-agent";
|
|
2
|
-
import type { CategoriesConfig, GitMasterConfig, BrowserAutomationProvider, AgentOverrides } from "../../config/schema";
|
|
2
|
+
import type { CategoriesConfig, GitMasterConfig, BrowserAutomationProvider, AgentOverrides, SisyphusAgentConfig } from "../../config/schema";
|
|
3
3
|
import type { OpencodeClient } from "./types";
|
|
4
4
|
export interface ExecutorContext {
|
|
5
5
|
manager: BackgroundManager;
|
|
@@ -10,6 +10,7 @@ export interface ExecutorContext {
|
|
|
10
10
|
sisyphusJuniorModel?: string;
|
|
11
11
|
browserProvider?: BrowserAutomationProvider;
|
|
12
12
|
agentOverrides?: AgentOverrides;
|
|
13
|
+
sisyphusAgentConfig?: SisyphusAgentConfig;
|
|
13
14
|
onSyncSessionCreated?: (event: {
|
|
14
15
|
sessionID: string;
|
|
15
16
|
parentID: string;
|
|
@@ -4,4 +4,4 @@ import type { BuildSystemContentInput } from "./types";
|
|
|
4
4
|
* Combines skill content, category prompt append, and plan agent system prepend.
|
|
5
5
|
*/
|
|
6
6
|
export declare function buildSystemContent(input: BuildSystemContentInput): string | undefined;
|
|
7
|
-
export declare function buildTaskPrompt(prompt: string, agentName: string | undefined): string;
|
|
7
|
+
export declare function buildTaskPrompt(prompt: string, agentName: string | undefined, tddEnabled?: boolean): string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DelegateTaskArgs, OpencodeClient, DelegatedModelConfig } from "./types";
|
|
2
|
+
import type { SisyphusAgentConfig } from "../../config/schema";
|
|
2
3
|
import { promptSyncWithModelSuggestionRetry, promptWithModelSuggestionRetry } from "../../shared/model-suggestion-retry";
|
|
3
4
|
type SendSyncPromptDeps = {
|
|
4
5
|
promptWithModelSuggestionRetry: typeof promptWithModelSuggestionRetry;
|
|
@@ -14,5 +15,6 @@ export declare function sendSyncPrompt(client: OpencodeClient, input: {
|
|
|
14
15
|
removeTask: (id: string) => void;
|
|
15
16
|
} | null | undefined;
|
|
16
17
|
taskId: string | undefined;
|
|
18
|
+
sisyphusAgentConfig?: SisyphusAgentConfig;
|
|
17
19
|
}, deps?: SendSyncPromptDeps): Promise<string | null>;
|
|
18
20
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
2
|
import type { BackgroundManager } from "../../features/background-agent";
|
|
3
|
-
import type { CategoriesConfig, GitMasterConfig, BrowserAutomationProvider, AgentOverrides } from "../../config/schema";
|
|
3
|
+
import type { CategoriesConfig, GitMasterConfig, BrowserAutomationProvider, AgentOverrides, SisyphusAgentConfig } from "../../config/schema";
|
|
4
4
|
import type { AvailableCategory, AvailableSkill } from "../../agents/dynamic-agent-prompt-builder";
|
|
5
5
|
export type OpencodeClient = PluginInput["client"];
|
|
6
6
|
export interface DelegateTaskArgs {
|
|
@@ -62,6 +62,7 @@ export interface DelegateTaskToolOptions {
|
|
|
62
62
|
availableCategories?: AvailableCategory[];
|
|
63
63
|
availableSkills?: AvailableSkill[];
|
|
64
64
|
agentOverrides?: AgentOverrides;
|
|
65
|
+
sisyphusAgentConfig?: SisyphusAgentConfig;
|
|
65
66
|
onSyncSessionCreated?: (event: SyncSessionCreatedEvent) => Promise<void>;
|
|
66
67
|
syncPollTimeoutMs?: number;
|
|
67
68
|
}
|
package/dist/tools/grep/cli.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ResolvedCli } from "./constants";
|
|
1
2
|
import type { GrepOptions, GrepResult, CountResult } from "./types";
|
|
2
|
-
export declare function runRg(options: GrepOptions): Promise<GrepResult>;
|
|
3
|
-
export declare function runRgCount(options: Omit<GrepOptions, "context"
|
|
3
|
+
export declare function runRg(options: GrepOptions, resolvedCli?: ResolvedCli): Promise<GrepResult>;
|
|
4
|
+
export declare function runRgCount(options: Omit<GrepOptions, "context">, resolvedCli?: ResolvedCli): Promise<CountResult[]>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type GrepBackend = "rg" | "grep";
|
|
2
|
-
interface ResolvedCli {
|
|
2
|
+
export interface ResolvedCli {
|
|
3
3
|
path: string;
|
|
4
4
|
backend: GrepBackend;
|
|
5
5
|
}
|
|
@@ -15,4 +15,3 @@ export declare const DEFAULT_MAX_OUTPUT_BYTES: number;
|
|
|
15
15
|
export declare const DEFAULT_RG_THREADS = 4;
|
|
16
16
|
export declare const RG_SAFETY_FLAGS: readonly ["--no-follow", "--color=never", "--no-heading", "--line-number", "--with-filename"];
|
|
17
17
|
export declare const GREP_SAFETY_FLAGS: readonly ["-n", "-H", "--color=never"];
|
|
18
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const HASHLINE_EDIT_DESCRIPTION = "Edit files using LINE#ID format for precise, safe modifications.\n\nWORKFLOW:\n1. Read target file/range and copy exact LINE#ID tags.\n2. Pick the smallest operation per logical mutation site.\n3. Submit one edit call per file with all related operations.\n4. If same file needs another call, re-read first.\n5. Use anchors as \"LINE#ID\" only (never include trailing \"|content\").\n\n<must>\n- SNAPSHOT: All edits in one call reference the ORIGINAL file state. Do NOT adjust line numbers for prior edits in the same call
|
|
1
|
+
export declare const HASHLINE_EDIT_DESCRIPTION = "Edit files using LINE#ID format for precise, safe modifications.\n\nWORKFLOW:\n1. Read target file/range and copy exact LINE#ID tags.\n2. Pick the smallest operation per logical mutation site.\n3. Submit one edit call per file with all related operations.\n4. If same file needs another call, re-read first.\n5. Use anchors as \"LINE#ID\" only (never include trailing \"|content\").\n\n<must>\n- SNAPSHOT: All edits in one call reference the ORIGINAL file state. Do NOT adjust line numbers for prior edits in the same call - the system applies them bottom-up automatically.\n- replace removes lines pos..end (inclusive) and inserts lines in their place. Lines BEFORE pos and AFTER end are UNTOUCHED - do NOT include them in lines. If you do, they will appear twice.\n- lines must contain ONLY the content that belongs inside the consumed range. Content after end survives unchanged.\n- Tags MUST be copied exactly from read output or >>> mismatch output. NEVER guess tags.\n- Batch = multiple operations in edits[], NOT one big replace covering everything. Each operation targets the smallest possible change.\n- lines must contain plain replacement text only (no LINE#ID prefixes, no diff + markers).\n</must>\n\n<operations>\nLINE#ID FORMAT:\n Each line reference must be in \"{line_number}#{hash_id}\" format where:\n {line_number}: 1-based line number\n {hash_id}: Two CID letters from the set ZPMQVRWSNKTXJBYH\n\nOPERATION CHOICE:\n replace with pos only -> replace one line at pos\n replace with pos+end -> replace range pos..end inclusive as a block (ranges MUST NOT overlap across edits)\n append with pos/end anchor -> insert after that anchor\n prepend with pos/end anchor -> insert before that anchor\n append/prepend without anchors -> EOF/BOF insertion (also creates missing files)\n\nCONTENT FORMAT:\n lines can be a string (single line) or string[] (multi-line, preferred).\n If you pass a multi-line string, it is split by real newline characters.\n lines: null or lines: [] with replace -> delete those lines.\n\nFILE MODES:\n delete=true deletes file and requires edits=[] with no rename\n rename moves final content to a new path and removes old path\n\nRULES:\n 1. Minimize scope: one logical mutation site per operation.\n 2. Preserve formatting: keep indentation, punctuation, line breaks, trailing commas, brace style.\n 3. Prefer insertion over neighbor rewrites: anchor to structural boundaries (}, ], },), not interior property lines.\n 4. No no-ops: replacement content must differ from current content.\n 5. Touch only requested code: avoid incidental edits.\n 6. Use exact current tokens: NEVER rewrite approximately.\n 7. For swaps/moves: prefer one range operation over multiple single-line operations.\n 8. Anchor to structural lines (function/class/brace), NEVER blank lines.\n 9. Re-read after each successful edit call before issuing another on the same file.\n</operations>\n\n<examples>\nGiven this file content after read:\n 10#VK|function hello() {\n 11#XJ| console.log(\"hi\");\n 12#MB| console.log(\"bye\");\n 13#QR|}\n 14#TN|\n 15#WS|function world() {\n\nSingle-line replace (change line 11):\n { op: \"replace\", pos: \"11#XJ\", lines: [\" console.log(\\\"hello\\\");\"] }\n Result: line 11 replaced. Lines 10, 12-15 unchanged.\n\nRange replace (rewrite function body, lines 11-12):\n { op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hello world\\\";\"] }\n Result: lines 11-12 removed, replaced by 1 new line. Lines 10, 13-15 unchanged.\n\nDelete a line:\n { op: \"replace\", pos: \"12#MB\", lines: null }\n Result: line 12 removed. Lines 10-11, 13-15 unchanged.\n\nInsert after line 13 (between functions):\n { op: \"append\", pos: \"13#QR\", lines: [\"\", \"function added() {\", \" return true;\", \"}\"] }\n Result: 4 new lines inserted after line 13. All existing lines unchanged.\n\nBAD - lines extend past end (DUPLICATES line 13):\n { op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hi\\\";\", \"}\"] }\n Line 13 is \"}\" which already exists after end. Including \"}\" in lines duplicates it.\n CORRECT: { op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hi\\\";\"] }\n</examples>\n\n<auto>\nBuilt-in autocorrect (you do NOT need to handle these):\n Merged lines are auto-expanded back to original line count.\n Indentation is auto-restored from original lines.\n BOM and CRLF line endings are preserved automatically.\n Hashline prefixes and diff markers in text are auto-stripped.\n Boundary echo lines (duplicating adjacent surviving lines) are auto-stripped.\n</auto>\n\nRECOVERY (when >>> mismatch error appears):\n Copy the updated LINE#ID tags shown in the error output directly.\n Re-read only if the needed tags are missing from the error snippet.";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const MULTIMODAL_LOOKER_AGENT: "multimodal-looker";
|
|
2
|
-
export declare const LOOK_AT_DESCRIPTION = "Extract basic information from media files (PDFs, images, diagrams) when a quick summary suffices over precise reading. Good for simple text-based content extraction without using the Read tool. NEVER use for visual precision, aesthetic evaluation, or exact accuracy
|
|
2
|
+
export declare const LOOK_AT_DESCRIPTION = "Extract basic information from media files (PDFs, images, diagrams) when a quick summary suffices over precise reading. Good for simple text-based content extraction without using the Read tool. NEVER use for visual precision, aesthetic evaluation, or exact accuracy - use Read tool instead for those cases.";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function inferExtensionFromDirectory(directory: string): string | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SessionInfo, SessionMessage, SessionMetadata, TodoItem } from "./types";
|
|
2
|
+
export declare function getFileMainSessions(directory?: string): Promise<SessionMetadata[]>;
|
|
3
|
+
export declare function getFileAllSessions(): Promise<string[]>;
|
|
4
|
+
export declare function fileSessionExists(sessionID: string): Promise<boolean>;
|
|
5
|
+
export declare function getFileSessionMessages(sessionID: string): Promise<SessionMessage[]>;
|
|
6
|
+
export declare function getFileSessionTodos(sessionID: string): Promise<TodoItem[]>;
|
|
7
|
+
export declare function getFileSessionTranscript(sessionID: string): Promise<number>;
|
|
8
|
+
export declare function getFileSessionInfo(sessionID: string): Promise<SessionInfo | null>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
+
import type { SessionMessage, SessionMetadata, TodoItem } from "./types";
|
|
3
|
+
export declare function getSdkMainSessions(client: PluginInput["client"], directory?: string): Promise<SessionMetadata[]>;
|
|
4
|
+
export declare function getSdkAllSessions(client: PluginInput["client"]): Promise<string[]>;
|
|
5
|
+
export declare function sdkSessionExists(client: PluginInput["client"], sessionID: string): Promise<boolean>;
|
|
6
|
+
export declare function getSdkSessionMessages(client: PluginInput["client"], sessionID: string): Promise<SessionMessage[]>;
|
|
7
|
+
export declare function getSdkSessionTodos(client: PluginInput["client"], sessionID: string): Promise<TodoItem[]>;
|
|
8
|
+
export declare function shouldFallbackFromSdkError(error: unknown): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isSessionSdkUnavailableError(value: unknown): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
-
import type { SessionMessage,
|
|
2
|
+
import type { SessionInfo, SessionMessage, SessionMetadata, TodoItem } from "./types";
|
|
3
3
|
export interface GetMainSessionsOptions {
|
|
4
4
|
directory?: string;
|
|
5
5
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SkillMcpManager } from "../../features/skill-mcp-manager";
|
|
2
|
+
import type { LoadedSkill } from "../../features/opencode-skill-loader";
|
|
3
|
+
export declare function formatMcpCapabilities(skill: LoadedSkill, manager: SkillMcpManager, sessionID: string): Promise<string | null>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SkillInfo } from "./types";
|
|
2
|
+
import type { LoadedSkill } from "../../features/opencode-skill-loader";
|
|
3
|
+
export type NativeSkillEntry = {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
location: string;
|
|
7
|
+
content: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function loadedSkillToInfo(skill: LoadedSkill): SkillInfo;
|
|
10
|
+
export declare function mergeNativeSkills(skills: LoadedSkill[], nativeSkills: NativeSkillEntry[]): void;
|
|
11
|
+
export declare function mergeNativeSkillInfos(skillInfos: SkillInfo[], nativeSkills: NativeSkillEntry[]): void;
|
|
12
|
+
export declare function isPromiseLike<TValue>(value: TValue | Promise<TValue>): value is Promise<TValue>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CommandInfo } from "../slashcommand/types";
|
|
2
|
+
import type { LoadedSkill } from "../../features/opencode-skill-loader";
|
|
3
|
+
export declare function matchSkillByName(skills: LoadedSkill[], requestedName: string): LoadedSkill | undefined;
|
|
4
|
+
export declare function matchCommandByName(commands: CommandInfo[], requestedName: string): CommandInfo | undefined;
|
|
5
|
+
export declare function findPartialMatches(skills: LoadedSkill[], commands: CommandInfo[], requestedName: string): string[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SkillScope, LoadedSkill } from "../../features/opencode-skill-loader/types";
|
|
2
2
|
import type { SkillMcpManager } from "../../features/skill-mcp-manager";
|
|
3
|
-
import type { GitMasterConfig } from "../../config/schema";
|
|
3
|
+
import type { BrowserAutomationProvider, GitMasterConfig } from "../../config/schema";
|
|
4
4
|
import type { CommandInfo } from "../slashcommand/types";
|
|
5
5
|
export interface SkillArgs {
|
|
6
6
|
name: string;
|
|
@@ -26,12 +26,40 @@ export interface SkillLoadOptions {
|
|
|
26
26
|
/** MCP manager for querying skill-embedded MCP servers */
|
|
27
27
|
mcpManager?: SkillMcpManager;
|
|
28
28
|
/** Session ID getter for MCP client identification */
|
|
29
|
-
getSessionID?: () => string;
|
|
29
|
+
getSessionID?: () => string | undefined;
|
|
30
30
|
/** Git master configuration for watermark/co-author settings */
|
|
31
31
|
gitMasterConfig?: GitMasterConfig;
|
|
32
32
|
disabledSkills?: Set<string>;
|
|
33
|
+
/** Browser automation provider for provider-gated skill filtering */
|
|
34
|
+
browserProvider?: BrowserAutomationProvider;
|
|
33
35
|
/** Include Claude marketplace plugin commands in discovery (default: true) */
|
|
34
36
|
pluginsEnabled?: boolean;
|
|
35
37
|
/** Override plugin enablement from Claude settings by plugin key */
|
|
36
38
|
enabledPluginsOverride?: Record<string, boolean>;
|
|
39
|
+
/** Native skill accessor from PluginInput for discovering skills registered via config.skills.paths */
|
|
40
|
+
nativeSkills?: {
|
|
41
|
+
all(): {
|
|
42
|
+
name: string;
|
|
43
|
+
description: string;
|
|
44
|
+
location: string;
|
|
45
|
+
content: string;
|
|
46
|
+
}[] | Promise<{
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
location: string;
|
|
50
|
+
content: string;
|
|
51
|
+
}[]>;
|
|
52
|
+
get(name: string): {
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
location: string;
|
|
56
|
+
content: string;
|
|
57
|
+
} | undefined | Promise<{
|
|
58
|
+
name: string;
|
|
59
|
+
description: string;
|
|
60
|
+
location: string;
|
|
61
|
+
content: string;
|
|
62
|
+
} | undefined>;
|
|
63
|
+
dirs(): string[] | Promise<string[]>;
|
|
64
|
+
};
|
|
37
65
|
}
|
|
@@ -4,7 +4,7 @@ import type { LoadedSkill } from "../../features/opencode-skill-loader/types";
|
|
|
4
4
|
interface SkillMcpToolOptions {
|
|
5
5
|
manager: SkillMcpManager;
|
|
6
6
|
getLoadedSkills: () => LoadedSkill[];
|
|
7
|
-
getSessionID
|
|
7
|
+
getSessionID?: () => string | undefined;
|
|
8
8
|
}
|
|
9
9
|
export declare function applyGrepFilter(output: string, pattern: string | undefined): string;
|
|
10
10
|
export declare function createSkillMcpTool(options: SkillMcpToolOptions): ToolDefinition;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.15.1",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
|
-
"main": "dist/index.js",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"bin": {
|
|
@@ -74,21 +74,21 @@
|
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@types/js-yaml": "^4.0.9",
|
|
76
76
|
"@types/picomatch": "^3.0.2",
|
|
77
|
-
"bun-types": "1.3.
|
|
77
|
+
"bun-types": "1.3.11",
|
|
78
78
|
"typescript": "^5.7.3"
|
|
79
79
|
},
|
|
80
80
|
"optionalDependencies": {
|
|
81
|
-
"oh-my-opencode-darwin-arm64": "3.
|
|
82
|
-
"oh-my-opencode-darwin-x64": "3.
|
|
83
|
-
"oh-my-opencode-darwin-x64-baseline": "3.
|
|
84
|
-
"oh-my-opencode-linux-arm64": "3.
|
|
85
|
-
"oh-my-opencode-linux-arm64-musl": "3.
|
|
86
|
-
"oh-my-opencode-linux-x64": "3.
|
|
87
|
-
"oh-my-opencode-linux-x64-baseline": "3.
|
|
88
|
-
"oh-my-opencode-linux-x64-musl": "3.
|
|
89
|
-
"oh-my-opencode-linux-x64-musl-baseline": "3.
|
|
90
|
-
"oh-my-opencode-windows-x64": "3.
|
|
91
|
-
"oh-my-opencode-windows-x64-baseline": "3.
|
|
81
|
+
"oh-my-opencode-darwin-arm64": "3.15.1",
|
|
82
|
+
"oh-my-opencode-darwin-x64": "3.15.1",
|
|
83
|
+
"oh-my-opencode-darwin-x64-baseline": "3.15.1",
|
|
84
|
+
"oh-my-opencode-linux-arm64": "3.15.1",
|
|
85
|
+
"oh-my-opencode-linux-arm64-musl": "3.15.1",
|
|
86
|
+
"oh-my-opencode-linux-x64": "3.15.1",
|
|
87
|
+
"oh-my-opencode-linux-x64-baseline": "3.15.1",
|
|
88
|
+
"oh-my-opencode-linux-x64-musl": "3.15.1",
|
|
89
|
+
"oh-my-opencode-linux-x64-musl-baseline": "3.15.1",
|
|
90
|
+
"oh-my-opencode-windows-x64": "3.15.1",
|
|
91
|
+
"oh-my-opencode-windows-x64-baseline": "3.15.1"
|
|
92
92
|
},
|
|
93
93
|
"overrides": {
|
|
94
94
|
"@opencode-ai/sdk": "^1.2.24"
|
package/postinstall.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// postinstall.mjs
|
|
2
2
|
// Runs after npm install to verify platform binary is available
|
|
3
3
|
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
4
5
|
import { createRequire } from "node:module";
|
|
5
6
|
import { getPlatformPackageCandidates, getBinaryPath } from "./bin/platform.js";
|
|
6
7
|
|
|
@@ -22,15 +23,26 @@ function getLibcFamily() {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
function getPackageBaseName() {
|
|
27
|
+
try {
|
|
28
|
+
const packageJson = JSON.parse(readFileSync(new URL("./package.json", import.meta.url), "utf8"));
|
|
29
|
+
return packageJson.name || "oh-my-opencode";
|
|
30
|
+
} catch {
|
|
31
|
+
return "oh-my-opencode";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
25
35
|
function main() {
|
|
26
36
|
const { platform, arch } = process;
|
|
27
37
|
const libcFamily = getLibcFamily();
|
|
38
|
+
const packageBaseName = getPackageBaseName();
|
|
28
39
|
|
|
29
40
|
try {
|
|
30
41
|
const packageCandidates = getPlatformPackageCandidates({
|
|
31
42
|
platform,
|
|
32
43
|
arch,
|
|
33
44
|
libcFamily,
|
|
45
|
+
packageBaseName,
|
|
34
46
|
});
|
|
35
47
|
|
|
36
48
|
const resolvedPackage = packageCandidates.find((pkg) => {
|
package/dist/hooks/openclaw.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { PluginContext } from "../plugin/types";
|
|
2
|
-
import type { OhMyOpenCodeConfig } from "../config";
|
|
3
|
-
export declare function createOpenClawHook(ctx: PluginContext, pluginConfig: OhMyOpenCodeConfig): {
|
|
4
|
-
event: (input: any) => Promise<void>;
|
|
5
|
-
"tool.execute.before": (input: {
|
|
6
|
-
tool: string;
|
|
7
|
-
sessionID: string;
|
|
8
|
-
}, output: {
|
|
9
|
-
args: Record<string, unknown>;
|
|
10
|
-
}) => Promise<void>;
|
|
11
|
-
} | null;
|