@skj1724/oh-my-opencode 3.17.13 → 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.
- package/dist/agents/atlas/default-prompt-sections.d.ts +6 -6
- package/dist/agents/atlas/gemini-prompt-sections.d.ts +6 -6
- package/dist/agents/atlas/gpt-prompt-sections.d.ts +6 -6
- package/dist/agents/atlas/prompt-section-builder.d.ts +3 -2
- package/dist/agents/gpt-apply-patch-guard.d.ts +1 -1
- package/dist/agents/hephaestus/gpt-5-3-codex.d.ts +9 -9
- package/dist/agents/metis.d.ts +7 -7
- package/dist/agents/momus.d.ts +6 -6
- package/dist/agents/prometheus/behavioral-summary.d.ts +3 -3
- package/dist/agents/prometheus/gemini.d.ts +7 -7
- package/dist/agents/prometheus/gpt.d.ts +6 -6
- package/dist/agents/prometheus/high-accuracy-mode.d.ts +3 -3
- package/dist/agents/prometheus/identity-constraints.d.ts +4 -3
- package/dist/agents/prometheus/interview-mode.d.ts +3 -3
- package/dist/agents/prometheus/plan-generation.d.ts +4 -4
- package/dist/agents/prometheus/plan-template.d.ts +4 -4
- package/dist/agents/sisyphus/default.d.ts +2 -2
- package/dist/agents/sisyphus/gemini.d.ts +10 -10
- package/dist/agents/sisyphus/gpt-5-4.d.ts +18 -18
- package/dist/agents/sisyphus-junior/gemini.d.ts +6 -6
- package/dist/agents/sisyphus-junior/gpt-5-3-codex.d.ts +4 -4
- package/dist/agents/sisyphus-junior/gpt-5-4.d.ts +7 -7
- package/dist/agents/sisyphus-junior/gpt.d.ts +5 -5
- package/dist/cli/index.js +254 -59
- package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
- package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -1
- package/dist/features/builtin-commands/templates/ralph-loop.d.ts +3 -3
- package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
- package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -1
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/builtin-commands/templates/stop-continuation.d.ts +1 -1
- package/dist/features/builtin-skills/skills/git-master-sections/commit-workflow.d.ts +1 -1
- package/dist/features/builtin-skills/skills/git-master-sections/history-search-workflow.d.ts +1 -1
- package/dist/features/builtin-skills/skills/git-master-sections/overview.d.ts +1 -1
- package/dist/features/builtin-skills/skills/git-master-sections/quick-reference.d.ts +1 -1
- package/dist/features/builtin-skills/skills/git-master-sections/rebase-workflow.d.ts +1 -1
- package/dist/features/builtin-skills/skills/git-master-skill-metadata.d.ts +1 -1
- package/dist/features/builtin-skills/skills/playwright-cli.d.ts +5 -5
- package/dist/features/claude-code-command-loader/loader.d.ts +2 -0
- package/dist/features/tmux-subagent/event-handlers.d.ts +0 -4
- package/dist/features/tmux-subagent/index.d.ts +0 -3
- package/dist/features/tmux-subagent/manager.d.ts +4 -0
- package/dist/features/tmux-subagent/polling-manager.d.ts +2 -1
- package/dist/hooks/agent-usage-reminder/constants.d.ts +1 -1
- package/dist/hooks/atlas/system-reminder-templates.d.ts +2 -2
- package/dist/hooks/directory-agents-injector/finder.d.ts +1 -1
- package/dist/hooks/directory-readme-injector/finder.d.ts +1 -1
- package/dist/hooks/edit-error-recovery/hook.d.ts +1 -1
- package/dist/hooks/json-error-recovery/hook.d.ts +1 -1
- package/dist/hooks/keyword-detector/analyze/default.d.ts +1 -1
- package/dist/hooks/keyword-detector/search/default.d.ts +1 -1
- package/dist/hooks/rules-injector/cache.d.ts +5 -0
- package/dist/hooks/rules-injector/injector.d.ts +2 -0
- package/dist/hooks/rules-injector/project-root-finder.d.ts +1 -0
- package/dist/hooks/rules-injector/rule-file-finder.d.ts +2 -19
- package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +1 -0
- package/dist/hooks/write-existing-file-guard/tool-execute-before-handler.d.ts +1 -1
- package/dist/index.js +8304 -7836
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/jsonc-parser.d.ts +8 -5
- package/dist/shared/load-opencode-plugins.d.ts +1 -0
- package/dist/shared/project-discovery-dirs.d.ts +2 -0
- package/dist/shared/tmux/tmux-utils/session-spawn.d.ts +1 -0
- package/dist/shared/tmux/tmux-utils.d.ts +3 -1
- package/dist/tools/background-task/constants.d.ts +3 -3
- package/dist/tools/call-omo-agent/constants.d.ts +1 -1
- package/dist/tools/delegate-task/constants.d.ts +2 -2
- package/dist/tools/hashline-edit/tool-description.d.ts +1 -1
- package/dist/tools/interactive-bash/constants.d.ts +1 -1
- package/dist/tools/look-at/constants.d.ts +1 -1
- package/dist/tools/session-manager/constants.d.ts +5 -5
- package/dist/tools/skill/constants.d.ts +2 -2
- package/dist/tools/skill/description-formatter.d.ts +1 -1
- package/dist/tools/skill-mcp/constants.d.ts +1 -1
- package/package.json +1 -1
- package/dist/features/tmux-subagent/cleanup.d.ts +0 -9
- package/dist/features/tmux-subagent/session-created-handler.d.ts +0 -22
- package/dist/features/tmux-subagent/session-deleted-handler.d.ts +0 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const DIRECT_WORK_REMINDER: string;
|
|
2
2
|
export declare const BOULDER_CONTINUATION_PROMPT: string;
|
|
3
|
-
export declare const VERIFICATION_REMINDER = "**
|
|
4
|
-
export declare const VERIFICATION_REMINDER_GEMINI = "**
|
|
3
|
+
export declare const VERIFICATION_REMINDER = "**SUBAGENT \u521A\u521A\u58F0\u79F0\u4EFB\u52A1\u5DF2\u5B8C\u6210\u3002\u4ED6\u4EEC\u53EF\u80FD\u5728\u6492\u8C0E\u3002**\n\nSubagent \u5728\u4EE3\u7801\u6709\u9519\u8BEF\u3001\u6D4B\u8BD5\u8F7B\u6613\u901A\u8FC7\u3001\u903B\u8F91\u9519\u8BEF\u6216\u6084\u6084\u6DFB\u52A0\u4E86\u6CA1\u4EBA\u8981\u6C42\u7684\u529F\u80FD\u65F6\u4F1A\u58F0\u79F0\"\u5B8C\u6210\"\u3002\u8FD9\u79CD\u60C5\u51B5\u6BCF\u6B21\u90FD\u4F1A\u53D1\u751F\u3002\n\u5728\u4F60\u8BC1\u660E\u4E4B\u524D\uFF0C\u5047\u8BBE\u5DE5\u4F5C\u662F\u6709\u95EE\u9898\u7684\u3002\n\n---\n\n**\u9636\u6BB5 1\uFF1A\u5148\u8BFB\u4EE3\u7801\uFF08\u8FD0\u884C\u4EFB\u4F55\u4E1C\u897F\u4E4B\u524D\uFF09**\n\n\u73B0\u5728\u4E0D\u8981\u8FD0\u884C\u6D4B\u8BD5\u3002\u5148\u8BFB\u4EE3\u7801\uFF0C\u8FD9\u6837\u4F60\u5C31\u77E5\u9053\u4F60\u5728\u6D4B\u8BD5\u4EC0\u4E48\u3002\n\n1. `Bash(\"git diff --stat -- ':!node_modules'\")` - \u67E5\u770B\u5177\u4F53\u54EA\u4E9B\u6587\u4EF6\u6709\u53D8\u66F4\u3002\u8D85\u51FA\u9884\u671F\u8303\u56F4\u7684\u6587\u4EF6 = \u8303\u56F4\u8513\u5EF6\u3002\n2. `Read` \u6BCF\u4E2A\u53D8\u66F4\u7684\u6587\u4EF6 - \u6CA1\u6709\u4F8B\u5916\uFF0C\u4E0D\u5141\u8BB8\u7565\u8BFB\u3002\n3. \u5BF9\u4E8E\u6BCF\u4E2A\u6587\u4EF6\uFF0C\u6279\u5224\u6027\u5730\u601D\u8003\uFF1A\n - \u8FD9\u6BB5\u4EE3\u7801\u771F\u7684\u5B8C\u6210\u4E86\u4EFB\u52A1\u8981\u6C42\u5417\uFF1F\uFF08\u91CD\u8BFB\u4EFB\u52A1\uFF0C\u9010\u884C\u6BD4\u8F83\uFF09\n - \u6709\u6CA1\u6709 stub\u3001TODO\u3001\u5360\u4F4D\u7B26\u3001\u786C\u7F16\u7801\u503C\uFF1F\uFF08\u7528 `Grep` \u641C\u7D22 TODO\u3001FIXME\u3001HACK\u3001xxx\uFF09\n - \u903B\u8F91\u9519\u8BEF\uFF1F\u5728\u5927\u8111\u4E2D\u8FFD\u8E2A\u6B63\u5E38\u8DEF\u5F84\u548C\u9519\u8BEF\u8DEF\u5F84\u3002\n - \u53CD\u6A21\u5F0F\uFF1F\uFF08\u7528 `Grep` \u5728\u53D8\u66F4\u6587\u4EF6\u4E2D\u641C\u7D22 `as any`\u3001`@ts-ignore`\u3001\u7A7A catch\u3001console.log\uFF09\n - \u8303\u56F4\u8513\u5EF6\uFF1Fsubagent \u662F\u5426\u89E6\u78B0\u4E86\u4EFB\u52A1\u89C4\u683C\u4E4B\u5916\u7684\u5185\u5BB9\u6216\u6DFB\u52A0\u4E86\u672A\u7ECF\u8981\u6C42\u7684\u529F\u80FD\uFF1F\n4. \u4EA4\u53C9\u68C0\u67E5\u6BCF\u4E2A\u58F0\u660E\uFF1A\n - \u8BF4\"\u66F4\u65B0\u4E86 X\" - \u8BFB X\u3002\u662F\u771F\u6B63\u66F4\u65B0\u4E86\uFF0C\u8FD8\u662F\u53EA\u662F\u8868\u9762\u89E6\u78B0\uFF1F\n - \u8BF4\"\u6DFB\u52A0\u4E86\u6D4B\u8BD5\" - \u8BFB\u6D4B\u8BD5\u3002\u5B83\u4EEC\u662F\u6D4B\u8BD5\u771F\u6B63\u7684\u884C\u4E3A\uFF0C\u8FD8\u662F\u53EA\u662F `expect(true).toBe(true)`\uFF1F\n - \u8BF4\"\u9075\u5FAA\u6A21\u5F0F\" - \u6253\u5F00\u4E00\u4E2A\u53C2\u8003\u6587\u4EF6\u3002\u5B83\u771F\u7684\u5339\u914D\u5417\uFF1F\n\n**\u5982\u679C\u4F60\u4E0D\u80FD\u89E3\u91CA\u6BCF\u884C\u53D8\u66F4\u7684\u4EE3\u7801\u505A\u4E86\u4EC0\u4E48\uFF0C\u4F60\u5C31\u6CA1\u6709\u771F\u6B63\u5BA1\u6838\u5B83\u3002**\n\n**\u9636\u6BB5 2\uFF1A\u8FD0\u884C\u81EA\u52A8\u5316\u68C0\u67E5\uFF08\u5148\u9488\u5BF9\u6027\uFF0C\u518D\u5168\u9762\uFF09**\n\n\u73B0\u5728\u4F60\u5DF2\u7ECF\u7406\u89E3\u4E86\u4EE3\u7801\uFF0C\u8FDB\u884C\u673A\u68B0\u9A8C\u8BC1\uFF1A\n1. \u5BF9\u6BCF\u4E2A\u53D8\u66F4\u7684\u6587\u4EF6\u8FD0\u884C `lsp_diagnostics` - \u96F6\u65B0\u589E\u9519\u8BEF\n2. \u5148\u8FD0\u884C\u53D8\u66F4\u6A21\u5757\u7684\u6D4B\u8BD5\uFF0C\u518D\u8FD0\u884C\u5B8C\u6574\u6D4B\u8BD5\u5957\u4EF6\n3. \u6784\u5EFA/\u7C7B\u578B\u68C0\u67E5 - \u9000\u51FA\u7801 0\n\n\u5982\u679C\u9636\u6BB5 1 \u53D1\u73B0\u4E86\u95EE\u9898\uFF0C\u4F46\u9636\u6BB5 2 \u901A\u8FC7\u4E86\uFF1A\u9636\u6BB5 2 \u662F\u9519\u8BEF\u7684\u3002\u4EE3\u7801\u6709\u6D4B\u8BD5\u672A\u8986\u76D6\u7684 bug\u3002\u4FEE\u590D\u4EE3\u7801\u3002\n\n**\u9636\u6BB5 3\uFF1A\u52A8\u624B QA - \u5B9E\u9645\u8FD0\u884C\u5B83\uFF08\u9762\u5411\u7528\u6237\u7684\u529F\u80FD\u5FC5\u987B\u6267\u884C\uFF09**\n\n\u6D4B\u8BD5\u548C linter \u65E0\u6CD5\u53D1\u73B0\uFF1A\u89C6\u89C9 bug\u3001\u9519\u8BEF\u7684 CLI \u8F93\u51FA\u3001\u635F\u574F\u7684\u7528\u6237\u6D41\u7A0B\u3001API \u54CD\u5E94\u7ED3\u6784\u95EE\u9898\u3002\n\n**\u5982\u679C\u6B64\u4EFB\u52A1\u4EA7\u751F\u4E86\u7528\u6237\u4F1A\u770B\u5230\u6216\u4EA4\u4E92\u7684\u4EFB\u4F55\u5185\u5BB9\uFF0C\u4F60\u5FC5\u987B\u542F\u52A8\u5B83\u5E76\u4EB2\u81EA\u9A8C\u8BC1\u3002**\n\n- **\u524D\u7AEF/UI**\uFF1A`/playwright` skill - \u52A0\u8F7D\u9875\u9762\uFF0C\u6D4F\u89C8\u6D41\u7A0B\uFF0C\u68C0\u67E5\u63A7\u5236\u53F0\u3002\u9A8C\u8BC1\uFF1A\u9875\u9762\u52A0\u8F7D\u6B63\u5E38\uFF0C\u4EA4\u4E92\u6709\u6548\uFF0C\u63A7\u5236\u53F0\u5E72\u51C0\uFF0C\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\n- **TUI/CLI**\uFF1A`interactive_bash` - \u8FD0\u884C\u547D\u4EE4\uFF0C\u5C1D\u8BD5\u6B63\u786E\u8F93\u5165\uFF0C\u5C1D\u8BD5\u9519\u8BEF\u8F93\u5165\uFF0C\u5C1D\u8BD5 --help\u3002\u9A8C\u8BC1\uFF1A\u547D\u4EE4\u8FD0\u884C\u6B63\u5E38\uFF0C\u8F93\u51FA\u6B63\u786E\uFF0C\u9519\u8BEF\u4FE1\u606F\u6709\u7528\uFF0C\u8FB9\u754C\u8F93\u5165\u6709\u5904\u7406\u3002\n- **API/\u540E\u7AEF**\uFF1A\u7528 curl \u6267\u884C `Bash` - \u8C03\u7528\u7AEF\u70B9\uFF0C\u68C0\u67E5\u54CD\u5E94\u4F53\uFF0C\u53D1\u9001\u683C\u5F0F\u9519\u8BEF\u7684\u8F93\u5165\u3002\u9A8C\u8BC1\uFF1A\u8FD4\u56DE 200\uFF0Cbody \u6B63\u786E\uFF0C\u9519\u8BEF\u60C5\u51B5\u8FD4\u56DE\u6B63\u786E\u7684\u9519\u8BEF\u3002\n- **\u914D\u7F6E/\u6784\u5EFA**\uFF1A\u5B9E\u9645\u542F\u52A8\u670D\u52A1\u6216\u5BFC\u5165\u914D\u7F6E\u3002\u9A8C\u8BC1\uFF1A\u65E0\u9519\u8BEF\u52A0\u8F7D\uFF0C\u5411\u540E\u517C\u5BB9\u3002\n\n\u8FD9\u4E0D\u662F\u53EF\u9009\u7684\"\u5982\u679C\u9002\u7528\"\u3002\u5982\u679C\u4EA4\u4ED8\u7269\u662F\u9762\u5411\u7528\u6237\u7684\uFF0C\u800C\u4F60\u672A\u8FD0\u884C\u5B83\uFF0C\u4F60\u5C31\u662F\u5728\u4EA4\u4ED8\u672A\u7ECF\u6D4B\u8BD5\u7684\u5DE5\u4F5C\u3002\n\n**\u9636\u6BB5 4\uFF1A\u5173\u5361\u51B3\u7B56 - \u662F\u5426\u7EE7\u7EED\u4E0B\u4E00\u4E2A\u4EFB\u52A1\uFF1F**\n\n\u8BDA\u5B9E\u56DE\u7B54\uFF1A\n1. \u6211\u80FD\u89E3\u91CA\u6BCF\u884C\u53D8\u66F4\u7684\u4EE3\u7801\u505A\u4E86\u4EC0\u4E48\u5417\uFF1F\uFF08\u5982\u679C\u4E0D\u80FD - \u56DE\u9636\u6BB5 1\uFF09\n2. \u6211\u4EB2\u773C\u770B\u5230\u5B83\u5DE5\u4F5C\u4E86\u5417\uFF1F\uFF08\u5982\u679C\u662F\u9762\u5411\u7528\u6237\u4E14\u6CA1\u6709 - \u56DE\u9636\u6BB5 3\uFF09\n3. \u6211\u786E\u4FE1\u6CA1\u6709\u7834\u574F\u73B0\u6709\u529F\u80FD\u5417\uFF1F\uFF08\u5982\u679C\u4E0D - \u8FD0\u884C\u66F4\u5E7F\u6CDB\u7684\u6D4B\u8BD5\uFF09\n\n\u4E09\u4E2A\u95EE\u9898\u5FC5\u987B\u5168\u90E8\u56DE\u7B54\"\u662F\"\u3002\"\u53EF\u80FD\" = \u5426\u3002\"\u6211\u60F3\u662F\u7684\" = \u5426\u3002\u7EE7\u7EED\u8C03\u67E5\u76F4\u5230\u786E\u5B9A\u3002\n\n- **\u4E09\u4E2A\u5168\u662F YES** - \u7EE7\u7EED\uFF1A\u6807\u8BB0\u4EFB\u52A1\u5B8C\u6210\uFF0C\u8F6C\u5230\u4E0B\u4E00\u4E2A\u3002\n- **\u4EFB\u4F55 NO** - \u62D2\u7EDD\uFF1A\u7528 `session_id` \u6062\u590D session\uFF0C\u4FEE\u590D\u5177\u4F53\u95EE\u9898\u3002\n- **\u4E0D\u786E\u5B9A** - \u62D2\u7EDD\uFF1A\"\u4E0D\u786E\u5B9A\" = \"\u5426\"\u3002\u7EE7\u7EED\u8C03\u67E5\u76F4\u5230\u6709\u660E\u786E\u7B54\u6848\u3002\n\n**\u5728\u6240\u6709 4 \u4E2A\u9636\u6BB5\u5B8C\u6210\u4E14\u5173\u5361\u901A\u8FC7\u4E4B\u524D\uFF0C\u4E0D\u8981\u7EE7\u7EED\u4E0B\u4E00\u4E2A\u4EFB\u52A1\u3002**";
|
|
4
|
+
export declare const VERIFICATION_REMINDER_GEMINI = "**SUBAGENT \u5DF2\u5B8C\u6210\u3002\u4ED6\u4EEC\u7684\u5DE5\u4F5C\u975E\u5E38\u53EF\u7591\u3002**\n\nSubagent \u58F0\u79F0\u4EFB\u52A1\u5B8C\u6210\u3002\u57FA\u4E8E\u6570\u5343\u6B21\u6267\u884C\u7ECF\u9A8C\uFF0Csubagent \u7684\u58F0\u660E\u5F80\u5F80\u662F\u9519\u8BEF\u7684\u3002\u4ED6\u4EEC\u7ECF\u5E38\uFF1A\n- \u63D0\u4EA4\u672A\u68C0\u67E5\u7684\u8BED\u6CD5\u9519\u8BEF\u4EE3\u7801\n- \u521B\u5EFA\u5E26\u6709 TODO \u7684 stub \u5B9E\u73B0\u5E76\u79F0\u4E4B\u4E3A\"\u5B8C\u6210\"\n- \u7F16\u5199\u8F7B\u6613\u901A\u8FC7\u7684\u6D4B\u8BD5\uFF08\u6CA1\u6709\u6D4B\u8BD5\u4EFB\u4F55\u6709\u610F\u4E49\u7684\u5185\u5BB9\uFF09\n- \u5B9E\u73B0\u7684\u903B\u8F91\u4E0E\u8BF7\u6C42\u4E0D\u5339\u914D\n- \u6DFB\u52A0\u6CA1\u4EBA\u8981\u6C42\u7684\u529F\u80FD\u5E76\u79F0\u4E4B\u4E3A\"\u6539\u8FDB\"\n- \u62A5\u544A\"\u6240\u6709\u6D4B\u8BD5\u901A\u8FC7\"\u800C\u5B9E\u9645\u6CA1\u6709\u8FD0\u884C\u4EFB\u4F55\u6D4B\u8BD5\n\n**\u8FD9\u4E0D\u662F\u7406\u8BBA\u8B66\u544A\u3002\u8FD9\u5728\u5F53\u524D\u4EFB\u52A1\u4E0A\u4E00\u5B9A\u4F1A\u53D1\u751F\u3002\u5047\u8BBE\u5DE5\u4F5C\u662F\u6709\u95EE\u9898\u7684\u3002**\n\n**\u4F60\u5FC5\u987B\u7528\u5B9E\u9645\u7684\u5DE5\u5177\u8C03\u7528\u6765\u9A8C\u8BC1\u3002\u4E0D\u662F\u63A8\u7406\u3002\u662F\u5DE5\u5177\u8C03\u7528\u3002**\n\u8BA4\u4E3A\"\u770B\u8D77\u6765\u6B63\u786E\"\u4E0D\u662F\u9A8C\u8BC1\u3002\u8FD0\u884C `lsp_diagnostics` \u624D\u662F\u3002\n\n---\n\n**\u9636\u6BB5 1\uFF1A\u5148\u8BFB\u4EE3\u7801\uFF08\u4E0D\u8981\u8DF3\u8FC7 - \u6682\u65F6\u4E0D\u8FD0\u884C\u6D4B\u8BD5\uFF09**\n\n\u5148\u8BFB\u4EE3\u7801\uFF0C\u8FD9\u6837\u4F60\u5C31\u77E5\u9053\u4F60\u5728\u6D4B\u8BD5\u4EC0\u4E48\u3002\n\n1. `Bash(\"git diff --stat -- ':!node_modules'\")` - \u67E5\u770B\u5177\u4F53\u54EA\u4E9B\u6587\u4EF6\u6709\u53D8\u66F4\u3002\n2. `Read` \u6BCF\u4E2A\u53D8\u66F4\u7684\u6587\u4EF6 - \u6CA1\u6709\u4F8B\u5916\uFF0C\u4E0D\u5141\u8BB8\u7565\u8BFB\u3002\n3. \u5BF9\u4E8E\u6BCF\u4E2A\u6587\u4EF6\uFF1A\n - \u8FD9\u6BB5\u4EE3\u7801\u771F\u7684\u5B8C\u6210\u4E86\u4EFB\u52A1\u8981\u6C42\u5417\uFF1F\u91CD\u8BFB\u4EFB\u52A1\u89C4\u683C\u3002\n - \u6709\u6CA1\u6709 stub\u3001TODO\u3001\u5360\u4F4D\u7B26\uFF1F\u7528 `Grep` \u641C\u7D22 TODO\u3001FIXME\u3001HACK\u3001xxx\n - \u53CD\u6A21\u5F0F\uFF1F\u7528 `Grep` \u641C\u7D22 `as any`\u3001`@ts-ignore`\u3001\u7A7A catch\n - \u8303\u56F4\u8513\u5EF6\uFF1Fsubagent \u662F\u5426\u6DFB\u52A0\u4E86\u4EFB\u52A1\u89C4\u683C\u4E4B\u5916\u7684\u5185\u5BB9\uFF1F\n4. \u5C06\u6BCF\u4E2A\u58F0\u660E\u4E0E\u5B9E\u9645\u4EE3\u7801\u4EA4\u53C9\u9A8C\u8BC1\u3002\n\n**\u5982\u679C\u4F60\u4E0D\u80FD\u89E3\u91CA\u6BCF\u884C\u53D8\u66F4\u7684\u4EE3\u7801\u505A\u4E86\u4EC0\u4E48\uFF0C\u56DE\u53BB\u518D\u8BFB\u4E00\u904D\u3002**\n\n**\u9636\u6BB5 2\uFF1A\u8FD0\u884C\u81EA\u52A8\u5316\u68C0\u67E5**\n\n1. \u5BF9\u6BCF\u4E2A\u53D8\u66F4\u7684\u6587\u4EF6\u8FD0\u884C `lsp_diagnostics` - \u96F6\u65B0\u589E\u9519\u8BEF\u3002\u5B9E\u9645\u8FD0\u884C\u5B83\u3002\n2. \u8FD0\u884C\u53D8\u66F4\u6A21\u5757\u7684\u6D4B\u8BD5\uFF0C\u518D\u8FD0\u884C\u5B8C\u6574\u6D4B\u8BD5\u5957\u4EF6\u3002\u5B9E\u9645\u8FD0\u884C\u5B83\u4EEC\u3002\n3. \u6784\u5EFA/\u7C7B\u578B\u68C0\u67E5 - \u9000\u51FA\u7801 0\u3002\n\n\u5982\u679C\u9636\u6BB5 1 \u53D1\u73B0\u4E86\u95EE\u9898\uFF0C\u4F46\u9636\u6BB5 2 \u901A\u8FC7\u4E86\uFF1A\u9636\u6BB5 2 \u662F\u9519\u8BEF\u7684\u3002\u4FEE\u590D\u4EE3\u7801\u3002\n\n**\u9636\u6BB5 3\uFF1A\u52A8\u624B QA\uFF08\u9762\u5411\u7528\u6237\u7684\u529F\u80FD\u5FC5\u987B\u6267\u884C\uFF09**\n\n- **\u524D\u7AEF/UI**\uFF1A`/playwright`\n- **TUI/CLI**\uFF1A`interactive_bash`\n- **API/\u540E\u7AEF**\uFF1A\u7528 curl \u6267\u884C `Bash`\n\n**\u5982\u679C\u662F\u9762\u5411\u7528\u6237\u7684\u800C\u4F60\u6CA1\u6709\u8FD0\u884C\u5B83\uFF0C\u4F60\u5C31\u662F\u5728\u4EA4\u4ED8\u672A\u7ECF\u6D4B\u8BD5\u7684\u635F\u574F\u5DE5\u4F5C\u3002**\n\n**\u9636\u6BB5 4\uFF1A\u5173\u5361\u51B3\u7B56**\n\n1. \u6211\u80FD\u89E3\u91CA\u6BCF\u884C\u53D8\u66F4\u7684\u4EE3\u7801\u505A\u4E86\u4EC0\u4E48\u5417\uFF1F\uFF08\u5982\u679C\u4E0D\u80FD \u2192 \u9636\u6BB5 1\uFF09\n2. \u6211\u901A\u8FC7\u5DE5\u5177\u8C03\u7528\u770B\u5230\u5B83\u5DE5\u4F5C\u4E86\u5417\uFF1F\uFF08\u5982\u679C\u662F\u9762\u5411\u7528\u6237\u4E14\u6CA1\u6709 \u2192 \u9636\u6BB5 3\uFF09\n3. \u6211\u786E\u4FE1\u6CA1\u6709\u7834\u574F\u4EFB\u4F55\u529F\u80FD\u5417\uFF1F\uFF08\u5982\u679C\u4E0D \u2192 \u66F4\u5E7F\u6CDB\u7684\u6D4B\u8BD5\uFF09\n\n\u4E09\u4E2A\u95EE\u9898\u5FC5\u987B\u5168\u90E8\u56DE\u7B54\"\u662F\"\u3002\"\u53EF\u80FD\" = \u5426\u3002\"\u6211\u60F3\u662F\u7684\" = \u5426\u3002\n\n**\u5728\u6240\u6709 4 \u4E2A\u9636\u6BB5\u5B8C\u6210\u4E4B\u524D\uFF0C\u4E0D\u8981\u7EE7\u7EED\u4E0B\u4E00\u4E2A\u4EFB\u52A1\u3002**";
|
|
5
5
|
export declare const ORCHESTRATOR_DELEGATION_REQUIRED: string;
|
|
6
6
|
export declare const SINGLE_TASK_DIRECTIVE: string;
|
|
@@ -7,7 +7,7 @@ export declare const EDIT_ERROR_PATTERNS: readonly ["oldString and newString mus
|
|
|
7
7
|
* System reminder injected when Edit tool fails due to AI mistake
|
|
8
8
|
* Short, direct, and commanding - forces immediate corrective action
|
|
9
9
|
*/
|
|
10
|
-
export declare const EDIT_ERROR_REMINDER = "\n[EDIT
|
|
10
|
+
export declare const EDIT_ERROR_REMINDER = "\n[EDIT ERROR - IMMEDIATE ACTION REQUIRED]\n\nYou made an Edit mistake. STOP and do this NOW:\n\n1. READ the file immediately to see its ACTUAL current state\n2. VERIFY what the content really looks like (your assumption was wrong)\n3. APOLOGIZE briefly to the user for the error\n4. CONTINUE with corrected action based on the real file content\n\nDO NOT attempt another edit until you've read and verified the file state.\n";
|
|
11
11
|
/**
|
|
12
12
|
* Detects Edit tool errors caused by AI mistakes and injects a recovery reminder
|
|
13
13
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
2
|
export declare const JSON_ERROR_TOOL_EXCLUDE_LIST: readonly ["bash", "read", "glob", "grep", "webfetch", "look_at", "grep_app_searchgithub", "websearch_web_search_exa"];
|
|
3
3
|
export declare const JSON_ERROR_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
|
|
4
|
-
export declare const JSON_ERROR_REMINDER = "\n[JSON
|
|
4
|
+
export declare const JSON_ERROR_REMINDER = "\n[JSON PARSE ERROR - IMMEDIATE ACTION REQUIRED]\n\nYou sent invalid JSON arguments. The system could not parse your tool call.\nSTOP and do this NOW:\n\n1. LOOK at the error message above to see what was expected vs what you sent.\n2. CORRECT your JSON syntax (missing braces, unescaped quotes, trailing commas, etc).\n3. RETRY the tool call with valid JSON.\n\nDO NOT repeat the exact same invalid call.\n";
|
|
5
5
|
export declare function createJsonErrorRecoveryHook(_ctx: PluginInput): {
|
|
6
6
|
"tool.execute.after": (input: {
|
|
7
7
|
tool: string;
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
* - Vietnamese: phân tích, điều tra, nghiên cứu, kiểm tra, xem xét, chẩn đoán, giải thích, tìm hiểu, gỡ lỗi, tại sao
|
|
10
10
|
*/
|
|
11
11
|
export declare const ANALYZE_PATTERN: RegExp;
|
|
12
|
-
export declare const ANALYZE_MESSAGE = "[analyze-mode]\
|
|
12
|
+
export declare const ANALYZE_MESSAGE = "[analyze-mode]\nANALYSIS MODE. Gather context before diving deep:\n\nCONTEXT GATHERING (parallel):\n- 1-2 explore agents (codebase patterns, implementations)\n- 1-2 librarian agents (if external library involved)\n- Direct tools: Grep, AST-grep, LSP for targeted searches\n\nIF COMPLEX - DO NOT STRUGGLE ALONE. Consult specialists:\n- **Oracle**: Conventional problems (architecture, debugging, complex logic)\n- **Artistry**: Non-conventional problems (different approach needed)\n\nSYNTHESIZE findings before proceeding.";
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
* - Vietnamese: tìm kiếm, tra cứu, định vị, quét, phát hiện, truy tìm, tìm ra, ở đâu, liệt kê
|
|
10
10
|
*/
|
|
11
11
|
export declare const SEARCH_PATTERN: RegExp;
|
|
12
|
-
export declare const SEARCH_MESSAGE = "[search-mode]\
|
|
12
|
+
export declare const SEARCH_MESSAGE = "[search-mode]\nMAXIMIZE SEARCH EFFORT. Launch multiple background agents IN PARALLEL:\n- explore agents (codebase patterns, file structures, ast-grep)\n- librarian agents (remote repos, official docs, GitHub examples)\nPlus direct tools: Grep, ripgrep (rg), ast-grep (sg)\nNEVER stop at first result - be exhaustive.";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RuleScanCache } from "./rule-scan-cache";
|
|
1
2
|
export type SessionInjectedRulesCache = {
|
|
2
3
|
contentHashes: Set<string>;
|
|
3
4
|
realPaths: Set<string>;
|
|
@@ -6,3 +7,7 @@ export declare function createSessionCacheStore(): {
|
|
|
6
7
|
getSessionCache: (sessionID: string) => SessionInjectedRulesCache;
|
|
7
8
|
clearSessionCache: (sessionID: string) => void;
|
|
8
9
|
};
|
|
10
|
+
export declare function createSessionRuleScanCacheStore(): {
|
|
11
|
+
getSessionRuleScanCache: (sessionID: string) => RuleScanCache;
|
|
12
|
+
clearSessionRuleScanCache: (sessionID: string) => void;
|
|
13
|
+
};
|
|
@@ -4,6 +4,7 @@ import type { FindRuleFilesOptions } from "./rule-file-finder";
|
|
|
4
4
|
import { createContentHash, isDuplicateByContentHash, isDuplicateByRealPath, shouldApplyRule } from "./matcher";
|
|
5
5
|
import { saveInjectedRules } from "./storage";
|
|
6
6
|
import type { SessionInjectedRulesCache } from "./cache";
|
|
7
|
+
import type { RuleScanCache } from "./rule-scan-cache";
|
|
7
8
|
type ToolExecuteOutput = {
|
|
8
9
|
title: string;
|
|
9
10
|
output: string;
|
|
@@ -19,6 +20,7 @@ export declare function createRuleInjectionProcessor(deps: {
|
|
|
19
20
|
workspaceDirectory: string;
|
|
20
21
|
truncator: DynamicTruncator;
|
|
21
22
|
getSessionCache: (sessionID: string) => SessionInjectedRulesCache;
|
|
23
|
+
getSessionRuleScanCache?: (sessionID: string) => RuleScanCache;
|
|
22
24
|
ruleFinderOptions?: FindRuleFilesOptions;
|
|
23
25
|
readFileSync?: typeof readFileSync;
|
|
24
26
|
statSync?: typeof statSync;
|
|
@@ -1,23 +1,6 @@
|
|
|
1
|
+
import type { RuleScanCache } from "./rule-scan-cache";
|
|
1
2
|
import type { RuleFileCandidate } from "./types";
|
|
2
3
|
export interface FindRuleFilesOptions {
|
|
3
|
-
/**
|
|
4
|
-
* When true, skip loading rules from ~/.claude/rules/.
|
|
5
|
-
* Use when claude_code integration is disabled to prevent
|
|
6
|
-
* Claude Code-specific instructions from leaking into non-Claude agents.
|
|
7
|
-
*/
|
|
8
4
|
skipClaudeUserRules?: boolean;
|
|
9
5
|
}
|
|
10
|
-
|
|
11
|
-
* Find all rule files for a given context.
|
|
12
|
-
* Searches from currentFile upward to projectRoot for rule directories,
|
|
13
|
-
* then user-level directory (~/.claude/rules).
|
|
14
|
-
*
|
|
15
|
-
* IMPORTANT: This searches EVERY directory from file to project root.
|
|
16
|
-
* Not just the project root itself.
|
|
17
|
-
*
|
|
18
|
-
* @param projectRoot - Project root path (or null if outside any project)
|
|
19
|
-
* @param homeDir - User home directory
|
|
20
|
-
* @param currentFile - Current file being edited (for distance calculation)
|
|
21
|
-
* @returns Array of rule file candidates sorted by distance
|
|
22
|
-
*/
|
|
23
|
-
export declare function findRuleFiles(projectRoot: string | null, homeDir: string, currentFile: string, options?: FindRuleFilesOptions): RuleFileCandidate[];
|
|
6
|
+
export declare function findRuleFiles(projectRoot: string | null, homeDir: string, currentFile: string, options?: FindRuleFilesOptions, cache?: RuleScanCache): RuleFileCandidate[];
|
|
@@ -9,6 +9,7 @@ export interface ContinuationProgressUpdate {
|
|
|
9
9
|
export interface SessionStateStore {
|
|
10
10
|
getState: (sessionID: string) => SessionState;
|
|
11
11
|
getExistingState: (sessionID: string) => SessionState | undefined;
|
|
12
|
+
startPruneInterval: () => void;
|
|
12
13
|
recordActivity: (sessionID: string) => void;
|
|
13
14
|
trackContinuationProgress: (sessionID: string, incompleteCount: number, todos?: Todo[], options?: ContinuationProgressOptions) => ContinuationProgressUpdate;
|
|
14
15
|
resetContinuationProgress: (sessionID: string) => void;
|
|
@@ -10,6 +10,6 @@ export declare function handleWriteExistingFileGuardToolExecuteBefore(params: {
|
|
|
10
10
|
};
|
|
11
11
|
readPermissionsBySession: Map<string, Set<string>>;
|
|
12
12
|
sessionLastAccess: Map<string, number>;
|
|
13
|
-
|
|
13
|
+
getCanonicalSessionRoot: () => string;
|
|
14
14
|
maxTrackedSessions: number;
|
|
15
15
|
}): Promise<void>;
|