oh-my-opencode 5.0.0-beta.81 → 5.0.0-beta.83

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 (132) hide show
  1. package/README.ja.md +2 -2
  2. package/README.ko.md +2 -2
  3. package/README.md +4 -4
  4. package/README.ru.md +2 -2
  5. package/README.zh-cn.md +2 -2
  6. package/dist/cli/index.js +439 -98
  7. package/dist/cli/install-native/index.d.ts +4 -0
  8. package/dist/cli/install-native/plan.d.ts +11 -0
  9. package/dist/cli/install-native/run-native-install.d.ts +23 -0
  10. package/dist/cli/install-native-dev/index.d.ts +4 -0
  11. package/dist/cli/native-dev-platform-flag.d.ts +5 -0
  12. package/dist/cli/native-edition-hint.d.ts +10 -0
  13. package/dist/cli/types.d.ts +3 -2
  14. package/dist/cli-node/index.js +439 -98
  15. package/dist/config/schema/hooks.d.ts +1 -0
  16. package/dist/config-migration/harness-native-rename.d.ts +3 -0
  17. package/dist/create-hooks.d.ts +1 -0
  18. package/dist/features/native-edition-nudge/index.d.ts +2 -0
  19. package/dist/features/native-edition-nudge/tui.d.ts +33 -0
  20. package/dist/hooks/index.d.ts +1 -0
  21. package/dist/hooks/native-edition-nudge/decide.d.ts +4 -0
  22. package/dist/hooks/native-edition-nudge/hook.d.ts +26 -0
  23. package/dist/hooks/native-edition-nudge/index.d.ts +5 -0
  24. package/dist/hooks/native-edition-nudge/state.d.ts +9 -0
  25. package/dist/hooks/native-edition-nudge/types.d.ts +38 -0
  26. package/dist/index.js +753 -352
  27. package/dist/plugin/hooks/create-core-hooks.d.ts +1 -0
  28. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -1
  29. package/dist/skills/browser/ATTRIBUTION.md +25 -0
  30. package/dist/skills/browser/SKILL.md +89 -0
  31. package/dist/skills/browser/references/commands.md +90 -0
  32. package/dist/skills/browser/references/install.md +71 -0
  33. package/dist/skills/browser/references/owned-engine/README.md +42 -0
  34. package/dist/skills/browser/references/owned-engine/frames-and-humans.md +39 -0
  35. package/dist/skills/browser/references/owned-engine/ladder.md +59 -0
  36. package/dist/skills/browser/references/owned-engine/network.md +42 -0
  37. package/dist/skills/browser/references/recipes/1password.md +59 -0
  38. package/dist/skills/browser/references/remote.md +24 -0
  39. package/dist/skills/browser/scripts/browser-doctor.mjs +41 -0
  40. package/dist/skills/browser/scripts/browser-env.mjs +41 -0
  41. package/dist/skills/browser/scripts/browser-install.mjs +51 -0
  42. package/dist/tui.js +545 -67
  43. package/package.json +17 -15
  44. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  45. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +111 -11
  46. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  47. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  48. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  49. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  50. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  51. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  52. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  53. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  54. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  55. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  56. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  57. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  58. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  59. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  60. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  62. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  63. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  64. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  65. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  66. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  67. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +24 -10
  68. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +8 -6
  69. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +2 -0
  70. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +21 -4
  71. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  72. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  73. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +10 -5
  74. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +24 -6
  75. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard-native-reviewer.test.ts +207 -0
  76. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +6 -4
  77. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +43 -4
  78. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  85. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  87. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  88. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  89. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  90. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  91. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  92. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  93. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  94. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  95. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  96. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  97. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  98. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  99. package/packages/omo-codex/plugin/package-lock.json +12 -12
  100. package/packages/omo-codex/plugin/package.json +1 -1
  101. package/packages/omo-codex/plugin/skills/browser/ATTRIBUTION.md +25 -0
  102. package/packages/omo-codex/plugin/skills/browser/SKILL.md +89 -0
  103. package/packages/omo-codex/plugin/skills/browser/agents/openai.yaml +2 -0
  104. package/packages/omo-codex/plugin/skills/browser/references/commands.md +90 -0
  105. package/packages/omo-codex/plugin/skills/browser/references/install.md +71 -0
  106. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +42 -0
  107. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/frames-and-humans.md +39 -0
  108. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/ladder.md +59 -0
  109. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/network.md +42 -0
  110. package/packages/omo-codex/plugin/skills/browser/references/recipes/1password.md +59 -0
  111. package/packages/omo-codex/plugin/skills/browser/references/remote.md +24 -0
  112. package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +41 -0
  113. package/packages/omo-codex/plugin/skills/browser/scripts/browser-env.mjs +41 -0
  114. package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +51 -0
  115. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +1 -0
  116. package/packages/omo-codex/scripts/install-dist/install-local.mjs +117 -17
  117. package/packages/shared-skills/skills/browser/ATTRIBUTION.md +25 -0
  118. package/packages/shared-skills/skills/browser/SKILL.md +89 -0
  119. package/packages/shared-skills/skills/browser/references/commands.md +90 -0
  120. package/packages/shared-skills/skills/browser/references/install.md +71 -0
  121. package/packages/shared-skills/skills/browser/references/owned-engine/README.md +42 -0
  122. package/packages/shared-skills/skills/browser/references/owned-engine/frames-and-humans.md +39 -0
  123. package/packages/shared-skills/skills/browser/references/owned-engine/ladder.md +59 -0
  124. package/packages/shared-skills/skills/browser/references/owned-engine/network.md +42 -0
  125. package/packages/shared-skills/skills/browser/references/recipes/1password.md +59 -0
  126. package/packages/shared-skills/skills/browser/references/remote.md +24 -0
  127. package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +41 -0
  128. package/packages/shared-skills/skills/browser/scripts/browser-env.mjs +41 -0
  129. package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +51 -0
  130. package/postinstall.mjs +3 -0
  131. package/dist/cli/install-senpi/index.d.ts +0 -1
  132. package/dist/cli/senpi-platform-flag.d.ts +0 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
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",
@@ -24,6 +24,7 @@
24
24
  "packages/openclaw-core",
