@skj1724/oh-my-opencode 3.17.12 → 3.17.13

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 (38) hide show
  1. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-16.d.ts +1 -0
  2. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-17.d.ts +1 -0
  3. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-18.d.ts +1 -0
  4. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-19.d.ts +1 -0
  5. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-20.d.ts +1 -0
  6. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-01.d.ts +1 -0
  7. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-02.d.ts +1 -0
  8. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-03.d.ts +1 -0
  9. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-04.d.ts +1 -0
  10. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-05.d.ts +1 -0
  11. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-06.d.ts +1 -0
  12. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-07.d.ts +1 -0
  13. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-08.d.ts +1 -0
  14. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-09.d.ts +1 -0
  15. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-10.d.ts +1 -0
  16. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-11.d.ts +1 -0
  17. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-12.d.ts +1 -0
  18. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-13.d.ts +1 -0
  19. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-14.d.ts +1 -0
  20. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-15.d.ts +1 -0
  21. package/dist/cli/index.js +3 -3
  22. package/dist/features/background-agent/process-cleanup.test-helpers.d.ts +4 -0
  23. package/dist/features/claude-code-command-loader/loader-cache.d.ts +6 -0
  24. package/dist/features/team-mode/team-layout-tmux/index.d.ts +1 -0
  25. package/dist/features/team-mode/team-layout-tmux/layout.d.ts +15 -0
  26. package/dist/hooks/agent-usage-reminder/constants.d.ts +1 -1
  27. package/dist/hooks/auto-update-checker/hook/deferred-startup-check.d.ts +1 -0
  28. package/dist/hooks/comment-checker/initialization-gate.d.ts +1 -0
  29. package/dist/hooks/rules-injector/rule-scan-cache.d.ts +6 -0
  30. package/dist/hooks/session-notification-init.d.ts +7 -0
  31. package/dist/index.js +143 -143
  32. package/dist/shared/excluded-dirs.d.ts +1 -0
  33. package/dist/shared/tmux/tmux-utils/index.d.ts +1 -0
  34. package/dist/shared/tmux/tmux-utils/session-kill.d.ts +1 -0
  35. package/dist/shared/tmux/tmux-utils/spawn-process.d.ts +1 -0
  36. package/dist/shared/tmux/tmux-utils/stale-session-sweep.d.ts +11 -0
  37. package/dist/tools/skill/session-skill-cache.d.ts +1 -0
  38. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ export declare const file16 = 16;
