@skj1724/oh-my-opencode 3.17.12 → 3.17.16

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 (111) 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/agents/atlas/default-prompt-sections.d.ts +6 -6
  22. package/dist/agents/atlas/gemini-prompt-sections.d.ts +6 -6
  23. package/dist/agents/atlas/gpt-prompt-sections.d.ts +6 -6
  24. package/dist/agents/atlas/prompt-section-builder.d.ts +3 -2
  25. package/dist/agents/gpt-apply-patch-guard.d.ts +1 -1
  26. package/dist/agents/hephaestus/gpt-5-3-codex.d.ts +9 -9
  27. package/dist/agents/metis.d.ts +7 -7
  28. package/dist/agents/momus.d.ts +6 -6
  29. package/dist/agents/prometheus/behavioral-summary.d.ts +3 -3
  30. package/dist/agents/prometheus/gemini.d.ts +7 -7
  31. package/dist/agents/prometheus/gpt.d.ts +6 -6
  32. package/dist/agents/prometheus/high-accuracy-mode.d.ts +3 -3
  33. package/dist/agents/prometheus/identity-constraints.d.ts +4 -3
  34. package/dist/agents/prometheus/interview-mode.d.ts +3 -3
  35. package/dist/agents/prometheus/plan-generation.d.ts +4 -4
  36. package/dist/agents/prometheus/plan-template.d.ts +4 -4
  37. package/dist/agents/sisyphus/default.d.ts +2 -2
  38. package/dist/agents/sisyphus/gemini.d.ts +10 -10
  39. package/dist/agents/sisyphus/gpt-5-4.d.ts +18 -18
  40. package/dist/agents/sisyphus-junior/gemini.d.ts +6 -6
  41. package/dist/agents/sisyphus-junior/gpt-5-3-codex.d.ts +4 -4
  42. package/dist/agents/sisyphus-junior/gpt-5-4.d.ts +7 -7
  43. package/dist/agents/sisyphus-junior/gpt.d.ts +5 -5
  44. package/dist/cli/index.js +256 -61
  45. package/dist/features/background-agent/process-cleanup.test-helpers.d.ts +4 -0
  46. package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
  47. package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -1
  48. package/dist/features/builtin-commands/templates/ralph-loop.d.ts +3 -3
  49. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
  50. package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -1
  51. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  52. package/dist/features/builtin-commands/templates/stop-continuation.d.ts +1 -1
  53. package/dist/features/builtin-skills/skills/git-master-sections/commit-workflow.d.ts +1 -1
  54. package/dist/features/builtin-skills/skills/git-master-sections/history-search-workflow.d.ts +1 -1
  55. package/dist/features/builtin-skills/skills/git-master-sections/overview.d.ts +1 -1
  56. package/dist/features/builtin-skills/skills/git-master-sections/quick-reference.d.ts +1 -1
  57. package/dist/features/builtin-skills/skills/git-master-sections/rebase-workflow.d.ts +1 -1
  58. package/dist/features/builtin-skills/skills/git-master-skill-metadata.d.ts +1 -1
  59. package/dist/features/builtin-skills/skills/playwright-cli.d.ts +5 -5
  60. package/dist/features/claude-code-command-loader/loader-cache.d.ts +6 -0
  61. package/dist/features/claude-code-command-loader/loader.d.ts +2 -0
  62. package/dist/features/team-mode/team-layout-tmux/index.d.ts +1 -0
  63. package/dist/features/team-mode/team-layout-tmux/layout.d.ts +15 -0
  64. package/dist/features/tmux-subagent/event-handlers.d.ts +0 -4
  65. package/dist/features/tmux-subagent/index.d.ts +0 -3
  66. package/dist/features/tmux-subagent/manager.d.ts +4 -0
  67. package/dist/features/tmux-subagent/polling-manager.d.ts +2 -1
  68. package/dist/hooks/atlas/system-reminder-templates.d.ts +2 -2
  69. package/dist/hooks/auto-update-checker/hook/deferred-startup-check.d.ts +1 -0
  70. package/dist/hooks/comment-checker/initialization-gate.d.ts +1 -0
  71. package/dist/hooks/directory-agents-injector/finder.d.ts +1 -1
  72. package/dist/hooks/directory-readme-injector/finder.d.ts +1 -1
  73. package/dist/hooks/edit-error-recovery/hook.d.ts +1 -1
  74. package/dist/hooks/json-error-recovery/hook.d.ts +1 -1
  75. package/dist/hooks/keyword-detector/analyze/default.d.ts +1 -1
  76. package/dist/hooks/keyword-detector/search/default.d.ts +1 -1
  77. package/dist/hooks/rules-injector/cache.d.ts +5 -0
  78. package/dist/hooks/rules-injector/injector.d.ts +2 -0
  79. package/dist/hooks/rules-injector/project-root-finder.d.ts +1 -0
  80. package/dist/hooks/rules-injector/rule-file-finder.d.ts +2 -19
  81. package/dist/hooks/rules-injector/rule-scan-cache.d.ts +6 -0
  82. package/dist/hooks/session-notification-init.d.ts +7 -0
  83. package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +1 -0
  84. package/dist/hooks/write-existing-file-guard/tool-execute-before-handler.d.ts +1 -1
  85. package/dist/index.js +8270 -7802
  86. package/dist/shared/excluded-dirs.d.ts +1 -0
  87. package/dist/shared/index.d.ts +1 -0
  88. package/dist/shared/jsonc-parser.d.ts +8 -5
  89. package/dist/shared/load-opencode-plugins.d.ts +1 -0
  90. package/dist/shared/project-discovery-dirs.d.ts +2 -0
  91. package/dist/shared/tmux/tmux-utils/index.d.ts +1 -0
  92. package/dist/shared/tmux/tmux-utils/session-kill.d.ts +1 -0
  93. package/dist/shared/tmux/tmux-utils/session-spawn.d.ts +1 -0
  94. package/dist/shared/tmux/tmux-utils/spawn-process.d.ts +1 -0
  95. package/dist/shared/tmux/tmux-utils/stale-session-sweep.d.ts +11 -0
  96. package/dist/shared/tmux/tmux-utils.d.ts +3 -1
  97. package/dist/tools/background-task/constants.d.ts +3 -3
  98. package/dist/tools/call-omo-agent/constants.d.ts +1 -1
  99. package/dist/tools/delegate-task/constants.d.ts +2 -2
  100. package/dist/tools/hashline-edit/tool-description.d.ts +1 -1
  101. package/dist/tools/interactive-bash/constants.d.ts +1 -1
  102. package/dist/tools/look-at/constants.d.ts +1 -1
  103. package/dist/tools/session-manager/constants.d.ts +5 -5
  104. package/dist/tools/skill/constants.d.ts +2 -2
  105. package/dist/tools/skill/description-formatter.d.ts +1 -1
  106. package/dist/tools/skill/session-skill-cache.d.ts +1 -0
  107. package/dist/tools/skill-mcp/constants.d.ts +1 -1
  108. package/package.json +3 -3
  109. package/dist/features/tmux-subagent/cleanup.d.ts +0 -9
  110. package/dist/features/tmux-subagent/session-created-handler.d.ts +0 -22
  111. package/dist/features/tmux-subagent/session-deleted-handler.d.ts +0 -15
@@ -0,0 +1 @@
1
+ export declare const EXCLUDED_DIRS: ReadonlySet<string>;
@@ -71,3 +71,4 @@ export * from "./log-legacy-plugin-startup-warning";
71
71
  export * from "./task-system-enabled";
72
72
  export * from "./parse-tools-config";
73
73
  export { parseModelString } from "./model-string-parser";
74
+ export { EXCLUDED_DIRS } from "./excluded-dirs";
@@ -6,6 +6,11 @@ export interface JsoncParseResult<T> {
6
6
  length: number;
7
7
  }>;
8
8
  }
9
+ type DetectPluginConfigResult = {
10
+ format: "json" | "jsonc" | "none";
11
+ path: string;
12
+ legacyPath?: string;
13
+ };
9
14
  export declare function parseJsonc<T = unknown>(content: string): T;
10
15
  export declare function parseJsoncSafe<T = unknown>(content: string): JsoncParseResult<T>;
11
16
  export declare function readJsoncFile<T = unknown>(filePath: string): T | null;
@@ -13,8 +18,6 @@ export declare function detectConfigFile(basePath: string): {
13
18
  format: "json" | "jsonc" | "none";
14
19
  path: string;
15
20
  };
16
- export declare function detectPluginConfigFile(dir: string): {
17
- format: "json" | "jsonc" | "none";
18
- path: string;
19
- legacyPath?: string;
20
- };
21
+ export declare function clearPluginConfigFileDetectionCache(): void;
22
+ export declare function detectPluginConfigFile(dir: string): DetectPluginConfigResult;
23
+ export {};
@@ -1 +1,2 @@
1
1
  export declare function loadOpencodePlugins(directory: string): string[];
2
+ export declare function clearOpencodePluginsCache(): void;
@@ -1,3 +1,5 @@
1
+ export declare function clearWorktreeCache(): void;
2
+ export declare function detectWorktreePath(directory: string): string | undefined;
1
3
  export declare function findProjectClaudeSkillDirs(startDirectory: string, stopDirectory?: string): string[];
2
4
  export declare function findProjectAgentsSkillDirs(startDirectory: string, stopDirectory?: string): string[];
3
5
  export declare function findProjectOpencodeSkillDirs(startDirectory: string, stopDirectory?: string): string[];
@@ -0,0 +1 @@
1
+ export { killTmuxSessionIfExists } from "./session-kill";
@@ -0,0 +1 @@
1
+ export declare function killTmuxSessionIfExists(sessionName: string): Promise<boolean>;
@@ -1,3 +1,4 @@
1
1
  import type { TmuxConfig } from "../../../config/schema";
2
2
  import type { SpawnPaneResult } from "../types";
3
+ export declare function getIsolatedSessionName(pid?: number): string;
3
4
  export declare function spawnTmuxSession(sessionId: string, description: string, config: TmuxConfig, serverUrl: string, sourcePaneId?: string): Promise<SpawnPaneResult>;
@@ -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>;
@@ -7,5 +7,7 @@ export { spawnTmuxPane } from "./tmux-utils/pane-spawn";
7
7
  export { closeTmuxPane } from "./tmux-utils/pane-close";
8
8
  export { replaceTmuxPane } from "./tmux-utils/pane-replace";
9
9
  export { spawnTmuxWindow } from "./tmux-utils/window-spawn";
10
- export { spawnTmuxSession } from "./tmux-utils/session-spawn";
10
+ export { spawnTmuxSession, getIsolatedSessionName } from "./tmux-utils/session-spawn";
11
+ export { killTmuxSessionIfExists } from "./tmux-utils/session-kill";
12
+ export { sweepStaleOmoAgentSessions } from "./tmux-utils/stale-session-sweep";
11
13
  export { applyLayout, enforceMainPaneWidth } from "./tmux-utils/layout";