25
25
  "packages/boulder-state",
26
26
  "packages/memory-core",
27
+ "packages/isolation-core",
27
28
  "packages/telemetry-core",
28
29
  "packages/claude-code-compat-core",
29
30
  "packages/skills-loader-core",
@@ -133,7 +134,7 @@
133
134
  "prepublishOnly": "bun run clean && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && bun run build",
134
135
  "test:model-capabilities": "bun test --timeout 20000 packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
135
136
  "typecheck": "tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
136
- "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
137
+ "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/isolation-core/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
137
138
  "typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
138
139
  "test": "bun test --timeout 20000",
139
140
  "changelog:section": "bun script/changelog-section.ts",
@@ -182,7 +183,7 @@
182
183
  "zod": "^4.6.5"
183
184
  },
184
185
  "devDependencies": {
185
- "@code-yeongyu/senpi": "2026.9.21-2",
186
+ "@code-yeongyu/senpi": "2026.9.22-2",
186
187
  "@oh-my-opencode/agents-md-core": "workspace:*",
187
188
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
188
189
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -192,6 +193,7 @@
192
193
  "@oh-my-opencode/git-bash-mcp": "workspace:*",
193
194
  "@oh-my-opencode/hashline-core": "workspace:*",
194
195
  "@oh-my-opencode/lsp-core": "workspace:*",
196
+ "@oh-my-opencode/isolation-core": "workspace:*",
195
197
  "@oh-my-opencode/memory-core": "workspace:*",
196
198
  "@oh-my-opencode/mcp-client-core": "workspace:*",
197
199
  "@oh-my-opencode/mcp-stdio-core": "workspace:*",
@@ -221,18 +223,18 @@
221
223
  "typescript": "^7.0.2"
222
224
  },
223
225
  "optionalDependencies": {
224
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.81",
225
- "oh-my-opencode-darwin-x64": "5.0.0-beta.81",
226
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.81",
227
- "oh-my-opencode-linux-arm64": "5.0.0-beta.81",
228
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.81",
229
- "oh-my-opencode-linux-x64": "5.0.0-beta.81",
230
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.81",
231
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.81",
232
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.81",
233
- "oh-my-opencode-windows-arm64": "5.0.0-beta.81",
234
- "oh-my-opencode-windows-x64": "5.0.0-beta.81",
235
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.81"
226
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.83",
227
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.83",
228
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.83",
229
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.83",
230
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.83",
231
+ "oh-my-opencode-linux-x64": "5.0.0-beta.83",
232
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.83",
233
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.83",
234
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.83",
235
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.83",
236
+ "oh-my-opencode-windows-x64": "5.0.0-beta.83",
237
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.83"
236
238
  },
