@skj1724/oh-my-opencode 3.11.2 → 3.11.3
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 +3 -2
- package/dist/config/schema/experimental.d.ts +1 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +1 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts +1 -1
- package/dist/hooks/think-mode/switcher.d.ts +11 -12
- package/dist/hooks/thinking-block-validator/hook.d.ts +10 -11
- package/dist/hooks/todo-description-override/description.d.ts +1 -1
- package/dist/index.js +119 -113
- package/dist/oh-my-opencode.schema.json +3 -0
- package/dist/shared/context-limit-resolver.d.ts +2 -1
- package/dist/tools/hashline-edit/tool-description.d.ts +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -50376,7 +50376,7 @@ var {
|
|
|
50376
50376
|
// package.json
|
|
50377
50377
|
var package_default = {
|
|
50378
50378
|
name: "@skj1724/oh-my-opencode",
|
|
50379
|
-
version: "3.11.
|
|
50379
|
+
version: "3.11.3",
|
|
50380
50380
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
50381
50381
|
main: "dist/index.js",
|
|
50382
50382
|
types: "dist/index.d.ts",
|
|
@@ -65985,7 +65985,8 @@ var ExperimentalConfigSchema = exports_external.object({
|
|
|
65985
65985
|
safe_hook_creation: exports_external.boolean().optional(),
|
|
65986
65986
|
disable_omo_env: exports_external.boolean().optional(),
|
|
65987
65987
|
hashline_edit: exports_external.boolean().optional(),
|
|
65988
|
-
model_fallback_title: exports_external.boolean().optional()
|
|
65988
|
+
model_fallback_title: exports_external.boolean().optional(),
|
|
65989
|
+
minimax_4m_context_enabled: exports_external.boolean().optional()
|
|
65989
65990
|
});
|
|
65990
65991
|
// src/config/schema/git-env-prefix.ts
|
|
65991
65992
|
var GIT_ENV_ASSIGNMENT_PATTERN = /^(?:[A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)(?: [A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)*$/;
|
|
@@ -36,5 +36,6 @@ export declare const ExperimentalConfigSchema: z.ZodObject<{
|
|
|
36
36
|
disable_omo_env: z.ZodOptional<z.ZodBoolean>;
|
|
37
37
|
hashline_edit: z.ZodOptional<z.ZodBoolean>;
|
|
38
38
|
model_fallback_title: z.ZodOptional<z.ZodBoolean>;
|
|
39
|
+
minimax_4m_context_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
39
40
|
}, z.core.$strip>;
|
|
40
41
|
export type ExperimentalConfig = z.infer<typeof ExperimentalConfigSchema>;
|
|
@@ -1636,6 +1636,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
|
|
|
1636
1636
|
disable_omo_env: z.ZodOptional<z.ZodBoolean>;
|
|
1637
1637
|
hashline_edit: z.ZodOptional<z.ZodBoolean>;
|
|
1638
1638
|
model_fallback_title: z.ZodOptional<z.ZodBoolean>;
|
|
1639
|
+
minimax_4m_context_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
1639
1640
|
}, z.core.$strip>>;
|
|
1640
1641
|
auto_update: z.ZodOptional<z.ZodBoolean>;
|
|
1641
1642
|
skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const AGENT_USAGE_REMINDER_STORAGE: string;
|
|
2
2
|
export declare const TARGET_TOOLS: Set<string>;
|
|
3
3
|
export declare const AGENT_TOOLS: Set<string>;
|
|
4
|
-
export declare const REMINDER_MESSAGE = "\n[
|
|
4
|
+
export declare const REMINDER_MESSAGE = "\n[\u4EE3\u7406\u4F7F\u7528\u63D0\u9192]\n\n\u4F60\u76F4\u63A5\u8C03\u7528\u4E86\u641C\u7D22/\u83B7\u53D6\u5DE5\u5177\uFF0C\u800C\u6CA1\u6709\u5229\u7528\u4E13\u95E8\u7684\u4EE3\u7406\u3002\n\n\u63A8\u8350\u505A\u6CD5\uFF1A\u4F7F\u7528 task \u8C03\u7528 explore/librarian \u4EE3\u7406\u4EE5\u83B7\u5F97\u66F4\u597D\u7684\u7ED3\u679C\uFF1A\n\n```\n// \u5E76\u884C\u63A2\u7D22 - \u540C\u65F6\u542F\u52A8\u591A\u4E2A\u4EE3\u7406\ntask(agent=\"explore\", prompt=\"Find all files matching pattern X\")\ntask(agent=\"explore\", prompt=\"Search for implementation of Y\")\ntask(agent=\"librarian\", prompt=\"Lookup documentation for Z\")\n\n// \u5728\u5B83\u4EEC\u540E\u53F0\u8FD0\u884C\u65F6\u7EE7\u7EED\u4F60\u7684\u5DE5\u4F5C\n// \u7CFB\u7EDF\u4F1A\u5728\u6BCF\u4E2A\u4EE3\u7406\u5B8C\u6210\u65F6\u901A\u77E5\u4F60\n```\n\n\u539F\u56E0\uFF1A\n- \u4EE3\u7406\u53EF\u4EE5\u6267\u884C\u66F4\u6DF1\u3001\u66F4\u5F7B\u5E95\u7684\u641C\u7D22\n- \u540E\u53F0\u4EFB\u52A1\u5E76\u884C\u8FD0\u884C\uFF0C\u8282\u7701\u65F6\u95F4\n- \u4E13\u95E8\u7684\u4EE3\u7406\u5177\u6709\u9886\u57DF\u4E13\u4E1A\u77E5\u8BC6\n- \u51CF\u5C11\u4E3B\u4F1A\u8BDD\u4E2D\u7684\u4E0A\u4E0B\u6587\u7A97\u53E3\u4F7F\u7528\n\n\u59CB\u7EC8\u4F18\u5148\u9009\u62E9\uFF1A\u591A\u4E2A\u5E76\u884C task \u8C03\u7528 > \u76F4\u63A5\u5DE5\u5177\u8C03\u7528\n";
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Think Mode
|
|
2
|
+
* Think Mode 切换器
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* 本模块处理具备推理能力的模型的"思考模式"激活。
|
|
5
|
+
* 当用户在提示词中包含"思考"关键词时,模型将升级到
|
|
6
|
+
* 具有扩展思考预算的高推理变体。
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* GitHub Copilot
|
|
10
|
-
|
|
11
|
-
*
|
|
12
|
-
* configurations without duplication.
|
|
8
|
+
* 提供商别名机制:
|
|
9
|
+
* GitHub Copilot 充当代理提供商,路由到底层提供商
|
|
10
|
+
*(Anthropic、Google、OpenAI)。我们根据模型名称模式解析代理到实际提供商,
|
|
11
|
+
* 使 GitHub Copilot 能够继承思考配置而无需重复。
|
|
13
12
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* 规范化:
|
|
14
|
+
* 模型 ID 经过规范化(点号 → 版本号中的连字符)以防御性处理 API
|
|
15
|
+
* 不一致性,同时保持向后兼容性。
|
|
17
16
|
*/
|
|
18
17
|
export declare function getHighVariant(modelID: string): string | null;
|
|
19
18
|
export declare function isAlreadyHighVariant(modelID: string): boolean;
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 主动式 Thinking Block 验证器 Hook
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* 在发送消息到 Anthropic API 之前,通过验证和修复消息结构来
|
|
5
|
+
* 防止"Expected thinking/redacted_thinking but found tool_use"错误。
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* sent to the API.
|
|
7
|
+
* 此 Hook 运行在"experimental.chat.messages.transform"钩子点,
|
|
8
|
+
* 该钩子在消息转换为 ModelMessage 格式并发送到 API 之前调用。
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
10
|
+
* 与 session-recovery hook 的关键区别:
|
|
11
|
+
* - 主动式(预防错误)vs 响应式(错误后修复)
|
|
12
|
+
* - 在 API 调用之前运行 vs API 错误之后运行
|
|
13
|
+
* - 用户永远不会看到错误 vs 用户看到错误然后恢复
|
|
15
14
|
*/
|
|
16
15
|
import type { Message, Part } from "@opencode-ai/sdk";
|
|
17
16
|
interface MessageWithParts {
|
|
@@ -24,7 +23,7 @@ type MessagesTransformHook = {
|
|
|
24
23
|
}) => Promise<void>;
|
|
25
24
|
};
|
|
26
25
|
/**
|
|
27
|
-
*
|
|
26
|
+
* 验证并修复包含 tool_use 但没有 thinking block 的 assistant 消息
|
|
28
27
|
*/
|
|
29
28
|
export declare function createThinkingBlockValidatorHook(): MessagesTransformHook;
|
|
30
29
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const TODOWRITE_DESCRIPTION = "
|
|
1
|
+
export declare const TODOWRITE_DESCRIPTION = "\u4F7F\u7528\u6B64\u5DE5\u5177\u521B\u5EFA\u548C\u7BA1\u7406\u7ED3\u6784\u5316\u5F85\u529E\u5217\u8868\uFF0C\u7528\u4E8E\u8DDF\u8E2A\u591A\u6B65\u9AA4\u5DE5\u4F5C\u7684\u8FDB\u5EA6\u3002\n\n## \u5F85\u529E\u683C\u5F0F\uFF08\u5FC5\u987B\u9075\u5B88\uFF09\n\n\u6BCF\u4E2A\u5F85\u529E\u6807\u9898\u5FC5\u987B\u5305\u542B\u56DB\u4E2A\u8981\u7D20\uFF1A\u4F4D\u7F6E\uFF08WHERE\uFF09\u3001\u539F\u56E0\uFF08WHY\uFF09\u3001\u65B9\u6CD5\uFF08HOW\uFF09\u548C\u9884\u671F\u7ED3\u679C\uFF08EXPECTED RESULT\uFF09\u3002\n\n\u683C\u5F0F\uFF1A\"[\u4F4D\u7F6E] [\u65B9\u6CD5] \u4EE5 [\u539F\u56E0] \u2014 \u9884\u671F [\u7ED3\u679C]\"\n\n\u6B63\u786E\u793A\u4F8B\uFF1A\n- \"src/utils/validation.ts: Add validateEmail() for input sanitization \u2014 returns boolean\"\n- \"UserService.create(): Call validateEmail() before DB insert \u2014 rejects invalid emails with 400\"\n- \"validation.test.ts: Add test for missing @ sign \u2014 expect validateEmail('foo') to return false\"\n\n\u9519\u8BEF\u793A\u4F8B\uFF1A\n- \"Implement email validation\"\uFF08\u4F4D\u7F6E\uFF1F\u65B9\u6CD5\uFF1F\u7ED3\u679C\uFF1F\uFF09\n- \"Add dark mode\"\uFF08\u8FD9\u662F\u529F\u80FD\uFF0C\u4E0D\u662F\u5F85\u529E\uFF09\n- \"Fix auth\"\uFF08\u54EA\u4E2A\u6587\u4EF6\uFF1F\u4EC0\u4E48\u4FEE\u6539\uFF1F\u9884\u671F\u4EC0\u4E48\uFF1F\uFF09\n\n## \u7C92\u5EA6\u89C4\u5219\n\n\u6BCF\u4E2A\u5F85\u529E\u5FC5\u987B\u662F\u5355\u4E2A\u539F\u5B50\u64CD\u4F5C\uFF0C\u53EF\u5728 1-3 \u6B21\u5DE5\u5177\u8C03\u7528\u5185\u5B8C\u6210\u3002\u5982\u679C\u9700\u8981\u66F4\u591A\u8C03\u7528\uFF0C\u5219\u5E94\u62C6\u5206\u3002\n\n**\u89C4\u6A21\u6D4B\u8BD5**\uFF1A\u4F60\u80FD\u5426\u901A\u8FC7\u7F16\u8F91\u4E00\u4E2A\u6587\u4EF6\u6216\u8FD0\u884C\u4E00\u4E2A\u547D\u4EE4\u6765\u5B8C\u6210\u6B64\u5F85\u529E\uFF1F\u5982\u679C\u4E0D\u80FD\uFF0C\u5219\u89C4\u6A21\u8FC7\u5927\u3002\n\n## \u4EFB\u52A1\u7BA1\u7406\n- \u4E00\u6B21\u53EA\u80FD\u6709\u4E00\u4E2A\u8FDB\u884C\u4E2D\uFF08in_progress\uFF09\u7684\u4EFB\u52A1\u3002\u5B8C\u6210\u540E\u518D\u5F00\u59CB\u4E0B\u4E00\u4E2A\u3002\n- \u6BCF\u9879\u5B8C\u6210\u540E\u7ACB\u5373\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210\u3002\n- \u7B80\u5355\u7684\u4E00\u6B21\u6027\u4EFB\u52A1\uFF08\u5355\u6B65\u3001\u660E\u663E\u64CD\u4F5C\uFF09\u65E0\u9700\u4F7F\u7528\u6B64\u5DE5\u5177\u3002";
|
package/dist/index.js
CHANGED
|
@@ -15456,7 +15456,7 @@ function getAnthropicActualLimit(modelCacheState) {
|
|
|
15456
15456
|
function isAnthropicNoHeaderGaModel(modelID) {
|
|
15457
15457
|
return ANTHROPIC_NO_HEADER_GA_MODEL_IDS.has(modelID.toLowerCase());
|
|
15458
15458
|
}
|
|
15459
|
-
function resolveActualContextLimit(providerID, modelID, modelCacheState) {
|
|
15459
|
+
function resolveActualContextLimit(providerID, modelID, modelCacheState, pluginConfig) {
|
|
15460
15460
|
if (isAnthropicProvider(providerID)) {
|
|
15461
15461
|
const explicit1M = getAnthropicActualLimit(modelCacheState);
|
|
15462
15462
|
if (explicit1M === 1e6)
|
|
@@ -15466,6 +15466,10 @@ function resolveActualContextLimit(providerID, modelID, modelCacheState) {
|
|
|
15466
15466
|
return cachedLimit;
|
|
15467
15467
|
return DEFAULT_ANTHROPIC_ACTUAL_LIMIT;
|
|
15468
15468
|
}
|
|
15469
|
+
const providerIDLower = providerID.toLowerCase();
|
|
15470
|
+
if (providerIDLower.includes("minimax")) {
|
|
15471
|
+
return pluginConfig?.experimental?.minimax_4m_context_enabled ? 4000000 : 1e6;
|
|
15472
|
+
}
|
|
15469
15473
|
return modelCacheState?.modelContextLimitsCache?.get(`${providerID}/${modelID}`) ?? null;
|
|
15470
15474
|
}
|
|
15471
15475
|
|
|
@@ -80155,7 +80159,7 @@ function createThinkModeHook() {
|
|
|
80155
80159
|
output.message.variant = "high";
|
|
80156
80160
|
state3.modelSwitched = false;
|
|
80157
80161
|
state3.variantSet = true;
|
|
80158
|
-
log("
|
|
80162
|
+
log("\u601D\u8003\u6A21\u5F0F\uFF1A\u5DF2\u8BBE\u7F6E\u4E3A high \u53D8\u4F53", { sessionID });
|
|
80159
80163
|
thinkModeState.set(sessionID, state3);
|
|
80160
80164
|
},
|
|
80161
80165
|
event: async ({ event }) => {
|
|
@@ -83284,29 +83288,29 @@ var AGENT_TOOLS = new Set([
|
|
|
83284
83288
|
"task"
|
|
83285
83289
|
]);
|
|
83286
83290
|
var REMINDER_MESSAGE = `
|
|
83287
|
-
[
|
|
83291
|
+
[\u4EE3\u7406\u4F7F\u7528\u63D0\u9192]
|
|
83288
83292
|
|
|
83289
|
-
|
|
83293
|
+
\u4F60\u76F4\u63A5\u8C03\u7528\u4E86\u641C\u7D22/\u83B7\u53D6\u5DE5\u5177\uFF0C\u800C\u6CA1\u6709\u5229\u7528\u4E13\u95E8\u7684\u4EE3\u7406\u3002
|
|
83290
83294
|
|
|
83291
|
-
|
|
83295
|
+
\u63A8\u8350\u505A\u6CD5\uFF1A\u4F7F\u7528 task \u8C03\u7528 explore/librarian \u4EE3\u7406\u4EE5\u83B7\u5F97\u66F4\u597D\u7684\u7ED3\u679C\uFF1A
|
|
83292
83296
|
|
|
83293
83297
|
\`\`\`
|
|
83294
|
-
//
|
|
83298
|
+
// \u5E76\u884C\u63A2\u7D22 - \u540C\u65F6\u542F\u52A8\u591A\u4E2A\u4EE3\u7406
|
|
83295
83299
|
task(agent="explore", prompt="Find all files matching pattern X")
|
|
83296
|
-
task(agent="explore", prompt="Search for implementation of Y")
|
|
83300
|
+
task(agent="explore", prompt="Search for implementation of Y")
|
|
83297
83301
|
task(agent="librarian", prompt="Lookup documentation for Z")
|
|
83298
83302
|
|
|
83299
|
-
//
|
|
83300
|
-
//
|
|
83303
|
+
// \u5728\u5B83\u4EEC\u540E\u53F0\u8FD0\u884C\u65F6\u7EE7\u7EED\u4F60\u7684\u5DE5\u4F5C
|
|
83304
|
+
// \u7CFB\u7EDF\u4F1A\u5728\u6BCF\u4E2A\u4EE3\u7406\u5B8C\u6210\u65F6\u901A\u77E5\u4F60
|
|
83301
83305
|
\`\`\`
|
|
83302
83306
|
|
|
83303
|
-
|
|
83304
|
-
-
|
|
83305
|
-
-
|
|
83306
|
-
-
|
|
83307
|
-
-
|
|
83307
|
+
\u539F\u56E0\uFF1A
|
|
83308
|
+
- \u4EE3\u7406\u53EF\u4EE5\u6267\u884C\u66F4\u6DF1\u3001\u66F4\u5F7B\u5E95\u7684\u641C\u7D22
|
|
83309
|
+
- \u540E\u53F0\u4EFB\u52A1\u5E76\u884C\u8FD0\u884C\uFF0C\u8282\u7701\u65F6\u95F4
|
|
83310
|
+
- \u4E13\u95E8\u7684\u4EE3\u7406\u5177\u6709\u9886\u57DF\u4E13\u4E1A\u77E5\u8BC6
|
|
83311
|
+
- \u51CF\u5C11\u4E3B\u4F1A\u8BDD\u4E2D\u7684\u4E0A\u4E0B\u6587\u7A97\u53E3\u4F7F\u7528
|
|
83308
83312
|
|
|
83309
|
-
|
|
83313
|
+
\u59CB\u7EC8\u4F18\u5148\u9009\u62E9\uFF1A\u591A\u4E2A\u5E76\u884C task \u8C03\u7528 > \u76F4\u63A5\u5DE5\u5177\u8C03\u7528
|
|
83310
83314
|
`;
|
|
83311
83315
|
|
|
83312
83316
|
// src/hooks/agent-usage-reminder/storage.ts
|
|
@@ -89197,7 +89201,8 @@ var ExperimentalConfigSchema = exports_external.object({
|
|
|
89197
89201
|
safe_hook_creation: exports_external.boolean().optional(),
|
|
89198
89202
|
disable_omo_env: exports_external.boolean().optional(),
|
|
89199
89203
|
hashline_edit: exports_external.boolean().optional(),
|
|
89200
|
-
model_fallback_title: exports_external.boolean().optional()
|
|
89204
|
+
model_fallback_title: exports_external.boolean().optional(),
|
|
89205
|
+
minimax_4m_context_enabled: exports_external.boolean().optional()
|
|
89201
89206
|
});
|
|
89202
89207
|
// src/config/schema/git-env-prefix.ts
|
|
89203
89208
|
var GIT_ENV_ASSIGNMENT_PATTERN = /^(?:[A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)(?: [A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)*$/;
|
|
@@ -97191,34 +97196,34 @@ function createReadImageResizerHook(_ctx) {
|
|
|
97191
97196
|
};
|
|
97192
97197
|
}
|
|
97193
97198
|
// src/hooks/todo-description-override/description.ts
|
|
97194
|
-
var TODOWRITE_DESCRIPTION =
|
|
97199
|
+
var TODOWRITE_DESCRIPTION = `\u4F7F\u7528\u6B64\u5DE5\u5177\u521B\u5EFA\u548C\u7BA1\u7406\u7ED3\u6784\u5316\u5F85\u529E\u5217\u8868\uFF0C\u7528\u4E8E\u8DDF\u8E2A\u591A\u6B65\u9AA4\u5DE5\u4F5C\u7684\u8FDB\u5EA6\u3002
|
|
97195
97200
|
|
|
97196
|
-
##
|
|
97201
|
+
## \u5F85\u529E\u683C\u5F0F\uFF08\u5FC5\u987B\u9075\u5B88\uFF09
|
|
97197
97202
|
|
|
97198
|
-
|
|
97203
|
+
\u6BCF\u4E2A\u5F85\u529E\u6807\u9898\u5FC5\u987B\u5305\u542B\u56DB\u4E2A\u8981\u7D20\uFF1A\u4F4D\u7F6E\uFF08WHERE\uFF09\u3001\u539F\u56E0\uFF08WHY\uFF09\u3001\u65B9\u6CD5\uFF08HOW\uFF09\u548C\u9884\u671F\u7ED3\u679C\uFF08EXPECTED RESULT\uFF09\u3002
|
|
97199
97204
|
|
|
97200
|
-
|
|
97205
|
+
\u683C\u5F0F\uFF1A"[\u4F4D\u7F6E] [\u65B9\u6CD5] \u4EE5 [\u539F\u56E0] \u2014 \u9884\u671F [\u7ED3\u679C]"
|
|
97201
97206
|
|
|
97202
|
-
|
|
97207
|
+
\u6B63\u786E\u793A\u4F8B\uFF1A
|
|
97203
97208
|
- "src/utils/validation.ts: Add validateEmail() for input sanitization \u2014 returns boolean"
|
|
97204
97209
|
- "UserService.create(): Call validateEmail() before DB insert \u2014 rejects invalid emails with 400"
|
|
97205
97210
|
- "validation.test.ts: Add test for missing @ sign \u2014 expect validateEmail('foo') to return false"
|
|
97206
97211
|
|
|
97207
|
-
|
|
97208
|
-
- "Implement email validation"
|
|
97209
|
-
- "Add dark mode"
|
|
97210
|
-
- "Fix auth"
|
|
97212
|
+
\u9519\u8BEF\u793A\u4F8B\uFF1A
|
|
97213
|
+
- "Implement email validation"\uFF08\u4F4D\u7F6E\uFF1F\u65B9\u6CD5\uFF1F\u7ED3\u679C\uFF1F\uFF09
|
|
97214
|
+
- "Add dark mode"\uFF08\u8FD9\u662F\u529F\u80FD\uFF0C\u4E0D\u662F\u5F85\u529E\uFF09
|
|
97215
|
+
- "Fix auth"\uFF08\u54EA\u4E2A\u6587\u4EF6\uFF1F\u4EC0\u4E48\u4FEE\u6539\uFF1F\u9884\u671F\u4EC0\u4E48\uFF1F\uFF09
|
|
97211
97216
|
|
|
97212
|
-
##
|
|
97217
|
+
## \u7C92\u5EA6\u89C4\u5219
|
|
97213
97218
|
|
|
97214
|
-
|
|
97219
|
+
\u6BCF\u4E2A\u5F85\u529E\u5FC5\u987B\u662F\u5355\u4E2A\u539F\u5B50\u64CD\u4F5C\uFF0C\u53EF\u5728 1-3 \u6B21\u5DE5\u5177\u8C03\u7528\u5185\u5B8C\u6210\u3002\u5982\u679C\u9700\u8981\u66F4\u591A\u8C03\u7528\uFF0C\u5219\u5E94\u62C6\u5206\u3002
|
|
97215
97220
|
|
|
97216
|
-
|
|
97221
|
+
**\u89C4\u6A21\u6D4B\u8BD5**\uFF1A\u4F60\u80FD\u5426\u901A\u8FC7\u7F16\u8F91\u4E00\u4E2A\u6587\u4EF6\u6216\u8FD0\u884C\u4E00\u4E2A\u547D\u4EE4\u6765\u5B8C\u6210\u6B64\u5F85\u529E\uFF1F\u5982\u679C\u4E0D\u80FD\uFF0C\u5219\u89C4\u6A21\u8FC7\u5927\u3002
|
|
97217
97222
|
|
|
97218
|
-
##
|
|
97219
|
-
-
|
|
97220
|
-
-
|
|
97221
|
-
-
|
|
97223
|
+
## \u4EFB\u52A1\u7BA1\u7406
|
|
97224
|
+
- \u4E00\u6B21\u53EA\u80FD\u6709\u4E00\u4E2A\u8FDB\u884C\u4E2D\uFF08in_progress\uFF09\u7684\u4EFB\u52A1\u3002\u5B8C\u6210\u540E\u518D\u5F00\u59CB\u4E0B\u4E00\u4E2A\u3002
|
|
97225
|
+
- \u6BCF\u9879\u5B8C\u6210\u540E\u7ACB\u5373\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210\u3002
|
|
97226
|
+
- \u7B80\u5355\u7684\u4E00\u6B21\u6027\u4EFB\u52A1\uFF08\u5355\u6B65\u3001\u660E\u663E\u64CD\u4F5C\uFF09\u65E0\u9700\u4F7F\u7528\u6B64\u5DE5\u5177\u3002`;
|
|
97222
97227
|
|
|
97223
97228
|
// src/hooks/todo-description-override/hook.ts
|
|
97224
97229
|
function createTodoDescriptionOverrideHook() {
|
|
@@ -119772,60 +119777,60 @@ Tip: reuse LINE#ID entries from the latest read/edit output, or batch related ed
|
|
|
119772
119777
|
}
|
|
119773
119778
|
|
|
119774
119779
|
// src/tools/hashline-edit/tool-description.ts
|
|
119775
|
-
var HASHLINE_EDIT_DESCRIPTION =
|
|
119776
|
-
|
|
119777
|
-
|
|
119778
|
-
1.
|
|
119779
|
-
2.
|
|
119780
|
-
3.
|
|
119781
|
-
4.
|
|
119782
|
-
5.
|
|
119783
|
-
|
|
119784
|
-
|
|
119785
|
-
- SNAPSHOT
|
|
119786
|
-
- replace
|
|
119787
|
-
- lines
|
|
119788
|
-
-
|
|
119789
|
-
-
|
|
119790
|
-
- lines
|
|
119791
|
-
|
|
119792
|
-
|
|
119793
|
-
|
|
119794
|
-
LINE#ID
|
|
119795
|
-
|
|
119796
|
-
{
|
|
119797
|
-
{
|
|
119798
|
-
|
|
119799
|
-
|
|
119800
|
-
|
|
119801
|
-
|
|
119802
|
-
|
|
119803
|
-
|
|
119804
|
-
append/prepend
|
|
119805
|
-
|
|
119806
|
-
|
|
119807
|
-
lines
|
|
119808
|
-
|
|
119809
|
-
lines: null
|
|
119810
|
-
|
|
119811
|
-
|
|
119812
|
-
delete=true
|
|
119813
|
-
rename
|
|
119814
|
-
|
|
119815
|
-
|
|
119816
|
-
1.
|
|
119817
|
-
2.
|
|
119818
|
-
3.
|
|
119819
|
-
4.
|
|
119820
|
-
5.
|
|
119821
|
-
6.
|
|
119822
|
-
7.
|
|
119823
|
-
8.
|
|
119824
|
-
9.
|
|
119825
|
-
|
|
119826
|
-
|
|
119827
|
-
|
|
119828
|
-
|
|
119780
|
+
var HASHLINE_EDIT_DESCRIPTION = `\u4F7F\u7528 LINE#ID \u683C\u5F0F\u7F16\u8F91\u6587\u4EF6\uFF0C\u5B9E\u73B0\u7CBE\u786E\u3001\u5B89\u5168\u7684\u4FEE\u6539\u3002
|
|
119781
|
+
|
|
119782
|
+
\u5DE5\u4F5C\u6D41\u7A0B\uFF1A
|
|
119783
|
+
1. \u8BFB\u53D6\u76EE\u6807\u6587\u4EF6/\u8303\u56F4\uFF0C\u590D\u5236\u7CBE\u786E\u7684 LINE#ID \u6807\u7B7E\u3002
|
|
119784
|
+
2. \u6BCF\u4E2A\u903B\u8F91\u53D8\u66F4\u70B9\u9009\u62E9\u6700\u5C0F\u5316\u7684\u64CD\u4F5C\u3002
|
|
119785
|
+
3. \u6BCF\u4E2A\u6587\u4EF6\u6BCF\u6B21\u63D0\u4EA4\u4E00\u4E2A\u7F16\u8F91\u8C03\u7528\uFF0C\u5305\u542B\u6240\u6709\u76F8\u5173\u64CD\u4F5C\u3002
|
|
119786
|
+
4. \u5982\u679C\u540C\u4E00\u6587\u4EF6\u9700\u8981\u518D\u6B21\u8C03\u7528\uFF0C\u5148\u91CD\u65B0\u8BFB\u53D6\u3002
|
|
119787
|
+
5. \u4EC5\u5C06\u951A\u70B9\u7528\u4F5C "LINE#ID"\uFF08\u6C38\u4E0D\u5305\u542B\u5C3E\u90E8 "|content"\uFF09\u3002
|
|
119788
|
+
|
|
119789
|
+
<\u5FC5\u987B\u9075\u5B88>
|
|
119790
|
+
- SNAPSHOT\uFF1A\u5355\u6B21\u8C03\u7528\u4E2D\u7684\u6240\u6709\u7F16\u8F91\u5747\u53C2\u7167\u539F\u59CB\u6587\u4EF6\u72B6\u6001\u3002\u4E0D\u8981\u4E3A\u540C\u4E00\u6B21\u8C03\u7528\u4E2D\u4E4B\u524D\u7684\u7F16\u8F91\u8C03\u6574\u884C\u53F7\u2014\u2014\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u4ECE\u4E0B\u5F80\u4E0A\u5E94\u7528\u5B83\u4EEC\u3002
|
|
119791
|
+
- replace \u5220\u9664 pos..end\uFF08\u5305\u542B\uFF09\u8303\u56F4\u7684\u884C\u5E76\u63D2\u5165\u65B0\u884C\u3002pos \u4E4B\u524D\u7684\u884C\u548C end \u4E4B\u540E\u7684\u884C\u4E0D\u53D7\u5F71\u54CD\u2014\u2014\u4E0D\u8981\u5C06\u5B83\u4EEC\u5305\u542B\u5728 lines \u4E2D\u3002\u5426\u5219\u4F1A\u51FA\u73B0\u91CD\u590D\u3002
|
|
119792
|
+
- lines \u5FC5\u987B\u53EA\u5305\u542B\u5C5E\u4E8E\u6240\u6D88\u8D39\u8303\u56F4\u5185\u7684\u5185\u5BB9\u3002end \u4E4B\u540E\u7684\u5185\u5BB9\u4FDD\u6301\u4E0D\u53D8\u3002
|
|
119793
|
+
- \u6807\u7B7E\u5FC5\u987B\u4ECE\u8BFB\u53D6\u8F93\u51FA\u6216 >>> \u4E0D\u5339\u914D\u8F93\u51FA\u4E2D\u7CBE\u786E\u590D\u5236\u3002\u5207\u52FF\u731C\u6D4B\u6807\u7B7E\u3002
|
|
119794
|
+
- \u6279\u91CF\u64CD\u4F5C = \u5728 edits[] \u4E2D\u5305\u542B\u591A\u4E2A\u64CD\u4F5C\uFF0C\u800C\u975E\u4E00\u4E2A\u8986\u76D6\u6240\u6709\u5185\u5BB9\u7684\u5927 replace\u3002\u6BCF\u4E2A\u64CD\u4F5C\u5E94\u9488\u5BF9\u6700\u5C0F\u7684\u53EF\u80FD\u53D8\u66F4\u3002
|
|
119795
|
+
- lines \u5FC5\u987B\u53EA\u5305\u542B\u7EAF\u66FF\u6362\u6587\u672C\uFF08\u4E0D\u542B LINE#ID \u524D\u7F00\uFF0C\u65E0 diff + \u6807\u8BB0\uFF09\u3002
|
|
119796
|
+
</\u5FC5\u987B\u9075\u5B88>
|
|
119797
|
+
|
|
119798
|
+
<\u64CD\u4F5C\u8BF4\u660E>
|
|
119799
|
+
LINE#ID \u683C\u5F0F\uFF1A
|
|
119800
|
+
\u6BCF\u884C\u5F15\u7528\u5FC5\u987B\u91C7\u7528 "{\u884C\u53F7}#{\u54C8\u5E0CID}" \u683C\u5F0F\uFF0C\u5176\u4E2D\uFF1A
|
|
119801
|
+
{\u884C\u53F7}\uFF1A\u4ECE 1 \u5F00\u59CB\u7684\u884C\u53F7
|
|
119802
|
+
{\u54C8\u5E0CID}\uFF1A\u6765\u81EA ZPMQVRWSNKTXJBYH \u96C6\u5408\u7684\u4E24\u4E2A CID \u5B57\u6BCD
|
|
119803
|
+
|
|
119804
|
+
\u64CD\u4F5C\u9009\u62E9\uFF1A
|
|
119805
|
+
\u4EC5\u7528 pos \u8FDB\u884C replace \u2192 \u66FF\u6362 pos \u5904\u7684\u4E00\u884C
|
|
119806
|
+
\u7528 pos+end \u8FDB\u884C replace \u2192 \u5C06 pos..end \u8303\u56F4\uFF08\u542B\uFF09\u4F5C\u4E3A\u5757\u66FF\u6362\uFF08\u8303\u56F4\u5728\u591A\u4E2A\u7F16\u8F91\u95F4\u4E0D\u5F97\u91CD\u53E0\uFF09
|
|
119807
|
+
\u7528 pos/end \u951A\u70B9\u8FDB\u884C append \u2192 \u5728\u8BE5\u951A\u70B9\u4E4B\u540E\u63D2\u5165
|
|
119808
|
+
\u7528 pos/end \u951A\u70B9\u8FDB\u884C prepend \u2192 \u5728\u8BE5\u951A\u70B9\u4E4B\u524D\u63D2\u5165
|
|
119809
|
+
\u65E0\u951A\u70B9\u7684 append/prepend \u2192 \u5728 EOF/BOF \u63D2\u5165\uFF08\u4E5F\u53EF\u521B\u5EFA\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\uFF09
|
|
119810
|
+
|
|
119811
|
+
\u5185\u5BB9\u683C\u5F0F\uFF1A
|
|
119812
|
+
lines \u53EF\u4EE5\u662F\u5B57\u7B26\u4E32\uFF08\u5355\u884C\uFF09\u6216 string[]\uFF08\u591A\u884C\uFF0C\u63A8\u8350\uFF09\u3002
|
|
119813
|
+
\u5982\u679C\u4F20\u5165\u591A\u884C\u5B57\u7B26\u4E32\uFF0C\u5C06\u6309\u771F\u5B9E\u6362\u884C\u7B26\u62C6\u5206\u3002
|
|
119814
|
+
lines: null \u6216 lines: [] \u914D\u5408 replace \u2192 \u5220\u9664\u8FD9\u4E9B\u884C\u3002
|
|
119815
|
+
|
|
119816
|
+
\u6587\u4EF6\u6A21\u5F0F\uFF1A
|
|
119817
|
+
delete=true \u5220\u9664\u6587\u4EF6\uFF0C\u8981\u6C42 edits=[] \u4E14\u65E0 rename
|
|
119818
|
+
rename \u5C06\u6700\u7EC8\u5185\u5BB9\u79FB\u52A8\u5230\u65B0\u8DEF\u5F84\u5E76\u5220\u9664\u65E7\u8DEF\u5F84
|
|
119819
|
+
|
|
119820
|
+
\u89C4\u5219\uFF1A
|
|
119821
|
+
1. \u6700\u5C0F\u5316\u8303\u56F4\uFF1A\u6BCF\u4E2A\u903B\u8F91\u53D8\u66F4\u70B9\u4E00\u4E2A\u64CD\u4F5C\u3002
|
|
119822
|
+
2. \u4FDD\u6301\u683C\u5F0F\uFF1A\u4FDD\u7559\u7F29\u8FDB\u3001\u6807\u70B9\u3001\u6362\u884C\u3001\u5C3E\u90E8\u9017\u53F7\u3001\u5927\u62EC\u53F7\u98CE\u683C\u3002
|
|
119823
|
+
3. \u4F18\u5148\u63D2\u5165\u800C\u975E\u90BB\u8FD1\u91CD\u5199\uFF1A\u951A\u5B9A\u5230\u7ED3\u6784\u8FB9\u754C\uFF08}\u3001]\u3001}), \u800C\u975E\u5185\u90E8\u5C5E\u6027\u884C\u3002
|
|
119824
|
+
4. \u7981\u6B62\u65E0\u610F\u4E49\u64CD\u4F5C\uFF1A\u66FF\u6362\u5185\u5BB9\u5FC5\u987B\u4E0E\u5F53\u524D\u5185\u5BB9\u4E0D\u540C\u3002
|
|
119825
|
+
5. \u4EC5\u4FEE\u6539\u8BF7\u6C42\u7684\u4EE3\u7801\uFF1A\u907F\u514D\u9644\u5E26\u7F16\u8F91\u3002
|
|
119826
|
+
6. \u4F7F\u7528\u7CBE\u786E\u7684\u5F53\u524D\u6807\u8BB0\uFF1A\u7EDD\u4E0D\u8FD1\u4F3C\u91CD\u5199\u3002
|
|
119827
|
+
7. \u5BF9\u4E8E\u4EA4\u6362/\u79FB\u52A8\uFF1A\u4F18\u5148\u4F7F\u7528\u4E00\u4E2A\u8303\u56F4\u64CD\u4F5C\u800C\u975E\u591A\u4E2A\u5355\u884C\u64CD\u4F5C\u3002
|
|
119828
|
+
8. \u951A\u5B9A\u5230\u7ED3\u6784\u884C\uFF08\u51FD\u6570/\u7C7B/\u5927\u62EC\u53F7\uFF09\uFF0C\u7EDD\u4E0D\u5B9A\u951A\u5230\u7A7A\u884C\u3002
|
|
119829
|
+
9. \u6BCF\u6B21\u6210\u529F\u7F16\u8F91\u8C03\u7528\u540E\u91CD\u65B0\u8BFB\u53D6\uFF0C\u518D\u5BF9\u540C\u4E00\u6587\u4EF6\u53D1\u51FA\u4E0B\u4E00\u4E2A\u8C03\u7528\u3002
|
|
119830
|
+
</\u64CD\u4F5C\u8BF4\u660E>
|
|
119831
|
+
|
|
119832
|
+
<\u793A\u4F8B>
|
|
119833
|
+
\u8BFB\u53D6\u540E\u6587\u4EF6\u5185\u5BB9\u5982\u4E0B\uFF1A
|
|
119829
119834
|
10#VK|function hello() {
|
|
119830
119835
|
11#XJ| console.log("hi");
|
|
119831
119836
|
12#MB| console.log("bye");
|
|
@@ -119833,40 +119838,41 @@ Given this file content after read:
|
|
|
119833
119838
|
14#TN|
|
|
119834
119839
|
15#WS|function world() {
|
|
119835
119840
|
|
|
119836
|
-
|
|
119841
|
+
\u5355\u884C\u66FF\u6362\uFF08\u4FEE\u6539\u7B2C 11 \u884C\uFF09\uFF1A
|
|
119837
119842
|
{ op: "replace", pos: "11#XJ", lines: [" console.log(\\"hello\\");"] }
|
|
119838
|
-
|
|
119843
|
+
\u7ED3\u679C\uFF1A\u66FF\u6362\u7B2C 11 \u884C\u3002\u7B2C 10\u300112-15 \u884C\u4E0D\u53D8\u3002
|
|
119839
119844
|
|
|
119840
|
-
|
|
119845
|
+
\u8303\u56F4\u66FF\u6362\uFF08\u91CD\u5199\u51FD\u6570\u4F53\uFF0C\u7B2C 11-12 \u884C\uFF09\uFF1A
|
|
119841
119846
|
{ op: "replace", pos: "11#XJ", end: "12#MB", lines: [" return \\"hello world\\";"] }
|
|
119842
|
-
|
|
119847
|
+
\u7ED3\u679C\uFF1A\u5220\u9664\u7B2C 11-12 \u884C\uFF0C\u66FF\u6362\u4E3A 1 \u884C\u65B0\u5185\u5BB9\u3002\u7B2C 10\u300113-15 \u884C\u4E0D\u53D8\u3002
|
|
119843
119848
|
|
|
119844
|
-
|
|
119849
|
+
\u5220\u9664\u4E00\u884C\uFF1A
|
|
119845
119850
|
{ op: "replace", pos: "12#MB", lines: null }
|
|
119846
|
-
|
|
119851
|
+
\u7ED3\u679C\uFF1A\u5220\u9664\u7B2C 12 \u884C\u3002\u7B2C 10-11\u300113-15 \u884C\u4E0D\u53D8\u3002
|
|
119847
119852
|
|
|
119848
|
-
|
|
119853
|
+
\u5728\u7B2C 13 \u884C\u540E\u63D2\u5165\uFF08\u4E24\u51FD\u6570\u4E4B\u95F4\uFF09\uFF1A
|
|
119849
119854
|
{ op: "append", pos: "13#QR", lines: ["", "function added() {", " return true;", "}"] }
|
|
119850
|
-
|
|
119855
|
+
\u7ED3\u679C\uFF1A\u5728\u7B2C 13 \u884C\u540E\u63D2\u5165 4 \u884C\u65B0\u5185\u5BB9\u3002\u6240\u6709\u73B0\u6709\u884C\u4E0D\u53D8\u3002
|
|
119851
119856
|
|
|
119852
|
-
|
|
119857
|
+
\u9519\u8BEF\u793A\u4F8B \u2014 lines \u8D85\u51FA end\uFF08\u5BFC\u81F4\u7B2C 13 \u884C\u91CD\u590D\uFF09\uFF1A
|
|
119853
119858
|
{ op: "replace", pos: "11#XJ", end: "12#MB", lines: [" return \\"hi\\";", "}"] }
|
|
119854
|
-
|
|
119855
|
-
|
|
119856
|
-
|
|
119857
|
-
|
|
119858
|
-
|
|
119859
|
-
|
|
119860
|
-
|
|
119861
|
-
|
|
119862
|
-
BOM
|
|
119863
|
-
|
|
119864
|
-
|
|
119865
|
-
|
|
119866
|
-
|
|
119867
|
-
|
|
119868
|
-
|
|
119869
|
-
|
|
119859
|
+
\u7B2C 13 \u884C\u662F "}"\uFF0C\u5DF2\u5B58\u5728\u4E8E end \u4E4B\u540E\u3002\u5C06 "}" \u5305\u542B\u5728 lines \u4E2D\u4F1A\u5BFC\u81F4\u91CD\u590D\u3002
|
|
119860
|
+
\u6B63\u786E\u5199\u6CD5\uFF1A{ op: "replace", pos: "11#XJ", end: "12#MB", lines: [" return \\"hi\\";"] }
|
|
119861
|
+
</\u793A\u4F8B>
|
|
119862
|
+
|
|
119863
|
+
<\u81EA\u52A8\u4FEE\u6B63>
|
|
119864
|
+
\u5185\u7F6E\u81EA\u52A8\u7EA0\u6B63\uFF08\u65E0\u9700\u624B\u52A8\u5904\u7406\uFF09\uFF1A
|
|
119865
|
+
\u5408\u5E76\u7684\u884C\u4F1A\u81EA\u52A8\u6269\u5C55\u56DE\u539F\u59CB\u884C\u6570\u3002
|
|
119866
|
+
\u7F29\u8FDB\u4F1A\u4ECE\u539F\u59CB\u884C\u81EA\u52A8\u6062\u590D\u3002
|
|
119867
|
+
BOM \u548C CRLF \u6362\u884C\u7B26\u81EA\u52A8\u4FDD\u7559\u3002
|
|
119868
|
+
\u6587\u672C\u4E2D\u7684 hashline \u524D\u7F00\u548C diff \u6807\u8BB0\u4F1A\u81EA\u52A8\u53BB\u9664\u3002
|
|
119869
|
+
\u8FB9\u754C\u56DE\u663E\u884C\uFF08\u590D\u5236\u76F8\u90BB\u5B58\u6D3B\u884C\uFF09\u4F1A\u81EA\u52A8\u53BB\u9664\u3002
|
|
119870
|
+
</\u81EA\u52A8\u4FEE\u6B63>
|
|
119871
|
+
|
|
119872
|
+
\u6062\u590D\uFF08\u51FA\u73B0 >>> \u4E0D\u5339\u914D\u9519\u8BEF\u65F6\uFF09\uFF1A
|
|
119873
|
+
\u76F4\u63A5\u590D\u5236\u9519\u8BEF\u8F93\u51FA\u4E2D\u663E\u793A\u7684\u66F4\u65B0\u540E\u7684 LINE#ID \u6807\u7B7E\u3002
|
|
119874
|
+
\u4EC5\u5728\u9519\u8BEF\u7247\u6BB5\u4E2D\u7F3A\u5C11\u6240\u9700\u6807\u7B7E\u65F6\u624D\u91CD\u65B0\u8BFB\u53D6\u3002
|
|
119875
|
+
`;
|
|
119870
119876
|
|
|
119871
119877
|
// src/tools/hashline-edit/tools.ts
|
|
119872
119878
|
function createHashlineEditTool(ctx) {
|
|
@@ -130561,7 +130567,7 @@ function createSisyphusAgent(model, availableAgents, availableToolNames, availab
|
|
|
130561
130567
|
if (isGpt5_4Model(model)) {
|
|
130562
130568
|
const prompt2 = buildGpt54SisyphusPrompt(model, agents, tools, skills2, categories2, useTaskSystem);
|
|
130563
130569
|
return {
|
|
130564
|
-
description: "
|
|
130570
|
+
description: "\u5F3A\u5927\u7684 AI \u7F16\u6392\u5668\u3002\u901A\u8FC7\u5F85\u529E\u4E8B\u9879\u6267\u7740\u5730\u89C4\u5212\uFF0C\u5728\u63A2\u7D22\u524D\u8BC4\u4F30\u641C\u7D22\u590D\u6742\u5EA6\uFF0C\u901A\u8FC7 category+skills \u7EC4\u5408\u7B56\u7565\u6027\u5730\u5206\u914D\u4EFB\u52A1\u3002\u5BF9\u5185\u90E8\u4EE3\u7801\u4F7F\u7528 explore\uFF08\u652F\u6301\u5E76\u884C\uFF09\uFF0C\u5BF9\u5916\u90E8\u6587\u6863\u4F7F\u7528 librarian\u3002\uFF08Sisyphus - OhMyOpenCode\uFF09",
|
|
130565
130571
|
mode: MODE,
|
|
130566
130572
|
model,
|
|
130567
130573
|
maxTokens: 64000,
|
|
@@ -130597,7 +130603,7 @@ ${buildGeminiVerificationOverride()}
|
|
|
130597
130603
|
call_omo_agent: "deny"
|
|
130598
130604
|
};
|
|
130599
130605
|
const base = {
|
|
130600
|
-
description: "
|
|
130606
|
+
description: "\u5F3A\u5927\u7684 AI \u7F16\u6392\u5668\u3002\u901A\u8FC7\u5F85\u529E\u4E8B\u9879\u6267\u7740\u5730\u89C4\u5212\uFF0C\u5728\u63A2\u7D22\u524D\u8BC4\u4F30\u641C\u7D22\u590D\u6742\u5EA6\uFF0C\u901A\u8FC7 category+skills \u7EC4\u5408\u7B56\u7565\u6027\u5730\u5206\u914D\u4EFB\u52A1\u3002\u5BF9\u5185\u90E8\u4EE3\u7801\u4F7F\u7528 explore\uFF08\u652F\u6301\u5E76\u884C\uFF09\uFF0C\u5BF9\u5916\u90E8\u6587\u6863\u4F7F\u7528 librarian\u3002\uFF08Sisyphus - OhMyOpenCode\uFF09",
|
|
130601
130607
|
mode: MODE,
|
|
130602
130608
|
model,
|
|
130603
130609
|
maxTokens: 64000,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { OhMyOpenCodeConfig } from "../config/schema/oh-my-opencode-config";
|
|
1
2
|
export type ContextLimitModelCacheState = {
|
|
2
3
|
anthropicContext1MEnabled: boolean;
|
|
3
4
|
modelContextLimitsCache?: Map<string, number>;
|
|
4
5
|
};
|
|
5
|
-
export declare function resolveActualContextLimit(providerID: string, modelID: string, modelCacheState?: ContextLimitModelCacheState): number | null;
|
|
6
|
+
export declare function resolveActualContextLimit(providerID: string, modelID: string, modelCacheState?: ContextLimitModelCacheState, pluginConfig?: OhMyOpenCodeConfig): number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const HASHLINE_EDIT_DESCRIPTION = "
|
|
1
|
+
export declare const HASHLINE_EDIT_DESCRIPTION = "\u4F7F\u7528 LINE#ID \u683C\u5F0F\u7F16\u8F91\u6587\u4EF6\uFF0C\u5B9E\u73B0\u7CBE\u786E\u3001\u5B89\u5168\u7684\u4FEE\u6539\u3002\n\n\u5DE5\u4F5C\u6D41\u7A0B\uFF1A\n1. \u8BFB\u53D6\u76EE\u6807\u6587\u4EF6/\u8303\u56F4\uFF0C\u590D\u5236\u7CBE\u786E\u7684 LINE#ID \u6807\u7B7E\u3002\n2. \u6BCF\u4E2A\u903B\u8F91\u53D8\u66F4\u70B9\u9009\u62E9\u6700\u5C0F\u5316\u7684\u64CD\u4F5C\u3002\n3. \u6BCF\u4E2A\u6587\u4EF6\u6BCF\u6B21\u63D0\u4EA4\u4E00\u4E2A\u7F16\u8F91\u8C03\u7528\uFF0C\u5305\u542B\u6240\u6709\u76F8\u5173\u64CD\u4F5C\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\u7528\u4F5C \"LINE#ID\"\uFF08\u6C38\u4E0D\u5305\u542B\u5C3E\u90E8 \"|content\"\uFF09\u3002\n\n<\u5FC5\u987B\u9075\u5B88>\n- SNAPSHOT\uFF1A\u5355\u6B21\u8C03\u7528\u4E2D\u7684\u6240\u6709\u7F16\u8F91\u5747\u53C2\u7167\u539F\u59CB\u6587\u4EF6\u72B6\u6001\u3002\u4E0D\u8981\u4E3A\u540C\u4E00\u6B21\u8C03\u7528\u4E2D\u4E4B\u524D\u7684\u7F16\u8F91\u8C03\u6574\u884C\u53F7\u2014\u2014\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u4ECE\u4E0B\u5F80\u4E0A\u5E94\u7528\u5B83\u4EEC\u3002\n- replace \u5220\u9664 pos..end\uFF08\u5305\u542B\uFF09\u8303\u56F4\u7684\u884C\u5E76\u63D2\u5165\u65B0\u884C\u3002pos \u4E4B\u524D\u7684\u884C\u548C end \u4E4B\u540E\u7684\u884C\u4E0D\u53D7\u5F71\u54CD\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\u5C5E\u4E8E\u6240\u6D88\u8D39\u8303\u56F4\u5185\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 >>> \u4E0D\u5339\u914D\u8F93\u51FA\u4E2D\u7CBE\u786E\u590D\u5236\u3002\u5207\u52FF\u731C\u6D4B\u6807\u7B7E\u3002\n- \u6279\u91CF\u64CD\u4F5C = \u5728 edits[] \u4E2D\u5305\u542B\u591A\u4E2A\u64CD\u4F5C\uFF0C\u800C\u975E\u4E00\u4E2A\u8986\u76D6\u6240\u6709\u5185\u5BB9\u7684\u5927 replace\u3002\u6BCF\u4E2A\u64CD\u4F5C\u5E94\u9488\u5BF9\u6700\u5C0F\u7684\u53EF\u80FD\u53D8\u66F4\u3002\n- lines \u5FC5\u987B\u53EA\u5305\u542B\u7EAF\u66FF\u6362\u6587\u672C\uFF08\u4E0D\u542B LINE#ID \u524D\u7F00\uFF0C\u65E0 diff + \u6807\u8BB0\uFF09\u3002\n</\u5FC5\u987B\u9075\u5B88>\n\n<\u64CD\u4F5C\u8BF4\u660E>\nLINE#ID \u683C\u5F0F\uFF1A\n \u6BCF\u884C\u5F15\u7528\u5FC5\u987B\u91C7\u7528 \"{\u884C\u53F7}#{\u54C8\u5E0CID}\" \u683C\u5F0F\uFF0C\u5176\u4E2D\uFF1A\n {\u884C\u53F7}\uFF1A\u4ECE 1 \u5F00\u59CB\u7684\u884C\u53F7\n {\u54C8\u5E0CID}\uFF1A\u6765\u81EA ZPMQVRWSNKTXJBYH \u96C6\u5408\u7684\u4E24\u4E2A CID \u5B57\u6BCD\n\n\u64CD\u4F5C\u9009\u62E9\uFF1A\n \u4EC5\u7528 pos \u8FDB\u884C replace \u2192 \u66FF\u6362 pos \u5904\u7684\u4E00\u884C\n \u7528 pos+end \u8FDB\u884C replace \u2192 \u5C06 pos..end \u8303\u56F4\uFF08\u542B\uFF09\u4F5C\u4E3A\u5757\u66FF\u6362\uFF08\u8303\u56F4\u5728\u591A\u4E2A\u7F16\u8F91\u95F4\u4E0D\u5F97\u91CD\u53E0\uFF09\n \u7528 pos/end \u951A\u70B9\u8FDB\u884C append \u2192 \u5728\u8BE5\u951A\u70B9\u4E4B\u540E\u63D2\u5165\n \u7528 pos/end \u951A\u70B9\u8FDB\u884C prepend \u2192 \u5728\u8BE5\u951A\u70B9\u4E4B\u524D\u63D2\u5165\n \u65E0\u951A\u70B9\u7684 append/prepend \u2192 \u5728 EOF/BOF \u63D2\u5165\uFF08\u4E5F\u53EF\u521B\u5EFA\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\uFF09\n\n\u5185\u5BB9\u683C\u5F0F\uFF1A\n lines \u53EF\u4EE5\u662F\u5B57\u7B26\u4E32\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\u771F\u5B9E\u6362\u884C\u7B26\u62C6\u5206\u3002\n lines: null \u6216 lines: [] \u914D\u5408 replace \u2192 \u5220\u9664\u8FD9\u4E9B\u884C\u3002\n\n\u6587\u4EF6\u6A21\u5F0F\uFF1A\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\uFF1A\n 1. \u6700\u5C0F\u5316\u8303\u56F4\uFF1A\u6BCF\u4E2A\u903B\u8F91\u53D8\u66F4\u70B9\u4E00\u4E2A\u64CD\u4F5C\u3002\n 2. \u4FDD\u6301\u683C\u5F0F\uFF1A\u4FDD\u7559\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\u90BB\u8FD1\u91CD\u5199\uFF1A\u951A\u5B9A\u5230\u7ED3\u6784\u8FB9\u754C\uFF08}\u3001]\u3001}), \u800C\u975E\u5185\u90E8\u5C5E\u6027\u884C\u3002\n 4. \u7981\u6B62\u65E0\u610F\u4E49\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\u6807\u8BB0\uFF1A\u7EDD\u4E0D\u8FD1\u4F3C\u91CD\u5199\u3002\n 7. \u5BF9\u4E8E\u4EA4\u6362/\u79FB\u52A8\uFF1A\u4F18\u5148\u4F7F\u7528\u4E00\u4E2A\u8303\u56F4\u64CD\u4F5C\u800C\u975E\u591A\u4E2A\u5355\u884C\u64CD\u4F5C\u3002\n 8. \u951A\u5B9A\u5230\u7ED3\u6784\u884C\uFF08\u51FD\u6570/\u7C7B/\u5927\u62EC\u53F7\uFF09\uFF0C\u7EDD\u4E0D\u5B9A\u951A\u5230\u7A7A\u884C\u3002\n 9. \u6BCF\u6B21\u6210\u529F\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</\u64CD\u4F5C\u8BF4\u660E>\n\n<\u793A\u4F8B>\n\u8BFB\u53D6\u540E\u6587\u4EF6\u5185\u5BB9\u5982\u4E0B\uFF1A\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\uFF1A\n { op: \"replace\", pos: \"11#XJ\", lines: [\" console.log(\\\"hello\\\");\"] }\n \u7ED3\u679C\uFF1A\u66FF\u6362\u7B2C 11 \u884C\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\uFF1A\n { op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hello world\\\";\"] }\n \u7ED3\u679C\uFF1A\u5220\u9664\u7B2C 11-12 \u884C\uFF0C\u66FF\u6362\u4E3A 1 \u884C\u65B0\u5185\u5BB9\u3002\u7B2C 10\u300113-15 \u884C\u4E0D\u53D8\u3002\n\n\u5220\u9664\u4E00\u884C\uFF1A\n { op: \"replace\", pos: \"12#MB\", lines: null }\n \u7ED3\u679C\uFF1A\u5220\u9664\u7B2C 12 \u884C\u3002\u7B2C 10-11\u300113-15 \u884C\u4E0D\u53D8\u3002\n\n\u5728\u7B2C 13 \u884C\u540E\u63D2\u5165\uFF08\u4E24\u51FD\u6570\u4E4B\u95F4\uFF09\uFF1A\n { op: \"append\", pos: \"13#QR\", lines: [\"\", \"function added() {\", \" return true;\", \"}\"] }\n \u7ED3\u679C\uFF1A\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 \u2014 lines \u8D85\u51FA end\uFF08\u5BFC\u81F4\u7B2C 13 \u884C\u91CD\u590D\uFF09\uFF1A\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\u5C06 \"}\" \u5305\u542B\u5728 lines \u4E2D\u4F1A\u5BFC\u81F4\u91CD\u590D\u3002\n \u6B63\u786E\u5199\u6CD5\uFF1A{ op: \"replace\", pos: \"11#XJ\", end: \"12#MB\", lines: [\" return \\\"hi\\\";\"] }\n</\u793A\u4F8B>\n\n<\u81EA\u52A8\u4FEE\u6B63>\n\u5185\u7F6E\u81EA\u52A8\u7EA0\u6B63\uFF08\u65E0\u9700\u624B\u52A8\u5904\u7406\uFF09\uFF1A\n \u5408\u5E76\u7684\u884C\u4F1A\u81EA\u52A8\u6269\u5C55\u56DE\u539F\u59CB\u884C\u6570\u3002\n \u7F29\u8FDB\u4F1A\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\u4F1A\u81EA\u52A8\u53BB\u9664\u3002\n \u8FB9\u754C\u56DE\u663E\u884C\uFF08\u590D\u5236\u76F8\u90BB\u5B58\u6D3B\u884C\uFF09\u4F1A\u81EA\u52A8\u53BB\u9664\u3002\n</\u81EA\u52A8\u4FEE\u6B63>\n\n\u6062\u590D\uFF08\u51FA\u73B0 >>> \u4E0D\u5339\u914D\u9519\u8BEF\u65F6\uFF09\uFF1A\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\u3002\n";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skj1724/oh-my-opencode",
|
|
3
|
-
"version": "3.11.
|
|
3
|
+
"version": "3.11.3",
|
|
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",
|