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/tui.js CHANGED
@@ -18837,15 +18837,16 @@ var init_codegraph = __esm(() => {
18837
18837
  });
18838
18838
 
18839
18839
  // packages/omo-config-core/src/schema/memory.ts
18840
- var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
18840
+ var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
18841
18841
  var init_memory = __esm(() => {
18842
18842
  init_zod();
18843
18843
  OmoMemoryReflectionTriggerSchema = object({
18844
- step_count: number2().int().nonnegative().default(0),
18844
+ step_count: number2().int().nonnegative().default(25),
18845
18845
  on_compaction: boolean2().default(true)
18846
18846
  }).strict();
18847
18847
  OmoMemoryReflectionSchema = object({
18848
- trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 0, on_compaction: true }),
18848
+ enabled: boolean2().default(true),
18849
+ trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 25, on_compaction: true }),
18849
18850
  merge: _enum2(["auto", "integration"]).default("auto"),
18850
18851
  category: string2().min(1).default("quick"),
18851
18852
  timeout_minutes: number2().int().positive().default(15),
@@ -18858,11 +18859,36 @@ var init_memory = __esm(() => {
18858
18859
  OmoMemorySearchSchema = object({
18859
18860
  enabled: boolean2().default(true)
18860
18861
  }).strict();
18862
+ OmoMemoryNudgeSchema = object({
18863
+ enabled: boolean2().default(true),
18864
+ every_user_turns: number2().int().min(1).default(10)
18865
+ }).strict();
18866
+ OmoMemoryFactsSchema = object({
18867
+ enabled: boolean2().default(true),
18868
+ debounce_settles: number2().int().min(1).default(4)
18869
+ }).strict();
18870
+ OmoMemoryDreamSchema = object({
18871
+ enabled: boolean2().default(true),
18872
+ idle_minutes: number2().int().min(0).default(30),
18873
+ min_hours_between: number2().int().min(1).default(24),
18874
+ shutdown_launch: boolean2().default(true),
18875
+ auto_select_max: number2().int().min(1).max(10).default(5),
18876
+ auto_select_max_chars: number2().int().min(1e4).default(150000)
18877
+ }).strict();
18878
+ OmoMemoryPeopleSchema = object({
18879
+ enabled: boolean2().default(true),
18880
+ max_entries: number2().int().min(1).max(100).default(40),
18881
+ max_entry_chars: number2().int().min(50).max(500).default(200)
18882
+ }).strict();
18883
+ OmoMemorySoulSchema = object({
18884
+ edit_notice: boolean2().default(true)
18885
+ }).strict();
18861
18886
  OmoMemoryReflectionTriggerLayerSchema = object({
18862
18887
  step_count: number2().int().nonnegative().optional(),
18863
18888
  on_compaction: boolean2().optional()
18864
18889
  }).strict();
18865
18890
  OmoMemoryReflectionLayerSchema = object({
18891
+ enabled: boolean2().optional(),
18866
18892
  trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
18867
18893
  merge: _enum2(["auto", "integration"]).optional(),
18868
18894
  category: string2().min(1).optional(),
@@ -18876,10 +18902,39 @@ var init_memory = __esm(() => {
18876
18902
  OmoMemorySearchLayerSchema = object({
18877
18903
  enabled: boolean2().optional()
18878
18904
  }).strict();
18905
+ OmoMemoryNudgeLayerSchema = object({
18906
+ enabled: boolean2().optional(),
18907
+ every_user_turns: number2().int().min(1).optional()
18908
+ }).strict();
18909
+ OmoMemoryFactsLayerSchema = object({
18910
+ enabled: boolean2().optional(),
18911
+ debounce_settles: number2().int().min(1).optional()
18912
+ }).strict();
18913
+ OmoMemoryDreamLayerSchema = object({
18914
+ enabled: boolean2().optional(),
18915
+ idle_minutes: number2().int().min(0).optional(),
18916
+ min_hours_between: number2().int().min(1).optional(),
18917
+ shutdown_launch: boolean2().optional(),
18918
+ auto_select_max: number2().int().min(1).max(10).optional(),
18919
+ auto_select_max_chars: number2().int().min(1e4).optional()
18920
+ }).strict();
18921
+ OmoMemoryPeopleLayerSchema = object({
18922
+ enabled: boolean2().optional(),
18923
+ max_entries: number2().int().min(1).max(100).optional(),
18924
+ max_entry_chars: number2().int().min(50).max(500).optional()
18925
+ }).strict();
18926
+ OmoMemorySoulLayerSchema = object({
18927
+ edit_notice: boolean2().optional()
18928
+ }).strict();
18879
18929
  OmoMemoryAgentOverridesSchema = object({
18880
18930
  enabled: boolean2().optional(),
18881
18931
  agent: string2().min(1).optional(),
18882
18932
  reflection: OmoMemoryReflectionLayerSchema.optional(),
18933
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
18934
+ facts: OmoMemoryFactsLayerSchema.optional(),
18935
+ dream: OmoMemoryDreamLayerSchema.optional(),
18936
+ people: OmoMemoryPeopleLayerSchema.optional(),
18937
+ soul: OmoMemorySoulLayerSchema.optional(),
18883
18938
  sync: OmoMemorySyncLayerSchema.optional(),
18884
18939
  search: OmoMemorySearchLayerSchema.optional(),
18885
18940
  compile_warn_tokens: number2().int().positive().optional()
@@ -18889,12 +18944,25 @@ var init_memory = __esm(() => {
18889
18944
  agent: string2().min(1).default("auto"),
18890
18945
  tool_exposure: _enum2(["direct", "search"]).default("direct"),
18891
18946
  reflection: OmoMemoryReflectionSchema.default({
18892
- trigger: { step_count: 0, on_compaction: true },
18947
+ enabled: true,
18948
+ trigger: { step_count: 25, on_compaction: true },
18893
18949
  merge: "auto",
18894
18950
  category: "quick",
18895
18951
  timeout_minutes: 15,
18896
18952
  sandbox: "auto"
18897
18953
  }),
18954
+ nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
18955
+ facts: OmoMemoryFactsSchema.default({ enabled: true, debounce_settles: 4 }),
18956
+ dream: OmoMemoryDreamSchema.default({
18957
+ enabled: true,
18958
+ idle_minutes: 30,
18959
+ min_hours_between: 24,
18960
+ shutdown_launch: true,
18961
+ auto_select_max: 5,
18962
+ auto_select_max_chars: 150000
18963
+ }),
18964
+ people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
18965
+ soul: OmoMemorySoulSchema.default({ edit_notice: true }),
18898
18966
  sync: OmoMemorySyncSchema.default({ enabled: true }),
18899
18967
  search: OmoMemorySearchSchema.default({ enabled: true }),
18900
18968
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -18905,6 +18973,11 @@ var init_memory = __esm(() => {
18905
18973
  agent: string2().min(1).optional(),
18906
18974
  tool_exposure: _enum2(["direct", "search"]).optional(),
18907
18975
  reflection: OmoMemoryReflectionLayerSchema.optional(),
18976
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
18977
+ facts: OmoMemoryFactsLayerSchema.optional(),
18978
+ dream: OmoMemoryDreamLayerSchema.optional(),
18979
+ people: OmoMemoryPeopleLayerSchema.optional(),
18980
+ soul: OmoMemorySoulLayerSchema.optional(),
18908
18981
  sync: OmoMemorySyncLayerSchema.optional(),
18909
18982
  search: OmoMemorySearchLayerSchema.optional(),
18910
18983
  compile_warn_tokens: number2().int().positive().optional(),
@@ -18943,7 +19016,7 @@ function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism
18943
19016
  residency_max_children: record2["residency_max_children"] ?? Math.max(8, resolveParallelism() * 3)
18944
19017
  });
18945
19018
  }
18946
- var ResidencyMaxChildrenInputSchema, OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskWarningsSchema, OmoTaskSettingsSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskWarningsLayerSchema, OmoTaskSettingsLayerSchema;
19019
+ var ResidencyMaxChildrenInputSchema, OmoTaskWaitSchema, OmoTaskTeamSettingsSchema, OmoTaskWarningsSchema, OmoTaskDagSettingsSchema, OmoTaskSettingsSchema, OmoTaskDagSettingsLayerSchema, OmoTaskWaitLayerSchema, OmoTaskTeamSettingsLayerSchema, OmoTaskWarningsLayerSchema, OmoTaskSettingsLayerSchema;
18947
19020
  var init_task = __esm(() => {
18948
19021
  init_zod();
18949
19022
  ResidencyMaxChildrenInputSchema = union([number2().int().positive(), literal("unlimited")]);
@@ -18960,6 +19033,16 @@ var init_task = __esm(() => {
18960
19033
  OmoTaskWarningsSchema = object({
18961
19034
  unavailable_categories: boolean2().default(true)
18962
19035
  }).strict();
19036
+ OmoTaskDagSettingsSchema = object({
19037
+ max_nodes_per_run: number2().int().positive().default(64),
19038
+ max_runs_per_session: number2().int().positive().default(16),
19039
+ subscriber_ring: number2().int().positive().default(1000),
19040
+ heartbeat_ms: number2().int().positive().default(15000),
19041
+ history_default_limit: number2().int().positive().default(256),
19042
+ history_max_limit: number2().int().positive().default(1000),
19043
+ retention_days: number2().int().positive().default(7),
19044
+ max_prompt_bytes: number2().int().positive().default(262144)
19045
+ }).strict();
18963
19046
  OmoTaskSettingsSchema = object({
18964
19047
  default_execution_mode: _enum2(["in-process", "process"]).default("in-process"),
18965
19048
  default_concurrency: number2().int().positive().default(5),
@@ -18977,7 +19060,18 @@ var init_task = __esm(() => {
18977
19060
  max_members: 8,
18978
19061
  max_parallel_members: 4,
18979
19062
  max_wall_clock_minutes: 120
18980
- })
19063
+ }),
19064
+ dag: OmoTaskDagSettingsSchema.optional()
19065
+ }).strict();
19066
+ OmoTaskDagSettingsLayerSchema = object({
19067
+ max_nodes_per_run: number2().int().positive().optional(),
19068
+ max_runs_per_session: number2().int().positive().optional(),
19069
+ subscriber_ring: number2().int().positive().optional(),
19070
+ heartbeat_ms: number2().int().positive().optional(),
19071
+ history_default_limit: number2().int().positive().optional(),
19072
+ history_max_limit: number2().int().positive().optional(),
19073
+ retention_days: number2().int().positive().optional(),
19074
+ max_prompt_bytes: number2().int().positive().optional()
18981
19075
  }).strict();
18982
19076
  OmoTaskWaitLayerSchema = object({
18983
19077
  min_ms: number2().int().positive().optional(),
@@ -19005,7 +19099,8 @@ var init_task = __esm(() => {
19005
19099
  resume_children: boolean2().optional(),
19006
19100
  warnings: OmoTaskWarningsLayerSchema.optional(),
19007
19101
  wait: OmoTaskWaitLayerSchema.optional(),
19008
- team: OmoTaskTeamSettingsLayerSchema.optional()
19102
+ team: OmoTaskTeamSettingsLayerSchema.optional(),
19103
+ dag: OmoTaskDagSettingsLayerSchema.optional()
19009
19104
  }).strict();
19010
19105
  });
19011
19106
 
@@ -20985,10 +21080,10 @@ var init_category_model_requirements = __esm(() => {
20985
21080
  quick: {
20986
21081
  fallbackChain: [
20987
21082
  { providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed" },
20988
- { providers: ["quotio-openai"], model: "gpt-5.6-luna-fast", variant: "low" },
21083
+ { providers: ["openai-codex"], model: "gpt-5.6-luna-fast", variant: "low" },
20989
21084
  { providers: ["deepseek"], model: "deepseek-v4-flash", variant: "off" },
20990
21085
  {
20991
- providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan", "opencode-go", "vercel"],
21086
+ providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan", "vercel"],
20992
21087
  model: "qwen3.6-flash",
20993
21088
  variant: "low"
20994
21089
  },
@@ -21004,6 +21099,11 @@ var init_category_model_requirements = __esm(() => {
21004
21099
  },
21005
21100
  "unspecified-low": {
21006
21101
  fallbackChain: [
21102
+ {
21103
+ providers: ["xai", "github-copilot", "opencode", "vercel"],
21104
+ model: "grok-4.6",
21105
+ variant: "xhigh"
21106
+ },
21007
21107
  {
21008
21108
  providers: ["openai", "quotio-openai", "github-copilot", "opencode", "vercel"],
21009
21109
  model: "gpt-5.6-terra",
@@ -77870,6 +77970,47 @@ var init_model_capabilities_generated = __esm(() => {
77870
77970
  input: 272000,
77871
77971
  output: 128000
77872
77972
  }
77973
+ },
77974
+ "grok-4.6": {
77975
+ id: "grok-4.6",
77976
+ family: "grok",
77977
+ reasoning: true,
77978
+ temperature: true,
77979
+ toolCall: true,
77980
+ modalities: {
77981
+ input: [
77982
+ "text",
77983
+ "image"
77984
+ ],
77985
+ output: [
77986
+ "text"
77987
+ ]
77988
+ },
77989
+ limit: {
77990
+ context: 500000,
77991
+ output: 500000
77992
+ }
77993
+ },
77994
+ "xai/grok-4.6": {
77995
+ id: "xai/grok-4.6",
77996
+ family: "grok",
77997
+ reasoning: true,
77998
+ temperature: true,
77999
+ toolCall: true,
78000
+ modalities: {
78001
+ input: [
78002
+ "text",
78003
+ "image",
78004
+ "pdf"
78005
+ ],
78006
+ output: [
78007
+ "text"
78008
+ ]
78009
+ },
78010
+ limit: {
78011
+ context: 500000,
78012
+ output: 500000
78013
+ }
77873
78014
  }
77874
78015
  }
77875
78016
  };
@@ -78368,7 +78509,7 @@ This is NOT a default choice - it's for genuinely unclassifiable moderate-effort
78368
78509
  </Category_Context>
78369
78510
 
78370
78511
  <Caller_Warning>
78371
- THIS CATEGORY USES A LIGHTWEIGHT MODEL (gpt-5.6-luna).
78512
+ THIS CATEGORY USES GROK 4.6 (xhigh).
78372
78513
 
78373
78514
  **PROVIDE CLEAR STRUCTURE:**
78374
78515
  1. MUST DO: Enumerate required actions explicitly
@@ -78400,7 +78541,7 @@ var init_openai_categories = __esm(() => {
78400
78541
  },
78401
78542
  {
78402
78543
  name: "unspecified-low",
78403
- config: { model: "openai/gpt-5.6-luna", variant: "xhigh" },
78544
+ config: { model: "xai/grok-4.6", variant: "xhigh" },
78404
78545
  description: "Tasks that don't fit other categories, low effort required",
78405
78546
  promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
78406
78547
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.0.0-beta.6",
3
+ "version": "5.0.0-beta.8",
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",
@@ -180,7 +180,7 @@
180
180
  "zod": "^4.4.3"
181
181
  },
182
182
  "devDependencies": {
183
- "@code-yeongyu/senpi": "2026.8.11-4",
183
+ "@code-yeongyu/senpi": "2026.8.16",
184
184
  "@oh-my-opencode/agents-md-core": "workspace:*",
185
185
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
186
186
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -212,7 +212,7 @@
212
212
  "@oh-my-opencode/utils": "workspace:*",
213
213
  "@types/js-yaml": "^4.0.9",
214
214
  "@types/picomatch": "^4.0.3",
215
- "@typescript/native-preview": "7.0.0-dev.20260518.1",
215
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
216
216
  "@xterm/addon-unicode11": "^0.9.0",
217
217
  "@xterm/xterm": "^6.0.0",
218
218
  "bun-types": "1.3.14",
@@ -221,24 +221,24 @@
221
221
  "typescript": "^7.0.2"
222
222
  },
223
223
  "optionalDependencies": {
224
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.6",
225
- "oh-my-opencode-darwin-x64": "5.0.0-beta.6",
226
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.6",
227
- "oh-my-opencode-linux-arm64": "5.0.0-beta.6",
228
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.6",
229
- "oh-my-opencode-linux-x64": "5.0.0-beta.6",
230
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.6",
231
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.6",
232
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.6",
233
- "oh-my-opencode-windows-arm64": "5.0.0-beta.6",
234
- "oh-my-opencode-windows-x64": "5.0.0-beta.6",
235
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.6"
224
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.8",
225
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.8",
226
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.8",
227
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.8",
228
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.8",
229
+ "oh-my-opencode-linux-x64": "5.0.0-beta.8",
230
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.8",
231
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.8",
232
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.8",
233
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.8",
234
+ "oh-my-opencode-windows-x64": "5.0.0-beta.8",
235
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.8"
236
236
  },
237
237
  "overrides": {
238
- "@earendil-works/pi-agent-core": "0.80.3",
239
- "@earendil-works/pi-ai": "0.80.3",
240
- "@earendil-works/pi-coding-agent": "0.80.3",
241
- "@earendil-works/pi-tui": "0.80.3",
238
+ "@earendil-works/pi-agent-core": "0.84.2",
239
+ "@earendil-works/pi-ai": "0.84.2",
240
+ "@earendil-works/pi-coding-agent": "0.84.2",
241
+ "@earendil-works/pi-tui": "0.84.2",
242
242
  "hono": "^4.12.18",
243
243
  "@hono/node-server": "^1.19.13",
244
244
  "express-rate-limit": "^8.5.1",
@@ -0,0 +1,44 @@
1
+ import { afterEach, describe, expect, it } from "bun:test";
2
+
3
+ import {
4
+ createWorkspaceEditTestHarness,
5
+ diagnostic,
6
+ readEvents,
7
+ } from "./workspace-apply-edit-test-support.js";
8
+
9
+ const harness = createWorkspaceEditTestHarness();
10
+
11
+ afterEach(async () => {
12
+ await harness.cleanup();
13
+ });
14
+
15
+ describe("LspClient diagnostics concurrency", () => {
16
+ it("#given concurrent diagnostics on a cold file and an exact didOpen publish #when pull is not advertised #then one didOpen opens the file and both requests receive the current diagnostics", async () => {
17
+ const context = await harness.makeClient(
18
+ {
19
+ publishDiagnostics: [
20
+ {
21
+ trigger: "didOpen",
22
+ version: 1,
23
+ diagnostics: [diagnostic("exact-current")],
24
+ awaitClientDelivery: true,
25
+ },
26
+ ],
27
+ },
28
+ { diagnosticsFreshnessTimeoutMs: 500, versionlessPublishQuiescenceMs: 5 },
29
+ );
30
+
31
+ const [first, second] = await Promise.all([
32
+ context.client.diagnostics(context.source),
33
+ context.client.diagnostics(context.source),
34
+ ]);
35
+
36
+ expect(first.items).toEqual([diagnostic("exact-current")]);
37
+ expect(second.items).toEqual([diagnostic("exact-current")]);
38
+ expect(
39
+ readEvents(context.events).filter(
40
+ (event) => event.type === "clientNotification" && event.method === "textDocument/didOpen",
41
+ ),
42
+ ).toHaveLength(1);
43
+ });
44
+ });
@@ -16,34 +16,6 @@ afterEach(async () => {
16
16
  });
17
17
 
18
18
  describe("LspClient diagnostics freshness", () => {
19
- it("#given concurrent diagnostics on a cold file and an exact didOpen publish #when pull is not advertised #then one didOpen opens the file and both requests receive the current diagnostics", async () => {
20
- const context = await harness.makeClient(
21
- {
22
- publishDiagnostics: [
23
- {
24
- trigger: "didOpen",
25
- version: 1,
26
- diagnostics: [diagnostic("exact-current")],
27
- },
28
- ],
29
- },
30
- { diagnosticsFreshnessTimeoutMs: 50, versionlessPublishQuiescenceMs: 5 },
31
- );
32
-
33
- const [first, second] = await Promise.all([
34
- context.client.diagnostics(context.source),
35
- context.client.diagnostics(context.source),
36
- ]);
37
-
38
- expect(first.items).toEqual([diagnostic("exact-current")]);
39
- expect(second.items).toEqual([diagnostic("exact-current")]);
40
- expect(
41
- readEvents(context.events).filter(
42
- (event) => event.type === "clientNotification" && event.method === "textDocument/didOpen",
43
- ),
44
- ).toHaveLength(1);
45
- });
46
-
47
19
  it("#given a versionless publish that arrives after the current change #when no newer eligible publish arrives before quiescence #then diagnostics wait for that quiescence window and return the versionless payload", async () => {
48
20
  const context = await harness.makeClient(
49
21
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.6",
3
+ "version": "5.0.0-beta.8",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.6) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.8) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.0.0-beta.6",
3
+ "version": "5.0.0-beta.8",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -5551,11 +5551,12 @@ var OmoCodegraphSettingsSchema = OmoCodegraphSettingsLayerSchema.extend({
5551
5551
 
5552
5552
  // ../../omo-config-core/src/schema/memory.ts
5553
5553
  var OmoMemoryReflectionTriggerSchema = object({
5554
- step_count: number2().int().nonnegative().default(0),
5554
+ step_count: number2().int().nonnegative().default(25),
5555
5555
  on_compaction: boolean2().default(true)
5556
5556
  }).strict();
5557
5557
  var OmoMemoryReflectionSchema = object({
5558
- trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 0, on_compaction: true }),
5558
+ enabled: boolean2().default(true),
5559
+ trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 25, on_compaction: true }),
5559
5560
  merge: _enum(["auto", "integration"]).default("auto"),
5560
5561
  category: string2().min(1).default("quick"),
5561
5562
  timeout_minutes: number2().int().positive().default(15),
@@ -5568,11 +5569,36 @@ var OmoMemorySyncSchema = object({
5568
5569
  var OmoMemorySearchSchema = object({
5569
5570
  enabled: boolean2().default(true)
5570
5571
  }).strict();
5572
+ var OmoMemoryNudgeSchema = object({
5573
+ enabled: boolean2().default(true),
5574
+ every_user_turns: number2().int().min(1).default(10)
5575
+ }).strict();
5576
+ var OmoMemoryFactsSchema = object({
5577
+ enabled: boolean2().default(true),
5578
+ debounce_settles: number2().int().min(1).default(4)
5579
+ }).strict();
5580
+ var OmoMemoryDreamSchema = object({
5581
+ enabled: boolean2().default(true),
5582
+ idle_minutes: number2().int().min(0).default(30),
5583
+ min_hours_between: number2().int().min(1).default(24),
5584
+ shutdown_launch: boolean2().default(true),
5585
+ auto_select_max: number2().int().min(1).max(10).default(5),
5586
+ auto_select_max_chars: number2().int().min(1e4).default(150000)
5587
+ }).strict();
5588
+ var OmoMemoryPeopleSchema = object({
5589
+ enabled: boolean2().default(true),
5590
+ max_entries: number2().int().min(1).max(100).default(40),
5591
+ max_entry_chars: number2().int().min(50).max(500).default(200)
5592
+ }).strict();
5593
+ var OmoMemorySoulSchema = object({
5594
+ edit_notice: boolean2().default(true)
5595
+ }).strict();
5571
5596
  var OmoMemoryReflectionTriggerLayerSchema = object({
5572
5597
  step_count: number2().int().nonnegative().optional(),
5573
5598
  on_compaction: boolean2().optional()
5574
5599
  }).strict();
5575
5600
  var OmoMemoryReflectionLayerSchema = object({
5601
+ enabled: boolean2().optional(),
5576
5602
  trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
5577
5603
  merge: _enum(["auto", "integration"]).optional(),
5578
5604
  category: string2().min(1).optional(),
@@ -5586,10 +5612,39 @@ var OmoMemorySyncLayerSchema = object({
5586
5612
  var OmoMemorySearchLayerSchema = object({
5587
5613
  enabled: boolean2().optional()
5588
5614
  }).strict();
5615
+ var OmoMemoryNudgeLayerSchema = object({
5616
+ enabled: boolean2().optional(),
5617
+ every_user_turns: number2().int().min(1).optional()
5618
+ }).strict();
5619
+ var OmoMemoryFactsLayerSchema = object({
5620
+ enabled: boolean2().optional(),
5621
+ debounce_settles: number2().int().min(1).optional()
5622
+ }).strict();
5623
+ var OmoMemoryDreamLayerSchema = object({
5624
+ enabled: boolean2().optional(),
5625
+ idle_minutes: number2().int().min(0).optional(),
5626
+ min_hours_between: number2().int().min(1).optional(),
5627
+ shutdown_launch: boolean2().optional(),
5628
+ auto_select_max: number2().int().min(1).max(10).optional(),
5629
+ auto_select_max_chars: number2().int().min(1e4).optional()
5630
+ }).strict();
5631
+ var OmoMemoryPeopleLayerSchema = object({
5632
+ enabled: boolean2().optional(),
5633
+ max_entries: number2().int().min(1).max(100).optional(),
5634
+ max_entry_chars: number2().int().min(50).max(500).optional()
5635
+ }).strict();
5636
+ var OmoMemorySoulLayerSchema = object({
5637
+ edit_notice: boolean2().optional()
5638
+ }).strict();
5589
5639
  var OmoMemoryAgentOverridesSchema = object({
5590
5640
  enabled: boolean2().optional(),
5591
5641
  agent: string2().min(1).optional(),
5592
5642
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5643
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5644
+ facts: OmoMemoryFactsLayerSchema.optional(),
5645
+ dream: OmoMemoryDreamLayerSchema.optional(),
5646
+ people: OmoMemoryPeopleLayerSchema.optional(),
5647
+ soul: OmoMemorySoulLayerSchema.optional(),
5593
5648
  sync: OmoMemorySyncLayerSchema.optional(),
5594
5649
  search: OmoMemorySearchLayerSchema.optional(),
5595
5650
  compile_warn_tokens: number2().int().positive().optional()
@@ -5599,12 +5654,25 @@ var OmoMemorySettingsSchema = object({
5599
5654
  agent: string2().min(1).default("auto"),
5600
5655
  tool_exposure: _enum(["direct", "search"]).default("direct"),
5601
5656
  reflection: OmoMemoryReflectionSchema.default({
5602
- trigger: { step_count: 0, on_compaction: true },
5657
+ enabled: true,
5658
+ trigger: { step_count: 25, on_compaction: true },
5603
5659
  merge: "auto",
5604
5660
  category: "quick",
5605
5661
  timeout_minutes: 15,
5606
5662
  sandbox: "auto"
5607
5663
  }),
5664
+ nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
5665
+ facts: OmoMemoryFactsSchema.default({ enabled: true, debounce_settles: 4 }),
5666
+ dream: OmoMemoryDreamSchema.default({
5667
+ enabled: true,
5668
+ idle_minutes: 30,
5669
+ min_hours_between: 24,
5670
+ shutdown_launch: true,
5671
+ auto_select_max: 5,
5672
+ auto_select_max_chars: 150000
5673
+ }),
5674
+ people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
5675
+ soul: OmoMemorySoulSchema.default({ edit_notice: true }),
5608
5676
  sync: OmoMemorySyncSchema.default({ enabled: true }),
5609
5677
  search: OmoMemorySearchSchema.default({ enabled: true }),
5610
5678
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -5615,6 +5683,11 @@ var OmoMemorySettingsLayerSchema = object({
5615
5683
  agent: string2().min(1).optional(),
5616
5684
  tool_exposure: _enum(["direct", "search"]).optional(),
5617
5685
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5686
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5687
+ facts: OmoMemoryFactsLayerSchema.optional(),
5688
+ dream: OmoMemoryDreamLayerSchema.optional(),
5689
+ people: OmoMemoryPeopleLayerSchema.optional(),
5690
+ soul: OmoMemorySoulLayerSchema.optional(),
5618
5691
  sync: OmoMemorySyncLayerSchema.optional(),
5619
5692
  search: OmoMemorySearchLayerSchema.optional(),
5620
5693
  compile_warn_tokens: number2().int().positive().optional(),
@@ -5653,6 +5726,16 @@ var OmoTaskTeamSettingsSchema = object({
5653
5726
  var OmoTaskWarningsSchema = object({
5654
5727
  unavailable_categories: boolean2().default(true)
5655
5728
  }).strict();
5729
+ var OmoTaskDagSettingsSchema = object({
5730
+ max_nodes_per_run: number2().int().positive().default(64),
5731
+ max_runs_per_session: number2().int().positive().default(16),
5732
+ subscriber_ring: number2().int().positive().default(1000),
5733
+ heartbeat_ms: number2().int().positive().default(15000),
5734
+ history_default_limit: number2().int().positive().default(256),
5735
+ history_max_limit: number2().int().positive().default(1000),
5736
+ retention_days: number2().int().positive().default(7),
5737
+ max_prompt_bytes: number2().int().positive().default(262144)
5738
+ }).strict();
5656
5739
  var OmoTaskSettingsSchema = object({
5657
5740
  default_execution_mode: _enum(["in-process", "process"]).default("in-process"),
5658
5741
  default_concurrency: number2().int().positive().default(5),
@@ -5670,7 +5753,18 @@ var OmoTaskSettingsSchema = object({
5670
5753
  max_members: 8,
5671
5754
  max_parallel_members: 4,
5672
5755
  max_wall_clock_minutes: 120
5673
- })
5756
+ }),
5757
+ dag: OmoTaskDagSettingsSchema.optional()
5758
+ }).strict();
5759
+ var OmoTaskDagSettingsLayerSchema = object({
5760
+ max_nodes_per_run: number2().int().positive().optional(),
5761
+ max_runs_per_session: number2().int().positive().optional(),
5762
+ subscriber_ring: number2().int().positive().optional(),
5763
+ heartbeat_ms: number2().int().positive().optional(),
5764
+ history_default_limit: number2().int().positive().optional(),
5765
+ history_max_limit: number2().int().positive().optional(),
5766
+ retention_days: number2().int().positive().optional(),
5767
+ max_prompt_bytes: number2().int().positive().optional()
5674
5768
  }).strict();
5675
5769
  var OmoTaskWaitLayerSchema = object({
5676
5770
  min_ms: number2().int().positive().optional(),
@@ -5698,7 +5792,8 @@ var OmoTaskSettingsLayerSchema = object({
5698
5792
  resume_children: boolean2().optional(),
5699
5793
  warnings: OmoTaskWarningsLayerSchema.optional(),
5700
5794
  wait: OmoTaskWaitLayerSchema.optional(),
5701
- team: OmoTaskTeamSettingsLayerSchema.optional()
5795
+ team: OmoTaskTeamSettingsLayerSchema.optional(),
5796
+ dag: OmoTaskDagSettingsLayerSchema.optional()
5702
5797
  }).strict();
5703
5798
  function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
5704
5799
  const record2 = record(string2(), unknown()).parse(input);