@skj1724/oh-my-opencode 3.18.4 → 3.18.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +2 -3
- package/dist/config/schema/commands.d.ts +0 -1
- package/dist/config/schema/oh-my-opencode-config.d.ts +0 -1
- package/dist/hooks/atlas/system-reminder-templates.d.ts +4 -4
- package/dist/hooks/compaction-context-injector/compaction-context-prompt.d.ts +1 -1
- package/dist/hooks/prometheus-md-only/constants.d.ts +2 -2
- package/dist/hooks/todo-continuation-enforcer/constants.d.ts +1 -1
- package/dist/index.js +309 -53
- package/dist/oh-my-opencode.schema.json +1 -2
- package/dist/shared/locales/zh-CN/system-directive.d.ts +5 -0
- package/dist/shared/system-directive.d.ts +2 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -53770,7 +53770,7 @@ var {
|
|
|
53770
53770
|
// package.json
|
|
53771
53771
|
var package_default = {
|
|
53772
53772
|
name: "@skj1724/oh-my-opencode",
|
|
53773
|
-
version: "3.18.
|
|
53773
|
+
version: "3.18.6",
|
|
53774
53774
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
53775
53775
|
main: "./dist/index.js",
|
|
53776
53776
|
types: "dist/index.d.ts",
|
|
@@ -74094,8 +74094,7 @@ var BuiltinCommandNameSchema = exports_external.enum([
|
|
|
74094
74094
|
"refactor",
|
|
74095
74095
|
"start-work",
|
|
74096
74096
|
"stop-continuation",
|
|
74097
|
-
"remove-ai-slops"
|
|
74098
|
-
"open-plan"
|
|
74097
|
+
"remove-ai-slops"
|
|
74099
74098
|
]);
|
|
74100
74099
|
// src/config/schema/dynamic-context-pruning.ts
|
|
74101
74100
|
var DynamicContextPruningConfigSchema = exports_external.object({
|
|
@@ -8,6 +8,5 @@ export declare const BuiltinCommandNameSchema: z.ZodEnum<{
|
|
|
8
8
|
"start-work": "start-work";
|
|
9
9
|
"stop-continuation": "stop-continuation";
|
|
10
10
|
"remove-ai-slops": "remove-ai-slops";
|
|
11
|
-
"open-plan": "open-plan";
|
|
12
11
|
}>;
|
|
13
12
|
export type BuiltinCommandName = z.infer<typeof BuiltinCommandNameSchema>;
|
|
@@ -25,7 +25,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
|
|
|
25
25
|
"start-work": "start-work";
|
|
26
26
|
"stop-continuation": "stop-continuation";
|
|
27
27
|
"remove-ai-slops": "remove-ai-slops";
|
|
28
|
-
"open-plan": "open-plan";
|
|
29
28
|
}>>>;
|
|
30
29
|
disabled_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
31
30
|
mcp_env_allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare
|
|
1
|
+
export declare function getDirectWorkReminder(locale?: string): string;
|
|
2
|
+
export declare function getBoulderContinuationPrompt(locale?: string): string;
|
|
3
3
|
export declare const VERIFICATION_REMINDER = "**THE SUBAGENT JUST CLAIMED THIS TASK IS DONE. THEY ARE PROBABLY LYING.**\n\nSubagents say \"done\" when code has errors, tests pass trivially, logic is wrong,\nor they quietly added features nobody asked for. This happens EVERY TIME.\nAssume the work is broken until YOU prove otherwise.\n\n---\n\n**PHASE 1: READ THE CODE FIRST (before running anything)**\n\nDo NOT run tests yet. Read the code FIRST so you know what you're testing.\n\n1. `Bash(\"git diff --stat -- ':!node_modules'\")` - see exactly which files changed. Any file outside expected scope = scope creep.\n2. `Read` EVERY changed file - no exceptions, no skimming.\n3. For EACH file, critically ask:\n - Does this code ACTUALLY do what the task required? (Re-read the task, compare line by line)\n - Any stubs, TODOs, placeholders, hardcoded values? (`Grep` for TODO, FIXME, HACK, xxx)\n - Logic errors? Trace the happy path AND the error path in your head.\n - Anti-patterns? (`Grep` for `as any`, `@ts-ignore`, empty catch, console.log in changed files)\n - Scope creep? Did the subagent touch things or add features NOT in the task spec?\n4. Cross-check every claim:\n - Said \"Updated X\" - READ X. Actually updated, or just superficially touched?\n - Said \"Added tests\" - READ the tests. Do they test REAL behavior or just `expect(true).toBe(true)`?\n - Said \"Follows patterns\" - OPEN a reference file. Does it ACTUALLY match?\n\n**If you cannot explain what every changed line does, you have NOT reviewed it.**\n\n**PHASE 2: RUN AUTOMATED CHECKS (targeted, then broad)**\n\nNow that you understand the code, verify mechanically:\n1. `lsp_diagnostics` on EACH changed file - ZERO new errors\n2. Run tests for changed modules FIRST, then full suite\n3. Build/typecheck - exit 0\n\nIf Phase 1 found issues but Phase 2 passes: Phase 2 is WRONG. The code has bugs that tests don't cover. Fix the code.\n\n**PHASE 3: HANDS-ON QA - ACTUALLY RUN IT (MANDATORY for user-facing changes)**\n\nTests and linters CANNOT catch: visual bugs, wrong CLI output, broken user flows, API response shape issues.\n\n**If this task produced anything a user would SEE or INTERACT with, you MUST launch it and verify yourself.**\n\n- **Frontend/UI**: `/playwright` skill - load the page, click through the flow, check console. Verify: page loads, interactions work, console clean, responsive.\n- **TUI/CLI**: `interactive_bash` - run the command, try good input, try bad input, try --help. Verify: command runs, output correct, error messages helpful, edge inputs handled.\n- **API/Backend**: `Bash` with curl - hit the endpoint, check response body, send malformed input. Verify: returns 200, body correct, error cases return proper errors.\n- **Config/Build**: Actually start the service or import the config. Verify: loads without error, backward compatible.\n\nThis is NOT optional \"if applicable\". If the deliverable is user-facing and you did not run it, you are shipping untested work.\n\n**PHASE 4: GATE DECISION - Should you proceed to the next task?**\n\nAnswer honestly:\n1. Can I explain what EVERY changed line does? (If no - back to Phase 1)\n2. Did I SEE it work with my own eyes? (If user-facing and no - back to Phase 3)\n3. Am I confident nothing existing is broken? (If no - run broader tests)\n\nALL three must be YES. \"Probably\" = NO. \"I think so\" = NO. Investigate until CERTAIN.\n\n- **All 3 YES** - Proceed: mark task complete, move to next.\n- **Any NO** - Reject: resume session with `session_id`, fix the specific issue.\n- **Unsure** - Reject: \"unsure\" = \"no\". Investigate until you have a definitive answer.\n\n**DO NOT proceed to the next task until all 4 phases are complete and the gate passes.**";
|
|
4
4
|
export declare const VERIFICATION_REMINDER_GEMINI = "**THE SUBAGENT HAS FINISHED. THEIR WORK IS EXTREMELY SUSPICIOUS.**\n\nThe subagent CLAIMS this task is done. Based on thousands of executions, subagent claims are FALSE more often than true.\nThey ROUTINELY:\n- Ship code with syntax errors they didn't bother to check\n- Create stub implementations with TODOs and call it \"done\"\n- Write tests that pass trivially (testing nothing meaningful)\n- Implement logic that does NOT match what was requested\n- Add features nobody asked for and call it \"improvement\"\n- Report \"all tests pass\" when they didn't run any tests\n\n**This is NOT a theoretical warning. This WILL happen on this task. Assume the work is BROKEN.**\n\n**YOU MUST VERIFY WITH ACTUAL TOOL CALLS. NOT REASONING. TOOL CALLS.**\nThinking \"it looks correct\" is NOT verification. Running `lsp_diagnostics` IS.\n\n---\n\n**PHASE 1: READ THE CODE FIRST (DO NOT SKIP - DO NOT RUN TESTS YET)**\n\nRead the code FIRST so you know what you're testing.\n\n1. `Bash(\"git diff --stat -- ':!node_modules'\")` - see exactly which files changed.\n2. `Read` EVERY changed file - no exceptions, no skimming.\n3. For EACH file:\n - Does this code ACTUALLY do what the task required? RE-READ the task spec.\n - Any stubs, TODOs, placeholders? `Grep` for TODO, FIXME, HACK, xxx\n - Anti-patterns? `Grep` for `as any`, `@ts-ignore`, empty catch\n - Scope creep? Did the subagent add things NOT in the task spec?\n4. Cross-check EVERY claim against actual code.\n\n**If you cannot explain what every changed line does, GO BACK AND READ AGAIN.**\n\n**PHASE 2: RUN AUTOMATED CHECKS**\n\n1. `lsp_diagnostics` on EACH changed file - ZERO new errors. ACTUALLY RUN THIS.\n2. Run tests for changed modules, then full suite. ACTUALLY RUN THESE.\n3. Build/typecheck - exit 0.\n\nIf Phase 1 found issues but Phase 2 passes: Phase 2 is WRONG. Fix the code.\n\n**PHASE 3: HANDS-ON QA (MANDATORY for user-facing changes)**\n\n- **Frontend/UI**: `/playwright`\n- **TUI/CLI**: `interactive_bash`\n- **API/Backend**: `Bash` with curl\n\n**If user-facing and you did not run it, you are shipping UNTESTED BROKEN work.**\n\n**PHASE 4: GATE DECISION**\n\n1. Can I explain what EVERY changed line does? (If no \u2192 Phase 1)\n2. Did I SEE it work via tool calls? (If user-facing and no \u2192 Phase 3)\n3. Am I confident nothing is broken? (If no \u2192 broader tests)\n\nALL three must be YES. \"Probably\" = NO. \"I think so\" = NO.\n\n**DO NOT proceed to the next task until all 4 phases are complete.**";
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
5
|
+
export declare function getOrchestratorDelegationRequired(locale?: string): string;
|
|
6
|
+
export declare function getSingleTaskDirective(locale?: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare function getCompactionContextPrompt(locale?: string): string;
|
|
@@ -3,5 +3,5 @@ export declare const PROMETHEUS_AGENT = "prometheus";
|
|
|
3
3
|
export declare const ALLOWED_EXTENSIONS: string[];
|
|
4
4
|
export declare const ALLOWED_PATH_PREFIX = ".sisyphus";
|
|
5
5
|
export declare const BLOCKED_TOOLS: string[];
|
|
6
|
-
export declare
|
|
7
|
-
export declare
|
|
6
|
+
export declare function getPlanningConsultWarning(locale?: string): string;
|
|
7
|
+
export declare function getPrometheusWorkflowReminder(locale?: string): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const HOOK_NAME = "todo-continuation-enforcer";
|
|
2
2
|
export declare const DEFAULT_SKIP_AGENTS: string[];
|
|
3
|
-
export declare
|
|
3
|
+
export declare function getContinuationPrompt(locale?: string): string;
|
|
4
4
|
export declare const COUNTDOWN_SECONDS = 2;
|
|
5
5
|
export declare const TOAST_DURATION_MS = 900;
|
|
6
6
|
export declare const COUNTDOWN_GRACE_PERIOD_MS = 500;
|
package/dist/index.js
CHANGED
|
@@ -19170,7 +19170,22 @@ function shellEscapeForDoubleQuotedCommand(value) {
|
|
|
19170
19170
|
// src/shared/system-directive.ts
|
|
19171
19171
|
var SYSTEM_DIRECTIVE_PREFIX = "[SYSTEM DIRECTIVE: OH-MY-OPENCODE";
|
|
19172
19172
|
var SYSTEM_DIRECTIVE_LEADING_KEYWORD_PATTERN = /^\s*(?:ultrawork|ulw)\s+/i;
|
|
19173
|
-
|
|
19173
|
+
var localeMap = {
|
|
19174
|
+
"zh-CN": {
|
|
19175
|
+
"TODO CONTINUATION": "[\u7CFB\u7EDF\u6307\u4EE4: \u5F85\u529E\u5EF6\u7EED]",
|
|
19176
|
+
"RALPH LOOP": "[\u7CFB\u7EDF\u6307\u4EE4: Ralph \u5FAA\u73AF]",
|
|
19177
|
+
"BOULDER CONTINUATION": "[\u7CFB\u7EDF\u6307\u4EE4: \u5DE8\u77F3\u5EF6\u7EED]",
|
|
19178
|
+
DELEGATION_REQUIRED: "[\u7CFB\u7EDF\u6307\u4EE4: \u9700\u8981\u59D4\u6258]",
|
|
19179
|
+
SINGLE_TASK_ONLY: "[\u7CFB\u7EDF\u6307\u4EE4: \u5355\u4EFB\u52A1\u6A21\u5F0F]",
|
|
19180
|
+
COMPACTION_CONTEXT: "[\u7CFB\u7EDF\u6307\u4EE4: \u538B\u7F29\u4E0A\u4E0B\u6587]",
|
|
19181
|
+
"CONTEXT WINDOW MONITOR": "[\u7CFB\u7EDF\u6307\u4EE4: \u4E0A\u4E0B\u6587\u7A97\u53E3\u76D1\u63A7]",
|
|
19182
|
+
"PROMETHEUS READ-ONLY": "[\u7CFB\u7EDF\u6307\u4EE4: Prometheus \u53EA\u8BFB]"
|
|
19183
|
+
}
|
|
19184
|
+
};
|
|
19185
|
+
function createSystemDirective(type2, locale) {
|
|
19186
|
+
if (locale && localeMap[locale]?.[type2]) {
|
|
19187
|
+
return localeMap[locale][type2];
|
|
19188
|
+
}
|
|
19174
19189
|
return `${SYSTEM_DIRECTIVE_PREFIX} - ${type2}]`;
|
|
19175
19190
|
}
|
|
19176
19191
|
function isSystemDirective(text) {
|
|
@@ -65761,14 +65776,26 @@ init_logger();
|
|
|
65761
65776
|
// src/hooks/todo-continuation-enforcer/constants.ts
|
|
65762
65777
|
var HOOK_NAME = "todo-continuation-enforcer";
|
|
65763
65778
|
var DEFAULT_SKIP_AGENTS = ["prometheus", "compaction", "plan"];
|
|
65764
|
-
var
|
|
65779
|
+
var continuationPromptLocaleMap = {
|
|
65780
|
+
"zh-CN": `\u672A\u5B8C\u6210\u7684\u4EFB\u52A1\u4ECD\u4FDD\u7559\u5728\u60A8\u7684\u5F85\u529E\u5217\u8868\u4E2D\u3002\u7EE7\u7EED\u5904\u7406\u4E0B\u4E00\u4E2A\u5F85\u529E\u4EFB\u52A1\u3002
|
|
65765
65781
|
|
|
65766
|
-
|
|
65782
|
+
- \u65E0\u9700\u8BF7\u6C42\u8BB8\u53EF\u5373\u53EF\u7EE7\u7EED
|
|
65783
|
+
- \u5B8C\u6210\u4EFB\u52A1\u540E\u6807\u8BB0\u4E3A\u5B8C\u6210
|
|
65784
|
+
- \u4E0D\u8981\u505C\u6B62\uFF0C\u76F4\u5230\u6240\u6709\u4EFB\u52A1\u5B8C\u6210
|
|
65785
|
+
- \u5982\u679C\u60A8\u8BA4\u4E3A\u6240\u6709\u5DE5\u4F5C\u5DF2\u7ECF\u5B8C\u6210\uFF0C\u7CFB\u7EDF\u4F1A\u5BF9\u60A8\u7684\u5B8C\u6210\u58F0\u660E\u63D0\u51FA\u8D28\u7591\u3002\u4ECE\u6000\u7591\u7684\u89D2\u5EA6\u91CD\u65B0\u5BA1\u89C6\u6BCF\u4E2A\u5F85\u529E\u4E8B\u9879\uFF0C\u9A8C\u8BC1\u5DE5\u4F5C\u662F\u5426\u786E\u5B9E\u6B63\u786E\u5B8C\u6210\uFF0C\u5E76\u76F8\u5E94\u66F4\u65B0\u5F85\u529E\u5217\u8868\u3002`
|
|
65786
|
+
};
|
|
65787
|
+
var continuationPromptFallback = `Incomplete tasks remain in your todo list. Continue working on the next pending task.
|
|
65767
65788
|
|
|
65768
65789
|
- Proceed without asking for permission
|
|
65769
65790
|
- Mark each task complete when finished
|
|
65770
65791
|
- Do not stop until all tasks are done
|
|
65771
65792
|
- If you believe all work is already complete, the system is questioning your completion claim. Critically re-examine each todo item from a skeptical perspective, verify the work was actually done correctly, and update the todo list accordingly.`;
|
|
65793
|
+
function getContinuationPrompt(locale) {
|
|
65794
|
+
const localizedPrompt = locale && continuationPromptLocaleMap[locale];
|
|
65795
|
+
return `${createSystemDirective(SystemDirectiveTypes.TODO_CONTINUATION, locale)}
|
|
65796
|
+
|
|
65797
|
+
${localizedPrompt ?? continuationPromptFallback}`;
|
|
65798
|
+
}
|
|
65772
65799
|
var COUNTDOWN_SECONDS = 2;
|
|
65773
65800
|
var TOAST_DURATION_MS = 900;
|
|
65774
65801
|
var COUNTDOWN_GRACE_PERIOD_MS = 500;
|
|
@@ -66294,7 +66321,7 @@ async function injectContinuation(args) {
|
|
|
66294
66321
|
const incompleteTodos = todos.filter((todo) => todo.status !== "completed" && todo.status !== "cancelled");
|
|
66295
66322
|
const todoList = incompleteTodos.map((todo) => `- [${todo.status}] ${todo.content}`).join(`
|
|
66296
66323
|
`);
|
|
66297
|
-
const prompt = `${
|
|
66324
|
+
const prompt = `${getContinuationPrompt()}
|
|
66298
66325
|
|
|
66299
66326
|
[Status: ${todos.length - freshIncompleteCount}/${todos.length} completed, ${freshIncompleteCount} remaining]
|
|
66300
66327
|
|
|
@@ -66976,13 +67003,20 @@ function createTodoContinuationEnforcer(ctx, options = {}) {
|
|
|
66976
67003
|
}
|
|
66977
67004
|
// src/hooks/context-window-monitor.ts
|
|
66978
67005
|
var CONTEXT_WARNING_THRESHOLD = 0.7;
|
|
66979
|
-
|
|
67006
|
+
var contextReminderLocaleMap = {
|
|
67007
|
+
"zh-CN": (limitTokens) => `\u60A8\u6B63\u5728\u4F7F\u7528 ${limitTokens}-token \u7684\u4E0A\u4E0B\u6587\u7A97\u53E3\u3002
|
|
67008
|
+
\u60A8\u4ECD\u6709\u5269\u4F59\u4E0A\u4E0B\u6587 - \u4E0D\u8981\u6025\u4E8E\u6216\u8DF3\u8FC7\u4EFB\u52A1\u3002
|
|
67009
|
+
\u5F7B\u5E95\u4E14\u6709\u6761\u4E0D\u7D0A\u5730\u5B8C\u6210\u60A8\u7684\u5DE5\u4F5C\u3002`
|
|
67010
|
+
};
|
|
67011
|
+
function createContextReminder(actualLimit, locale) {
|
|
66980
67012
|
const limitTokens = actualLimit.toLocaleString();
|
|
66981
|
-
|
|
66982
|
-
|
|
66983
|
-
You are using a ${limitTokens}-token context window.
|
|
67013
|
+
const localizedReminder = locale && contextReminderLocaleMap[locale];
|
|
67014
|
+
const reminderText = localizedReminder ? localizedReminder(limitTokens) : `You are using a ${limitTokens}-token context window.
|
|
66984
67015
|
You still have context remaining - do NOT rush or skip tasks.
|
|
66985
67016
|
Complete your work thoroughly and methodically.`;
|
|
67017
|
+
return `${createSystemDirective(SystemDirectiveTypes.CONTEXT_WINDOW_MONITOR, locale)}
|
|
67018
|
+
|
|
67019
|
+
${reminderText}`;
|
|
66986
67020
|
}
|
|
66987
67021
|
function createContextWindowMonitorHook(_ctx, modelCacheState) {
|
|
66988
67022
|
const remindedSessions = new Set;
|
|
@@ -76927,7 +76961,7 @@ init_logger();
|
|
|
76927
76961
|
function getMaxIterationsLabel(state3) {
|
|
76928
76962
|
return typeof state3.max_iterations === "number" ? String(state3.max_iterations) : "unbounded";
|
|
76929
76963
|
}
|
|
76930
|
-
var
|
|
76964
|
+
var CONTINUATION_PROMPT = `${SYSTEM_DIRECTIVE_PREFIX} - RALPH LOOP {{ITERATION}}/{{MAX}}]
|
|
76931
76965
|
|
|
76932
76966
|
Your previous attempt did not output the completion promise. Continue working on the task.
|
|
76933
76967
|
|
|
@@ -76968,7 +77002,7 @@ REQUIRED NOW:
|
|
|
76968
77002
|
Original task:
|
|
76969
77003
|
{{PROMPT}}`;
|
|
76970
77004
|
function buildContinuationPrompt(state3) {
|
|
76971
|
-
const template = state3.verification_pending ? ULTRAWORK_VERIFICATION_PROMPT :
|
|
77005
|
+
const template = state3.verification_pending ? ULTRAWORK_VERIFICATION_PROMPT : CONTINUATION_PROMPT;
|
|
76972
77006
|
const continuationPrompt = template.replace("{{ITERATION}}", String(state3.iteration)).replace("{{MAX}}", getMaxIterationsLabel(state3)).replace("{{INITIAL_PROMISE}}", state3.initial_completion_promise ?? state3.completion_promise).replace("{{PROMISE}}", state3.completion_promise).replace("{{PROMPT}}", state3.prompt);
|
|
76973
77007
|
return state3.ultrawork ? `ultrawork ${continuationPrompt}` : continuationPrompt;
|
|
76974
77008
|
}
|
|
@@ -81749,8 +81783,7 @@ var BuiltinCommandNameSchema = z12.enum([
|
|
|
81749
81783
|
"refactor",
|
|
81750
81784
|
"start-work",
|
|
81751
81785
|
"stop-continuation",
|
|
81752
|
-
"remove-ai-slops"
|
|
81753
|
-
"open-plan"
|
|
81786
|
+
"remove-ai-slops"
|
|
81754
81787
|
]);
|
|
81755
81788
|
// src/config/schema/dynamic-context-pruning.ts
|
|
81756
81789
|
import { z as z13 } from "zod";
|
|
@@ -84450,13 +84483,63 @@ var HOOK_NAME4 = "prometheus-md-only";
|
|
|
84450
84483
|
var PROMETHEUS_AGENT = "prometheus";
|
|
84451
84484
|
var ALLOWED_EXTENSIONS = [".md"];
|
|
84452
84485
|
var BLOCKED_TOOLS = ["Write", "Edit", "write", "edit"];
|
|
84453
|
-
var
|
|
84486
|
+
var planningConsultWarningLocaleMap = {
|
|
84487
|
+
"zh-CN": `\u60A8\u6B63\u5728\u88AB ${getAgentDisplayName("prometheus")} \u8C03\u7528\uFF0C\u8FD9\u662F\u4E00\u4E2A\u4EC5\u9650\u4E8E .sisyphus/*.md \u8BA1\u5212\u6587\u4EF6\u7684\u89C4\u5212\u4EE3\u7406\u3002
|
|
84488
|
+
|
|
84489
|
+
**\u5173\u952E\u7EA6\u675F\uFF1A**
|
|
84490
|
+
- \u4E0D\u8981\u4FEE\u6539\u4EFB\u4F55\u6587\u4EF6\uFF08\u4E0D\u8981 Write\u3001Edit \u6216\u4EFB\u4F55\u6587\u4EF6\u53D8\u66F4\uFF09
|
|
84491
|
+
- \u4E0D\u8981\u6267\u884C\u6539\u53D8\u7CFB\u7EDF\u72B6\u6001\u7684\u547D\u4EE4
|
|
84492
|
+
- \u4E0D\u8981\u521B\u5EFA\u3001\u5220\u9664\u6216\u91CD\u547D\u540D\u6587\u4EF6
|
|
84493
|
+
- \u4EC5\u63D0\u4F9B\u5206\u6790\u3001\u5EFA\u8BAE\u548C\u4FE1\u606F
|
|
84494
|
+
|
|
84495
|
+
**\u60A8\u7684\u89D2\u8272**\uFF1A\u63D0\u4F9B\u54A8\u8BE2\u3001\u7814\u7A76\u548C\u5206\u6790\u4EE5\u534F\u52A9\u89C4\u5212\u3002
|
|
84496
|
+
\u8FD4\u56DE\u60A8\u7684\u53D1\u73B0\u548C\u5EFA\u8BAE\u3002\u5B9E\u9645\u5B9E\u65BD\u5C06\u5728\u89C4\u5212\u5B8C\u6210\u540E\u5355\u72EC\u5904\u7406\u3002`
|
|
84497
|
+
};
|
|
84498
|
+
var prometheusWorkflowReminderLocaleMap = {
|
|
84499
|
+
"zh-CN": `## PROMETHEUS \u5F3A\u5236\u5DE5\u4F5C\u6D41\u7A0B\u63D0\u9192
|
|
84500
|
+
|
|
84501
|
+
**\u60A8\u6B63\u5728\u7F16\u5199\u5DE5\u4F5C\u8BA1\u5212\u3002\u505C\u6B62\u5E76\u9A8C\u8BC1\u60A8\u5B8C\u6210\u4E86\u6240\u6709\u6B65\u9AA4\uFF1A**
|
|
84502
|
+
|
|
84503
|
+
\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
|
|
84504
|
+
\u2502 PROMETHEUS \u5DE5\u4F5C\u6D41\u7A0B \u2502
|
|
84505
|
+
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84506
|
+
\u2502 1 \u2502 \u8BBF\u8C08\uFF1A\u4E0E\u7528\u6237\u5168\u9762\u534F\u5546 \u2502
|
|
84507
|
+
\u2502 \u2502 - \u6536\u96C6\u6240\u6709\u9700\u6C42 \u2502
|
|
84508
|
+
\u2502 \u2502 - \u6F84\u6E05\u6A21\u7CCA\u4E4B\u5904 \u2502
|
|
84509
|
+
\u2502 \u2502 - \u5C06\u51B3\u7B56\u8BB0\u5F55\u5230 .sisyphus/drafts/ \u2502
|
|
84510
|
+
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84511
|
+
\u2502 2 \u2502 METIS \u54A8\u8BE2\uFF1A\u9884\u751F\u6210\u5DEE\u8DDD\u5206\u6790 \u2502
|
|
84512
|
+
\u2502 \u2502 - task(agent="Metis - \u8BA1\u5212\u987E\u95EE", ...) \u2502
|
|
84513
|
+
\u2502 \u2502 - \u8BC6\u522B\u9057\u6F0F\u7684\u95EE\u9898\u3001\u62A4\u680F\u3001\u5047\u8BBE \u2502
|
|
84514
|
+
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84515
|
+
\u2502 3 \u2502 \u8BA1\u5212\u751F\u6210\uFF1A\u5199\u5165 .sisyphus/plans/*.md \u2502
|
|
84516
|
+
\u2502 \u2502 <- \u60A8\u5728\u8FD9\u91CC \u2502
|
|
84517
|
+
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84518
|
+
\u2502 4 \u2502 MOMUS \u8BC4\u5BA1\uFF08\u5982\u8BF7\u6C42\u9AD8\u7CBE\u5EA6\uFF09 \u2502
|
|
84519
|
+
\u2502 \u2502 - task(agent="Momus - \u8BA1\u5212\u8BC4\u8BBA\u5458", ...) \u2502
|
|
84520
|
+
\u2502 \u2502 - \u5FAA\u73AF\u76F4\u5230\u83B7\u5F97 OKAY \u88C1\u51B3 \u2502
|
|
84521
|
+
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84522
|
+
\u2502 5 \u2502 \u603B\u7ED3\uFF1A\u5448\u73B0\u7ED9\u7528\u6237 \u2502
|
|
84523
|
+
\u2502 \u2502 - \u505A\u51FA\u7684\u5173\u952E\u51B3\u7B56 \u2502
|
|
84524
|
+
\u2502 \u2502 - \u8303\u56F4 \u5185/\u5916 \u2502
|
|
84525
|
+
\u2502 \u2502 - \u63D0\u4F9B\uFF1A"\u5F00\u59CB\u5DE5\u4F5C" vs "\u9AD8\u7CBE\u5EA6\u8BC4\u5BA1" \u2502
|
|
84526
|
+
\u2502 \u2502 - \u5F15\u5BFC\u81F3 /start-work \u2502
|
|
84527
|
+
\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
|
|
84528
|
+
|
|
84529
|
+
**\u60A8\u5728\u7F16\u5199\u6B64\u8BA1\u5212\u4E4B\u524D\u662F\u5426\u5B8C\u6210\u4E86\u6B65\u9AA4 1-2\uFF1F**
|
|
84530
|
+
**\u7F16\u5199\u4E4B\u540E\uFF0C\u60A8\u4F1A\u6267\u884C\u6B65\u9AA4 4-5 \u5417\uFF1F**
|
|
84531
|
+
|
|
84532
|
+
\u5982\u679C\u60A8\u8DF3\u8FC7\u4E86\u6B65\u9AA4\uFF0C\u73B0\u5728\u505C\u6B62\u3002\u56DE\u53BB\u5B8C\u6210\u5B83\u4EEC\u3002`
|
|
84533
|
+
};
|
|
84534
|
+
function getPlanningConsultWarning(locale) {
|
|
84535
|
+
const localizedWarning = locale && planningConsultWarningLocaleMap[locale];
|
|
84536
|
+
return `
|
|
84454
84537
|
|
|
84455
84538
|
---
|
|
84456
84539
|
|
|
84457
|
-
${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY)}
|
|
84540
|
+
${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY, locale)}
|
|
84458
84541
|
|
|
84459
|
-
You are being invoked by ${getAgentDisplayName("prometheus")}, a planning agent restricted to .sisyphus/*.md plan files only.
|
|
84542
|
+
${localizedWarning ?? `You are being invoked by ${getAgentDisplayName("prometheus")}, a planning agent restricted to .sisyphus/*.md plan files only.
|
|
84460
84543
|
|
|
84461
84544
|
**CRITICAL CONSTRAINTS:**
|
|
84462
84545
|
- DO NOT modify any files (no Write, Edit, or any file mutations)
|
|
@@ -84465,28 +84548,31 @@ You are being invoked by ${getAgentDisplayName("prometheus")}, a planning agent
|
|
|
84465
84548
|
- ONLY provide analysis, recommendations, and information
|
|
84466
84549
|
|
|
84467
84550
|
**YOUR ROLE**: Provide consultation, research, and analysis to assist with planning.
|
|
84468
|
-
Return your findings and recommendations. The actual implementation will be handled separately after planning is complete
|
|
84551
|
+
Return your findings and recommendations. The actual implementation will be handled separately after planning is complete.`}
|
|
84469
84552
|
|
|
84470
84553
|
---
|
|
84471
84554
|
|
|
84472
84555
|
`;
|
|
84473
|
-
|
|
84556
|
+
}
|
|
84557
|
+
function getPrometheusWorkflowReminder(locale) {
|
|
84558
|
+
const localizedReminder = locale && prometheusWorkflowReminderLocaleMap[locale];
|
|
84559
|
+
return `
|
|
84474
84560
|
|
|
84475
84561
|
---
|
|
84476
84562
|
|
|
84477
|
-
${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY)}
|
|
84563
|
+
${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY, locale)}
|
|
84478
84564
|
|
|
84479
|
-
|
|
84565
|
+
${localizedReminder ?? `## PROMETHEUS MANDATORY WORKFLOW REMINDER
|
|
84480
84566
|
|
|
84481
84567
|
**You are writing a work plan. STOP AND VERIFY you completed ALL steps:**
|
|
84482
84568
|
|
|
84483
84569
|
\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
|
|
84484
84570
|
\u2502 PROMETHEUS WORKFLOW \u2502
|
|
84485
84571
|
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84486
|
-
\u2502 1 \u2502 INTERVIEW: Full consultation with user
|
|
84572
|
+
\u2502 1 \u2502 INTERVIEW: Full consultation with user \u2502
|
|
84487
84573
|
\u2502 \u2502 - Gather ALL requirements \u2502
|
|
84488
84574
|
\u2502 \u2502 - Clarify ambiguities \u2502
|
|
84489
|
-
\u2502 \u2502 - Record decisions to .sisyphus/drafts/
|
|
84575
|
+
\u2502 \u2502 - Record decisions to .sisyphus/drafts/ \u2502
|
|
84490
84576
|
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84491
84577
|
\u2502 2 \u2502 METIS CONSULTATION: Pre-generation gap analysis \u2502
|
|
84492
84578
|
\u2502 \u2502 - task(agent="Metis - Plan Consultant", ...) \u2502
|
|
@@ -84501,7 +84587,7 @@ ${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY)}
|
|
|
84501
84587
|
\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524
|
|
84502
84588
|
\u2502 5 \u2502 SUMMARY: Present to user \u2502
|
|
84503
84589
|
\u2502 \u2502 - Key decisions made \u2502
|
|
84504
|
-
\u2502 \u2502 - Scope IN/OUT
|
|
84590
|
+
\u2502 \u2502 - Scope IN/OUT \u2502
|
|
84505
84591
|
\u2502 \u2502 - Offer: "Start Work" vs "High Accuracy Review" \u2502
|
|
84506
84592
|
\u2502 \u2502 - Guide to /start-work \u2502
|
|
84507
84593
|
\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
|
|
@@ -84509,11 +84595,12 @@ ${createSystemDirective(SystemDirectiveTypes.PROMETHEUS_READ_ONLY)}
|
|
|
84509
84595
|
**DID YOU COMPLETE STEPS 1-2 BEFORE WRITING THIS PLAN?**
|
|
84510
84596
|
**AFTER WRITING, WILL YOU DO STEPS 4-5?**
|
|
84511
84597
|
|
|
84512
|
-
If you skipped steps, STOP NOW. Go back and complete them
|
|
84598
|
+
If you skipped steps, STOP NOW. Go back and complete them.`}
|
|
84513
84599
|
|
|
84514
84600
|
---
|
|
84515
84601
|
|
|
84516
84602
|
`;
|
|
84603
|
+
}
|
|
84517
84604
|
// src/hooks/prometheus-md-only/hook.ts
|
|
84518
84605
|
init_logger();
|
|
84519
84606
|
// src/features/boulder-state/constants.ts
|
|
@@ -84877,7 +84964,7 @@ function createPrometheusMdOnlyHook(ctx) {
|
|
|
84877
84964
|
if (TASK_TOOLS.includes(toolName)) {
|
|
84878
84965
|
const prompt = output.args.prompt;
|
|
84879
84966
|
if (prompt && !prompt.includes(SYSTEM_DIRECTIVE_PREFIX)) {
|
|
84880
|
-
output.args.prompt =
|
|
84967
|
+
output.args.prompt = getPlanningConsultWarning() + prompt;
|
|
84881
84968
|
log(`[${HOOK_NAME4}] Injected planning warning to ${toolName}`, {
|
|
84882
84969
|
sessionID: input.sessionID,
|
|
84883
84970
|
tool: toolName,
|
|
@@ -84910,7 +84997,7 @@ function createPrometheusMdOnlyHook(ctx) {
|
|
|
84910
84997
|
filePath,
|
|
84911
84998
|
agent: agentName
|
|
84912
84999
|
});
|
|
84913
|
-
output.message = (output.message || "") +
|
|
85000
|
+
output.message = (output.message || "") + getPrometheusWorkflowReminder();
|
|
84914
85001
|
}
|
|
84915
85002
|
log(`[${HOOK_NAME4}] Allowed: .sisyphus/*.md write permitted`, {
|
|
84916
85003
|
sessionID: input.sessionID,
|
|
@@ -85489,13 +85576,45 @@ init_logger();
|
|
|
85489
85576
|
init_logger();
|
|
85490
85577
|
|
|
85491
85578
|
// src/hooks/atlas/system-reminder-templates.ts
|
|
85492
|
-
var
|
|
85579
|
+
var directWorkReminderLocaleMap = {
|
|
85580
|
+
"zh-CN": `\u60A8\u521A\u521A\u5728 \`.sisyphus/\` \u5916\u90E8\u6267\u884C\u4E86\u76F4\u63A5\u6587\u4EF6\u4FEE\u6539\u3002
|
|
85581
|
+
|
|
85582
|
+
**\u60A8\u662F\u534F\u8C03\u8005\uFF0C\u4E0D\u662F\u5B9E\u73B0\u8005\u3002**
|
|
85583
|
+
|
|
85584
|
+
\u4F5C\u4E3A\u534F\u8C03\u8005\uFF0C\u60A8\u5E94\u8BE5\uFF1A
|
|
85585
|
+
- \u901A\u8FC7 \`task\` \u5C06\u5B9E\u65BD\u5DE5\u4F5C\u59D4\u6258\u7ED9\u5B50\u4EE3\u7406
|
|
85586
|
+
- \u9A8C\u8BC1\u5B50\u4EE3\u7406\u5B8C\u6210\u7684\u5DE5\u4F5C
|
|
85587
|
+
- \u534F\u8C03\u591A\u4E2A\u4EFB\u52A1\u5E76\u786E\u4FDD\u5B8C\u6210
|
|
85588
|
+
|
|
85589
|
+
\u60A8\u4E0D\u5E94\u8BE5\uFF1A
|
|
85590
|
+
- \u76F4\u63A5\u7F16\u5199\u4EE3\u7801\uFF08\`.sisyphus/\` \u6587\u4EF6\u5982\u8BA1\u5212\u548C\u5927\u7EB2\u9664\u5916\uFF09
|
|
85591
|
+
- \u5728 \`.sisyphus/\` \u5916\u90E8\u8FDB\u884C\u76F4\u63A5\u6587\u4EF6\u7F16\u8F91
|
|
85592
|
+
- \u81EA\u5DF1\u5B9E\u73B0\u529F\u80FD
|
|
85593
|
+
|
|
85594
|
+
**\u5982\u679C\u60A8\u9700\u8981\u8FDB\u884C\u66F4\u6539\uFF1A**
|
|
85595
|
+
1. \u4F7F\u7528 \`task\` \u59D4\u6258\u7ED9\u9002\u5F53\u7684\u5B50\u4EE3\u7406
|
|
85596
|
+
2. \u5728\u63D0\u793A\u4E2D\u63D0\u4F9B\u6E05\u6670\u7684\u8BF4\u660E
|
|
85597
|
+
3. \u5B8C\u6210\u540E\u9A8C\u8BC1\u5B50\u4EE3\u7406\u7684\u5DE5\u4F5C`
|
|
85598
|
+
};
|
|
85599
|
+
var boulderContinuationPromptLocaleMap = {
|
|
85600
|
+
"zh-CN": `\u60A8\u6709\u4E00\u4E2A\u5305\u542B\u672A\u5B8C\u6210\u4EFB\u52A1\u7684 active \u5DE5\u4F5C\u8BA1\u5212\u3002\u7EE7\u7EED\u5DE5\u4F5C\u3002
|
|
85601
|
+
|
|
85602
|
+
\u89C4\u5219\uFF1A
|
|
85603
|
+
- **\u9996\u5148**\uFF1A\u7ACB\u5373\u9605\u8BFB\u8BA1\u5212\u6587\u4EF6\u3002\u5982\u679C\u6700\u540E\u4E00\u4E2A\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u4ECD\u672A\u52FE\u9009\uFF0C\u5728\u6267\u884C\u4EFB\u4F55\u5176\u4ED6\u64CD\u4F5C\u4E4B\u524D\u7ACB\u5373\u5C06\u5176\u6807\u8BB0\u4E3A \`- [x]\`
|
|
85604
|
+
- \u65E0\u9700\u8BF7\u6C42\u8BB8\u53EF\u5373\u53EF\u7EE7\u7EED
|
|
85605
|
+
- \u4F7F\u7528 .sisyphus/notepads/{PLAN_NAME}/ \u4E2D\u7684\u5927\u7EB2\u8BB0\u5F55\u5B66\u4E60\u5185\u5BB9
|
|
85606
|
+
- \u4E0D\u8981\u505C\u6B62\uFF0C\u76F4\u5230\u6240\u6709\u4EFB\u52A1\u5B8C\u6210
|
|
85607
|
+
- \u5982\u679C\u88AB\u963B\u6B62\uFF0C\u8BB0\u5F55\u963B\u788D\u56E0\u7D20\u5E76\u8F6C\u5230\u4E0B\u4E00\u4E2A\u4EFB\u52A1`
|
|
85608
|
+
};
|
|
85609
|
+
function getDirectWorkReminder(locale) {
|
|
85610
|
+
const localizedReminder = locale && directWorkReminderLocaleMap[locale];
|
|
85611
|
+
return `
|
|
85493
85612
|
|
|
85494
85613
|
---
|
|
85495
85614
|
|
|
85496
|
-
${createSystemDirective(SystemDirectiveTypes.DELEGATION_REQUIRED)}
|
|
85615
|
+
${createSystemDirective(SystemDirectiveTypes.DELEGATION_REQUIRED, locale)}
|
|
85497
85616
|
|
|
85498
|
-
You just performed direct file modifications outside \`.sisyphus/\`.
|
|
85617
|
+
${localizedReminder ?? `You just performed direct file modifications outside \`.sisyphus/\`.
|
|
85499
85618
|
|
|
85500
85619
|
**You are an ORCHESTRATOR, not an IMPLEMENTER.**
|
|
85501
85620
|
|
|
@@ -85512,20 +85631,24 @@ You should NOT:
|
|
|
85512
85631
|
**If you need to make changes:**
|
|
85513
85632
|
1. Use \`task\` to delegate to an appropriate subagent
|
|
85514
85633
|
2. Provide clear instructions in the prompt
|
|
85515
|
-
3. Verify the subagent's work after completion
|
|
85634
|
+
3. Verify the subagent's work after completion`}
|
|
85516
85635
|
|
|
85517
85636
|
---
|
|
85518
85637
|
`;
|
|
85519
|
-
|
|
85638
|
+
}
|
|
85639
|
+
function getBoulderContinuationPrompt(locale) {
|
|
85640
|
+
const localizedPrompt = locale && boulderContinuationPromptLocaleMap[locale];
|
|
85641
|
+
return `${createSystemDirective(SystemDirectiveTypes.BOULDER_CONTINUATION, locale)}
|
|
85520
85642
|
|
|
85521
|
-
You have an active work plan with incomplete tasks. Continue working.
|
|
85643
|
+
${localizedPrompt ?? `You have an active work plan with incomplete tasks. Continue working.
|
|
85522
85644
|
|
|
85523
85645
|
RULES:
|
|
85524
85646
|
- **FIRST**: Read the plan file NOW. If the last completed task is still unchecked, mark it \`- [x]\` IMMEDIATELY before anything else
|
|
85525
85647
|
- Proceed without asking for permission
|
|
85526
85648
|
- Use the notepad at .sisyphus/notepads/{PLAN_NAME}/ to record learnings
|
|
85527
85649
|
- Do not stop until all tasks are complete
|
|
85528
|
-
- If blocked, document the blocker and move to the next task`;
|
|
85650
|
+
- If blocked, document the blocker and move to the next task`}`;
|
|
85651
|
+
}
|
|
85529
85652
|
var VERIFICATION_REMINDER = `**THE SUBAGENT JUST CLAIMED THIS TASK IS DONE. THEY ARE PROBABLY LYING.**
|
|
85530
85653
|
|
|
85531
85654
|
Subagents say "done" when code has errors, tests pass trivially, logic is wrong,
|
|
@@ -85589,19 +85712,95 @@ ALL three must be YES. "Probably" = NO. "I think so" = NO. Investigate until CER
|
|
|
85589
85712
|
- **Unsure** - Reject: "unsure" = "no". Investigate until you have a definitive answer.
|
|
85590
85713
|
|
|
85591
85714
|
**DO NOT proceed to the next task until all 4 phases are complete and the gate passes.**`;
|
|
85592
|
-
var
|
|
85715
|
+
var orchestratorDelegationRequiredLocaleMap = {
|
|
85716
|
+
"zh-CN": `**\u505C\u6B62\u3002\u60A8\u8FDD\u53CD\u4E86\u534F\u8C03\u8005\u534F\u8BAE\u3002**
|
|
85717
|
+
|
|
85718
|
+
\u60A8\uFF08Atlas\uFF09\u8BD5\u56FE\u76F4\u63A5\u4FEE\u6539 \`.sisyphus/\` \u5916\u90E8\u7684\u6587\u4EF6\u3002
|
|
85719
|
+
|
|
85720
|
+
**\u5C1D\u8BD5\u7684\u8DEF\u5F84\uFF1A** $FILE_PATH
|
|
85721
|
+
|
|
85722
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
85723
|
+
|
|
85724
|
+
**\u8FD9\u662F\u7981\u6B62\u7684**\uFF08\u9A8C\u8BC1\u76EE\u7684\u9664\u5916\uFF09
|
|
85725
|
+
|
|
85726
|
+
\u4F5C\u4E3A\u534F\u8C03\u8005\uFF0C\u60A8\u5FC5\u987B\uFF1A
|
|
85727
|
+
1. \u901A\u8FC7 \`task\` \u59D4\u6258\u6240\u6709\u5B9E\u65BD\u5DE5\u4F5C
|
|
85728
|
+
2. \u9A8C\u8BC1\u5B50\u4EE3\u7406\u5B8C\u6210\u7684\u5DE5\u4F5C\uFF08\u9605\u8BFB\u6587\u4EF6\u662F\u53EF\u4EE5\u7684\uFF09
|
|
85729
|
+
3. \u534F\u8C03 - \u60A8\u534F\u8C03\uFF0C\u800C\u4E0D\u662F\u5B9E\u73B0
|
|
85730
|
+
|
|
85731
|
+
**\u5141\u8BB8\u7684\u76F4\u63A5\u6587\u4EF6\u64CD\u4F5C\uFF1A**
|
|
85732
|
+
- \`.sisyphus/\` \u5185\u7684\u6587\u4EF6\uFF08\u8BA1\u5212\u3001\u5927\u7EB2\u3001\u8349\u7A3F\uFF09
|
|
85733
|
+
- \u4E3A\u9A8C\u8BC1\u800C\u9605\u8BFB\u6587\u4EF6
|
|
85734
|
+
- \u8FD0\u884C\u8BCA\u65AD/\u6D4B\u8BD5
|
|
85735
|
+
|
|
85736
|
+
**\u7981\u6B62\u7684\u76F4\u63A5\u6587\u4EF6\u64CD\u4F5C\uFF1A**
|
|
85737
|
+
- \u7F16\u5199/\u7F16\u8F91\u6E90\u4EE3\u7801
|
|
85738
|
+
- \u5728 \`.sisyphus/\` \u5916\u90E8\u521B\u5EFA\u65B0\u6587\u4EF6
|
|
85739
|
+
- \u4EFB\u4F55\u5B9E\u65BD\u5DE5\u4F5C
|
|
85740
|
+
|
|
85741
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
85742
|
+
|
|
85743
|
+
**\u5982\u679C\u8FD9\u662F\u4E3A\u4E86\u9A8C\u8BC1\uFF1A**
|
|
85744
|
+
\u5982\u679C\u4F60\u662F\u901A\u8FC7\u8FDB\u884C\u5C0F\u7684\u4FEE\u590D\u6765\u9A8C\u8BC1\u5B50\u4EE3\u7406\u7684\u5DE5\u4F5C\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u3002
|
|
85745
|
+
\u4F46\u5BF9\u4E8E\u4EFB\u4F55\u91CD\u5927\u66F4\u6539\uFF0C\u8BF7\u4F7F\u7528 \`task\`\u3002
|
|
85746
|
+
|
|
85747
|
+
**\u6B63\u786E\u7684\u65B9\u6CD5\uFF1A**
|
|
85748
|
+
\`\`\`
|
|
85749
|
+
task(
|
|
85750
|
+
category="...",
|
|
85751
|
+
load_skills=[],
|
|
85752
|
+
prompt="[\u5177\u6709\u660E\u786E\u9A8C\u6536\u6807\u51C6\u7684\u7279\u5B9A\u5355\u4E00\u4EFB\u52A1]"
|
|
85753
|
+
)
|
|
85754
|
+
\`\`\`
|
|
85755
|
+
|
|
85756
|
+
\u59D4\u6258\u3002\u4E0D\u8981\u5B9E\u73B0\u3002`
|
|
85757
|
+
};
|
|
85758
|
+
var singleTaskDirectiveLocaleMap = {
|
|
85759
|
+
"zh-CN": `**\u505C\u6B62\u3002\u5728\u7EE7\u7EED\u4E4B\u524D\u9605\u8BFB\u672C\u6587\u3002**
|
|
85760
|
+
|
|
85761
|
+
\u5982\u679C\u60A8\u88AB\u7ED9\u4E88\u4E86**\u591A\u4E2A\u771F\u6B63\u72EC\u7ACB\u7684\u76EE\u6807**\uFF08\u4E0D\u76F8\u5173\u7684\u4EFB\u52A1\u3001\u5E76\u884C\u5DE5\u4F5C\u6D41\u3001\u72EC\u7ACB\u7684\u529F\u80FD\uFF09\uFF0C\u60A8\u5FC5\u987B\uFF1A
|
|
85762
|
+
1. **\u7ACB\u5373\u62D2\u7EDD**\u6B64\u8BF7\u6C42
|
|
85763
|
+
2. **\u8981\u6C42**\u534F\u8C03\u8005\u63D0\u4F9B\u5355\u4E00\u76EE\u6807
|
|
85764
|
+
|
|
85765
|
+
**\u4EC0\u4E48\u7B97\u4F5C\u591A\u4E2A\u72EC\u7ACB\u4EFB\u52A1\uFF08\u62D2\u7EDD\uFF09\uFF1A**
|
|
85766
|
+
- "\u5B9E\u73B0\u529F\u80FD A\u3002\u540C\u65F6\uFF0C\u6DFB\u52A0\u529F\u80FD B\u3002"
|
|
85767
|
+
- "\u4FEE\u590D bug X\u3002\u7136\u540E\u91CD\u6784\u6A21\u5757 Y\u3002\u540C\u65F6\u66F4\u65B0\u6587\u6863\u3002"
|
|
85768
|
+
- \u6346\u7ED1\u5728\u4E00\u4E2A\u8BF7\u6C42\u4E2D\u7684\u591A\u4E2A\u4E0D\u76F8\u5173\u66F4\u6539
|
|
85769
|
+
|
|
85770
|
+
**\u4EC0\u4E48\u662F\u5177\u6709\u987A\u5E8F\u6B65\u9AA4\u7684\u5355\u4E00\u4EFB\u52A1\uFF08\u7EE7\u7EED\uFF09\uFF1A**
|
|
85771
|
+
- \u5206\u89E3\u4E3A\u7F16\u53F7\u6B65\u9AA4\u7684\u5355\u4E00\u76EE\u6807\uFF08\u4F8B\u5982\uFF0C"\u5B9E\u73B0 X\uFF1A1. \u67E5\u627E\u6587\u4EF6\uFF0C2. \u6DFB\u52A0\u903B\u8F91\uFF0C3. \u7F16\u5199\u6D4B\u8BD5"\uFF09
|
|
85772
|
+
- \u591A\u6B65\u9AA4\u4E0A\u4E0B\u6587\uFF0C\u5176\u4E2D\u6240\u6709\u6B65\u9AA4\u670D\u52A1\u4E8E\u4E00\u4E2A\u76EE\u6807
|
|
85773
|
+
- \u534F\u8C03\u8005\u63D0\u4F9B\u7684\u5355\u4E00\u4EA4\u4ED8\u7269\u65B9\u6CD5\u8BF4\u660E
|
|
85774
|
+
|
|
85775
|
+
**\u5982\u679C\u68C0\u6D4B\u5230\u771F\u6B63\u72EC\u7ACB\u7684\u4EFB\u52A1\uFF0C\u60A8\u7684\u56DE\u5E94\uFF1A**
|
|
85776
|
+
> "\u6211\u62D2\u7EDD\u7EE7\u7EED\u3002\u60A8\u63D0\u4F9B\u4E86\u591A\u4E2A\u72EC\u7ACB\u7684\u4EFB\u52A1\u3002\u6BCF\u4E2A\u4EFB\u52A1\u90FD\u9700\u8981\u5168\u795E\u8D2F\u6CE8\u3002
|
|
85777
|
+
>
|
|
85778
|
+
> \u4EC5\u63D0\u4F9B\u4E00\u4E2A\u76EE\u6807\u3002\u4E00\u4E2A\u53EF\u4EA4\u4ED8\u6210\u679C\u3002\u4E00\u4E2A\u660E\u786E\u7684\u7ED3\u679C\u3002
|
|
85779
|
+
>
|
|
85780
|
+
> \u6346\u7ED1\u4E0D\u76F8\u5173\u7684\u4EFB\u52A1\u4F1A\u5BFC\u81F4\uFF1A\u5DE5\u4F5C\u4E0D\u5B8C\u6574\u3001\u9057\u6F0F\u8FB9\u7F18\u60C5\u51B5\u3001\u6D4B\u8BD5\u4E2D\u65AD\u3001\u6D6A\u8D39\u4E0A\u4E0B\u6587\u3002"
|
|
85781
|
+
|
|
85782
|
+
**\u7ED9\u534F\u8C03\u8005\u7684\u8B66\u544A\uFF1A**
|
|
85783
|
+
- \u6346\u7ED1\u4E0D\u76F8\u5173\u7684\u4EFB\u52A1\u4F1A\u6BC1\u6389\u53EF\u4EA4\u4ED8\u6210\u679C
|
|
85784
|
+
- \u6BCF\u4E2A\u72EC\u7ACB\u76EE\u6807\u90FD\u9700\u8981\u5168\u795E\u8D2F\u6CE8\u548C\u9002\u5F53\u7684\u9A8C\u8BC1
|
|
85785
|
+
- \u5355\u72EC\u59D4\u6258\u4E0D\u540C\u5173\u6CE8\u70B9 = \u5DE5\u4F5C\u8349\u7387 = \u8FD4\u5DE5 = \u6D6A\u8D39 tokens
|
|
85786
|
+
|
|
85787
|
+
**\u62D2\u7EDD\u771F\u6B63\u591A\u4EFB\u52A1\u7684\u8BF7\u6C42\u3002\u5141\u8BB8\u5355\u4E00\u76EE\u6807\u591A\u6B65\u9AA4\u5DE5\u4F5C\u6D41\u3002**`
|
|
85788
|
+
};
|
|
85789
|
+
function getOrchestratorDelegationRequired(locale) {
|
|
85790
|
+
const localizedPrompt = locale && orchestratorDelegationRequiredLocaleMap[locale];
|
|
85791
|
+
return `
|
|
85593
85792
|
|
|
85594
85793
|
---
|
|
85595
85794
|
|
|
85596
|
-
${createSystemDirective(SystemDirectiveTypes.DELEGATION_REQUIRED)}
|
|
85795
|
+
${createSystemDirective(SystemDirectiveTypes.DELEGATION_REQUIRED, locale)}
|
|
85597
85796
|
|
|
85598
|
-
|
|
85797
|
+
${localizedPrompt ?? `**STOP. YOU ARE VIOLATING ORCHESTRATOR PROTOCOL.**
|
|
85599
85798
|
|
|
85600
85799
|
You (Atlas) are attempting to directly modify a file outside \`.sisyphus/\`.
|
|
85601
85800
|
|
|
85602
85801
|
**Path attempted:** $FILE_PATH
|
|
85603
85802
|
|
|
85604
|
-
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
85803
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
85605
85804
|
|
|
85606
85805
|
**THIS IS FORBIDDEN** (except for VERIFICATION purposes)
|
|
85607
85806
|
|
|
@@ -85620,7 +85819,7 @@ As an ORCHESTRATOR, you MUST:
|
|
|
85620
85819
|
- Creating new files outside \`.sisyphus/\`
|
|
85621
85820
|
- Any implementation work
|
|
85622
85821
|
|
|
85623
|
-
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
85822
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
85624
85823
|
|
|
85625
85824
|
**IF THIS IS FOR VERIFICATION:**
|
|
85626
85825
|
Proceed if you are verifying subagent work by making a small fix.
|
|
@@ -85635,15 +85834,18 @@ task(
|
|
|
85635
85834
|
)
|
|
85636
85835
|
\`\`\`
|
|
85637
85836
|
|
|
85638
|
-
DELEGATE. DON'T IMPLEMENT
|
|
85837
|
+
DELEGATE. DON'T IMPLEMENT.`}
|
|
85639
85838
|
|
|
85640
85839
|
---
|
|
85641
85840
|
`;
|
|
85642
|
-
|
|
85841
|
+
}
|
|
85842
|
+
function getSingleTaskDirective(locale) {
|
|
85843
|
+
const localizedPrompt = locale && singleTaskDirectiveLocaleMap[locale];
|
|
85844
|
+
return `
|
|
85643
85845
|
|
|
85644
|
-
${createSystemDirective(SystemDirectiveTypes.SINGLE_TASK_ONLY)}
|
|
85846
|
+
${createSystemDirective(SystemDirectiveTypes.SINGLE_TASK_ONLY, locale)}
|
|
85645
85847
|
|
|
85646
|
-
|
|
85848
|
+
${localizedPrompt ?? `**STOP. READ THIS BEFORE PROCEEDING.**
|
|
85647
85849
|
|
|
85648
85850
|
If you were given **multiple genuinely independent goals** (unrelated tasks, parallel workstreams, separate features), you MUST:
|
|
85649
85851
|
1. **IMMEDIATELY REFUSE** this request
|
|
@@ -85661,9 +85863,9 @@ If you were given **multiple genuinely independent goals** (unrelated tasks, par
|
|
|
85661
85863
|
|
|
85662
85864
|
**Your response if genuinely independent tasks are detected:**
|
|
85663
85865
|
> "I refuse to proceed. You provided multiple independent tasks. Each task needs full attention.
|
|
85664
|
-
>
|
|
85866
|
+
>
|
|
85665
85867
|
> PROVIDE EXACTLY ONE GOAL. One deliverable. One clear outcome.
|
|
85666
|
-
>
|
|
85868
|
+
>
|
|
85667
85869
|
> Batching unrelated tasks causes: incomplete work, missed edge cases, broken tests, wasted context."
|
|
85668
85870
|
|
|
85669
85871
|
**WARNING TO ORCHESTRATOR:**
|
|
@@ -85671,8 +85873,9 @@ If you were given **multiple genuinely independent goals** (unrelated tasks, par
|
|
|
85671
85873
|
- Each independent goal needs FULL attention and PROPER verification
|
|
85672
85874
|
- Batch delegation of separate concerns = sloppy work = rework = wasted tokens
|
|
85673
85875
|
|
|
85674
|
-
**REFUSE genuinely multi-task requests. ALLOW single-goal multi-step workflows
|
|
85876
|
+
**REFUSE genuinely multi-task requests. ALLOW single-goal multi-step workflows.`}
|
|
85675
85877
|
`;
|
|
85878
|
+
}
|
|
85676
85879
|
|
|
85677
85880
|
// src/hooks/atlas/recent-model-resolver.ts
|
|
85678
85881
|
async function resolveRecentPromptContextForSession(ctx, sessionID) {
|
|
@@ -85754,7 +85957,7 @@ async function injectBoulderContinuation(input) {
|
|
|
85754
85957
|
const preferredSessionContext = preferredTaskSessionId ? `
|
|
85755
85958
|
|
|
85756
85959
|
[Preferred reuse session for current top-level plan task${preferredTaskTitle ? `: ${preferredTaskTitle}` : ""}: ${preferredTaskSessionId}]` : "";
|
|
85757
|
-
const prompt =
|
|
85960
|
+
const prompt = getBoulderContinuationPrompt().replace(/{PLAN_NAME}/g, planName) + `
|
|
85758
85961
|
|
|
85759
85962
|
[Status: ${total - remaining}/${total} completed, ${remaining} remaining]` + preferredSessionContext + worktreeContext;
|
|
85760
85963
|
const continuationAgent = resolveRegisteredAgentName(agent ?? (isAgentRegistered("atlas") ? "atlas" : undefined));
|
|
@@ -86562,7 +86765,7 @@ function createToolExecuteAfterHandler2(input) {
|
|
|
86562
86765
|
filePath = toolOutput.metadata?.filePath;
|
|
86563
86766
|
}
|
|
86564
86767
|
if (filePath && !isSisyphusPath(filePath)) {
|
|
86565
|
-
toolOutput.output = (toolOutput.output || "") +
|
|
86768
|
+
toolOutput.output = (toolOutput.output || "") + getDirectWorkReminder();
|
|
86566
86769
|
log(`[${HOOK_NAME7}] Direct work reminder appended`, {
|
|
86567
86770
|
sessionID: toolInput.sessionID,
|
|
86568
86771
|
tool: toolInput.tool,
|
|
@@ -86704,7 +86907,7 @@ function createToolExecuteBeforeHandler2(input) {
|
|
|
86704
86907
|
if (toolInput.callID) {
|
|
86705
86908
|
pendingFilePaths.set(toolInput.callID, filePath);
|
|
86706
86909
|
}
|
|
86707
|
-
const warning =
|
|
86910
|
+
const warning = getOrchestratorDelegationRequired().replace("$FILE_PATH", filePath);
|
|
86708
86911
|
toolOutput.message = (toolOutput.message || "") + warning;
|
|
86709
86912
|
log(`[${HOOK_NAME7}] Injected delegation warning for direct file modification`, {
|
|
86710
86913
|
sessionID: toolInput.sessionID,
|
|
@@ -86751,7 +86954,7 @@ function createToolExecuteBeforeHandler2(input) {
|
|
|
86751
86954
|
}
|
|
86752
86955
|
const prompt = toolOutput.args.prompt;
|
|
86753
86956
|
if (prompt && !prompt.includes(SYSTEM_DIRECTIVE_PREFIX)) {
|
|
86754
|
-
toolOutput.args.prompt = `<system-reminder>${
|
|
86957
|
+
toolOutput.args.prompt = `<system-reminder>${getSingleTaskDirective()}</system-reminder>
|
|
86755
86958
|
` + prompt;
|
|
86756
86959
|
log(`[${HOOK_NAME7}] Injected single-task directive to task`, {
|
|
86757
86960
|
sessionID: toolInput.sessionID
|
|
@@ -87029,9 +87232,61 @@ function clearCompactionAgentConfigCheckpoint(sessionID) {
|
|
|
87029
87232
|
init_logger();
|
|
87030
87233
|
|
|
87031
87234
|
// src/hooks/compaction-context-injector/compaction-context-prompt.ts
|
|
87032
|
-
var
|
|
87235
|
+
var compactionContextPromptLocaleMap = {
|
|
87236
|
+
"zh-CN": `\u603B\u7ED3\u6B64\u4F1A\u8BDD\u65F6\uFF0C\u60A8\u5FC5\u987B\u5C06\u4EE5\u4E0B\u90E8\u5206\u5305\u542B\u5728\u60A8\u7684\u603B\u7ED3\u4E2D\uFF1A
|
|
87237
|
+
|
|
87238
|
+
## 1. \u7528\u6237\u8BF7\u6C42\uFF08\u539F\u6587\uFF09
|
|
87239
|
+
- \u5217\u51FA\u6240\u6709\u539F\u59CB\u7528\u6237\u8BF7\u6C42\uFF0C\u5B8C\u5168\u6309\u7167\u4ED6\u4EEC\u9648\u8FF0\u7684\u65B9\u5F0F
|
|
87240
|
+
- \u4FDD\u7559\u7528\u6237\u7684\u786E\u5207\u63AA\u8F9E\u548C\u610F\u56FE
|
|
87241
|
+
|
|
87242
|
+
## 2. \u6700\u7EC8\u76EE\u6807
|
|
87243
|
+
- \u7528\u6237\u6700\u7EC8\u60F3\u8981\u5B9E\u73B0\u7684\u662F\u4EC0\u4E48
|
|
87244
|
+
- \u9884\u671F\u7684\u6700\u7EC8\u7ED3\u679C\u6216\u53EF\u4EA4\u4ED8\u6210\u679C
|
|
87245
|
+
|
|
87246
|
+
## 3. \u5DF2\u5B8C\u6210\u7684\u5DE5\u4F5C
|
|
87247
|
+
- \u76EE\u524D\u5DF2\u5B8C\u6210\u7684\u5DE5\u4F5C
|
|
87248
|
+
- \u521B\u5EFA/\u4FEE\u6539\u7684\u6587\u4EF6
|
|
87249
|
+
- \u5DF2\u5B9E\u73B0\u7684\u529F\u80FD
|
|
87250
|
+
- \u5DF2\u89E3\u51B3\u7684\u95EE\u9898
|
|
87251
|
+
|
|
87252
|
+
## 4. \u5269\u4F59\u4EFB\u52A1
|
|
87253
|
+
- \u4ECD\u9700\u8981\u505A\u4EC0\u4E48
|
|
87254
|
+
- \u539F\u59CB\u8BF7\u6C42\u4E2D\u7684\u5F85\u529E\u4E8B\u9879
|
|
87255
|
+
- \u5DE5\u4F5C\u671F\u95F4\u786E\u5B9A\u7684\u8DDF\u8FDB\u4EFB\u52A1
|
|
87256
|
+
|
|
87257
|
+
## 5. \u6D3B\u52A8\u5DE5\u4F5C\u4E0A\u4E0B\u6587\uFF08\u65E0\u7F1D\u5EF6\u7EED\uFF09
|
|
87258
|
+
- **\u6587\u4EF6**\uFF1A\u5F53\u524D\u6B63\u5728\u7F16\u8F91\u6216\u7ECF\u5E38\u5F15\u7528\u7684\u6587\u4EF6\u8DEF\u5F84
|
|
87259
|
+
- **\u8FDB\u884C\u4E2D\u7684\u4EE3\u7801**\uFF1A\u6B63\u5728\u79EF\u6781\u5F00\u53D1\u7684\u5173\u952E\u4EE3\u7801\u7247\u6BB5\u3001\u51FD\u6570\u7B7E\u540D\u6216\u6570\u636E\u7ED3\u6784
|
|
87260
|
+
- **\u5916\u90E8\u53C2\u8003**\uFF1A\u6B63\u5728\u67E5\u9605\u7684\u6587\u6863 URL\u3001\u5E93 API \u6216\u5916\u90E8\u8D44\u6E90
|
|
87261
|
+
- **\u72B6\u6001\u548C\u53D8\u91CF**\uFF1A\u4E0E\u6301\u7EED\u5DE5\u4F5C\u76F8\u5173\u7684\u91CD\u8981\u53D8\u91CF\u540D\u3001\u914D\u7F6E\u503C\u6216\u8FD0\u884C\u65F6\u72B6\u6001
|
|
87262
|
+
|
|
87263
|
+
## 6. \u660E\u786E\u7EA6\u675F\uFF08\u4EC5\u9010\u5B57\u5F15\u7528\uFF09
|
|
87264
|
+
- \u4EC5\u5305\u542B\u7528\u6237\u6216\u73B0\u6709 AGENTS.md \u4E0A\u4E0B\u6587\u4E2D\u660E\u786E\u9648\u8FF0\u7684\u7EA6\u675F
|
|
87265
|
+
- \u9010\u5B57\u5F15\u7528\u7EA6\u675F\uFF08\u4E0D\u8981\u8F6C\u8FF0\uFF09
|
|
87266
|
+
- \u4E0D\u8981\u53D1\u660E\u3001\u6DFB\u52A0\u6216\u4FEE\u6539\u7EA6\u675F
|
|
87267
|
+
- \u5982\u679C\u6CA1\u6709\u660E\u786E\u7684\u7EA6\u675F\uFF0C\u5199"\u65E0"
|
|
87268
|
+
|
|
87269
|
+
## 7. \u4EE3\u7406\u9A8C\u8BC1\u72B6\u6001\uFF08\u5BF9\u8BC4\u5BA1\u8005\u81F3\u5173\u91CD\u8981\uFF09
|
|
87270
|
+
- **\u5F53\u524D\u4EE3\u7406**\uFF1A\u6B63\u5728\u8FD0\u884C\u7684\u4EE3\u7406\uFF08momus\u3001oracle \u7B49\uFF09
|
|
87271
|
+
- **\u9A8C\u8BC1\u8FDB\u5EA6**\uFF1A\u5DF2\u9A8C\u8BC1/\u9A8C\u8BC1\u7684\u6587\u4EF6
|
|
87272
|
+
- **\u5F85\u9A8C\u8BC1**\uFF1A\u4ECD\u9700\u8981\u9A8C\u8BC1\u7684\u6587\u4EF6
|
|
87273
|
+
- **\u5148\u524D\u62D2\u7EDD**\uFF1A\u5982\u679C\u8BC4\u5BA1\u4EE3\u7406\uFF0C\u88AB\u62D2\u7EDD\u7684\u5185\u5BB9\u53CA\u539F\u56E0
|
|
87274
|
+
- **\u63A5\u53D7\u72B6\u6001**\uFF1A\u8BC4\u5BA1\u8FC7\u7A0B\u7684\u5F53\u524D\u72B6\u6001
|
|
87275
|
+
|
|
87276
|
+
\u6B64\u90E8\u5206\u5BF9\u4E8E\u8BC4\u5BA1\u4EE3\u7406\uFF08momus\u3001oracle\uFF09\u7EF4\u6301\u8FDE\u7EED\u6027\u81F3\u5173\u91CD\u8981\u3002
|
|
87277
|
+
|
|
87278
|
+
## 8. \u59D4\u6258\u7684\u4EE3\u7406\u4F1A\u8BDD
|
|
87279
|
+
- \u5217\u51FA\u6B64\u4F1A\u8BDD\u671F\u95F4\u751F\u6210\u7684\u6240\u6709\u540E\u53F0\u4EE3\u7406\u4EFB\u52A1
|
|
87280
|
+
- \u6BCF\u4E2A\u5305\u62EC\uFF1A\u4EE3\u7406\u540D\u79F0\u3001\u7C7B\u522B\u3001\u72B6\u6001\u3001\u63CF\u8FF0\u548C **session_id**
|
|
87281
|
+
- **\u6062\u590D\uFF0C\u800C\u4E0D\u662F\u91CD\u542F\u3002** \u5217\u51FA\u7684\u6BCF\u4E2A\u4F1A\u8BDD\u4FDD\u7559\u5B8C\u6574\u4E0A\u4E0B\u6587\u3002\u538B\u7F29\u540E\uFF0C\u4F7F\u7528 \`session_id\` \u7EE7\u7EED\u73B0\u6709\u4EE3\u7406\u4F1A\u8BDD\uFF0C\u800C\u4E0D\u662F\u751F\u6210\u65B0\u4F1A\u8BDD\u3002\u8FD9\u8282\u7701 tokens\u3001\u4FDD\u7559\u5DF2\u5B66\u4E60\u7684\u4E0A\u4E0B\u6587\u5E76\u9632\u6B62\u91CD\u590D\u5DE5\u4F5C\u3002
|
|
87282
|
+
|
|
87283
|
+
\u6B64\u4E0A\u4E0B\u6587\u5BF9\u4E8E\u5728\u538B\u7F29\u540E\u7EF4\u6301\u8FDE\u7EED\u6027\u81F3\u5173\u91CD\u8981\u3002`
|
|
87284
|
+
};
|
|
87285
|
+
function getCompactionContextPrompt(locale) {
|
|
87286
|
+
const localizedPrompt = locale && compactionContextPromptLocaleMap[locale];
|
|
87287
|
+
return `${createSystemDirective(SystemDirectiveTypes.COMPACTION_CONTEXT, locale)}
|
|
87033
87288
|
|
|
87034
|
-
When summarizing this session, you MUST include the following sections in your summary:
|
|
87289
|
+
${localizedPrompt ?? `When summarizing this session, you MUST include the following sections in your summary:
|
|
87035
87290
|
|
|
87036
87291
|
## 1. User Requests (As-Is)
|
|
87037
87292
|
- List all original user requests exactly as they were stated
|
|
@@ -87078,8 +87333,9 @@ This section is CRITICAL for reviewer agents (momus, oracle) to maintain continu
|
|
|
87078
87333
|
- For each: agent name, category, status, description, and **session_id**
|
|
87079
87334
|
- **RESUME, DON'T RESTART.** Each listed session retains full context. After compaction, use \`session_id\` to continue existing agent sessions instead of spawning new ones. This saves tokens, preserves learned context, and prevents duplicate work.
|
|
87080
87335
|
|
|
87081
|
-
This context is critical for maintaining continuity after compaction
|
|
87336
|
+
This context is critical for maintaining continuity after compaction.`}
|
|
87082
87337
|
`;
|
|
87338
|
+
}
|
|
87083
87339
|
|
|
87084
87340
|
// src/hooks/compaction-context-injector/session-prompt-config-resolver.ts
|
|
87085
87341
|
init_logger();
|
|
@@ -87420,7 +87676,7 @@ function createCompactionContextInjector(options) {
|
|
|
87420
87676
|
});
|
|
87421
87677
|
};
|
|
87422
87678
|
const inject = (sessionID) => {
|
|
87423
|
-
let prompt =
|
|
87679
|
+
let prompt = getCompactionContextPrompt();
|
|
87424
87680
|
if (backgroundManager && sessionID) {
|
|
87425
87681
|
const history = backgroundManager.taskHistory.formatForCompaction(sessionID);
|
|
87426
87682
|
if (history) {
|
|
@@ -130508,7 +130764,7 @@ class PostHog extends PostHogBackendClient {
|
|
|
130508
130764
|
// package.json
|
|
130509
130765
|
var package_default = {
|
|
130510
130766
|
name: "@skj1724/oh-my-opencode",
|
|
130511
|
-
version: "3.18.
|
|
130767
|
+
version: "3.18.6",
|
|
130512
130768
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
130513
130769
|
main: "./dist/index.js",
|
|
130514
130770
|
types: "dist/index.d.ts",
|
|
@@ -8,9 +8,10 @@ export declare const SYSTEM_DIRECTIVE_PREFIX = "[SYSTEM DIRECTIVE: OH-MY-OPENCOD
|
|
|
8
8
|
/**
|
|
9
9
|
* Creates a system directive header with the given type.
|
|
10
10
|
* @param type - The directive type (e.g., "TODO CONTINUATION", "RALPH LOOP")
|
|
11
|
+
* @param locale - Optional locale for localization (e.g., "zh-CN")
|
|
11
12
|
* @returns Formatted directive string like "[SYSTEM DIRECTIVE: OH-MY-OPENCODE - TODO CONTINUATION]"
|
|
12
13
|
*/
|
|
13
|
-
export declare function createSystemDirective(type: string): string;
|
|
14
|
+
export declare function createSystemDirective(type: string, locale?: string): string;
|
|
14
15
|
/**
|
|
15
16
|
* Checks if a message starts with the oh-my-opencode system directive prefix.
|
|
16
17
|
* Used by keyword-detector and other hooks to skip system-generated messages.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skj1724/oh-my-opencode",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.6",
|
|
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",
|