237
239
  "overrides": {
238
240
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -7072,8 +7072,10 @@ var OmoGitMasterSettingsSchema = OmoGitMasterSettingsLayerSchema.extend({
7072
7072
 
7073
7073
  // ../../omo-config-core/src/schema/harness.ts
7074
7074
  var HARNESS_IDS = ["codex", "opencode", "omo"];
7075
- var OMO_CONFIG_HARNESS_IDS = ["opencode", "senpi", "codex"];
7075
+ var OMO_CONFIG_HARNESS_IDS = ["opencode", "native", "codex"];
7076
7076
  var OmoHarnessIdSchema = _enum(OMO_CONFIG_HARNESS_IDS);
7077
+ var OMO_CONFIG_LEGACY_HARNESS_ALIASES = { senpi: "native" };
7078
+ var OMO_CONFIG_LEGACY_HARNESS_IDS = Object.keys(OMO_CONFIG_LEGACY_HARNESS_ALIASES);
7077
7079
 
7078
7080
  // ../../omo-config-core/src/schema/memory.ts
7079
7081
  var OmoMemoryReflectionTriggerSchema = object({
@@ -7315,6 +7317,31 @@ var OmoTaskTeamSettingsSchema = object({
7315
7317
  var OmoTaskWarningsSchema = object({
7316
7318
  unavailable_categories: boolean2().default(true)
7317
7319
  }).strict();
7320
+ var IsolationBackendKindSchema = _enum([
7321
+ "auto",
7322
+ "apfs",
7323
+ "btrfs",
7324
+ "zfs",
7325
+ "reflink",
7326
+ "overlayfs",
7327
+ "block-clone",
7328
+ "rcopy"
7329
+ ]);
7330
+ var OmoTaskIsolationSchema = object({
7331
+ enabled: boolean2().default(false),
7332
+ backend: IsolationBackendKindSchema.default("auto"),
7333
+ apply: boolean2().default(true),
7334
+ merge: _enum(["patch", "branch"]).default("patch"),
7335
+ commits: _enum(["generic", "ai"]).default("generic")
7336
+ }).strict();
7337
+ var isolationDefaults = OmoTaskIsolationSchema.parse({});
7338
+ var OmoTaskIsolationLayerSchema = object({
7339
+ enabled: boolean2().optional(),
7340
+ backend: IsolationBackendKindSchema.optional(),
7341
+ apply: boolean2().optional(),
7342
+ merge: _enum(["patch", "branch"]).optional(),
7343
+ commits: _enum(["generic", "ai"]).optional()
7344
+ }).strict();
7318
7345
  var OmoTaskDagSettingsSchema = object({
7319
7346
  max_nodes_per_run: number2().int().positive().default(64),
7320
7347
  max_runs_per_session: number2().int().positive().default(16),
@@ -7326,6 +7353,7 @@ var OmoTaskDagSettingsSchema = object({
7326
7353
  max_prompt_bytes: number2().int().positive().default(262144)
7327
7354
  }).strict();
7328
7355
  var OmoTaskSettingsSchema = object({
7356
+ isolation: OmoTaskIsolationSchema.default(isolationDefaults),
7329
7357
  default_execution_mode: _enum(["auto", "in-process", "process"]).default("auto"),
7330
7358
  process_runner: _enum(["host", "child-process"]).default("host"),
7331
7359
  host_engine_policy: _enum(["upgrade", "fallback"]).default("upgrade"),
@@ -7374,6 +7402,7 @@ var OmoTaskWarningsLayerSchema = object({
7374
7402
  unavailable_categories: boolean2().optional()
7375
7403
  }).strict();
7376
7404
  var OmoTaskSettingsLayerSchema = object({
7405
+ isolation: OmoTaskIsolationLayerSchema.optional(),
7377
7406
  default_execution_mode: _enum(["auto", "in-process", "process"]).optional(),
7378
7407
  process_runner: _enum(["host", "child-process"]).optional(),
7379
7408
  host_engine_policy: _enum(["upgrade", "fallback"]).optional(),
@@ -7505,6 +7534,7 @@ var OmoConfigProfileSchema = object({
7505
7534
  telemetry: OmoTelemetrySettingsLayerSchema.optional(),
7506
7535
  disabled_skills: OmoDisabledSkillsSchema.optional(),
7507
7536
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
7537
+ "[native]": OmoTypedHarnessConfigSchema.optional(),
7508
7538
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
7509
7539
  "[codex]": OmoTypedHarnessConfigSchema.optional()
7510
7540
  }).strict();
@@ -7523,6 +7553,7 @@ var OmoConfigSchema = object({
7523
7553
  telemetry: OmoTelemetrySettingsSchema.optional(),
7524
7554
  disabled_skills: OmoDisabledSkillsSchema.optional(),
7525
7555
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
7556
+ "[native]": OmoTypedHarnessConfigSchema.optional(),
7526
7557
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
7527
7558
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
7528
7559
  profiles: record(string2(), OmoConfigProfileSchema).default({}),
@@ -7544,6 +7575,7 @@ var OmoConfigLayerSchema = object({
7544
7575
  telemetry: OmoTelemetrySettingsLayerSchema.optional(),
7545
7576
  disabled_skills: OmoDisabledSkillsSchema.optional(),
7546
7577
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
7578
+ "[native]": OmoTypedHarnessConfigSchema.optional(),
7547
7579
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
7548
7580
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
7549
7581
  profiles: record(string2(), OmoConfigProfileSchema).optional(),
@@ -7607,6 +7639,54 @@ function canonicalizeLegacyCategoryNames(document) {
7607
7639
  return { document: canonicalized, renames };
7608
7640
  }
7609
7641
 
7642
+ // ../../omo-config-core/src/schema/legacy-harness-names.ts
7643
+ function canonicalHarnessName(name) {
7644
+ return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, name) ? OMO_CONFIG_LEGACY_HARNESS_ALIASES[name] : name;
7645
+ }
7646
+ function harnessBlockKey(harness) {
7647
+ return `[${harness}]`;
7648
+ }
7649
+ function legacyHarnessOfBlockKey(key) {
7650
+ if (!key.startsWith("[") || !key.endsWith("]"))
7651
+ return;
7652
+ const harness = key.slice(1, -1);
7653
+ return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, harness) ? harness : undefined;
7654
+ }
7655
+ function isRecord8(value) {
7656
+ return typeof value === "object" && value !== null && !Array.isArray(value);
7657
+ }
7658
+ function canonicalizeBlocksIn(container, path, renames) {
7659
+ const result = {};
7660
+ for (const [key, value] of Object.entries(container)) {
7661
+ const legacyHarness = legacyHarnessOfBlockKey(key);
7662
+ if (legacyHarness === undefined) {
7663
+ result[key] = value;
7664
+ continue;
7665
+ }
7666
+ const canonical = harnessBlockKey(canonicalHarnessName(legacyHarness));
7667
+ const dropped = Object.hasOwn(container, canonical);
7668
+ renames.push({ canonical, dropped, legacy: key, path: [...path, key].join(".") });
7669
+ if (!dropped)
7670
+ result[canonical] = value;
7671
+ }
7672
+ return result;
7673
+ }
7674
+ function canonicalizeLegacyHarnessBlocks(document) {
7675
+ if (!isRecord8(document))
7676
+ return { document: {}, renames: [] };
7677
+ const renames = [];
7678
+ const canonicalized = canonicalizeBlocksIn(document, [], renames);
7679
+ const profiles = canonicalized["profiles"];
7680
+ if (isRecord8(profiles)) {
7681
+ const canonicalProfiles = {};
7682
+ for (const [name, profile] of Object.entries(profiles)) {
7683
+ canonicalProfiles[name] = isRecord8(profile) ? canonicalizeBlocksIn(profile, ["profiles", name], renames) : profile;
7684
+ }
7685
+ canonicalized["profiles"] = canonicalProfiles;
7686
+ }
7687
+ return { document: canonicalized, renames };
7688
+ }
7689
+
7610
7690
  // ../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js
7611
7691
  function createScanner(text, ignoreTrivia = false) {
7612
7692
  const len = text.length;
@@ -8582,7 +8662,7 @@ function resolveOmoConfigPaths(options) {
8582
8662
  }
8583
8663
 
8584
8664
  // ../../omo-config-core/src/loader/resolution.ts
8585
- var HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS])].map((harness) => `[${harness}]`);
8665
+ var HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS, ...OMO_CONFIG_LEGACY_HARNESS_IDS])].map((harness) => harnessBlockKey(harness));
8586
8666
  function profileName(value) {
8587
8667
  return value === "" ? undefined : value;
8588
8668
  }
@@ -8611,7 +8691,13 @@ function withoutControlKeys(config) {
8611
8691
  function harnessLayer(config, harness) {
8612
8692
  if (harness === undefined)
8613
8693
  return {};
8614
- return toRecord(config[`[${harness}]`]) ?? {};
8694
+ const canonical = canonicalHarnessName(harness);
8695
+ const legacyKeys = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([legacy]) => harnessBlockKey(legacy));
8696
+ let layer = {};
8697
+ for (const key of [...legacyKeys, harnessBlockKey(canonical)]) {
8698
+ layer = mergeOmoConfigRecords(layer, toRecord(config[key]) ?? {});
8699
+ }
8700
+ return layer;
8615
8701
  }
8616
8702
  function resolveOmoConfigView(options) {
8617
8703
  const profiles = toRecord(options.config["profiles"]);
@@ -8662,6 +8748,7 @@ var DEFAULT_RAW_CONFIG = {
8662
8748
  function stripResolutionControlKeys(config) {
8663
8749
  const {
8664
8750
  "[codex]": _codex,
8751
+ "[native]": _native,
8665
8752
  "[opencode]": _opencode,
8666
8753
  "[senpi]": _senpi,
8667
8754
  profiles: _profiles,
@@ -8687,21 +8774,21 @@ function hasUnsafeUnrecognizedKey(issues) {
8687
8774
  function hasTamperedPrototype(value) {
8688
8775
  if (Array.isArray(value))
8689
8776
  return value.some((entry) => hasTamperedPrototype(entry));
8690
- if (!isRecord8(value))
8777
+ if (!isRecord9(value))
8691
8778
  return false;
8692
8779
  const prototype = Object.getPrototypeOf(value);
8693
8780
  if (prototype !== Object.prototype && prototype !== null)
8694
8781
  return true;
8695
8782
  return Object.values(value).some((entry) => hasTamperedPrototype(entry));
8696
8783
  }
8697
- function isRecord8(value) {
8784
+ function isRecord9(value) {
8698
8785
  return typeof value === "object" && value !== null && !Array.isArray(value);
8699
8786
  }
8700
8787
  function containerAt(record, path) {
8701
8788
  let container = record;
8702
8789
  for (const segment of path) {
8703
8790
  const next = container[segment];
8704
- if (!isRecord8(next))
8791
+ if (!isRecord9(next))
8705
8792
  return null;
8706
8793
  container = next;
8707
8794
  }
@@ -8812,6 +8899,15 @@ function legacyCategoryDiagnostic(path, renames) {
8812
8899
  issuePaths: renames.map((rename) => rename.path)
8813
8900
  };
8814
8901
  }
8902
+ function legacyHarnessDiagnostic(path, renames) {
8903
+ const detail = renames.map((rename) => rename.dropped ? `${rename.path} ignored because ${rename.canonical} is also configured` : `${rename.path} renamed to ${rename.canonical}`).join(", ");
8904
+ return {
8905
+ kind: "deprecated-keys",
8906
+ message: `Deprecated harness block in ${path}: ${detail}. Rename it; the alias is removed in a future release.`,
8907
+ path,
8908
+ issuePaths: renames.map((rename) => rename.path)
8909
+ };
8910
+ }
8815
8911
  function loadOmoConfig(options = {}) {
8816
8912
  const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
8817
8913
  const cwd = options.cwd ?? process.cwd();
@@ -8834,8 +8930,12 @@ function loadOmoConfig(options = {}) {
8834
8930
  if (canonicalized.renames.length > 0) {
8835
8931
  diagnostics.push(legacyCategoryDiagnostic(candidate.path, canonicalized.renames));
8836
8932
  }
8837
- layers.push({ config: canonicalized.document, source: loaded.source });
8838
- merged = mergeOmoConfigRecords(merged, canonicalized.document);
8933
+ const harnessCanonicalized = canonicalizeLegacyHarnessBlocks(canonicalized.document);
8934
+ if (harnessCanonicalized.renames.length > 0) {
8935
+ diagnostics.push(legacyHarnessDiagnostic(candidate.path, harnessCanonicalized.renames));
8936
+ }
8937
+ layers.push({ config: harnessCanonicalized.document, source: loaded.source });
8938
+ merged = mergeOmoConfigRecords(merged, harnessCanonicalized.document);
8839
8939
  }
8840
8940
  }
8841
8941
  const requestedProfile = resolveOmoProfileName({
@@ -11239,10 +11339,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
11239
11339
  } catch {
11240
11340
  return null;
11241
11341
  }
11242
- if (!isRecord9(cache) || !Array.isArray(cache.models))
11342
+ if (!isRecord10(cache) || !Array.isArray(cache.models))
11243
11343
  return null;
11244
11344
  for (const entry of cache.models) {
11245
- if (!isRecord9(entry))
11345
+ if (!isRecord10(entry))
11246
11346
  continue;
11247
11347
  if (entry.slug !== model && entry.id !== model)
11248
11348
  continue;
@@ -11267,7 +11367,7 @@ function readRootModelCatalogPath(config) {
11267
11367
  const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
11268
11368
  return single?.[1] ?? null;
11269
11369
  }
11270
- function isRecord9(value) {
11370
+ function isRecord10(value) {
11271
11371
  return typeof value === "object" && value !== null && !Array.isArray(value);
11272
11372
  }
11273
11373
  function removeFeatureFlagSetting(config, featureName) {
@@ -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.81) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.83) 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.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.81) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.83) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.0.0-beta.81) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.83) Recommending Git Bash MCP"
12
12
  }
13
13
  ]
14
14
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.0.0-beta.81) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.83) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.0.0-beta.81) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.83) Verifying LazyCodex Executor Evidence"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "5.0.0-beta.81",
4
- "inputDigest": "sha256:319828ab37967b4cd77e0a52d4e5d4bada4acea967ec72506e9540f604e56e0d",
3
+ "version": "5.0.0-beta.83",
4
+ "inputDigest": "sha256:c2a4d0a5733ce0a84a7b045a3c294a3b1b17f06e421e60a6f19ce486a03aaa2f",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 60,
11
- "statusMessage": "(OmO 5.0.0-beta.81) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.0.0-beta.83) Checking LSP Diagnostics"
12
12
  }
13
13
  ]
14
14
  }
@@ -21,7 +21,7 @@
21
21
  "type": "command",
22
22
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
23
23
  "timeout": 5,
24
- "statusMessage": "(OmO 5.0.0-beta.81) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.0.0-beta.83) Resetting LSP Diagnostics Cache"
25
25
  }
26
26
  ]
27
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lsp",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.81) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.0.0-beta.83) Loading Project Rules"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  "type": "command",
20
20
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
21
21
  "timeout": 10,
22
- "statusMessage": "(OmO 5.0.0-beta.81) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.0.0-beta.83) Loading Project Rules"
23
23
  }
24
24
  ]
25
25
  }
@@ -32,7 +32,7 @@
32
32
  "type": "command",
33
33
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
34
34
  "timeout": 10,
35
- "statusMessage": "(OmO 5.0.0-beta.81) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.0.0-beta.83) Matching Project Rules"
36
36
  }
37
37
  ]
38
38
  }
@@ -45,7 +45,7 @@
45
45
  "type": "command",
46
46
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
47
47
  "timeout": 10,
48
- "statusMessage": "(OmO 5.0.0-beta.81) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.0.0-beta.83) Resetting Project Rule Cache"
49
49
  }
50
50
  ]
51
51
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-rules",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex plugin that injects project rule files into model context through lifecycle hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.0.0-beta.81) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.0.0-beta.83) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.81) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.0.0-beta.83) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.81) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.0.0-beta.83) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.81) Checking Ulw-Execute Continuation"
10
+ "statusMessage": "(OmO 5.0.0-beta.83) Checking Ulw-Execute Continuation"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-execute-continuation",
3
- "version": "5.0.0-beta.81",
3
+ "version": "5.0.0-beta.83",
4
4
  "description": "Codex Stop hook continuation injector for omo-codex ulw-execute plans.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",