@@ -1,3 +1,3 @@
1
- export declare const BACKGROUND_TASK_DESCRIPTION = "\u5728\u540E\u53F0\u8FD0\u884C Agent \u4EFB\u52A1\u3002\u7ACB\u5373\u8FD4\u56DE task_id\uFF1B\u4EFB\u52A1\u5B8C\u6210\u65F6\u53D1\u9001\u901A\u77E5\u3002\n\n\u4F7F\u7528 `background_output` \u83B7\u53D6\u7ED3\u679C\u3002Prompt \u5FC5\u987B\u4F7F\u7528\u82F1\u6587\u3002";
2
- export declare const BACKGROUND_OUTPUT_DESCRIPTION = "\u83B7\u53D6\u540E\u53F0\u4EFB\u52A1\u7684\u8F93\u51FA\u3002\u4F7F\u7528 full_session=true \u901A\u8FC7\u8FC7\u6EE4\u5668\u83B7\u53D6\u4F1A\u8BDD\u6D88\u606F\u3002\u7CFB\u7EDF\u4F1A\u5728\u5B8C\u6210\u65F6\u53D1\u9001\u901A\u77E5\uFF0C\u56E0\u6B64\u5F88\u5C11\u9700\u8981\u8BBE\u7F6E block=true\u3002\u2014\u2014\u8D85\u65F6\u503C\u4EE5\u6BEB\u79D2\uFF08ms\uFF09\u4E3A\u5355\u4F4D\uFF0C\u4E0D\u662F\u79D2\u3002\n\n\u91CD\u8981\u63D0\u793A\uFF1A\u4EC5\u5728\u6536\u5230\u4EFB\u52A1\u76F8\u5173\u7684 <system-reminder> \u901A\u77E5\u540E\u624D\u8C03\u7528\u6B64\u5DE5\u5177\u3002\u4E0D\u8981\u5728\u542F\u52A8\u540E\u53F0\u4EFB\u52A1\u540E\u7ACB\u5373\u8C03\u7528\u2014\u2014\u8BF7\u5148\u7B49\u5F85\u901A\u77E5\u5230\u6765\u3002";
3
- export declare const BACKGROUND_CANCEL_DESCRIPTION = "\u53D6\u6D88\u6B63\u5728\u8FD0\u884C\u7684\u540E\u53F0\u4EFB\u52A1\u3002\u4F7F\u7528 all=true \u5728\u6700\u7EC8\u56DE\u7B54\u524D\u53D6\u6D88\u6240\u6709\u4EFB\u52A1\u3002";
1
+ export declare const BACKGROUND_TASK_DESCRIPTION = "Run agent task in background. Returns task_id immediately; notifies on completion.\n\nUse `background_output` to get results. Prompts MUST be in English.";
2
+ export declare const BACKGROUND_OUTPUT_DESCRIPTION = "Get output from background task. Use full_session=true to fetch session messages with filters. System notifies on completion, so block=true rarely needed. - Timeout values are in milliseconds (ms), NOT seconds.\n\nIMPORTANT: ONLY call this tool AFTER receiving a <system-reminder> notification for the task. Do NOT call immediately after launching a background task - wait for the notification first.";
3
+ export declare const BACKGROUND_CANCEL_DESCRIPTION = "Cancel running background task(s). Use all=true to cancel ALL before final answer.";
@@ -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 = "\u542F\u52A8 explore/librarian agent \u6216\u81EA\u5B9A\u4E49 agents\u3002run_in_background \u5FC5\u586B\uFF08true=\u5F02\u6B65\u8FD4\u56DE task_id\uFF0Cfalse=\u540C\u6B65\uFF09\u3002\n\n\u5185\u7F6E agents\uFF1A\n{agents}\n\n\u540C\u65F6\u652F\u6301\u901A\u8FC7 user \u6216 project agent \u76EE\u5F55\u6CE8\u518C\u7684\u81EA\u5B9A\u4E49 agents\u3002\n\n\u4F20\u5165 `session_id=<id>` \u53EF\u5728\u4E4B\u524D\u7684 agent \u4E2D\u7EE7\u7EED\u5B8C\u6574\u4E0A\u4E0B\u6587\u3002Nested subagent depth\uFF08\u5D4C\u5957\u5C42\u7EA7\uFF09\u4F1A\u88AB\u81EA\u52A8\u8FFD\u8E2A\uFF0C\u8D85\u8FC7\u914D\u7F6E\u9650\u5236\u540E\u4F1A\u88AB\u963B\u6B62\u3002\u63D0\u793A\u5FC5\u987B\u7528\u4E2D\u6587\u3002\u4F7F\u7528 `background_output` \u83B7\u53D6\u5F02\u6B65\u7ED3\u679C\u3002";
2
+ export declare const CALL_OMO_AGENT_DESCRIPTION = "Spawn explore/librarian agent or custom agents. run_in_background REQUIRED (true=async with task_id, false=sync).\n\nBuilt-in agents:\n{agents}\n\nCustom agents registered via user or project agent directories are also supported.\n\nPass `session_id=<id>` to continue previous agent with full context. Nested subagent depth is tracked automatically and blocked past the configured limit. Prompts MUST be in English. Use `background_output` for async results.";
@@ -6,8 +6,8 @@ export { CATEGORY_DESCRIPTIONS, CATEGORY_PROMPT_APPENDS, DEFAULT_CATEGORIES, } f
6
6
  * then summarize user requirements and clarify uncertainties before proceeding.
7
7
  * Also MANDATES dependency graphs, parallel execution analysis, and category+skill recommendations.
8
8
  */
