oh-my-opencode 5.0.0-beta.10 → 5.0.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/cli/index.js +34 -86
  2. package/dist/cli-node/index.js +34 -86
  3. package/dist/index.js +80 -93
  4. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  5. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  6. package/dist/tools/delegate-task/tool-description.d.ts +3 -1
  7. package/dist/tui.js +19 -71
  8. package/package.json +14 -14
  9. package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
  10. package/packages/lsp-core/src/lsp/client-wrapper.test.ts +6 -6
  11. package/packages/lsp-core/src/lsp/client-wrapper.ts +5 -6
  12. package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
  13. package/packages/lsp-core/src/lsp/workspace-markers.ts +1 -0
  14. package/packages/lsp-daemon/dist/cli.js +94 -59
  15. package/packages/lsp-daemon/dist/client.js +72 -37
  16. package/packages/lsp-daemon/dist/index.js +78 -43
  17. package/packages/lsp-tools-mcp/dist/cli.js +68 -33
  18. package/packages/lsp-tools-mcp/dist/mcp.js +68 -33
  19. package/packages/lsp-tools-mcp/dist/tools.js +68 -33
  20. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  21. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  22. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +9 -0
  24. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +9 -0
  25. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  29. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  33. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +83 -54
  34. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  35. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  37. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  39. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  40. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  41. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  42. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  43. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  45. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  47. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  71. package/packages/omo-codex/plugin/package-lock.json +13 -13
  72. package/packages/omo-codex/plugin/package.json +1 -1
  73. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
