@skj1724/oh-my-opencode 3.18.6 → 3.18.8
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/dist/cli/index.js
CHANGED
|
@@ -53770,7 +53770,7 @@ var {
|
|
|
53770
53770
|
// package.json
|
|
53771
53771
|
var package_default = {
|
|
53772
53772
|
name: "@skj1724/oh-my-opencode",
|
|
53773
|
-
version: "3.18.
|
|
53773
|
+
version: "3.18.8",
|
|
53774
53774
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
53775
53775
|
main: "./dist/index.js",
|
|
53776
53776
|
types: "dist/index.d.ts",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const GIT_MASTER_COMMIT_WORKFLOW_SECTION = "## PHASE 0: Parallel Context Gathering (MANDATORY FIRST STEP)\n\n<parallel_analysis>\n**Execute ALL of the following commands IN PARALLEL to minimize latency:**\n\n```bash\n# Group 1: Current state\ngit status\ngit diff --staged --stat\ngit diff --stat\n\n# Group 2: History context \ngit log -30 --oneline\ngit log -30 --pretty=format:\"%s\"\n\n# Group 3: Branch context\ngit branch --show-current\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null\ngit rev-parse --abbrev-ref @{upstream} 2>/dev/null || echo \"NO_UPSTREAM\"\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null)..HEAD 2>/dev/null\n```\n\n**Capture these data points simultaneously:**\n1. What files changed (staged vs unstaged)\n2. Recent 30 commit messages for style detection\n3. Branch position relative to main/master\n4. Whether branch has upstream tracking\n5. Commits that would go in PR (local only)\n</parallel_analysis>\n\n---\n\n## PHASE 1: Style Detection (BLOCKING - MUST OUTPUT BEFORE PROCEEDING)\n\n<style_detection>\n**THIS PHASE HAS MANDATORY OUTPUT** - You MUST print the analysis result before moving to Phase 2.\n\n### 1.1 Language Detection\n\n```\nCount from git log -30:\n- Korean characters: N commits\n- English only: M commits\n- Mixed: K commits\n\nDECISION:\n- If Korean >= 50% -> KOREAN\n- If English >= 50% -> ENGLISH \n- If Mixed -> Use MAJORITY language\n```\n\n### 1.2 Commit Style Classification\n\n| Style | Pattern | Example | Detection Regex |\n|-------|---------|---------|-----------------|\n| `SEMANTIC` | `type: message` or `type(scope): message` | `feat: add login` | `/^(feat\\|fix\\|chore\\|refactor\\|docs\\|test\\|ci\\|style\\|perf\\|build)(\\(.+\\))?:/` |\n| `PLAIN` | Just description, no prefix | `Add login feature` | No conventional prefix, >3 words |\n| `SENTENCE` | Full sentence style | `Implemented the new login flow` | Complete grammatical sentence |\n| `SHORT` | Minimal keywords | `format`, `lint` | 1-3 words only |\n\n**Detection Algorithm:**\n```\nsemantic_count = commits matching semantic regex\nplain_count = non-semantic commits with >3 words\nshort_count = commits with <=3 words\n\nIF semantic_count >= 15 (50%): STYLE = SEMANTIC\nELSE IF plain_count >= 15: STYLE = PLAIN \nELSE IF short_count >= 10: STYLE = SHORT\nELSE: STYLE = PLAIN (safe default)\n```\n\n### 1.3 MANDATORY OUTPUT (BLOCKING)\n\n**You MUST output this block before proceeding to Phase 2. NO EXCEPTIONS.**\n\n```\nSTYLE DETECTION RESULT\n======================\nAnalyzed: 30 commits from git log\n\nLanguage: [KOREAN | ENGLISH]\n - Korean commits: N (X%)\n - English commits: M (Y%)\n\nStyle: [SEMANTIC | PLAIN | SENTENCE | SHORT]\n - Semantic (feat:, fix:, etc): N (X%)\n - Plain: M (Y%)\n - Short: K (Z%)\n\nReference examples from repo:\n 1. \"actual commit message from log\"\n 2. \"actual commit message from log\"\n 3. \"actual commit message from log\"\n\nAll commits will follow: [LANGUAGE] + [STYLE]\n```\n\n**IF YOU SKIP THIS OUTPUT, YOUR COMMITS WILL BE WRONG. STOP AND REDO.**\n</style_detection>\n\n---\n\n## PHASE 2: Branch Context Analysis\n\n<branch_analysis>\n### 2.1 Determine Branch State\n\n```\nBRANCH_STATE:\n current_branch: <name>\n has_upstream: true | false\n commits_ahead: N # Local-only commits\n merge_base: <hash>\n \nREWRITE_SAFETY:\n - If has_upstream AND commits_ahead > 0 AND already pushed:\n -> WARN before force push\n - If no upstream OR all commits local:\n -> Safe for aggressive rewrite (fixup, reset, rebase)\n - If on main/master:\n -> NEVER rewrite, only new commits\n```\n\n### 2.2 History Rewrite Strategy Decision\n\n```\nIF current_branch == main OR current_branch == master:\n -> STRATEGY = NEW_COMMITS_ONLY\n -> Never fixup, never rebase\n\nELSE IF commits_ahead == 0:\n -> STRATEGY = NEW_COMMITS_ONLY\n -> No history to rewrite\n\nELSE IF all commits are local (not pushed):\n -> STRATEGY = AGGRESSIVE_REWRITE\n -> Fixup freely, reset if needed, rebase to clean\n\nELSE IF pushed but not merged:\n -> STRATEGY = CAREFUL_REWRITE \n -> Fixup OK but warn about force push\n```\n</branch_analysis>\n\n---\n\n## PHASE 3: Atomic Unit Planning (BLOCKING - MUST OUTPUT BEFORE PROCEEDING)\n\n<atomic_planning>\n**THIS PHASE HAS MANDATORY OUTPUT** - You MUST print the commit plan before moving to Phase 4.\n\n### 3.0 Calculate Minimum Commit Count FIRST\n\n```\nFORMULA: min_commits = ceil(file_count / 3)\n\n 3 files -> min 1 commit\n 5 files -> min 2 commits\n 9 files -> min 3 commits\n15 files -> min 5 commits\n```\n\n**If your planned commit count < min_commits -> WRONG. SPLIT MORE.**\n\n### 3.1 Split by Directory/Module FIRST (Primary Split)\n\n**RULE: Different directories = Different commits (almost always)**\n\n```\nExample: 8 changed files\n - app/[locale]/page.tsx\n - app/[locale]/layout.tsx\n - components/demo/browser-frame.tsx\n - components/demo/shopify-full-site.tsx\n - components/pricing/pricing-table.tsx\n - e2e/navbar.spec.ts\n - messages/en.json\n - messages/ko.json\n\nWRONG: 1 commit \"Update landing page\" (LAZY, WRONG)\nWRONG: 2 commits (still too few)\n\nCORRECT: Split by directory/concern:\n - Commit 1: app/[locale]/page.tsx + layout.tsx (app layer)\n - Commit 2: components/demo/* (demo components)\n - Commit 3: components/pricing/* (pricing components)\n - Commit 4: e2e/* (tests)\n - Commit 5: messages/* (i18n)\n = 5 commits from 8 files (CORRECT)\n```\n\n### 3.2 Split by Concern SECOND (Secondary Split)\n\n**Within same directory, split by logical concern:**\n\n```\nExample: components/demo/ has 4 files\n - browser-frame.tsx (UI frame)\n - shopify-full-site.tsx (specific demo)\n - review-dashboard.tsx (NEW - specific demo)\n - tone-settings.tsx (NEW - specific demo)\n\nOption A (acceptable): 1 commit if ALL tightly coupled\nOption B (preferred): 2 commits\n - Commit: \"Update existing demo components\" (browser-frame, shopify)\n - Commit: \"Add new demo components\" (review-dashboard, tone-settings)\n```\n\n### 3.3 NEVER Do This (Anti-Pattern Examples)\n\n```\nWRONG: \"Refactor entire landing page\" - 1 commit with 15 files\nWRONG: \"Update components and tests\" - 1 commit mixing concerns\nWRONG: \"Big update\" - Any commit touching 5+ unrelated files\n\nRIGHT: Multiple focused commits, each 1-4 files max\nRIGHT: Each commit message describes ONE specific change\nRIGHT: A reviewer can understand each commit in 30 seconds\n```\n\n### 3.4 Implementation + Test Pairing (MANDATORY)\n\n```\nRULE: Test files MUST be in same commit as implementation\n\nTest patterns to match:\n- test_*.py <-> *.py\n- *_test.py <-> *.py\n- *.test.ts <-> *.ts\n- *.spec.ts <-> *.ts\n- __tests__/*.ts <-> *.ts\n- tests/*.py <-> src/*.py\n```\n\n### 3.5 MANDATORY JUSTIFICATION (Before Creating Commit Plan)\n\n**NON-NEGOTIABLE: Before finalizing your commit plan, you MUST:**\n\n```\nFOR EACH planned commit with 3+ files:\n 1. List all files in this commit\n 2. Write ONE sentence explaining why they MUST be together\n 3. If you can't write that sentence -> SPLIT\n \nTEMPLATE:\n\"Commit N contains [files] because [specific reason they are inseparable].\"\n\nVALID reasons:\n VALID: \"implementation file + its direct test file\"\n VALID: \"type definition + the only file that uses it\"\n VALID: \"migration + model change (would break without both)\"\n \nINVALID reasons (MUST SPLIT instead):\n INVALID: \"all related to feature X\" (too vague)\n INVALID: \"part of the same PR\" (not a reason)\n INVALID: \"they were changed together\" (not a reason)\n INVALID: \"makes sense to group\" (not a reason)\n```\n\n**OUTPUT THIS JUSTIFICATION in your analysis before executing commits.**\n\n### 3.7 Dependency Ordering\n\n```\nLevel 0: Utilities, constants, type definitions\nLevel 1: Models, schemas, interfaces\nLevel 2: Services, business logic\nLevel 3: API endpoints, controllers\nLevel 4: Configuration, infrastructure\n\nCOMMIT ORDER: Level 0 -> Level 1 -> Level 2 -> Level 3 -> Level 4\n```\n\n### 3.8 Create Commit Groups\n\nFor each logical feature/change:\n```yaml\n- group_id: 1\n feature: \"Add Shopify discount deletion\"\n files:\n - errors/shopify_error.py\n - types/delete_input.py\n - mutations/update_contract.py\n - tests/test_update_contract.py\n dependency_level: 2\n target_commit: null | <existing-hash> # null = new, hash = fixup\n```\n\n### 3.9 MANDATORY OUTPUT (BLOCKING)\n\n**You MUST output this block before proceeding to Phase 4. NO EXCEPTIONS.**\n\n```\nCOMMIT PLAN\n===========\nFiles changed: N\nMinimum commits required: ceil(N/3) = M\nPlanned commits: K\nStatus: K >= M (PASS) | K < M (FAIL - must split more)\n\nCOMMIT 1: [message in detected style]\n - path/to/file1.py\n - path/to/file1_test.py\n Justification: implementation + its test\n\nCOMMIT 2: [message in detected style]\n - path/to/file2.py\n Justification: independent utility function\n\nCOMMIT 3: [message in detected style]\n - config/settings.py\n - config/constants.py\n Justification: tightly coupled config changes\n\nExecution order: Commit 1 -> Commit 2 -> Commit 3\n(follows dependency: Level 0 -> Level 1 -> Level 2 -> ...)\n```\n\n**VALIDATION BEFORE EXECUTION:**\n- Each commit has <=4 files (or justified)\n- Each commit message matches detected STYLE + LANGUAGE\n- Test files paired with implementation\n- Different directories = different commits (or justified)\n- Total commits >= min_commits\n\n**IF ANY CHECK FAILS, DO NOT PROCEED. REPLAN.**\n</atomic_planning>\n\n---\n\n## PHASE 4: Commit Strategy Decision\n\n<strategy_decision>\n### 4.1 For Each Commit Group, Decide:\n\n```\nFIXUP if:\n - Change complements existing commit's intent\n - Same feature, fixing bugs or adding missing parts\n - Review feedback incorporation\n - Target commit exists in local history\n\nNEW COMMIT if:\n - New feature or capability\n - Independent logical unit\n - Different issue/ticket\n - No suitable target commit exists\n```\n\n### 4.2 History Rebuild Decision (Aggressive Option)\n\n```\nCONSIDER RESET & REBUILD when:\n - History is messy (many small fixups already)\n - Commits are not atomic (mixed concerns)\n - Dependency order is wrong\n \nRESET WORKFLOW:\n 1. git reset --soft $(git merge-base HEAD main)\n 2. All changes now staged\n 3. Re-commit in proper atomic units\n 4. Clean history from scratch\n \nONLY IF:\n - All commits are local (not pushed)\n - User explicitly allows OR branch is clearly WIP\n```\n\n### 4.3 Final Plan Summary\n\n```yaml\nEXECUTION_PLAN:\n strategy: FIXUP_THEN_NEW | NEW_ONLY | RESET_REBUILD\n fixup_commits:\n - files: [...]\n target: <hash>\n new_commits:\n - files: [...]\n message: \"...\"\n level: N\n requires_force_push: true | false\n```\n</strategy_decision>\n\n---\n\n## PHASE 5: Commit Execution\n\n<execution>\n### 5.1 Register TODO Items\n\nUse TodoWrite to register each commit as a trackable item:\n```\n- [ ] Fixup: <description> -> <target-hash>\n- [ ] New: <description>\n- [ ] Rebase autosquash\n- [ ] Final verification\n```\n\n### 5.2 Fixup Commits (If Any)\n\n```bash\n# Stage files for each fixup\ngit add <files>\ngit commit --fixup=<target-hash>\n\n# Repeat for all fixups...\n\n# Single autosquash rebase at the end\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\nGIT_SEQUENCE_EDITOR=: git rebase -i --autosquash $MERGE_BASE\n```\n\n### 5.3 New Commits (After Fixups)\n\nFor each new commit group, in dependency order:\n\n```bash\n# Stage files\ngit add <file1> <file2> ...\n\n# Verify staging\ngit diff --staged --stat\n\n# Commit with detected style\ngit commit -m \"<message-matching-COMMIT_CONFIG>\"\n\n# Verify\ngit log -1 --oneline\n```\n\n### 5.4 Commit Message Generation\n\n**Based on COMMIT_CONFIG from Phase 1:**\n\n```\nIF style == SEMANTIC AND language == KOREAN:\n -> \"feat: \uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\"\n \nIF style == SEMANTIC AND language == ENGLISH:\n -> \"feat: add login feature\"\n \nIF style == PLAIN AND language == KOREAN:\n -> \"\uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\"\n \nIF style == PLAIN AND language == ENGLISH:\n -> \"Add login feature\"\n \nIF style == SHORT:\n -> \"format\" / \"type fix\" / \"lint\"\n```\n\n**VALIDATION before each commit:**\n1. Does message match detected style?\n2. Does language match detected language?\n3. Is it similar to examples from git log?\n\nIf ANY check fails -> REWRITE message.\n```\n</execution>\n\n---\n\n## PHASE 6: Verification & Cleanup\n\n<verification>\n### 6.1 Post-Commit Verification\n\n```bash\n# Check working directory clean\ngit status\n\n# Review new history\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)..HEAD\n\n# Verify each commit is atomic\n# (mentally check: can each be reverted independently?)\n```\n\n### 6.2 Force Push Decision\n\n```\nIF fixup was used AND branch has upstream:\n -> Requires: git push --force-with-lease\n -> WARN user about force push implications\n \nIF only new commits:\n -> Regular: git push\n```\n\n### 6.3 Final Report\n\n```\nCOMMIT SUMMARY:\n Strategy: <what was done>\n Commits created: N\n Fixups merged: M\n \nHISTORY:\n <hash1> <message1>\n <hash2> <message2>\n ...\n\nNEXT STEPS:\n - git push [--force-with-lease]\n - Create PR if ready\n```\n</verification>";
|
|
1
|
+
export declare const GIT_MASTER_COMMIT_WORKFLOW_SECTION = "## PHASE 0: Parallel Context Gathering (MANDATORY FIRST STEP)\n\n<parallel_analysis>\n**Execute ALL of the following commands IN PARALLEL to minimize latency:**\n\n```bash\n# Group 1: Current state\ngit status\ngit diff --staged --stat\ngit diff --stat\n\n# Group 2: History context \ngit log -30 --oneline\ngit log -30 --pretty=format:\"%s\"\n\n# Group 3: Branch context\ngit branch --show-current\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null\ngit rev-parse --abbrev-ref @{upstream} 2>/dev/null || echo \"NO_UPSTREAM\"\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null)..HEAD 2>/dev/null\n```\n\n**Capture these data points simultaneously:**\n1. What files changed (staged vs unstaged)\n2. Recent 30 commit messages for style detection\n3. Branch position relative to main/master\n4. Whether branch has upstream tracking\n5. Commits that would go in PR (local only)\n</parallel_analysis>\n\n---\n\n## PHASE 1: Style Detection (BLOCKING - MUST OUTPUT BEFORE PROCEEDING)\n\n<style_detection>\n**THIS PHASE HAS MANDATORY OUTPUT** - You MUST print the analysis result before moving to Phase 2.\n\n### 1.1 Language Detection\n\n```\nCount from git log -30:\n- Chinese characters (\\u4e00-\\u9fff): N commits\n- English only: K commits\n- Mixed: L commits\n\nDECISION:\n- If Chinese >= 50% -> CHINESE\n- If English >= 50% -> ENGLISH\n- If Mixed -> Use MAJORITY language\n```\n\n### 1.2 Commit Style Classification\n\n| Style | Pattern | Example | Detection Regex |\n|-------|---------|---------|-----------------|\n| `SEMANTIC` | `type: message` or `type(scope): message` | `feat: add login` | `/^(feat\\|fix\\|chore\\|refactor\\|docs\\|test\\|ci\\|style\\|perf\\|build)(\\(.+\\))?:/` |\n| `PLAIN` | Just description, no prefix | `Add login feature` | No conventional prefix, >3 words |\n| `SENTENCE` | Full sentence style | `Implemented the new login flow` | Complete grammatical sentence |\n| `SHORT` | Minimal keywords | `format`, `lint` | 1-3 words only |\n\n**Detection Algorithm:**\n```\nsemantic_count = commits matching semantic regex\nplain_count = non-semantic commits with >3 words\nshort_count = commits with <=3 words\n\nIF semantic_count >= 15 (50%): STYLE = SEMANTIC\nELSE IF plain_count >= 15: STYLE = PLAIN \nELSE IF short_count >= 10: STYLE = SHORT\nELSE: STYLE = PLAIN (safe default)\n```\n\n### 1.3 MANDATORY OUTPUT (BLOCKING)\n\n**You MUST output this block before proceeding to Phase 2. NO EXCEPTIONS.**\n\n```\nSTYLE DETECTION RESULT\n======================\nAnalyzed: 30 commits from git log\n\nLanguage: [CHINESE | ENGLISH]\n - Chinese commits: N (X%)\n - English commits: K (Z%)\n\nStyle: [SEMANTIC | PLAIN | SENTENCE | SHORT]\n - Semantic (feat:, fix:, etc): N (X%)\n - Plain: M (Y%)\n - Short: K (Z%)\n\nReference examples from repo:\n 1. \"actual commit message from log\"\n 2. \"actual commit message from log\"\n 3. \"actual commit message from log\"\n\nAll commits will follow: [LANGUAGE] + [STYLE]\n```\n\n**IF YOU SKIP THIS OUTPUT, YOUR COMMITS WILL BE WRONG. STOP AND REDO.**\n</style_detection>\n\n---\n\n## PHASE 2: Branch Context Analysis\n\n<branch_analysis>\n### 2.1 Determine Branch State\n\n```\nBRANCH_STATE:\n current_branch: <name>\n has_upstream: true | false\n commits_ahead: N # Local-only commits\n merge_base: <hash>\n \nREWRITE_SAFETY:\n - If has_upstream AND commits_ahead > 0 AND already pushed:\n -> WARN before force push\n - If no upstream OR all commits local:\n -> Safe for aggressive rewrite (fixup, reset, rebase)\n - If on main/master:\n -> NEVER rewrite, only new commits\n```\n\n### 2.2 History Rewrite Strategy Decision\n\n```\nIF current_branch == main OR current_branch == master:\n -> STRATEGY = NEW_COMMITS_ONLY\n -> Never fixup, never rebase\n\nELSE IF commits_ahead == 0:\n -> STRATEGY = NEW_COMMITS_ONLY\n -> No history to rewrite\n\nELSE IF all commits are local (not pushed):\n -> STRATEGY = AGGRESSIVE_REWRITE\n -> Fixup freely, reset if needed, rebase to clean\n\nELSE IF pushed but not merged:\n -> STRATEGY = CAREFUL_REWRITE \n -> Fixup OK but warn about force push\n```\n</branch_analysis>\n\n---\n\n## PHASE 3: Atomic Unit Planning (BLOCKING - MUST OUTPUT BEFORE PROCEEDING)\n\n<atomic_planning>\n**THIS PHASE HAS MANDATORY OUTPUT** - You MUST print the commit plan before moving to Phase 4.\n\n### 3.0 Calculate Minimum Commit Count FIRST\n\n```\nFORMULA: min_commits = ceil(file_count / 3)\n\n 3 files -> min 1 commit\n 5 files -> min 2 commits\n 9 files -> min 3 commits\n15 files -> min 5 commits\n```\n\n**If your planned commit count < min_commits -> WRONG. SPLIT MORE.**\n\n### 3.1 Split by Directory/Module FIRST (Primary Split)\n\n**RULE: Different directories = Different commits (almost always)**\n\n```\nExample: 8 changed files\n - app/[locale]/page.tsx\n - app/[locale]/layout.tsx\n - components/demo/browser-frame.tsx\n - components/demo/shopify-full-site.tsx\n - components/pricing/pricing-table.tsx\n - e2e/navbar.spec.ts\n - messages/en.json\n - messages/ko.json\n\nWRONG: 1 commit \"Update landing page\" (LAZY, WRONG)\nWRONG: 2 commits (still too few)\n\nCORRECT: Split by directory/concern:\n - Commit 1: app/[locale]/page.tsx + layout.tsx (app layer)\n - Commit 2: components/demo/* (demo components)\n - Commit 3: components/pricing/* (pricing components)\n - Commit 4: e2e/* (tests)\n - Commit 5: messages/* (i18n)\n = 5 commits from 8 files (CORRECT)\n```\n\n### 3.2 Split by Concern SECOND (Secondary Split)\n\n**Within same directory, split by logical concern:**\n\n```\nExample: components/demo/ has 4 files\n - browser-frame.tsx (UI frame)\n - shopify-full-site.tsx (specific demo)\n - review-dashboard.tsx (NEW - specific demo)\n - tone-settings.tsx (NEW - specific demo)\n\nOption A (acceptable): 1 commit if ALL tightly coupled\nOption B (preferred): 2 commits\n - Commit: \"Update existing demo components\" (browser-frame, shopify)\n - Commit: \"Add new demo components\" (review-dashboard, tone-settings)\n```\n\n### 3.3 NEVER Do This (Anti-Pattern Examples)\n\n```\nWRONG: \"Refactor entire landing page\" - 1 commit with 15 files\nWRONG: \"Update components and tests\" - 1 commit mixing concerns\nWRONG: \"Big update\" - Any commit touching 5+ unrelated files\n\nRIGHT: Multiple focused commits, each 1-4 files max\nRIGHT: Each commit message describes ONE specific change\nRIGHT: A reviewer can understand each commit in 30 seconds\n```\n\n### 3.4 Implementation + Test Pairing (MANDATORY)\n\n```\nRULE: Test files MUST be in same commit as implementation\n\nTest patterns to match:\n- test_*.py <-> *.py\n- *_test.py <-> *.py\n- *.test.ts <-> *.ts\n- *.spec.ts <-> *.ts\n- __tests__/*.ts <-> *.ts\n- tests/*.py <-> src/*.py\n```\n\n### 3.5 MANDATORY JUSTIFICATION (Before Creating Commit Plan)\n\n**NON-NEGOTIABLE: Before finalizing your commit plan, you MUST:**\n\n```\nFOR EACH planned commit with 3+ files:\n 1. List all files in this commit\n 2. Write ONE sentence explaining why they MUST be together\n 3. If you can't write that sentence -> SPLIT\n \nTEMPLATE:\n\"Commit N contains [files] because [specific reason they are inseparable].\"\n\nVALID reasons:\n VALID: \"implementation file + its direct test file\"\n VALID: \"type definition + the only file that uses it\"\n VALID: \"migration + model change (would break without both)\"\n \nINVALID reasons (MUST SPLIT instead):\n INVALID: \"all related to feature X\" (too vague)\n INVALID: \"part of the same PR\" (not a reason)\n INVALID: \"they were changed together\" (not a reason)\n INVALID: \"makes sense to group\" (not a reason)\n```\n\n**OUTPUT THIS JUSTIFICATION in your analysis before executing commits.**\n\n### 3.7 Dependency Ordering\n\n```\nLevel 0: Utilities, constants, type definitions\nLevel 1: Models, schemas, interfaces\nLevel 2: Services, business logic\nLevel 3: API endpoints, controllers\nLevel 4: Configuration, infrastructure\n\nCOMMIT ORDER: Level 0 -> Level 1 -> Level 2 -> Level 3 -> Level 4\n```\n\n### 3.8 Create Commit Groups\n\nFor each logical feature/change:\n```yaml\n- group_id: 1\n feature: \"Add Shopify discount deletion\"\n files:\n - errors/shopify_error.py\n - types/delete_input.py\n - mutations/update_contract.py\n - tests/test_update_contract.py\n dependency_level: 2\n target_commit: null | <existing-hash> # null = new, hash = fixup\n```\n\n### 3.9 MANDATORY OUTPUT (BLOCKING)\n\n**You MUST output this block before proceeding to Phase 4. NO EXCEPTIONS.**\n\n```\nCOMMIT PLAN\n===========\nFiles changed: N\nMinimum commits required: ceil(N/3) = M\nPlanned commits: K\nStatus: K >= M (PASS) | K < M (FAIL - must split more)\n\nCOMMIT 1: [message in detected style]\n - path/to/file1.py\n - path/to/file1_test.py\n Justification: implementation + its test\n\nCOMMIT 2: [message in detected style]\n - path/to/file2.py\n Justification: independent utility function\n\nCOMMIT 3: [message in detected style]\n - config/settings.py\n - config/constants.py\n Justification: tightly coupled config changes\n\nExecution order: Commit 1 -> Commit 2 -> Commit 3\n(follows dependency: Level 0 -> Level 1 -> Level 2 -> ...)\n```\n\n**VALIDATION BEFORE EXECUTION:**\n- Each commit has <=4 files (or justified)\n- Each commit message matches detected STYLE + LANGUAGE\n- Test files paired with implementation\n- Different directories = different commits (or justified)\n- Total commits >= min_commits\n\n**IF ANY CHECK FAILS, DO NOT PROCEED. REPLAN.**\n</atomic_planning>\n\n---\n\n## PHASE 4: Commit Strategy Decision\n\n<strategy_decision>\n### 4.1 For Each Commit Group, Decide:\n\n```\nFIXUP if:\n - Change complements existing commit's intent\n - Same feature, fixing bugs or adding missing parts\n - Review feedback incorporation\n - Target commit exists in local history\n\nNEW COMMIT if:\n - New feature or capability\n - Independent logical unit\n - Different issue/ticket\n - No suitable target commit exists\n```\n\n### 4.2 History Rebuild Decision (Aggressive Option)\n\n```\nCONSIDER RESET & REBUILD when:\n - History is messy (many small fixups already)\n - Commits are not atomic (mixed concerns)\n - Dependency order is wrong\n \nRESET WORKFLOW:\n 1. git reset --soft $(git merge-base HEAD main)\n 2. All changes now staged\n 3. Re-commit in proper atomic units\n 4. Clean history from scratch\n \nONLY IF:\n - All commits are local (not pushed)\n - User explicitly allows OR branch is clearly WIP\n```\n\n### 4.3 Final Plan Summary\n\n```yaml\nEXECUTION_PLAN:\n strategy: FIXUP_THEN_NEW | NEW_ONLY | RESET_REBUILD\n fixup_commits:\n - files: [...]\n target: <hash>\n new_commits:\n - files: [...]\n message: \"...\"\n level: N\n requires_force_push: true | false\n```\n</strategy_decision>\n\n---\n\n## PHASE 5: Commit Execution\n\n<execution>\n### 5.1 Register TODO Items\n\nUse TodoWrite to register each commit as a trackable item:\n```\n- [ ] Fixup: <description> -> <target-hash>\n- [ ] New: <description>\n- [ ] Rebase autosquash\n- [ ] Final verification\n```\n\n### 5.2 Fixup Commits (If Any)\n\n```bash\n# Stage files for each fixup\ngit add <files>\ngit commit --fixup=<target-hash>\n\n# Repeat for all fixups...\n\n# Single autosquash rebase at the end\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\nGIT_SEQUENCE_EDITOR=: git rebase -i --autosquash $MERGE_BASE\n```\n\n### 5.3 New Commits (After Fixups)\n\nFor each new commit group, in dependency order:\n\n```bash\n# Stage files\ngit add <file1> <file2> ...\n\n# Verify staging\ngit diff --staged --stat\n\n# Commit with detected style\ngit commit -m \"<message-matching-COMMIT_CONFIG>\"\n\n# Verify\ngit log -1 --oneline\n```\n\n### 5.4 Commit Message Generation\n\n**Based on COMMIT_CONFIG from Phase 1:**\n\n```\nIF style == SEMANTIC AND language == CHINESE:\n -> \"feat: \u6DFB\u52A0\u767B\u5F55\u529F\u80FD\"\n \nIF style == SEMANTIC AND language == ENGLISH:\n -> \"feat: add login feature\"\n\nIF style == PLAIN AND language == CHINESE:\n -> \"\u6DFB\u52A0\u767B\u5F55\u529F\u80FD\"\n\nIF style == PLAIN AND language == ENGLISH:\n -> \"Add login feature\"\n\nIF style == SHORT:\n -> \"format\" / \"type fix\" / \"lint\"\n```\n\n**VALIDATION before each commit:**\n1. Does message match detected style?\n2. Does language match detected language?\n3. Is it similar to examples from git log?\n\nIf ANY check fails -> REWRITE message.\n```\n</execution>\n\n---\n\n## PHASE 6: Verification & Cleanup\n\n<verification>\n### 6.1 Post-Commit Verification\n\n```bash\n# Check working directory clean\ngit status\n\n# Review new history\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)..HEAD\n\n# Verify each commit is atomic\n# (mentally check: can each be reverted independently?)\n```\n\n### 6.2 Force Push Decision\n\n```\nIF fixup was used AND branch has upstream:\n -> Requires: git push --force-with-lease\n -> WARN user about force push implications\n \nIF only new commits:\n -> Regular: git push\n```\n\n### 6.3 Final Report\n\n```\nCOMMIT SUMMARY:\n Strategy: <what was done>\n Commits created: N\n Fixups merged: M\n \nHISTORY:\n <hash1> <message1>\n <hash2> <message2>\n ...\n\nNEXT STEPS:\n - git push [--force-with-lease]\n - Create PR if ready\n```\n</verification>";
|
package/dist/index.js
CHANGED
|
@@ -71149,6 +71149,7 @@ function createAnthropicContextWindowLimitRecoveryHook(ctx, options) {
|
|
|
71149
71149
|
}
|
|
71150
71150
|
// src/hooks/think-mode/detector.ts
|
|
71151
71151
|
var MULTILINGUAL_KEYWORDS = [
|
|
71152
|
+
"\u6DF1\u601D\u719F\u8651",
|
|
71152
71153
|
"\uC0DD\uAC01",
|
|
71153
71154
|
"\uAC80\uD1A0",
|
|
71154
71155
|
"\uC81C\uB300\uB85C",
|
|
@@ -79512,13 +79513,13 @@ git log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD
|
|
|
79512
79513
|
|
|
79513
79514
|
\`\`\`
|
|
79514
79515
|
Count from git log -30:
|
|
79515
|
-
-
|
|
79516
|
-
- English only:
|
|
79517
|
-
- Mixed:
|
|
79516
|
+
- Chinese characters (\\u4e00-\\u9fff): N commits
|
|
79517
|
+
- English only: K commits
|
|
79518
|
+
- Mixed: L commits
|
|
79518
79519
|
|
|
79519
79520
|
DECISION:
|
|
79520
|
-
- If
|
|
79521
|
-
- If English >= 50% -> ENGLISH
|
|
79521
|
+
- If Chinese >= 50% -> CHINESE
|
|
79522
|
+
- If English >= 50% -> ENGLISH
|
|
79522
79523
|
- If Mixed -> Use MAJORITY language
|
|
79523
79524
|
\`\`\`
|
|
79524
79525
|
|
|
@@ -79552,9 +79553,9 @@ STYLE DETECTION RESULT
|
|
|
79552
79553
|
======================
|
|
79553
79554
|
Analyzed: 30 commits from git log
|
|
79554
79555
|
|
|
79555
|
-
Language: [
|
|
79556
|
-
-
|
|
79557
|
-
- English commits:
|
|
79556
|
+
Language: [CHINESE | ENGLISH]
|
|
79557
|
+
- Chinese commits: N (X%)
|
|
79558
|
+
- English commits: K (Z%)
|
|
79558
79559
|
|
|
79559
79560
|
Style: [SEMANTIC | PLAIN | SENTENCE | SHORT]
|
|
79560
79561
|
- Semantic (feat:, fix:, etc): N (X%)
|
|
@@ -79908,18 +79909,18 @@ git log -1 --oneline
|
|
|
79908
79909
|
**Based on COMMIT_CONFIG from Phase 1:**
|
|
79909
79910
|
|
|
79910
79911
|
\`\`\`
|
|
79911
|
-
IF style == SEMANTIC AND language ==
|
|
79912
|
-
-> "feat: \
|
|
79912
|
+
IF style == SEMANTIC AND language == CHINESE:
|
|
79913
|
+
-> "feat: \u6DFB\u52A0\u767B\u5F55\u529F\u80FD"
|
|
79913
79914
|
|
|
79914
79915
|
IF style == SEMANTIC AND language == ENGLISH:
|
|
79915
79916
|
-> "feat: add login feature"
|
|
79916
|
-
|
|
79917
|
-
IF style == PLAIN AND language ==
|
|
79918
|
-
-> "\
|
|
79919
|
-
|
|
79917
|
+
|
|
79918
|
+
IF style == PLAIN AND language == CHINESE:
|
|
79919
|
+
-> "\u6DFB\u52A0\u767B\u5F55\u529F\u80FD"
|
|
79920
|
+
|
|
79920
79921
|
IF style == PLAIN AND language == ENGLISH:
|
|
79921
79922
|
-> "Add login feature"
|
|
79922
|
-
|
|
79923
|
+
|
|
79923
79924
|
IF style == SHORT:
|
|
79924
79925
|
-> "format" / "type fix" / "lint"
|
|
79925
79926
|
\`\`\`
|
|
@@ -96880,14 +96881,14 @@ var ALLOWED_AGENTS = [
|
|
|
96880
96881
|
"momus",
|
|
96881
96882
|
"multimodal-looker"
|
|
96882
96883
|
];
|
|
96883
|
-
var CALL_OMO_AGENT_DESCRIPTION =
|
|
96884
|
+
var CALL_OMO_AGENT_DESCRIPTION = `\u542F\u52A8 explore/librarian \u4EE3\u7406\u6216\u81EA\u5B9A\u4E49\u4EE3\u7406\u3002\u5FC5\u987B\u63D0\u4F9B run_in_background (true=\u5F02\u6B65\u8FD4\u56DE task_id, false=\u540C\u6B65)\u3002
|
|
96884
96885
|
|
|
96885
|
-
|
|
96886
|
+
\u5185\u7F6E\u4EE3\u7406:
|
|
96886
96887
|
{agents}
|
|
96887
96888
|
|
|
96888
|
-
|
|
96889
|
+
\u4E5F\u652F\u6301\u901A\u8FC7\u7528\u6237\u6216\u9879\u76EE\u4EE3\u7406\u76EE\u5F55\u6CE8\u518C\u7684\u81EA\u5B9A\u4E49\u4EE3\u7406\u3002
|
|
96889
96890
|
|
|
96890
|
-
|
|
96891
|
+
\u4F20\u9012 \`session_id=<id>\` \u53EF\u7EE7\u7EED\u4E4B\u524D\u7684\u4EE3\u7406\u5E76\u4FDD\u7559\u5B8C\u6574\u4E0A\u4E0B\u6587\u3002\u5D4C\u5957 subagent \u6DF1\u5EA6\u81EA\u52A8\u8FFD\u8E2A\uFF0C\u8D85\u8FC7\u914D\u7F6E\u9650\u5236\u540E\u4F1A\u88AB\u963B\u6B62\u3002\u4F7F\u7528 \`background_output\` \u83B7\u53D6\u5F02\u6B65\u7ED3\u679C\u3002**\u63D0\u793A\u8BCD\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587,\u4E0D\u5F97\u4F7F\u7528\u5176\u4ED6\u8BED\u8A00\u3002**`;
|
|
96891
96892
|
// src/tools/call-omo-agent/tools.ts
|
|
96892
96893
|
init_agent_display_names();
|
|
96893
96894
|
|
|
@@ -98186,10 +98187,10 @@ var FREE_OR_LOCAL_PROMPT_TOKEN_LIMIT = 24000;
|
|
|
98186
98187
|
var PLAN_AGENT_PROMPT_BASE = `
|
|
98187
98188
|
|
|
98188
98189
|
Additional requirements for this planning request:
|
|
98189
|
-
-
|
|
98190
|
-
-
|
|
98191
|
-
-
|
|
98192
|
-
-
|
|
98190
|
+
- \u4F7F\u7528\u4E2D\u6587\u56DE\u7B54\u3002
|
|
98191
|
+
- \u4F7F\u7528\u4E2D\u6587\u64B0\u5199\u8BA1\u5212\u3002
|
|
98192
|
+
- \u4E3A\u9AD8\u6548\u5DE5\u4F5C\u505A\u597D\u89C4\u5212\u3002
|
|
98193
|
+
- \u5305\u542B\u6E05\u6670\u7684\u539F\u5B50\u5316\u63D0\u4EA4\u7B56\u7565\u3002`;
|
|
98193
98194
|
var TDD_LINE = "- Use TDD-oriented planning.";
|
|
98194
98195
|
function buildPlanAgentPromptAppend(tddEnabled) {
|
|
98195
98196
|
if (tddEnabled) {
|
|
@@ -100604,46 +100605,46 @@ function createDelegateTaskPresentation(options) {
|
|
|
100604
100605
|
return description2 ? ` - ${name}: ${description2}` : ` - ${name}`;
|
|
100605
100606
|
}).join(`
|
|
100606
100607
|
`);
|
|
100607
|
-
const description =
|
|
100608
|
-
|
|
100609
|
-
\u26A0\uFE0F
|
|
100610
|
-
|
|
100611
|
-
|
|
100608
|
+
const description = `\u57FA\u4E8E\u5206\u7C7B\u6216\u76F4\u63A5\u4EE3\u7406\u9009\u62E9\u7684\u4EFB\u52A1\u521B\u5EFA\u3002
|
|
100609
|
+
|
|
100610
|
+
\u26A0\uFE0F \u91CD\u8981: \u5FC5\u987B\u63D0\u4F9B category \u6216 subagent_type \u4E4B\u4E00\u3002\u4E24\u8005\u90FD\u7701\u7565\u5C06\u5BFC\u81F4\u5931\u8D25\u3002
|
|
100611
|
+
|
|
100612
|
+
**\u5E38\u89C1\u9519\u8BEF (\u8BF7\u52FF\u8FD9\u6837\u505A):**
|
|
100612
100613
|
\`\`\`
|
|
100613
|
-
task(description="...", prompt="...", run_in_background=false) // \u274C
|
|
100614
|
+
task(description="...", prompt="...", run_in_background=false) // \u274C \u5931\u8D25 - \u7F3A\u5C11 category \u548C subagent_type
|
|
100614
100615
|
\`\`\`
|
|
100615
|
-
|
|
100616
|
-
|
|
100616
|
+
|
|
100617
|
+
**\u6B63\u786E\u7528\u6CD5 - \u4F7F\u7528 category:**
|
|
100617
100618
|
\`\`\`
|
|
100618
|
-
task(category="quick", load_skills=[], description="
|
|
100619
|
+
task(category="quick", load_skills=[], description="\u4FEE\u590D\u7C7B\u578B\u9519\u8BEF", prompt="...", run_in_background=false)
|
|
100619
100620
|
\`\`\`
|
|
100620
|
-
|
|
100621
|
-
|
|
100621
|
+
|
|
100622
|
+
**\u6B63\u786E\u7528\u6CD5 - \u4F7F\u7528 subagent_type:**
|
|
100622
100623
|
\`\`\`
|
|
100623
|
-
task(subagent_type="explore", load_skills=[], description="
|
|
100624
|
+
task(subagent_type="explore", load_skills=[], description="\u67E5\u627E\u6A21\u5F0F", prompt="...", run_in_background=true)
|
|
100624
100625
|
\`\`\`
|
|
100625
|
-
|
|
100626
|
-
|
|
100627
|
-
- category:
|
|
100628
|
-
- subagent_type:
|
|
100629
|
-
|
|
100630
|
-
**
|
|
100631
|
-
|
|
100632
|
-
- load_skills:
|
|
100633
|
-
- category:
|
|
100634
|
-
|
|
100626
|
+
|
|
100627
|
+
\u5FC5\u987B\u63D0\u4F9B\u4EE5\u4E0B\u4E4B\u4E00:
|
|
100628
|
+
- category: \u4EFB\u52A1\u59D4\u6258 (\u4F7F\u7528 Sisyphus-Junior \u53CA\u5206\u7C7B\u4F18\u5316\u6A21\u578B)
|
|
100629
|
+
- subagent_type: \u76F4\u63A5\u8C03\u7528\u4EE3\u7406 (explore, librarian, oracle \u7B49)
|
|
100630
|
+
|
|
100631
|
+
**\u4E0D\u8981\u540C\u65F6\u63D0\u4F9B\u4E24\u8005\u3002** \u5982\u679C\u63D0\u4F9B\u4E86 category\uFF0C\u5219 subagent_type \u4F1A\u88AB\u5FFD\u7565\u3002
|
|
100632
|
+
|
|
100633
|
+
- load_skills: \u59CB\u7EC8\u5FC5\u987B\u3002\u65E0\u9700\u6280\u80FD\u65F6\u4F20\u9012 []\uFF0C\u5206\u7C7B\u4EFB\u52A1\u53EF\u4F20\u9012 ["skill-1", "skill-2"]\u3002
|
|
100634
|
+
- category: \u4F7F\u7528\u9884\u5B9A\u4E49\u5206\u7C7B \u2192 \u542F\u52A8 Sisyphus-Junior \u5E76\u5E94\u7528\u5206\u7C7B\u914D\u7F6E
|
|
100635
|
+
\u53EF\u7528\u5206\u7C7B:
|
|
100635
100636
|
${categoryList}
|
|
100636
|
-
- subagent_type:
|
|
100637
|
-
- run_in_background:
|
|
100638
|
-
- task_id:
|
|
100639
|
-
- command:
|
|
100640
|
-
|
|
100641
|
-
|
|
100642
|
-
-
|
|
100643
|
-
-
|
|
100644
|
-
-
|
|
100645
|
-
|
|
100646
|
-
|
|
100637
|
+
- subagent_type: \u76F4\u63A5\u4F7F\u7528\u6307\u5B9A\u4EE3\u7406 (explore, librarian, oracle, metis, momus)
|
|
100638
|
+
- run_in_background: \u5FC5\u987B\u63D0\u4F9B\u3002true=\u5F02\u6B65 (\u8FD4\u56DE task_id), false=\u540C\u6B65 (\u7B49\u5F85\u7ED3\u679C)\u3002\u4EC5\u5728\u5E76\u884C\u63A2\u7D22 (5+ \u4E2A\u72EC\u7ACB\u67E5\u8BE2) \u65F6\u4F7F\u7528 background=true\u3002
|
|
100639
|
+
- task_id: \u7EE7\u7EED\u73B0\u6709\u4EFB\u52A1 (\u6765\u81EA\u4E4B\u524D\u7684\u4EFB\u52A1\u8F93\u51FA)\u3002\u7EE7\u7EED\u540C\u4E00 subagent \u4F1A\u8BDD\uFF0C\u5B8C\u6574\u4FDD\u7559\u4E0A\u4E0B\u6587\u3002
|
|
100640
|
+
- command: \u89E6\u53D1\u6B64\u4EFB\u52A1\u7684\u547D\u4EE4 (\u53EF\u9009\uFF0C\u7528\u4E8E\u659C\u6760\u547D\u4EE4\u8FFD\u8E2A)\u3002
|
|
100641
|
+
|
|
100642
|
+
**\u4F55\u65F6\u4F7F\u7528 task_id:**
|
|
100643
|
+
- \u4EFB\u52A1\u5931\u8D25/\u4E0D\u5B8C\u6574 \u2192 \u4F7F\u7528 task_id \u5E76\u9644\u5E26 "fix: [\u5177\u4F53\u95EE\u9898]"
|
|
100644
|
+
- \u9700\u8981\u8DDF\u8FDB\u4E4B\u524D\u7684\u7ED3\u679C \u2192 \u4F7F\u7528 task_id \u5E76\u63D0\u51FA\u989D\u5916\u95EE\u9898
|
|
100645
|
+
- \u4E0E\u540C\u4E00\u4EE3\u7406\u7684\u591A\u8F6E\u5BF9\u8BDD \u2192 \u59CB\u7EC8\u4F7F\u7528 task_id \u800C\u975E\u65B0\u5EFA\u4EFB\u52A1
|
|
100646
|
+
|
|
100647
|
+
**\u63D0\u793A\u8BCD\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587,\u4E0D\u8981\u4F7F\u7528\u5176\u4ED6\u8BED\u8A00\u3002**`;
|
|
100647
100648
|
return {
|
|
100648
100649
|
availableCategories,
|
|
100649
100650
|
availableSkills,
|
|
@@ -120313,22 +120314,22 @@ No todos on multi-step work = INCOMPLETE WORK. The user tracks your progress thr
|
|
|
120313
120314
|
}
|
|
120314
120315
|
// src/agents/env-context.ts
|
|
120315
120316
|
var LANGUAGE_GUIDANCE = {
|
|
120316
|
-
"zh-CN": "
|
|
120317
|
-
"zh-TW": "
|
|
120318
|
-
"ja-JP": "
|
|
120319
|
-
"ko-KR": "
|
|
120320
|
-
"fr-FR": "
|
|
120321
|
-
"de-DE": "
|
|
120322
|
-
"es-ES": "
|
|
120323
|
-
"pt-BR": "
|
|
120324
|
-
"ru-RU": "
|
|
120325
|
-
"vi-VN": "
|
|
120326
|
-
"th-TH": "
|
|
120327
|
-
"id-ID": "
|
|
120328
|
-
"ms-MY": "
|
|
120329
|
-
"hi-IN": "
|
|
120330
|
-
"ar-SA": "
|
|
120331
|
-
"he-IL": "
|
|
120317
|
+
"zh-CN": "\u8BED\u8A00\u6307\u5F15: \u9664\u975E\u660E\u786E\u8981\u6C42\u4F7F\u7528\u5176\u4ED6\u8BED\u8A00\uFF0C\u5426\u5219\u8BF7\u4F7F\u7528\u4E2D\u6587\u56DE\u590D",
|
|
120318
|
+
"zh-TW": "\u8A9E\u8A00\u6307\u5F15: \u9664\u975E\u660E\u78BA\u8981\u6C42\u4F7F\u7528\u5176\u4ED6\u8A9E\u8A00\uFF0C\u5426\u5247\u8ACB\u4F7F\u7528\u7E41\u9AD4\u4E2D\u6587\u56DE\u8986",
|
|
120319
|
+
"ja-JP": "\u8A00\u8A9E\u30AC\u30A4\u30C0\u30F3\u30B9: \u660E\u793A\u7684\u306B\u8981\u6C42\u3055\u308C\u306A\u3044\u9650\u308A\u3001\u65E5\u672C\u8A9E\u8A9E\u3067\u5FDC\u7B54\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
120320
|
+
"ko-KR": "\uC5B8\uC5B4 \uC9C0\uCE68: \uBCC4\uB3C4\uB85C \uC694\uCCAD\uD558\uC9C0 \uC54A\uB294 \uD55C \uD55C\uAD6D\uC5B4\uB85C \uC751\uB2F5\uD558\uC138\uC694",
|
|
120321
|
+
"fr-FR": "Guide linguistique: R\xE9pondez en fran\xE7ais sauf demande explicite",
|
|
120322
|
+
"de-DE": "Sprachleitfaden: Antworten Sie auf Deutsch, sofern nicht ausdr\xFCcklich anders angefordert",
|
|
120323
|
+
"es-ES": "Gu\xEDa de idioma: Responda en espa\xF1ol a menos que se solicite expl\xEDcitamente lo contrario",
|
|
120324
|
+
"pt-BR": "Guia de idioma: Responda em portugu\xEAs, a menos que seja explicitamente solicitado o contr\xE1rio",
|
|
120325
|
+
"ru-RU": "\u042F\u0437\u044B\u043A\u043E\u0432\u043E\u0435 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0441\u0442\u0432\u043E: \u041E\u0442\u0432\u0435\u0447\u0430\u0439\u0442\u0435 \u043D\u0430 \u0440\u0443\u0441\u0441\u043A\u043E\u043C \u044F\u0437\u044B\u043A\u0435, \u0435\u0441\u043B\u0438 \u044F\u0432\u043D\u043E \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0438\u043D\u043E\u0435",
|
|
120326
|
+
"vi-VN": "H\u01B0\u1EDBng d\u1EABn ng\xF4n ng\u1EEF: Tr\u1EA3 l\u1EDDi b\u1EB1ng ti\u1EBFng Vi\u1EC7t tr\u1EEB khi c\xF3 y\xEAu c\u1EA7u r\xF5 r\xE0ng kh\xE1c",
|
|
120327
|
+
"th-TH": "\u0E41\u0E19\u0E27\u0E17\u0E32\u0E07\u0E20\u0E32\u0E29\u0E32: \u0E15\u0E2D\u0E1A\u0E40\u0E1B\u0E47\u0E19\u0E20\u0E32\u0E29\u0E32\u0E44\u0E17\u0E22\u0E40\u0E27\u0E49\u0E19\u0E41\u0E15\u0E48\u0E08\u0E30\u0E23\u0E49\u0E2D\u0E07\u0E02\u0E2D\u0E40\u0E1B\u0E47\u0E19\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E2D\u0E37\u0E48\u0E19\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E0A\u0E31\u0E14\u0E40\u0E08\u0E19",
|
|
120328
|
+
"id-ID": "Panduan bahasa: Merespons dalam bahasa Indonesia kecuali diminta secara eksplisit",
|
|
120329
|
+
"ms-MY": "Panduan bahasa: Respons dalam bahasa Melayu melainkan dimohon\u5176\u4ED6\u8BED\u8A00",
|
|
120330
|
+
"hi-IN": "\u092D\u093E\u0937\u093E \u092E\u093E\u0930\u094D\u0917\u0926\u0930\u094D\u0936\u0928: \u091C\u092C \u0924\u0915 \u0938\u094D\u092A\u0937\u094D\u091F \u0930\u0942\u092A \u0938\u0947 \u0905\u0928\u0941\u0930\u094B\u0927 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E\u090F, \u0939\u093F\u0902\u0926\u0940 \u092E\u0947\u0902 \u0909\u0924\u094D\u0924\u0930 \u0926\u0947\u0902",
|
|
120331
|
+
"ar-SA": "\u062F\u0644\u064A\u0644 \u0627\u0644\u0644\u063A\u0629: \u0623\u062C\u0628 \u0628\u0627\u0644\u0639\u0631\u0628\u064A\u0629 \u0645\u0627 \u0644\u0645 \u064A\u064F\u0637\u0644\u0628 \u062E\u0644\u0627\u0641 \u0630\u0644\u0643 \u0635\u0631\u0627\u062D\u0629\u064B",
|
|
120332
|
+
"he-IL": "\u05DE\u05D3\u05E8\u05D9\u05DA \u05E9\u05E4\u05D4: \u05D4\u05E9\u05D1 \u05D1\u05E2\u05D1\u05E8\u05D9\u05EA \u05D0\u05DC\u05D0 \u05D0\u05DD \u05E0\u05D3\u05E8\u05E9 \u05D0\u05D7\u05E8\u05EA \u05D1\u05DE\u05E4\u05D5\u05E8\u05E9"
|
|
120332
120333
|
};
|
|
120333
120334
|
function createEnvContext(language) {
|
|
120334
120335
|
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
@@ -120339,6 +120340,11 @@ function createEnvContext(language) {
|
|
|
120339
120340
|
if (guidance) {
|
|
120340
120341
|
lines.push(guidance);
|
|
120341
120342
|
}
|
|
120343
|
+
} else {
|
|
120344
|
+
const chineseGuidance = LANGUAGE_GUIDANCE["zh-CN"];
|
|
120345
|
+
if (chineseGuidance) {
|
|
120346
|
+
lines.push(chineseGuidance);
|
|
120347
|
+
}
|
|
120342
120348
|
}
|
|
120343
120349
|
return `
|
|
120344
120350
|
<omo-env>
|
|
@@ -130764,7 +130770,7 @@ class PostHog extends PostHogBackendClient {
|
|
|
130764
130770
|
// package.json
|
|
130765
130771
|
var package_default = {
|
|
130766
130772
|
name: "@skj1724/oh-my-opencode",
|
|
130767
|
-
version: "3.18.
|
|
130773
|
+
version: "3.18.8",
|
|
130768
130774
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
130769
130775
|
main: "./dist/index.js",
|
|
130770
130776
|
types: "dist/index.d.ts",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const ALLOWED_AGENTS: readonly ["explore", "librarian", "oracle", "hephaestus", "metis", "momus", "multimodal-looker"];
|
|
2
|
-
export declare const CALL_OMO_AGENT_DESCRIPTION = "
|
|
2
|
+
export declare const CALL_OMO_AGENT_DESCRIPTION = "\u542F\u52A8 explore/librarian \u4EE3\u7406\u6216\u81EA\u5B9A\u4E49\u4EE3\u7406\u3002\u5FC5\u987B\u63D0\u4F9B run_in_background (true=\u5F02\u6B65\u8FD4\u56DE task_id, false=\u540C\u6B65)\u3002\n\n\u5185\u7F6E\u4EE3\u7406:\n{agents}\n\n\u4E5F\u652F\u6301\u901A\u8FC7\u7528\u6237\u6216\u9879\u76EE\u4EE3\u7406\u76EE\u5F55\u6CE8\u518C\u7684\u81EA\u5B9A\u4E49\u4EE3\u7406\u3002\n\n\u4F20\u9012 `session_id=<id>` \u53EF\u7EE7\u7EED\u4E4B\u524D\u7684\u4EE3\u7406\u5E76\u4FDD\u7559\u5B8C\u6574\u4E0A\u4E0B\u6587\u3002\u5D4C\u5957 subagent \u6DF1\u5EA6\u81EA\u52A8\u8FFD\u8E2A\uFF0C\u8D85\u8FC7\u914D\u7F6E\u9650\u5236\u540E\u4F1A\u88AB\u963B\u6B62\u3002\u4F7F\u7528 `background_output` \u83B7\u53D6\u5F02\u6B65\u7ED3\u679C\u3002**\u63D0\u793A\u8BCD\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587,\u4E0D\u5F97\u4F7F\u7528\u5176\u4ED6\u8BED\u8A00\u3002**";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skj1724/oh-my-opencode",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.8",
|
|
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
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|