9
- export declare const PLAN_AGENT_SYSTEM_PREPEND_STATIC_BEFORE_SKILLS = "<system>\n\u5728\u5F00\u59CB\u89C4\u5212\u4E4B\u524D\uFF0C\u4F60\u5FC5\u987B\u6DF1\u5165\u7406\u89E3\u7528\u6237\u7684\u8BF7\u6C42\u3002\n\n\u5F3A\u5236\u4E0A\u4E0B\u6587\u6536\u96C6\u534F\u8BAE\uFF1A\n1. \u542F\u52A8\u540E\u53F0\u4EE3\u7406\u6536\u96C6\u4E0A\u4E0B\u6587\uFF1A\n - call_omo_agent(description=\"\u63A2\u7D22\u4EE3\u7801\u5E93\u6A21\u5F0F\", subagent_type=\"explore\", run_in_background=true, prompt=\"<\u641C\u7D22\u4E0E\u7528\u6237\u8BF7\u6C42\u76F8\u5173\u7684\u4EE3\u7801\u5E93\u4E2D\u7684\u76F8\u5173\u6A21\u5F0F\u3001\u6587\u4EF6\u548C\u5B9E\u73B0>\")\n - call_omo_agent(description=\"\u7814\u7A76\u6587\u6863\", subagent_type=\"librarian\", run_in_background=true, prompt=\"<\u641C\u7D22\u4E0E\u7528\u6237\u8BF7\u6C42\u76F8\u5173\u7684\u5916\u90E8\u6587\u6863\u3001\u793A\u4F8B\u548C\u6700\u4F73\u5B9E\u8DF5>\")\n\n2. \u6536\u96C6\u4E0A\u4E0B\u6587\u540E\uFF0C\u59CB\u7EC8\u5448\u73B0\uFF1A\n - **\u7528\u6237\u8BF7\u6C42\u6458\u8981**\uFF1A\u5BF9\u7528\u6237\u8BF7\u6C42\u7684\u7B80\u6D01\u91CD\u8FF0\n - **\u4E0D\u786E\u5B9A\u6027**\uFF1A\u4F60\u6B63\u5728\u505A\u51FA\u7684\u4E0D\u660E\u786E\u70B9\u3001\u6B67\u4E49\u6216\u5047\u8BBE\u5217\u8868\n - **\u6F84\u6E05\u95EE\u9898**\uFF1A\u89E3\u51B3\u4E0D\u786E\u5B9A\u6027\u7684\u5177\u4F53\u95EE\u9898\n\n3. \u8FED\u4EE3\u76F4\u5230\u6240\u6709\u9700\u6C42\u5B8C\u5168\u6E05\u6670\uFF1A\n - \u5728\u83B7\u5F97 100% \u6E05\u6670\u5EA6\u4E4B\u524D\uFF0C**\u4E0D\u8981**\u8FDB\u5165\u89C4\u5212\u9636\u6BB5\n - \u8BF7\u7528\u6237\u786E\u8BA4\u4F60\u7684\u7406\u89E3\n - \u5728\u751F\u6210\u5DE5\u4F5C\u8BA1\u5212\u4E4B\u524D\u89E3\u51B3\u6BCF\u4E2A\u6B67\u4E49\n\n\u8BB0\u4F4F\uFF1A\u6A21\u7CCA\u7684\u9700\u6C42\u5BFC\u81F4\u5931\u8D25\u7684\u5B9E\u73B0\u3002\u8BF7\u82B1\u65F6\u95F4\u5F7B\u5E95\u7406\u89E3\u3002\n</system>\n\n<CRITICAL_REQUIREMENT_DEPENDENCY_PARALLEL_EXECUTION_CATEGORY_SKILLS>\n#####################################################################\n# #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u2584\u2584 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D #\n# \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2580\u2580\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D #\n# #\n#####################################################################\n\n\u4F60\u5FC5\u987B\u5728\u8BA1\u5212\u8F93\u51FA\u4E2D\u5305\u542B\u4EE5\u4E0B\u90E8\u5206\u3002\n\u8FD9\u662F\u4E0D\u53EF\u534F\u5546\u7684\u3002\u672A\u5305\u542B\u8FD9\u4E9B\u90E8\u5206 = \u8BA1\u5212\u4E0D\u5B8C\u6574\u3002\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u4E00\u90E8\u5206\uFF1A\u4EFB\u52A1\u4F9D\u8D56\u56FE\uFF08\u5F3A\u5236\uFF09 \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u5FC5\u987B\u5206\u6790\u548C\u8BB0\u5F55\u4EFB\u52A1\u4F9D\u8D56\u5173\u7CFB\u3002\n\n\u5BF9\u4E8E\u8BA1\u5212\u4E2D\u7684\u6BCF\u4E2A\u4EFB\u52A1\uFF0C\u4F60\u5FC5\u987B\u6307\u5B9A\uFF1A\n- \u5B83**\u4F9D\u8D56**\u54EA\u4E9B\u4EFB\u52A1\uFF08\u963B\u585E\u9879\uFF09\n- \u54EA\u4E9B\u4EFB\u52A1**\u4F9D\u8D56**\u5B83\uFF08\u4ECE\u5C5E\u9879\uFF09\n- \u6BCF\u4E2A\u4F9D\u8D56\u7684**\u539F\u56E0**\n\n\u793A\u4F8B\u683C\u5F0F\uFF1A\n```\n## \u4EFB\u52A1\u4F9D\u8D56\u56FE\n\n| \u4EFB\u52A1 | \u4F9D\u8D56 | \u539F\u56E0 |\n|------|------|------|\n| \u4EFB\u52A1 1 | \u65E0 | \u8D77\u59CB\u70B9\uFF0C\u65E0\u524D\u7F6E\u6761\u4EF6 |\n| \u4EFB\u52A1 2 | \u4EFB\u52A1 1 | \u9700\u8981\u4EFB\u52A1 1 \u7684\u8F93\u51FA/\u4EA7\u7269 |\n| \u4EFB\u52A1 3 | \u4EFB\u52A1 1 | \u4F7F\u7528\u4EFB\u52A1 1 \u5EFA\u7ACB\u7684\u57FA\u7840 |\n| \u4EFB\u52A1 4 | \u4EFB\u52A1 2, \u4EFB\u52A1 3 | \u6574\u5408\u4E24\u4E2A\u4EFB\u52A1\u7684\u7ED3\u679C |\n```\n\n\u4E3A\u4EC0\u4E48\u8FD9\u5F88\u91CD\u8981\uFF1A\n- \u6267\u884C\u8005\u9700\u8981\u77E5\u9053\u6267\u884C\u987A\u5E8F\n- \u9632\u6B62\u88AB\u963B\u585E\u7684\u5DE5\u4F5C\u8FC7\u65E9\u5F00\u59CB\n- \u8BC6\u522B\u9879\u76EE\u65F6\u95F4\u7EBF\u7684\u5173\u952E\u8DEF\u5F84\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u4E8C\u90E8\u5206\uFF1A\u5E76\u884C\u6267\u884C\u56FE\uFF08\u5F3A\u5236\uFF09 \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u5FC5\u987B\u8BC6\u522B\u54EA\u4E9B\u4EFB\u52A1\u53EF\u4EE5\u5E76\u884C\u8FD0\u884C\u3002\n\n\u5206\u6790\u4F60\u7684\u4F9D\u8D56\u56FE\u5E76\u5C06\u4EFB\u52A1\u5206\u7EC4\u4E3A**\u5E76\u884C\u6267\u884C\u6CE2\u6B21**\uFF1A\n\n\u793A\u4F8B\u683C\u5F0F\uFF1A\n```\n## \u5E76\u884C\u6267\u884C\u56FE\n\n\u6CE2\u6B21 1\uFF08\u7ACB\u5373\u5F00\u59CB\uFF09\uFF1A\n\u251C\u2500\u2500 \u4EFB\u52A1 1\uFF1A[\u63CF\u8FF0]\uFF08\u65E0\u4F9D\u8D56\uFF09\n\u2514\u2500\u2500 \u4EFB\u52A1 5\uFF1A[\u63CF\u8FF0]\uFF08\u65E0\u4F9D\u8D56\uFF09\n\n\u6CE2\u6B21 2\uFF08\u6CE2\u6B21 1 \u5B8C\u6210\u540E\uFF09\uFF1A\n\u251C\u2500\u2500 \u4EFB\u52A1 2\uFF1A[\u63CF\u8FF0]\uFF08\u4F9D\u8D56\uFF1A\u4EFB\u52A1 1\uFF09\n\u251C\u2500\u2500 \u4EFB\u52A1 3\uFF1A[\u63CF\u8FF0]\uFF08\u4F9D\u8D56\uFF1A\u4EFB\u52A1 1\uFF09\n\u2514\u2500\u2500 \u4EFB\u52A1 6\uFF1A[\u63CF\u8FF0]\uFF08\u4F9D\u8D56\uFF1A\u4EFB\u52A1 5\uFF09\n\n\u6CE2\u6B21 3\uFF08\u6CE2\u6B21 2 \u5B8C\u6210\u540E\uFF09\uFF1A\n\u2514\u2500\u2500 \u4EFB\u52A1 4\uFF1A[\u63CF\u8FF0]\uFF08\u4F9D\u8D56\uFF1A\u4EFB\u52A1 2, \u4EFB\u52A1 3\uFF09\n\n\u5173\u952E\u8DEF\u5F84\uFF1A\u4EFB\u52A1 1 \u2192 \u4EFB\u52A1 2 \u2192 \u4EFB\u52A1 4\n\u9884\u4F30\u5E76\u884C\u52A0\u901F\uFF1A\u6BD4\u4E32\u884C\u5FEB 40%\n```\n\n\u4E3A\u4EC0\u4E48\u8FD9\u5F88\u91CD\u8981\uFF1A\n- \u901A\u8FC7\u5E76\u884C\u5316\u5927\u5E45\u8282\u7701\u65F6\u95F4\n- \u6267\u884C\u8005\u53EF\u4EE5\u540C\u65F6\u8C03\u5EA6\u591A\u4E2A\u4EE3\u7406\n- \u8BC6\u522B\u6267\u884C\u8BA1\u5212\u4E2D\u7684\u74F6\u9888\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u4E09\u90E8\u5206\uFF1ACATEGORY + SKILLS \u63A8\u8350\uFF08\u5F3A\u5236\uFF09 \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u4EFB\u52A1\uFF0C\u4F60\u5FC5\u987B\u63A8\u8350\uFF1A\n1. \u4F7F\u7528\u54EA\u4E2A CATEGORY \u8FDB\u884C\u59D4\u6258\n2. \u4E3A\u88AB\u59D4\u6258\u7684\u4EE3\u7406\u52A0\u8F7D\u54EA\u4E9B SKILLS\n";
10
- export declare const PLAN_AGENT_SYSTEM_PREPEND_STATIC_AFTER_SKILLS = "### \u5FC5\u9700\u8F93\u51FA\u683C\u5F0F\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u4EFB\u52A1\uFF0C\u5305\u542B\u4E00\u4E2A\u63A8\u8350\u5757\uFF1A\n\n```\n### \u4EFB\u52A1 N\uFF1A[\u6807\u9898]\n\n**\u59D4\u6258\u63A8\u8350\uFF1A**\n- Category\uFF1A`[category-name]` - [\u9009\u62E9\u539F\u56E0]\n- Skills\uFF1A[`skill-1`\uFF0C`skill-2`] - [\u6BCF\u4E2A skill \u7684\u5FC5\u8981\u6027]\n\n**Skills \u8BC4\u4F30\uFF1A**\n- \u5DF2\u5305\u542B `skill-name`\uFF1A[\u539F\u56E0]\n- \u5DF2\u6392\u9664 `other-skill`\uFF1A[\u539F\u56E0\u2014\u2014\u9886\u57DF\u65E0\u91CD\u53E0]\n```\n\n\u4E3A\u4EC0\u4E48\u8FD9\u5F88\u91CD\u8981\uFF1A\n- Category \u51B3\u5B9A\u6267\u884C\u4F7F\u7528\u7684 Model\n- Skills \u5411\u6267\u884C\u8005\u6CE8\u5165**\u4E13\u4E1A\u5316\u77E5\u8BC6**\n- \u7F3A\u5C11\u76F8\u5173 Skill = \u6267\u884C\u4E0D\u4F18\n- \u9519\u8BEF\u7684 Category = \u9519\u8BEF\u7684 Model = \u7CDF\u7CD5\u7684\u7ED3\u679C\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u54CD\u5E94\u683C\u5F0F\u89C4\u8303\uFF08\u5F3A\u5236\uFF09 \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u7684\u8BA1\u5212\u8F93\u51FA\u5FC5\u987B\u9075\u5FAA\u6B64\u786E\u5207\u7ED3\u6784\uFF1A\n\n```markdown\n# [\u8BA1\u5212\u6807\u9898]\n\n## \u4E0A\u4E0B\u6587\n[\u7528\u6237\u8BF7\u6C42\u6458\u8981\u3001\u8BBF\u8C08\u53D1\u73B0\u3001\u7814\u7A76\u7ED3\u679C]\n\n## \u4EFB\u52A1\u4F9D\u8D56\u56FE\n[\u4F9D\u8D56\u8868\u2014\u2014\u53C2\u89C1\u7B2C\u4E00\u90E8\u5206]\n\n## \u5E76\u884C\u6267\u884C\u56FE\n[\u6CE2\u6B21\u7ED3\u6784\u2014\u2014\u53C2\u89C1\u7B2C\u4E8C\u90E8\u5206]\n\n## \u4EFB\u52A1\n\n### \u4EFB\u52A1 1\uFF1A[\u6807\u9898]\n**\u63CF\u8FF0**\uFF1A\u8981\u505A\u4EC0\u4E48\n**\u59D4\u6258\u63A8\u8350**\uFF1A\n- Category: `[category]` - [\u539F\u56E0]\n- Skills: [`skill-1`] - [\u539F\u56E0]\n**Skills \u8BC4\u4F30**\uFF1A[\u2705 \u5DF2\u5305\u542B / \u274C \u5DF2\u6392\u9664\uFF0C\u9644\u539F\u56E0]\n**\u4F9D\u8D56**\uFF1A[\u4EFB\u52A1 ID \u6216\"\u65E0\"]\n**\u9A8C\u6536\u6807\u51C6**\uFF1A[\u53EF\u9A8C\u8BC1\u7684\u6761\u4EF6]\n\n### \u4EFB\u52A1 2\uFF1A[\u6807\u9898]\n[\u76F8\u540C\u7ED3\u6784...]\n\n## Commit \u7B56\u7565\n[\u5982\u4F55\u539F\u5B50\u6027\u5730\u63D0\u4EA4\u53D8\u66F4]\n\n## \u6210\u529F\u6807\u51C6\n[\u6700\u7EC8\u9A8C\u8BC1\u6B65\u9AA4]\n```\n\n#####################################################################\n# #\n# \u672A\u5305\u542B\u8FD9\u4E9B\u90E8\u5206 = \u8BA1\u5212\u5C06\u88AB MOMUS \u5BA1\u67E5\u62D2\u7EDD\u3002 #\n# \u4E0D\u8981\u8DF3\u8FC7\u3002\u4E0D\u8981\u7F29\u5199\u3002 #\n# #\n#####################################################################\n</CRITICAL_REQUIREMENT_DEPENDENCY_PARALLEL_EXECUTION_CATEGORY_SKILLS>\n\n<FINAL_OUTPUT_FOR_CALLER>\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u56DB\u90E8\u5206\uFF1A\u4F9B\u8C03\u7528\u8005\u7684\u53EF\u64CD\u4F5C TODO \u5217\u8868\uFF08\u5F3A\u5236\uFF09 \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u5FC5\u987B\u5728\u54CD\u5E94\u672B\u5C3E\u5305\u542B\u6B64\u90E8\u5206\u3002\n\n```markdown\n## TODO \u5217\u8868\uFF08\u6DFB\u52A0\u8FD9\u4E9B\uFF09\n\n> \u8C03\u7528\u8005\uFF1A\u4F7F\u7528 TodoWrite/TaskCreate \u6DFB\u52A0\u8FD9\u4E9B TODO \u5E76\u6309\u6CE2\u6B21\u6267\u884C\u3002\n\n### \u6CE2\u6B21 1\uFF08\u7ACB\u5373\u5F00\u59CB\u2014\u2014\u65E0\u4F9D\u8D56\uFF09\n\n- [ ] **1. [\u4EFB\u52A1\u6807\u9898]**\n - \u64CD\u4F5C\uFF1A[\u6E05\u6670\u7684\u5B9E\u73B0\u6B65\u9AA4]\n - \u4F9D\u8D56\uFF1A\u65E0\n - \u963B\u585E\uFF1A[\u4F9D\u8D56\u6B64\u4EFB\u52A1\u7684\u4EFB\u52A1]\n - Category: `category-name`\n - Skills: [`skill-1`, `skill-2`]\n - QA\uFF1A[\u5982\u4F55\u9A8C\u8BC1\u5B8C\u6210\u2014\u2014\u5177\u4F53\u547D\u4EE4\u6216\u68C0\u67E5]\n\n- [ ] **N. [\u4EFB\u52A1\u6807\u9898]**\n - \u64CD\u4F5C\uFF1A[\u6B65\u9AA4]\n - \u4F9D\u8D56\uFF1A\u65E0\n - \u963B\u585E\uFF1A[...]\n - Category: `category-name`\n - Skills: [`skill-1`]\n - QA\uFF1A[\u9A8C\u8BC1\u65B9\u5F0F]\n\n### \u6CE2\u6B21 2\uFF08\u6CE2\u6B21 1 \u5B8C\u6210\u540E\uFF09\n\n- [ ] **2. [\u4EFB\u52A1\u6807\u9898]**\n - \u64CD\u4F5C\uFF1A[\u6B65\u9AA4]\n - \u4F9D\u8D56\uFF1A1\n - \u963B\u585E\uFF1A[4]\n - Category: `category-name`\n - Skills: [`skill-1`]\n - QA\uFF1A[\u9A8C\u8BC1\u65B9\u5F0F]\n\n[\u4E3A\u6240\u6709\u6CE2\u6B21\u7EE7\u7EED...]\n\n## \u6267\u884C\u8BF4\u660E\n\n1. **\u6CE2\u6B21 1**\uFF1A\u5E76\u884C\u542F\u52A8\u8FD9\u4E9B\u4EFB\u52A1\uFF08\u65E0\u4F9D\u8D56\uFF09\n ```\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"\u4EFB\u52A1 1: ...\")\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"\u4EFB\u52A1 N: ...\")\n ```\n\n2. **\u6CE2\u6B21 2**\uFF1A\u6CE2\u6B21 1 \u5B8C\u6210\u540E\uFF0C\u5E76\u884C\u542F\u52A8\u4E0B\u4E00\u6CE2\u6B21\n ```\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"\u4EFB\u52A1 2: ...\")\n ```\n\n3. \u7EE7\u7EED\u76F4\u5230\u6240\u6709\u6CE2\u6B21\u5B8C\u6210\n\n4. \u6700\u7EC8 QA\uFF1A\u9A8C\u8BC1\u6240\u6709\u4EFB\u52A1\u901A\u8FC7\u5176 QA \u6807\u51C6\n```\n\n\u4E3A\u4EC0\u4E48\u6B64\u683C\u5F0F\u662F\u5F3A\u5236\u7684\uFF1A\n- \u8C03\u7528\u8005\u53EF\u4EE5\u76F4\u63A5\u590D\u5236 TODO \u9879\n- \u6CE2\u6B21\u5206\u7EC4\u652F\u6301\u5E76\u884C\u6267\u884C\n- \u6BCF\u4E2A\u4EFB\u52A1\u90FD\u6709\u6E05\u6670\u7684\u4EFB\u52A1\u53C2\u6570\n- QA \u6807\u51C6\u786E\u4FDD\u53EF\u9A8C\u8BC1\u7684\u5B8C\u6210\n</FINAL_OUTPUT_FOR_CALLER>\n\n";
9
+ export declare const PLAN_AGENT_SYSTEM_PREPEND_STATIC_BEFORE_SKILLS = "<system>\n\u5728\u5F00\u59CB\u89C4\u5212\u4E4B\u524D\uFF0C\u4F60\u5FC5\u987B\u9996\u5148\u6DF1\u5165\u7406\u89E3\u7528\u6237\u7684\u9700\u6C42\u3002\n\n\u5F3A\u5236\u6027\u7684\u4E0A\u4E0B\u6587\u6536\u96C6\u6D41\u7A0B:\n1. \u542F\u52A8\u540E\u53F0 agents \u6536\u96C6\u4E0A\u4E0B\u6587:\n - call_omo_agent(description=\"\u63A2\u7D22\u4EE3\u7801\u5E93\u6A21\u5F0F\", subagent_type=\"explore\", run_in_background=true, prompt=\"<\u641C\u7D22\u4E0E\u7528\u6237\u8BF7\u6C42\u76F8\u5173\u7684\u4EE3\u7801\u5E93\u6A21\u5F0F\u3001\u6587\u4EF6\u548C\u5B9E\u73B0>\")\n - call_omo_agent(description=\"\u7814\u7A76\u6587\u6863\", subagent_type=\"librarian\", run_in_background=true, prompt=\"<\u641C\u7D22\u4E0E\u7528\u6237\u8BF7\u6C42\u76F8\u5173\u7684\u5916\u90E8\u6587\u6863\u3001\u793A\u4F8B\u548C\u6700\u4F73\u5B9E\u8DF5>\")\n\n2. \u6536\u96C6\u4E0A\u4E0B\u6587\u540E\uFF0C\u59CB\u7EC8\u5448\u73B0:\n - **\u7528\u6237\u8BF7\u6C42\u6458\u8981**: \u7528\u6237\u9700\u6C42\u8981\u70B9\u7684\u7B80\u6D01\u91CD\u8FF0\n - **\u4E0D\u786E\u5B9A\u6027**: \u4F60\u6B63\u5728\u505A\u51FA\u7684\u4E0D\u6E05\u6670\u70B9\u3001\u6B67\u4E49\u6216\u5047\u8BBE\u5217\u8868\n - **\u6F84\u6E05\u95EE\u9898**: \u89E3\u51B3\u4E0D\u786E\u5B9A\u6027\u7684\u5177\u4F53\u95EE\u9898\n\n3. \u8FED\u4EE3\u76F4\u5230\u6240\u6709\u9700\u6C42\u5B8C\u5168\u6E05\u6670:\n - \u5728\u83B7\u5F97 100% \u6E05\u6670\u5EA6\u4E4B\u524D\u4E0D\u8981\u7EE7\u7EED\u89C4\u5212\n - \u8BF7\u7528\u6237\u786E\u8BA4\u4F60\u7684\u7406\u89E3\n - \u5728\u751F\u6210\u5DE5\u4F5C\u8BA1\u5212\u4E4B\u524D\u89E3\u51B3\u6240\u6709\u6B67\u4E49\n\n\u8BB0\u4F4F: \u6A21\u7CCA\u7684\u9700\u6C42\u4F1A\u5BFC\u81F4\u5B9E\u73B0\u5931\u8D25\u3002\u82B1\u65F6\u95F4\u5F7B\u5E95\u7406\u89E3\u3002\n</system>\n\n<CRITICAL_REQUIREMENT_DEPENDENCY_PARALLEL_EXECUTION_CATEGORY_SKILLS>\n#####################################################################\n# #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 #\n# \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u2584\u2584 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 #\n# \u2588\u2588\uFFFD\uFFFD \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D #\n# \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2580\u2580\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D #\n# #\n#####################################################################\n\n\u4F60\u5FC5\u987B\u5728\u8BA1\u5212\u8F93\u51FA\u4E2D\u5305\u542B\u4EE5\u4E0B\u90E8\u5206\u3002\n\u8FD9\u662F\u5F3A\u5236\u6027\u7684\u3002\u4E0D\u5305\u542B\u8FD9\u4E9B\u90E8\u5206 = \u4E0D\u5B8C\u6574\u7684\u8BA1\u5212\u3002\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u4E00\u90E8\u5206: \u4EFB\u52A1\u4F9D\u8D56\u56FE (\u5F3A\u5236) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u5FC5\u987B\u5206\u6790\u548C\u8BB0\u5F55\u4EFB\u52A1\u4F9D\u8D56\u5173\u7CFB\u3002\n\n\u5BF9\u4E8E\u8BA1\u5212\u4E2D\u7684\u6BCF\u4E2A\u4EFB\u52A1\uFF0C\u4F60\u5FC5\u987B\u6307\u5B9A:\n- \u5B83\u4F9D\u8D56\u54EA\u4E9B\u4EFB\u52A1 (\u963B\u585E\u9879)\n- \u54EA\u4E9B\u4EFB\u52A1\u4F9D\u8D56\u5B83 (\u4F9D\u8D56\u9879)\n- \u6BCF\u4E2A\u4F9D\u8D56\u7684\u539F\u56E0\n\n\u793A\u4F8B\u683C\u5F0F:\n```\n## \u4EFB\u52A1\u4F9D\u8D56\u56FE\n\n| \u4EFB\u52A1 | \u4F9D\u8D56 | \u539F\u56E0 |\n|------|------------|--------|\n| \u4EFB\u52A1 1 | \u65E0 | \u8D77\u70B9\uFF0C\u65E0\u524D\u7F6E\u6761\u4EF6 |\n| \u4EFB\u52A1 2 | \u4EFB\u52A1 1 | \u9700\u8981\u4EFB\u52A1 1 \u7684\u8F93\u51FA/\u4EA7\u7269 |\n| \u4EFB\u52A1 3 | \u4EFB\u52A1 1 | \u4F7F\u7528\u4EFB\u52A1 1 \u5EFA\u7ACB\u7684\u57FA\u7840 |\n| \u4EFB\u52A1 4 | \u4EFB\u52A1 2, \u4EFB\u52A1 3 | \u6574\u5408\u4E24\u4E2A\u4EFB\u52A1\u7684\u7ED3\u679C |\n```\n\n\u4E3A\u4EC0\u4E48\u8FD9\u5F88\u91CD\u8981:\n- \u6267\u884C\u8005\u9700\u8981\u77E5\u9053\u6267\u884C\u987A\u5E8F\n- \u9632\u6B62\u88AB\u963B\u585E\u7684\u5DE5\u4F5C\u8FC7\u65E9\u5F00\u59CB\n- \u786E\u5B9A\u9879\u76EE\u65F6\u95F4\u7EBF\u7684\u5173\u952E\u8DEF\u5F84\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u4E8C\u90E8\u5206: \u5E76\u884C\u6267\u884C\u56FE (\u5F3A\u5236) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u5FC5\u987B\u8BC6\u522B\u54EA\u4E9B\u4EFB\u52A1\u53EF\u4EE5\u5E76\u884C\u8FD0\u884C\u3002\n\n\u5206\u6790\u4F60\u7684\u4F9D\u8D56\u56FE\u5E76\u5C06\u4EFB\u52A1\u5206\u7EC4\u4E3A\u5E76\u884C\u6267\u884C\u6CE2:\n\n\u793A\u4F8B\u683C\u5F0F:\n```\n## \u5E76\u884C\u6267\u884C\u56FE\n\n\u7B2C\u4E00\u6CE2 (\u7ACB\u5373\u5F00\u59CB):\n\u251C\u2500\u2500 \u4EFB\u52A1 1: [\u63CF\u8FF0] (\u65E0\u4F9D\u8D56)\n\u2514\u2500\u2500 \u4EFB\u52A1 5: [\u63CF\u8FF0] (\u65E0\u4F9D\u8D56)\n\n\u7B2C\u4E8C\u6CE2 (\u7B2C\u4E00\u6CE2\u5B8C\u6210\u540E):\n\u251C\u2500\u2500 \u4EFB\u52A1 2: [\u63CF\u8FF0] (\u4F9D\u8D56: \u4EFB\u52A1 1)\n\u251C\u2500\u2500 \u4EFB\u52A1 3: [\u63CF\u8FF0] (\u4F9D\u8D56: \u4EFB\u52A1 1)\n\u2514\u2500\u2500 \u4EFB\u52A1 6: [\u63CF\u8FF0] (\u4F9D\u8D56: \u4EFB\u52A1 5)\n\n\u7B2C\u4E09\u6CE2 (\u7B2C\u4E8C\u6CE2\u5B8C\u6210\u540E):\n\u2514\u2500\u2500 \u4EFB\u52A1 4: [\u63CF\u8FF0] (\u4F9D\u8D56: \u4EFB\u52A1 2, \u4EFB\u52A1 3)\n\n\u5173\u952E\u8DEF\u5F84: \u4EFB\u52A1 1 \u2192 \u4EFB\u52A1 2 \u2192 \u4EFB\u52A1 4\n\u9884\u4F30\u5E76\u884C\u52A0\u901F: \u6BD4\u4E32\u884C\u5FEB 40%\n```\n\n\u4E3A\u4EC0\u4E48\u8FD9\u5F88\u91CD\u8981:\n- \u901A\u8FC7\u5E76\u884C\u5316\u5B9E\u73B0\u5DE8\u5927\u7684\u65F6\u95F4\u8282\u7701\n- \u6267\u884C\u8005\u53EF\u4EE5\u540C\u65F6\u8C03\u5EA6\u591A\u4E2A agents\n- \u8BC6\u522B\u6267\u884C\u8BA1\u5212\u4E2D\u7684\u74F6\u9888\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u4E09\u90E8\u5206: CATEGORY + SKILLS \u63A8\u8350 (\u5F3A\u5236) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u4EFB\u52A1\uFF0C\u4F60\u5FC5\u987B\u63A8\u8350:\n1. \u4F7F\u7528\u54EA\u4E2A CATEGORY \u8FDB\u884C\u59D4\u6258\n2. \u4E3A\u88AB\u59D4\u6258\u7684 agent \u52A0\u8F7D\u54EA\u4E9B SKILLS\n";
10
+ export declare const PLAN_AGENT_SYSTEM_PREPEND_STATIC_AFTER_SKILLS = "### \u5FC5\u9700\u7684\u8F93\u51FA\u683C\u5F0F\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u4EFB\u52A1\uFF0C\u5305\u542B\u4E00\u4E2A\u63A8\u8350\u5757:\n\n```\n### \u4EFB\u52A1 N: [\u4EFB\u52A1\u6807\u9898]\n\n**\u59D4\u6258\u63A8\u8350:**\n- Category: `[category-name]` - [\u9009\u62E9\u539F\u56E0]\n- Skills: [`skill-1`, `skill-2`] - [\u6BCF\u4E2A skill \u7684\u5FC5\u8981\u6027\u8BF4\u660E]\n\n**Skills \u8BC4\u4F30:**\n- \u5DF2\u5305\u542B `skill-name`: [\u539F\u56E0]\n- \u672A\u5305\u542B `other-skill`: [\u8BE5\u9886\u57DF\u65E0\u91CD\u53E0\u7684\u539F\u56E0]\n```\n\n\u4E3A\u4EC0\u4E48\u8FD9\u5F88\u91CD\u8981:\n- Category \u51B3\u5B9A\u6267\u884C\u4F7F\u7528\u7684 MODEL\n- Skills \u5411\u6267\u884C\u8005\u6CE8\u5165\u4E13\u4E1A\u77E5\u8BC6\n- \u7F3A\u5C11\u76F8\u5173 skill = \u6B21\u4F18\u6267\u884C\n- \u9519\u8BEF\u7684 category = \u9519\u8BEF\u7684 model = \u7CDF\u7CD5\u7684\u7ED3\u679C\n\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u54CD\u5E94\u683C\u5F0F\u89C4\u8303 (\u5F3A\u5236) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u7684\u8BA1\u5212\u8F93\u51FA\u5FC5\u987B\u9075\u5FAA\u6B64\u786E\u5207\u7ED3\u6784:\n\n```markdown\n# [\u8BA1\u5212\u6807\u9898]\n\n## \u4E0A\u4E0B\u6587\n[\u7528\u6237\u8BF7\u6C42\u6458\u8981\u3001\u8BBF\u8C08\u7ED3\u679C\u3001\u7814\u7A76\u7ED3\u679C]\n\n## \u4EFB\u52A1\u4F9D\u8D56\u56FE\n[\u4F9D\u8D56\u8868 - \u89C1\u7B2C\u4E00\u90E8\u5206]\n\n## \u5E76\u884C\u6267\u884C\u56FE\n[\u6CE2\u6B21\u7ED3\u6784 - \u89C1\u7B2C\u4E8C\u90E8\u5206]\n\n## \u4EFB\u52A1\n\n### \u4EFB\u52A1 1: [\u6807\u9898]\n**\u63CF\u8FF0**: [\u8981\u505A\u4EC0\u4E48]\n**\u59D4\u6258\u63A8\u8350**:\n- Category: `[category]` - [\u539F\u56E0]\n- Skills: [`skill-1`] - [\u539F\u56E0]\n**Skills \u8BC4\u4F30**: [\u2705 \u5DF2\u5305\u542B / \u274C \u5DF2\u7701\u7565\u5E76\u9644\u539F\u56E0]\n**\u4F9D\u8D56**: [\u4EFB\u52A1 ID \u6216 \"\u65E0\"]\n**\u9A8C\u6536\u6807\u51C6**: [\u53EF\u9A8C\u8BC1\u7684\u6761\u4EF6]\n\n### \u4EFB\u52A1 2: [\u6807\u9898]\n[\u76F8\u540C\u7ED3\u6784...]\n\n## \u63D0\u4EA4\u7B56\u7565\n[\u5982\u4F55\u539F\u5B50\u6027\u5730\u63D0\u4EA4\u66F4\u6539]\n\n## \u6210\u529F\u6807\u51C6\n[\u6700\u7EC8\u9A8C\u8BC1\u6B65\u9AA4]\n```\n\n#####################################################################\n# #\n# \u4E0D\u5305\u542B\u8FD9\u4E9B\u90E8\u5206 = \u8BA1\u5212\u5C06\u88AB MOMUS \u5BA1\u67E5\u62D2\u7EDD #\n# \u4E0D\u8981\u8DF3\u8FC7\u3002\u4E0D\u8981\u7B80\u5316\u3002 #\n# #\n#####################################################################\n</CRITICAL_REQUIREMENT_DEPENDENCY_PARALLEL_EXECUTION_CATEGORY_SKILLS>\n\n<FINAL_OUTPUT_FOR_CALLER>\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u2588 \u7B2C\u56DB\u90E8\u5206: \u53EF\u6267\u884C\u7684 TODO \u5217\u8868 (\u5F3A\u5236) \u2588\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u4F60\u5FC5\u987B\u5728\u56DE\u590D\u672B\u5C3E\u5305\u542B\u6B64\u90E8\u5206\u3002\n\n```markdown\n## TODO \u5217\u8868 (\u6DFB\u52A0\u8FD9\u4E9B)\n\n> \u8C03\u7528\u8005: \u4F7F\u7528 TodoWrite/TaskCreate \u6DFB\u52A0\u8FD9\u4E9B TODOs \u5E76\u6309\u6CE2\u6B21\u6267\u884C\u3002\n\n### \u7B2C\u4E00\u6CE2 (\u7ACB\u5373\u5F00\u59CB - \u65E0\u4F9D\u8D56)\n\n- [ ] **1. [\u4EFB\u52A1\u6807\u9898]**\n - \u505A\u4EC0\u4E48: [\u6E05\u6670\u5B9E\u65BD\u6B65\u9AA4]\n - \u4F9D\u8D56: \u65E0\n - \u963B\u585E: [\u4F9D\u8D56\u6B64\u4EFB\u52A1\u7684\u4EFB\u52A1]\n - Category: `category-name`\n - Skills: [`skill-1`, `skill-2`]\n - QA: [\u5982\u4F55\u9A8C\u8BC1\u5B8C\u6210 - \u5177\u4F53\u547D\u4EE4\u6216\u68C0\u67E5]\n\n- [ ] **N. [\u4EFB\u52A1\u6807\u9898]**\n - \u505A\u4EC0\u4E48: [\u6B65\u9AA4]\n - \u4F9D\u8D56: \u65E0\n - \u963B\u585E: [...]\n - Category: `category-name`\n - Skills: [`skill-1`]\n - QA: [\u9A8C\u8BC1\u65B9\u5F0F]\n\n### \u7B2C\u4E8C\u6CE2 (\u7B2C\u4E00\u6CE2\u5B8C\u6210\u540E)\n\n- [ ] **2. [\u4EFB\u52A1\u6807\u9898]**\n - \u505A\u4EC0\u4E48: [\u6B65\u9AA4]\n - \u4F9D\u8D56: 1\n - \u963B\u585E: [4]\n - Category: `category-name`\n - Skills: [`skill-1`]\n - QA: [\u9A8C\u8BC1\u65B9\u5F0F]\n\n[\u7EE7\u7EED\u6240\u6709\u6CE2\u6B21...]\n\n## \u6267\u884C\u8BF4\u660E\n\n1. **\u7B2C\u4E00\u6CE2**: \u5E76\u884C\u542F\u52A8\u8FD9\u4E9B\u4EFB\u52A1 (\u65E0\u4F9D\u8D56)\n ```\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"\u4EFB\u52A1 1: ...\")\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"\u4EFB\u52A1 N: ...\")\n ```\n\n2. **\u7B2C\u4E8C\u6CE2**: \u7B2C\u4E00\u6CE2\u5B8C\u6210\u540E\uFF0C\u5E76\u884C\u542F\u52A8\u4E0B\u4E00\u6CE2\n ```\n task(category=\"...\", load_skills=[...], run_in_background=false, prompt=\"\u4EFB\u52A1 2: ...\")\n ```\n\n3. \u7EE7\u7EED\u76F4\u5230\u6240\u6709\u6CE2\u6B21\u5B8C\u6210\n\n4. \u6700\u7EC8 QA: \u9A8C\u8BC1\u6240\u6709\u4EFB\u52A1\u901A\u8FC7 QA \u6807\u51C6\n```\n\n\u4E3A\u4EC0\u4E48\u6B64\u683C\u5F0F\u662F\u5F3A\u5236\u6027\u7684:\n- \u8C03\u7528\u8005\u53EF\u4EE5\u76F4\u63A5\u590D\u5236 TODO \u9879\u76EE\n- \u6CE2\u6B21\u5206\u7EC4\u652F\u6301\u5E76\u884C\u6267\u884C\n- \u6BCF\u4E2A\u4EFB\u52A1\u90FD\u6709\u6E05\u6670\u7684\u4EFB\u52A1\u53C2\u6570\n- QA \u6807\u51C6\u786E\u4FDD\u53EF\u9A8C\u8BC1\u7684\u5B8C\u6210\n</FINAL_OUTPUT_FOR_CALLER>\n\n";
11
11
  export declare function buildPlanAgentSkillsSection(categories?: AvailableCategory[], skills?: AvailableSkill[]): string;