package/dist/cli/index.js CHANGED
@@ -2145,7 +2145,7 @@ var package_default;
2145
2145
  var init_package = __esm(() => {
2146
2146
  package_default = {
2147
2147
  name: "oh-my-opencode",
2148
- version: "5.0.0-beta.10",
2148
+ version: "5.0.0-beta.12",
2149
2149
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
2150
2150
  main: "./dist/index.js",
2151
2151
  types: "dist/index.d.ts",
@@ -2326,7 +2326,7 @@ var init_package = __esm(() => {
2326
2326
  zod: "^4.4.3"
2327
2327
  },
2328
2328
  devDependencies: {
2329
- "@code-yeongyu/senpi": "2026.8.18-2",
2329
+ "@code-yeongyu/senpi": "2026.8.19",
2330
2330
  "@oh-my-opencode/agents-md-core": "workspace:*",
2331
2331
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
2332
2332
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -2367,18 +2367,18 @@ var init_package = __esm(() => {
2367
2367
  typescript: "^7.0.2"
2368
2368
  },
2369
2369
  optionalDependencies: {
2370
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.10",
2371
- "oh-my-opencode-darwin-x64": "5.0.0-beta.10",
2372
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.10",
2373
- "oh-my-opencode-linux-arm64": "5.0.0-beta.10",
2374
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.10",
2375
- "oh-my-opencode-linux-x64": "5.0.0-beta.10",
2376
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.10",
2377
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.10",
2378
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.10",
2379
- "oh-my-opencode-windows-arm64": "5.0.0-beta.10",
2380
- "oh-my-opencode-windows-x64": "5.0.0-beta.10",
2381
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.10"
2370
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.12",
2371
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.12",
2372
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.12",
2373
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.12",
2374
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.12",
2375
+ "oh-my-opencode-linux-x64": "5.0.0-beta.12",
2376
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.12",
2377
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.12",
2378
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.12",
2379
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.12",
2380
+ "oh-my-opencode-windows-x64": "5.0.0-beta.12",
2381
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.12"
2382
2382
  },
2383
2383
  overrides: {
2384
2384
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -22406,7 +22406,7 @@ var init_codegraph = __esm(() => {
22406
22406
  });
22407
22407
 
22408
22408
  // packages/omo-config-core/src/schema/memory.ts
22409
- var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
22409
+ var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
22410
22410
  var init_memory = __esm(() => {
22411
22411
  init_zod();
22412
22412
  OmoMemoryReflectionTriggerSchema = object({
@@ -22452,6 +22452,9 @@ var init_memory = __esm(() => {
22452
22452
  OmoMemorySoulSchema = object({
22453
22453
  edit_notice: boolean2().default(true)
22454
22454
  }).strict();
22455
+ OmoMemoryWriteNoticeSchema = object({
22456
+ enabled: boolean2().default(true)
22457
+ }).strict();
22455
22458
  OmoMemoryReflectionTriggerLayerSchema = object({
22456
22459
  step_count: number2().int().nonnegative().optional(),
22457
22460
  on_compaction: boolean2().optional()
@@ -22495,6 +22498,9 @@ var init_memory = __esm(() => {
22495
22498
  OmoMemorySoulLayerSchema = object({
22496
22499
  edit_notice: boolean2().optional()
22497
22500
  }).strict();
22501
+ OmoMemoryWriteNoticeLayerSchema = object({
22502
+ enabled: boolean2().optional()
22503
+ }).strict();
22498
22504
  OmoMemoryAgentOverridesSchema = object({
22499
22505
  enabled: boolean2().optional(),
22500
22506
  agent: string2().min(1).optional(),
@@ -22504,6 +22510,7 @@ var init_memory = __esm(() => {
22504
22510
  dream: OmoMemoryDreamLayerSchema.optional(),
22505
22511
  people: OmoMemoryPeopleLayerSchema.optional(),
22506
22512
  soul: OmoMemorySoulLayerSchema.optional(),
22513
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
22507
22514
  sync: OmoMemorySyncLayerSchema.optional(),
22508
22515
  search: OmoMemorySearchLayerSchema.optional(),
22509
22516
  compile_warn_tokens: number2().int().positive().optional()
@@ -22532,6 +22539,7 @@ var init_memory = __esm(() => {
22532
22539
  }),
22533
22540
  people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
22534
22541
  soul: OmoMemorySoulSchema.default({ edit_notice: true }),
22542
+ write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
22535
22543
  sync: OmoMemorySyncSchema.default({ enabled: true }),
22536
22544
  search: OmoMemorySearchSchema.default({ enabled: true }),
22537
22545
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -22547,6 +22555,7 @@ var init_memory = __esm(() => {
22547
22555
  dream: OmoMemoryDreamLayerSchema.optional(),
22548
22556
  people: OmoMemoryPeopleLayerSchema.optional(),
22549
22557
  soul: OmoMemorySoulLayerSchema.optional(),
22558
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
22550
22559
  sync: OmoMemorySyncLayerSchema.optional(),
22551
22560
  search: OmoMemorySearchLayerSchema.optional(),
22552
22561
  compile_warn_tokens: number2().int().positive().optional(),
@@ -27941,24 +27950,14 @@ var init_agent_display_names = __esm(() => {
27941
27950
  // packages/omo-opencode/src/tools/delegate-task/anthropic-categories.ts
27942
27951
  var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
27943
27952
  You are working on tasks that don't fit specific categories but require substantial effort.
27944
-
27945
- <Selection_Gate>
27946
- BEFORE selecting this category, VERIFY ALL conditions:
27947
- 1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)
27948
- 2. Task requires substantial effort across multiple systems/modules
27949
- 3. Changes have broad impact or require careful coordination
27950
- 4. NOT just "complex" - must be genuinely unclassifiable AND high-effort
27951
-
27952
- If task fits ANY other category, DO NOT select unspecified-high.
27953
- If task is unclassifiable but moderate-effort, use unspecified-low instead.
27954
- </Selection_Gate>
27955
- </Category_Context>`, ANTHROPIC_CATEGORIES;
27953
+ </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, ANTHROPIC_CATEGORIES;
27956
27954
  var init_anthropic_categories = __esm(() => {
27957
27955
  ANTHROPIC_CATEGORIES = [
27958
27956
  {
27959
27957
  name: "unspecified-high",
27960
27958
  config: { model: "kimi-for-coding/k3", variant: "max" },
27961
27959
  description: "Tasks that don't fit other categories, high effort required",
27960
+ callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
27962
27961
  promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND
27963
27962
  }
27964
27963
  ];
@@ -28215,64 +28214,10 @@ Approach:
28215
28214
  - Minimal viable implementation
28216
28215
  - Skip unnecessary abstractions
28217
28216
  - Direct and concise
28218
- </Category_Context>
28219
-
28220
- <Caller_Warning>
28221
- THIS CATEGORY USES A SMALLER/FASTER MODEL (gpt-5.6-luna-fast).
28222
-
28223
- The model executing this task is optimized for speed over depth. Your prompt MUST be:
28224
-
28225
- **EXHAUSTIVELY EXPLICIT** - Leave NOTHING to interpretation:
28226
- 1. MUST DO: List every required action as atomic, numbered steps
28227
- 2. MUST NOT DO: Explicitly forbid likely mistakes and deviations
28228
- 3. EXPECTED OUTPUT: Describe exact success criteria with concrete examples
28229
-
28230
- **WHY THIS MATTERS:**
28231
- - Smaller models benefit from explicit guardrails
28232
- - Vague instructions may lead to unpredictable results
28233
- - Implicit expectations may be missed
28234
- **PROMPT STRUCTURE (MANDATORY):**
28235
- \`\`\`
28236
- TASK: [One-sentence goal]
28237
-
28238
- MUST DO:
28239
- 1. [Specific action with exact details]
28240
- 2. [Another specific action]
28241
- ...
28242
-
28243
- MUST NOT DO:
28244
- - [Forbidden action + why]
28245
- - [Another forbidden action]
28246
- ...
28247
-
28248
- EXPECTED OUTPUT:
28249
- - [Exact deliverable description]
28250
- - [Success criteria / verification method]
28251
- \`\`\`
28252
-
28253
- If your prompt lacks this structure, REWRITE IT before delegating.
28254
- </Caller_Warning>`, UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context>
28217
+ </Category_Context>`, QUICK_CATEGORY_CALLER_GUIDANCE = `<Caller_Warning>Small/fast model: before delegating, write an explicit prompt with numbered must-do steps, forbidden deviations, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context>
28255
28218
  You are working on tasks that don't fit specific categories but require moderate effort.
28256
-
28257
- <Selection_Gate>
28258
- BEFORE selecting this category, VERIFY ALL conditions:
28259
- 1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)
28260
- 2. Task requires more than trivial effort but is NOT system-wide
28261
- 3. Scope is contained within a few files/modules
28262
-
28263
- If task fits ANY other category, DO NOT select unspecified-low.
28264
- This is NOT a default choice - it's for genuinely unclassifiable moderate-effort work.
28265
- </Selection_Gate>
28266
- </Category_Context>
28267
-
28268
- <Caller_Warning>
28269
- THIS CATEGORY USES GROK 4.6 (xhigh).
28270
-
28271
- **PROVIDE CLEAR STRUCTURE:**
28272
- 1. MUST DO: Enumerate required actions explicitly
28273
- 2. MUST NOT DO: State forbidden actions to prevent scope creep
28274
- 3. EXPECTED OUTPUT: Define concrete success criteria
28275
- </Caller_Warning>`, OPENAI_CATEGORIES;
28219
+ </Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
28220
+ <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, OPENAI_CATEGORIES;
28276
28221
  var init_openai_categories = __esm(() => {
28277
28222
  init_types4();
28278
28223
  OPENAI_CATEGORIES = [
@@ -28294,12 +28239,14 @@ var init_openai_categories = __esm(() => {
28294
28239
  name: "quick",
28295
28240
  config: { model: "kimi-for-coding/kimi-for-coding-highspeed" },
28296
28241
  description: "Trivial tasks - single file changes, typo fixes, simple modifications",
28242
+ callerGuidance: QUICK_CATEGORY_CALLER_GUIDANCE,
28297
28243
  promptAppend: QUICK_CATEGORY_PROMPT_APPEND
28298
28244
  },
28299
28245
  {
28300
28246
  name: "unspecified-low",
28301
28247
  config: { model: "xai/grok-4.6", variant: "xhigh" },
28302
28248
  description: "Tasks that don't fit other categories, low effort required",
28249
+ callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
28303
28250
  promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
28304
28251
  }
28305
28252
  ];
@@ -28309,7 +28256,7 @@ var init_openai_categories = __esm(() => {
28309
28256
  function buildCategoryRecord(selector) {
28310
28257
  return Object.fromEntries(BUILTIN_CATEGORIES.map((definition) => [definition.name, selector(definition)]));
28311
28258
  }
28312
- var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
28259
+ var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_CALLER_GUIDANCE, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
28313
28260
  var init_builtin_categories = __esm(() => {
28314
28261
  init_anthropic_categories();
28315
28262
  init_google_categories();
@@ -28324,6 +28271,7 @@ var init_builtin_categories = __esm(() => {
28324
28271
  DEFAULT_CATEGORIES = buildCategoryRecord((definition) => definition.config);
28325
28272
  CATEGORY_PROMPT_APPENDS = buildCategoryRecord((definition) => definition.promptAppend);
28326
28273
  CATEGORY_DESCRIPTIONS = buildCategoryRecord((definition) => definition.description);
28274
+ CATEGORY_CALLER_GUIDANCE = buildCategoryRecord((definition) => definition.callerGuidance);
28327
28275
  CATEGORY_PROMPT_APPEND_RESOLVERS = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition) => definition.resolvePromptAppend !== undefined).map((definition) => [definition.name, definition.resolvePromptAppend]));
28328
28276
  BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition) => definition.requiresModel !== undefined).map((definition) => [definition.name, definition.requiresModel]));
28329
28277
  });
@@ -94644,7 +94592,7 @@ var package_default2;
94644
94592
  var init_package2 = __esm(() => {
94645
94593
  package_default2 = {
94646
94594
  name: "@oh-my-opencode/omo-codex",
94647
- version: "5.0.0-beta.10",
94595
+ version: "5.0.0-beta.12",
94648
94596
  type: "module",
94649
94597
  private: true,
94650
94598
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -2146,7 +2146,7 @@ var package_default;
2146
2146
  var init_package = __esm(() => {
2147
2147
  package_default = {
2148
2148
  name: "oh-my-opencode",
2149
- version: "5.0.0-beta.10",
2149
+ version: "5.0.0-beta.12",
2150
2150
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
2151
2151
  main: "./dist/index.js",
2152
2152
  types: "dist/index.d.ts",
@@ -2327,7 +2327,7 @@ var init_package = __esm(() => {
2327
2327
  zod: "^4.4.3"
2328
2328
  },
2329
2329
  devDependencies: {
2330
- "@code-yeongyu/senpi": "2026.8.18-2",
2330
+ "@code-yeongyu/senpi": "2026.8.19",
2331
2331
  "@oh-my-opencode/agents-md-core": "workspace:*",
2332
2332
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
2333
2333
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -2368,18 +2368,18 @@ var init_package = __esm(() => {
2368
2368
  typescript: "^7.0.2"
2369
2369
  },
2370
2370
  optionalDependencies: {
2371
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.10",
2372
- "oh-my-opencode-darwin-x64": "5.0.0-beta.10",
2373
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.10",
2374
- "oh-my-opencode-linux-arm64": "5.0.0-beta.10",
2375
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.10",
2376
- "oh-my-opencode-linux-x64": "5.0.0-beta.10",
2377
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.10",
2378
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.10",
2379
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.10",
2380
- "oh-my-opencode-windows-arm64": "5.0.0-beta.10",
2381
- "oh-my-opencode-windows-x64": "5.0.0-beta.10",
2382
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.10"
2371
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.12",
2372
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.12",
2373
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.12",
2374
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.12",
2375
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.12",
2376
+ "oh-my-opencode-linux-x64": "5.0.0-beta.12",
2377
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.12",
2378
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.12",
2379
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.12",
2380
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.12",
2381
+ "oh-my-opencode-windows-x64": "5.0.0-beta.12",
2382
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.12"
2383
2383
  },
2384
2384
  overrides: {
2385
2385
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -22407,7 +22407,7 @@ var init_codegraph = __esm(() => {
22407
22407
  });
22408
22408
 
22409
22409
  // packages/omo-config-core/src/schema/memory.ts
22410
- var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
22410
+ var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
22411
22411
  var init_memory = __esm(() => {
22412
22412
  init_zod();
22413
22413
  OmoMemoryReflectionTriggerSchema = object({
@@ -22453,6 +22453,9 @@ var init_memory = __esm(() => {
22453
22453
  OmoMemorySoulSchema = object({
22454
22454
  edit_notice: boolean2().default(true)
22455
22455
  }).strict();
22456
+ OmoMemoryWriteNoticeSchema = object({
22457
+ enabled: boolean2().default(true)
22458
+ }).strict();
22456
22459
  OmoMemoryReflectionTriggerLayerSchema = object({
22457
22460
  step_count: number2().int().nonnegative().optional(),
22458
22461
  on_compaction: boolean2().optional()
@@ -22496,6 +22499,9 @@ var init_memory = __esm(() => {
22496
22499
  OmoMemorySoulLayerSchema = object({
22497
22500
  edit_notice: boolean2().optional()
22498
22501
  }).strict();
22502
+ OmoMemoryWriteNoticeLayerSchema = object({
22503
+ enabled: boolean2().optional()
22504
+ }).strict();
22499
22505
  OmoMemoryAgentOverridesSchema = object({
22500
22506
  enabled: boolean2().optional(),
22501
22507
  agent: string2().min(1).optional(),
@@ -22505,6 +22511,7 @@ var init_memory = __esm(() => {
22505
22511
  dream: OmoMemoryDreamLayerSchema.optional(),
22506
22512
  people: OmoMemoryPeopleLayerSchema.optional(),
22507
22513
  soul: OmoMemorySoulLayerSchema.optional(),
22514
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
22508
22515
  sync: OmoMemorySyncLayerSchema.optional(),
22509
22516
  search: OmoMemorySearchLayerSchema.optional(),
22510
22517
  compile_warn_tokens: number2().int().positive().optional()
@@ -22533,6 +22540,7 @@ var init_memory = __esm(() => {
22533
22540
  }),
22534
22541
  people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
22535
22542
  soul: OmoMemorySoulSchema.default({ edit_notice: true }),
22543
+ write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
22536
22544
  sync: OmoMemorySyncSchema.default({ enabled: true }),
22537
22545
  search: OmoMemorySearchSchema.default({ enabled: true }),
22538
22546
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -22548,6 +22556,7 @@ var init_memory = __esm(() => {
22548
22556
  dream: OmoMemoryDreamLayerSchema.optional(),
22549
22557
  people: OmoMemoryPeopleLayerSchema.optional(),
22550
22558
  soul: OmoMemorySoulLayerSchema.optional(),
22559
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
22551
22560
  sync: OmoMemorySyncLayerSchema.optional(),
22552
22561
  search: OmoMemorySearchLayerSchema.optional(),
22553
22562
  compile_warn_tokens: number2().int().positive().optional(),
@@ -27942,24 +27951,14 @@ var init_agent_display_names = __esm(() => {
27942
27951
  // packages/omo-opencode/src/tools/delegate-task/anthropic-categories.ts
27943
27952
  var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
27944
27953
  You are working on tasks that don't fit specific categories but require substantial effort.
27945
-
27946
- <Selection_Gate>
27947
- BEFORE selecting this category, VERIFY ALL conditions:
27948
- 1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)
27949
- 2. Task requires substantial effort across multiple systems/modules
27950
- 3. Changes have broad impact or require careful coordination
27951
- 4. NOT just "complex" - must be genuinely unclassifiable AND high-effort
27952
-
27953
- If task fits ANY other category, DO NOT select unspecified-high.
27954
- If task is unclassifiable but moderate-effort, use unspecified-low instead.
27955
- </Selection_Gate>
27956
- </Category_Context>`, ANTHROPIC_CATEGORIES;
27954
+ </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, ANTHROPIC_CATEGORIES;
27957
27955
  var init_anthropic_categories = __esm(() => {
27958
27956
  ANTHROPIC_CATEGORIES = [
27959
27957
  {
27960
27958
  name: "unspecified-high",
27961
27959
  config: { model: "kimi-for-coding/k3", variant: "max" },
27962
27960
  description: "Tasks that don't fit other categories, high effort required",
27961
+ callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
27963
27962
  promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND
27964
27963
  }
27965
27964
  ];
@@ -28216,64 +28215,10 @@ Approach:
28216
28215
  - Minimal viable implementation
28217
28216
  - Skip unnecessary abstractions
28218
28217
  - Direct and concise
28219
- </Category_Context>
28220
-
28221
- <Caller_Warning>
28222
- THIS CATEGORY USES A SMALLER/FASTER MODEL (gpt-5.6-luna-fast).
28223
-
28224
- The model executing this task is optimized for speed over depth. Your prompt MUST be:
28225
-
28226
- **EXHAUSTIVELY EXPLICIT** - Leave NOTHING to interpretation:
28227
- 1. MUST DO: List every required action as atomic, numbered steps
28228
- 2. MUST NOT DO: Explicitly forbid likely mistakes and deviations
28229
- 3. EXPECTED OUTPUT: Describe exact success criteria with concrete examples
28230
-
28231
- **WHY THIS MATTERS:**
28232
- - Smaller models benefit from explicit guardrails
28233
- - Vague instructions may lead to unpredictable results
28234
- - Implicit expectations may be missed
28235
- **PROMPT STRUCTURE (MANDATORY):**
28236
- \`\`\`
28237
- TASK: [One-sentence goal]
28238
-
28239
- MUST DO:
28240
- 1. [Specific action with exact details]
28241
- 2. [Another specific action]
28242
- ...
28243
-
28244
- MUST NOT DO:
28245
- - [Forbidden action + why]
28246
- - [Another forbidden action]
28247
- ...
28248
-
28249
- EXPECTED OUTPUT:
28250
- - [Exact deliverable description]
28251
- - [Success criteria / verification method]
28252
- \`\`\`
28253
-
28254
- If your prompt lacks this structure, REWRITE IT before delegating.
28255
- </Caller_Warning>`, UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context>
28218
+ </Category_Context>`, QUICK_CATEGORY_CALLER_GUIDANCE = `<Caller_Warning>Small/fast model: before delegating, write an explicit prompt with numbered must-do steps, forbidden deviations, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context>
28256
28219
  You are working on tasks that don't fit specific categories but require moderate effort.
28257
-
28258
- <Selection_Gate>
28259
- BEFORE selecting this category, VERIFY ALL conditions:
28260
- 1. Task does NOT fit: quick (trivial), visual-engineering (UI), ultrabrain (deep logic), artistry (creative), writing (docs)
28261
- 2. Task requires more than trivial effort but is NOT system-wide
28262
- 3. Scope is contained within a few files/modules
28263
-
28264
- If task fits ANY other category, DO NOT select unspecified-low.
28265
- This is NOT a default choice - it's for genuinely unclassifiable moderate-effort work.
28266
- </Selection_Gate>
28267
- </Category_Context>
28268
-
28269
- <Caller_Warning>
28270
- THIS CATEGORY USES GROK 4.6 (xhigh).
28271
-
28272
- **PROVIDE CLEAR STRUCTURE:**
28273
- 1. MUST DO: Enumerate required actions explicitly
28274
- 2. MUST NOT DO: State forbidden actions to prevent scope creep
28275
- 3. EXPECTED OUTPUT: Define concrete success criteria
28276
- </Caller_Warning>`, OPENAI_CATEGORIES;
28220
+ </Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
28221
+ <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, OPENAI_CATEGORIES;
28277
28222
  var init_openai_categories = __esm(() => {
28278
28223
  init_types4();
28279
28224
  OPENAI_CATEGORIES = [
@@ -28295,12 +28240,14 @@ var init_openai_categories = __esm(() => {
28295
28240
  name: "quick",
28296
28241
  config: { model: "kimi-for-coding/kimi-for-coding-highspeed" },
28297
28242
  description: "Trivial tasks - single file changes, typo fixes, simple modifications",
28243
+ callerGuidance: QUICK_CATEGORY_CALLER_GUIDANCE,
28298
28244
  promptAppend: QUICK_CATEGORY_PROMPT_APPEND
28299
28245
  },
28300
28246
  {
28301
28247
  name: "unspecified-low",
28302
28248
  config: { model: "xai/grok-4.6", variant: "xhigh" },
28303
28249
  description: "Tasks that don't fit other categories, low effort required",
28250
+ callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
28304
28251
  promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
28305
28252
  }
28306
28253
  ];
@@ -28310,7 +28257,7 @@ var init_openai_categories = __esm(() => {
28310
28257
  function buildCategoryRecord(selector) {
28311
28258
  return Object.fromEntries(BUILTIN_CATEGORIES.map((definition) => [definition.name, selector(definition)]));
28312
28259
  }
28313
- var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
28260
+ var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_CALLER_GUIDANCE, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
28314
28261
  var init_builtin_categories = __esm(() => {
28315
28262
  init_anthropic_categories();
28316
28263
  init_google_categories();
@@ -28325,6 +28272,7 @@ var init_builtin_categories = __esm(() => {
28325
28272
  DEFAULT_CATEGORIES = buildCategoryRecord((definition) => definition.config);
28326
28273
  CATEGORY_PROMPT_APPENDS = buildCategoryRecord((definition) => definition.promptAppend);
28327
28274
  CATEGORY_DESCRIPTIONS = buildCategoryRecord((definition) => definition.description);
28275
+ CATEGORY_CALLER_GUIDANCE = buildCategoryRecord((definition) => definition.callerGuidance);
28328
28276
  CATEGORY_PROMPT_APPEND_RESOLVERS = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition) => definition.resolvePromptAppend !== undefined).map((definition) => [definition.name, definition.resolvePromptAppend]));
28329
28277
  BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition) => definition.requiresModel !== undefined).map((definition) => [definition.name, definition.requiresModel]));
28330
28278
  });
@@ -94700,7 +94648,7 @@ var package_default2;
94700
94648
  var init_package2 = __esm(() => {
94701
94649
  package_default2 = {
94702
94650
  name: "@oh-my-opencode/omo-codex",
94703
- version: "5.0.0-beta.10",
94651
+ version: "5.0.0-beta.12",
94704
94652
  type: "module",
94705
94653
  private: true,
94706
94654
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",