oh-my-opencode 5.0.0-beta.6 → 5.0.0-beta.8

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 (113) hide show
  1. package/.agents/skills/work-with-pr/SKILL.md +37 -23
  2. package/.opencode/skills/work-with-pr/SKILL.md +37 -23
  3. package/README.md +12 -1
  4. package/dist/agents/sisyphus/grok-4.d.ts +20 -0
  5. package/dist/agents/sisyphus/index.d.ts +2 -0
  6. package/dist/agents/sisyphus-agent-config.d.ts +6 -0
  7. package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
  8. package/dist/agents/types.d.ts +2 -2
  9. package/dist/cli/index.js +593 -399
  10. package/dist/cli-node/index.js +593 -399
  11. package/dist/index.js +353 -36
  12. package/dist/shared/normalize-sdk-response.d.ts +1 -0
  13. package/dist/skills/frontend/SKILL.md +10 -7
  14. package/dist/skills/frontend/references/design/_INDEX.md +1 -0
  15. package/dist/skills/frontend/references/design/stylegallery.md +80 -0
  16. package/dist/skills/ultimate-browsing/ATTRIBUTION.md +2 -2
  17. package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
  18. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  19. package/dist/skills/ulw-plan/SKILL.md +2 -2
  20. package/dist/skills/ulw-plan/references/full-workflow.md +27 -3
  21. package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
  22. package/dist/skills/ulw-plan/references/intent-unclear.md +3 -3
  23. package/dist/tui.js +152 -11
  24. package/package.json +19 -19
  25. package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
  26. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +0 -28
  27. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  28. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  29. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +100 -5
  31. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +100 -5
  32. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  36. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  40. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  41. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  42. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  43. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  45. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  47. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  48. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  49. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  50. package/packages/omo-codex/plugin/components/ultrawork/directive.md +6 -0
  51. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  52. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  53. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +6 -0
  54. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
  55. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +27 -3
  56. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  57. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +3 -3
  58. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +6 -0
  59. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  60. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
  62. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  63. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
  64. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  71. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  72. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  73. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  74. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  85. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  87. package/packages/omo-codex/plugin/package-lock.json +13 -13
  88. package/packages/omo-codex/plugin/package.json +1 -1
  89. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +10 -7
  90. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
  91. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  92. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +2 -2
  93. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  94. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  95. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +6 -0
  96. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
  97. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  98. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
  99. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
  100. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +27 -3
  101. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  102. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +3 -3
  103. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
  104. package/packages/shared-skills/skills/frontend/SKILL.md +10 -7
  105. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
  106. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  107. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +2 -2
  108. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  109. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  110. package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
  111. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +27 -3
  112. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  113. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +3 -3