12
12
  export declare function buildPlanAgentSystemPrepend(categories?: AvailableCategory[], skills?: AvailableSkill[]): string;
13
13
  /**
@@ -1 +1 @@
1
- export declare const HASHLINE_EDIT_DESCRIPTION = "\u4F7F\u7528 LINE#ID \u683C\u5F0F\u7CBE\u786E\u3001\u5B89\u5168\u5730\u7F16\u8F91\u6587\u4EF6\u3002\n\nWORKFLOW:\n1. \u8BFB\u53D6\u76EE\u6807\u6587\u4EF6/\u8303\u56F4\u5E76\u590D\u5236\u7CBE\u786E\u7684 LINE#ID \u6807\u7B7E\u3002\n2. \u6BCF\u4E2A\u903B\u8F91\u53D8\u66F4\u70B9\u9009\u62E9\u4E00\u4E2A\u6700\u5C0F\u64CD\u4F5C\u3002\n3. \u6BCF\u6B21\u5BF9\u540C\u4E00\u6587\u4EF6\u63D0\u4EA4\u4E00\u4E2A\u5305\u542B\u6240\u6709\u76F8\u5173\u64CD\u4F5C\u7684\u7F16\u8F91\u8C03\u7528\u3002\n4. \u5982\u679C\u540C\u4E00\u6587\u4EF6\u9700\u8981\u518D\u6B21\u8C03\u7528\uFF0C\u5148\u91CD\u65B0\u8BFB\u53D6\u3002\n5. \u4EC5\u5C06\u951A\u70B9\u4F5C\u4E3A \"LINE#ID\" \u4F7F\u7528\uFF08\u7EDD\u4E0D\u5305\u542B\u540E\u9762\u7684 \"|content\"\uFF09\u3002\n\n<must>\n- SNAPSHOT: \u540C\u4E00\u8C03\u7528\u4E2D\u7684\u6240\u6709\u7F16\u8F91\u5747\u5F15\u7528\u539F\u59CB\u6587\u4EF6\u72B6\u6001\u3002\u8BF7\u52FF\u4E3A\u540C\u4E00\u6B21\u8C03\u7528\u4E2D\u5148\u524D\u7684\u7F16\u8F91\u8C03\u6574\u884C\u53F7\u2014\u2014\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u81EA\u5E95\u5411\u4E0A\u5E94\u7528\u5B83\u4EEC\u3002\n- replace \u4F1A\u5220\u9664 pos..end\uFF08\u542B\uFF09\u8303\u56F4\u5185\u7684\u884C\u5E76\u5728\u5176\u4F4D\u7F6E\u63D2\u5165\u65B0\u884C\u3002pos \u4E4B\u524D\u548C end \u4E4B\u540E\u7684\u884C\u4FDD\u6301\u4E0D\u53D8\u2014\u2014\u4E0D\u8981\u5C06\u5B83\u4EEC\u5305\u542B\u5728 lines \u4E2D\u3002\u5426\u5219\u4F1A\u51FA\u73B0\u91CD\u590D\u3002\n- lines \u5FC5\u987B\u53EA\u5305\u542B\u88AB\u6D88\u8D39\u8303\u56F4\u5185\u90E8\u7684\u5185\u5BB9\u3002end \u4E4B\u540E\u7684\u5185\u5BB9\u4FDD\u6301\u4E0D\u53D8\u3002\n- \u6807\u7B7E\u5FC5\u987B\u4ECE\u8BFB\u53D6\u8F93\u51FA\u6216 >>> mismatch \u8F93\u51FA\u4E2D\u7CBE\u786E\u590D\u5236\u3002\u7EDD\u5BF9\u4E0D\u8981\u731C\u6D4B\u6807\u7B7E\u3002\n- \u6279\u91CF\u64CD\u4F5C = \u5728 edits[] \u4E2D\u5305\u542B\u591A\u4E2A\u64CD\u4F5C\uFF0C\u800C\u4E0D\u662F\u7528\u4E00\u4E2A\u5927\u7684 replace \u8986\u76D6\u6240\u6709\u5185\u5BB9\u3002\u6BCF\u4E2A\u64CD\u4F5C\u5E94\u9488\u5BF9\u6700\u5C0F\u53EF\u80FD\u7684\u53D8\u66F4\u3002\n- lines \u5FC5\u987B\u53EA\u5305\u542B\u7EAF\u66FF\u6362\u6587\u672C\uFF08\u4E0D\u5E26 LINE#ID \u524D\u7F00\uFF0C\u4E0D\u5E26 diff + \u6807\u8BB0\uFF09\u3002\n</must>\n\n<operations>\nLINE#ID \u683C\u5F0F:\n \u6BCF\u884C\u5F15\u7528\u5FC5\u987B\u91C7\u7528 \"{line_number}#{hash_id}\" \u683C\u5F0F\uFF0C\u5176\u4E2D:\n {line_number}: 1-based \u884C\u53F7\n {hash_id}: \u6765\u81EA\u5B57\u6BCD\u96C6 ZPMQVRWSNKTXJBYH \u7684\u4E24\u4E2A CID \u5B57\u6BCD\n\n\u64CD\u4F5C\u9009\u62E9:\n \u4EC5\u7528 pos \u6267\u884C replace -> \u66FF\u6362 pos \u5904\u7684\u4E00\u884C\n \u7528 pos+end \u6267\u884C replace -> \u5C06 pos..end \u8303\u56F4\uFF08\u542B\uFF09\u4F5C\u4E3A\u5757\u66FF\u6362\uFF08ranges \u4E0D\u5F97\u5728 edits \u95F4\u91CD\u53E0\uFF09\n \u7528 pos/end \u951A\u70B9\u6267\u884C append -> \u5728\u8BE5\u951A\u70B9\u4E4B\u540E\u63D2\u5165\n \u7528 pos/end \u951A\u70B9\u6267\u884C prepend -> \u5728\u8BE5\u951A\u70B9\u4E4B\u524D\u63D2\u5165\n \u65E0\u951A\u70B9\u7684 append/prepend -> \u5728 EOF/BOF \u5904\u63D2\u5165\uFF08\u4E5F\u53EF\u521B\u5EFA\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\uFF09\n\n\u5185\u5BB9\u683C\u5F0F:\n lines \u53EF\u4EE5\u662F string\uFF08\u5355\u884C\uFF09\u6216 string[]\uFF08\u591A\u884C\uFF0C\u63A8\u8350\uFF09\u3002\n \u5982\u679C\u4F20\u5165\u591A\u884C\u5B57\u7B26\u4E32\uFF0C\u5C06\u6309\u5B9E\u9645\u6362\u884C\u7B26\u62C6\u5206\u3002\n replace \u65F6 lines: null \u6216 lines: [] -> \u5220\u9664\u8FD9\u4E9B\u884C\u3002\n\n\u6587\u4EF6\u6A21\u5F0F:\n delete=true \u5220\u9664\u6587\u4EF6\uFF0C\u8981\u6C42 edits=[] \u4E14\u65E0 rename\n rename \u5C06\u6700\u7EC8\u5185\u5BB9\u79FB\u52A8\u5230\u65B0\u8DEF\u5F84\u5E76\u5220\u9664\u65E7\u8DEF\u5F84\n\n\u89C4\u5219:\n 1. \u6700\u5C0F\u5316\u8303\u56F4\uFF1A\u6BCF\u4E2A\u903B\u8F91\u53D8\u66F4\u70B9\u4E00\u4E2A\u64CD\u4F5C\u3002\n 2. \u4FDD\u7559\u683C\u5F0F\uFF1A\u4FDD\u6301\u7F29\u8FDB\u3001\u6807\u70B9\u3001\u6362\u884C\u3001\u5C3E\u90E8\u9017\u53F7\u3001\u5927\u62EC\u53F7\u98CE\u683C\u3002\n 3. \u4F18\u5148\u63D2\u5165\u800C\u975E\u91CD\u5199\u90BB\u884C\uFF1A\u951A\u5B9A\u5230\u7ED3\u6784\u8FB9\u754C\uFF08}, ], }), \u800C\u975E\u5185\u90E8\u5C5E\u6027\u884C\u3002\n 4. \u7981\u6B62\u65E0\u64CD\u4F5C\uFF1A\u66FF\u6362\u5185\u5BB9\u5FC5\u987B\u4E0E\u5F53\u524D\u5185\u5BB9\u4E0D\u540C\u3002\n 5. \u4EC5\u4FEE\u6539\u8BF7\u6C42\u7684\u4EE3\u7801\uFF1A\u907F\u514D\u9644\u5E26\u7F16\u8F91\u3002\n 6. \u4F7F\u7528\u7CBE\u786E\u7684\u5F53\u524D token\uFF1A\u7EDD\u4E0D\u8FD1\u4F3C\u91CD\u5199\u3002\n 7. \u5BF9\u4E8E\u4EA4\u6362/\u79FB\u52A8\uFF1A\u4F18\u5148\u7528\u4E00\u4E2A\u8303\u56F4\u64CD\u4F5C\u800C\u975E\u591A\u4E2A\u5355\u884C\u64CD\u4F5C\u3002\n 8. \u951A\u5B9A\u5230\u7ED3\u6784\u884C\uFF08function/class/brace\uFF09\uFF0C\u7EDD\u4E0D\u951A\u5B9A\u5230\u7A7A\u884C\u3002\n 9. \u6BCF\u6B21\u6210\u529F\u7684\u7F16\u8F91\u8C03\u7528\u540E\u91CD\u65B0\u8BFB\u53D6\uFF0C\u518D\u5BF9\u540C\u4E00\u6587\u4EF6\u53D1\u51FA\u4E0B\u4E00\u4E2A\u8C03\u7528\u3002\n</operations>\n\n<examples>\n\u7ED9\u5B9A\u8BFB\u53D6\u540E\u7684\u6587\u4EF6\u5185\u5BB9:\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\n\u5355\u884C\u66FF\u6362\uFF08\u4FEE\u6539\u7B2C 11 \u884C\uFF09:\n { op: \"replace\", pos: \"11#XJ\", lines: [\" console.log(\\\"hello\\\");\"] }\n \u7ED3\u679C: \u7B2C 11 \u884C\u88AB\u66FF\u6362\u3002\u7B2C 10\u300112-15 \u884C\u4E0D\u53D8\u3002\n\n\u8303\u56F4\u66FF\u6362\uFF08\u91CD\u5199\u51FD\u6570\u4F53\uFF0C\u7B2C 11-12 \u884C\uFF09:\n { op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hello world\\\";\"] }\n \u7ED3\u679C: \u7B2C 11-12 \u884C\u88AB\u5220\u9664\uFF0C\u66FF\u6362\u4E3A 1 \u884C\u65B0\u5185\u5BB9\u3002\u7B2C 10\u300113-15 \u884C\u4E0D\u53D8\u3002\n\n\u5220\u9664\u4E00\u884C:\n { op: \"replace\", pos: \"12#MB\", lines: null }\n \u7ED3\u679C: \u7B2C 12 \u884C\u88AB\u5220\u9664\u3002\u7B2C 10-11\u300113-15 \u884C\u4E0D\u53D8\u3002\n\n\u5728\u7B2C 13 \u884C\u540E\u63D2\u5165\uFF08\u4E24\u4E2A\u51FD\u6570\u4E4B\u95F4\uFF09:\n { op: \"append\", pos: \"13#QR\", lines: [\"\", \"function added() {\", \" return true;\", \"}\"] }\n \u7ED3\u679C: \u5728\u7B2C 13 \u884C\u540E\u63D2\u5165 4 \u884C\u65B0\u5185\u5BB9\u3002\u6240\u6709\u73B0\u6709\u884C\u4E0D\u53D8\u3002\n\n\u9519\u8BEF\u793A\u4F8B - lines \u8D85\u51FA end\uFF08\u4F1A\u91CD\u590D\u7B2C 13 \u884C\uFF09:\n { op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hi\\\";\", \"}\"] }\n \u7B2C 13 \u884C\u662F \"}\"\uFF0C\u5DF2\u5B58\u5728\u4E8E end \u4E4B\u540E\u3002\u5728 lines \u4E2D\u5305\u542B \"}\" \u4F1A\u5BFC\u81F4\u91CD\u590D\u3002\n \u6B63\u786E\u5199\u6CD5: { op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hi\\\";\"] }\n</examples>\n\n<auto>\n\u5185\u7F6E\u81EA\u52A8\u4FEE\u6B63\uFF08\u65E0\u9700\u624B\u52A8\u5904\u7406\uFF09:\n \u5408\u5E76\u7684\u884C\u4F1A\u81EA\u52A8\u6269\u5C55\u56DE\u539F\u59CB\u884C\u6570\u3002\n \u7F29\u8FDB\u4ECE\u539F\u59CB\u884C\u81EA\u52A8\u6062\u590D\u3002\n BOM \u548C CRLF \u6362\u884C\u7B26\u81EA\u52A8\u4FDD\u7559\u3002\n \u6587\u672C\u4E2D\u7684 hashline \u524D\u7F00\u548C diff \u6807\u8BB0\u81EA\u52A8\u5265\u79BB\u3002\n \u8FB9\u754C\u56DE\u663E\u884C\uFF08\u590D\u5236\u76F8\u90BB\u5B58\u6D3B\u884C\u7684\u884C\uFF09\u81EA\u52A8\u5265\u79BB\u3002\n</auto>\n\n\u6062\u590D\uFF08\u51FA\u73B0 >>> mismatch \u9519\u8BEF\u65F6\uFF09:\n \u76F4\u63A5\u590D\u5236\u9519\u8BEF\u8F93\u51FA\u4E2D\u663E\u793A\u7684\u66F4\u65B0\u540E\u7684 LINE#ID \u6807\u7B7E\u3002\n \u4EC5\u5728\u9519\u8BEF\u7247\u6BB5\u4E2D\u7F3A\u5C11\u6240\u9700\u6807\u7B7E\u65F6\u624D\u91CD\u65B0\u8BFB\u53D6\u6587\u4EF6\u3002";
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,3 +1,3 @@
1
1
  export declare const DEFAULT_TIMEOUT_MS = 60000;
2
2
  export declare const BLOCKED_TMUX_SUBCOMMANDS: string[];
3
- export declare const INTERACTIVE_BASH_DESCRIPTION = "\u8B66\u544A: \u4EC5\u9650 TMUX\u3002\u76F4\u63A5\u4F20\u9012 tmux \u5B50\u547D\u4EE4 (\u4E0D\u5E26 'tmux' \u524D\u7F00)\u3002\n\n\u793A\u4F8B: new-session -d -s omo-dev, send-keys -t omo-dev \"vim\" Enter\n\n\u9002\u7528\u4E8E\u9700\u8981\u6301\u7EED\u4EA4\u4E92\u7684 TUI \u5E94\u7528 (vim, htop, pudb)\u3002\u4E00\u6B21\u6027\u547D\u4EE4 \u2192 \u4F7F\u7528 Bash \u5E76\u52A0 &\u3002";
3
+ export declare const INTERACTIVE_BASH_DESCRIPTION = "WARNING: This is TMUX ONLY. Pass tmux subcommands directly (without 'tmux' prefix).\n\nExamples: new-session -d -s omo-dev, send-keys -t omo-dev \"vim\" Enter\n\nFor TUI apps needing ongoing interaction (vim, htop, pudb). One-shot commands \u2192 use Bash with &.";
@@ -1,2 +1,2 @@
1
1
  export declare const MULTIMODAL_LOOKER_AGENT: "multimodal-looker";
2
- export declare const LOOK_AT_DESCRIPTION = "\u5F53\u5FEB\u901F\u6458\u8981\u8DB3\u4EE5\u6EE1\u8DB3\u9700\u6C42\u800C\u975E\u7CBE\u786E\u9605\u8BFB\u65F6\uFF0C\u4ECE\u5A92\u4F53\u6587\u4EF6\uFF08PDF\u3001\u56FE\u7247\u3001\u56FE\u8868\uFF09\u4E2D\u63D0\u53D6\u57FA\u672C\u4FE1\u606F\u3002\u9002\u7528\u4E8E\u7B80\u5355\u6587\u672C\u5185\u5BB9\u7684\u63D0\u53D6\uFF0C\u65E0\u9700\u4F7F\u7528 Read \u5DE5\u5177\u3002\u5207\u52FF\u7528\u4E8E\u89C6\u89C9\u7CBE\u5EA6\u3001\u7F8E\u5B66\u8BC4\u4F30\u6216\u7CBE\u786E\u51C6\u786E\u6027\u573A\u666F\u2014\u2014\u8FD9\u4E9B\u60C5\u51B5\u8BF7\u6539\u7528 Read \u5DE5\u5177\u3002";
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.";
@@ -1,9 +1,9 @@
1
1
  export { OPENCODE_STORAGE, MESSAGE_STORAGE, PART_STORAGE, SESSION_STORAGE } from "../../shared";
2
2
  export declare const TODO_DIR: string;
3
3
  export declare const TRANSCRIPT_DIR: string;
4
- export declare const SESSION_LIST_DESCRIPTION = "\u5217\u51FA\u6240\u6709 OpenCode \u4F1A\u8BDD\uFF0C\u53EF\u9009\u62E9\u8FC7\u6EE4\u3002\n\n\u8FD4\u56DE\u53EF\u7528 session IDs \u5217\u8868\uFF0C\u5305\u542B\u5143\u6570\u636E\uFF0C\u5305\u62EC\u6D88\u606F\u8BA1\u6570\u3001\u65E5\u671F\u8303\u56F4\u548C\u4F7F\u7528\u7684 agents\u3002\n\n\u53C2\u6570:\n- limit (\u53EF\u9009): \u8FD4\u56DE\u7684\u6700\u5927\u4F1A\u8BDD\u6570\n- from_date (\u53EF\u9009): \u4ECE\u6B64\u65E5\u671F\u5F00\u59CB\u8FC7\u6EE4\u4F1A\u8BDD (ISO 8601 \u683C\u5F0F)\n- to_date (\u53EF\u9009): \u8FC7\u6EE4\u5230\u6B64\u65E5\u671F\u7684\u4F1A\u8BDD (ISO 8601 \u683C\u5F0F)\n\n\u793A\u4F8B\u8F93\u51FA:\n| Session ID | Messages | First | Last | Agents |\n|------------|----------|-------|------|--------|\n| ses_abc123 | 45 | 2025-12-20 | 2025-12-24 | build, oracle |\n| ses_def456 | 12 | 2025-12-19 | 2025-12-19 | build |";
5
- export declare const SESSION_READ_DESCRIPTION = "\u4ECE OpenCode \u4F1A\u8BDD\u4E2D\u8BFB\u53D6\u6D88\u606F\u548C\u5386\u53F2\u3002\n\n\u8FD4\u56DE\u683C\u5F0F\u5316\u7684\u4F1A\u8BDD\u6D88\u606F\u89C6\u56FE\uFF0C\u5305\u542B role\u3001timestamp \u548C\u5185\u5BB9\u3002\u53EF\u9009\u62E9\u5305\u542B todos \u548C transcript \u6570\u636E\u3002\n\n\u53C2\u6570:\n- session_id (\u5FC5\u9700): \u8981\u8BFB\u53D6\u7684 Session ID\n- include_todos (\u53EF\u9009): \u5982\u679C\u53EF\u7528\u5219\u5305\u542B todo \u5217\u8868 (\u9ED8\u8BA4: false)\n- include_transcript (\u53EF\u9009): \u5982\u679C\u53EF\u7528\u5219\u5305\u542B transcript \u65E5\u5FD7 (\u9ED8\u8BA4: false)\n- limit (\u53EF\u9009): \u8FD4\u56DE\u7684\u6700\u5927\u6D88\u606F\u6570 (\u9ED8\u8BA4: \u5168\u90E8)\n\n\u793A\u4F8B\u8F93\u51FA:\nSession: ses_abc123\nMessages: 45\nDate Range: 2025-12-20 to 2025-12-24\n\n[Message 1] user (2025-12-20 10:30:00)\nHello, can you help me with...\n\n[Message 2] assistant (2025-12-20 10:30:15)\nOf course! Let me help you with...";
6
- export declare const SESSION_SEARCH_DESCRIPTION = "\u5728 OpenCode \u4F1A\u8BDD\u6D88\u606F\u4E2D\u641C\u7D22\u5185\u5BB9\u3002\n\n\u5BF9\u4F1A\u8BDD\u6D88\u606F\u6267\u884C\u5168\u6587\u641C\u7D22\uFF0C\u8FD4\u56DE\u5E26\u4E0A\u4E0B\u6587\u7684\u5339\u914D\u6458\u5F55\u3002\n\n\u53C2\u6570:\n- query (\u5FC5\u9700): \u641C\u7D22\u67E5\u8BE2\u5B57\u7B26\u4E32\n- session_id (\u53EF\u9009): \u4EC5\u5728\u7279\u5B9A\u4F1A\u8BDD\u4E2D\u641C\u7D22 (\u9ED8\u8BA4: \u6240\u6709\u4F1A\u8BDD)\n- case_sensitive (\u53EF\u9009): \u533A\u5206\u5927\u5C0F\u5199\u641C\u7D22 (\u9ED8\u8BA4: false)\n- limit (\u53EF\u9009): \u8FD4\u56DE\u7684\u6700\u5927\u7ED3\u679C\u6570 (\u9ED8\u8BA4: 20)\n\n\u793A\u4F8B\u8F93\u51FA:\nFound 3 matches across 2 sessions:\n\n[ses_abc123] Message msg_001 (user)\n...implement the **session manager** tool...\n\n[ses_abc123] Message msg_005 (assistant)\n...I'll create a **session manager** with full search...\n\n[ses_def456] Message msg_012 (user)\n...use the **session manager** to find...";
7
- export declare const SESSION_INFO_DESCRIPTION = "\u83B7\u53D6 OpenCode \u4F1A\u8BDD\u7684\u5143\u6570\u636E\u548C\u7EDF\u8BA1\u4FE1\u606F\u3002\n\n\u8FD4\u56DE\u4F1A\u8BDD\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u5305\u62EC\u6D88\u606F\u8BA1\u6570\u3001\u65E5\u671F\u8303\u56F4\u3001\u4F7F\u7528\u7684 agents \u548C\u53EF\u7528\u7684\u6570\u636E\u6E90\u3002\n\n\u53C2\u6570:\n- session_id (\u5FC5\u9700): \u8981\u68C0\u67E5\u7684 Session ID\n\n\u793A\u4F8B\u8F93\u51FA:\nSession ID: ses_abc123\nMessages: 45\nDate Range: 2025-12-20 10:30:00 to 2025-12-24 15:45:30\nDuration: 4 days, 5 hours\nAgents Used: build, oracle, librarian\nHas Todos: Yes (12 items, 8 completed)\nHas Transcript: Yes (234 entries)";
8
- export declare const SESSION_DELETE_DESCRIPTION = "\u5220\u9664 OpenCode \u4F1A\u8BDD\u53CA\u5176\u6240\u6709\u5173\u8054\u6570\u636E\u3002\n\n\u5220\u9664\u4F1A\u8BDD\u6D88\u606F\u3001parts\u3001todos \u548C transcript\u3002\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002\n\n\u53C2\u6570:\n- session_id (\u5FC5\u9700): \u8981\u5220\u9664\u7684 Session ID\n- confirm (\u5FC5\u9700): \u5FC5\u987B\u4E3A true \u624D\u80FD\u786E\u8BA4\u5220\u9664\n\n\u793A\u4F8B:\nsession_delete(session_id=\"ses_abc123\", confirm=true)\nSuccessfully deleted session ses_abc123";
4
+ export declare const SESSION_LIST_DESCRIPTION = "List all OpenCode sessions with optional filtering.\n\nReturns a list of available session IDs with metadata including message count, date range, and agents used.\n\nArguments:\n- limit (optional): Maximum number of sessions to return\n- from_date (optional): Filter sessions from this date (ISO 8601 format)\n- to_date (optional): Filter sessions until this date (ISO 8601 format)\n\nExample output:\n| Session ID | Messages | First | Last | Agents |\n|------------|----------|-------|------|--------|\n| ses_abc123 | 45 | 2025-12-20 | 2025-12-24 | build, oracle |\n| ses_def456 | 12 | 2025-12-19 | 2025-12-19 | build |";
5
+ export declare const SESSION_READ_DESCRIPTION = "Read messages and history from an OpenCode session.\n\nReturns a formatted view of session messages with role, timestamp, and content. Optionally includes todos and transcript data.\n\nArguments:\n- session_id (required): Session ID to read\n- include_todos (optional): Include todo list if available (default: false)\n- include_transcript (optional): Include transcript log if available (default: false)\n- limit (optional): Maximum number of messages to return (default: all)\n\nExample output:\nSession: ses_abc123\nMessages: 45\nDate Range: 2025-12-20 to 2025-12-24\n\n[Message 1] user (2025-12-20 10:30:00)\nHello, can you help me with...\n\n[Message 2] assistant (2025-12-20 10:30:15)\nOf course! Let me help you with...";
6
+ export declare const SESSION_SEARCH_DESCRIPTION = "Search for content within OpenCode session messages.\n\nPerforms full-text search across session messages and returns matching excerpts with context.\n\nArguments:\n- query (required): Search query string\n- session_id (optional): Search within specific session only (default: all sessions)\n- case_sensitive (optional): Case-sensitive search (default: false)\n- limit (optional): Maximum number of results to return (default: 20)\n\nExample output:\nFound 3 matches across 2 sessions:\n\n[ses_abc123] Message msg_001 (user)\n...implement the **session manager** tool...\n\n[ses_abc123] Message msg_005 (assistant)\n...I'll create a **session manager** with full search...\n\n[ses_def456] Message msg_012 (user)\n...use the **session manager** to find...";
7
+ export declare const SESSION_INFO_DESCRIPTION = "Get metadata and statistics about an OpenCode session.\n\nReturns detailed information about a session including message count, date range, agents used, and available data sources.\n\nArguments:\n- session_id (required): Session ID to inspect\n\nExample output:\nSession ID: ses_abc123\nMessages: 45\nDate Range: 2025-12-20 10:30:00 to 2025-12-24 15:45:30\nDuration: 4 days, 5 hours\nAgents Used: build, oracle, librarian\nHas Todos: Yes (12 items, 8 completed)\nHas Transcript: Yes (234 entries)";
8
+ export declare const SESSION_DELETE_DESCRIPTION = "Delete an OpenCode session and all associated data.\n\nRemoves session messages, parts, todos, and transcript. This operation cannot be undone.\n\nArguments:\n- session_id (required): Session ID to delete\n- confirm (required): Must be true to confirm deletion\n\nExample:\nsession_delete(session_id=\"ses_abc123\", confirm=true)\nSuccessfully deleted session ses_abc123";
9
9
  export declare const TOOL_NAME_PREFIX = "session_";
@@ -1,3 +1,3 @@
1
1
  export declare const TOOL_NAME: "skill";
2
- export declare const TOOL_DESCRIPTION_NO_SKILLS = "\u52A0\u8F7D\u4E00\u4E2A Skill \u6216\u6267\u884C\u4E00\u4E2A\u659C\u6760\u547D\u4EE4\u6765\u83B7\u53D6\u7279\u5B9A\u4EFB\u52A1\u7684\u8BE6\u7EC6\u8BF4\u660E\u3002\u5F53\u524D\u6CA1\u6709\u53EF\u7528\u7684 Skills\u3002";
3
- export declare const TOOL_DESCRIPTION_PREFIX = "\u52A0\u8F7D\u4E00\u4E2A Skill \u6216\u6267\u884C\u4E00\u4E2A\u659C\u6760\u547D\u4EE4\u6765\u83B7\u53D6\u7279\u5B9A\u4EFB\u52A1\u7684\u8BE6\u7EC6\u8BF4\u660E\u3002\n\nSkills \u548C Commands \u63D0\u4F9B\u4E13\u4E1A\u77E5\u8BC6\u548C\u5206\u6B65\u9AA4\u6307\u5BFC\u3002\n\u5F53\u4EFB\u52A1\u4E0E\u67D0\u4E2A\u53EF\u7528\u7684 Skill \u6216 Command \u7684\u63CF\u8FF0\u5339\u914D\u65F6\u4F7F\u7528\u6B64\u5DE5\u5177\u3002\n\n**\u4F7F\u7528\u65B9\u6CD5\uFF1A**\n- \u901A\u8FC7 Skill \u540D\u79F0\u8C03\u7528\uFF1Aname='review-work'\n- \u901A\u8FC7 Command \u540D\u79F0\u8C03\u7528\uFF08\u4E0D\u5E26\u524D\u5BFC\u659C\u6760\uFF09\uFF1Aname='publish'\n- \u8BE5\u5DE5\u5177\u5C06\u8FD4\u56DE\u5E26\u6709\u4F60\u4E0A\u4E0B\u6587\u7684\u8BE6\u7EC6\u8BF4\u660E\u3002\n";
2
+ export declare const TOOL_DESCRIPTION_NO_SKILLS = "Load a skill or execute a slash command to get detailed instructions for a specific task. No skills are currently available.";
3
+ export declare const TOOL_DESCRIPTION_PREFIX = "Load a skill or execute a slash command to get detailed instructions for a specific task.\n\nSkills and commands provide specialized knowledge and step-by-step guidance.\nUse this when a task matches an available skill's or command's description.\n\n**How to use:**\n- Call with a skill name: name='review-work'\n- Call with a command name (without leading slash): name='publish'\n- The tool will return detailed instructions with your context applied.\n";
@@ -1,3 +1,3 @@
1
1
  import type { SkillInfo } from "./types";
2
2
  import type { CommandInfo } from "../slashcommand/types";
3
- export declare function formatCombinedDescription(skills: SkillInfo[], commands: CommandInfo[]): string;
3
+ export declare function formatCombinedDescription(skills?: SkillInfo[], commands?: CommandInfo[]): string;
@@ -0,0 +1 @@
1
+ export declare function shouldInvalidateSkillCacheForSession(sessionID?: string): boolean;
@@ -1,3 +1,3 @@
1
1
  export declare const SKILL_MCP_TOOL_NAME = "skill_mcp";
2
- export declare const SKILL_MCP_DESCRIPTION = "\u4ECE skill-embedded MCPs \u8C03\u7528 MCP \u670D\u52A1\u5668\u64CD\u4F5C\u3002\u9700\u8981 mcp_name \u52A0\u4E0A\u4E0B\u5217\u4E4B\u4E00: tool_name, resource_name, \u6216 prompt_name\u3002";
2
+ export declare const SKILL_MCP_DESCRIPTION = "Invoke MCP server operations from skill-embedded MCPs. Requires mcp_name plus exactly one of: tool_name, resource_name, or prompt_name.";
3
3
  export declare const BUILTIN_MCP_TOOL_HINTS: Record<string, string[]>;
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.16",
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": [
@@ -1,9 +0,0 @@
1
- import type { TmuxConfig } from "../../config/schema";
2
- import type { TrackedSession } from "./types";
3
- export declare function cleanupTmuxSessions(params: {
4
- tmuxConfig: TmuxConfig;
5
- serverUrl: string;
6
- sourcePaneId: string | undefined;
7
- sessions: Map<string, TrackedSession>;
8
- stopPolling: () => void;
9
- }): Promise<void>;
@@ -1,22 +0,0 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- import type { TmuxConfig } from "../../config/schema";
3
- import type { CapacityConfig, TrackedSession } from "./types";
4
- import { type SessionMapping } from "./decision-engine";
5
- import type { SessionCreatedEvent } from "./session-created-event";
6
- type OpencodeClient = PluginInput["client"];
7
- export interface SessionCreatedHandlerDeps {
8
- client: OpencodeClient;
9
- tmuxConfig: TmuxConfig;
10
- serverUrl: string;
11
- sourcePaneId: string | undefined;
12
- sessions: Map<string, TrackedSession>;
13
- pendingSessions: Set<string>;
14
- isInsideTmux: () => boolean;
15
- isEnabled: () => boolean;
16
- getCapacityConfig: () => CapacityConfig;
17
- getSessionMappings: () => SessionMapping[];
18
- waitForSessionReady: (sessionId: string) => Promise<boolean>;
19
- startPolling: () => void;
20
- }
21
- export declare function handleSessionCreated(deps: SessionCreatedHandlerDeps, event: SessionCreatedEvent): Promise<void>;
22
- export {};
@@ -1,15 +0,0 @@
1
- import type { TmuxConfig } from "../../config/schema";
2
- import type { TrackedSession } from "./types";
3
- import { type SessionMapping } from "./decision-engine";
4
- export interface SessionDeletedHandlerDeps {
5
- tmuxConfig: TmuxConfig;
6
- serverUrl: string;
7
- sourcePaneId: string | undefined;
8
- sessions: Map<string, TrackedSession>;
9
- isEnabled: () => boolean;
10
- getSessionMappings: () => SessionMapping[];
11
- stopPolling: () => void;
12
- }
13
- export declare function handleSessionDeleted(deps: SessionDeletedHandlerDeps, event: {
14
- sessionID: string;
15
- }): Promise<void>;