@@ -0,0 +1 @@
1
+ export declare const file17 = 17;
@@ -0,0 +1 @@
1
+ export declare const file18 = 18;
@@ -0,0 +1 @@
1
+ export declare const file19 = 19;
@@ -0,0 +1 @@
1
+ export declare const file20 = 20;
@@ -0,0 +1 @@
1
+ export declare const file01 = 1;
@@ -0,0 +1 @@
1
+ export declare const file02 = 2;
@@ -0,0 +1 @@
1
+ export declare const file03 = 3;
@@ -0,0 +1 @@
1
+ export declare const file04 = 4;
@@ -0,0 +1 @@
1
+ export declare const file05 = 5;
@@ -0,0 +1 @@
1
+ export declare const file06 = 6;
@@ -0,0 +1 @@
1
+ export declare const file07 = 7;
@@ -0,0 +1 @@
1
+ export declare const file08 = 8;
@@ -0,0 +1 @@
1
+ export declare const file09 = 9;
@@ -0,0 +1 @@
1
+ export declare const file10 = 10;
@@ -0,0 +1 @@
1
+ export declare const file11 = 11;
@@ -0,0 +1 @@
1
+ export declare const file12 = 12;
@@ -0,0 +1 @@
1
+ export declare const file13 = 13;
@@ -0,0 +1 @@
1
+ export declare const file14 = 14;
@@ -0,0 +1 @@
1
+ export declare const file15 = 15;
package/dist/cli/index.js CHANGED
@@ -53591,7 +53591,7 @@ var {
53591
53591
  // package.json
53592
53592
  var package_default = {
53593
53593
  name: "@skj1724/oh-my-opencode",
53594
- version: "3.17.12",
53594
+ version: "3.17.13",
53595
53595
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
53596
53596
  main: "./dist/index.js",
53597
53597
  types: "dist/index.d.ts",
@@ -53680,8 +53680,8 @@ var package_default = {
53680
53680
  "oh-my-opencode-linux-x64-baseline": "3.17.4",
53681
53681
  "oh-my-opencode-linux-x64-musl": "3.17.4",
53682
53682
  "oh-my-opencode-linux-x64-musl-baseline": "3.17.4",
53683
- "oh-my-opencode-windows-x64": "3.17.11",
53684
- "oh-my-opencode-windows-x64-baseline": "3.17.11"
53683
+ "oh-my-opencode-windows-x64": "3.17.4",
53684
+ "oh-my-opencode-windows-x64-baseline": "3.17.4"
53685
53685
  },
53686
53686
  overrides: {},
53687
53687
  trustedDependencies: [
@@ -0,0 +1,4 @@
1
+ type ProcessCleanupEvent = NodeJS.Signals | "beforeExit" | "exit" | "uncaughtException" | "unhandledRejection";
2
+ export declare function getNewListener(signal: ProcessCleanupEvent, existingListeners: Function[]): () => void;
3
+ export declare function flushMicrotasks(): Promise<void>;
4
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { CommandDefinition } from "./types";
2
+ export declare function getCommandLoaderCacheKey(directory?: string): Promise<string>;
3
+ export declare function getCachedCommands(cacheKey: string): Promise<Record<string, CommandDefinition>> | undefined;
4
+ export declare function setCachedCommands(cacheKey: string, commands: Promise<Record<string, CommandDefinition>>): void;
5
+ export declare function deleteCachedCommands(cacheKey: string): void;
6
+ export declare function clearCommandLoaderCache(): void;
@@ -0,0 +1 @@
1
+ export { canVisualize, createTeamLayout, removeTeamLayout } from "./layout";
@@ -0,0 +1,15 @@
1
+ import type { TmuxSessionManager } from "../../tmux-subagent/manager";
2
+ type TeamLayoutMember = {
3
+ name: string;
4
+ sessionId: string;
5
+ color?: string;
6
+ };
7
+ type TeamLayoutResult = {
8
+ focusWindowId: string;
9
+ gridWindowId: string;
10
+ panesByMember: Record<string, string>;
11
+ };
12
+ export declare function canVisualize(): boolean;
13
+ export declare function createTeamLayout(teamRunId: string, members: Array<TeamLayoutMember>, tmuxMgr: TmuxSessionManager): Promise<TeamLayoutResult | null>;
14
+ export declare function removeTeamLayout(teamRunId: string, tmuxMgr: TmuxSessionManager): Promise<void>;
15
+ export {};
@@ -1,4 +1,4 @@
1
1
  export declare const AGENT_USAGE_REMINDER_STORAGE: string;
2
2
  export declare const TARGET_TOOLS: Set<string>;
3
3
  export declare const AGENT_TOOLS: Set<string>;
4
- export declare const REMINDER_MESSAGE = "\n[Agent Usage Reminder]\n\nYou called a search/fetch tool directly without leveraging specialized agents.\n\nRECOMMENDED: Use task with explore/librarian agents for better results:\n\n```\n// Parallel exploration - fire multiple agents simultaneously\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"Find all files matching pattern X\")\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"Search for implementation of Y\")\ntask(subagent_type=\"librarian\", load_skills=[], prompt=\"Lookup documentation for Z\")\n\n// Then continue your work while they run in background\n// System will notify you when each completes\n```\n\nWHY:\n- Agents can perform deeper, more thorough searches\n- Background tasks run in parallel, saving time\n- Specialized agents have domain expertise\n- Reduces context window usage in main session\n\nALWAYS prefer: Multiple parallel task calls > Direct tool calls\n";
4
+ export declare const REMINDER_MESSAGE = "\n[Agent \u4F7F\u7528\u63D0\u9192]\n\n\u4F60\u76F4\u63A5\u8C03\u7528\u4E86 search/fetch \u5DE5\u5177\uFF0C\u800C\u6CA1\u6709\u5229\u7528\u4E13\u95E8\u7684 agents\u3002\n\n\u63A8\u8350\u65B9\u6848\uFF1A\u4F7F\u7528 task \u642D\u914D explore/librarian agents \u4EE5\u83B7\u5F97\u66F4\u597D\u7684\u6548\u679C\uFF1A\n\n```\n// \u5E76\u884C\u63A2\u7D22 \u2014 \u540C\u65F6\u542F\u52A8\u591A\u4E2A agents\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"Find all files matching pattern X\")\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"Search for implementation of Y\")\ntask(subagent_type=\"librarian\", load_skills=[], prompt=\"Lookup documentation for Z\")\n\n// \u7EE7\u7EED\u4F60\u7684\u5DE5\u4F5C\uFF0C\u540C\u65F6\u5B83\u4EEC\u5728\u540E\u53F0\u8FD0\u884C\n// \u6BCF\u4E2A\u4EFB\u52A1\u5B8C\u6210\u540E\u7CFB\u7EDF\u4F1A\u901A\u77E5\u4F60\n```\n\n\u539F\u56E0\uFF1A\n- Agents \u53EF\u4EE5\u6267\u884C\u66F4\u6DF1\u5C42\u3001\u66F4\u5168\u9762\u7684\u641C\u7D22\n- \u540E\u53F0\u4EFB\u52A1\u5E76\u884C\u8FD0\u884C\uFF0C\u8282\u7701\u65F6\u95F4\n- \u4E13\u95E8\u7684 agents \u5177\u5907\u9886\u57DF\u4E13\u4E1A\u77E5\u8BC6\n- \u51CF\u5C11\u4E3B\u4F1A\u8BDD\u4E2D\u7684 context window \u5360\u7528\n\n\u59CB\u7EC8\u4F18\u5148\u9009\u62E9\uFF1AMultiple parallel task calls > Direct tool calls\n";
@@ -0,0 +1 @@
1
+ export declare function scheduleDeferredStartupCheck(runCheck: () => void): void;
@@ -0,0 +1 @@
1
+ export declare function ensureCommentCheckerInitialization(initializer: () => void): void;
@@ -0,0 +1,6 @@
1
+ export type RuleScanCache = {
2
+ get: (key: string) => string[] | undefined;
3
+ set: (key: string, value: string[]) => void;
4
+ clear: () => void;
5
+ };
6
+ export declare function createRuleScanCache(): RuleScanCache;
@@ -0,0 +1,7 @@
1
+ import type { Platform } from "./session-notification-sender";
2
+ export declare function createSessionNotificationInit(): {
3
+ initialize: () => {
4
+ platform: Platform;
5
+ defaultSoundPath: string;
6
+ };
7
+ };
package/dist/index.js CHANGED
@@ -74480,29 +74480,29 @@ var AGENT_TOOLS = new Set([
74480
74480
  "task"
74481
74481
  ]);
74482
74482
  var REMINDER_MESSAGE = `
74483
- [Agent Usage Reminder]
74483
+ [Agent \u4F7F\u7528\u63D0\u9192]
74484
74484
 
74485
- You called a search/fetch tool directly without leveraging specialized agents.
74485
+ \u4F60\u76F4\u63A5\u8C03\u7528\u4E86 search/fetch \u5DE5\u5177\uFF0C\u800C\u6CA1\u6709\u5229\u7528\u4E13\u95E8\u7684 agents\u3002
74486
74486
 
74487
- RECOMMENDED: Use task with explore/librarian agents for better results:
74487
+ \u63A8\u8350\u65B9\u6848\uFF1A\u4F7F\u7528 task \u642D\u914D explore/librarian agents \u4EE5\u83B7\u5F97\u66F4\u597D\u7684\u6548\u679C\uFF1A
74488
74488
 
74489
74489
  \`\`\`
74490
- // Parallel exploration - fire multiple agents simultaneously
74490
+ // \u5E76\u884C\u63A2\u7D22 \u2014 \u540C\u65F6\u542F\u52A8\u591A\u4E2A agents
74491
74491
  task(subagent_type="explore", load_skills=[], prompt="Find all files matching pattern X")
74492
74492
  task(subagent_type="explore", load_skills=[], prompt="Search for implementation of Y")
74493
74493
  task(subagent_type="librarian", load_skills=[], prompt="Lookup documentation for Z")
74494
74494
 
74495
- // Then continue your work while they run in background
74496
- // System will notify you when each completes
74495
+ // \u7EE7\u7EED\u4F60\u7684\u5DE5\u4F5C\uFF0C\u540C\u65F6\u5B83\u4EEC\u5728\u540E\u53F0\u8FD0\u884C
74496
+ // \u6BCF\u4E2A\u4EFB\u52A1\u5B8C\u6210\u540E\u7CFB\u7EDF\u4F1A\u901A\u77E5\u4F60
74497
74497
  \`\`\`
74498
74498
 
74499
- WHY:
74500
- - Agents can perform deeper, more thorough searches
74501
- - Background tasks run in parallel, saving time
74502
- - Specialized agents have domain expertise
74503
- - Reduces context window usage in main session
74499
+ \u539F\u56E0\uFF1A
74500
+ - Agents \u53EF\u4EE5\u6267\u884C\u66F4\u6DF1\u5C42\u3001\u66F4\u5168\u9762\u7684\u641C\u7D22
74501
+ - \u540E\u53F0\u4EFB\u52A1\u5E76\u884C\u8FD0\u884C\uFF0C\u8282\u7701\u65F6\u95F4
74502
+ - \u4E13\u95E8\u7684 agents \u5177\u5907\u9886\u57DF\u4E13\u4E1A\u77E5\u8BC6
74503
+ - \u51CF\u5C11\u4E3B\u4F1A\u8BDD\u4E2D\u7684 context window \u5360\u7528
74504
74504
 
74505
- ALWAYS prefer: Multiple parallel task calls > Direct tool calls
74505
+ \u59CB\u7EC8\u4F18\u5148\u9009\u62E9\uFF1AMultiple parallel task calls > Direct tool calls
74506
74506
  `;
74507
74507
 
74508
74508
  // src/hooks/agent-usage-reminder/storage.ts
@@ -75573,20 +75573,20 @@ var KEYWORD_DETECTORS = [
75573
75573
  {
75574
75574
  pattern: /\b(analyze|analyse|investigate|examine|research|study|deep[\s-]?dive|inspect|audit|evaluate|assess|review|diagnose|scrutinize|dissect|debug|comprehend|interpret|breakdown|understand)\b|why\s+is|how\s+does|how\s+to|\uBD84\uC11D|\uC870\uC0AC|\uD30C\uC545|\uC5F0\uAD6C|\uAC80\uD1A0|\uC9C4\uB2E8|\uC774\uD574|\uC124\uBA85|\uC6D0\uC778|\uC774\uC720|\uB72F\uC5B4\uBD10|\uB530\uC838\uBD10|\uD3C9\uAC00|\uD574\uC11D|\uB514\uBC84\uAE45|\uB514\uBC84\uADF8|\uC5B4\uB5BB\uAC8C|\uC65C|\uC0B4\uD3B4|\u5206\u6790|\u8ABF\u67FB|\u89E3\u6790|\u691C\u8A0E|\u7814\u7A76|\u8A3A\u65AD|\u7406\u89E3|\u8AAC\u660E|\u691C\u8A3C|\u7CBE\u67FB|\u7A76\u660E|\u30C7\u30D0\u30C3\u30B0|\u306A\u305C|\u3069\u3046|\u4ED5\u7D44\u307F|\u8C03\u67E5|\u68C0\u67E5|\u5256\u6790|\u6DF1\u5165|\u8BCA\u65AD|\u89E3\u91CA|\u8C03\u8BD5|\u4E3A\u4EC0\u4E48|\u539F\u7406|\u641E\u6E05\u695A|\u5F04\u660E\u767D|ph\u00E2n t\u00EDch|\u0111i\u1EC1u tra|nghi\u00EAn c\u1EE9u|ki\u1EC3m tra|xem x\u00E9t|ch\u1EA9n \u0111o\u00E1n|gi\u1EA3i th\u00EDch|t\u00ECm hi\u1EC3u|g\u1EE1 l\u1ED7i|t\u1EA1i sao/i,
75575
75575
  message: `[analyze-mode]
75576
- ANALYSIS MODE. Gather context before diving deep:
75577
- CONTEXT GATHERING (parallel):
75578
- - 1-2 explore agents (codebase patterns, implementations)
75579
- - 1-2 librarian agents (if external library involved)
75580
- - Direct tools: Grep, AST-grep, LSP for targeted searches
75576
+ ANALYSIS MODE\uFF08\u5206\u6790\u6A21\u5F0F\uFF09\u3002\u6DF1\u5165\u4E4B\u524D\u5148\u6536\u96C6\u4E0A\u4E0B\u6587\uFF1A
75577
+ CONTEXT GATHERING\uFF08\u5E76\u884C\u6536\u96C6\u4E0A\u4E0B\u6587\uFF09\uFF1A
75578
+ - 1-2 \u4E2A explore agents\uFF08\u4EE3\u7801\u5E93\u6A21\u5F0F\u3001\u5B9E\u73B0\uFF09
75579
+ - 1-2 \u4E2A librarian agents\uFF08\u5982\u6D89\u53CA\u5916\u90E8\u5E93\uFF09
75580
+ - Direct tools: Grep\u3001AST-grep\u3001LSP \u7528\u4E8E\u5B9A\u5411\u641C\u7D22
75581
75581
 
75582
- IF COMPLEX - DO NOT STRUGGLE ALONE. Consult specialists:
75583
- - **Oracle**: Conventional problems (architecture, debugging, complex logic)
75584
- - **Artistry**: Non-conventional problems (different approach needed)
75582
+ IF COMPLEX\uFF08\u5982\u679C\u590D\u6742\uFF09\u2014 \u4E0D\u8981\u72EC\u81EA\u786C\u6491\u3002\u8BF7\u54A8\u8BE2\u4E13\u5BB6\uFF1A
75583
+ - **Oracle**\uFF1A\u4F20\u7EDF\u95EE\u9898\uFF08\u67B6\u6784\u3001\u8C03\u8BD5\u3001\u590D\u6742\u903B\u8F91\uFF09
75584
+ - **Artistry**\uFF1A\u975E\u4F20\u7EDF\u95EE\u9898\uFF08\u9700\u8981\u4E0D\u540C\u601D\u8DEF\uFF09
75585
75585
 
75586
- SYNTHESIZE findings before proceeding.
75586
+ \u5728\u7EE7\u7EED\u4E4B\u524D SYNTHESIZE findings\u3002
75587
75587
  ---
75588
- MANDATORY delegate_task params: ALWAYS include load_skills=[] and run_in_background when calling delegate_task.
75589
- Example: delegate_task(subagent_type="explore", prompt="...", run_in_background=true, load_skills=[])`
75588
+ MANDATORY delegate_task params: \u8C03\u7528 delegate_task \u65F6\u52A1\u5FC5\u5305\u542B load_skills=[] \u548C run_in_background\u3002
75589
+ \u793A\u4F8B\uFF1Adelegate_task(subagent_type="explore", prompt="...", run_in_background=true, load_skills=[])`
75590
75590
  }
75591
75591
  ];
75592
75592
 
@@ -83977,16 +83977,16 @@ var PLANNING_CONSULT_WARNING = `
83977
83977
 
83978
83978
  ${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY)}
83979
83979
 
83980
- You are being invoked by ${getAgentDisplayName("prometheus")}, a planning agent restricted to .sisyphus/*.md plan files only.
83980
+ \u4F60\u6B63\u88AB ${getAgentDisplayName("prometheus")} \u8C03\u7528 \u2014 \u8FD9\u662F\u4E00\u4E2A\u4EC5\u9650 .sisyphus/*.md \u8BA1\u5212\u6587\u4EF6\u7684\u89C4\u5212 agent\u3002
83981
83981
 
83982
- **CRITICAL CONSTRAINTS:**
83983
- - DO NOT modify any files (no Write, Edit, or any file mutations)
83984
- - DO NOT execute commands that change system state
83985
- - DO NOT create, delete, or rename files
83986
- - ONLY provide analysis, recommendations, and information
83982
+ **\u5173\u952E\u7EA6\u675F\uFF1A**
83983
+ - \u7981\u6B62\u4FEE\u6539\u4EFB\u4F55\u6587\u4EF6\uFF08\u4E0D\u5141\u8BB8 Write\u3001Edit \u6216\u4EFB\u4F55\u6587\u4EF6\u53D8\u66F4\u64CD\u4F5C\uFF09
83984
+ - \u7981\u6B62\u6267\u884C\u4EFB\u4F55\u6539\u53D8\u7CFB\u7EDF\u72B6\u6001\u7684\u547D\u4EE4
83985
+ - \u7981\u6B62\u521B\u5EFA\u3001\u5220\u9664\u6216\u91CD\u547D\u540D\u6587\u4EF6
83986
+ - \u4EC5\u63D0\u4F9B\u5206\u6790\u3001\u5EFA\u8BAE\u548C\u4FE1\u606F
83987
83987
 
83988
- **YOUR ROLE**: Provide consultation, research, and analysis to assist with planning.
83989
- Return your findings and recommendations. The actual implementation will be handled separately after planning is complete.
83988
+ **\u4F60\u7684\u89D2\u8272**\uFF1A\u63D0\u4F9B\u54A8\u8BE2\u3001\u7814\u7A76\u548C\u5206\u6790\uFF0C\u4EE5\u534F\u52A9\u89C4\u5212\u5DE5\u4F5C\u3002
83989
+ \u8FD4\u56DE\u4F60\u7684\u53D1\u73B0\u548C\u5EFA\u8BAE\u3002\u5B9E\u9645\u5B9E\u73B0\u5C06\u5728\u89C4\u5212\u5B8C\u6210\u540E\u53E6\u884C\u5904\u7406\u3002
83990
83990
 
83991
83991
  ---
83992
83992
 
@@ -83997,40 +83997,40 @@ var PROMETHEUS_WORKFLOW_REMINDER = `
83997
83997
 
83998
83998
  ${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY)}
83999
83999
 
84000
- ## PROMETHEUS MANDATORY WORKFLOW REMINDER
84000
+ ## PROMETHEUS \u5FC5\u987B\u9075\u5B88\u7684\u5DE5\u4F5C\u6D41\u7A0B\u63D0\u9192
84001
84001
 
84002
- **You are writing a work plan. STOP AND VERIFY you completed ALL steps:**
84002
+ **\u4F60\u6B63\u5728\u7F16\u5199\u5DE5\u4F5C\u8BA1\u5212\u3002\u8BF7\u505C\u4E0B\u6765\u786E\u8BA4\u662F\u5426\u5DF2\u5B8C\u6210\u6240\u6709\u6B65\u9AA4\uFF1A**
84003
84003
 
84004
84004
  \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
84005
84005
  \u2502 PROMETHEUS WORKFLOW \u2502
84006
84006
  \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
84007
- \u2502 1 \u2502 INTERVIEW: Full consultation with user \u2502
84008
- \u2502 \u2502 - Gather ALL requirements \u2502
84009
- \u2502 \u2502 - Clarify ambiguities \u2502
84010
- \u2502 \u2502 - Record decisions to .sisyphus/drafts/ \u2502
84007
+ \u2502 1 \u2502 INTERVIEW\uFF1A\u4E0E\u7528\u6237\u8FDB\u884C\u5B8C\u6574\u6C9F\u901A \u2502
84008
+ \u2502 \u2502 - \u6536\u96C6\u6240\u6709\u9700\u6C42 \u2502
84009
+ \u2502 \u2502 - \u6F84\u6E05\u6A21\u7CCA\u4E4B\u5904 \u2502
84010
+ \u2502 \u2502 - \u5C06\u51B3\u7B56\u8BB0\u5F55\u5230 .sisyphus/drafts/ \u2502
84011
84011
  \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
84012
- \u2502 2 \u2502 METIS CONSULTATION: Pre-generation gap analysis \u2502
84012
+ \u2502 2 \u2502 METIS \u54A8\u8BE2\uFF1A\u751F\u6210\u524D\u5DEE\u8DDD\u5206\u6790 \u2502
84013
84013
  \u2502 \u2502 - task(agent="Metis - Plan Consultant", ...) \u2502
84014
- \u2502 \u2502 - Identify missed questions, guardrails, assumptions \u2502
84014
+ \u2502 \u2502 - \u8BC6\u522B\u9057\u6F0F\u7684\u95EE\u9898\u3001\u9632\u62A4\u63AA\u65BD\u3001\u5047\u8BBE\u6761\u4EF6 \u2502
84015
84015
  \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
84016
- \u2502 3 \u2502 PLAN GENERATION: Write to .sisyphus/plans/*.md \u2502
84016
+ \u2502 3 \u2502 PLAN GENERATION\uFF1A\u5199\u5165 .sisyphus/plans/*.md \u2502
84017
84017
  \u2502 \u2502 <- YOU ARE HERE \u2502
84018
84018
  \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
84019
- \u2502 4 \u2502 MOMUS REVIEW (if high accuracy requested) \u2502
84019
+ \u2502 4 \u2502 MOMUS \u8BC4\u5BA1\uFF08\u5982\u679C\u8BF7\u6C42\u9AD8\u7CBE\u5EA6\uFF09 \u2502
84020
84020
  \u2502 \u2502 - task(agent="Momus - Plan Critic", ...) \u2502
84021
- \u2502 \u2502 - Loop until OKAY verdict \u2502
84021
+ \u2502 \u2502 - \u5FAA\u73AF\u76F4\u81F3\u83B7\u5F97 OKAY \u88C1\u5B9A \u2502
84022
84022
  \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
84023
- \u2502 5 \u2502 SUMMARY: Present to user \u2502
84024
- \u2502 \u2502 - Key decisions made \u2502
84025
- \u2502 \u2502 - Scope IN/OUT \u2502
84026
- \u2502 \u2502 - Offer: "Start Work" vs "High Accuracy Review" \u2502
84027
- \u2502 \u2502 - Guide to /start-work \u2502
84023
+ \u2502 5 \u2502 SUMMARY\uFF1A\u5411\u7528\u6237\u5448\u73B0 \u2502
84024
+ \u2502 \u2502 - \u5173\u952E\u51B3\u7B56 \u2502
84025
+ \u2502 \u2502 - \u8303\u56F4 IN/OUT \u2502
84026
+ \u2502 \u2502 - \u63D0\u4F9B\u9009\u9879\uFF1A"Start Work" vs "High Accuracy Review" \u2502
84027
+ \u2502 \u2502 - \u5F15\u5BFC\u81F3 /start-work \u2502
84028
84028
  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
84029
84029
 
84030
- **DID YOU COMPLETE STEPS 1-2 BEFORE WRITING THIS PLAN?**
84031
- **AFTER WRITING, WILL YOU DO STEPS 4-5?**
84030
+ **\u5728\u7F16\u5199\u6B64\u8BA1\u5212\u4E4B\u524D\uFF0C\u4F60\u662F\u5426\u5B8C\u6210\u4E86\u6B65\u9AA4 1-2\uFF1F**
84031
+ **\u7F16\u5199\u5B8C\u6210\u540E\uFF0C\u4F60\u4F1A\u6267\u884C\u6B65\u9AA4 4-5 \u5417\uFF1F**
84032
84032
 
84033
- If you skipped steps, STOP NOW. Go back and complete them.
84033
+ \u5982\u679C\u4F60\u8DF3\u8FC7\u4E86\u67D0\u4E9B\u6B65\u9AA4\uFF0C\u8BF7\u7ACB\u5373\u505C\u4E0B\uFF0C\u56DE\u53BB\u5B8C\u6210\u5B83\u4EEC\u3002
84034
84034
 
84035
84035
  ---
84036
84036
 
@@ -114089,28 +114089,28 @@ function buildSkillsSection(skills2) {
114089
114089
  return `${skill2.name} (${source})`;
114090
114090
  }).join(", ");
114091
114091
  if (customSkills.length > 0 && builtinSkills.length > 0) {
114092
- return `#### Available Skills (via \`skill\` tool)
114092
+ return `#### \u53EF\u7528 Skills\uFF08\u901A\u8FC7 \`skill\` \u5DE5\u5177\uFF09
114093
114093
 
114094
114094
  **Built-in**: ${builtinNames}
114095
- **\u26A1 YOUR SKILLS (PRIORITY)**: ${customNames}
114095
+ **\u26A1 \u4F60\u7684 SKILLS\uFF08\u4F18\u5148\uFF09**: ${customNames}
114096
114096
 
114097
- > User-installed skills OVERRIDE built-in defaults. ALWAYS prefer YOUR SKILLS when domain matches.
114098
- > Full skill descriptions \u2192 use the \`skill\` tool to check before EVERY delegation.`;
114097
+ > \u7528\u6237\u5B89\u88C5\u7684 skills \u4F1A\u8986\u76D6\u5185\u7F6E\u9ED8\u8BA4\u503C\u3002\u5F53\u9886\u57DF\u5339\u914D\u65F6\uFF0C\u59CB\u7EC8\u4F18\u5148\u4F7F\u7528\u4F60\u7684 SKILLS\u3002
114098
+ > \u5B8C\u6574\u7684 skill \u63CF\u8FF0 \u2192 \u5728\u6BCF\u6B21 delegation \u4E4B\u524D\u4F7F\u7528 \`skill\` \u5DE5\u5177\u67E5\u770B\u3002`;
114099
114099
  }
114100
114100
  if (customSkills.length > 0) {
114101
- return `#### Available Skills (via \`skill\` tool)
114101
+ return `#### \u53EF\u7528 Skills\uFF08\u901A\u8FC7 \`skill\` \u5DE5\u5177\uFF09
114102
114102
 
114103
- **\u26A1 YOUR SKILLS (PRIORITY)**: ${customNames}
114103
+ **\u26A1 \u4F60\u7684 SKILLS\uFF08\u4F18\u5148\uFF09**: ${customNames}
114104
114104
 
114105
- > User-installed skills OVERRIDE built-in defaults. ALWAYS prefer YOUR SKILLS when domain matches.
114106
- > Full skill descriptions \u2192 use the \`skill\` tool to check before EVERY delegation.`;
114105
+ > \u7528\u6237\u5B89\u88C5\u7684 skills \u4F1A\u8986\u76D6\u5185\u7F6E\u9ED8\u8BA4\u503C\u3002\u5F53\u9886\u57DF\u5339\u914D\u65F6\uFF0C\u59CB\u7EC8\u4F18\u5148\u4F7F\u7528\u4F60\u7684 SKILLS\u3002
114106
+ > \u5B8C\u6574\u7684 skill \u63CF\u8FF0 \u2192 \u5728\u6BCF\u6B21 delegation \u4E4B\u524D\u4F7F\u7528 \`skill\` \u5DE5\u5177\u67E5\u770B\u3002`;
114107
114107
  }
114108
114108
  if (builtinSkills.length > 0) {
114109
- return `#### Available Skills (via \`skill\` tool)
114109
+ return `#### \u53EF\u7528 Skills\uFF08\u901A\u8FC7 \`skill\` \u5DE5\u5177\uFF09
114110
114110
 
114111
114111
  **Built-in**: ${builtinNames}
114112
114112
 
114113
- > Full skill descriptions \u2192 use the \`skill\` tool to check before EVERY delegation.`;
114113
+ > \u5B8C\u6574\u7684 skill \u63CF\u8FF0 \u2192 \u5728\u6BCF\u6B21 delegation \u4E4B\u524D\u4F7F\u7528 \`skill\` \u5DE5\u5177\u67E5\u770B\u3002`;
114114
114114
  }
114115
114115
  return "";
114116
114116
  }
@@ -114125,14 +114125,14 @@ function buildCategorySkillsDelegationGuide(categories2, skills2) {
114125
114125
  const customSkills = skills2.filter((skill2) => skill2.location !== "plugin");
114126
114126
  const skillsSection = buildSkillsSection(skills2);
114127
114127
  const customPriorityNote = customSkills.length > 0 ? `
114128
- > **User-installed skills get PRIORITY.** When in doubt, INCLUDE rather than omit.` : "";
114129
- return `### Category + Skills Delegation System
114128
+ > **\u7528\u6237\u5B89\u88C5\u7684 skills \u4EAB\u6709\u4F18\u5148\u6743\u3002** \u6709\u7591\u95EE\u65F6\uFF0CINCLUDE\uFF08\u5305\u542B\uFF09\u800C\u975E OMIT\uFF08\u7701\u7565\uFF09\u3002` : "";
114129
+ return `### Category + Skills \u59D4\u6258\u7CFB\u7EDF
114130
114130
 
114131
- **task() combines categories and skills for optimal task execution.**
114131
+ **task() \u5C06 categories \u548C skills \u7EC4\u5408\u4F7F\u7528\uFF0C\u4EE5\u5B9E\u73B0\u6700\u4F73\u4EFB\u52A1\u6267\u884C\u3002**
114132
114132
 
114133
- #### Available Categories (Domain-Optimized Models)
114133
+ #### \u53EF\u7528 Categories\uFF08\u9886\u57DF\u4F18\u5316\u6A21\u578B\uFF09
114134
114134
 
114135
- Each category is configured with a model optimized for that domain. Read the description to understand when to use it.
114135
+ \u6BCF\u4E2A category \u90FD\u914D\u7F6E\u4E86\u9488\u5BF9\u8BE5\u9886\u57DF\u4F18\u5316\u7684\u6A21\u578B\u3002\u8BF7\u9605\u8BFB\u63CF\u8FF0\u4EE5\u4E86\u89E3\u4F55\u65F6\u4F7F\u7528\u3002
114136
114136
 
114137
114137
  ${categoryRows.join(`
114138
114138
  `)}
@@ -114141,156 +114141,156 @@ ${skillsSection}
114141
114141
 
114142
114142
  ---
114143
114143
 
114144
- ### MANDATORY: Category + Skill Selection Protocol
114144
+ ### \u5FC5\u987B\u9075\u5B88\uFF1ACategory + Skill \u9009\u62E9\u534F\u8BAE
114145
114145
 
114146
- **STEP 1: Select Category**
114147
- - Read each category's description
114148
- - Match task requirements to category domain
114149
- - Select the category whose domain BEST fits the task
114146
+ **\u7B2C\u4E00\u6B65\uFF1A\u9009\u62E9 Category**
114147
+ - \u9605\u8BFB\u6BCF\u4E2A category \u7684\u63CF\u8FF0
114148
+ - \u5C06\u4EFB\u52A1\u9700\u6C42\u4E0E category \u6240\u5728\u9886\u57DF\u5339\u914D
114149
+ - \u9009\u62E9\u9886\u57DF\u6700\u5951\u5408\u4EFB\u52A1\u7684 category
114150
114150
 
114151
- **STEP 2: Evaluate ALL Skills**
114152
- Check the \`skill\` tool for available skills and their descriptions. For EVERY skill, ask:
114153
- > "Does this skill's expertise domain overlap with my task?"
114151
+ **\u7B2C\u4E8C\u6B65\uFF1A\u8BC4\u4F30\u6240\u6709 Skills**
114152
+ \u4F7F\u7528 \`skill\` \u5DE5\u5177\u67E5\u770B\u53EF\u7528 skills \u53CA\u5176\u63CF\u8FF0\u3002\u5BF9\u4E8E\u6BCF\u4E2A skill\uFF0C\u601D\u8003\uFF1A
114153
+ > "\u6B64 skill \u7684\u4E13\u4E1A\u9886\u57DF\u4E0E\u6211\u7684\u4EFB\u52A1\u662F\u5426\u6709\u91CD\u53E0\uFF1F"
114154
114154
 
114155
- - If YES \u2192 INCLUDE in \`load_skills=[...]\`
114156
- - If NO \u2192 OMIT (no justification needed)${customPriorityNote}
114155
+ - \u5982\u679C\u662F \u2192 \u5728 \`load_skills=[...]\` \u4E2D INCLUDE\uFF08\u5305\u542B\uFF09
114156
+ - \u5982\u679C\u5426 \u2192 OMIT\uFF08\u7701\u7565\uFF0C\u65E0\u9700\u8BF4\u660E\uFF09${customPriorityNote}
114157
114157
 
114158
114158
  ---
114159
114159
 
114160
- ### Delegation Pattern
114160
+ ### \u59D4\u6258\u6A21\u5F0F
114161
114161
 
114162
114162
  \`\`\`typescript
114163
114163
  task(
114164
114164
  category="[selected-category]",
114165
- load_skills=["skill-1", "skill-2"], // Include ALL relevant skills - ESPECIALLY user-installed ones
114165
+ load_skills=["skill-1", "skill-2"], // \u5305\u542B\u6240\u6709\u76F8\u5173 skills \u2014 \u5C24\u5176\u662F\u7528\u6237\u5B89\u88C5\u7684
114166
114166
  prompt="..."
114167
114167
  )
114168
114168
  \`\`\`
114169
114169
 
114170
- **ANTI-PATTERN (will produce poor results):**
114170
+ **\u53CD\u6A21\u5F0F\uFF08\u6548\u679C\u4F1A\u5F88\u5DEE\uFF09\uFF1A**
114171
114171
  \`\`\`typescript
114172
- task(category="...", load_skills=[], run_in_background=false, prompt="...") // Empty load_skills without justification
114172
+ task(category="...", load_skills=[], run_in_background=false, prompt="...") // load_skills \u4E3A\u7A7A\u4E14\u65E0\u5408\u7406\u89E3\u91CA
114173
114173
  \`\`\`
114174
114174
 
114175
114175
  ---
114176
114176
 
114177
- ### Category Domain Matching (ZERO TOLERANCE)
114177
+ ### Category \u9886\u57DF\u5339\u914D\uFF08\u96F6\u5BB9\u5FCD\uFF09
114178
114178
 
114179
- Every delegation MUST use the category that matches the task's domain. Mismatched categories produce measurably worse output because each category runs on a model optimized for that specific domain.
114179
+ \u6BCF\u6B21 delegation \u5FC5\u987B\u4F7F\u7528\u4E0E\u4EFB\u52A1\u9886\u57DF\u76F8\u5339\u914D\u7684 category\u3002\u4E0D\u5339\u914D\u7684 category \u4F1A\u4EA7\u751F\u660E\u663E\u66F4\u5DEE\u7684\u7ED3\u679C\uFF0C\u56E0\u4E3A\u6BCF\u4E2A category \u90FD\u8FD0\u884C\u5728\u9488\u5BF9\u5176\u7279\u5B9A\u9886\u57DF\u4F18\u5316\u7684\u6A21\u578B\u4E0A\u3002
114180
114180
 
114181
- **VISUAL WORK = ALWAYS \`visual-engineering\`. NO EXCEPTIONS.**
114181
+ **\u89C6\u89C9\u5DE5\u4F5C = \u5FC5\u987B\u4F7F\u7528 \`visual-engineering\`\u3002\u6CA1\u6709\u4EFB\u4F55\u4F8B\u5916\u3002**
114182
114182
 
114183
- Any task involving UI, UX, CSS, styling, layout, animation, design, or frontend components MUST go to \`visual-engineering\`. Never delegate visual work to \`quick\`, \`unspecified-*\`, or any other category.
114183
+ \u4EFB\u4F55\u6D89\u53CA UI\u3001UX\u3001CSS\u3001\u6837\u5F0F\u3001\u5E03\u5C40\u3001\u52A8\u753B\u3001\u8BBE\u8BA1\u6216\u524D\u7AEF\u7EC4\u4EF6\u7684\u4EFB\u52A1\u90FD\u5FC5\u987B\u4F7F\u7528 \`visual-engineering\`\u3002\u4E25\u7981\u5C06\u89C6\u89C9\u5DE5\u4F5C\u59D4\u6258\u7ED9 \`quick\`\u3001\`unspecified-*\` \u6216\u5176\u4ED6\u4EFB\u4F55 category\u3002
114184
114184
 
114185
114185
  \`\`\`typescript
114186
- // CORRECT: Visual work \u2192 visual-engineering category
114186
+ // \u6B63\u786E\uFF1A\u89C6\u89C9\u5DE5\u4F5C \u2192 visual-engineering category
114187
114187
  task(category="visual-engineering", load_skills=["frontend-ui-ux"], prompt="Redesign the sidebar layout with new spacing...")
114188
114188
 
114189
- // WRONG: Visual work in wrong category - WILL PRODUCE INFERIOR RESULTS
114189
+ // \u9519\u8BEF\uFF1A\u5728\u9519\u8BEF\u7684 category \u4E2D\u5904\u7406\u89C6\u89C9\u5DE5\u4F5C \u2014 \u4F1A\u4EA7\u751F\u66F4\u5DEE\u7684\u7ED3\u679C
114190
114190
  task(category="quick", load_skills=[], prompt="Redesign the sidebar layout with new spacing...")
114191
114191
  \`\`\`
114192
114192
 
114193
- | Task Domain | MUST Use Category |
114193
+ | \u4EFB\u52A1\u9886\u57DF | \u5FC5\u987B\u4F7F\u7528\u7684 Category |
114194
114194
  |---|---|
114195
114195
  | UI, styling, animations, layout, design | \`visual-engineering\` |
114196
114196
  | Hard logic, architecture decisions, algorithms | \`ultrabrain\` |
114197
114197
  | Autonomous research + end-to-end implementation | \`deep\` |
114198
114198
  | Single-file typo, trivial config change | \`quick\` |
114199
114199
 
114200
- **When in doubt about category, it is almost never \`quick\` or \`unspecified-*\`. Match the domain.**`;
114200
+ **\u5F53\u5BF9 category \u6709\u7591\u95EE\u65F6\uFF0C\u51E0\u4E4E\u6C38\u8FDC\u4E0D\u4F1A\u9009 \`quick\` \u6216 \`unspecified-*\`\u3002\u8BF7\u5339\u914D\u9886\u57DF\u3002**`;
114201
114201
  }
114202
114202
  // src/agents/dynamic-agent-policy-sections.ts
114203
114203
  function buildHardBlocksSection() {
114204
114204
  const blocks = [
114205
- "- Type error suppression (`as any`, `@ts-ignore`) - **Never**",
114206
- "- Commit without explicit request - **Never**",
114207
- "- Speculate about unread code - **Never**",
114208
- "- Leave code in broken state after failures - **Never**",
114209
- "- `background_cancel(all=true)` - **Never.** Always cancel individually by taskId.",
114210
- "- Delivering final answer before collecting Oracle result - **Never.**"
114205
+ "- Type error suppression (`as any`, `@ts-ignore`) - **Never**\uFF08\u7EDD\u4E0D\u53EF\uFF09",
114206
+ "- Commit without explicit request - **Never**\uFF08\u7EDD\u4E0D\u53EF\uFF09",
114207
+ "- Speculate about unread code - **Never**\uFF08\u7EDD\u4E0D\u53EF\uFF09",
114208
+ "- Leave code in broken state after failures - **Never**\uFF08\u7EDD\u4E0D\u53EF\uFF09",
114209
+ "- `background_cancel(all=true)` - **Never**\uFF08\u7EDD\u4E0D\u53EF\uFF09\u3002\u52A1\u5FC5\u6309 taskId \u9010\u4E00\u53D6\u6D88\u3002",
114210
+ "- Delivering final answer before collecting Oracle result - **Never**\uFF08\u7EDD\u4E0D\u53EF\uFF09\u3002"
114211
114211
  ];
114212
- return `## Hard Blocks (NEVER violate)
114212
+ return `## \u786C\u6027\u7981\u6B62\uFF08Hard Blocks\uFF09\u2014 \u7EDD\u4E0D\u53EF\u8FDD\u53CD
114213
114213
 
114214
114214
  ${blocks.join(`
114215
114215
  `)}`;
114216
114216
  }
114217
114217
  function buildAntiPatternsSection() {
114218
114218
  const patterns = [
114219
- "- **Type Safety**: `as any`, `@ts-ignore`, `@ts-expect-error`",
114220
- "- **Error Handling**: Empty catch blocks `catch(e) {}`",
114221
- '- **Testing**: Deleting failing tests to "pass"',
114222
- "- **Search**: Firing agents for single-line typos or obvious syntax errors",
114223
- "- **Debugging**: Shotgun debugging, random changes",
114224
- "- **Background Tasks**: Polling `background_output` on running tasks - end response and wait for notification",
114225
- "- **Delegation Duplication**: Delegating exploration to explore/librarian and then manually doing the same search yourself",
114219
+ "- **Type Safety\uFF08\u7C7B\u578B\u5B89\u5168\uFF09**: `as any`, `@ts-ignore`, `@ts-expect-error`",
114220
+ "- **Error Handling\uFF08\u9519\u8BEF\u5904\u7406\uFF09**: Empty catch blocks `catch(e) {}`",
114221
+ '- **Testing\uFF08\u6D4B\u8BD5\uFF09**: Deleting failing tests to "pass"',
114222
+ "- **Search\uFF08\u641C\u7D22\uFF09**: Firing agents for single-line typos or obvious syntax errors",
114223
+ "- **Debugging\uFF08\u8C03\u8BD5\uFF09**: Shotgun debugging, random changes",
114224
+ "- **Background Tasks\uFF08\u540E\u53F0\u4EFB\u52A1\uFF09**: Polling `background_output` on running tasks - end response and wait for notification",
114225
+ "- **Delegation Duplication\uFF08\u91CD\u590D\u59D4\u6258\uFF09**: Delegating exploration to explore/librarian and then manually doing the same search yourself",
114226
114226
  "- **Oracle**: Delivering answer without collecting Oracle results"
114227
114227
  ];
114228
- return `## Anti-Patterns (BLOCKING violations)
114228
+ return `## Anti-Patterns\uFF08\u53CD\u6A21\u5F0F\uFF09\u2014 BLOCKING violations\uFF08\u963B\u585E\u7EA7\u8FDD\u89C4\uFF09
114229
114229
 
114230
114230
  ${patterns.join(`
114231
114231
  `)}`;
114232
114232
  }
114233
114233
  function buildToolCallFormatSection() {
114234
- return `## Tool Call Format (CRITICAL)
114234
+ return `## Tool Call Format\uFF08\u5DE5\u5177\u8C03\u7528\u683C\u5F0F\uFF09\uFF08\u5173\u952E\uFF09
114235
114235
 
114236
- **ALWAYS use the native tool calling mechanism. NEVER output tool calls as text.**
114236
+ **\u52A1\u5FC5\u4F7F\u7528\u539F\u751F\u5DE5\u5177\u8C03\u7528\u673A\u5236\u3002\u7EDD\u4E0D\u8981\u5C06 tool calls \u4F5C\u4E3A\u6587\u672C\u8F93\u51FA\u3002**
114237
114237
 
114238
- When you need to call a tool:
114239
- 1. Use the tool call interface provided by the system
114240
- 2. Do NOT write tool calls as plain text like \`assistant to=functions.XXX\`
114241
- 3. Do NOT output JSON directly in your text response
114242
- 4. The system handles tool call formatting automatically
114238
+ \u5F53\u4F60\u9700\u8981\u8C03\u7528\u5DE5\u5177\u65F6\uFF1A
114239
+ 1. \u4F7F\u7528\u7CFB\u7EDF\u63D0\u4F9B\u7684\u5DE5\u5177\u8C03\u7528\u63A5\u53E3
114240
+ 2. \u7981\u6B62\u5C06 tool calls \u4EE5\u7EAF\u6587\u672C\u5F62\u5F0F\u5199\u51FA\uFF0C\u4F8B\u5982 \`assistant to=functions.XXX\`
114241
+ 3. \u7981\u6B62\u5728\u6587\u672C\u56DE\u590D\u4E2D\u76F4\u63A5\u8F93\u51FA JSON
114242
+ 4. \u7CFB\u7EDF\u4F1A\u81EA\u52A8\u5904\u7406 tool call \u7684\u683C\u5F0F
114243
114243
 
114244
- **CORRECT**: Invoke the tool through the tool call interface
114245
- **WRONG**: Writing \`assistant to=functions.todowrite\` or \`json
114246
- {...}\` as text
114244
+ **\u6B63\u786E\uFF08CORRECT\uFF09**\uFF1A\u901A\u8FC7\u5DE5\u5177\u8C03\u7528\u63A5\u53E3\u6765\u8C03\u7528\u5DE5\u5177
114245
+ **\u9519\u8BEF\uFF08WRONG\uFF09**\uFF1A\u5C06 \`assistant to=functions.todowrite\` \u6216 \`json
114246
+ {...}\` \u4F5C\u4E3A\u6587\u672C\u5199\u51FA
114247
114247
 
114248
- Your tool calls are processed automatically. Just invoke the tool - do not format the call yourself.`;
114248
+ \u4F60\u7684 tool calls \u4F1A\u81EA\u52A8\u88AB\u5904\u7406\u3002\u76F4\u63A5\u8C03\u7528\u5DE5\u5177\u5373\u53EF\uFF0C\u65E0\u9700\u81EA\u5DF1\u683C\u5F0F\u5316\u3002`;
114249
114249
  }
114250
114250
  function buildAntiDuplicationSection() {
114251
114251
  return `<Anti_Duplication>
114252
- ## Anti-Duplication Rule (CRITICAL)
114252
+ ## Anti-Duplication Rule\uFF08\u53CD\u91CD\u590D\u89C4\u5219\uFF09\uFF08\u5173\u952E\uFF09
114253
114253
 
114254
- Once you delegate exploration to explore/librarian agents, **DO NOT perform the same search yourself**.
114254
+ \u4E00\u65E6\u4F60\u5C06\u63A2\u7D22\u4EFB\u52A1\u59D4\u6258\u7ED9 explore/librarian agents\uFF0C**\u4E0D\u8981\u81EA\u5DF1\u53BB\u6267\u884C\u76F8\u540C\u7684\u641C\u7D22**\u3002
114255
114255
 
114256
- ### What this means:
114256
+ ### \u5177\u4F53\u542B\u4E49\uFF1A
114257
114257
 
114258
- **FORBIDDEN:**
114259
- - After firing explore/librarian, manually grep/search for the same information
114260
- - Re-doing the research the agents were just tasked with
114261
- - "Just quickly checking" the same files the background agents are checking
114258
+ **\u7981\u6B62\uFF08FORBIDDEN\uFF09\uFF1A**
114259
+ - \u5728\u542F\u52A8 explore/librarian \u4E4B\u540E\uFF0C\u624B\u52A8 grep/\u641C\u7D22\u76F8\u540C\u7684\u4FE1\u606F
114260
+ - \u91CD\u590D\u6267\u884C\u521A\u521A\u59D4\u6258\u7ED9 agents \u7684\u7814\u7A76\u5DE5\u4F5C
114261
+ - "\u5C31\u5FEB\u901F\u68C0\u67E5\u4E00\u4E0B" \u540E\u53F0 agents \u6B63\u5728\u67E5\u770B\u7684\u76F8\u540C\u6587\u4EF6
114262
114262
 
114263
- **ALLOWED:**
114264
- - Continue with **non-overlapping work** - work that doesn't depend on the delegated research
114265
- - Work on unrelated parts of the codebase
114266
- - Preparation work (e.g., setting up files, configs) that can proceed independently
114263
+ **\u5141\u8BB8\uFF08ALLOWED\uFF09\uFF1A**
114264
+ - \u7EE7\u7EED\u8FDB\u884C**\u4E0D\u91CD\u53E0\u7684\u5DE5\u4F5C** \u2014 \u4E0D\u4F9D\u8D56\u4E8E\u88AB\u59D4\u6258\u7814\u7A76\u7ED3\u679C\u7684\u5DE5\u4F5C
114265
+ - \u5904\u7406\u4EE3\u7801\u5E93\u4E2D\u4E0D\u76F8\u5173\u7684\u90E8\u5206
114266
+ - \u51C6\u5907\u5DE5\u4F5C\uFF08\u4F8B\u5982\u8BBE\u7F6E\u6587\u4EF6\u3001\u914D\u7F6E\uFF09\uFF0C\u53EF\u4EE5\u72EC\u7ACB\u8FDB\u884C\u7684\u5DE5\u4F5C
114267
114267
 
114268
- ### Wait for Results Properly:
114268
+ ### \u6B63\u786E\u7B49\u5F85\u7ED3\u679C\uFF1A
114269
114269
 
114270
- When you need the delegated results but they're not ready:
114270
+ \u5F53\u4F60\u9700\u8981\u59D4\u6258\u7ED3\u679C\u4F46\u5B83\u4EEC\u5C1A\u672A\u5C31\u7EEA\u65F6\uFF1A
114271
114271
 
114272
- 1. **End your response** - do NOT continue with work that depends on those results
114273
- 2. **Wait for the completion notification** - the system will trigger your next turn
114274
- 3. **Then** collect results via \`background_output(task_id="...")\`
114275
- 4. **Do NOT** impatiently re-search the same topics while waiting
114272
+ 1. **\u7ED3\u675F\u4F60\u7684\u56DE\u590D** \u2014 \u4E0D\u8981\u7EE7\u7EED\u4F9D\u8D56\u90A3\u4E9B\u7ED3\u679C\u7684\u5DE5\u4F5C
114273
+ 2. **\u7B49\u5F85\u5B8C\u6210\u901A\u77E5** \u2014 \u7CFB\u7EDF\u4F1A\u89E6\u53D1\u4F60\u7684\u4E0B\u4E00\u8F6E
114274
+ 3. **\u7136\u540E** \u901A\u8FC7 \`background_output(task_id="...")\` \u6536\u96C6\u7ED3\u679C
114275
+ 4. **\u4E0D\u8981** \u5728\u7B49\u5F85\u671F\u95F4\u6025\u8E81\u5730\u91CD\u65B0\u641C\u7D22\u76F8\u540C\u7684\u4E3B\u9898
114276
114276
 
114277
- ### Why This Matters:
114277
+ ### \u91CD\u8981\u6027\uFF1A
114278
114278
 
114279
- - **Wasted tokens**: Duplicate exploration wastes your context budget
114280
- - **Confusion**: You might contradict the agent's findings
114281
- - **Efficiency**: The whole point of delegation is parallel throughput
114279
+ - **\u6D6A\u8D39 tokens**\uFF1A\u91CD\u590D\u63A2\u7D22\u4F1A\u6D88\u8017\u4F60\u7684 context \u9884\u7B97
114280
+ - **\u4EA7\u751F\u6DF7\u4E71**\uFF1A\u4F60\u53EF\u80FD\u4F1A\u4E0E agent \u7684\u53D1\u73B0\u4EA7\u751F\u77DB\u76FE
114281
+ - **\u6548\u7387**\uFF1A\u59D4\u6258\u7684\u6838\u5FC3\u4EF7\u503C\u5728\u4E8E\u5E76\u884C\u541E\u5410\u91CF
114282
114282
 
114283
- ### Example:
114283
+ ### \u793A\u4F8B\uFF1A
114284
114284
 
114285
114285
  \`\`\`typescript
114286
- // WRONG: After delegating, re-doing the search
114286
+ // \u9519\u8BEF\uFF08WRONG\uFF09\uFF1A\u59D4\u6258\u4E4B\u540E\uFF0C\u91CD\u65B0\u6267\u884C\u641C\u7D22
114287
114287
  task(subagent_type="explore", run_in_background=true, ...)
114288
- // Then immediately grep for the same thing yourself - FORBIDDEN
114288
+ // \u7136\u540E\u7ACB\u5373\u81EA\u5DF1 grep \u76F8\u540C\u5185\u5BB9 \u2014 \u7981\u6B62
114289
114289
 
114290
- // CORRECT: Continue non-overlapping work
114290
+ // \u6B63\u786E\uFF08CORRECT\uFF09\uFF1A\u7EE7\u7EED\u8FDB\u884C\u4E0D\u91CD\u53E0\u7684\u5DE5\u4F5C
114291
114291
  task(subagent_type="explore", run_in_background=true, ...)
114292
- // Work on a different, unrelated file while they search
114293
- // End your response and wait for the notification
114292
+ // \u5F53 agents \u5728\u641C\u7D22\u65F6\uFF0C\u5904\u7406\u4E00\u4E2A\u4E0D\u540C\u7684\u3001\u4E0D\u76F8\u5173\u7684\u6587\u4EF6
114293
+ // \u7ED3\u675F\u4F60\u7684\u56DE\u590D\u5E76\u7B49\u5F85\u901A\u77E5
114294
114294
  \`\`\`
114295
114295
  </Anti_Duplication>`;
114296
114296
  }
@@ -129845,7 +129845,7 @@ class PostHog extends PostHogBackendClient {
129845
129845
  // package.json
129846
129846
  var package_default = {
129847
129847
  name: "@skj1724/oh-my-opencode",
129848
- version: "3.17.12",
129848
+ version: "3.17.13",
129849
129849
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
129850
129850
  main: "./dist/index.js",
129851
129851
  types: "dist/index.d.ts",
@@ -129934,8 +129934,8 @@ var package_default = {
129934
129934
  "oh-my-opencode-linux-x64-baseline": "3.17.4",
129935
129935
  "oh-my-opencode-linux-x64-musl": "3.17.4",
129936
129936
  "oh-my-opencode-linux-x64-musl-baseline": "3.17.4",
129937
- "oh-my-opencode-windows-x64": "3.17.11",
129938
- "oh-my-opencode-windows-x64-baseline": "3.17.11"
129937
+ "oh-my-opencode-windows-x64": "3.17.4",
129938
+ "oh-my-opencode-windows-x64-baseline": "3.17.4"
129939
129939
  },
129940
129940
  overrides: {},
129941
129941
  trustedDependencies: [
@@ -0,0 +1 @@
1
+ export declare const EXCLUDED_DIRS: ReadonlySet<string>;
@@ -0,0 +1 @@
1
+ export { killTmuxSessionIfExists } from "./session-kill";
@@ -0,0 +1 @@
1
+ export declare function killTmuxSessionIfExists(sessionName: string): Promise<boolean>;
@@ -0,0 +1 @@
1
+ export { spawn } from "bun";
@@ -0,0 +1,11 @@
1
+ export type SweepDeps = {
2
+ isInsideTmux: () => boolean;
3
+ getTmuxPath: () => Promise<string | null | undefined>;
4
+ listCandidateSessions: (tmux: string) => Promise<string[]>;
5
+ killSession: (sessionName: string) => Promise<boolean>;
6
+ processAlive: (pid: number) => boolean;
7
+ currentPid: number;
8
+ log: (message: string, payload?: unknown) => void;
9
+ };
10
+ export declare function sweepStaleOmoAgentSessionsWith(deps: SweepDeps): Promise<number>;
11
+ export declare function sweepStaleOmoAgentSessions(): Promise<number>;
@@ -0,0 +1 @@
1
+ export declare function shouldInvalidateSkillCacheForSession(sessionID?: string): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skj1724/oh-my-opencode",
3
- "version": "3.17.12",
3
+ "version": "3.17.13",
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",
@@ -89,8 +89,8 @@
89
89
  "oh-my-opencode-linux-x64-baseline": "3.17.4",
90
90
  "oh-my-opencode-linux-x64-musl": "3.17.4",
91
91
  "oh-my-opencode-linux-x64-musl-baseline": "3.17.4",
92
- "oh-my-opencode-windows-x64": "3.17.11",
93
- "oh-my-opencode-windows-x64-baseline": "3.17.11"
92
+ "oh-my-opencode-windows-x64": "3.17.4",
93
+ "oh-my-opencode-windows-x64-baseline": "3.17.4"
94
94
  },
95
95
  "overrides": {},
96
96
  "trustedDependencies": [