package/dist/index.js CHANGED
@@ -5537,14 +5537,15 @@ var init_codegraph = __esm(() => {
5537
5537
 
5538
5538
  // packages/omo-config-core/src/schema/memory.ts
5539
5539
  import * as z7 from "zod";
5540
- var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
5540
+ var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
5541
5541
  var init_memory = __esm(() => {
5542
5542
  OmoMemoryReflectionTriggerSchema = z7.object({
5543
- step_count: z7.number().int().nonnegative().default(0),
5543
+ step_count: z7.number().int().nonnegative().default(25),
5544
5544
  on_compaction: z7.boolean().default(true)
5545
5545
  }).strict();
5546
5546
  OmoMemoryReflectionSchema = z7.object({
5547
- trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 0, on_compaction: true }),
5547
+ enabled: z7.boolean().default(true),
5548
+ trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 25, on_compaction: true }),
5548
5549
  merge: z7.enum(["auto", "integration"]).default("auto"),
5549
5550
  category: z7.string().min(1).default("quick"),
5550
5551
  timeout_minutes: z7.number().int().positive().default(15),
@@ -5557,11 +5558,36 @@ var init_memory = __esm(() => {
5557
5558
  OmoMemorySearchSchema = z7.object({
5558
5559
  enabled: z7.boolean().default(true)
5559
5560
  }).strict();
5561
+ OmoMemoryNudgeSchema = z7.object({
5562
+ enabled: z7.boolean().default(true),
5563
+ every_user_turns: z7.number().int().min(1).default(10)
5564
+ }).strict();
5565
+ OmoMemoryFactsSchema = z7.object({
5566
+ enabled: z7.boolean().default(true),
5567
+ debounce_settles: z7.number().int().min(1).default(4)
5568
+ }).strict();
5569
+ OmoMemoryDreamSchema = z7.object({
5570
+ enabled: z7.boolean().default(true),
5571
+ idle_minutes: z7.number().int().min(0).default(30),
5572
+ min_hours_between: z7.number().int().min(1).default(24),
5573
+ shutdown_launch: z7.boolean().default(true),
5574
+ auto_select_max: z7.number().int().min(1).max(10).default(5),
5575
+ auto_select_max_chars: z7.number().int().min(1e4).default(150000)
5576
+ }).strict();
5577
+ OmoMemoryPeopleSchema = z7.object({
5578
+ enabled: z7.boolean().default(true),
5579
+ max_entries: z7.number().int().min(1).max(100).default(40),
5580
+ max_entry_chars: z7.number().int().min(50).max(500).default(200)
5581
+ }).strict();
5582
+ OmoMemorySoulSchema = z7.object({
5583
+ edit_notice: z7.boolean().default(true)
5584
+ }).strict();
5560
5585
  OmoMemoryReflectionTriggerLayerSchema = z7.object({
5561
5586
  step_count: z7.number().int().nonnegative().optional(),
5562
5587
  on_compaction: z7.boolean().optional()
5563
5588
  }).strict();
5564
5589
  OmoMemoryReflectionLayerSchema = z7.object({
5590
+ enabled: z7.boolean().optional(),
5565
5591
  trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
5566
5592
  merge: z7.enum(["auto", "integration"]).optional(),
5567
5593
  category: z7.string().min(1).optional(),
@@ -5575,10 +5601,39 @@ var init_memory = __esm(() => {
5575
5601
  OmoMemorySearchLayerSchema = z7.object({
5576
5602
  enabled: z7.boolean().optional()
5577
5603
  }).strict();
5604
+ OmoMemoryNudgeLayerSchema = z7.object({
5605
+ enabled: z7.boolean().optional(),
5606
+ every_user_turns: z7.number().int().min(1).optional()
5607
+ }).strict();
5608
+ OmoMemoryFactsLayerSchema = z7.object({
5609
+ enabled: z7.boolean().optional(),
5610
+ debounce_settles: z7.number().int().min(1).optional()
5611
+ }).strict();
5612
+ OmoMemoryDreamLayerSchema = z7.object({
5613
+ enabled: z7.boolean().optional(),
5614
+ idle_minutes: z7.number().int().min(0).optional(),
5615
+ min_hours_between: z7.number().int().min(1).optional(),
5616
+ shutdown_launch: z7.boolean().optional(),
5617
+ auto_select_max: z7.number().int().min(1).max(10).optional(),
5618
+ auto_select_max_chars: z7.number().int().min(1e4).optional()
5619
+ }).strict();
5620
+ OmoMemoryPeopleLayerSchema = z7.object({
5621
+ enabled: z7.boolean().optional(),
5622
+ max_entries: z7.number().int().min(1).max(100).optional(),
5623
+ max_entry_chars: z7.number().int().min(50).max(500).optional()
5624
+ }).strict();
5625
+ OmoMemorySoulLayerSchema = z7.object({
5626
+ edit_notice: z7.boolean().optional()
5627
+ }).strict();
5578
5628
  OmoMemoryAgentOverridesSchema = z7.object({
5579
5629
  enabled: z7.boolean().optional(),
5580
5630
  agent: z7.string().min(1).optional(),
5581
5631
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5632
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5633
+ facts: OmoMemoryFactsLayerSchema.optional(),
5634
+ dream: OmoMemoryDreamLayerSchema.optional(),
5635
+ people: OmoMemoryPeopleLayerSchema.optional(),
5636
+ soul: OmoMemorySoulLayerSchema.optional(),
5582
5637
  sync: OmoMemorySyncLayerSchema.optional(),
5583
5638
  search: OmoMemorySearchLayerSchema.optional(),
5584
5639
  compile_warn_tokens: z7.number().int().positive().optional()
@@ -5588,12 +5643,25 @@ var init_memory = __esm(() => {
5588
5643
  agent: z7.string().min(1).default("auto"),
5589
5644
  tool_exposure: z7.enum(["direct", "search"]).default("direct"),
5590
5645
  reflection: OmoMemoryReflectionSchema.default({
5591
- trigger: { step_count: 0, on_compaction: true },
5646
+ enabled: true,
5647
+ trigger: { step_count: 25, on_compaction: true },
5592
5648
  merge: "auto",
5593
5649
  category: "quick",
5594
5650
  timeout_minutes: 15,
5595
5651
  sandbox: "auto"
5596
5652
  }),
5653
+ nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
5654
+ facts: OmoMemoryFactsSchema.default({ enabled: true, debounce_settles: 4 }),
5655
+ dream: OmoMemoryDreamSchema.default({
5656
+ enabled: true,
5657
+ idle_minutes: 30,
5658
+ min_hours_between: 24,
5659
+ shutdown_launch: true,
5660
+ auto_select_max: 5,
5661
+ auto_select_max_chars: 150000
5662
+ }),
5663
+ people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
5664
+ soul: OmoMemorySoulSchema.default({ edit_notice: true }),
5597
5665
  sync: OmoMemorySyncSchema.default({ enabled: true }),
5598
5666
  search: OmoMemorySearchSchema.default({ enabled: true }),
5599
5667
  compile_warn_tokens: z7.number().int().positive().default(30000),
@@ -5604,6 +5672,11 @@ var init_memory = __esm(() => {
5604
5672
  agent: z7.string().min(1).optional(),
5605
5673
  tool_exposure: z7.enum(["direct", "search"]).optional(),
5606
5674
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5675
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5676
+ facts: OmoMemoryFactsLayerSchema.optional(),
5677
+ dream: OmoMemoryDreamLayerSchema.optional(),
5678
+ people: OmoMemoryPeopleLayerSchema.optional(),
5679
+ soul: OmoMemorySoulLayerSchema.optional(),
5607
5680
  sync: OmoMemorySyncLayerSchema.optional(),
5608
5681
  search: OmoMemorySearchLayerSchema.optional(),
5609
5682
  compile_warn_tokens: z7.number().int().positive().optional(),
@@ -5643,7 +5716,7 @@ function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism
5643
5716
  residency_max_children: record8["residency_max_children"] ?? Math.max(8, resolveParallelism() * 3)
5644
5717
  });
5645
5718
  }
5646
- var ResidencyMaxChildrenInputSchema, OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskWarningsSchema, OmoTaskSettingsSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskWarningsLayerSchema, OmoTaskSettingsLayerSchema;
5719
+ var ResidencyMaxChildrenInputSchema, OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskWarningsSchema, OmoTaskDagSettingsSchema, OmoTaskSettingsSchema, OmoTaskDagSettingsLayerSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskWarningsLayerSchema, OmoTaskSettingsLayerSchema;
5647
5720
  var init_task = __esm(() => {
5648
5721
  ResidencyMaxChildrenInputSchema = z9.union([z9.number().int().positive(), z9.literal("unlimited")]);
5649
5722
  OmoTaskWaitSchema = z9.object({
@@ -5659,6 +5732,16 @@ var init_task = __esm(() => {
5659
5732
  OmoTaskWarningsSchema = z9.object({
5660
5733
  unavailable_categories: z9.boolean().default(true)
5661
5734
  }).strict();
5735
+ OmoTaskDagSettingsSchema = z9.object({
5736
+ max_nodes_per_run: z9.number().int().positive().default(64),
5737
+ max_runs_per_session: z9.number().int().positive().default(16),
5738
+ subscriber_ring: z9.number().int().positive().default(1000),
5739
+ heartbeat_ms: z9.number().int().positive().default(15000),
5740
+ history_default_limit: z9.number().int().positive().default(256),
5741
+ history_max_limit: z9.number().int().positive().default(1000),
5742
+ retention_days: z9.number().int().positive().default(7),
5743
+ max_prompt_bytes: z9.number().int().positive().default(262144)
5744
+ }).strict();
5662
5745
  OmoTaskSettingsSchema = z9.object({
5663
5746
  default_execution_mode: z9.enum(["in-process", "process"]).default("in-process"),
5664
5747
  default_concurrency: z9.number().int().positive().default(5),
@@ -5676,7 +5759,18 @@ var init_task = __esm(() => {
5676
5759
  max_members: 8,
5677
5760
  max_parallel_members: 4,
5678
5761
  max_wall_clock_minutes: 120
5679
- })
5762
+ }),
5763
+ dag: OmoTaskDagSettingsSchema.optional()
5764
+ }).strict();
5765
+ OmoTaskDagSettingsLayerSchema = z9.object({
5766
+ max_nodes_per_run: z9.number().int().positive().optional(),
5767
+ max_runs_per_session: z9.number().int().positive().optional(),
5768
+ subscriber_ring: z9.number().int().positive().optional(),
5769
+ heartbeat_ms: z9.number().int().positive().optional(),
5770
+ history_default_limit: z9.number().int().positive().optional(),
5771
+ history_max_limit: z9.number().int().positive().optional(),
5772
+ retention_days: z9.number().int().positive().optional(),
5773
+ max_prompt_bytes: z9.number().int().positive().optional()
5680
5774
  }).strict();
5681
5775
  OmoTaskWaitLayerSchema = z9.object({
5682
5776
  min_ms: z9.number().int().positive().optional(),
@@ -5704,7 +5798,8 @@ var init_task = __esm(() => {
5704
5798
  resume_children: z9.boolean().optional(),
5705
5799
  warnings: OmoTaskWarningsLayerSchema.optional(),
5706
5800
  wait: OmoTaskWaitLayerSchema.optional(),
5707
- team: OmoTaskTeamSettingsLayerSchema.optional()
5801
+ team: OmoTaskTeamSettingsLayerSchema.optional(),
5802
+ dag: OmoTaskDagSettingsLayerSchema.optional()
5708
5803
  }).strict();
5709
5804
  });
5710
5805
 
@@ -24431,10 +24526,10 @@ var CATEGORY_MODEL_REQUIREMENTS = {
24431
24526
  quick: {
24432
24527
  fallbackChain: [
24433
24528
  { providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed" },
24434
- { providers: ["quotio-openai"], model: "gpt-5.6-luna-fast", variant: "low" },
24529
+ { providers: ["openai-codex"], model: "gpt-5.6-luna-fast", variant: "low" },
24435
24530
  { providers: ["deepseek"], model: "deepseek-v4-flash", variant: "off" },
24436
24531
  {
24437
- providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan", "opencode-go", "vercel"],
24532
+ providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan", "vercel"],
24438
24533
  model: "qwen3.6-flash",
24439
24534
  variant: "low"
24440
24535
  },
@@ -24450,6 +24545,11 @@ var CATEGORY_MODEL_REQUIREMENTS = {
24450
24545
  },
24451
24546
  "unspecified-low": {
24452
24547
  fallbackChain: [
24548
+ {
24549
+ providers: ["xai", "github-copilot", "opencode", "vercel"],
24550
+ model: "grok-4.6",
24551
+ variant: "xhigh"
24552
+ },
24453
24553
  {
24454
24554
  providers: ["openai", "quotio-openai", "github-copilot", "opencode", "vercel"],
24455
24555
  model: "gpt-5.6-terra",
@@ -24590,6 +24690,16 @@ function isGlmModel(model) {
24590
24690
  const modelName = extractModelName(model).toLowerCase();
24591
24691
  return modelName.includes("glm");
24592
24692
  }
24693
+ var GROK_45_RE = /grok-4-5(?![0-9])/;
24694
+ var GROK_46_RE = /grok-4-6(?![0-9])/;
24695
+ function isGrok45Model(model) {
24696
+ const modelName = extractModelName(model).toLowerCase().replaceAll(".", "-");
24697
+ return GROK_45_RE.test(modelName);
24698
+ }
24699
+ function isGrok46Model(model) {
24700
+ const modelName = extractModelName(model).toLowerCase().replaceAll(".", "-");
24701
+ return GROK_46_RE.test(modelName);
24702
+ }
24593
24703
  var GEMINI_PROVIDERS = ["google/", "google-vertex/"];
24594
24704
  function isGeminiModel(model) {
24595
24705
  if (GEMINI_PROVIDERS.some((prefix) => model.startsWith(prefix)))
@@ -28109,6 +28219,7 @@ init_logger2();
28109
28219
 
28110
28220
  // packages/omo-opencode/src/shared/normalize-sdk-response.ts
28111
28221
  function normalizeSDKResponse(response, fallback, options) {
28222
+ const fallbackIsArray = Array.isArray(fallback);
28112
28223
  if (response == null) {
28113
28224
  return fallback;
28114
28225
  }
@@ -28118,14 +28229,17 @@ function normalizeSDKResponse(response, fallback, options) {
28118
28229
  if (typeof response === "object" && "data" in response) {
28119
28230
  const data = response.data;
28120
28231
  if (data != null) {
28232
+ if (fallbackIsArray && !Array.isArray(data)) {
28233
+ return fallback;
28234
+ }
28121
28235
  return data;
28122
28236
  }
28123
- if (options?.preferResponseOnMissingData === true) {
28237
+ if (options?.preferResponseOnMissingData === true && !fallbackIsArray) {
28124
28238
  return response;
28125
28239
  }
28126
28240
  return fallback;
28127
28241
  }
28128
- if (options?.preferResponseOnMissingData === true) {
28242
+ if (options?.preferResponseOnMissingData === true && !fallbackIsArray) {
28129
28243
  return response;
28130
28244
  }
28131
28245
  return fallback;
@@ -28779,7 +28893,7 @@ This is NOT a default choice - it's for genuinely unclassifiable moderate-effort
28779
28893
  </Category_Context>
28780
28894
 
28781
28895
  <Caller_Warning>
28782
- THIS CATEGORY USES A LIGHTWEIGHT MODEL (gpt-5.6-luna).
28896
+ THIS CATEGORY USES GROK 4.6 (xhigh).
28783
28897
 
28784
28898
  **PROVIDE CLEAR STRUCTURE:**
28785
28899
  1. MUST DO: Enumerate required actions explicitly
@@ -28809,7 +28923,7 @@ var OPENAI_CATEGORIES = [
28809
28923
  },
28810
28924
  {
28811
28925
  name: "unspecified-low",
28812
- config: { model: "openai/gpt-5.6-luna", variant: "xhigh" },
28926
+ config: { model: "xai/grok-4.6", variant: "xhigh" },
28813
28927
  description: "Tasks that don't fit other categories, low effort required",
28814
28928
  promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
28815
28929
  }
@@ -84126,6 +84240,47 @@ var model_capabilities_generated_default = {
84126
84240
  input: 272000,
84127
84241
  output: 128000
84128
84242
  }
84243
+ },
84244
+ "grok-4.6": {
84245
+ id: "grok-4.6",
84246
+ family: "grok",
84247
+ reasoning: true,
84248
+ temperature: true,
84249
+ toolCall: true,
84250
+ modalities: {
84251
+ input: [
84252
+ "text",
84253
+ "image"
84254
+ ],
84255
+ output: [
84256
+ "text"
84257
+ ]
84258
+ },
84259
+ limit: {
84260
+ context: 500000,
84261
+ output: 500000
84262
+ }
84263
+ },
84264
+ "xai/grok-4.6": {
84265
+ id: "xai/grok-4.6",
84266
+ family: "grok",
84267
+ reasoning: true,
84268
+ temperature: true,
84269
+ toolCall: true,
84270
+ modalities: {
84271
+ input: [
84272
+ "text",
84273
+ "image",
84274
+ "pdf"
84275
+ ],
84276
+ output: [
84277
+ "text"
84278
+ ]
84279
+ },
84280
+ limit: {
84281
+ context: 500000,
84282
+ output: 500000
84283
+ }
84129
84284
  }
84130
84285
  }
84131
84286
  };
@@ -98571,7 +98726,7 @@ function getCachedVersion(options = {}) {
98571
98726
  // package.json
98572
98727
  var package_default = {
98573
98728
  name: "oh-my-opencode",
98574
- version: "5.0.0-beta.6",
98729
+ version: "5.0.0-beta.8",
98575
98730
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
98576
98731
  main: "./dist/index.js",
98577
98732
  types: "dist/index.d.ts",
@@ -98751,7 +98906,7 @@ var package_default = {
98751
98906
  zod: "^4.4.3"
98752
98907
  },
98753
98908
  devDependencies: {
98754
- "@code-yeongyu/senpi": "2026.8.11-4",
98909
+ "@code-yeongyu/senpi": "2026.8.16",
98755
98910
  "@oh-my-opencode/agents-md-core": "workspace:*",
98756
98911
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
98757
98912
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -98783,7 +98938,7 @@ var package_default = {
98783
98938
  "@oh-my-opencode/utils": "workspace:*",
98784
98939
  "@types/js-yaml": "^4.0.9",
98785
98940
  "@types/picomatch": "^4.0.3",
98786
- "@typescript/native-preview": "7.0.0-dev.20260518.1",
98941
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
98787
98942
  "@xterm/addon-unicode11": "^0.9.0",
98788
98943
  "@xterm/xterm": "^6.0.0",
98789
98944
  "bun-types": "1.3.14",
@@ -98792,24 +98947,24 @@ var package_default = {
98792
98947
  typescript: "^7.0.2"
98793
98948
  },
98794
98949
  optionalDependencies: {
98795
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.6",
98796
- "oh-my-opencode-darwin-x64": "5.0.0-beta.6",
98797
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.6",
98798
- "oh-my-opencode-linux-arm64": "5.0.0-beta.6",
98799
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.6",
98800
- "oh-my-opencode-linux-x64": "5.0.0-beta.6",
98801
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.6",
98802
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.6",
98803
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.6",
98804
- "oh-my-opencode-windows-arm64": "5.0.0-beta.6",
98805
- "oh-my-opencode-windows-x64": "5.0.0-beta.6",
98806
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.6"
98950
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.8",
98951
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.8",
98952
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.8",
98953
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.8",
98954
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.8",
98955
+ "oh-my-opencode-linux-x64": "5.0.0-beta.8",
98956
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.8",
98957
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.8",
98958
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.8",
98959
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.8",
98960
+ "oh-my-opencode-windows-x64": "5.0.0-beta.8",
98961
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.8"
98807
98962
  },
98808
98963
  overrides: {
98809
- "@earendil-works/pi-agent-core": "0.80.3",
98810
- "@earendil-works/pi-ai": "0.80.3",
98811
- "@earendil-works/pi-coding-agent": "0.80.3",
98812
- "@earendil-works/pi-tui": "0.80.3",
98964
+ "@earendil-works/pi-agent-core": "0.84.2",
98965
+ "@earendil-works/pi-ai": "0.84.2",
98966
+ "@earendil-works/pi-coding-agent": "0.84.2",
98967
+ "@earendil-works/pi-tui": "0.84.2",
98813
98968
  hono: "^4.12.18",
98814
98969
  "@hono/node-server": "^1.19.13",
98815
98970
  "express-rate-limit": "^8.5.1",
@@ -104872,7 +105027,7 @@ task(category="quick", load_skills=["git-master"], run_in_background=true)
104872
105027
 
104873
105028
  ### Goal Registration (BINDING)
104874
105029
 
104875
- When the \`create_goal\` tool exists, you MUST register the run's goal with it BEFORE any implementation: the full objective, the scenario contract below, and one line "I'll stop right away when <the exact observable state that ends this run>". Without the tool, record the same contract at the top of your TODO/notepad and treat it as binding.
105030
+ When the \`create_goal\` tool exists, you MUST register the run's goal with it BEFORE any implementation. Check \`get_goal\` first: continue a matching active goal instead of duplicating it; surface a conflicting one. Pass exactly \`objective\`, written outcome-first: the concrete thing that will be TRUE when done (an outcome, never an activity like "investigate X"), the named deliverable surfaces, the scenario contract below as success criteria (each a binary observable that CAN fail), explicit scope bounds, and one line "I'll stop right away when <the exact observable state that ends this run>". Never invent a budget or deadline the user did not state. Without the tool, record the same contract at the top of your TODO/notepad and treat it as binding.
104876
105031
 
104877
105032
  ### Pre-Implementation: Scenario Contract (BINDING)
104878
105033
 
@@ -105229,7 +105384,7 @@ task(subagent_type="plan", load_skills=[], run_in_background=false, prompt="<gat
105229
105384
 
105230
105385
  ### GOAL REGISTRATION (BINDING)
105231
105386
 
105232
- When the \`create_goal\` tool exists, you MUST register the run's goal with it BEFORE any implementation: the full objective, the scenario contract below, and one line "I'll stop right away when <the exact observable state that ends this run>". Without the tool, record the same contract at the top of your TODO/notepad and treat it as binding.
105387
+ When the \`create_goal\` tool exists, you MUST register the run's goal with it BEFORE any implementation. Check \`get_goal\` first: continue a matching active goal instead of duplicating it; surface a conflicting one. Pass exactly \`objective\`, written outcome-first: the concrete thing that will be TRUE when done (an outcome, never an activity like "investigate X"), the named deliverable surfaces, the scenario contract below as success criteria (each a binary observable that CAN fail), explicit scope bounds, and one line "I'll stop right away when <the exact observable state that ends this run>". Never invent a budget or deadline the user did not state. Without the tool, record the same contract at the top of your TODO/notepad and treat it as binding.
105233
105388
 
105234
105389
  ### SCENARIO CONTRACT (binding, defined BEFORE coding)
105235
105390
 
@@ -105498,7 +105653,7 @@ If a verification command is unavailable or not applicable, state the exact reas
105498
105653
 
105499
105654
  ## GOAL REGISTRATION
105500
105655
 
105501
- When a \`create_goal\` tool exists, register the run's goal with it before implementation: the objective, the scenario contract, and one WHEN TO STOP line naming the observable end state. Without the tool, record the same contract in your working notes and treat it as binding.
105656
+ When a \`create_goal\` tool exists, check \`get_goal\` first (continue a matching active goal; never duplicate), then register the run's goal before implementation with exactly \`objective\`, written outcome-first: the concrete outcome that will be true (never an activity), the named deliverable surfaces, the scenario contract as success criteria that can fail, scope bounds, and one WHEN TO STOP line naming the observable end state. Never invent a budget or deadline the user did not state. Without the tool, record the same contract in your working notes and treat it as binding.
105502
105657
 
105503
105658
  ## TODO DISCIPLINE
105504
105659
 
@@ -105699,7 +105854,7 @@ At start, run \`NOTE=$(mktemp -t ulw-$(date +%Y%m%d-%H%M%S).XXXXXX.md)\` and ech
105699
105854
 
105700
105855
  ## GOAL REGISTRATION
105701
105856
 
105702
- When a \`create_goal\` tool exists, register the run's goal with it before implementation: the objective, the scenario contract, and the WHEN TO STOP line. No tool \u2192 record the same contract in the notepad and treat it as binding.
105857
+ When a \`create_goal\` tool exists, check \`get_goal\` first (continue a matching active goal; never duplicate), then register the run's goal before implementation with exactly \`objective\`, outcome-first: the concrete outcome that will be true (never an activity), named deliverable surfaces, the scenario contract as criteria that can fail, scope bounds, and the WHEN TO STOP line. No invented budgets or deadlines. No tool \u2192 record the same contract in the notepad and treat it as binding.
105703
105858
 
105704
105859
  ## TODO DISCIPLINE
105705
105860
 
@@ -152834,6 +152989,12 @@ function buildGptSisyphusAgentConfig(mode, model, prompt) {
152834
152989
  function buildGlmSisyphusAgentConfig(mode, model, prompt) {
152835
152990
  return buildBaseSisyphusAgentConfig(mode, model, prompt);
152836
152991
  }
152992
+ function buildGrokSisyphusAgentConfig(mode, model, prompt) {
152993
+ return {
152994
+ ...buildBaseSisyphusAgentConfig(mode, model, prompt),
152995
+ reasoningEffort: "high"
152996
+ };
152997
+ }
152837
152998
  function buildClaudeSisyphusAgentConfig(mode, model, prompt) {
152838
152999
  return {
152839
153000
  ...buildBaseSisyphusAgentConfig(mode, model, prompt),
@@ -156203,6 +156364,158 @@ function buildGpt55SisyphusPrompt(model, availableAgents, _availableTools = [],
156203
156364
  ${body}`;
156204
156365
  }
156205
156366
 
156367
+ // packages/omo-opencode/src/agents/sisyphus/grok-4.ts
156368
+ function getGrokPromptIdentity(model) {
156369
+ return isGrok46Model(model) ? "Grok 4.6" : "Grok 4.5";
156370
+ }
156371
+ function buildGrok4TasksSection(useTaskSystem) {
156372
+ const noun = useTaskSystem ? "tasks" : "todos";
156373
+ const create = useTaskSystem ? "task_create" : "todowrite";
156374
+ const update = useTaskSystem ? "task_update" : "todowrite";
156375
+ const hook = useTaskSystem ? "TASK CONTINUATION" : "TODO CONTINUATION";
156376
+ return `<tasks>
156377
+ Use ${noun} for implementation work with two or more real steps, cross-file edits, delegated work, or uncertain scope. Skip tracking for direct answers, pure exploration, and one-step edits.
156378
+
156379
+ When tracking: call \`${create}\` before implementation, keep exactly one item \`in_progress\`, and call \`${update}\` the moment an item is done. Never batch completions. If scope changes, revise the list before more edits.
156380
+
156381
+ Your ${noun} are tracked by the harness via [SYSTEM REMINDER - ${hook}].
156382
+ </tasks>`;
156383
+ }
156384
+ function buildGrok4SisyphusPrompt(model, availableAgents, availableTools = [], availableSkills = [], availableCategories = [], useTaskSystem = false) {
156385
+ const keyTriggers = buildKeyTriggersSection(availableAgents, availableSkills);
156386
+ const toolSelection = buildToolSelectionTable(availableAgents, availableTools, availableSkills);
156387
+ const exploreSection = buildExploreSection(availableAgents);
156388
+ const librarianSection = buildLibrarianSection(availableAgents);
156389
+ const categorySkillsGuide = buildCategorySkillsDelegationGuide(availableCategories, availableSkills);
156390
+ const delegationTable = buildDelegationTable(availableAgents);
156391
+ const oracleSection = buildOracleSection(availableAgents);
156392
+ const hardBlocks = buildHardBlocksSection();
156393
+ const antiPatterns = buildAntiPatternsSection();
156394
+ const nonClaudePlannerSection = buildNonClaudePlannerSection(model);
156395
+ const tasksSection = buildGrok4TasksSection(useTaskSystem);
156396
+ const agentIdentity = buildAgentIdentitySection("Sisyphus", "Powerful AI Agent with orchestration capabilities from OhMyOpenCode");
156397
+ const roleBlock = `<role>
156398
+ You are Sisyphus, the OhMyOpenCode orchestration lead, running on ${getGrokPromptIdentity(model)}.
156399
+
156400
+ You are a senior engineer who scales output through specialists. Understand the user's destination, route the work to the right specialist, verify with real evidence, and stop only when the result is production ready.
156401
+
156402
+ Implementation starts only when the current user turn explicitly asks for it with concrete scope. Questions get answers, investigations get findings, implementation requests get shipped work.
156403
+ </role>`;
156404
+ const calibrationBlock = `<grok_calibration>
156405
+ Your judgment is good; this prompt stays short on purpose and trusts you to fill gaps with taste. Four rules carry the leverage:
156406
+
156407
+ 1. DONE IS WRITTEN DOWN. Before implementation, state what done means in one line: observable acceptance criteria, not a vibe. You verify against exactly those criteria, and you neither stop short of them nor expand past them.
156408
+ 2. VERIFY, THEN ITERATE. Verify the function and the design after implementation, and keep iterating and verifying until it is production ready. One pass of "it runs" is not done.
156409
+ 3. CAPTURE, LIST, FIX. When output is hard to inspect (visual, layout, motion, formatted documents), capture the current state, list concretely what is wrong with it, then fix only those things. Never "improve" blind.
156410
+ 4. NO REPEATED BLOCKS. You tend to duplicate code across components. The second time a block appears, extract and share it instead of pasting a third copy.
156411
+ </grok_calibration>`;
156412
+ const intentBlock = `<intent>
156413
+ Classify the CURRENT user message only. Do not carry implementation authorization across turns.
156414
+
156415
+ ${keyTriggers}
156416
+
156417
+ Surface form to routing:
156418
+
156419
+ | User says | True intent | You do |
156420
+ |---|---|---|
156421
+ | "explain", "how does" | understanding | explore enough, then answer |
156422
+ | "implement", "add", "create", "write" | implementation | plan, delegate or execute, verify |
156423
+ | "look into", "check", "investigate" | investigation | inspect, report findings, wait |
156424
+ | "what do you think" | evaluation | judge, propose, wait |
156425
+ | "broken", "error", "fix" | root-cause repair | diagnose, fix minimally, verify |
156426
+ | "refactor", "improve", "clean up" | open-ended change | assess, propose or use the matching skill |
156427
+
156428
+ Say one concise intent line before non-trivial action: "I read this as [type]: [route]." If the answer is already in context, answer instead of re-deriving.
156429
+
156430
+ Ask only for scope changes, critical missing information, destructive actions, or external side effects. Minor decisions (names, defaults, equivalent approaches) are yours; note the choice later.
156431
+ </intent>`;
156432
+ const explorationBlock = `<exploration>
156433
+ Use tools for facts. Internal memory is not evidence for file contents, configs, APIs, or current project state.
156434
+
156435
+ ${toolSelection}
156436
+
156437
+ ${exploreSection}
156438
+
156439
+ ${librarianSection}
156440
+
156441
+ Parallelize independent calls: file reads, searches, diagnostics, and background agents go out together. Sequence only when a later call needs an earlier result.
156442
+
156443
+ Search budget: known file or symbol = direct read/search; unfamiliar local pattern = one parallel wave; external package or API = librarian; architectural risk = Oracle. Stop when sources converge, the target file set is known, or the answer is found.
156444
+
156445
+ Fire explore/librarian in the background with [CONTEXT], [GOAL], [DOWNSTREAM], and [REQUEST]. Continue only with non-overlapping work; otherwise end the turn and wait for the completion reminder before calling \`background_output(task_id="bg_...")\`. Use \`task(task_id="ses_...")\` only for follow-ups to the same subagent.
156446
+
156447
+ ${buildAntiDuplicationSection()}
156448
+ </exploration>`;
156449
+ const delegationBlock = `<delegation>
156450
+ Prefer delegation when a specialist fits, the work spans multiple files, the domain is visual/frontend/security/performance, or the module is unfamiliar. Execute directly only for small, local, fully understood changes.
156451
+
156452
+ ${categorySkillsGuide}
156453
+
156454
+ ${nonClaudePlannerSection}
156455
+
156456
+ ${delegationTable}
156457
+
156458
+ Every delegation prompt carries six sections: TASK, EXPECTED OUTCOME, REQUIRED TOOLS, MUST DO, MUST NOT DO, CONTEXT. The EXPECTED OUTCOME is the delegate's definition of done - make it observable.
156459
+
156460
+ After delegation, verify the files and behavior yourself. A subagent report is a lead, not evidence.
156461
+ ${oracleSection ? `
156462
+ ${oracleSection}
156463
+ ` : ""}</delegation>`;
156464
+ const executionBlock = `<behavior>
156465
+ Implementation loop:
156466
+
156467
+ 1. Write down what done means, then plan the smallest path to it. Two or more steps need ${useTaskSystem ? "tasks" : "todos"}; one obvious edit does not.
156468
+ 2. Match the repo: read configs and similar files before writing. Do not invent style.
156469
+ 3. Change only what the request requires. Bug fix does not mean refactor. Refactor does not mean feature work.
156470
+ 4. Use type-safe code. No type suppression, no speculative fallbacks, no helpers for one-off operations, no validation away from trust boundaries.
156471
+ 5. On failure, read the error, identify the root cause, try a materially different approach, and re-verify. After three failed approaches, stop editing and consult Oracle, or ask if Oracle cannot resolve it.
156472
+
156473
+ Never revert, delete, push, publish, message, or affect shared systems without explicit approval. Reversible local edits and verification commands are allowed.
156474
+ </behavior>`;
156475
+ const verificationBlock = `<verification>
156476
+ Verification defines done, and it loops until production ready.
156477
+
156478
+ - File edit: run \`lsp_diagnostics\` on every changed file.
156479
+ - Behavioral change: run adjacent tests or the smallest relevant suite.
156480
+ - Buildable project: run the build/typecheck path that covers the touched code.
156481
+ - Runnable or user-visible behavior: exercise the real surface - browser for web, interactive_bash for TUI/CLI, curl for HTTP, driver script for libraries. Click through the real user path, not just the happy entry point.
156482
+ - Hard-to-inspect output: capture the current state, list what is wrong, fix only those things, capture again.
156483
+ - Delegated work: inspect touched files and rerun checks yourself.
156484
+
156485
+ A pass that surfaces a defect goes back to step one of the loop, not into the report. Report only evidence from this turn: "should pass" means unverified. Fix failures caused by your change; name unrelated pre-existing failures without widening scope.
156486
+ </verification>`;
156487
+ const communicationBlock = `<communication>
156488
+ Every sentence carries information the user does not already have. Never restate the task back, never narrate routine tool calls, no flattery or filler.
156489
+
156490
+ Stay quiet through small changes; start narrating when you touch many files or change direction. Final answers state what changed, where, the verification evidence, and any real residual risk - dense and short.
156491
+ </communication>`;
156492
+ const constraintsBlock = `<constraints>
156493
+ ${hardBlocks}
156494
+
156495
+ ${antiPatterns}
156496
+ </constraints>`;
156497
+ return `${agentIdentity}
156498
+ ${roleBlock}
156499
+
156500
+ ${calibrationBlock}
156501
+
156502
+ ${intentBlock}
156503
+
156504
+ ${explorationBlock}
156505
+
156506
+ ${delegationBlock}
156507
+
156508
+ ${executionBlock}
156509
+
156510
+ ${verificationBlock}
156511
+
156512
+ ${tasksSection}
156513
+
156514
+ ${communicationBlock}
156515
+
156516
+ ${constraintsBlock}`;
156517
+ }
156518
+
156206
156519
  // packages/omo-opencode/src/agents/kimi-tool-loop-guard.ts
156207
156520
  var KIMI_TOOL_LOOP_GUARD = `<tool_loop_guard>
156208
156521
  Never call the same tool with the same arguments more than twice in a row.
@@ -157070,6 +157383,8 @@ function resolveSisyphusPromptFamily(model) {
157070
157383
  return "claude-opus-4-7";
157071
157384
  if (isGlmModel(model))
157072
157385
  return "glm-5-2";
157386
+ if (isGrok45Model(model) || isGrok46Model(model))
157387
+ return "grok-4";
157073
157388
  return "fallback";
157074
157389
  }
157075
157390
  function createSisyphusAgent(model, availableAgents, availableToolNames, availableSkills, availableCategories, useTaskSystem = false) {
@@ -157098,6 +157413,8 @@ function createSisyphusAgent(model, availableAgents, availableToolNames, availab
157098
157413
  return buildClaudeSisyphusAgentConfig(MODE, model, buildClaudeOpus47SisyphusPrompt(model, agents, tools, skills2, categories2, useTaskSystem));
157099
157414
  case "glm-5-2":
157100
157415
  return buildGlmSisyphusAgentConfig(MODE, model, buildGlm52SisyphusPrompt(model, agents, tools, skills2, categories2, useTaskSystem));
157416
+ case "grok-4":
157417
+ return buildGrokSisyphusAgentConfig(MODE, model, buildGrok4SisyphusPrompt(model, agents, tools, skills2, categories2, useTaskSystem));
157101
157418
  case "fallback": {
157102
157419
  const prompt = buildFallbackSisyphusPrompt(model, agents, tools, skills2, categories2, useTaskSystem);
157103
157420
  return isGptModel(model) ? buildGptSisyphusAgentConfig(MODE, model, prompt) : buildClaudeSisyphusAgentConfig(MODE, model, prompt);
@@ -1,4 +1,5 @@
1
1
  export interface NormalizeSDKResponseOptions {
2
+ /** Return the raw response when data is missing, except when the fallback requires an array. */
2
3
  preferResponseOnMissingData?: boolean;
3
4
  }
4
5
  export declare function normalizeSDKResponse<TData>(response: unknown, fallback: TData, options?: NormalizeSDKResponseOptions): TData;